基于单片机设计LCD显示电子时钟.doc

上传人:仙人指路1688 文档编号:4148749 上传时间:2023-04-07 格式:DOC 页数:42 大小:56.50KB
返回 下载 相关 举报
基于单片机设计LCD显示电子时钟.doc_第1页
第1页 / 共42页
基于单片机设计LCD显示电子时钟.doc_第2页
第2页 / 共42页
基于单片机设计LCD显示电子时钟.doc_第3页
第3页 / 共42页
基于单片机设计LCD显示电子时钟.doc_第4页
第4页 / 共42页
基于单片机设计LCD显示电子时钟.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《基于单片机设计LCD显示电子时钟.doc》由会员分享,可在线阅读,更多相关《基于单片机设计LCD显示电子时钟.doc(42页珍藏版)》请在三一办公上搜索。

1、基于单片机设计LCD显示电子时钟 西安高新科技职业学院毕 业 设 计(论文)课题名称 基于单片机设计LCD显示电子时钟 年 级 系 别 专 业 班 级 姓 名 学号 指导教师 西安高新科技职业学院毕业设计(论文)成绩评议年级08级系别计科系专业应用电子姓名王伟华题目基于单片机设计LCD显示电子时钟指导教师评阅意见成绩评定: 指导教师: 年 月 日评阅教师意见 指导教师: 年 月 日答辩小组意见指导教师: 年 月 日毕业设计(论文)任务书本任务书下达给:姓名年级系专业 设计题目: 2重点研究的问题及原始资料及依据(包括设计或论文的工作基础、研究条件、应用环境等) 设计适用于各种办公场合、家庭生活

2、以及各种需要显示时间的地方。 重点研究问题包括: 1 、对单片机外围电路的熟悉。 2 、时间可调节,并且时间精准无误 3 、要求尽可能考虑周到,比如:1602液晶的显示,温度范围,受湿受潮;断电后时间是否保持等等。3主要参考资料、文献,其他要说明的问题 下达任务日期: 年 月 日 要求完成日期: 年 月 日 答辩日期: 年 月 日 指导教师:论文(设计)题目学生姓名专业班级指导教师毕业论文指导记录毕业论文答辩记录(注明答辩过程摘要、结果及日期)中文摘要本设计使用11.0592MHZ晶振与单片机AT89C52相连接,以AT89C52芯片为核心,采用1602的并行操作方式显示,通过使用该单片机,实

3、现把时间显示在1602液晶上,并且按秒实时更新。可以通过板子上的按键随时调节时钟的年、月、日、星期、时、分、秒,按键设计3个有效按键,分别有功能选择键、数数值增大键、数值减小键。在每次的按键按下时,蜂鸣器有“滴”的提示声。再利用AT24C02设计实现断电自动保护显示数字的功能,当下次上电时会接着上次上电前的时间继续运行。通过软硬件结合达到最终目的。关键词: 电子钟 单片机 1602液晶 C语言目 录第一章引言1第二章方案设计3第三章硬件设计4 (一) 89C52单片机的内部结构4 (二) 89C52单片机的引脚功能5 (三) 89C52单片机的模块设计9 1.单片机与P0口排阻.9 2. US

