基于单片机的数字电子秒表的设计与实现_第1页
基于单片机的数字电子秒表的设计与实现_第2页
基于单片机的数字电子秒表的设计与实现_第3页
基于单片机的数字电子秒表的设计与实现_第4页
基于单片机的数字电子秒表的设计与实现_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要摘要 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。本文阐述了基于 单片机的数字电子秒表设计。本设计主要特点是计时精度达到 0.01s,解决了传统的由于 计时精度不够造成的误差和不公平性,是各种体育竞赛的必备设备之一。 本设计的数字电子秒表系统采用 8051 单片机为中心器件,利用其定时器/计数器定 时和记数的原理,结合显示电路、led 数码管以及外部中断电路来设计计时器。将软、硬 件有机地结合起来,使得系统能够实现五位 led 显示,显示时间为 099.99 秒,计时精 度为 0.01 秒,能正确地进行计时,同时能记录一次时间,并在下一次计时后对上一次计 时时间进行查询。其中

2、软件系统采用汇编语言编写程序,包括显示程序,定时中断服务, 外部中断服务程序,延时程序等,并在 wave 中调试运行,硬件系统利用 proteus 强大的 功能来实现,简单切易于观察,在仿真中就可以观察到实际的工作状态。 关键字关键字:单片机;数字电子秒表;仿真 abstract with the rapid development of science and technology in recent years, scm applications are constant-depth manner. in this paper, based on single chip design of

3、 digital electronic stopwatch. the main characteristics of this design timing accuracy of 0.01s, to solve the traditional result of a lack accuracy due to timing errors and unfair, and is a variety of sports competitions, one of the essential equipment. in addition the hardware part of the set view

4、button on the stopwatch can be the last time to save time for user queries. the design of the multi-function stopwatch system uses stc89c52 microcontroller as the central device, and use its timer / counter timing and the count principles, combined with display circuit, led digital tube, as well as

5、the external interrupt circuit to design a timer. the software and hardware together organically, allowing the system to achieve two led display shows the time from 0 to 99.99 seconds, timing accuracy of 0.01 seconds, be able to correctly time at the same time to record a time, and the next time aft

6、er the last time the time to search automatically added a second in which software systems using assembly language programming, including the display program, timing, interrupt service, external interrupt service routine, delay procedures, key consumer shaking procedures, and wave in the commissioni

7、ng, operation, hardware system uses to achieve proteus powerful, simple and easy to observe the cut in the simulation can be observed on the actual working condition. keyword:led display;high-precision stopwatch;8051 目 录 摘 要.i abstract .ii 绪 论.1 1 硬件设计.3 1.1 总体方案的设计.3 1.2 单片机的选择.4 1.3 显示电路的选择与设计.7 1

8、.4 按键电路的选择与设计.10 1.5 时钟电路的选择与设计.11 1.6 复位电路的选择与设计.13 1.7 系统总电路的设计.15 2 软件设计.17 2.1 程序设计思想.17 2.2 系统资源的分配.17 2.3 主程序设计.18 2.4 中断程序设计.19 3 数字电子秒表的安装与调试.25 3.1 软件的仿真与调试.25 3.2 硬件的安装与调试.25 3.3 系统程序的烧录.26 3.4 数字电子秒表的精度调试.27 结 论.28 参考文献.28 附录 a 程序.30 附录 b 电路原理图.35 绪 论 秒表计时器是电器制造,工业自动化控制、国防、实验室及科研单位理想的计时 仪

9、器,它广泛应用于各种继电器、电磁开关,控制器、延时器、定时器等的时间测试。 2004 年 8 月 28 日 15 点 15 分,中国选手孟关良/杨文军在雅典奥运会男子 500 米 划艇决赛中,以 1 分 40 秒 278 的成绩获得中国在雅典奥运会的第 28 金。这是中国皮 划艇项目的第一枚奥运金牌,也是中国水上项目在历届奥运会上所获得的第一枚金牌。 孟关良/杨文军的成绩比获得银牌的古巴选手只快了 0.072 秒,以至于两人在夺冠之后 还不敢相信。 在现在的体育竞技比赛中,随着运动员的水平不断提高,差距也在不断缩小。有 些运动对时间精度的要求也越来越高,有时比赛冠亚军之间的差距只有几毫秒,因此

10、 就需要高精度的秒表来记录成绩。 本设计利用 8051 单片机的定时器/计数器定时和记数的原理,使其能精确计时。利 用中断系统使其能实现开始暂停的功能。p0 口输出段码数据,p2.0-p2.4 口作列扫描输 出,p1.1、p3.2、p3.3、p2.5 分别接四个按钮开关,分别实现开始、暂停、清零和查看 上次时间的功能。显示电路由五位共阴极数码管组成。 初始状态下计时器显示 00.00,当按下开始键时,外部中断 int1 向 cpu 发出中断 请求,cpu 转去执行外部中断 1 服务程序,即开启定时器 t0。计时采用定时器 t0 中 断完成,定时溢出中断周期为 1ms,当一处中断后向 cpu 发

