首页 > 编程知识 正文

51单片机红外遥控模块,基于51单片机的红外计数器

时间:2023-05-06 05:54:57 阅读:112322 作者:3679

红外线波长0.76~1.5um

为了发送信号,多将二值数据信号调制成脉冲信号并经由红外线发光管发送。 常用的是脉冲宽度调制(PWM )和脉冲位置调制(PPM )。

选择合适的红外接收设备,知道红外遥控器的编码方式和载频。 选择一体化红外线接收头和指定次数编码方式。

传输的数据格式:

数据格式包括引导代码、用户代码、数据代码和数据反转代码,共32位。 区分各位的0和1时,利用脉冲的时间间隔进行区分。 也就是说,是PPM。

以下是ATM89C52上的执行代码。

除了红外线模块,还调用了数字代码模块。

这里使用的是74HC138解码器和74HC245总线收发器。

# include ' reg 52.h ' typedefunsignedintuint; typedef unsigned char uchar; sbit LSA=P2^2; //数码管栅极端子sbit LSB=P2^3; //数码管栅极端子sbit LSC=P2^4; //数码管栅极端子sbit IRIN=P3^2; //红外数据发送方uchar IrValue[6]; 用户时间; uchar显示数据[8]; uchar code smgduan[17]={0x3f,0x 06,0x5b,0x4f,0x 66,0x6d,0x 07 f,0x7f,0x 77,0x 39,0x5e,0x7d/}void DigDisplay () {uchar i; for(I=0; i3; I )交换机(I )情况(0) :LSA=0; LSB=0; LSC=0; 布雷克; case(1) :LSA=1; LSB=0; LSC=0; 布雷克; case(2) :LSA=0; LSB=1; LSC=0; 布雷克; (}P0=DisplayData[2-i]; 延迟(100; P0=0x00; }}void IrInit () {IT0=1; //下降沿触发EX0=1; //打开中断0时允许EA=1; //打开总中断IRIN=1初始化端口(}void ReadIr ) )中断0 ) ucharj,k; uint err; 时间=0; dlay(700; if(irin==0) {err=1000; 等待//10mswhile () irin==0) ) err0 ) ) Delay(1); ERR----; (if ) irin==1) {err=500; 等待//5mswhile () irin==1) ) err0 ) ) Delay(1); ERR----; (for ) k=0; k4; k ) for(j=0; j8; j () {err=60; wile () Irin==0) ) err0 ) ) Delay ) 1; ERR----; (}err=500; wile((Irin==1) ) err0 ) ) Delay ) 10; //100为1msTime; ERR----; if(time30 ) {return; }}IrValue[k]=1; if(time=8) {IrValue[k]|=0x80; }Time=0; }}if(IRvalue[2]!=~IRvalue[3]}{return; }}}void main () ) {IrInit ); while(1)显示数据(0)=SMG Duan (IR value )2)/16 ); 显示数据[1]=SMG Duan [ IR value [2]; 显示数据[2]=SMG Duan [ 16 ]; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。