4、B供电电路部分.10 3. 复位电路.10 4. 显示模块设计.11 5.晶振电路部分.16 6. 蜂鸣器电路.17 7. 矩正键盘电路.17第四章 系统软件设计19 (一) 软件程序流程19 (二) 程序设计步骤19 (三) 程序设计的主要模块20第五章 设计总结29参考文献30致谢31第一章 引言单片微型计算机简称单片机,是典型的嵌入式(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体

5、积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。 早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市

6、场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。 单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机

7、、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 单

8、片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可.用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!.它主要是作为控制部分的核心部件。 它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。 单片机芯片单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的

9、器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性! 第章方案设计实现的方案较多,目前广泛采用的是基于,本设计将介绍基于单片机实现的方案。单片机系统方案此方案采用电路+晶振电路+复位电路+AT89C52+1602液晶第三章硬件设计(一)80C52单片机的内部结构 图3-1为80C52单片机功能结构框图 80C52 芯片

10、内部集成了 CPU、RAM、ROM、定时/计数器和I/O口等各功能部件,并由内部总线把这些连接在一起。80C52单片机内部包含以下一些功能部件: 1 一个8位CPU; 2 一个片内振荡器和时钟电路; 3 4KB ROM; 4 128B内RAM; 5 可寻址64KB的外ROM和外RAM控制电路; 6 三个16位定时/计数器; 7 21个特许功能寄存器; 8 4个8位并行I/O口,共32条可编程I/O端线; 9 一个可编程全双工串行口; 10 5个中断源,可设置成2个优先级。外时钟源 外部事件计 中断 控制 并 行 口 串行通信 图3-1 80C52单片机功能结构框图(二) 80C52单片机的引脚

11、功能 89C52单片机一般采用双列直插DIP封装,共40个引脚,图3-2分别为引脚排列图和逻辑符号图。40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。 图3-2 80C52引脚图1.电源 1 Vcc芯片电源,接+; 2 Vss接地端。2.时钟 XTAL1、XTAL2晶体振荡电路反相输入端和输出端。使用内部振荡电路时外接石英晶体。3.控制线 控制线共有4根,其中3根是复用线。所谓复用线是指具有两种功能,正常使用时是一种功能,在某种条件下是另一种功能。 1 ALE/PROG地址锁存允许/片内EPROM编程脉冲。 ALE功能:用来锁存P0口送出的低8位地址。 80C52在并行扩展外存储器(包

12、括并行扩展I/O口)时,P0口用于分时传送低8位地址和数据信号,且均为二进制数。那么如何区分是低8位地址还是8位数据信号呢?当ALE信号有效时,P0口传送的是低8位地址信号;ALE信号无效时,P0口传送的是8位数据信号。在ALE信号的下降沿,锁定P0口传送的内容,即低8位地址信号。 需要指出的是,当CPU不执行访问外RAM指令(MOVX)时,ALE以时钟振荡频率1 / 6的固定频率输出,因此ALE信号也可作为外部芯片CLK时钟或其他需要。但是,当CPU执行MOVX指令时,ALE将跳过一个ALE脉冲。 ALE端可驱动8个LSTTL门电路。 PROG功能:片内有EPROM的芯片,在EPROM编程期

13、间,此引脚输入编程脉冲。 2 PSEN外ROM读选通信号。 80C51读外ROM时,没个机器周期内PSEN两次有效输出。PSEN可作为外ROM芯片输出允许OE的选通信号。在读内ROM或读外RAM时,PSEN无效。 PSEN可驱动8个LSTTL门电路。 3 RST/Vpd复位/备用电源。 正常工作时,RST(Reset)端为复位信号输入端,只要在该引脚上连续保持两个机器周期以上高电平,80C52芯片即实现复位操作,复位后一切从头开始,CPU从0000H开始执行指令。 Vpd功能:在Vcc掉电情况下,该引脚可接上备用电源,由Vpd向片内供电,以保持片内RAM中的数据不丢失。 4 EA/Vpp 内外

14、ROM选择/片内EPROM编程电源。 EA功能:正常工作时,EA为内外ROM选择端。80C52单片机ROM寻址范围为64KB,其中4KB在片内,60KB在片外(80C31芯片无内ROM,全部在片外)。当EA保持高电平时,先访问内ROM,但当PC(程序计数器)值超过4KB(0FFFH)时,将自动转向执行外ROM中的程序。当EA保持低电平时,则只访问外ROM,不管芯片内有否内ROM。对80C31芯片,片内无ROM,因此EA必须接地。 Vpp功能:片内有EPROM的芯片,在EPROM编程期间,此引脚用于施加编程电源Vpp。 对4个控制引脚,应熟记起第一功能,了解其第二功能。 严格来讲,80C52的控

15、制线还应该包括P3口的第二功能。4. I/O引脚 80C52共有4个8位并行I/O端口,共32个引脚 1 P0口8位双向I/O口。 在不并行扩展外存储器 包括并行扩展I/O口 时, P0口可用作双向I/O口。 在并行扩展外存储器 包括并行扩展I/O口 时, P0口可用于分时传送低8位地址 地址总线 和8位数据信号 数据总线 。位结构如图3-3所示。P0口能驱动8个LSTTL门。 图3-3 P0口位结构 2 P1口8位准双向I/O口 “准双向”是指该口内部有固定的上拉电阻 。位结构如图3-4所示。 P1口能驱动为4个LSTTL门。图 3-4 P1口位结构 3 P2口8位准双向I/O口。在不并行扩

16、展外存储器 包括并行扩展I/O口 时, P2口可用作双向I/O口。在并行扩展外存储器 包括并行扩展I/O口 时, P2口可用于传送高8位地址 属地址总线 。P2口能驱动4个LSTTL门。P2口的位结构如图3-5所示,引脚上拉电阻同P1口。在结构上,P2口比P1口多一个输出控制部分。图 3-5 P2口位结构 4 P3口8位准双向I/O口。可作一般I/O口用,同时P3口每一引脚还具有第二功能,用于特殊信号输入输出和控制信号 属控制总线 。P3口驱动能力为4个LSTTL门。 图 3-6 P3口位结构P3口第二功能如下: P3.0RXD:串行口输入端; P3.1TXD:串行口输出端; P3.2INT0

17、:外部中断0请求输入端; P3.3INT1:外部中断1请求输入端 P3.4T0:定时/计数器0外部信号输入端; P3.5T1:定时/计数器1外部信号输入端; P3.6WR:外RAM写选通信号输出端; P3.7RD:外RAM读选通信号输出端。上述4个I/O口,各有各的用途。 在不并行扩展外存储器 包括并行扩展I/O口 时, 4个I/O口都可作为双向I/O口用。在并行扩展外存储器 包括并行扩展I/O口 时, P0口专用于分时传送低8位地址信号和8位数据信号,P2口专用于传送高8位地址信号。P3口根据需要常用于第二功能,真正可提供给用户使用的I/O口是P1口和一部分未用作第二功能的P3口端线。(三)

18、模块设计1.单片机与P0口排阻,本设计主要的硬件80C52以及上拉电阻连接线路图。2.USB供电电路部分,从外部引入5V的直流电,按下S1可以为单片机、复位电路提供电源。3. 复位电路,复位电路主要由型号为10UF/16V的电解电容,10K,1K的电阻以及按键S22构成,RST接芯片的相应引脚RST,构成上电复位和手动复位。上电复位是经过电容和10K的电阻上电以后就进行复位。手动复位是当开关S22按下时给引脚RST为高电平1,断开时引脚为低电平0。4. 显示模块设计(1)LCD显示模块LCD显示器分为字段显示和字符显示两种。其中字段显示与LED显示相似,只要送对应的信号到相应的管脚就能显示。字

19、符显示是根据需要显示基本字符。本设计采用的是字符型显示。系统中采用LCD1602作为显示器件输出信息与传统的LED数码管显示器件相比,液晶示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个汉字。LCD1602模块的引脚如图所示,其引脚功能如下:RS:数据和指令选择控制端,RS 0命令状态;RS 1数据R/W:读写控制线,R/W 0写操作;R/W 1读操作A:背光控制正电源 K:背光控制地E:数据读写操作控制位,E线向LCD模块发送一个脉冲,LCD模块与单片机间将进行一次数据交换DB0D

20、B7:数据线,可以用8位连接,也可以只用高4位连接,节约单片机资源。VDD:电源端 VEE:亮度控制端(1-5V) VSS:接地端图LCD1602模块LCD1602的显示操作四种基本操作LCD有四种基本操作具LCD与单片机之间有四种基本操作RSR/W操作00写命令操作 初始化,光标定位等 01读状态操作 读忙标志位 10写数据操作 要显示内容 11读数据操作 可以把显示存储区中的数据反读出来 1 读状态字执行读状态字操作,如表3-1满足RS 0,R/W 1。根据管脚功能,当为有效电平时,状态命令字可从LCD模块传输到数据总线。同时可以保持一段时间,从而实现读状态字的功能。读状态字流.1所示。.

21、1读入状态字流程图 2 命令字.2所示为命令字,其主要介绍了指令名称、控制信号及控制代码。其指令名称是指要实现的功能;控制代号是采用的十六进制的数值表示的。1清零操作是指输入某命令字后即能将整个屏幕显示的内容全部清除;2归home位:将光标送到初始位;其中的号为任意,高低电平均可;3输入方式:设光标移动方向并指定整体显示,是否移动。I/D 0:减量方式,S 1:移位方式,S 0:不移位;4显示状态:D指设置整体显示开关;C指设置光标显示开关;B指设置光标的字符闪耀;5光标画面滚动:R/L指右移或左移;S/C指移动总体或光标;6功能设置:DL接口数位,L指显示行数,F显示字型;如DL 1:8位

22、0,4位N 1:2行 0:1行G 1:510 0:57 点阵 7CGRAM地址设制:相当于一个数据库,可以在其中选择所需要的符号;8DDRAM地址设制:显示定位;9读BF和AC:B为最高位忙的标志,F为标志位;10写数据:将数据按要求写入到对应的单元;11读数据:读相应单元内的数据;.2命令字 3 写命令字.2可知当RS 0,R/W 0时,才可以通过单片机或用户指令把数据写到LCD模块,此时就对LCD进行调制。可采用查询方式:先读入状态字,再判断忙标志位,最后写命令字。.3所示为写命令字的流程图。.3写命令字流程图1定义光标位置显示数据的某位,就是把显示数据写在相应的DDRAM地址中,DDRA

23、M地址占7位。SetDDRAMaddress命.4所示。光标定位,写入一个显示字符后,DDRAM地址会自动加1或减1,加或减由输入方式设置。.4Set DDRAM address命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0001AC6AC5AC4AC3AC2AC1AC0第1行DDRAM地址与第2行DDRAM地址并不连.4.4DDRAM地址row12345141516line180H81H82H83H84H8dH8eH8fHline20c0H0c1H0c2H0c3H0c4H0cdH0ceH0cfH2LCD初始化从通电开始延时,先经过判忙后再进行功能设置,过一段时间后可以设制显示

24、状态(如设制行、位或阵列)再经过延时清屏后才可以设置输入方式,具体实现过.5所示。.5LCD初始化流程图LCD显示程序的设计一般先要确定LCD的初始化、光标定位、确定显示字符后,.6显示。.6LCD显示程序流程图 单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XYAL2两个管脚接一只晶振及两只电容就构成了单片机的时钟电路,电路中电容器和对振荡频率有微调作用,通常取 3010 pF石英晶体选择6MH或12MHMHz只是为计算串口通信的波特率精准)都可以。时钟电路如图所示 ,在单片机的FM管脚接蜂鸣器电路,电路中 ,分别连接单片机的对应口,本设计中的时钟调节只用到了S9,S13,S

