单片机数字时钟设计.doc

上传人:小** 文档编号:16732303 上传时间:2020-10-22 格式:DOC 页数:27 大小:821.50KB
收藏 版权申诉 举报 下载
单片机数字时钟设计.doc_第1页
第1页 / 共27页
单片机数字时钟设计.doc_第2页
第2页 / 共27页
单片机数字时钟设计.doc_第3页
第3页 / 共27页
资源描述:

《单片机数字时钟设计.doc》由会员分享,可在线阅读,更多相关《单片机数字时钟设计.doc(27页珍藏版)》请在装配图网上搜索。

1、河南工程学院毕业设计(论文) 单片机数字时钟设计 学生姓名: 吴 小 勇 系(部): 电气信息工程系 专 业: 对口应用电子 指导教师: 2009 年 4 月 2 日 摘要 随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了 根本性的改变。由其是单片机技术的应用产品已经走进了千家万户。电子万年历的 出现给人们的生活带来的诸多方便。 我所设计的是一个数字时钟自动报时系统,自动报时系统用到的单片机芯片是 AT89C51 芯片,除此之外还包括:DS1302 芯片、晶振电路和复位电路构成单片机 最小应用系统,还有独立式按键电路,动态显示电路等等。它不仅能实现数字电子 时钟的各种功能,

2、如具有较时、调时、定时、闹钟等功能,而且还能实现定点报时 的功能。 实时时钟可提供秒、分、时、日、星期、月和年,一个月小与 31 天时可以自动 调整,且具有闰年补偿功能。本设计还附加了定点报时的功能,从而进一步完成了 自动报时系统的设计。 关键词: 单片机,闹铃时钟,位码,段码,显示 目录 前言 .1 1 总体方案设计 .2 1.1 系统框图 .2 1.2 设计方案介绍 .2 2 硬件设计 .4 2.1 单片机的选型 .4 2.2 AT89C51 的特点 .4 2.3 AT89C51 单片机复位方式 .5 2.4 DS1302 的简介 .6 2.5 键盘方案 .9 2.6 七段 LED 显示工

3、作原理 .11 2.7 自动报时系统的工作原理及原理图 .14 3 软件设计 .15 3.1 设计思路 .15 3.2 系统工作流程 .15 3.3 主程序流程 .16 3.4 按键程序模块 .17 3.5 显示程序模块 .20 3.6 中断服务程序模块 .22 前 言 正文中首先简单描述了硬件系统的工作原理,且附以硬件系统的设计框图, 论述了本次毕业设计所应用的各种硬件接口技术和各个接口模块的功能及工作过 程, 并具体描述了外接电路接口的软、硬件调试。 其次阐述了程序的流程和实现过程。本设计就是以单片机的基本语言汇编语 言来进行软件设计,软件的设计采用模块化结构,使程序设计的逻辑关系更加简

4、洁明了。使硬件在软件的控制下协调运作。 本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块 的编写。 1 总体方案设计 1.1 系统框图 我所设计的是一个数字时钟自动报时系统,它不仅具有数字电子时钟的各种功能,如具 有较时、调时、定时、闹钟等功能,而且还具有驱动电铃,定点报时等功能。总体设计框图 如图 1.1 所示: 图 1.1 系统框图 1.2 设计方案介绍 1.2.1 硬件的选择方案 由于我设计的是一个数字时钟自动报时系统,它需要准确的走时、较时、调时、定时、 定点报时等,因此我选用的是 AT89C51 单片机芯片,再配以 DS1302、按键电路、晶振电 路、复位电路以及

5、LED 动态显示器,就可以实现。采用 AT89C51 的 P0 接口外接 8 路反相 三态缓冲器 74LS240 作 LED 动态扫描的段码控制驱动信号,用 P2 接口的 P2.0-P2.5 外接一片 集电极开路反相门电路 7406 做为 6 位 LED 的位选信号驱动口,6 个数码管的 8 根段选线分 别接 74LS240 的输出, LED 共阴极端与 74LS07 的输出端相连;按键接口,由 P1.7、P1.6、P1.5 、P1.4 来完成,四个按键的作用分别是:一个为功能键 K1;一个为数字调 整键 K2;一个为取消设置键 K3,用来设置时间;一个为 K4 键,用来设置定时时间。 DS1

