LCD电子钟的设计单片机课程设计.doc

上传人:文库蛋蛋多 文档编号:4146540 上传时间:2023-04-07 格式:DOC 页数:20 大小:1.65MB
返回 下载 相关 举报
LCD电子钟的设计单片机课程设计.doc_第1页
第1页 / 共20页
LCD电子钟的设计单片机课程设计.doc_第2页
第2页 / 共20页
LCD电子钟的设计单片机课程设计.doc_第3页
第3页 / 共20页
LCD电子钟的设计单片机课程设计.doc_第4页
第4页 / 共20页
LCD电子钟的设计单片机课程设计.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

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

1、任务书课题名称LCD电子钟的设计指导教师(职称)臧大进 宋洪儒 执行时间2013 2014学年第 2 学期 第 15 周学生姓名学号承担任务搜集课题相关资料总体方案设计选择绘制电路图并调试编程及仿真分析设计目的1、进一步熟悉和掌握单片机的结构及工作原理。2、掌握单片机的接口技术及相关外围芯片的外特性,控制方法。3、通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解有关电路参数的计算方法。4、通过程序设计和仿真,逐步掌握模块化程序设计方法和仿真软件的使用。5、通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发单片机应用系统的全过程,为今后从事相应打下基础。设计要求制作一个L

2、CD显示的电子钟,在LCD显示器上显示当前的时间。1、 使用字符型LCD显示器显示时间。2、 显示格式为“时时:分分:秒秒”。3、 用4个功能键操作来设置当前时间。功能键K1-K4功能如下。K1-进入设置现在的时间。K2-修改小时,并显示修改结果。K3-修改分钟,并显示修改结果。K4-确定完成设置。摘 要 单片机,是集CPU、RAM、ROM、定时器、计数器和多种接口于一体的微控制器。自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。它体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易,广泛应用于智能生产和工业自动化上。 本系统为基于DS

3、1302的多功能电子钟,以AT89C51单片机作为主控芯,采用实时时钟芯片DS1302,使用LCD1602液晶作为显示输出。该系统走时精确,具有显示时、分、秒的功能,本文将详细介绍AT89C51单片机和DS1302时钟芯片的基本原理,从软件和硬件电路的实现两大方面进行分析。关键词:AT89C51单片机LCD液晶屏DS302时钟芯片目录第一章 绪论41.1 AT89C51单片机概述41.2 LCD概述41.3 DS1302简介41.4 本设计任务5第2 章 总体方案论证与设计52.1 显示部分52.2 数字时钟52.3总体硬件组成框图6第3章 系统硬件设计73.1 AT89C51单片机最小系统7

4、3.2 时钟模块73.3LCD液晶显示模块83.4按键模块83.5整体电路9第4章 系统的软件设计104.1 主程序设计104.2 时间设定程序流程10第5章 系统调试与测试结果分析125.1 使用的仪器仪表125.2 系统调试125.2.1硬件调试125.2.3硬件软件联调125.3 测试结果12设计心得体会14参考文献15附录 程序16 第一章 绪论 在新的世纪我们已经步入了第二个十年,随着全球经济的复苏和发展,由于在世界范围内人类需求的巨大释放,以及消费结构的升级,同时传统能源的稀缺以及带来的环境的破坏,都将带来新一轮的科技革命的巨变。因此,更适合人类社会协调、健康、可持续发展的新能源、

5、新材料等便应运而生。LCD作为一种新的材料,LCD的设计制造技术与应用水平上都得到了迅速的提高,生产也得到了迅速的发展,并逐步形成产业,成为光电子行业的新兴产业领域。然而随着人们生活节奏的加快,时间对人们的重要性也越来越重要,因此,拥有一个不错的时钟对人们的生活将带来很大的方便。时钟,自从它发明的那天起,就成为人类的朋友,但随着时间的推移,科学技术的不断发展,人们对时间计量的精度要求越来越高,应用越来越广。怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?这就要求人们不断设计出新型时钟。1.1 AT89C51单片机概述 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,

6、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。AT89C51单片机有40个引脚,其中包含2个专用于主电源的引脚,2个外接晶体的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚。1.2 LCD概述LCD 液晶显示器是 Liquid Crystal Display 的简称,LCD 的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。LCD可以分为

