收藏 分享(赏)

功能完整的1602LCD时钟实验.doc

上传人:myw993772 文档编号:9480688 上传时间:2019-08-09 格式:DOC 页数:14 大小:153KB
下载 相关 举报
功能完整的1602LCD时钟实验.doc_第1页
第1页 / 共14页
功能完整的1602LCD时钟实验.doc_第2页
第2页 / 共14页
功能完整的1602LCD时钟实验.doc_第3页
第3页 / 共14页
功能完整的1602LCD时钟实验.doc_第4页
第4页 / 共14页
功能完整的1602LCD时钟实验.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、摘要本设计基于单片机技术原理,以单片机芯片STC89C52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个多功能数字时钟系统。单片机扩展的LCD显示器用来显示年、月、日、时、分、秒计数单元中的值。整个设计包括两大部分: 硬件部分和软件部分,以单片机为核心, 配以一定的外围电路和软件。硬件是整个系统的基础, 软件部分则要合理、充分地支持和使用系统的硬件, 从而完成系统所要完成的任务。本设计采用LCD液晶显示,电路简单使用广泛。该时钟系统主要由时钟模块、闹钟模块、液晶显示模块、键盘控制模块以及信号提示模块组成。能够准确显示时间(显示格式为年:月:日:时时:分分:秒秒,24小时制

2、),可随时进行时间调整,具有闹钟时间设置、闹钟开/关、止闹功能。设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。单片机在这种情况下诞生了基于单片机电子时钟。关键词:单片机 LCD1602 数字钟This design based on the single chip microcomputer principle, taking single-chip chip STC89C52 as core controller, through the hardware circuit and software production proced

3、ure formulation, designed and produced a multi-function digital clock system. SCM extended LCD display used to display date and time, minutes and seconds counting unit of values. The whole design includes two parts, hardware and software of, based on singlechip, match with certain peripheral circuit

4、 and software. Hardware is based in the whole system, the software part then be reasonable and fully support and use the system hardware, thus completing system to complete the task. This design USES the LCD, simple circuit is widely used. This clock system mainly by the clock module, alarm module,

5、LCD module, keyboard control module and signal hint module. To accurately display the time (display format for years: month: day: always: component: seconds seconds, 24-hour system), available for time to adjust, with alarm time setting, alarm clock on/off, stop joking function. Design with hardware

6、 and software into guiding ideology, give full play to the SCM functions, most functions through software programming realize, circuit straightforward, stability of the system is high. SCM in this case was born based on single-chip electronic clock.Keywords: SCM LCD1602 digital clock- 2 -前言数字钟是采用数字电

7、路实现对时,分,秒数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。近年来随着以计算机为轴心的各种各样信息处理装置的诞生,为适应这种新形势,信息家电,网络终端,广

8、播-通信等用途的 LCD 市场也将迅速扩大,而且如今 LCD 发展方向不仅在于大屏幕,而且在中小屏幕方面,例如汽车导航系统,摄像机,数字式照相机,便携式电视,PDA(个人数字助理),娱乐/游戏机,摄影机等有着进一步的发展。液晶显示器(LCD)具有功耗低、体积小、重量轻、超薄等许多其他显示器无法比拟的优点,近年来被广泛用于单片机控制的智能仪器、仪表和低功耗电子产品中。LCD 可分为段式 LCD、字符式 LCD 和点阵式 LCD。其中,段式 LCD 和字符式 LCD 只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求;而点阵式 LCD 不仅可以显示字符、数字,还可以显示各种图形、曲线以

9、及汉字、动画,并且可以实现屏幕滚动、反转、闪烁等功能,用途十分广泛。由此可见 LCD 的应用是如此广泛,所以用 MPU 控制液晶显示器是很普遍的应用。- 3 -目录1、任务设计与要求 42、总体设计 43、总体方案与论证 43.1 显示模块 43.2 电源模块 44、硬件设计 44.1 LCD 液晶显示电路 44.2 电源电路 54.3 单片机最小系统 54.4 闹钟电路 55、软件设计 65.1 程序流程图 65.2 程序设计 66、测量及调试 136.1 功能调试 136.2 测试仪器 136.3 测试与分析 137、设计总结 13参考文献 13附录一、操作说明 13附录二、元件清单 14