6、302 实时时钟由 P1.0、P1.1、P1.2 来控制。DAS1302 的 X1、X2 接口用来接蜂鸣器。 1.2.2 软件的设计方案 蜂 鸣 器 LED 动 态 显 示 按键电路 晶振电路 复位电路 由于我考虑到用单片机的汇编语言来做自动报时系统的设计比较简单。对于程序我 的设计思路是: 1.要有主程序,主程序一般是显示和中断的初始化。 2.要有显示子程序,当键入一个时间值时显示程序要把这个键入的时间值给显示出来。 2.要有中断服务程序,功能,走时,判断是否到定时时间等等。 3.要有按键程序,进入按键程序,判断是否有键按下,没有,则调用延时重新判断,如 果到了,调用延时去抖程序,再次判断有

7、键按下否,没有则返回延时程序,如果有按键,则 判断键号,堆栈,判断键是否释放,没有,继续判断,释放了,则输入键号送往累加器。 2 硬件设计 2.1 单片机的选型 我的设计里用到的单片机芯片是 AT89C51 芯片,除此之外还包括:DS1302 芯片、晶 振电路和复位电路构成单片机最小应用系统。 2.2 AT89C51 的特点 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能、CMOS、8 位单片机。该器件采用 ATMEL 高密度非易失存储器制造技术制造,

8、与工业标准的 MCS-51 指令集和输出管脚相兼容。AT89C51 的管脚图如图 2.1 所示: 图 2.1 AT89C51 管脚图 主要特性: 1、与 MCS-51 兼容 2、4K 字节可编程闪烁存储器 3、寿命:1000 写/擦循环 4、数据保留时间:10 年 5、全静态工作:0Hz-24Hz 6、三级程序存储器锁定 7、128*8 位内部 RAM 8、32 可编程 I/O 线 9、两个 16 位定时器/计数器 10、5 个中断源 11、可编程串行通道 12、片内振荡器和时钟电路 2.3 AT89C51 单片机复位方式 单片机在开机时或在工作中因干扰而使程序失控,或工作中程序处于某种死循环

9、状态, 在这种情况下都需要复位。 复位的作用是使中央处理器 CPU 以及其他功能部件都恢复到一 个确定的初始状态,并从这个状态重新开始工作。 AT89C51 单片机的复位靠外部电路实现,信号由 RESET(RST)引脚输入,高电平有效,在振 荡器工作时,只要保持 RST 引脚高电平两个机器周期,单片机即复位。 复位后,PC 程序计数 器的内容为 0000H,片内 RAM 中内容不变。 复位电路一般有上电复位、手动开关复位和自 动复位电路 3 种,如图 2.2 所示。而本设计采用的是手动复位方式,如 B 图所示: a 上电复位电路 b 手动复位电路 c 自动复位电路 图 2.2 单片机复位电路

10、2.4 DS1302 的简介 2.4.1 简介 DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗的实时时钟芯片,附加 31 字 节静态 RAM,采用 SPI 三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字 节的时钟信号和 RAM 数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与 31 天时可以自动调整,且具有闰年补偿功能。工作电压宽达 2.55.5V。采用双电源供电 (主电源和备用电源) ,可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的 能力。DS1302 用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据 与出现该数据

11、的时间同时记录,因此广泛应用于测量系统中。 DS1302 串行时钟芯片主要是由移位寄存器、控制逻辑、振荡器、实时时钟、RAM 以 及电源组成,它的电路工作原理图如下图 2.3 所示: 图 2.3 DS1302 的内部结构 在本设计中,它的 I/O 引脚、串行时钟 SCLK 引脚、CE 引脚分别与 AT89C51 的 I/O 接口的 P1.1 口、 P1.2 口、P1.0 口相接,X1、X2 接口接蜂鸣器。 2.4.2 DS1302 的特点 DS1302 时钟芯片包括: (1)实时时钟/日历:实时时钟 /日历提供秒、分、时、日、星期、月、年等信息,每 月天数以及闰年能自动调整,时钟可以采用 24

