《单片机课程设计红外遥控.doc》由会员分享,可在线阅读,更多相关《单片机课程设计红外遥控.doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date单片机课程设计红外遥控基于单片机的多功能红外遥控设计-单片机课程设计 课 题 名 称: 基于单片机的多功能红外遥控设计 使用仪器及编号: Proteus7.5仿真软件 【摘要】本课题将通过Proteus软件来绘制原理图,然后设计一个红外遥控器:原理图分为两个部分,发送数据方和接收数据方,其间的硬件连接方式为无线的红外遥控功能,利用红外遥控功能需要对数据进行编码和解码。
2、通过按不同的按键来使蜂鸣器产生不同的音调,另外有播放音乐的功能;并且还可以控制DA转换电路产生方波,同时可以改变它的频率。本次课程设计的主要目的是为了锻炼学生独立思考、合作解决问题以及动手操作能力;也旨在对本门课程的巩固与提高。这次设计的任务是能掌握单片机电路设计的基本方法以及能正确的使用仿真软件对单片机线路进行调试。本设计是由硬件单片机和软件汇编语言进行结合产生的一个实际的产品,从教学的要求上实现了从理论到实践的过程。【关键词】:单片机、红外遥控目录一、绪论.11.1红外遥控背景及目的.11.2.国内外研究状况.2二、课程设计的目的. .2三、课程设计需要的元器件清单.3四、51单片机原理介
3、绍.34.1.ATB8C51单片机简介.34.2.时钟电路.54.3.复位电路.6五、红外遥控原理及简介.65.1.红外遥控原理.65.2.数据格式. .75.3.编码与解码.7六、软件设计.86.1.程序流程图. .86.2Proteus仿真电路图.106.3仿真结果及硬件实现的功能. .11七、设计遇到的问题及解决方法.12八、设计的总结、改进意见与展望. .12九、心得体会.13十、参考文献. .13十一、附件:程序清单.1411.1红外编码程序.1411.2红外解码程序.1811.3针对遥控器的解码. .29一、绪论1.1 红外遥控背景及目的遥控技术发展只有几十年的历史:本世纪20年代
4、,才刚刚出现无线电遥控的雏形。那时,人们试图将遥控技术应用于无人驾驶飞机和舰船上,但由于技术不够完善而未能成功。二次世界大战以后,遥控技术发展迅速,并逐渐在军事、国防、工农业生产以及科学技术等方面得到广泛的应用。到现今,随着电子技术的飞速发展,新型大规模遥控集成电路的不断出现,使得遥控技术有了日新月异的发展。遥控装置的中心控制部件已从早期的分立元件逐步发展到集成电路、大规模集成电路、超大规模集成电路,智能化程度大大提高。近年来,遥控技术在工业生产、家用电器、安全保卫以及人们的日常生活中使用越来越广泛。在无线遥控领域,目前常用的遥控方式主要有超声波遥控、红外线遥控、无线电遥控等。由于红外遥控的设
5、计制作简单方便,易于操作,因而成为遥控的主要方式,在国防、军事、生产、建设和日常生活中有极广泛的应用。为此,在前人研究的基础上设计出了一种红外遥控多通道控制系统的设计方法。研究表明,采用该方法设计的红外遥控控制系统控制方便,适用于含有较多受控电器的场合,可实现多路多功能控制。红外通信以红外线作为通信载体,通过红外线在空中的传播来传输数据,它由红外发射器和红外接收器来完成。在发射端,发送的数字信号经过适当的调制编码后,送入电光变换电路,经红外发射管转变为红外光脉冲发射到空中;在接收端,红外接收器对接收到的红外光脉冲进行光电变换,解调译码后恢复出原信号。红外通信作为一种数据传输手段,可以在很多场合
6、应用,如家电产品、娱乐设施的红外遥控,水、电、煤气耗能计量的自动抄表等。红外通信有着成本低廉、连接方便、简单易用和结构紧凑的特点,因此在小型的移动设备中获得了广泛的应用。通过红外接口,各类移动设备可以自由进行数据交换。红外接口是目前在世界范围内被广泛使用的一种无线连接技术,被众多的硬件和软件平台所支持;通过数据电脉冲和红外光脉冲之间的相互转换实现无线的数据收发。1.2 国内外研究状况自从1800年英国天文学家FW赫歇尔发现红外辐射至今,红外技术的发展经历了将近两个世纪。从那时开始,红外辐射和红外元件、部件的科学研究逐步发展,但发展比较缓慢,直到1940年前后才真正出现现代的红外技术。当时,德国
7、研制成硫化铅和几种红外透射材料,利用这些元、部件制成一些军用红外系统,如高射炮用导向仪、海岸用船舶侦察仪、船舶探测和跟踪系统,机载轰炸机探测仪和火控系统等等。其中有些达到实验室试验阶段,有些已小批量生产,但都未来得及实际使用。此后,美国、英国、前苏联等国竞相发展。特别是美国,大力研究红外技术在军事方面的应用。目前,美国将红外技术应用于单兵装备、装甲车辆、航空和航天的侦察监视、预警、跟踪以及武器制导等各个领域。红外技术发展的先导是红外探测器的发展。1800年,FW赫歇尔发现红外辐射时使用的是水银温度计,这是最原始的热敏型红外探测器。1830年以后,相继研制出温差电偶的热敏探测器、测辐射热计等。在
8、1940年以前,研制成的红外探测器主要是热敏型探测器。19世纪,科学家们使用热敏型红外探测器,认识了红外辐射的特性及其规律,证明了红外线与可见光具有相同的物理性质,遵守相同的规律。它们都是电磁波之一,具有波动性,其传播速度都是光速、波长是它们的特征参数并可以测量。20世纪初开始,测量了大量的有机物质和无机物质的吸收、发射和反射光谱,证明了红外技术在物质分析中的价值。30年代,首次出现红外光谱代,以后,它发展成在物质分析中不可缺少的仪器。40年代初,光电型红外探测器问世,以硫化铅红外探测器为代表的这类探测器,其性能优良、结构牢靠。50年代,半导体物理学的迅速发展,使光电型红外探测器得到新的推动。
9、到60年初期,对于13、35和813微米三个重要的大气窗口都有了性能优良的红外探测器。在同一时期内,固体物理、光学、电子学、精密机械和微型致冷器等方面的发展,使红外技术在军、民两用方面都得到了广泛的应用。二、课程设计的目的通过这次课程设计,实现了以学生为主体、教师为主导的实验教学理念,使学生加强对单片机原理应用的理解,学会查寻资料方案比较,以及设计计算等环节。进一步提高分析解决实际问题的能力,创造一个动脑动手独立开展仿真电路实验的机会,锻炼分析解决单片机应用的实际本领,真正实现由课本知识向实际能力的转化;通过典型电路的设计与制作,加深对基本原理的了解,增强学生的实践能力,增强学生的团结协作的能
10、力;本次设计还是对本门课程的巩固与提高并真正的实现了从理论到实践的过渡。由本次课程设计的题目可知是关于红外遥控功能的研究,因此对于此方面的知识也进行了开拓了解。三、课程设计需要的元器件清单(1)AT89C51单片机两块(2) 蜂鸣器一个(3) PC机一台(安装有Proteus7.5软件)(4) 按键板一块(5) DAC0832一块(6) 示波器两台(7) 电源若干(8) 红外遥控指示灯一对四、51单片机原理介绍4.1 AT89C51单片机简介AT89C51有PDIP,PLCC,TQFP三种封装方式,其中最常见的就是采用40PIN封装的双列直接PDIP封装,下面有AT89C51的基本结构图(见图
11、4-1)。芯片共有40个引脚(见图4-2),引脚的排列顺序为从靠芯片的缺口左边那列逆时针数起,依次为1,2,3,440,其中芯片的1脚顶上有一个凹点(见图4-2)。在单片机的40个引脚中,电源引脚2根,外接晶体振荡器引脚2根,控制引脚4根以及4组8为可编程I/O引脚32根。主电源引脚(2根)(1) VCC:电源输入,接+5V电源(2) GND:接地线外接晶振引脚(2根)(1) XTAL1:片内晶振电路的输入端(2) XTAL2:片内晶振电路的输出端控制引脚(4根)(1) RST/VPP:复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。(2) ALE/PROG:地址所存允许信号。(3)
12、PSEN:外部存储器读选通讯信号。(4) EA/VPP:程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。可编程输入/输出引脚(32根)AT89C51单片机有4组8为可编程I/O口,分别为P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。每一根引脚都可以编程,比如用来控制电机、交通灯等,开发产品时就是利用这些可编程引脚来实现我们想要的功能。振荡与定时电路4KB程序存储器128B数据存储器CPU并行端口总线控制串行端口系 统 总 线时钟源P0 P1 P2 P3TXD RXD128B特殊功能寄存器内部中断信号外部中断信号控制信号两个16位定时
13、器/计数器T0 T1图4-1 AT89C51基本结构图图4-2 AT89C51单片机引脚配置图(1)P0口:8位双向I/O口线,名称为P0.0-P0.7(2)P1口:8位准双向I/O口线,名称为P1.0-P1.7(3)P2口:8位准双向I/O口线,名称为P2.0-P2.7(4)P3口:8位准双向I/O口线,名称为P3.0-P3.74.2 时钟电路XTAL1和XTAL2引脚分别为单片机内反相放大器的输入/输出端,其频率范围为1.212MHz。XTAL2又是内部时钟发生器的输入端,这个内部反相器可与外部元件组成的振荡器(见图4-3)。采用石英晶体振荡器时,C=(3010)pF;在任何情况下,振荡器
14、始终驱动内部时钟发生器向主机提供时钟信号,因为时钟发生器的输入是个二分频触发器,所以对外部振荡信号的脉宽无特殊要求,但必须保证高低电平的最小宽度。图4-3 单片机振荡电路4.3 复位电路单片机的复位电路都是靠外部电路来实现的,在时钟电路工作后,只要单片机的复位引脚(RET)上出现2个机器周期以上的高电平,单片机就实行初始化复位,其复位电路见图3-4。复位脉冲信号使PC指针指向0000H单元;复位脉冲信号使SFR得到固定的初始值。图4-4 单片机复位电路五、红外遥控原理及简介5.1 红外遥控原理红外线是一种电磁波,具有与无线电波及可见光一样的本质。人的眼睛能看到的可见光按波长从长到短排列,依次为
15、红、橙、黄、绿、青、蓝、紫。其中红光的波长范围为0.620.76m;紫光的波长范围为0.380.46m。比紫光波长还短的光叫紫外线,比红光波长还长的光叫红外线。红外线的波长在0.76100m之间,位于无线电波与可见光之间。红外线遥控就是利用波长为0.761.5m之间的近红外线来传送控制信号的。红外线遥控器是以红外线发光LED,发射波长940nm的红外线不可见光,来传送信号。整个遥控器系统分为发射端及接收端两部分,发射端经过红外线发射LED送出红外线控制信号,这些信号经过红外线接收模块接收端接收进来,并对其控制信号做译码而做相对的动作输出完成遥控的功能。红外线遥控器已被广泛使用在各种类型的家电产
16、品上,它的出现给使用电器提供了很多的便利。红外遥控系统一般由红外发射装置和红外接收设备两大部分组成。红外发射装置又可由键盘电路、红外编码芯片、电源和红外发射电路组成。红外接收设备可由红外接收电路、红外解码芯片、电源和应用电路组成。通常为了使信号能更好的被传输发送端将基带二进制信号调制为脉冲串信号,通过红外发射管发射。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。在同一个遥控电路中通常要使用实现不同的遥控功能或区分不同的机器类型,这样就要求信号按一定的编码传送,编码则会由编码芯片或电路完成。对应于编码芯片通常会有相配对
17、的解码芯片或包含解码模块的应用芯片。在实际的产品设计或业余电子制作中,编码芯片并一定能完成我们要求的功能,这时我们就需要了解所使用的编码芯片到底是如何编码的。只有知道编码方式,我们才可以使用单片机或数字电路去定制解码方案。下面收集整理的一些常用遥控编码芯片的编码方式和常用一体化接收芯片的引脚示意图。5.2 数据格式数据格式包括了引导码、用户码、数据码和数据码反码,编码总共占 32 位。数据反码是数据码反相后的编码,编码时可用于对数据的纠错。示意图如图5-1。注意:第二段的用户码也可以在遥控应用电路中被设置成第一段用户码的反码。图5-1 数据格式的表示示意图5.3编码与解码(1) 0和1的编码遥
18、控器发射的信号由一串0和1的二进制代码组成不同的芯片对0和1的编码有所不同。通常有曼彻斯特编码和脉冲宽度编码。本次设计采用脉冲宽度调制,其0码和1码如图5-2所示(以遥控接收输出的波形为例)。0码由0.56ms低电平和0.56ms高电平组合而成脉冲宽度为112ms1码由0.56ms低电平和1.68ms高电平组合而成脉冲宽度为2.24ms。在编写解码程序时通过判断脉冲的宽度,即可得到0或1。 (2) 按键的编码当我们按下遥控器的按键时,遥控器将发出一串二进制代码,我们称它为一帧数据。根据各部分的功能。可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。遥控器发射代码时均是低位在前
19、。高位在后。引导码的低电平为9ms,高电平为45ms。当接收到此码时表示一帧数据的开始。单片机可以准备接收下面的数据。地址码由8位二进制组成,共256种,地址码重发了一次。主要是加强遥控器的可靠性,如果两次地址码不相同,则说明本帧的数据有错误,应丢弃,不同的设备可以拥有不同的地址码。因此,同种编码的遥控器只要设置地址码不同,也不会相互干扰。本次设计将两个地址码统称为用户码,为了方便起见都设为0。在同一个遥控器中,所有按键发出的地址码都是相同的。数据码为8位,可编码256种状态,代表实际所按下的键。数据反码是数据码的各位求反,通过比较数据码与数据反码,可判断接收到的数据是否正确。如果数据码与数据
20、反码之间的关系不满足相反的关系,则本次遥控接收有误数据应丢弃。在同一个遥控器上所有按键的数据码均不相同。六、软件设计6.1程序流程图流程图如图6-1和图6-2。图6-1为编码流程图,开机时单片机进行初始化操作,一切都回归到原始位置,这时单片机开始扫描键盘是否有按键按下,然后发出相应的脉冲。图6-2为解码流程图,接收方单片机则进行等待,一旦收到引导电平就开始进行接受信号并进行相应的解码,通过P1口使蜂鸣器发出对应的音符,通过DA转换电路输出波形。图6-1 红外编码流程图图6-2 红外解码流程图6.2 Proteus仿真电路图由于电路图版面过于大,所以我将一个完整的原理图分成两个部分来演示,两个部
21、分由U1单片机的P3.0口的IR引脚和U2单片机的P3.2口的IR引脚连接进行数据传输,在实际硬件中是通过无线的红外遥控连接的。原理图第一部分是红外遥控发送方,通过单片机将数据编码成不同的脉冲宽度再从IR口将其传输出去。如图6-3所示,其是由一个AT89C51单片机的P1.1口到P1.7口对应连接到一个遥控键盘上,为遥控键盘输入口;P3.0口为红外遥控发送口连接到接收方单片机的P3.2口,用来传输数据。第一部分主要功能就是对按键进行相应的编码,然后通过IR端即P3.0口发送。原理图第二部分是红外遥控接收方,利用单片机内部定时器判断脉冲宽度解码成对应二进制码。如图6-4所示:如上所述,单片机U2
22、的P3.2口作为脉冲输入口并控制产生外部中断,而P1.4口用来与蜂鸣器连接,产生声音;单片机U2的P0口以及P2.7、P3.6与DAC0832连接产生方波。图6-3仿真原理电路图1:红外遥控发送方图6-4 仿真原理电路图2:红外遥控接收方6.3 仿真结果及硬件实现的功能根据设计原理,我们按下不同按键会产生不同的作用:按键板的1到8是简易的电子琴功能,分别发出do、re、mi、fa、so、la、xi的音调,为了便于观察按键的脉冲,我们用一个示波器连接到IR端口,如图6-5是按键4对应的脉冲图形。9键则是报警并停止工作。*键为演奏音乐,乐谱可在程序中自行修改;0键产生方波频率也可在程序中修改参数改
23、变波形,#键可控制方波频率,并可自行设置增加上限和减少下线。图6-5仿真过程中按键4对应的脉冲七、设计遇到的问题及解决方法在大课程设计的设计过程中,遇到的问题还不少,主要问题还是在源程序编写的过程中,而硬件方面由于电路图不是很复杂,就问题不大。着重说一下源程序方面的问题:第一,时序问题很难掌握,这个要求对汇编语言掌握很熟练,每一步都要很清楚要执行的是什么功能,产生的结果是什么;第二,对单片机功能的掌握,怎样设置才能使其正常工作;第三,软件硬件之间的结合使寻找问题变得困难,我们既可以修改硬件,也可以修改软件,在具体的实际中要看具体情况,硬件需要付出财力,而软件则需要付出运行速度,所以必须结合实际
24、来看。解决问题的方法:现在仿真软件为我们设计提供了很大方便,我们不需要不断修改硬件而是在仿真通过以后直接产生硬件,这样会很便捷,省时省力。源程序出现问题,我们就用单步执行的方法,通过对照寄存器的值,来寻找错误,这个方法很有效。还有对单片机的设置可以通过查看其他的典型的例子,经典程序还有查阅资料可以慢慢解决。解决的关键是要能把软件和硬件对应,解决一些配置管脚还有值的问题。八、设计的总结、改进意见与展望(1)总结: 经过这次单片机大作业的设计,并且通过查阅其他不同于课本的资料书以后,对知识有了更深的理解。在设计以及在撰写报告时,我认为需要更多的是耐心与细心以及对整个过程的认真态度,这样才能学到东西
25、。设计的基础是理论,只有理论扎实了,才能做更深层次的东西。这次课程设计主题是红外遥控设计,主要围绕单片机及红外遥控原理、发声原理、源程序编写开展的。对设计人要求有扎实的理论基础,有够硬的实际操作能力与分析能力以及遇到问题解决的能力。总之这次大作业设计让我受益匪浅。 (2)改进意见: 通过这次课程设计我觉得有一些自己的想法,我认为老师可以提前给一些方案以供其他学生参考,同时老师也可以给学生一些资料比如往年学生的样本或者一些技术性的资料。当然这也可以老师安排上课时间进行一下培训,或许大家做出来的会更好。(3) 展望: 我希望以后的课程设计如果工作量不是太大,可以要求一个人一组,这样大家都可以得到锻
26、炼,其实说起来是一组的人一起做,可是大学3年以来,我发现学校里说是一组有多人的,也基本是一个人做,其他人就是所谓的“抱大腿”,我觉得这样不好。我认为只有努力了,有所收获才是在学校我们应该做的事情,而有时候甚至什么都没做的却比努力做的学生成绩要好,这样不是就使大家的积极性降低了,如何能既培养合作能力,又能避免有些投机取巧的做法,真的是一个很难的问题。九、心得体会经过将近两星期的课程设计周,当调试出来自己想要的音乐时,还是很有成就感的。但是在这次课程设计的设计过程中,感觉自己所学的知识还是很欠缺,这次是大家一起做出来的东西,每个人都有自己的分工,这也同时培养了我们怎样才能通过团队各取所长,更好地实
27、现任务、要求。从开始的连具体的方案都在迷茫,到最后在老师的提示下完成时,我感觉,自己的努力没有白费。在课程设计之前,通过各个渠道查找资料后分析验证,经过多次的修改和整理,才作了如上的设计思路。但在实际操作中,出现了比较大的问题,不过通过老师的指点和自己努力的调试,还是解决了问题。最后的是调试问题:理论的计算在实际电路上有时候并不能实现要求,需要耐心与细心,才能慢慢调试出满意的电路。这次的课程设计我感觉收获很多,首先我将单片机的知识又加深了一些,其次是培养了我的动手操作能力、分析问题、解决问题的能力。同时我也明白了,不论是学习,工作还是为人处世,认真便是成功的法宝,如果浮躁,遇见问题就放弃,我觉
28、得是很难把事情做成功的。总之我感觉这次大作业设计很有意义,或许是我即将迈入社会的一个过渡。不止是知识层面,对于做人我也是有很深的体会。同时也特别感谢老师的细心教导,让我们学到很多东西。十、参考文献1 单片机原理及其接口技术/胡汉才编著.北京:清华大学出版社,2004(第二版)2 单片机原理与应用/赵德安等.编著.北京:机械工业出版社,20043 MCS-51单片机原理及应用/赵晓安等编著.天津:天津大学出版社,2001.3(第一版)4单片机原理实用教程:基于Proteus虚拟仿真/徐爱钧编著.3版.北京:电子工业出版社,2014.75MCS_51单片机原理及应用/康维新主编.北京:中国轻工业出
29、版社,2009.1十一、附件:程序清单11.1 红外编码程序:#include#define uchar unsigned char#define uint unsigned int#define uintlong unsigned long sbit p3_0=P30;sbit p2_1=P21;/sbit out=PSW7; /位的等同方式/sfr cy=PSW7;sbit p1_0=P10;/?sbit p1_1=P11;sbit p1_2=P12;sbit p1_3=P13;bit out;uint keyvalue=0x00,flag_key=0,value1,value2,keyc
30、ount=0,i,j,flag_set=0,flag_press=0; /根据键盘定义的键的码值uchar code keycode4=0x7f,0xbf,0xdf,0xef;uchar code portvalue16=0x0a,0x00,0x0f,0x0a,0x07,0x08,0x09,0x0b,0x04,0x05,0x06,0x0c,0x01,0x02,0x03,0x0f;uchar code wy8=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;/红外数据部分;uchar user1=0x00,user2=0x00; /用户码标志位0和1uint co
31、unt=0,endcount=0;uint irdata=0;void deltime(void);/函数声明void key_scan(void);void sendirdata(void);main(void)/主函数 EA = 1; /允许CPU中断 TMOD = 0x11;/设定时器0和1为16位模式1允许所有中断,两个定时器工作在定时模式 ET0 = 1; /定时器0中断允许 p3_0=1; P1=0xff;/悬空状态 TH0 = 0xFF; TL0 = 0xE4; /216=65536-28us/(12/12M)=0xffe4每隔26us中断一次 TR0 = 0;/运行控制器;GA
32、TE=0 TR0=0禁止T0计数 while(1) key_scan(); /扫描按键函数,看有没有按键按下 下边有子函数 if(flag_press=1) flag_press=0; TR0=1; sendirdata(); void key_scan(void) /子函数:扫描按键函数,看有没有按键按下 for(i=0;i=3;i+) P1=keycodei; if(p1_3=0)/键盘第一列 keycount=i*4+0;flag_key=1; break; if(p1_2=0) keycount=i*4+1;flag_key=1;break; if(p1_1=0) keycount=i
33、*4+2;flag_key=1;break; if(p1_0=0) keycount=i*4+3;flag_key=1;break; if(flag_key=1) flag_key=0; value1=P1; deltime(); value2=P1; if(value1=value2)keyvalue=portvaluekeycount;flag_set=1;flag_press=1; while(flag_set) value2=P1; if(value1!=value2) flag_set=0; void deltime(void) uint k; for(k=0;k=20;k+);/
34、void time0int(void) interrupt 1 TH0=0xFF; TL0=0xE5; /设定时值为38K 也就是每隔26us中断一次 count+; void sendirdata()/子函数实现发送P3.0口数据 uchar s=0,datapd=0; /发送9ms起始码的低电平,这里设置了一个346,如果每隔26us中断一次,那么9ms就是346次 endcount=346; p3_0=0; count=0; dowhile(countendcount); /发送4.5ms的结果码高电平 endcount=173; /173通过接收端得测试得到的数据 count=0; p
35、3_0=1; dowhile(countendcount); /发送用户码1 由于已经设置了用户码分别为0和0所以这里直接发送,这里连发/16个位0。/如果用户码不一样,这里就要进行修改了。 for(s=0;s=15;s+) /下面发送0.56ms低电平和0.56ms高电平 21和64为计算电平时间的数据 endcount=21; count=0; p3_0=0; while(countendcount); endcount=21; count=0; p3_0=1; dowhile(countendcount); /发送数据, 21和64为计算电平时间的数据 irdata=keyvalue;
36、for(s=0;s=7;s+) datapd=irdata & wys; if (datapd=0) endcount=21;count=0; else endcount=64;count=0; p3_0=0; dowhile(countendcount); /发送公共的0.56ms高电平 endcount=21;count=0; p3_0=1; dowhile(countendcount); /发送数据反向 irdata=keyvalue; for(s=0;s=7;s+) datapd=irdata & wys; if (datapd=0) endcount=64;count=0; else endcount=20;count=0; p3_0=0; dowhile(countendcount); /发送公共的0.56ms高电平 endcount=20;count=0; p3_0=1; dowhile(countendcount); TR0=0; /不允许计数11.2红外解码程序COUNT EQU 30H ;定时计数数值 FLAG_USER1 EQU 45H ;用户码位置1FLAG_US