毕业设计基于AT89C51单片机的自动报时系统设计.doc

上传人:土8路 文档编号:10325491 上传时间:2021-05-09 格式:DOC 页数:36 大小:1,007KB
返回 下载 相关 举报
毕业设计基于AT89C51单片机的自动报时系统设计.doc_第1页
第1页 / 共36页
毕业设计基于AT89C51单片机的自动报时系统设计.doc_第2页
第2页 / 共36页
毕业设计基于AT89C51单片机的自动报时系统设计.doc_第3页
第3页 / 共36页
毕业设计基于AT89C51单片机的自动报时系统设计.doc_第4页
第4页 / 共36页
毕业设计基于AT89C51单片机的自动报时系统设计.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《毕业设计基于AT89C51单片机的自动报时系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计基于AT89C51单片机的自动报时系统设计.doc(36页珍藏版)》请在三一文库上搜索。

1、济源职业技术学院济源职业技术学院 毕毕 业业 设设 计计 题目 自动报时系统 系别 机电工程系 专业 机电一体化技术 班级 机电 0901 班 姓名 学号 07550314 指导教师 日期 2011 年 09 月 设计任务书 设计题目:设计题目: 自动报时系统 设计要求:设计要求: 1. 设计的自动报时系统,在自动计时时,由 6 位 LED 显示器由左到右依次来显 示时、分、秒; 2. 设计的自动报时系统,它应具有准确走时、定时、闹钟定时、到时铃响等功 能。时钟走到 23:59:59,再加一秒则全部清零,重新计时; 3. 设计出自动报时系统的硬件电路; 4. 设计自动报时系统的软件电路; 5.

2、 上机调试程序并连接试验箱。 设计进度要求:设计进度要求: 第一周:查找、搜集资料,确定设计题目; 第二周:在同学的帮助下查找资料,设计硬件电路; 第三周:在同学的指点下,进行软件电路的设计; 第四周:连接试验箱进行程序调试,修改错误; 第五周:按照毕业设计要求,制作电子稿; 第六周:在同学的帮助下,修改电子稿; 第七周:交电子稿,让老师批阅; 第八周:打印电子稿,进行毕业答辩。 指导教师(签名):指导教师(签名): 摘 要 本设计是利用单片机原理设计的自动报时系统。其中,自动报时系统以 AT89C51 单片机为核心,采用 4 个独立式按键来调整时间和设置闹铃,用共阴极动 态六段 LED 动态

3、显示来显示时间,计时方案采用时钟芯片 DS1302。以 8 路反向动态 缓冲器 74LS240 作为 LED 的动态扫描的段码控制驱动信号,用 P2.02.5 外接一片集 电极开路反向门电路 7406(OC 门)做 6 位 LED 的位选信号驱动口,6 个数码管的 8 根 段选线分别接 74LS240 的输出,LED 共阴极端与 7406 的输出端相连,从左到右依次来 显示时,分,秒。 正文中首先简单描述了硬件系统的工作原理,且附以硬件系统的设计框图,论 述了本次毕业设计所应用的各种硬件接口技术和各个接口模块的功能及工作过程, 并具体描述了外接电路接口的软、硬件调试。 本文撰写的主导思想是软、

4、硬件相结合,以硬件为基础,来进行各功能模块的 编写。 关键词:单片机,自动报时系统,位码,段码,显示 目 录 设计任务书.I 摘 要.II 目 录.I 1 前言.1 2 硬件系统设计.2 2.1 总体框图设计.2 2.2 单片机选型.2 2.3 独立式按键控制电路.5 2.4 LED 动态显示电路 .7 2.5 时钟芯片 DS1302 .11 2.6 电路原理.14 3 软件设计.15 3.1 设计思路.15 3.2 主程序模块 .15 3.3 显示程序模块 .17 3.4 DS1302 的写时钟程序模块 .18 3.5 按键程序模块 .19 3.6 定时器程序模块.20 4 系 统 调 试.

5、23 结 论.26 致 谢.27 参考文献.28 附 录 A .29 1 前言 随着半导体集成工艺的不断发展,单片机的集成度将更高、体积将更小、功能 将更强。在单片机家族中,80C51 系列是其中的佼佼者,加之 Intel 公司将其 MCS 51 系列中的 80C51 内核使用权以专利互换或出售形式转让给全世界许多著名 IC 制造厂商,如 Philips、 NEC、Atmel、AMD、华邦等,这些公司都在保持与 80C51 单片机兼容的基础上改善了 80C51 的许多特性。这样,80C51 就变成有众多制造厂 商支持的、发展出上百品种的大家族,现统称为 80C51 系列。80C51 单片机已成

