基于 51 单片机的 LED 数码管动态显示 LED 数码管动态显示就是一位一位地轮流点亮各位数码管,对于每一位 LED 数码管来说,每隔一段 时间点亮一次,利用人眼的“视觉暂留"效应,采用循环扫描的方式,分时轮流选通各数码管的公共 端,使数码管轮流导通显示。当扫描速度达到一定程度时led数码管显示,人眼就分辨不出来了。尽管实际上各位 数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,认为各数 码管是同时发光的。若数码管的位数不大于 8 位时,只需两个 8 位 I/O 口。 1 硬件设计 利用 51 单片机的 P0 口输出段码,P2 口输出位码,其电路原理图如下所示。在桌面上双击图标,打开 ISIS 7 Professional 窗口(本人使用的是 v7.4 SP3 中文版)。单击菜单命令 “文件”→“新建设计”,选择 DEFAULT 模板led数码管显示,保存文件名为“DT.DSN”。在器件选择按钮中单击“P”按钮,或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示的元件。51 单片机 AT89C51 一片 晶体 CRYSTAL 12MHz 一只瓷片电容 CAP 22pF 二只 电解电容 CAP-ELEC 10uF 一只电阻 RES 10Kһֻ电阻 RES 4.7K 四只双列电阻网络 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,3,4....F,0,1,2,3 的段码/****延时函数*******************************/ void delayms(uint t) { uint i,j;for(i=0;i
文章由启和科技编辑
上一篇:led显示屏市场分析 大画面LED显示屏行业未来的发展趋势分析
下一篇:LED灯珠所拥有的优点