《烟台大学单片机课程设计电子秒表设计说明书.doc》由会员分享,可在线阅读,更多相关《烟台大学单片机课程设计电子秒表设计说明书.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MICROSOFT单片机原理及其接口技术课程设计电子秒表 姓名:邓峥嵘 学院:机电汽车工程学院 班级:机113-2 学号:3 新编单片机原理及应用课程设计电子秒表说明书一、题目:电子秒表二、任务要求:本设计以MCS-51系列单片机为核心,采用常用电子器件设计,一个电源开关,两个按键,三位数码管显示,打开电源开关后显示8,每秒循环左移一位,按A键开始计时,实时显示所经历的时间,按B键停止计时并显示从开始到当前时刻的时间,要求精确到0.1秒,量程为099.9秒。要求按键输入采用中断方式,按键A接INT0,B接INT1。三、组内成员: 谢升辉 邱智锐 邓峥嵘目录一、 绪论31.1 概述31.2 设计
2、目的31.3 设计任务和内容3二、 总体设计及核心器件简介42.1 总体设计42.2 硬件设计 42.3 软件设计 13三、 数字秒表的安装与调试173.1 软件的仿真与调试173.2 硬件的安装与调试173.3 汇编程序18四、 设计体会与总结22参考文献 23第一章 绪论1.1 概述单片微型计算机简称单片机,又称微控制器,是微型计算机的一个重要分支。单片机是20世纪七十年代中期发展起来的一种大规模集成电路芯片,是集CPU、RAM、ROM、I/O接口和终端系统与同一硅片的器件。20世纪八十年代以来单片机发展迅速各类新产品不断涌现出现许多新产品,出现了许多高性能新型机种现已成为工业控制和各控制
3、领域的支柱产业之一。由于单片机功能强、体积小、可靠性好、价格便宜等独特优点因而受到人们的高度重视并取到了一系列的科研成果,成为传统工业技术改造和新产品更新换代的理想机种,并具有广阔的发展前景。本设计运用所学的单片机知识,将单片机与普通秒表相结合设计了电子秒表,具有显示直观、读取方便、精度高等优良特点,在计时中应用广泛。1.2 设计目的加强对51系列单片机的构造了解及应用,熟悉汇编语言或C语言编程,综合掌握和理解设计各部分的工作原理、设计过程、芯片器件的选择方法、模块化编程等多项知识。 (1)用单片机模拟实现具体应用使个人设计系统能够真正使用;(2)把理论知识与实践知识相结合,充分发挥个人能力,
4、并在实践中得到锻炼;(3)提高利用已学的知识分析和解决问题的能力;(4)提高动手实践能力。1.3 设计任务及内容1.3.1设计任务结合教材及参考资料,用80C51单片机模拟实现电子秒表的开启,计时,停止并显示时间等功能。1.3.2 设计内容(1)填写设计任务书;(2)进行总体设计,画出设计原理图;(3)用PROTEUS软件画出设计电路图;(4)用Keil软件编写程序;(5)在PROTEUS里模拟并调试程序达到期望功能。第二章 总体设计及核心器件简介2.1 总体设计本设计中包括硬件电路的设计和系统程序的设计。其硬件电路的设计主要包括单片机的选择、显示电路的选择与设计、按键电路的选择与设计、时钟电
5、路的选择与设计、复位电路的选择与设计等。系统程序的设计包括系统程序设计思路、系统资源的分配、汇编程序的设计等。2.2 硬件设计2.2.1 硬件系统总体设计主控制器选用80C51单片机,显示电路采用共阴极LED数码管显示计时时间,四个按键均采用触点式按键。1. 利用80C51单片机的定时器/计数器定时和记数的原理,使其能精确计时。利用中断系统使其实现开始暂停的功能。P0口输出段码数据,P2.2-P2.4口作列扫描输出,P1.0、P3.2、P3.3口接三个按钮开关,分别实现电子秒表的启动、开始、暂停功能。电路原理图设计最基本的要求是正确性,其次是布局合理,最后在正确性和布局合理的前提下力求美观。硬
6、件电路图按照图2.1进行设计。 图2.1 数字秒表硬件电路基本原理图2. 根据要求知道秒表设计主要实现的功能是计时和显示。因此设置了四个按键和三位数码管显示时间,三个按键分别是启动、开始,停止和复位按键。利用这四个键来实现秒表的全部功能,而三位数码管则能显示00.0-99.9秒的计时。本设计中,数码管显示的数据存放在内存单元7BH7DH中。其中7BH存放0.1秒位数据,7CH存放1秒位数据,7DH存放10秒位数据,每一地址单元内均为十进制BCD码。由于采用软件动态扫描实现数据显示功能,显示用十进制BCD码数据的对应段码存放在ROM表中。显示时,先取出7BH-7DH某一地址中的数据,然后查得对应
7、的显示用段码,并从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。3. 计时采用定时器T0中断完成,定时溢出中断周期为0.1s,当一处中断后向CPU发出溢出中断请求,每发出一次中断请求就对0.1秒计数单元进行加一,达到10次就对1秒位进行加一,依次类推,直到99.9秒重新复位。 4. 按键的处理。这两个键采用中断的方法来识别,对开始和停止键采用外部中断INT0、INT1的方式,即A、B键分别接P3.2、P3.3口。2.2.2 单片机的选择本课题在选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根据自己的实际情况,选择了80C51。80C51是MCS-51系列单片机
8、中的一个子系列,是一族高性能兼容型单片机。其内部资源分配和性能如下;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脚):接外部晶体的另一端。在片内它是一个振荡电路反相放大器
9、的输出端,振荡电路的频率是晶体振荡频率。若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。(4) RST(9脚): 单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET)(5)PSEN(29脚): 在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出
10、,可以判别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仅访问片外程序存储器。在对87C
11、51EPROM编程时,此引脚用于施加编程电压VPP。(8)输入/输出引脚:1)P0.0P0.7 (39脚32脚) 2)P1.0P1.7 (01脚08脚)3)P2.0P2.7 (26脚21脚)4)P3.0P3.7 (10脚17脚) 图2.2 80C51引脚图2.2.3显示电路的选择与设计1 对于数字显示电路,通常采用液晶显示或数码管显示。对于一般的段式液晶屏,需要专门的驱动电路,而且液晶显示作为一种被动显示,可视性差,不适合远距离观看;对于具有驱动电路和单片机接口的液晶显示模块(字符或点阵),一般多采用并行接口,对单片机的接口要求较高,占用资源多。而数码管作为一种主动显示器件,具有亮度高、响应速
12、度快、防潮防湿性能好、温度特性极性、价格便宜、易于购买等优点,而且有远距离视觉效果,很适合夜间或是远距离操作。因此,本设计的显示电路采用7段数码管作为显示介质。2. 数码管显示可以分为静态显示和动态显示两种。由于本设计需要采用五位数码管显示时间,如果静态显示则占用的口线多,硬件电路复杂。所以采用动态显示。动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。通常各位数码管的段选线相应并联在一起,由一个8位的I/O口控制;各位的公共阴极位选线由另外的I/O口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应
13、的段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。 图2.3 显示电路基本原理图3. 数码显示管分为共阳数码管和共阴数码管两种共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起,如图2.4(b),通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通电流,还需根据外
14、接电源及额定段导通电流来确定相应的限流电阻。图2.4(a)数码管引脚图 (b)共阳极内部结构图 (c)共阴极内部结构共阴极数码管的8个发光二极管的阴极(二极管负端)连接在一起,如图2.4(c),通常,公共阴极接低电平(一般接地),其它管脚接段驱动电路输出端,当某段驱动电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。 本设计采用共阴极数码显示管做显示电路,由于采用的是共阴的数码显示管,所以只要数码管的a、b、c、d、e、f、g、dp引脚为高电平,那
15、么其对应的二极管就会发光,使数码显示管显示09的编码见表2.1。表2.1 共阴极数码显示管字型代码字型共阴极代码字型共阴极代码03FH56DH106H67DH25BH707H34FH87FH466H96FH4. 动态显示电路由显示块、字形码驱动模块、字位驱动模块三部分组成。如图2.3所示为本系统的3位LED动态显示器接口电路。图中,3个数码管的8段段选线分别与外接上拉电阻的单片机P0口对应相连,而3个数码管的位控制端则和NPN型三极管的集电极相连接。单片机的P2.2P2.4口则分别对应数码显示管的最低位到最高位,P2.2P2.4口分别和 三个NPN型三极管的基极相连,做三极管导通的控制端,而N
16、PN型三极管选用9013型三极管。根据9013的资料显示:其耐压值为40V,最大功率为0.65W,最大电流为0.5A,电气性能完全满足本设计的要求。另外数码管显示是采用动态显示,所以对三极管的开关频率有一定的要求。根据电子秒表的设计计算可知动态显示的频率最高为3KHz,而9013的导通频率为150MHz,完全能满足本设计的要求,所以最终选取9013三极管最为位控制开关。5 由于数码管是有P0口来驱动,它内部没有上拉电阻,作为输出口时驱动能力比较弱,不能点亮数码显示管,因此P0口必须接上拉电阻来提高驱动能力。另外一位共阴数码管的驱动电流一般为20mA左右,如果电流太大容易造成数码管损坏,所以也需
17、要根据电源的电压值来确定上拉电阻的大小。如果电阻过小,势必会形成灌电流过大,造成单片机IO的损坏,如果电阻过大,那么对拉电流没有太大的影响。电源供电电压为5V,当上拉电阻选用220电阻时灌电流为22mA。不会损坏单片机的I/O口,同时也可以为数码显示管起到限制电流的保护作用。 2.2.4按键电路的选择与设计本设计中有四个按键,分别实现启动、开始、暂停和复位功能。按设计要求对开始和停止键采用外部中断INT0、INT1的方式,即A、B键分别接P3.2、P3.3口。四个按键均采用低电平有效,具体电路连接图如图2.5所示。1. 当按键没有按下时,单片机的I/O口直接连接电源,因此需要接上拉电阻来进行限
18、流,本设计中选取阻值为100 的电阻作为上拉电阻,根据计算可知此时的灌电流为50mA,查看80C51的资料得知次电流在安全范围内,符合安全设计要求。2. 按键电路中由于采用了外部中断,所以需要用到P3口的第二功能。P3口引脚的第二功能如表2.2 图2.5 按键电路表2.2 P3口引脚第二功能表 P3口引脚特殊功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0请求输入端)P3.3INT1(外部中断1请求输入端)P3.4 T0(定时器/计数器0计数脉冲输入端)P3.5 T1(定时器/计数器1计数脉冲输入端)P3.6WR(片外数据存储器写选通信号输出端)P3.7
19、 RD(片内数据存储器读选通信号输出端)2.2.5 时钟电路的选择与设计单片机的时钟信号用来提供单片机内各种微操作的时间基准,80C51片内设有一个由反向放大器所构成的振荡电路,XTAL1和 XTAL2分别为振荡电路的输入和输出端,80C51单片机的时钟信号通常用两种电路形式得到:内部振荡方式与外部振荡方式。外部方式的时钟很少用,若要用时,只要将XTAL1接地,XTAL2接外部振荡器就行。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12MHz的方波信号。时钟发生器把振荡频率两分频,产生一个两相时钟信号P1和P2供单片机使用。P1在每一个状态S的前半部分有效,P2在每个状态的后半
20、部分有效。本设计采用的内部振荡方式,内部振荡方式所得的时钟信号比较稳定,实用电路中使用较多。本设计系统的时钟电路如图2.6所示。只要按照图2.6所示电路进行设计连接就能使系统可靠起振并能稳定运行。图中,电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般为533pF。但在时钟电路的实际应用中一定要注意正确选择其大小,并保证电路的对称性,尽可能匹配,选用正牌的瓷片或云母电容,如果可能的话,温度系数尽可能低。本设计中采用大小为30pF的电容和12MHz的晶振。 (a)原理图 (b)电路连接图图2.6 内部振荡电路2.2.6复位电路的选择与设计关于单片机的置位和复位,都是为了把电路初始化到一个
21、确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。根据应用的要求,复位操作通常有两种基本形式:上电复位、手动复位。上电复位要求接通电源后,自动实现复位操作。80C51单片机的上电复位POR(Power On Reset)实质上就是上电延时复位,也就是在上电延时期间把单片机锁定在复位状态上。在单片机每次初始加电时,首先投入工作的功能部件是复位电路。复位电路把单片机锁定在复位状态上并且维持一个延时(记作
22、TRST),以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间;在单片机开始进入运行状态之前,还要至少推迟2个机器周期的延时。上述一系列的延时,都是利用在单片机RST引脚上外接一个RC支路的充电时间而形成的。典型复位电路如图2.7(a)所示,其中的阻容值是原始手册中提供的。在经历了一系列延时之后,单片机才开始按照时钟源的工作频率,进入到正常的程序运行状态。在电源电压以及振荡器输出信号稳定之后,又等待了一段较长的延时才释放RST信号,使得CPU脱离复位锁定状态;而RST信号一旦被释放,立刻在ALE引脚上就可检测到持续的脉冲信号
23、。由于标准80C51的复位逻辑相对简单,复位源只有RST一个(相对新型单片机来说,复位源比较单一),因此各种原因所导致的复位活动以及复位状态的进入,都要依靠在外接引脚RST上施加一定时间宽度的高电平信号来实现。标准80C51不仅复位源比较单一,而且还没有设计内部上电复位的延时功能,因此必须借助于外接阻容支路来增加延时环节,如图2.7(a)所示。其实,外接电阻R还是可以省略的,理由是一些CMOS单片机芯片内部存在一个现成的下拉电阻Rrst。如图2.8所示。因此,在图2.7(a)的基础上,上电复位延时电路还可以精简为图2.7(b)所示的简化电路(其中电容C的容量也相应减小了)。 图2.7上电复位延
24、时电路 图2.8复位引脚RST内部电路在每次单片机断电之后,须使延时电容C上的电荷立刻放掉,以便为随后可能在很短的时间内再次加电作好准备。否则,在断电后C还没有充分放电的情况下,如果很快又加电,那么RC支路就失去了它应有的延迟功能。因此,在图2.7(a)的基础上添加一个放电二极管D,上电复位延时电路就变成了如图2.7(c)所示的改进电路。也就是说,只有RC支路的充电过程对电路是有用的,放电过程不仅无用,而且会带来潜在的危害。于是附加一个放电二极管D来大力缩短放电持续时间,以便消除隐患。二极管D只有在单片机断电的瞬间(即VCC趋近于0 V,可以看作VCC对地短路)正向导通,平时一直处于反偏截止状
25、态。手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。 (a)原理图 (b)电路连接图图2.9 单片机复位电路本设计采用上电且开关复位电路,如图2.9所示上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择C=1030F,R=1001K,本设计采用的电容值为22F的电容和电阻为1K的电阻。2.2.7 系统总电路的设计系统总电路由以上设计的显示电路,时钟电路,按键电路和
26、复位电路组成,只要将单片机与以上各部分电路合理的连接就组成了系统总电路。系统总电路图如图2.10所示。80C51单片机为主电路的核心部分,各个电路均和单片机相连接,由单片机统筹和协调各个电路的运行工作。80C51单片机提供了XTAL1和XTAL2两个专用引脚接晶振电路,因此只要将晶振电路接到两个专用引脚即可为单片机提供时钟脉冲,但在焊接晶振电路时要尽量使晶振电路靠近单片机,这样可以为单片机提供稳定的始终脉冲。图2.10 系统总电路图复位电路同晶振电路,单片机设有一个专用的硬件复位接口,并设置为高电平有效。按键电路与单片机的端口连接可以由用户自己设定,本设计中软件复位键接单片机的P1.0设为低电
27、平有效。而另外的开始键和暂停键两键使用了外部中断,所以需要连接到单片机的特殊接口P3.2和P3.3,这两个I/O口的第二功能分别为单片机的外部中断INT0端口和外部中断INT1端口。同样设置为位低电平有效。显示电路由三位数码管组成,采用动态显示方式,因此有8位段控制端和3位位控制端,八位段控制接P0口,P0.0-P0.7分别控制数码显示管的a、b、c、d、e、f、g、dp显示,80C51的P0口没有集成上拉电阻,高电平的驱动能力很弱,所以需要接上拉电阻来提高P0的高电平驱动能力。三位位控制则由低位到高位分别接到P2.2-P2.4口,NPN三极管9013做为位控制端的开关,当P2.2-P2.4端
28、口任意一个端口为高电平时,与其相对应的三极管就导通,对应的数码管导通显示。通过以上设计已经将各部分电路与单片机有机的结合到一起,硬件部分的设计以大功告成,剩下的部分就是对单片机的编程,使单片机按程序运行,实现数字电子秒表的全部功能。2.3 软件设计2.3.1 程序设计思想结合电路,程序的总体思路 如图2.11。2.3.2 系统资源的分配本设计系统所用到的单片机端口数比较多,所以在这里将对数字电子秒表的硬件资源的大概分配加以说明。片内RAM的分配、各功能键的定义以及各端口的分配安排如表2.3所示。表2.3 端口的分配安排表名称功能描述初始化值7BH-7DH0.1s-10s位显示寄存区00HR3-
29、 R50.1s-10s位溢出计数区定时器T0控制秒表的最小精度3CB0H外部中断INT0停止中断信号入口外部中断INT1开始中断信号入口2.3.3 主程序设计本系统程序主要模块由主程序、定时中断服务程序、外部中断INT0服务程序和外部中断INT1服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用,协调各个子程序之间的联系。系统(上电)复位后,进入主程序,主程序流程图如图2.11。首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。数码管显示程序对显示缓存区内的数值进行调用并在数码管上进行动态显示。显
30、示一次就对P1.0进行一次扫描,查询启动键P1.0是否按下,当启动键按下后,数码管全零显示,没有按下则返回开始,重新循环显示数字8。在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。当外部中断有请求则去执行外部中断服务程序,并在执行完后返回主程序。2.3.4 中断程序设计现在方案中采用了两个中断,外部中断INT0,INT1。CPU在响应中断时,先处理高级中断,在处理低级中断,若有多个同级中断时,则按自然优先顺序处理。例如当CPU正在处理一个中断申请时,有出现了另一个优先级比它高的中断请求,这是,CPU就暂停终止对当前优先级较低的中断
31、源的服务,转去响应优先级比它高的中断请求,并为其服务。待服务结束,再继续执行原来较低级的中断服务程序。而当CPU为级别高的终端服务程序服务时,如果级别低的中断发出中断请求,此时CPU是不会响应的,所以为了避免开始和暂停两个按键中的一个出现没有响应的情况,在进行程序编辑时要注意对中断的使用,避免出现中断的嵌套。,合理分配中断对本设计的实现是至关重要的。80C51的自然优先级顺序排列如下:中断源 最高外部中断INT0定时/计数器T0溢出中断外部中断INT1定时/计数器T1溢出中断串行口中断 最低数字式秒表中的两个按键采用了中断实现功能。开始采用外部中断INT0,停止采用外部中断INT1。另外程序中
32、还用到了定时/计数器0溢出中断进行计时。依据设计要求,停止的外部中断INT1中断级别最高,计时的定时/计数器0溢出中断次之,开始的外部中断INT0级别最低。(1)外部中断INT0服务程序外部中断INT0服务程序结合外部P3.2开始键实现数字电子秒表的计时开始功能,具体流程图如图2.12。当按下P3.2开始键按下向CPU发出外部中断请求,CPU转向外部中断0服务程序执行,启动定时器T0。NY对定时器/计数器初始化数码管循环显示8N开中断并启动定时器定时器溢出中断对定时器重新赋值进行加一操作后重新计算时间往P0口送显示时间数码管显示B键是否按下?N停止计时,显示时间Y开始N结束YYD键是否按下?C
33、键是否按下?数码管全显示0A键是否下?程序开始图2.11 主程序流程图中断返回停止定时器T0外部中断1入口中断返回停止定时器T0外部中断0入口图2.12外部中断1服务程序流程图 图2.13外部中断0服务程序流程图(2)外部中断INT1服务程序:外部中断INT1服务程序结合外部P3.3停止键实现数字电子秒表的停止功能,具体流程图如图2.13。当按下P3.2停止键按下向CPU发出外部中断请求,CPU转向外部中断1服务程序执行,停止定时器T0。(3)定时中断服务程序当定时/计数器T0器溢出后,向CPU发出中断请求信号。CPU跳转到定时中断程序执行。定时中断程序是一个进位程序,主要负责对0.1s的加一
34、。当如果满十就向0.1s位加一,依次类推,最终达到99.9秒后归零,从零开始再次计时。定时/计数器T0工作在方式1下,THX和TLX组成一个16位的二进制数计数器。单片机开机或复位时,它的值为00H,当T0启动后,从第一个输入脉冲开始计时,每来一个脉冲计数加一,即从00000开始计数到11111,再计数一个脉冲时TH0和TL0组成的16位计数器将会从16个1变成16个0,并产生溢出,溢出位将被送到TF0标志位,通过溢出标志产生溢出中断请求。显然,T0定时器在方式1下引起一次中断所允许计数的最多脉冲个数为216 个。但如果定时计数器如果每次都固定从0开始计数,到计满后,再向CPU发出溢出中断请求
35、信号那是毫无意义的。为了使定时计数器在规定的计数脉冲个数字之后(此时应小于216 个脉冲),向CPU发出溢出中断请求,可采取预先向THX和TLX中放入一个初值X的方法,使计数器以X值为起始值开始计数,即X+1,X+2,直至计数器计满,从1全变为0。设需要计数的脉冲个数为N,则有:N=216-X 。在定时方式下:定时时间T=N*Tcy=(216X)*12/fosc。现在本设计要求50ms实现一次中断,选择定时器T0工作在方式1。所以需要根据以上条件计算出T0的初值。设T0的初值为X,则 X =21650ms/1us=15536D=3CB0H。即THX=3CH(取X的高8位)TLX=0B0H(取X
36、的低5位)由于定时50ms只是一个理想化的时间,其中并没有考虑到中断后单片机执行语句所花的时间。虽然执行语句所花的时间很短只有即微秒,但积少成多,数字秒表一秒中要溢出中断20次,积累起来误差就能达到毫秒级,这对于精度到达毫秒级的数字电子秒表来说是很大的误差。所以要在后期编程时还要将单片机读程序的时间考虑进去,在对定时器赋初值时将单片机需要执行的语句所花的时间加上,这样就能使数字电子秒表的误差达到最小。第三章 数字电子秒表的安装与调试3.1 软件的仿真与调试Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件,它可以仿真、分析(SPICE)各种模拟器件和集成电路。该软
37、件的主要特点总结后有以下四点:实现了单片机仿真和SPICE电路仿真相结合的功能。支持目前主流单片机系统的仿真。提供了软件调试功能,并可以与WAVE联合仿真调试。具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。在电子领域中也起到了很大的作用,它的出现仿真不需要先焊接电路,可以先仿真调试通过后在焊电路,节省了不少在硬件调试上所花的时间。Proteus ISIS的工作界面是一种标准的Windows界面。它包括标题栏、主菜单、状态栏、标准工具栏、绘图工具栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口等
38、十几个工具,方便了使用者的使用。Proteus SISI绘制原理图的操作与Protel 99se绘制原理图的操作基本相同,在这里就不再作赘述。下面拿本设计中的一个仿真例子作简述说明。运行Proteus SISI后,绘制病床呼叫系统的原理图。首先打开已经画好的proteus DSN文件,双击图中的80C51芯片,就弹出一个窗口,在Program File项中通过路径选择在WAVE中生成的HEX文件,双击选中后确定,这样仿真图中的80C51芯片就已经读取了本设计中的HEX文件。单击“三角形按钮”进行仿真。通过对仿真结果的观察来对程序进行修改,最终使程序到达设计要求。3.2 硬件的安装与调试按照之前
39、设计好的数字电子秒表原理图,详细计算系统中各个元件的参数,选择相应器件,制作实际电路板。由于考虑到万能板大小的问题及元件之间连线的方便,在焊接元器件前必须考虑元件的布局然后进行实际操作。制作好的电路板可以用万用表(200欧姆档)的红、黑表笔测试电路板的每条走线,当其电阻非常小时,证明走线没有断开,当其电阻很大时,证明该条走线断了,应该重新走线,使电路板在电气上得到正确地连接。选用万用表的20K欧姆档,检测电路中是否存在短路。因为系统采用的是共阴极数码管作为显示电路,必须确保数码管的公共端接的是低电平。(1)晶振电路的测试在单片机正常运行的必要条件是单片机系统的时钟稳定正常。实际中,因为各种原因
40、导致系统时钟不正常而出现系统无法正常运行的情况时有,因此系统时钟是否振是通电检查的首要环节。在系统通电的状况下,用万用表的直流电压档(20V),分别测量XTAL1和XTAL2引脚的电压,看是否正常,在调试过程中,测得电压XTAL1引脚应为2.05V,XTAT2应为2.15V。(2)复位电路的测试复位不正常也会导致系统不能工作。如果复位引脚始终为高电平,系统将始终处于复位状态;如果始终为低电平,不能产生复位所需的高电平信号脉冲,则系统也可能无法正常工作。单片机正常工作时,RST复位引脚应为0V,按下复位按键时,复位引脚为高电平5V左右。(3)显示电路的测试显示电路是数字电子秒表正常运行最直观的观
41、察窗口,我们可以通过观察显示电路的显示结果观察系统能否正常运行。当显示电路按照电路图焊接好后,用万用表的测二极管档位,将黑表笔接共阴数码管的公共段,然后将红表笔接数码管的各段,当数码管的段能正常显示,说明各点焊接正常。3.2 汇编程序 ORG 0000H LJMP MAIN ORG 0003H ;外部中断INT0中断入口 LJMP START ORG 000BH ;定时器T0中断入口 LJMP UPDATE ORG 0013H ;外部中断INT1中断入口 LJMP STOPMAIN: MOV DPTR, #TAB ;存入表头地址 MOV TMOD, #01H ;置T0为方式1 MOV TH0,
42、 #3CH ;赋定时器初值,50毫秒 MOV TL0, #0B0H MOV 7BH, #00H ;0.1秒的存储空间 MOV 7CH, #00H ;1秒的存储空间 MOV 7DH, #00H ;10秒的存储空间 MOV R2, #00H ;R2、R3、R4寄存器置零 MOV R3, #00H MOV R4, #00H SETB EA ;开中断总允许 SETB EX0 ;开外部中断INT0 SETB EX1 ;开外部中断INT1 SETB IT0 ;外部中断0位边沿触发方式 SETB IT1 ;外部中断1位边沿触发方式 SETB ET0 ;定时器T0允许位XIAN1: MOV P0, #07FH ;显示数字8 SETB P2.2 ;接通0.1s数码管 L