老古开发网首页
导航:老古开发网首页文章索引索引第2894页文章分类单片机第47页→[单片机模拟遥控器]
| -文章搜索 - 最新文章 - |

第3079篇:单片机模拟遥控器

发布时间:2006年10月15日 点击次数:2499
来源:   作者:
 
了解了遥控发射的原理,就可以来自己动手做一个遥控器了,可是没有专门的芯片怎么办?用单片机,然后配合程序完成遥控码的发射。
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发射一段完整的码。


欢迎进入老古论坛进行讨论
[单片机] 相关文章:
SPI接口介绍
简介:
这几天碰到了使用SPI接口的flash,才知道flash还可以是串行的,看来以前真是井底之蛙啊,找了一些SPI接口的资料都不全,后来找到一点英文资料,翻译了一下,加上我的个人理解,凑成一篇了,希望对初学者有点帮助。 SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解......

关于单键开关电路
初学单片机的一些概念
C51音乐程序
EM78系列单片机的编程技巧
 
下一个:[接口电路]SPI接口应用之一---看门狗芯片X25045
简介:
一、引脚定义及通信协议 SO:串行数据输出脚,在一个读操作的过程中,数据从SO脚移位输出。在时钟的下降沿时数据改变。 SI: 串行数据输入脚,所有的操作码、字节地址和数据从SI脚写入,在时钟的上升沿时数据被锁定。 SCK:串行时钟,控制总线上数据输入和输出的时序。 /CS :芯片使能信号,当其为高电平时,芯片不被选择,SO脚为高阻态,除非一个内部的写操作正在进行,否则芯片处于待机模式;当引脚为低电平时,芯片处于活动模式,在上电后,在任何操作之前......

上一个:[显示技术]OLED的原理

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:30分钟 执行时间:63毫秒