6、为 单片机发展的主流。专家认为,虽然世界上的 MCU 品种繁多,功能各异,开发装置 也互不兼容,但是客观发展表明,80C51 可能最终形成事实上的标准 MCU 芯片。 本设计采用的是 ATMEL 公司的 AT89C51 芯片,此芯片根据了充分的静止 CMOS 控制器与三级节目记忆锁,共有:32 条 I/O 线, 2 定时计数器, 6 个中断来源, 4 K 闪存, 128 个字节在芯片 RAM。 由于本设计所做的是一个自动报时系统简单,所以要用到单片机的最小应用系 统模块 1,还需要用独立式键盘和动态显示模块。 而我的硬件设计详见第二章,主要介绍了需要哪几部分硬件电路和硬件系统的 概叙。在 2.

7、1 节介绍了主要的硬件框架;2.2 节简单的介绍了单片机最小应用系统 的性能和附属电路;2.3 节详细介绍了键盘控制电路;2.4 节介绍了动态显示电路。 2.5 介绍了 DS1302 芯片。在第三章中我们详细的解说了软件系统的设计。3.1 节介 绍了我们做这个设计的程序设计思路;3.2 节介绍了主程序模块及其框图;3.3 节介 绍了显示程序模块及其框图。第四章是我对此设计的调试过程和结果显示。第五章 就是我对此设计的总体概括,体会和心得。 我所设计的这个自动报时系统简单,实用性强,成本低,使用维护方便,软件 功能强,运行稳定可靠等优点。 2 硬件系统设计 2.12.1 总体框图设计总体框图设计

8、 我所设计的是一个自动报时系统,自动报时系统用到的单片机芯片是 AT89C51 芯片,除此之外还包括:晶振电路和复位电路构成单片机最小应用系统;还有独立 式按键电路;动态显示电路等等;总体设计框图如图 2.1 所示。 AT89C51 LED 动 态 显 示 蜂 鸣 器 按键电路 89 路 晶振电路 DS130 芯片电路 复位电路 图 2.1总体设计框图 2.22.2 单片机单片机选型选型 2.2.1 AT89C51 的特点的特点 AT89C51 是一种带 4K 字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Mem

9、ory)的低电压,高性能、CMOS、8 位 单片机。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS- 51 指令集和输出管脚相兼容。AT89C51 的管脚图如图 2.2 所示。 图 2.2 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、低功耗的闲置和

10、掉电模式 13、片内振荡器和时钟电路 2.2.2 单片机附属电路单片机附属电路 单片机附属电路主要有晶体振荡电路和复位电路。 一、晶体振荡电路 1晶体振荡器的作用 石英晶体振荡器也称石英晶体谐振器,它用来稳定频率 和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。 2本设计所用的晶体振荡电路如图2.3所示: C1 33P C2 33P Y1 12MHz X1 X2 图2.3 晶体振荡电路 此晶振电路所选用的石英晶振频率为12MHZ。 时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个

11、最基本的动作。对于某种单片机,若采用了 1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为 0.25us。由于时钟脉冲是单片机的基本工作脉冲,它控制着单片机的工作节奏(使 单片机的每一步都统一到它的步调上来)。显然,对同一种机型的单片机,时钟频 率越高,单片机的工作速度就越快。但是,由于不同的单片机的硬件电路和器件不 完全相同,所以其需要的时钟频率范围也不相同。我们学习的51系列单片机的时钟 范围是1.2MHz-12MHz。 二、复位电路 单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从 这个状态开始工作,例如复位后PC0000H,使单片机从

12、第个单元取指令。无论是 在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以我们必须 弄清楚MCS-51型单片机复位的条件、复位电路和复位后状态。 单片机复位的条件是:必须使RST/Vpd或RST引脚加上持续两个机器周期(即24个 振荡周期)的高电平。例如,若时钟频率为12MHz,每机器周期为1us,则只需2us以 上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常用 的复位电路如图2.4(a)和图2.4(b)所示: C3 10uF S1 SW-PB R11 1K R10 100 VCC +5V RESET (a) R1 200 R2 1K C122us V

