/* ch05-4-2.c - 直接驅動4位七節顯示器實驗,P1.0~3為掃描信號 P2接七節顯示器 */
//==宣告區====================================
#include // 定義8051暫存器之標頭檔,P2-17~19
char code TAB[10]={ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, //數字0-4
0x92, 0x83, 0xf8, 0x80, 0x98 }; //數字5-9
char code disp[4]={0,2,3,5}; // 顯示資料(第0組)
// 顯示資料(第1組)
unsigned char scan;
char i,j;
int counter;
void delay1ms(int); // 宣告延遲函數
//==主程式====================================
main() // 主程式開始
{
counter=0; // 宣告變數i,j
while(1) // 無窮迴圈,程式一直跑
{
scan=1;
for(i=0;i<4;i++)
{ j=disp[3-i];
P1=0xff;
P0=TAB[j];
P1=~scan;
delay1ms(2);
scan<<=1;
}
j=counter%10;
P1=0xff;
P0=TAB[j];
P1=0xef;
delay1ms(2);

j=(counter%100)/10;
P1=0xff;
P0=TAB[j];
P1=0xdf;
delay1ms(2);

j=(counter%1000)/100;
P1=0xff;
P0=TAB[j];
P1=0xbf;
delay1ms(2);

j=(counter%10000)/1000;
P1=0xff;
P0=TAB[j];
P1=0x7f;
delay1ms(2);

counter++;
} // while迴圈結束
} // 主程式結束
//==副程式====================================
/* 延遲函數,延遲約x 1ms */
void delay1ms(int x) // 延遲函數開始
{ int i,j; // 宣告整數變數i,j
for (i=0;i for (j=0;j<120;j++); // 計數120次,延遲1ms
} // 延遲函數結束
arrow
arrow
    全站熱搜

    joan710317 發表在 痞客邦 留言(0) 人氣()