毕业设计(论文)智能学习型遥控系统的设计与实现.doc

上传人:仙人指路1688 文档编号:3982935 上传时间:2023-03-30 格式:DOC 页数:42 大小:2.08MB
返回 下载 相关 举报
毕业设计(论文)智能学习型遥控系统的设计与实现.doc_第1页
第1页 / 共42页
毕业设计(论文)智能学习型遥控系统的设计与实现.doc_第2页
第2页 / 共42页
毕业设计(论文)智能学习型遥控系统的设计与实现.doc_第3页
第3页 / 共42页
毕业设计(论文)智能学习型遥控系统的设计与实现.doc_第4页
第4页 / 共42页
毕业设计(论文)智能学习型遥控系统的设计与实现.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《毕业设计(论文)智能学习型遥控系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)智能学习型遥控系统的设计与实现.doc(42页珍藏版)》请在三一办公上搜索。

1、智能学习型遥控系统的设计与实现1 引言1 引言11.11选题背景22 系统综述22.1遥控系统综述32.1.1红外遥控系统编码及译码技术32.1.2脉宽调制控制技术32.2 系统及需求分析42.2.1 主要功能42.2.2 可行性分析42.3 遥控器设计背景62.4 遥控器功能简介62.4.1 红外信号产生发送功能62.4.2 红外信号接收整形功能62.4.3 红外信号学习功能62.4.4 复合MACRO功能62.4.5 操作蜂鸣提示功能72.5 系统开发目标73 系统分析73.1 硬件结构图73.2 功能模块图74 系统设计84.1 硬件模块结构设计84.1.1 总电路图84.1.3 蜂鸣器

2、提示部分设计104.2 软件设计134.2.1 译码原理134.2.2 主体程序流程图164.2.3 译码程序流程图175 系统实现185.1 硬件部分的实现185.2 软件的实现205.2.1 译码信号发送程序的实现215.2.4 对蜂鸣器鸣叫控制程序的实现266 系统的开发环境及测试分析266.1 系统开发环境266.2 系统测试分析276.2.1 硬件测试分析276.2.2 程序测试分析276.2.3 全系统测试286.2.4 用户验收测试287 总结291选题背景随着科学技术的迅猛发展,我国电子市场在不断增大,电子产品走进千家万户。而在众多电子产品中红外线的应用相当广泛,一些家用电器控

3、制几乎都是用红外遥控器完成。红外线遥控是目前应用最广泛的一种通信和遥控手段。由于红外线遥控器具有体积小、功耗低、功能强、成本低等特点。因此,彩电、录像机、音响设备、空调、玩具、门铃以及遥控汽车路牌等其它小型装置上也纷纷采用红外线遥控。红外线是一种光线,具有普通光的性质,可以以光速直线传播,强度可调,可以通过光学透镜聚焦,可以被不透明物体遮挡等等。特别制造的半导体发光二极管,可以发出特定波长的红外线,通过控制二极管的电流可以很方便地改变红外线的强度,达到调制的目的。因此,在现代电子工程应用中,红外线常常被用做近距离视线范围内的通讯载波,最典型的应用就是家电遥控器。随着社会科学技术的发展与俱增,人

4、们的生活水平也是益提高,为了减少人的工作量,所以是对各种家用电器、电子器件的非人工控制的要求也是越来越高,针对与这种情况,设计出一种集成度比较高的控制体系是必然的。带红外遥控器的家电给我们的生活带来极大的方便,但遥控器多了很容易弄混,如果有一种可对家中各种红外遥控器发射的控制信号进行识别、存储和再现的智能型红外遥控器,用这样一个遥控器控制家中所有电器该有多好。为此,我们试着设计一种以单片机为核心的智能型遥控器。经指导老师同意,确定了此毕业设计的题目。2 系统综述本智能学习型遥控系统是将红外发送与接收技术应用在遥控系统上,它完全可以替代普通的遥控器,而且可以集多个遥控器于一身,解决了日常生活中由