12、h 或 AM/PM 的 12h 格式。 (2)31 字节的静态 RAM:用于存放数据。 (3)带慢速充电控制备份电源的充电特性。 (4)简单的三线串行接口:该芯片使用同步串行通信。与时钟/RAM 通信共需 3 根线: RST(复位) 、 I/O(数据线) 、SCLK(串行时钟) 。数据可以以每次 1 个字节或多个字节的 形式传送到时钟/RAM 或从其读出。 2.4.3 各管脚描述 管脚描述如下 X1 X2 32.768KHz 晶振管脚 GND 地 RST 复位脚 I/O 数据输入/输出引脚 SCLK 串行时钟 Vcc1,Vcc2 电源供电管脚 订单信息 部分# 描述 DS1302 串行时钟芯片

13、 8 脚 DIP DS1302S 串行时钟芯片 8 脚 SOIC 200mil DS1302Z 串行时钟芯片 8 脚 SOIC 150mil 2. DS1302 内部寄存器 CH: 时钟停止位寄存器 2 的第 7 位 12/24 小时标志 CH=0 振荡器工作允许 bit7=1,12 小时模式 CH=1 振荡器停止 bit7=0,24 小时模式 WP: 写保护位寄存器 2 的第 5 位:AM/PM 定义 WP=0 寄存器数据能够写入 AP=1 下午模式 WP=1 寄存器数据不能写入 AP=0 上午模式 TCS: 涓流充电选择 DS: 二极管选择位 TCS=1010 使能涓流充电 DS=01 选

14、择一个二极管 TCS=其它禁止涓流充电 DS=10 选择两个二极管 DS=00 或 11, 即使 TCS=1010, 充电功能也被禁止 RS 位电阻典型位 00 没有没有 01 R1 2K 10 R2 4K 11 R3 8K 2.4.4 DS1302 读写时序说明 DS1302 是 SPI 总线驱动方式。它不仅要向寄存器写入控制字,还需要读取 相应寄存器的数据。 要想与 DS1302 通信,首先要先了解 DS1302 的控制字。DS1302 的控制字如 表 2.1 所示: 表 2.1 控制字(即地址及命令字节) 控制字的最高有效位(位 7)必须是逻辑 1,如果它为 0,则不能把数据写 入到 D

15、S1302 中。 位 6:如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据; 位 5 至位 1(A4A0):指示操作单元的地址; 位 0(最低有效位):如为 0,表示要进行写操作,为 1 表示进行读操作。 图 2.4 数据读写时序 控制字总是从最低位开始输出。在控制字指令输入后的下一个 SCLK 时钟的 上升沿时,数据被写入 DS1302,数据输入从最低位(0 位)开始。同样,在紧跟 8 位的控制字指令后的下一个 SCLK 脉冲的下降沿,读出 DS1302 的数据,读出的 数据也是从最低位到最高位。数据读写时序如图 2.4。 2.5 键盘方案 本设计的自动报时系统是一个具有电

16、子时钟、闹钟、定点报时功能的系统,系统工作时 应具备随时对当前时间进行调整,因此它只需要独立式键盘的四个按键即可完成操作。 独立式键盘的接口电路:在单片机应用系统中,有时只需要几个简单的按键向系统输入 信息。这时,可将每个按键直接接在一根 I/O 接口线上,这种连接方式的键盘称为独立式键 盘。如图 2.5 所示,每个独立按键单独占有一根 I/O 接口线,每根 I/O 接口线的工作状态不 会影响到其他 I/O 接口线。这种按键接口电路配置灵活,硬件结构简单,但每个按键必须占 用一根 I/O 线,I/O 接口线浪费较大。故只在按键数量不多时采用这种按键电路。 在此电路中,按键输入都采用低电平有效。

17、上拉电阻保证了按键断开时,I/O 接口线有 确定的高电平。当 I/O 接口内部有上拉电阻时,外电路可以不配置上拉电阻。本设计中个按 键的功能为:一个为功能键 K1;一个为数字调整键 K2;一个为取消设置键 K3,用来设置 时间;一个为 K4 键,用来设置定时时间。 图 2.5 独立式键盘电路 2.5.1 键盘接口工作原理 在单片机应用系统中,常用键盘作为输入设备,通过它将数据、内存地址、命令及指令 等输入到系统中,来实现简单的人机通信。 2.5.2 按键开关的去除抖动功能 目前,AT89C51 单片机应用系统上的按键常采用机械触点式按键,它在断开、闭合时输入 电压波形如图 2.6 所示.可以看

