HS0038接收程序

合集下载

HS0038B红外接收管数据手册

HS0038B红外接收管数据手册

D D D D
Suitable burst length ≥10 cycles/burst Low power consumption High immunity against ambient light Continuous data transmission possible (800 bit/s)
Ee min – Threshold Irradiance ( mW/m2 ) 1.0 / E – Rel. Responsitivity e 0.8 2.0 f ( E ) = f0 1.6 1.2 0.8 0.4 0.0 0.7
94 8143
0.6
0.4 0.2 0.0 0.8 0.9 1.0 1.1 1.2 1.3 f / f0 – Relative Frequency
HS0038B
Vishay Telefunken Absolute Maximum Ratings
Tamb = 25_C Parameter Supply Voltage Supply Current Output Voltage Output Current Junction Temperature Storage Temperature Range Operating Temperature Range Power Consumption Soldering Temperature Test Conditions (Pin 3) (Pin 3) (Pin 1) (Pin 1) Symbol VS IS VO IO Tj Tstg Tamb Ptot Tsd Value –0.3...6.0 5 –0.3...6.0 5 100 –25...+85 –25...+85 50 260 Unit V mA V mA °C °C °C mW °C

[教学]HS0038红外接收

[教学]HS0038红外接收

[教学]HS0038红外接收红外接收探头,接收红外信号频率为38kHz,周期约26μs随着家用电器、视听产品的普及,自动化办公设备的广泛应用和网络化的不断发展,越来越多的产品具有了待机功能(如遥控开关、网络唤醒、定时开关、智能开关等)。

产品的待机功能实现遥控操作,极大地方便了我们的生活,但也浪费了大量的能源。

中国节能产品认证中心(CECP)调查显示,全球每个家庭处于待机状态下的家电相当于亮着一个15 W,30 W 的长明灯,仅一台彩电每年在“无用待机状态”下浪费电力近100?,在我国彩色电视机待机一项一年就浪费电力150 多亿度,相当于十几个大型火力发电厂白白发电。

澳大利亚电器设备能源委员会新近的研究成果显示,不仅会耗费可观的电能,每月支付数额不小的“冤枉电费”,而且其释放大量有害气体二氧化碳在一定程度上加速了气候的变暖。

利用本系统可以良好的达到节能和环保的效果。

同时在家庭或工业控制现场,一些手动操作不太方便的场合,可以使用现有遥控器通过设置代替手动操作,比如可以利用家中现有的彩电遥控器,控制其它没有遥控功能的电器(如电灯、计算机、音响、电脑、打印机、饮水机、热水器等),方便生活。

1 系统方案论证和选择为了实现系统整体功能,红外解码部分是核心,红外解码指将遥控发射器所产生的红外遥控编码脉冲所对应的键值翻译出来的过程。

下面将系统方案做一论证,通常有硬件解码和软件解码两种方案。

方案一:此方案中,使用专用遥控器作为控制信号发出装置,当按下遥控器的设置键后,一体化红外接收装置接收到遥控器发出的设置控制信号,然后将信号送到专用的解码芯片中进行解码,解码后将信号送到单片机,由单片机查表判断这个信号是不是设置信号,当确认是设置信号后,启动设置子程序,那么以后接收到的红外信号就是设置的时间信号了,红外接收头接收到红外信号后再通过放大器将信号传到解码器中,解码器解完码后送到单片机,单片机再通过查表确定这些数值并进行设置,然后按下确认键,红外接收头接收到这个信号并通过放大送到解码器中,解码后再送到单片机中,单片机通过查表确定这是确认操作后,可以通过可控硅控制电源通断。

【免费下载】HS0038红外接收

【免费下载】HS0038红外接收

说明红外接收头和遥控器至少有一个损坏。

只要确保遥控器工作正常,很容易判断红外接收头的优劣。

2.2 红外遥控解码的实现 因为要进行遥控操作,必须使被遥控对象能够认识遥控指令,这样才能对其进行操作。

举例说明一下:假如我只会说汉语,而JIM 只会说英语,让我们两个独自交流的话肯定不会有什么结果,那我们要进行交流,怎么办?这就需要一个翻译者来做中间人了,翻译者将JIM(我)说的话翻译给我(JIM)能够听懂、识别的语言,这样我们交流就没问题了。

同样,在红外遥控方面,要使被遥控对象能够识别遥控指令,那就需要一个“翻译者”,我们将这作为一个过程,叫解码。

本系统中所使用的遥控器为普通电视遥控器,红外芯片采用的是3010 芯片。

识别方法分析:为了用软件识别以上波形,采用与程控交换机中“脉冲号码识别法”类似的方法来解决。

用扫描的方式对接收波形快速扫描,然后根据扫描结果分析出编码值。

识别编码的关键之一是确定扫描周期。

分析波形和参数知道:整个数据14 位,总时长为22 ms~25 ms,则一个数据位时长为1.5 ms~1.8 ms,占空比1:1,脉宽为750 μs~900 μs。

在编程时要考虑脉宽的偏差容限,为保证扫描精度,选取扫描周期为100μs。

识别编码的关键之二是判别“0”和“1”。

数据“0”为波形从低到高,即在相邻的 2 次扫描中,扫描值从0 到1,则识别数据为“0”;数据“1”为波形从高到低,即在相邻的 2 次扫描中,扫描值从 1 到0,则识别数据为“1”。

为了记录相邻 2 次扫描值,则分别用 2 个变量来记录当前扫描值和前一次的扫描值,程序中用变量TheB 和PreB。

识别编码的关键之三是识别各个数据比特的跳变时刻。

为了识别这种跳变时刻,用一个标志位做“变化识别标志位”,程序中用VIB 表示,它由前次扫描值和当前扫描值“相异或”而得,即VIB=PreB TheB,若VIB=1,则说明是跳变时刻。

