导航:首页 > 操作系统 > 单片机红外教程

单片机红外教程

发布时间:2022-08-08 01:16:32

单片机的红外发射模块怎么用

这个就是一个典型的红外传数据的问题。你要用红外传数据,一般单片机控制红外接收管,发射管用专用的芯片来控制红外发射。比如遥控板等之类。接收判断 0,1, 就是一个时序的问题,更具脉冲持续的时间来判断。你可以先用单片机读遥控板的按键值来实践。思维有点类是单总线,但不是单总线。

Ⅱ 单片机如何实现红外遥控

以下文件是51单片机实现遥控解码,通过数码管显示键码的程序,P0口驱动数码管段选,p2.6和p2.7为数码管位选,接收头连到P3.2口。此程序以通过验证,可以直接编译使用,另外还有一个继电器和蜂鸣器的控制,不用可以屏蔽掉。

;********************************************************************************
;* 描述: *
;* 遥控键值读取器 *
;* 数码管显示, P0口为数码管的数据口 *
;* *
;********************************************************************************
;遥控键值解码-数码管显示 *
;********************************************************************************/

#include <reg51.h>
#include <intrins.h>

void IR_SHOW();
void delay(unsigned char x);//x*0.14MS
void delay1(unsigned char ms);
void beep();

sbit IRIN = P3^2;
sbit BEEP = P3^7;
sbit RELAY= P1^3;
sbit GEWEI= P2^7;
sbit SHIWEI= P2^6;

unsigned char IRCOM[8];
unsigned char code table[16] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
main()
{
IE = 0x81; //允许总中断中断,使能 INT0 外部中断
TCON = 0x1; //触发方式为脉冲负边沿触发
delay(1);

IRIN=1;
BEEP=1;
RELAY=1;
for(;;)
{
IR_SHOW();
}

} //end main

void IR_IN() interrupt 0 using 0
{
unsigned char i,j,k,N=0;
EA = 0;
I1:
for (i=0;i<4;i++)
{
if (IRIN==0) break;
if (i==3) {EA =1;return;}
}
delay(20);
if (IRIN==1) goto I1; //确认IR信号出现
while (!IRIN) //等 IR 变为高电平
{delay(1);}

for (j=0;j<4;j++)
{
for (k=0;k<8;k++)
{
while (IRIN) //等 IR 变为低电平
{delay(1);}
while (!IRIN) //等 IR 变为高电平
{delay(1);}
while (IRIN) //计算IR高电平时长
{
delay(1);
N++;
if (N>=30) {EA=1;return;}
}
IRCOM[j]=IRCOM[j] >> 1;
if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;}
N=0;
}//end for k
}//end for j

if (IRCOM[2]!=~IRCOM[3]) {EA=1;return;}
IRCOM[5]=IRCOM[2] & 0x0F;
IRCOM[6]=IRCOM[2] & 0xF0;
IRCOM[6]=IRCOM[6] >> 4;
beep();
EA = 1;

}

void IR_SHOW()
{
P0 = table[IRCOM[5]];
GEWEI = 0;
SHIWEI = 1;
delay1(4);
P0 = table[IRCOM[6]];
SHIWEI = 0;
GEWEI = 1;
delay1(4);
}

void beep()
{
unsigned char i;
for (i=0;i<100;i++)
{
delay(5);
BEEP=!BEEP;
}
BEEP=1;
}

void delay(unsigned char x)//x*0.14MS
{
unsigned char i;
while(x--)
{
for (i = 0; i<13; i++) {}
}
}

