【C51】源碼 2 -- 8 位共陰極數(shù)碼管的基本顯示
程序就是利用鎖存器,動(dòng)態(tài)顯示數(shù)字,使 8 位數(shù)碼管看起來同時(shí)顯示不同的字樣……
本文引用地址:http://m.butianyuan.cn/article/201611/315358.htm附上源碼:(初出茅廬,難免有寫的不好的地方,僅作備份之用,歡迎指點(diǎn),噴子退散……)
#include
#defineDATA P1 // 定義 P1 為數(shù)據(jù)輸入
sbitSEG = P0^0;// 定義 段鎖存器
sbitBIT = P0^2;// 定義 位鎖存器
unsigned char codeSEG_CODE[ ] = {0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f};// 段碼 1-8
unsigned char codeBIT_CODE[ ] = {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f};
// 位碼 從 0 位至 7 位
voidDelay(unsigned intt);
voidmain (void)
{
unsigned chari = 0;
while(1) {
SEG = 1; // 關(guān)段鎖存
DATA = SEG_CODE[i];// 送段碼
SEG = 0;// 開段鎖存,指定了某位具體顯示什么數(shù)字
BIT = 1;// 關(guān)位鎖存
DATA = BIT_CODE[i];// 送位碼
BIT = 0;// 開位鎖存,指定了哪一位顯示
Delay(200); // 經(jīng)測(cè)試:200 為佳,過小出現(xiàn)重影,過大出現(xiàn)閃爍
// 20 重影,300 數(shù)字抖動(dòng),2000 掃描閃爍
i++;
if(i==8) i = 0;// 循環(huán)顯示
}
}
voidDelay(unsigned intt)
{
while(t--);
}
補(bǔ)充一個(gè)技巧:
突然某一位想顯示小數(shù)點(diǎn)了,怎么辦?
假如你正在使用temp[i]代表某一個(gè)顯示字符,突然想顯示小數(shù)點(diǎn),可以使用temp[i] | 0x80,通過“或”運(yùn)算實(shí)現(xiàn)加上小數(shù)點(diǎn)……
評(píng)論