18、出机械触点在闭合及断开瞬间均有抖动过程,时间长短与开关 的机械特性有关,一般为 510ms 。由于抖动,会造成被查询的开关状态无法准确读出。例 如,一次按键产生的正确开关状态,由于键的抖动,CPU 多次采集到底电平信号,会被误 认为按键被多次按下,就会多次进行键输入操作,这是不允许的。为了保证 CPU 对键的一 次闭合仅在按键稳定时作一次键输入处理,必须消除产生的前沿(后沿)抖动影响。在本次 设计中采用的是软件去抖。 后 沿前 沿 识 别 区按 键 过 程 图 2.6 按键过程 2.6 七段 LED 显示工作原理 2.6.1 显示的种类 1 静态显示概念 静态显示是指数码管显示某一字符时,相应

19、的发光二极管恒定导通或恒定截止。这种显 示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极) 。每个数 码管的 8 个字段分别与一个 8 位 I/O 口地址相连,I/O 口只要有段码输出,相应字符即显示 出来,并保持不变,直到 I/O 口输出新的段码。采用静态显示方式的优点:较小的电流即可 获得较高的亮度,且占用 CPU 时间少,编程简单,显示便于监测和控制,但其占用的接口 线多,硬件电路复杂,成本高,只适合于显示位数较少的场合。 2 动态显示概念 动态显示是一位一位地轮流点亮各位数码管,这种逐位点亮显示器的方式称为位扫描。 通常,各位数码管的段选线相应并联在一起,由一个

20、8 位的 I/O 口控制;各位的位选线(公 共阴极或阳极)由另外的 I/O 口线控制。动态方式显示时,各数码管分时轮流选通,要使其 稳定显示,必须采用扫描方式,即在某一时刻只选通一位数码管,并送出相应的段码,在另 一时刻选通另一位数码管,并送出相应的段码。依此规律循环,即可使各位数码管显示将要 显示的字符。虽然这些字符是在不同的时刻分别显示,但由于人眼存在视觉暂留效应,只要 每位显示间隔足够短就可以给人以同时显示的感觉。 采用动态显示方式比较节省I/O口,硬件电路也较静态显示方式简单,但其亮度不如静 态显示方式,而且在显示位数较多时,CPU要依次扫描,占用CPU较多的时间。 此次设计中我们采用

21、定时器来完成动态扫描显示。用定时器T0定2ms的时间间隔,每次 定时时间到时就输出一个LED信号,即显示1位。定时器每中断6次后循环到第一位LED显示。 这样动态显示占用CPU的时间只有输出断码和输出位码的有限时间,提高了CPU的工作效率。 在本次设计中所使用的是动态显示,其显示电路图形如图2.7所示: 图 2.7 LED 动态显示电路 2.6.2 数码管简介 1 数码管结构 数码管由 8 个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数字 0 9、字符 A F 及小数点“”。数码管的外形结构如图 2.8(a)所示。数码管又分为共阴极 和共阳极两种结构,分别如图 2.8(b)和图

22、2.8(c)所示: R8 R8 +5V a b c d e f g dp a b c d e f g dpe 1 d 2 GN D 3 c 4 dp 5 b 6 a 7 GN D 8 f 9 g 10 dp a b cde f g (a) (b) (c) (a)外型结构; (b)共阴极; (c)共阳极 图 2.8 数码管结构图 2 数码管工作原理 由于我们采用的是共阴极数码管,所以介绍共阴极数码管的工作原理如下: 共阴极数码管的 8 个发光二极管的阴极(二极管负端)连接在一起。通常,公共阴极接 低电平(一般接地) ,其它管脚接段驱动电路输出端。当某段驱动电路的输出端为高电平时, 则该端所连接的

23、字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时, 要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应 的限流电阻。 共阳极数码管的工作原理与共阴极的正好相反。 3 数码管字形编码 要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。 LED 显示字型码表见表 2.2: 表 2.2 LED 显示字型码表 显示字符 共阴极 共阳极 显示字符 共阴极 共阳极 0 3FH C0H 9 6FH 90H 1 06H F9H A 77H 88H 2 5BH A4H B 7CH 83H 3 4FH B0H C 39H C6H 4 66H 99H

