|
制作背景:某机顶盒常需要按某些按键(多个按键),操作起来比较麻烦。
模拟器功能:这是一个类似按键精灵的装置,按一下按键,发送一系列预设的遥控码。
MCU:中颖SH79F326(对于这个应用而言,硬件资源过剩,用它只是因为手上有)
实现步骤:
1、采集原遥控器用到按键的遥控码
这一步用成品接收头实现比较简单,如果用接收管,需要有加好多电路。
2、分析、记录遥控码
用逻辑分析仪采集接收头输出信号,尝试按各种红外编码格式解析。
单片机开发辅助利器——逻辑分析仪:https://www.mydigit.cn/thread-367913-1-1.html
从采集看,该遥控器编码物理层使用的是NEC红外遥控协议,协议层地址码不互为反码,控制码是正码+反码格式。
逐个采集、记录用到按键的控制码。地址码是固定的,只需记录一次即可。
3、单片机模拟遥控码系列
考虑到温漂,使用外部晶振提供时钟源。装置用电池供电,装上电池后就不再断电,无操作后深度休眠,休眠后通过外中断按键唤醒。发射电流设计20mA左右就可满足几米控制需要,在红外发射口上再接一个LED指示红外发射(可选)。
4、程序设计
红外遥控所需的38KHz载波用一个PWM口输出38KHz方波实现。红外接收头无接收时输出高电平,接收到38KHz红外线载波后输出低电平,即需要输出低电平时输出PWM、需要高电平时关闭PWM。
为精确控制PWM时间,需要一个独立定时器控制PWM开、关时间。
接收方(机顶盒)接收到遥控信号后需要一定时间才能完成响应,比如按下“菜单”键,接收到信号到信号后一段时间才能完成弹出菜单动作,这个需要实测确定,实测需要300mS左右,保险起见,延时500mS以上才输出下一个控制信号,某些功能,如恢复出厂设置需要等待更长的时间,因此,延时时间和按键功能码关联,即将控制码和延时时间编成常数表格,发射时按表格中的控制码和延时时间逐一输出。需要一个要求不高的计时器计时延时时间,本应用定时器丰富,用一个定时器定时10mS,以10mS为单位计时延时时间。
为休眠后唤醒,使用外中断上升沿唤醒,I/O外部下拉,按任意一个按键后唤醒,关闭外中断,按一般读取I/O状态方式检测按键,是有效按键则输出预设的遥控码,无输出或操作一段时间后休眠。
5、实物图
用3节其它设备废弃旧7号电池供电,用电池盒粘在背面,休眠耗电约8μA,虽然旧电池电压只有1.2V左右,用半年左右应该没问题。
6、附件程序包下载:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|