但是,在 2 个数据位之间,也有一个跳变,为了将它与数据位中的有效跳变区分开,设置一个“数据有效标志位”,程序中用IDB 表示。

红外HS0038

红外HS0038
4、要判定23ms的时间间隔,如果大于等于23ms则退出。
5、获得的数据倒数第二位为有效数据,倒数第一位为校验位。(校验方法:最后一个字节取反,然后判断是否与倒数第二个字节相等,如果相等则表明解码正确,否则解码错误)
6、比对数据。(switch case:break;)
在用HS0038红外接收器时要注意:在接受数据期间不能有中断发生,否则可能出现数据的干扰,按同一个键,每次解码的数据都不相同。
步棸:
初始化IO口(即为高电平)
1、跳过9ms的高电平,(用while(IO的状态)循环等待)
2、跳过4ms的低电平,方法同上
开始解,如果大于1ms则为1,否则为0 ,内循环8次(获得一个字节),外循环4次(获得4个字节)。

单片机红外接受发送实验报告

单片机红外接受发送实验报告

单片机红外发射与接收实验报告指导老师:报告人:一·实验选题:基于单片机的红外发射与接收设计任务要求:设计一个以单片机为核心控制器件的红外收发系统。

发射载频:38KHz工作温度:-40℃--+85℃接收范围:2m二·系统概述方案设计与论证红外遥控收发系统(以下简称红外遥控系统)是指利用红外光波作为信息传输的媒介以实现远距离控制的装置。

从实际系统的硬件结构看,红外遥控系统包括发射装置和接收装置,其中发射装置包括电源模块、输入模块、红外发射模块和单片机最小系统,接收装置包括电源模块、红外接收模块、输出模块和单片机最小系统。

本设计选题设计任务要求设计一个以单片机为核心控制器件的红外收发系统。

其中,发射载波 38KHz,电源 5V/0.2A 5V/0.1A,工作温度-40℃--+85℃,接收范围 2m,传输速率 27bit/s,反应时间 2ms。

利用单片机的定时功能或使用载波发生器(用于产生载波的芯片)均可产生 38KHz 的发射载波。

单片机系统可以直接由 5V/0.1A 的电源供电,也可以通过三端稳压芯片由 9V/0.2A 电源供电。

采用工业级单片机可以工作在-40℃--+85℃。

为保证接收范围达到 2m,在发射载频恒为 38KHz 的前提下,应采用电流放大电路使红外发射管发射功率足够大。

传输速率和反应时间取决于所使用的编码芯片或程序的执行效率。

通过上述分析可知,为实现设计任务并满足设计指标,应采用工业级单片机,由电流放大电路驱动红外发射管。

将针对设计任务提出两种设计方案。

三·程序功能将程序编译通过并下载成功后,两个板上的红外光电器件都要套上黑色遮光罩,就可以进行实验了。

测距实验:手持1号板和2号板,两管相对,慢慢拉远或移近两管的距离,观察LED的读数变化。

阻断实验:可请另一人协助,将一张纸或其他障碍物放在两管之间再拿开,会看到读数有大幅度的变化。

反射实验:将1号和2号实验板并排拿在手中,并形成一个小夹角,向一张白纸移动观察读数变化。

51单片机红外解码、超声波测距程序(详细解释程序)

51单片机红外解码、超声波测距程序(详细解释程序)

// c51红外解码、超声波测距程序#include <reg52.h>#define uchar unsigned char#define uint unsigned int#define count 4uchar data IRcode[4]; //定义一个4字节的数组用来存储代码uchar table[4];uchar enled[4]={0x1f,0x2f,0x4f,0x8f};uchar CodeTemp,temp,tt; //编码字节缓存变量uchari,j,k,temp,timeH,timeL,succeed_flag,flag,h,h1,h2,a,key,key1,key2; //延时用的循环变量uint distance,distance1,time; //距离,timesbit IRsignal=P3^2; //HS0038接收头OUT端直接连P3.2(INT0)sbit come=P3^3;sbit d=P1^1;//发送码sbit BZ=P1^0;sbit s=P3^7;//38ksbit ss=P3^6;//38kuchar m;// 开关控制//sbit n=P2;//电机反转code unsigned charseg7code[10]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28}; //显示段码/**************************** 定时器0中断************************/void timer0() interrupt 1{TH0=(65536-count)/256;TL0=(65536-count)%256;s=~s;//产生38K信号ss=~ss;//tt++;//发送超声波个数}/**************************** 延时0.9ms子程序************************/void Delay0_9ms(void){uchar j,k;for(j=18;j>0;j--)for(k=20;k>0;k--);}/***************************延时1ms子程序**********************/void Delay1ms(void){uchar i,j;for(i=2;i>0;i--)for(j=230;j>0;j--);}/***************************延时4.5ms子程序**********************/ void Delay4_5ms(void){uchar i,j;for(i=10;i>0;i--)for(j=225;j>0;j--);}/**************************** 解码延时子程序************************/ void Delay(void){uchar i,j,k;for(i=100;i>0;i--)for(j=100;j>0;j--)for(k=3;k>0;k--);}/**************************** 显示延时子程序************************/ void ledDelay(unsigned int tc) //延时程序{unsigned int i,j;for(i=0;i<10;i++)for(j=0;j<tc;j++);}/************************************************ ****************///定时器1中断,用做超声波测距无回波void timer1() interrupt 3{TR1=0;ET1=0;EX1=0;TH1=0;TL1=0;}/***********************显示程序*********************/ void Led(int date) //显示函数{ int i;table[0]=date/1000;table[1]=date/100%10;table[2]=date/10%10;table[3]=date%10;date=0;for(i=0;i<120;i++){P2=enled[i%4]&m;//P2口高四位控制数码管,低位陪分控制继电器P0=seg7code[table[i%4]]; //取出千位数,查表,输出。

(整理)红外数据传输

(整理)红外数据传输