11、出溢出中断请求,每发出 一次中断请求就对毫秒计数单元进行加一,达到 10 次就对十毫秒位进行加一,依次类 推,直到 99.99 秒重新复位。在计时过程中,只要按下暂停键,外部中断 int0 向 cpu 发出中断请求,cpu 转去执行外部中断 0 服务程序,即关闭定时器 t0,调用显示程序, 实现暂停功能,同时将此次计时时间存入寄存区。然后对 p1.1 进行扫描。当 p1.1 按下 时就跳转回主程序。等待下一次计时开始。 在按下暂停键时,将此时的计时时间存入中间缓存区,当再次按下开始键时,则 讲中间缓存区的数据转入最终缓存区。秒表停止后对查看键 p2.5 进行扫描,p2.5 按下 为低电平时,调

12、用最终缓存区的数据进行显示,即显示上一次计时成绩。当 p2.5 位高 电平时,调用显示缓存区的数据进行显示,即显示当此计时的成绩。根据以上设计思 路从而实现数字电子秒表的计时和查看上一次计时时间的功能。 本文主要内容包括三部分:第一部分介绍硬件部分设计思路及方案;第二部分介 绍了软件部分的设计思路和设计;最后一部分则是整个系统的安装与调试过程。 1 硬件设计 1.1 总体方案的设计 数字电子秒表具有显示直观、读取方便、精度高等优点,在计时中广泛使用。本 设计用单片机组成数字电子秒表,力求结构简单、精度高为目标。 设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,计 时与显示电

13、路和回零、启动和停表电路等。主控制器采用单片机 8051,显示电路采用 共阴极 led 数码管显示计时时间。 本设计利用 8051 单片机的定时器/计数器定时和记数的原理,使其能精确计时。 利用中断系统使其能实现开始暂停的功能。p0 口输出段码数据,p2.0-p2.4 口作列扫描 输出,p1.1、p3.2、p3.3、p2.5 口接四个按钮开关,分别实现开始、暂停、清零和查看 上次计时时间功能。电路原理图设计最基本的要求是正确性,其次是布局合理,最后 在正确性和布局合理的前提下力求美观。硬件电路图按照图 1.1 进行设计。 控制开关 位驱动 六位数码管 8051单片机控 制器 图 1.1 数字秒

14、表硬件电路基本原理图 根据要求知道秒表设计主要实现的功能是计时和显示。本设计中,数码管显示的 数据存放在内存单元 79h7dh 中。其中 79h 存放毫秒位数据,7ah 存放十毫秒位数 据,7bh 存放百毫秒位数据,7ch 存放秒位数据,7dh 存放十秒位数据,每一地址单 元内均为十进制 bcd 码。由于采用软件动态扫描实现数据显示功能,显示用十进制 bcd 码数据的对应段码存放在 rom 表中。显示时,先取出 79h-7dh 某一地址中的数 据,然后查得对应的显示用段码,并从 p0 口输出,p2 口将对应的数码管选中供电, 就能显示该地址单元的数据值。 最终缓存区则设置为 59h-5dh,数

15、据存放规则和 79h-7dh 一样。分别对应存放毫 秒位至十秒位数据。与 79h-7dh 存储区不一样的是:59h-5dh 存储的内容为数字秒表 上一次计时显示的时间。而 79h-7dh 为当前计时时间存储区。 计时采用定时器 t0 中断完成,定时溢出中断周期为 1ms,当一处中断后向 cpu 发出溢出中断请求,每发出一次中断请求就对毫秒计数单元进行加一,达到 10 次就对 十毫秒位进行加一,依次类推,直到 99.99 秒重新复位。 再看按键的处理。这四个键可以采用中断的方法,也可以采用扫描的方法来识别。 复位键和查看主要功能在于数值复位和查询上次计时时间,对于时间的要求不是很严 格。而开始和

16、停止键则是用于对时间的锁定,需要比较准确的控制。因此可以对复位 和查看按键采取扫描的方式。而对开始和停止键采用外部中断的方式。 设计中包括硬件电路的设计和系统程序的设计。其硬件电路主要有主控制器,显 示电路和回零、启动、查看、停表电路等。主控制器采用单片机 8051,显示电路采用 共阴极 led 数码管显示计时时间,四个按键均采用触点式按键。 1.2 单片机的选择 本课题在选取单片机时,充分借鉴了许多成形产品使用单片机的经验,并根据自 己的实际情况,选择了 intel 公司的 8051。 单片机的外部结构 8051 单片机采用 40 引脚的双列直插封装方式。图 1.2 为引脚排列图, 40 条

17、引脚 说明如下: 主电源引脚 vss 和 vcc vss 接地 vcc 正常操作时为+5 伏电源 外接晶振引脚 xtal1 和 xtal2 xtal1 内部振荡电路反相放大器的输入端,是外接晶体的一个引脚。当采用 外部振荡器时,此引脚接地。 xtal2 内部振荡电路反相放大器的输出端。是外接晶体的另一端。当采用外 部振荡器时,此引脚接外部振荡源。 图 1.2 8051 单片机引脚图 控制或与其它电源复用引脚 rst/vpd,ale/,和/vppprogpsenea rst/vpd 当振荡器运行时,在此引脚上出现两个机器周期的高电平(由低 到高跳变) ,将使单片机复位在 vcc 掉电期间,此引脚