7、为两种类型,一种是文字模式LCD,一种是绘图模式LCD。LCD1602属于字符型液晶,能够同时显示16x2即32个字符。可以与8位CPU相联,指令功能强可以组合成各种输入、显示、移位方式以满足不同要求。显示黄绿带背光,显示对比度可以调节,正常工作电压(VDD)为+5V,工作电流约为2mA(不计背光功耗),同时可靠性高寿命达50,000小时(25)。1.3 DS1302简介DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.55.5V。时钟可工作在24小时格式或12小时(AM/PM)

8、格式。 DS1302与单片机的接口使用同步串行通信,仅用3条线与之相连接。可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。1.4 本设计任务本系统以单片机芯片为核心部件,利用合理的程序控制,在液晶显示屏上实现各个功能并且显示等功能,使其显示直观、功能多样、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。第2 章 总体方案论证与设计本设计采用AT89C51

9、单片机作为本系统的控制模块。单片机可把DS1302中的数据利用软件来进行处理,从而把数据传输到显示模块,实现温度、日历和闹铃的显示。以LCD液晶显示器为显示模块,把单片机传来的数据显示出来,并且显示多样化。在显示电路中,主要靠按键来实现各种显示要求的选择与切换。下面对各模块的设计逐一进行论证比较。2.1 显示部分显示部分是本次设计的重要部分,一般有以下两种方案:方案一:采用LED显示,分静态显示和动态显示。对于静态显示方式,所需的译码驱动装置很多,引线多而复杂,且可靠性也较低。而对于动态显示方式,虽可以避免静态显示的问题,但设计上如果处理不当,易造成亮度低,有闪烁等问题。方案二:采用LCD显示

10、。LCD液晶显示具有丰富多样性、灵活性、电路简单、易于控制而且功耗小等优点,对于信息量多的系统,是比较适合的。鉴于上述原因,我们采用方案二。2.2 数字时钟数字时钟是本设计的核心的部分。根据需要可采用以下两种方案实现:方案一:方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。该方案具有硬件电路简单的特点,但当单片机不上电,程序将不执行。而且由于

11、每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。方案二:方案采用Dallas公司的专用时钟芯片DS1302。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,可使系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。基于时钟芯片的上述优点,本设计采用方案二完成数字时钟的功能。2.3总体硬件组成框图 本系统的电路系统框图如

12、图2-1所示。AT89C51单片机对DS1302写入控制字并读取相应的数据,继而控制LCD1602作出对应的显示。LCD1602液晶显示模块AT89C51主控模块键盘控制模块DS1302时钟模块图2-1 总体硬件组成框图第3章 系统硬件设计3.1 AT89C51单片机最小系统最小系统包括晶体振荡电路、复位开关和电源部分。图3-1为AT89C51单片机的最小系统。图3-1 最小系统电路3.2 时钟模块 时钟模块采用DS1302芯片,DS1302是DALLAS公司推出的涓流充电时钟芯片内含有一个实时时钟/日历和31字节静态RAM通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月

13、年的信息每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式DS1302与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线:RST复位、I/O数据线、SCLK串行时钟。时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW,其接线电路如图3-2。图3-2 时钟电路3.3LCD液晶显示模块 LCD液晶显示模块采用LCD1602型号,具有很低的功耗,正常工作时电流仅2.0mA/5.0V。通过编程实现自动关闭屏幕能够更有效的降低功耗。LCD1602分两行显示,每行可显示多达16个

14、字符。LCD1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,通过内部指令可实现对其显示多样的控制,并且还能利用空余的空间自定义字符。其接线如图3-3。图3-3 LCD显示电路3.4按键模块它是整个系统中最简单的部分,根据功能要求,本系统共需四个按键:进入设定、时设定、分设定、确认设式键采用独立式按键。如图3-4所示。 图3-4 按键电路3.5整体电路系统整体电路如图3-5 所示:图3-5系统总体电路图第4章 系统的软件设计4.1 主程序设计主流程图说明:程序开始运行时先初始化时钟控制器件DS1302、显示器件LCD1602,然后打开LCD1602,再读取

