基于单片机的红外遥控器解码设计毕业论文 .pdf
第 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 页,共 14 页 - - - - - - - - - 图 1-1 电路设计整体框图第 2 章 红外解码硬件电路设计第 1 节 单片机及其硬件电路设计1.1 单片机的介绍AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52 具有以下标准功能: 8K 字节 Flash,256 字节RAM ,32 位 IO 口线,看门狗定时器, 2 个数据指针,三个16 位定时器计数器,一个6向量 2 级中断结构, 全双工串行口, 片内晶振及时钟电路。 另外,AT89S52 可降至 0Hz 静态逻辑操作,支持2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM 、定时器计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。图2-1 AT89S52 引脚图1.2 时钟电路及 RC复位电路AT89S52 芯片内部有一高增益反相放大器,用于构成振荡器反相放大器的输入端为XTAL1 ,输出端为 XTAL2 。在 XTAL1 、XTAL2 (第 19、18 引脚)两端接一个石英晶体振荡器,和两个电容就构成了稳定自激谐振电路。晶振频率为11.0592MHz,C12、C13 是两个瓷片电容,与晶振Y2 构成了自激谐振电路。其电容的作用主要是对频率进行微调,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 一般取 3045pF 左右。使用该电路可产生稳定的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 的布图和低成本的要求。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 图 2-4 TC9012 引脚图低压 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 码(脉冲位置调制码)对红外数据的发送进行论证。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 图 2-6 指令脉冲图遥控编码脉冲信号是由引导码、系统码、系统反码、功能码、功能反码等信号组成。引导码也叫起始码,由宽度为4.5ms的高电平和宽度为4.5ms 的低电平组成(不同的红外家用设备在高低电平的宽度上有一定区别),用来标志遥控编码脉冲信号的开始。如图2-7所示。图 2-7 信号引导码图系统码也叫识别码,它用来指示遥控系统的种类,以区别其它遥控系统,防止各遥控系统的误动作功能码也叫指令码,它代表了相应的控制功能,接收机中的可根据功能码的数值完成各种功能操作。系统反码与功能反码分别是系统码与功能码的反码,反码的加入是为了能在接收端校对传输过程中数据是否产生差错。脉冲位置表示的“0”和“ 1”组成的 32 位二进制码,前 16 位控制指令,控制不同的红外遥控设备。而不同的红外家用电器又有不同的脉冲调控方式,后16 位分别是 8 位的功能码和8 位的功能反码。串行数据码时序图如 2-8 所示。图 2-8 串行数据码时序图将要发送的指令脉冲编码信号调制在38KHz 的载波上,可以增加信号的抗干扰能力,提高信号传输效率。信号调制时序如2-9 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 图 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-12 HS0038 内部结构工作流程HS0038接收原理:红外线接收是把遥控器发送的数据(已调信号 )转换成一定格式的控制指令脉冲 (调制信号、基带信号 ),是完成红外线的接收、放大、解调,还原成发射格式名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - (高、低电位刚好相反)的脉冲信号。这些工作通常由一体化的接收头来完成,输出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.2 1602液晶显示电路1602LCD 主要技术参数:显示容量:16 2 个字符,芯片工作电压:4.55.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 RW 读写选择13 D6 数据名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 6 E 使能信号14 D7 数据7 D0 数据15 BLA 背光源正极8 D1 数据16 BLK 背光源负极第 1 脚:VSS为地。第 2 脚:VDD接 5V 正电源。第 3 脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,使用时可以通过一个10K 的电位器调整对比度。第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。第 5 脚:RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。第 6 脚:E 端为使能端,当E 端由高电平跳变到低电平时,液晶模块执行命令。第 714 脚:D0D7 为 8 位双向数据线。第 15 脚:背光源正极。第 16 脚:背光源负极。2指令说明1602液晶模块内部的控制器共有6 条控制指令。1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。(说明:1 为高电平、 0 为低电平)指令 1:清显示,指令码01H,光标复位到地址 00H 位置。指令 2:光标复位,光标返回到地址00H。指令 3:光标或显示移位SC,高电平时移动显示的文字,低电平时移动光标。指令 4:读忙信号和光标地址BF,为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令 5:写数据。指令 6:读数据。3写时序图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - 图 2-16 液晶 1602 时序图图 2-17 LCD1602 显示电路图图2-18 LCD1602 显示效果图第 3 章 红外解码程序设计使用 C 语言编写程序,调用的库函数多,易于移植,编程简单。第 1 节 红外接收电路主程序流程图主程序是首先初始化红外接收端口,然后检测是否接收红外信号,如果接收到红外信号就调用接收子程序,然后就通过LCD1602 显示当前按键的解码值,如图3-1 所示。图 3-1 红外接收主程序流程图第 2 节 红外接收电路子程序流程图子程序是首先读取T0 定时器的长度,如果是1.125ms就认为是“ 0”,将其存入缓冲区并且计数器加一,如果是2.25ms 就认为是“ 1”,将其存入缓冲区并且计数器加一。如名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 果计数器值为 32 时,就接收结束标志位并且将计数器清0,如果计数器值不为32 时,就认为是接收误码,计数器也将清0,此时重新等待读取红外信号。如图3-2 所示。图 3-2 红外接收程序流程图附录 1部分红外解码程序#includereg52.=P36; sbit lcdrs=P37;rw 接地uchar num; void irpros(void) 数据处理函数 uchar k=1,i,j; uchar value; for(j=0;j4;j+) for(i=0;i1; if(irdatak6) value=value|0 x80; k+; ircodej=value; irprosok=1; void irwork(void) 数据分离函数 display0=ircode016; display1=ircode0%16; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - display2=ircode116; display3=ircode1%16; display4=ircode216; display5=ircode2%16; display6=ircode316; display7=ircode3%16; void numzh(void)ASCII 码转换函数 uchar i,j=8,a; for(i=0;i30) 检测引导吗 bitnum=0; irdatabitnum=irtime; irtime=0; bitnum+; if(bitnum=33) bitnum=0; irreceok=1; else startflag=1; irtime=0; 附录 2系统总电路原理图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -