单片机带温度显示的红外遥控数字钟课程设计报告_第1页
单片机带温度显示的红外遥控数字钟课程设计报告_第2页
单片机带温度显示的红外遥控数字钟课程设计报告_第3页
单片机带温度显示的红外遥控数字钟课程设计报告_第4页
单片机带温度显示的红外遥控数字钟课程设计报告_第5页
已阅读5页,还剩17页未读, 继续免费阅读

下载本文档

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

文档简介

PAGE0单片机原理及应用课程设计报告课题名称带温度显示的红外遥控数字钟专业电气自动化班级B1031学号29姓名武XX指导教师谢XX2012-6-4目录1.设计题目及要求……………………12.设计方案……………12.1主控制器型……………………12.2DS1302实时显示时间的软硬件……………22.3显示方案………………………22.4报警方案………………………22.5键盘接口的选择………………32.6红外通信的基本原理…………32.6.1红外通信接口的硬件电路设计………32.6.2红外发送器及原理……………………32.6.3红外遥控电路原理分析………………4主要电路与程序设计………………53.1系统硬件的结构框图…………53.2单片机最小系统设计…………53.3温度电路设计…………………63.4显示电路设计…………………63.5声光报警电路…………………63.6实时时钟模块…………………73.7红外线接收电路………………74.软件设计……………84.1总模块的流程图………………84.2部分主要模块的流程图………94.3温度转换核心及其算法……………………11 4.3.1DS18B20的内部结构…………………114.3.2DS18B20的内存结构…………………114.3.3DS18B20的测温功能…………………114.3.4温度转换算法及分析………………125.调试结果记录及分析……………155.1数码管显示的测试方法和结果……………155.2DS18B20的测试方法和结果………………165.3键盘程序的测试方法和结果………………165.4RS232模块的测试方法和结果……………165.5产品最终调试………………16结论………………16参考文献…………172.5键盘接口的选择在实际应用中,要求设定的上下限温度温值会随着实际情况的需要变化而变化,因此,就要根据实际的情况来改变系统的温度设定值。作为一个系统,一旦做成产品后,就很难通过对程序的修改来完成对各项初值的设定,因而只有用按键的方式来重新对温度值进行设置。键盘有独立式和行列式两种,独立式键盘适用于简单的键盘设置中,行列式键盘适用于复杂的键盘设置中。对于该系统中只需要简单的对温度进行上、下限值设置,因而我们选用独立式键盘,这样的键盘编程简单、可靠2.6红外通信的基本原理红外通信是利用950nm近红外波段的红外线作为传递信息的媒体,即通信信道。发送端采用脉时调制(PPM)方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管以光脉冲的形式发送出去;接收端将接收到的光脉转换成电信号,再经过放大。滤波等处理后送给解调电路进行解调,还为二进制数字信号后输出。2.6.1红外通信接口的硬件电路设计单片机本身并不具备红外通信接口,但可以利用单片机的串行接口与片外的红外发射和接收电路,组成一个应用于单片机系统的红外串行通信接口。2.6.2红外发送器及原理简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输;红外通信接口就是针对红外信道的调制解调器。红外发送器电路包括脉冲振荡器。驱动管T1和T2.红外发射管D1和D2等部分。其中脉冲振荡器由NE555定时器。电阻(R1.R2)和电容(C1.C2)组成,用以产生38kHz的脉冲序列作为载波信号;红外发射管D1和D2选用Vishay公司生产的TSAL6238,用来向外发射950nm的红外光束。红外发送器的工作原理为:串行数据由单片机的串行输出端TXD送出并驱动T1管,数位“0”使T1管导通,通过T2管调制成38kHz的载波信号,并利用两个红外发射管D1和D2以光脉冲的形式向外发送。数位“1”使T1管截止,红外发射管D1和D2不发射红外光。若传送的波特率设为1200bps,则每个数位“0”对应32个载波脉冲调制信号的时序,如图2-1所示。图2-1遥控连发信号波形红外接收接收模块是一个三端元件,使用单电源+5V电源,具有功耗低。抗干扰能力强,灵敏度高。其内部结构框图如图2-2所示。图2-2红外遥控系统框图用于红外线遥控电子钟的遥控器包括至少一个按键、红外线发射部分以及分别与按键和红外线发射部分相连的遥控器控制电路,其中所述按键分别表示电子钟的各调节功能。受红外线遥控的电子钟包括显示面、电子钟控制电路,还包括接收上述遥控器发来的各种发光信号并将发光信号传递给电子钟控制电路的红外线接收部分,而且电子钟控制电路还设有检测来自红外线接收部分的信号并执行信号所表示的电子钟的各调节功能的程序。2.6.3红外遥控电路原理分析当红外遥控器按下时,红外接收头接收到红外信号,单片机产生中断,在中断程序进行红外解码,再按解码值判断哪个按键按下。通过按键值对时间进行设置。单片机通过读取时钟芯片1302,数据完成时间显示功能,显示部分采用数码管显示,可以分别显示年,月,日,时,分,秒,星期及温度。3.主要电路与程序设计3.1系统硬件的结构框图根据时间和红外遥控电子钟设计的实际要求和设计方案的论证,系统主要由AT89S51及相关的复位电路组成的单片机最小系统、由DS18B20构成感温测温模块、由液晶显示屏LED128*64显示模块、由蜂鸣器及LED发光二级管组成声光报警单元、独立式键盘输入模块5部分电路组成。另外为了不浪费单片机剩余资源,同时显示出采集器采集温度实时性,在此特增加了DS1302实时时钟模块与用于上位机电脑通信的MAX232电平转换驱动模块。综上述实际总体方案电路关系框图如图3-1所示:图3-1总体方案电路关系框图3.2单片机最小系统设计单片机作为主控制器,主要是处理各个部分重要的数并据协调各个模块正常工作的关键部件。AT89S51单片机具有4个8为I/O口;本设计中主要是用了P0口显示模块的数据接口;P2口的P2.5、P2.6、P2.7位作为液晶屏的使能接口;P1口的P1.0、P1.1、P1.2位分别接实时钟ds1302的复位、时钟、数据引脚;P1口P1.3位作为集成数字温度传感器ds18b20的数据接口,用来对ds18b20进行读写操作;在此特别说明虽然P0内部没有上拉电阻,但是在本设计中只是做为液晶显示屏的数据总线或地址总线;可以省去上拉电阻不接。At89s51单片机接上相应的电源和时钟,组成单片最小系统系统如图3-2所示。图3-2单片最小系统3.3温度电路设计DS18B20采用一线传输协议,可以使用外部电源工作方式也可以采用寄生电源工作方式,本设计中采用外部电源工作模式,具体电路如图3-3:图3-3外部电源工作模式3.4显示电路设计数码管显示电路如图3-4:3.5声光报警电路本电路由发光二极管和蜂鸣器构成如图2-5:图3-4数码管显示图3-5声光报警电路3.6实时时钟模块本模块由DS1302时钟芯片加晶振组成具体电路如图3-6所示:3.7红外线接收电路如图3-7所示是电路的红外线接收电路。图3-6实时时钟电路图3-7红外线接收电路4.软件设计本系统的执行方法是循环查询加中断执行来显示和控制时间和温度的。键盘扫描程序是用循环查询的办法,与上位机通信采用中断的方法;这样可以进一步节省单片机的CPU资源,也可以保证实时响应外部输入。4.1总模块的流程图总模块流程图如4-1所示:图4-1总模块的流程图4.2部分主要模块的流程图读取温度DS18B20模块的流程如图4-2所示:图4-2读取温度流程图4.3温度转换核心及其算法4.3.1DS18B20的内部结构DS18B20的内部结构功能模块如图3-3所示,主要有四部分组成,64位光刻ROM、温度传感器、非易失性温度报警触发器TH和TL、配置寄存器。R0M中的64位序列号是出厂前被光刻好的,他可以看作是该DSISB20的地址序列码,每个DSI8B20的64位序列号均不相同。高低温报警触发器TH和TL,配置寄存器均由一个字节的E2PROM组成,使用一个存储器功能命令可对TH,TL或配置寄存器写入。配置寄存器中R1,R0决定温度转换的精度位数:R1R0=’00’,9位精度,最大转换时间为93.75ms;R1R0=‘01’,10位精度,最大转换时间为187.5ms;R1R0=‘10’,11位精度,最大转换时间为375ms;R1R0=’11’,12位精度,最大转换时间为750ms;未编程时默认为12位精度。本系统采用的也是12位的精度。4.3.2DS18B20的内存结构 DSI8B20温度传感器的内部存储器包括一个高速暂存RAM(便笺式的内部存储器)和一个非易失性的可电擦除的EEPROM,后者存放高温和低温触发器TH,TL和结构寄存器。便笺存储器包含了9个连续字节(0~8),前两个字节是测得的温度信息,字节0的内容是温度的低8位,字节1是温度的高8位,字节2是TH(温度上限报警),字节3是TL(温度下限报警),字节4是配置寄存器,用于确定输出分辨率9到12位。第5、6、7个字节是预留寄存器,用于内部计算。字节8是冗余检验字节,校验前面所有8个字节的CRC码,可用来保证通信正确。4.3.3DS18B20的测温功能 当DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示。温度值格式,其中“S”为标志位,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。DSI8B20完成温度转换后,就把测得的温度值与TH做比较,若T>TH或T<TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令做出响应。DSl8B20工作过程中的协议:初始化->ROM操作命令->存储器操作命令->处理数据(1)初始化单总线上的所有处理均从初始化开始(2)ROM操作品令总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如:

