数码管动态显示及实现方法

2016-12-26 16:03张成法孙月兴
电子技术与软件工程 2016年22期
关键词:数码管

张成法++孙月兴

摘 要

本文讲述利用74HC573锁存器和定时器来实现对数码管的动态显示,通过从左向右让六位数码管中的每一位每隔一秒依次显示123456来阐述数码管动态显示具体实现方法。

【关键词】动态显示 数码管 锁存器

数码管由于价格便宜,使用简单,在电器特别是家电领域(比如空调、热水器和冰箱等)得到了极为广泛的应用。在高校电子信息类专业单片机的教学过程中,数码管动态显示及实现方法是学生普遍反映较难掌握的内容。鉴于此,本文通过实际案例详细阐述了数码管的动态显示特点及实现方法。

1 系统整体设计

本系统是由AT89C52单片机、2个74HC573锁存器U3和U4,1个10K的电阻排,6个7段共阴极数码管、电源电路和复位电路组成。

74HC573锁存器的锁存端LE是高电平的时候,它的输入端D0~D7和输出端Q0~Q7是直通的,此时输入端数据会直接输出给输出端。74HC573锁存器的锁存端LE是低电平的时候,输入端和输出端断开,输出端保持原来的数值。

通过2个74HC573锁存器可以实现对数码管的段选和位选的选择。所谓段选是表示数码管中亮的内容(比如 1,2,3,4,5.......),而位选是表示让哪一个数码管亮,本系统中同时接入了6个数码管,通过对位选的赋值,可以选择让哪一个数码管亮。

锁存器U3的输出WE1、WE2、WE3、WE4、WE5和WE6用来控制数码管的位选,锁存器U4的输出a、b、c、d、e、f、g和h用来控制数码管的段选,这两个锁存器的输入端全部接在了P0口上,P0口的内部无上拉电阻,需在它的外部加一个10K的上拉电阻排P1,这样的话,单片机一上电后,P0口就是高电平。

2 数码管显示分析

如果想让哪个数码管亮,那么先将控制位选的锁存器U3的锁存端LE设为高电平,然后通过P0口送数值选择哪一位数码管亮,当这一位的数码管亮了以后,然后把锁存端LE设为低电平,锁存器的数据输出端的位选就保持住了,然后再把控制段选的锁存器U4的锁存端LE设置为高电平,然后通过P0口送数值,使数码管显示相应的数值,然后再把锁存器U4的锁存端LE设置为低电平,这时候段选和位选都赋上值了,数码管就亮了,并且显示相应的数值。这就是用一个P0端口通过两个锁存器U3和U4控制六位数码管。

要在第一个数码管上显示数字1,可以这样操作:将锁存器U3的锁存端LE设为高电平,通过P0口送数0xfe,然后再将锁存端LE设为低电平,这时在锁存器U3的右端就保持住了0xfe这个数值,不管再怎么改变P0口的数值,锁存器U3右端的数值还是0xfe,不会发生变化;将锁存器U4的锁存端LE设为高电平,然后给P0口送数据0x06(0x06对应十进制数1),然后将锁存端LE设为低电平,这样就把段选数值锁存住了,这样的话在第一个数码管上就会显示十进制数字1。

3 动态显示实现方法

通过编写“从左向右让六位数码管中的每一位每隔一秒依次显示123456”的程序来讲述数码管的动态显示实现方法。

在程序中会用到共阴极数码管编码表{0x06,0x5b,0x4f,0x66,0x6d,0x7d },此编码表中的数值分别对应十进制数1,2,3,4,5,6,此编码表的表示可以使用数组biao[ ],将biao[ ]定义成编码的格式,利用biao[ ]数组将编码表{0x06,0x5b,0x4f,0x66,0x6d,0x7d}中的数值取出来。利用位选数组biaowe[ ]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}选择点亮六位数码管中的哪一位。在程序中,利用定时器和中断服务程序来控制数码管的显示时间实现了数码管的动态显示。部分程序如下所示:

TMOD=0x01; //设置工作方式为16位定时/计数器

EA=1; //开总中断

ET0=1; //开定时器0中断

TR0=1; //启动定时器0

if(aa==40)

{ aa=0;numdu++;

dula=1;P0=biao[numdu];dula=0;

wela=1;P0=biaowe[numwe];wela=0;

numwe++;}

void timecalculate0() interrupt 1 //中断

{ TH0=(65536-25000)/256; TL0=(65536-25000)%256; aa++;}

此程序是让6个数码管中的数值依次每隔1秒显示,现在稍微得加快数码管显示速度,通过将程序中的aa==40修改为aa==10让数码管中的数值依次每隔250毫秒显示,通过单片机仿真系统原理图,可以看出数码管显示速度加快;将数码管显示速度进一步加快,通过修改程序让数码管中的数值依次每隔50毫秒显示,观察数码管的变化效果,可以看到数码管显示速度加快,6个数值在数码管上隐约全部显示出来;再让数码管中的数值依次每隔5毫秒显示,看看数码管的变化效果,可以看到123456这六个数在数码管上完全清晰地显示出来了。

4 结束语

在本文中,通过对锁存器功能的介绍、数码管显示的分析和案例程序的编写,详细阐述了数码管的动态显示及实现方法。

参考文献

[1]吴振磊,刘孝赵.74HC595在单片机控制多位数码管中的应用[J].科技广场,2013.

[2]李全利.单片机原理及应用技术[M].高等教育出版社,2009.

作者简介

张成法(1984-),男,山东省青州市人。硕士研究生学历。现供职于潍坊工程职业学院。主要研究方向为单片机与嵌入式系统。

作者单位

潍坊工程职业学院 山东省青州市 262500

猜你喜欢
数码管
物理项目教学设计,用单片机控制四位数码管显示
蓝桥杯树莓派模拟题解析三:“电子测距仪”
基于数码管故障诊断的算法研究
基于51单片机的分数计数器设计
Arduino编程
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于Qt的数码管数字编码系统的设计与实现
基于数码管显示教学实验设计