单片机带温度显示的红外遥控数字钟课程设计报告.docx
- 文档编号:11166190
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:25
- 大小:154.42KB
单片机带温度显示的红外遥控数字钟课程设计报告.docx
《单片机带温度显示的红外遥控数字钟课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机带温度显示的红外遥控数字钟课程设计报告.docx(25页珍藏版)》请在冰点文库上搜索。
单片机带温度显示的红外遥控数字钟课程设计报告
单片机原理及应用
课程设计报告
课题名称带温度显示的红外遥控数字钟
专业电气自动化
班级B1031
学号29
姓名武XX
指导教师谢XX
2012-6-4
1.设计题目及要求……………………………………………………………………1
2.设计方案……………………………………………………………………………1
2.1主控制器型……………………………………………………………………1
2.2DS1302实时显示时间的软硬件……………………………………………2
2.3显示方案………………………………………………………………………2
2.4报警方案………………………………………………………………………2
2.5键盘接口的选择………………………………………………………………3
2.6红外通信的基本原理…………………………………………………………3
2.6.1红外通信接口的硬件电路设计………………………………………3
2.6.2红外发送器及原理……………………………………………………3
2.6.3红外遥控电路原理分析………………………………………………4
3.主要电路与程序设计………………………………………………………………5
3.1系统硬件的结构框图…………………………………………………………5
3.2单片机最小系统设计…………………………………………………………5
3.3温度电路设计…………………………………………………………………6
3.4显示电路设计…………………………………………………………………6
3.5声光报警电路…………………………………………………………………6
3.6实时时钟模块…………………………………………………………………7
3.7红外线接收电路………………………………………………………………7
4.软件设计……………………………………………………………………………8
4.1总模块的流程图………………………………………………………………8
4.2部分主要模块的流程图………………………………………………………9
4.3温度转换核心及其算法……………………………………………………11
4.3.1DS18B20的内部结构…………………………………………………11
4.3.2DS18B20的内存结构…………………………………………………11
4.3.3DS18B20的测温功能…………………………………………………11
4.3.4温度转换算法及分析………………………………………………12
5.调试结果记录及分析……………………………………………………………15
5.1数码管显示的测试方法和结果……………………………………………15
5.2DS18B20的测试方法和结果………………………………………………16
5.3键盘程序的测试方法和结果………………………………………………16
5.4RS232模块的测试方法和结果……………………………………………16
5.5产品最终调试………………………………………………………………16
6.结论………………………………………………………………………………16
7.参考文献…………………………………………………………………………17
1.设计题目及要求
1.1设计题目:
带温度显示的红外遥控数字钟
1.2要求:
用数码管实现显示,DS1302实现计时,遥控键盘实现控制
(1)能显示当前时间,用按键切换可以显示日期,星期等情况。
(2)能设定时间,能根据设定的日期自动计算星期几。
2.设计方案
本系统要求完成对时间和环境温度的采集,对时间及温度数据的处理问题,因此,首要解决的采用何种微控制器以及何种传感器来对时间及温暖进行采集处理包括计算,其次是采集到的时间及温暖将通过何种方式去显示或通过何钟方式表达出来让人一目了然,最后要解决的是当检测到的温度超出正常或低于正常值时该做出报警反应或对外部设备作相应的控制。
2.1主控制器选型
当今单片机厂商琳琅满目,MCU品种繁多、产品性能各异。
不同型号的
单片机功能各异、开发装置也不兼容。
常用的单片机也有很多种,我们今年所
学的是Atmel的AT89系列单片机,所以我们选用了ATMEL公司的AT89S51
单片机,AT89S51是美国ATMEL公司生产的低电压,高性能CMOS8位单片
机,片内含8Kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes
的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性
存储技术生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用
8位中央处理器(CPU)和FLASH存储单元,功能强大AT89S51单片机适用
于许多较为复杂控制应用场合。
AT89S51单片机具有低电压供电和体积小等特
点,四个端口只需要其中一个或两个口就能满足系统的设计需要,很适合便携
手持式产品的设计使用;系统可用二节电池供电。
尽管AT89S51单片机现在
并不是最完善最先进的单片机,但是就其功能及相关资料在市面上非常丰富,
编译器已经比较优化我们对其开发环境及开发语言也相当熟悉,对于本设计来
说我们完全可以选择AT89s51单片机作为主控制器。
2.2DS1302实时显示时间的软硬件
DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。
,其中,
时钟的显示用LCD。
虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟
正常,最好选用小型充电电池。
可以用老式电脑主板上的3.6V充电电池。
如
果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代
替。
100μF就可以保证1小时的正常走时。
DS1302在第一次加电后,必须
进行初始化操作。
初始化后就可以按正常方法调整时间。
DS1302存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。
DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能
实现数据与出现该数据的时间同时记录。
这种记录对长时间的连续测控系统
结果的分析及对异常数据出现的原因的查找具有重要意义。
传统的数据记录
方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而
无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,
占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,
而且,某些测控系统可能不允许。
但是,如果在系统中采用时钟芯片DS1302,
则能很好地解决这个问题。
2.3显示方案
直接要数码管或者7段数码管加MAX7219驱动显示。
MAX72
19驱动7段数码管采用低电压扫描驱动具有:
可以节约单片机I/O口,耗电
少、使用寿命长、成本低、亮度高、故障少、视角大、可视距离远等特点;
但是显示单一,只能显示数字和几个字母。
就本设计而言需要显示很多的操作
提示信息和报警信息,数码管是难以达到的;且本设计需要单片机I/O口并不
多,就AT89S51的资源来说不必要考虑单片机I/O不必要考虑I/O口资源不足
的问题。
2.4报警方案
采用单片机产生不同的频率信号来驱动蜂鸣器和发光二极管产生声光提
示,不同的温度报警值对应不同的频率,此方案能完成声音提示功能,同时给
人以提示可以类似电脑主机的蜂鸣报警,而且易于实现。
2.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 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,在显示屏上没有任何显示。 温度算法核心代码 //*******************************ds18b20 sbitDQ=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产品最终调试 在分别调试成功每一个部分的程序后,我们就可以把整个系统的程序进行 调试,还是用单片机仿真软件调试,在调试中,该程序能按照系统预定的步骤 运行,那么说明程序编写正确;如果在调试中出现了我们不需要的结果,那么 说明程序出现错误,这时就应该检查
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 温度 显示 红外 遥控 数字 课程设计 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)