欢迎来到天天文库
浏览记录
ID:34651219
大小:2.57 MB
页数:23页
时间:2019-03-08
《廿一、atmega16基于电视遥控器rm-168sp发送的红外接收解码(sony sirc protocol)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于Proteus的Atmega48单片机仿真廿一:ATmega16基于电视遥控器RM-168SP发送的红外接收解码(SONYSIRCProtocol)(鹰击长空,longsky2007@126.com)★注:网上资料,仅供学习和参考★1、仿真环境:uProteusPro7.4sp3uICCAVR6.31a2、电路原理图u外接4M晶振u外接RC复位电路u硬件主板实体:力天电子LT-mini-M16学习板u实际遥控器:视宝牌RM-168SP万能遥控器超级版(version:2010)3、程序u参照彭伟
2、《单片机C语言程序设计实训100例--基于AVR+PROTEUS仿真》P345u本例采用SCRIPTABLE发送红外接收头解调后的(SONYSIRCProtocol)波形仿真,Timer1输入捕获中断4、注意事项(1)Proteus仿真时先后发送两次波形:REC1和REC2。REC1延时5s(或其它更长时间)后发送REC2(见第三页红色字体)。REC1和REC2不包含上一例所说的结束位信号。因此只能捕捉13次下降沿,地址码也就只能小于等于15(0xFF),大于15的只能取到二进制的最后四位。★REC
3、1的EasyHDL语言代码如下:1//*SCRIPTGENERATORRECEINTiINTREC_CODEINTADDRINTCMDADDR=12CMD=34REC_CODE=(ADDR<<7)
4、CMDOUT=1SLEEPFOR2000m//Delay2sOUT=0SLEEPFOR2400uOUT=1SLEEPFOR600uFORi=0TO11STEP1IF((REC_CODE&$01)!=0)THENOUT=0SLEEPFOR1200uOUT=1SLEEPFOR600u2ELSEOUT=0SLE
5、EPFOR600uOUT=1SLEEPFOR600uENDIFREC_CODE=REC_CODE>>1NEXTi★REC2的EasyHDL语言代码如下://*SCRIPTGENERATORRECEINTiINTREC_CODEINTADDRINTCMDADDR=31CMD=78REC_CODE=(ADDR<<7)
6、CMDOUT=1SLEEPFOR5//Delay2sOUT=03SLEEPFOR2400uOUT=1SLEEPFOR600uFORi=0TO11STEP1IF((REC_CODE&$01)
7、!=0)THENOUT=0SLEEPFOR1200uOUT=1SLEEPFOR600uELSEOUT=0SLEEPFOR600uOUT=1SLEEPFOR600uENDIFREC_CODE=REC_CODE>>1NEXTiOUT=1SLEEPFOR5*ENDSCRIPT(2)本例采用视宝牌万能遥控器。设置为SONYSIRCProtocol的方法是:按住遥控器set键不放,大约过5秒钟后遥控器上面的LED指示灯点亮,先后按下遥控上的数字键“122”,每输入一位数指示灯会闪烁一次,3位数输入完成后指示灯
8、会熄灭,表示设置完毕。这时就可以遥控学习板了。45图2a仿真时发送“1234”显示波形12是地址码,34是命令码,见SONYSIRCProtocol的发射码定义:12就是01100,倒序就是00110;34就是0100010,倒序就是0100010;拼接起来就是010001000110,即是接收到的波形。67图2b仿真时发送“1234”的全局变量表8图3a仿真时发送“3178”显示“1578”9图3b仿真时发送“3178”显示波形10图3c仿真时发送“3178”的全局变量表11图4实际遥控器按下数字
9、键5时ICP1脚的波形12图5实际遥控器按下菜单键时的显示“0196”13/****main.C****************************************版本:ICCAVR6.25C,外接晶振4.00MHzMCU:ATmega16遥控器型号:RM-168SP硬件:力天电子LT-mini-M16学习板**************************************************/#include#include"delay_Accurat
10、e2.h"#include"Display4char_LT3.h"#defineF_CPU4000000UL#defineSEI()asm("sei")#defineCLI()asm("cli")#defineNOP()asm("nop")#defineBEEP()PORTD^=1<
此文档下载收益归作者所有