您现在的位置: 主页 > MCU > 单片机技术应用 > 单片机模拟遥控器 -
本文所属标签:
为本文创立个标签吧:

单片机模拟遥控器 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]
了解了遥控发射的原理,就可以来自己动手做一个遥控器了,可是没有专门的芯片怎么办?用单片机,然后配合程序完成遥控码的发射。1、硬件电路其中, 单片机 选用AT89C2051, 使用两节电池供电就可以工作,用P1

了解了遥控发射的原理,就可以来自己动手做一个遥控器了,可是没有专门的芯片怎么办?用单片机,然后配合程序完成遥控码的发射。
1、硬件电路


其中, 单片机 选用AT89C2051, 使用两节电池供电就可以工作,用P1口构成3×3的模拟键盘,用一个IO口作为遥控波形输出端,然后接三极管驱动红外发射管,发出需要的遥控波形。

本文引用地址: http://www.21ic.com/app/mcu/201806/761684.htm


2、程序编写
由于要把波形“发射”出去,需要对遥控码进行调制,调制即把遥控码的高电平和载波进行“与”,结果是连续发射一定数量的载波,而低电平则只需进行简单的延时即可。以SAA3010T编码为例,为双相位编码方式,“0”用844US高电平加844US低电平表示,“1”用844US低电平加844US高电平表示,根据上述原理,844US高电平和载波进行“与”,载波的频率为38KHz,周期为1/38k, 所以,结果是
32个完整载波+12us,另外,844US低电平只需用一个延时函数即可。由于程序不长且时间精度要求很高,所以用汇编来编程,程序如下:

发射“0”的子函数

;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA3010T;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SEND0: MOVR0,#20H
NEXT0: SETBREMOTE;844us=32个完整载波+12us
MOVR1,#03H ;发送正电平9us
DJNZR1,$
NOP
CLRREMOTE ;发送负电平17us
MOVR1,#06H
DJNZR1,$
NOP
DJNZR0,NEXT0; 32个完整载波发送完毕
SETBREMOTE ;发送高电平9us
MOVR1,#03H
DJNZR1,$
NOP
CLRREMOTE ;3us低电平
NOP
NOP
NOP
ACALL DELAY844US
RET

发射“1”的子函数

SEND1: MOVR0,#20H
CLRREMOTE ; 发送低电平844US
ACALL DELAY844US
NEXT1: SETBREMOTE ;844us=32个完整载波+2US
MOVR1,#03H ; 发送正电平9us
DJNZR1,$
NOP
CLRREMOTE ; 发送负电平17us
MOVR1,#06H
DJNZR1,$
NOP
DJNZR0,NEXT1; 32个完整载波发送完毕
SETBREMOTE; 发送高电平9us
MOVR1,#03H
DJNZR1,$
NOP
CLRREMOTE; 3us低电平
RET
完整的程序还需加上键盘扫描程序,以及连续调用SEND1和SEND0发射一段完整的码。




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > 单片机模拟遥控器 -
 

"单片机模拟遥控器 -"的相关文章

网站地图

围观()