15、时间,把读取的数据送入LCD1602进行显示,时间进行调整。其主程序流程如图4-1所示。图4-1 主程序流程图4.2 时间设定程序流程时间设定流程图说明:程序开始后初始化DS1302,然后从DS1302中读出数据,放入RAM中,然后调用显示子程序,使LCD1602相应的模块显示温度,其间也可对温度进行设置,设置完成后把数据重新送入RAM中,再由LCD1602相应模块显示,整个过程由此反复进行。图4-2 显示时间子程序流程第5章 系统调试与测试结果分析5.1 使用的仪器仪表 数字万用表、秒表、电源5.2 系统调试根据系统设计方案,本系统的调试共分为三大部分:硬件调试,软件调试和软硬件联调。由于在

16、系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:温度测量模块的调试,时钟模块的调试,LCD液晶显示模块的调试等,最后将各模块组合后进行整体测试。5.2.1硬件调试对各个模块的功能进行调试,主要调试各模块能否实现指定的功能。5.2.2软件调试 软件调试采用单片机仿真器WAVE6000L及微机,将编好的程序进行调试,主要是检查语法错误。5.2.3硬件软件联调 将调试好的硬件和软件进行联调,主要调试系统的实现功能。5.3 测试结果此次系统设计结果较好,能动态显示实时时钟的时、分、秒,数据显示,能够实现时钟的定时,并且具有调整时间的功能。过了一段时间,仿真显示如图5-2所示。图5-2(

17、1)图5-2(2)设计心得体会在这个一个星期的时间里我学到了很多宝贵的知识和单片编程的经验,在这次课程设计过程中我遇到了许多困难和问题,其中一些我通过自己上网找资料和询问同学的方式找到了解决的方法,就是在这个过程中我学会了许多书本上学不到的东西,还有一些是我自己解决不了的问题,这些问题都是需要靠我以后的经验积累和不断的学习才能得到解决的,从这次课程设计中我体会到了自己用汗水换来的成果的喜悦。我在刚开始设计这个东西时是一头雾水,没有一个方向和目标,后来从网上找到一些有关的资料通过相似的题目我一步一步的完成我自己的课程设计的功能,尤其是在编写程序的时候,每一个模块都要经过非常仔细的考虑后在写,因为

18、程序的运行过程中需要考虑各个模块之间的影响和互助,有一些模块是我们没有学习过的我从网上找到相似的然后经过修改变成我能用的,在这之间我锻炼了我的变成能力。电路的设计相对编程来说要容易一些,总体来说电路图都是大同小异的,只是他们中的分支做一些修改来。最重要的学习就是一个课程设计的过程的整体思路,先做什么后做什么最后来一个总结经验的过程,这给我以后的设计过程打下了基础,这次设计中,我深刻体会到专研的重要性,一个看似简单的系统,却需要着大量的知识储备和很强的专研精神,理论和实践往往是两回事,理论上很简单的事情在实际操作中往往会遇到很多意想不到的困难,学科的知识不光来自于书本知识,更来自于实践。由于水平

19、和经验的有限,系统可能仍存在一些缺点或者有更多更好的功能或方法可以加进去,望各位老师、同学指正。参考文献1 求是科技. 单片机典型模块设计实例导航. 北京:人民邮电出版社. 2005.82 徐淑华, 程退安等.单片微型机原理及应用. 哈尔滨:哈尔滨工业大学出版社. 2005.13 孙余凯. 精选实用电子电路260例. 北京:电子工业出版社. 2007.64 殷春浩, 崔亦飞. 电磁测量原理及应用. 徐州:中国矿业大学出版社. 2003.75LCD1602A数据手册6DS1302数据手册7 张义和.例说51单片机M.北京:人民邮电出版社,2010年8 阎石编著 数字电子技术基础 (第五版) 北京

20、高等教育出版社 2006.15509 蔡明文 冯先成主编 单片机课程设计 华中科技大学出版社 2007.310 陈明萤 编著 8051单片机课程设计实训教材 清华大学出版社 200411 黄智伟 编著 全国大学生电子设计竞赛电路(第一版)航空航天大学出版社 2006.36附录 程序#include #include /#include LCD1602.h/#include DS1302.h#define uint unsigned int#define uchar unsigned charsbit DS1302_CLK = P17; /实时时钟时钟线引脚 sbit DS1302_IO = P