13、CC RESET VCC VSS RESET M CS-51 (b) 图2.4(a) 复位电路 图2.4(b) 与单片机相连的复位电路 图2.4(a) 复位电路,其电阻阻值的选择和电容容量的选择都是经过计算的,而 最后计算的结果时间常数可以满足我们的需求。其计算过程如下: =0.7RC=0.710001010-6=0.7ms 此值远远大于2us,所以此复位电路可用。 图2.4(b)是我设计中用到的复位单路,为按键复位电路。该电路除具有上电复 位功能外,若要复位,只需按图中的RESET键,此时电源VCC经电阻R1、R2分压,在 RESET端产生复位高电平。 2.32.3 独立式按键控制电路独立式

14、按键控制电路 独立式键盘的接口电路:在单片机应用系统中,有时只需要几个简单的按键向 系统输入信息。这时,可将每个按键直接接在一根 I/O 接口线上,这种连接方式的 键盘称为独立式键盘。如图 2.5 所示,每个独立按键单独占有一根 I/O 接口线,每 根 I/O 接口线的工作状态不会影响到其他 I/O 接口线。这种按键接口电路配置灵活, 硬件结构简单,但每个按键必须占用一根 I/O 线,I/O 接口线浪费较大。故只在按 键数量不多时采用这种按键电路。 在此电路中,按键输入都采用低电平有效。上拉电阻保证了按键断开时,I/O 接口线有确定的高电平。当 I/O 接口内部有上拉电阻时,外电路可以不配置上

15、拉电 阻。独立式按键具体在自动报时系统中的应用,在 2.3.1 中有详细介绍。 . 图 2.5 独立式键盘电路 2.3.1 自动报时系统的按键接口及功能工作原理自动报时系统的按键接口及功能工作原理 在自动报时系统中采用 4 个独立的键盘,其中一个为功能键;一个为数字调整 键;一个为取消设置键,用来设定时间;一个为 ALM 键,用来设定定时时间。按键 的接口由 P1.7、P1.6、P1.5、P1.5、P1.4 来完成。 1时间调整:按下功能键,系统停止计时显示,进入时间设定状态,系统只显 示小时的内容,其余 4 位 LED 处于全暗状态,等待按键设置。此时按动数字调整键 后小时将会加 1,按动取

16、消键后又重新回到原来的时间显示状态;若再按动功能键 则用来调整分钟,此时小时和秒的 4 位 LED 指示全暗,按数字调整键后可以对分钟 增 1 调整,按动取消键后又重新回到原来的时间显示状态;再按动功能键则用来调 整秒,此时小时和分钟的 4 位 LED 指示全暗,秒显示当前的秒数,暗数字调整键可 以对秒进行增 1 调整,按动取消键后又重新回到原来的时间显示状态,按动功能键 后系统将自动由设定后的时间开始计时显示。 2闹钟设置/启闹:按下 ALM 键,系统继续计时,但显示为 00:00:00,此时再 按动功能键后进入闹钟设置状态,设置过程和时间调整相同,但是最后按功能键确 定后显示定时时间 30

17、S 后自动启动定时闹钟功能,并恢复时间显示。定时时间到, 蜂鸣器鸣叫 1min 后自动停闹,每次设置时只能定一次,下次需重新设置。 2.3.2 按键开关的去除抖动功能按键开关的去除抖动功能 目前,MCS51 单片机应用系统上的按键常采用机械触点式按键,它在断开、 闭合时输入电压波形如图 2.6 所示.可以看出机械触点在闭合及断开瞬间均有抖动过 程,时间长短与开关的机械特性有关,一般为 510ms。由于抖动,会造成被查询的 开关状态无法准确读出。例如,一次按键产生的正确开关状态,由于键的抖动,CPU 多次采集到底电平信号,会被误认为按键被多次按下,就会多次进行键输入操作, 这是不允许的。为了保证

18、 CPU 对键的一次闭合仅在按键稳定时作一次键输入处理, 必须消除产生的前沿(后沿)抖动影响。所以我在软件设计中作了相应设计。 后沿前沿识别区 按键过程 图 2.6 按键过程 2.42.4 LEDLED 动态显示电路动态显示电路 2.4.1 数码管简介数码管简介 1 数码管结构 数码管由 8 个发光二极管(以下简称字段)构成,通过不同的组合可用来显示数 字 0 9、字符 A F 及小数点“” 。数码管的外形结构如图 2.7(a)所示。数码 管又分为共阴极和共阳极两种结构,分别如图 2.7(b)和图 2.7(c)所示。 R8R8 +5V a b c d e f g dp a b c d e f