18、可接上备用电源,由 vpd 向内 部提供备用电源,以保持内部 ram 中的数据。 ale/正常操作时为 ale 功能(允许地址锁存)提供把地址的低字节锁prog 存到外部锁存器,ale 引脚以不变的频率(振荡器频率的 1/6)周期性地发出正脉冲 信号。因此,它可用作对外输出的时钟,或用于定时目的。对于 eprom 型单片机, 在 eprom 编程期间,此引脚接收编程脉冲(功能)prog 外部程序存储器读选通信号输出端,在从外部程序存储取指令(或数psen 据)期间,在每个机器周期内两次有效。同样可以驱动八 lsttl 输入。psenpsen /vpp、/vpp 为内部程序存储器和外部程序存储器

19、选择端。当/vppeaeaea 为高电平时,访问内部程序存储器,当/vpp 为低电平时,则访问外部程序存储器。ea 对于 eprom 型单片机,在 eprom 编程期间,此引脚上加 21 伏 eprom 编程电源 (vpp) 。 输入/输出引脚 p0.0 - p0.7,p1.0 - p1.7,p2.0 - p2.7,p3.0 - p3.7。 p0 口(p0.0 - p0.7)是一个 8 位漏极开路型双向 i/o 口,在访问外部存储器时, 它是分时传送的低字节地址和数据总线,p0 口能以吸收电流的方式驱动八个 lsttl 负载。 p1 口(p1.0 - p1.7)是一个带有内部提升电阻的 8 位

20、准双向 i/o 口。能驱动 (吸收或输出电流)四个 lsttl 负载。 p2 口(p2.0 - p2.7)是一个带有内部提升电阻的 8 位准双向 i/o 口,在访问外 部存储器时,它输出高 8 位地址。p2 口可以驱动(吸收或输出电流)四个 lsttl 负载。 p3 口(p3.0 - p3.7)是一个带有内部提升电阻的 8 位准双向 i/o 口。能驱动 (吸收或输出电流)四个 lsttl 负载。 8051 具有以下标准功能:8k 字节 flash,256 字节 ram,32 位 i/o 口线, 2 个数 据指针,两个 16 位定时器/计数器,一个全双工串行口,片内晶振及时钟电路。另外, 805

21、1 可降至 0hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,cpu 停止工作,允许 ram、定时器/计数器、串口、中断继续工作。掉电保护方式下, ram 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位 为止。cpu 是单片机的核心部件。它由运算器和控制器等部件组成。 (1) 运算器 运算器的功能是进行算术运算和逻辑运算。可以对半字节(4 位) 、单字节等数据 进行操作。例如能完成加、减、乘、除、加 1、减 1、bcd 码十进制调整、比较等算 术运算和与、或、异或、求补、循环等逻辑操作,操作结果的状态信息送至状态寄存 器。8051 运算器还包含有一个布尔

22、处理器,用来处理位操作。 (2) 程序计数器 pc 程序计数器 pc 用来存放即将要执行的指令地址,共 16 位,可对 64k 程序存储器 直接寻址。执行指令时,pc 内容的低 8 位经 p0 口输出,高 8 位经 p2 口输出。 (3) 令寄存器 指令寄存器中存放指令代码。cpu 执行指令时,由程序存储器中读取的指令代码 送入指令寄存器,经译码后由定时与控制电路发出相应的控制信号,完成指令功能。 1.3 显示电路的选择与设计 对于数字显示电路,通常采用液晶显示或数码管显示。本设计的显示电路采用 7 段 数码管作为显示介质。 数码管显示可以分为静态显示和动态显示两种。由于本设计需要采用五位数码

23、管 显示时间,如果静态显示则占用的口线多,硬件电路复杂。所以采用动态显示。 8051 位 驱 动段 驱 动 六位数码管 图 1.3 显示电路基本原理图 动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位 扫描。通常各位数码管的段选线相应并联在一起,由一个 8 位的 i/o 口控制;各位的 公共阴极位选线由另外的 i/o 口线控制。动态方式显示时,各数码管分时轮流选通, 要使其稳定显示必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的 段码,在另一时刻选通另一位数码管,并送出相应的段码,依此规律循环,即可使各 位数码管显示将要显示的字符,虽然这些字符是在不同的时刻分

24、别显示,但由于人眼 存在视觉暂留效应,只要每位显示间隔足够短就可以给人同时显示的感觉。 数码显示管分为共阳数码管和共阴数码管两种 共阳极数码管的 8 个发光二极管的阳极(二极管正端)连接在一起,如图 1.4(b),通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。 当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮,根据发光字 段的不同组合可显示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导通 电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。 共阴极数码管的 8 个发光二极管的阴极(二极管负端)连接在一起,如图(c), 通常,公共阴极接低电平(一

25、般接地),其它管脚接段驱动电路输出端,当某段驱动 电路的输出端为高电平时,则该端所连接的字段导通并点亮,根据发光字段的不同组 合可显示出各种数字或字符。此时,要求段驱动电路能提供额定的段导通电流,还需 根据外接电源及额定段导通电流来确定相应的限流电阻。 图 1.4 (a)数码管引脚图 (b)共阳极内部结构图 (c)共阴极内部结构图 本设计采用共阴极数码显示管做显示电路,由于采用的是共阴的数码显示管,所 以只要数码管的 a、b、c、d、e、f、g、h 引脚为高电平,那么其对应的二极管就会发 光,使数码显示管显示 09 的编码见表 1.1。 表 1.1 共阴极数码显示管字型代码 字型共阴极代码字型