25、17来调节时钟进行时钟的调节。(注:调节时,如果调节按键不起作用,就是下载的USB口拔掉方可调节,因为那是键盘接口和下载口连接电路有冲突。)第四章 系统软件设计(一)软件程序流程根据需要,可将系统软件按照功能划分为4个模块,分别是主程序模块、液晶显示模块、中断服务程序模块,各模块的功能关系如图4-1所示。编写系统软件时,可首先编写各模块的底层驱动程序,而后是系统联机调试,编写上层主程序。图41结合电路,程序的总体思路是:1、点复位键后,进行时间显示,从0时0分0秒开始。2、按下功能键时,进行功能选择,此时按下时,光标闪烁,并且每次按下都伴随着“滴”的一声,同时按下功能键四次就会重新走时,下同。

26、3、按下增大键时进行增大调整,每次按下伴随蜂鸣器响。4、按减小键时进行减小调整,同样,每次按下时也伴随着蜂鸣器响。(二)程序设计步骤在程序设计过程中,我遇到了很多困难,这部分也是让我学到很多东西的地方。首先,我学习了定时器的相关知识,计数器的使用是很重要的组成部分,在这个设计中选择计数器T0。T0的工作方式有:方式0:不推荐方式1:16位计数器,常用方式2:自动重装初值的8位定时/计数器方式3:T0相当于两个独立的8位定时/计数器此程序采用方式1,方式1的定时时间t为t 216-M *12/fosc。其中M为定时器初值,fosc为12MHz(本设计用的11.0592MHz),若M0t 6553