红外数据传输一、红外通信原理红外遥控有发送和接收两个组成部分。

发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。

红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲。

为了减少干扰,采用的是价格便宜性能可靠的一体化红外接收头(HS0038,它接收红外信号频率为38kHz,周期约26μs) 接收红外信号,它同时对信号进行放大、检波、整形得到TTL 电平的编码信号,再送给单片机,经单片机解码并执行去控制相关对象。

如图1 所示:红外发送部分由51单片机、键盘、红外发光二极管和7段数码管组成。

键盘用于输入指令,51单片机检测键盘上按键的状态,并对红外信号进行调制,发光二极管产生红外线,数码管用来显示发送的键值。

图2红外发射电路红外接收部分由51单片机、一体化红外接收头HS0038和7段数码管组成。

51单片机检测HS0038,并对HS0038接收到的数据解码,通过数码管显示接收到的键值。

图3红外接收电路二、编码、解码(1) 二进制信号的调制二进制信号的调制由单片机来完成,它把编码后的二进制信号调制成频率为38kHz 的间断脉冲串,相当于用二进制信号的编码乘以频率为38kHz 的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号如图4 二进制码的调制所示(2) 红外接收需先进行解调,解调的过程是通过红外接收管进行接收的。

其基本工作过程为:当接收到调制信号时,输出解调后的高低电平信号;红外接收器HS0038的应用电路(图6)。

(3)红外遥控发射芯片采用PPM 编码方式,当发射器按键按下后,将发射一组108ms 的编码脉冲。

遥控编码脉冲由前导码、16位地址码(8 位地址码、8 位地址码的反码)和16位操作码(8 位操作码、8 位操作码的反码)组成。

通过对用户码的检验,每个遥控器只能控制一个设备动作,这样可以有效地防止多个设备之间的干扰。

编码后面还要有编码的反码,用来检验编码接收的正确性,防止误操作,增强系统的可靠性。

基于单片机密码锁的设计剖析

基于单片机密码锁的设计剖析

毕业设计说明书基于单片机电子密码锁的设计学院:专业:学生姓名:学号:指导教师:2014 年 6 月摘要摘要本次设计题目为遥控电子密码锁的设计,与传统锁相比,电子密码锁具有非常多的优点:操作简单,易于编程等,因而也具有更广阔的市场应用前景。

这次毕设采用8051做为核心,加上各种外接电路实现要求的各种功能,例如:矩阵键盘电路、红外接收和发射电路、LCD屏显示器等等,密码锁的功能包括设置原始密码、实现本机开锁、8到10米遥控开锁、密码错误3次报警报警、修改密码的能力。

下面的论文比较详细说明了遥控密码锁的硬软件电路电路设计、总机电路图,个人认为设计的难点在于红外线的发射和接收,如果使用传统的编码器、解码器就会使是系统变得异常复杂,故我们应该打破传统思维的限制利用现代化技术找到一种可以替代的简单技术来解决问题。

这种新技术是应用单片机来调制红外线信号,然后用红外发射管发射出去。

本机接收部分用HS0038器件,它是接收周期约为26us,频率约为38KHZ的信号,它能够一次性完成模拟电路的分立元件完成的对信号的接收、放大等,HS0038输出的是TTL信号,可以直接输入单片机进行处理。

这个原件会使本机接受部分电路的设计变得简单,使用方便,降低了成本。

本次设计的的电子密码锁的实用性非常强,比如它能够用在家里和仓库的门上也可以用在保险柜或者汽车门上,并且这种所比较传统的机械锁更加安全保障。

实际的生活和生产中,我们可能会碰到许多对身体健康有害的环境:有害气体、辐射等等,因此采用遥控的方式开锁既可以最大限度的隔离各种电气干扰。

关键词:安全、密码锁、红外遥控AbstractAbstractThis design titled infrared remote electronic locks design, compared with the traditional locks, remote electronic locks have a lot of advantages: easy to operate , easy to program , and thus also have a broader market prospects. The remote electronic locks designed into two modules: the transmitter module and receiver module . The entire system to AT89C51 core , plus keyboard circuit, crystal oscillator circuit, infrared receiver circuit, alarm circuit , infrared transmitter circuit , display circuit and other peripheral circuits to achieve, with the default six original password , the machine lock, remote keyless entry , password input error alarm , change passwords and other functions. The following paper introduces the overall design of the infrared remote electronic locks , hardware circuit and software circuit , difficulty personally think that design is an infrared transmitter and receiver , if you use a traditional encoders, decoders will make the system become abnormal complex , it must find a new way to solve the problem . Part of the launch to modulate the signal using light-emitting diodes to emit infrared light. Receiver section uses integrated receiver HS0038, it receives a frequency of 38KHZ, a period of 26us, it can be a remote control signal reception , amplification, detection , plastic rolled into one , and the output of the it can be identified TTL signal , thereby greatly simplifying a receiving circuit design and circuit complexity , ease of use.The design of the electronic locks practicality is very strong, such that it can be used at home and warehouse doors can also be used in the safe or car door , and this the more traditional mechanical lock more security. In industrial production , we will encounter a variety of environments : harmful gases, radiation , etc., so a way to unlock the remote control to maximize both the isolation of various electrical interference .Keywords : security , password lock , infrared remote control.目录摘要 (I)Abstract (III)目录 (IV)第一章绪论 (1)1.1设计的背景及其意义 (1)1.2 电子密码锁的研究现状 (2)1.3 红外通信概述 (3)1.4设计的要求及其指标 (4)1.4.1主要设计内容 (4)1.4.2主要设计指标及其参数 (4)第二章系统总体方案设计 (5)2.1 整体设计思路 (5)2.2 硬件电路设计方案 (5)2.2.1 遥控发射部分设计 (5)2.2.2 本机接收部分设计 (6)3.1 AT89C52单片机 (8)3.1.1 AT89C52简介 (8)3.1.2 AT89C52的引脚功能 (8)3.1.3 晶振电路设计 (10)3.1.4复位电路 (11)3.2 电源电路 (12)3.3 红外发射电路 (14)3.3.1 红外对管简介 (14)3.3.2 红外发射电路 (14)3.4 红外接收电路设计 (15)3.4.1 HS0038概述 (15)3.4.2 红外一体化接收头的特性: (16)3.4.3 红外接收电路图 (17)3.5 键盘电路 (17)3.5.1 矩阵键盘原理 (17)3.5.2矩阵键盘原理图 (18)3.6 显示电路 (19)3.7 报警电路设计 (20)3.8 电磁锁部分电路 (21)第四章软件设计 (23)4.1 系统发射部分的软件设计 (23)4.1.1 主程序流程图 (23)4.1.2 延时10ms 子程序 (24)4.1.3 键盘扫描程序 (24)4.1.4 红外发射程序 (26)4.2 主机接收部分程序设计 (28)4.2.1 主程序设计 (28)4.2.2 红外接收程序 (28)4.2.3 密码识别子程序 (30)4.2.4 报警部分程序 (30)4.2.5 显示子程序 (31)4.2.7 修改密码子程序 (32)第五章结论 (34)参考文献 (35)致谢 .......................................... 错误!未定义书签。