26、共阴极代码 03fh56dh 106h67dh 25bh707h 34fh87fh 466h96fh 动态显示电路由显示块、字形码驱动模块、字位驱动模块三部分组成。如图 1.3 所 示为本系统的 5 位 led 动态显示器接口电路。图中,5 个数码管的 8 段段选线分别与 外接上拉电阻的单片机 p0 口对应相连,而 5 个数码管的位控制端则和 npn 型三极管 的集电极相连接。单片机的 p2.0p2.4 口则分别对应数码显示管的最低位到最高位, p2.0p2.4 口分别和五个 npn 型三极管的基极相连,做三极管导通的控制端,而 npn 型三极管选用 9013 型三极管。根据 9013 的资料

27、显示:其耐压值为 40v,最大功率为 0.65w,最大电流为 0.5a,电气性能完全满足本设计的要求。另外数码管显示是采用 动态显示,所以对三极管的开关频率有一定的要求。根据电子秒表的设计计算可知动 态显示的频率最高为 3khz,而 9013 的导通频率为 150mhz,完全能满足本设计的要 求,所以最终选取 9013 三极管最为位控制开关。 由于数码管是有 p0 口来驱动,它内部没有上拉电阻,作为输出口时驱动能力比较 弱,不能点亮数码显示管,因此 p0 口必须接上拉电阻来提高驱动能力。另外一位共阴 数码管的驱动电流一般为 20ma 左右,如果电流太大容易造成数码管损坏,所以也需 要根据电源的

28、电压值来确定上拉电阻的大小。如果电阻过小,势必会形成灌电流过大, 造成单片机 io 的损坏,如果电阻过大,那么对拉电流没有太大的影响。电源供电电压 为 5v,当上拉电阻选用 220 电阻时灌电流为 22ma。不会损坏单片机的 i/o 口,同 时也可以为数码显示管起到限制电流的保护作用。 1.4 按键电路的选择与设计 本设计中有四个按键,分别实现开始、暂停、复位和查看功能。这四个键可以采 用中断的方法,也可以采用查询的方法来识别。对于复位键和查看键,主要功能在于 数值复位和对上次计时时间的查看,对于时间的要求不是很严格,而开始和暂停键主 要用于时间的锁定,需要比较准确的控制。因此可以考虑,对复位

29、键和查看键采用查 询的方式,而对于开始和暂停键采用外部中断。四个按键均采用低电平有效,具体电 路连接图如图 1.5 所示。 当按键没有按下时,单片机的 i/o 口直接连接电源,因此需要接上拉电阻来进行 限流,本设计中选取阻值为 2k 的电阻作为上拉电阻,根据计算可知此时的灌电流为 2.5ma,查看 8051 的资料得知次电流在安全范围内,符合安全设计要求。 开始 暂停 复位 查看 p3.3(int1) p3.2(int0) p1.1 p2.5 vcc 图 1.5 按键电路 按键电路中由于采用了外部中断,所以需要用到 p3 口的第二功能。p3 口引脚的 第二功能如表 1.2 表 1.2 p3 口

30、引脚第二功能表 p3 口引脚特殊功能 p3.0 rxd(串行输入口) p3.1 txd(串行输出口) p3.2 int0(外部中断 0 请求输入端) p3.3 int1(外部中断 1 请求输入端) p3.4 t0(定时器/计数器 0 计数脉冲输入端) p3.5 t1(定时器/计数器 1 计数脉冲输入端) p3.6 wr(片外数据存储器写选通信号输出端) p3.7 rd(片内数据存储器读选通信号输出端) 1.5 时钟电路的选择与设计 单片机的时钟信号用来提供单片机内各种微操作的时间基准,8051 片内设有一个 由反向放大器所构成的振荡电路,xtal1 和 xtal2 分别为振荡电路的输入和输出端

31、, 8051 单片机的时钟信号通常用两种电路形式得到:内部振荡方式与外部振荡方式。外 部方式的时钟很少用,若要用时,只要将 xtal1 接地,xtal2 接外部振荡器就行。 对外部振荡信号无特殊要求,只要保证脉冲宽度,一般采用频率低于 12mhz 的方波信 号。 时钟发生器把振荡频率两分频,产生一个两相时钟信号 p1和 p2供单片机使用。p1 在每一个状态 s 的前半部分有效,p2在每个状态的后半部分有效。本设计采用的内部 振荡方式,内部振荡方式所得的时钟信号比较稳定,实用电路中使用较多。本设计系 统的时钟电路如图 1.4 所示。只要按照图 1.6 所示电路进行设计连接就能使系统可靠起 振并能

32、稳定运行。图中,电容器 c1 、c2起稳定振荡频率、快速起振的作用,电容值一 般为 533pf。但在时钟电路的实际应用中一定要注意正确选择其大小,并保证电路 的对称性,尽可能匹配,选用正牌的瓷片或云母电容,如果可能的话,温度系数尽可 能低。本设计中采用大小为 30pf 的电容和 12mhz 的晶振。 图 1.6 内部振荡电路 (4) 时序 8051 典型的指令周期(执行一条指令的时间称为指令周期)为一个机器周期,一 个机器周期由六个状态(十二振荡周期)组成。每个状态又被分成两个时相 p1和 p2。 所以,一个机器周期可以依次表示为 s1p1,s1p2,s6p1,s6p2。通常算术逻辑操作 在

