历史上的今天
今天是:2025年01月25日(星期六)
2018年01月25日 | 单片机模拟遥控器
2018-01-25 来源:eefocus
了解了遥控发射的原理,就可以来自己动手做一个遥控器了,可是没有专门的芯片怎么办?用 单片机 ,然后配合程序完成遥控码的发射。
1、硬件电路
其中, 单片机 选用AT89C2051, 使用两节电池供电就可以工作,用P1口构成3×3的模拟键盘,用一个IO口作为遥控波形输出端,然后接三极管驱动红外发射管,发出需要的遥控波形。
2、程序编写
由于要把波形“发射”出去,需要对遥控码进行调制,调制即把遥控码的高电平和载波进行“与”,结果是连续发射一定数量的载波,而低电平则只需进行简单的延时即可。以SAA3010T编码为例,为双相位编码方式,“0”用844US高电平加844US低电平表示,“1”用844US低电平加844US高电平表示,根据上述原理,844US高电平和载波进行“与”,载波的频率为38KHz,周期为1/38k, 所以,结果是
32个完整载波+12us,另外,844US低电平只需用一个延时函数即可。由于程序不长且时间精度要求很高,所以用汇编来编程,程序如下:
发射“0”的子函数
;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAA3010T;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SEND0: MOV R0, #20H
NEXT0: SETB REMOTE ; 844us=32个完整载波+12us
MOV R1, #03H ;发送正电平9us
DJNZ R1, $
NOP
CLR REMOTE ;发送负电平17us
MOV R1, #06H
DJNZ R1, $
NOP
DJNZ R0, NEXT0 ; 32个完整载波发送完毕
SETB REMOTE ;发送高电平9us
MOV R1, #03H
DJNZ R1, $
NOP
CLR REMOTE ;3us低电平
NOP
NOP
NOP
ACALL DELAY844US
RET
发射“1”的子函数
SEND1: MOV R0, #20H
CLR REMOTE ; 发送低电平844US
ACALL DELAY844US
NEXT1: SETB REMOTE ; 844us=32个完整载波+2US
MOV R1, #03H ; 发送正电平9us
DJNZ R1, $
NOP
CLR REMOTE ; 发送负电平17us
MOV R1, #06H
DJNZ R1, $
NOP
DJNZ R0, NEXT1 ; 32个完整载波发送完毕
SETB REMOTE ; 发送高电平9us
MOV R1, #03H
DJNZ R1, $
NOP
CLR REMOTE ; 3us低电平
RET
完整的程序还需加上键盘扫描程序,以及连续调用SEND1和SEND0发射一段完整的码。
史海拾趣
|
请问高手:如图,我这样连接的显示电路错没? 老师说RXD不能输出,TXD不能作为74LS164的CLOCK信号, 还有第2个164的A.B不能接上一组164输出的的信号,要我改....我真的郁闷了 请高手指教....速度啊...紧急...… 查看全部问答> |
|
在BOOTLOADER中把NK下载到NOR FLASH中,现在想把写入得数据打印出来该怎么做,可以直接访问FLASH的地址吗,我试了下发现读不出来,(全是0),还是要写了类似驱动的东西… 查看全部问答> |
|
新手,询问pda与远程的数据库(oracle)同步问题,急!!! 原来没有做过嵌入式的开发,现在想在pda下做二次开发,系统是wince的,pda上的数据需要跟远程服务器的数据库做数据同步,远程的数据库为oracle,系统为b/s结构的,pda需要连接到pc机上在做同步,pc机可以连接系统,请教思路或者是有什么资料,万分 ...… 查看全部问答> |
|
常用集成电路引脚识别:各种不同的集成电路引脚有不同的识别标记和不同的识别方法,掌握这些标记及识 别方法,对于使用、选购、维修测试是极为重要的。⒈缺口 在IC的一端有一半圆形或方形的缺口。⒉凹坑 色点或金属片 在IC一角有一凹坑、色 ...… 查看全部问答> |




