




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏州大学本科生毕业设计(论文)基于STC89C52的闹铃万年历设计目 录前言3第1章 概述4第1.1节 单片机设计电子时钟的背景4第1.2节 本设计任务及要求4第2章 系统功能及总体结构5第2.1节 工作原理5第2.2节 总体方框图5第2.3节 方案论证比较5第3章 硬件电路设计9第3.1节 系统所需的硬件介绍9第3.2节 系统硬件设计15第4章 软件设计16第4.1节 软件设计概述16第4.2节 显示程序设计16第4.3节 时钟程序设计17第5章 系统测试19第5.1节 系统的调试19第5.2节 数据测试19第5.3节 误差分析19结论21参考文献22致谢23附录24附录1:实物照片说明24附录2:部分源程序24- i -基于STC89C52的闹铃万年历设计【摘要】:近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,在生活和生产的各领域中,凡是有时间显示和控制要求的地方都会有单片机的身影出现,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,因此本次设计则采用单片机为核心来实现对以时间显示和记录提示的闹铃万年历设计。本次设计的闹铃万年历的电路,具有三大功能、分别表示小时时间显示,年月日时间显示,时间记录提示功能,试验中用数码管显示,蜂鸣器模拟语音提示。基于题目基本要求,本系统对功能设置、数据装入和定时设定功能进行了重点设计。此外,扩展了掉电记忆、万年历显示、LED状态指示等。该系统设计采用以单片机AT89S52为核心,结合数码管显示以及必要的外围电路,通过功能设置和数据输入,完成不同功能下的显示。在发挥部分,该系统还添加了万年历的功能,使得用户可以随时知道当前的时间;当设定时间达到时,会发出蜂鸣提示。测试表明,该系统具有操作简单,控制精确,更加人性化等特点。【关键词】:单片机ATC89S52;LCD1602;DS1302;Abstract : In recent years, with the penetration of computers in the social sphere and the development of large scale integrated circuit, microcontroller applications is constantly deepening, life and production in all areas, all the time display and control requirements will have a chip where the figure, and since it has strong functions, small size, low power consumption, cheap, reliable, easy to use features, it is particularly suitable in relation to control of the system, so this chip is used as the core design to achieve a time display and record voice prompts notebook design.The design of the voice circuit Notepad has three main functions, namely, that hour time display, date time display, time recording prompts, tests using digital display, buzzer analog voice prompts. Based on the basic requirements of the subject, set the system to function, data loading and timing were key design feature set. In addition, the expansion of the power-down memory, calendar display, LED status indication. The system is designed with the AT89S52 microcontroller core, combined with the digital display and the necessary peripheral circuits, and data input by the feature set, perform different functions of the display. Play a part in, the system also adds a calendar function that allows users to always know the current time; when the set time is reached, it will beep prompt. Tests show that the system is simple, precise control and a more user-friendly feature.Key words: MCU ATC89S52;LCD1602;DS1302前言近年来随着科技的的发展,生活水平的提高,万年历已经走进了千家万户的家中,成为现代家庭的必备产品。快节奏的生活是万年历在大城市普及的首要原因, 万年历更具方便性和准确性。其类型也从最初的机械控制发展到目前的电脑控制。通常用户调整一次时间后,在很长一段时间中不需要在进行调整。尽管万年历得到了很大发展,功能越来越完善。为此,我选择了在此基础上的创新改革设计出具有自动计算日期与星期功能的设计题目,设计一个高质量的万年历,使其除了能显示时间以外还能提示人们重要的时间,使用更方便。通常我们家居用的万年历大部分都是只能显示年月日不能设置年月日时间闹铃,此次设计就针对这一点进行改良,用EEPROM存储时间的闹铃,使得控制起来更加的方便;添加了掉电记忆功能,改变原有的掉电丢失情况,可以根据用户不同的需求设置不同时间的闹铃功能;使得家居生活更加的有趣。未来的发展趋势将以智能、信息为主流,使闹铃万年历的发展更人性化。因此闹铃万年历设计的开发有利于推动万年历市场的发展,使老百姓能用上更优秀的钟表。第1章 概述第1.1节 单片机设计电子时钟的背景单片机是一种采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU,随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等集成到一块硅片上构成一个小而完善计算机系统的集成电路芯片。目前单片机已经渗透到我们生活的各个领域,几乎很难找到某个领域没有单片机的踪迹了。自导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,到广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等这些都离不开单片机,更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。在科技高速发展的今天,由单片机自由发挥的舞台更加宽广,现已明显的朝着巨型化,单片化和网络化方向发展。因此在大学阶段打好基础,为今后真正学会并灵活运用好单片机做好充分的准备,是我们每一个电子信息类专业大学生义不容辞的责任。本着学以致用的原则,本次课程设计我从实际生活出发,结合单片机原理和技术理论的学习,设计制作了一个电子时钟,通过液晶显示时间,希望经过简单电子制作的程序,在实际动手做板和软件编程过程中,体会单片机强大功能的同时提高自己动手的能力。基于此,本文讨论的单片机多功能定时器的核心是目前应用极为广泛的51系列单片机,配置了外围设备,构成了一个可编程的计时定时系统,具有体积小,可靠性高等特点。第1.2节 本设计任务及要求1.2.1. 设计任务设计制作一个闹铃万年历电路,具有万年历显示功能,分别表示日期和时间,带时间提示功能,试验中用LCD1602显示。1.2.2. 要求(1)、 以52单片机为核心设计一个时间提示系统。(2)、 系统具有标准的日历时钟,年、月、日、星期、时、分、秒自动修正。(3)、 系统应当使用LCD1602显示器,显示时间和日期。(4)、 能够随时对当前时间进行调整。(5)、 定时时间到,应当发出语音一是信号或者蜂鸣器提示信号。第2章 系统功能及总体结构第2.1节 工作原理闹铃万年历工作分四个步骤分别为:系统待机显示时间用户设定时间用户设定记事本到达设定时间蜂鸣提示。具体流程如下图2.1所示。图 2.1系统流程图第2.2节 总体方框图系统以AT89C52单片机为核心,连接各外部电路完成人机交互等各功能的控制。系统的总体框图如下图2.2所示。图2.2 总体方框图电路设计部分以单片机控制电路为核心由时钟电路,复位电路,LCD显示电路,电源电路,声音报警电路,按键电路和LED指示电路共同组成闹铃万年历系统电路。第2.3节 方案论证比较2.3.1. 主控制器控制部分是本系统的核心,它接收用户的输入完成相应的控制逻辑功能,并将当前的工作状态等信息送显示部分显示。方案1 :采用数字逻辑芯片系统有功能设置、数据装入、定时、显示、音响控制多个功能模块。各个状态保持或转移的条件依赖于键盘控制信号。由于键盘控制信号繁多,系统的逻辑状态以及相互转移更是复杂,用纯粹的数字电路或小规模的可编程逻辑电路实现该系统有一定的困难,需要用中大规模的可编程逻辑电路。这样,系统的成本就会急剧上升相对于方案二。因此,本设计并未采用这种方案。方案2 :采用单片机作为整个控制系统的核心我们的设计采用了AT89S52单片机系统。有8kb的FPEROM和256字节RAM,可满足系统编程需要,并且价格低廉,有更好的性价比,因此我们采用AT89S52单片机。晶振取12MHZ。AT89S52不需要专门编程器烧写程序,因此我们选择了AT89S52单片机系统。 综合考虑以上因素,我们采用了方案二。2.3.2. 时钟电路部分方案方案 1:采用传统的机械式定时定时时间通过机械按钮控制。该方案操作简单,对设定时间只要旋钮转到相应的位置即可。但由于机械式定时容易磨损,定时精度低,也不能实现一些复杂的功能。特别是一些人性化的界面设计无法实现。方案 2:采用小规模集成元件定时比如用计数器/分频器,该方法价格便宜,但是接线复杂,设计也比较困难,对时序要求比较高。该方案功能单一,也无法实现复杂功能。扩展麻烦。也不能实现一些人性化的界面设计。方案 3:采用 MCU 内部定时器采用单片机的定时器定时。由于当前市场上的单片机都内含定时器计数器,所以用单片机定时比较方便。另外,单片机能够实现复杂功能,能够设计出友好的人机界面接口,价格也比较便宜。但是单片机定时并不是很精准,而且掉电后会丢失时间。方案 4:使用专用时钟芯片使用微控制器控制专用时钟芯片实现计时控制,这种方案有着计时精度高、控制简单的优点,而且更易于实现日期 / 时间显示等计时扩展功能。 在这里我选用的是方案4,由于方案4具有较好的灵活性、较少的电路元器件和较高的性价比,而且通过硬件可以精确的记录时间,并且可以通过一节纽扣电池保证掉电后一段时间内不会丢失时间,完全可以满足控制需要,所以我们选择该方案完成设计。2.3.3. 按键部分方案方案 1 :采用阵列式键盘。此类键盘是采用行列扫描方式,优点是当按键较多时可以降低占用单片机的I/O口数目,缺点是电路复杂且会加大编程难度。方案 2 :采用独立式按键电路。每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。缺点是当按键较多时占用单片机的I/O数目较多,优点是电路设计简单,且编程极其容易。由于该系统采用了常规设计方式,使用较多的外围芯片所以IO口充足,而且用键较少,系统资源足够用,故采用了方案二。原理图如图2.3.3所示。图2.3.3按键原理图2.3.4. 显示部分方案方案 1 :采用数码管显示:该方案控制最简单,可以通过设置完成制作任务,经济耐用,但是只能显示非常有限的符号和数字,显示不够直观、提供信息量少、不易理解等缺点。对于设计中复杂的显示功能显然不能胜任。方案 2 :采用液晶显示:采用LCD16O2液晶显示屏,字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,其拥有友好的人机界面及强大的显示功能。特别适用于智能控制的可编程人性化显示。与中文液晶显示相比,英文液晶显示其编程更简单,因此选择英文的LCD。而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射污染等优点。方案 3 :采用LED点阵显示:LED点阵显示虽然能显示字符和数字,但显示效果不好,且不易编程。方案 4 :使用TFT材质16K色或26万色彩液晶显示TFT材质LCD现已广泛用于手机MP4等数码产品,以及电脑液晶显示器、液晶电视等。具有色彩艳丽,分辨率高,显示信息量大等优点。缺点是功耗稍高,需要高压驱动,将可能会将近期新兴的LED彩色液晶屏逐步取代。本系统显示信息量不是很大,无需彩色显示而增加成本,且其驱动程序复杂,因此本系统部采用此方案考虑实用问题,故采用方案2。2.3.5. 电源电路设计电源电路在很大程度上决定了一个系统的稳定性,因此电源电路的设计在于本系统中也占据了重要的地位。方案 1 :采用半波整流电路220v交流电源经过整流滤波后可用得到所需电源电压,但是电压不稳定,即稳定性差。半波整流产生的电源电压不恒定且具有间隙性,顾在设计中不采用。方案 2 :采用桥式整流电路220v交流电源经过整流滤波后可以得到所需电源电压+5v,整流效果好,电压稳定性好, 220v交流电经12v变压器后,经桥式整流滤波后得到约16.8v的电源电压,然后经7805三端稳压器及滤波电容得到电路中所需的+5v电源。但由于电路复杂,顾在设计中不采用。方案 3 :采用USB供电每台PC都有一个USB(通用串行总线)端口,它可以为外设提供500mA的5V+5%供电。带电源的USB集线器也能提供这种供电能力。用USB端口可以为外部电路供电,在没有其他直流电源的情况下,这种方式很有用。方案 4 :采用电池供电这种方案最为简单,方便,通过4个5号电池的串联,来提供电源所需的电压,操作方便安全,电路简单。综合以上情况,为了减小体积和节约成本,我们选择了方案4。第3章 硬件电路设计第3.1节 系统所需的硬件介绍3.1.1. STC89C52单片机STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器器。STC89C52单片机引脚分布如下图3.1.1图3.1.1 STC89C52单片机引脚分布图(1)P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。 在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。(2)P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个 TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2 的触发输入(P1.1/T2EX)。 在flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能:P1.0 T2(定时器/计数器T2的外部计数输入),时钟输出P1.1 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5 MOSI(在系统编程用)P1.6 MISO(在系统编程用)P1.7 SCK(在系统编程用)(3)P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个 TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR) 时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用 8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。 在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。(4)P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p3 输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入 口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89S52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。端口引脚 第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INTO(外中断0) P3.3 INT1(外中断1)P3.4 TO(定时/计数器0)P3.5 T1(定时/计数器1)P3.6 WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。(5)RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。(6)ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。(7)PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。(8)EA/VPP:外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。(9)XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。(10)XTAL2:振荡器反相放大器的输出端。3.1.2. 复位电路复位电路是使平均的CPU或系统中的其他部件处于某一确定的初始状态,并从这个状态开始工作,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位电路以重新启动。本设计采用的是上电复位电路,即使用一个10uF电容以及10K电阻完成设计,在上电时对单片机进行一次系统复位。下面详细介绍下复位电路的原理,上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着Vcc对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时,Vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为12MHz,起振时间为0.833ms;晶振频率为1MHz,起振时间则为10ms。在本次设计中当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序,但是通过10uF电容与10K电阻配合后就会有一个稳定复位过程。以上就是本次复位电路的复位原理。如图3.1.2所示。图3.1.2 复位电路3.1.3. 晶振电路时钟电路由一个晶体振荡器12MHz和两个30pF的瓷片电容组成。时钟电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地作。下面我就对晶振详细的介绍下,晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。以上就是晶振的起振原理,设计中此晶振为单片机提供运行的必要条件,只有晶振产生振荡才可以是单片机正常运行,这也看出来晶振在电路中的重要性了。如图3.1.3晶振原理图。图3.1.3 晶振电路3.1.4. 时钟模块DS1302DS1302由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路,它可以对年、月、日、周、日、时、分、秒进行计时,且具有闰年补偿等多种功能。DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。DS1302 引脚图如图3.1.4。图 3.1.4 DS1302 引脚图DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),SCLK为时钟输入端。3.1.5. 显示模块LCD1602液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。在本设计采用的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的1602液晶模块来介绍它的编程方法。1602采用标准的16脚接口,其中:LCD1602第3脚:VEE为液晶显示器对比度调整端;第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器;第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据;第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;第714脚:D0D7为8位双向数据线; 第1516脚:空脚。液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。在液显电路连接上,LCD1602显示模块可以直接和单片机STC89C52直接接口,液晶显示的D0D7八个双向端口接STC89C52单片机的P0口的P0.0P0.7,单片机的P0口可以作为通用的输入,输出端口使用,此时,若要驱动NMOS或其他拉电流负载时,需外接上拉电阻,才能使该位高电平有效,所以中间接10K的排阻,来决定显示器高低点位,是否要显示。由于VEE端接电源时接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,对比度过低会使屏幕模糊不清,所以使用时可以通过一个10K的电位器来调整它的对比度。LCD1602的RS寄存器选择端口接单片机的P1.0口,通过软件程序中对此端口的设置来决定选择的寄存器。液显的RW端口直接接地,因为我们不需要读取内部内容,高电平时进行对输入的数字信号进行读数。使能E端接单片机的P1.1口,使能端由高电平到低电平时开始执行命令,把读数显示出来。3.1.6. 闹铃模块闹铃模块由蜂鸣器和蜂鸣器的驱动组成。蜂鸣器电路接在单片机的P2.0引脚上,当给该引脚一个低电平,三极管导通。在有闹铃发生的时候,蜂鸣器的驱动电路驱动蜂鸣器发声,产生闹铃的效果。闹铃模块的设计如图3.1.5所示。图 3.1.5 闹铃模块的设计第3.2节 系统硬件设计硬件设计以微控制器AT89S52为控制核心,结合所需的外围模块,完成键盘数据处理、LCD的控制、时间的保存,闹铃的设置等功能 。总电路图如图3.2所示:图3.2 总电路图第4章 软件设计第4.1节 软件设计概述软件系统在本设计中尤其重要,基本功能大部分是由软件完成的,发挥功能的关键控制部分同样需要软件的密切配合才能顺利实现。鉴于软件设计的精确性和高效性,我们采用C语言编写程序。 整个软件系统采用模块化的程序设计方法,共分为初始化,显示程序,键盘程序,时钟程序,声音发声程序等。软件系统的主要特点是整个过程完全在键盘的控制之下,实现了完全的友好的人机交互功能。主程序通过判断键盘的输入情况调用不同的子程序。子程序的功能实现也是在键盘的配合之下完成的。下面分别对这这些程序进行详细设计。第4.2节 显示程序设计如图所示为LCD1602显示流程图,通过定时器与计时器配合采集频率,并且在LCD1602屏幕显示出来,具体LCD显示流程如下。LCD显示流程第4.3节 时钟程序设计控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据,位5至位1指示操作单元的地址,最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制如图所示。日历、时间寄存器及其控制字此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。第5章 系统测试第5.1节 系统的调试整个系统设计完成后,要进行运行调试,排除软件和硬件的故障,同时验证系统的可靠性及稳定性,使系统符合设计要求。本系统的调试主要分两个步骤:单片机系统调试及整个控制系统运行调试。系统调试包括硬件调试和软件调试,而且两者是密不可分的,可以相互独立的平行进行。我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的配合情况以及是否达到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终开发成实用产品。在对系统进行实际调试时,首先应对硬件进行静态调试,同时对系统软件进行初步调试,此后再对软件和硬件进行动态调试,最后才能使系统进入正常工作。(1)静态调试:静态调试主要是排除明显的硬件故障。在电路搭建好后,对其进行仔细检查。查看端口是否正确连接,连接是否可靠。同时还应当用万用表检查电路,看应当开路的地方是否开路,有无虚焊或短路等等。(2)软件调试:系统软件程序在编制好以后,可通过KEIL软件对源程序进行编程,变成可执行的 目标代码,在编程过程中出现错误,要及时纠正。(3)动态调试:控制系统的软件和硬件是密切相关的,软件调试不能对硬件部分进行诊断,也不能在线仿真,所以用户程序还需跟硬件连接起来进行联调,调试对软件和硬件进行检查和诊断,整个单片机系统进行在线调试时,需借助仿真开发工具来对用户软件及硬件电路进行诊断、调试。程序调试完成后,将程序下载到单片机里,使整个系统运行起来。第5.2节 数据测试上电后调整时间,精确到秒,断电一段时间重新上电检查时间误差。表5.2 时间误差误差测量断电时间1天2天1周2周实际测得值11:32:451:11:1012:13:3013:55:10计时误差(s)593471第5.3节 误差分析从功能分析,该系统的误差主要是时间误差,可能是由于DS1302的时钟晶振精度不高引起的时间误差,还可能是芯片本身的质量不良所引起的。结论经过一段时间以来的学习,不断的从设计中总结和修改,并按着预期的要求反复的论证和测试。本着学习的态度,以完善设计的可靠性和稳定性,将整个设计分模块化的进行,并将每个模块加以分析和论证,成功后再联系再一起,最终达到总体效果。在这短短的几个月时间里,原本以为时间很足的,但真正开始做了之后发现并不是那么容易的。从最初的茫然,到慢慢的进入状态,再对思路逐渐的渐渐的清晰,整个过程都很难用语言来表达。在这段时间内,在赖老师指导下,通过自身的不断努力,无论是思想上、学习上还是工作上,都取得了巨大的收获。根据要求,该闹铃万年历达到了设计要求。系统以AT89S52芯片为核心部件,根据综合电子技术、信号与系统以及单片机原理的知识,通过软件实现了闹铃万年历系统,且各项功能达到了设计要求。在系统的设计过程中,我们力求硬件线路简单,充分发挥软件编程方便灵活的特点,并最大限度挖掘单片机片内资源,来满足系统设计要求。实现闹铃万年历的万年历显示和记事提示功能。因时间有限,该系统还有许多值得改进的地方:例如硬件系统的集成度还可以进一步提高,控制系统的容错功能有待于进一步加强,软件中某些逻辑判断方面的算法还有待于进一步优化。可以添加许多其他的功能,例如显示农历、温度等信息。参考文献1. 张靖武. 单片机系统的proteus设计及仿真M. 清华大学出版社,2003.2. 张立科. 单片机典型模块设计实例导航M. 人民邮电出版社,2005.3. 元红妍. 电子综合设计实验教程M. 山东大学出版社, 2005.4. 公茂法,马宝甫. 单片机人机接口实例集M. 北京航空航天出版社,1998.5. 谢自美. 电子线路设计实验测试. 华中科技大学出版社M,1998.6. 纪宗南. 单片机外围器件实用手册输入通道器件分册M. 京航空航天大学出版社, 1998.7. 张齐,杜群贵. 单片机应用系统设计技术基于C语言编程M. 北京电子工业出版社,2004.8. 肖忠祥. 数据采集原理. 西北工业大学出版社M, 2001.9. 姜志海,黄玉清,刘连鑫,冯占英. 单片机原理及应用M. 电子工业出版社,2005. 10. 王沫楠,康维新. 单片机原理及应用M. 科学出版社,2006.11. 李广弟. 单片机基础M. 北京航空航天大学出版社,2001.12. 吴金戌. 8051单片机实践与应M. 用清华大学出版社,2001.13. 王洪庆. 微型计算机控制技术M. 机械工业出版社,2006.14. 付家才. 单片机控制工程实践技术M. 化学工业出版社,2004.附录附录1:实物照片说明图1工作显示图附录2:部分源程序#define uint unsigned int /宏定义#define uchar unsigned charuchar flag=0;#include /头函数#include #include #include #include #include sbit Feng=P12; /模式uchar Mode=0; /键盘函数uchar K_=0; /报时uchar BS=0,0,0;uchar F=1;uchar M=0;uchar temp=0; /主函数void main()Init_LCD();/LCD初始化Ds1302_Init();/时钟初始化Ds1302_Write_Time();/写初值while(1) /主循环Ds1302_Read_Time();/读时钟 time_buf17=Conver_week(time_buf11,time_buf12,time_buf13);LCD_Write_Time(time_buf1); if(F=0) if(time_buf16!=temp) temp=time_buf16; M-; Feng=Feng; if(M=0) Feng=1; F=1; if(time_buf14=BS0&time_buf15=BS1&time_buf16=BS2) /开始报警 temp=time_buf16; F=0; M=10; Feng=0; K_=KEY_();/读取键盘函数 if(K_=4) Init_LCDAlarm();/显示LCD_Write_TimeNL(BS); /开启光标 write_com(0x0f);write
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工作中的闲暇时光与高效时间管理艺术
- 工作中的时间管理与时间节约技巧
- 工业设计的创新与实践案例
- 工作满意度与心理资本的关系研究
- 工控系统中的人机界面优化研究
- 工作流程再造与优化实践
- 工程实践中的智能化应用案例
- 工程机械中的智能自卸车应用
- 工厂防火措施与操作规程
- 工程材料与加工技术
- 电气工程及其自动化-10KV某中学教学楼配电系统设计
- 办公用房自查表
- 基于零知识证明和同态加密的隐私保护算法研究
- 三年级数学上册三位数加减法计算练习500题
- 公司投标书密封条模板
- 幼儿园拼音《aoe》学习课件
- 四川省乐山市市中区2022-2023学年七年级下学期期末英语试卷(含答案)
- 高中英语-what's in a name教学课件设计
- 瓦斯隧道施工安全手册
- 注塑模课程设计说明书罩盖塑料模具设计
- 2023年河北石家庄市市属国有企业面向社会招聘笔试参考题库附带答案详解
评论
0/150
提交评论