5、于遥控器过多造成的许多不便。本遥控系统将红外传送遥控系统智能化,可使产品缩小体积,增强功能,并且能够学习和控制各种不同类型的红外遥控设备。本系统所涉及的技术主要包括:红外载波数据传输技术、单片机控制技术、红外遥控系统编码及译码技术、脉宽调制控制技术、电路PCB设计与制作技术等。 2.1遥控系统综述2.1.1红外遥控系统编码及译码技术本系统中使用的红外遥控发射电路SC6122。它是一块用于红外遥控系统中的专用发射集成电路,采用CMOS工艺制造,可以在20V至55V的低电压下工作,它通过SEL选择管脚,可支持128+6条指令码,用户编码可自由选择。接64个按键,其中有三组双重按键。SC6122所发

6、射的一帧码含有一个引导码,16位的用户编码和8位的键数据码。键数据码的反码也同时被传送。引导码由一个9ms的载波波形和4.5ms的关断时间构成,它作为随后发射的码的引导。这样,当接收系统是由微处理器构成的时候,能更有效地处理码的接收与检测及其它各项控制之间的时序关系。编码采用脉冲位置调制方式(PPM)。利用脉冲之间的时间间隔来区分“0”和“1”。每次8位的码被传送的同时,它们的反码也被传送,以大大减少系统的误码率。 2.1.2脉宽调制控制技术采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。脉宽调制(PWM)控制技术就是以该结论为理论基础,对半导体

7、开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率脉宽调制是一种调制或改变某个方波的简单方法。方波占空比基本形式是随输入信号变化的。占空比是指方波的高电平时间和低电平时间之比。一个50%占空比的波形会具有50%的高电平时间和50%的低电平时间,而一个10%占空比的波形则具有10%的高电平时间和90%的低电平时间。2.2 系统及需求分析2.2.1 主要功能通过对生活中经常用到的遥控系统的了解以及调查,本系统基本要实现以下功能:(1) 红外信号产生

8、发送功能。在遥控系统接通电源后,就处于工作准备好状态,可以通过遥控器上的矩阵按键,就可以发送红外信号。(2) 红外信号学习功能。在遥控器进入学习状态后,可以按下遥控器的矩阵按键,红外接收头就会采集到对方发送的红外信号,并将电信号转换成数字信号将其存储。从而实现学习功能。(3) 复合MACRO功能。该功能能够实现一个按键可以实现多个按键的功能。(4) 数据存储功能。在对遥控系统在学习状态下获取到信号转换成数字信号的时候,就需要将数字信号保存到存储模块当中。2.2.2 可行性分析要完成本系统功能,主要需要解决三大方面的内容:第一个就是对红外信号的译码问题,通过查找具体型号遥控器的技术资料,了解其编

9、码规则,并在存储式示波仪上观察其具体波形,在以上基础上还可直接用单片机将数据通过串口传到PC机上进行具体分析;第二个就是通过按键发送相应的数据功能的实现,通过单片机译出各按键的键码值,然后通过红外发送头发送信号。第三个就是数据存储功能的实现,将接收后转换得到的数字信号存储在存储器中。在技术难度方面,由于有指导老师的指导和相关参考文献,因此完全可以实现。在系统中使用的单片机是AT89S52,AT89S52是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的

10、高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。该单片机可组成独立系统,并且成本低,运行速度快,其强大的功能是完全可以实现该系统的

11、。红外信号译码的实现本系统最重要的就是译码的准确性,为了做到这一点最主要的是要对红外接收头输出信号的彻底分析,主要是通过输入到存储式示波仪上观察其波形,记录其波形规则及具体的维持时间,也可以通过单片机对红外接收头输出的信号通过对高低电平计数的方式通过串口输入到PC机上,观察单片机对信号接收的误差,再有针对性的进行比较准确的译码。在对遥控器发码规则搞清楚的基础上,就可以在单片机程序上下功夫进行译码了,当红外线信号由低跳高或由高跳低的时候启动定时计数器,并对计数结果进行保存,再对一系列的数据分析判断其属于哪个范围,若属于编码规则“0”的范围则译码“0”,若属于编码规则“1”的范围则译码“1”。然后