指令

代码ReadROM(读ROM)

[33H]MatchROM(匹配ROM)

[55H]SkipROM(跳过ROM]

[CCH]SearchROM(搜索ROM)

[F0H]Alarmsearch(告警搜索)

[ECH](3)存储器操作命令

指令

代码WriteScratchpad(写暂存存储器)

[4EH]ReadScratchpad(读暂存存储器)

[BEH]CopyScratchpad(复制暂存存储器)

[48H]ConvertTemperature(温度变换)

[44H]RecallEPROM(重新调出)

[B8H]ReadPowersupply(读电源)

[B4H]4.3.4温度转换算法及分析由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MSByte)高5位是用来保存温度的正负(标志为S的bit11~bit15),高字节(MSByte)低3位和低字节来保存温度值(bit0~bit10)。其中低字节(LSByte)的低4位来保存温度的小数位(bit0~bit3)。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。算法核心:首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LSByte)取反加一变成原码。处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位,百位的BCD码存入RAM中。由于百位没有用,默认情况是置为0A,在显示屏上没有任何显示。温度算法核心代码//*******************************ds18b20sbitDQ=P1^7;//定义通信端口//延时函数voiddelay(unsignedinti){while(i--);}//初始化函数Init_DS18B20(void){ unsignedcharx=0; DQ=1;//DQ复位 delay(8);//稍做延时 DQ=0;//单片机将DQ拉低 delay(80);//精确延时大于480us DQ=1;//拉高总线 delay(14); x=DQ;//稍做延时后如果x=0则初始化成功x=1则初始化失败 delay(20);}//读一个字节ReadOneChar(void){ unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//给脉冲信号 dat>>=1; DQ=1;//给脉冲信号 if(DQ) dat|=0x80; delay(4); } return(dat);}//写一个字节WriteOneChar(unsignedchardat){unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;delay(5);DQ=1;dat>>=1;}//delay(4);}//读取温度ReadTemperature(void) unsignedchara=0; unsignedcharb=0; unsignedintt=0; Init_DS18B20(); WriteOneChar(0xCC);//跳过读序号列号的操作 WriteOneChar(0x44);//启动温度转换 Init_DS18B20(); WriteOneChar(0xCC);//跳过读序号列号的操作 WriteOneChar(0xBE);//读取温度寄存器等(共可读9个寄存器)前两个就是温度 a=ReadOneChar(); b=ReadOneChar(); t=b; t<<=8; t=t|a; t=t*0.625;//有效位到小数点后1位 return(t);}//ds18b20结束5.调试结果记录及分析为了提高调试的效率和成功率,我采用了先分别调试各单元模块,再进行整机调试的方法来调试。5.1数码管显示的测试方法和结果把编写的程序通过单片机仿真软件进行测试,如果在测试过程中,能够通过数码管显示屏正常显示读取时间的信息,那么说明子程序编写正确;如果测试中,显示的结果与我们要求的不一致,那说明程序在编写中出现错误,就应该修改子程序,直到能正确读取时间信息为止。5.2DS18B20的测试方法和结果 利用仿真软件不断修改DS18B20仿真元件的温度实际值,结果显示的与之相同,说明读温度显示程序编写正确。5.3键盘程序的测试方法和结果把编写的键盘程序通过单片机仿真软件进行测试,在测试过程中,能够实现时间的调整(自加、自减)功能,那么说明该子程序编写正确;如果测试的结果与要求的不一致,那么就应该修改该子程序,直到正确为止,在修改过程中,不必去改动其它部分程序。5.4RS232模块的测试方法和结果将RS232的发送与接收端相互短接起来;利用串口调试助手发送一串字符,如果马上在调试助手的接收窗口中接收到刚才发送的字符,说明通信正确可以进行通信。5.5产品最终调试在分别调试成功每一个部分的程序后,我们就可以把整个系统的程序进行调试,还是用单片机仿真软件调试,在调试中,该程序能按照系统预定的步骤运行,那么说明程序编写正确;如果

温馨提示

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

评论

0/150

提交评论