hs0038的工作原理

hs0038的工作原理

hs0038的工作原理
HS0038是一款红外线接收头,其工作原理是接收到已调制的红外线信号后,在其输出端有信号输出,再通过三极管放大并解调出信息信号(此信号有音频信号的特征),再通过电容耦合到收音机的音量电位器输入端,调整音量电位器到合适位置,扬声器里发出“嘟嘟”声,同时并联在扬声器两端的发光二极管闪烁发光。

此外,HS0038还可以用于检测烟雾浓度,通过检测烟雾中的灰尘含量来测量烟雾浓度。

如需更多信息,建议查看相关资料或咨询专业人士。

红外遥控解码程序

红外遥控解码程序

红外遥控解码程序红外接收头的型号有很多HS0038 VS838等功能⼤致相同,只是引脚封装不同。

红外接收有⼏种统⼀的编码⽅式,采样哪种编码⽅式取决于遥控器使⽤的芯⽚,接收头收到的都是⼀样的。

电视遥控器使⽤的是专⽤集成发射芯⽚来实现遥控码的发射,如东芝TC9012,飞利浦AA3010T等,通常彩电遥控信号的发射,就是将某个按键所对应的控制指令和系统码(由0和1组成的序列),调制在38KHz的载波上,然后经放⼤、驱动红外发射管将信号发射出去。

不同公司的遥控芯⽚,采样的遥控码格式也不⼀样,较普遍的有两种,⼀种NEC标准,⼀种是PHILIPS标准。

NEC标准:遥控载波的频率为38KHz(占空⽐1:3)当某个键按下时,系统⾸先发射⼀个完整的全码,如果按键超过108ms仍未松开,接下来发射的代码(连发代码)将由起始码(9ms)和结束码(2.5ms)组成。

⼀个完整的全码 = 引导码 +⽤户码 +⽤户码 + 数据码 + 数据码 + 数据反码。

其中,引导码⾼电平9ms,低电平4.5ms;系统码8位,数据码8位,共32位;其中前16位为⽤户识别码,能区别不同的红外遥控设备,以防⽌不同的机种遥控码互相⼲扰。

后16位为8位的操作码和8位的操作反码,⽤于核对数据是否接收准确。

收端根据数据码做出应该执⾏上⾯动作的判断。

连发代码是在持续按键时发送的码。

它告知接收端。

某键是在被连续的按着。

NEC标准下的发射码表⽰发射数据0时⽤”0.56ms⾼电平 + 0.565ms低电平 = 1.125ms”表⽰;数据1⽤”⾼电平0.56ms + 1.69ms = 2.25ms”表⽰。

遥控器发射信号:需要注意的是:当⼀体化接收头收到38kHz红外信号时,输出端输出低电平,否则为⾼电平。

所以⼀体化接收头输出的波形和发射波形是反向的PHILIPS标准:载波频率38KHz:没有筒,点按键时,控制码1和0之间切换,若持续按键,则控制码不变。

⼀个全码 = 起始码’11’ +控制码 + ⽤户码 + ⽤户码数据0⽤“低电平1.778ms + ⾼电平1.778ms”表⽰;数据1⽤“⾼电平1.778ms + 低电平1.778ms”表⽰。

msp430程序hs0038红外

msp430程序hs0038红外