12、再对译码产生二进制位进行组合区分,以分离开客户码和按键码等,得到键码值就可以了。按键发送数据信号的实现在遥控器上有按键矩阵和学习按键,当在按键矩阵中的任意一个键按下时,遥控器进入发送信号状态,红外发送头会将该按键的相关信息发出。如果按下学习按键,遥控器进入学习状态,然后按下矩阵按键中的任意一个,遥控器进入等待红外信号的接收,接收成功后,当再次按下矩阵中的那个按键后,遥控器又将进入发送信号状态。复合MACRO功能的实现在遥控系统学习状态中,复合MACRO功能能够使一个键的集成多个按键的功能。在一些单片机系统中,一键多功能的技术,开关SP1接在P3.7/RD管脚上,在AT89S52单片机的P1端口

13、接有四个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在闪烁,当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁,再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁,再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁,再按下开关SP1的时候,又轮到L1在闪烁了,如此轮流下去。这样就实现了具有一键多功能的按键识别技术。操作声音提示的实现在本系统中,通过按键对系统操作或按键发送信号的时都会有蜂鸣音的提示,蜂鸣是通过和CPU来控制的,其蜂鸣时间长度和频率都是通过程序控制的。2.3 遥控器设计背景以方便人们生活对电器的控制为宗旨,以减轻工人的

14、劳动负担为主要目的。采用先进的技术和方法,依靠高素质的科研人员和高水平的检测检验队伍,提供分析监控服务,同时进行监控技术和方法的研究。给人们的日常生活带来更多的方便,建立智能学习型遥控系统,对电器进行遥控,还可以学习其它遥控器的按键功能,操作的同时还有蜂鸣声音提示。无论何时何地,都能在你的手中遥控着。2.4 遥控器功能简介本系统主要实现以下各功能:红外信号产生发送功能、红外信号接收整形功能、红外信号学习功能、复合MACRO功能、操作时蜂鸣提示功能。2.4.1 红外信号产生发送功能本红外遥控系统运行后,并不立刻发送数据,必须要按下按键矩阵中的任何一个键后才会发送信号,若持续按键时间超过一定时间将

15、会自动默认你已经松开按键,发送头将按正常情况发送信号。2.4.2 红外信号接收整形功能当遥控系统进入学习状态下的时候,当外界有相应的红外信号发送过来,红外接收头将会接收到该信号并将该信号转换成数字传输给单片机。2.4.3 红外信号学习功能当单片机收到红外接收头传送来的数字信号的时候静态稳定高亮显示,用来显示系统所处状态。2.4.4 复合MACRO功能复合MACRO功能就是能够人那个单片机的学习功能更加强大,减小遥控器的体积,复合MACRO功能就是一个键可以学习多个功能,即可以发送多种不同的信号。2.4.5 操作蜂鸣提示功能在本系统中只要按键就发出不同的蜂鸣提示。在系统刚接通时,蜂鸣器会连续鸣叫

16、两声,表示系统已经准备好工作。在按键矩阵任意按下键时,蜂鸣器都会鸣叫一声,表示信号发送成功。2.5 系统开发目标(1)开发出满足上述功能的系统;(2)努力使该系统具有稳定、耐用、可靠度高、使用方便等特点;(3)尽量降低成本、优化系统;(4)改进设计以适合广泛应用。3 系统分析3.1 硬件结构图本系统的功能设计电路应该包括以下几个基本电路。其电路组成图如下:MCU按 键 矩 阵 LED 指示电路红外发 射电路功率放大电路EEPORM存储放大电路红外接收传 感 器 图1 智能学习型遥控系统结构图3.2 功能模块图根据本系统设计思想,本系统具有红外信号产生发送功能、红外信号接收整形功能、红外信号学习

