1、 西南科技大学本科生毕业论文 IV基于单片机的定时闹钟设计摘要:随着科技的快速发展和生活水平的不断提高,人们对时钟的精确度和实用性要求越来越高。本定时时钟系统使用单片机AT89S52为主控芯片,由时钟芯片DS1302提供实时时间,采用LCD1602显示日期、时间和星期等信息;系统提供4个按键供人机交互,用户可根据需要修改时间和设置定时闹钟;实时时间和定时闹钟设置的时间一致时,系统会通过蜂鸣器发出警报声。单片机数字钟不管在性能还是在样式上都发生了质的变化。关键字:定时闹钟; DS1302; LCD1602; AT89S52; 蜂鸣器Design of Alarm Clock Based on t
2、he AT89S52Abstract: With the rapid development of science and technology and the continuous improvement of living atandards,the requirement for precision and practicability of the clock is higher and higher. The timing alarm clock uses single-chip microcomputer AT89S52 as main control chip. Time is
3、provided by clock chip DS1302,and LCD1602 display information such an date,time,and week.The system provides four buttons for human-computer interaction. The user can modify the time and set the alarm clock timer when they need. The system will send out alarm through the buzzer when real time is the
4、 same as timing alarm.SCM digital clock have been greatly improved in performance and style. Key words: timing alarm clock, DS1302, LCD1602, AT89S52, buzzer目 录第1章 绪论11.1选题背景11.2选题的目的和意义11.3论文主要内容2第2章 系统总体设计32.1系统设计需求32.2 系统设计思想32.3系统软件设计42.4系统硬件需求4第3章 系统硬件设计63.1系统硬模块及功能63.2主控模块63.3时钟电路模块93.4液晶显示LCD1
5、13.5键控模块133.6 闹钟模块15第4章 系统软件设计174.1系统软件设计概述174.2主程序设计174.3单机片的中断系统174.4实时时钟模块184.5液晶显示模块234.6键盘模块254.7闹钟模块28第5章 系统测试315.1测试内容315.2测试环境315.3测试步骤315.4测试结果36结 论37致 谢38参考文献39 西南科技大学本科生毕业论文 第1章 绪论1.1选题背景随着大规模、超大规模集成电路技术的发展和计算机微型化的需要,把微型计算机的基本功能部件:中央处理器(CPU)、存储器、输入/输出接口、定时器/计数器、中断系统等多种资源集成在一个半导体芯片上,使得一块集成
6、电路芯片就能构成一个完整的微型计算机,这种集成电路芯片被称为单片微型计算机(Single Chip Microcomputer),简称单片机1。单片机技术发展十分迅速,产品种类也非常多。自从1975年美国德克萨斯仪器公司的第一个单片机TMS-1000问世以来,迄今为止单片机技术已成为计算机技术的一个独特分支,在众多领域尤其是在智能仪器仪表、检测和控制系统中有着广泛的应用1。随着科技的快速发展和生活水平的不断提高,人们对时钟的精确度和实用性要求越来越高。单片机数字时钟具有设置时间、日期、星期的基本功能,并且能够显示年、月、日、时、分、秒、星期。单片机数字钟不管在性能还是在样式上都发生了质的变化,
7、实践证明单片机数字时钟具有更加准确性、精密性等功能。 单片机具有集成度高、功能强、通用性好、特别是它能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域。1.2选题的目的和意义定时闹钟设计可采用数字电路实现,也可以采用单片机来完成。定时闹钟是用数字集成电路构成的,用数码管显示“时”,“分”,“秒”的现代计时装置。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的
8、实现主要通过软件编程来完成。那么就降低了硬件电路的复杂性,而且其成本也有所降低。1.3论文主要内容该论文研究的是基于单片机的定时闹钟设计。设计的主要内容有以下3点:1能正确显示年、月、日、时、分、秒和星期的信息。2能够校正当前时间。3能够设置闹铃时间,并在设定时间发出警报声。论文分别叙述从硬件和软件上实现该设计的过程。第3章主要介绍设计实现需要解决的硬件问题。依次介绍所使用的各种硬件的使用方法,并附上仿真电路图和文字说明。第4章从软件的角度说明实现该设计需要解决的问题。第2章 系统总体设计2.1系统设计需求系统要求实现以下功能:1当电源接通时,系统能正确显示当前时间。2当前时间和日期与实时时间
9、和日期有误差时,可以通过键盘调整当前时间和日期。3系统允许进行闹钟设置,开启闹钟功能时,当设置的闹钟时间与当前时间一致的时候,系统通过蜂鸣器发出警报声。2.2 系统设计思想1主控芯片选择方案一:AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用Atmel公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。方案二:AT89S52是一种低功耗、高性能CMOS 8位微控
10、制器,具有8K系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。另外,AT89S52可在线擦写,AT89C52不能。综上所述,选择AT89S52作为本设计的主控芯片。2时钟电路选择方案一:采用AT89S52芯片内部时钟为系统提供时间,但从长远计时来看,误差较大,走时不够精确,且不能提供日期星期等信息。方案二:采用DS1302实时时钟为系统提供准确的时间,以
11、及星期和日期等信息。长时间的走时比较精确,且编程简单。综上所述,采用方案二中的DS1302实时时钟芯片为系统提供时间、日期和星期等信息。3显示方式的选择方案一:LED数码管由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。主要用于楼体墙面,广告招牌,高档的DISCO、酒吧、夜总会、会所的门头广告牌等。方案二:液晶显示器,或称LCD,为平面超薄的显示设备,它由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。液晶显示器功耗很低,因此倍受工程师青睐。LCD显示比LED显示更加美观。 综上所述,采用显示友好的LCD为系统显示时间等信息。2.
12、3系统软件设计本设计在Keil编程环境下,使用C语言进行编程的编辑。编辑成功后,通过仿真软件Proteus进行仿真测试。系统从实时芯片DS1302指定地址中读取时间,并将数据发送至AT89S52,然后编写显示指令并将数据发送至液晶显示屏LCD1602显示。系统带有一个定时中断,定时中断每秒刷新液晶显示。当有按键被按下时,系统的外中断被触发。当设置闹钟的时候,系统持续从日历芯片DS1302读取时间但不在LCD上显示,而显示的是闹钟设置界面;当修改当前时间的时候,系统停止从DS1302读取时间。当系统时间重新设置完毕或闹钟时间设置完毕后,确定刚才操作,系统将修改后的时间从AT89S52写入DS13
13、02,并将闹钟时间存入缓存区,系统显示修改后的时间和日期。2.4系统硬件需求由章节2.2可知系统的主要硬件,另外,系统需要额外一些硬件,详细硬件清单如下:主控芯片:AT89S52时钟芯片:DS1302液晶显示屏:LCD1602闹钟提示:蜂鸣器人机交互:按键4晶振:12KHz1,32.678KHz1排阻:7408电容:30pf2,10uf1第3章 系统硬件设计3.1系统硬模块及功能 系统硬件模块主要分为以下几个模块: 1主控模块:控制其他子模块。 2实时时钟模块:为系统提供实时时间。 3液晶显示LCD模块:显示系统日期、时间和星期等信息。 4控键模块:用户通过控键进行人机交互,修改实时时间和设置
14、闹钟时间。 5闹钟模块:在所设闹钟时间发出警报声。3.2主控模块3.2.1主芯片AT89S52简介 AT89S52功能特性描述 AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8k在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器
15、,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保护,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。AT89S52的主要特性是:1与MCS-51单片机产品兼容28k字节在系统可编程Flash存储器31000次插写周期4全静态操作:0Hz33Hz5三级加密程序存储器632个可编程I/O口线73个16位定时器/计数器88个中断源9全双工UART串行通道1
16、0低功耗空闲和掉电模式11掉电后中断可唤醒12时器13指针14掉电标识符AT89S52引脚图如图3-1所示。图3-1 AT89S52引脚图3.2.2主控芯片电路设计包括时钟电路和复位电路。1.时钟电路利用芯片内部的振荡电路,在XTAL1、XTAL2的引脚上外接定时元件,内部振荡器便能产生自激振荡。定时元件可以采用石英晶体和电容组成的并联谐振电路,如图3-2所示。晶振可以在1.212MHZ之间任选,甚至可以达到24MHz,但是频率越高功耗也就越大。和晶振并联的电容C1、C2的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在2040pF之间选择2。在设计印刷电路板(PC
17、B)时,晶体和电容应尽可能与单机片芯片靠近,以减少引线的寄生电容,保证振荡器可靠工作2。2.复位电路复位是单片机的初始化操作。单片机启动运行时,都需要先复位,作用是使CPU和系统中其他部件处于一个确定的初始状态,并从这个状态开始工作。因此,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现。单片机通电时,从初始态开始执行程序,称为上电复位。单片机死机时,通过手工按“重启”键使其从初始态开始执行程序,称为手工复位。复位条件:复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,单片机就执行复位操作;但如果RST持续为高电平,单片机就处于循环复位
18、状态。图3-2 振荡电路仿真如图3-2所示,将一个手动开关与电阻串联后再和复位电容并联起来,当系统上电后,由于开关没有导通,还是一个基本的阻容复位电路,系统会可靠地复位。如果在调试过程中需要对系统进行复位,这时不需要断电再接通电源,只需要按一下复位开关即可。当复位开关按下后,电容被短路,在RESET脚上由于电阻分压会得到一个复位的高电平,达到复位效果。3.3时钟电路模块3.3.1时钟芯片DS1302简介 DS1302芯片是美国DALLAS公司推出的一种高性能、低功耗、带RAM的适时时钟芯片。它的实时时钟电路提供秒、分、时、日、月、周和年的信息。每月的天数和闰年的天数可自动调整,时钟操作可通过指
19、令设定为24或12小时格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信1。DS1302的性能特性11:1实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数。2用于高速数据暂存的318RAM。3最少引脚数的串行I/O。42.55.5V电压工作范围。52.5V时耗电小于300nA。6用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式。78引脚DIP或可选的用于表面安装的8引脚SOIC封装。8简单的3线接口。9TTL兼容。DS1302的引脚排列如图3-3所示。图3-3 DS1302引脚图DS1302引脚说明如表3-1。表3-1 DS1302引脚说明引脚号名
20、称功能1Vcc2电源输入22X132.768kHz晶振输入3X232.768kHz晶振输出4GND地5RST复位6I/O数据输入/输出7SCLK串行时钟8Vcc1电源输入13.3.2时钟电路设计DS1302慢速充电时钟芯片包括实时时钟/日历和31字节的静态RAM,它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月,月末的日期自动进行调整,还包括了闰年校正的功能。时钟的运行可以采用24小时或带AM(上午)/PM(下午)的12小时格式。使用同步串行通信,简化了DS1302与微处理器的通信2。与时钟/RAM通信仅需要3根线:1RST复位(实
21、际上是当作片选线使用)。2I/O数据线。3SCLK串行时钟。数据可以以每次一个字节或多达31字节的多字节形式传送至时钟/RAM或从其中送出。DS1302设计成能在非常低的功耗下工作,消耗小于1uW的功率便能保存数据和时钟信息2。时钟仿真电路图如图3-4所示。图3-4 时钟仿真电路时钟仿真电路接口说明:1Vcc1:与+5V电压输入端相连作为DS1302工作时的供电电源。2Vcc2:接地。3晶振:X1和X2直接和32.768kHz的晶振两端相连。4数字部分:SCLK、I/O、RST分别与AT89C52的P2.0、P2.1、P2.2引脚相连。3.4液晶显示LCD3.4.1 1602字符型LCD简介字
22、符型LCD专门用于显示数字、字母、图形符号及少量自定义符号。这类显示器把LCD控制器、点阵驱动器、字符存储器等做在一块板上,再与液晶屏一起组成一个显示模块。因此,这类显示器的安装与使用都非常简单。显示原理:液晶显示的原理是利用液晶的物理特性,通过电压对显示区域进行控制,只要输入所需的控制电压,就可以显示出字符。LCD能够显示字符的关键在于其控制器,目前大部分点阵型LCD都使用日立公司的HD44780集成电路作为控制器。HD44780是集驱动器与控制器于一体,专用于字符显示的液晶显示控制驱动集成电路。主要特点:1显示缓冲区及用户定义区的字符发生器CG RAM全部全部内藏在片内。2接口数据传输有8
23、位和4位两种传输模式。3具有简单而功能很强的指令集,可以实现字符的移动、闪烁等功能。HD44780的工作原理较为复杂,但它的应用却非常简单。只要将待显示字符的标准ASCII码放入内部数据显示用存储器(DD RAM),内部控制线路就会自动将字符传送到显示器上。例如,要LCD显示字符“A”,则只需将A的ASCII码41H存入DD RAM,控制线路就会通过HD44780的另一个部件字符产生器(CG ROM)将A的字型点阵数据找出来显示在LCD上。1602型LCD的主要技术参数如下:1显示容量:162个字符2芯片工作电压:4.55.5V3工作电流:2.0mA(5.0V)4模块最佳工作电压:5.0V5字
24、符尺寸:2.954.35(WH)mm1602型LCD引脚如图3-5所示:图3-5 1602型LCD引脚图引脚说明:引脚1(GND):电源地引脚2(VCC):电源正极引脚3(VL):反视度调整,使用可变电阻调整,通常接地引脚4(RS):寄存器选择,RS=1,选择数据寄存器;RS=0,选择指令寄存器引脚5(R/W):读/写选择。R/W=1,读;R/W=0,写引脚6(E):模块使能端,当E由高电平跳变成低电平时,液晶模块开始执行命令引脚7引脚14(D0D7):双向数据总线的第07位引脚15(BL+):背光显示器电源+5V(也可接地,此时无背光但不易发热)引脚16(BL-):背光显示器接地3.4.2L
25、CD仿真电路LCD仿真电路如图3-6所示。图3-6 LCD1602仿真电路图时钟仿真电路接口说明:1LCD1602的双向数据总线第07位(D0D7)分别与AT89S52的引脚P0.0P0.7相连。2脚RS接P2.7,RW接P2.6,E接P2.53引脚VDD接电源,引脚VSS和VEE均接地。3.5键控模块3.5.1键盘类型的选择键盘的常用类型有独立式键盘,行列式键盘。方案一:采用独立式键盘独立式键盘指每个按键按一对一的方式直接连接到I/O输入线上所构成的键盘。每一个按键对应AT89S52芯片的一个引脚,各键是相互独立的。应用时,由软件来识别键盘上的键是否被按下。当某个键被按下时,该键所对应口线将
26、由高电平变为低电平。反过来,如果检测到某口线为低电平,则可判断出该口线对应的按键被按下。所以,通过软件可判断出各按键是否被按下。对于按键直接编码的独立式键盘,单片机可以直接读取I/O口的工作状态,以获取键盘接口的直接状态值,根据状态值,就可以进行按键的识别。独立式键盘的结构简单,按键的识别比较容易10。独立式键盘的缺点是需要占用较多的I/O口线,当单片机应用系统中需要的按键比较少或者I/O口线比较富余时,可以采用这种类型的键盘10。方案二:采用行列式键盘 行列式键盘是使用n条I/O线作为行线,m条I/O线作为列线,组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样,键盘中按键的个数是
27、mn个。它适合于构成按键数目比较多的键盘。这种形式的键盘结构,能够有效地提高单片机系统中I/O引脚的利用率10。 由于行列式键盘的输入口的每条输入线都对应若干个按键,所以,不能像独立式键盘那样,靠键盘输入口的输入状态直接编码去识别按键,而需要更加复杂的按键编码10。 结合系统需求,由于系统只涉及4个按键,按键数量较少,加上独立式键盘编程灵活的优点,所以本系统采用独立式键盘为用户提供人机交互。独立式键盘中,键盘有几个按键,键盘接口就需要相应的使用几根I/O口线。在图3-7中,键盘接口使用了4根I/O口线,该键盘有4个按键。这种类型的键盘,由于键盘的按键比较少,且键盘中各个按键的工作互不干扰。因此
28、,可以根据实际需要对键盘中的按键进行灵活的编程。3.5.2键盘仿真电路图3-7 键盘仿真电路图键盘仿真电路接口说明:K1与AT89S52的引脚P1.0相连,K2接P1.1,K3接P1.2,K4接P1.5。3.6 闹钟模块3.6.1 蜂鸣器简介蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。市场上出售的一种小型蜂鸣器因其体积小(直径只有11mm)、重量轻、价格低、结构牢靠,而广泛地应用在各种需要发声的电器设备、电子制作和单片机等电路中。有
29、源蜂鸣器,高度9mm,而无源蜂鸣器的高度为8mm。蜂鸣器实物图如图3-8所示。长引脚为正极,短引脚为负极。图3-8 蜂鸣器实物图3.6.2 蜂鸣器仿真电路图3-9 蜂鸣器仿真电路仿真电路接口说明:蜂鸣器长引脚接P1.3,短引脚接地。第4章 系统软件设计4.1系统软件设计概述该部分主要分为实时时钟模块、液晶显示模块、键盘中断模块、闹钟模块。实时时钟部分主要包括实时时间的读写,时间和日期的修改。液晶显示模块主要包括显示屏的初始化,显示的命令字。键盘中断模块包括各键的定义和作用,按键的消抖,各按键跳转的子程序分配。闹钟模块包括闹钟时间的设置,以及对蜂鸣器启动和停止条件的设置和处理。4.2主程序设计主
30、程序包含三个部分。一是主函数部分,负责系统的初始化操作;从DS1302取得实时时间;判断闹钟时间是否与实时时间相等并在相等时发出警报声。第二部分是定时中断部分,分两种情况:负责处理从DS1302获得的时间数据并送至LCD1602显示缓冲显示,或者显示闹钟设置界面并显示闹钟时间的设置过程。第三部分是外部中断,主要定义4个按键的作用,分配每一个按键跳转的子程序。第三部分负责时间和日期的修改,闹钟时间的设置,停止蜂鸣器鸣叫的功能。4.3单机片的中断系统中断系统在单片机应用系统中起着十分重要的作用,是现代嵌入式控制系统广泛采用的一种适时控制技术,能对突发事件进行及时处理,从而大大提高系统对外部事件的处
31、理能力。正是有了中断技术,单片机才得以能够普及。因此,中断技术是单片机的一项重要技术,掌握中断技术能开发出灵活、高效的单机片应用系统。4.3.1 中断源要让单机片停止当前的程序去执行其他程序,需要向它发出请求信号,CPU接收到中断请求信号后才能产生中断。让CPU产生中断的信号称为中断源(又称中断请求源)4。单片机提供5个中断源,其中两个为外部中断请求源INT0(P3.2)和INT1(P3.3),两个片内定时器/计数器T0和T1的溢出请求中断源TF0和TF1,1个片内串行口发送或接收中断请求源T1和R14。4.3.2 中断的优先级别单片机内的CPU工作时,如果一个中断源向它发出中断请求信号,它就
32、会产生中断。但是,如果同时有两个中断源发出中断请求信号,CPU就会优先接收级别高的中断请求源,然后再接收优先级别低的中断请求。表4-1列出5个独立中断请求源由其硬件结构决定的自然优先级排列顺序4。表4-1 单片机中断源的自然优先级、入口地址及中断编号中断源自然优先级中断入口地址中断编号外部中断INT0高低0003H0定时器T0000BH1外部中断INT10013H2定时器T1001BH3串行口通信中断R1或T10023H4对应于单片机的5个独立中断源,应有相应的中断服务程序。这些中断服务程序有专门规定的存放位置,即表4-1的中断入口地址。当有了中断请求后,CPU可以根据入口地址迅速找到中断服务
33、程序并开始执行,大大提高执行效率4。4.4实时时钟模块4.4.1 DS1302数据操作原理DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个将被访问到。在开始8个时钟周期,把命令字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写操作时候写入数据。时钟脉冲的个数在单字节方式下为8+8,在多字节方式下为8+字节数,最大可达248字节数。如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,R
34、ST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。4.4.2 DS1302的命令字控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,表示存取日历时钟数据;为1表示存取RAM数据。位51(A4A0)指示操作单元的地址。最低有效位(位0)如果为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。DS1302的控制字如图4-1所示。图4-1 DS1302的控制字4.4.3 DS1302的内部结构实时的时间和日期信息都存放在DS1302内部寄存器中,通过读这些寄存器可以得到当前的时间和日期,通过写这些寄
35、存器可以设置时间和日期。编制驱动程序时注意:1 秒寄存器的地址为80H、81H,最高位CH是时钟启、停控制位。CH=0时,芯片开始计时工作;CH=1时,计时工作停止。在芯片上电时,寄存器没有定义,因此,在系统开始工作时,必须将该寄存器初始化,使CH=0,芯片才开始计时工作。2 分寄存器地址为82H83H,除bit=0外,其他与秒寄存器一致。3 时寄存器地址为84H85H,可选择12、24小时两种工作模式。当bit7=0,bit6=12/24=1时,是12小时工作模式,bit5=AM/PM=0时,是AM,等于1时是PM,bit4位一位是小时的十位,低4位为小时个位。当bit6=0时,bit56两
36、位是小时十位,低4位为小时个位。4 星期寄存器地址为8AH8BH,只使用低三位表示星期17.5 初上电时,所有的寄存器都没有定义,应当初始化。DS1302内部寄存器地址和内容如表4-2所示。表4-2 内部寄存器地址和内容寄存器名命令字节取值范围写读76543210秒寄存器80H81H0059CH10SECSEC分寄存器82H83H0059010MINMIN时寄存器84H85H0023或011212/24010A/PHRHR日期寄存器86H87H0128、29、30、310010DATEDATE月份寄存器88H89H01120000MONTH周寄存器8AH8BH010700000DAY年寄存器8
37、CH8DH009910YEARYEAR4.4.4 实时时钟程序由于使用了时钟芯片DS1302,实时时钟程序只需要从DS1302各个寄存器中读出年、周、月、日、时、分、秒等数据,再处理即可。在首次对DS1302进行操作前,必须对它进行初始化,然后从DS1302中读出数据,再经过处理后,送给显示缓冲单元。实时时钟程序流程图如图4-2所示。开始初始化DS1302DS1302开始振荡从DS1302中读出年、周、月、日、时、分、秒读出的数据都为BCD码,将其高低位分离,送显示缓冲单元图4-2 实时时钟程序流程图4.4.5 日期和时间调整程序利用键盘中断进行日期和时间的调整。首先按“选择键”选择当前想要修
38、改的项(年、月、日、时、分、秒)。选择后可以通过“加一键”增加当前项数值,或者通过“减一键”减少当前项的数值。另外,每进行一次“加一”或“减一”操作之后,系统就会向DS1302写入新时间,并在LCD上显示新时间。在对所有需要调整和设置的项都进行设置之后,按一次“选择键”退出设置界面,回到日期和时间的显示界面。日期和时间调整程序流程图如图4-3所示。NYNYYK1键(功能键)开始修改当前位?按K1键K2键(加“1”)K3键(减“1”)当前位设置完毕?(不再)结束N所有位设置完毕?(不再)图4-3 日期和时间调整程序流程图4.5液晶显示模块4.5.1 1602型LCD显示字符的过程要用1602型L
39、CD显示字符必须解决3个问题:1待显示字符ASCII标准码的产生;常用字符的标准ASCII码无须人工产生,在程序中定义字符常量或字符串常量时,C语言在编译后会自动产生其标准ASCII码,只要将生成的标准ASCII码通过单片机的I/O口送入数据显示用存储器(DD RAM),内部控制线路就会自动将字符传送到显示器上。2液晶显示模式的设置;要让液晶显示字符,必须对有无光标、光标的移动方向、光标是否闪烁及字符的移动方向等进行设置,才能获得所需的显示效果。常用的控制指令见表4-3。表4-3 1602液晶显示模式控制指令表指令名称指令功能指令的二进制代码D7D6D5D4D3D2D1D0显示模式设置设置为1
40、62显示,57点阵,8位数据接口00111000显示开/关及光标设置D=1,开显示;D=0,关显示C=1,显示光标;C=0,不显示光标B=1,光标闪烁;B=0,光标不闪烁00001DCB输入模式设置N=1,光标右移;N=0,光标左移S=1,文字移动有效;S=0,文字移动无效000001NS3字符显示位置的指定。1602型LCD内部地址如图4-4所示。1602型LCD字符显示位置的确定方法规定为“80H+地址码(00-0FH,40-4FH)”。例如要将某字符显示在第2行第6列,则确定地址的指令代码为80H+45H=C5H。图4-4 1602型LCD内部地址4.5.2 1602型LCD的读写操作L
41、CD是一个慢显示器件,所以在写每一条指令前一定要先读LCD的忙碌状态。如果LCD正忙于处理其他指令,就等待;如果不忙,再执行写指令。具体来说,显示一个字符的操作过程为“读状态写指令写数据自动显示”。1602型LCD的读写操作规定如表4-4所示。表4-4 1602型LCD的读写操作规定读状态输入RS=0,R/W=1,E=1输出DB0DB7=状态字写指令输入RS=0,R/W=0,DB0DB7=指令码,E=高脉冲输出无读数据输入RS=1,R/W=1,E=1输出DB0DB7=数据写数据输入RS=1,R/W=0,DB0DB7=指令码,E=高脉冲输出无将显示地址写入读状态(忙碌检测)初始化(写模式设置指令
42、)将数据(ASCII码)写入读出字符的字型点阵(显示)开始结束图4-5 1602型LCD的驱动程序流程图4.6键盘模块4.6.1 独立式键盘接口编程模式独立式键盘接口驱动程序由键盘管理程序、按键散转表和按键子程序3个部分组成。1 键盘管理程序:主要担负键盘工作时的循环检测(即看是否有按键被按下)、键盘去抖动、按键识别、子程序散转(根据所识别的按键进行转子处理)等基本工作。2 按键子程序:是一组子程序,担负每个具体按键的系统预定义功能的实现。3 散转表:是支持键盘管理程序根据键编码进行正确的按键子程序跳转的一段指令代码。键盘接口驱动的核心是键盘管理程序,而键盘管理程序的核心功能是识别键盘中的按键
43、编码,并根据按键编码跳转到散表的位置;然后引导系统进入相应按键子程序中,完成按键的功能。总之,键盘管理程序主要功能是完成主程序向键盘按键处理子程序的正确跳转。4.6.2 键盘接口的工作方式对于有键盘功能的单片机系统,键盘接口程序是其软件系统的一个重要组成部分。键盘接口程序的工作方式是指:键盘接口程序配合应用系统协调工作的方式。一般有键盘完全监控工作方式和键盘中断工作方式。键盘中断方式又分分时中断方式和外中断方式。方案一:采用键盘完全监控工作方式。单机片应用系统软件通常分为日常系统检测程序(主程序)和事件处理程序(子程序)两部分。如果键盘管理是系统日常监控的核心,键盘管理就可以采用全扫描方式。在
44、全扫描工作方式下,键盘管理程序的按键检测部分作为主程序的核心工作部分,进行系统日常监测,而按键子程序作为事件处理子程序之一。完全监控工作方式的特点是:一旦CPU处理完其他事件(包括处理按键事件)以后,就进入键盘管理程序,反复扫描键盘,等待用户从键盘输入命令或数据;一旦用户按键键入或中断事件发生,就转入按键子程序或中断服务子程序。在子程序处理完以后,又返回到键盘管理程序,反复进行按键扫描检测。方案二:采用分时中断工作方式。分时中断工作方式,就是在单片机系统内使用硬件定时器定时,单片机每经过一个确定的时间(比如1ms)就响应定时中断,调用键盘中断管理程序对键盘接口驱动一次,捕捉用户按键动作。这种键
45、盘工作方式要求分时时间不可太长,一般为毫秒级,要短到能够捕捉到用户的所有按键动作。 方案三:采用外中断工作方式。 采用外中断工作方式,系统对键盘接口的按键动作是随机响应的,也就是在键盘接口中,无按键动作时,系统可以按正常指令流程工作;当有按键被按下以后,系统响应按键的动作,产生中断,系统才调用键盘管理程序进行键盘处理工作。这样,可以将系统从键盘管理工作中解放出来,提高系统CPU的利用率。对比以上三个方案,方案三最符合本设计的需求。因此,采用方案三,即使用外中断工作方式为本设计的键盘接口工作方式。4.6.3按键抖动的消除单机片中应用的键盘一般是由机械触电构成的。当开关未被按下时,对应引脚输入信号为高电平;开关闭合后,对应引脚输入信号为低电平。由于按键是机械触点,当机械触点断开、闭合时,触点将有
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100