33、p1时相进行,而内部寄存器传送在 p2时相进行。 图 1.7 8051 时序 图 1.7 给出了 8051 单片机的取指和执行指令的定时关系。这些内部时钟信号不能 从外部观察到,所用 xtal2 振荡信号作参考。在图中可看到,低 8 位地址的锁存信号 ale 在每个机器周期中两次有效:一次在 s1p2与 s2p1期间,另一次在 s4p2与 s5p1期 间。 对于单周期指令,当操作码被送入指令寄存器时,便从 s1p2开始执行指令。如果 是双字节单机器周期指令,则在同一机器周期的 s4期间读入第二个字节,若是单字节 单机器周期指令,则在 s4期间仍进行读,但所读的这个字节操作码被忽略,程序计数 器

34、也不加 1,在 s6p2结束时完成指令操作。图 1.7 的(a)和(b)给出了单字节单机器周期 和双字节单机器周期指令的时序。 1.6 复位电路的选择与设计 当 8051 单片机的复位引脚 rst(全称 reset)出现 2 个机器周期以上的高电平 时,单片机就完成了复位操作。如果 rst 持续为高电平,单片机就处于循环复位状态, 而无法执行程序。因此要求单片机复位后能脱离复位状态。而本系统选用的是 12mhz 的晶振,因此一个机器周期为 1s,那么复位脉冲宽度最小应为 2s。在实际应用系统 中,考虑到电源的稳定时间,参数漂移,晶振稳定时间以及复位的可靠性等因素,必 ale 时钟 s1s4s6

35、s5s3s2 读操作码读操作码(无效) (a) 1字节 1周期指令 读下一指令 s1s4s6s5s3s2 读操作码读第二字节 (b) 2字节 1周期指令 读下一指令 s1s4s6s5s3s2 读操作码读操作码(无效) (c) 1字节 2周期指令 读下一指令 s1s4s6s5s3s2 须有足够的余量。 根据应用的要求,复位操作通常有两种基本形式:上电复位、手动复位。 上电复位要求接通电源后,自动实现复位操作。80c51 单片机的上电复位 por(power on reset)实质上就是上电延时复位,也就是在上电延时期间把单片机锁 定在复位状态上。在单片机每次初始加电时,首先投入工作的功能部件是复

36、位电路。 复位电路把单片机锁定在复位状态上并且维持一个延时(记作 trst) ,以便给予电源 电压从上升到稳定的一个等待时间;在电源电压稳定之后,再插入一个延时,给予时 钟振荡器从起振到稳定的一个等待时间;在单片机开始进入运行状态之前,还要至少 推迟 2 个机器周期的延时。 上述一系列的延时,都是利用在单片机 rst 引脚上外接一个 rc 支路的充电时间 而形成的。典型复位电路如图 1.8(a)所示,其中的阻容值是原始手册中提供的。 图 1.8 上电复位延时电路 标准 80c51 不仅复位源比较单一,而且还没有设计内部上电复位的延时功能,因 此必须借助于外接阻容支路来增加延时环节,如图 1.8

37、(a)所示。其实,外接电阻 r 还是 可以省略的,理由是一些 cmos 单片机芯片内部存在一个现成的下拉电阻 rrst。例如, 80c51 系列的 rrst 阻值约为 50200 k;p89v51rx2 系列的 rrst 阻值约为 40225 k,如图 1.9 所示。因此,在图 1.8(a)基础上,上电复位延时电路还可以精简为图 1.8(b)所示的简化电路(其中电容 c 的容量也相应减小了) 。 图 1.9 复位引脚 rst 内部电路 在每次单片机断电之后,须使延时电容 c 上的电荷立刻放掉,以便为随后可能在 很短的时间内再次加电作好准备。否则,在断电后 c 还没有充分放电的情况下,如果 很快

38、又加电,那么 rc 支路就失去了它应有的延迟功能。因此,在图 1.8(a)的基础上添 加一个放电二极管 d,上电复位延时电路就变成了如图 1.8(c)所示的改进电路。也就是 说,只有 rc 支路的充电过程对电路是有用的,放电过程不仅无用,而且会带来潜在 的危害。于是附加一个放电二极管 d 来大力缩短放电持续时间,以便消除隐患。二极 管 d 只有在单片机断电的瞬间(即 vcc 趋近于 0 v,可以看作 vcc 对地短路)正向 导通,平时一直处于反偏截止状态。 手动复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮 开关操作使单片机复位。单片机要完成复位,必须向复位端输出并持续两个

39、机器周期以 上的高电平,从而实现复位操作。 本设计采用上电且开关复位电路,如图 1.10 所示上电后,由于电容充电,使 rst 持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使 rst 持续一段时 间的高电平,从而实现上电且开关复位的操作。通常选择 c=1030f,r=1k,本设计 采用的电容值为 22f 的电容和电阻为 1k 的电阻。 vcc c3 r4s4 r5200 1k 22uf 接rset 图 1.10 单片机复位电路 1.7 系统总电路的设计 系统总电路由以上设计的显示电路,时钟电路,按键电路和复位电路组成,只要 将单片机与以上各部分电路合理的连接就组成了系统总电路。系

