基于stc89c52单片机的家用红外遥控系统Word文档格式.docx
- 文档编号:1474602
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:84
- 大小:1.20MB
基于stc89c52单片机的家用红外遥控系统Word文档格式.docx
《基于stc89c52单片机的家用红外遥控系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于stc89c52单片机的家用红外遥控系统Word文档格式.docx(84页珍藏版)》请在冰点文库上搜索。
2.3DS1302时钟芯片介绍8
2.4HS0038红外一体接收器介绍10
2.5LCD12864液晶介绍11
2.6其他硬件电路13
3软件开发平台及软件15
3.1开发环境介绍及程序总体结构15
3.2DS18B20温度程序模块15
3.3DS1302时间程序模块17
3.4LCD12864液晶驱动程序20
3.5HS0038红外解码程序模块21
3.6定时定温功能的程序实现24
4系统调试及设计总结24
4.1系统调试24
4.2总结26
参考文献27
致谢28
附录29
1绪论
1.1家用电器的发展及智能家电的前景
电器在国民日常生活和国防领域中占有举足轻重的位置,有着不可或缺的作用,其中,家用电器与人们的生活的关系最为密切。
家用电器问世已有百年历史,美国人爱迪生发明了白炽灯,从此开创了家庭用电时代。
19世纪末电磁波被证实存在,奠定了电子学诞生的基础。
之后,二极电子管和三级电子管的发明使人们开始了真正的电子应用。
50年代电子工业迅速发展,晶体管尤其是集成电路的发明,使人们进入微电子时代同时家用电器的应用也提高到新的水平。
随着科技的发展家用电器也越来越智能化,家用电器的发展趋势主要有高性能高可靠性,电路集成化功能多样化,随着现代电子技术的发展家用电器与多学科交叉融合向着网络化与智能化发展。
总体看来现代家用电器具有更强大的功能,而实现强大功能的保障是具有良好的微处理器,一个智能家电可以实现多个传统家电的功能。
多功能是智能家电主要特点,同时,通信功能也是智能家电的发展方向。
另外,新型家用电器在环保,审美以及安全性上也对人们提出了新要求。
1.2电子技术的发展对智能家电的推动
20世纪以来,电子技术发展迅速,特别是近几年来,现代电子产品以及各种消费电子产品已经渗透到了生活各方面,电子技术的发展有力的推动了科技进步并且提高了人们的生活水平。
以单片机为核心的多功能系统正在飞快的改变着人们的生活,特别是一些家用智能产品,不但方便了人们的生活,更加丰富了人们的生活方式。
以本文中的家用红外遥控系统为例,该设计除了具有一般的日历功能外,还增加了温度检测功能,但其能成为“智能”之处并不在于此,而是他可以通过遥控按键设定时间值和温度值,程序会按照这些数值自动的控制继电器,从而达到了定时开关灯,定温开关空调的目的。
在享受越来越智能化的电子产品的时候,我们还要再次感谢电子技术的发展,集成化的功能模块已使编程和硬件设计变得非常方便。
以温度采集模块为例,经典的温度采集系统由温度敏感器件采集到模拟量、经过A/D转换和单片机电路组成。
由于温度传感器输出模拟量那么信号需要经过A/D转换,转换为数字量后才能与单片机等数字接口进行通信,从而使电路变得比较复杂,提高了成本。
而DS18B20集成了模数转换功能,通过封装只留出一个数据接口,这样就可以直接输出数字量,从而与单片机连接变得非常简单,提高了灵活度,降低了成本增加了应用价值。
另外HS0038红外一体接受头,更是能把红外信号直接转变为电压信号,省去了大量的外围电路,方便了程序编写。
1.3家用红外遥控系统设计思路
本设计主要应用于家庭,操作方便功能丰富,能很好的为人们的生活提供方便。
家用红外遥控系统要实现的功能主要有,显示时间值,显示温度值,定时开关功能,设定温度上下限功能,另外,由于采用红外遥控器作为按键,还应具有红外接收功能。
根据以上功能要求,来选择所需要的硬件,本设计中所用到的硬件主要有STC89C52单片,DS1302时间芯片,DS18B20温度传感器,HS0038红外接收器,LCD液晶屏,继电器。
在软件设计上,各个模块单独编程,这样能够方便调试发现错误,也方便今后程序移植和升级。
2硬件设计
2.1STC89C52单片机介绍
2.1.1STC89C52引脚简介
STC89C52管脚及实物图如图2-1,图2-2所示。
电源引脚(2根)
GND(20脚):
接地线;
VCC(40脚):
接+5V电源
外接晶振引脚(2根)
XTAL0(18脚):
振荡电路的输入端;
XTAL1(19脚):
振荡电路的输出端
控制引脚(4根)
ALE/PROG(30脚):
地址锁存允许信号;
EA/VPP(31脚):
片内外程序存储器选择,低电平读取外部存储器指令,高电平读片内程序指令;
RST/VPP(9脚):
复位引脚2个机器周期以上的高电平单片机复位;
PSEN(29脚):
外部存储器读选通信号。
图2-1STC89C52管脚图
图2-2STC89C52实物图
I/O口(32根)
该单片机有4组(P0、P1、P2、P3)I/O口,每组8位,共32根引脚。
P0口(39脚~32脚)是一个具有8位漏极开路的双向I/O口。
当做输出口使用时,每组能驱动8路TTL电平。
P1口(1脚~8脚)是一个8位双向I/O口且具有上拉电阻。
可以用来驱动TLL逻辑电平。
P2口(21脚~28脚)是一个8位双向I/O口且具有内部上拉电阻,P2口可以用来驱动TTL逻辑电平。
P3口(10脚~17脚)是8位准双向I/O口,同时P3口具有复用功能,P3.0串行输入(RXD)、P3.1串行输出(TXD)、P3.2外部中断0(INT0)、P3.3外中断1(INT1)、P3.4定时/计数器0、P3.5定时/计数器1、P3.6外部数据存储器写选通、P3.7外部数据存储器读选通。
2.1.2STC89C52RC主要功能特点
STC89C52是宏晶科技生产的一种高性价比低功耗的8位单片机,片内集成8KFlash程序存储器,STC89C52使用经典的MCS-51内核,程序上完全兼容。
但该单片机还是做了不少改进,缩短了指令执行周期,增加了定时器2,增加了看门狗功能。
在单芯片上,8位的CPU配合8K的程序存储器,使得STC89C52能满足基本的控制需要而不需要再外扩存储器。
以下是STC89C52的基本特点:
(1)相对于一个机器周期占12个时钟周期的8051增加6时钟/机器周期功能。
(2)工作电压宽度在5.5V-3.4V。
(3)工作频率0–40MHz最高可达到48MHz。
(4)片内集成8K字节的程序存储器和512B的RAM。
(5)通用I/O口(32个),复位后P1~P4是准双向口并带有弱上拉电阻,P0口是开漏输出,作为地址线使用时不用接上拉电阻而作为普通I/O口使用时必须使用上拉电阻。
(6)具有3个16位定时器/计数器,定时器0可以拆分成两个8位使用。
(7)具有四个外部中断,可以设置成下降沿或低电平模式触发,掉电模式下外部中断的低电平模式可以唤醒系统。
(8)具有一个通用同步串口,如有需要可以通过普通I/O口模拟串口进行扩展。
(9)正常工作温度范围0-75℃,封装为PLCC-44和PDIP-40两种,本设计为PDIP-40封装。
2.2DS18B20温度传感器介绍
2.2.1DS18B20引脚及特点
DS18B20的引脚及封装如图2-3所示。
图2-3DS18B20引脚及封装
DS18B20的引脚:
1.DQ输入/输出端口;
2.GND为电源地;
3.VDD+5V(寄生电源模式下该位接地即可)
DS18B20的主要特性有一下方面,DS18B20适应的温电压范围为3.0~5.5v,可以直接与3v或5v单片机相连,如果使用寄生电源模式两个电源引脚可以直接接地,DS18B20与单片机连接只需要一根数据线,通过一定的时序操作可以实现读和写的双向通信,另外DS18B20还有一大特色,一条数据线可以连接多个传感器,在不增加I/O口的情况下实现多点测温的需求,DS18B20设计精巧实用方便,整个功能电路集成在只有三个引脚的芯片内,形如三极管,其温度测量范围-55℃~+125℃,温度测量分辨率为9~12位出厂设置为12位精度,这样在默认设置下只要把测得并转化后的温度值乘以0.0625即可得实际温度值。
DS18B20与单片机的连接有两种方法,外部电源供电和寄生电源供电方式,在实际使用时只需要在数据线上接上4.7kΩ的上拉电阻即可。
本设计采用外部电源供电方式如图2-4所示。
图2-4DS18B20外部供电电路图
2.2.2DS18B20内部结构及寄存器介绍
DS18B20的内部结构如图2-5所示。
图2-5DS18B20内部结构图
DS18B20的四大数据组成部分:
光刻ROM中的64位序列号,用于实现一根总线上挂接多个DS18B20的目的。
温度灵敏原件,用于接收最初的温度模拟量,即电阻随温度变化。
非易失性温度报警触发器(EEPROM)TH和TL。
可通过软件写入用户报警上下限值。
配置寄存器,通过R0,R1位设置,温度分辨率,出厂时R0=1,R1=1(即12位分辨率)具体设置方法如图2-6所示。
图2-6分辨率设置寄存器
下面是对DS18B20高速暂存存储器介绍:
高速RAM由9个字节组成如表2-1所示。
表2-1DS18B20存储器映像
温度低位
温度高位
TH
TL
配置位
保留
CRC校验
温度转换命令(44H)发出后在最长750ms的时间内,二进制温度值被存放于温度高位和温度低位(即高速RAM的第0和1字节)。
这时单片机按照低位在前,高位在后的方式读取两字节数据,就可以通过一定的转换规则得到十进制温度。
在转换时应注意,当S=0(正温度)时,根据分辨率位数直接转换为十进制;
当S=1(负温度)时,应先将补码取反加一,再进行十进制转换。
数据格式如图2-7所示。
图2-7温度值格式图
DS18B20与单片机的通信遵循着一定的时序,其时序如图2-8所示。
图2-8DS1302时序图
由图可知,使用DS18B20时首先对其复位,复位信号至少为480us的低电平,若DS18B20接收到复位信号则会在15~60us内发出一个回复脉冲,脉冲时间为60~240us,此时控制器数据线应是高电平以便对其接收,至此,通信协议已经基本达成,接下来开始数据通信。
2.3DS1302时钟芯片介绍
2.3.1DS1302引脚及内部寄存器简介
DS1302是美国达拉斯公司推出的一款功耗低功能全的实时时钟芯片,RTC寄存器可提供年、月、日、时、分、秒、及周的时间值,另有31字节静态RAM,采用串行三线接口与单片机进行通信,突发方式下,可以一次性传送多个字节的数据或时钟信号。
工作电压宽度2.5~5V,用来保持片内数据时功率控制在1毫瓦内。
具有备用电源引脚,也可以通过寄存器设置备用电源充电方式。
DS1302的引脚如图2-9所示。
图2-9DS1302引脚图
其中X1、X2外接32.768KHz晶振;
GND接地;
CE为信号使能端,数据传输时必须保持高电平,I/O为数据输入/输出引脚;
SCLK为串行时钟,Vcc1,Vcc2为电源供电管脚。
DS1302关于时间和日期的寄存器如图2-10所示,共有12个,编程时注意读和写的地址有所不同。
图2-10DS1302RTC寄存器
DS1302控制字,如表2-2所示。
表2-2DS1302控制字
1
RAM
A4
A3
A2
A1
A0
RD/WR
控制字最高字节应该为1,为0时不能向芯片写入数据,控制字从低位开始输出,第6位为0表示读取时钟数据,为1表示读RAM数据,A4——A0为操作地址。
在下一个时钟上升沿,写入数据,而在指令后的下一个时钟下降沿,读出数据。
2.3.2DS1302读写时序
DS1302读写时序如图2-11所示。
CE高电平开启数据传送功能,数据传输时,数据在时钟上升沿输入,时钟下降沿输出。
图2-11DS1302读写时序
2.4HS0038红外一体接收器介绍
2.4.1HS0038特点介绍
红外通信有红外发射装置和接收装置组成,本设计的红外发射装置为载波38KHz的普通红外遥控器。
HS0038能够接受红外信号,并能对信号放大,检波,整形输出单片机可以识别的TTL电平。
单片机经过一定的算法把接收到的数据进行解码。
便可以得到遥控器键值。
应当注意HS0038输出的数据正好和发射端的电平反向。
2.4.2HS0038电路及应用
HS0038引脚及封装如图2-12所示。
图2-12HS0038实物图
从左到右,引脚依次是:
I/O数据端口、GND接地、VCC接+5V电源。
HS0038在单片机系统中常用的电路如图2-13所示。
图2-13HS0038应用电路图
2.5LCD12864液晶介绍
2.5.1LCD12864性能概述及引脚功能
本设计采用带汉字字库的液晶模块,内置8192个汉字128个字符还具有64*256的GDRAM可以用来绘制图形。
液晶正常工作的电压宽度为3.3~5V,显示分辨率为128×
64。
应用中可以通过写入命令字来实现多种功能,如:
开关光标,反白显示,屏幕移位,睡眠等。
该液晶20个引脚与单片机的连接如图2-14所示。
LCD12864具有20个引脚其功能如表2-3所示。
图2-14LCD12864与单片机连接图
由于本设计采用8位并行数据传输方式,故其第15引脚PSB直接接高电平即可。
此时,RS引脚为指令/数据选择引脚。
另外,18脚和19脚为背光灯,可以根据需要接上可调电阻来实现对背光亮度的调节。
表2-3LCD12864引脚功能图
2.5.2LCD12864读写时序及用户指令集
对LCD12864液晶的操作不外乎通过单片机不断进行读写,单片机写数据到液晶模块的时序图如图2-15所示。
图2-15单片机写数据到液晶模块
单片机读取液晶模块数据的时序图如图2-16所示。
图2-16单片机读取液晶模块数据
由图3-14可知写数据或命令的操作大致如下,RS为高时写数据,RS为低时写指令;
RW引脚为低电平进行写操作;
E引脚设置为高允许数据传送,接着便把所传数据放于数据引脚,E引脚再次拉低便完成了写操作。
LCD12864有两种指令集,基本指令集(RE=0)和扩充指令集(RE=1),写指令时RS=0,RW=0。
通过正确的时序写指令可以设置LCD12864的很多功能,如写入0x01指令即可清屏并把DDRAM地址计数器调整为“00H”,再如写入指令“0xc”即可打开显示关闭游标。
2.6其他硬件电路
2.6.1STC89C52RC最小系统的设计
本设计的单片机最小系统主要包括,STC89C52单片机,12M外接晶振,上电复位电路三个部分。
最小系统晶振电路如图2-17所示。
图2-17晶振电路
晶振两个引脚分别接于单片机的XTAL0和XTAL1引脚,电容值的选择范围为5~30PF,电容对晶振频率具有微调作用。
最小系统复位电路如图2-18所示。
图2-18上电复位电路
单片机复位电路的设计必须能满足上电震荡稳定后,保持至少两个周期的高电平。
本最小系统采用10uf的电容,经验证完全满足要求。
由于本电路上电即可以使单片机复位,又具有电源开关,故省去了按键复位开关。
另外,由于本设计采用单片机内部存储器存储程序,故单片机的第31引脚(EA)接高电平,用来访问片内程序。
2.6.2系统电源电路的设计
由于所选用单片机为5V单片机,为得到较稳定的5V电压,本设计采用了L7805cv三端集成稳压管。
输出电压4.75-5.25V,最大输入电压35v,压差3-5v时工作在理想状态。
输出电流可达1.5A(需做好散热),同时L7805cv内部含有限流保护电路和过热保护电路,防止负载过大温度过高烧坏器件。
本设计中L7805cv的应用电路如图2-19所示。
图2-19L7805cv稳压电路图
3软件开发平台及软件
3.1开发环境介绍及程序总体结构
3.1.1开发环境介绍
本设计采用KEILC51集成开发环境,它具良好用户的界面,使用极为方便。
支持汇编语言,C语言及其混合编程,能够兼容绝大多数51系列单片机的程序设计和仿真。
在本设计中,所有的程序采用C语言编写,最后把调试通过的程序编译成二进制文件并通过串口下载到目标板。
3.1.2程序总体结构
由于整个系统涉及到的外设模块较多,故采用了多文件模块化编程,这样大大提高了程序的可读性,也为以后可能遇到的程序移植和升级提供了方便。
整个设计的程序结构如图3-1所示。
图3-1程序结构图
其中,main.c是设计主函数包含了各种外设的初始化及其功能函数的调用,DS18B20.c、IR.c、DS1302.c、LCD12864.c分别为温度传感器、红外接收器、时钟芯片和液晶的驱动程序,SET.c是用来定时、定温的功能模块。
3.2DS18B20温度程序模块
3.2.1DS18B20操作流程
使用DS18B20时首先应遵循图2-8所示的时序图,然后按照流程进行具体操作。
DS18B20操作流程如图3-2所示。
图3-2DS18B20操作流程
3.2.2DS18B20重点代码及其分析
DS18B20程序的核心部分是利用单片机读取芯片内部的温度值,其读函数如下,
/**********************************************************
*从DS1820中读出数据
**********************************************************/
ucharDS1820_RData()
{
uchari,j,Tmep;
for(i=8;
i>
0;
i--)
Tmep>
>
=1;
DS1820_bit=0;
//低电平,产生读信号
for(j=2;
j>
j--);
//延时4us
DS1820_bit=1;
//释放总线,准备读数据
for(j=4;
//延时
if(DS1820_bit==1)
{Tmep|=0x80;
}
for(j=30;
//延时
//拉高数据线,准备读下一位
return(Tmep);
//返回数据
通过上面的读函数,温度值被保存到Tmep变量内,接下来便可以按照一定的规则对Tmep的值进行转化,最后显示在液晶屏上。
另外,应当注意在每次获取温度值时都要对DS18B20进行复位操作。
3.3DS1302时间程序模块
3.3.1DS1302总体操作及基本读写功能函数
本设计中DS1302操作主要包括读取内部时间值和修改时间值两部分,DS1302模块总体操作如图3-3所示。
图3-3DS1302操作总流程
DS1302读写操作流程如图3-4所示。
图3-4DS1302读写操作流程
在对DS1302操作时,只要调用Write1302_Cmd_Dat(),和Read1302()就可以实现其与单片机之间的数据交流。
下面是读写函数的实现。
/向DS1302写地址和数据,Addr地址,Dat数据
*********************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 stc89c52 单片机 家用 红外 遥控 系统