找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3396|回复: 5
收起左侧

关于单片机红外遥控器程序的编写

[复制链接]
ID:639952 发表于 2019-11-11 20:29 | 显示全部楼层 |阅读模式
我现在用单片机外接一个红外模块,想要通过单片机上按键控制红外模块发射红外,这个红外模块编码是5个16进制数组成,遵循NEC协议,我已经有了要发送的编码,比如这个A1 F1 00 FF 45    ,这个第一位是地址码,第二位操作码,三四位用户码,第五位解码。我一共有四个值编码,分别按下单片机上的四个按键比如1、2、3、4.控制这个外接模块发射红外信号,从而控制小灯的亮灭。这是我的红外模块以及我的一部分程序,不知道接下来怎么写了,求教
51hei图片20191111202748.jpg
51hei图片20191111202805.png
回复

使用道具 举报

ID:617449 发表于 2019-11-12 09:36 | 显示全部楼层
你好!
1、for 发送的过程里面不应该有延时
2、用单片机作为主控,直接用单片机发射红外,不用外置红外模块
3、单片机晶振采用 11.0592,单片机波特率要和红外模块一致
回复

使用道具 举报

ID:639952 发表于 2019-11-12 10:18 | 显示全部楼层
来51学习1 发表于 2019-11-12 09:36
你好!
1、for 发送的过程里面不应该有延时
2、用单片机作为主控,直接用单片机发射红外,不用外置红外模 ...

波特率是对的,现在的要求是用这个红外模块来发送
回复

使用道具 举报

ID:187303 发表于 2019-11-12 11:02 | 显示全部楼层
你这个模块应该是通过串口收发送数据的,可以参考51串口的例子
回复

使用道具 举报

ID:187303 发表于 2019-11-12 11:06

ID:383215 发表于 2019-11-12 11:46 | 显示全部楼层
仅仅编一个红外遥控解码的程序,难度不太大,最难的是在一段程序里插入红外遥控解码程序,红外发射的信号慢、速率低,造成遥控解码程序速度也很慢,要想完整解码所有的红外发射数据,势必影响主程序的运行,前段时间我就编了一个红外接收程序,外部中断进入红外接收程序,解码完成后又用定时中断退出外部中断,就用这个方法,我编出来的红外遥控解码程序相当好用,灵敏度很高,距离够远,对主程序的影响在可以接收范围之内,我也只能给你一个思路,就是外部中断进入红外接收程序,解码完成后又用定时中断退出外部中断,没有红外发射就不会进入红外接收程序。
红外发射程序没有编过,难度应该更小,无非就是把数字调制在38K的信号,你要发射的数据A1 F1 00 FF 45最后两位不对,最后两位是反码关系,FF的反码是00。
回复

使用道具 举报

ID:245004 发表于 2019-11-12 14:06 | 显示全部楼层
你上面的程序是:按键控制串口发送5个十六进制代码。
你的红外模块功能和参数我也不知道,所以不清楚你的模块是怎么工作的?只能猜测它会发射你要的代码出去。
一般NEC代码的格式是:一个起始代码 + 一个用户码 + 一个用户码反码 + 一个数据代码 + 一个数据代码反码。
如果你的模块也是这样发送的,那就要看你用什么接收这个信号?是模块还是你学习板上面的红外接收头?
如果是模块的话,估计是通过串行通讯给你的学习板发送代码,你需要编写串行通讯接收函数来接收这个信号,再根据信号控制LED灯;
反之要是通过学习板上的接收头接收,那就要编写红外接收函数来处理,而不是串行接收代码函数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表