19、g dp e 1 d 2 GND 3 c 4 dp 5 b 6 a 7 GND 8 f 9 g 10 dp a b c d e f g (a)(b)(c) (a) 外型结构;(b) 共阴极;(c)共阳极 图 2.7 数码管结构图 2 数码管工作原理 由于我们采用的是共阴极数码管,所以介绍共阴极数码管的工作原理如下: 共阴极数码管的 8 个发光二极管的阴极(二极管负端)连接在一起。通常,公 共阴极接低电平(一般接地) ,其它管脚接段驱动电路输出端。当某段驱动电路的输 出端为高电平时,则该端所连接的字段导通并点亮。根据发光字段的不同组合可显 示出各种数字或字符。此时,要求段驱动电路能吸收额定的段导

20、通电流,还需根据 外接电源及额定段导通电流来确定相应的限流电阻。 共阳极数码管的工作原理与共阴极的正好相反。 3 数码管字形编码 要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。 LED 显示字型码表见表 2.1: 表 2.1 LED 显示字型码表 显示字符共阴极共阳极显示字符共阴极共阳极 03FHC0H96FH90H 106HF9HA77H88H 25BHA4HB7CH83H 34FHB0HC39HC6H 466H99HD5EHA1H 56DH92HE79H86H 67DH82HF71H8EH 707HF8H 87FH80H 2.4.2 显示的种类 1 静态显示概念 静态

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

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

23、时间。 我们这个设计所使用的显示属于动态显示,其显示电路图形如图2.8所示: . 图2.8 动态显示电路 显示器由6个共阴极数码管组成。同时采用动态扫描方式依次循环点亮数码管, 即构成多位动态显示电路。图中,6位数码管均采用共阴极LED,P0接口外接8路反相 三态缓冲器74LS240作LED动态扫描的段码控制驱动信号,用P1接口的P1.0-P1.3外接 一片集电极开路反相门电路74LS07做为8位LED的位选信号驱动口, LED共阴极端与 74LS06的输出端相连。 74LS240的功能 74LS240 是原码三态输出的 8 缓冲数码驱动器,其管脚分布图如图 2.9 所示,G 为控制端,又称为

24、使能端其工作原理如下: 当 G=0 时,A 输入为低电平时,Y 输出也为低电平。 当 G=0 时,A 输入为高电平时, Y 输出为高电平。 当 G=1 时,A 不论输入高电平还是低电平 Y 为高阻状态。 图 2.9 74LS240 管脚图 74LS06 的功能 74LS06 是六缓冲的数码驱动器,它是有 6 个集电极开路的非门所组成,当使能 端为低电平时,输入为高电平时输出也为高电平,当输入为低电平时输出也为低电 平,其逻辑表达式为:Y=A 。 2.52.5 时钟芯片时钟芯片 DS1302DS1302 2.5.1 DS1302 芯片具有以下特点芯片具有以下特点 1、实时时钟/日历:实时时钟/日

25、历提供秒、分、时日星期月和年等信息,每月 天数以及闰年能自动调整,时钟可以才用 24h 或 AM/PM 的 12h 格式。 2、31 字节的静态 RAM:用于存储数据。 3、带慢速充电控制备份电源的充电特性。 4、简单的三线串行接口:该芯片使用同步串行通信。与时钟/RAM 通信供需 3 根线:复位、数据线、串行时钟。数据可以以每次 1 个字节的形式传送到时钟/RAM 或从其读出。 2.5.2 它的引脚图和引脚功能 DS1302 的引脚结构见图 2.10,引脚功见 表 2.2。 图 2.10 DS1302 引脚图 1 2 3 4 8 7 6 5 表 2.2 DS1302 的引脚功能 2.5.3

26、DS1302 的工作原理 1、DS1302 组成:串行时钟芯片主要由移位寄存器、控制逻辑、振荡器、实时 时钟、RAM、电源组成,如图 2.11 所示。 电源控制 输入寄存 器 实时时钟 命令控制 逻辑 地址总线 数据总线 振荡及分频器 图 2.11 DS1302 内部结构组成 入移位寄存器;其 2、复位时钟:为了初始化任何的数据传送,通过把 RST 输 入驱至高电平来启动所有的数据传送。RST 有两种功能,首先,RST 接通控制逻辑, 允许地址/命令序列送次,RST 提供了单字节或多字节数据传送的手段。时钟 SCLK 是上升沿后继以下降沿的序列。数据输入时,在时钟的上升沿前必须有效,而数据 位