24、 D 5EH A1H 5 6DH 92H E 79H 86H 6 7DH 82H F 71H 8EH 7 07H F8H 8 7FH 80H 2.7 自动报时系统的工作原理及原理图 自动报时系统电路的核心是 AT89C51 单片机,其内部带有 4KB 的 FlashROM,无须扩展 程序存储器;电子时钟没有大量的运算和暂存数据,现有的 128B 片内 RAM 已能满足要求, 也不必扩展片外 RAM。系统配备 6 位 LED 显示和 4 个单接口键盘,采用 P0 接口外接 8 路 反相三态缓冲器 74LS240 作 LED 动态扫描的段码控制驱动信号,用 P2 接口的 P2.0-P2.5 外接

25、一片集电极开路反相门电路 7406 做为 6 位 LED 的位选信号驱动口,6 个数码管的 8 根段选 线分别接 74LS240 的输出, LED 共阴极端与 74LS07 的输出端相连;按键接口,由 P1.7、P1.6、P1.5 、P1.4 来完成;DS1302 实时时钟由 P1.0、P1.1、P1.2 来控制。DS1302 的 X1、X2 接口外接蜂鸣器。 电路原理图见附录 A 3 软件设计 3.1 设计思路 由于我做的是自动报时系统,它需要具有较时、调时、定时、闹钟等功能,而且还具有 驱动电铃,定点报时等功能。另外当时钟走到 24 点时则自动清零。所以我们考虑到用单片 机的汇编语言来做我

26、们的设计比较简单。对于程序我们的设计思路是: 1.要有主程序,主程序一般是显示和中断的初始化。 2.要有显示子程序,当键入一个时间值时显示程序要把这个键入的时间值给显示出来。 2.要有中断服务程序,功能,走时,判断是否到定时时间等等。 3.要有按键程序,进入按键程序,判断是否有键按下,没有,则调用延时重新判断,如 果到了,调用延时去抖程序,再次判断有键按下否,没有则返回延时程序,如果有按键,则 判断键号,堆栈,判断键是否释放,没有,继续判断,释放了,则输入键号送往累加器。 3.2 系统工作流程 1.时钟显示:6 位 LED 从左到右一次显示时、分、秒,采用 24 小时计时。 2.按键控制功能:

27、采用 4 个独立键盘,其中一个为功能键;一个为数字调整键;一个为 取消设置键,用来设置时间;一个为 ALM 键,用来设置定时时间。 3.时间显示:通电后,系统自动进入时钟设置,从 00:00:00 开始计时,此时可以设 定当前时间。 4.时间调整:按下功能键,系统停止计时显示,进入时间设定状态,系统只显示小时的 内容,其余 4 位 LED 处于全暗状态,等待按键设置。此时按动数字调整键后小时将会加 1,按动取消键后又重新回到原来的时间显示状态;若再按动功能键则用来调整分钟,此时 小时和秒的 4 位 LED 指示全暗,按数字调整键后可以对分钟增 1 调整,按动取消键后又重 新回到原来的时间显示状

28、态;再按动功能键则用来调整秒,此时小时和分钟的 4 位 LED 指 示全暗,秒显示当前的秒数,暗数字调整键可以对秒进行增 1 调整,按动取消键后又重新回 到原来的时间显示状态,按动功能键后系统将自动由设定后的时间开始计时显示。 5.闹钟设置/启闹:按下 K4 键,系统继续计时,但显示为 00:00:00,此时再按动功能键 后进入闹钟设置状态,设置过程和时间调整相同,但是最后按功能键确定后显示定时时间 30S 后自动启动定时闹钟功能,并恢复时间显示。定时时间到,蜂鸣器鸣叫 1min 后自动停 闹,每次设置时只能定一次,下次需重新设置。 3.3 主程序流程 首先,设置初始常数,设置定时器常数,它主

29、要是显示和中断的初始化。 3.3.1 主程序流程图如图 3.1 所示: 主程序的内容一般包括:主程序的起始地址,中断服务程序的起始地址,有关内存单元 及相关部件的初始化和一些子程序调用等。 图 3.1 主程序流程图 3.3.2 主程序如下: START: MOV R0,#70H ;清 70H-7AH 共 11 个内存单元 MOV R7,#0BH ; CLEARDISP: MOV R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清 20H(标志用) MOV 7AH,#0AH ;放入熄灭符 数据 MOV TMOD,#11H ;设 T0、T1

