单片机的红外遥控报警器.docx

上传人:b****8 文档编号:10048907 上传时间:2023-05-23 格式:DOCX 页数:49 大小:334.45KB
下载 相关 举报
单片机的红外遥控报警器.docx_第1页
第1页 / 共49页
单片机的红外遥控报警器.docx_第2页
第2页 / 共49页
单片机的红外遥控报警器.docx_第3页
第3页 / 共49页
单片机的红外遥控报警器.docx_第4页
第4页 / 共49页
单片机的红外遥控报警器.docx_第5页
第5页 / 共49页
单片机的红外遥控报警器.docx_第6页
第6页 / 共49页
单片机的红外遥控报警器.docx_第7页
第7页 / 共49页
单片机的红外遥控报警器.docx_第8页
第8页 / 共49页
单片机的红外遥控报警器.docx_第9页
第9页 / 共49页
单片机的红外遥控报警器.docx_第10页
第10页 / 共49页
单片机的红外遥控报警器.docx_第11页
第11页 / 共49页
单片机的红外遥控报警器.docx_第12页
第12页 / 共49页
单片机的红外遥控报警器.docx_第13页
第13页 / 共49页
单片机的红外遥控报警器.docx_第14页
第14页 / 共49页
单片机的红外遥控报警器.docx_第15页
第15页 / 共49页
单片机的红外遥控报警器.docx_第16页
第16页 / 共49页
单片机的红外遥控报警器.docx_第17页
第17页 / 共49页
单片机的红外遥控报警器.docx_第18页
第18页 / 共49页
单片机的红外遥控报警器.docx_第19页
第19页 / 共49页
单片机的红外遥控报警器.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机的红外遥控报警器.docx

《单片机的红外遥控报警器.docx》由会员分享,可在线阅读,更多相关《单片机的红外遥控报警器.docx(49页珍藏版)》请在冰点文库上搜索。

单片机的红外遥控报警器.docx

单片机的红外遥控报警器

第一章系统设计

1.1题目要求

设计并制作一个红外遥控温度报警器,用12864显示,红外遥控修改温度报警上限和下限等,并可以自由发挥扩展功能,比如增加万年历,增加闹钟等。

1.2系统组成

1、本系统主要由控制器模块、红外遥控模块、温度报警模块、电源模块、时钟模块、显示模块部分组成如图1.1所示。

图1.1温度监控报警系统方框图

2、系统的软件设计采用C语言,对单片机进行编程实现各项功能。

系统流程图如图1.2所示:

图1.2系统程序流程图

1.3方案论证与比较

1.3.1控制器模块

方案一:

采用FPGA作为系统控制器。

FPGA功能强大,可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性,并且可应用EDA软件仿真、调试,易于进行功能扩展。

FPGA采用并行的I/O口方式,提高了系统的处理速度,适合作为大规模实时系统控制核心。

但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且其成本偏高,引脚较多,硬件电路布线复杂。

方案二:

采用ATMEL公司的AT89S52作为系统控制器。

单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且其功耗低、体积小、技术成熟和成本低等优点。

基于以上分析拟订方案二,由AT89S52作为控制核心,对温度和万年历的显示及调整进行控制。

1.3.2显示模块

方案一:

采用LED数码管显示。

颜色鲜艳,经济实惠,由于本设计显示的内容较多,过多地增加数码管显然不行,进行轮流显示则控制复杂,占用较多的I/O资源,加上数码管需要较多连线,使得电路复杂,功耗较大。

若采用Max7219驱动,可以减少占用的接口数目,但是数码管只能显示有限的数字和符号,不能直观地显示出设计的内容。

方案二:

采用12864液晶显示。

其内置8192个16*16点汉字,和128个16*8点ASCII字符集,可以直观地显示出较多内容,利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面,使得显示内容丰富,易于人机交流,并且节约了I/O口资源。

由于本设计要求用12864显示,在本设计中采用12864作为显示模块,可以同时显示温度及时间,不仅能达到设计要求,还具有明显的优越性,所以系统采用方案二。

1.3.3温度采集模块

方案一:

采用温度传感器AD590K。

AD590K具有较高精度和重复性,良好的非线性保证±0.1℃的测量精度。

加上软件非线性补偿可以实现高精度测量。

AD590将温度转化为电流信号,因此要加相应的调理电路,将电流信号转化为电压信号。

送入8位A/D转换器,可以获得255级的精度,基本满足题目要求。

方案二:

用热电偶测温。

有优点是测温范围宽,缺点是电动势低,对运放的要求高,重要的是热电偶测温需要冷端温度补偿,来消除冷端温度变化所产生的影响,对于电路补偿温度要求精度高,且准确,否则会给系统带来反作用,而且成本高,操作复杂。

