//實驗目的:熟悉多位數碼管動態掃描顯示的方法。
//六位數碼管從左到右顯示0123456六位數字。
//硬件要求:撥碼開關S5、S6全部置ON。其他撥碼開關全置OFF。
#include //包含單片機內部資源預定義
__CONFIG(0x1832);
//芯片配置字,看門狗關,上電延時開,掉電檢測關,低壓編程關,加密,4M晶體HS振蕩
void delay(); //delay函數申明
void init(); //I/O口初始化函數申明
const char TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92}; //定義常數0-5的數據表格
void main() //主函數
{
while(1) //死循環,讓數碼管持續點亮
{
init(); //調用初始化函數
PORTD=TABLE[0]; //D口輸出數據表格第1個數據0
PORTA=0X1F; //點亮第1位數碼管
delay(); //延時一定時間,保證數碼管亮度
PORTD=TABLE[1]; //顯示數據1(同數據0)
PORTA=0X2F;
delay();
PORTD=TABLE[2]; //顯示數據2(同數據0)
PORTA=0X37;
delay();
PORTD=TABLE[3]; //顯示數據3(同數據0)
PORTA=0X3B;
delay();
PORTD=TABLE[4]; //顯示數據4(同數據0)
PORTA=0X3D;
delay();
PORTD=TABLE[5]; //顯示數據5(同數據0)
PORTA=0X3E;
delay();
}
}
void init() //I/O口初始化函數
{
TRISA=0X00; //設置A0輸出,其他輸入
TRISD=0X00; //設置D口輸出
ADCON1=0X07; //設置A口為普通I/O口
PORTA=0xff;
PORTD=0xff; //先熄滅所有顯示
}
void delay() //延時程序
{
int i; //定義整形變量
for(i=0x100;i--;); //延時
}