传感器技术网移动版

主页 > 技术方案 > 环境传感

基于mega128单片机的学习型红外遥控器设计

遥控是一种无线、非接触控制技术,具有抗干扰能力强、信息传输可靠、功耗低、成本低、易实现等显著优点,被诸多电子设备特别是家用电器广泛采用。随着人们生活水平的提高,家用电器的数量逐渐增加,使用的频率越来越高。但是由于各种编码格式不同[1],所以各种红外不能兼容,这样一个家庭就需要很多个遥控器,很不方便。
目前国内遥控器大部分采用复制遥控器红外波形的思想,方法很多。但是由于采用专用遥控发射芯片,集成度高但成本也高。
本文介绍一种的具有的红外遥控器的,其思想是通过测量经过红外接收芯片解调后输出的编码脉冲宽度[2],然后存入内部eeprom指定地址。当要发生红外信号时,从存储区还原出相应的红外遥控编码,并调制到38 kHz的载波信号上,最后直接驱动红外发光二极管发射红外信号,实现一个遥控器控制多种红外家电设备。
1 红外遥控器基本硬件结构
学习型红外遥控器由以下几个模块组成[3]:、红外接收模块、红外发射模块和矩阵键盘,如图1所示。系统采用8 MHz晶振,直接采用内部E2PROM来存储红外遥控编码,其容量为4 KB。

红外接收模块电路如图2所示。红外接收芯片采用HS0038A2,此芯片对接收到的红外信号进行放大,检波整形并解调出红外遥控编码,得到TTL电平,反相输入到 的PD0和PD1口,即外部中断0和外部中断1口。通过上升沿和下降沿两个边沿触发中断来控制定时器的开与关,从而记录高低电平的脉冲宽度值。

红外发射模块电路如图3所示。当系统进入发射功能时,单片机首先扫描矩阵键盘,识别相应按键的按下情况,然后从E2PROM中取出相应键值的遥控信号[4],即通过学习后保存到E2PROM里的高低电平的宽度值。与此同时,利用单片机T0定时器产生38 kHz的载波信号。最后将遥控信号调制到载波上,通过IO口直接驱动红外发射二极管发射红外信号。这里的调制完全通过软件实现,取代了直接用与门来调制的方式,方便准确。由于mega128 单片机IO口的驱动能力强,可以直接驱动二极管,避免了传统三极管放大后再驱动的繁琐。

2 系统软件
2.1主程序

  系统上电后不断扫描键盘,当检测到学习键按下时,调入学习子程序,对相应功能键的遥控编码进行学习并写入E2PROM;当发射键按下时,先识别按下的功能键,然后从E2PROM中读出相应的已经学习到的红外遥控编码,然后通过发射程序发射出去。如图4所示。

2.2 学习子程序
  学习程序的功能是对红外遥控编码的学习,即对高低脉冲宽度的测量。当中一定会存在一定误差,不可能毫无误差地复制出被测的红外编码。不过,由于所有的红外设备在接收端都允许一定的误差,只要保证在误差范围内都可以对红外设备进行控制。学习程序的主要思路是通过边沿触发中断来控制定时器的开和关,从而测出高低脉冲宽度。mega128单片机的外部中断0和1口的中断方式分别设置为下降沿和上升沿触发中断。当没有接收到红外信号时,外部中断0、1口都为高,此时程序等待红外信号的到来。当红外到达时,下降沿触发中断,学习程序跳到下降沿中断服务程序。在中断服务程序里,停止定时器3,保存其寄存器的值并清零,最后启动定时器1,这样开始测量低电平。当高电平到来时,上升沿触发中断,程序跳到上升沿中断服务程序里,此时停止定时器1,保存其寄存器的值并清零,最后启动定时器3,高电平开始测量。当下一个低电平到来时,程序又跳到下降沿中断服务程序,重复上面的工作。这样,高低电平的测量就在两个边沿触发中断服务程序里面来回跳转。最后一次跳入边沿触发中断服务程序时,一旦产生定时器溢出,则程序跳入定时器溢出中断服务程序,只要设定一个标志位,让程序跳回主程序即可。到此,红外编码学习完毕,只需把学习到的编码宽度值存入E2PROM即可。如图5所示。 (责任编辑:admin)