51單片機學習之4-數(shù)碼管
while(1)
{
if(aa==20)//50ms*20=1000ms=1s
{
aa=0;
g++;//個位自增
if(g==10)
{
s++;//十位自增
g=0;
}
if(s==10)
{//百位自增
b++;
s=g=0;
}
if(b==10)
b=s=g=0;
}
ShowTime(table[b],table[s],table[g]);
}
}
/********數(shù)碼管顯示函數(shù)********/
voidShowTime(ucharbai,ucharshi,ucharge)
{
//顯示百位
dual=1;
P0=bai;
dual=0;
P0=0xff;
weal=1;
P0=0xfe;
weal=0;
delay(YsTime);
//顯示十位
dual=1;
P0=shi;
dual=0;
P0=0xff;
weal=1;
P0=0xfd;
weal=0;
delay(YsTime);
//顯示個位
dual=1;
P0=ge;
dual=0;
P0=0xff;
weal=1;
P0=0xfb;
weal=0;
delay(YsTime);
}
/********延時函數(shù)********/
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/********中斷函數(shù)每50ms觸發(fā)一次********/
voidtimer0()interrupt1
{
TH0=(65536-Time)/256;
TL0=(65536-Time)%256;
aa++;
}
也有采用BCD-7段譯碼芯片:共陽型的74LS48、74LS49、CD4511。共陰的74LS46、74LS47、CD4513。
第十二集
霖鋒教程中的是兩個四位一體共陰型數(shù)碼管,通過一片74HC573芯片控制兩個四位數(shù)碼管的段選,通過一片74HC138芯片選擇位數(shù)碼管(即位選)。
74HC138的引腳說明:
先把一些簡單的引腳說一下:
GND接地、VCC接電源正極。
E1、E2:低電平有效,如果其中一個為高電平則無法操控芯,Y0—Y7輸出全高電平。
E3:高電平有效,如果為低電平則無法操控芯片,Y0—Y7輸出全高電平。
如果要控制芯片首先是VCC和GND接電源,E1、E2低電平或接低,E3高電平。
下面這三個引腳是比較重要的:
A組IO口是輸入,Y組端口是輸出。
A0、A1、A2是用來控制Y0—Y7輸出電平狀態(tài),往里面輸入八進制數(shù)即可指定Y0—Y7中其中一個為低電平。例如想要Y5為低電平,那么5的八進制為101,只需要給A2=1、A1=0、A0=1,即可讓Y5為低電平。想要Y3為低電平,那么3的八進制為011,只需要給A2=0、A1=1、A0=0即可。
記住,A組IO只是控制Y組的某一IO輸出低電平而已,其余都為高電平。
教程中有八位數(shù)碼管,所有剛好Y組全部都用上。
評論