void delay1(unsigned char ms)
{
unsigned char i;
while(ms--)
{
for(i = 0; i<120; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

Ⅲ 红外发射模块怎么用51单片机编程使用

红外发射模块用51单片机编程使用:用定时器中断来做,红外发送引脚连接到P1.0口, 计数一下定时初值(让P1.0的翻转频率为38KHZ),进定时器中断就对P1.0取反,这样红外就发送出去了。
红外线发射管(IR LED)也称红外线发射二极管,属于二极管类。它是可以将电能直接转换成近红外光(不可见光)并能辐射出去的发光器件。
红外线发射管(IR LED)也称红外线发射二极管,属于二极管类。它是可以将电能直接转换成近红外光(不可见光)并能辐射出去的发光器件,主要应用于各种光电开关、触摸屏及遥控发射电路中。红外线发射管的结构、原理与普通发光二极管相近,只是使用的半导体材料不同。红外发光二极管通常使用砷化镓(GaAs)、砷铝化镓(GaAlAs)等材料,采用全透明或浅蓝色、黑色的树脂封装。

Ⅳ 51单片机红外避障小车教程

time=th1*256+tl1;
这是用定时器t1做计数,time=th1*256+tl1;
这是根据定时器/计数器t1的计数值计算时间,th1是计数器的高8位,计数结果当然要乘256倍了,再加上低8位的值tl1。
th1=0;
tl1=0;
是计算完了,重新写0,准备下一次计数。

Ⅳ 51单片机怎么接受红外线 C语言

单片机本身不能接收,只是控制器,要另加电路才能接受。

Ⅵ 求单片机C51红外线收发方案(最好有详细解释)

红外线遥控器解码程序
2007-02-07 18:52 红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。现在工业设备中,也已经广泛在使用。。。。。

1 红外遥控系统
通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
2 遥控发射器及其编码
遥控发射器专用芯片很多,根据编码格式可以分成脉冲宽度调制和脉冲相位调制两大类,这里我们以运用比较广泛,解码比较容易的脉冲宽度调制来加以说明,现以3310组成发射电路为例说明编码原理。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”
上述“0”和“1”组成的42位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,
3310产生的遥控编码是连续的42位二进制码组,其中前26位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码用于核对数据是否接收准确。
当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。
解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右即可。
根据红外编码的格式,程序应该等待9ms的起始码和4.5ms的结果码完成后才能读码。

接收器及解码
LT0038是塑封一体化红外线接收器,它是一种集红外线接收、放大、整形于一体的集成电路,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,没有红外遥控信号时为高电平,收到红外信号时为低电平,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。

下面是一个对51ISP编程实验开发板配套的红外线遥控器的解码程序,它可以把红外遥控器每一个按键的键值读出来,并且通过实验板上P1口的8个LED显示出来,在解码成功的同时并且能发出“嘀嘀嘀”的提示音。
ORG 0000H
AJMP MAIN;转入主程序
ORG 0003H ;外部中断P3.2脚INT0入口地址
AJMP INT ;转入外部中断服务子程序(解码程序)
;以下为主程序进行CPU中断方式设置
MAIN:SETB EA ;打开CPU总中断请求
SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发
SETB EX0 ;打开INT0中断请求
;以下对单片机的所有引脚进行初始化,全部设置成高电平
MOV P2,#11111111B
AJMP $
;以下为进入P3.2脚外部中断子程序,也就是解码程序
INT: CLR EA ;暂时关闭CPU的所有中断请求
MOV R6,#10
SB: ACALL YS1;调用882微秒延时子程序
JB P3.2,EXIT;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序
DJNZ R6, SB;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序
;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
JNB P3.2, $ ;等待高电平避开9毫秒低电平引导脉冲
ACALL YS2 ;延时4.74毫秒避开4.5毫秒的结果码
MOV R7,#26;忽略前26位系统识别码
JJJJA:JNB P3.2,$;等待地址码第一位的高电平信号
LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
JNC UUUA;如果为0就跳转到UUUA
LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
UUUA: DJNZ R7,JJJJA
MOV R1,#1AH ;设定1AH为起始RAM区
MOV R2,#2;接收从1AH到1BH的2个内存,用于存放操作码和操作反码
PP: MOV R3,#8;每组数据为8位
JJJJ: JNB P3.2,$;等待地址码第一位的高电平信号
LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
JNC UUU;如果为0就跳转到UUU
LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
UUU: MOV A,@R1;将R1中地址的给A
RRC A;将C中的值0或1移入A中的最低位
MOV @R1,A;将A中的数暂时存放在R1数值的内存中
DJNZ R3,JJJJ;接收满8位换一个内存
INC R1;对R1中的值加1,换下一个RAM
DJNZ R2,PP ;接收完8位数据码和8位数据反码,存放在1AH/1BH中
MOV A,1AH
CPL A;对1AH取反后和1BH比较
CJNE A,1BH,EXIT;如果不等表示接收数据发生错误,放弃
MOV P1,1AH;将按键的键值通过P1口的8个LED显示出来!
CLR P2.0;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
LCALL YS2
LCALL YS2
LCALL YS2
SETB P2.0;蜂鸣器停止(使用时可以将J2的YINYUE脚用跳线接J4 的XS1脚才可以使用蜂鸣器)可以看原理图
EXIT: SETB EA ;允许中断
RETI ;退出解码子程序
YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10 ;延时子程序2,精确延时4740微秒
D2: MOV R5,#235
DJNZ R5,$
DJNZ R4,D2
RET
YS3: MOV R4,#2;延时程序3,精确延时1000微秒
D3:MOV R5,#248
DJNZ R5,$
DJNZ R4,D3
RET
END
以上程序紧供参考。

0A 01
11 12 13 14
15 16 17 18
19 10 1A 1B
0E 02 03 1C
06 04 05 0C
0D 08 09 1D
00 1F 1E 0B
07 0F
这是按照红外遥控器按键的实际位置给出的32个按键的键值(16进制)

Ⅶ 红外在单片机上怎么用

红外可以做单片机上做收发。你可以完全做个类似电视遥控器的系统。
红外的发射你可以通过三极管和红外发射管做一个简单发射电路。
红外的接收,你买个红外一体化接收头。这2样设备你看我的文库。里面有我详细的器件采购清单,里面有这2个东西。淘宝可以买到的。
红外的程序编写你需要详细掌握红外的协议,一般用nec公司的资料。
你学会了他们的收发时序,然后通过单片机编程,就可以实现红外的收发系统。
希望对你有用!!

Ⅷ 红外传感器和单片机之间怎么连接

红外传感器和单片机之间的连接方法:

红外传感器绝大部分都是通过测引脚电压换算成距离。所以一般红外都有三根引脚,VCC和GND肯定会接噻,然后信号线接到你开启单片机的ADC通道对应的引脚,读该引脚的电平换算成距离。

红外传感器如果是数据信号,有几个脚,就用单片机几个脚连接,然后根据输出信号的时序写程序读。如果是模拟信号,就得用到A/D转换电路。

(8)单片机红外教程扩展阅读:

红外传感器的相关要求规定:

1、红外线传感器利用远红外线范围的感度做为人体检出用,红外线的波长比可见光长而比电波短。红外线只由热的物体放射出来,凡是存在于自然界的物体,如人类、火、冰等等全部都会射出红外线,只是其波长因其物体的温度而有差异而已。

2、利用红外辐射的热效应,探测器的敏感元件吸收辐射能后引起温度升高,进而使某些有关物理参数发生变化,通过测量物理参数的变化来确定探测器所吸收的红外辐射。

3、红外传感器已经在现代化的生产实践中发挥着它的巨大作用,随着探测设备和其他部分的技术的提高,红外传感器能够拥有更多的性能和更好的灵敏度。

Ⅸ 怎么用51单片机做出红外测体温

做红外测吃的体温计我觉得是非常好的,那么这样你做出的这个红外线的这个体温测试仪我认为是非常准确的,希望你努力完成任务。

Ⅹ 51单片机怎么用红外线

--你是指红外遥控解码吧,给你一点提示,在单片机定义一个I/O口为红外遥控的输入端口,(红外遥控解码不一定要用到定时器和中断方式.具体方法有很多的,看场合选取)当然输入这个端口的信号是经过遥控接收电路处理过的一串数据,如TTL或者CMOS电平。再然后就是对这个输入信号进行处理,也就是解调出遥控码值出来,要解这个码,首先又要知道其波形如何,即是逻辑电平和时序等问题...

建议你还是先熟知一下各种IR的遥控协议,有挺多的,典型的有NEC,飞利浦等。说说NEC的也有两种,简单的一种就是有32位数据,前16bit为地址码,后16bit为遥控码值的正码与反码,地址码用于区分相同协议下不同的遥控所带来的干扰等,正码和反码用于解调后进行校验数据。不多说了,主要是找点相关资料研究研究就明白了。图片是一个32bitNEC的遥控波形,这个波形的地址码是807F,正码是0x12,如果看懂了,用MCU解遥控码就很容易了..

阅读全文

与单片机红外教程相关的资料

热点内容
android线程池框架 浏览:476
手机自带解压能解压哪些文件 浏览:800
linux安装hba驱动 浏览:111
java构造函数new 浏览:666
怎么查家里电器耗电量app 浏览:506
原神一直显示重新连接服务器怎么办 浏览:826
一般用途轴流式压缩机 浏览:926
没学历的怎么学编程 浏览:901
华为的隐藏相册无法加密 浏览:782
联通套餐app怎么设置 浏览:752
关于删除链表的算法描述 浏览:894
标准盘和压缩盘的区别 浏览:46
银行存款验证码JAVA编程 浏览:111
word转pdf软件免费版 浏览:139
公主连结安卓台服怎么下载 浏览:550
注册江苏银行app怎么注册 浏览:800
中兴怎么下载app视频 浏览:679
服务器审计是什么 浏览:518
华为删除的app怎么彻底卸载 浏览:574
编程时调试快捷键 浏览:6