基于51单片机的红外遥控器解码设计论文Word文件下载.docx
- 文档编号:18478539
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:17
- 大小:609.28KB
基于51单片机的红外遥控器解码设计论文Word文件下载.docx
《基于51单片机的红外遥控器解码设计论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的红外遥控器解码设计论文Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
经过上述方案的分析选择,得出系统硬件由以下几部分组成:
电视红外遥控器,51单片机最小系统,接收放大于一体集成红外接收头,1602液晶显示驱动电路。
整体设计思路为:
根据扫描到不同的按键值转至相对应的ROM表读取数据。
确认设备及菜单选择键后AT89S2将从ROM读取出来的值,按照数据处理要求从P2.5输出控制脉冲与T0产生的38KHz的载波(周期是26.3μs)进行调制,经NPN三极管对信号放大驱动红外发光管将控制信号发送出去。
红外数据接收则是采用HS0038一体化红外接收头,内部集成红外接收、数据采集、解码的功能,只要在接收端INT0检测头信号低电平的到来,就可完成对整个串行的信号进行分析得出当前控制指令的功能.然后根据所得的指令去操作相应的用电器件工作,如图1—1所示。
图1—1电路设计整体框图
第2章红外解码硬件电路设计
第1节单片机及其硬件电路设计
1.1单片机的介绍
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式.空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止.
图2-1AT89S52引脚图
1。
2时钟电路及RC复位电路
AT89S52芯片内部有一高增益反相放大器,用于构成振荡器反相放大器的输入端为XTAL1,输出端为XTAL2。
在XTAL1、XTAL2(第19、18引脚)两端接一个石英晶体振荡器,和两个电容就构成了稳定自激谐振电路.晶振频率为11.0592MHz,C12、C13是两个瓷片电容,与晶振Y2构成了自激谐振电路。
其电容的作用主要是对频率进行微调,一般取30~45pF左右.使用该电路可产生稳定的11.0592MHz频率,受外界的环境的干扰影响非常小。
其接法如图2-2所示:
图2-2晶振电路
复位是单片机初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元执行程序。
除了进入系统的正常初始化之外,当程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动。
复位操作有上电自动复位和按键手动复位两种方式.本设计采用了按键手动复位方式.该复位电路如图2—3所示。
复位电路采用了按键与上电复位。
上电与按键均可以有效复位。
上电瞬间RST引脚获得高电平,单片机复位电路随着电容的C11的充电,RST引脚的高电平逐渐下降.RST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。
按键复位是直接将高电平通过电阻R11、R10分压到达RESET引脚,实现复位操作。
图2-3复位电路图
第2节红外遥控器电路
1采用TC9012芯片编码的遥控器
TC9012是一块用于东芝系列红外遥控系统中的专用发射集成电路,采用CMOS工艺制造。
它可外接32个按键,提供8种用户编码,另外还具有3种双重按键功能。
TC9012的管脚设置和外围应用线路都进行了高度优化,以配合PCB的布图和低成本的要求。
图2-4TC9012引脚图
低压CMOS工艺制造,低功耗超小静态电流,低工作电压,精简条指令码,8种用户编码可选择,TSOP-20、SOP20、COB可选的封装形式。
应用范围:
电视机、组合音响设备、录音卡座、VCD、DVD播放机。
2.2红外发射电路
将脉冲编码信号调制在载波振荡器产生的载波上(也称脉码调制),然后用这脉码调制信号去驱动红外发光二极管,以发出经过调制的红外光波,其红外遥控系统电路如图2-5所示。
图2-5红外遥控系统电路框图
通常,红外遥控器将遥控信号(二进制脉冲码)调制在38KHz的载波上,经缓冲放大后送至红外发光二极管,转化为红外信号发射出去。
二进制脉冲码的形式有多种,其中最为常用的是PWM码(脉冲宽度调制码)和PPM码(脉冲位置调制码)。
前者以宽脉冲表示1,窄脉冲表示0。
后者脉冲宽度一样,但是码位的宽度不一样,码位宽的代表1,码位窄的代表0.脉宽为0。
56ms、间隔0.565ms、周期为1.125ms的组合表示二进制的“0”;
以脉宽为0。
56ms、间隔1.69ms、周期为2.25ms的组合表示二进制的“1”.如图2-6示。
本设计是以PPM码(脉冲位置调制码)对红外数据的发送进行论证。
图2-6指令脉冲图
遥控编码脉冲信号是由引导码、系统码、系统反码、功能码、功能反码等信号组成。
引导码也叫起始码,由宽度为4.5ms的高电平和宽度为4。
5ms的低电平组成(不同的红外家用设备在高低电平的宽度上有一定区别),用来标志遥控编码脉冲信号的开始。
如图2-7所示。
图2-7信号引导码图
系统码也叫识别码,它用来指示遥控系统的种类,以区别其它遥控系统,防止各遥控系统的误动作功能码也叫指令码,它代表了相应的控制功能,接收机中的可根据功能码的数值完成各种功能操作。
系统反码与功能反码分别是系统码与功能码的反码,反码的加入是为了能在接收端校对传输过程中数据是否产生差错。
脉冲位置表示的“0”和“1”组成的32位二进制码,前16位控制指令,控制不同的红外遥控设备。
而不同的红外家用电器又有不同的脉冲调控方式,后16位分别是8位的功能码和8位的功能反码。
串行数据码时序图如2-8所示。
图2-8串行数据码时序图
将要发送的指令脉冲编码信号调制在38KHz的载波上,可以增加信号的抗干扰能力,提高信号传输效率.信号调制时序如2-9所示.
图2-9信号调制图
TC9012作为红外遥控器控制核心,遥控编码脉冲信号是由引导码、系统码、系统反码、功能码、功能反码等信号组成.以PPM码(脉冲位置调制码)对红外数据调制在38KHz的载波上对外进行发射信号。
第3节红外接收显示电路
硬件电路组成有:
红外接收电路、电源电路、1602液晶显示电路。
3.1红外接收电路
HS0038是用于红外遥控接收的小型一体化接收头,集成红外线的接收、放大、解调,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输,中心频率38。
0kHz。
接收器对外只有3个引脚:
OUT、GND、VCC与单片机接口非常方便。
1脚接电源(+VCC),2脚GND是地线(0V),3脚脉冲信号输出,经非门U6缓冲与P24的判断信号进行逻辑与使得进入INT0的信号恰好是红外数据发射电路输出端P25的相反相信号,只要检测到INT0信号下降沿从而测出控制指令的功能。
图2—12HS0038内部结构工作流程
HS0038接收原理:
红外线接收是把遥控器发送的数据(已调信号)转换成一定格式的控制指令脉冲(调制信号、基带信号),是完成红外线的接收、放大、解调,还原成发射格式(高、低电位刚好相反)的脉冲信号。
这些工作通常由一体化的接收头来完成,输出TTL兼容电平。
最后通过解码把脉冲信号转换成数据,从而实现数据的传输。
图2-13是一个红外线接收电路框图。
图2-13红外接收及控制电路框图
本设计的核心部分在于红外接收及LCD显示。
其中红外数据接收是对红外二进制脉冲的宽度进行测量,从而获得红外遥控的脉冲信息.采用外部中断成为了理所当然的选择,外部中断只有低电平和下降沿触发两种方式,这就使得单片机只能一次性对脉冲的高电平或低电平进行测量,而一连串的脉冲是不可能分开多次测量的,因此,为了解决这一问题,本人将从接收头出来的红外二进制脉冲信号与标志位(P24)进行逻辑或非,然后再输入到INT0(P3。
2)引脚,使得输入INT0的信号恰好是红外数据发射电路输出端P25的信号,只要检测到INT0信号下降沿到上升沿的这段时间。
如果相邻的两个中断间隔的时间长度为1.125ms,说明接收到的是“0”;
时间长度是2。
25ms则为“1”。
因此,脉冲电平的每一次跳变都会形成一次中断,在中断服务子程中即可实现一次性对一连串连续波形的测量,在测量后对0和1的各数据统计从而测出控制指令的功能.硬件或非门的反应速度是纳秒级的,满足实时要求。
红外接收电路连接图如图2-14所示。
图2-14红外接收电路图
3.21602液晶显示电路
1602LCD主要技术参数:
显示容量:
16×
2个字符,芯片工作电压:
4。
5~5.5V,工作电流:
0mA(5.0V),模块最佳工作电压:
5。
0V,字符尺寸:
95×
35(W×
H)mm.
1.引脚功能说明
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表2—1所示.
表2-1液晶1602引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
5
R/W
读/写选择
13
D6
6
E
使能信号
14
D7
7
D0
15
BLA
背光源正极
8
D1
16
BLK
背光源负极
第1脚:
VSS为地。
第2脚:
VDD接5V正电源.
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器.
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
第6脚:
E端为使能端,当E端由高电平跳变到低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
2.指令说明
1602液晶模块内部的控制器共有6条控制指令。
1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。
(说明:
1为高电平、0为低电平)
指令1:
清显示,指令码01H,光标复位到地址00H位置。
指令2:
光标复位,光标返回到地址00H.
指令3:
光标或显示移位S/C,高电平时移动显示的文字,低电平时移动光标。
指令4:
读忙信号和光标地址BF,为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。
指令5:
写数据。
指令6:
读数据。
3.写时序图
图2—16液晶1602时序图
图2—17LCD1602显示电路图
图2—18LCD1602显示效果图
第3章红外解码程序设计
使用C语言编写程序,调用的库函数多,易于移植,编程简单.
第1节红外接收电路主程序流程图
主程序是首先初始化红外接收端口,然后检测是否接收红外信号,如果接收到红外信号就调用接收子程序,然后就通过LCD1602显示当前按键的解码值,如图3—1所示。
图3-1红外接收主程序流程图
第2节红外接收电路子程序流程图
子程序是首先读取T0定时器的长度,如果是1。
125ms就认为是“0"
,将其存入缓冲区并且计数器加一,如果是2。
25ms就认为是“1”,将其存入缓冲区并且计数器加一.如果计数器值为32时,就接收结束标志位并且将计数器清0,如果计数器值不为32时,就认为是接收误码,计数器也将清0,此时重新等待读取红外信号.如图3—2所示。
图3-2红外接收程序流程图
附录1
部分红外解码程序
#include〈reg52.h〉
#defineucharunsignedchar
#defineuintunsignedint
ucharirtime;
ucharstartflag;
ucharirdata[33];
ucharbitnum;
ucharirreceok;
ucharircode[4];
ucharirprosok;
uchardisplay[8];
ucharcodetable[16]="
Infraredcontrol"
;
uchartable1[16]="
Nowcode:
"
;
sbitlcden=P3^6;
sbitlcdrs=P3^7;
//rw接地
ucharnum;
voidirpros(void)//数据处理函数
{
uchark=1,i,j;
ucharvalue;
for(j=0;
j<
4;
j++)
{
for(i=0;
i<
8;
i++)
{
value=value>
>
1;
if(irdata[k]>
6)
{
value=value|0x80;
}
k++;
}
ircode[j]=value;
irprosok=1;
}
voidirwork(void)//数据分离函数
{
display[0]=ircode[0]/16;
display[1]=ircode[0]%16;
display[2]=ircode[1]/16;
display[3]=ircode[1]%16;
display[4]=ircode[2]/16;
display[5]=ircode[2]%16;
display[6]=ircode[3]/16;
display[7]=ircode[3]%16;
}
voidnumzh(void)//ASCII码转换函数
uchari,j=8,a;
switch(display[i])
{
case0:
a=48;
break;
case1:
a=49;
break;
case2:
a=50;
case3:
a=51;
case4:
a=52;
case5:
a=53;
case6:
a=54;
case7:
a=55;
case8:
a=56;
case9:
a=57;
case10:
a=65;
case11:
a=66;
case12:
a=67;
case13:
a=68;
case14:
a=69;
case15:
a=70;
table1[j]=a;
j++;
}
voidmain()//主函数
{
timer0init();
int0init();
lcdinit();
play_1();
while
(1)//循环检测处理
if(irreceok)
{
irreceok=0;
irpros();
if(irprosok)
{
irprosok=0;
irwork();
numzh();
play_2();
voidtinmer0()interrupt1//定时器0中断函数
irtime++;
voidint0()interrupt0//外部中断0函数,数据接收
if(startflag)
if(irtime〉30)//检测引导吗
bitnum=0;
irdata[bitnum]=irtime;
irtime=0;
bitnum++;
if(bitnum==33)
irreceok=1;
else
startflag=1;
附录2
系统总电路原理图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 红外 遥控器 解码 设计 论文
![提示](https://static.bdocx.com/images/bang_tan.gif)