40、统总电路图附录 b 所 示。 8051 单片机为主电路的核心部分,各个电路均和单片机相连接,由单片机统筹和 协调各个电路的运行工作。 8051 单片机提供了 xtal1 和 xtal2 两个专用引脚接晶振电路,因此只要将晶振 电路接到两个专用引脚即可为单片机提供时钟脉冲,但在焊接晶振电路时要尽量使晶 振电路靠近单片机,这样可以为单片机提供稳定的始终脉冲。 复位电路同晶振电路,单片机设有一个专用的硬件复位接口,并设置为高电平有 效。 按键电路与单片机的端口连接可以由用户自己设定,本设计中软件复位键和查看 键分别接单片机的 p1.1 和 p2.5,均设为低电平有效。而另外的开始键和暂停键两键使 用

41、了外部中断,所以需要连接到单片机的特殊接口 p3.3 和 p3.2,这两个 i/o 口的第二 功能分别为单片机的外部中断 1 端口和外部中断 0 端口。同样设置为位低电平有效。 显示电路由五位数码管组成,采用动态显示方式,因此有 8 位段控制端和 5 位位 控制端,八位段控制接 p0 口,p0.0p0.7 分别控制数码显示管的 a、b、c、d、e、f、g、dp 显示,8051 的 p0 口没有集成上拉电阻,高电平的驱动能力 很弱,所以需要接上拉电阻来提高 p0 的高电平驱动能力。五位位控制则由低位到高位 分别接到 p2.0p2.4 口,npn 三极管 9013 做为位控制端的开关,当 p2.0

42、p2.4 端口任 意一个端口为高电平时,与其相对应的三极管就导通,对应的数码管导通显示。 通过以上设计已经将各部分电路与单片机有机的结合到一起,硬件部分的设计以 大功告成,剩下的部分就是对单片机的编程,使单片机按程序运行,实现数字电子秒 表的全部功能。 2 软件设计 2.1 程序设计思想 本设计采用了汇编语言编写,汇编语言由于采用了助记符号来编写程序,比用机 器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点 是用符号代替了机器指令代码,而且助记符与指令代码一一对应,基本保留了机器语 言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程 序。 汇编

43、语言的特点: (1).面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。 (2).保持了机器语言的优点,具有直接和简捷的特点。 (3).可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、cpu、i/o 端口 等。 (4).目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。 (5).经常与高级语言配合使用,应用十分广泛。 在程序设计过程中,为了有效地完成任务,把所要完成的任务精心的分割成若干 个相互独立但相互又仍可有联系的任务模块,这些任务模块使得任务变得相对单纯, 对外的数据交换相对简单,容易编写,容易检测,容易阅读和维护。这种程序设计思 想称为模块化程序设计思想

44、。模块化结构程序的设计,可以使系统软件便于调试与优 化,也使其他人更好地理解和阅读系统的程序设计。程序的主要模块有:主程序、显 示程序、定时溢出中断服务程序、外部中断服务程序。 2.2 系统资源的分配 本设计系统所用到的单片机端口数比较多,所以在这里将对数字电子秒表的硬件 资源的大概分配加以说明。片内 ram 的分配、各功能键的定义以及各端口的分配安排 如表 2.1 所示。 表 2.1 端口的分配安排表 名称功能描述初始化值 79h-7dh 1ms-10s 位显示寄存区 00h 69h-6dh 1ms-10s 位中间寄存区 00h 59h-5dh 1ms-10s 位最终寄存区 00h r1-

45、r5 1ms-10s 位溢出计数区 定时器 t0控制秒表的最小精度 e018h 外部中断 int0停止中断信号入口 外部中断 int1开始中断信号入口 2.3 主程序设计 本系统程序主要模块由主程序、定时中断服务程序、外部中断 0 服务程序和外部 中断 1 服务程序组成。其中主程序是整个程序的主体。可以对各个中断程序进行调用。 协调各个子程序之间的联系。 系统(上电)复位后,进入主程序,主程序流程图如图 2.1。首先对系统进行初始 化,包括设置各入口地址、中断的开启、对各个数据缓存区清“0” 、赋定时器初值, 初始化完毕后,就进入数码管显示程序。数码管显示程序对显示缓存区内的数值进行 调用并在

46、数码管上进行动态显示。显示一次就对 p1.1 和 p2.5 进行一次扫描,查询复位 键 p1.1 是否按下,当复位键按下后,程序返回开始,重新对系统进行初始化。当没有 按下复位键时,程序则扫描 p2.5 是否按下,当 p2.5 没有按下则返回显示程,不断地调 用显示缓存区的数据进行显示。使用户能清楚的看到当前电子秒表所记录的时间。当 查询到 p2.5 按下后则跳转到另外一段显示程序并调用最红缓存区的数据进行显示,此 时显示的时间即为上一次计时的时间。与此同时,在 p2.5 按下后单片机执行显示程序 的同时也在对 p2.5 进行扫描,当 p2.5 断开后立即跳转回之前的显示程序显示当前的计 时时

