×
嵌入式开发 > 详情

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

发布时间:2020-07-01 发布时间:
|

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

红外接收模块电路如图2所示。红外接收芯片采用HS0038A2,此芯片对接收到的红外信号进行放大,检波整形并解调出红外遥控编码,得到TTL电平,反相输入到mega128 的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所示。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
发明专利在疫情影响下的逆势增长