已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第iii页 共46页摘 要在电子化的世界中,红外遥控技术广泛的应用于我们的生活。市场上的各种家电的红外遥控系统技术成熟、成本低廉,但是,为了避免不同品牌、不同型号的设备之间产生误操作,人们在不同的设备中使用不同的传输规则或者识别码,这就使得各个型号的遥控器都只适用于各自的遥控对象,容易造成实际使用中遥控器多而杂,经常搞混的结果。本设计要求实现一种智能学习型红外遥控器的实现方案。本文通过研究红外编解码、红外发射接收、mcu 控制、液晶显示等技术,利用单片机对遥控器的发射信号的波形进行测量,然后将测量的数据回放,由于只关心发射信号波形中的高低电平的宽度,不管其如何编码,因此做到了真正的“万能”。本设计以单片机为主要控制中心,外围电路主要包括接收电路、发射电路、键盘电路、显示电路以及存储电路。设计中重点及核心部分是通过软件解码来实现对红外信号的自学习,并由单片机控制将学习的信号存储及转发。关键词:红外遥控;38khz载波;自学习;红外接收;红外发送abstractin the electronic world, the infrared remote control technology is widely used in our lives. various appliances on the market have the technology of infrared remote control system with maturity and low cost. however, to avoid different brands and between different types of equipment malfunction, people use different devices in different transport rules or identification number, which makes various types of remote control apply only to their remote objects and easy causes confusing results that the actual use of the remote control are many and complex. the design requirements is to achieve an intelligent learning ir remote control implementations.by studying infrared codec, infrared transmitting and receiving, mcu control, lcd display technology, remote control of other learning and learning sent successfully restored infrared remote control system.key and core part of the design is that through software decoding it can achieve the self-study function of the infrared signal and be controlled by mcu to make the learned signal in store and forward.keywords: infrared remote controller;the 38khz carrier;self-study;infrared remote receiver;infrared remote transmitter目 录引言41 系统设计21.1 任务要求21.2 总体方案介绍22 方案论证32.1 学习方式32.2 按键模块42.3 显示模块52.4 红外接收模块52.5 微控制器选择63 硬件电路设计63.1 系统硬件基本组成63.2 主要模块电路设计63.2.1键盘和显示电路设计63.2.2 红外发射电路及其编码83.2.3红外接收电路113.2.4 存储电路123.2.5 单片机控制电路134 系统软件设计164.1 系统编程语言和编程工具164.1.1编译软件keil uvision2简介174.2软件设计184.2.1学习功能194.2.2数据压缩编码255 系统调试315.1 系统硬件调试325.1.1 元件的使用325.1.2 整板测试325.1.3 上电测试325.2系统软件调试325.2.1按键与显示模块调试325.2.2接收模块调试325.2.3发射模块调试335.3调试小结336 性能测试336.1 测试所使用仪器336.2 测试结果336.3 结果分析347 结论34谢 辞36参考文献37附 录37 第41页 共46页引言 红外遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗微、功能强、成本低等特点,继彩电、空调等电器设备上采用了红外遥控技术之后,在汽车、保险柜的门锁上以及一些常用工具的操作上都采用了红外遥控技术。一些自动控制装置采用红外线遥控不仅具有可靠、便利的优点,而且还能有效地隔离电气干扰。随着科技的发展,越来越多的现代电器比如: 音响、 电视机、 空调、 热水器、 电脑、 微波炉成为人们生活的必需品。这些电器通常都依赖于遥控器进行操作。但由于各种红外遥控编码格式的不同, 使得各种产品的遥控器不能相互兼容 , 这给人们的日常生活带来了诸多不便。最近市场上出现了能够遥控不同家用电器的万能红外遥控器, 但这些万能红外遥控器多存在可遥控的家用电器种类不多、 操作复杂等缺点。本课题目的是实现一种智能学习型红外遥控器的实现方案,从而完成对各种遥控器的学习的功能,这将给人们的生活带来极大的便捷。学习型遥控器更是实现对各被控设备的统一控制和管理的重要条件,是实现智能家居系统的基础。1 系统设计 1.1 任务要求本设计要求实现一种智能学习型红外遥控器的实现方案,主要内容包括:(1)研究红外遥控器的遥控方法与原理。(2)设计智能化红外遥控器的实现方案。(3)选择器件实现系统的硬件电路。(4)编写和调试软件系统。1.2 总体方案介绍红外遥控器的核心元器件是编码芯片,将需要实现的操作指令事先编码,设备接收后解码再控制有关部件执行相应的动作。编码是通过载波输出的,即所有的脉冲信号均调制在载波上,载波频率通常为38khz。在发送端,载波利用电信号驱动红外发光二极管,将电信号变成光信号发射出去,发射的是红外光,波长范围在 840nm 到 960nm 之间。在接收端,通过光电二极管将红外光信号转换成电信号,经放大、整形、解调等步骤,最后还原成原来的脉冲编码信号,并根据遥控指令完成相应的动作。学习型红外遥控器通过记录各种不同类型的遥控器的编码波形,将其存储下来并与某个按键关联,从而实现“学习”功能这样作不必关心编码的细节,通用性大大提高。根据课题要求初步制定了实现上述功能的基本思路。此系统主要分为6大模块:单片机控制模块、键盘模块、红外接收模块、红外发送模块、存储模块、显示模块。(其中的主要模块是单片机控制系统模块,主要的功能实现都是由单片机程序控制,键盘的扫描,液晶的显示,红外遥控信号的接收、学习以及发射都是由单片机的程序来控制。)系统原理框图如1.1所示: 图1.1系统组成原理图自学习型遥控器的功能主要分为学习和发送两个部分。在学习的过程中,收电路接收到红外遥控信号以后, 经过放大并解调出ttl电平信号送至微处理器进行处理。经过微处理器处理以后存储到外存储器里 。当要发射红外信号时,根据扫描键盘电路获取的键盘值,从与键值相对应的外存储器存储区中还原出相应的红外遥控编码 ,并调制到38khz的载波信号上。最后通过放大电路驱动红外发光二极管发射红外信号。达到学习和发射的目的,从而实现一个遥控器控制多种红外遥控设备的功能。2 方案论证2.1 学习方式从目前市场上主要出现的万能学习型遥控器看,主要分为两大阵营:(1)固定码式学习型遥控器。这类学习型遥控器采用了“不完全归纳法”,也就是说对市场上所使用的遥控器信号大量的收集总结,对收集的信号分类,然后“分而治之”对每种类别都预制一种解码程序和发射程序。这种方式的学习过程是:学习信号的采集 ;判别信号的类别(属于那一种解码方案),编码,存储到。 优点:这种学习型遥控器对硬件的要求相对简单,对主控制器(主控ic)的工作频率要求不太高,因为信号的发送频率,编码方式等等都是已知的,只要对采集的信号进行判别即可;另外对存储器的容量也比较低,因为它不存在压缩的问题,按照最原始的最简编码进行存储。 缺点:只能对已知的遥器(或者说已经收集到的信号)有效,对于新开发,新型的编码格式就无能为力了。 (2)波形拷贝式学习型遥控器。这类遥控器的设计思想是:把原遥控器所发出的信号进行完全拷贝,而不管遥控器是什么格式,进行适当的压缩后,存储在存储器内,当需要发射时,再由储存器内读出解压后还原原始信号。 此方式的工作过程分以下几步完成:对原始发射信号波形采集到主控mcu的中、分析信号,压缩信号,存储信号。 发射信号波形的测量,这一步主要是将原始信号缓存储到中。 分析信号,对采集到的信号进行分析,比如对信号发送的的高低电平的时间,等参数进行细致分析,便于下一步的压缩。压缩编码,根据常用高低电平的时间,特殊高低电平的时间,发送周期,对原始信号进行压缩编码。 存储信号,把压缩编号后的数据存储到eeprom中优点:可以使用任何遥控器的学习,无须更新代码程序即可使用目前所有乃至未来的所有红外线遥控的学 缺点:对主控制芯片和存储器的选择都比固定式要高。整体成本上较贵于固定码式学习型遥控器由于遥控器发出的编码信号变化多样,市场上成百上千的编码方式并存,并没有一个统一的国际标准,只有各芯片厂商事实上的标准,使得模拟并替换各种原厂遥控器成为难点。而且客户码、命令码也是由不同厂商自行规定的。导致采用第一种方案来设计有很大的局限性,因此第二种是较为可行的方案。即通过记录各种不同类型的遥控器的编码波形,将其存储下来并与某个按键关联,从而实现“学习”功能这样作不必关心编码的细节,通用性大大提高。因此2.2 按键模块方案1:采用独立式按键。独立式按键电路配置灵活,。软件结构简单,每个独立式按键单独占有一根i/o口线,每根i/口线上的按键工作状态不会影响其他i/o口线的工作状态。但是每个按键必须占用一个i/o口线,在按键较多时,i/o口线浪费较大。故在按键数量不多时,采用这种按键电路。独立式按键与单片机接口图如2.1所示:图2.1 独立式键盘方案2:使用矩阵键盘管理专用芯片,比如hd7279。占用比较少的资源就能管理一个按键数比较多的键盘,集成了硬件消抖功能,提高了程序的执行效率。但是增加硬件成本和仪器的功耗。方案3:行列式键盘,用i/o口线组成行、列结构,按键设置在行、列线交点行,行、列线分别连接到按键开关的两端。在按键较多时,可以节省i/o口线。66键盘与单片机接口图如2.2所示。图2.2 6*6键盘设计中使用的单片机i/o口丰富,不用考虑i/o口紧张,而且通常家用电器有32个键盘,选择方案3。2.3 显示模块方案1:采用数码管(led)显示。数码管价钱较便宜,对环境因素要求较低,显示明亮,采用 bcd 编码显示数字,程序编译相对容易,资源占用少。但同时它的显示内容有限,只能显示简单的数字和字母。这种常用的液晶,耗能也高。方案2:采用液晶(lcd)显示。液晶显示屏(lcd)具有轻薄短小,耗电量低,无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强和显示形式灵活等优点。只是编程工作量较大,控制其占用资源较多,但在本系统中对控制器的资源使用中完全可以使用。 综上所述,选择方案2。2.4 红外接收模块方案一:采用红外接收二极管加专用的红外处理电路。接收电路的红外接收管是一种光敏二极管,使用时要给红外接收二极管加反向偏压,它才能正常工作而获得高的灵敏度。红外接收二极管一般有圆形和方形两种。由于红外发光二极管的发射功率较小,红外接收二极管收到的信号较弱,所以接收端就要增加高增益放大电路。此种电路结构较复杂,现在一般不采用。方案二:采用一体化红外接收头。红外线一体化接收头是集红外接收、放大、滤波和比较器输出等的模块,不需要任何外接元件,就能完成从红外线接收到输出与ttl电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。所以,有了一体化接收头,人们不再制作接收放大电路,这样红外接收电路不仅简单而且可靠性大大提高。综上所述,选择方案2。本系统所使用的红外接收头的型号是常用的hs0038,即其载波的频率是用38khz(37.9khz)。2.5 微控制器选择方案1:用常用的单片机。at89c51等类似的单片机我们之前用过,很熟悉,用它作为主控单元,但此类单片机往往由于工作频率较低,它的内部存储器容量过小,难以满足本系统的设计需要。方案2:使用基于stc单片机,比如选择stc89c52rc型单片机是一种低功耗、高性能、采用cmos工艺的8位微处理器,与工业标准型80c51单片机的指令系统和引脚完全兼容。片内8k flash存储器可在线重新编程,或使用通用的非易失性存储器编程器。由于一般的距离测量中,距离的变化速度并不太快,而且单片机的机器周期可达s级,则其计时精度为s级,完全可以满足系统测量的要求,并且成本较低。stc89c52rc单片机,基于stc89c51内核,是新一代增强型单片机,指令代码完全兼容传统stc89c51,速度快812倍,带adc,4路pwm,双串口,有全球唯一id号,加密性好,抗干扰强。综上所述,选择方案2。3 硬件电路设计 3.1 系统硬件基本组成基于单片机的智能化遥控器的系统硬件结构主要有以下六部分组成: 单片机系统电路、红外接收电路、红外发送电路、存储电路、键盘电路、显示电路。3.2 主要模块电路设计3.2.1键盘和显示电路设计(1)键盘电路设计6*6键盘电路模块见图3.1所示。键盘的实现方法是给所有的列线i/o口线均置成低电平,然后将行线电平状态读入到单片机中,如果有键按下,就会有一根行线电平被拉至低电平,根据次原理就可以检测到是哪个键按下。键盘的接口与单片机的p1、p3口相接。图3.1 键盘电路(2)显示模块电路显示部分采用了1602型lcd显示模块。1602型lcd显示模块具有体积小,功耗低,显示内容丰富等特点。1602型lcd可以显示2行16个字符,有8位数据总线d0d7和rs,r/w,en三个控制端口,工作电压为5v,并且具有字符对比度调节和背光功能。1602型lcd的接口信号说明和主要技术参数分别如表3.1、3.2所示.表3.1 1602型lcd的接口管脚信号编号符号引脚说明编号符号引脚说明1vss电源地9d2data i/o2vdd电源正极10d3data i/o3vl液晶显示偏压信号11d4data i/o4rs数据/命令选择端(h/l)12d5data i/o5r/w读写选择端(h/l)13d6data i/o6e使能信号14d7data i/o7d0data i/o15bla背光源正极8d1data i/o16blk背光源负极表3.2 1602型lcd的主要技术参数显示容量16x2个字符芯片工作电压4.55.5v工作电流2.0ma(5.0v)模块最佳工作电压5.0v字符尺寸2.95x4.35(wxh)mm图3.2中的显示电路中的10针接口与单片机的p1口相连,6针的接口与单片机的p2口的高位相连。图3.2 显示电路3.2.2 红外发射电路及其编码(1)红外发射电路红外光是电磁波的一种,其频率高于微波而低于可见光,是一种人的肉眼看不到的光线。通常将其中间0.761000m的波谱段称为红外光谱区。一般把红外光波谱细分为四个区域,即近红外(0.763.0m)、中红外(3.06.0m)、中远红外(6.020m)、和远红外(201000m)区。这里说的近远是指红外光在电磁波谱中与可见光的距离而言。我们实际的红外遥控系统中所使用的主要集中在0.761.6m的近红外区。红外线的波长较短,更适合用于短距离控制系统中。近红外光可以通过红外发光二极管 (led)获得红外发光二极管是一种由pn结构成的注入电流型发光器件,在加上合适的正向偏置电压后,就可以发出一定波长的近红外光。发射电路如图3.3所示。图3.3 红外发射电路目前大量使用的红外发光二极管发出的红外线波长为940nm左右,外形与普通5发光二极管相同,只是颜色不同。红外发光二极管一般有黑色、深蓝、透明三种颜色。发光二极管有交流电流、直流电流和脉冲电流等驱动方式。交流电流驱动方式主要用于红外测量、检测以及较简单的红外光通信中。直流电流驱动方式,如图3.4(发射方式示意图)左图所示,也被称为平均发射方式,是指通过启动直流电源驱动发光二极管发出恒定的红外光。一般用这种驱动方式的红外光电二极管功率较小(大都小于100mv)、功耗较大、抗干扰能力也很差。图3.4 发射方式示意图为了提高红外遥控系统的工作距离,而又不使红外发光管过载,一般不采用这种方式,而是采用如图3.4右图所示的脉冲式发射方式或调制载波脉冲发射方式,红外遥控系统的工作有效作用距离取决于发光二极管辐射的峰值功率,而峰值功率是由驱动发光二极管的电路峰值所决定的。在相同的平均电流下,脉冲宽度越窄,峰值功率越大,传输的速度就越快,发光的效率也就越高,遥控的有效距离也就越远。这种发射方式也大大提高了系统的抗干扰能力。对于红外光通信,除了红外遥控距离外,调制频率、调制带宽也是发光二极管的两个重要参数。调制频率关系到红外发光二极管在光通信中的传输速度的高低,红外发光二极管因受到注入pn结有源区内少数载流子寿命的限制(一般只有几十兆赫兹),从而限制了红外发光二极管在高比特速率系统种的应用。通过合理的脉冲编码和优化驱动电路,可使发光二极管有可能用于高速光通信系统。调制带宽定义为:在保证一定的调制频率下,当发光二极管输出的交流光功率比参考频率下降3db时,所对应的频率值。它是衡量发光二极管调制能力的重要参数。(2)红外遥控编码红外遥控器码将需要实现的操作指令事先编码,然后将所有编码的脉冲信号调制在38 khz方波的载波上,经过三极管放大后,驱动红外发光二极管向外发送。其中38 khz载波直接由单片机用软件模拟,由定时器to产生。为保证38khz方波的频率稳定性,在硬件设计时尽可能使用频率高的晶振,提高cpu运行速度。在应用系统中,要完成对遥控器信号的解码并实现对系统功能的控制,必须了解遥控器信号码(即遥控器所发射脉冲流)的格式,即信号的引导脉冲高低脉冲的宽度、“0”,“1”的表示法,以及遥控器识别码、各个功能键的键码。对信号码的识别应该从分析脉冲流的各个高、低脉冲的时间入手,通过分析各个高、低脉冲的时间,分析得出信号码的格式。常见的“0”,“1”的波形如图3.5所示。采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。图3.5 遥控码的“0”和“1”控器所产生的脉冲编码的格式一般为: 引导脉冲(头)识别码(用户码)键码键码的反码其引导脉冲为宽度是10 ms左右的一个高脉冲和一个低脉冲的组合,用来标识指令码的开始。识别码、键码、键码的反码均为数据编码脉冲,用二进制数表 示。“0”和“1”均由ms量级的高低脉冲的组合代表。识别码(即用户码)是对每个遥控系统的标识。通过对识别码的检验,每个遥控器只能控制一个设备动作,有效的防止了多个设备之间的串扰。当指令键按下时,指令信号产生电路便产生脉冲编码。键码后面一般还要有键码的反码,用来检验键码接收的正确性,防止误动作,增强系统的可靠性。这些指令信号由调制电路调制成3240 khz的信号,经调制后输出,最后由驱动电路驱动红外发射器件(led)发出红外遥控信号。图3.6为一类遥控连发信号波形图。图3.6 一类遥控连发信号波形当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个引导码(9ms),一个结果码(4.5ms),低8位地址码(9ms18ms),高8位地址码(9ms18ms),8位数据码(9ms18ms)和这8位数据的反码(9ms18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。3.2.3红外接收电路一体化的红外接收装置将遥控信号的接收、放大、检波、整形集于一身,并且输出可以让单片机识别的ttl 信号,这样大大简化了接收电路的复杂程度和电路的设计工作,方便使用。在本系统中我们采用红外一体化接收头hs0038,外观图如图3.7 所示。hs0038 黑色环氧树脂封装,不受日光、荧光灯等光源干扰,内附磁屏蔽,功耗低,灵敏度高。在用小功率发射管发射信号情况下,其接收距离可达35m。它能与ttl、coms 电路兼容。hs0038 为直立侧面收光型。它接收红外信号频率为38 khz,周期约26 s,同时能对信号进行放大、检波、整形,得到ttl 电平的编码信号。三个管脚分别是地、5 v 电源、解调信号输出端。图3.7 红外一体化接收头hs0038外观图当无遥控信号输入时,hs0038输出端保持高电平,有信号时输出为高低电平脉冲,故接收时一个码由一个低电平后跟一个高电平构成。本红外遥控接收电路如图3.8所示。将其输出端接入单片机外部中断0的int0脚。图3.8 红外接收电路3.2.4 存储电路遥控器所能存储代码的数量也是衡量一个智能学习型遥控器性能好坏的重要指标。遥控器在学习完某个遥控器的代码后得把该代码存储起来,由于单片机内部的数据存储器ram所能存储的数据有限而且不能掉电保护。所以就需要合适大小的外存储器来存储所学习到的代码。这里采用常用的存储芯片at24c02。at24c02是由atmel公司提供的,i2c总线串行eeprom,其容量为1kb,工作电压在1.8v5.5v之间,生产工艺是cmos工艺,具有工作电压宽(2.55.5v)、擦写次数多(大于10000次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、体积小等特点。其引脚图和时序图分别如图3.9、3.10所示。 图3.9 at24c02引脚图图3.10 at24c02时序图引脚功能介绍如下:a0(引脚1):器件地址的a0位。a1(引脚2):器件地址的a1位。a2(引脚3):器件地址的a2位。gnd(引脚4):地线。sda(引脚5):数据总线引脚。scl(引脚6):时钟总线引脚。test(引脚7):测试引脚,vcc(引脚8):电源线引脚。 at24cxx系列的器件地址是a6 a5 a4 a3 a2 a1 a0 r/w,其中最低位r/w除外,其余都是地址位,共有7位,其中低3位a2 a1 a0由引脚连接决定,高4位a6 a5 a4 a3已经由厂家给出为1010。r/w决定数据传输的方向,当r/w1时,是从 存储器读出数据,当r/w0时,是向存储器写入数据。at24c02内有256字节存储单元,片内地址使用一字节(8位)地址寻址就可以满足要求。地址范围是00hffh。 存储电路原理图如下:图3.11 存储电路3.2.5 单片机控制电路(1)所选单片机简介本设计中选用的宏晶科技的stc89c52rc型单片机是一种低功耗、高性能、采用cmos工艺的8位微处理器,与工业标准型80c51单片机的指令系统和引脚完全兼容。片内8k flash存储器可在线重新编程,或使用通用的非易失性存储器编程器。由于一般的距离测量中,距离的变化速度并不太快,而且单片机的机器周期可达s级,则其计时精度为s级,完全可以满足系统测量的要求,并且成本较低,所以本设计中选用stc89c52rc型号的单片机。stc89c52rc单片机,基于stc89c51内核,是新一代增强型单片机,指令代码完全兼容传统stc89c51,速度快812倍,带adc,4路pwm,双串口,有全球唯一id号,加密性好,抗干扰强。(2)单片机引脚功能stc89c52rc采用40pin封装的双列直插dip结构。40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个i/o口,中断口线与p3口线复用。stc89c52rc的引脚图如图3.12所示,其引脚功能如下:图3.12 stc89c52rc引脚图1. pin20:接地脚。2. pin40:正电源脚,工作时,接+5v电源。3. pin19:时钟xtal1脚,片内振荡电路的输入端。4. pin18:时钟xtal2脚,片内振荡电路的输出端。5. stc89c52rc的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(2-12mhz)和振荡电容,振荡电容的值一般取10p-30p。另外一种是外部时钟方式,即将xtal1接地,外部时钟信号从xtal2脚输入。6. 输入输出(i/o)引脚:pin39-pin32为p0.0-p0.7输入输出脚。pin1-pin8为p1.0-p1.7输入输出脚。pin21-pin28为p2.0-p2.7输入输出脚。7. pin9:reset/vpd复位信号复用脚,当stc89c52rc通电,时钟电路开始工作,在reset引脚上出现24个时钟周期以上的高电平,系统即初始复位。stc89c52rc的复位方式可以是自动复位,也可以是手动复位。此外,reset/vpd还是一复用脚,vcc掉电期间,此脚可接上备用电源,以保证单片机内部ram的数据不丢失。8. pin30:ale当访问外部程序存储器时,ale(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ale端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。如果单片机是eprom,在编程其间,将用于输入编程脉冲。9. pin29:当访问外部程序存储器时,此脚输出负脉冲选通信号,pc的16位地址数据将出现在p0和p2口上,外部程序存储器则把指令数据放到p0口上,由cpu读入并执行。10. pin31:ea/vpp程序存储器的内外部选通线,stc89c52rc和8751单片机,内置有4kb的程序存储器,当ea为高电平并且程序地址小于4kb时,读取内部程序存储器指令数据,而超过4kb地址则读取外部指令数据。如ea为低电平,则不管地址大小,一律读取外部程序存储器指令。(3)单片机控制电路图3.13 单片机控制电路4 系统软件设计4.1 系统编程语言和编程工具在单片机的开发应用系统中,汇编语言作为传统的编程语言,己经不能满足实际需要,高级语言被逐渐引入,c语言就是其中之一。c语言是一种通用的计算机程序设计语言,它既有高级语言的各种特征,又能直接操作系统硬件。对于大多数单片机,使用c语言与使用汇编语言相比具有如下优点:(1)不需要了解处理器的指令集,也不必了解存储器结构。(2)寄存器分配和寻址方式由编译器进行管理。(3)指定操作的变量选择组合提高了程序的可读性。(4)可使用与人的思维更相近的关键字和操作函数。(5)程序的开发和调试时间大大缩短。(6) c语言中的库文件提供了许多标准的例程。(7)可实现模块化编程技术,从而可将己编制好的程序加入到新程序中。(8) c语言可移植性好且非常普及。目前,8051上的c语言的代码长度,已经做到了汇编水平的1.21.5倍。4k字节以上的程度,c语言的优势更能得到发挥。至于运行速度的问题,只要有好的仿真器,找出关键的代码,再进一步做一下人工优化,就可很容易达到美满。故在本系统中,单片机程序采用c语言编写,使用keil c51编译软件来编程。4.1.1编译软件keil uvision2简介keil c51是美国keil software公司出品的51系列兼容单片机c语言软件开发系统, keil c51软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。keil uvision2版本功能齐全,集编辑、编译、仿真于一体,支持汇编和c语言的程序设计,与汇编相比,c语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用界面友好,易学易用。keil c51软件提供丰富的库函数和功能强大的集成开发调试工具,全windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到keil c51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。keil uvision2的运行界面如下图4.1所示。图4.1 keil uvision2的运行环境界4.2软件设计学习型遥控器的设计性能及实现与其软件设计编写有着密切的关系,在设计中采用内部定时器对信号高低电平计时的方法来采集数据并保存。由于受到存储空间和代码长度的限值,硬件中的按键并没有完全充分使用。而是选择了其中的6个按键进行学习。系统软件首先对定时器设置和初始化液晶显示。在主循环中检测按键,假如有学习按键按下时,则进入学习模式。此时要继续按下编号为3-6的某个按键,然后可以用红外遥控器对准接收头按下遥控器上需要学习的键,将学到的红外信号绑定到该编号键,并将学习到的红外解码数据存到eeprom中。在主循环中检测到编号3-6的按键,则进入发送模式。根据按键的编号找到相应eeprom中的地址,读出红外数据,并将此数据调制经红外发射头发射出去。 软件流程图:图4.2 主程序流程图要实现学习型遥控器的软件设计,最关键的两个部分是学习功能和数据压缩。尽管通信协议中有不同的帧格式,如帧头、系统码、操作码、同步码、帧间隔码、帧尾等,根据记录下降沿间的间隔时间来测量红外遥控信号的高低电平的脉宽值的原理,用户甚至不需要了解通信协议的具体内容,只需知道低电平(有红外发送载波)信号时长和高电平(无红外发送载波)信号时长就可以实现遥控命令的学习和存储。4.2.1学习功能在设计中采用内部定时器对信号高低电平计时的方法来采集数据并保存。由于红外接收信号直接接单片机的外部中断0端口,当输入信号产生低电平跳变时,系统启动内部定时器1,依次对输入高低电平脉冲宽度值计时。如果采集到编码信号位数大于设定值(程序中设定值)或者高电平信号时长大于一定值,即认为编码采集已经结束,学习子程序结束。在设计中选择24 mhz晶振,一个机器周期是0.5us,计数器采用16 位计数器,可以记录的最大时间间隔为32.767ms;每次学习结束后,都将学习到的存储在单片机内部存储区的遥控命令数据压缩,并根据按键和lcd显示屏的显示数据统一编码再存入eeprom。当在正常情况下时,则根据按键需要的遥控命令,从eeprom中寻找到相关的遥控命令,对此命令进行解压后,再用软件模仿38 khz载波信号发送编码信息。学习功能部分程序设计:/*外部中断0*/void inter0 (void) interrupt 0 using 1/下降沿一到,即进入中断服务程序 ex0=0;/外部中断1关闭th1 = 0;/清零 tl1 = 0;/步骤一:定时器1对起始帧的负脉宽测量。tr1=1; /定时器1开始计数pw_pt = 4;/数组指针timeout = 0;length=0;rx_flag = 1;head_flag = 0;end_flag=0;while(ir_in = 0)/检测是否还是低电平,高电平到来才退出循环。timeout+;if (timeout40000)/超过时间直接退出rx_flag = 0;break;tr1=0; /定时器1关闭计数pw_data0 = th1;/定时器1计数值,负脉宽计数值pw_data1 = tl1;th1 = 0;/清零 tl1 = 0;/步骤二:定时器1对起始帧的正脉宽测量。tr1=1; /定时器1开始计数timeout = 0;if(pw_data055)head_flag = 1;elsehead_flag = 0;while(ir_in)/检测是否还是高电平,低电平到来才退出循环。timeout+;if (timeout20000)/超过时间直接退出rx_flag = 0;break;tr1=0; /定时器1关闭计数pw_data2 = th1;/定时器1计数值,正脉宽计数值 pw_data3 = tl1;th1 = 0;/清零 tl1 = 0;for (u8_i=0; u8_i10000)/超过时间直接退出rx_flag = 0;break;tr1=0; /定时器1关闭计数pw_datapw_pt+ = th1;/定时器1计数值,负脉宽计数值pw_datapw_pt+ = tl1;th1 = 0;/清零 tl1 = 0;/步骤四:定时器1对数据帧的正脉宽测量。tr1=1; /定时器1开始计数timeout = 0;if(rx_flag)length+;rx_flag = 1;while(ir_in)/检测是否还是高电平,低电平到来才退出循环。timeout+;if (timeout10000)/超过时间直接退出rx_flag = 0;break;tr1=0; /定时器1关闭计数pw_datapw_pt+ = th1;/定时器1计数值,负脉宽计数值pw_datapw_pt+ = tl1;th1 = 0;/清零 tl1 = 0;/步骤五:对功能码的测量。pw_pt = 0;/调整指针值for (u8_i=0; u8_i10000)/超过时间直接退出rx_flag = 0;break;tr1=0; /定时器1关闭计数pw_data2pw_pt+ = th1;/定时器1计数值,负脉宽计数值pw_data2pw_pt+ = tl1;th1 = 0;/清零 tl1 = 0;/步骤四:定时器1对数据帧的正脉宽测量。tr1=1; /定时器1开始计数timeout = 0;if(rx_flag)&(end_flag=0)length+;if(pw_data2pw_pt-210000)/超过时间直接退出rx_flag = 0;break;tr1=0; /定时器1关闭计数pw_data2pw_pt+ = th1;/定时器1计数值,负脉宽计数值pw_data2pw_pt+ = tl1;th1 = 0;/清零 tl1 = 0;/步骤六:假如数据已经传完,结束帧是怎么样的。for (u8_i=0; u8_i60000)/超过时间直接退出rx_flag = 0;break;tr1=0; /定时器1关闭计数pw_data2pw_pt+ = th1;/定时器1计数值,负脉宽计数值pw_data2pw_pt+ = tl1;th1 = 0;/清零 tl1 = 0;/步骤四:定时器1对数据帧的正脉宽测量。tr1=1; /定时器1开始计数timeout = 0;if(rx_fla
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老院老人心理健康制度
- 养老院老人紧急救援人员职业发展规划制度
- 质量管理体系制度
- 《运动健康模板》课件
- 房屋权属转移合同(2篇)
- 2024年度市政绿化工程土石方施工补充合同6篇
- 2024年教育软件销售与授权合同3篇
- 《修炼执行智慧》课件
- 2025年文山道路客货运输从业资格证b2考试题库
- 2025年昭通下载b2货运从业资格证模拟考试考试
- 鄂尔多斯盆地煤矿分布图2014
- 销售人员心态培训-销售人员心态培训
- 高中物理知识点讲解-高中物理中常用的数学知识
- ACOG指南:妊娠期高血压疾病指南(专家解读)
- 服务外包公司评价表(共1页)
- 高等数学D7_5可降阶高阶微分方程
- 一年级数学月考试卷分析
- 污水管网工程监理实施细则
- 辣椒介绍PPT课件
- 个人不良贷款清收案例3篇
- RCA成果报告书(2021参考模版)10docx
评论
0/150
提交评论