17、识别功能、复合MACRO功能、数据存储功能。其功能框图如下:智能学习型遥控系统红外学习识别功能红外信号发射功能红外信号接收功能复合MACHO功能数据存储功能图2 智能学习型遥控系统功能图4 系统设计4.1 硬件模块结构设计在该设计中,电路的设计都是经过再三斟酌的,并且用Protel画出电路图,为以后做PCB以及焊接电路做好准备。4.1.1 总电路图 本系统电路包括电源部分电路、红外接发送与接收点路、单机最小系统电路、蜂鸣器声音提示电路、数字信号存储电路,在本电路中,主要用到单片机的P0和P1口,P0口把单片机产生的信号传送到三极管基极,然后再由红外发送头将它发送出去。P1口连接矩阵按键,来控制

18、单片机应该发送那个信号。图3 红外遥控系统总电路4.1.2 红外接收部分电路设计该图是红外线遥控器信号接收头的简易电路,它可接收载波频率从3357KHz的遥控器信号。10电阻起到限流的作用,47uF电容滤波减少干扰,当红外接收头OUT端没有信号输出时,10K的电阻能使红外接收头OUT端保持高电平。以逻辑笔接触红外线接收模块的信号输出端(OUT),便可以侦测当按下红外线遥控器某一按键时,红外线数字信号的发射。若有发射红外线数字信号则经过红外线接收模块取出数字信号数据,逻辑笔脉冲LED便会闪动。这是检测红外线遥控器好坏最简单的方法。当外部有红外线信号时,该LED灯会闪烁提示。PNP型三极管的基极接

19、在红外接收头的信号输出引脚,三极管的集电极极接地,发射极接光发二极管,然后通过1K的电阻接电源正极,其中1K的电阻在此电路中起限流的作用。当没有红外线信号的时候,其输出脚保持高电平,此时三极管截止,当有红外线信号时,红外线接收头的输出会出现低变,此时三极管出现导通电流,所以发光二极管闪动。图4 红外遥控系统接收电路4.1.3 蜂鸣器提示部分设计本红外遥控系统的蜂鸣器声音提示部分电路如上图所示,在单片机的P25脚通过1K的电阻与8550三极管的基极相连,三极管的集电极接地,发射极与蜂鸣器的负极相连,蜂鸣器的正极接电源正极。电源正极通过10K电阻与单片机的P25脚相连。因此当P25脚没有信号输出高

20、电平时,P25脚相当与接一个10K上拉电阻而保持高电平,三极管截止,没有电流通过蜂鸣器。当P25脚输出低电平时,三极管导通,有电流通过蜂鸣器,蜂鸣器发出鸣叫声音,其中1K的电阻起限流作用。因此可以通过程序控制单片机P25脚的输出状态来控制蜂鸣器的蜂鸣频率及蜂鸣时间。图5 遥控系统蜂鸣器提示电路4.1.4 单片机最小系统及部分周边电路设计单片机的最小系统包括震荡电路、复位电路、工作指示灯等。系统中采用11.0592的振和2个30P的片电容构成震荡电路,由1K电阻和22uF电容和一个按键构成上电复位电路,通电工作时工作指示灯为亮。图6 单片机最小电路4.1.5 遥控系统按键矩阵电路设计本实用新型涉

21、及按键控制技术,针对现有技术端口用量大、成本高的缺陷,提供一种按键矩阵,包括按键电路和多个按键,按键电路包括电源、上拉电阻、处理单元和多个分压支路;多个分压支路彼此并联,并与上拉电阻串联后接于电源的两极之间;每一分压支路对应一个按键,包括串联的按键开关和分压电阻,各分压支路分压电阻的阻值各不相同;处理单元的两端分别接于多个分压支路的两个并联端,用于测量按键按下时该按键对应的分压支路两端的电压,并将测得的电压值与预先存储的按键电压值进行匹配,输出匹配按键的按键值。由于整个按键矩阵仅配置一个端口,可大大节省芯片资源,降低按键电路的成本,且使用的器件数量少,易于实现。图7 按键矩阵电路4.2 软件设

