基于51单片机的led数码管动态显示

基于51单片机的LED数码管动态显示
LED数码管动态显示就是一位一位地轮流点亮各位数码管,对于每一位LED数码管来说,每隔一段时间点亮一次,利用人眼的“视觉暂留"效应,采用循环扫描的方式,分时轮流选通各数码管的公共端,使数码管轮流导通显示。当扫描速度达到一定程度时,人眼就分辨不出来了。尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,认为各数码管是同时发光的。若数码管的位数不大于8位时,只需两个8位I/O口。
1 硬件设计
利用51单片机的P0口输出段码,P2口输出位码,其电路原理图如下所示。
在桌面上双击图标,打开ISIS 7 Professional窗口(本人使用的是v7.4 SP3中文版)。单击菜单命令“文件”→“新建设计”,选择DEFAULT模板,保存文件名为“DT.DSN”。在器件选择按钮中单击
“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示的元件。
51单片机A T89C51 一片
晶体CRYSTAL 12MHz 一只
瓷片电容CAP 22pF 二只
电解电容CAP-ELEC 10uF 一只
尺寸测量
电阻RES 10K 一只
电阻RES 4.7K 四只zigbee定位
双列电阻网络Rx8 300R(Ω) 一只
四位七段数码管7SEG-MPX4-CA一只
三极管PNP四只
若用Proteus软件进行仿真,则上图中的晶振和复位电路以及U1的31脚,都可以不画,它们都是默认的。
在ISIS原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击POWER 和GROUND放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。
2 软件设计
LED数码管动态显示是一位一位地轮流点亮各位数码管的,因此要考虑每一位点亮的保持时间和间隔时间。保持时间太短,则发光太弱而人眼无法看清;时间太长,则间隔时间也将太长(假设N位,则间隔时间=保持时间X(N-1)),使人眼看到的数字闪烁。在程序中要合理的选择合适的保持时间和间隔时间。而循环次数则正比于显示的变化速度。
LED数码管动态显示的流程如下所示。
LED数码管动态显示的详细C51程序如下。
/***************************************** *通过P0及P2口控制四只数码管,12M晶振
*****************************************/
#include "reg51.h"
#define uchar unsigned char
家居智能系统
#define uint unsigned int
uchar code ddata[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,0x8e,0xc0,0xf9,0xa4
}; //0,1,2,F,0,1,2,3的段码
黑猎蝽/****延时函数*******************************/
志愿预测
工地降尘void delayms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
main()
{
while(1)
{
uint i,j,k;
for(k=1;k<17;k++) //16个字符
{
for(j=0;j<50;j++)//反比于字符显示变化速度
{
for(i=1;i<5;i++) //4位
{
P0=ddata[k+i-2];
switch(i)
{
case 1:P2=0XFE;break; //点亮第1位
case 2:P2=0XFD;break; //点亮第2位
case 3:P2=0XFB;break; //点亮第3位
case 4:P2=0XF7;break; //点亮第4位
}
delayms(5);
P2=0XFF; // 熄灭
}
}
}
}
}
打开Keil程序(本人使用的是Keil8.05中文版),执行菜单命令“工程”→“新建工程”创建“动态”项目,并选择单片机型号为A T89C51。执行菜单命令“文件”→“新建”创建文件,输入C语言源程序,保存为“DT.C”。在Project Workspace窗口中右击源代码组1,选择“添加文件到组‘源代码组l’”将源程序“DT.C”添加到项目中。
在Keil中执行执行菜单命令“工程”→“创建目标”(或点击“创建目标”快捷按钮),编译源程序。如果编译成功,则在“Output Window”的“创建”窗口中显示没有错误,并创建了“DT.HEX”文件。
3 仿真与调试
关于Proteus与Keil的联合仿真调试,可参见我以前所写的博文或其它参考资料。
启动Proteus的ISIS,并将其放在屏幕的右上角(可将原理图放大到合适大小);再启动Keil的μVision3,并将其放在屏幕的左下角。
在Keil中执行菜单命令“调试”→“启动/停止调试”,或直接单击图标,进入Keil调试环境。同时,在Proteus ISIS的窗口中可看出Proteus也进入了程序调试状态。

本文发布于:2024-09-22 09:49:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/319287.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数码管   元件   显示   选择
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议