51单片机学习之4-数码管
)))/256;
TL0=(65536-Time)%256;//(65536-(50000/(12*(1/12))))%256;
EA=1;//开启总中断
ET0=1;//开启定时器0中断
TR0=1;//启动定时器0
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]);
}
}
/********数码管显示函数********/
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);
}
/********延时函数********/
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
/********中断函数每50ms触发一次********/
voidtimer0()interrupt1
{
TH0=(65536-Time)/256;
TL0=(65536-Time)%256;
aa++;
}
也有采用BCD-7段译码芯片:共阳型的74LS48、74LS49、CD4511。共阴的74LS46、74LS47、CD4513。
第十二集
霖锋教程中的是两个四位一体共阴型数码管,通过一片74HC573芯片控制两个四位数码管的段选,通过一片74HC138芯片选择位数码管(即位选)。
74HC138的引脚说明:
先把一些简单的引脚说一下:
GND接地、VCC接电源正极。
E1、E2:低电平有效,如果其中一个为高电平则无法操控芯,Y0—Y7输出全高电平。
E3:高电平有效,如果为低电平则无法操控芯片,Y0—Y7输出全高电平。
如果要控制芯片首先是VCC和GND接电源,E1、E2低电平或接低,E3高电平。
下面这三个引脚是比较重要的:
A组IO口是输入,Y组端口是输出。
A0、A1、A2是用来控制Y0—Y7输出电平状态,往里面输入八进制数即可指定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输出低电平而已,其余都为高电平。
教程中有八位数码管,所有刚好Y组全部都用上。
51单片机数码 相关文章:
- 51单片机做的数码管电子日历(11-30)
- 51单片机数码管显示的数字钟(11-30)
- 数码管按键移动位数闪烁实验(11-30)
- 89C51单片机40s倒记时数码管动态显示(11-30)
- 51单片机系列连载3—数码管静态显示(11-27)
- 51单片机 数码显示数字(11-25)