27、在时钟的下降沿之后输出。如果 RST 输入为低电平,则 I/O 引脚变为高阻状态, 终止数据传输。通电时,VCC2.5V,RST 由 0 至 1 状态时,SCKL 必须为逻辑 0。 引脚号引脚名称功能 1Vcc2 主电源 2、3 X1、X2 32.768KHZ 晶振接口 4 GND地 5RST 复位兼片选端 6 I/O 串行数据输入/输出 7 SCLK 串行时钟输入端 8 Vcc1 后备电源 3、操作方式:芯片的操作受地址/命令字节控制,每一组数据的传送由命令字 节初始化。地址/命令字节格式如图 2.12 所示。 位 7 必须为逻辑 1,如果它是 0,禁止写 DS1302;位 6 逻辑 0,指

28、定为时钟/日 历数据,为逻辑 1,指定为 RAM 数据;位 15 指定输入或输出的寄存器单元地址; 位 0 指定输入/输出数据。命令字节总是从最低有效位开始输入。 4、数据输入:当命令字节为写命令时,最低位为 0,在下 8 个 SCLK 周期的上 升沿输入字节,数据从最低位开始输入;数据输出:当命令字节为读命令时,最低 位为 1,在下 8 个 SCLK 周期的下降沿输出数据字节。这时被传送的第一数据为发生 在命令字节的最后一位之后的第一个下降沿,所以,在非多字节方式,每次读或写 的脉冲个数为 16 个,前 8 个为命令脉冲,后 8 个为读或写的脉冲。这样在单字节传 送数据时,每次命令为 16

29、个脉冲即可完成,多余的脉冲将忽略不计。通过对地址 31 寻址,可以把时钟/日历或 RAM 寄存器规定为多字节读写方式,读或写仍从地址 0 单元的最低位开始。当以多字节方式写时钟寄存器时,必须按数据的次序写最先 的 8 个寄存器。这样 8 个时钟字节的读或写共需 72 个脉冲时钟,31 个 RAM 的读或 写共需 256 脉冲时钟。其时序如图 2.13 所示: a.DS1302的读时序 .DS1302的写时序 图 2.13 DS1302 的时序 2.62.6 电路原理电路原理 电路的核心是 89C51 单片机,其内部带有 4KB 的 FlashROM,无须扩展程序存储 器;电脑没有大量的运算和暂

30、存数据,现有的 128B 片内 RAM 已能满足要求,也不必 扩展片外 RAM。系统配备 6 位 LED 显示和 4 个单接口键盘,采用 P0 接口外接 8 路反 相三态缓冲器 74LS240 作 LED 动态扫描的段码控制驱动信号,用 P2 接口的 P2.0- P2.5 外接一片集电极开路反相门电路 74LS06 做为 6 位 LED 的位选信号驱动口, 6 个数码管的 8 根段选线分别与 74LS06 的输出端相连;LED 共阴极端与 7406 的输出 端相连;按键接口由 P1.7、P1.6、P1.5、P1.4 来完成。DS1302 实时时钟芯片接口 由 P1.0、P1.1、P1.2 来控

31、制,P3 口接闹钟小喇叭。其硬件原理总图见附录 A。 3 软件设计 3.13.1 设计思路设计思路 因为我做的是自动报时系统,它需要具有校时,调时,定时,闹钟,等功能, 而且用到了 DS1302 芯片,此芯片具有自动记时功能所以编写程序简单。 所以我们考虑到用单片机语言来做我们的设计。对于程序我们的设计思路是: 1在此设计中用定时器来完成动态扫描显示。用定时器T0定2ms的时间间隔, 每次定时时间到时就输出一个LED信号,即显示一位。定时器每中断6次后循环到第 一位LED显示。这样动态显示占用CPU的时间只有输出段码和输出位码的有限时间, 提高了CPU的工作效率。 2. 要有主程序程序。 3本

