电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

PIC做的红外线遥控接收程序

来源:华强电子网 作者:华仔 浏览:1270

标签:

摘要: >红外接收目前用的比较多的有三种方法. 1,查询法,既软件不停地查询是否为低(遥控信号)然后通过精确延时读头码.和 数据0或1码. 2,读到有信号输入时开打开定时计数器,然后通过读定时器的中断次数,来判定头码和0,1的. 3RB0或RB4-RB7加定时器(或软件延时)利用输入中断的好处是可做实时控制. 如下: ;***发射为6221,把接收到的码值送到ICD的PORTC口显示****** ;***

>红外接收目前用的比较多的有三种方法.
1,查询法,既软件不停地查询是否为低(遥控信号)然后通过精确延时读头码.和
数据0或1码.
2,读到有信号输入时开打开定时计数器,然后通过读定时器的中断次数,来判定头码和0,1的.
3RB0或RB4-RB7加定时器(或软件延时)利用输入中断的好处是可做实时控制.

如下:
;***发射为6221,把接收到的码值送到ICD的PORTC口显示******
;*******************************
org0000h
nop
gotostart
org0004h
gotoserv
;**************************************************
start
bsfstatus,rp0;体1
MOVlw0000h
MOVwftrisc;C口输出
MOVlw0ffh;B口RB0输入
MOVwftrisb
MOVlwB’00000100’;1:64
MOVwfoption_reg;TMR0定时器
bcfstatus,rp0;体0
clrfiNTCon;10010000
bsfintcon,7;开放INT下降沿中断
bsfintcon,4
bcfintcon,1
clrfportc
loop
sleep
nop
gotoloop
;*************现场保护********************************
serv
MOVwfw_temp
swapfstatus,0
clrfstatus
MOVwfstatus_temp
MOVfpclath,0
MOVwfpclath_temp
clrfpclath

;***************遥控处理.******************************

bcfintcon,1
btfscportb,0;检测RB0是否为0.
gotozdhh;RB0不为0,误中断.反回
calldelay8;调用8MS延时.头码检测.
btfscportb,0;检测头码
gotozdhh;不是中断反回
calldelay5;延时5MS后进行数据检测.
btfssportb,0;检测RB0是否为高电平.
gotozdhh;不是继续检测.
;*********************************************

clrfdata1;20H
clrfdata2;21H
clrfdata3;22H
clrfdata4;24H
clrfjsp2;32位计数器
clrfsj;接收的数据寄存器
clrfjsp1;8位计数器
MOVlw0x20;20H寄存器送W
MOVwffsr;由W送20H到FSR
jcbtfscportb,0;检测RB0是否为低电平.
gotojc;不是继续检测.
;**************0和1数据检测****************************
jscalldelay1;延时1.3MS
btfscportb,0;检测头码过后是0还是1,
gotos1;检测的数据不"1"
;*************0数据处理*****************************
bcfsj,c;数据是"0"
rrfsj,1;0数据右移到SJ寄存器
gotoj1
;**************1数据处理.*************************
s1bsfsj,c
rrfsj,1
ddpbtfscportb,0
gotoddp
;**************RAM移位***************************
j1incfjsp1;8位计数寄存器
incfjsp2;32位数,计存器.
btfssjsp1,3;是否有8位
gotojs
clrfjsp1
MOVfsj,0;移8位数到W
MOVwfindf;W到DATA
incffsr;RAM地址加1
clrfsj
;*****************************
btfssjsp2,5;检测是否接收完32位.
gotojs;否,再检测.
MOVlwB’10001111’;送IC高8位码
xorwfdata1,0;相减(Z:1=结果为0;0=结果不为0)
btfssstatus,2;结果为0则下一步.
gotozdhh;相减结果不为0中断返回
MOVlwB’101010101’;低8位IC码检测
xorwfdata2,0
btfssstatus,2
gotozdhh
;comfdata4,0;数据反码检测.暂不用.
;subwfdata3,0
;btfssstatus,2
;gotozdhh
MOVfdata3,0;送数码到C口
MOVwfportc
gotozdhh;接收完32位则中断返回
;****************zdhh中断返回程序*********************
zdhh
MOVfpclath_temp,0
MOVwfpclath
swapfstatus_temp,0;交换STATUS与W内容,将体选还原.
MOVwfstatus;将W内容送STATUS寄存器
swapfw_temp,1;交换w_temp
swapfw_temp,0;交换w_temp与w内容,将w_temp内?
bcfintcon,1
retfie;中断返回,

;****************8ms*********************************
delay8bcfintcon,5
bcfintcon,2
MOVlwD’15’
MOVwftmr0
loop1btfssintcon,2
gotoloop1
return
;****************5ms*********************************
delay5bcfintcon,5
bcfintcon,2
MOVlwD’120’
MOVwftmr0
loop2btfssintcon,2
gotoloop2
return
;****************1.3ms*******************************
delay1bcfintcon,5
bcfintcon,2
MOVlwD’240’
MOVwftmr0
loop3btfssintcon,2
gotoloop3
return
;*************
end

错码的可能有两种
一个是字头对不好
一个是数据传输有错误特别是时序错误
后面的可以用软件校验
字头不好确认最好可以在软件规定上连续多发几个然后用移位方法判断有多次连续相同子头出现对齐字头比如连续出现20个10转换后表示准备发送数据然后等待10传输结束后跟着有一个字头如11110000这样后面就可以接数据了

A我在外面买了一个万能遥控器,他就是用pic16c57c作的,那就说明它是没有中断的,我真搞不懂他是怎么做的,它是没有解码芯片的,请问有谁知道,我现在也在做这个,有谁能提示一下,谢谢。

B这很容易
上次我用两片PIC16C57C作了一个发射与一个接收的小模块。有效控制,没能出现乱码,但有一缺点就是会受到其它红外线产品的干扰!!

C红外接受
用外中断,加定时,即可检测出编码,非常准确。我用的是PIC16F72芯片。


D我使用红外线接受管加两级放大,看红外线的输出波形,用长虹的遥控器当信号源,在示波器上要打到10ms才能看到完整的信号波形,像个稳压后的波形一样的东西,我看了有关方面的书说,红外线信号时调制在38kHz的信号上的,那我将示波器打到50ns上为什么看不到波形,这样的话程序不是没有办法编了,望哪位高人帮帮我,谢谢


E可以用CCP中的inputcapture(输入捕捉)功能,很好用的,仔细阅读一下inputcapture有关内容,很容易的
在CCP的引脚上若有事件发生(可设置为上升沿,下降沿或其他方式),TMR1的内容背记录,这样很准确的,即使中断响应较慢也没问题的,这样的功能来做红外遥控最恰当不过!!

F回复红外定时接收原理
用RB0做中断(FIRST:RISINGTRIG,SECOND:FALLINGTRIG),同时启动TIMER2定时100US)计数.当下一个中断来临时,由TIMER2有88个数,9MS就检测出来。其余时间,
类推。注意,RBO的中断沿,要根据时序,来改变。据此原理,很容易编出代码。
还有一个地方值得注意;红外信号的衰减很厉害的,所以一定要考虑它的接受范围的选择
其实用那种方法都可以,在接收数据时时间方面留够余量,这样对正确接收数据有好处


型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67