#include<msp430x14x.h>#define KEY_DIR P1DIR#define KEY_OUT P1OUT#define KEY_IN P1IN#define KEY_IE P1IE#define KEY_IES P1IES#define KEY_IFG P1IFG/***************全局变量***************/unsigned char Key_Val; //存放键值void CtrlKey(unsigned char sw); //控制键盘开关//sw=0关sw=1开/*******************************************函数名称:Init_Keypad功能:初始化扫描键盘的IO端口参数:无返回值:无********************************************/void Init_Keypad(void){KEY_DIR = 0x0f; //P1.0~P1.3设置为输出状态,P1.4~P1.7输入状态(上拉H) KEY_OUT=0;KEY_IES =0xf0; //P1.4~P1.7允许中断KEY_IE =0xf0; //P1.4~P1.7下降沿触发中断KEY_IFG=0; //中断标志清0P2DIR=0XFF;P2OUT|=0XFF;Key_Val = 0;}/*******************************************函数名称:Check_Key功能:扫描键盘的IO端口,获得键值参数:无返回值:无********************************************///p14\5\6\7 接上拉电阻/***************************************key_Val 对应键值列:[p14] [p15] [p16] [p17]↓↓↓↓行:[p13]→ 1 2 3 4[p12]→ 5 6 7 8[p11]→9 10 11 12[p10]→13 14 15 16***************************************/void Check_Key(void){unsigned char row ,col,tmp1,tmp2;unsigned char keymap[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};//设置键盘逻辑键值tmp1 = 0x08;for(row = 0;row < 4;row++) //行扫描{KEY_OUT = 0x0f; //P1.4~P1.7输出全1KEY_OUT -= tmp1; //P1.4~p1.7输出四位中有一个为0 tmp1 >>=1;if((KEY_IN & 0xf0)<0xf0) //是否P1IN的P1.0~P1.3中有一位为0 {tmp2 = 0x10; // tmp2用于检测出哪一位为0for(col = 0;col < 4;col++) // 列检测{if((KEY_IN & tmp2) == 0x00) // 是否是该列,等于0为是{Key_Val = keymap[row*4 + col]; // 获取键值return; // 退出循环}tmp2 <<= 1; // tmp2右移1位}}}}/*******************************************函数名称:delay功能:延时约15ms,完成消抖功能参数:无返回值:t= tmp*5*clk 根据使用时钟调整tmp值********************************************/void delay(void){unsigned int tmp;for(tmp = 12000;tmp > 0;tmp--);}/*******************************************函数名称:Key_Event功能:检测按键,并获取键值参数:无返回值:无********************************************/void Key_Event(void){unsigned char tmp;KEY_OUT =0; // 设置P1OUT全为0,等待按键输入tmp = KEY_IN; // 获取p1INif((tmp & 0xf0) < 0xf0) //如果有键按下{delay(); //消除抖动Check_Key(); // 调用check_Key(),获取键值}}/********************************************************************* 控制打开或者关闭键盘中断SW= 0:关闭;ELSE:打开*********************************************************************/ void CtrlKey(unsigned char sw){if(sw==0)KEY_IE =0; //关闭端口中断elseKEY_IE =0xf0; //打开端口中断}void main(){WDTCTL = WDTPW + WDTHOLD; //关闭看门狗Init_Keypad();_EINT();}/*端口1按键中断*/#pragma vector=PORT1_VECTOR__interrupt void Port(void){if((KEY_IFG&0xf0)!=0){Key_Event();if(Key_Val!=0) //键值!=0有键按下{CtrlKey(0); //关键盘中断if(Key_Val==2)P2OUT=0X00;}}KEY_IFG=0;KEY_OUT=0; //清中断标志CtrlKey(1);}。

红外遥控实验

红外遥控实验

红外遥控通信系统现在家电产品大部分配有红外线遥控器,在PC上也有红外传输的接口,有些鼠标加了红外控制接口,变成了无线鼠标。

所以说使用红外已经是一种非常广泛的通信方式。

红外通信知识的概述。

实验内容简介实验目的1、掌握红外通信系统的知识。

2、学会对接收到的红外信号进行解码操作。

3、学会如何使用单片机来控制红外发射器发射红外信号。

4、了解NEC码的编码方式等相关知识。

实验要求1、使用开发板上的红外发射器TSAL6200模拟一个采用NEC码的红外遥控器进行红外信号的发射。

2、红外的编码使用开发板上的矩阵键盘实现(按键扫描实验)。

3、开发板通过红外接收模块(HS0038)完成红外数据的接受,同时进行解码等操作。

4、MCU对解码后的数据进行处理,将其显示在数码管上。

简单硬件需求分析1、一般的红外通信系统都由发射与接收两个部分组成,所以我们需要一个发送红外信号的发射器和一个红外接收器,由于我们需要对接收到的红外信号进行解码,然后送给单片机进行处理,所以选择的接收器应该可以解码出单片机可以直接处理的数据。

2、选择一个MCU对红外发射器进行控制,得到想要的红外数据。

3、由于我们实验需要显示接收到的红外数据,所以需要一个显示器件,数码管就能够满足显示的需求。

开发板设计HS0038模块:HS0038是一个直接输出MCU可以处理的数字信号,所以在电路连接中,可以直接将它的OUT引脚接在单片机的I/O口上,进行红外数据的处理,但是在我们的开发板上,不仅接在了I/O口上,同时也将其接在了8259A中断控制器上,这样做,可以让我们在编写程序时有多种做法。

这里的OUT引脚默认情况下为高电平的,这是上拉电阻所起到的作用。

TSAL6200模块:该器件是一个红外发射器,发射器的一端接在5V电源上,另一段接在PNP型三极管的发射极上,三极管主要起到一个电流放大的作用。

这里的IR_OUT信号通过电阻接在电源上,除了让IR_OUT信号线在默认情况下输出高电平的作用外(IR_OUT=1红外发射管不工作),还起到了分压的作用,因为TSAL6200的正向压降只有1.35V(详细内容见TSAL6200)。

采用HS0038对万能红外电视遥控器的解码(C51源码)

