资源描述
分类号分类号 密级密级 UDC 毕毕 业业 论论 文文基于单片机的红外遥控控制模块的设计 学生姓名学生姓名 学号学号 指导教师指导教师 系系 、中心、中心 专专 业业 通信工程通信工程 年级年级 论文答辩日期论文答辩日期 20122012 年年 月月 日日 I基于单片机的红外遥控控制模块的设计完成日期: 指导教师签字: 答辩小组成员签字: 基于单片机的红外遥控控制模块的设计摘要随着科技的发展,越来越多的现代化电器走进了普通老百姓的家庭,而这些家用电器大都由红外遥控器操控,本文在总结和分析大量资料的基础上,设计一款以AT89C51 单片机为核心的红外遥控器,能够达到学习和动手的能力,具有一定的现实意义。采用红外技术和单片机技术,首先将各个按键进行编码,当不同的指令键被按下时,指令信号电路产生不同脉冲编码的指令信号,也就是进行编码,然后经芯片进行调制从而产生不同的编码信号,再由驱动电路驱动红外发射器发射红外信号。把单片机等产生的编码控制信号,经由调制电路调制为 3240 KHz 的方波信号(提高发射效率、降低功耗)。再经由驱动电路驱动红外发光二极管(IRED)发出红外遥控信号;在接收端使用与发送端相配对的红外光电二极管,接收含有控制信号的红外信号,在将该红外信号解调为电信号后,再送入 AT89C51 单片机进行解码,以得到相应的控制信号,从而完成红外信息的传送,最后在屏幕上显示相应的数字。本系统很大程度上提高遥控系统的准确性,可靠性,运行起来切实有效。关键词;红外技术;单片机;AT89C51;准确可靠IIMCU infrared remote control systemAbstractWith the development of science and technology, more and more modern appliances entered the family of ordinary common people, and these household appliances are made by infrared remote control, based on the review and analysis of large amounts of data on the basis of a design, using AT89C51MCU as the core of the infrared remote control, can achieve the learning and practical ability, has the certain realistic significance.Using infrared technology and microcomputer technology, design of the infrared remote controller. Firstly, each key to encode different instructions, when the key is pressed, the instruction signal circuit generates different pulse coded command signal, is encoded, and then by chip to produce different coding modulation signal, the drive circuit drives the infrared emitter infrared signal. The single generated coded control signal, the modulation circuit modulation of 32 40 KHz square wave signal ( improved emission efficiency, reduce power consumption ). The drive circuit drives the infrared light-emitting diode ( IRED ) emit infrared remote control signal; at the receiving end and sending end use paired infrared photodiode for receiving control signals, containing the infrared signal, the infrared signal is demodulated into electrical signals, and then sent to the AT89C51 MCU decoding, in order to obtain the corresponding control signal, thereby completing infrared transmission of information. Finally the corresponding digit is displayed in the screen.This system can greatly improve the accuracy of remote control system, reliability, run effectively.Key words; infrared technology; MCU; AT89C51; accurate and reliable目 录1 绪论.11.1 红外遥控技术的研究背景 .11.2 系统的研究目的与意义 .11.3 本系统的研究内容 .22 红外遥控系统的总体设计 .32.1 遥控系统的主要功能 .32.2 遥控系统的组成部分及结构框图 .33 控制模块的硬件设计.43.1 单片机主控模块 .43.1.1 AT89C51 单片机内部功能说明 .43.1.2 引脚功能说明 .53.2 单片机外围电路 .73.2.1 电源电路.73.2.2 晶振电路.73.2.3 复位电路.83.2.4 矩阵键盘电路.83.2.5 LED 显示器 .93.3 红外发射模块的硬件电路 .103.4 红外接收模块的硬件电路 .124 控制模块的软件设计.144.1 发射部分的工作原理 .144.2 接收部分工作原理 .144.3 遥控系统的编码及解码 .154.3.1 遥控发射编码格式 .154.3.2 数据帧的接收处理.164.4 遥控发射及接收控制程序流程图 .174.4.1 遥控发射控制流程图 .174.4.2 遥控接收控制流程图 .184.4.3 控制系统的主程序.19I5 总结与展望.21参 考 文 献 .22致 谢 .23附录 .24基于单片机的红外遥控控制模块的设计01 绪论随着人们生活水平的提高,人们对家用电子产品的智能化,多功能化提出了更高的要求,而电子技术的飞速发展使得单片机在各种家用电子产品领域中的应用越来越广泛。红外线遥控是目前使用最广泛的一种通信和遥控方式。由于红外线遥控装置具有体积小,功耗低,成本低等特点,因而继彩电,录像机之后,他在录音机,音响设备,空调机以及玩具等小型电器装置上也被广泛采用。1.1 红外遥控技术的研究背景60 年代初,一些发达国家开始研究民用产品的遥控技术,但由于受当时技术条件的限制,遥控技术发展很缓慢。70 年代末,随着大规模集成电路和计算机技术的发展,遥控技术才得到快速的进步。在遥控方式上大体经历了从高成本的有线到成本低廉控制方便的无线控制。无论采用何种方式,准确无误传输信号,最终达到满意的控制效果是非常重要的。红外遥控系统主要由遥控发射器、一体化接收头、单片机、接口电路组成。遥控器用来产生遥控编码脉冲,驱动红外发射管输出红外遥控信号,遥控接收头完成对遥控信号的放大、检波、整形、解调出遥控编码脉冲。遥控编码脉冲是一组串行二进制码,对于一般的红外遥控系统,此串行码输入到微控制器,由其内部 CPU 完成对遥控指令解码,并执行相应的遥控功能。使用遥控器作为控制系统的输入,需要解决如下几个关键问题:如何接收红外遥控信号;如何识别红外遥控信号以及解码软件的设计、控制程序的设计。红外遥控技术在工农业,通信技术,家用电器等多种领域中得到了广泛的应用,特别是在门禁系统中的应用,更加收到了人们的瞩目。本设计的红外线遥控就是将红外遥控技术和单片机技术应用结合的一种方案。他的特点是:抗干扰能力强,工作可靠,使用方便,传递信息准确可靠,几乎让传统电器匹配智能电器。红外遥控作为一种高科技产品,在很多领域已经成为主导产品,现在它正以飞快的速度进入寻常百姓家。为我们所熟知。1.2 系统的研究目的与意义随着科技的发展,人们生活的节奏也越来越快,随之人们对方便,快捷的要求也随之不断增高。遥控器的出现,在一定程度上满足了人们这个要求!遥控器是由高产的发明家 Robert Adler 在五十年代发明的。而红外遥控是 20 世纪 70 年代才开始发展起来的一种远程控制技术,其原理是利用红外线来传递控制信号,实现对控制对象的远距离控制,具体来讲,就是有发射器发出红外线指令信号,有接收器接收下来并对信号进行处理,最后实现对控制对象的各种功能的远程控制。基于单片机的红外遥控控制模块的设计1本论文的目的是设计一款红外遥控器。控制信号可以通过按键发送出去通过对控制代码进行分析,相应的红外设备所接收到的红外信号是从红外线发射端口发送出去的,最终达到了实现控制目的,并且其采用了 AT89C51 单片机芯片作为系统的处理器,在其他系统功能的开发上也有一定的优势。有非常好的市场前景。伴随着计算机技术的进步、无线通信技术和自动控制技术也得到了飞速发展。同时计算机等信息工具以及一些新的技术和产品不断的进入普通老百姓的家中,其中遥控器在里面也显得有非常重要的作用。而目前使用最多的红外遥控器具有如下的功能,就是用户在对各种家用电器进行操作的时候。不需要离得很近,在遥控器离家电有几米甚至十几米外就能够对其进行操作。通过存储和控制各个子系统的信息,来实现对家用电器的控制,方便了人们的生活。具有广泛的应用前景。1.3 本系统的研究内容通过学习数字电子技术,模拟电子技术,单片机等课程,结合实际加深对所学知识的理解,通关设计红外遥控电路,进一步掌握模电数点单片机等理论知识的运用,加深了解电子元器件特别是集成电路(芯片)的结构与功能,同时在设计过程中增强自己的动手能力以及独立思考能力,为将来在社会立足增加筹码.本课题主要内容是设计一个基于单片机的红外遥控器,即利用红外线遥控技术,单片机技术来实现红外信号的发射与接收,同时利用数码管显示传递的信息。本设计要求利用 AT89C51 作为主控芯片完成主控电路的设计,辅助电路要求包括发射模块电路、接收模块电路、电源电路等。基于单片机的红外遥控控制模块的设计22 红外遥控系统的总体设计2.1 遥控系统的主要功能本遥控系统利用单片机作为主控芯片,实现由发射端发送信息,利用红外线传递信息,接收端接收信息并显示出来的一个简单红外遥控系统。首先将各个按键进行编码,当不同的指令键被按下时,代表不同的编码,然后经芯片进行调制从而产生不同的编码信号,再由驱动电路驱动红外发射器发射红外信号;在接收端使用与发送端相配对的红外光电二极管,接收含有控制信号的红外信号,在将该红外信号解调为电信号后,再送入 AT89C51 单片机进行解码,以得到相应的控制信号,从而完成红外信息的传送。2.2 遥控系统的组成部分及结构框图图 2-1 红外遥控系统组成系统组成如图 2-1 所示,系统由发射部分和接收部分组成。发射部分采用脉冲个数编码,将待发射信号调制成 38KHz 的载波信号,由红外发射管进行发射。接收部分由红外接收管进行解码接收,单片机通过对所接收信号的分析,输出相应的控制信号,由发光二极管和数码管指示出发射部分按下的按键号。按键矩阵:即矩阵键盘电路,键盘在单片机应用系统中能实现向单片机输入数据、传送命令等功能,是人工干预单片机的主要手段。键盘实质上是一组案件开关的集合。AT89C51 单片机:红外遥控系统的主控芯片,遥控系统的核心,实现对信息的处理,包括调制,解调等。红外发射电路:将经调制后的信号进行功率放大,并转换成红外信号发射出去。红外接收电路:将接收到的红外光信号转换成电信号,并放大将接收到的红外信号解调后转换成一定格式的串行数据传送给单片机。显示:经过处理后的信号被还原后,将原信号显示出来。基于单片机的红外遥控控制模块的设计33 控制模块的硬件设计3.1 单片机主控模块3.1.1 AT89C51 单片机内部功能说明图 3-1 所示为 AT89C51 单片机内部功能模块框图,在一块小小的芯片上集成了单片机的基本功能部件。从图可见单片机内部功能模块包括以下几个部分:(1)一个 8 位 CPU,由运算器、控制器组成。其中算数逻辑单元 ALU、累加器ACC、程序状态寄存器 PSW 等构成运算器,是单片机的运算中心,可进行 8 位算逻辑运算;程序计数器 PC、指令寄存器、振荡器及定时电路等构成控制器,是单片机的控制中心,使得各部件在时钟节拍的控制下协调地工作。时钟脉冲由片内振荡器和时钟产生电路 OSC 提供,石英晶体和微调电容需要外接,频率范围为 3.5-12MHz。(2)内含存储器有 4KB 片内 ROM,作为程序存储器,用以存放代码或数据表格;128B 片内 RAM,作为数据存储器,用以存放程序执行时的用户数据;21 个片内特殊功能寄存器 SFR。可寻址外部程序存储器和数据储存器空间各为 64KB。(3)4 个 8 位并行 I/O 口 P0-P3,可用作输入输出;1 个全双工串行口 UART(通用异步收发器),用于串行通信。(4)2 个 16 位定时/计数器,可用作定时或计数。(5)5 个中断源,其中 2 个外部中断源 INT0 和 INT1,3 个内部中断源,即 2 个定时/计数中断,一个串行口中断。具有 2 个中断优先级嵌套结构。基于单片机的红外遥控控制模块的设计4图 3-1 AT89C51 单片机内部功能模块框图3.1.2 引脚功能说明AT89C51 单片机引脚图如图 3-2 所示图 3-2 AT89C51 单片机引脚图(1)VCC:供电电压。基于单片机的红外遥控控制模块的设计5(2)VSS:接地。(3)P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8 个 TTL 门电流。当 P0 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。在 FIASH 编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。(4)P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。(5)P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。(6) P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为 AT89C51 的一些特殊功能口,P3 口同时为闪烁编程和编程校验接收一些控制信号。(7)RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。(8)ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC指令时 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE禁止,置位无效。(9)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。(10)/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为基于单片机的红外遥控控制模块的设计6RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)。(11)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。(12)XTAL2:来自反向振荡器的输出。3.2 单片机外围电路3.2.1 电源电路6V 电池的+6V 端经过 D2 二极管 4007 降压后,到达整个电路的 VCC,为整个电路提供供电电源。二极管的压降一般为 0.7V,经过降压后的电压大概为 5.3V。图 3-3 中的D3 发光二极管为电源指示灯,通电后该指示灯会一直长亮。图 3-3 电源电路3.2.2 晶振电路本设计的晶振采用的是 11.0592M 晶体振荡器,此晶振比较常见,易于购得。因此,在设计中,图 3-4 使用 11.0592M 的晶振与 2 个 30pF 的瓷片电容组成单片机的晶振振荡电路,为单片机的正常工作提供了振荡信号。图 3-4 晶振电路基于单片机的红外遥控控制模块的设计73.2.3 复位电路图 3-5 中的 SW7、C4 及 R17,一起组成了本设计的复位电路,其中 C4 与 R17 为常用的阻容复位电路。当工作电路在瞬间上电时,电容 C4 瞬间导通,+5V 加载到单片机的第 9 引脚(reset),系统完成了通电情况下的热启动。设计此按键的好处是,当在系统死机的情况下,可以在不断电的情况下按下此按键,完成单片机热启动。图 3-5 复位电路3.2.4 矩阵键盘电路键盘在单片机应用系统中能实现向单片机输入数据、传送命令等功能,是人工干预单片机的主要手段。键盘实质上是一组案件开关的集合。通常,键盘开关利用了机械触点的断开、闭合作用。键的闭合与否,反映在行线输出电压上就是呈现高电平或低电平,如果高电平表示键断开,低电平表示键闭合,通过对行线电平高低状态的检测,便可以确认案件按下与否。为了确保 CPU 对一次按键动作只确认一次案件有效,必须消除抖动期的影响。常用的键盘接口分为独立式和行列式键盘接口。独立式键盘适用于按键较少或操作速度较高的场合。行列式(也称矩阵式)键盘用于按键数目较多的场合,它由行线和列线组成,按键位于行、列的交叉点上。本次设计所采用的键盘接口就是这种。行列键盘的结构如下图 3-6 所示。基于单片机的红外遥控控制模块的设计8图 3-6 行列式键盘结构行列式键盘的工作原理:按键设置在行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V 上。无按键按下时行线处于高电平状态,而当有按键按下时,行线电平状态将由此行线相连的列线的电平决定。列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线亦为高。这一点是识别行列式键盘是否按键的关键所在。由于行列式键盘中行、列线为多键共用,各按键均影响该键所在行和列的电平。因此各按键彼此将互相发生影响,所以必须将行、列信号配合起来并做适当的处理,才能确定闭合键的位置。3.2.5 LED 显示器常用的 LED 显示器为 8 段或 7 段(8 段比 7 段多了以个小数点“dp”段)。每一个段对应以个发光二极管。这种显示器由共阳极和共阴极两种。如图 3-7 所示。共阴极LED 显示器的发光二极管的阴极连接在一起,通常次共阴极接地。当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被现实。同样,共阳极 LED 显示器的发光二极管的阳极连接在一起,通常此公共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。为了使 LED 显示器显示不同的符号和数字,就要把不同段的发光二极管点亮,这样就要为 LED 显示器提供代码,因为这些代码可使 LED 相应的段发光,从而显示不同字型,因此该代码称之为段码(或称为字型代码)。7 段发光二极管在加上一个小数点,共计 8 段。因此提供给 LED 显示器的段码正好是 1B。各段于字节中各位对应关系如下图 3-7。基于单片机的红外遥控控制模块的设计9 图 3-7 8 段 LED 结构及外形3.3 红外发射模块的硬件电路如图 3-8,单片机采用 AT89C51,内部有 4 K B 的程序存储器,外部有 P0-P3 四个8 位并口,选用晶振频率 fosc=24MHz。图 3.8 中,SE303 是红外发射二极管,当P1.0=1 时,三极管 9013 导通,SE303 通电发射红外线,实际上发射的是频率为 38KHz的脉冲串;反之,三极管 9013 截止,SE303 截止,不发射。基于单片机的红外遥控控制模块的设计10图 3-8 发射部分电路图本遥控发射器采用码分制遥控方式,码分制红外遥控就是指令信号产生电路以不同的脉冲编码(不同的脉冲数目及组合)代表不同的控制指令。在确定选择 AT89C51 作为本设计发射电路核心芯片和点触式开关作为控制键后,加上一个简单红外发射电路和 12M 晶体震荡器便可实现红外发射。发射部分的主要元件为红外发光二极管。它实际上是一只特殊的发光二极管,由于其内部材料不同于普通发光二极管,因而在其两端施加一定电压时,它发出的便是红外线而不是可见光。目前大量使用的红外发光二极管发出的红外线波长为 940nm 左右,外形与普通 5 发光二极管相同,只是颜色不同。遥控发射通过键盘,每按下一个键,即产生具有不同的编码数字脉冲,这种代码指令信号调制在 40KHz 的载波上,激励红外光二极管产生不同的脉冲,通过空间的传基于单片机的红外遥控控制模块的设计11送到受控机的遥控接收器。P1 口作为按键部分,P0.7 口作为发射部分,电路图如图 3-8。3.4 红外接收模块的硬件电路接受部分的电路原理图如图 3-9 所示。其中 AT89C51(2)单片机为控制核心:P1.0P1.7 口作为数码管的二进制数据输出,通过数码管显示发射终端的按键号,同时P0 口和 P2 口相应的二极管会显示亮灯;P3.0、P3.3 口接收调解后的红外遥控信号,需要说明的是:图 3-9 接收部分电路原理图1) 处于在开关机时灯应全灭的考虑,P0 和 P2 口在系统上电初始化后将一直保持为高电平,知道接收到发射部分的控制信号,其状态才会发生改变。2) 红外接收头采用一体化接收器 HRM5700B,其解调频率为 38KHz,当 HRM5700B接收到 38KHz 的红外脉冲信号时输出为低电平,反之输出高电平。它是将光探测器与前置放大器封装在一起,以实现对脉冲编码信号调制的红外光信号的接收。基于单片机的红外遥控控制模块的设计12在系统工作时,HRM5700B 对接收到的脉冲编码信号进行解调,解调后的信号输入至单片机的 P3.0、P3.3 口。基于单片机的红外遥控控制模块的设计134 控制模块的软件设计本设计的控制软件分为发射控制部分和接收控制部分。4.1 发射部分的工作原理系统上电初始化,然后调用键扫描处理子程序。当无按键按下时,系统处于等待状态;当有按键按下时,系统通过按键检查子程序,检查按键号并转入相应的发射子程序。在发射子程序中,将待发射信号调制成 38KHz 的载波信号,由单片机的 14 脚输出,经三极管 9013 放大后驱动红外发射管 ST188,发射调制脉冲信号。发射信号采用脉冲个数编码,不同的脉冲个数代表不同的编码,最小为 6 个脉冲,最大为 21 个脉冲,遥控码数据帧间隔为 8ms。为达到控制准确的目的,将发射脉冲分为连接段、控制段和结束段。连接段为发射信号的前 3 个脉冲,脉冲宽度分别为 4ms、2ms、4ms,脉冲间隔为 1ms。结束段为发射信号的最后 2 个脉冲,脉冲宽度分别为 2ms、4ms,脉冲间隔为 1ms。中间为控制段,脉冲宽度和卖出那个间隔均为 1ms。发射 8 个编码时的输出信号波形如图 4-1 所示。其中前 3 个脉冲为连接段。中间 3 个脉冲为控制段,最后 2个脉冲为结束段。图 4-1 发射 8 个编码时的输出信号波形图4.2 接收部分工作原理系统上电初始化后,对单片机的 P3.3 口进行检测,当其为高电平时,系统处于等待状态。当其为低电平时,将启动中断服务程序,实现接收数据帧。需要说明的是:数据帧采用中断方式进行接收,单片机在外中断 1 方式下工作。在数据帧接收时,将对所接收数据的前 3 位码的码宽进行验证。前 3 位码的码宽分别为 4ms、2ms、4ms,若任意一位的码宽不满足要求,都将作为错误码处理,当系统接收到的高电平脉宽大于5ms 时,结束脉冲接收。然后系统会对所接收脉冲的最后两位脉宽进行验证,其值应分别是 2ms 和 4ms,否则将会作为错误码处理,最后系统根据累加器 A 中的脉冲个数,在基于单片机的红外遥控控制模块的设计14单片机 P0 或 P2 口的某一对应引脚输出控制信号,同时在 P1 口输出相应的二进制数据。此时即完成一次数据的接收处理。HRM5700B 接收 8 个编码时的输出信号波形如图 4-2所示。图 4-2 ST188 接收 8 个编码时的输出信号波形图4.3 遥控系统的编码及解码4.3.1 遥控发射编码格式采用脉宽调制的串行码,以脉宽为 0.565ms、间隔 0.56ms、周期为 1.125ms 的组合表示二进制的“0” ;以脉宽为 0.565ms、间隔 1.685ms、周期为 2.25ms 的组合二进制的“1” ,其波形如图 4-3 所示。图 4-3 遥控码的“0”和“1” (注:所有波形为接收端的与发射相反)上述“0”和“1”组成的 32 位二进制码经 38khz 的载频进行二次调制以提高发射频率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图 4-4 所示。基于单片机的红外遥控控制模块的设计15图 4-4 遥控信号编码波形图遥控器在按键按下后,周期性地发出同一种 32 位二进制码,周期约为 108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45ms63ms 之间,图 4-5 为发射波形图。图 4-5 遥控连发信号波形当一个键按下超过 36ms,振荡器使芯片激活,将发射一组 108ms 的编码脉冲,这108ms 发射代码由一个引导码(9ms),一个结果码(4.5ms),低 8 位地址码(9ms18ms),高 8 位地址码(9ms18ms),8 位数据码(9ms18ms)和这 8 位数据的反码(9ms18ms)组成。如果键按下超过 108ms 仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。4.3.2 数据帧的接收处理当红外线接收器输出脉冲帧数据时,第一位码的低电平将启动中断程序,实时接收数据帧。在数据接收时,先对第一位(起始位)码的码宽进行验证。若第一位低电平码的脉宽小于 2ms,将作为错误码处理;否则认为是起始码,累加器 A 加 1.当间隔位的高电平大于 3ms 时,结束接收,然后根据累加器 A 中的脉冲个数,执行相应的输出操作。图 4-6 为红外线接收器输出的一帧遥控码波形图。图 4-6 一帧遥控码波形图基于单片机的红外遥控控制模块的设计164.4 遥控发射及接收控制程序流程图4.4.1 遥控发射控制流程图图 4-7 遥控红外发射流程图图 4-7 是遥控发射的主程序,首先初始化程序,然后调用键扫描处理子程序。上右图为扫键过程,首先判断控制键是否按下,若有控制键按下则进行逐行扫描,按照P 口值查找键号转至相应的发射程序。红外信号发射过程:首先装入发射脉冲个数(发射时为 3ms 脉冲,停发时为 1ms脉冲),此时若发射脉冲个数为 1 则返回主程序,若不为 1 则发 1ms 脉冲,然后停发1ms 脉冲,这样便结束整个发射过程。在实践中,采用红外线遥控方式时,由于受遥控距离,角度等影响,实用效果不是很好,如采用调频或调幅发射接收码,可提高遥控距离,并且没有角度影响。基于单片机的红外遥控控制模块的设计174.4.2 遥控接收控制流程图图 4-9 遥控接收控制流程图遥控接收部分的主程序及初始化及延时过程如图 4-9:首先初始化,然后按照显示亮度数据设定调光脉冲延时值,看 P3.0 口的脉冲是否为 0,若不为 0 则调入延时程序,此时 P2.7 口输出调光脉冲然后返回;若为 0 则直接返回基于单片机的红外遥控控制模块的设计18中断过程如图 4-10:首先判断低电平脉宽度是否大于 2ms,若脉宽不到 2ms,中断返回;若低电平大于 2ms,则接收并地低电平脉冲计数,接下来看判断高电平脉冲宽度是否大于 3ms,若脉宽不到 3ms,则返回上一接收计数过程;若高电平脉宽大于 3ms,则按照脉冲个数至对应功能程序。此时中断返回。图 4-10 遥控接收中断流程图4.4.3 控制系统的主程序红外遥控发射芯片采用 PPM 编码方式,当发射器按键按下后,将发射一组 108ms 的编码脉冲。遥控编码脉冲由前导码、8 位用户码、8 位用户码的反码、8 位操作码以及8 位操作码的反码组成。通过对用户码的检验,每个遥控器只能控制一个设备动作,这样可以有效地防止多个设备之间的干扰。编码后面还要有编码的反码,用来检验编码接收的正确性,防止误操作,增强系统的可靠性。前导码是一个遥控码的起始部分,由一个 9ms 的低电平(起始码)和一个 4. 5ms 的高电平(结果码)组成,作为接受数据的准备脉冲。以脉宽为 0. 56ms、周期为 1. 12ms 的组合表示二进制的“0”;以脉宽为1. 68ms、周期为 2. 24ms 的组合表示二进制的“1”。如果按键按下超过 108ms 仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2. 5ms)组成。基于单片机的红外遥控控制模块的设计19单片机采用外部中断 INTI 管脚和红外接收头的信号线相连,中断方式为边沿触发方式。并用定时器 0 计算中断的间隔时间,来区分前导码、二进制的“1”、“0”码。并将 8 位操作码提取出来在数码管上显示。具体程序部分,见附录。基于单片机的红外遥控控制模块的设计205 总结与展望本毕业设计研究的是利用 AT89C51 单片机芯片来控制一个红外遥控系统,通过掌握其原理及控制过程,设计一个硬件电路,并通过和同学合作进行对硬件电路的相关软件设计共同完成这个毕业设计。最终目的在于学会独立的查找资料选择方案,巩固所学知识设计单片机硬件电路,加强电子制作的动手能力。通过本次毕业设计我认识到自己在专业知识上的缺陷,所学专业知识在实际应用中还不能够得心应手,以后我会加强这方面的学习,在实际应用中多下功夫,提高自己的个人能力。展望未来,家用电器信息化能够大大提高人们的生活质量井且在此基础上开发出能够统一控制这些家电的遥控器会越来越受到人们的欢迎无线通信技术发展越来越快同时,我们也应该注意到。红外通信应用的局限性也越来越明显了,比如其通信距离以及通信数据率等原因。现代生活中席线局域网、GPRS 等无线通信技木将在家电信息化的过程中将代替它而起到更大的作用。基于单片机的红外遥控控制模块的设计21参 考 文 献1 霍孟友.单片机原理与应用M. 北京:机械工业出版社,2004.2 潘新民.王燕芳.微型计算机控制技术M.北京:电子工业出版社,2003.3 谭建成.电机控制专用集成电路M. 北京:机械工业出版社,2004.5 苏长赞.实用遥控技术手册M.北京:北京人民邮电出版社,1996.6 陈永甫.红外探测与控制电路M. 北京:北京人民邮电出版社,2004.7 芦健,彭军,颜自勇,陈文芗.自学习型智能红外遥控器设计J.国外电子测量技术,2006,8(25):63-66.8 李华.MCS-51 系列单片机实用接口技术M. 北京:北京航空大学出版社,1993.9 孙育才.MCS-51 系列单片微型计算机及其应用M. 北京:东南大学出版社,1991.10 黄俊,王兆安.电力电子技术(第三版)M 北京:机械工业出版社,1999.12.11 李华.MCS-51 实用接口技术M. 北京:北京航空航天大学出版社,1996.12 陆坤等.电子设计技术M 成都:电子科技大学出版社,1998.10.13 胡骅, 陈明.Protel 99 SE 原理图与 PCB 设计M 北京:机械工业出版社,2005 14 胡汉才.单片机原理及其接口技术M. 北京:清华大学出版社,2006,3 15 赵 亮. 单片机 C 语言编程与实例M. 北京: 人民邮电出版社, 2003. :3 -432基于单片机的红外遥控控制模块的设计22致 谢首先,我要感谢我的导师老师在毕业设计中对我给予的悉心指导和严格要求,同时也感谢本校的一些老师在毕业设计期间所给予我得帮助。在我毕业论文写作期间,各位老师给我提供了种种专业知识上的指导和日常生活上的关怀,没有您们这样的帮助和关怀,我不会这么顺利的完成毕业设计,借此机会,向您们表示由衷的感激。接着,我要感谢和我一起做毕业设计的同学。在毕业设计的短短过程中,你们给我提出很多宝贵的意见,给了我不少帮助还有工作上的支持,在此也真诚的谢谢你们。同时,我还要感谢我的寝室同学和身边的朋友,正是在这样一个团结友爱,相互促进的环境中,在和他们的相互帮助和启发中,才有我今天的小小收获。最后我要深深地感谢我的家人,正是他们含辛茹苦地把我养育成人,在生活和学习上给予我无尽的爱、理解和支持,才使我时刻充满信心和勇气,克服成长路上的种种困难,顺利的完成大学学习。 还有许许多多给予我学业上鼓励和帮助的朋友,在此无法一一列举,此也一并表示忠心地感谢!基于单片机的红外遥控控制模块的设计23附录/*/ send.c/ 遥控发射器/*/使用 AT89C51 单片机,12Mhz 晶振/#pragma src(E:remote.asm)#include reg52.h#include intrins.h /_nop_():延时函数用/#define uchar unsigned char#define uint unsigned int/sbit remoteout=P35; / 遥控输出口/uint i,j,m,n,k,s;Uchar keyvol,temp; / 键值存放/*1 毫秒延时程序*/void delay(uint z) uint t1,y; for(t1=z;t10;t1-) For(y=110;y0;y-);/*初始化函数*/clearmen()基于单片机的红外遥控控制模块的设计24Remoteout=0; / 关遥控输出IE=0 x00;TMOD=0 x02; / 8 位自动冲撞模式TH0=0 xf3; / 40Khz 初值TL0=0 xf3;EA=1; / 开关中断/*发射函数*/sed ()ET0=1;TR0=1;delay(#);et0=0;remoteout=0; / 40Khz 发 3 毫秒for(m=keyvol;m0;m-) delay(1); /停 1 毫秒 ET0=1;TR0=1;delay(1);ET0=0;TR0=0;remoteout=0; /40 毫秒 Khz 发 1 毫秒 delay(10)/tx()switch(keyvol) case0:keyvol=keyvol+1;sed();break; case1:keyvol=keyvol+1;sed();break; case2:keyvol=keyvol+1;sed();break; case3:keyvol=keyvol+1;sed();break; case4:keyvol=keyvol+1;sed();break;基于单片机的红外遥控控制模块的设计25 case5:keyvol=keyvol+1;sed();break; case6:keyvol=keyvol+1;sed();break; case7:keyvol=keyvol+1;sed();break; case8:keyvol=keyvol+1;sed();break; case9:keyvol=keyvol+1;sed();break; case10:keyvol=keyvol+1;sed();break; case11:keyvol=keyvol+1;sed();break; case12:keyvol=keyvol+1;sed();break; case13:keyvol=keyvol+1;sed();break; case14:keyvol=keyvol+1;sed();break; case15:keyvol=keyvol+1;sed();break; default:break; /*键功能函数*/void keywork()Uchar scancode,tmpcode;P0=0 xf0; / 发全 0 行扫描码If(P0&0 xf0)!=0 xf0) /若有键按下 Delay(5); /延时去抖动If(P0&0 xf0)!=0 xf0) /延时后在判断一次,去除抖动影响 Scancode=0 xfe; While(scancode&0 x10)!=0)/ /逐行扫描,刚好扫到第五位就推出了 P0=scancode; /输出行扫描码 If(P0&0 xf0)!=0 xf0) /本行有键按下 Tmpcode=(P0&0 xf0)|0 x0f;基于单片机的红外遥控控制模块的设计26 / 返回特征字节码,为 1 的位即对应于行和列 Temp=(scancode)+(tmpcode); Switch(temp) Case0 x11:keycol=0;tx();break; Case0 x21:keycol=1;tx();break; Case0 x41:keycol=2;tx();break; Case0 x81:keycol=3;tx();break; Case0 x12:keycol=4;tx();break; Case0 x22:keycol=5;tx();break; Case0 x42:keycol=6;tx();break; Case0 x82:keycol=7;tx();break; Case0 x14:keycol=8;tx();break; Case0 x24:keycol=9;tx();break; Case0 x44:keycol=10;tx();break; Case0 x84:keycol=11;tx();break; Case0 x18:keycol=12;tx();break; Case0 x28:keycol=13;tx();break; Case0 x48:keycol=14;tx();break; Case0 x88:keycol=15;tx();break; Else scancode=(scancode1)|0 x01; /行扫描码左移一位 /*主函数*/Void main() Clearmen(); /初始化基于单片机的红外遥控控制模块的设计27 While(1) Keywork(); /按键扫描 /*40Khz 发生器*/定时中断 T0Void time_intt()(void) interrupt 1 Remoteout=remoteout;/*结束*/
展开阅读全文