目录1 绪论 (1)1.1 概述 (1)1.2 设计目的 (1)2 设计任务及内容 (1)2.1 设计任务 (1)2.2 设计内容 (1)3 总体设计及核心器件简介 (2)3.1 总体设计 (2)3.2 硬件设计 (2)3.2.1 硬件系统总体设计 (2)3.2.2 单片机的选择 (3)3.2.3 显示电路的选择与设计 (4)3.2.4 按键电路的选择与设计 (6)3.2.5 时钟电路的选择与设计 (7)3.2.6 复位电路的选择与设计 (8)3.2.7 系统总电路的设计 (10)3.3 软件设计 (11)3.3.1 程序设计思想 (11)3.3.2 系统资源的分配 (11)3.3.3 主程序设计 (11)3.3.4 中断程序设计 (12)4 数字电子秒表的安装与调试 (15)4.1 软件的仿真与调试 (15)4.2 硬件的安装与调试 (15)4.2 汇编程序 (16)5 设计体会与总结 (21)1 绪论1.1 概述单片微型计算机简称单片机,又称微控制器,是微型计算机的一个重要分支。
单片机是20世纪七十年代中期发展起来的一种大规模集成电路芯片,是集CPU、RAM、ROM、I/O接口和终端系统与同一硅片的器件。
20世纪八十年代以来单片机发展迅速各类新产品不断涌现出现许多新产品,出现了许多高性能新型机种现已成为工业控制和各控制领域的支柱产业之一。
由于单片机功能强、体积小、可靠性好、价格便宜等独特优点因而受到人们的高度重视并取到了一系列的科研成果,成为传统工业技术改造和新产品更新换代的理想机种,并具有广阔的发展前景。
本设计运用所学的单片机知识,将单片机与普通秒表相结合设计了电子秒表,具有显示直观、读取方便、精度高等优良特点,在计时中应用广泛。
1.2 设计目的加强对51系列单片机的构造了解及应用,熟悉汇编语言或C语言编程,综合掌握和理解设计各部分的工作原理、设计过程、芯片器件的选择方法、模块化编程等多项知识。
(1)用单片机模拟实现具体应用使个人设计系统能够真正使用;(2)把理论知识与实践知识相结合,充分发挥个人能力,并在实践中得到锻炼;(3)提高利用已学的知识分析和解决问题的能力;(4)提高动手实践能力。
2 设计任务及内容2.1 设计任务结合教材及参考资料,用80C51单片机模拟实现电子秒表的开启,计时,停止并显示时间等功能。
2.2 设计内容(1)填写设计任务书;(2)进行总体设计,画出设计原理图;(3)用PROTEUS软件画出设计电路图;(4)用Keil软件编写程序;(5)在PROTEUS里模拟并调试程序达到期望功能。
3 总体设计及核心器件简介3.1 总体设计本设计中包括硬件电路的设计和系统程序的设计。
其硬件电路的设计主要包括单片机的选择、显示电路的选择与设计、按键电路的选择与设计、时钟电路的选择与设计、复位电路的选择与设计等。
系统程序的设计包括系统程序设计思路、系统资源的分配、汇编程序的设计等。
3.2 硬件设计3.2.1 硬件系统总体设计主控制器选用80C51单片机,显示电路采用共阴极LED数码管显示计时时间,四个按键均采用触点式按键。
1.利用80C51单片机的定时器/计数器定时和记数的原理,使其能精确计时。
利用中断系统使其实现开始暂停的功能。
P0口输出段码数据,P2.2-P2.4口作列扫描输出,P1.0、P3.2、P3.3口接三个按钮开关,分别实现电子秒表的启动、开始、暂停功能。
电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理的前提下力求美观。
硬件电路图按照图3.1进行设计。
图3.1 数字秒表硬件电路基本原理图2.根据要求知道秒表设计主要实现的功能是计时和显示。
因此设置了四个按键和三位数码管显示时间,三个按键分别是启动、开始,停止和复位按键。
利用这四个键来实现秒表的全部功能,而三位数码管则能显示00.0-99.9秒的计时。
本设计中,数码管显示的数据存放在内存单元7BH-7DH中。
其中7BH存放0.1秒位数据,7CH存放1秒位数据,7DH存放10秒位数据,每一地址单元内均为十进制BCD 码。
由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。
显示时,先取出7BH-7DH某一地址中的数据,然后查得对应的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。
3.计时采用定时器T0中断完成,定时溢出中断周期为0.1s,当一处中断后向CPU发出溢出中断请求,每发出一次中断请求就对0.1秒计数单元进行加一,达到10次就对1秒位进行加一,依次类推,直到99.9秒重新复位。
4.按键的处理。
这两个键采用中断的方法来识别,对开始和停止键采用外部中断INT0、INT1的方式,即A、B键分别接P3.2、P3.3口。
3.2.2 单片机的选择本课题在选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根据自己的实际情况,选择了80C51。
80C51是MCS-51系列单片机中的一个子系列,是一族高性能兼容型单片机。
其内部资源分配和性能如下;8位CPU;寻址能力2X64K;4KB的内部ROM和128B内部RAM;四个8位I/O接口电路;一个串行全双工异步接口;五个中断源和两个中断优先级;采用CMOS工艺电流小,低功耗。
80C51各引脚主要功能简介:(1)Vss(20脚):接地(2)VCC(40脚): 主电源+5V(3)XTAL1(19脚):接外部晶体的一端。
在片内它是振荡电路反相放大器的输入端。
在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚):接外部晶体的另一端。
在片内它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。
若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。
(4) RST(9脚): 单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET)(5)PSEN(29脚): 在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。
CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。
不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。
PSEN端同样可驱动8个LSTTL 负载。
我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。
(6)ALE/PROG(30脚):在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。
CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。
不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。
PSEN端同样可驱动8个LSTTL负载。
我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。
(7)EA/VPP(31脚):当EA端输入高电平时,CPU从片内程序存储器地址0000单元开始执行程序。
当地址超出4KB时,将自动执行片外程序存储器的程序。
当EA输入低电平时,CPU仅访问片外程序存储器。
在对87C51EPROM编程时,此引脚用于施加编程电压VPP。
(8)输入/输出引脚:1)P0.0—P0.7 (39脚—32脚)2)P1.0—P1.7 (01脚—08脚)3)P2.0—P2.7 (26脚—21脚)4)P3.0—P3.7 (10脚—17脚)图3.2 80C51引脚图3.2.3 显示电路的选择与设计1.对于数字显示电路,通常采用液晶显示或数码管显示。
对于一般的段式液晶屏,需要专门的驱动电路,而且液晶显示作为一种被动显示,可视性差,不适合远距离观看;对于具有驱动电路和单片机接口的液晶显示模块(字符或点阵),一般多采用并行接口,对单片机的接口要求较高,占用资源多。
而数码管作为一种主动显示器件,具有亮度高、响应速度快、防潮防湿性能好、温度特性极性、价格便宜、易于购买等优点,而且有远距离视觉效果,很适合夜间或是远距离操作。
因此,本设计的显示电路采用7段数码管作为显示介质。
2. 数码管显示可以分为静态显示和动态显示两种。
由于本设计需要采用五位数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂。
所以采用动态显示。
动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。
通常各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的公共阴极位选线由另外的I/O口线控制。
动态方式显示时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。
图3.3 显示电路基本原理图3. 数码显示管分为共阳数码管和共阴数码管两种共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,如图3.4(b),通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
图3.4(a)数码管引脚图(b)共阳极内部结构图(c)共阴极内部结构共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起,如图3.4(c),通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端,当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
本设计采用共阴极数码显示管做显示电路,由于采用的是共阴的数码显示管,所以只要数码管的a、b、c、d、e、f、g、dp引脚为高电平,那么其对应的二极管就会发光,使数码显示管显示0~9的编码见表3.1。
表3.1 共阴极数码显示管字型代码字型共阴极代码字型共阴极代码0 3FH 5 6DH1 06H 6 7DH2 5BH 7 07H3 4FH 8 7FH4 66H 9 6FH4. 动态显示电路由显示块、字形码驱动模块、字位驱动模块三部分组成。
如图3.3所示为本系统的3位LED动态显示器接口电路。
图中,3个数码管的8段段选线分别与外接上拉电阻的单片机P0口对应相连,而3个数码管的位控制端则和NPN型三极管的集电极相连接。