第11章单片机红外解码第11讲红外遥控第11章单片机红外解码内容•红外线概述•红外遥控系统组成及编码分类•遥控信号的解码算法及编程思路第11章单片机红外解码一、红外线概述红外线是太阳光线中众多不可见光线中的一种,由德国科学家霍胥尔于1800年发现,又称为红外热辐射,他将太阳光用三棱镜分解开,在各种不同颜色的色带位置上放置了温度计,试图测量各种颜色的光的加热效应。结果发现,位于红光外侧的那支温度计升温最快。因此得到结论:太阳光谱中,红光的外侧必定存在看不见的光线,这就是红外线。也可以当作传输之媒界。太阳光谱上红外线的波长大于可见光线,波长为0.75~1000μm。红外线可分为三部分,即近红外线,波长为0.75~1.50μm之间;中红外线,波长为1.50~6.0μm之间;远红外线,波长为6.0~l000μm之间。第11章单片机红外解码红外线概述-红外线的应用领域红外线遥控是目前使用最广泛的一种通信和遥控手段。红外线遥控装置的优点:体积小、功耗低、功能强、成本低1.红外线辐射加热理疗机————使用远红外线的热效应治疗2.红外线测温夜视仪————探测人体热量,红外线成像热寻的导弹——跟踪飞机尾部热量的导弹,著名的美国响尾蛇3.红外线通信测距仪————以红外线作为载波的一种测量距离的精密仪器红外遥控器------以红外线作为载波的一种无线通信设备第11章单片机红外解码红外遥控系统组成及编码分类发射部分(键盘、编码调制、红外发送器)组成:接收部分(光电转换放大器、解调、解码电路)第11章单片机红外解码红外遥控系统组成及编码分类第11章单片机红外解码红外发光管红外发光管:红外发光二极管通常使用砷化镓(GaAs)、砷铝化镓(GaAlAs)等材料,采用全透明或浅蓝色、黑色的树脂封装。产生的光波波长为940nm左右,为红外光红外接收头:其内部含有高频的滤波电路,专门用来滤除红外线合成信号的载波信号(38KH),并送出接收到的信号。当红外线合成信号进入红外接收模块,在其输出端便可以得到原先发射器发出的数字编码,只要经过单片机解码程序进行解码,便可以得知按下了哪一个按键,而做出相应的控制处理,完成红外遥控的动作。红外接收头红外遥控系统组成及编码分类第11章单片机红外解码常用的IR信号传输协议:ITT协议NEC协议NOKIANRC协议SHARP协议PHILIPSRC5协议PHILIPSRC6协议PHILIPSRECS80协议SONYSIRC协议红外遥控系统组成及编码分类第11章单片机红外解码ITT格式的特征每个信号仅有14个很短的脉冲脉冲间隔解码技术长电池寿命4位地址码,6位命令码定时自校正,发射容许简单的RC振荡器通讯快速,一个信号发送仅使用1.7ms到2.7ms的时间第11章单片机红外解码NEC格式的特征:1:使用38kHz载波频率2:引导码间隔是9ms+4.5ms3:使用16位客户代码4:使用8位数据代码和8位取反的数据代码下面的波形是从红外接收头上得到的波形:(调制信号转变成高低电平了)第11章单片机红外解码引导码9ms,结果码4.5ms,低位地址码(9~18ms),高8位地址码,8位数据码,8位数据反码组成。第11章单片机红外解码第11章单片机红外解码采用脉宽调制的串行码波形0.565ms0.565ms0.56ms1.685ms1.125ms2.250ms“0”“1”第11章单片机红外解码采用脉宽调制的串行码波形0.565ms0.565ms0.56ms1.685ms“0”“1”外部中断INT1发生,times=00.5ms0.5ms0.5ms0.5ms0.5ms0.5ms第11章单片机红外解码NEC码的解码VS_1838b红外一体化接收头3个引脚,Out、GND、Vcc工作电压Vcc2.7~5.5V接收距离L1820M载波频率f=38kHz低电平输出VOLVin=0VVcc=5V0.20.4V高电平输出VOHVcc=5V4.5V第11章单片机红外解码VS_1838b红外一体化接收头Vs_1838b与单片机的连接电路注意:VS_1838b初状态(空闲状态)Out引脚输出为高电平INT1P3^3STC89C52OutGNDVcc+5VVS_1838b第11章单片机红外解码NEC码的解码——VS_1838b红外一体化接收头起始码(9ms)结果码(4.5ms)VS_1838b输出的前导电平信号VS_1838b输出电平格式(注意:接收代码与发射代码反向)0.565ms0.56ms1.125msVS_1838b输出的码“0”0.565ms2.25ms1.685msVS_1838b输出的码“1”0.565ms1.125ms0.56ms遥控发射码“0”0.565ms2.25ms1.685ms遥控发射码“1”起始码(9ms)结果码(4.5ms)前导电平信号第11章单片机红外解码NEC码的解码——VS_1838b红外一体化接收头例如:码“1001”发、收编码为:第11章单片机红外解码遥控信号的解码算法及编程思路解码的关键是如何识别“0”和“1”,从位的定义可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。第11章单片机红外解码遥控信号的解码算法及编程思路解码过程具体如下:(1)初始化外部中断0(或者1)为下降沿中断。(2)进入外部中断服务程序,关闭外部中断。(3)对引导码进行判断。如果引导码正确,准备接收下面的一帧遥控数据,以查询方式判断遥控的数据是0还是1。如果非引导码,则退出外部中断。第11章单片机红外解码遥控信号的解码算法及编程思路(4)先后依次接收地址码、地址反码、数据码、数据反码。(5)当接收到32位数据时,说明一帧数据接收完毕。比较数据码和数据反码,若数据码取反后与数据反码不同,则表示为无效数据,应放弃本次接收数据。(6)开启外部中断,准备下一次遥控接收。查询方式与上述过程中的(2)~(5)一致,这里不再重复。第11章单片机红外解码#includereg51.h#defineucharunsignedcharucharirtime,starflag;//红外接收时间,开始标志ucharirdata[33];//接收输入33个码序列ucharircode[4];//存放接收到的4个码:地址码、地址反码、数据码、数据反码ucharirreceok;//是否接收完毕标志ucharirprosok;//是否转换完标志第11章单片机红外解码voidinitial()//初始化{IT0=1;//外部中断INT1负边沿触发EX0=1;//允许外部中断INT1TMOD=0x02;//定时器T0为模式2,8位定时器ET0=1;//允许定时器T0中断TR0=1;//启动定时器T0TH0=0;//晶振频率12MHzTL0=0;//T0定时间隔0.256msEA=1;//开放总控中断}第11章单片机红外解码//计算接收到红外发射的时间voidtime0()interrupt1//T0中断,每0.256ms计数一次{irtimes++;//计算每位的宽度}第11章单片机红外解码//将接收到的红外时间保存到33个irdata[]中voidinter0()interrupt0//外部中断0,下降沿触发{if(starflag)//开始标志,判断是否引导码{if(irtime50)//检测是否收到引导码,9ms/0.256~33{bitnum=0;//收到引导码,则接受数据}irdata[bitnum]=irtime;//将接收红外时间保存irtime=0;//下次中断发生重新计数bitnum++;if(bitnum==33)//接收到一帧数据irreceok=1;//已接收完标志}else//第一次中断,还没有开始{starflag=1;//建立开始标志irtime=0;}}第11章单片机红外解码//把接收的33字节序列信息转换成地址和数据代码voidir_decode(void){uchark,i,j,value;k=1;//忽略第一位引导码for(j=0;j4;j++)//4个吗{for(i=0;i8;i++)//将接收到数据8次,将高位在前,低位在后{value=value1;//因为低位在前,高位在后,移位7次//判断接收到的数据是什么?0为.125ms约4.4个irtime,1为2.25ms,8if(irdata[k]6){value=value|0x80;}k++;}ircode[j]=value;//将接收到的数据放入ircode}irprosok=1;//红外数据提取好了}第11章单片机红外解码voidmain(){initial();while(1){if(irreceok){ir_decode();irreceok=0;}if(irprosok){irwork();//将ircode[]数据分解成每位显示在数码管上irprosok=0;}display();}}第11章单片机红外解码中断允许寄存器IEEA——中断允许总控ET2——定时器2溢出中断ES——串行口中断ET1——定时器1溢出中断EX1——外部中断INT1(=1,允许)ET0——定时器0溢出中断EX0——外部中断INT0(=1,允许)EAET2ESET1EX1ET0EX0D7D6D5D4D3D2D1D0第11章单片机红外解码定时/计数器控制寄存器TCONTF1——定时器T1溢出标志位TR1——定时器T1启动位(=1,启动)TF0——定时器T0溢出标志位TR0——定时器T0启动位(=1,启动)IE1——外部中断1请求标志位IT1——外部中断1触发方式(=1,边沿触发)IE0——外部中断0请求标志位IT0——外部中断0触发方式(=0,电平触发)TF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0第11章单片机红外解码外部中断INT1——P3.3输入INT0——P3.2输入第11章单片机红外解码1、(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。EX0EAPX001ET0PT001EX1PX101ET1PT101ESPS01≥1RITISCONTCONIE0TF0IE1TF110101IT0IT1INT0INT1T0T1RXTXIEIP111111110硬件查询自然优先级自然优先级中断入口中断入口高级低级中断源中断源第11章单片机红外解码16X=2-N定时器工作方式1方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。TF1TR1TF0TR0GATEC/TM1M0GATEC/TM1M01&≥110T0引脚INT0引脚10机器周期TH0TL08位8位溢出TCONTMODD0D7D7D0申请中断计数个数与计数初值的关系为:第11章单片机红外解码定时/计数器应用初始化程序应完成如下工作:对TMOD赋值,以确定T0和T1的工作方式。计算初值,并将其写入TH0、TL0或TH1、TL1。中断方式时,则对IE赋值,开放中断。使TR0或TR1置位,启动定时/计数器定时或计数。第11章单片机红外解码小结