47、间。 在主程序中还进行了赋寄存区的初始值、设置定时器初值以及开启外部中断等操 作,当定时时间到后就转去执行定时中断程序。当外部中断有请求则去执行外部中断 服务程序。并在执行完后返回主程序。 开始 赋初始值 数码管显示 复位键p1.1是否按下 是 查看键p2.5是否按下 否 否 查看键p2.5是否抬起 是 调用最终缓存区数 据进行显示 否 是 图 2.1 主程序流程图 2.4 中断程序设计 现在方案中采用了三个中断,外部中断 int0,int1 和定时中断 t0。cpu 在响应中 断时,先处理高级中断,在处理低级中断,若有多个同级中断时,则按自然优先顺序 处理。例如当 cpu 正在处理一个中断申

48、请时,有出现了另一个优先级比它高的中断请 求,这是,cpu 就暂停终止对当前优先级较低的中断源的服务,转去响应优先级比它高 的中断请求,并为其服务。待服务结束,再继续执行原来较低级的中断服务程序。而 当 cpu 为级别高的终端服务程序服务时,如果级别低的中断发出中断请求,此时 cpu 是不会响应的,所以为了避免开始和暂停两个按键中的一个出现没有响应的情况,在 进行程序编辑时要注意对中断的使用,避免出现中断的嵌套。 ,合理分配中断对本设计 的实现是至关重要的。 另外由于数字式电子秒表的最小精度位 1ms,属于高精度电子秒表。定时器 t0 的 定时周期也为 1ms,为了使电子秒表暂停键按下后 cp

49、u 能马上去响应中断程序,必须将 暂停的外部中断级别高于定时计数器的中断级别。避免出现 cpu 执行完定时溢出中断 程序后再响应外部中断程序,影响计时精度。 8051 的自然优先级顺序排列如下: 中断源 最高 外部中断 0 定时/计数器 0 溢出中断 外部中断 1 定时/计数器 1 溢出中断 串行口中断 最低 数字式秒表中的两个按键采用了中断实现功能。开始采用外部中断 int0,暂停采 用外部中断 int1。另外程序中还用到了定时/计数器 0 溢出中断进行计时。依据设计要 求,暂停的外部中断 int1 中断级别最高,计时的定时/计数器 0 溢出中断次之,开始 的外部中断 int0 级别最低。

50、(1)外部中断 0 服务程序: 外部中断 0 服务程序结合外部 p3.2 停止键实现数字电子秒表的停止功能,具体流 程图如图 2.2。 当按下 p3.2 停止键按下向 cpu 发出外部中断请求,cpu 转向外部中断 0 服务程 序执行,停止定时器。另外将当前显示的时间进行一次存储,存进中间寄存区。最后 中断返回。 外部中断0入口 停止定时器t0 一次存储 中断返回 图 2.2 外部中断 0 服务程序流程图 (2)外部中断 1 服务程序 外部中断 1 服务程序结合外部 p3.3 停止键实现数字电子秒表的启动功能,具体流 程图如图 2.2。 当按下 p3.3 启动键按下向 cpu 发出外部中断请求

51、,cpu 转向外部中断 1 服务程 序执行,启动定时器。另外进行二次存储,将之前进行一次存储的数码管显示数据存 入最终缓存区,避免下次计时暂停时一次存储将数据掩盖,从而起到保护数据的作用。 二次存储后就中断返回。 外部中断1入口 启动定时器t0 二次存储 中断返回 图 2.3 外部中断 1 服务程序流程图 (3)定时中断服务程序 当定时/计数器 t0 器溢出后,向 cpu 发出中断请求信号。cpu 跳转到定时中断程 序执行,具体流程如图 2.4。定时中断程序是一个进位程序,主要负责对 1ms 的加一。 1ms 位没有满十就跳出中断程序,返回显示程序。当 1ms 位满十后就对 1ms 位清零,

52、向 10ms 位加一,同时检测 10ms 位是否满十,没有满十就跳出中断程序,返回显示程 序。如果满十就向 100ms 位加一,依次类推,最终达到 99.99 秒后归零,从零开始再 次计时。 定时/计数器 t0 工作在方式 0 下,th0 和 tl0 组成一个 13 位的二进制数计数器。 单片机开机或复位时,它的值为 00h,当 t0 启动后,从第一个输入脉冲开始计时,每 来一个脉冲计数加一,即从 0000000000000 开始计数到 1111111111111,再计数一个脉 冲时 th0 和 tl0 组成的 13 位计数器将会从 13 个 1 变成 13 个 0,并产生溢出,溢出 位将被送