27、6*12/2*106 65.536ms。因此可取50ms为计时单位,初值M应为50*10-3*106 216-M。M 15536 1XXXXXXXXXX000 3CB0。即定时器初值为 TH0 65536-50000 /256;TL0 65536-50000 %256;定时器中断20次为一秒,这部分在中断程序中用到。其次,我参看了文献中的设计思路,做到胸有成竹后再进行具体的程序书写工作。认真学习了教科书中关于C语言编程的问题,熟悉了C语言的编程方法和语法习惯。第三步就是进行具体的程序编写工作。(三)程序的主要模块1.延迟程序在液晶显示时,必然用到延迟程序,这里使用延迟50ms的程序,此程序需要

28、反复调用。此段程序是很简单的,但就是在这段简单的程序上,也会出现问题。void delay uint xms uint i,j; for i xms;i 0;i- for j 110;j 0;j- ; 2. 1602液晶读写程序void write_com uchar com rs 0; lcden 0; P0 com; delay 5 ; lcden 1; delay 5 ; lcden 0; void write_date uchar date rs 1; lcden 0; P0 date; delay 5 ; lcden 1; delay 5 ; lcden 0; void write_

29、shifenmiao uchar add,uchar date uchar shi,ge; shi date/10; ge date%10; write_com 0x80+0x40+add ; write_date 0x30+shi ; write_date 0x30+ge ; 3. 初始化程序void init uchar num;rd 0;dula 0;wela 0;lcden 0;shi 0;fen 0;miao 0;count 0;s1num 0;init_24c02 ;write_com 0x38 ;write_com 0x0c ;write_com 0x06 ;write_com

