单片机的红外遥控器解码设计.docx

上传人:b****6 文档编号:12812342 上传时间:2023-06-08 格式:DOCX 页数:19 大小:615.24KB
下载 相关 举报
单片机的红外遥控器解码设计.docx_第1页
第1页 / 共19页
单片机的红外遥控器解码设计.docx_第2页
第2页 / 共19页
单片机的红外遥控器解码设计.docx_第3页
第3页 / 共19页
单片机的红外遥控器解码设计.docx_第4页
第4页 / 共19页
单片机的红外遥控器解码设计.docx_第5页
第5页 / 共19页
单片机的红外遥控器解码设计.docx_第6页
第6页 / 共19页
单片机的红外遥控器解码设计.docx_第7页
第7页 / 共19页
单片机的红外遥控器解码设计.docx_第8页
第8页 / 共19页
单片机的红外遥控器解码设计.docx_第9页
第9页 / 共19页
单片机的红外遥控器解码设计.docx_第10页
第10页 / 共19页
单片机的红外遥控器解码设计.docx_第11页
第11页 / 共19页
单片机的红外遥控器解码设计.docx_第12页
第12页 / 共19页
单片机的红外遥控器解码设计.docx_第13页
第13页 / 共19页
单片机的红外遥控器解码设计.docx_第14页
第14页 / 共19页
单片机的红外遥控器解码设计.docx_第15页
第15页 / 共19页
单片机的红外遥控器解码设计.docx_第16页
第16页 / 共19页
单片机的红外遥控器解码设计.docx_第17页
第17页 / 共19页
单片机的红外遥控器解码设计.docx_第18页
第18页 / 共19页
单片机的红外遥控器解码设计.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机的红外遥控器解码设计.docx

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

单片机的红外遥控器解码设计.docx

单片机的红外遥控器解码设计

第1章红外解码系统分析

第1节设计要求

整个控制系统的设计要求:

被控设备的控制实时反应,从接收信号到信号处理及对设备控制反映时间应小于1s;整个系统的抗干扰能力强,防止误动作;整个系统的安装、操作简单,维护方便;成本低。

红外载波、编码电路设计要求:

单片机定时器精确产生38KHz红外载波;根据控制系统要求能对红外控制指令信号精确编码并迅速发送。

红外解码电路设计要求:

精确接收红外信号,并对所接收信号进行解码、放大、整形、解调等处理,最后输出TTL电平信号;对非红外光及边缘红外光抗干扰能力强。

设备扩展模块设计要求:

直流控制交流;抗干扰能力强;反应迅速不产生误动作;能承受大电流冲击。

第2节总体设计方案

2.1方案论证

驱动与开关

方案一:

采用晶闸管直接驱动。

其优点是体积小,电路简单,外围元件少。

但控制电流小,大电流晶闸管成本高,并且隔离性能差。

方案二:

采用三极管驱动继电器。

其体积大,外围元件多。

优点是控制电流大,隔离性能好。

根据实际情况,拟采用方案二。

2.2总体设计框图

经过上述方案的分析选择,得出系统硬件由以下几部分组成:

电视红外遥控器,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节红外遥控器电路

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,工作电流:

2.0mA(5.0V),模块最佳工作电压:

5.0V,字符尺寸:

2.95×4.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

#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;

for(i=0;i<8;i++)

{

switch(display[i])

{

case0:

a=48;break;

case1:

a=49;break;

case2:

a=50;break;

case3:

a=51;break;

case4:

a=52;break;

case5:

a=53;break;

case6:

a=54;break;

case7:

a=55;break;

case8:

a=56;break;

case9:

a=57;break;

case10:

a=65;break;

case11:

a=66;break;

case12:

a=67;break;

case13:

a=68;break;

case14:

a=69;break;

case15:

a=70;break;

}

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)

{

bitnum=0;

irreceok=1;

}

}

else

{

startflag=1;

irtime=0;

}

}

附录2

系统总电路原理图

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

当前位置:首页 > PPT模板 > 商务科技

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

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