方案三:

采用数字温度传感器DS18B20。

DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。

可直接与单片机通信,读取测温数据,电路简单。

基于以上分析和现有器件所限,温度采集模块选用方案二。

DS18B20能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。

他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果。

第二章单元电路设计

2.1控制器部分

本设计采用AT89S52单片机为核心控制器件,通过单片编程控制红外遥控,温度芯片18B20,,时钟芯片DS1302,从而实现红外遥控温度报警及红外遥控时钟,原理图如图2.1所示。

图2.1单片机最小系统电路图

2.1.1AT89S52芯片简介

AT89S52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。

2.1.2AT89S52的引脚特点

AT89S52有40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器

2.1.3AT89S52的主要特性:

l与MCS-51单片机产品兼容

l8K字节在系统可编程Flash存储器

l1000次擦写周期

l全静态操作:

0Hz~33Hz

l三级加密程序存储器

l32个可编程I/O口线

l三个16位定时器/计数器

l八个中断源

l全双工UART串行通道

l低功耗空闲和掉电模式

l掉电后中断可唤醒

l看门狗定时器

l双数据指针

l掉电标识符

2.2温度采集部分

系统温度检测是由数字温度传感器DS18B20实现的。

DS18B20具有测温系统简单、测温精度高、连接方便、占用口线少等优点,特别适用于多点测温。

硬件接口电路如图2.2所示。

图2.2DS18B20的硬件接口电路

(1)DSI8B20的测温功能的实现

其测温电路的实现是依靠单片机软件的编程上。

当DSI8B20接收到温度转换命令后,开始启动转换。

转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。

单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.0625℃/LSB形式表示。

温度值格式如表2.2.1所示,其中“S”为标志位,对应的温度计算:

当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。

DSI8B20完成温度转换后,就把测得的温度值与TH做比较,若T>TH或T

表2.2.1DS18B20温度值格式表

LSByte

MSByte

S

S

S

S

S

(2)、DSl8B20工作过程中的协议

初始化->RoM操作命令->存储器操作命令->处理数据

①初始化单总线上的所有处理均从初始化开始

②ROM操作命令 总线主机检测到DSl8B20的存在便可以发出ROM操作命令之一。

这些命令如表2.2.2所示

表2.2.2ROM操作命令表

指令

代码

ReadROM(读ROM)

33H

MatchROM(匹配ROM)

55H

SkipROM(跳过ROM]

CCH

SearchROM(搜索ROM)

F0H

Alarmsearch(告警搜索)

ECH

③存储器操作命令如表2.2.3所示

表2.2.3存储器操作命令表

指令

代码

WriteScratchpad(写暂存存储器) 

4EH

ReadScratchpad(读暂存存储器)

BEH

CopyScratchpad(复制暂存存储器) 

48H

ConvertTemperature(温度变换)

44H

RecallEPROM(重新调出)

B8H

ReadPowersupply(读电源) 

B4H

(3)温度转换算法及分析

由于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中。

2.3报警电路部分

本系统采用蜂鸣器作为报警电路,原理图如图2.3所示,当温度超过上限值或低于下限值,或者闹钟时间到时,通过软件控制使P35=0,从而三极管8550导通,蜂鸣器发出声音报警或闹钟响。

图2.3报警电路图

2.4红外遥控部分

遥控接收使用红外接收模块1838,该接收模块是一个三端元件,具有功耗低、抗干扰能力强、输入灵敏度高的特点。

如图2.4所示,1838接AT89C2051的P3.2(外中断0).当1838V接收到遥控信号时.产生中断,处理遥控数据.处理完后返回。

图2.41838硬件接口电路图

2.5时钟电路部分

采用时钟芯片DS1302,其内含一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信。

实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM指示决定采用24或12小时格式。

DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线RES(复位);I/O(数据线);SCLK(串行时钟),时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信。

2.5.1DS1302的概念

DS1302是DALLAS公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,通过简单的串行接口与单片机进行通信实时时钟/日历电路.提供秒分时日日期.月年的信息,每月的天数和闰年的天数可自动调整时钟操作可通过AM/PM指示决定采用24或12小时格式.DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:

1RES复位,2I/O数据线,3SCLK串行时钟.时钟/RAM的读/写数据以一个字节或多达31个字节的字符组方式通信.DS1302工作时功耗很低,保持数据和时钟信息时功率小于1mW.DS1302是由DS1202改进而来,增加了以下的特性.双电源管脚用于主电源和备份电源供应Vcc1,为可编程涓流充电电源附加七个字节存储器.它广泛应用于电话传真便携式仪器以及电池供电的仪器仪表等产品领域。

2.5.2DS1302的性能指标

1.实时时钟具有能计算2100年之前的秒分时日日期星期月年的能力还有闰年调整的能力。