53、到 tf0 标志位,通过溢出标志产生溢出中断请求。显然,t0 定时器在方式 0 下引起一次中断所允许计数的最多脉冲个数为 213 个。 但如果定时计数器如果每次都固定从 0 开始计数,到计满后,再向 cpu 发出溢出 中断请求信号那是毫无意义的。为了使定时计数器在规定的计数脉冲个数字之后(此 时应小于 213 个脉冲),向 cpu 发出溢出中断请求,可采取预先向 th0 和 tl0 中放 入一个初值 x 的方法,使计数器以 x 值为起始值开始计数,即 x+1,x+2,直至 计数器计满,从 1 全变为 0。设需要计数的脉冲个数为 y,则有: x+y=213 在定时方式下:定时时间间隔位 t=(2

54、13x)*振荡周期*12 现在本设计要求 1ms 实现一次中断,选择定时器 t0 工作在方式 0。所以需要根据 以上条件计算出 t0 的初值。 设 t0 的初值为 x,则 (213x)*12/12*106 =1*10-3 转换位十六进制数 x=7192=1110000011000b 即 th0=0e0h(取 x 的高 8 位) tl0=18h(取 x 的低 5 位) 由于定时 1ms 只是一个理想化的时间,其中并没有考虑到中断后单片机执行语句 所花的时间。虽然执行语句所花的时间很短只有即微秒,但积少成多,数字秒表一秒 中要溢出中断 1000 次,积累起来误差就能达到毫秒级,这对于精度到达毫秒级

55、的数字 电子秒表来说是很大的误差。所以要在后期编程时还要将单片机读程序的时间考虑进 去, 在对定时器赋初值时将单片机需要执行的语句所花的时间加上,这样就能使数字 电子秒表的误差达到最小。 定时中断服务程序入口 1ms位加一 判断1ms位是否满10 1ms位清零,10ms位加一 判断10ms位是否满10 10ms位清零,100ms位加一 判断100ms位是否满10 100ms位清零,1s位加一 判断1s位是否满10 1s位清零,10s位加一 判断10s位是否满10 10s位清零 中断返回 是 是 是 是 是 否 否 否 否 图 2.4 定时中断服务程序 3 数字电子秒表的安装与调试 3.1 软件

56、的仿真与调试 proteus isis 是英国 labcenter 公司开发的电路分析与实物仿真软件,它可以仿真、 分析(spice)各种模拟器件和集成电路。该软件的主要特点总结后有以下四点:实现 了单片机仿真和 spice 电路仿真相结合的功能。支持目前主流单片机系统的仿真。 提供了软件调试功能,并可以与 wave 联合仿真调试。具有强大的原理图绘制功 能。总之,该软件是一款集单片机和 spice 分析于一身的仿真软件,功能极其强大。 在电子领域中也起到了很大的作用,它的出现仿真不需要先焊接电路,可以先仿真调 试通过后在焊电路,节省了不少在硬件调试上所花的时间。 proteus isis 的

57、工作界面是一种标准的 windows 界面。它包括标题栏、主菜单、状 态栏、标准工具栏、绘图工具栏、对象选择按钮、预览对象方位控制按钮、仿真进程 控制按钮、预览窗口、对象选择器窗口、图形编辑窗口等十几个工具,方便了使用者 的使用。 首先打开已经画好的 proteus dsn 文件,双击图中的 at89s52 芯片,就弹出一个 窗口,在 program file 项中通过路径选择在 wave 中生成的 hex 文件,双击选中后 确定,这样仿真图中的 at89s52 芯片就已经读取了本设计中的 hex 文件。单击“三角 形按钮”进行仿真。通过对仿真结果的观察来对程序进行修改,最终使程序到达设计要

58、求。 3.2 硬件的安装与调试 按照之前设计好的数字电子秒表原理图,详细计算系统中各个元件的参数,选择 相应器件,制作实际电路板。由于考虑到万能板大小的问题及元件之间连线的方便, 在焊接元器件前必须考虑元件的布局然后进行实际操作。 制作好的电路板可以用万用表(200 欧姆档)的红、黑表笔测试电路板的每条走线, 当其电阻非常小时,证明走线没有断开,当其电阻很大时,证明该条走线断了,应该 重新走线,使电路板在电气上得到正确地连接。选用万用表的 20k 欧姆档,检测电路 中是否存在短路。因为系统采用的是共阴极数码管作为显示电路,必须确保数码管的 公共端接的是低电平。 (1)晶振电路的测试 在单片机正

59、常运行的必要条件是单片机系统的时钟稳定正常。实际中,因为各种 原因导致系统时钟不正常而出现系统无法正常运行的情况时有,因此系统时钟是否振 是通电检查的首要环节。在系统通电的状况下,用万用表的直流电压档(20v) ,分别 测量 xtal1 和 xtal2 引脚的电压,看是否正常,在调试过程中,测得电压 xtal1 引脚 应为 2.05v,xtat2 应为 2.15v。 (2)复位电路的测试 复位不正常也会导致系统不能工作。如果复位引脚始终为高电平,系统将始终处 于复位状态;如果始终为低电平,不能产生复位所需的高电平信号脉冲,则系统也可 能无法正常工作。单片机正常工作时,rst 复位引脚应为 0v

60、,按下复位按键时,复位 引脚为高电平 5v 左右。 (3)显示电路的测试 显示电路是数字电子秒表正常运行最直观的观察窗口,我们可以通过观察显示电 路的显示结果观察系统能否正常运行。当显示电路按照电路图焊接好后,用万用表的 测二极管档位,将黑表笔接共阴数码管的公共段,然后将红表笔接数码管的各段,当 数码管的段能正常显示,说明各点焊接正常。 3.3 系统程序的烧录 在软件调试中,使用当今流行的功能强大且普遍的 wave 6000 软件进行软件编 译与调试,使用 microcontroller isp software 及其配套的单片机对程序进行烧录。 图 3.1 debice selection

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论