51单片机学习之4-数码管
上图是六位共阴型数码管搭配两片74HC573芯片的电路图。L2是控制数码管的a、b、c、d、e、f、g、dp,L3是选择要显示的数码管。
下图是74HC573芯片接在单片机上的10个IO口。(完美诠释74HC573的实用性,哈哈~)
下图是编码列表
利用数码管显示秒表程序源码:
/*****************************************
*说明:动态显示方式控制数码管。秒表源码
*设计者:L、QQ:1007566569
*开发板:DB-51Ver2.1
*数码管:六位共阴型
******************************************/
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitdual=P2^6;//控制L2的74HC573芯片是否锁存
sbitweal=P2^7;//控制L3的74HC573芯片是否锁存
ucharaa;
//数码管显示数字的编码table[0]就是显示0
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
//要显示指定数字的数码管
ucharcodetablewe[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
#defineTime50000
#defineYsTime1
voidShowTime(ucharbai,ucharshi,ucharge);
voiddelay(uintz);
/********主函数********/
voidmain()
{
ucharb,s,g;
TMOD=0x01;//选择定时器工作方式1
TH0=(65536-Time)/256;//(65536-(50000/(12*(1/12))))/256;
TL0=(65536-Time)%256;//(65536-(50000/(12*(1/12))))%256;
EA=1;//开启总中断
ET0=1;//开启定时器0中断
TR0=1;//启动定时器0
评论