• 342.41 KB
  • 2022-04-22 13:37:13 发布

基于单片机的作息时间钟的设计毕业论文.doc

  • 42页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'基于单片机的作息时间钟的设计毕业论文目录第一章绪论11.1课题研究意义11.2国内外研究现状11.3研究内容2第二章核心芯片及元件介绍32.1AT89C52简介32.1.1AT89C52芯片的引脚42.1.2AT89C52特点72.2LM016L显示屏82.2.1显示屏主要技术参数:92.2.2引脚功能说明92.2.3显示屏的指令说明及时序112.2.4显示屏的RAM地址映射13第三章硬件电路设计153.1总体电路设计:153.2硬件系统各部分电路设计153.2.1系统复位电路的设计153.2.2系统时钟电路的设计:163.2.3闹铃电路设计:173.2.4显示电路设计:183.2.5定时调试按键电路设计193.2.6电源电路设计20第四章软件设计214.1主模块设计214.2显示模块设计224.3时间设定模块设计224.4闹铃功能的实现23第五章软件仿真及结果分析255.1单片机仿真图255.2电源仿真图26.41. 5.3响铃实现仿真图265.4性能及结果误差分析27第六章结论与展望286.1结论286.2展望28致谢30参考文献31附录32第一章绪论1.1课题研究意义科技的进步需要技术不断的提升。一块大而复杂的模拟电路花费了您巨大的精力,繁多的元器件增加了您的成本。而现在,只需要一块几厘米见方的单片机,写入简单的程序,就可以使您以前的电路简单很多。相信在使用并掌握了单片机技术后,不管在今后开发或是工作上, 一定会带来意想不到的惊喜。该系统以AT89C52为主体的设计,整体性好,人性化强、可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,是现代学校必不可少的设备。本设计是一个具有报时功能的作息时间控制钟。它利用AT89C52单片机的定时器计时,进行时间计算;在进行时间计算,分每加一时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。由处理芯片,供电电路,控制按键,显示部分组成,系统扩展五个按键用于报时及校正时间。.41. 1.2国内外研究现状现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校。数字式电子钟用集成电路计时时,译码代替机械式传动,LED显示器代替指针显示时间,减小了计时误差。这种电子钟具备显示时、分、秒的功能,还可以对时、分、秒进行校对,片选的灵活性好。随着科学技术的迅速发展,电子时钟正迅速取代纸质日历、年历和一般机械电子时钟。电子时钟走时准确、功能多样、外观时尚、使用方便。但它们的核心部分都有两个共同点,一是采用高性能时钟芯片;二是大都采用单片机控制。这些电路的接口简单、价格低廉。1.3研究内容综合利用所学单片机知识完成一个单片机应用系统设计并仿真、由硬件实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下良好基础。以往的作息时间控制系统只具备基本时钟(显示当前时间的小时及分钟)功能,而且采用数字电路实现,致使电路非常复杂,计时精度不高,功能简单。本设计的系统具备如下特点:(1)基本时钟功能之外,还可以显示年、月、日、星期等信息,具备自动识别闰月,每月的天数。(2)通过单片机控制,既保证了系统结构简单,又保证了控制时间的精度和可靠性,且通过外扩电路还可以实现多种功能。.41. (3)设置了五按钮的控制按键,以保证调时间、日期、星期,同时设置了单片机复位按钮。(4)具备供电电路,直接将市电转换成单片机需要的直流5v电压。带有备用电源,停电后时钟依旧工作时间不停止。第二章核心芯片及元件介绍2.1AT89C52简介图1AT89C52接口图AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,其主要功能特性如下:.41. (1兼容MCS51指令系统(2)8kb可反复擦写(大于1000次)FlashROM;(3)32个双向I/O口;(4)256x8bit内部RAM;(5)3个16位可编程定时/计数器中断;(6)时钟频率0-24MHz;(7)2个串行中断,可编程UART串行通道;(8)2个外部中断源,共8个中断源;(9)2个读写中断口线,3级加密位;(10)低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;(11)有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求引脚。2.1.1AT89C52芯片的引脚8位通用微处理器,主要管脚有:XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28.41. 脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。P0口:一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。P1口:一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。表1P1.0和P1.1的第二功能表1p1.0和p1.1功能引脚号功能特性P1.0T2,时钟输出P1.1T2EX(定时/计数器2)P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2.41. 口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。RST复位输入:当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52.41. 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.1.2AT89C52特点时钟振荡器:AT89C52中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。  这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图10。外接石英晶体(或陶瓷谐振器)及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2.41. 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF±10pF,而如使用陶瓷谐振器建议选择40pF±10F。用户也可以采用外部时钟。采用外部时钟的电路如图10右图所示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。掉电模式:在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器,但不改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。2.2LM016L显示屏液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用,其特点如下:(1)LM016L显示质量高,由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。(2).41. 液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。(3)液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。(4)相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。(5)液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。2.2.1显示屏主要技术参数:(1)显示容量:16×2个字符(2)芯片工作电压:4.5—5.5V(3)工作电流:2.0mA(5.0V)(4)模块最佳工作电压:5.0V(5)字符尺寸:2.95×4.35(W×H)mm2.2.2引脚功能说明LCD采用标准的14脚(无背光)或16脚(带背光)接口,各脚接口说明如表2所示:表2液晶屏接口编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据.41. 2VDD电源正极10D3数据3VEE液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。.41. 第7~14脚:D0~D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。2.2.3显示屏的指令说明及时序液晶模块内部的控制器共有11条控制指令,如表3所示:表3指令时序序号指令RSR/WD7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L**6置功能00001DLNF**7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址1010要写的数据内容.41. 写数到CGRAM或DDRAM)11从CGRAM或DDRAM读数11读出的数据内容液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)指令1:清显示,指令码01H,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址.41. BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。读操作时序如图2所示:图2读操作时序写操作时序如图3所示:图3写操作时序2.2.4显示屏的RAM地址映射.41. 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图是内部显示地址。如图4所示图4模块显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”这样.41. 液晶显示模块可以和单片机AT89C52直接接口。第三章硬件电路设计3.1总体电路设计:时间作息控制的主体电路应包括秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分。按键功能说明:K1设置时间;K2加一;K3,减一;K4,退出;K5,复位。时间作息控制的系统框图5如下所示:AT89C52复位、时钟等电路按钮电路LED显示电路声音指示电路电源供电电路图5控制系统.41. 3.2硬件系统各部分电路设计3.2.1系统复位电路的设计单片机系统一般应有手动或上电复位电路。复位电路的实现通常有两种方式:1、RC复位电路;2、专用µP监控电路。前者实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。复位电路主要用来在单片机的程序进入死循环后,能使单片机重新从头执行程序而不会无休止的执行程序。本设计采用了上电按钮电平复位电路,如图6.41. 图6复位电路3.2.2系统时钟电路的设计:对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。但由于实际工作过程中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在实际应用中一定要注意正确选择参数(30±10PF),并保证对称性(尽可能匹配),这两个电容元件对闹钟的走时误差有很大关系,并且选用正规的瓷片或云母电容,如果可能的话,温度系数要尽可能低。另外,瓷片电容的实际焊接距离不应该离单片机太远否则误差较大。具体的时钟电路如图7所示:图7时钟产生电路3.2.3闹铃电路设计:.41. 闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。其电路设计参见系统原理图。如图8所示图8闹铃电路3.2.4显示电路设计:本设计采用了液晶屏显示电路。在液晶点亮时,为了简化电路,降低成本,采用动态显示的方式,液晶显示屏共用一个8位的I/O,其分别和p0.0-p0.7相连接。3位控制写入写出数据口,而将其相应的段选线并联在一起分别为p2.2、p2.4、p2.6。到达定时时间时,由计时系统的输出状态产生一脉冲信号,然后去触发蜂鸣器实现闹铃。校时电路是用来对“年”、“月”、“日”、“星期“、“时”、“分”、“秒”显示数字进行校对调整的。具体的电路设计如图9示:.41. 图9显示电路3.2.5定时调试按键电路设计本设计因为使用到的键数目比较少,不宜采用矩阵式键盘,采用了功能直观简洁方便的独立式键盘,而且考虑了键盘的消抖问题。比较容易理解。每个键的具体功能如下:K1设置时间;K2加一;K3,减一;K4,退出。按键定义如图10所示:图10按键电路.41. 3.2.6电源电路设计电路将市供电转换为单片机需要的5v电压,由变压线圈,整流电路,稳压器,电容和二极管构成。正输出三端稳压器7805组成的电源模块,三端集成稳压器只有三个引端:输入端,输出端和公共端,在电路连接中比较简单。考虑对于集成稳压管的保护,一般在稳压管的输入端和输出端之间跨接一个保护二极管,其作用就是在输入端短路时,使接在输出端的电容能够通过二极管放电,从而达到保护的目的。其中二极管选1N4007即可满足设计。如图11所示图11电源电路.41. 第四章软件设计4.1主模块设计主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。软件设计的重点在于秒脉冲的产生、显示的实现、以及按键处理等方面。同时还要包含各种功能的实现例如日期,星期,闹铃。显示的方式也是软件设计的重要一部分。本系统的主模块的程序框图如下图12所示:单片机系统初始化定时初始化中断初始化串口初始化显示待机指示符设定闹铃时间判设置闹铃时间否?显示刷新启动走时有关变量初始化刷新显示判时或分变化否?秒指示判1秒到否?闹铃判是否到闹铃时间?延时YYYY图12程序框图.41. 4.2显示模块设计显示是由显示代码取得相应的段码,显示段码数据的并行发送,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。程序流程如图13所示:图13显示模块流程4.3时间设定模块设计.41. 时间设定模块的设计要点是按键的去抖处理与多种状态公用一个键的处理问题。即只涉及4个键完成了4位时间参数的设定。软件法去抖动的实质是用延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,如是则作为按键处理,否则,视为抖动,不予理睬。去抖中的延时时间一般参考资料多描述为10ms左右,实际应用中,应大于20ms,否则,会导致按一次作多次处理,影响程序正常执行。按键消抖流程图原理如图14所示:图14按键消抖原理4.4闹铃功能的实现.41. 闹铃功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。在每次循环扫描的过程中,判断现在的时间和定时的时间是否一致。一致的话,闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动蜂鸣器发声实现报时。时间调节电路根据不同状态下的具体按键意义将相对应的计数器加以改变,并通过数码管显示出来。校园作息时间如下表4:预备7:50第六节上15:30第一节上8:00第六节下16:20第一节下8:50第七节上16:40第二节上9:00第七节下17:30第二节下9:50第八节上17:40第三节上10:10第八节下18:30第三节下11:00预备19:20第四节上11:10第九节上19:30第四节下12:00第九节下20:20预备14:20第十节上20:30第五节上14:30第十节下21:20第五节下15:20熄灯23:00表4校园作息时间.41. 第五章软件仿真及结果分析本次仿真采用proteusprofessional软件进行仿真,通过keil软件进行单片机.hex文件的编写与调试。实现了设计所要求的具体内容。5.1单片机仿真图在proteus中画好仿真电路图,然后进行电气规则检查,没有错误后将keil编译软件中生成的.hex文件导入单片机中。点击仿真按钮,单片机仿真图如下图15所示:图15单片机仿真结果.41. 5.2电源仿真图在proteus中放置好元器件连接好导线,完成电气规则检查。然后点击仿真按钮,就能通过电压表清楚的看仿真后的电压。如图16所示:图16电源仿真5.3响铃实现仿真图当时间和程序中闹铃的时间相符合的时候,单片机p2.3产生低电平脉冲使扬声器产生蜂鸣。持续十五秒后闹铃停止。如图17所示:图17响铃仿真.41. 5.4性能及结果误差分析该作息时间控制器有四个按键:K1,K2,K3和K4。初始加电时数码管显示时钟计数初值并运行。时钟正常显示运行状态时,按K1键进行时间设置,可以分别按K2和K3键进行加1,减1校时,使其校正到标准时间;按K4键设置退出。该电路显示的误差主要由晶振自身的误差所造成,晶振的误差约为0.0001~0.000001。在软件的编程过程中所产生的误差比较小,另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计误差很小。在电源电路设计中将220v交流转换成5v直流电,通过仿真结果发现为5.02v,该电路显示的误差主要是由互感线圈互感系数以及电路中电容大小共同引起的误差。这种误差是是可以接受的。.41. 第六章结论与展望6.1结论在日常的生活中,人们时时刻刻都需要知道时间,时间是指导人们生活和工作的一个重要尺度,由此决定了必须要有告诉人们当前时间的方法和产品。定时和实时时钟在日常生活中扮演着非常重要的角色。目前市场上实现时钟功能的产品大多是以单片机为控制器,外围搭建一些功能电路,如显示功能电路。在精度要求不高的场合,可以采用定时中断,以软件方式实现时钟的基本功能,可以降低系统成本;缺点是误差较大,可靠性一般。如果精度要求较高且可靠,则应在单片机系统中扩展外部时钟芯片,目前广泛应用的DS1302、PCF8583、X1203等芯片均可以满足要求。该控制器由液晶显示器构成,具有公历、基本时钟功能、多路电气设备的控制。由于在设计时考虑了尽量使产品体积最小,操作简单等因素,故该控制器体积小、可靠性高、价格低廉,可广泛应用于学校、工厂和机关的自动打铃、电视、路灯、室内照明及其他对象控制,也可用于家庭或学生寝室进行时间指示及多点时间提醒等。6.2展望.41. 作息时间控制系统在生活中被广泛使用,从最早的采用数字电路实现到采用专用的集成电路来实现再到现在的利用单片机来实现,这期间经历了一段比较漫长的过程,而且随着科学技术的迅速发展,以单片机为控制核心的作息时间控制系统正迅速取代以往的纸质日历、年历和一般机械电子时钟以及人工打铃的旧方式,以其走时准确、功能多样、外观时尚、使用方便,深受广大消费者的青睐。作息时间控制系统产品琳琅满目,但它们的核心部分都有两个共同点,一是采用高性能时钟芯片二是大都采用单片机控制。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本设计系统一是为了节约成本,二是为了精简结构,因此键盘采用独立式键盘,若是不考虑上述两方面的因素,可以采用行列式键盘,这样调整时间时会更加方便、快捷。。近年来国内外各大厂商纷纷推出了基于串行总线方式的LED显示器接口芯片,如MAXIN公司的MAX7219,力源的PS7219以及周立功的zlg7289等。这些芯片与单片机的接口一般采用SPI总线方式,具有占用I/O口线少,与单片机接口程序易于实现的特点。有的芯片如zlg7289还内含键盘控制器,这样只要一片芯片便可实现显示和键盘功能,使用十分方便。相信随着科学技术的发展,以后会设计出更多更好的作息时间控制系统。※※※※※.41. 致谢在作息时间钟的整个设计和研究过程中我得到了老师、同学、朋友们的帮助,在此我要一一感谢他们。首先我要感谢我的指导老师周鹏教授,他在百忙之中抽出时间对该课程设计的初稿进行审校,提出具体修改意见。老师不仅授予我丰富的专业知识,还教我懂得了许多道理使我受益颇多。在毕业之际,我谨向周老师致以衷心的感谢!其次,还要感谢我的室友和同学,他们在资料收集和毕业设计的一些具体环节上给予了我巨大的帮助并热情的帮我解决设计过程中遇到的一些问题。最后感谢所有帮助过我的人!谢谢!.41. 参考文献[1]程琤.单片机原理与应用系统开发[M].北京:国防工业出版社,2010[2]康华光.电子技术基础模拟部分[M].北京:高等教育出版社,2010[3]任文霞.电子电路仿真技术[M].北京:中国电力出版社,2008[4]谭浩强.c程序设计[M].北京:清华大学出版社,2010[5]邬宽明.单片机外围器件实用手册[M].北京:北京航空航天大学出版社,1998[6]无线电爱好者丛书编委会,黄继昌.实用报警电路[M].北京:北京航空航天大学出版社,2003[7]张敏,任琼.LED显示屏几种控制电路的比较[J].江汉大学报,2003,22(4):67~69[8]严天峰,张俊谟.单片机应用技术讲座[J].电子世界,2006:1-10[9]李春玲.单片机的键盘接口[N].电子报,2009-03-22(3)[10]刘文秀.单片机系统仿真[D].沈阳:沈阳工业大学,2004:1-7.41. 附录作息时间控制系统程序清单.41.#include#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlongucharcodetable[]="2013:05:13Week:1";//ucharcodetable1[]="T:07:49:30#00:00";sbitlcd_rs=P2^2;//定义LCD端口sbitlcd_rw=P2^4;sbitlcd_en=P2^6;sbitk1=P1^0;//菜单键光标位sbitk2=P1^2;//加键sbitk3=P1^4;//减键sbitk4=P1^6;//退出键sbitbeep=P2^3;//sbitwerr=P3^2;voidyue31();//大月voidyue30();//小月voidyue29();//闰天voidyue28();//平月voidTiming();voidweek7();ucharcount,k1num;//声明秒的变量charshi,fen,miao;//声明时分秒uintnian,yue,ri,week;//声明年月日星期ucharf,s,n;//定时器/voiddelay(ucharz)//延时函数{ucharx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidwrite_com(ucharcom)//lcd写指令{lcd_rs=0;lcd_rw=0;lcd_en=0;P0=com;delay(5);lcd_en=1;delay(5);lcd_en=0;}voidwrite_data(uchardate)//lcd写数据{lcd_rs=1;lcd_rw=0;lcd_en=0;P0=date;delay(5);lcd_en=1;delay(5);lcd_en=0;}voidwrite_week(ucharadd,uchardate)//计算星期显示位{ucharge;ge=date/1;write_com(0x80+0x00+add);.41. write_data(0x30+ge);}voidwrite_tim(ucharadd,uchardate){ucharge;ge=date/1;write_com(0x80+0x40+add);write_data(0x30+ge);}voidwrite_fsm(ucharadd,uchardate)//计算时分秒位{ucharshi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);write_data(0x30+shi);write_data(0x30+ge);}voidwrite_nyr(ucharadd,uchardate)//计算月日位{uintshi,ge;shi=date/10;ge=date%10;write_com(0x80+0x00+add);write_data(0x30+shi);write_data(0x30+ge);}voidwrite_nian(ucharadd,uchardate)//计算年位,年是百位{uintbai,shi,ge;bai=date/100%10;shi=date/10;ge=date%10;write_com(0x80+0x00+add);write_data(0x30+bai);write_data(0x30+shi);write_data(0x30+ge);}voidjiaxian()//设置键盘加显{if(k1num!=0){if(k2==0){delay(5);if(k2==0){while(!k2);if(k1num==1){miao++;if(miao==60)miao=0;write_fsm(8,miao);write_com(0x80+0x40+8);}if(k1num==2){fen++;if(fen==60)fen=0;write_fsm(5,fen);write_com(0x80+0x40+5);}if(k1num==3){shi++;.41. if(shi==24)shi=0;write_fsm(2,shi);write_com(0x80+0x40+2);}if(k1num==4){ri++;if(ri==31)ri=1;write_nyr(8,ri);write_com(0x80+0x00+8);}if(k1num==5){yue++;if(yue>12)yue=1;write_nyr(5,yue);write_com(0x80+0x00+5);}if(k1num==6){nian++;if(nian==90)nian=0;write_nian(1,nian);write_com(0x80+0x00+1);}if(k1num==7){week++;if(week>7)week=1;write_week(15,week);write_com(0x80+0x00+15);}if(k1num==8){s++;if(s==24)s=0;write_fsm(11,s);write_com(0x80+0x40+11);}if(k1num==9){f++;if(f==59)f=0;write_fsm(14,f);write_com(0x80+0x40+14);}if(k1num==10){n++;if(n==3)n=1;write_tim(0,n);write_com(0x80+0x40+0);}}}}}voidjianxian()//设置键盘减显{if(k1num!=0){if(k3==0)//K3设置.41. delay(5);if(k3==0){while(!k3);if(k1num==1){miao--;if(miao==-1)miao=59;write_fsm(8,miao);write_com(0x80+0x40+8);}if(k1num==2){delay(5);fen--;if(fen==-1)fen=59;write_fsm(5,fen);write_com(0x80+0x40+5);}if(k1num==3){shi--;if(shi==-1)shi=23;write_fsm(2,shi);write_com(0x80+0x40+2);}if(k1num==4){ri--;if(ri<1)ri=31;write_nyr(8,ri);write_com(0x80+0x00+8);}if(k1num==5){yue--;if(yue<1)yue=12;write_nyr(5,yue);write_com(0x80+0x00+5);}if(k1num==6){nian--;if(nian==0)nian=90;write_nian(1,nian);write_com(0x80+0x00+1);}if(k1num==8){s--;if(s==0)s=23;write_fsm(11,s);write_com(0x80+0x40+11);}if(k1num==9){f--;if(f==-1)f=59;write_fsm(14,f);write_com(0x80+0x40+14);}if(k1num==10).41. {n--;if(n==1)n=3;write_tim(0,n);write_com(0x80+0x40+0);}}}}voidkeyk4()//K4是锁定{if(k4==0){delay(5);if(k4==0)TR0=1;{while(!k4);k1num=0;write_com(0x0c);}}}voidkeyk1()//菜单光标设置{if(k1==0){delay(5);if(k1==0){while(!k1);k1num++;TR0=0;if(k1num==1){write_com(0x80+0x40+8);write_com(0x0f);}if(k1num==2){write_com(0x80+0x40+5);}if(k1num==3){write_com(0x80+0x40+2);}if(k1num==4){write_com(0x80+0x00+8);}if(k1num==5){write_com(0x80+0x00+5);}if(k1num==6){write_com(0x80+0x00+1);}if(k1num==7){write_com(0x80+0x00+14);}if(k1num==8){write_com(0x80+0x40+11);.41. }if(k1num==9){write_com(0x80+0x40+14);}if(k1num==10){write_com(0x80+0x40+0);}}}jiaxian();jianxian();keyk4();}voidinit()//启动LCD初始化数据{ucharnum;lcd_rs=0;lcd_en=0;shi=07;fen=49;miao=30;nian=2013;week=1;yue=5;ri=13;s=00;f=00;n=1;write_com(0x38);//不监察忙信号write_com(0x0c);//显示开光标设置write_com(0x06);//显示光标移动设置write_com(0x01);//显示清屏write_com(0x80);//数据指针write_com(0x80+0x00);for(num=0;num<16;num++)//延时15ms{write_data(table[num]);//年月日的数据延时delay(5);}write_com(0x80+0x40);for(num=0;num<16;num++){write_data(table1[num]);//时的延时delay(5);}//时钟初始化设置TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;}voiddisplay(){if(count==18)//是秒是的时间{count=0;miao++;if(miao==60){miao=0;fen++;if(fen==60){fen=0;shi++;if(shi==24){shi=0;.41. ri++;week++;}if(week>7){week=1;}//计算星期日if(yue==2){if((nian%4==0&&nian%100!=0)|(nian%400==0))//计算闰年{yue29();}else{yue28();}}elseif((yue==4)|(yue==6)|(yue==9)|(yue==11))//计算大小月{yue30();}else{yue31();}if(yue>12){yue=1;nian++;}{if(nian>999)nian=0;write_nian(1,nian);}{write_nyr(5,yue);}{write_nyr(8,ri);}write_fsm(2,shi);}write_fsm(5,fen);}write_fsm(8,miao);{write_week(15,week);}{write_fsm(11,s);}{write_fsm(14,f);}{write_tim(0,n);}}}voidyue31()//大月变量{if(ri>31){ri=1;yue++;}}voidyue30()//小月变量{if(ri>30){ri=1;yue++;}}voidyue29()//闰天变量{if(ri>29){ri=1;yue++;}}voidyue28()//平月变量{if(ri>28){ri=1;yue++;}}voidweek7(){if(week==7)week=0x37;.41. }voidmain()//主函数{P0=0;init();while(1){keyk1();display();week7();Timing();}}voidtime0()interrupt1//中断子函数{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;//时钟}voidTiming()//定时闹钟设置。{if(shi==07&&fen==50&&miao>=0&&miao<=15){beep=~beep;}if(shi==8&&fen==00&&miao>=0&&miao<=15){beep=~beep;}if(shi==8&&fen==50&&miao>=0&&miao<=15){beep=~beep;}if(shi==9&&fen==00&&miao>=0&&miao<=15){beep=~beep;}if(shi==9&&fen==50&&miao>=0&&miao<=15){beep=~beep;}if(shi==10&&fen==10&&miao>=0&&miao<=15){beep=~beep;}if(shi==11&&fen==00&&miao>=0&&miao<=15){beep=~beep;}if(shi==11&&fen==10&&miao>=0&&miao<=15){beep=~beep;}if(shi==12&&fen==00&&miao>=0&&miao<=15){beep=~beep;}.41. if(shi==14&&fen==20&&miao>=0&&miao<=15){beep=~beep;}if(shi==14&&fen==30&&miao>=0&&miao<=15){beep=~beep;}if(shi==15&&fen==20&&miao>=0&&miao<=15){beep=~beep;}if(shi==15&&fen==30&&miao>=0&&miao<=15){beep=~beep;}if(shi==16&&fen==20&&miao>=0&&miao<=15){beep=~beep;}if(shi==16&&fen==40&&miao>=0&&miao<=15){beep=~beep;}if(shi==17&&fen==30&&miao>=0&&miao<=15){beep=~beep;}if(shi==17&&fen==40&&miao>=0&&miao<=15){beep=~beep;}if(shi==18&&fen==30&&miao>=0&&miao<=15){beep=~beep;}if(shi==19&&fen==20&&miao>=0&&miao<=15){beep=~beep;}.41. if(shi==19&&fen==30&&miao>=0&&miao<=15){beep=~beep;}if(shi==20&&fen==20&&miao>=0&&miao<=15){beep=~beep;}if(shi==20&&fen==30&&miao>=0&&miao<=15){beep=~beep;}if(shi==21&&fen==20&&miao>=0&&miao<=15){beep=~beep;}if(shi==23&&fen==00&&miao>=0&&miao<=15){beep=~beep;}}.41.'