基于单片机控制红外通信
单片机的红外通信原理

单片机的红外通信原理
单片机的红外通信原理是通过红外发射器和红外接收器进行数据的发送和接收。
红外发射器是一个用于发射红外光信号的器件,它通过电流激励而发射出红外光。
红外接收器则是一个用于接收红外光信号的器件,它可以将接收到的红外光信号转换成对应的电压信号。
在红外通信过程中,发送端的单片机首先将需要发送的数据转换成红外光信号。
这可以通过对红外发射器施加电压的方式来实现。
当电压施加在红外发射器上时,它会以特定的频率发射红外光信号。
这个特定的频率一般是在红外光线可见范围之外,人眼无法看到。
接收端的单片机上安装了红外接收器,它可以接收来自发送端发射的红外光信号。
红外接收器将接收到的红外光信号转换成电压信号,并通过单片机进行处理。
单片机根据接收到的信号特征,判断出是哪个发射器发出的信号,并解码出相应的数据信息。
然后,单片机可以根据接收到的数据进行相应的操作,比如控制其他器件的开关或者进行数据的存储和处理。
红外通信在遥控器、红外设备和红外传感器等方面有着广泛的应用。
通过红外通信,可以实现无线传输和控制,具有灵活性高、成本低的优势。
基于单片机的红外数据通信全双工编解码器设计

