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
评论