毕业设计(论文)1602、18b20、ds1302电子时钟.docVIP

毕业设计(论文)1602、18b20、ds1302电子时钟.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录 1 仿真实验环境 1 1.1采用 Proteus6_9_SP5实现单片机及外围器件的仿真 1 1.2使用Keil uVision3编写本日历程序(C语言) 1 2 原理图 2 2.1各部分功能实现: 2 3 程序分析及代码 3 3.1程序分析: 3 3.1.1 程序的优点: 3 3.1.2 程序的缺点: 3 3.1.3 总结: 3 3.2源代码: 4 3.2.1 Calendar.c程序文件: 4 3.2.2 LM016L.h程序文件: 6 3.2.3 DS1302.h程序文件: 7 3.2.4 DS18B20.h程序文件: 11 3.2.5 KeyScan.h程序文件: 14 3.2.6 OPEN.h程序文件: 17 3.2.7 MODE.h程序文件: 18 4 效果图 19 4.1 上电显示 19 4.2 正常显示 20 4.3功能模式(调时) 20 4.4闹钟模式 21 4.5温度报警(小灯闪烁) 21 1 仿真实验环境 1.1采用 Proteus6_9_SP5实现单片机及外围器件的仿真 如图: 1.2使用Keil uVision3编写本日历程序(C语言) 如图: 2 原理图 2.1各部分功能实现: 1.以AT89C52作为控制核心,通过P0口连接LM016L液晶的并行数据输入/输出端进行显示数据以及命令的发送与接收。P2.0、P2.1和P2.2分别连接液晶的数据/命令选择端、读/写控制以及使能端。通过对这三个端口的操作,来实现液晶的正确显示。 2.DS18B20数字温度传感器以单总线的方式连接到P2.3口,通过正确的时序操作,与单片机进行双向通信,把温度值以串行数字形式发送给单片机。再正确显示在LCD上。 3.LED灯连接P2.4口,在相应的时间或温度触发下通过电平的高低变化闪烁。 4.单片机的P2.5、P2.6、P2.7分别连接DS1302时钟芯片的复位端、时钟信号以及I/O端。在相应时序信号的控制下,读出芯片中的内容,并显示在LCD上。 5.该日历的功能操作通过连接在P3.0~P3.3的四个按键实现,四个按键分别为:进入/退出模式键、功能选择键、时加/温度加一键、分加/温度减一键。 6.因为P0口没有上拉电阻,所以加了排阻。 3 程序分析及代码 3.1程序分析: 3.1.1 程序的优点: 1.以模块化的形式把程序分为若干个独立部分。 2.在程序中使用了指针、数组、函数等结合的方法,简化了部分程序。 3.程序中首次使用了二维字符数组的相关操作。 3.1.2 程序的缺点: 1.程序总体上写的不够简练。 2.程序的部分功能操作麻烦,如调时或闹钟设置时对时、分的操作只能加。 3.程序的稳定性有待于提高。 4.过多的变量、标志位的定义降低了程序的可读性。 3.1.3 总结: 通过该日历程序的编写,自身发现了许多的问题,现总结如下: 1.在编写程序的过程中一定要做好程序的备份。 2.在编写某功能函数之前要想好流程再写,最好写出流程图。 3.一定要多写注释,不然连自己都读不懂自己的程序。 4. 在编写该日历程序过程中,首次出现了内存不够的情况,以后需引起注意。 3.2源代码: 3.2.1 Calendar.c程序文件: /******使用LCD1602、DS1302时钟芯片、DS18B20温度传感器完成该日历*******/ #includereg52.h //以下的顺序不能任意放 #define uint unsigned int //宏定义 #define uchar unsigned char #includeLM016L.h #includeDS1302.h #includeDS18B20.h #includeKeyScan.h #includeMODE.h #includeOPEN.h ////////以下为几个标志位/////////// // flag,select,alarm,temperature,limit /*分别为模式标志位、功能选择标志位、闹钟、温度正负标志位以及温度上限值 (整型) 其中alarm有三种状态:0为禁止进入,1为允许进入,2为正在闹钟模式下 */ void open(); //上电显示 void KeyScan(); //键盘扫描 void SetTime_Mode(); //调时 void SetRing_Mode(); //闹钟设置 void SetTemp_Mode(); //温度上限设置模式 /******************************日历主函数************************************/ void main() { init(); //初始化LCD

文档评论(0)

精品天地 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档