收 稿 日期 : 2 0 1 2 . 0 8 — 0 2 基金项 目: 四川省青年科技基金资助项 目( 0 8 z Qo 2 6—0 8 9 )
1 3 0
成
都
信
息
工
程
学 院
学
报
第2 8卷
一
个 比 特 总 时 长 T b i t l 1 5 2 0 0 = 警 ≈ 8 . 6 8 s
文 章 编 号 :1 6 7 1 . 1 7 4 2 ( 2 0 1 3 J 0 2 — 0 1 2 9 . 0 4
基 于 单 片 机 的红 外 数 据 通 信 全 双 工 编 解 码 器 设计
郑红菱 , 张 杰2 , 郑郁正2
( 1 . 成都信 息工程学院计算机学院 , 四川 成都 6 1 0 2 2 5 ; 2 . 成都信息工程学院通信工程学院, 四川 成都 6 1 0 2 2 5 )
必须经过 I r D M. 0 标准编解码器与红外收发器连接 , 才能实现红外数据通信。有些串行通信芯片或者智能处理器 的 串行通信 部件都集 成 了 I r D M . 0编解 码器 , 但 独立使 用 I r D A 1 . 0编解 码 器还 占了很大 一部 分 , 其 中有 TI 公 司 的 TI R 1 0 0 0 、 公司 的 H S D L - 7 0 0 0 、 Z i l o g公 司的 Z H X 1 0 1 0 、 Mi c r c  ̄h i p 公 司的 MC P 2 1 X X系列红外编解码 器 。
从集 成 的红外 收 发 器结 构来 看 , 所 有 编 解 码 器 与 这 类 的红 外 收发器连接工作 时 , 都只能以半 双工模式工作。对 于要 以全双工 模式工作的设备来说 , 如果想将有线通信方式改 为红外无线通信 方式 , 将 很 难找 到现 成 的解决 方案 。 因此 , 选用高性价比的 MC S 5 1 单片机 , 成本不足人 民币 2 - 元, 设计了一个 I r D A 1 . 0标准协议栈控制器 ; 采用软件缓冲技术 , 利用 红外数据通信 的半双工信 道 , 实 现了透 明全 双工通信。 同时 , 对 I r D A 1 . 0的编解码做 了改进 , 采用了时长编码 , 将传输速度提高 了 倍, 实现 了 1 1 5 2 0 0 b p s 全双 工通 信 。
基于STC89C51单片机的红外遥控智能家居系统设计

基于STC89C51单片机的红外遥控智能家居系统设计1. 本文概述阐述问题:我会指出当前智能家居系统中存在的问题,以及为什么需要基于STC89C51单片机的解决方案。
提出解决方案:接着,我会概述STC89C51单片机在智能家居系统中的作用以及红外遥控技术的优势。
文章结构:我会简要介绍文章的结构,说明接下来的章节将如何展开。
随着科技的不断进步,智能家居系统逐渐成为现代家庭生活的一部分,它们通过提高居住环境的舒适性、安全性和便利性,极大地提升了人们的生活质量。
现有的智能家居系统在集成性、成本效益和用户交互体验方面仍存在不足。
为了解决这些问题,本文提出了一种基于STC89C51单片机的红外遥控智能家居系统设计方案。
STC89C51单片机以其较低的成本、丰富的功能和良好的稳定性,成为实现智能家居控制的理想选择。
结合红外遥控技术,该系统不仅能够实现远程控制家电设备,还能通过简单的编程实现个性化的家居自动化场景,从而为用户提供更加灵活和智能的居住体验。
本文将首先介绍智能家居系统的基本概念和发展趋势,然后详细阐述STC89C51单片机的工作原理及其在智能家居系统中的应用。
接着,本文将描述红外遥控技术的原理,并展示如何将其与STC89C51单片机结合,实现对家居设备的智能控制。
本文将通过一个实际的系统设计案例,展示该设计方案的可行性和实用性。
2. 相关技术综述单片机技术:介绍STC89C51单片机的基本特性,包括其处理能力、内存、IO端口等,并说明其在智能家居系统中的应用优势。
红外通信技术:概述红外通信的基本原理,包括信号的调制、传输和解码过程,以及红外技术在遥控设备中的优势。
智能家居系统架构:描述智能家居系统的一般架构,包括控制中心、通信协议、传感器和执行器等组成部分。
现有智能家居解决方案:简要回顾市场上已有的智能家居解决方案,分析它们的特点和局限性。
设计挑战与创新点:讨论在设计基于STC89C51单片机的红外遥控智能家居系统时面临的技术挑战,以及本设计相对于现有技术的创新之处。
单片机红外接受发送实验报告

单片机红外发射与接收实验报告指导老师:报告人:一·实验选题:基于单片机的红外发射与接收设计任务要求:设计一个以单片机为核心控制器件的红外收发系统。
发射载频: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号实验板并排拿在手中,并形成一个小夹角,向一张白纸移动观察读数变化。
基于单片机的红外遥控系统设计毕业设计

本科生毕业设计(论文)论文题目:基于单片机的红外遥控系统设计毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:本设计是基于单片机的红外遥控系统设计,设计内容包括了红外接收,红外解码和步进电机控制三大块。
如今红外遥控技术已经得到了广泛的应用;其利用红外线来传输数据,这种情况下不需要实体连线,体积小,成本低,功能强。
我们日常生活中的电视机,洗衣机,空调,航天飞机,工业现场设备等都运用了红外遥控的技术。
本设计中发射端采用专用的发射芯片来实现红外遥控码的发射,且遥控码格式是NEC标准。
接收端采用市面上流行的1838一体化红外接收头,接收到的红外信号经由1838接收头完成光/电转化和解调的工作,然后把33位的完整码发送到解码芯片中去完成解码工作。
本设计中的主芯片是STC89C52单片机,主芯片和解码芯片之间进行串行通讯。
系统启动后,解码芯片将解码后得到的8位数据码串行发送到主芯片中,然后通过主芯片来控制步进电机的正转,反转,加速,减速。
本设计中的被控对象是步进电机,步进电机最适合做数字控制。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
51单片机-毕业设计基于单片机设计的红外线遥控器

ping primary school fire safety systems to e nha nce fire safety, prote ction of public property and t he life and property safety of teacher s and students, school fire safety into day-to-day ma nagement, is devel opi ng the following fire safety system. 1, strengt hen fire safety educati on of the whole school. Accordi ng to the re quireme nts of the Fire S ervices A ct, so t hat everyone has of keeping fire control safety, pr otecting fire control facilities, fire preve ntion, reports of fire学生毕业设计(论文)报告系别:专业:班号:学生姓名:学生学号:设计(论文)题目:基于单片机设计的红外线遥控器指导教师:设计地点:起迄日期:ping primary school fire safety systems to e nha nce fire safety, prote ction of public property and t he life and property safety of teacher s and students, school fire safety into day-to-day ma nagement, is devel opi ng the following fire safety system. 1, strengt hen fire safety educati on of the whole school. Accordi ng to the re quireme nts of the Fire S ervices A ct, so t hat everyone has of keeping fire control safety, pr otecting fire control facilities, fire preve ntion, reports of fire常州信息职业技术学院电子与电气工程学院毕业设计论文毕业设计(论文)任务书专业电子信息工程班级电子085 姓名傅浩一、课题名称:基于单片机设计的红外线遥控器二、主要技术指标:1.遥控距离:0~10m2.额定工作电压:直流3V(普通5号干电池2节);红外光平均辐照度≥40μW/cm2;指向性(辐照度为20μW/cm2)≥30度3.欠压条件下(直流2.4v):红外光平均辐照度≥20μW/cm2,指向性(辐照度为10μW/cm2)≥30度三、工作内容和要求:1.以AT89C2051单片机作为核心,综合应用了单片机中断系统、定时器、计数器等知识,应用红外光的优点2.遥控发射器通过对红外光发射频率的控制来区别不同的操作3.遥控接收器通过对红外光接收频率的识别,判断出控制操作,来完成整个红外遥控发射、接收过程四、主要参考文献:[1] 梅丽凤,王艳秋,张军等. 单片机原理及接口技术,北京:清华大学出版社,2004年.[2] 戴峻峰,付丽辉. 多功能红外线遥控器的设计,传感器世界.2002,8(12):16~18.[3] 李光飞,楼然苗,胡佳文等. 单片机课程设计实例指导,北京:北京航空航天出版社,2004年.[4] 苏长赞. 红外线与超声波遥控,北京:人民邮电出版社.1995年.学生(签名)2010 年 5 月7 日指导教师(签名)2010 年5 月10 日教研室主任(签名)2010 年5 月10 日系主任(签名)2010 年5 月12 日ping primary school fire safety systems to e nha nce fire safety, prote ction of public property and t he life and property safety of teacher s and students, school fire safety into day-to-day ma nagement, is devel opi ng the following fire safety system. 1, strengt hen fire safety educati on of the whole school. Accordi ng to the re quireme nts of the Fire S ervices A ct, so t hat everyone has of keeping fire control safety, pr otecting fire control facilities, fire preve ntion, reports of fire毕业设计(论文)开题报告设计(论文)题目基于单片机设计的红外线遥控器一、选题的背景和意义:随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的遥控系统开始进入了人们的生活。
单片机红外通信技术应用
单片机红外通信技术应用红外通信技术是一种无线通信技术,它利用红外线传输数据和信息。
在单片机系统中,红外通信技术被广泛应用,可以实现各种应用需求,如遥控器、红外测距、红外传感器等。
本文将重点介绍单片机红外通信技术的应用。
一、红外通信原理在介绍红外通信技术应用之前,先简单了解一下红外通信的原理。
红外通信是利用红外光的特性进行数据传输。
通信系统中通常包含发送器和接收器两个基本组成部分。
发送器将数字信号转换为红外光信号,接收器将接收到的红外光信号转换为数字信号。
二、遥控器应用遥控器是最常见的单片机红外通信应用之一。
通过遥控器,我们可以实现对电视、空调、音响等家电设备的远程控制。
遥控器工作原理是将按键操作转换为红外信号发送给家电设备,家电设备接收到红外信号后执行相应的操作。
三、红外测距应用红外测距是利用红外线进行距离测量的一种方法。
在一些需要测量距离的场景中,可以通过单片机和红外传感器实现红外测距应用。
红外传感器发射红外光,当光线遇到物体并反射回来时,红外传感器接收到反射的红外光。
通过测量反射的红外光的时间差,可以计算物体与传感器的距离。
四、红外传感器应用红外传感器是一种常用的传感器,通过检测周围环境中的红外辐射以实现感知和控制。
例如,人体红外传感器可以检测到人体发出的红外辐射,用于实现自动照明、安防监控等应用。
温度传感器也可以通过红外辐射实现测量物体的温度。
五、红外通信技术优势与其他无线通信技术相比,红外通信技术具有一些优势。
首先,红外通信技术不会受到电磁干扰的影响,信号传输相对稳定可靠。
其次,红外通信技术在短距离传输中具有较高的传输速率。
此外,红外通信设备体积较小、功耗低,适合应用于一些对设备体积和功耗有要求的场景。
六、红外通信技术应用展望随着科学技术的不断进步和发展,红外通信技术也在不断演进和创新。
未来,红外通信技术有望在更多领域得到应用。
例如,红外通信技术可以应用于智能家居系统中,实现智能设备之间的互联互通。
基于单片机的红外通信系统设计
基于单片机的红外通信系统设计1 简介红外通信是指利用红外线进行信息传输的一种无线通讯方式。
其传输距离在10米以内,速度较快,常用于遥控器、智能家居、安防监控等领域。
本文将介绍基于单片机的红外通信系统设计。
2 系统原理红外通信系统需包含红外发射器、红外接收器和处理器三个部分。
通信原理是将信息编码成红外信号,通过红外发射器发出,再由红外接收器接收,经过解码后传输到处理器中处理。
3 系统设计步骤3.1 红外接收器电路设计红外接收器采用红外管接收器,其特点是灵敏度高,在不同角度能接收到较远的红外信号。
红外管接收器与电路板焊接,电路板再选用较长的电线接到处理器的端口上。
3.2 红外发射器电路设计红外发射器采用红外二极管,其工作电压一般为1.2-1.4V。
通过接通1kHz以上的方波信号控制二极管的导通,使其发出红外光。
为保证其稳定性和较远的有效距离,需在电路中添加反向电流保护二极管。
3.3 处理器设计处理器选用常用的单片机,如AT89C51等。
单片机内置了红外通信模块,可用来发送和接收红外信号。
同时,还需通过编程实现对红外信号的解码和编码,实现信息传输与处理。
4 系统测试测试时,可用遥控器模拟发送红外信号,系统接收并解码后显示在液晶屏幕上。
测试距离一般在10米以内,且需保持天空无其它遮挡物。
5 总结基于单片机的红外通信系统设计,具有灵敏度高、速度快、传输距离短等特点。
其应用广泛,在智能家居、安防监控、车载通信等领域均有应用。
但需注意遮挡物的影响,以及信号干扰等问题。
基于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)在传输距离较近的情况下,信号的可靠性和稳定性良好。
基于单片机的红外遥控智能小车设计
基于单片机的红外遥控智能小车设计引言:随着科技的不断发展,智能物联网已经走进了我们的生活。
智能小车作为一种智能化的产品,能够实现远程遥控、自动避障等功能,受到了广大消费者的青睐。
本文就基于单片机的红外遥控智能小车设计进行详细介绍。
一、设计目标本设计的目标是通过红外遥控,实现对智能小车的远程控制,小车能够根据收到的指令进行行驶、避障等操作。
二、设计原理1.主控芯片:本设计使用单片机作为主控芯片,常用的单片机有51系列、AVR系列等,可根据实际需求选择合适的芯片型号。
2.红外遥控模块:红外遥控模块是实现红外通信的设备,可以将遥控器发出的红外信号解码成数据,实现遥控操作。
3.电机驱动模块:电机驱动模块可将单片机的PWM信号转化为电机的动力驱动信号,控制小车的行驶方向和速度。
4.超声波传感器:超声波传感器可以感知到小车前方的障碍物距离,根据测得的距离,进行相应的避障操作。
5.电源模块:小车需要使用适当的电源,通常是锂电池或者直流电源供应。
三、系统设计1.硬件设计:(1)搭建小车底盘:根据所选择的底盘,搭建小车结构,并安装好电机驱动模块、电源模块等硬件设备。
(2)连接电路:将红外遥控模块、超声波传感器等硬件设备与主控芯片进行连接,确保每个模块正常工作。
2.软件设计:(1)红外遥控程序设计:通过红外遥控模块接收红外信号,并解码成相应的指令。
根据指令控制电机驱动模块,实现小车的行驶方向和速度控制。
(2)超声波避障程序设计:根据超声波传感器测得的距离,判断是否有障碍物,如果有障碍物就停止或者转向。
四、实验结果和讨论经过实验验证,本设计的红外遥控智能小车能够准确接收红外信号,并根据指令控制小车的行驶方向和速度。
同时,超声波传感器能够及时感知到前方的障碍物,并进行相应的避障操作。
然而,该设计仍然存在一些不足之处,比如超声波传感器的测距范围有限,可能无法感知到较小的障碍物。
此外,红外遥控信号的传输距离也有一定限制,需要保持遥控器与小车之间的距离不过远。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
红外通信原理红外遥控有发送和接收两个组成部分。
发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红外发射管发射红外信号。
红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲。
为了减少干扰,采用的是价格便宜性能可靠的一体化红外接收头(HS0038,它接收红外信号频率为38kHz,周期约26μs) 接收红外信号,它同时对信号进行放大、检波、整形得到TTL 电平的编码信号,再送给单片机,经单片机解码并执行去控制相关对象。
具体实现过程如下:(在这里特别强调:编码与解码是一对逆过程,不仅在原理上是一对逆过程,在码的发收过程也是互反的,即以前发射端原始信号是高电平,那接收头输出的就是低电平,反之亦然。
因此为了保证解码过程简单方便,在编码时应该直接换算成其反码。
)1.红外发射部分:下图为红外发射部分的电路拟图:编码过程:(1) 二进制信号的调制二进制信号的调制由单片机来完成,它把编码后的二进制信号调制成频率为38kHz的间断脉冲串(用定时器来完成),相当于用二进制信号的编码乘以频率为38kHz的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号。
(2)PPM编码这种遥控编码具有以下特征:○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”。
(3)发送程序#include <AT89X51.h>static bit OP; //红外发射管的亮灭控制位static unsigned int count; //延时计数器static unsigned int endcount; //终止延时计数static unsigned char flag; //红外发送标志sbit P3_4=P3^4;char iraddr1; //十六位地址的第一个字节char iraddr2; //十六位地址的第二个字节void SendIRdata(char p_irdata);//发送子函数void delay();void main(void){count = 0;flag = 0; //无载波OP = 0; //不亮P3_4 = 0; //在后面会发现用OP赋值的EA = 1; //允许CPU中断TMOD = 0x11; //设定时器0和1为16位模式1ET0 = 1; //定时器0中断允许TH0 = 0xFF;TL0 = 0xE6; //设定时值0为38K 也就是每隔26us中断一次 TR0 = 1;//开始计数iraddr1=3;//自定义的一个地址iraddr2=252;//地址反码do{delay();SendIRdata(12);}while(1);}//定时器0中断处理void timeint(void) interrupt 1{TH0=0xFF;TL0=0xE6; //设定时值为38K 也就是每隔26us中断一次count++;if (flag==1){OP=~OP; }//如果是待发送的有效数据flag=1,就在此产生载波(亮灭交变)else{OP = 0; }P3_4 = OP;}void SendIRdata(char p_irdata) //发送数据子函数{int i;char irdata=p_irdata;/***************************************************************///发送9ms的起始码,并是载波模式有效endcount=223;flag=1;count=0;while(count<endcount);//等待中断,控制亮灭交变的总时间为9ms//发送4.5ms的结果码,并是载波模式无效endcount=117flag=0;count=0;do{}while(count<endcount);/***************************************************************/ //发送十六位地址的前八位irdata=iraddr1;for(i=0;i<8;i++){//一个周期里规定先以高电平开始,在以低电平结束。
先发送0.56ms的38KHZ“1”的红外波(即编码中0.56ms的高电平)endcount=10;flag=1;count=0;do{}while(count<endcount);//停止发送红外信号(即编码中的低电平)if(irdata-(irdata/2)*2) //判断二进制数个位为1还是0{endcount=41; } //1为宽的高电平1.68mselse{endcount=15; } //0为窄的高电平0.56msflag=0;count=0;while(count<endcount);irdata=irdata>>1;//依次取位}//发送十六位地址的后八位irdata=iraddr2; //此处已经是地址的反码for(i=0;i<8;i++){endcount=10;flag=1;count=0;while(count<endcount);if(irdata-(irdata/2)*2){endcount=41;}else{endcount=15;}flag=0;count=0;do{}while(count<endcount);irdata=irdata>>1;}/***************************************************************///发送八位数据irdata=p_irdata;for(i=0;i<8;i++){endcount=10;flag=1;count=0;while(count<endcount);if(irdata-(irdata/2)*2){ endcount=41; }else{endcount=15; }flag=0;count=0;do{}while(count<endcount);irdata=irdata>>1;}//发送八位数据的反码irdata=~p_irdata; //要将数据位取反for(i=0;i<8;i++){endcount=10;flag=1;count=0;while(count<endcount);if(irdata-(irdata/2)*2){endcount=41; }else{endcount=15; }flag=0;count=0;while(count<endcount);irdata=irdata>>1;}endcount=10;flag=1;count=0;do{}while(count<endcount);flag=0;}void delay(){int i,j;for(i=0;i<400;i++){for(j=0;j<100;j++){}}}一串完整的编码如下图所示前导码地址码地址反码操作码操作反码2.红外接收部分:红外接收完成对红外信号的接收、放大、检波、整形,并解调出遥控编码脉冲。
为了减少干扰,采用的是价格便宜性能可靠的一体化红外接收头(HS0038,它接收红外信号频率为38kHz,周期约26us) 接收红外信号,它同时对信号进行放大、检波、整形得到TTL电平的编码信号,再送给单片机,经单片机解码并执行去控制相关对象。
接收部分的电路拟图为:HS0038的典型应用电路为:其应用程序为:#include"reg52.h"#define uchar unsigned char#define uint unsigned int#include"reg52.h"#define uchar unsigned char#define uint unsigned intuchar ram[4]={0,0,0,0};//存放接受到的4个数据地址码16位+按键码8位+按键码取反的8位void delaytime(uint time) //延迟90uS{ uchar a,b;for(a=time;a>0;a--){ for(b=40;b>0;b--); }}void rem()interrupt 0 //中断函数{uchar ramc=0; //定义接收了4个字节的变量uchar count=0; //定义现在接收第几位变量uint i=0; //此处变量用来在下面配合连续监测9MS 内是否有高电平prem=1;for(i=0;i<1100;i++) //以下FOR语句执行时间为8MS左右{if(prem) //进入遥控接收程序首先进入引导码的前半部判断,即:是否有9MS左右的低电平return; //引导码错误则退出,注意与break语句的区别}while(prem!=1); //等待引导码的后半部4.5 MS 高电平开始的到来。
delaytime(50); //延时大于4.5MS时间,跨过引导码的后半部分,来到真正遥控数据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 低电平阶段//等待本次接受数据的高电平的到来。
delaytime(9);//高电平到来后,数据0 高电平最多延续0.56MS,而数据1,高电平可延续1.66MS大于0.8MS 后我们可以再判断遥控接收脚的电平。
if(prem) //如果这时高电平仍然在继续那么接收到的数据是1的编码{ram[ramc]=(ram[ramc]<<1)+1;//将目前接收到的数据位1放到对应的字节中delaytime(11); //如果本次接受到的数据是1,那么要继续延迟1MS,这样才能跨//下个位编码的低电平中(即是开始的0.56MS中)}else //否则目前接收到的是数据0的编码ram[ramc]=ram[ramc]<<1; //将目前接收到的数据位0放到对应的字节中} //本次接收结束,进行下次位接收,此接收动作进行32次,正好完成4个字节的接收}if(ram[2]!=(~(ram[3]&0x7f))) //本次接收码的判断{ for(i=0;i<4;i++) //没有此对应关系则表明接收失败,清除接受到的数据ram[i]=0;returned;}main(){IT0=1; //设定INT0为边沿触发EX0=1; //打开外部中断0EA=1; //全局中断开关打开while(1){switch(dis_num){case 0x81: num=0; break;case 0xcf: num=1; break;case 0x92: num=2; break;case 0x86: num=3; break;case 0xcc: num=4; break;case 0xa4: num=5; break;case 0xa0: num=6; break;case 0x8f: num=7; break;case 0x80: num=8; break;case 0x84: num=9; break;case 0x88: num=10;break;case 0xe0: num=11;break;case 0xb1: num=12;break; case 0xc2: num=13;break; case 0xb0: num=14;break; case 0xb8: num=15;break;}P2=table[num];P1=0x01;delaytime(5);}}。