10、- 4 -1、任务设计与要求(1)具有时间设置、闹钟时间设置、开、闹钟关功能。(2)利用键盘或其它方式切换闹钟的定时、蜂鸣器的报警。2、总体设计本设计采用 STC89C52 单片机作为本系统的控制模块。由单片机控制显示日历和闹铃、时间。以 LCD 液晶显示器为显示模块,把单片机传来的数据显示出来,并且显示多样化。在显示电路中,主要靠按键来实现各种显示要求的选择与切换。系统框图如图 1 所示:图 1、系统框图 3、总体方案与论证3.1 显示模块显示部分是本次设计的重要部分,一般有以下两种方案:方案一:采用 LED 显示,分静态显示和动态显示。对于静态显示方式,所需的译码驱动装置很多,引线多而复杂

11、,且可靠性也较低。而对于动态显示方式,虽可以避免静态显示的问题,但设计上如果处理不当,易造成亮度低,有闪烁等问题。方案二:采用 LCD 显示。LCD 液晶显示具有丰富多样性、灵活性、电路简单、易于控制而且功耗小等优点,对于信息量多的系统,是比较适合的。鉴于上述原因,我们采用方案二。3.2 电源模块方案一:采用干电池作为系统电源。但需经常换电池,不符合节约型社会的要求。方案二:采用直流稳压电源作为系统主电源,干电池作为辅助电源。不仅不需要经常更换电源,并且当市电停止时能够采用干电池做为系统电源,使用更加安全可靠。基于以上分析,我们决定采用方案二4、硬件设计4.1 LCD 液晶显示电路LCD 液晶

12、显示模块采用 LCD1602 型号,具有很低的功耗,正常工作时电流仅2.0mA/5.0V。通过编程实现自动关闭屏幕能够更有效的降低功耗。LCD1602 分两行显示,每行可显示多达 16 个字符。LCD1602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制,并且还液晶显示器 键盘控制模 声音提示 单 片 机 - 5 -P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTP3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7XTAL2XTAL1GND P2.0P2.1P2.2P2.3P2.4P2

13、.5P2.6P2.7PSENALE/PGOGEA/VPPP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0VCCAT89S52*123456789J1CON9P00P01P02P03P04P05P06P07VCCC230PC330PY112M+C110UFR210KR11KS1SW-PBVCCP30P31P32P33T1220VD14017 D24017D34017 D44017Vin1GND2Vout 3U1 7805+C12200u +C30.47uC20.1u C40.01u12J15V9VR11K D1LED能利用空余的空间自定义字符。其接线如图 2 所示:1234567

14、891 01 11 21 31 41 51 6LCD16 02*P 00P 01P 02P 03P 04P 05P 06P 07P 23P 24P 25VCCVCCR 31 0KR 41 0图 2 LCD 显示电路4.2 电源电路双电源设计是本设计的重点。220V 交流转 5V 直流稳压电源会更加安全、实用。当没有交流电时,系统采用干电池供电;当接通交流电时,则电路自动切换到交流电供电,并且对干电池进行慢性充电。电路图如图 3:图 3 电源电路4.3 STC89C52 单片机最小系:最小系统包括晶体振荡电路、复位开关和电源部分。图 4 为单片机的最小系统。图 4 最小系统4.4 闹钟电路闹钟电

15、路有一个蜂鸣器和一个三极管 9012 和一个电阻组成,其中电阻的一个管脚- 6 -1234567891 01 11 21 31 41 51 6LCD16 02*P00P01P02P03P04P05P06P07P23P24P25VCCVCCR31 0KR41 0接单片机的 P3.6 口。如图 5 所示:图 5 闹钟电路5、软件设计5.1 程序总流程图系统总流程图如图 6 所示。流程图分析:首先系统初始化,系统开始运行,当有设置键按下时进入修改时间模式,无按键按下时读取时间数据送入液晶屏显示;在修改时间模式下设置时间完成后再送数据到液晶屏显示。图 6 程序总流程图5.2 程序设计#include

