单片机课程设计--智能电子钟(LCD显示)(共28页).doc

上传人:飞****2 文档编号:13350717 上传时间:2022-04-29 格式:DOC 页数:31 大小:456KB
返回 下载 相关 举报
单片机课程设计--智能电子钟(LCD显示)(共28页).doc_第1页
第1页 / 共31页
单片机课程设计--智能电子钟(LCD显示)(共28页).doc_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《单片机课程设计--智能电子钟(LCD显示)(共28页).doc》由会员分享,可在线阅读,更多相关《单片机课程设计--智能电子钟(LCD显示)(共28页).doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上课 程 设 计 课程名称_ 单片机原理与接口技术 题目名称 多功能数字时钟 学生学院_ 材料与能源学院 专业班级_ 电子材料及元器件方向学 号_ _ 学生姓名_ _ 指导教师_ 2013 年 1 月 16 日广东工业大学课程设计任务书题目名称多功能数字时钟学生学院材料与能源学院专业班级姓 名学 号一、课程设计的内容用AT89C52单片机制作一个时钟:1.设计并绘制硬件电路图;2.布置元件并焊接好元器件;3.编写程序并将调试好的程序固化到单片机中。4.增加温度测试功能。二、课程设计的要求与数据单片机采用STC89C52芯片,时钟芯片采用DALLAS 公司的DS1302,

2、即涓流充电时钟芯片,它内含有一个实时时钟/日历和31 字节静态RAM,通过简单的串行接口与单片机进行通信实时时钟/日历电路提供秒分时日日期月年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM 指示决定采用24 或12 小时格式,DS1302 与单片机之间能简单地采用同步串行的方式进行通信。同时用选DS18B20 传感器将采集的室内温度显示于LCD上。按此要求设计硬件和软件以实现这些功能。三、课程设计应完成的工作1. 完成下载线的制作,为程序下载到单片机芯片中做好准备;2. 完成软件、硬件的设计,并进行硬件的焊接制作,并将调试成功的程序固化到单片机中,最后进行硬件与软件的调试;

3、3.撰写设计说明书。四、课程设计进程安排序号设计各阶段内容地点起止日期1硬件、软件设计宿舍1月813日2焊接电路板宿舍1月1415日3软件、硬件调试宿舍1月1516日4撰写说明书宿舍1月17日5答辩大学城工学三号馆1051月1821日摘要随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的液晶显示温度和时钟设计,时间可由键盘调整。主要用到的芯片有单片机STC89C52.液晶1602LCM模块.时钟芯片DS1302.温度传感器DS18B20等。关键词:单片机STC89C52,1602LCM模块,DS1302.,DS1

4、8B20专心-专注-专业 目录 1 系统需求分析1.1 电子时钟研究的背景和意义20实际末,电子技术获得了飞速的发展。再起推动下现代电子产品几乎渗透到了社会的哥哥领域,有力的推动和提高的社会生产力的发展与信息化程度,同时也是现代电子产品性能进一步提升,产品的更新换代节奏谱也越来越快。时间对人们来说是那么的宝贵,工作的忙碌性和繁杂容易使人们忘记当前的时间。然而遇到重大事情的时候,一旦忘记时间,就会给自己或者是他人造成很大的麻烦。平时我们要求上班准时,约会或者召开会议必然要提及时间、火车要准点到达,航班要准时起飞,工业生产中,很多环节都需要时间来确定工序替换时刻。所以说能随时准确的指导时间并利用时

5、间,是我们生活中必不可少的。想知道时间,手表当然是很好的选择,但是在忙碌当中,我们还需要一个“助理”时不时的给我们体形式将,所以,计时器最好能够用有一个定时系统,随时提醒容易忘记时间的人。最早能够定时、宝石的时钟属于机械式钟表,但这种时钟受到机械结构、动力合体技的限制,在功能性能以及在造价上都没有办法与电子时钟相比。电子时钟是采用电子电路实现对时、分、秒进行数字显示的即使装置,广泛应用月个人家庭、车站、码头办公室等公共场所,成为人们日常生活活动中不可少的必须品。由于数字集成电路的发展和石英晶体振荡器的广泛使用,是的数字时钟的精度远远查过老师钟表,钟表的数字化跟人们生产生活带来了极大的方便,而且

6、大大的扩展了钟表原先的时钟功能。诸如整点提示、定时报警、定时广播、自动启闭路灯,定时开关烘箱、同多动力设备、甚至各种定时电气的自动启动等,所有这些,都是以钟表数字化为基础的。因此研究数字钟及扩大其应用,有着非常现实的意义。1.2 系统实用功能分析单片机模块中最常见的是数字时钟,数字时钟是一种用单片机原理实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字时钟是采用单片机原理实现对.年、月、日、周、时、分、秒,数字显示及到时提醒的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品

