1、武汉理工大学能力拓展训练课程设计说明书 数字定时器设计 摘 要 单片机在 电子产品中的应用越来越广泛,特别是 51 系列的单片机,由于其使用方便、价格低廉等优势,在市场上占有很大的份额。 AT89S52 就是 51 系列中的一个比较成熟的型号,它完全兼容 51 单片机的指令。 本文详细介绍了基于 AT89S52 单片机的数字 电子 钟的设计 ,本电子钟可以实现日期、时间的显示和调整,带有整点提示和一个闹钟,并且可以显示当前气温。 本设计包括硬件设计和软件设计两部分 。 主要硬件有: 三端稳压器 LM7805、AT89S52 单片机、 字符型液晶显示模块 HY1602A 和若干按键 等 。 软
2、件大致思路为:使用 12MHz 的晶振,单片机内部的定时器 0工作在方式 1,每计数 50000 个机器周期(即 50ms)产生一次中断,中断 20 次就是一秒,这样就可以实现精确计时的目的,不断扫描按键, 如果有按键按下,则 对按键做出 相应的响应 。 关键字:单片机; 电子钟; LCD1602; 武汉理工大学能力拓展训练课程设计说明书 Abstract MCU in the application of electronic products becomes more widely, particularly the 51 series of MCU, because of its eas
3、e of use, low prices and other advantages,it s in a large market share. AT89S52 is a more mature models in the 51series, it is fully compatible with the directive MCU 51. This paper describes the MCU based on the AT89S52 the design of digital electronic clock, the electronic clock can be achieved da
4、te, time and adjust the show, it also has the exact point timekeeping and a clock,for the better it can display the current temperature. The design includes hardware and software design in two parts. Main hardware: AT89S52 MCU, character LCD module HY1602A, a number of buttons. the general idea for
5、Software: by use of 12 MHz crystal, the MCUs internal timer 0 works in the methods 1, each count 50,000 machine cycle (50 ms) resulted in an interruption, Composition a second by interruptting 20 times, so that you can achieve precise The purpose of time. it will be displayed the real-time data on t
6、he LCD1602 at the same time, and constantly scan button, if a button is depressed, it will be produce the corresponding response with the button. Keywords: MCU; electronic clock; LCD1602; 武汉理工大学能力拓展训练课程设计说明书 目 录 1 设计方案 . 1 1.1 设计要求 . 1 1.2 设计方案论证 . 1 2 硬件设计 . 2 2.1 器件选型 . 2 2.2 器件介绍 . 3 2.2.1 单片机 AT
7、89S52 . 3 2.2.2 LCD1602 显示模块 . 4 3 软件设计 . 5 3.1 软件设计思路 . 5 3.1.1 实现功能 . 5 3.1.2 编程思路 . 6 3.1.3 操作及功能介绍 . 6 3.2 主程序流程图 . 7 4 仿真图 . 8 5 设计体会及小结 . 9 参考文献 . 10 附录 1 硬件电路设计图 . 11 附录 2 主程序 . 12 武汉理工大学能力拓展训练课程设计说明书 1 1 设计方案 1.1 设计要求 用 AT89S52 单片机,在 1602LCD 上显示年月日、星期、时分秒 设计数字钟,内有 4 组可设置的定时开 /关,控制一路开关量输出。定时开
8、关的设置分为单次操作 (2011 年 6 月 25 日 8: 00 开 2011 年 6 月 26 日 18: 00 关 ),周期操作(如周三 8: 00 开,周四 16: 00 关)。数码管显示时间(单位秒)与设置值(单位分钟),用发光二极管表示周期与单次操作。 具备整点提示功能,提示音为蜂鸣器发出“滴滴”声。 具备闹钟功能,闹铃方式为蜂鸣器持续响 10 秒钟,或者用按键手动关闭响铃 和输出量 。可以用键盘调整时间、设定 开关时间 。 1.2 设计 方案论证 本设计 是纯粹的应用性设计, 主要以实现计时、定时、温度显示等功能为最终目的。设计 以 Atmel 公司的 AT89S52 为核心,
9、在最小系统的基础上扩展键盘,数字温度计, 以及 LCD 显示模块,硬件设计简单节 约,其功能的实现主要靠软件设计,所以软件在本设计中是最为重要的,在计时设计思路上有两种方案可以选取。 方案一:选用外部时钟芯片,单片机只负责其数据的存取读写以及外部辅助电路的扩展, 这种方案的优点是计时准确,软件编写相对简单,但其要求对其芯片必须要有比较深的了解 方案二:利用单片机的内部时钟和定时器进行计数,这种方案电路简单,容易实现,但时间容易丢失,且长时间计数会有误差,而且软件编写也相对复杂。 考虑到本次设计的目的,采用方案二,并加入了 年月日的扩展 , 由于时间2 和精力有限年月日只是进行简单的模拟,没有精
10、确的进行计算。只是 进行适当的扩展。 本设计包括硬件设计和软件设计两部分。主要硬件有 AT89S52 单片机、字符型液晶显示模块 HY1602A 和若干按键等。软件大致思路为:使用 12MHz的晶振 ,单片机内部的定时器 0 工作在方式 1,每计数 50000 个机器周期(即 50ms)产生一次中断,中断 20 次就是一秒,这样就可以实现精确计时的目的 。在把实时数据显示在 LCD1602 上的同时,不断扫描按键,如果有按键按下,则对按键做出相应的响应。 2 硬件设计 2.1 器件选型 本设计选取 主控 MCU 为 Atmel公司的 AT89S52,显示器件选择市面上常见的 字符型液晶显示模块
11、 HY1602A。 图 2-1 硬件连接总图 3 2.2 器件介绍 2.2.1 单片机 AT89S52 一、功能特性描述 AT89S52 是一种低功耗、高 性能 CMOS 8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 二、外部引脚图 如图 2-2 为单片机 AT89S52 的引脚
12、图。 图 2-2AT89S52 引脚图 4 2.2.2 LCD1602 显示模块 一、 LCD1602 概述 字符型型液晶是一种用 5 7 点阵图形来显示字符的液晶显示器,根据显示的容量可以分为 1 行 16 个字、 2 行 16 个字、 2 行 20 个字等,最常用的为 2 行16 个字 。 本设计所采用的 LCD1602 即 为 最常用的 2 行 16 个字。 下面是 HY1602A 液晶模块的一些主要技术参数: 1、逻辑工作电压( VDD): +4.5 +5.5V 2、 LCD 驱动电压( VDD-VL): +4.5 +13.0V 3、工作温度( Ta): 0 60 (常温) /-20
13、75 (宽温) 4、工作电流: 2.0mA 二、引脚 图及功能 介绍 本设计使用带 背光的液晶模块 1602 采用标准的 16 脚接口, 如图 2-3, 其引脚功能如下: 图 2-3 LCD1602 引脚图 第 1 脚: VSS 为电源地,接 GND。 第 2 脚: VDD 接 5V 正电源。 第 3 脚: VEE 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。 5 第 4 脚: RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第 5 脚: RW 为读写信号线,高电平时进行读
14、操作,低电平时进行写操作。当 RS 和 RW 共同为低电平时可以 写入指令或者显示地址,当 RS 为低电平 RW为高电平时可以读忙信号,当 RS 为高电平 RW 为低电平时可以写入数据。 第 6 脚: E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 7 14 脚: D0 D7 为 8 位双向数据线。 第 15 脚: BLA 背光电源正极 (+5V)输入引脚 (本图未显示) 。 第 16 脚: BLK 背光电源负极,接 GND(本图未显示) 。 注意:液晶模块背光须消耗电流约为 50mA 左右 。 3 软件设计 3.1 软件设计思路 3.1.1 实现功能 用 AT89S
15、52 单片机,在 1602LCD 上显示年月日 、星期、时分秒 。 内有 4组可设置的定时开 /关,控制一路开关量输出。定时开关的设置分为单次操作(2011 年 6 月 25 日 8: 00 开 2011 年 6 月 26 日 18: 00 关 ),周期操作(如周三 8:00 开,周四 16: 00 关)。 具备闹钟 和时间段的设定 功能,闹铃方式为蜂鸣器持续响 10 秒钟,或者用按键手动关闭响铃。可以用键盘调整时间、设定 开关时间和方式 。 复位时间是 2011 年 1 月 1 日 00:00:00。 6 3.1.2 编程思路 1. 给以下变量赋初值:年 (Year)、月 (Month)、日
16、 (Day)、时 (Hour)、分 (Min)、秒 (Sec)。 2. 因为晶振频率为 12MHz,所以计数频率为 12MHz/12=1MHz,这就需要计数器 0 计数 1000000 次才可以达到一秒钟。我们用定时器 0 工作在方式 1 状态,每次计数 50000 次,如此进行 20 次,即可凑够一秒钟。这样可以得到初始化定时器的控制字: TMOD=0x01, 计数初值 65536-50000=15536 即 0x3cb0, 这样就可以设计一个计数一秒的函数 。 3. 读相应变量的值,送入 LCD 显示时间等信息 。 4. 不断的扫描按键,并且响应按键输入。在进入设定模式后,所有时间变量被过
17、渡变量代替, 如果确认设置,则过渡变量赋给时间变量 , 如果取消设置,则还使用原时间变量。 3.1.3 操作及功能介绍 定时器能显示年月日、星期、时分秒。 内有 4 组可设置的定时开 /关,控制一路开关量输出。定时开关的设置分为单次操作 (2011 年 6 月 25 日 8: 00 开 2011年 6 月 26 日 18: 00 关 ),周期操作(如周三 8: 00 开,周四 16: 00 关)。 下面具体具体介绍按键和 LED 的功能: 1、 K1 为时间的小时设定键,按下后将进入时间的设定,按 K1 是对时间小时的设定 。 2、 K2 为时间的分钟设定键,当处于时间的调整时,按它可以对时间的分钟进行调整,当未处于时间调整时,按下第一次为开关量的开启时间,按下第二次为开关量的关闭时间。 3、 K3 为设定时间完成的退出键和进入开关量时间的设定键,但时间设置完成以后,按下 K3 键将进入正常的计时状态;当要进入定时任务时间设定时,