2.318位暂存数据存储RAM。

3.串行I/O口方式使得管脚数量最少。

4.宽范围工作电压2.0—5.5V。

5.工作电流2.0V时,小于300nA。

6.读/写时钟或RAM数据时有两种传送方式单字节传送和多字节传送字符组方式。

7.8脚DIP封装或可选的8脚SOIC封装根据表面装配。

8.简单3线接口。

9.与TTL兼容Vcc=5V。

10.可选工业级温度范围-40+85。

11.与DS1202兼容。

12.在DS1202基础上增加的特性。

如图2.5所示:

8脚接一个备份电源,保证在断电的情况下时钟仍在工作。

图2.5时钟电路

2.6电源部分

原理图如2.6所示,采用变压器参数都为30W,±18V,经过整流滤波后再通过三端稳压器7805得到+5V电压,提供给单片机及其他各模块。

图2.6电源原理图

2.7显示部分

本设计采用12864液晶显示器,它是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集,利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。

可以显示8×4行16×16点阵的汉字,还可完成图形显示,低电压低功耗是其又一显著特点。

由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多。

2.7.112864液晶显示模块概述

   12864液晶显示模块是128×64点阵型液晶显示模块,可显示各种字符及图形,可与CPU直接接口,具有8位标准数据总线、6条控制线及电源线。

采用KS0107控制IC。

2.7.2指令描述

1、显示开/关设置

功能:

设置屏幕显示开/关。

DB0=H,开显示;DB0=L,关显示。

不影响显示RAM(DDRAM)中的内容。

2、设置显示起始行

功能:

执行该命令后,所设置的行将显示在屏幕的第一行。

显示起始行是由Z地址计数器控制的,该命令自动将A0-A5位地址送入Z地址计数器,起始地址可以是0-63范围内任意一行。

Z地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。

 

 3、设置页地址

功能:

执行本指令后,下面的读写操作将在指定页内,直到重新设置。

页地址就是DDRAM的行地址,页地址存储在X地址计数器中,A2-A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号(RST)可把页地址计数器内容清零。

DDRAM地址映像表

4、设置列地址

功能:

DDRAM的列地址存储在Y地址计数器中,读写数据对列地址有影响,在对DDRAM进行读写操作后,Y地址自动加一。

5、状态检测

功能:

读忙信号标志位(BF)、复位标志位(RST)以及显示状态位(ON/OFF)。

       

BF=H:

内部正在执行操作;             BF=L:

空闲状态。

       

RST=H:

正处于复位初始化状态;  RST=L:

正常状态。

       

ON/OFF=H:

表示显示关闭;          ON/OFF=L:

表示显示开。

6、写显示数据

功能:

写数据到DDRAM,DDRAM是存储图形显示数据的,写指令执行后Y地址计数器自动加1。

D7-D0位数据为1表示显示,数据为0表示不显示。

写数据到DDRAM前,要先执行“设置页地址”及“设置列地址”命令。

7、读显示数据

功能:

从DDRAM读数据,读指令执行后Y地址计数器自动加1。

从DDRAM读数据前要先执行“设置页地址”及“设置列地址”命令

通过单片机控制,同时显示出温度和时间。

图2.7显示部分电路图

结论

 毕业论文是学习阶段一次非常难得的理论与实际相结合的机会,通过这次对基于单片机的遥控温度报警器的系统设计,使我对单片机的了解更深了一层,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际工程问题的能力,同时也提高我查阅文献资料、设计规范以及电脑制图等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,锻炼了我的能力,认识带自己的不足;也得到了丰富的经验。

这是我们希望看到的,也是我们进行毕业设计的目的所在。

  提高是有限的但提高也是全面的,正是这一次设计让我积累了在平时的学习中无法学习到实际经验,使我的头脑更好的被知识武装了起来,也形成自己的一种学习理论与实践相结合的方法与途径,必然会让我在未来的工作学习中表现出更高的应变能力,更强的沟通力和理解力。

 

致谢

大学三年学习时光已经接近尾声,在此我想对我的母校,我的父母、亲人们,我的老师和同学们表达我由衷的谢意。

感谢我的家人对我大学三年学习的默默支持;感谢我的母校安阳工学院给了我在大学三年深造的机会,让我能继续学习和提高;感谢安阳工学院电子信息与电气工程系的各位老师和同学们三年来的关心和鼓励。

老师们课堂上的激情洋溢,课堂下的谆谆教诲;同学们在学习中的认真热情,生活上的热心主动,所有这些都让我的三年充满了感动。

这次毕业论文设计我得到了很多老师和同学的帮助,其中我的论文指导老师丁莹亮老师对我的关心和支持尤为重要。