30、 为 16 位定时器 MOV TL0,#0B0H ;50MS 定时初值( T0 计时用) MOV TH0,#3CH ;50MS 定时初值 MOV TL1,#0B0H ;50MS 定时初值( T1 闪烁定时用) MOV TH1,#3CH ;50MS 定时初值 SETB EA ;总中断开放 SETB ET0 ;允许 T0 中断 SETB TR0 ;开启 T0 定时器 MOV R4,#14H ;1 秒定时用初值(50MS20) START1: LCALL DISPLAY ;调用显示子程序 JNB P3.2,SETMM1 ;P3.7 口为 0 时转时间调整程序 SJMP START1 ;P3.7 口为

31、 1 时跳回 START1 SETMM1: LJMP SETMM ;转到时间调整程序 SETMM 3.4 按键程序模块 该系统的按键功能如下:按下功能键,系统停止计时显示,进入时间设定状态,系统只 显示小时的内容,其余 4 位 LED 处于全暗状态,等待按键设置。此时按动数字调整键后小 时将会加 1,按动取消键后又重新回到原来的时间显示状态;若再按动功能键则用来调整分 钟,此时小时和秒的 4 位 LED 指示全暗,按数字调整键后可以对分钟增 1 调整,按动取消 键后又重新回到原来的时间显示状态;再按动功能键则用来调整秒,此时小时和分钟的 4 位 LED 指示全暗,秒显示当前的秒数,暗数字调整键

32、可以对秒进行增 1 调整,按动取消键 后又重新回到原来的时间显示状态,按动功能键后系统将自动由设定后的时间开始计时显示。 进入按键程序,判断有键按下吗?没有,则调用延时重新判断,如果到了, 调用延时去抖程序,再次判断有键按下否,没有则返回延时程序,如果有按键, 则判断键号,堆栈,判断键是否释放,没有,继续判断,释放了,则输入键号送 往累加器,然后返回主程序。 开 始返 回输 入 键 号 闭 合 键 释 放 否判 断 闭 合 键 键有 键 闭 合 否 ?调 用 子 程 序调 用 子 程 序有 键 闭 合 否 ? 栈秒秒延 时延 时 12号 图 3.2 按键程序流程图 按键程序如下: 当调时按键按

33、下时进入此程序 SETMM:cLR ET0 ;关定时器 T0 中断 CLR TR0 ;关闭定时器 T0 LCALL DL1S ;调用 1 秒延时程序 JB P3.2,CLOSEDIS ;键按下时间小于 1 秒,关闭显示(省电) MOV R2,#06H ;进入调时状态,赋闪烁定时初值 SETB ET1 ;允许 T1 中断 SETB TR1 ;开启定时器 T1 SET2: JNB P3.2,SET1 ;P3.7 口为 0(键未释放) ,等待 SETB 00H ;键释放,分调整闪烁标志置 1 SET4: JB P3.2,SET3 ;等待键按下 LCALL DL05S ;有键按下,延时 0.5 秒 J

34、NB P3.2,SETHH ;按下时间大于 0.5 秒转调小时状态 MOV R0,#77H ;按下时间小于 0.5 秒加 1 分钟操作 LCALL ADD1 ;调用加 1 子程序 MOV A,R3 ;取调整单元数据 CLR C ;清进位标志 CJNE A,#60H,HHH ;调整单元数据与 60 比较 HHH: JC SET4 ;调整单元数据小于 60 转 SET4 循环 LCALL CLR0 ;调整单元数据大于或等于 60 时清 0 CLR C ;清进位标志 AJMP SET4 ;跳转到 SET4 循环 CLOSEDIS:SETB ET0 ;省电(LED 不显示)状态。开 T0 中断 SET

35、B TR0 ;开启 T0 定时器(开时钟) CLOSE:JB P3.2,CLOSE ;无按键按下,等待 LCALL DISPLAY ;有键按下,调显示子程序延时削抖 JB P3.2,CLOSE ;是干扰返回 CLOSE 等待 WAITH: JNB P3.2,WAITH ;等待键释放 LJMP START1 ;返回主程序(LED 数据显示亮) SETHH: CLR 00H ;分闪烁标志清除(进入调小时状态) SETHH1: JNB P3.2,SET5 ;等待键释放 SETB 01H ;小时调整标志置 1 SET6:JB P3.2,SET7 ;等待按键按下 LCALL DL05S ;有键按下延时

