单片机红外完整资料
- 格式:pdf
- 大小:145.30 KB
- 文档页数:4
单片机红外发射(原理与设计程序)一、引言随着科技的发展和人们对智能化生活的需求增加,红外发射技术在家电遥控、无线通讯等领域得到广泛应用。
单片机是红外发射的一个重要组成部分,通过学习单片机红外发射的原理和设计相关的程序,我们可以更好地理解和应用该技术。
二、红外发射原理1. 红外通信原理红外通信是利用红外线传输信息的一种无线通信方式。
红外线是一种波长较长、能量较低的电磁波,不会对人体和周围环境产生明显危害。
通过调制红外线的频率和幅度,可以传输数字信号和模拟信号。
2. 红外发射原理红外发射是通过调制器件发射调制后的红外信号。
在单片机红外发射中,通常使用红外发射二极管作为发射器件。
通过控制单片机的输出引脚,可以使红外发射二极管发射出不同频率和占空比的红外信号。
3. 红外编码原理在红外通信中,通常需要对信号进行编码,以区分不同的按键和数据。
红外编码有多种方式,常用的有NEC编码和RC-5编码。
通过将特定的按键和数据映射成不同的编码,可以实现红外通信的多样化功能。
三、单片机红外发射设计程序1. 硬件连接,需要将红外发射二极管连接到单片机的输出引脚。
具体连接方式可参考所使用的单片机的引脚定义和电路原理图。
2. 程序设计步骤设计单片机红外发射程序的步骤如下:1. 初始化单片机的IO引脚,将输出引脚设置为输出模式。
2. 设置红外发射的调制频率和占空比。
3. 根据需要发送的数据,将数据转换成对应的红外编码。
4. 根据红外编码,控制输出引脚的电平变化,以模拟红外信号的调制。
5. 持续一定时间后,停止红外发射,将输出引脚恢复到默认状态。
3. 程序示例下面是一个简单的单片机红外发射程序示例:cinclude <reg52.h>// 红外发射引脚sbit IR_Pin = P1^0;// 发射红外信号的函数void transmitIRSignal() {// 设置调制频率和占空比//// 发送红外编码//// 控制引脚电平变化,模拟红外信号//// 停止红外发射IR_Pin = 0;}void mn() {// 初始化IO引脚IR_Pin = 0;// 发射红外信号transmitIRSignal();while(1) {//}}四、通过对单片机红外发射的原理和设计程序的学习,我们了解到红外发射是利用红外通信原理,通过控制红外发射二极管发射相应的红外信号。
单片机红外发射(原理与设计程序)单片机红外发射(原理与设计程序)章节一:介绍本章节将介绍单片机红外发射的基本概念和作用,并提供一个概述。
1·1 单片机红外发射的基本概念单片机红外发射是指利用单片机来控制红外发射器发射红外信号的一种技术。
通过编写程序,单片机可以产生适合红外发射的脉冲序列,从而实现与其他设备的红外通信。
1·2 单片机红外发射的作用单片机红外发射广泛应用于遥控器、红外传感器等领域。
它可以实现人机交互、物联网设备的通信,以及自动化控制系统中的远程操作。
章节二:红外发射器的原理本章节将详细介绍红外发射器的工作原理及其组成部分。
2·1 红外发射器的工作原理红外发射器是一种将电能转换为红外辐射能的装置。
当通过红外发射器的电流改变时,会产生红外光束,用于传输信息。
2·2 红外发射器的组成部分红外发射器通常由红外发光二极管和相关的电路组成。
红外发光二极管是通过注入电流来产生红外光的元件,而电路则包括电源、驱动电路等。
章节三:单片机控制红外发射的设计程序本章节将介绍如何通过单片机来控制红外发射的设计程序。
3·1 单片机的选择根据实际需求,选择适合的单片机作为控制器。
常用的单片机有8051系列、AVR系列、PIC系列等。
3·2 编写红外发射控制程序根据红外发射器的工作原理和控制需求,编写控制程序。
程序需要设置红外发射器的脉冲宽度、频率等参数,并通过IO口输出相应的控制信号。
章节四:附件本文档涉及的附件有:1·红外发射器的数据手册●包含红外发射器的参数、引脚定义等详细信息。
2·单片机开发板原理图●包含单片机与红外发射器连接的电路设计。
法律名词及注释:1·单片机:指微型计算机的一种,是一种集成度高、功能强大的计算机芯片。
2·红外光束:指具有较长波长的电磁波,不可见于人眼,常用于遥控和红外传感器的通信。
1概述单片机控制系统广泛应用在电气设备和电子产品中,而实现控制的外部操作多由键盘或计算机完成,有一定的局限性,比如,对一些电子产品所显示数据的修改来说,当安装位置较高时,按键控制很不方便,若采用PC,则除了电路更复杂外,造价也相应提高。
为此,我们研制了采用普通电视用的红外遥控器做控制器的单片机控制系统。
2硬件设计采用MCS251系列单片机,选用众合牌电视遥控器,重新设置按键功能。
将红外线接收头的输出端与单片机的外部中断(INT 0或INT1)连接,操作遥控器时,接收头有信号输出,单片机产生中断。
2. 1红外遥控器简介2. 1. 1 基本组成红外遥控器的核心是遥控发射集成电路,众合牌电视遥控器采用的集成芯片是M50462AP,其内部由图1中虚线框内各部分电路组成。
图1遥控发射集成电路2. 1.2 工作原理当遥控器有键被按下时, 振荡电路立即接通并起振, 扫描信号发生器随即发出 8路不同时序的扫描时序脉冲, 依次对键盘矩阵进行扫描, 键盘编码器则由接收到的回送信号判断出被按键位置, 并输出相应的编码至译码器, 经译码器进行码元变换后的信号被重新编码调制后输出。
2. 1.3 指令代码集成芯片M50462AP 的输出信号是脉冲位置调制码, 其载频是中心频率为 40kHz,占空比为3的方波信号。
一位脉冲位置调制码如图 2所示。
当脉冲宽度为1ms 时,代表一个二进制数/ 00;脉 冲宽度为2ms 时,代表一个二进制数/ 10。
定时 发生器 —1 J 1振荡电路编1 1 1 1码11输 调1岀 1 制1 1 1 1 1____ i fonA CDfD 刍反拢友译码器器图2脉冲位置调制码每一条传送指令由16位这样的/ 00、/ 10代码组成,这16位代码的前8位为用户码,用户码的构成形成为1110xx10,遥控器生产厂家可以将/ x0设为/ 10或/ 00,众合牌遥控器的用户码为11100010,即为E2H; 16位代码的后8位为数据码,即按键功能操作码,编码则如表1所列。
单片机红外发射(原理与设计程序) 单片机红外发射(原理与设计程序)章节:1.引言1.1 目的1.2 背景2.原理2.1 红外通信基本原理2.2 单片机红外发射原理3.设计程序3.1 设置红外发射引脚3.2 初始化红外发射模块3.3 发送红外信号4.细节考虑4.1 红外信号编码4.2 发射距离与功率控制4.3 遥控码库选择5.测试与验证5.1 搭建测试平台5.2 编写测试程序5.3 测试结果与分析6.结论7.参考文献1.引言1.1 目的本文档旨在介绍单片机红外发射的原理,并提供一个设计程序的参考范本,以便于读者理解和实践。
1.2 背景红外通信在遥控器、无线键盘等电子设备中得到广泛应用。
单片机作为一种常用的嵌入式系统控制器,具有很好的灵活性和可编程性,因此在红外发射中也被广泛使用。
2.原理2.1 红外通信基本原理红外通信利用红外线传输数据,红外线具有波长长、不可见等特点,可以实现遥控信号的传输。
2.2 单片机红外发射原理单片机可以通过设置特定的引脚和相关的控制寄存器来控制红外发射模块,从而发送特定的红外信号。
3.设计程序3.1 设置红外发射引脚根据所选用的单片机和红外发射模块,确定红外发射引脚的连接方式,设置对应的引脚功能。
3.2 初始化红外发射模块在程序中初始化红外发射模块,包括设置工作模式、设置通信速率等。
3.3 发送红外信号编写发送红外信号的代码,通过控制红外发射引脚的电平变化,实现红外信号的发送。
4.细节考虑4.1 红外信号编码根据所需的红外通信协议,对红外信号进行编码。
常用的编码方式有NEC、RC5等。
4.2 发射距离与功率控制根据实际需求,调整红外发射模块的功率,以及发送的红外信号的占空比,以达到理想的发射距离和传输质量。
4.3 遥控码库选择在设计红外发射系统时,可以选择使用现有的遥控码库,减少编码工作的复杂程度。
5.测试与验证5.1 搭建测试平台搭建一个用于测试红外发射系统的测试平台,包括红外接收模块、测试设备等。
单片机红外发射原理及设计程序一、红外发射原理红外发射器是利用电子技术发射红外光信号的设备,其原理是通过电流和电压的作用,使红外发射二极管中的半导体材料产生拉格朗日反射(Lumogen) 效应而发射出红外光。
红外发射器主要由红外发射二极管和控制器组成。
控制器通过控制发射二极管的工作状态,即调节发射二极管的电压和电流,从而控制红外发射的功率和波长。
二、红外发射器的设计1.红外发射二极管选型选择适合的红外发射二极管至关重要。
常见的红外发射二极管有850nm和940nm两种波长,前者适用于大多数应用场景,后者适用于有特殊需求的场景。
2.红外发射驱动电路设计红外发射二极管一般工作在连续电流模式下,通过调节电流的大小来控制红外发射的功率。
可以采用可调电流源或者恒流源来驱动红外发射二极管。
可调电流源的原理是通过使用可调电阻和反馈电路,调节输出电流的大小。
恒流源的原理是通过使用运算放大器和负反馈电路,使输出电流保持不变。
3.单片机控制程序设计通过单片机来控制红外发射器的工作状态,可以实现各种功能。
以下是一个简单的红外发射程序设计示例:#include <reg52.h>sbit IR_LED = P1^0; // 红外发射器连接的IO口void delay_us(unsigned int n) // 微秒级延时函数unsigned char i;while (n--)for(i=0;i<10;i++);}void send_IR_data(unsigned char data) // 发送红外数据unsigned char i;for(i=0;i<8;i++)if(data & 0x01)IR_LED=1;//发射高电平表示逻辑1delay_us(560);IR_LED=0;delay_us(560);}elseIR_LED=1;//发射高电平表示逻辑0delay_us(560);IR_LED=0;delay_us(1700);}data >>= 1;}void mainsend_IR_data(0xAA); // 发送数据0xAAwhile(1);这个程序通过控制红外发射器连接的IO口的输出电平和延时函数,模拟了红外码的发送过程。
单片机红外发射一、红外发射原理:红外发射是一种通过发射红外光信号进行通信或控制的技术。
其基本原理是利用发光二极管(LED)产生特定频率的红外光信号,并通过电路将其调制成所需要的信号波形。
红外发射的工作原理如下:1.红外发光二极管(LED):在发射端,使用发光二极管(LED)作为红外发射源。
LED通过正向电流激发P-N结,产生光子能量,进而发射红外光信号。
2.调制电路:为了实现红外信号的调制,需要设计一个调制电路。
调制电路的作用是将待发送的信号转换成特定的脉冲信号,使LED以一定的频率闪烁,并通过改变脉冲信号的宽度和周期来实现信息的传输。
3.通信协议:在设计程序时,需要根据具体的通信协议来编写发送指令的代码。
通信协议包括红外信号的编码、解码规则,以及通信双方之间的数据传输格式等。
二、红外发射的设计程序:设计红外发射程序需要考虑以下几个方面:1.选择合适的单片机:根据实际需求选择适合的单片机作为控制核心,常用的单片机有51系列、AVR系列、STM32系列等。
2.硬件设计:搭建与单片机连接的硬件电路,包括红外发射二极管(LED)的连接,调制电路的设计以及红外发射电路的供电和接地等。
3.红外发射的代码编写:根据具体的单片机型号和开发环境,编写控制红外发射的代码。
代码中需要设置与红外发射相关的参数,包括调制频率、调制波形、发送信号的格式等。
4.调试和测试:将程序烧录到单片机中,连接红外发射电路并供电后,通过测试红外发射是否正常工作。
可以使用红外接收器来接收红外发射的信号,以验证发送的信号是否正确。
5.优化和改进:根据实际需求和测试结果进行优化和改进,可以通过调整参数、改善硬件电路等方式来提升红外发射的性能和可靠性。
三、总结:红外发射技术是一种通过发射红外光信号进行通信和控制的技术,其基本原理是利用发光二极管(LED)产生特定频率的红外光信号,并通过电路将其调制成所需的信号波形。
在设计红外发射程序时,需要选择合适的单片机,设计相应的硬件电路,编写相应的代码,进行调试和测试并进行优化和改进。
单片机STM32F103C8T6的红外遥控器解码系统设计一、本文概述本文旨在详细阐述基于STM32F103C8T6单片机的红外遥控器解码系统的设计和实现过程。
随着科技的不断进步和智能化设备的普及,红外遥控器作为一种常见的遥控设备,已经广泛应用于家电、安防、玩具等多个领域。
然而,红外遥控器发出的红外信号往往需要通过解码器才能被设备正确识别和执行,因此,设计一款高效、稳定、可靠的红外遥控器解码系统具有重要意义。
本文将首先介绍红外遥控器的基本原理和信号特点,然后详细阐述STM32F103C8T6单片机的性能特点和在红外遥控器解码系统中的应用优势。
接着,将详细介绍红外遥控器解码系统的硬件设计,包括红外接收头的选择、电路设计和PCB制作等。
在软件设计部分,将详细阐述如何通过STM32F103C8T6单片机的编程实现红外信号的接收、解码和处理,以及如何将解码后的数据通过串口或其他通信方式发送给主控制器。
本文还将对红外遥控器解码系统的性能进行测试和分析,包括信号接收距离、解码速度和稳定性等方面的测试。
将总结本文的主要工作和创新点,并对未来的研究方向进行展望。
通过本文的研究和实现,旨在为红外遥控器解码系统的设计提供一种新的思路和方法,同时也为相关领域的研究人员提供有益的参考和借鉴。
二、红外遥控器基础知识红外遥控器是一种常见的无线遥控设备,它利用红外光作为信息载体,通过发射和接收红外光信号实现对设备的远程控制。
这种遥控方式因其简单、低成本和无需视线连接等优点,在各类消费电子产品中得到了广泛应用,如电视机、空调、音响等。
红外遥控器的工作原理主要基于红外辐射和光电器件的检测。
遥控器内部通常包含一个或多个红外发射管,当按下按键时,发射管会发射出特定频率和编码的红外光信号。
接收端则配备有红外接收头,该接收头内部有一个光敏元件(如硅光敏三极管或光敏二极管),用于检测红外光信号并将其转换为电信号。
为了区分不同的按键操作,红外遥控器通常采用特定的编码方式对按键信号进行编码。
STM32单片机红外遥控红外遥控接口电路STM32单片机红外遥控程序源代码#include "sys.h"#define LED_RED PBout(12) //红色发光二极管控制管脚初始化PB12 #define LED_GREEN PBout(13) //绿色发光二极管控制管脚初始化PB13 #define LED_YELLOW PBout(14) //黄色发光二极管控制管脚初始化PB14 #define LED_BLUE PBout(15) //蓝色发光二极管控制管脚初始化PB15 #define BEEP PBout(5) //蜂鸣器端口定义PB5#define RDATA PAin(1) //红外数据输入脚//红外遥控识别码(ID),每款遥控器的该值基本都不一样,但也有一样的//我们选用的遥控器识别码为0#define REMOTE_ID 0static u8 fac_us=0; //us延时倍乘数static u16 fac_ms=0; //ms延时倍乘数void delay_init(u8 SYSCLK);void delay_ms(u16 nms);void delay_us(u32 nus);void Led_Init(void); //发光二极管控制管脚初始化void Red_Led_Light(void); //点亮红色发光二极管void Green_Led_Light(void); //点亮绿色发光二极管void Yellow_Led_Light(void); //点亮黄色发光二极管void Blue_Led_Light(void); //点亮蓝色发光二极管void Red_Led_Goout(void); //熄灭红色发光二极管void Green_Led_Goout(void); //熄灭绿色发光二极管void Yellow_Led_Goout(void); //熄灭黄色发光二极管void Blue_Led_Goout(void); //熄灭蓝色发光二极管void Beep_Init(void);void Beep_Tweet(void);void Beep_Silent(void);extern u8 Remote_Cnt; //按键次数,此次按下键的次数extern u8 Remote_Rdy; //红外接收到数据extern u32 Remote_Odr; //命令暂存处u32 Remote_Odr=0; //命令暂存处u8 Remote_Cnt=0; //按键次数,此次按下键的次数u8 Remote_Rdy=0; //红外接收到数据void Remote_Init(void); //红外传感器接收头引脚初始化u8 Remote_Process(void); //红外接收到数据处理u8 Pulse_Width_Check(void); //检查脉宽extern u8 USART_RX_BUF[64]; //接收缓冲,最大63个字节.末字节为换行符extern u8 USART_RX_STA; //接收状态标记//如果想串口中断接收,请不要注释以下宏定义//#define EN_USART1_RX //使能串口1接收void uart_init(u32 pclk2,u32 bound);/*************************************************************开发板上电后,用红外遥控器对着开发板上的红外接收头。
单片机红外遥控实验报告【实验报告】单片机红外遥控摘要:本实验通过使用单片机和红外遥控器,实现了对电器设备的远程控制。
首先,介绍了红外遥控技术的原理和应用场景;接着,详细描述了实验所使用的硬件与软件配置;然后,阐述了实验的步骤和过程;最后,总结了实验结果与心得体会。
1. 简介红外遥控技术是一种基于红外线信号传输的无线控制技术,广泛应用于家电、汽车、医疗设备等领域。
它通过红外线发射器将指令信号转换为红外线信号,并通过红外线接收器接收并解码信号,从而实现对电器设备的远程控制。
2. 硬件配置本实验所使用的硬件配置包括单片机、红外发射模块、红外接收模块、继电器模块和电器设备。
其中,单片机作为控制中心,通过编程控制红外发射模块发射特定的红外信号,红外接收模块接收信号并解码,继电器模块实现对电器设备电源的切换。
3. 软件配置3.1 单片机编程使用C语言编写单片机的控制程序。
首先,通过引入相应的库函数,对单片机进行初始化配置。
然后,定义红外信号对应的按键码,并设置相应的工作模式。
最后,编写主循环程序,实现对红外发射模块的控制和对红外接收模块的解码处理。
3.2 红外遥控器配置在红外遥控器上配置对应的按键码与功能,将其与实验中的电器设备进行匹配。
通过学习功能,将红外遥控器上的按键码与相应操作绑定。
4. 实验步骤4.1 硬件连接将红外发射模块、红外接收模块和继电器模块连接到单片机的相应引脚上,并保证连接正确可靠。
4.2 单片机编程根据实验需求,编写单片机的控制程序,并将程序下载到单片机的存储芯片中。
4.3 红外遥控器学习使用红外遥控器学习功能,将红外遥控器上的按键码与需要控制的电器设备进行匹配。
4.4 实验执行先使用红外接收模块接收红外遥控器发送的信号,并解码得到相应的按键码。
然后,通过单片机的控制程序判断收到的按键码,并控制继电器模块对电器设备进行功率切换。
5. 实验结果经过实验,验证了红外遥控技术在远程控制电器设备中的有效性。
实例C红外线遥控应用实例红外线遥控成本低,安全可靠,不会产生电器干扰,因此,在家电设备及其他近距离的遥控中得到广泛应用。
本章将通过LED显示遥控器按键值实例、简易红外线遥控开关和红外线遥控七色小彩灯实例,介绍红外线遥控基本原理及其设计、应用方法。
C.1 LED显示遥控器按键值功能说明:选用一种电视机遥控器,再利用接收模块结合单片机解码,控制P1端口所接的8个LED亮或灭。
因此,8个LED的亮或灭的状态,即是显示红外遥控器的按键值。
8个LED视为8位二进制数,其中LED亮视为0,LED灭视为1。
例如,按动红外遥控器按键1,8个LED中右边第一个灭,其他全亮,则表示二进制数为B,转换成十六进制数为01H,即红外遥控器按键1的控制编码为01H;如果按动红外遥控器按键2,8个LED中右边第二个灭,其他全亮,表示二进制数为B,转换成十六进制数为02H,即红外遥控器按键2的控制编码为02H。
再如,按动红外遥控器“POWER”键,8个LED中第2、5灭,其他全亮,表示二进制数为B,转换成十六进制数为12H,即遥控器的POWER键控制编码为12H。
二进制数转换十六进制数的方法可以参考书后附录B的制式转换表。
C.1.1 红外线遥控原理1.红外线遥控系统结构红外线遥控系统是由发射端和接收端两部分组成,如图C.1和C.2所示。
红外线发射端就是红外遥控器,主要包括键盘、编码调制芯片、红外线发射LED。
当按下某一按键后,遥控器上的编码调制芯片便进行编码,并结合载波电路的载波信号而成为合成信号,再经红外线发射二极管,将红外线信号发射出去。
实例C 红外线遥控应用实例27║键盘编码和调制模块红外线发射LED发射端部分图C.1 红外线发射端工作方框图红外线接收模块解码单片机接收端部分图C.2 红外线接收端工作方框图红外线接收端主要包括红外线接收模块、解码单片机。
其中红外线接收模块里包括光、电转换放大器、解调电路。
当红外线发射信号进入接收模块后,在其输出端便可以得到原先的数字控制编码,再经过单片机解码程序进行解码,便可以得知按下了哪一按键,从而完成红外线遥控的动作。
基于51单片机的红外遥控红外遥控是无线遥控的一种方式,本文讲述的红外遥控,采用STC89C52单片机,1838红外接收头和38k红外遥控器。
1838红外接收头:红外遥控器:原理:红外接收的原理我不赘述,百度文库上不少,我推荐个网址,这篇文章写得比较清楚,也比较全面,我主要讲下程序的具体意思,在了解原理的基础上,我们知道,当我们在遥控器上每按下一个键,遥控器上的红外发射头都会发出一个32位的编码(32位编码分成4组8位二进制编码,前16位为用户码和用户反码,后16位为数据码和数据反码,用户码表示遥控器类型,数据码表示按键编码),不同的键对应不同的编码,红外接收头接收到这个编码后,发送给单片机,再进行相关操作。
源程序1:(这个程序的功能是将用户码和用户反码,数据码和数据反码显示在1602液晶上,因为遥控器买回来是不会说明按键对应什么码值,所以先自己测试,确定每个按键的码值)#include<reg52.h>#include<stdio.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned char#define _Nop() _nop_()#define TURE 1#define FALSE 0/*端口定义*/sbit lcd_rs_port = P3^5; /*定义LCD控制端口*/sbit lcd_rw_port = P3^6;sbit lcd_en_port = P3^4;#define lcd_data_port P0///////////////////////////////////void delay1 (void)//关闭数码管延时程序{int k;for (k=0; k<1000; k++);}////////////////////////////////////uchar code line0[16]={" user: "};uchar code line1[16]={" data: "};uchar code lcd_mun_to_char[16]={"0123456789ABCDEF"};unsigned char irtime;//红外用全局变量bit irpro_ok,irok;unsigned char IRcord[4];//用来存放用户码、用户反码、数据码、数据反码unsigned char irdata[33];//用来存放32位码值void ShowString (unsigned char line,char *ptr);//////////////////////////////////////////////void Delay(unsigned char mS);void Ir_work(void);void Ircordpro(void);void tim0_isr (void) interrupt 1 using 1//定时器0中断服务函数{irtime++;}void ex0_isr (void) interrupt 0 using 0//外部中断0服务函数{static unsigned char i;static bit startflag;if(startflag){if(irtime<63&&irtime>=33)//引导码TC9012的头码i=0;irdata[i]=irtime;irtime=0;i++;if(i==33){irok=1;i=0;}}else{irtime=0;startflag=1;}}void TIM0init(void)//定时器0初始化{TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值TH0=0x00;//reload valueTL0=0x00;//initial valueET0=1;//开中断TR0=1;}void EX0init(void){IT0 = 1; // Configure interrupt 0 for falling edge on /INT0 (P3.2)EX0 = 1; // Enable EX0 InterruptEA = 1;}void Ircordpro(void)//红外码值处理函数(关键函数){unsigned char i, j, k=1;unsigned char cord,value;for(i=0;i<4;i++){//处理4个字节for(j=1;j<=8;j++){ //处理1个字节8位cord=irdata[k];value=value>>1;if(cord>7) value=value|0x80; //大于某值为1k++;}IRcord[i]=value;value=0;}irpro_ok=1;//处理完毕标志位置1}///////////////////////////////////////////void lcd_delay(uchar ms) /*LCD1602 延时*/{uchar j;while(ms--){for(j=0;j<250;j++){;}}}//////////////////////////////////////////////void lcd_busy_wait() /*LCD1602 忙等待*/{lcd_rs_port = 0;lcd_rw_port = 1;lcd_en_port = 1;lcd_data_port = 0xff;_Nop();_Nop();_Nop();_Nop();while (lcd_data_port&0x80);lcd_en_port = 0;}///////////////////////////////////////////////void lcd_command_write(uchar command) /*LCD1602 命令字写入*/ {lcd_busy_wait();lcd_rs_port = 0;lcd_rw_port = 0;lcd_en_port = 0;lcd_data_port = command;_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();lcd_en_port = 1;_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();lcd_en_port = 0;}/////////////////////////////////////////void lcd_system_reset() /*LCD1602 初始化*/{lcd_delay(20);lcd_command_write(0x38);lcd_delay(100);lcd_command_write(0x38);lcd_delay(50);lcd_command_write(0x38);lcd_delay(10);lcd_command_write(0x08);lcd_command_write(0x01);lcd_command_write(0x06);lcd_command_write(0x0c);}//////////////////////////////////////////////////void lcd_char_write(uchar x_pos,y_pos,lcd_dat) /*LCD1602 字符写入*/ {x_pos &= 0x0f; /* X位置范围0~15 */y_pos &= 0x01; /* Y位置范围0~ 1 */if(y_pos==1) x_pos += 0x40;x_pos += 0x80;lcd_command_write(x_pos);lcd_busy_wait();lcd_rs_port = 1;lcd_rw_port = 0;lcd_en_port = 0;lcd_data_port = lcd_dat;_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();lcd_en_port = 1;_Nop();_Nop();_Nop();_Nop();_Nop();_Nop();lcd_en_port = 0;}void main(void){uchar i;lcd_system_reset(); /* 初始化LCD1602 */lcd_data_port = 0xff;for(i=0;i<16;i++) lcd_char_write(i,0,line0[i]);for(i=0;i<16;i++) lcd_char_write(i,1,line1[i]);EX0init(); // Enable Global Interrupt FlagTIM0init();while(1){//主循环if(irok){Ircordpro();irok=0;}if(irpro_ok){ /*遥控成功接收*/lcd_char_write(8,0,lcd_mun_to_char[IRcord[0]/0x10]);lcd_char_write(9,0,lcd_mun_to_char[IRcord[0]%0x10]);lcd_char_write(11,0,lcd_mun_to_char[IRcord[1]/0x10]);lcd_char_write(12,0,lcd_mun_to_char[IRcord[1]%0x10]);lcd_char_write(8,1,lcd_mun_to_char[IRcord[2]/0x10]);lcd_char_write(9,1,lcd_mun_to_char[IRcord[2]%0x10]);lcd_char_write(11,1,lcd_mun_to_char[IRcord[3]/0x10]);lcd_char_write(12,1,lcd_mun_to_char[IRcord[3]%0x10]);}//将码值显示在液晶上}}源程序2:(在知道了按键编码的基础上,我们便可以加入判断,判断哪个键被按下,进而执行相关操作)我只修改main函数,其他与源程序1相同sbit led1=P1^0;sbit led2=P1^1;sbit led3=P1^2;sbit led4=P1^3;sbit led5=P1^4;//发光二极管控制端定义void main(void){uchar i;lcd_system_reset(); /* 初始化LCD1602 */lcd_data_port = 0xff;for(i=0;i<16;i++) lcd_char_write(i,0,line0[i]);for(i=0;i<16;i++) lcd_char_write(i,1,line1[i]);EX0init(); // Enable Global Interrupt FlagTIM0init();while(1){//主循环if(irok){Ircordpro();irok=0;}if(irpro_ok){ /*遥控成功接收*/switch(IRcord[2])//为什么判断IRcord[2],因为这个里面存放的是数据码{case 0x0c: led1=0;//按0键,灯1亮break;case 0x18: led2=0; //按1键,灯2亮break;case 0x5e: led3=0; //按2键,灯3亮break;case 0x08: led4=0; //按3键,灯4亮break;case 0x1c: led5=0; //按4键,灯5亮break;}}}}附连接图。
单片机红外发射(原理与设计程序)单片机红外发射(原理与设计程序)1.引言本文档旨在介绍单片机红外发射的原理和设计程序。
红外发射是一种常用的通信手段,广泛应用于遥控器、红外传感器、无线通信等领域。
本文将从红外发射的原理入手,介绍单片机的红外发射设计和程序编写的具体步骤。
2.红外发射原理2.1 红外通信概述红外通信是一种无线通信技术,利用红外光传输信息。
它具有传输速率快、抗干扰能力强等优点,被广泛应用于遥控、数据传输等场景。
2.2 红外发射原理红外发射原理是通过控制红外发射器的开关,使其发出特定频率的红外光信号。
通常采用的红外发射器是红外发光二极管,当通过它流过的电流变化时,就会发出对应频率的红外光信号。
一般红外发射的频率为38kHz。
3.硬件设计3.1 单片机选择选择适合的单片机是进行红外发射设计的第一步。
常见的单片机有STM32、Arduino、PIC等,根据需求选择合适的型号。
3.2 电路设计a. 红外发射电路原理图设计红外发射电路时,需要将红外发射器连接到单片机的GPIO 引脚上,并加入适当的电阻和电容进行保护和调节。
b. 电路元件清单列出所需的电路元件清单,包括红外发射器、电阻、电容等。
4.程序设计4.1 开发环境配置配置所选单片机的开发环境,包括安装相应的开发工具、驱动程序等。
4.2 红外发射程序编写编写红外发射程序,实现发送特定频率的红外光信号。
可以使用相应的编程语言进行开发,如C语言、Arduino语言等。
5.附件本文档涉及的附件包括红外发射电路原理图、电路元件清单、红外发射程序源代码等。
6.法律名词及注释6.1 单片机:________一种集成电路芯片,包含中央处理单元(CPU)、内存、输入输出接口等功能。
6.2 红外光:________波长在红光和微波之间的电磁波,可见光的波长范围为380nm-780nm之间。
6.3 红外发光二极管:________一种能够发射红外光的二极管,常用于红外通信和遥控器等领域。
单片机红外遥控系统设计摘要:本文设计了一种基于AT89S52单片机的红外遥控系统,可用于控制多种电器的开关,交流电机的转速及启停等方面。
阐述了发射部分和接收部分的设计原理和工作过程,介绍了一种红外遥控解码程序的实现方法,并用流程图表示了程序的设计过程。
1 引言红外线波长远小于无线电波的波长,所以红外遥控不会干扰其他无线设备的工作;其次其无法穿透墙壁,故不同房间的家用电器可使用通用的遥控器而不会产生相互干扰;再次红外线电路调试简单,只要按给定电路连接无误,一般不需任何调试即可投入工作,并且编解码容易,可进行多路遥控;另外红外遥控器作为控制系统的输入设备,具有成本低、灵活方便的特点。
红外遥控的这些优点可为用户提供方便的操控手段,因此该技术被广泛应用于各种家电产品、娱乐设施、现代化仪器仪表和工业控制中,为现代家居和生产生活增添了一丝亮色。
单片机集CPU,RAM,ROM,I/O口、中断和定时器于一体,具有体积小,重量轻,控制灵活方便,价格低廉等优点,广泛应用于工业自动化、仪器仪表、家用电器、信息和通信产品以及军事装备等方面。
采用单片机进行红外遥控系统设计,具有编程灵活多样,操作码数可随意设定等优点。
单片机经过不断地更新换代,其性能也在不断的提升,其中ATMEL公司生产的闪速存储器单片机芯片AT89S52是一种低功耗,高性能的CMOS8位微控制器,本设计以AT89S52单片机为核心,附以相应的外围电路,构成基于单片机控制的红外遥控系统。
2 系统硬件设计本文所设计的红外遥控系统分为两个部分:即遥控发射部分和接收控制部分(整个系统原理框图如图1,图2所示)。
整个系统需要解决的关键问题是实现红外信号的有效发射与接收,本设计将采用脉冲个数编码,和单片机软件解码的方式来实现红外遥控器对继电器的开和关,从而控制电器设备。
图1:遥控发射部分框图图2:接收控制部分电路2.1遥控发射部分(其电路原理图如图3):主要由AT89S52单片机、矩阵式操作键盘、红外发射电路和电源部分组成。
基于单片机的红外遥控电路设计1 引言红外遥控器已被广泛使用在各种类型的家电产品上,它的出现给使用家器提供了很多的便利。
红外遥控系统一般由红外发射装置和红外接受设备两大部分组成。
红外发射装置又可由键盘电路、红外编码芯片、电源和红外发射电路组成。
红外接收设备可由红外接收电路、红外解码芯片、电源和应用电路组成。
通常为了使信号能更好的被传输发送端将基带二进制信号调制为脉冲串信号,通过红外发射管发射。
本设计采用Atmega8作为红外发射编码和接收解码芯片。
2 系统功能分析一个完整的照明灯的红外遥控电路应具有以下功能:按下任意一个开关能使相应的灯实现亮灭的功能,按下总开关实现所有灯的亮灭,按下相应的定时关闭键能实现电灯在设定的时间内关闭。
3 系统硬件的实现方案3.1 系统原理图通用红外遥控系统由调制、发射和接收三大部分组成,本系统以ATmega8单片机作为红外发射编码和接收解码芯片,另外再以HS5104作为发射编码芯片,5个键盘输入模块中的三个用于给3路电灯分别进行亮灭操作,一个键盘输入模块用于操作所有灯的亮灭,最后剩下的一个键盘输入模块用于实现电灯在设定的时间内关闭的功能。
红外遥控系统如图1所示:图1 红外遥控系统(1)发射系统发射系统一般用电池供电,这就要求芯片的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作,这样可以降低功耗。
红外线通过红外发光二极管(LED)发射出去,红外发光二极管内部材料和普通发光二极管不同,在其两端施加一定电压时,它发出的是红外线而不是可见光。
图2a 简单驱动电路图2b 射击输出驱动电路如图2a和图2b是LED的驱动电路,图2a是最简单电路,选用元件时要注意三极管的开关速度要快,还要考虑到LED的正向电流和反向漏电流,一般流过LED的最大正向电流为100mA,电流越大,其发射的波形强度越大。
图2a电路有一点缺陷,当电池电压下降时,流过LED的电流会降低,发射波形强度降低,遥控距离就会变小。
红外遥控原理人的眼睛能看到的可见光按波长从长到短排列,依次为红、橙、黄、绿、青、蓝、紫。
其中红光的波长范围为0.62~0.76um;紫光的波长范围为0.38~0.46。
比紫光的波长还要短的光叫紫外线,比红光的波长还要长的光叫红外线。
红外线遥控技术就是利用波长为0.76~1.5μm之间的近红外线来传送控制信号的。
常用的红外遥控系统一般分发射和接收两个部分。
发射部分的主要元件为红外发光二极管。
它实际上是一只特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它便发出的是红外线而不是可见光。
目前大量使用的红外发光二极管发出的红外线波长为940nm左右,外形与普通5发光二极管相同,只是颜色不同。
红外发光二极管一般有黑色、深蓝、透明三种颜色。
判断红外发光二极管好坏的办法与判断普通二极管一样:用万用表电阻挡量一下红外发光二极管的正、反向电阻即可。
红外发光二极管的发光效率要用专门的仪器才能精确测定,而业余条件下只能用拉距法来粗略判定。
接收部分的红外接收管是一种光敏二极管。
在实际应用中要给红外接收二极管加反向偏压,它才能正常工作,亦即红外接收二极管在电路中应用时是反向运用,这样才能获得较高的灵敏度。
红外接收二极管一般有圆形和方形两种。
由于红外发光二极管的发射功率都较小,所以红外接收二极管接收到的信号比较微弱,因此就要增加高增益放大电路。
前些年常用μPC1373H、CX20106A等红外接收专用放大电路。
最近几年不论是业余制作还是正式产品,大多都采用成品红外接收头。
成品红外接收头的封装大致有两种:一种采用铁皮屏蔽;一种是塑料封装。
均有三只引脚,即电源正、电源负和数据输出(VO或OUT)。
红外接收头的引脚排列因型号不同而不尽相同,可参考厂家的使用说明。
成品红外接头的优点是不需要复杂的调试和外壳屏蔽,使用外壳屏蔽,使用起来如同一只三极管,非常方便。
但在使用时注意成品红外接收头的载波频率。
单片机红外完整资料
一、红外通信原理
红外遥控有发送和接收两个组成部分。
发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。
红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲。
为了减少干扰,采用的是价格便宜性能可靠的一体化红外接收头(HS0038,它接收红外信号频率为 38kHz,周期约26μs) 接收红外信号,它同时对信号进行放大、检波、整形得到 TTL 电平的编码信号,再送给单片机,经单片机解码并执行去控制相关对象。
如下图所示:
红外发送部分由ST51单片机、键盘、红外发光二极管和7段数码管组成。
键盘用于输入指令,ST51单片机检测键盘上按键的状态,并对红外信号进行调制,发光二极管产生红外线,数码管用来显示发送的键值。
下图左侧红外发射电路
红外接收部分由ST51单片机、一体化红外接收头 HS0038和7段数码管组成。
ST51单片机检测HS0038,并对HS0038接收到的数据解码,通过数码管显示接收到的键值。
图上右侧为红外接收电路;
二、编码与解码原理
(1) 二进制信号的调制
二进制信号的调制由单片机来完成,它把编码后的二进制信号调制成频率为38kHz的间断脉冲串,相当于用二进制信号的编码乘以频率为38kHz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号如下图二进制码的调制所示
(2)红外接收需先进行解调,解调的过程是通过红外接收管进行接收的。
其基本工作过程为:当接收到调制信号时,输出高电平,否则输出为低电平,是调制的逆过程(图 5 解调)。
HS0038 是一体化集成的红外接收器件,直接就可以输出解调后的高低电平信号;红外接收器 HS0038 的应用电路(图 6)。
(3)红外遥控发射芯片采用 PPM 编码方式,当发射器按键按下后 ,将发射一组108ms的编码脉冲。
遥控编码脉冲由前导码、16 位地址码(8 位地址码、 8位地址码的反码)和16位操作码(8位操作码、8位操作码的反码)组成。
通过对用户码的检验,每个遥控器只能控制一个设备动作,这样可以有效地防止多个设备之间的干扰。
编码后面还要有编码的反码,用来检验编码接收的正确性,防止误操作,增强系统的可靠性。
前导码是一个遥控码的起始部分,由一个9ms的高电平 ( 起始码 ) 和一个4. 5ms 的低电平 ( 结果码 )组成,作为接受数据的准备脉冲。
以脉宽为0. 56ms 、周期为1. 12ms 的组合表示二进制的“0”;以脉宽为1. 68ms 、周期为2. 24ms 的组合表示二进制的“1”。
(4)单片机采用外部中断 INT0 管脚和红外接收头的信号线相连,中断方式为边沿触发方式。
计算中断的间隔时间,来区分前导码、二进制的“1”、“0”码。
并将 8 位操作码提取出来在数码管上显示。
红外接收头输出的原始遥控数据信号,正好和发射端倒向.也就是以前发射端原始信号是高电平,那接收头输出的就是低电平,反之.
三、软件工作原理:
开始时发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms
的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”。
解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms 的高电平开始,不同的是低电平的宽度不同,“0”为0.56ms,“1”为1.685ms,所以必须根据高电平的宽度区别“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 的结果码完成后才能读码。
HS0038 红外接收器,接收红外遥控器发射的信号,输出 DATA 口和
单片机的外部中断 0P3.2 口相连。
当有红外信号时,触发中断查询中断时间,并和红外起始码,“0”、“1”、终止码的时间进行比较。
从而检测红外的操作码。
整体流程图如下:
(1)发射部分:通过中断产生38K 的载波,TX 端口产生发送的数据,然后经过与门放大经发射管发射数据:
38k 载波第一列
有效发送数据第二列
对管发射数据第三列
2)接受部分:HS0038A2接受到38k载波时,会输出低电平,否则输出高电平。
将HS0038A2产生的信号经过非门后得的原来的信号。
HS0038A2 产生信号
第一列经过非门后得到原来数据
第二列经过与门
3)设计思想简介:
1:对输入的数据进行编码。
2:对编码进行脉冲调制。
3:信号放大后,通过发射管发送38khz信号。
4:接收信号,进行解码。
5:让ST51对信号进行处理(显示,统计,分析)。