




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机的作息时间钟的设计毕业论文目 录第一章 绪论11.1课题研究意义11.2 国内外研究现状11.3 研究内容2第二章 核心芯片及元件介绍32.1 AT89C52简介32.1.1AT89C52芯片的引脚42.1.2AT89C52特点72.2 LM016L显示屏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电源仿真图265.3响铃实现仿真图265.4性能及结果误差分析27第六章 结论与展望286.1结论286.2展望28致 谢30参考文献31附 录32第一章 绪论1.1课题研究意义科技的进步需要技术不断的提升。一块大而复杂的模拟电路花费了您巨大的精力,繁多的元器件增加了您的成本。而现在,只需要一块几厘米见方的单片机,写入简单的程序,就可以使您以前的电路简单很多。相信在使用并掌握了单片机技术后,不管在今后开发或是工作上,一定会带来意想不到的惊喜。该系统以AT89C52为主体的设计,整体性好,人性化强、可靠性高,实现了对时间控制的智能化,摆脱了传统由人来控制时间的长短的不便,是现代学校必不可少的设备。本设计是一个具有报时功能的作息时间控制钟。它利用AT89C52单片机的定时器计时,进行时间计算;在进行时间计算,分每加一时,都与规定的作息时间比较,如果相等则进行相应的控制或动作。由处理芯片,供电电路,控制按键,显示部分组成,系统扩展五个按键用于报时及校正时间。1.2 国内外研究现状现今,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校。数字式电子钟用集成电路计时时,译码代替机械式传动,LED显示器代替指针显示时间,减小了计时误差。这种电子钟具备显示时、分、秒的功能,还可以对时、分、秒进行校对,片选的灵活性好。随着科学技术的迅速发展,电子时钟正迅速取代纸质日历、年历和一般机械电子时钟。电子时钟走时准确、功能多样、外观时尚、使用方便。但它们的核心部分都有两个共同点,一是采用高性能时钟芯片;二是大都采用单片机控制。这些电路的接口简单、价格低廉。1.3 研究内容 综合利用所学单片机知识完成一个单片机应用系统设计并仿真、由硬件实现,从而加深对单片机软硬知识的理解,获得初步的应用经验,为走出校门从事单片机应用的相关工作打下良好基础。以往的作息时间控制系统只具备基本时钟(显示当前时间的小时及分钟)功能,而且采用数字电路实现,致使电路非常复杂,计时精度不高,功能简单。本设计的系统具备如下特点:(1) 基本时钟功能之外,还可以显示年、月、日、星期等信息,具备自动识别闰月,每月的天数。(2)通过单片机控制,既保证了系统结构简单,又保证了控制时间的精度和可靠性,且通过外扩电路还可以实现多种功能。 (3)设置了五按钮的控制按键,以保证调时间、日期、星期,同时设置了单片机复位按钮。(4)具备供电电路,直接将市电转换成单片机需要的直流5v电压。带有备用电源,停电后时钟依旧工作时间不停止。第二章 核心芯片及元件介绍2.1 AT89C52简介图1 AT89C52接口图AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,其主要功能特性如下:(1兼容MCS51指令系统(2)8kb可反复擦写(大于1000次)Flash ROM;(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电源的正负端。P0P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(3239 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。P0口: 一组8 位漏极开路型双向I/O 口, 也即地址/数据总线复用口。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。P1口:一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。表1 P1.0和P1.1的第二功能表1 p1.0和p1.1功能引脚号功能特性P1.0T2,时钟输出P1.1T2EX(定时/计数器2)P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX DPTR 指令)时,P2 口送出高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 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次PSEN信号。EA/VPP:外部访问允许。欲使CPU 仅访问外部程序存储器(地址为0000HFFFFH),EA 端必须保持低电平(接地)。需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.1.2AT89C52特点时钟振荡器 :AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图10。外接石英晶体(或陶瓷谐振器)及电容C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容C1、C2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用30pF10pF,而如使用陶瓷谐振器建议选择40pF10F。用户也可以采用外部时钟。采用外部时钟的电路如图10 右图所示。这种情况下,外部时钟脉冲接到XTAL1 端,即内部时钟发生器的输入端,XTAL2 则悬空。由于外部时钟信号是通过一个2 分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。掉电模式:在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM 和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器,但不改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。2.2 LM016L显示屏液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用,其特点如下: (1)LM016L显示质量高,由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。因此,液晶显示器画质高且不会闪烁。(2)液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。(3)液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。(4)相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。(5)液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。2.2.1显示屏主要技术参数:(1)显示容量:162个字符(2)芯片工作电压:4.55.5V(3)工作电流:2.0mA(5.0V)(4)模块最佳工作电压:5.0V(5)字符尺寸:2.954.35(WH)mm2.2.2引脚功能说明LCD采用标准的14脚(无背光)或16脚(带背光)接口,各脚接口说明如表2所示:表2 液晶屏接口编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据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端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为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计数器地址10写数到CGRAM或DDRAM)10要写的数据内容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:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。读操作时序如图2所示:图2 读操作时序写操作时序如图3所示: 图3 写操作时序2.2.4显示屏的RAM地址映射液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图是内部显示地址。如图4所示图4 模块显示地址例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”这样液晶显示模块可以和单片机AT89C52直接接口。第三章 硬件电路设计3.1总体电路设计:时间作息控制的主体电路应包括秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分。按键功能说明:K1设置时间;K2 加一;K3,减一;K4,退出;K5,复位。时间作息控制的系统框图5如下所示:AT89C52复位、时钟等电路按钮电路LED显示电路声音指示电路电源供电电路 图5 控制系统3.2硬件系统各部分电路设计3.2.1系统复位电路的设计单片机系统一般应有手动或上电复位电路。复位电路的实现通常有两种方式:、RC复位电路;、专用监控电路。前者实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。复位电路主要用来在单片机的程序进入死循环后,能使单片机重新从头执行程序而不会无休止的执行程序。本设计采用了上电按钮电平复位电路,如图6图6 复位电路3.2.2系统时钟电路的设计:对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。但由于实际工作过程中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在实际应用中一定要注意正确选择参数(3010 PF),并保证对称性(尽可能匹配),这两个电容元件对闹钟的走时误差有很大关系,并且选用正规的瓷片或云母电容,如果可能的话,温度系数要尽可能低。另外,瓷片电容的实际焊接距离不应该离单片机太远否则误差较大。具体的时钟电路如图7所示:图7 时钟产生电路3.2.3闹铃电路设计:闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。其电路设计参见系统原理图。如图8所示图8 闹铃电路3.2.4显示电路设计:本设计采用了液晶屏显示电路。在液晶点亮时,为了简化电路,降低成本,采用动态显示的方式,液晶显示屏共用一个8位的I/O,其分别和p0.0-p0.7相连接。 3位控制写入写出数据口,而将其相应的段选线并联在一起分别为p2.2、p2.4、p2.6。到达定时时间时,由计时系统的输出状态产生一脉冲信号,然后去触发蜂鸣器实现闹铃。校时电路是用来对“年”、“月”、“日”、“星期“、“时”、“分”、“秒”显示数字进行校对调整的。具体的电路设计如图9示:图9 显示电路3.2.5定时调试按键电路设计本设计因为使用到的键数目比较少,不宜采用矩阵式键盘,采用了功能直观简洁方便的独立式键盘,而且考虑了键盘的消抖问题。比较容易理解。每个键的具体功能如下:K1设置时间;K2 加一;K3,减一;K4,退出。按键定义如图10所示:图10 按键电路3.2.6电源电路设计电路将市供电转换为单片机需要的5v电压,由变压线圈,整流电路,稳压器,电容和二极管构成。正输出三端稳压器7805组成的电源模块,三端集成稳压器只有三个引端:输入端,输出端和公共端,在电路连接中比较简单。考虑对于集成稳压管的保护,一般在稳压管的输入端和输出端之间跨接一个保护二极管,其作用就是在输入端短路时,使接在输出端的电容能够通过二极管放电,从而达到保护的目的。其中二极管选1N4007即可满足设计。如图11所示图11 电源电路第四章 软件设计4.1主模块设计主模块是系统软件的主框架。结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下”法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。软件设计的重点在于秒脉冲的产生、显示的实现、以及按键处理等方面。同时还要包含各种功能的实现例如日期,星期,闹铃。显示的方式也是软件设计的重要一部分。本系统的主模块的程序框图如下图12所示:单片机系统初始化定时初始化中断初始化串口初始化显示待机指示符设定闹铃时间判设置闹铃时间否?显示刷新启动走时有关变量初始化刷新显示判时或分变化否?秒指示判秒到否?闹铃判是否到闹铃时间?延时YYYY 图12 程序框图4.2显示模块设计显示是由显示代码取得相应的段码,显示段码数据的并行发送,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。程序流程如图13所示:图13 显示模块流程4.3时间设定模块设计时间设定模块的设计要点是按键的去抖处理与多种状态公用一个键的处理问题。即只涉及4个键完成了4位时间参数的设定。软件法去抖动的实质是用延时,即检测到某一键状态变化后延时一段时间,再检测该按键的状态是否还保持着,如是则作为按键处理,否则,视为抖动,不予理睬。去抖中的延时时间一般参考资料多描述为10ms左右,实际应用中,应大于20ms,否则,会导致按一次作多次处理,影响程序正常执行。按键消抖流程图原理如图14所示:图14 按键消抖原理4.4闹铃功能的实现闹铃功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。在每次循环扫描的过程中,判断现在的时间和定时的时间是否一致。一致的话,闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动蜂鸣器发声实现报时。时间调节电路根据不同状态下的具体按键意义将相对应的计数器加以改变,并通过数码管显示出来。校园作息时间如下表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 校园作息时间第五章 软件仿真及结果分析本次仿真采用proteus professional 软件进行仿真,通过keil 软件进行单片机.hex文件的编写与调试。实现了设计所要求的具体内容。5.1单片机仿真图 在proteus中画好仿真电路图,然后进行电气规则检查,没有错误后将keil编译软件中生成的.hex文件导入单片机中。点击仿真按钮,单片机仿真图如下图15所示: 图15 单片机仿真结果5.2电源仿真图 在proteus中放置好元器件连接好导线,完成电气规则检查。然后点击仿真按钮,就能通过电压表清楚的看仿真后的电压。如图16所示:图16 电源仿真5.3响铃实现仿真图 当时间和程序中闹铃的时间相符合的时候,单片机p2.3产生低电平脉冲使扬声器产生蜂鸣。持续十五秒后闹铃停止。如图17所示:图17 响铃仿真5.4性能及结果误差分析该作息时间控制器有四个按键: K1, K2,K3和K4。初始加电时数码管显示时钟计数初值并运行。时钟正常显示运行状态时,按K1键进行时间设置,可以分别按K2和K3键进行加1,减1校时,使其校正到标准时间;按K4键设置退出。该电路显示的误差主要由晶振自身的误差所造成,晶振的误差约为0. 00010. 000001。在软件的编程过程中所产生的误差比较小,另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计误差很小。 在电源电路设计中将220v交流转换成5v直流电,通过仿真结果发现为5.02v,该电路显示的误差主要是由互感线圈互感系数以及电路中电容大小共同引起的误差。这种误差是是可以接受的。第六章 结论与展望 6.1结论 在日常的生活中,人们时时刻刻都需要知道时间,时间是指导人们生活和工作的一个重要尺度,由此决定了必须要有告诉人们当前时间的方法和产品。定时和实时时钟在日常生活中扮演着非常重要的角色。目前市场上实现时钟功能的产品大多是以单片机为控制器,外围搭建一些功能电路,如显示功能电路。在精度要求不高的场合,可以采用定时中断,以软件方式实现时钟的基本功能,可以降低系统成本;缺点是误差较大,可靠性一般。如果精度要求较高且可靠,则应在单片机系统中扩展外部时钟芯片,目前广泛应用的DS1302、PCF8583、X1203等芯片均可以满足要求。该控制器由液晶显示器构成,具有公历、基本时钟功能、多路电气设备的控制。由于在设计时考虑了尽量使产品体积最小,操作简单等因素,故该控制器体积小、可靠性高、价格低廉,可广泛应用于学校、工厂和机关的自动打铃、电视、路灯、室内照明及其他对象控制,也可用于家庭或学生寝室进行时间指示及多点时间提醒等。6.2展望作息时间控制系统在生活中被广泛使用,从最早的采用数字电路实现到采用专用的集成电路来实现再到现在的利用单片机来实现,这期间经历了一段比较漫长的过程,而且随着科学技术的迅速发展,以单片机为控制核心的作息时间控制系统正迅速取代以往的纸质日历、年历和一般机械电子时钟以及人工打铃的旧方式,以其走时准确、功能多样、外观时尚、使用方便,深受广大消费者的青睐。作息时间控制系统产品琳琅满目,但它们的核心部分都有两个共同点,一是采用高性能时钟芯片二是大都采用单片机控制。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本设计系统一是为了节约成本,二是为了精简结构,因此键盘采用独立式键盘,若是不考虑上述两方面的因素,可以采用行列式键盘,这样调整时间时会更加方便、快捷。近年来国内外各大厂商纷纷推出了基于串行总线方式的LED显示器接口芯片,如MAXIN公司的MAX7219,力源的PS7219以及周立功的zlg7289等。这些芯片与单片机的接口一般采用SPI总线方式,具有占用I/O口线少,与单片机接口程序易于实现的特点。有的芯片如zlg7289还内含键盘控制器,这样只要一片芯片便可实现显示和键盘功能,使用十分方便。相信随着科学技术的发展,以后会设计出更多更好的作息时间控制系统。 致 谢在作息时间钟的整个设计和研究过程中我得到了老师、同学、朋友们的帮助,在此我要一一感谢他们。首先我要感谢我的指导老师周鹏教授,他在百忙之中抽出时间对该课程设计的初稿进行审校,提出具体修改意见。老师不仅授予我丰富的专业知识,还教我懂得了许多道理使我受益颇多。在毕业之际,我谨向周老师致以衷心的感谢!其次,还要感谢我的室友和同学,他们在资料收集和毕业设计的一些具体环节上给予了我巨大的帮助并热情的帮我解决设计过程中遇到的一些问题。最后感谢所有帮助过我的人!谢谢! 参考文献1程琤.单片机原理与应用系统开发M.北京:国防工业出版社,20102康华光.电子技术基础模拟部分M.北京:高等教育出版社,20103任文霞.电子电路仿真技术M.北京:中国电力出版社,20084谭浩强.c程序设计M.北京:清华大学出版社,20105 邬宽明单片机外围器件实用手册M.北京:北京航空航天大学出版社,19986无线电爱好者丛书编委会,黄继昌.实用报警电路M.北京:北京航空航天大学出版社,20037 张敏,任琼LED显示屏几种控制电路的比较J.江汉大学报,2003,22(4):67698 严天峰,张俊谟单片机应用技术讲座J电子世界,2006:1-109李春玲.单片机的键盘接口N.电子报,2009-03-22(3)10刘文秀.单片机系统仿真D.沈阳:沈阳工业大学,2004:1-7附 录作息时间控制系统程序清单.42.#include #define uchar unsigned char#define uint unsigned int#define ulong unsigned longuchar code table=2013:05:13Week:1;/uchar code table1=T:07:49:30#00:00;sbit lcd_rs=P22;/定义LCD端口sbit lcd_rw=P24;sbit lcd_en=P26;sbit k1=P10;/菜单键光标位sbit k2=P12;/加键sbit k3=P14;/减键sbit k4=P16;/退出键sbit beep=P23;/sbit werr=P32;void yue31();/大月void yue30();/小月void yue29();/闰天void yue28();/平月void Timing();void week7();uchar count, k1num;/声明秒的变量char shi,fen,miao;/声明时分秒uint nian, yue,ri,week;/声明年月日星期uchar f,s,n;/定时器/void delay(uchar z)/延时函数 uchar x,y; for(x=z;x0;x-) for(y=110;y0;y-);void write_com(uchar com)/lcd写指令 lcd_rs=0; lcd_rw=0; lcd_en=0; P0=com; delay(5); lcd_en=1; delay(5); lcd_en=0;void write_data(uchar date)/lcd写数据 lcd_rs=1; lcd_rw=0; lcd_en=0; P0=date; delay(5); lcd_en=1; delay(5); lcd_en=0;void write_week(uchar add,uchar date)/计算星期显示位 uchar ge; ge=date/1; write_com(0x80+0x00+add); write_data(0x30+ge);void write_tim(uchar add,uchar date) uchar ge; ge=date/1; write_com(0x80+0x40+add); write_data(0x30+ge);void write_fsm(uchar add,uchar date)/计算时分秒位 uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_data(0x30+shi); write_data(0x30+ge);void write_nyr(uchar add,uchar date)/计算月日位 uint shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x00+add); write_data(0x30+shi); write_data(0x30+ge);void write_nian(uchar add,uchar date)/计算年位,年是百位 uint bai,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);void jiaxian()/设置键盘加显 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+; 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(yue12) 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(week7) 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); void jianxian()/设置键盘减显 if(k1num!=0) if(k3=0)/K3设置 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(ri1) ri=31; write_nyr(8,ri); write_com(0x80+0x00+8); if(k1num=5) yue-; if(yue1) 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) n-; if(n=1) n=3; write_tim(0,n); write_com(0x80+0x40+0); void keyk4()/K4是锁定 if(k4=0) delay(5); if(k4=0) TR0=1; while(!k4); k1num=0; write_com(0x0c); void keyk1()/菜单光标设置 if(k1=0) delay(5); if(k1=0) whil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年低压电工作业规范与安全知识测试题库及解析
- 2025年乡镇卫健办招聘面试模拟题计生协管员岗位专业知识问答
- 2025年中小学编制语文教师招聘面试之高频考点梳理与应对策略
- 2025年国际贸易实务操作手册及模拟题解析
- 2025年新型高性能低合金钢、合金钢材料合作协议书
- 2025年压纸轮合作协议书
- 2025年家电制造设备项目建议书
- 护士防护病毒知识培训课件
- 2025年医用气体终端项目合作计划书
- 抢救管理相关知识课件
- 2025浙江温州市公用事业发展集团有限公司面向高校招聘31人(第一批)笔试模拟试题及答案解析
- 色彩的三属性05课件
- 新概念第一册课文讲解
- CMF中国宏观经济专题报告第107期稳定币 货币金融体系演进的新支点
- 真空熔炼工的试题及答案
- 感染伤口清创原则与方法
- 中铁施工管理办法
- 基孔肯雅热理论培训试题
- 思政教学试讲课件
- T-CFIE 002-2024 可持续供应链风险识别与管理
- 2025年高校教师岗前培训高等教育心理学知识竞赛考试题库70题及答案
评论
0/150
提交评论