16、#include unsigned char code dis_week=“SUN,MON,TUE,WED,THU,FRI,SAT“;unsigned char code para_month13=0,0,3,3,6,1,4,6,2,5,0,3,5;/星期月参变数- 7 -unsigned char data dis_buf116; /lcd 上排显示缓冲区unsigned char data dis_buf216; /lcd 下排显示缓冲区unsigned char data year,month,date,week;/年、月、日、星期unsigned char data armhour,a

17、rmmin,armsec;/闹钟时、分、秒unsigned char data hour,min,sec,sec100; /时、分、秒、百分之一秒unsigned char data flag,vkey,skey;/设置状态计数标志、按键先前值、按键当前值bitalarm; /标识是否启用闹钟,1-启用,0-关闭sbit rs = P20; /LCD 数据/命令选择端(H/L)sbit rw = P21; /LCD 读/写选择端(H/L)sbit ep = P22; /LCD 使能控制sbit PRE = P33; /调整键(AN3)sbit SET = P34; /调整键(AN4)sbit

18、SPK = P36;void delayms(unsigned char ms);/延时程序bit lcd_busy(); /测试 LCD 忙碌状态程序void lcd_wcmd(char cmd); /写入指令到 LCD 程序void lcd_wdat(char dat); /写入数据到 LCD 程序void lcd_pos(char pos); /LCD 数据指针位置程序void lcd_init(); /LCD 初始化设定程序void pro_timedate(); /时间日期处理程序void pro_display(); /显示处理程序void pro_key(); /按键处理程序vo

