标题: 单片机红外发射程序与原理详解 [打印本页]
作者: huoguo 时间: 2018-12-3 21:25
标题: 单片机红外发射程序与原理详解
用AT89S51单片机制作红外电视遥控器
制作的实物如下图所示:
一般红外电视遥控器的输出都是用编码后串行数据对38~40kHz的方波进行脉冲幅度调制而产生的。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。
上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制,然后再通过红外发射二极管产生红外线向空间发射。一般电视遥控器的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码,用于核对数据是否接收准确。
根据红外编码的格式,发送数据前需要先发送9ms的起始码和4.5ms的结果码。
遥控串行数据编码波形如下图所示:
接收方一般使用TL0038一体化红外线接收器进行接收解码,当TL0038接收到38kHz红外信号时,输出端输出低电平,否则为高电平。所以红外遥控器发送红外信号时,参考上面遥控串行数据编码波形图,在低电平处发送38kHz红外信号,高电平处则不发送红外信号。
单片机红外电视遥控器电路图如下:
单片机程序源码:
以上的Word格式文档51黑下载地址:
单片机红外发射(原理与设计程序).doc
(126.5 KB, 下载次数: 200)
作者: 1149719013 时间: 2019-12-26 15:33
有没有用单片机发送矩阵开关红外信号的程序
作者: shmilyr1213 时间: 2020-1-18 15:42
大神,请问为什么 endcount=223是9ms endcount=10时是0.56ms。定时器不是26us一次吗?算迷糊了呀。自学的很多都不懂,务鄙视呀。
作者: cccc888 时间: 2020-1-18 20:35
实测接收头处的波形,
作者: lyl44 时间: 2020-1-27 18:45
直接驱动?没用三极管
作者: tieq1952 时间: 2020-1-28 07:58
谢谢分享!!!
作者: 1239225803 时间: 2020-5-14 09:18
你好 在keil上编译出错 错误信息
作者: 1239225803 时间: 2020-5-14 09:19
你好 在keil上编译出错 错误信息:Build target 'Target 1'
assembling STARTUP.A51...
compiling aag.c...
AAG.C(59): error C141: syntax error near 'flag'
Target not created
作者: 20563112 时间: 2021-5-11 22:03
你不会一点C的语法纠错都不会吧
作者: xxd0708 时间: 2021-5-12 12:55
cccc888 发表于 2020-1-18 20:35
实测接收头处的波形,
这是用什么工具测试的啊
作者: 20563112 时间: 2021-5-14 17:03
我验证过了,这个代码不行
作者: danq 时间: 2021-5-19 11:44
楼主用的是40us溢出,上面是223,117等等...都有重新核算一次,就可以正常运行了
作者: 越南超级人类 时间: 2021-6-27 10:32
flag附近少了一个分号而已,自己好好看看,不动点脑子不行的
作者: sadv 时间: 2021-6-29 18:48
红外信号编码的方式有很多种,楼主说明的只是其中最常见的一种,一般称为NEC,还有其他很多种不同的编码,编码方式不同,解码的方式自然也就不同,所以应用的时候还是要看具体时哪一种编码方式
作者: kavin21513 时间: 2021-8-2 16:07
实验发现, 采用12M的晶振,中断最少要20us,也就是周期最少要40us了,所以楼主的程序算法上是40us溢出.
如果采用24M晶振,就可以13us中断,产生周期为26us的38K载波.
所以要采用24M晶振.不然速度不够.
作者: 飞腾网络 时间: 2022-2-22 22:03
大师为什么用的两个晶振 那个左边那个小IC是干啥的呢
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |