基于单片机的多功能闹钟综合设计报告论文.doc

基于单片机的多功能闹钟综合设计报告论文.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机的多功能闹钟综合设计报告论文

福州大学至诚学院 综合电子设计报告 设计题目: 基于单片机的多功能闹钟 专业: 班级: 姓名: 学号: 同组姓名: 学号: 指导老师: 2012年11月 设计要求和目的 以单片机为核心,实现显示时间、闹钟和温度的采集和显示 设计原理(包括设计原理图,关键器件等) 系统框图主要介绍了软件整体的设计思路。在软件框图2-2中,系统上电自动复位以后首先进行系统的液晶显示、时钟芯片DS12887初始化,然后读写日期、时间等信息,待数据读写结束后显示时钟,再进入按键扫描,进行判断,功能设置与闹钟比较,最终返回显示界面。 主函数的流程设计:主程序部分主要做的是开机后对硬件的初始化,分别是DS18B20传感器,DS12C887时钟芯片,定时器,1602液晶屏,外部中断。启动后进入一个大循环,这个循环里面主要做的是按键事件的处理,启动DS18B20的温度转换,时间和温度的校正和最后的时间和温度的显示。如右图 时钟12887程序流程设计:如下图 液晶显示流程设计 温度测量流程设计 总体的模块连接图如下 液晶显示屏 编号 符号 引脚说明 1 VSS 电源地 2 VDD 电源正极 3 VL 液晶显示偏压信号 4 RS 数据/命令选择端(H/L) 5 R/W 读写选择端(H/L) 6 E 使能信号 7 D0 Data I/O 8 D1 Data I/O 9 D2 Data I/O 10 D3 Data I/O 11 D4 Data I/O 12 D5 Data I/O 13 D6 Data I/O 14 D7 Data I/O 15 BLA 背光源正极 16 BLK 背光源负极 1602型LCD的接口信号说明 基本操作程序: 读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字 读数据:输入:RS=H,RW=H,E=H 输出:无 写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲 输出:D0~D7=数据 写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲 输出:无 调试和结果 调试:按键进行功能选择,分别调整时间和日期。然后设定一个闹钟的时间点等待。 结果,闹钟会响,但是声音很小。但是屏幕有闪烁提示。 总结,存在问题和改进 基本实现了设计具有的功能,但是出现较多的问题,比如程序的错误导致液晶显示屏无法显示,在改正后才得以显示。闹钟声音过小。 心得体会 通过这次的电子设计,让我对单片机有了进一步的了解,一个看似简单的东西,其实做起来并不容易,在程序的方面,还有许多不明白的地方,通过上网找资料才得到解决的办法,了解到了自己的不足。也感谢老师和同学在这次的设计中对我的帮助,这次的设计才得以完成。 附录:(不计页数) 程序代码 //主函数 void main() { char Temp[2]; //温度,Temp[0]为整数部分,Temp[1]为小数部分 char last_temp; buzzer=0; DelayXms(1); DS18B20_Start_Convert(); IAP_Data_Init(); DS_Init(0); DS_Write(Second_Alarm,00); DS_Write(Minute_Alarm,AMinute); DS_Write(Hour_Alarm,AHour); Timer0_Init(); LCM1602_Init(); LCM_1602_Chinese4(3, 40); LCM_1602_Write_Temp_Week(); LCM_1602_N_Cur_Bli(); DS18B20_Wait_Convert(); DS18B20_Read(Temp); DS18B20_Start_Convert(); EX0=1; LCM1602_Door_Open(Disp1,Disp2, LCM1602_Door_Time); t1_init(); int1_init(); while(1) { KeyHandle(); switch(sys_sta) { case 0: last_temp = Temp[0]; DS18B20_Wait_Convert(); //等待温度转换结束 DS18B20_Read(Temp); //读取温度值 sys_sta

文档评论(0)

2017meng + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档