《基于51单片机的LED数码管动态显示》由会员分享,可在线阅读,更多相关《基于51单片机的LED数码管动态显示(4页珍藏版)》请在金锄头文库上搜索。
1、基于51单片机得LED数码管动态显示LED数码管动态显示就就是一位一位地轮流点亮各位数码管,对于每一位LED数码管来说,每隔一段时间点亮一次,利用人眼得“视觉暂留”效应,采用循环扫描得方式,分时轮流选通各数码管得公共端,使数码管轮流导通显示。当扫描速度达到一定程度时,人眼就分辨不出来了。尽管实际上各位数码管并非同时点亮,但只要扫描得速度足够快,给人得印象就就是一组稳定得显示数据,认为各数码管就是同时发光得。若数码管得位数不大于8位时,只需两个8位I/O口。1 硬件设计利用51单片机得P0口输出段码,P2口输出位码,其电路原理图如下所示。1rL*J- rrtllADO:IH叫KH 峭5fClW衽
2、断I2W 3T F2JAI1 KM nwn P3WU R.7MSFmxD 叫啜_ 口胆 FlJiiiT nil n如 加谭 丁南在桌面上双击图标,打开ISIS7Professional窗口(本人使用得就是v7、4SP3中文版)。单击菜单命令“文件”一“新建设计”,选才iDEFAULT模板,保存文件名为“DT、DSN”。在器件选择按钮中单击“P”按钮,或执行菜单命令“库”一“拾取元件/符号”,添加如下表所示得元件。51单片机AT89C51一片晶体CRYSTAL12MHz一只瓷片电容CAP22pF二只电解电容CAP-ELEC10uF一只电阻RES10K一只电阻RES4、7K四只双列电阻网络Rx83
3、00R(Q)一只四位七段数码管7sEG-MPX4-CA一只三极管PNP四只U1得3 1脚,都可以不画,它们都若用Proteus软件进行仿真,则上图中得晶振与复位电路以及就是默认得。在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER与GROUND放置电源与地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图得设计。2 软件设计LED数码管动态显示就是一位一位地轮流点亮各位数码管得,因此要考虑每一位点亮得保持时间与间隔时间。保持时间太短,则发光太弱而人眼无法瞧清;时间太长,则间隔时间也将太长(假设N位,则间隔时间=保持时间X(N 1),使
4、人眼瞧到得数字闪烁。在程序中要合理得选择合适得保持时间与 间隔时间。而循环次数则正比于显示得变化速度。LED数码管动态显示得流程如下所示。点亮第一位点亮第二位点亮第三位点亮第四位延时5m5熄灭LED数码管动态显示得详细 C5 1程序如下。/* * * * * * * *通过PO及P 2 控制四只数码管 ,12M* * * * * * * * * *晶振* * */# includereg51、h# defineucharunsignedchar0xf8 , 0x8 0 , 0 x90, c0, 0 xf9, 0 xa4#defineuintunsignedintucharcodeddata=0
5、xcO,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x;/0,1,2,3,4、F,0,1,2,3得段码/*延时函数*/voiddelayms(uintt)uinti,j;it; i + )or (j= 0 ;j1 2 0 ;j+)for(i=0;f5main()whi1e(1)uinti,j,k;for(k=1;kv17;k+)/16个字符for(j=0;j50;j+)/反比于字符显示变化速度for(i=1;i5;i+)/4位P0=ddatak+i2;switch(i)点亮第1位点亮第2位点亮第3位/点亮第case1
6、:P2=0XFE;break;case2:P2=0XFD;break;case3:P2=0XFB;break;case4:P2=0XF7;break;4位de1ayms(5);P2=0XFF;/熄灭打开Keil程序(本人使用得就是Keil8、05中文版工执行菜单命令“工程”-“新建工程”创建“动态”项目,并选择单片机型号为AT89C51。执行菜单命令“文件”-“新建”创建文件,输入C语言源程序,保存为“DT、C”。在ProjectWorkspace窗口中右击源代码组1,选择“添加文件到组源代码组1将源程序“DT、C”添加到项目中。在Ke1l中执行执行菜单命令“工程”-“创建目标”(或点击“创建
7、目标”快捷按钮,编译源程序。如果编译成功,则在“OutputWindow”得“创建”窗口中显示没有错误,并创建了“DT、HEX”文件。3仿真与调试关于Proteus与Kei1得联合仿真调试,可参见我以前所写得博文或其它参考资料。启动Proteus得ISIS,并将其放在屏幕得右上角(可将原理图放大到合适大小);再启动Keil得科Vision并将其放在屏幕得左下角。在Keil中执行菜单命令“调试”-“启动/停止调试”,或直接单击图标,进入Keil调试环境。同时,在ProteusISIS得窗口中可瞧出Proteus也进入了程序调试状态。在Keil代码编辑窗口中设置相应断点,断点得设置方法:在需要设置断点语句前双击鼠标左键,可设置断点;再次双击,可取消该断点。在Keil中按F5键(或点击“运行”快捷按钮)运行程序。四位LED数码管显示0123、1234、2345CdEF、dEf0、EF01、FO12如此循环。或可以点击单步、运行到光标处、全速运行等快捷按钮,以及同时观察工程窗口寄存器页面、存储器窗口等,来进行仿真调试。