单片机课程设计智能电子钟(LCD显示).docx

上传人:1390****791 文档编号:96668869 上传时间:2024-02-25 格式:DOCX 页数:29 大小:454.51KB
返回 下载 相关 举报
单片机课程设计智能电子钟(LCD显示).docx_第1页
第1页 / 共29页
单片机课程设计智能电子钟(LCD显示).docx_第2页
第2页 / 共29页
点击查看更多>>
资源描述

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

1、课 程 设 计课程名称_ 单片机原理与接口技术题目名称 多功能数字时钟学生学院_ 材料与能源学院专业班级_ 电子材料及元器件方向学号_ _学生姓名_ 指导教师_2023年 1月 16日1广东工业大学课程设计任务书3题目名称学生学院专业班级姓 名学 号一、课程设计的内容多功能数字时钟材料与能源学院用 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模块,

4、DS1302.,DS18B20名目1 系统需求分析11.1 电子时钟争论的背景和意义11.2 系统有用功能分析12 设计要求与方案22.1 设计要求22.1.1 根本要求22.1.2 发挥局部22.2 系统根本方案选择22.2.1 芯片的选择22.2.2 显示模块选择方案22.2.3 时钟信号的选择方案32.3 电路设计最终方案打算33 系统的硬件设计与实现33.1 数字钟电路设计框图33.2 系统硬件概述43.3 硬件电路构造的设计43.3.1 单片机主掌握模块的设计43.3.2 显示模块的设计43.3.3 LCD 原理说明53.3.4 开关模块说明64 系统的软件设计74.1 程序流程框图

5、74.2 LCD 的初始化与及显示程序75 系统调试95.1 软件调试95.2 硬件调试9参考文献10附录1101 系统需求分析1.1 电子时钟争论的背景和意义20 实际末,电子技术获得了飞速的进展。再起推动下现代电子产品几乎渗透到了社会的哥哥领域,有力的推动和提高的社会生产力的进展与信息化程度,同时也是现代电子产品性能进一步提升,产品的更换代节奏谱也越来越快。时间对人们来说是那么的贵重,工作的劳碌性和繁杂简洁使人们遗忘当前的时间。然而遇到重大事情的时候,一旦遗忘时间,就会给自己或者是他人造成很大的麻烦。寻常我们要求上班准时,约会或者召开会议必定要提准时间、火车要准点到达,航班要准时起飞,工业

6、生产中,很多环节都需要时间来确定工序替换时刻。所以说能随时准确的指导时间并利用时间,是我们生活中必不行少的。想知道时间,手表固然是很好的选择,但是在劳碌当中,我们还需要一个“助理”时不时的给我们体形式将,所以,计时器最好能够用有一个定时系统,随时提示简洁遗忘时间的人。最早能够定时、宝石的时钟属于机械式钟表,但这种时钟受到机械构造、动力合体技的限制,在功能性能以及在造价上都没有方法与电子时钟相比。电子时钟是承受电子电路实现对时、分、秒进展数字显示的即使装置,广泛应用月个人家庭、车站、码头办公室等公共场所,成为人们日常生活活动中不行少的必需品。由于数字集成电路的进展和石英晶体振荡器的广泛使用,是的

7、数字时钟的精度远远查过教师钟表,钟表的数字化跟人们生产生活带来了极大的便利,而且大大的扩展了钟表原先的时钟功能。诸如整点提示、定时报警、定时播送、自动启闭路灯,定时开关烘箱、同多动力设备、甚至各种定时电气的自动启动等,全部这些,都是以钟表数字化为根底的。因此争论数字钟及扩大其应用,有着格外现实的意义。1.2 系统有用功能分析单片机模块中最常见的是数字时钟,数字时钟是一种用单片机原理实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数字时钟是承受单片机原理实现对.年、月、日、周、时、分、秒,数字显示及到时提示的计时装置,

8、广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不行少的必需品,由于数字集成电路的进展和石英晶体振荡器的广泛应用 ,使得数字钟的精度,远远3超过老式钟表, 钟表的数字化给人们生产生活带来了极大的便利,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动掌握、定时播送、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,全部这些,都是以钟表数字化为根底的。因此,争论数字时钟及扩大其应用,有着格外现实的意义。2 设计要求与方案2.1 设计要求2.1.1 根本要求1设计能支持年月日星期时分秒的时钟,时钟要具有时间调整功能。2.1.2