19、id time_alarm(); /定时报警功能(闹钟)unsigned char scan_key(); /按键扫描程序unsigned char week_proc(); /星期自动计算与显示函数bit leap_year(); /判断是否为闰年void lcd_sef_chr(); /LCD 自定义字符程序void update_disbuf(unsigned char t1,unsigned char t2,unsigned char dis_h,unsigned char dis_m,unsigned char dis_s); /更新显示缓冲区函数/ 延时程序void delay(u

20、nsigned char ms) while(ms-) unsigned char i;for(i = 0; i 59)sec = 0; min+; if(min59)min=0; hour+; if(hour23) hour=0; date+;if (month=1|month=3|month=5|month=7|month=8|month=10|month=12)if (date31) date=1;month+; /大月 31 天if (month=4|month=6|month=9|month=11)if (date30) date=1;month+; /小月 30 天if (mont

21、h=2) if( leap_year() /闰年的条件if (date29) date=1;month+; /闰年 2 月为 29 天elseif (date28) date=1;month+; /平年 2 月为 28 天 if (month12) month=1;year+; if (year99) year=0; week_proc();if (sec=armsec /闹钟启用时,报警时间到,启动 Timer/显示处理程序void pro_display() unsigned char i;lcd_pos(0x00);for (i=0;i= 100)/1 秒时间 (100*10ms=100

22、0ms=1s)sec100 = 0; pro_timedate();/调用时间和日期处理程序 if (sec/0x00 表示显示 00 位置的自定义字符else update_disbuf(0x00,“ri-li“,hour,min,sec); pro_display(); /调用显示处理函数/按键扫描程序unsigned char scan_key() skey=0x00; /给变量 vkey 置初值skey|=PRE; /读取 PRE 键的状态skey=skey23) armhour=0;update_disbuf(0x50,“alarm:“,armhour,armmin,armsec);

23、 /更新显示数据pro_display(); /调用显示处理lcd_pos(0x49);break; /光标回到原调整位置case 2:armmin+; if (armmin59) armmin=0;update_disbuf(0x50,“alarm:“,armhour,armmin,armsec);pro_display(); lcd_pos(0x4c);break;case 3:armsec+;if (armsec59) armsec=0;update_disbuf(0x50,“alarm:“,armhour,armmin,armsec);pro_display(); lcd_pos(0x

24、4f);break;case 4:year+; if (year 99) year= 0;week_proc(); /星期自动运算update_disbuf(0x50,“time: “,hour,min,sec); pro_display();lcd_pos(0x05);break; case 5:month+;if (month12) month=1; week_proc(); /星期自动运算update_disbuf(0x50,“time: “,hour,min,sec);pro_display(); lcd_pos(0x08);break; case 6:date+;if(month=1

25、|month=3|month=5|month=7|month=8|month=10|month=12)if (date31) date=1; /大月 31 天if (month=4|month=6|month=9|month=11)if (date30) date=1; /小月 30 天if (month=2) if(leap_year() /闰年的条件if (date29) date=1; /闰年 2 月为 29 天else if (date28) date=1; /平年 2 月为 28 天week_proc(); /星期自动运算update_disbuf(0x50,“time: “,hou

26、r,min,sec);pro_display(); lcd_pos(0x0b);break;case 7:hour+;if (hour23) hour=0; update_disbuf(0x50,“time: “,hour,min,sec);pro_display(); lcd_pos(0x49);break; case 8:min+;if (min59) min=0; update_disbuf(0x50,“time: “,hour,min,sec);pro_display(); lcd_pos(0x4c);break; case 9:sec+;if (sec59) sec=0; updat

27、e_disbuf(0x50,“time: “,hour,min,sec);pro_display(); lcd_pos(0x4f);break; default: break ; - 13 -/Timer1 中断处理程序,产生报警的声音void timer1() interrupt 3 TH1=0xff; TL1=0x00; SPK=SPK; /外部中断 INT1 中断处理程序,停止报警声音void int1() interrupt 2 if(TR1) TR1=0; 6、测量及调试6.1 功能调试(1)时间显示:调节电位器来调整 lcd1602 液晶显示器的显示亮度,使时间清楚的显示在液晶屏上

28、。(2)时间调节:通过二个独立按键是否能够在液晶屏上显示调试出来的时间,调试后时间是否按调整后的时间继续走下去。(3)时间误差对比:调好时间后,那校正好准确的时钟来对比,在有点时间后观察此之间的误差。(4)调试结果:自检正常,时间误差及小,功能均正常运行,串口传送数据正确。6.2 测试仪器:秒表、温度表、万用表6.3 测试与分析:a 系统上电后进入显示日历时间。按各功能键执行相应的功能b 显示时间时通过与秒表对比,测试的系统时钟走时准确,误差很小。c 设定闹铃时间,当闹铃时间到时响铃。7、设计总结经过多天的努力,终于完成了任务,设计出了汇集外观精美、方便实用、功能强大于一体的数字电子钟。该数字

29、钟采用桌面式摆放设计,精美雅观;有闹铃、生日一些列常用的附加功能,更加方便实用,符合现实要求;同时还能够自定义调整显示灰度和屏幕背光亮度,带背光功能,夜里更实用!经过这次的实践,也可以说是经过了多天的学习,尽管期间苦难重重,但我还是从中学习了不少新的知识和解决困难的方法,也体验到了自主创作的快乐。参考文献1胡辉,单片机应用系统设计与训练M,中国水利水电出版社,2004.9。 2曹巧媛,单片机原理及应用M,北京:电子工业出版社,1997.7。3赵秀珍,单永磊,单片微型计算机原理及其应用M,北京:中国水利水电出版社,2001.8。4张毅刚,修林成,胡振江,MCS-51 单片机应用设计M,哈尔滨:哈

30、尔滨工业大学出版社,1990.8。5张洪润,兰清华,单片机应用技术教程M,北京:清华大学出版社,1997.11。6李华,MCS-51 系列单片机实用接口技术M,北京:北京航空航天大学出版社,1993.8。附件一:操作说明按 K1 按键进入设定状态按 K2 依次进入闹钟功能是否启用,闹钟时,分秒,年,月,日及时间时,分,秒的设置,直到退出设置状态- 14 -按 K3,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字LCD 第二排中间显示小喇叭,表示启用闹钟功能,无则禁止闹钟功能(可在调整状态进行设置)正常状态,LCD 上排最前面显示自定义字符,LCD 下排最前面闪动“ri-li“设置状态,LCD 上排最前面显示“P“,下排最前面在设置闹钟时间时显示“alarm:“,其它状态显示“time“附件二:元件清单表 1 电子钟元器件清单元件名称 规格型号 数量(个)单片机 STC89S52 1液晶 1602 1蜂鸣器 KC-1206 1晶振 12MHz 1电容 33pF 2电容 22F 1按键 BUTTON 4电阻 0.2K 1电阻 1K 1上拉电阻 10K 4三极管 8550 1排阻 RESPACK-8/10K 1

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报