22、计在本系统中,硬件部分电路设计比较简单,主要的难点就是集中在程序设计方面,因为程序就是灵魂。在译码过程中都是要靠严密的程序来实现的,现在我将具体讲解本系统的程序设计思想。4.2.1 译码原理红外线遥控器是以红外发光LED,发射波长940nm的红外线不可见光,来传送信号。整个遥控器系统分为发射端和接收端两个部分,发射端经过红外线发射LED送出红外线控制信号,这些信号经过红外接收模块接收端接收进来,并对其控制信号做译码而做相对的动作输出,完成遥控的功能。当按下遥控器上某键后,遥控器上的控制芯片便进行编码产生一组句柄,结合载波电路的载波信号(一般使用38kHz)而成为合成信号,经过放大器提升功率而推

23、动红外线发射二极管,将红外线信号发射出去,所以要发射的句柄必须加上载波才能使信号传送的距离加长,一般遥控器的有效距离为7m。红外接收主要控制组件为红外线接收模块,其内部含有高频的滤波电路,专门用来滤除红外线合成信号的载波信号(38kHz)而送出发射器的控制信号。当红外线合成信号进入红外线接收模块,在其输出端便可以得到原先的数字控制编码,只要经过单片机译码程序进行译码,便可以得知按下了哪一按键,而做出相对应的控制处理,完成红外线遥控的动作。在红外线信号的传播中,其编码方式有:时间调制、相位调制、电平调制等,其中以时间调制为主。本系统所使用的遥控器的红外信号编码方式为时间调制。要将译码做得非常准确

24、必须先要弄清楚遥控器的编码规则及观察其具体波形,再具体分析其误差范围,然后有针对性的译码准确率将大大提高。下面来分析一下所使用的遥控器所发的红外信号。首先在存储式示波仪上观察其波形如下:图8 示波仪观察红外接收头信号再查阅该IC遥控器所发码的编码格式如下:图9 遥控器发码格式还了解其逻辑“0”和逻辑“1”的定义:9ms560us560us4.5ms590us1690us引导码01图10 遥控器的逻辑位定义图10为每按下一个按键所发的一串码的格式,可以观察看出,该型号遥控器所发码包含引导码、8bit位客户码、8bit位客户码反码、8bit按键码、8bit按键码反码以及结束码组成。图12为其逻辑位

25、的定义,以及其电平时间长度,可以了解其编码规则,560us时间的高和590us时间的低电平应译码“0”,560us时间的高和1690us时间的低电平应译码“1”。通过大量的实验测试以及观察波形发现,红外接收头输出的为遥控器发射码的反向,红外接收头在没有信号到达时,其输出端一直保持高电平,直到接收到红外线信号时,才会有低的跳变。这一点是相当重要的,因为单片机对红外接收头信号的译码正是从第一个低跳变开始的。在图10中,观察红外线信号的波形的时候,一方面是观察其高低电平的变化,可以直接根据规则手工译码;另一方面要注意记录其各电平持续的时间,确定大概的活动范围。为了精确起见,可以直接用单片机将其高低电

26、平计数数据通过串口传送到PC机上仔细观察,确定范围。有了前面的了解,对红外线信号的译码就不是那么困难了。可以用单片机的一个定时计数器,对其高低电平进行计数,具体是这样的:当单片机检测到第一个低电平,则定时计数器T0立即开始计数,等到检测到高电平出现,T0停止计数,读TH0寄存器中的值,检测是否为引导码,是就跳过16位的客户码,T0计下每次底电平的时间,再判断这个时间属于哪个范围即可译码“0”或者“1”,如此循环,直到译出所有的位。取键值取键码开始系统初始化信号处理生成发码波序列发码第一帧对方是否有信号发出继续发一帧码是否为学习键否否有等待一定时间接收信号按键是否松开键4.2.2 主体程序流程图

27、图11 主体程序流程图等待键码下一位高电平,T0停止计数等待键码第一位低电平,T0开始计数等待键码第一位高电平并置TH0、TL0、h_count为零当前位为1初始化,置TH0、TL0为零判断其是否为引导码TH00x04进入译码程序否是H_count8当前位为0等待引导码高电平,T0开始计数等待引导码低电平,T0停止计数键码值H_count+是否是否退出译码程序4.2.3 译码程序流程图 图12 译码原理程序流程图5 系统实现5.1 硬件部分的实现在本系统设计中,硬件部分设计比较简单,但也是相当重要的。开始可以在万用板上搭建各部分电路进行验证,比如:在电源部分电路的验证中,就可以先在万用电路板上