32、设计使用按键来对DS1302写入时间校时,对时,设定时间的,所以要有 DS1302的写时钟程序。 4系统资源分配: 1)定时器:定时器T0用做显示定时,按方式1工作,每隔2ms溢出中断一次。 2)片内RAM及标志位的分配: a)显示缓冲区:使用(30H35H)6个RAM作LED的显示缓冲区,每一个缓冲 区对应一个LED,在定时时间到时就把6个缓冲区中的数送给相应的LED显示。 b)时间缓冲区:使用(36H3BH)6个RAM来保存当前从DS1302中读出来的 时间,在主程序运行时大约每一秒钟把其中的数据更新到显示缓冲区用以显示。 c)定时缓冲区:使用(40H45H)6个RAM保存设定的定时时间,

33、并在时间 缓冲区的内容更新的同时进行比较,若相同则表明定时时间到了,开始调用报 时子程序。 3.23.2 主程序模块主程序模块 主程序与按键控制,读时间并对定时时间进行判断。主程序初始化后,就开始 进行对 DS1302 的读时间;读完后送显示缓冲区,同时并对定时时间进行判断比较; 然后开始依次扫描 4 个按键来判别是否进入相应的按键子程序中;再对 DS1302 读时 间完成主循环程序。流程图如下: 开始 主程序初始化 对读时间 显示缓冲区 按键扫描 图 3.1 主程序流程图 LCALL KEY-SET LCALL ALM- SET LCALL ALM MOV ADDR-1302,#85H LC

34、ALL READ-CLOCK MOV A,DATA-1302 ANL A,#10H MOV 36H,A MOV A,DATA-1302 ANL A,#0FH MOV 37H,A MOV ADDR-1302,#83H LCALL READ-CLOCK MOV A,DATA-1302 ANL A,#0F0H MOV 38H,A MOV A,DATA-1302 ANL A,#0FH MOV 39H,A MOV ADDR-1302,#81H LCALL READ-CLOCK MOV A,DATA-1302 ANL A,#70H MOV 3AH,A MOV A,DATA-1302 ANL A,#OFH

35、MOV 3BH,A MOV R4,#6 3.33.3 显示程序模块显示程序模块 显示程序采用动态显示,由位码控制那一个数码管显示,由段码控制数码管显 示什么数值,根据中断程序显示时间来查表显示数值,从第一位到第六位逐个点亮, 同时每显示一位判断一次六位显示完了吗?没有显示完进行显示下一位,显示完了 从头开始再循环。显示子程序的流程图如图 3.2 所示: 输出一位段码 段码左移一位 取段码 地址指针设置 输出一个位移脉冲 取位码结束 取段码结束 子程序返回 开始 图 3.2 显示子程序流程图 DESPLAY:MOV R2 ,#01H ;将位码送 R2 MOV R0,#30 ;将段码送 R0 NE

36、XT3: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 中 INC R0 ;指向 31H LJMP NEXT3 U2:RET ;显示返回 3.43.4 DS1302DS1302 的写时钟程序模块的写时钟程序模块 DS1302 的写时程序: WRITE-CLOCK: NOP ;DS1302 的写时钟程序,入口:ADDR-13

37、02 作地址 :DATA-1302 作数据 ;功能:在 ADDR 地址单元中写入 DATA 数据 CLR CLK CLK RST; NOP SETB RST MOV R3,ADDR-1302 LCALL CLOCK-OUT MOV R3,DATA-1302 LCALL CLOCK-OUT CLR RST SETB CLK RST 3.53.5 按键程序模块按键程序模块 进入按键程序,判断有键按下吗?没有,则调用延时重新判断,如果到了,调 用延时去抖程序,再次判断有键按下否,没有则返回延时程序,如果有按键,则判 断键号,堆栈,判断键是否释放,没有,继续判断,释放了,则输入键号送往累加 器,然后返

38、回主程序。 开始 返回 输入键号 闭合键释放否 判断闭合键键 有键闭合否? 调用子程序 调用子程序 有键闭合否? 栈 秒 秒 延时 延时12 号 图 3.3 按键程序流程图 KEY: ACALL KS ;调用 KS 判断有键按下吗 JNZ K1 ;有键按下则转移 ACALL DL6ms ;无键按下则调用延时子程序 AJMP KEY ;延时返回 K1:ACALL DL6ms ;调用延时程序 、 、 、 3.63.6 定时器程序模块定时器程序模块 为定时器 T0 中断服务子程序,主要是完成循环显示。 定时器 T0 每隔 2ms 溢出中断一次,则循环中断 6 次,循环点亮 6 个 LED 数码 管各

