- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
带温度的LCD电子时钟设计
带温度的LCD1602电子时钟设计实验
信息科学与工程学院
专业:信息管理与信息系统1班
姓名:张茹帆 学号:201142597
姓名:任师师 学号:201142595
带温度的LCD1602电子时钟设计
一、实验目的
学习利用AT89C52进行任务设计,练习使用52单片机内部的 定时器进行计时。学习ds1302时钟芯片和ds18b20温度传感器的使用。学习用模块化编程进行较长程序的编写。
二、实验要求
(1)利用lcd1602液晶显示屏作为显示模块,用AT89C52进行控制,用ds18b02测量显示即时温度,温度报警,用ds1302时钟芯片为单片机提供时间数据。具有定时功能。
(2)要求时间和定时时间可调,并且在闹铃报时的时候可以用按键进行关闭。并且可以用按键关闭打开定时功能。
(3)利用keil uVision4编译软件进行编译。
(4)完成实验要求,写出实验报告。
三、软件环境
Proteus仿真软件,keil uVision4编译软件
四、工作现象
本时钟具有显示年月日时分秒星期、温度和温度报警的功能。实验用时钟芯片ds1302来提供秒、分、时、星期、日期、月份和年份的数据,显示部分采用液晶显示模块lcd1602,右上方显示星期,左下角显示温度,右下角显示闹铃的开关状态。用温度传感器ds18b20来测量温度。另外,闹铃用D1(LED-RED)来报时,用D2(LED-RED)做温度报警发声器,闹钟开启用D3来显示。具体各部分功能及操作下面将做介绍:
ds1302给单片机at89c52提供年、月、日、时、分、秒、星期,ds18b20采集温度的数据,经单片机的处理送到液晶显示屏lcd1602上显示,实验设置的报警温度为30*c,由于程序有点长,已达到52单片机内存的极限,所以没加调整报警温度的功能,并且在修正时间的过程中只能加,不能减。现在开始介绍具体的操作步骤:key1为调整时间和日期的按键,按下key1键,lcd1602上的光标按时分星期日月年的顺序进行移动,光标所到处按key3键可以调整相应的数据信息。Key2键是闹钟调整键,本实验只提供了设置时间来调整闹钟,不设计年月日和星期,按下key2键,光标在时分之间切换,光标所到处按key3调整相应数据。Key3键用来开关闹钟,当闹铃开启时,lcd1602的右下角会出现“ON”的字样,同时发光二极管D3点亮当闹铃关闭时,lcd1602右下角则出现“OF”的字样。Key4来关闭正在报时的闹钟,即闹钟响是按key4可关闭闹铃。
五、实验电路图
六、程序流程图
主程序流程图图
定时流程图
时间调节流程图
七、程序代码:
七、实验总结:
通过这次学习,对各种电路都有了大概的了解,同时加深了对芯片的了解及其应用。
6
开始
初始化LCD及DS1302
进入调节模式
判断设置按键
是否按下
将时间/日期写入DS1302
读取DS1302中的时间、日期
显示时间、日期
定时闪烁
S2按下
定分闪烁
S2按下
S3按下
时调节
S3按下
分调节
定时数据写入
LCD1602
调分数据写入
LCD1602
进入主程序
调时数据写入
LCD1602
S2按下
年调节
S3按下
S3按下
年数据写入
Ds1302
月数据写入
Ds1302
日数据写入
Ds1302
星期数据写入
Ds1302
进入主程序
S1按下
日调节
月调节
星期调节
年闪烁
S1按下
月闪烁
S1按下
日闪烁
S1按下
时闪烁
S1按下
分闪烁
S1按下
星期闪烁
S3按下
时调节
S3按下
分调节
时数据写入
Ds1302
分数据写入
Ds1302
S3按下
S3按下
S1按下
sbit rs=P2^0;
sbit rw=P2^1;
sbit e=P2^2;
void lcdxcom(uchar com);
void lcdinit();
void lcdxshuju(uchar dat);
void lcdx_time(uchar add,uchar date);
void lcdx_day(uchar add,uchar date);
#endif
液晶lcd1602的.c函数:
#includereg52.h
#includelcd1602.h
#includedelay.h
#includeds1302.h
void lcdxcom(uchar com)
{
e=0;
rs=0;
rw=0;
P0=com;
lcddelay(10);//500us
e=1;
lcddelay(20);
e=0;
文档评论(0)