21、16; /实时时钟数据线引脚 sbit DS1302_RST = P15; /实时时钟复位线引脚sbit wireless_1 = P30;sbit wireless_2 = P31;sbit wireless_3 = P32;sbit wireless_4 = P33;sbit ACC0 = ACC0;sbit ACC7 = ACC7;char hide_sec,hide_min,hide_hour,; /秒,分,时位闪的计数sbit Set = P20; /进入设置时间键sbit Hour = P21; /设置小时键sbit Min = P22; /设置分钟键sbit out = P23;

22、 /立刻跳出调整模式按钮char done,count,temp,flag,up_flag,down_flag;uchar TempBuffer5,week_value2;void show_time(); /液晶显示程序/*液晶显示部分子程序*/Port Definitionssbit LcdRs= P25;sbit LcdRw= P26;sbit LcdEn = P27;sfr DBPort = 0x80;/P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口/内部等待函数*unsigned char LCD_Wait(void)LcdRs=0;LcdRw=1;_nop

23、_();LcdEn=1;_nop_();LcdEn=0;return DBPort;/初始化LCDvoid LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38); /8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /开启显示, 无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC递增, 画面不动void Pri

24、nt(unsigned char *str)while(*str!=0)LCD_Write(LCD_DATA,*str);str+;/*DS1302时钟部分子程序*/typedef struct _SYSTEMTIME_unsigned char Second;unsigned char Minute;unsigned char Hour;SYSTEMTIME;/定义的时间类型SYSTEMTIME CurrentTime;#define AM(X)X#define PM(X)(X+12) / 转成24小时制#define DS1302_SECOND0x80 /时钟芯片的寄存器位置,存放时间#d

25、efine DS1302_MINUTE0x82#define DS1302_HOUR0x84 void DS1302InputByte(unsigned char d) /实时时钟写入一字节(内部函数) unsigned char i; ACC = d; for(i=8; i0; i-) DS1302_IO = ACC0; /相当于汇编中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC 1; unsigned char DS1302OutputByte(void) /实时时钟读取一字节(内部函数) unsigned char i; for(i=8;

26、 i0; i-) ACC = ACC 1; /相当于汇编中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; return(ACC); void Write1302(unsigned char ucAddr, unsigned char ucDa)/ucAddr: DS1302地址, ucData: 要写的数据 DS1302_RST = 0;/Write1302(0x8e,0x00); DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr); / 地址,命令 DS1302Inpu

27、tByte(ucDa); / 写1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; unsigned char Read1302(unsigned char ucAddr)/读取DS1302某地址的数据 unsigned char ucData; DS1302_RST = 0; DS1302_CLK = 0; DS1302_RST = 1; DS1302InputByte(ucAddr|0x01); / 地址,命令 ucData = DS1302OutputByte(); / 读1Byte数据 DS1302_CLK = 1; DS1302_RST = 0; retu

28、rn(ucData);void DS1302_GetTime(SYSTEMTIME *Time) /获取时钟芯片的时钟数据到自定义的结构型数组void TimeToStr(SYSTEMTIME *Time) /将时,分,秒数据转换成液晶显示字符放到数组 TimeString; if(hide_hourTimeString0 = Time-Hour/10 + 0; Time-TimeString1 = Time-Hour%10 + 0; else Time-TimeString0 = ; Time-TimeString1 = ;Time-TimeString2 = :; if(hide_minT

29、imeString3 = Time-Minute/10 + 0; Time-TimeString4 = Time-Minute%10 + 0; else Time-TimeString3 = ; Time-TimeString4 = ; Time-TimeString5 = :; if(hide_secTimeString6 = Time-Second/10 + 0; Time-TimeString7 = Time-Second%10 + 0; else Time-TimeString6 = ; Time-TimeString7 = ; Time-DateString8 = 0;void In

30、itial_DS1302(void) /时钟芯片初始化 unsigned char Second=Read1302(DS1302_SECOND);if(Second&0x80) /判断时钟芯片是否关闭 Write1302(0x8e,0x00); /写入允许Write1302(0x8c,0x07); /以下写入初始化时间 Write1302(0x88,0x07);Write1302(0x86,0x25);Write1302(0x8a,0x07);Write1302(0x84,0x23);Write1302(0x82,0x59);Write1302(0x80,0x55);Write1302(0x8e,0x80); /禁止写入答辩记录及评分表 课题名称LCD电子钟的设计答辩教师(职称)臧大进 宋洪儒 答辩时间20132014 学年第 2 学期 第 15 周答辩记录 评 分 表学生姓名学号评分

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号