7、,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字时钟及扩大其应用,有着非常现实的意义。2 设计要求与方案2.1 设计要求2.1.1 基本要求1 设计能支持年月日星期时分秒的时钟,时钟要具有时间调整功能。2.1.2发挥部分1 闹钟时间精度。2 时钟功耗小于0.5MA/5V。2.2 系统基本方案选择

8、本时钟的设计具体有两种方法。一是通过单纯的数字电路来实现;二是使用单片机来控制实现。本次设计选取了较为简单的单片机控制;而选择这一方法后还要进行各个芯片的选择。以下是我在这次设计中所用的方案。2.2.1 芯片的选择采用AT89C52芯片,其为高性能CMOS 8位单片机,该芯片内含有4k bytes的可反复擦写的只读程序存储器(PEROM)、128 bytes的随机存取数据存储器(RAM)、 32位可编程I/O口线、2个16位定时/计数器、6个中断源、可编程串行UART通道及低功耗空闲和掉电模式,其最大的优势就是AT89C52提供了8K字节可擦写Flash闪速存储器空间、8个中断源、及256*8

9、字节内部存储器(RAM),解决了我们对可反复擦写的Flash闪速存储器空间大小与中断源的不够问题的担心。2.2.2 显示模块选择方案方案一:采用LED数码管显示,显示较为清楚,但是由于设计要求时钟功能比较重要,因此用如用LED进行显示会使得硬件电路较为复杂,且在软件实现上也较难,为实现功能带来了一定的困难。方案二:采用LCD,电路比较简单,且在软件设计上也相对简单,具有低功耗功能,能够满足设计最优的要求。因此,在设计中我采用的显示模块是LCD显示。2.2.3 时钟信号的选择方案方案一:直接采用单片机定时计数器提供的秒信号,使用程序实现年、月、日、周、时、分、秒计数。采用此种方案可减少芯片的使用

10、,节约成本,实现的时间误差较小,但程序设计较为复杂。方案二:采用DS1302时钟芯片实现时钟, DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,256位的RAM作为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。且硬件电路连接较为简单,程序设计容易实现。2.3 电路设计最终方案决定综上各方案所述,对此次数字时钟的方案选定为: 采用AT89C52作为主控制系统; 并由其定时计数器提供时钟; LCD作为显示电路,来实现功能。3 系统的硬件设计与实现3.1 数字钟电路设计框图LCD动态扫描显示模块AT89C52

11、主控制器开关调节模块晶振电路模块复位电路图3-1电路设计框图3.2 系统硬件概述该电路是由AT89C52单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路也由AT89C52单片机提供,减少芯片的使用,节约成本,它可以对年、月、日、周、日、时、分、秒进行计时,具有闰年补偿功能。时间显示部份采用液晶LM016L(LCD)。3.3 硬件电路结构的设计3.3.1 单片机主控制模块的设计此次单片机数字时钟的设计采用AT89C52为主控制芯片,并由其定时器提供时钟,利用LCD进行时间按显示。下图为用Proteus软件画的原理图:图3-2仿真电路图3.3.2 显示模块的设计如图(3-4

12、)所示,该设计采用液晶显示装置即把时钟信号以及温度信号同时显示在液晶显示器上,不仅结构简单清新可见,而且省电也容易控制。数据的传输采用P0口进行控制, 其引脚VSS接地,VEE接VCC,RS和RW、E是显示器的控制端分别由单片机的引脚P1.0、P1.1、P1.3进行控制。而VDD是作为液晶显示器的灰度调节引脚,接一变阻器来改变其显示的清晰度。图3-3 LM016L液晶显示器3.3.3 LCD原理说明在实际应用中,用户很少直接设计LCD显示器驱动接口,一般是直接使用专用的LCD显示驱动器和LCD显示模块。其中,LCD显示模块LCM(LiquidCrystalDisplayModule)是把LCD

13、显示器、背景光源、线路板和驱动集成电路等部件构成一个整体,作为一个独立的部件使用,具有功能较强、易于控制、接口简单等优点,在单片机系统中应用较多。其内部结构如图2-8所示。LCD显示模块只留一个接口与外部通信。显示模块通过这个接口接收显示命令和数据,并按指令和数据的要求进行显示。外部电路通过这个接口读出显示模块的工作状态和显示数据。LCD显示模块一般带有内部显示RAM和字符发生器,只要输入ASCII码就可以进行显示。LCD显示模块按功能显示可分为:LCD段式显示模块、LCD字符型显示模块、LCD图形显示块三类。液晶显示器因其功耗低、重量轻而成为便携式应用中的主流显示技术。这里所用的字符型液晶模