9、发挥局部1 闹钟时间精度。2 时钟功耗小于 0.5MA/5V。2.2 系统根本方案选择本时钟的设计具体有两种方法。一是通过单纯的数字电路来实现;二是使用单片机来掌握实现。本次设计选取了较为简洁的单片机掌握;而选择这一方法后还要进展各个芯片的选择。以下是我在这次设计中所用的方案。2.2.1 芯片的选择承受 AT89C52 芯片,其为高性能 CMOS 8 位单片机,该芯片内含有 4k bytes 的可反复擦写的只读程序存储器PEROM、128 bytes 的随机存取数据存储器RAM、 32 位可编程 I/O口线、2 个 16 位定时/计数器、6 个中断源、可编程串行 UART 通道及低功耗空闲和掉

10、电模式, 其最大的优势就是AT89C52 供给了8K 字节可擦写Flash 闪速存储器空间、8 个中断源、及256*8 字节内部存储器RAM,解决了我们对可反复擦写的 Flash 闪速存储器空间大小与中断源的不够问题的担忧。2.2.2 显示模块选择方案方案一:承受 LED 数码管显示,显示较为清楚,但是由于设计要求时钟功能比较重要, 因此用如用 LED 进展显示会使得硬件电路较为简单,且在软件实现上也较难,为实现功能带来了肯定的困难。方案二:承受 LCD,电路比较简洁,且在软件设计上也相对简洁,具有低功耗功能,能够满足设计最优的要求。因此,在设计中我承受的显示模块是 LCD 显示。2.2.3

11、时钟信号的选择方案方案一:直接承受单片机定时计数器供给的秒信号,使用程序实现年、月、日、周、时、分、秒计数。承受此种方案可削减芯片的使用,节约本钱,实现的时间误差较小,但程序设 计较为简单。方案二:承受DS1302 时钟芯片实现时钟, DS1302 芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进展计数,而且精度高,256 位的 RAM 作为数据暂存区,工作电压2.5V5.5V 范围内,2.5V 时耗电小于 300nA。且硬件电路连接较为简洁,程序设计简洁实现。2.3 电路设计最终方案打算综上各方案所述,对此次数字时钟的方案选定为: 承受 AT89C52 作为主

12、掌握系统; 并由其定时计数器供给时钟; LCD 作为显示电路,来实现功能。1 系统的硬件设计与实现3.1 数字钟电路设计框图晶振电路模块复位电路LCD 动态扫描显示模块开关调整模块AT89C52图 3-1 电路设计框图3.2 系统硬件概述该电路是由 AT89C52 单片机为掌握核心,具有在线编程功能,低功耗,能在3V 超低压工作;时钟电路也由AT89C52 单片机供给,削减芯片的使用,节约本钱,它可以对年、月、日、周、日、时、分、秒进展计时,具有闰年补偿功能。时间显示部份承受液晶 LM016LLCD。3.3 硬件电路构造的设计3.3.1 单片机主掌握模块的设计此次单片机数字时钟的设计承受 AT

13、89C52 为主掌握芯片,并由其定时器供给时钟,利用LCD 进展时间按显示。以下图为用 Proteus 软件画的原理图:3.3.2 显示模块的设计图 3-2 仿真电路图如图(3-4)所示,该设计承受液晶显示装置即把时钟信号以及温度信号同时显示在液晶显示器上,不仅构造简洁清爽可见,而且省电也简洁掌握。数据的传输承受P0 口进展掌握, 其引脚 VSS 接地,VEE 接 VCC,RS 和 RW、E 是显示器的掌握端分别由单片机的引脚 P1.0、P1.1、P1.3 进展掌握。而VDD 是作为液晶显示器的灰度调整引脚,接一变阻器来转变其显示的清楚度。43.3.3 LCD 原理说明图 3-3 LM016L

14、 液晶显示器在实际应用中,用户很少直接设计 LCD 显示器驱动接口,一般是直接使用专用的 LCD 显示驱动器和 LCD 显示模块。其中,LCD 显示模块 LCMLiquidCrystalDisplay Module 是把 LCD 显示器、背景光源、线路板和驱动集成电路等部件构成一个整体,作为一个独立的部件使用,具有功能较强、易于掌握、接口简洁等优点,在单片机系统中应用较多。其内部构造如图 2-8 所示。LCD 显示模块只留一个接口与外部通信。显示模块通过这个接口接收显示命令和数据,并按指令和数据的要求进展显示。外部电路通过这个接口读出显示模块的工作状态和显示数据。LCD 显示模块一般带有内部显