28、搭建该部分电路,然后按照输入的要求输入9V电压,用万用表测试7805的输出端,看其是否是所需的稳定的5V电压,若是表明该部分是切实可行的。同样道理,可以搭建单片机最小系统、数码管显示电路、蜂鸣电路以及红外接收头部分的电路。当验证各部分电路都正常运行后就可以把它们联合起来,进行总的程序调试。搭建实验电路的目的是为了方便程序的调试,以及方便硬件电路的修改等,在搭建好的电路上可以很方便的调试程序,并且可以和单片机仿真机连接,直接在PC机端调试程序,而不需要往单片机里反复地写程序,对于提高单片机的使用寿命起到了相当大的作用。在所有程序都调试通过后,就可以用Protel设计电路板了,在做出电路的PCB图

29、后,若较简单的电路可以用热转印法自己制板,较复杂的电路板或多面板可送往电路板工厂制作。图13 示波器显示一帧信号图图14 示波器显示载波图图15 焊接DEMO实物图红外信号测量报告(SC6122格式)1、客户码00000001 11111111【FF 80】2、键码(01)01010000 10101111【0A】(02)00110000 11001111【0C】(03)10000010 01111101【41】(04)01100000 10011111【06】(05)10111000 01000111【1D】(06)10001000 01110111【11】(07)01001000 1011

30、0111【12】(08)11001000 00110111【13】(09)00101000 11010111【14】(10)10101000 01010111【15】(11)01101000 10010111【16】(12)11101000 00010111【17】(13)00011000 11100111【18】(14)00111000 11000111【1C】(15)00000010 11111101【40】(16)00001000 11110111【10】3、占空比4.600ms/13.400ms=1:34、0.1结构0结构:高 580.0s 低 540.0s1结构:高 580.0s 低

31、 1.680ms5、动态电流约11.1mA6、静态电流约8A该系统元件清单如下:表1 元件清单智能学习型遥控系统(元件清单)编号品名型号数量(个)备注1轻触按键四脚按键17无2电解电容22f/22V1无3电解电容220f/220V1无4瓷片电容33PF2无5晶振11.0592KHz1无6三极管80851无7发光二极管红色2无8蜂鸣器5V1无10红外接收头红外接收头1无11ICAT89S521无12电阻1005W1无13电阻15W1无14电阻1K5W3无15电阻10K5W16无16红外发送头红外发送头1无17IC座40PIN1无18IC24C041无5.2 软件的实现本系统所采用的IC是AT89

32、S52,它的编程语言常用的有二种,一种是汇编语言,一种是C 语言。汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C 语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C 语言还可以嵌入汇编来解决高时效性的代码编写问题。对于开发周期来说,中大型的软件编写用C 语言的开发周期通常要小于汇编语言很多。综合以上C 语言的优点,我在本系统的程序设计时选择了C 语言。5.2.1 译码信号发送程序的实现本系统所使用的遥控器的发码格式是采用的日本NEC编码格式,这种格式是很常见的遥控发码格式,目前国内大多数遥控器都采用此格式发码。要想

33、译码必须先了解其发码规则,经查阅相关资料,了解到此遥控器所发的红外信号是由引导码,8位的客户码,8位的客户码反码,8位的键码,8位的键码反码,再加延时,然后再有第二个引导码,如果按键还按着就循环第二引导码。经过研究此遥控器各键的发码,发现各键所发的红外信号引导码,客户码,第二引导码都是相同的,不同之处仅只有键码不同,而且键码后8位为前8位的反码,所以我们所关注的只是键码部分的波形。从资料上了解到此,此波形的逻辑0定义为560ms的高电平加上560 ms的底电平,逻辑1定义为560ms的高电平加上1690ms的底电平。我们译码就是要译出8位键码的各位是0还是1,从逻辑定义可以发现,它们只是低电平