尽管丁老师平日里工作繁多,但我做毕业设计过程中给予我悉心的指导。

丁老师带了我们班两年的课程,在这两年中,丁老师在学习上给了我很大的帮助,使我明白实践比理论更为重要,在此谨向丁老师致以诚挚的谢意和崇高的敬意。

同时,本篇毕业论文的写作也得到了潘永山等同学的热情帮助。

感谢在整个毕业设计期间在各个方面给予过我帮助的伙伴们,在此,我再一次真诚地向帮助过我的老师和同学表示感谢!

 

参考文献

[1]华成英,童诗白.模拟电子技术基础(第四版).高等教育出版社,2004

[2]康华光.电子技术基础数字部分(第五版).高等教育出版社,2006

[3]黄智伟,王彦,陈文光,朱卫华.全国大学生电子设计竞赛训练教程.北京:

电子工业出版社,2007

[4]王福瑞.单片微机检测系统大全.北京:

航天航空大学出版社.1999

[5]徐惠民.单片机微型机原理接口及应用.北京:

北京邮电大学出版社.1999.2

[6]于海生.微型计算机控制技术.北京:

清华大学出版社.1999

[7]周杭慈.单片机程序设计基础.北京:

航天航空大学出版社.2003.5

[8]赵亮.单片机C语言编程与实例.北京:

人民邮电出版社.2002.9

[9]江晓安.模拟电子技术.西安:

西安电子科技大学出版社.2000

[10]张毅刚.MCS—51单片机原理及应用.哈尔滨:

哈尔滨工业大学出版社.2001

[11]赵茂泰.智能仪器原理及应用.北京:

电子工业出版社.1999

附录A系统原理图

 

 

图A1系统原理图

附录BPCB制版图

 

 

图B1PCB制版图

 

附录C硬件电路实物图

 

 

图C1硬件电路实物图

 

附录D源程序

#include

#include

#ifndefuchar

#defineucharunsignedchar

#endif

#ifndefuint

#defineuintunsignedint

#endif

sbitIR_GET=P3^2;//红外接收数据输入端

sbitBEEP=P3^5;//蜂鸣器驱动线

/********************************************************/

ucharcodemenu_time_index[7][3]={{2,2,13},{4,2,9},{6,2,7},{2,3,5},{4,3,3},{6,3,1},{5,4,11}};//设置时间导航

ucharcodemenu_temp_index[2][2]={{5,2},{5,3}};//设置时间导航indexcodemenu_time_index[7]={{2,2},{4,2},{6,2},{2,3},{4,3},{6,3},{5,4}};//设置时间导航

ucharcodemenu_clock_index[3][2]={{2,3},{4,3},{6,3}};//设置时间导航

bitsendtempflag=0;

ucharhdata=0x10,ldata=0x10;//分别存放数码管显示的红外编码的高四位和低四位。

ucharRXDDATA[]={0x00,0x00,0x00,0x00};//存放接收到的四组红外编码

bitircodeflag=0;

volatilebitkong=1;//全局变量,用于数码管上的两杠进行闪烁

volatilebitalarmflag=0;

volatileucharworkcode;//经过处理返回的纯数字红外编码

ucharuart_num[17]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','-'};

uchartimes[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};//1302振荡得到的准确时间:

秒分时日月星期年

uchardisptimes[14];//准确时间:

(秒分时日月星期年)分开的个位和十位

ucharxdataolddisptimes[14]={1,1,1,1,1,1,1,1,1,1,1,1,1,1};

#include"uart.h"

#include"ds1302.h"

#include"ds18b20.h"

#include"LCD12864P.C"

/********************************************************

**函数声明专区

********************************************************/

voidDelayUS(uintnum);

voiddelay100us(ucharx);

voidbeep();

ucharworkIRcode(uchar*pp);

voidsendircode();

voiddisplaytime();

voidGDRAMCLOCK(ucharrow,uchar*time);

voidset1616pic(ucharx,uchary,ucharsign,uchartt);

voidset1616num(ucharcurr,uchar*ptime);

voidgudidisptime(uchar*time);//time指针是处理好的十位个位分开的时间数组。

voidgudidisptemp(uchar*tempc);

voidgudidispclock(uchar*clock);

ucharchecktemp(uchar*pp);

uchartime_compare();

/********************************************************/

voidmain()

{

bitone_sign;

bitonealarmflag=0;

ucharrun_sign,tempdata,timenum,timelcdxy,we;

uchari,curr_menu_id,checkflag;

uchar*pmenu;

ucharstimetopc;

ucharoutflag;

delayms(500);

alarmflag=0;//默认闹铃关闭

TMOD|=0X01;//选择定时器0工作在模式1,即16位定时器

TH0=(65536-49000)/256;//装49ms的初值

TL0=(65536-49000)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2