基​于​8​9​c​5​1的电子秒表毕业设计论文(编辑修改稿)内容摘要:

级别。 避免出现 CPU 执行完定时溢出中断程序后再响应外部中断程序,影响计时精度。 AT89C52 的自然优先级顺序排列如下: 中断源 最高 外部中断 0 定时 /计数器 0溢出中断 外部中断 1 定时 /计数器 1溢出中断 串行口中断 最低 数字式秒表中的两个按键采用了中断实现功能。 开始采用外部中断 INT0,暂停采用外部中断 INT1。 另外程序中还用到了定时 /计数器 0 溢出中断进行计时。 依据设计要求,暂停的外部中断 INT1 中断级别最高,计时的定时 /计数器 0 溢出中断次之,开始的外部中断 INT0 级别最低。 外部中断 0服务程序: 外部中断 0 服务程序结合外部 停止键实现数字电子秒表的停止功能,具体流程图如图。 当按下 停止键按下向 CPU发出外部中断请求, CPU转向外部中断 0 服务程序执行,停止定时器。 另外将当前显示的时间进行一次存储,存进中间寄存区。 最后中断返回。 8 外 部 中 断 0 入 口停 止 定 时 器 T 0一 次 存 储中 断 返 回 图 外部中断 0服务程序流程图 外部中断 1服务程序 外部中断 1 服务程序结合外部 停止键实现数字电子秒表的启动功能,具体流程图如图。 当按下 启动键按下向 CPU发出外部中断请求, CPU转向外部中断 1 服务程序执行,启动定时器。 另外进行二次存储,将之前进行一次存储的数码管显示数据存入最终缓存区,避免下次计时暂停时一次存储将数据掩盖,从而起到保护数据的作用。 二次存储后就中断返回。 外 部 中 断 1 入 口启 动 定 时 器 T 0二 次 存 储中 断 返 回 图 外部中断 1服务程序流程图 9 定时中断服务程序 当定时 /计数器 T0 器溢出后,向 CPU 发出中断请求信号。 CPU 跳转到定时中断程序执行,具体流程如图。 定时中断程序是一个进位程序,主要负责对 1ms 的加一。 1ms 位没有满十就 跳出中断程序,返回显示程序。 当 1ms 位满十后就对 1ms 位清零,向 10ms 位加一,同时检测 10ms 位是否满十,没有满十就跳出中断程序,返回显示程序。 如果满十就向 100ms 位加一,依次类推,最终达到 秒后归零,从零开始再次计时。 定时 /计数器 T0工作在方式 0下, TH0 和 TL0组成一个 13 位的二进制数计数器。 单片机开机或复位时,它的值为 00H,当 T0启动后,从第一个输入脉冲开始计时,每来一个脉冲计数加一,即从 0000000000000 开始计数到 1111111111111,再计数一个脉冲时 TH0和 TL0 组 成的 13 位计数器将会从 13 个 1变成 13 个 0,并产生溢出,溢出位将被送到 TF0标志位,通过溢出标志产生溢出中断请求。 显然, T0定时器在方式 0下引起一次中断所允许计数的最多脉冲个数为 213 个。 但如果定时计数器如果每次都固定从 0开始计数,到计满后,再向 CPU 发出溢出中断请求信号那是毫无意义的。 为了使定时计数器在规定的计数脉冲个数字之后(此时应小于 213 个脉冲),向 CPU 发出溢出中断请求,可采取预先向 TH0 和 TL0 中放入一个初值 X的方法,使计数器以 X值为起始值开始计数,即 X+1, X+2,„„直至计数器计满, 从 1全变为 0。 设需要计数的脉冲个数为 Y,则有: X+Y=213 在定时方式下 :定时时间间隔位 t=( 213— X) *振荡周期 *12 现在本设计要求 1ms 实现一次中断,选择定时器 T0 工作在方式 0。 所以需要根据以上条件计算出 T0的初值。 设 T0的初值为 X,则 ( 213— X) *12/12*106 =1*103 转换位十六进制数 X=7192=1110000011000B 即 TH0=0E0H(取 X的高 8位) TL0=18H(取 X 的低 5位) 由于定时 1ms 只是一个理想化的时间,其中并没有考虑到中 断后单片机执行语句所花的时间。 虽然执行语句所花的时间很短只有即微秒,但积少成多,数字秒表一秒中要溢出中断 1000 次,积累起来误差就能达到毫秒级,这对于精度到达毫秒级的数 10 字电子秒表来说是很大的误差。 所以要在后期编程时还要将单片机读程序的时间考虑进去, 在对定时器赋初值时将单片机需要执行的语句所花的时间加上,这样就能使数字电子秒表的误差达到最小。 定 时 中 断 服 务 程 序 入 口1 m s 位 加 一判 断 1 m s 位 是 否 满 1 01 m s 位 清 零 , 1 0 m s 位 加 一判 断 1 0 m s 位 是 否 满 1 01 0 m s 位 清 零 , 1 0 0 m s 位 加 一判 断 1 0 0 m s 位 是 否 满 1 01 0 0 m s 位 清 零 , 1 s 位 加 一判 断 1 s 位 是 否 满 1 01 s 位 清 零 , 1 0 s 位 加 一判 断 1 0 s 位 是 否 满 1 01 0 s 位 清 零中 断 返 回是是是是是否否否否 11 四 、硬件电路的设计与实现 (一)、 AT89C51 微处理器介绍 AT89C51 微处理器的背景 AT89C 系列单片机(微处理器)是 ATMEL 公司 1993 年开始研制生产的,优越的性能价格比使其成为颇受欢迎的 8 位单片机。 AT89C 系列与 MCS— 51系列单片机在软、硬件上相互兼容,但 AT89C 系列与 MCS— 51 系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片( AT89C2051/1051),使整个硬件电路的体积更小。 AT89C 系列单片机有四种型号: AT89C5 AT89C5 AT89C105 AT89C2051,其中AT89C2051/1051 是 ATMEL 公司 AT89C 系列的新成员。 它的较小的体积、良好的性能价格比倍受青睐,在家电产品、工业控制、计算机产品、医疗器械等应用方面成为用户降低成本的首选器件 AT89C51 单片机的功能结构 AT89C51 单片机芯片为 40个引脚, HMOS 工艺制造的芯用片采 双列 直插( DIP)方式,其引脚示意及功能分类如图 所示。 它具有如下主要特性: AT89C51 与 MCS51 兼容; 内部带 4KB可编程闪速存储器; 寿命为 1000 次擦 /写循环; 数据保留时间为 10 年; 工作电压范围为 — 6V; 令静态工作频率为 0Hz— 24Hz; 128 8 位内部 RAM。 32 条可编程 I/O线; 2个 16 位定时器 /计数器; 5个两级中断源; 可编程全双工串行 UART 通道; 12 图 AT。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。