15、示 RAM 和字符发生器,只要输入 ASCII 码就可以进展显示。LCD 显示模块按功能显示可分为:LCD 段式显示模块、LCD 字符型显示模块、LCD 图形显示块三类。液晶显示器因其功耗低、重量轻而成为便携式应用中的主流显示技术。这里所用的字符型液晶模块是一种用 5x7 点阵图形来显示字符的液晶显示器,依据显示的容量可以分为 1 行 16 个字、2 行 16 个字、2 行 20 个字等等。液晶显示有点振式和字符式两种,在这里承受字符式液晶显示器 1602 来实现显示电路的功能。VSS VDD VLRSR/W ED0-D7LCD掌握器LCD驱动器LCD显示器5图 3-4 LCD 显示电路由于

16、1602 液晶显示器是本身带有驱动模块的液晶屏,它只有并口线和一些掌握线,与单片机的连接有两种不同的方法,直接访问方式和间接访问方式。直接访问方式就是微处理器把液晶显示模块当作存储器或 I/O 设备直接挂在总线上,模块 8 位数据总线与微处理器的数据总线相连,用读操作 或写操作 信号与地址信号共同产生掌握信号。3.3.4 开关模块说明校时电路主要靠键盘来掌握。键盘是一组按键的集合。共有四个按键,分别是:转变时间、增加、削减、清零。它是嵌入式计算机系统中不行缺少的外围电路。是实现人机对话的纽带,借助键盘可以向计算机输入程序、置数、规律操作以及写入程序和程序检测等。102 系统的软件设计4.1 程