39、一次。系统使用 12MHZ 的晶振,定时器 0 工作方式 1,则 2ms 定时对应的定 时器初值可有下式计算得到: 定时时间=(216定时器 T0 初值)(12/振荡周期) 因此,定时器 T0 初值=0F830H,即 TH0=0F8H,TL0=30H,当系统使用其他频 率的晶振时,也可以由以上式计算相应的定时器 T0 处治。 如单片机的主脉冲频率为,经过分频 方式 0定时时间213 1 微秒8.192 毫秒 方式 1定时时间216 1 微秒65.536 毫秒 秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合 的办法才能解决这个问题,定时器需定时 50 毫秒,故0 工作于方式

40、 1,定时 20 次, 就可定时一秒。 定时器程序: T0-TIMER:NOP PUSH ACC PUSH PSW SETB RS0 DJNZ DIS-COUNT,T0-TIMER1 MOV DIS- COUNT ,#6 MOV DUAN-ADDR,#30H MOV WEI MA,#00100000B T0-TIMER1:NOP MOV R0,DUAN-ADDR MOV P2,#0 MOV A,R0 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A MOV P2,WEI-MA INC R0 MOV A,WEI-MA RR A MOV WEI-MA,A MOV TH0,#

41、0F8H MOV TL1,#30H POP PSW POP ACC 4 系 统 调 试 完成了硬件的设计、制作和软件编程之后,要使系统能够按设计意图正常运行, 必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过,作为一个 单片机系统,其运行是软硬件相结合的,因此,软硬件的调试也是绝对不可能分开 的。 程序的调式应一个模块一个模块地进行,单独调试各功能子程序,检验程序是 否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各个子程序连接 起来总调。联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子 程序的现场保护与恢复。调试的基本步骤如下: 1、通过伟福仿真软件和

42、Keil 软件来验证程序。打开伟福软件模拟器,首先进 行仿真器设置,如下图 4.1、4.2 所示:选择 E6000/L 仿真器POD-8ISIP 仿真头 选择 8751CPU。然后再进行通信设置、目标文件以及语言的设置。最后点击“好” , 完成仿真器的设置。 图 4.1 图 4.2 2、在伟福软件中输入程序,进行编译,有好几处错误程序没有通过编译,然后 我就查找错误的所在,一一更改之后终于通过编译,如下图 4.3 所示: 图 4.3 3、对编译通过的程序进行跟踪执行,看执行结果,如下图所示: 图 4.4 4、在伟福内调试通过以后,进入KEIL软件编辑器,对程序进行下载运行,并 连接试验箱,查看

43、实验效果。在Keil中下载到实验箱上进行验证,显现出所要求的 效果。而在Keil中也要进行一些参数的设置,首先打开Keil仿真软件,首先要新建 一个项目,点菜单ProjectNew Project,在弹出的对话框中选择保存的路径并输 入项目名称“qqqq”后保存,然后在弹出新的项目窗口中选择参数,其参数的设置 如下,由于我们使用的是Atmel公司的芯片,所以要选Atmel后确定。如图4.5所示: 图4.5 在弹出的对话框中选择AT89C51这个芯片,确定。如图4.6所示: 图4.6 结 论 经过这段时间的设计,终于完成了我的设计,虽然只是一个非常简单的自动报 时系统,我可是经过了一翻很大的努力

44、才完全达到设计要求的,从心底里说,还是 挺高兴的,毕竟这次设计所要求的东西都做了出来,然而高兴之余不得不深思呀! 本设计采用 AT89C51 单片机的设计,计以单片机为核心部件的自动报时系统, 利用 74LS244 作为断码驱动器,74LS07 作为位码驱动,LED 六断数码管作为计时显 示用,用发光二极管指示计时,用按键进行校时调整闹铃时间,使时间得到调整和 使闹铃开启和关闭。依据本论文设计以 89C51 单片机为核心的电子时钟,经过近 2 个月的设计,最后按设计要求终于在单片机实验箱上试验成功,选择不同的单片机, 可以组成具有较强抗干扰能力和运行可靠性的产品,其抗干扰能力虽然不如 PLC, 但 PLC 价格较贵,用单片机运行效果仍然令人满意,同时证明了本方案的正确性。 本电子时钟系统简单,实用性强,成本低,使用维护方便,软件功

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1