30、0x01 ; write_com 0x80 ;for num 0;num 15;num+ write_date tablenum ;delay 5 ; write_com 0x80+0x40+6 ; write_date : ; delay 5 ; write_com 0x80+0x40+9 ; write_date : ; delay 5 ; shi read_add 3 ; fen read_add 2 ; miao read_add 1 ; write_shifenmiao 4,shi ; write_shifenmiao 7,fen ; write_shifenmiao 10,miao

31、 ; TMOD 0x01; TH0 65536-50000 /256; TL0 65536-50000 %256; EA 1; ET0 1; TR0 1; 4.按键扫描程序void keyscan if s1 0 delay 5 ;if s1 0 s1num+;while !s1 ; di ; if s1num 1 TR0 0;write_com 0x80+0x40+10 ;write_com 0x0f ;/光标闪烁 if s1num 2 write_com 0x80+0x40+7 ; if s1num 3 write_com 0x80+0x40+4 ; if s1num 4 s1num 0;

32、 write_com 0x0c ;TR0 1; / if s1num! 0 if s2 0 delay 5 ;if s2 0 while !s2 ; di ; if s1num 1 miao+; if miao 60 miao 0; write_shifenmiao 10,miao ; write_com 0x80+0x40+10 ; write_add 1,miao ; if s1num 2 fen+; if fen 60 fen 0; write_shifenmiao 7,fen ; write_com 0x80+0x40+7 ; write_add 2,fen ; if s1num 3

33、shi+; if shi 24 shi 0; write_shifenmiao 4,shi ; write_com 0x80+0x40+4 ; write_add 3,shi ; / / if s1num! 0 if s3 0 delay 5 ; if s3 0 while !s3 ; di ; if s1num 1 miao-; if miao -1 miao 59; write_shifenmiao 10,miao ; write_com 0x80+0x40+10 ; write_add 1,miao ; if s1num 2 fen-; if fen -1 fen 59; write_s

34、hifenmiao 7,fen ; write_com 0x80+0x40+7 ; write_add 2,fen ; if s1num 3 shi-; if shi -1 shi 23; write_shifenmiao 4,shi ; write_com 0x80+0x40+4 ; write_add 3,shi ; 5.主程序void main init ;while 1 keyscan ; 6.定时器中断程序void timer0 interrupt 1 TH0 65536-50000 /256;TL0 65536-50000 %256;count+;if count 20 count

35、 0;miao+; if miao 60 miao 0;fen+;if fen 60 fen 0;shi+;if shi 24 shi 0; write_add 3,shi ;write_shifenmiao 4,shi ; write_add 2,fen ;write_shifenmiao 7,fen ; write_add 1,miao ;write_shifenmiao 10,miao ; 7. 2c402.h的EEPROM的操作函数程序#include24c02.h/ /bit write 0;sbit sda P20;sbit scl P21;void delay0 ; void start sda 1;delay0 ;scl 1;delay0 ;sda 0;delay0 ; void stop sda 0;delay0 ;scl 1;delay0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号