基于单片机LED显示器的数字钟设计.doc





《基于单片机LED显示器的数字钟设计.doc》由会员分享,可在线阅读,更多相关《基于单片机LED显示器的数字钟设计.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于单片机LED显示器的数字钟设计本设计基于8031单片机控制,采用LED显示器设计一数字钟的设计方案。该数字钟能稳定显示时分秒,同时实现时分秒的数值调整。本文详细讨论了具体硬件电路,相关原器件的选择以及软件实现过程。比较时钟调整的查询方式和中断方式,对数字钟的稳定性和计时的精确性作了相关的讨论。在实验室通过硬件电路和仿真器进行模拟实验,验证电路和程序的正确性。最后给出采用中断方式实现的数字钟的源程序。 言 在单片机技术日趋成熟的今天,其灵活的硬件电路的设计和软件的设计,让单片机得到了广泛的应用,几乎是从小的电子产品,到大的工业控制,单片机都起到了举足轻重的作用。单片机小的系统结构几乎是所有具
2、有可编程硬件的一个缩影,可谓是“麻雀虽小,肝胆俱全”,单片机的学习和研究是对微机系统学习和研究的简捷途径。单片机以其体积小,使用灵活方便,成本低,易于产品化,抗干扰能力强,可在各种恶劣环境下工作等特点,广泛的应用于工业控制,智能仪表,家用电器,机器人,医疗仪器,军事装备等方面。为了加深对单片机应用的认识,巩固所学的单片机知识,本次科研训练特选题“基于单片机数码管显示的数字钟设计”,尝试基本电路设计和汇编语言编程以及锻炼实践动手能力。数字钟的实现方法多种多样,简单的可以由一些集成电子电路实现,精确点的可以通过某些时钟芯片,如MSM5832,DS1216,以及MC146818,结合相应的硬件电路和
3、软件实现。本次科研训练本着锻炼为主的原则,不采用任何现成的时钟芯片,通过简单的硬件电路,通过编写相应程序进行计时与时间调整。本文采用8031单片机,以8255A作其扩展,LED显示器采用共阴极的七段数码管,驱动器采用74LS07芯片,以及普通的按键作为基本元器件。2.数字钟硬件电路设计数字钟的整体框图如图1所示图1整体框图按键与8031的连接如图2所示。单片机8031与8255A的硬件连接如图3所示:图3. 8031与8255A的连接电路 8255A是一种通用的可编程并行I/O接口芯片,在微型计算机系统中,可不需要附加外部逻辑电路就可直接为CPU与外设之间提供数据通道。在单片机8031与825
4、5芯片连接中应接一个74LS373译码器,8255A作为8031的数据扩展口,输出所显示的段码及位选信号。8255A8255A的片选信号,所以8255A的控制口地址为:EFFFH,相应的,A口的地址为:EFFCH,B口的地址为:EFFDH。8255A的读写信号分别与8031的读写信号相连,使其有效时CPU从8255A读取数据或状态信息,或向8255A写入数据或控制字。RESET是复位控制信号,高电平有效。该信号有效时,将8255A控制寄存器内容都清零,并使所有饿断口都置成输入方式。当引脚悬空时,芯片默认为高电平,所以,为了让8255A在电路中正常工作,将RESET接地,强制使复位控制位失效。
5、8255A驱动数码管的电路如图4所示:图4. 8255A驱动数码管电路图8255A的A口和B口都作为输出,根据CPU输出的BCD码得到A口相对应的段码,A口将段码通过一个同相驱动器(图中因未找到同相驱动器而用反相驱动器代替)给数码管的abcdefg,同时,由B口输出位选信号,因为本次设计中使用的数码管都是共阴极的,所以,当B口输出为高电平时,经过74LS00与非门后得到低电平,即选中数码管。数字钟显示中有八个这样的数码管,他们的数据端都是通过A口获得,其位选信号分别接B口的八个口线。这样,使PB0置1,则最高位选中,然后将B口数据循环左移,则可依次使各个数码管选中显示。3.系统软件设计 软件总
6、体设计思想主程序主要由定时模块,显示模块和调整模块组成。定时部分采用经典的定时器定时,结合相应的时钟软件实现计时功能。显示模块是实现数字钟的另一重要部分,其模块的独立程度直接影响到数字钟的可视化程度。调整模块采用中断方式,通过按键可以调整数字钟时分秒的数值。定时模块程序中定时器,一直处于运行状态,也就是说定时器是理想运作的,其中断程序每隔秒执行一次,在理想状态下,定时器定时是没有系统误差的,但由于定时器中断溢出后,定时器从0开始计数,直到被重新置数,才开始正确定时,这样中断溢出到中断响应到定时器被重新置数,其间消耗的时间就造成了定时器定时的误差。如果在前述定时器不关的情况下,在中断程序的一开始
7、就给定时器置数,此时误差最小,误差大约为:每秒,误差712个机器周期。当然这是在定时器定时刚好为秒时的情况,由以上分析,如果数字钟设计为查询的方式或是在中断的方式下将定时器中断设置为最高级,我们在定时值设置时,可以适当的扣除9个机器周期的时间值。但如果在中断的情况下,没有将定时器中断设置为最高级,那就要视中断程序的大小,在定时值设置时,扣除相应的时间值。显示模块显示模块的独立性强,增强了数字钟的可视化程度。在此模块的设计中,设置专用显示数据缓冲区20H-27H与时分秒及其他数据缓冲区数据区别,在其中存放的是各个数码管要显示数字,而其他缓冲区存放的是时间数据。在显示时,首先分别将时分秒BCD码数
8、据转化为各个数码管要显示的数字,分别存储于相应的专用显示区,然后通过8255A的A口输出段码至数码管,B口输出位选信号,接着A口输出下一个段码,B口输出下一个位选信号,依此循环则可实现八位数码管的静态输出。但由于人眼视觉分辨率远远低于数码管循环点亮的速度,所以人们看到的数字钟还是相对稳定的。图6.显示模块流程图3.4 调整模块 数据调整有多种方式:可以直接进入相关状态进行有关操作;可将调整分两步,先进入状态,然后执行操作,分别由两个键控制。前者比较直接,设计思想也比较简单,但是,这种方式存在操作时间和控制键数目的矛盾。如果用比较少的键,那么可能会在进入状态后处于数据调整等待状态,这样会影响到显
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 LED 显示器 数字 设计

限制150内