单片机课程设计说明书范文 - 电子秒表
更新时间:2024-05-10 15:40:01 阅读量: 综合文库 文档下载
目 录
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
0
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里模拟并调试程序达到期望功能。
1
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次就对
2
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是否在工作。
3
(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口线控制。动态方式显示时,各数码管分时轮流选通,要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。
4
图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 共阴极数码显示管字型代码 共阴极代码
5
共阴极代码
字型
0 1 2 3 4
3FH 06H 5BH 4FH 66H
5 6 7 8 9
6DH 7DH 07H 7FH 6FH
4. 动态显示电路由显示块、字形码驱动模块、字位驱动模块三部分组成。如图3.3所示为本系统的3位LED动态显示器接口电路。图中,3个数码管的8段段选线分别与外接上拉电阻的单片机P0口对应相连,而3个数码管的位控制端则和NPN型三极管的集电极相连接。单片机的P2.2~P2.4口则分别对应数码显示管的最低位到最高位,P2.2~P2.4口分别和 三个NPN型三极管的基极相连,做三极管导通的控制端,而NPN型三极管选用9013型三极管。根据9013的资料显示:其耐压值为40V,最大功率为0.65W,最大电流为0.5A,电气性能完全满足本设计的要求。另外数码管显示是采用动态显示,所以对三极管的开关频率有一定的要求。根据电子秒表的设计计算可知动态显示的频率最高为3KHz,而9013的导通频率为150MHz,完全能满足本设计的要求,所以最终选取9013三极管最为位控制开关。
5. 由于数码管是有P0口来驱动,它内部没有上拉电阻,作为输出口时驱动能力比较弱,不能点亮数码显示管,因此P0口必须接上拉电阻来提高驱动能力。另外一位共阴数码管的驱动电流一般为20mA左右,如果电流太大容易造成数码管损坏,所以也需要根据电源的电压值来确定上拉电阻的大小。如果电阻过小,势必会形成灌电流过大,造成单片机IO的损坏,如果电阻过大,那么对拉电流没有太大的影响。电源供电电压为5V,当上拉电阻选用220Ω电阻时灌电流为22mA。不会损坏单片机的I/O口,同时也可以为数码显示管起到限制电流的保护作用。
3.2.4 按键电路的选择与设计
本设计中有四个按键,分别实现启动、开始、暂停和复位功能。按设计要求对开始和停止键采用外部中断INT0、INT1的方式,即A、B键分别接P3.2、P3.3口。四个按键均采用低电平有效,具体电路连接图如图3.5所示。
1. 当按键没有按下时,单片机的I/O口直接连接电源,因此需要接上拉电阻来进行
限流,本设计中选取阻值为100Ω 的电阻作为上拉电阻,根据计算可知此时的灌电流为50mA,查看80C51的资料得知次电流在安全范围内,符合安全设计要求。 2. 按键电路中由于采用了外部中断,所以需要用到P3口的第二功能。P3口引脚的
第二功能如表2.2
6
图3.5 按键电路
表3.2 P3口引脚第二功能表
P3口引脚
P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
特殊功能
RXD(串行输入口) TXD(串行输出口)
INT0(外部中断0请求输入端) INT1(外部中断1请求输入端)
T0(定时器/计数器0计数脉冲输入端) T1(定时器/计数器1计数脉冲输入端) WR(片外数据存储器写选通信号输出端) RD(片内数据存储器读选通信号输出端)
3.2.5 时钟电路的选择与设计
单片机的时钟信号用来提供单片机内各种微操作的时间基准,80C51片内设有一个由反向放大器所构成的振荡电路,XTAL1和 XTAL2分别为振荡电路的输入和输出端,80C51单片机的时钟信号通常用两种电路形式得到:内部振荡方式与外部振荡方式。外部方式的时钟很少用,若要用时,只要将XTAL1接地,XTAL2接外部振荡器就行。对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于12MHz的方波信号。
时钟发生器把振荡频率两分频,产生一个两相时钟信号P1和P2供单片机使用。P1
在每一个状态S的前半部分有效,P2在每个状态的后半部分有效。本设计采用的内部振荡方式,内部振荡方式所得的时钟信号比较稳定,实用电路中使用较多。本设计系统的时钟电路如图3.6所示。只要按照图3.6所示电路进行设计连接就能使系统可靠起振并能稳定运行。图中,电容器C1 、C2起稳定振荡频率、快速起振的作用,电容值一般为5~33pF。但在时钟电路的实际应用中一定要注意正确选择其大小,并保证电路的对称性,
7
尽可能匹配,选用正牌的瓷片或云母电容,如果可能的话,温度系数尽可能低。本设计中采用大小为30pF的电容和12MHz的晶振。
(a)原理图 (b)电路连接图
图3.6 内部振荡电路
3.2.6 复位电路的选择与设计
关于单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。
根据应用的要求,复位操作通常有两种基本形式:上电复位、手动复位。 上电复位要求接通电源后,自动实现复位操作。80C51单片机的上电复位POR(Power On Reset)实质上就是上电延时复位,也就是在上电延时期间把单片机锁定在复位状态上。在单片机每次初始加电时,首先投入工作的功能部件是复位电路。复位电路把单片机锁定在复位状态上并且维持一个延时(记作TRST),以便给予电源电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时钟振荡器从起振到稳定的一个等待时间;在单片机开始进入运行状态之前,还要至少推迟2个机器周期的延时。
上述一系列的延时,都是利用在单片机RST引脚上外接一个RC支路的充电时间而形成的。典型复位电路如图3.7(a)所示,其中的阻容值是原始手册中提供的。在经历了一系列延时之后,单片机才开始按照时钟源的工作频率,进入到正常的程序运行状态。在电源电压以及振荡器输出信号稳定之后,又等待了一段较长的延时才释放RST信号,使得CPU脱离复位锁定状态;而RST信号一旦被释放,立刻在ALE引脚上就可检测到持续的脉冲信号。
由于标准80C51的复位逻辑相对简单,复位源只有RST一个(相对新型单片机来说,复位源比较单一),因此各种原因所导致的复位活动以及复位状态的进入,都要依靠在外接引脚RST上施加一定时间宽度的高电平信号来实现。
标准80C51不仅复位源比较单一,而且还没有设计内部上电复位的延时功能,因此
8
必须借助于外接阻容支路来增加延时环节,如图3.7(a)所示。其实,外接电阻R还是可以省略的,理由是一些CMOS单片机芯片内部存在一个现成的下拉电阻Rrst。如图2.8所示。因此,在图3.7(a)的基础上,上电复位延时电路还可以精简为图3.7(b)所示的简化电路(其中电容C的容量也相应减小了)。
图3.7上电复位延时电路 图3.8复位引脚RST内部电路
在每次单片机断电之后,须使延时电容C上的电荷立刻放掉,以便为随后可能在很短的时间内再次加电作好准备。否则,在断电后C还没有充分放电的情况下,如果很快又加电,那么RC支路就失去了它应有的延迟功能。因此,在图3.7(a)的基础上添加一个放电二极管D,上电复位延时电路就变成了如图3.7(c)所示的改进电路。也就是说,只有RC支路的充电过程对电路是有用的,放电过程不仅无用,而且会带来潜在的危害。于是附加一个放电二极管D来大力缩短放电持续时间,以便消除隐患。二极管D只有在单片机断电的瞬间(即VCC趋近于0 V,可以看作VCC对地短路)正向导通,平时一直处于反偏截止状态。
手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。单片机要完成复位,必须向复位端输出并持续两个机器周期以上的高电平,从而实现复位操作。
VCCC3R4200Ω22uFS4R51KΩ接RSET
(a)原理图 (b)电路连接图
图3.9 单片机复位电路
本设计采用上电且开关复位电路,如图3.9所示上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时
9
间的高电平,从而实现上电且开关复位的操作。通常选择C=10~30μF,R=100Ω~1KΩ,本设计采用的电容值为22μF的电容和电阻为1K的电阻。
3.2.7 系统总电路的设计
系统总电路由以上设计的显示电路,时钟电路,按键电路和复位电路组成,只要将单片机与以上各部分电路合理的连接就组成了系统总电路。系统总电路图如图3.10所示。
80C51单片机为主电路的核心部分,各个电路均和单片机相连接,由单片机统筹和协调各个电路的运行工作。
80C51单片机提供了XTAL1和XTAL2两个专用引脚接晶振电路,因此只要将晶振电路接到两个专用引脚即可为单片机提供时钟脉冲,但在焊接晶振电路时要尽量使晶振电路靠近单片机,这样可以为单片机提供稳定的始终脉冲。
图3.10 系统总电路图
复位电路同晶振电路,单片机设有一个专用的硬件复位接口,并设置为高电平有效。 按键电路与单片机的端口连接可以由用户自己设定,本设计中软件复位键接单片机的P1.0设为低电平有效。而另外的开始键和暂停键两键使用了外部中断,所以需要连接到单片机的特殊接口P3.2和P3.3,这两个I/O口的第二功能分别为单片机的外部中
10
断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端口任意一个端口为高电平时,与其相对应的三极管就导通,对应的数码管导通显示。
通过以上设计已经将各部分电路与单片机有机的结合到一起,硬件部分的设计以大功告成,剩下的部分就是对单片机的编程,使单片机按程序运行,实现数字电子秒表的全部功能。
3.3 软件设计 3.3.1 程序设计思想
结合电路,程序的总体思路 如图3.11。
3.3.2 系统资源的分配
本设计系统所用到的单片机端口数比较多,所以在这里将对数字电子秒表的硬件资源的大概分配加以说明。片内RAM的分配、各功能键的定义以及各端口的分配安排如表3.3所示。
表3.3 端口的分配安排表
名称 7BH-7DH R3- R5 定时器T0 外部中断INT0 外部中断INT1 功能描述
0.1s-10s位显示寄存区 0.1s-10s位溢出计数区
控制秒表的最小精度 停止中断信号入口 开始中断信号入口 初始化值 00H 3CB0H 3.3.3 主程序设计
本系统程序主要模块由主程序、定时中断服务程序、外部中断INT0服务程序和外部中断INT1服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用,协调各个子程序之间的联系。
系统(上电)复位后,进入主程序,主程序流程图如图3.11。首先对系统进行初始化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0”、赋定时器初值,初始化完毕后,就进入数码管显示程序。数码管显示程序对显示缓存区内的数值进行调用并在数码管上进行动态显示。显示一次就对P1.0进行一次扫描,查询启动键P1.0是否按下,当启动键按下后,数码管全零显示,没
11
有按下则返回开始,重新循环显示数字8。
在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操作,当定时时间到后就转去执行定时中断程序。当外部中断有请求则去执行外部中断服务程序,并在执行完后返回主程序。
3.3.4 中断程序设计
现在方案中采用了两个中断,外部中断INT0,INT1。CPU在响应中断时,先处理高级中断,在处理低级中断,若有多个同级中断时,则按自然优先顺序处理。例如当CPU正在处理一个中断申请时,有出现了另一个优先级比它高的中断请求,这是,CPU就暂停终止对当前优先级较低的中断源的服务,转去响应优先级比它高的中断请求,并为其服务。待服务结束,再继续执行原来较低级的中断服务程序。而当CPU为级别高的终端服务程序服务时,如果级别低的中断发出中断请求,此时CPU是不会响应的,所以为了避免开始和暂停两个按键中的一个出现没有响应的情况,在进行程序编辑时要注意对中断的使用,避免出现中断的嵌套。,合理分配中断对本设计的实现是至关重要的。
80C51的自然优先级顺序排列如下:
中断源 最高 外部中断INT0
定时/计数器T0溢出中断 外部中断INT1
定时/计数器T1溢出中断
串行口中断 最低
数字式秒表中的两个按键采用了中断实现功能。开始采用外部中断INT0,停止采用外部中断INT1。另外程序中还用到了定时/计数器0溢出中断进行计时。依据设计要求,停止的外部中断INT1中断级别最高,计时的定时/计数器0溢出中断次之,开始的外部中断INT0级别最低。 (1)外部中断INT0服务程序
外部中断INT0服务程序结合外部P3.2开始键实现数字电子秒表的计时开始功能,具体流程图如图2.12。
当按下P3.2开始键按下向CPU发出外部中断请求,CPU转向外部中断0服务程序执行,启动定时器T0。
12
开始 数码管循环显示8 N C键是否按下? Y 数码管全显示0 N A键是否下? Y 程序开始 对定时器/计数器初始化 开中断并启动定时器 定时器溢出中断 对定时器重新赋值 进行加一操作后重新计算时间 往P0口送显示时间 数码管显示 N B键是否按下? Y 停止计时,显示时间 Y D键是否按下? N 结束
13
图3.11 主程序流程图
外部中断0入口
外部中断1入口 停止定时器T0 停止定时器T0
中断返回
中断返回 图3.12外部中断1服务程序流程图 图3.13外部中断0服务程序流程图
(2)外部中断INT1服务程序:
外部中断INT1服务程序结合外部P3.3停止键实现数字电子秒表的停止功能,具体流程图如图3.13。
当按下P3.2停止键按下向CPU发出外部中断请求,CPU转向外部中断1服务程序执行,停止定时器T0。 (3)定时中断服务程序
当定时/计数器T0器溢出后,向CPU发出中断请求信号。CPU跳转到定时中断程序执行。定时中断程序是一个进位程序,主要负责对0.1s的加一。当如果满十就向0.1s位加一,依次类推,最终达到99.9秒后归零,从零开始再次计时。
定时/计数器T0工作在方式1下,THX和TLX组成一个16位的二进制数计数器。单片机开机或复位时,它的值为00H,当T0启动后,从第一个输入脉冲开始计时,每来一个脉冲计数加一,即从0000000000000000开始计数到1111111111111111,再计数一个脉冲时TH0和TL0组成的16位计数器将会从16个1变成16个0,并产生溢出,溢出位将被送到TF0标志位,通过溢出标志产生溢出中断请求。显然,T0定时器在方式1下引起一次中断所允许计数的最多脉冲个数为216 个。
但如果定时计数器如果每次都固定从0开始计数,到计满后,再向CPU发出溢出中断请求信号那是毫无意义的。为了使定时计数器在规定的计数脉冲个数字之后(此时应小于2个脉冲),向CPU发出溢出中断请求,可采取预先向THX和TLX中放入一个初值X的方法,使计数器以X值为起始值开始计数,即X+1,X+2,??直至计数器计满,从1全变为0。设需要计数的脉冲个数为N,则有:N=216-X 。在定时方式下:定时时间T=N*Tcy=(216—X)*12/fosc。现在本设计要求50ms实现一次中断,选择定时器T0工作在方式1。所以需要根据以上条件计算出T0的初值。设T0的初值为X,则 X =2—50ms/1us=15536D=3CB0H。即THX=3CH(取X的高8位)TLX=0B0H(取X的低5位)
由于定时50ms只是一个理想化的时间,其中并没有考虑到中断后单片机执行语句所花的时间。虽然执行语句所花的时间很短只有即微秒,但积少成多,数字秒表一秒中
14
16
16
要溢出中断20次,积累起来误差就能达到毫秒级,这对于精度到达毫秒级的数字电子秒表来说是很大的误差。所以要在后期编程时还要将单片机读程序的时间考虑进去,在对定时器赋初值时将单片机需要执行的语句所花的时间加上,这样就能使数字电子秒表的误差达到最小。
4 数字电子秒表的安装与调试
4.1 软件的仿真与调试
Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件,它可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件的主要特点总结后有以下四点:①实现了单片机仿真和SPICE电路仿真相结合的功能。②支持目前主流单片机系统的仿真。③提供了软件调试功能,并可以与WAVE联合仿真调试。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。在电子领域中也起到了很大的作用,它的出现仿真不需要先焊接电路,可以先仿真调试通过后在焊电路,节省了不少在硬件调试上所花的时间。
Proteus ISIS的工作界面是一种标准的Windows界面。它包括标题栏、主菜单、状态栏、标准工具栏、绘图工具栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口等十几个工具,方便了使用者的使用。
Proteus SISI绘制原理图的操作与Protel 99se绘制原理图的操作基本相同,在这里就不再作赘述。下面拿本设计中的一个仿真例子作简述说明。运行Proteus SISI后,绘制病床呼叫系统的原理图。
首先打开已经画好的proteus DSN文件,双击图中的80C51芯片,就弹出一个窗口,在Program File项中通过路径选择在WAVE中生成的HEX文件,双击选中后确定,这样仿真图中的80C51芯片就已经读取了本设计中的HEX文件。单击“三角形按钮”进行仿真。通过对仿真结果的观察来对程序进行修改,最终使程序到达设计要求。
4.2 硬件的安装与调试
按照之前设计好的数字电子秒表原理图,详细计算系统中各个元件的参数,选择相应器件,制作实际电路板。由于考虑到万能板大小的问题及元件之间连线的方便,在焊接元器件前必须考虑元件的布局然后进行实际操作。
制作好的电路板可以用万用表(200欧姆档)的红、黑表笔测试电路板的每条走线,当其电阻非常小时,证明走线没有断开,当其电阻很大时,证明该条走线断了,应该重新走线,使电路板在电气上得到正确地连接。选用万用表的20K欧姆档,检测电路中是否存在短路。因为系统采用的是共阴极数码管作为显示电路,必须确保数码管的公共端
15
接的是低电平。 (1)晶振电路的测试
在单片机正常运行的必要条件是单片机系统的时钟稳定正常。实际中,因为各种原因导致系统时钟不正常而出现系统无法正常运行的情况时有,因此系统时钟是否振是通电检查的首要环节。在系统通电的状况下,用万用表的直流电压档(20V),分别测量XTAL1和XTAL2引脚的电压,看是否正常,在调试过程中,测得电压XTAL1引脚应为2.05V,XTAT2应为2.15V。 (2)复位电路的测试
复位不正常也会导致系统不能工作。如果复位引脚始终为高电平,系统将始终处于复位状态;如果始终为低电平,不能产生复位所需的高电平信号脉冲,则系统也可能无法正常工作。单片机正常工作时,RST复位引脚应为0V,按下复位按键时,复位引脚为高电平5V左右。 (3)显示电路的测试
显示电路是数字电子秒表正常运行最直观的观察窗口,我们可以通过观察显示电路的显示结果观察系统能否正常运行。当显示电路按照电路图焊接好后,用万用表的测二极管档位,将黑表笔接共阴数码管的公共段,然后将红表笔接数码管的各段,当数码管的段能正常显示,说明各点焊接正常。
4.2 汇编程序
ORG 0000H LJMP MAIN
ORG 0003H ;外部中断INT0中断入口 LJMP START
ORG 000BH ;定时器T0中断入口 LJMP UPDATE
ORG 0013H ;外部中断INT1中断入口 LJMP STOP
MAIN: MOV DPTR, #TAB ;存入表头地址 MOV TMOD, #01H ;置T0为方式1
MOV TH0, #3CH ;赋定时器初值,50毫秒 MOV TL0, #0B0H
16
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 ; SETB EX1 ; SETB IT0 ; SETB IT1 ; SETB ET0 ;
XIAN1: MOV P0, #07FH ; SETB P2.2 ; LCALL DELAY1 ;
CLR P2.2 ; MOV P0, #0FFH ; SETB P2.3 ; LCALL DELAY1 ; CLR P2.3 ; MOV P0, #07FH ; SETB P2.4 ; LCALL DELAY1 ; CLR P2.4 ;
JNB P1.0,XIAN2 ;
开中断总允许 开外部中断INT0 开外部中断INT1
外部中断0位边沿触发方式 外部中断1位边沿触发方式 定时器T0允许位 显示数字8 接通0.1s数码管 调用延时子程序1 断开0.1s数码管
显示数字8及小数点 接通1s数码管 调用延时子程序1 断开1s数码管
显示数字8 接通10s数码管 调用延时子程序1 断开10s数码管
按下启动键,跳转到XIAN2(P1.0=0跳转)17
LJMP XIAN1 ;返回显示程序,重新进行显示
XIAN2: MOV A, 7BH ;显示0.1s位数字 MOVC A, @A+DPTR ;查表 MOV P0, A SETB P2.2
LCALL DELAY2 ; CLR P2.2
MOV A, 7CH ; MOVC A, @A+DPTR MOV P0, A SETB P2.3 LCALL DELAY2 CLR P2.3
MOV A, 7DH ; MOVC A, @A+DPTR MOV P0, A SETB P2.4 LCALL DELAY2 CLR P2.4
MOV P0, #80H ; SETB P2.3 LCALL DELAY2 CLR P2.3
LJMP XIAN2 ;
调用DELAY2 显示1s位数字 显示10s位数字 显示小数点 返回显示程序,重新进行显示18
START: LCALL DELAY3 ;调用延时子程序3
SETB TR0 ;启动定时器T0
RETI ;中断返回
STOP: CLR TR0 ;停止定时器T0
UPDATE: MOV TH0, #3CH ;重赋定时器初值
MOV TL0, #0B0H
RETI
MOV R5, #0FFH
MOV 7BH, #00H ;对0.1s位清零 MOV R2, #00H MOV A, 7CH
ADD A, #01H ;1s位加一 MOV 7CH, A MOV A, R3 ADD A, #01H
MOV A, 7BH
ADD A, #01H ;0.1s位加1 MOV 7BH, A MOV A, R2 ADD A, #01H MOV R2, A
CJNE R2, #0AH, EXIT ;判断0.1s位是否满10,不满10跳出
MOV R3, A
19
CJNE R3, #0AH, EXIT ;判断1s位是否满10,不满10跳出
MOV 7CH, #00H ;对1s位清零 MOV R3, #00H MOV A, 7DH
ADD A, #01H ;10s位加一 MOV 7DH, A MOV A, R4 ADD A, #01H MOV R4, A
CJNE R4, #0AH, EXIT ; MOV 7DH, #00H ;
EXIT: RETI
DELAY1: MOV R5, #0FFH ;DEL11: MOV R6, #0F5H DEL12: MOV R7, #06H
DEL13: DJNZ R7 , DEL13 ; {1+[1+
DELAY2: MOV R6 , #05H ;DEL21: MOV R7, #62H
DEL22: DJNZ R7, DEL22 ; 1+ NOP
DJNZ R6, DEL21 RET
判断10s位是否满10,不满10跳出
对10s位清零 数字8循环用延时程序 (1+2x6 +1+2)x245 +1+2]x255+2}
NOP ; x1us =1000623us≈1s
, DEL12 计时用延时程序 (1+2x98 +1+2)x5 +2=1003≈1000 20
DJNZ R6 NOP
DJNZ R5, DEL11 RET
DELAY3: MOV R6, #0FFH ;50毫秒延时程序 DEL31: MOV R7, #60H
DEL32: DJNZ R7, DEL32 ; [1+(1+2x96 +1+2)x255 +2]x1us NOP ; =49983us≈50ms DJNZ R6, DEL31
RET ;返回
TAB: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH END
5 设计体会与总结
这次设计,为大家提供了应用自己所学知识的平台,是非常可贵的。经过此次设计使我们对单片机有了更加的系统认识,同时对单片机模块化编程以及程序的调试增加了实践的经验。最重要的是提高大家对单片机开发的兴趣,增强了大家团队意识。再设计过程中,遇到了诸如延时程序不能嵌套,数码管显示的问题,工作寄存器分配问题,跳转指令程序的设计问题,短跳转的超程问题,经过大家的积极思考与热烈讨论,使问题都得到了解决。
通过课程设计,复习巩固我们以前所学习的数字、模拟电子技术、单片机原理及接口等课程知识,加深对各门课程及相互关系的理解,并成功使用了Keil uVision2和Proteus ISIS电子软件,使理论知识系统化、实用化,系统地掌握微机应用系统的一般设计方法,培养较强的编程能力、开发能力。
只有从课本上学习的知识只有运用到实践中来,才能真正的理解了所学的东西,同时增加了实践的能力,从而为设计、创新新的产品打下基础。
21
参考文献
[2] 李邓化,彭书华,许晓飞.智能检测技术及仪表.科学出版社,2007 [3] 戴佳. 单片机C51语言应用程序设计. 电子工业出版社,2006.7 [4] 朱民雄.计算机语言技术. 北京航空航天大学出版社,2002.1 [5] 李鸿. 单片机原理及应用. 湖南大学出版社. 2004.8 [6] 刘建清. 单片机技术. 国防工业出版社, 2006.8
[7] 杨宁,胡学军.单片机与控制技术.北京航空航天大学出版社,2005 [8] 汪贵平,新编单片机原理及应用。机械工业出版社,2010.0
[1] 胡汉才 单片机原理及其接口技术(第二版)清华大学出版社2004
22
正在阅读:
单片机课程设计说明书范文 - 电子秒表05-10
喝酒的经典语句02-11
第三章 熔体的结构与性质(完整)10-06
爱考:2015年北京大学构造地质学考研专业课资料册含真题,大纲,分数线,参考书 - 图文10-13
有家真好日记10-29
中兴通讯股份有限公司财务报告分析05-20
2013年经济学在线作业07-12
拙政园05-26
建筑服务行业外经证流程09-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 秒表
- 单片机
- 说明书
- 范文
- 课程
- 设计
- 电子
- 《会计信息系统》习题含答案
- 西塘乌托邦
- 汽车防撞防盗报警器的设计 - 图文
- 专业课程设计I报告 - B09040208
- 我把生命托付与你(《中国医德》读后感)
- 液压万能试验机技术方案书
- 钻机装置及器具项目IPO上市咨询(2013年最新细分市场+募投可研+招
- 湘潭市城市综合交通体系规划
- 十首廉政歌曲歌词
- 正确认识、合理磨制锥度刀具
- 历史趣谈:军统头子戴笠蹂躏女子的那些下流手段
- 2017年能里外担当的生肖(图)
- xxxx 焦化厂烟道气余热回收项目可行性研究报告
- A公司与B公司建设工程施工合同纠纷上诉案
- 中国的司法改革 白皮书
- 经管类CSSCI审稿经验
- 中国带灯化装镜行业市场前景分析预测报告(目录) - 图文
- 音标组合例词
- 2013年石河子大学研究生(学术型)招生目录
- 公路涵洞工程专项施工方案(盖板涵 圆管涵)