Word版可编辑-单片机带温度显示的红外遥控数字钟课程设计报告精心整理.doc_第1页
Word版可编辑-单片机带温度显示的红外遥控数字钟课程设计报告精心整理.doc_第2页
Word版可编辑-单片机带温度显示的红外遥控数字钟课程设计报告精心整理.doc_第3页
Word版可编辑-单片机带温度显示的红外遥控数字钟课程设计报告精心整理.doc_第4页
Word版可编辑-单片机带温度显示的红外遥控数字钟课程设计报告精心整理.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理及应用课 程 设 计 报 告 课题名称 带温度显示的红外遥控数字钟 专 业 电气自动化 班 级 B1031 学 号 29 姓 名 武 X X 指导教师 谢 X X 2012-6-4目 录1.设计题目及要求12.设计方案1 2.1 主控制器型1 2.2 DS1302实时显示时间的软硬件 2 2.3 显示方案2 2.4 报警方案2 2.5 键盘接口的选择3 2.6 红外通信的基本原理3 2.6.1 红外通信接口的硬件电路设计3 2.6.2 红外发送器及原理3 2.6.3 红外遥控电路原理分析43. 主要电路与程序设计5 3.1 系统硬件的结构框图5 3.2 单片机最小系统设计5 33 温度电路设计6 3.4 显示电路设计6 3.5 声光报警电路6 3.6 实时时钟模块7 3.7 红外线接收电路74.软件设计8 4.1 总模块的流程图8 4.2 部分主要模块的流程图9 4.3 温度转换核心及其算法 11 4.3.1 DS18B20的内部结构11 4.3.2 DS18B20的内存结构11 4.3.3 DS18B20的测温功能11 4.3.4 温度转换算法及分析12 5.调试结果记录及分析15 5.1 数码管显示的测试方法和结果15 5.2 DS18B20的测试方法和结果 16 5.3 键盘程序的测试方法和结果16 5.4 RS232模块的测试方法和结果 16 5.5产品最终调试166. 结论 167. 参考文献 171.设计题目及要求 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.2 DS1302实时显示时间的软硬件 DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。,其中, 时钟的显示用LCD。 虽然DS1302在主电源掉电后的耗电很小,但是,如果要长时间保证时钟 正常,最好选用小型充电电池。可以用老式电脑主板上的3.6V充电电池。如 果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代 替。100 F就可以保证1小时的正常走时。DS1302在第一次加电后,必须 进行初始化操作。初始化后就可以按正常方法调整时间。 DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。 DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能 实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统 结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录 方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而 无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器, 占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源, 而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302, 则能很好地解决这个问题。 2.3显示方案 直接要数码管或者7段数码管加驱动显示。 驱动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 单片最小系统 33 温度电路设计 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.1 DS18B20的内部结构 DS18B20的内部结构功能模块如图3-3所示,主要有四部分组成,64位光 刻ROM、温度传感器、非易失性温度报警触发器TH和TL、配置寄存器。R0M 中 的64位序列号是出厂前被光刻好的,他可以看作是该DSISB20的地址序列码, 每个DSI8B20的64位序列号均不相同。高低温报警触发器TH 和TL,配置寄 存器均由一个字节的E2PROM组成,使用一个存储器功能命令可对 TH,TL或 配置寄存器写入。配置寄存器中R1,R0决定温度转换的精度位数:R1R0 00,9位精度,最大转换时间为93.75 ms;R1R0 = 01,10位精度,最 大转换时间为187.5 ms;R1R0 = 10,11位精度,最大转换时间为375 ms; R1R0 =11,12位精度,最大转换时间为750 ms;未编程时默认为12位精 度。本系统采用的也是12位的精度。 4.3.2 DS18B20的内存结构 DSI8B20温度传感器的内部存储器包括一个高速暂存RAM (便笺式的内部 存储器)和一个非易失性的可电擦除的EEPROM,后者存放高温和低温触发器 TH,TL和结构寄存器。便笺存储器包含了9个连续字节(08),前两个字 节是测得的温度信息,字节0的内容是温度的低8位,字节1是温度的高8 位,字节2是TH(温度上限报警),字节3是TL(温度下限报警),字节4 是配置寄存器,用于确定输出分辨率9到12位。第5、6、7个字节是预留寄 存器,用于内部计算。字节8是冗余检验字节,校验前面所有8个字节的CRC 码,可用来保证通信正确。 4.3.3 DS18B20的测温功能 当DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0062 5LSB形式表示。温度值格式,其中“S”为标志位,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。DSI8B20完成温度转换后,就把测得的温度值与 TH做比较,若TTH或T ROM操作命令 - 存储器操作命令- 处理数据(1) 初始化 单总线上的所有处理均从初始化开始 (2) ROM操作品令 总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如: 指令 代码 Read ROM(读ROM) 33H Match ROM(匹配ROM) 55H Skip ROM(跳过ROM CCH Search ROM(搜索ROM) F0H Alarm search(告警搜索)ECH (3) 存储器操作命令 指令 代码 Write Scratchpad(写暂存存储器) 4EH Read Scratchpad(读暂存存储器) BEH Copy Scratchpad(复制暂存存储器) 48H Convert Temperature(温度变换) 44H Recall EPROM(重新调出)B8H Read Power supply(读电源) B4H 4.3.4 温度转换算法及分析 由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。 温度高字节(MS Byte)高5位是用来保存温度的正负(标志为S的bit11 bit15),高字节(MS Byte)低3位和低字节来保存温度值(bit0 bit10)。 其 中低字节(LS Byte)的低4位来保存温度的小数位(bit0 bit 3)。由于本 程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘 以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保 留一位小数即可。也就说,本系统的温度精确到了0.1度。算法核心:首先程 序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对 其低8位(LS Byte)取反加一变成原码。处理过后把DS18B20的温度Copy到 单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码, 分别把小数位,个位,十位,百位的BCD码存入RAM中。由于百位没有用,默 认情况是置为0A,在显示屏上没有任何显示。 温度算法核心代码 /*ds18b20 sbit DQ =P17; /定义通信端口 /延时函数 void delay(unsigned int i) while(i-); /初始化函数 Init_DS18B20(void) unsigned char x=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) unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(4); return(dat); /写一个字节 WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(5); DQ = 1; dat=1; /delay(4); /读取温度 ReadTemperature(void) unsigned char a=0;unsigned char b=0;unsigned int t=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.2 DS18B20的测试方法和结果 利用仿真软件不断修改DS18B20仿真元件的温度实际值,结果显示的与之 相同,说明读温度显示程序编写正确。 5.3键盘程序的测试方法和结果 把编写的键盘程序通过单片机仿真软件进行测试,在测试过程中,能够实 现时间的调整(自加、自减)功能,那么说明该子程序编写正确;如果测试的结 果与要求的不一致,那么就应该修改该子程序,直到正确为止,在修改过程中, 不必去改动其它部分程序。 5.4 RS232模块的测试方法和结果 将RS232的发送与接收端相互短接起来;利用串口调试助手发送一串字 符,如果马上在调试助手的接收窗口中接收到刚才发送的字符,说明通信正确 可以进行通信。 5.5 产品最终调试 在分别调试成功每一个部分的程序后,我们就可以把整个系统的程序进行 调试,还是用单片机仿真软件调试,在调试中,该程序能按照系统预定的步骤 运行,那么说明程序编写正确;如果在调试中出现了我们不需要的结果,那么 说明程序出现错误,这时就应该检查主程序在调有子程序及子程序与子程序之 间

温馨提示

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

评论

0/150

提交评论