17、序流程框图时时显显显显时时时时时时时间间示示示示间间间间间间间显显周日月年秒分小周日月年示示钟钟时调调调调主调调调整整整整界整整整面开头初始化程序主键值检测有则主键值加一依据主键进展散转图 4-1 主程序流程4.2 LCD 的初始化与及显示程序1 LCD 的初始化void ini/*LCD 的初始化函数rw=0; en=0; P1=0xff; writeCG;write_order(0x38);/*端口写入write_order(0x0c); /*端口写入write_order(0x06); /*端口写入write_order(0x01); /*端口写入2 LCD 的显示程序void open

18、/*定义一个 LCD 显示函数uchar num; /*定义一个无符号的字符变量 num write_order(0x80+0x10); /*调用 write_order 函数for(num=0;opensnum!=”0”;num+)/*循环翻开write_date(opensnum); delay(20);for(num=0;num16;num+)/*对端口 0x1c 写入write_order(0x1c); delay(200);for(num=0;num5;num+)/*对端口 0x18 写入 write_order(0x18);delay(200);for(num=0;num4;num

19、+)/*对端口 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;num1;num+)/*对端口 0x18 写入write_order(0x18);delay(100);write_order(0x80+0x53); for(num=0;opens1num!=”0”;num+)/*循环延时写入数据wri

20、te_date(opens1num); delay(500);5 系统调试5.1 软件调试翻开程序调试软件 keil uVision2,在里面建一个工程,命名为:数字时钟.Uv2。接着建文件,编写相应程序。编写好的各个程序进展编译与连接。但假设是在该过程中,观察我们编好的程序有错误,那么就依据他相应的提示来修改错误,直到该程序能够正确编译为止。能够正常编译的程序说明没有什么问题了,此时我们在点击相关栏目,让它生成我们在硬件仿真时所需要的.HEX 文件。到此步,我们的软件调试就完成了。5.2 硬件调试翻开 Proteus 7 Professional 软件,依据方案所选的电路元件来设计整体电路,

21、线把个 芯片按肯定的位置放好,然后对相应的对象进展连接,连接时需认真,以免调试时发生错误。做好之后把编程所生成的。HEX 文件加载到 AT89C52 中,运行仿真软件,查看运行效果。假设运行出错那么就依据他相应的提示来修改错误,直到仿真成功为止。参考文献1 边春远、王志强,MCS-51单片机应用开发有用子程序M,人民邮电出版社.2 马忠梅主编,单片机的C语言应用程序设计M,北京航空航天大学出版社.3 李朝青主编,单片机原理及接口技术第3版M, 北京航空航天大学出版社.4 谭浩强,C语言程序设计第四版M, 清华大学出版.5 马忠梅、张凯,单片机的C语言应用程序设计M,北京航空航天大学出版社.6

22、廖先芸,电子技术实践与实训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 s3=P13;uchar code table1=“2023-08-28 Wen“; uchar code table2=“21:31:30“;uchar num,t0;char sec,minute,hou

23、r,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 write_data(uchar data1)lcdrs=1; P0=data1; delay(2); lcden=1; delay(2);lcden=0;/初始化子函数void initsec=0; minu

24、te=0; hour=0; week=0; day=1; month=1; year=2023; 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(0x0c);/开显示开光标,光标闪耀write_order(0x01);/显示清屏write_order(0x06);/光标显示效果write_order(0x80);/定义第一行写入数据的地址for(num=0;num14;num+

25、)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) /转变 时 分 秒 天 月 的子函数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)

26、;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(0x30+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)/转变周数

27、的子函数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+0x0b); delay(1); write_data(”T”); delay(1); write_data(”u”); delay(1);write_data(”e”); delay(1);break; case 2:write_order(0x80+0x0b); d

28、elay(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(”h”); delay(1); write_data(”u”); delay(1);break; case 4:write_order(0x80+0x0b); delay(1); write_data(”F”); delay(1); write_da

29、ta(”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:write_order(0x80+0x0b); delay(1); write_data(”S”); delay(1); write_data(”u”); delay(1); write_data(”n”); delay(1);

30、break; default:break;void displayif(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; month+; if(month=13)month=1; year+;yearchange(0,year);change(0x05,month);change(0x08,day); weekchange(week);change(0x43,hour);

31、change(0x46,minute);change(0x49,sec);/键盘扫描的子函数,修改时间void keyscanuchar snum; if(s0=0)delay(5); if(s0=0)while(!s0);/松手检测snum+;if(snum=1)/选定 秒TR0=0;write_order(0x80+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(

32、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_order(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)/增加 时 分 秒 天

33、 月 年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

34、+; if(week=7)week=0; weekchange(week); write_order(0x80+0x0b);if(snum=5)day+; if(day=31)day=1; change(0x08,day); write_order(0x80+0x08);if(snum=6)month+; if(month=13)month=1; change(0x05,month); write_order(0x80+0x05);if(snum=7)year+; yearchange(0,year); write_order(0x80);if(snum!=0)/削减 时 分 秒 天 月 年i

35、f(s2=0)delay(5); if(s2=0)while(!s2); if(snum=1)sec-; if(sec=-1)sec=59; change(0x49,sec); write_order(0x80+0x40+9);if(snum=2)minute-; if(minute=-1)minute=59; change(0x46,minute); write_order(0x80+0x40+6);if(snum=3)hour-; if(hour=-1)hour=23; change(0x43,hour); write_order(0x80+0x40+3);if(snum=4)week-;

36、 if(week=-1)week=6; weekchange(week); write_order(0x80+0x0b);if(snum=5)day-; if(day=0)day=30; change(0x08,day); write_order(0x80+0x08);if(snum=6)month-; if(month=0)month=12; change(0x05,month); write_order(0x80+0x05);if(snum=7)year-; yearchange(0,year); write_order(0x80);if(s3=0)delay(5); if(s3=0)wh

37、ile(!s3); sec=0; minute=0; hour=0; week=0; day=1; month=1; year=2023;change(0x49,sec); change(0x46,minute); change(0x43,hour); weekchange(week); change(0x08,day); change(0x05,month); yearchange(0,year); write_order(0x0c);void maininit; while(1)keyscan; display;/定时器 0void time0 interrupt 1TH0=(65536-

38、50000)/256; TL0=(65536-50000)%256; t0+;心得体会:这次单片机综合设计与实践,让我们都生疏到单片机与 C 语言的深度。当我们拿到设计任务书时,觉得用几个按键来掌握电子钟的时、分是一个格外简洁的设计,但在我们着手设计时觉察并不是那么简洁的。在硬件电路设计时由于我们组员对主芯片 AT89C52 的功能还未完全了解,犯了不少错误。在软件设计时,我原来想用汇编语言来进展编程,可是汇编语言对存放器和内存单元的了解要求很高,而C 语言虽然在程序运行效率上比汇编语言低,但C 语言在开发周期,移置信和可读信上有很大优势,便于修改和维护,因此我们选择了 C 语言编程。我们只是刚学单片机才一学期的一般大学生,不行能什么都懂,但我们充分发挥个人力量,各取所长。当我们在遇到未知的学问时,就有针对的去查询那方面的资料,去弄懂它。通过这次的经受,我们生疏的对一项课题争论,设计,撰写,下结论等过程,对我们以后的毕业设计或者工作都有很大的帮助。1

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

当前位置:首页 > 教育专区 > 高考资料

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

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