基于单片机的多功能闹钟综合设计报告_第1页
基于单片机的多功能闹钟综合设计报告_第2页
基于单片机的多功能闹钟综合设计报告_第3页
基于单片机的多功能闹钟综合设计报告_第4页
基于单片机的多功能闹钟综合设计报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 PAGE16 / NUMPAGES16大学学院综合电子设计报告设计题目: 基于单片机的多功能闹钟 专业: 班级: 学号:同组: 学号:指导老师:2012年11月设计要求和目的以单片机为核心,实现显示时间、闹钟和温度的采集和显示设计原理(包括设计原理图,关键器件等)系统框图主要介绍了软件整体的设计思路。在软件框图2-2中,系统上电自动复位以后首先进行系统的液晶显示、时钟芯片DS12887初始化,然后读写日期、时间等信息,待数据读写结束后显示时钟,再进入按键扫描,进行判断,功能设置与闹钟比较,最终返回显示界面。主函数的流程设计:主程序部分主要做的是开机后对硬件的初始化,分别是DS18B20传感器

2、,DS12C887时钟芯片,定时器,1602液晶屏,外部中断。启动后进入一个大循环,这个循环里面主要做的是按键事件的处理,启动DS18B20的温度转换,时间和温度的校正和最后的时间和温度的显示。如右图时钟12887程序流程设计:如下图液晶显示流程设计温度测量流程设计总体的模块连接图如下液晶显示屏编号符号引脚说明1VSS电源地2VDD电源正极3VL液晶显示偏压信号4RS数据/命令选择端(H/L)5R/W读写选择端(H/L)6E使能信号7D0Data I/O8D1Data I/O9D2Data I/O10D3Data I/O11D4Data I/O12D5Data I/O13D6Data I/O1

3、4D7Data I/O15BLA背光源正极16BLK背光源负极1602型LCD的接口信号说明 基本操作程序:读状态:输入:RS=L,RW=H,E=H输出:D0D7=状态字读数据:输入:RS=H,RW=H,E=H输出:无写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:D0D7=数据写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲 输出:无调试和结果调试:按键进行功能选择,分别调整时间和日期。然后设定一个闹钟的时间点等待。结果,闹钟会响,但是声音很小。但是屏幕有闪烁提示。总结,存在问题和改进基本实现了设计具有的功能,但是出现较多的问题,比如程序的错误导致液晶显示屏

4、无法显示,在改正后才得以显示。闹钟声音过小。心得体会 通过这次的电子设计,让我对单片机有了进一步的了解,一个看似简单的东西,其实做起来并不容易,在程序的方面,还有许多不明白的地方,通过上网找资料才得到解决的办法,了解到了自己的不足。也感老师和同学在这次的设计中对我的帮助,这次的设计才得以完成。附录:(不计页数)程序代码/主函数void main()char Temp2;/温度,Temp0为整数部分,Temp1为小数部分char last_temp;buzzer=0;DelayXms(1);DS18B20_Start_Convert();IAP_Data_Init();DS_Init(0);DS

5、_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_

6、Time);t1_init();int1_init();while(1)KeyHandle();switch(sys_sta)case 0:last_temp = Temp0;DS18B20_Wait_Convert(); /等待温度转换结束DS18B20_Read(Temp);/读取温度值sys_sta+;break;case 1:if (Temp0 - last_temp -5) /去除错误温度值if(Temp0&0 x80)Disp210=-;Temp0=Temp0+1;/ 取反加1elseDisp210= ;DS_RtoA(Disp2 + 11, Temp0 + Temp_C - 5)

7、; /温度校正Disp214=Temp1+0 x30;elseTemp0 = last_temp;if(shi=0)&(fen=0)&(miao=30)/时间校正miao+=Time_C-5;DS_Write(Second,miao);LCM1602_Full_Print(Disp1, Disp2);sys_sta+;break;case 2:LCM1602_Full_Print(Disp1, Disp2);/显示DS18B20_Start_Convert();/启动温度转换sys_sta+;/外部中断0读时钟数据void Read() interrupt 0sys_sta = 0;Time_

8、Conv();if(DS_Read(0 x0c)&0 x20)=0 x20)&(AlarmE=1)AlarmSta=1;/背光中断void BackLignt_Int()static unsigned char pwmdat=0;switch(BLSta)case 0:/背光关闭状态LCM1602_BL=1;break;case 2:/背光自动状态if (BLTimepwmdat ? (LCM1602_BL = 0) : (LCM1602_BL = 1);pwmdat+;if(pwmdat=5)pwmdat=0;break;/定时闹钟void Alarm_Int()static unsigne

9、d i;static bit flagbit;if(AlarmSta=1)/闹钟时间到if(i= 1; DQ = 0; /开始时间片_nop_();_nop_();_nop_();_nop_(); DQ = 1; /准备接收_nop_();_nop_();_nop_();_nop_(); if (DQ) dat |= 0 x80; /读取数据 DelayX0us(12); /等待时间片结束 return dat;/*向DS18B20写1字节数据*/void DS18B20_WriteByte(unsigned char dat) char i = 8;while(i-) /8位计数器 DQ =

10、 0; /开始时间片 _nop_();_nop_();_nop_();_nop_(); dat = 1; /送出数据 DQ = CY; DelayX0us(12); /等待时间片结束 DQ = 1; /恢复数据线 void DS18B20_Start_Convert() DS18B20_Reset(); /设备复位 DS18B20_WriteByte(0 xCC); /跳过ROM命令 DS18B20_WriteByte(0 x44); /开始转换命令void DS18B20_Wait_Convert() while (!DQ); /等待转换完成void DS18B20_Read(char Temp2)unsigned char TPH; /存放温度值的高字节unsigned char TPL; /存放温度值的低字节 DS18B20_Reset(); /设备复位 DS18B20_WriteByte(0 xCC); /跳过ROM命令 DS18B2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论