34、时间不同,因此只要用定时器记住低电平的时间就可以译码了,当然还要断判下是否是NEC编码,这里只需要检测引导码就可以了。以下程序段是此遥控器的译码检测程序:/ /红外发送程序 #include #define uchar unsigned char #define uint unsigned int #define send0 send_pulse_565 (); send_space_1685 (); #define send1 send_pulse_565 (); send_space_560 (); uchar SYS_DATA=0x49; /系统码 sbit OUT=P37; void

35、send_bit (uchar one_bit); /发送一位字节 void send_data (uchar one_data); /发送一个数据 /包括一个起始标志 一个系统码及其反码 一个数据码(one_data)及其反码 char code disp=0x28,0x7E,0xA2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60,0x30,0x25,0xA7,0x26,0xA1,0xB1; char i1=0,i2=0,i3=0,i4=0,i5=0,i6=0,i7=0,i8=0; /显示缓冲 void delay(uchar t) char a; while(t-)

36、 for(a=255;a0;a-); void display(uchar t) while(t-) P0=dispi1; P2=0x7f; /对P2口进行赋值 delay(1); P2=0xff; /对P2口进行赋值 P0=dispi2; P2=0xbf; /对P2口进行赋值 delay(1); P2=0xff; /对P2口进行赋值 P0=dispi3; P2=0xdf; delay(1); P2=0xff; /对P2口进行赋值 P0=dispi4; P2=0xef; delay(1); /延时一小段时间 P2=0xff; P0=dispi5; P2=0xf7; delay(1); P2=0

37、xff; P0=dispi6; P2=0xfb; /对P2口进行赋值 delay(1); /延时一小段时间 P2=0xff; P0=dispi7; P2=0xfd; delay(1); P2=0xff; P0=dispi8; P2=0xfe; delay(1); P2=0xff; void send_pulse_9000 (void) /9ms脉宽 TH0=0xdc; TL0=0xff; TR0=1; TR1=1; while(TR0); TR1=0; OUT=1; /发送引导码中9ms的高电平void send_space_4500 (void) /4.5ms间隔 OUT=1; TH0=0x

38、ee; TL0=0x7f; TR0=1; while(TR0); OUT=1; /发送引导码中4.5ms的低电平void send_pulse_565 (void) /0.565ms脉宽 TH0=0xfd; TL0=0xee; TR0=1; TR1=1; while(TR0); TR1=0; OUT=1; /发送客户码565ms的高电平void send_space_1685 (void) /1.685ms间隔 OUT=1; TH0=0xf9; TL0=0x7f; TR0=1; while(TR0); OUT=1; void send_space_560 (void) /0.56ms间隔 OU

39、T=1; TH0=0xfd; TL0=0xea; TR0=1; while(TR0); OUT=1; void send_bit (uchar one_bit) uchar i; uchar key_num=0x01; for(i=0;i1; /one_bit右移一位 void send_data (uchar one_data) uint t=1000; send_pulse_9000(); /起始码 9ms的脉宽 考虑到误差 send_space_4500(); /4.5ms的间隔 send_bit (SYS_DATA); /发系统码 send_bit (SYS_DATA); /发系统码的

40、反码 send_bit (one_data); /发数据码 send_bit (one_data); /发数据码的反码 TR1=1; while(t-); TR1=0; OUT=1; void main(void) uchar c=0x77; uint t=65535; TMOD=0x21; /T0产生精确时间的延时或脉宽 16位 /T1产生38kHz方波 8位自动重装 TH1=0xf3; TL1=0xf3; IE=0x8a; delay(255); display(100); delay(255); display(100); while(1) send_data(c); void time0 (void) interrupt 1 TR0=0; TR1=0; void time1 (void) interrupt 3 /T1用来产生38kHz方波 OUT=OUT; 5.2.2 按键检测程序的实现本系统的按键检测分两种情况,一种是矩阵按键按下的时候,这时候红外发射头会发送一帧信号,信号里面含有该按键的键码。另一种是按下学习按键后,系统将等待对方的信号输入,如果有信号输入,将该信号译码并保存至存储器中备用,如果没有信号输入,系统将等待一定得时间,如果超过等待时间还没有信号输入,系统将又回到获取键码的状

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号