36、0.5 秒 JNB P3.2,SETOUT ;按下时间大于 0.5 秒退出时间调整 MOV R0,#79H ;按下时间小于 0.5 秒加 1 小时操作 LCALL ADD1 ;调加 1 子程序 MOV A,R3 ; CLR C ; CJNE A,#24H,HOUU ;计时单元数据与 24 比较 HOUU: JC SET6 ;小于 24 转 SET6 循环 LCALL CLR0 ;大于或等于 24 时清 0 操作 AJMP SET6 ;跳转到 SET6 循环 SETOUT:JNB P3.2,SETOUT1 ;调时退出程序。等待键释放 LCALL DISPLAY ;延时削抖 JNB P3.2,SE

37、TOUT ;是抖动,返回 SETOUT 再等待 CLR 01H ;清调小时标志 CLR 00H ;清调分标志 CLR 02H ;清闪烁标志 CLR TR1 ;关闭定时器 T1 CLR ET1 ;关定时器 T1 中断 SETB TR0 ;开启定时器 T0 SETB ET0 ;开定时器 T0 中断(计时开始) LJMP START1 ;跳回主程序 SET1:LCALL DISPLAY ;键释放等待时调用显示程序(调分) AJMP SET2 ;防止键按下时无时钟显示 SET3:LCALL DISPLAY ;等待调分按键时时钟显示用 AJMP SET4 SET5:LCALL DISPLAY ;键释放等

38、待时调用显示程序(调小时) AJMP SETHH1 ;防止键按下时无时钟显示 SET7:LCALL DISPLAY ;等待调小时按键时时钟显示用 AJMP SET6 SETOUT1:LCALL DISPLAY ;退出时钟调整时键释放等待 AJMP SETOUT ;防止键按下时无时钟显示 3.5 显示程序模块 显示程序采用动态显示,由位码控制那一个数码管显示,由段码控制数码管显示什么数 值,根据中断程序显示时间来查表显示数值,从第一位到第四位逐个点亮,同时每显示一位 判断一次四位显示完了没有,没有显示完进行显示下一位,显示完了从头开始再循环。显示 子程序如图 3.3 所示: 入 口保 护 现 场

39、设 置 显 示 位 置查 显 示 常 数 表显 示 数 据恢 复 现 场返 回 子 程 序 框 图 图 3.3 DISLED 子程序流程图 显示程序如下: DESPLAY: MOV R2, #01H ;将位码送 R2 MOV R0, #30 ;将段码送 R0 NEXT3: MOV A,R0 MOV DPTR,#TAB2 MOVC A,A+DPTR MOV P0,A ;将段码送 R0 MOV P1,R2 ;将位码送 R2 LCALL DELAY1 ;调用延时程序 MOV A,R2 JB ACC.3,U2 ;显示完转 U2 RL A ;未显示完,将未码左移 MOV R2,A ;将位码重送、R2 中

40、 INC R0 ;指向 31H LJMP NEXT3 U2: RET ;显示返回 3.6 中断服务程序模块 中断处理框图如图 3.4 所示: 图 3.4 INT_T1 中断处理框图 T1 定时中断处理程序如下: TIM1: PUSH ACC PUSH PSW MOV TL1,#0B0H MOV TH1,#3CH INC 29H ;中断计数 MOV A,29H CJNE A,#05H,ETI1 ;0.3 秒时间到,用来闪烁延时 MOV 29H,#00H MOV A,R2 CJNE A,#01H,LOOP1 ;R2 为 01 秒闪烁 MOV 3EH,#0FDH ;使时位选能够正常扫描 MOV 3F

41、H,#0FEH XRL 3AH,#20H ;使秒原来正常扫描的位选关闭,原来关闭的能够正常扫描 XRL 3BH,#10H AJMP ETI1 LOOP1: CJNE A,#02H,LOOP2 ;R2 为 02 分闪烁 MOV 3AH,#0DFH ;使秒位选能够正常扫描 MOV 3BH,#0EFH XRL 3CH,#08H ;使分原来正常扫描的位选关闭,原来关闭的能够正常扫描 XRL 3DH,#04H AJMP ETI1 LOOP2: CJNE A,#03H,ETI1 ;R2 为 03 时闪烁 MOV 3CH,#0F7H ;使分位选能够正常扫描 MOV 3DH,#0FBH XRL 3EH,#02H ;使时原来正常扫描的位选关闭,原来关闭的能够正常扫描 XRL 3FH,#01H ETI1: POP PSW POP ACC RETI 原理图

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!