最新基于51单片机控制红外通信.pdf
基于51单片机的红外遥控程序(新)
P1=table[shuma];
/* delay_ms(3);
P2=0xb8;
P1=table[bai];
delay_ms(3);
P2=0xd8;
P1=table[shi];
delay_ms(3);
P2=0xe8;
P1=table[ge];
}
///////////////////////////////////////////////////////////////////////
void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数
{
static unsigned char i;
//使用12M晶振 适用于TC9012芯片,其他芯片请自行更改解码时序
#include <REGX52.h>
#include<stdio.h>
#include<intrins.h>
////////////////////////////////////////////////
#define TURE 1
break;//2
case 2:
display(3);
fengming();
SBUF=3;
TI=0;
delay_ms(10);
break;//3
case 3:
display(4);
}
IRcord[i]=value;
value=0;
}
irpro_ok=1;//处理完毕标志位置1
}
/******************************************************************/
基于51多功能红外遥控器设计
界首例将设计流程、集成化 PCB 设计、可编程器件(如 FPGA)设计和基于处理器设计的嵌入式软件开 发功能整合在一起的产品,一种同时进行PCB和FPGA设计以及嵌入式设计的解决方案,具有将设计方案 从概念转变为最终成品所需的全部功能。
Altium Designer 6具有以下几个特点: 在PCB部分,实现了自动引脚优化和非凡的布线效果,提供了对高密度封装(如 BGA)的交互布 线功能, 总线布线功能,器件精确移动,快速铺铜等功能; 在原理图部分,新增加“灵巧粘帖”可以将一些不同的对象拷贝到原理图当中; 在嵌入式设计部分,增强了JTAG器件的实时显示功能,增强型基于FPGA的逻辑分析仪,可以支持 32位或64位的信号输入。
图为STC89C54RD+芯片 及其电路,该芯片与 STC89C51引脚基本相同, 但速度更快,存储空间更大。 本设计采用的是40DIP封装 的双列直插式芯片。
p 电源模块
电源模块包括电源接 口,自锁式电源开关 及红色发光二极管作 为电源指示灯,其中, 电源接口采用了5V圆 孔式接口,与原理图略 有不同
p NEC协议
一直按住按键,一串信息只能发送一次,而后发送的是以110ms 为周期的重复码,如有图所示,重复码是由9ms的AGC高电平和 4.5ms的低电平及一个560us的高电平组成。如左图所示。
红外学习
使用说明
下载程序
红外解码
红外发射
控制外部设备
LOGO
p PCB板开发流程
第一步
第二步
第三步
第四步
NEC协议
基于51单片机的红外遥控设计-毕业设计论文
基于51单片机的红外遥控设计摘要很多电器都采用红外遥控,那么红外遥控的工作原理是什么呢?本文将介绍其原理和设计方法。
红外线遥控就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。
常用的红外遥控系统一般分发射和接收两个部分。
红外遥控常用的载波频率为38kHz,这是由发射端所使用的455kHz晶振来决定的,在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。
也有一些遥控系统采用36kHz、40kHz、56kHz等,一般由发射端晶振的振荡频率来决定。
接收端的输出状态大致可分为脉冲、电平、自锁、互锁、数据五种形式。
“脉冲”输出是当按发射端按键时,接收端对应输出端输出一个“有效脉冲”,宽度一般在100ms左右。
一般情况下,接收端除了几位数据输出外,还应有一位“数据有效”输出端,以便后级适时地来取数据。
这种输出形式一般用于与单片机或微机接口。
除以上输出形式外,还有“锁存”和“暂存”两种形式。
所谓“锁存”输出是指对发射端每次发的信号,接收端对应输出予以“储存”,直至收到新的信号为止;“暂存”输出与上述介绍的“电平”输出类似。
关键词:80c51单片机、红外发光二极管、晶振目录第一章1、引言 (3)2、设计要求与指标 (3)3、红外遥感发射系统设计 (4)4、红外发射电路设计 (4)5、调试结果及分析 (9)6、结论 (10)第二章1、引言 (10)2、设计要求与指标 (11)3、红外遥控系统设计 (11)4、系统功能实现方法 (15)5、红外接收电路 (16)6、软件设计 (17)7、调试结果及分析 (18)8、结论 (19)参考文献附录绪论人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。
其中红光的波长范围为0.62~0.76μm;紫光的波长范围为0.38~0.46μm。
比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。
基于51单片机的红外报警器(初稿)
目录一、系统设计任务与要求 (1)二、基础知识介绍 (2)2.1 热释电红外传感器简单介绍 (2)2.2 PIR的原理特性 (2)2.3 AT89C51单片机简单概述 (3)2.3.1 AT89C51单片机的结构 (3)2.3.2 AT89C51管脚说明 (4)3 方案设计 (6)3.1 总体设计思路 (6)3.2 具体电路模块设计 (7)3.2.1 热释电红外传感器原理 (7)3.2.2 放大电路的设计 (8)3.2.3 时钟电路的设计 (8)3.2.4 复位电路的设计 (9)3.2.5 发光二极管报警电路的设计 (9)3.2.6 声音报警电路的设计 (10)4 软件的程序流程图及程序 (11)5 总结 (15)参考文献 (15)附件总原理图 (16)红外报警系统的设计与制作内容摘要:本系统采用了热释电红外传感器,它的制作简单、成本低、安装比较方便,而且防盗性能比较稳定,抗干扰能力强、灵敏度高、安全可靠。
这种防盗器安装隐蔽,不易被盗贼发现,同时它的信号经过单片机系统处理后方便和PC机通信,便于多用户统一管理。
本设计包括硬件和软件设计两个部分。
硬件部分包括单片机控制电路、红外探头电路、驱动执行报警电路、LED控制电路等部分组成。
处理器采用51系列单片机AT89C51,整个系统是在系统软件控制下工作的。
关键词:单片机;红外传感器;数据采集;报警电路1系统设计任务与要求(1)、该设计包括硬件和软件设计两个部分。
模块划分为数据采集、键盘控制、报警等模块子函数。
(2)、本红外线防盗报警系统由热释电红外传感器、报警器、单片机控制电路、LED控制电路及相关的控制管理软件组成。
用户终端完成信息采集、处理、数据传送、功能设定、本地报警等功能。
终端由中央处理器、输入模块、输出模块、通信模块、功能设定模块等部分组成。
(3)、系统可实现功能。
当人员外出时,可把报警系统设置在外出布防状态,探测器工作起来,当有人闯入时,热释电红外传感器将探测到动作,设置在监测点上的红外探头将人体辐射的红外光谱变换成电信号,经放大电路、比较电路送至门限开关,打开门限阀门送出TTL 电平至AT89C51单片机,经单片机处理运算后驱动执行报警电路使警号发声。
基于51单片机的 红外遥控电机正反转程序 要求:P3.2接红外接收头 控制两个电机正反
cord=irdata[k];
// if(cord>7)//大于某值为1, 1.792mS
if(cord>6)//大于某值为1,11.0592M
Hale Waihona Puke { value=value|0x80;
unsigned char irtime;//红外用全局变量
bit irpro_ok,irok;
unsigned char IRcord[4]; //一次发射有4个编码值,还是5个 应该是4个,但编号为0-3
unsigned char irdata[33];//一次发射其有33 位
//////////////////////////////////////////////
数据码以及他们的反码的先导。同步位(SY)是标志最后一位编码是“0”或“1”的标识位,它只有0.56ms的有载波信号构成。*/
#include<reg52.h>
#include<stdio.h>
#include<intrins.h>
////////////////////////////////////////////////
}
///////////////////////////////////////////////////////////////////
void EX0init(void)
{
IT0 = 1; // Configure interrupt 0 for falling edge(下降沿) on /INT0 (P3.2)
void TIM0init(void)//定时器0初始化
{
TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值,约256US
基于51单片机的红外遥控课程设计
目录第一章设计简介 (2)第二章系统方案 (2)一、设计方案对比 (2)二、方案设计 (4)第三章硬件设计 (4)一、红外遥控器 (4)二、红外接收模块部分 (6)第四章软件设计 (7)一、红外遥控器软件设计 (7)二、红外接收模块软件设计 (10)三、程序代码 (10)第五章测试及分析 (10)第六章结论 (10)第七章参考文献 (11)附录一(程序代码): (12)第一章设计简介本设计分为红外遥控器与红外接收模块两部分。
红外遥控器包括矩阵键盘、增强型51单片机(STC11L04E)、红外发射电路组成。
单片机扫描矩阵键盘后,将按键状态进行信源编码与信道编码,载波(38k脉冲)后由红外发射器发射。
红外接收模块部分由传统51单片机、数码管、一体化红外接收头组成。
一体化红外接收头将信号进行限幅放大、带通滤波、解调、积分、整形后输出解调信号至单片机,并由单片机输出解调信号。
第二章系统方案一、设计方案对比红外遥控器部分2.1.1 主控芯片方案一:HT6222方案二:STC11L04E分析:传统红外遥控器芯片HT6222具有性价比高、功能强大、稳定可靠、使用简单等特点,但该芯片难以零购。
STC11L04E为增强型51单片机,控制灵活(载波频率可调、通信协议可变更、用户码可变换)、价格较HT6222稍贵。
STC11L04E最大的特别是低功耗,功作电压低3.3V,易于应用于移动设备。
结论:由于STC11L04E单片机的灵活性以及学习性(可增强我们对一个完整通信系统的理解)。
因此我们采用方案二。
2.1.2 矩阵键盘方案一:3*6*2.5 贴片轻触开关方案二:6*6*6 直插轻触开关分析:3*6*2.5贴片轻触开关虽然体积小巧、美观,但与6*6*6直插轻触开关对比,在制板布线上较繁锁。
结论:综上,我们采用6*6*6直插轻触开关,使得整体布线简单,可布单面版,简化制板流程。
2.1.3电源模块方案一:钮扣电池CR2032方案二:可充电锂电池18650分析:可充电锂电池18650容量大,节能环保(可多次利用),但体积大。
基于51单片机的红外遥控开关设计
2)数据存储器(RAM):片内为128B,片外最多可以外扩64KB。片内的128B的RAM以告诉RAM形式集成在单片机内。可以加快但单片机的运行速度,而且这种结果的RAM可以降低功耗。
2.方式1:当M1、M0为01是,定时器/计数器工作于方式1,这时定时器/计数器的等效电路如下图3-3
图3-3定时器/计数器方式1逻辑结构图
3方式2:
方式0和方式1的最大特点是计数溢出后,计数器为全0.因此在循环定时或循环计数用时就存在反复装入计数初值的问题。这不仅影响定时精数,而且也给程序设计带来麻烦。方式2就是针对此问题而设置的。当M1、M2为10时,定时器/计数器处于工作方式2,这时定时器/计数器得等效框图如图3-4所示。这种工作方式可以省去用户软件中得重装初值的程序,简化定时初值的计算方法,可以相当精确的确定定时时间。
3)程序存储器(ROM/EPROM):用来存储程序,8031没有此部件,8051为4KB的ROM;8751为4KB的EPROM。片外最多可以扩至64KB。
4)4个8位并行I/O口(P0、P1、P2、P3)
5)1个串行口:1个全双工的串行口,具有4种工作方式。可以用来进行串行通信,扩展并行I/O口,甚至与多个单片机相连接构成多机系统,从而使单片机的功能更加强且应用更广。
系统组成如图2-2所示【5】。系统由发射部分和接收部分组成。发射部分采用脉冲个数编码,将待发射信号调制成38KHz的载波信号,由红外发射管进行发射。接收部分由红外接收管进行解码接收,单片机通过对所接收信号的分析,输出相应的控制信号,由发光二极管和数码管指示出发射部分按下的按键号。
基于51单片机的红外线控制系统 2
单片机原理结课项目项目题目基于51单片机的红外线控制系统基于51单片机的红外线控制系统一、概述:红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机系统中。
由于红外线遥控不具有像无线电遥控那样穿过障碍物去控制被控对象的能力,所以在设计红外线遥控器时,不必要像无线电遥控器那样,每套( 发射器和接收器) 要有不同的遥控频率或编码( 否则,就会隔墙控制或干扰邻居的家用电器) ,所以同类产品的红外线遥控器,可以有相同的遥控频率或编码,而不会出现遥控信号“串门”的情况。
这对于大批量生产以及在家用电器上普及红外线遥控提供了极大的方面。
由于红外线为不可见光,因此对环境影响很小,再由红外光波动波长远小于无线电波的波长,所以红外线遥控不会影响其他家用电器,也不会影响临近的无线电设备。
基于51单片机的红外线控制系统。
要求通过单片机发送和接红外信号程序,根据接收的信号,执行有关动作的系统,能够实现近距离的无线通。
二、硬件设计1. 系统框图2. 电路原理图电路由五个模块构成(最小系统模块、红外接收模块、数码管显示模块、编程下载模块、电源模块)1) 最小系统STC12C5410AD 单片机红外接收头红外遥控器复位电路时钟振荡电路数码光显示最小系统由stc12c5410ad单片机,按键复位电路,时钟振荡电路构成。
a.电源电源采用5V直流电供电。
b.时钟、复位电路本电路选用12MHz晶振。
2)红外接收模块3)显示模块三、软件设计1.红外编解码原理红外线发射编码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制‘0’;以脉宽为0.565ms、间隔1.658ms、周期为2.25ms的组合表示二进制‘1’;红外接收头接收的信号和发射编码相反;一组编码由一个引导码,四个字节数据组成;引导码由9ms的高电位和4.5ms的地电位组成。
基于51单片机控制红外通信
精心整理红外通信原理红外遥控有发送和接收两个组成部分。
发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。
红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲。
为了减少干扰,采用的是价格便宜性能可靠的一体化红外接收头(HS0038,它接收红外信号频率为38kHz,(2)PPM编码这种遥控编码具有以下特征:遥控编码脉冲由前导码、16位地址码(8位地址码、8位地址码的反码)和16位操作码(8位操作码、8位操作码的反码)组成。
前导码:是一个遥控码的起始部分,由一个9ms的高电平(起始码)和一个4.5ms的低电平(结果码)组成,作为接受数据的准备脉冲。
16位地址码:能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。
16位操作码:用来执行不同的操作。
采用脉宽调制的串行码,以脉宽为0.56ms、间隔0.56ms、周期为1.12ms的组合表示二进制的“0”;以脉宽为1.68ms、间隔0.56ms、周期为2.24ms的组合表示二进制的“1”。
???{???}?}}一串完整的编码如下图所示前导码地址码地址反码操作码操作反码2.红外接收部分:红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲。
为形得到HS0038#defineuintunsignedintucharram[4]={0,0,0,0};//存放接受到的4个数据地址码16位+按键码8位+按键码取反的8位voiddelaytime(uinttime)//延迟90uS{uchara,b;for(a=time;a>0;a--){for(b=40;b>0;b--);}}voidrem()interrupt0//中断函数{ucharramc=0;//定义接收了4个字节的变量ucharcount=0;//定义现在接收第几位变量{电平return;//}32位中//第一位数据的0.56MS开始脉冲for(ramc=0;ramc<4;ramc++)//循环4次接收4个字节{for(count=0;count<8;count++)//循环8次接收8位(一个字节){while(prem!=1);//开始判断现在接收到的数据是0或者1,首先在这行本句话时,//保已经进入数据的0.56MS低电平阶段//等待本次接受数据的高电平的到来。
基于51单片机的红外通信设计报告
基于51单片机的红外通信设计报告研究方案:基于51单片机的红外通信设计报告摘要:本研究旨在通过对基于51单片机的红外通信的研究与实践,对红外通信协议进行优化和改进,提高通信的可靠性和稳定性。
通过设计红外发射器和接收器,并利用51单片机进行编程控制,实现了红外信号的发送与接收。
在实验中,采集了一系列数据,通过对这些数据的整理和分析,发现了现有研究成果的不足之处,并提出了一种新的观点和方法,为解决实际问题提供了有价值的参考。
1. 引言红外通信是一种常见的无线通信方式,具有传输速度快、安全可靠等优点,在家庭电器控制、遥控玩具、无线数据传输等领域广泛应用。
本研究基于51单片机进行红外通信协议的设计与实践,旨在优化和改进红外通信的性能。
2. 研究设计2.1 硬件设计2.1.1 红外发射器设计通过使用红外发光二极管作为发射器,并连接到51单片机的IO口,控制IO口的高低电平来实现对发射器的开关控制。
2.1.2 红外接收器设计通过使用红外接收头作为接收器,并将其连接到51单片机的IO口,通过检测接收器的信号电平变化来判断接收到的红外信号。
2.2 软件设计2.2.1 红外信号解析与发送在51单片机上编写红外信号解析与发送的程序,通过对输入信号的解析,将需要发送的红外信号编码成特定协议的数据帧,再通过IO口的控制将数据帧发送出去。
2.2.2 红外信号接收与解析在51单片机上编写红外信号接收与解析的程序,通过IO口的状态变化检测,获取红外接收器接收到的信号,并对接收到的信号进行解析,还原成原始数据。
3. 实验与调查情况在本研究中,我们通过实验和调查采集了一系列的数据来评估所设计的红外通信系统的性能。
3.1 实验设置我们设置了一个包含发射器和接收器的实验平台。
通过按下遥控器上的按键,触发发射器发送特定红外信号,在接收器上探测到红外信号,并通过51单片机进行信号解析。
3.2 数据采集与分析通过对实验中采集到的数据进行整理和分析,我们可以得到以下结论:(1)在传输距离较近的情况下,信号的可靠性和稳定性良好。
基于51单片机的步进电机红外控制系统的设计
文章标题:基于51单片机的步进电机红外控制系统的设计引言在现代科技发展迅速的时代,控制系统已经被广泛应用于各个领域。
其中,基于51单片机的步进电机红外控制系统的设计,不仅在工业领域有着重要的作用,同时也在家电领域、智能家居等方面得到了广泛的应用。
本文将从步进电机控制系统的设计原理、红外控制的基本概念以及基于51单片机的系统设计方案等方面展开深入探讨。
一、步进电机控制系统的设计原理步进电机是一种将电脉冲信号转换为机械位移的执行元件,其控制系统设计原理是核心。
以步进电机为执行元件的控制系统通常包括电脉冲发生电路、电流驱动电路、位置控制逻辑电路以及接口电路等模块。
在系统设计中,需要考虑步进电机的类型、工作方式、转动角度以及控制精度等因素,以选择合适的控制方案和相关元器件。
针对步进电机的控制系统设计,首先需要从硬件电路和软件控制两个方面进行综合考虑。
硬件方面需要设计合适的脉冲发生电路和驱动电路,并根据具体场景考虑相关的接口电路,以实现步进电机的控制和驱动。
而软件控制方面,则需要编写相应的控制程序,使得系统能够根据具体的控制要求进行精准的控制和调节。
二、红外控制的基本概念红外控制是一种常见的无线遥控技术,通过使用红外线传输信号来实现对设备的控制。
通常包括红外发射器和红外接收器两个部分,发射器将控制信号转换成红外信号发送出去,接收器接收红外信号并将其转换成电信号进行处理。
在实际应用中,红外控制技术已经被广泛应用于各种家电遥控器、智能家居系统以及工业自动化领域。
红外控制的基本原理是在发射器和接收器之间通过红外线进行双向通信,通过调制解调的方式进行信号的传输和解析。
设计基于红外控制的步进电机系统需要考虑红外信号的发射和接收过程,以及相关的解析算法和信号处理。
信号的稳定性、抗干扰能力以及传输距离等也是需要考虑的重要因素。
三、基于51单片机的系统设计方案在步进电机红外控制系统的设计中,选择合适的控制芯片和处理器是至关重要的。
基于51单片机红外发射程序
基于51单片机红外发射程序#include "reg52.h"sbit ir=P2^0;//红外发射管控制脚,使用24M晶振sbit led = P2^1;sbit ka=P1^0;sbit kb=P1^1;sbit kc=P1^2;sbit kd=P1^3;unsigned int count, set_count; //中断计数,设定中断次数bit irflag,keyflag; //红外发送标志位,按键标志位unsigned char irsys[]={0x00,0xff};//16位用户码unsigned char irdata,ircode; //发送的红外数据//---------------------------------------------------------------------------void delay(unsigned int a)//延时约1ms,晶振24M ,此处延时不需很精确{unsigned char i;while(--a!=0)for(i=300;i>0;i--); //若是12M晶振i=125}//---------------------------------------------------------------------------void keyscan() // 按键扫描{if(ka==0){ delay(5);while(!ka);keyflag=1;irdata=0x0a;} //a键按下,则发射数据0x0aif(kb==0){ delay(5);while(!kb);keyflag=1;irdata=0x0b;} //a键按下,则发射数据0x0aif(kc==0){ delay(5);while(!kc);keyflag=1;irdata=0x0c;} //a键按下,则发射数据0x0aif(kd==0){ delay(5);while(!kd);keyflag=1;irdata=0x0d;} //a键按下,则发射数据0x0a}//---------------------------------------------------------------------------void ir_sendbyte() //红外发送一个字节数据{unsigned char i;for(i=0;i<8;i++) //发送8位数据{set_count=43;//35; //发送编码中的0.56ms高电平(//后为12M 晶振下的数值)irflag=1; //启动红外发射二极管发射count=0; //中断计数先清0TR0=1; //开启定时器0while(count<="">TR0=0; //关闭定时器0if(ircode&0x01) set_count=130;//130; //判断红外编码最低位,若为1则1.69ms的低电平(//后为12M晶振下的数值)else set_count=43;//35; //为0则0.565ms的低电平(//后为12M 晶振下的数值) irflag=0; //低电平则不发射count=0; //中断计数清0TR0=1; //开启定时器0while(count<="">TR0=0; //关闭定时器0ircode=ircode>>1; //将数据右移,即从低位到高位发送}}//---------------------------------------------------------------------------void ir_send() //发送红外数据{set_count=692;//672; //发送编码中的引导码(9ms高电平+4.5ms低电平) (//后为12M晶振下的数值) tc9012irflag=1; //启动红外发射二极管发射count=0; //中断计数清0TR0=1;while(count<set_count);< p="">TR0=0;set_count=346;//336; //发送编码中的4.5ms低电平(//后为12M晶振下的数值)irflag=0; //低电平则不发射count=0;TR0=1;while(count<="">TR0=0;ircode=irsys[0]; //发送16位用户码的前1-8位ir_sendbyte();ircode=irsys[1]; //发送16位用户码的前9-16位ir_sendbyte();ircode=irdata; //发送8位数据码ir_sendbyte();ircode=~irdata; //发送8位数据反码ir_sendbyte();set_count=43;//35; //发送编码中的0.56ms高电平(//后为12M 晶振下的数值)irflag=1;count=0;TR0=1;while(count<set_count);< p="">TR0=0;ir=1;delay(23); //延时23ms(编码中的23ms低电平)set_count=692;//670; //发送编码中的引导码(9ms高电平+4.5ms低电平) (//后为12M晶振下的数值)irflag=1;count=0;TR0=1;while(count<set_count);< p="">TR0=0;set_count=346;//336; //发送编码中的4.5ms低电平(//后为12M晶振下的数值)irflag=0;count=0;TR0=1;while(count<set_count);< p="">TR0=0;set_count=43;//35; //发送编码中的0.56ms高电平(//后为12M 晶振下的数值) irflag=1;count=0;TR0=1;while(count<set_count);< p="">TR0=0;ir=1; //发射完了关闭红外发射二极管}//---------------------------------------------------------------------------void timer0_init() //定时器初始化{EA=1;TMOD=0x02; //定时0 8位自动重装模式ET0=1;TH0=0xe6;//0xf3; //定时13us,38K红外矩形波,晶振24M (//后为12M晶振下的数值) TL0=0xe6;}//---------------------------------------------------------------------------void main(){timer0_init(); //定时0初始化count=0; //中断计数先清0irflag=0; //红外发射标志先置0while(1){keyscan(); //键值扫描if(keyflag) //若有按键按下{led = 0;delay(10);ir_send(); //发送红外编码delay(500);keyflag=0; //按键标志清零delay(100);}else{led = 1;}}}//---------------------------------------------------------------------------void timer0() interrupt 1 //定时器0中断{count++;if(irflag==1) ir=~ir; //有发射标志,则发射38khz的矩形波else ir=1; //否则不发射,即相当于发射编码中的低电平}</set_count);<></set_count);<></set_count);<></set_count);<></set_count);<>。
基于51单片机的红外遥控器设计
基于51单片机的红外遥控器设计近年来,随着智能家居的兴起,红外遥控器在我们的生活中扮演着越来越重要的角色。
本文将基于51单片机,设计一个简单的红外遥控器。
首先,我们需要了解红外遥控器的工作原理。
红外遥控器使用红外线来传输指令。
当用户按下遥控器上的按键时,红外发射器发射一个特定的红外信号。
接收器接收到这个信号后,将其转换成电信号,并将其发送到电子设备中,实现对设备的控制。
接下来,我们需要选择合适的红外发射器和接收器。
常见的红外发射器有红外LED,常见的红外接收器有红外接收头。
在选择红外发射器和接收器时,要根据其工作频率、传输距离、灵敏度等因素进行选择。
在本设计中,我们选择了工作频率为38kHz的红外发射器和接收器。
接下来,我们需要设计电路,并进行程序开发。
首先,我们需要连接红外发射器和接收器到51单片机上。
红外发射器的一个引脚连接到51单片机的I/O口,另一个引脚连接到正极电源,第三个引脚连接到电源的接地端。
红外接收器的输出引脚连接到51单片机的I/O口,电源和接地端分别连接到正负电源。
接下来,我们需要编写程序。
首先,我们需要设置51单片机的I/O 口为输入或输出。
然后,我们需要编写程序来发送红外信号。
我们可以使用PWM技术来模拟红外信号的脉冲。
当用户按下遥控器上的按键时,我们可以发送一个特定的脉冲序列,来控制电子设备。
同时,我们还需要编写程序来接收红外信号。
当红外接收器接收到红外信号时,会输出一个特定的电平信号。
我们可以使用外部中断来检测这个信号,并进行相应的处理。
在程序开发过程中,我们需要注意红外信号的协议。
常见的红外信号协议有NEC、SONY等。
我们需要根据所使用的红外接收器的协议来编写相应的程序。
最后,我们需要测试代码的功能和稳定性。
可以通过连接电子设备,按下遥控器上的按键,来测试红外信号的发送和接收功能。
如果一切正常,我们的红外遥控器设计就完成了。
总结起来,基于51单片机的红外遥控器设计是一个简单而有趣的项目。
基于51单片机的红外遥控水温控制系统的设计
【摘要】本设计基于AT89C51单片机为控制核心,片外配合红外线遥控模块、水温加热模块开关、基于Dallas单线数字式的DS18B20温度传感器模块、蜂鸣器报警模块、按键模块、LCD1602液晶显示器模块、晶振电路模块、复位电路模块以及电源模块为一体构成无线水温控制系统。
本水温控制系统设计采用自上而下的模块化设计,具有形象直观、操作简单、结构紧凑、温度控制灵活等优点。
本系统能够对水温进行实时并且快速地温度采集、温度值显示、超温报警以及加热等功能,并且能够通过红外线遥控器实现对温度值的设定。
经过大量实验测试,本次设计的系统通用性强、功能齐全、简单实用,值得在工控领域被大量推广,它能够将实现水加热系统的自动化,对企业及社会的发展具有重要意义。
【关键词】:AT89C51,DS18B20温度传感器,LCD1602液晶显示器ABSTRACTThe design is based on AT89C51 single chip microcomputer as control core, chip with infrared remote control module, the temperature of the water heating module switch, based on Dallas digital DS18B20 temperature sensor module, buzzer alarm module, a key module, LCD1602 liquid crystal display module, crystal oscillator circuit module, reset circuit module and power module are integrated to form a wireless temperature control system. The water temperature control system design uses the modular design from top to bottom, has the advantages of visual image, simple operation, compact structure, flexible temperature control. The system can real-time temperature and rapid temperature acquisition, temperature display, temperature alarm, heating and other functions, and can realize the setting temperature value through the infrared remote controller. After a lot of experiments testing, the design of the system has strong universality, complete function, simple and practical, it is worth to be popularized in the field of industrial control, it will be able to realize automatic water heating system, has important significance to the development of enterprises and society.【KEY WORD】:AT89C51,DS18B20,LCD1602目录一、引言 (1)(一)选题背景 (1)(二)设计意义 (1)(三)设计任务 (2)二、总体方案设计 (3)(一)方案的选择 (3)(二)方案简述 (3)三、元器件介绍 (5)(一)AT89C51单片机 (5)(二)DS18B20温度传感器 (7)(三)红外遥控系统介绍 (8)四、系统硬件设计 (11)(一)原理图描述 (11)(二)DS18B20温度传感器模块 (12)(三)加热器开关模块 (12)(四)蜂鸣器报警模块 (12)(五)LCD1602液晶显示器模块 (13)(六)按键模块 (13)五、系统软件设计 (15)(一)主程序设计 (15)(二)子程序设计 (15)总结 (18)致谢 (19)参考文献 (20)附录一系统原理图 (21)附录二PCB (22)附录三元器件清单 (23)附录四系统程序 (24)一、引言(一)选题背景对于温度的控制在工业活动中非常普遍,温度参数是一个最常用的被控参数,在化工、食品、燃料以及钢铁产业中都涉及到温控过程。
基于51单片机红外发射与接收C程序(word文档良心出品)
}
//khz(116);//3.028ms精确的时间
//khz(64);//2.006ms
//khz(40); //1.052ms
//delayms(125);//2.012ms这里是一些时间的介绍
//delayms(65);//1.054ms
//delayms(93);//1.5ms
void fashu(uchar num)
}
}
void main()
{
init();
//delayms(45);//0.642ms
//delayms(35);//0.502ms
//delayms(115);//1.623ms
//delayms(72);//1.02ms
//delayms(84);//1.188ms
//delayms(31);//0.446ms
sbit key1=P3^3;
sbit key2=P3^4;
sbit key3=P3^5;
sbit LED=P1^0; //发射指示灯
sbit out=P3^7;
uchar i,a,num1;
void init()//初始化作用
{
key1=1;
key2=1;
key3=1;
}
void delay(uchar aa)
tishi();
}
}
}
void main()
{
init();
while(1)
{
keyscan();
}
}
红外接收程序
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
基于51单片机的红外传感器原理
基于51单片机的红外传感器原理下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!基于51单片机的红外传感器原理1. 简介红外传感器是一种常用于检测物体距离、障碍物识别等的传感器。
基于51单片机的红外遥控
基于51单片机的红外遥控本讲内容:介绍红外遥控的知识,通过例程展示红外遥控程序的编写方法。
红外线简介:在光谱中波长自760nm至400um的电磁波称为红外线,它是一种不可见光。
目前几乎所有的视频和音频设备都可以通过红外遥控的方式进行遥控,比如电视机、空调、影碟机等,都可以见到红外遥控的影子。
这种技术应用广泛,相应的应用器件都十分廉价,因此红外遥控是我们日常设备控制的理想方式。
接收头输出的波形正好和遥控芯片输出的相反。
在这里红外通信采用NEC协议,它的特征如下:信号调制红外遥控信号接收管接口电路:红外信号发射电路 红外信号接收电路例程:红外遥控信号发射:/*****************红外通信——发射*******************单片机型号:STC89C52RC*开发环境:KEIL*名称:红外通信发射*功能:按下按键S4,S5,S6,S8,S9,S10,S11,S13,S14发射对应键值,可以与红外通信——接收程序配套使用***************************************************/#include <REG51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define SBM 0x80 //识别码#define m9 (65536-8294) //约9mS#define m4_5 (65536-4147) //约4.5mS#define m1_6 (65536-1521) //约1.65mS#define m_65 (65536-599) //约0.65mS#define m_56 (65536-516) //约0.56mS#define m40 (65536-36864) //约40mS#define m56 (65536-51610) //56mS#define m2_25 (65536-2074) //约2.25mSconst uchar TabHL1[9]={0x0c,0x18,0x5e,0x08,0x1c,0x5a,0x42,0x52,0x4a};sbit IR=P1^5; //定义发射引脚sbit BEEP=P2^3;void keyscan();void ZZ(uchar x);void Z0(uchar temp);void TT0(bit BT,uint x);void delay(int In,int Out);/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:主函数┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/ void main(void){TMOD=0x01; //T0 16位工作方式IR=1; //发射端口常态为高电平while(1){keyscan();}}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:发送主程序┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/ void ZZ(uchar x){TT0(1,m9); //高电平9mSTT0(0,m4_5); //低电平4.5mS/*┈发送4帧数据┈*/Z0(SBM);Z0(~SBM);Z0(x);Z0(~x);/*┈┈结束码┈┈*/TT0(1,m_65);TT0(0,m40);}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:单帧发送程序入口参数:1帧数据┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/ void Z0(uchar temp){uchar v;for (v=0;v<8;v++) //循环8次移位{TT0(1,m_65); //高电平0.65mSif(temp&0x01) TT0(0,m1_6); //发送最低位else TT0(0,m_56);temp >>= 1; //右移一位}}/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈函数功能:38KHz脉冲发射 + 延时程序入口参数:(是否发射脉冲,延时约 x (uS))┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈/void TT0(bit BT,uint x){TH0=x>>8; //输入T0初始值TL0=x;TF0=0; //清0TR0=1; //启动定时器0if(BT==0)while(!TF0);//BT=0时不发射38KHz脉冲只延时;BT=1发射38KHz脉冲且延时;else while(1) //38KHz脉冲,占空比5:26{IR = 0;if(TF0)break;if(TF0)break;IR=1;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;if(TF0)break;}TR0=0; //关闭定时器0TF0=0; //标志位溢出则清0IR =1; //脉冲停止后,发射端口常态为高电平}void keyscan() //按键扫描函数{uchar buffer;/***************************************************/P3=0xfe; //扫描S3,S4,S5,S6;buffer=P3;buffer=buffer & 0xf0;if(buffer!=0xf0){delay(5,10);if(buffer!=0xf0){buffer=P3;switch(buffer){case 0xee:{;}break;case 0xde:{ZZ(TabHL1[0]);}break;case 0xbe:{ZZ(TabHL1[1]);}break;case 0x7e:{ZZ(TabHL1[2]);}break;}while(buffer != 0xf0){buffer=P3;buffer=buffer&0xf0;BEEP=0;}BEEP=1;}}/****************************************************/ P3=0xfd; //扫描S8,S9,S10,S11buffer=P3;buffer=buffer & 0xf0;if(buffer!=0xf0){delay(5,10);if(buffer!=0xf0){buffer=P3;switch(buffer){case 0xed:{ZZ(TabHL1[3]);}break;case 0xdd:{ZZ(TabHL1[4]);}break;case 0xbd:{ZZ(TabHL1[5]);}break;case 0x7d:{ZZ(TabHL1[6]);}break;}while(buffer!=0xf0){buffer=P3;buffer=buffer&0xf0;BEEP=0;}BEEP=1;}}/****************************************************/ P3=0xfb; //扫描S13,S14,S15,S16buffer=P3;buffer=buffer&0xf0;if(buffer!=0xf0){delay(5,10);if(buffer!=0xf0){buffer=P3;switch(buffer){case 0xeb:{ZZ(TabHL1[7]);}break;case 0xdb:{ZZ(TabHL1[8]);}break;}while(buffer!=0xf0){buffer=P3;buffer=buffer&0xf0;BEEP=0;}BEEP=1;}}}void delay(int In,int Out) //定义延时函数{int i,j;for(i=0;i<In;i++){for(j=0;j<Out;j++){;}}}红外遥控信号接收:/*****************红外通信--接收*******************单片机型号:STC89C52RC*开发环境:KEIL*功能:在液晶LCD1602上显示接收到的数值*************************************************/#include<reg52.h>#define LCD_Data P0#define Busy 0x80sbit IR=P3^2;sbit LCD_RS=P1^0;sbit LCD_RW=P1^1;sbit LCD_E=P2^5;void TIM0init(void);void EX0init(void);void SYSinit(void);void delay(int In,int Out);void Delay5Ms(void);void Ir_work(void);void Ircordpro(void);void WriteDataLCD(unsigned char WDLCD);void WriteCommandLCD(unsigned char WCLCD,BuysC);unsigned char ReadDataLCD(void);unsigned char ReadStatusLCD(void);void LCDInit(void);void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData);void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData); void Info_display(void);bit IRpro_ok;bit IR_ok;unsigned char IRcord[4];unsigned char IRdata[33];unsigned char codedofly_DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char irtime;unsigned char speed_num=0;unsigned char codemb_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char code welcome[]={"YOU ARE WELCOME"};unsigned char code ir_reve[]={"IR_RECEIVE: "};/*******************5ms延时函数*********************/void Delay5Ms(void){unsigned int TempCyc=3552;while(TempCyc--);}void delay(int In,int Out){int i,j;for(i=0;i<In;i++){for(j=0;j<Out;j++){;}}}/***********************写数据函数***********************/ void WriteDataLCD(unsigned char WDLCD){ReadStatusLCD();LCD_Data=WDLCD;LCD_RS=1;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}/**********************写指令函数************************/ void WriteCommandLCD(unsigned char WCLCD,BuysC){if(BuysC)ReadStatusLCD();LCD_Data=WCLCD;LCD_RS=0;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}/***********************读状态函数************************/ unsigned char ReadStatusLCD(void){LCD_Data=0xFF;LCD_RS=0;LCD_RW=1;LCD_E=0;LCD_E=0;LCD_E=1;while(LCD_Data & Busy);return(LCD_Data);}/************************LCD初始化************************/ void LCDInit(void){LCD_Data=0;WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,1);WriteCommandLCD(0x08,1);WriteCommandLCD(0x01,1);WriteCommandLCD(0x06,1);WriteCommandLCD(0x0C,1);}/*******************按指定位置显示一个字符******************/void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData){Y&=0x1;X&=0xF;if(Y)X|=0x40;X|=0x80;WriteCommandLCD(X,0);WriteDataLCD(DData);}/*******************按指定位置显示一串字符******************/void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData) {unsigned char ListLength;ListLength=0;Y&=0x1;X&=0xF;while(DData[ListLength]>=0x20){if(X<=0xF){DisplayOneChar(X,Y,DData[ListLength]);ListLength++;X++;}}}/***********************定时器0初始化***********************/void TIM0init(void){TMOD=0x02;TH0=0x00;TL0=0x00;ET0=1;TR0=1;}/**********************外部中断0初始化**********************/void EX0init(void){IT0=1;EX0=1;EA=1;}/*************************系统初始化*************************/void SYSinit(void){TIM0init();EX0init();LCDInit();}/********************红外信号接收相关函数********************/void Ir_work(void){switch(IRcord[2]){case 0x0C:{DisplayOneChar(12,1,0x31);}break;case 0x18:{DisplayOneChar(12,1,0x32);}break;case 0x5e:{DisplayOneChar(12,1,0x33);}break;case 0x08:{DisplayOneChar(12,1,0x34);}break;case 0x1c:{DisplayOneChar(12,1,0x35);}break;case 0x5a:{DisplayOneChar(12,1,0x36);}break;case 0x42:{DisplayOneChar(12,1,0x37);}break;case 0x52:{DisplayOneChar(12,1,0x38);}break;case 0x4a:{DisplayOneChar(12,1,0x39);}break;default:break;}}void Ircordpro(void){unsigned char i,j,k;unsigned char cord,value;k=1;for(i=0;i<4;i++){for(j=1;j<=8;j++){cord=IRdata[k];if(cord>7)value|=0x80;if(j<8){value>>=1;}k++;}IRcord[i]=value;value=0;}IRpro_ok=1;}/********************红外信号接收相关函数********************/ void main(void){SYSinit();delay(5,100);DisplayListChar(0,0,welcome);DisplayListChar(0,1,ir_reve);while(1){if(IR_ok){Ircordpro();IR_ok=0;}if(IRpro_ok){Ir_work();}}}/********************定时器0中断处理函数********************/ void tim0_isr (void) interrupt 1 using 1{irtime++;}/*******************外部中断0中断处理函数*******************/ void EX0_ISR (void) interrupt 0{static unsigned char i;static bit startflag;if(startflag){if(irtime<63&&irtime>=33)i=0;IRdata[i]=irtime;irtime=0;i++;if(i==33){IR_ok=1;i=0;}}else{irtime=0;startflag=1;}}。
(完整版)基于51单片机的红外遥控器解码设计毕业论文
第1章红外解码系统分析第1节设计要求整个控制系统的设计要求:被控设备的控制实时反应,从接收信号到信号处理及对设备控制反映时间应小于1s;整个系统的抗干扰能力强,防止误动作;整个系统的安装、操作简单,维护方便;成本低。
红外载波、编码电路设计要求:单片机定时器精确产生38KHz红外载波;根据控制系统要求能对红外控制指令信号精确编码并迅速发送。
红外解码电路设计要求:精确接收红外信号,并对所接收信号进行解码、放大、整形、解调等处理,最后输出TTL电平信号;对非红外光及边缘红外光抗干扰能力强。
设备扩展模块设计要求:直流控制交流;抗干扰能力强;反应迅速不产生误动作;能承受大电流冲击。
第2节总体设计方案2.1 方案论证驱动与开关方案一:采用晶闸管直接驱动。
其优点是体积小,电路简单,外围元件少。
但控制电流小,大电流晶闸管成本高,并且隔离性能差。
方案二:采用三极管驱动继电器。
其体积大,外围元件多。
优点是控制电流大,隔离性能好。
根据实际情况,拟采用方案二。
2.2 总体设计框图经过上述方案的分析选择,得出系统硬件由以下几部分组成:电视红外遥控器,51单片机最小系统,接收放大于一体集成红外接收头,1602液晶显示驱动电路。
整体设计思路为:根据扫描到不同的按键值转至相对应的ROM表读取数据。
确认设备及菜单选择键后AT89S2将从ROM读取出来的值,按照数据处理要求从P2.5输出控制脉冲与T0产生的38KHz的载波(周期是26.3μs)进行调制,经NPN三极管对信号放大驱动红外发光管将控制信号发送出去。
红外数据接收则是采用HS0038一体化红外接收头,内部集成红外接收、数据采集、解码的功能,只要在接收端INT0检测头信号低电平的到来,就可完成对整个串行的信号进行分析得出当前控制指令的功能。
然后根据所得的指令去操作相应的用电器件工作,如图1-1所示。
图1-1 电路设计整体框图第2章红外解码硬件电路设计第1节单片机及其硬件电路设计1.1 单片机的介绍AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。
51单片机-毕业设计基于单片机设计的红外线遥控器
从光学的角度而言,红外光是频率低于红色光的不可见光,在无线光谱的整个频率中占有很小一个频率段,波长为0.75—100微秒之间,其中0。75—3微秒之间的红外光称为近红外,3—30微秒之间的红外光称为中红外,30—100微秒之间的称为远红外。红外光就其性质而言很简单,与普通光线的频率特性没有很大的区别,但是,由于任何有热量的物体均有能量产生,所以红外的利用非常广泛,而且不可取代,能否检测红外、能测到多少红外或者红外检测的技术是否可以应用于任何自然的或想象的场合是红外应用技术的关键.
四、主要参考文献:
[1]梅丽凤,王艳秋,张军等。单片机原理及接口技术,北京:清华大学出版社,2004年。
[2]戴峻峰,付丽辉。多功能红外线遥控器的设计,传感器世界。2002,8(12):16~18.
[3]李光飞,楼然苗,胡佳文等.单片机课程设计实例指导,北京:北京航空航天出版社,
2004年.
[4]苏长赞。红外线与超声波遥控,北京:人民邮电出版社.1995年.
3.4独立式按键结构……………………………………………………………10
3。5掉电保护与低功耗设计……………………………………………………10
3。5.1低功耗的实现方法……………………………………………………10
3。5.2掉电保护与低功耗设计………………………………………………11
3。6系统完整电路设计图………………………………………………………13
2010.6。26~2010。8.10
在老师指导下反复修改,完成设计
五、指导教师意见:
指导教师签名:2010年5月10日
六、系部意见:
系主任签名:2010年5月11日
基于单片机的红外线遥控器
摘要
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.红外发射部分: 下图为红外发射部分的电路拟图:
编码过程: (1) 二进制信号的调制 二进制信号的调制由单片机来完成, 它把编码后的二进制信号调制成 频率为 38kHz 的间断脉冲串 (用定时器来完成 ),相当于用二进制信号 的编码乘以频率为 38kHz的脉冲信号得到的间断脉冲串, 即是调制后 用于红外发射二极管发送的信号。 (2)PPM 编码
TL0 = 0xE6; // 设定时值 0 为 38K 也就是每隔 26us 中断一次
TR0 = 1 ;// 开始计数
iraddr1=3; // 自定义的一个地址
iraddr2=252; // 地址反码
do{
delay();
SendIRdata(12);
} while (1);
}
// 定时器 0 中断处理
/***************************************************************/
// 发送十六位地址的前八位
irdata=iraddr1;
for (i=0;i<8;i++)
{ // 一个周期里规定先以高电平开始, 在以低电平结束 。先发送 0.56ms 的 38KHZ
(3)发送程序
#include <AT89X51.h>
static bit OP;
// 红外发射管的亮灭控制位
static unsigned int count;
// 延时计数器
static unsigned int endcount; // 终止延时计数
static unsigned char flag;
{
count = 0;
flag = 0;
// 无载波
OP = 0;
// 不亮
P3_4 = 0;
// 在后面会发现用 OP赋值的
EA = 1; // 允许 CPU中断
TMOD = 0x11; // 设定时器 0 和 1 为 16 位模式 1
ห้องสมุดไป่ตู้
ET0 = 1; // 定时器 0 中断允许
TH0 = 0xFF;
for (i=0;i<8;i++)
{
endcount=10;
flag=1;
count=0;
“ 1”的红外波(即编码中 0.56ms 的高电平)
endcount=10;
flag=1;
count=0;
do {} while (count<endcount);
// 停止发送红外信号(即编码中的低电平)
if (irdata-(irdata/2)*2)
// 判断二进制数个位为 1 还是 0
{endcount=41; }
{OP = 0; }
P3_4 = OP;
}
void SendIRdata( char p_irdata)
// 发送数据子函数
{
int i;
char irdata=p_irdata;
/***************************************************************/
//1 为宽的高电平 1.68ms
else
{endcount=15; }
//0 为窄的高电平 0.56ms
flag=0; count=0;
while (count<endcount);
irdata=irdata>>1;
// 依次取位
}
// 发送十六位地址的后八位
irdata=iraddr2;
// 此处已经是地址的反码
void timeint( void ) interrupt 1
{
TH0=0xFF;
TL0=0xE6; // 设定时值为 38K 也就是每隔 26us 中断一次
count++;
if (flag==1)
{OP=~OP; } // 如果是待发送的有效数据 flag=1 ,就在此产生载波 (亮灭交变)
else
// 红外发送标志
sbit P3_4=P3^4;
char iraddr1; // 十六位地址的第一个字节
char iraddr2; // 十六位地址的第二个字节
void SendIRdata(char p_irdata); // 发送子函数
void delay();
void main( void )
// 发送 9ms的起始码,并是载波模式有效
endcount=223;
flag=1;
count=0;
while (count<endcount); // 等待中断,控制亮灭交变的总时间为 9ms
// 发送 4.5ms 的结果码,并是载波模式无效
endcount=117
flag=0;
count=0;
do{} while (count<endcount);
红外通信原理
红外遥控有发送和接收两个组成部分。 发送端采用单片机 将待发送的 二进制信号编码调制为一系列的脉冲串信号, 通过红外发射管发射红 外信号 。红外接收完成对红外信号的接收、放大、检波、整形,并解 调出遥控编码脉冲 。为了减少干扰, 采用的是价格便宜性能可靠的 一体化红外接收头 (HS0038, 它接收红外信号频率为 38kHz,周期约 26μ s) 接收红外信号,它同时对信号进行放大、 检波、整形得到 TTL 电平的编码信号, 再送给单片机, 经单片机解码并执行去控制相关对 象。具体实现过程如下:
这种遥控编码具有以下特征: ○1 遥控编码脉冲由 前导码 、16 位地址码 ( 8 位地址码、 8 位地址码 的反码)和 16 位操作码 (8 位操作码、 8 位操作码的反码)组成。 前导码 :是一个遥控码的起始部分, 由一个 9ms 的高电平 ( 起始码 ) 和一个 4. 5ms的低电平 ( 结果码 )组成,作为接受数据的准备脉冲。 16 位地址码 :能区别不同的红外遥控设备,防止不同机种遥控码互 相干扰。 16 位操作码 :用来执行不同的操作。 ○2 采用脉宽调制的串行码,以脉宽为 0.56ms、间隔 0.56ms、周期为 1.12ms 的组合表示二进制的 “ 0;”以脉宽为 1.68ms、间隔 0.56ms、周 期为 2.24ms 的组合表示二进制的 “1。”