14、块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等。液晶显示有点振式和字符式两种,在这里采用字符式液晶显示器1602来实现显示电路的功能。LCD驱动器LCD显示器LCD控制器VSSVDDVLRSR/WED0-D7图3-4 LCD显示电路由于1602液晶显示器是本身带有驱动模块的液晶屏,它只有并口线和一些控制线,与单片机的连接有两种不同的方法,直接访问方式和间接访问方式。直接访问方式就是微处理器把液晶显示模块当作存储器或I/O设备直接挂在总线上,模块8位数据总线与微处理器的数据总线相连,用读操作或写操作信号与地址信号共同产生控制信号

15、。3.3.4 开关模块说明校时电路主要靠键盘来控制。键盘是一组按键的集合。共有四个按键,分别是:改变时间、增加、减少、清零。它是嵌入式计算机系统中不可缺少的外围电路。是实现人机对话的纽带,借助键盘可以向计算机输入程序、置数、逻辑操作以及写入程序和程序检测等。4 系统的软件设计4.1 程序流程框图开始初始化程序主键值检测根据主键进行散转有则主键值加一时间秒钟调整时间分钟调整时间小时调整时间周调整时间日调整时间月调整时间年调整显示周显示日显示月显示年时间显示时间显示主界面图4-1 主程序流程4.2 LCD的初始化与及显示程序1 LCD的初始化void ini()/*LCD的初始化函数rw=0;en

16、=0;P1=0xff;writeCG();write_order(0x38);/*端口写入write_order(0x0c); /*端口写入write_order(0x06); /*端口写入write_order(0x01); /*端口写入2 LCD的显示程序void open()/*定义一个LCD显示函数uchar num; /*定义一个无符号的字符变量numwrite_order(0x80+0x10); /*调用write_order函数 for(num=0;opensnum!=0;num+)/*循环打开write_date(opensnum);delay(20);for(num=0;nu

17、m16;num+)/*对端口0x1c写入write_order(0x1c);delay(200);for(num=0;num5;num+)/*对端口0x18写入write_order(0x18);delay(200);for(num=0;num4;num+)/*对端口0x18写入write_order(0x1c);delay(200);for(num=0;num3;num+)/*对端口0x18写入write_order(0x18);delay(200);for(num=0;num2;num+)/*对端口0x1c写入write_order(0x1c);delay(200);for(num=0;n

18、um1;num+)/*对端口0x18写入write_order(0x18);delay(100);write_order(0x80+0x53);for(num=0;opens1num!=0;num+)/*循环延时写入数据 write_date(opens1num); delay(500);5 系统调试5.1软件调试打开程序调试软件keil uVision2,在里面新建一个工程,命名为:数字时钟.Uv2。接着新建文件,编写相应程序。编写好的各个程序进行编译与连接。但若是在该过程中,看见我们编好的程序有错误,那么就根据他相应的提示来修改错误,直到该程序能够正确编译为止。能够正常编译的程序说明没有什

19、么问题了,此时我们在点击相关栏目,让它生成我们在硬件仿真时所需要的.HEX文件。到此步,我们的软件调试就完成了。5.2硬件调试打开Proteus 7 Professional软件,按照方案所选的电路元件来设计整体电路,线把个芯片按一定的位置放好,然后对相应的对象进行连接,连接时需仔细,以免调试时发生错误。做好之后把编程所生成的。HEX文件加载到AT89C52中,运行仿真软件,查看运行效果。如果运行出错那么就根据他相应的提示来修改错误,直到仿真成功为止。参考文献1 边春远、王志强,MCS-51单片机应用开发实用子程序M,人民邮电出版社.2 马忠梅主编,单片机的C语言应用程序设计M,北京航空航天大

20、学出版社.3 李朝青主编,单片机原理及接口技术(第3版)M, 北京航空航天大学出版社.4 谭浩强,C语言程序设计(第四版)M, 清华大学出版.5 马忠梅、张凯,单片机的C语言应用程序设计M,北京航空航天大学出版社.6 廖先芸,电子技术实践与实训M,高等教育出版社.附录主程序:#include#define uchar unsigned char#define uint unsigned intsbit lcdrs=P35;sbit lcden=P34;sbit dula=P26;sbit wela=P27;sbit s0 =P10;sbit s1 =P11;sbit s2 =P12;sbit

21、s3 =P13;uchar code table1=2008-08-28 Wen;uchar code table2=21:31:30;uchar num,t0;char sec,minute,hour,day,week,month;uint year;void delay(uchar z) uchar x,y; for(x=z;x0;x-) for(y=110;y0;y-); /写入指令子函数void write_order(uchar order) lcdrs=0; P0=order; delay(2); lcden=1; delay(2); lcden=0;/写入数据子函数void wr

22、ite_data(uchar data1) lcdrs=1; P0=data1; delay(2); lcden=1; delay(2); lcden=0;/初始化子函数 void init() sec=0; minute=0; hour=0; week=0; day=1; month=1; year=2008; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; wela=0; dula=0; lcden=0; write_order(0x38); /设置显示模式 write_order(0

23、x0c); /开显示开光标,光标闪烁 write_order(0x01); /显示清屏 write_order(0x06); /光标显示效果 write_order(0x80); /定义第一行写入数据的地址 for(num=0;num14;num+) write_data(table1num); delay(2); write_order(0x80+0x43); /定义第一行写入数据的地址 for(num=0;num8;num+) write_data(table2num); delay(2); void change(uchar addr,uchar data1) /改变 时 分 秒 天 月

24、 的子函数 uchar x,y; x=data1/10; y=data1%10; write_order(0x80+addr); delay(1); write_data(0x30+x); delay(1); write_data(0x30+y); delay(1);void yearchange(uchar addr,uint year) /改变年的子函数 uchar x,y,z,w; x=year/1000; y=year%1000/100; z=year%100/10; w=year%10; write_order(0x80+addr); delay(1); write_data(0x3

25、0+x); delay(1); write_data(0x30+y); delay(1); write_data(0x30+z); delay(1); write_data(0x30+w); delay(1);void weekchange(uchar z) /改变周数的子函数 switch(z) case 0: write_order(0x80+0x0b); delay(1); write_data(M); delay(1); write_data(o); delay(1); write_data(n); delay(1); break; case 1: write_order(0x80+0

26、x0b); delay(1); write_data(T); delay(1); write_data(u); delay(1); write_data(e); delay(1); break; case 2: write_order(0x80+0x0b); delay(1); write_data(W); delay(1); write_data(e); delay(1); write_data(n); delay(1); break; case 3: write_order(0x80+0x0b); delay(1); write_data(T); delay(1); write_data(

27、h); delay(1); write_data(u); delay(1); break; case 4: write_order(0x80+0x0b); delay(1); write_data(F); delay(1); write_data(r); delay(1); write_data(i); delay(1); break; case 5: write_order(0x80+0x0b); delay(1); write_data(S); delay(1); write_data(a); delay(1); write_data(t); delay(1); break; case 6

28、: write_order(0x80+0x0b); delay(1); write_data(S); delay(1); write_data(u); delay(1); write_data(n); delay(1); break; default:break; void display() if(t0=20) t0=0; sec+; if(sec=60) sec=0; minute+; if(minute=60) minute=0; hour+; if(hour=24) hour=0; day+; week+; if(week=7) week=0; if(day=31) day=1; mo

29、nth+; if(month=13) month=1; year+; yearchange(0,year); change(0x05,month); change(0x08,day); weekchange(week); change(0x43,hour); change(0x46,minute); change(0x49,sec); /键盘扫描的子函数,修改时间void keyscan() uchar snum; if(s0=0) delay(5); if(s0=0) while(!s0);/松手检测 snum+; if(snum=1) /选定 秒 TR0=0; write_order(0x

30、80+0x40+9); write_order(0x0f); if(snum=2) /选定 分 write_order(0x80+0x40+6); write_order(0x0f); if(snum=3) /选定 时 write_order(0x80+0x40+3); write_order(0x0f); if(snum=4) /选定 星期 write_order(0x80+0x0b); write_order(0x0f); if(snum=5) /选定 天 write_order(0x80+0x08); write_order(0x0f); if(snum=6) /选定 月 write_o

31、rder(0x80+0x05); write_order(0x0f); if(snum=7) /选定 年 write_order(0x80); write_order(0x0f); if(snum=8) /恢复 计时 TR0=1; write_order(0x0c); snum=0; if(snum!=0) /增加 时 分 秒 天 月 年 if(s1=0) delay(5); if(s1=0) while(!s1); if(snum=1) sec+; if(sec=60) sec=0; change(0x49,sec); write_order(0x80+0x40+9); if(snum=2) minute+; if(minute=60) minute=0; change(0x46,minute); write_order(0x80+0x40+6); if(snum=3) hour+; if(hour=24) hour=0; change(0x43,hour); write_order(0x80+0x40+3); if(snum=4) week+; if(week=7) week=0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