找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于MCU红外发射和接收能不能同时完成?

查看数: 4768 | 评论数: 18 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-11-5 11:05

正文摘要:

设计一个产品,其中用到红外开关,为防止干扰,采用红外一体头,为使程序简单,红外发射采用555产生38k载波,发射数据由单片机p10口提供,红外接收由外中断(p32)实现,原理图如下:

回复

ID:342954 发表于 2020-11-17 09:47
接收时,脉充宽度,做一个容差
ID:342954 发表于 2020-11-17 09:46
程序设计思想问题,发送和接收用中断,
ID:685385 发表于 2020-11-17 08:56
这是NEC协议,你程序代码的时间设置不对,就是判断时间,你多测试几次就可以了,重要的是你的载波发生一定要正确
ID:89515 发表于 2020-11-17 08:54
没这样做过,但是理论上是可行的。38khz频率,周期26us可以执行很多指令。使用32位单片机(8位高速也行),用两个定时器来做应该可行。如果模拟nec协议,脉宽是100us级的就更没问题了。用接收数据的定时器控制发送数据的定时器,考虑优先级,接收数据脉宽范围,时间精度等。
ID:283954 发表于 2020-11-10 16:09
你得首先确定555发射的38K信号能让P3.2产生中断,反射式红外线距离是很短的,用万用表量一下P3.2脚就能看出,或者在中断入口处点亮一颗LED指示灯也能测出。
ID:841476 发表于 2020-11-10 12:54
楼上说得对:理论上说是不能同时的,但芯片接收和发射用的时间特别短毫秒级的,给人的感觉像同时处理的,接收一般用定时器捕获或中断做接收。其实实际上没有做到同时,但对人来说也差不多了
ID:450849 发表于 2020-11-10 11:32
wh8010jky 发表于 2020-11-6 09:08
我最主要的疑问是:一个单片机能否实现红外的发和收?按君所言,定时器产生38k信号,在接收管接收时这个3 ...

完全可以做到,最主要的是你发射和接受不能用堵塞式延时。
ID:311846 发表于 2020-11-6 17:16
此时有个示波器你就比较好解决问题了,收发端口是否正常就可以检测出来,考虑中断是否会影响发数据,有没有办法避免,然后就是最好先用两个单片机先验证收发数据都可以了,再看怎么整合在一个单片机验证
ID:283954 发表于 2020-11-6 14:09
STC12单片机有定时器输出口,定时器可以自己重装,有需要可以开中断,但产生38k无需中断。
再开一个定时器T1定时10ms, 这个要中断,每次中断反转TR0。
跑的时候,若TR0为1,接收管输入端产生中断,进入测量脉载波长度程序,过程中T1发生中断将TR0置0,载波消失,即获得载波长度,若与10ms相符则非干扰,大概是这样。


AUXR EQU 8EH
WAKE_CLKO EQU 08FH   

ORG 0000H

MOV WAKE_CLKO,#00000001B      ;ENABLE BRT(=4),T1(=2) T0(=1) HAVE CLOCK OUTPUT BRT@P1.0 T1@P3.5 T0@P3.4
MOV AUXR, #11111100B              ;T0x12,T1x12,UART_M0x6,BRTRUN,S2SMOD,BRTx12,EXTRAM,S1BRS
MOV TMOD, #00100010B            ;TIMER1 AS MOD2(8 BYTE AUTO RELOAD TIMER)
                                                ;GATE, C/T,M1,M0(T1) GATE, C/T,M1,MO(T0)

MOV TL0, #111                 ;Tx12 111=38.2K OUTPUT AT P3.4
MOV TH0, #111
SETB TR0                         ;RUN T0
ID:573999 发表于 2020-11-6 10:18
理论上说是不能同时的,但芯片接收和发射用的时间特别短毫秒级的,给人的感觉像同时处理的,接收一般用定时器捕获或中断做接收。
ID:382699 发表于 2020-11-6 10:18
P1口好像漏了上拉电阻,那样的话555第4脚一直都是低电平,不能工作了!
ID:134430 发表于 2020-11-6 09:08
dalaoshi 发表于 2020-11-5 23:45
既然是自己发自己收就不一定要照着别人的格式,你可以让发射管发射固定的38k间歇信号,比如10MS开,10MS关 ...

我最主要的疑问是:一个单片机能否实现红外的发和收?按君所言,定时器产生38k信号,在接收管接收时这个38k信号已经发送完毕,如何才能收到?这是我最不懂的地方。
ID:134430 发表于 2020-11-6 08:57
dalaoshi 发表于 2020-11-5 23:45
既然是自己发自己收就不一定要照着别人的格式,你可以让发射管发射固定的38k间歇信号,比如10MS开,10MS关 ...

谢谢了!但是,用定时器产生38k信号不是需要频繁中断吗?能否提供一个程序参考一下?再次谢谢!
ID:283954 发表于 2020-11-5 23:45
既然是自己发自己收就不一定要照着别人的格式,你可以让发射管发射固定的38k间歇信号,比如10MS开,10MS关,接收管分析接收信号的周期,若符合就不是干扰信号,而产生间歇信号可以用单片机的一个定时器来完成,而且是用中断来控制,该定时器的中断权位比P3.2高,因此在P3.2中断期间输出信号不会中断。若还有其他定时器可用,应该用来产生38K信号直接输出到发射管,不必用555IC。
ID:134430 发表于 2020-11-5 15:33
补充说明:发送数据里的4个数据是固定码,代替32位设备码和键码

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

Powered by 单片机教程网

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