采用HS0038对万能红外电视遥控器的解码(C51源码)
for(i=0;i<4;i++) //通过串口将代码发出
{
SBUF=IRcode[i];
while(!TI); //等待一个字节发送完毕
TI=0;
}
Delay();
/******************************************************************/
#include <REGX52.h>
#define uchar unsigned char
uchar data IRcode[4]; //定义一个4字节的数组用来存储代码
{uchar i,j;
for(i=2;i>0;i--)
for(j=230;j>0;j--) ;
}
/***************************延时4.5ms子程序**********************/
void Delay4_5ms(void)
{uchar i,j;
EA=1; //开所有中断
CodeTemp=0; //初始化红外编码字节缓存变量
Delay();
while(1);
}
TL1=0xff;
TR1=1;
}
/**************************主程序*************************/
void main()
{ initUart();
IT0=1; //INT0为负边沿触发, (1:负边沿触发,0:低电平触发)
EX0=1; //外部中断INT0开, (1:开, 0:关 )
{while(IRsignal==0);

利用红外线实现单片机间的数据通信

利用红外线实现单片机间的数据通信

前言:在电子线路综合设计中,往往会用到单片机间的通信,常用的通信方式有串行通信,比如232通信和485通信,这些通信方式技术成熟,传输速率快,在日常生活中得到较多的应用。

笔者在此结合实例介绍了另一种单片机间实现通信的方式——红外通信。

红外通信的显著优点就是无线连接,可以给作品添几分神奇。

如果采用单工通信,还可以有效地节约I/O资源(仅占一个I/O口),但是它也有一定的缺点,比如传输距离近(笔者作品有效距离为6m),传输具有方向性,而且传输速率较慢。

为了让读者更好的了解单片机间红外数据的传输,笔者设计了一套能够进行半双工通信的红外温度传输系统,并且附了本人编写的源程序。

作品介绍本系统采用红外半双工通信,首先主机通过红外发射二极管发送接收数据请求至从机,从机收到发射请求后进行温度数据发射(采用常用的数字温度传感器DS18B20采集),主机接收到数据后通过常用的液晶OCM12864(不带字库)进行显示,然后重复进行上述过程。

为提高系统可靠性,采用单片机定时器(也可以采用专门调制芯片)对码元进行38KHz调制,接收端采用型号为HS0038-A2的红外线信号解调器进行解调.为提高本系统的通用性,使读者能够在本系统基础上更好的进行开发,笔者设计了两个通用模块,即主机解调显示模块和从机调制发射模块,读者只需要改变接入从机的数据(从剩余的29个I/O口输入),即可实现基于红外线的半双工无线通信.需要采集其它数据时,只需修改从机系统第二片单片机上的程序,不会与负责发送的单片机产生时序上的冲突。

本系统中接入数据为另一片单片机通过DS18B20采集的温度信号.实现原理本系统中红外数据编码规则参考异步通信格式:起始位:发送3ms的38KHz的脉冲,接收端对应3ms低电平数据位:停发1ms脉冲,然后发2ms的38KHz脉冲,接收端分别对应1ms的高电平,2ms的低电平停止位:停3ms及以上,接收端对应3ms以上高电平图1 红外调制解调波形图图2 发送端信号波形(连续发送2,3,4,5,深色部分为38KHz方波脉冲)采用单片机定时器T0进行编码调制,红外调制信号经HS0038-A2解调后,通过单片机定时器T1进行计数还原原来数据.电路原理图主机电路图图3 系统主机电路图从机电路图图4 系统从机电路图软件流程图结语:本实验通过红外半双工通信实现了单片机之间的相互通信,电路简单,通信可靠,程序具有一定得通用性,读者可在这两个通用模块基础上在较短时间内继续进行灵活开发,实现更多功能,比如多点信号采集,红外控制,红外抄表等。

(整理)HS0038红外一体化接收头.

(整理)HS0038红外一体化接收头.

NB0038一体化红外接收头电路一、概述NB0038是一种用于红外遥控接收或其它方面的小型一体化接收头,中心频率为38.0kHz,可改善自然光的反射干扰.独立的PIN二极管同前置放大器集成在同一封装上.NB0038环氧树脂封装提供一个特殊的红外滤光器,可防止自然光的干扰.NB0038在抗自然光的干扰方面有极好的性能,可防止无用脉冲输出.二、特性◆∙∙∙∙ 光电检测和前置放大器集成在同一封装上.◆∙∙∙∙ 内带PCM频率滤波器.◆∙∙∙∙ 对于自然光有较强的抗干扰性.◆∙∙∙∙ 改进了对电场干扰的防护性.◆∙∙∙∙ 电源电压5V,低功耗.◆∙∙∙∙ 输出电平兼容TTL,CMOS.三、封装尺寸注意:1、除已标注外,公差为±0.25mm2、引脚之间的距离是在引脚从封装中露出来时测量的.四、框图五、技术参数1.极限值2.电光特性六、测试方法A.标准发送NB1838一体化红外接收头电路1.概述NB1838是一种用于红外遥控接收或其它方面的小型一体化接收头,中心频率为37.9kHz,可改善自然光的反射干扰。

独立的PIN 二极管同前置放大器集成在同一封装上。

NB0038环氧树脂封装提供一个特殊的红外滤光器,可防止自然光的干扰。

NB0038在抗自然光的干扰方面有极好的性能,可防止无用脉冲输出。

2.特性∙光电检测和前置放大器集成在同一封装上。

∙内带PCM频率滤波器。

∙对于自然光有较强的抗干扰性。

∙改进了对电场干扰的防护性。

∙电源电压5V,低功耗。

∙输出电平兼容TTL,CMOS。

外形图1.注:1.材料厚度:0.40±0.052.公差为±0.1(除另有注明外)。

四、框图五、技术参数1.极限值(Ta=25℃)2.电光特性(Vcc=5V)六、测试方法A.标准发送B.检测器距离测试C、脉宽测试七、特征曲线(TA=25℃)注1:晶体管的发射极和检测器之间的最大距离必须满足在标准发送条件下输出波形的满足的极限距离。

HS0038红外接受电路设计与应用

HS0038红外接受电路设计与应用

HS0038红外接受电路设计与应用红外接收电路是一种常用的电子电路,在很多领域中都有广泛的应用。

它主要用于接收和解码红外线信号,从而实现远程控制、通信、遥控器等功能。

本文将从红外接受电路的原理、设计和应用方面进行详细介绍。

一、红外接收电路的原理红外接收电路主要由红外传感器以及解码电路组成。

其中,红外传感器是将红外线信号转化为电信号的核心部件,而解码电路则用于解码接收到的电信号,以获取所需的信息。

红外传感器一般采用的是红外光敏二极管,常用的红外光敏二极管有HS0038、HS0038B等型号。

它们是一类特殊的二极管,只对红外线具有敏感性。

当红外线照射到光敏二极管时,光敏二极管内部会产生电压信号,信号的幅度与照射光的强度成正比。

然后,这个电压信号会通过一个电压比较器进行放大和处理,最后输出一个数字信号。

解码电路是将接收到的数字信号解码为对应的功能信号。

常用的解码电路有NEC、SONY等协议解码电路。

解码电路会识别数字信号的序列标识,根据标识的不同来生成相应的功能信号。

例如,遥控器的数字信号可以代表不同的按键操作,解码电路会根据接收到的数字信号来判断用户所按下的按键,并触发相应的功能。

二、红外接收电路的设计在设计红外接收电路时,需要考虑到传感器的信号放大、滤波以及解码等多个方面。

下面是一个简单的红外接收电路设计流程:1.选择合适的红外传感器:在选择红外传感器时,要根据具体的应用场景来确定。

不同的红外传感器有不同的特性和响应频率,需要根据实际需求进行选择。

2.放大和滤波电路设计:接收到的红外信号一般较弱,需要经过放大电路的放大处理。

常见的放大电路有共射放大电路、共集放大电路等。

此外,为了去除杂波信号,还需要设计一个合适的滤波电路。

3.解码电路设计:解码电路根据具体的协议来设计。

常用的解码协议有NEC、SONY等。

解码电路的设计需要根据协议的要求,选择合适的电子元件和电路连接方式。

4.供电电路设计:红外接收电路一般需要外部供电,因此需要设计一个合适的供电电路。

史上最全的红外资料__HS0038_PH302_免费下载

史上最全的红外资料__HS0038_PH302_免费下载

红外数据传输一、红外通信原理红外遥控有发送和接收两个组成部分。

发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。

红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲。

为了减少干扰,采用的是价格便宜性能可靠的一体化红外接收头(HS0038,它接收红外信号频率为38kHz,周期约26μs) 接收红外信号,它同时对信号进行放大、检波、整形得到TTL 电平的编码信号,再送给单片机,经单片机解码并执行去控制相关对象。

如图1 所示:红外发送部分由51单片机、键盘、红外发光二极管和7段数码管组成。

键盘用于输入指令,51单片机检测键盘上按键的状态,并对红外信号进行调制,发光二极管产生红外线,数码管用来显示发送的键值。

图2红外发射电路红外接收部分由51单片机、一体化红外接收头HS0038和7段数码管组成。

51单片机检测HS0038,并对HS0038接收到的数据解码,通过数码管显示接收到的键值。

图3红外接收电路二、编码、解码(1) 二进制信号的调制二进制信号的调制由单片机来完成,它把编码后的二进制信号调制成频率为38kHz 的间断脉冲串,相当于用二进制信号的编码乘以频率为38kHz 的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号如图4 二进制码的调制所示(2) 红外接收需先进行解调,解调的过程是通过红外接收管进行接收的。

其基本工作过程为:当接收到调制信号时,输出高电平,否则输出为低电平,是调制的逆过程(图5 解调)。

HS0038是一体化集成的红外接收器件,直接就可以输出解调后的高低电平信号;红外接收器HS0038的应用电路(图6)。

(3)红外遥控发射芯片采用 PPM 编码方式,当发射器按键按下后,将发射一组 108ms 的编码脉冲。

遥控编码脉冲由前导码、16位地址码(8 位地址码、 8 位地址码的反码)和16位操作码(8 位操作码、 8 位操作码的反码)组成。

自定义红外通讯

自定义红外通讯

自定义红外通讯红外通讯协议使用HS0038(电视遥控接收)进行数据通讯的方案:使用HS0038进行数据通讯,有以下注意事项需要说明1.波特率只能为1K左右,因为HS0038解码输出本身只有1K 左右;2.数据通讯为半双工方式;3.数据通讯量不能很大,否则可能出现累计误差;4.发射段需要调制38K的载波(允许一定误差);上面的时序图,就是我在实际应用中,自己定义的时序。

数据位为1ms的长度,占空1:1,前低后高为0,前高后低为1。

如果高电平时间超过2ms,就表示接收结束。

数据头可以自己定义,只要与数据位区分开就可以了。

上图就是实现红外数据收发电路。

使用P1.7作为38K载波的发生器,P1.6作为数据的输出脚。

为了保证接收的实时性,使用INT0作为数据接收的输入脚。

;--------------------------; 数据定义;---------------------------CW38 BIT P1.7ODATA BIT P1.6SIGNI BIT P3.2;SNUM DA TA 30H ;RNUM DATA 31HTNUM DATA 32HLNUM DA TA 33H ;数据接收低电平允许时间HNUM DA TA 34H ;WR_NUM DA TA 35H ;BUFF DATA 40H ;STATE BIT 00H ;0为接收状态;1为发送状态PLUS BIT 01H ;为发送玛位RXDP BIT 02H ;0表示无红外信息,1表示有红外进入ORXD BIT 03H ;表示上次接收的位状态NRXD BIT 04H ;0表示接收的实际数据位,1表示反转位RD_WR BIT 05H ;0是数据指令,1为设置指令EIRED BIT 06H ;0正常,1数据接收错误CNUM BIT 07H ;采样周期到CPU的初始定义ORG 0000HAJMP STARTORG 0003HAJMP PINT0ORG 000BHAJMP PTIME0ORG 001BHCPL CW38RETIORG 0030HSTART: MOV TMOD,#22H ;定时器采用自动重载方式MOV TCON,#02HMOV TL0,#205MOV TH0,#205 ;定时器0每55us产生1个中断,18个为1ms,9个为0.5msMOV SNUM,#9MOV RNUM,#0MOV TL1,#244 ;产生38K方波MOV TH1,#244MOV 20H,#0 ;状态位清零MOV 21H,#0MOV LNUM,#3MOV HNUM,#3SETB PT1 ;38K方波的中断最优先MOV IE,#10000001B ;使能中断INT0红外发送程序:SEND1: MOV R7,#3CLR CNUMSEND10: CLR PLUSCLR ODATASETB TR0SETB TR1MOV IE,#10001010B ;使能定时器0、1中断JNB CNUM,$CLR CNUMDJNZ R7,SEND10MOV R7,#2SETB PLUSSEND12: JNB CNUM,$CLR CNUMDJNZ R7,SEND12 ;以上为数据头发送MOV R0,#BUFF ;发送缓冲区MOV R1,#13 ;数据发送个数SEND15: MOV R6,#8MOV A,@R0DJNZ R1,SEND13SJMP SEND1WSEND13: RRC AMOV PLUS,CSEND14: JNB CNUM,$CLR CNUMCPL PLUSJNB CNUM,$CLR CNUMDJNZ R6,SEND13INC R0SJMP SEND15SEND1W: SETB PLUS ;发送完毕JNB CNUM,$CLR CNUMCLR EACLR TR1CLR TR0RET接收程序:JNB RXDP,KNEXT0 ;红外数据中断JNB SIGNI,$ACALL TCODE ;比较数据头MOV R2,#100 ;延时200usDJNZ R2,$JNB EIRED,NEXT1 ;头正确,继续读取数据,否则返回AJMP STARTNEXT1: MOV SNUM,#9 ;数据接收MOV RNUM,#0MOV TL0,#205MOV R0,#BUFFMOV AMOUNT,#0MOV R1,#8MOV A,#2CJNE A,RNUM,$MOV C,SIGNIMOV ORXD,CCLR NRXDNEXT0: CLR CNUMJNB CNUM,$JB ORXD,NEXT2JB SIGNI,NEXT3DJNZ LNUM,NEXT0CLR EAAJMP STARTNEXT2: JNB SIGNI,NEXT3DJNZ HNUM,NEXT0AJMP PNEXT ;数据接收完毕,进行数据处理NEXT3: JNB NRXD,NEXT4MOV A,@R0MOV C,ORXDRRC AMOV @R0,AMOV LNUM,#3MOV HNUM,#3MOV C,SIGNIMOV ORXD,CDJNZ R1,NEXT0INC AMOUNTMOV R1,#8INC R0NEXT4: MOV C,SIGNIMOV ORXD,CSJMP NEXT0中断子程序:PINT0: CLR EX0 ;有红外数据输入,开始对数据进行采样SETB TR0; SETB TR1MOV IE,#10000010BSETB RXDPRETI;PTIME0: PUSH PSWJB STATE,OTHER1DJNZ SNUM,OTHER0 ;数据接收定时INC RNUMMOV SNUM,#9SETB CNUMCPL NRXDOTHER0: POP PSWRETI;OTHER1: DJNZ SNUM,OTHER0MOV C,PLUS ;数据发送定时MOV ODA TA,CMOV SNUM,#9SETB CNUMPOP PSWRETI;以上是我自己进行红外数据通讯的实际应用,效果还比较理想。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//红外线HS0038接收并在LCD上显示,可惜是参照别人的程序,不好意思#include <reg52.h>
#define c(x) (x*110592/120000)
sbit Ir_Pin = P3^3;
sbit rs=P1^0;
sbit wr=P1^1; //1602控制口
sbit e=P1^5;
unsigned char Ir_Buf[4]; //用于保存解码结果
void delay(unsigned int z)
{
unsigned char i; //1602用到的延时
while(z--)
for(i=110;i>0;i--);
}
void write_com(unsigned char com)
{
rs=0;
wr=0; //1602写命令子程序
P0=com;
delay(5);
e=1;
delay(5);
e=0;
}
void write_dat(unsigned char dat)
{
rs=1;
wr=0;
P0=dat; //1602写数据子程序delay(5);
e=1;
delay(5);
e=0;
}
void init_1602()
{
e=0;
write_com(0x38);
write_com(0x0e); //1602初始化
write_com(0x06);
write_com(0x01);
}
unsigned int Ir_Get_Low()
{
TL0 = 0;
TH0 = 0;
TR0 = 1; //用定制器0接收,获取低电平时间while (!Ir_Pin && (TH0&0x80)==0);
TR0 = 0;
return (TH0 * 256 + TL0);
}
// 获取高电平时间
unsigned int Ir_Get_High()
{
TL0 = 0;
TH0 = 0;
TR0 = 1;
while (Ir_Pin && (TH0&0x80)==0);
TR0 = 0;
return (TH0 * 256 + TL0);
}
void uart_init(void)
{
unsigned char u;
ET1=0;
TMOD = 0x21; // 定时器1工作在方式2(自动重装)
SCON = 0x50; // 10位uart
TH1 = 0xFD;
TL1 = 0xFD;
u = SBUF;
TR1 = 1;
}
void write_1602shuju()
{
write_com(0x80);
delay(1);
write_dat(Ir_Buf[2]/10+0x30);
delay(1); //1602xieshuju
write_dat(Ir_Buf[2]%10+0x30);
delay(1);
}
void main()
{
unsigned int temp;
char i,j;
uart_init();
init_1602();
while(1)
{
while (Ir_Pin); //等待变低
temp = Ir_Get_Low();
if (temp < c(8500) || temp > c(9500)) //引导脉冲低电平9000 continue;
temp = Ir_Get_High();
if (temp < c(4000) || temp > c(5000)) //引导脉冲高电平4500 continue;
for (i=0; i<4; i++) //4个字节
{
for (j=0; j<8; j++) //每个字节8位
{
temp = Ir_Get_Low();
if(temp < c(200) || temp > c(800))
continue;
temp = Ir_Get_High();
if(temp < c(200) || temp > c(2000))
continue;
Ir_Buf[i] >>= 1;
if(temp > c(1120))
Ir_Buf[i]|=0x80;
}
}
write_1602shuju();
SBUF = Ir_Buf[2]; // 返回键码
while (TI == 0);
TI = 0; }
}。

相关文档
最新文档