基于51单片机的自学习型遥控器设计与实现 - 图文

更新时间:2024-05-06 10:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

铜陵学院毕业设计

基于51单片机的自学习型遥控器设计与实现

摘 要

红外线遥控是目前最广泛使用的一种遥控和通信遥控方式,并且其具有体积小、结构简单、功能强、功耗低、成本低等优点,因此大规模应用于空调机、彩电、录像机、CD设备,并且在工业控制中也广泛使用。在人们生活中对家电的需要日益增加的时候,促使使用红外遥控器的机会也越来越多。但是因为红外遥控器不同产品编码格式的不同,不能用同一个遥控器控制,给人们生活带来诸多不便,在这我就是设计了一款自学习型的遥控器。 目前在国内大多数学习型遥控器为了达到学习目的都是采用拷贝遥控器红外波形,其实现起来方便,方法也较简单,。缺点是采用专用遥控集成的芯片,造成成本高,设计复杂的缺陷,为了使其集成度高遥控器的红外信号采用的是红外线遥控发射芯片,以致价格昂贵。

本毕业设计是以AT89C51单片机为核心的学习型遥控器,其原理是红外一体化接收头输出信号,通过测量并原样地记录其输出码形,其次将其码型保存在EEPROM中,最后利用单片机的定时器中断产生38 千赫兹的载波信号,使软件代替硬件,节约了许多资源。目前在市场上遥控器大部分的编码方式都是NEC,所以该学习型红外遥控器能成功地学习各种红外遥控设备的NEC编码方式,并通过38千赫兹载波发送学习到的码型信号。实现了对该类编码方式的红外遥控的学习,从而可以学习各种遥控器NEC的编码方式。

其优点硬件电路简单,软件功能完善,性价比较高等特点,具有一定的使用和参考价值。

关键词:AT89C51;学习型遥控器;红外遥控器;编码方式

- 1 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

Abstract

Infrared remote control is currently the most widely used a remote control and communication control method, and it has small volume, simple structure, strong function, low power consumption, low cost advantages, so large-scale application in air conditioning equipment, TV, VCR, CD, and are widely used in industrial control. An increasing need for home appliance of in people's life, prompted the use of infrared remote control is also more and more opportunity. But because the infrared remote control encoding format of the different products is different, can't use the same remote control, give people's life bring inconvenience, in this I was designed a learning remote control.

At present at home most of the learning remote control copy in order to achieve learning goals are using remote control infrared wave, its implementation user-friendly, the method is simple,. Defect is using special remote control integrated chip, resulting in high cost and complex design defects, in order to make its high level of integration of the remote control infrared signal which is infrared remote control transmitting chip, so that the price expensive.

This graduation design is based on AT89C51 single-chip microcomputer as the core of the learning remote control, its principle is the integration of infrared sensor output signal, through the measurement and the same form to record the output code, followed by the block type stored in the EEPROM ,the use of single-chip timer interrupt to produce 38000 hz carrier signal, the software instead of hardware, save a lot of resources. Currently on the market most of the encoding NEC remote control, so the learning infrared remote controller can successfully study all kinds of infrared remote control equipment of NEC encoding, and through the 38000 hz carrier send the study to the type of signal. Implements the learning of this kind of coding method of infrared remote control, which can learn all kinds of remote control NEC encoding. Its advantage hardware circuit is simple, software function is perfect, high cost performance characteristics, has certain use and reference value.

Key words: AT89C51, a learning remote control, infrared remote control, the encoding style

- 2 -

铜陵学院毕业设计

目 录

摘 要 .......................................... 错误!未定义书签。 Abstract ...................................................... - 2 - 1 绪 论 .......................................................... - 1 -

1.1 学习型遥控器的介绍 ..................................... - 4 - 1.2 红外通信技术概述 ........................................... 1 2学习型遥控器的工作原理 ............................................... 4 3系统硬件电路设计..................................................... 4

3.1键盘电路的设计 .............................................. 5 3.2红外接收电路 ................................................ 6 3.3红外发射电路 ................................................ 6 3.4存储电路 .................................................... 7 3.5 学习与发射之间的切换电路 ................................... 7 4 系统软件设计 ....................................................... 8 4.1键盘扫描程序 ................................................ 8 4.2 红外解码程序 ............................................... 9 4.3 AT2402存储程序 ............................................ 14

4.3.1 I2C总线技术原理及其工作特点 ......................... 14 4.3.2 AT2402存储程序 ...................................... 16 4.4 红外编码程序 .............................................. 17

4.4.1读取EEPROM数据到单片机RAM中 ........................ 17 4.4.1红外编码发射程序 ..................... 错误!未定义书签。 4.5 学习与发射的切换程序 ...................................... 19 5 结论 ............................................................. 20

致 谢 ........................................................ 20 参考文献 ......................................................... 21 附录A ........................................................... 23 附录B ........................................................... 23 附录C ........................................................... 24

- 3 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

1 绪 论

1.1 学习型遥控器的介绍

无线工控类产品学习型遥控器、拷贝型遥控器,学习型遥控器具有学习功能,可以与学习型控制器自动对码,直接使用,不需要编码。省去了配制遥控器的麻烦,买回去自动对码后就可以直接使用。

学习型遥控器也具有拷贝功能,可以拷贝任意一款固定码遥控器,学习型遥控器就相当于钥匙坯子,可以刻出任意形状的钥匙。只要将学习型遥控器出厂码清除,然后拷贝原遥控器。新配的遥控器就具有原遥控器的所有功能。

学习型红外遥控,可以分为两类:以固定码格式学习的遥控器和波形拷贝方式学习的遥控器。前者,需要收集不同种类的各种遥控器信号,然后进行识别比较,最后再记录。但是,要实现几乎所有的红外线遥控器的成功复制就太难了。因为,红外线遥控器的红外编码格式变化太多。不过这种学习型遥控器它对硬件的要求相对来说比较简单,处理器工作时的频率可以不高,存储容量也较小,它的缺点就是对其他不同编码的遥控器无效。这种遥控器主要是把发出的信号全部进行复制,而不管遥控器的NEC编码格式是什么,存储在EEPROM等存储器中。当发射时,仅需将EEPROM储存器中记录的波形长度还原成原始信号(即最初发出的信号)即可。这种学习型的遥控器对微处理器的主频要求较高,并且对RAM的要求有点大,但是优点是其对不同种类的红外遥控器都可以进行学习。 常用的红外遥控系统分发射和接收两个部分。

发射部分的主要元件为红外发光二极管。因为其内部材料不同于普通发光二极管,所以在其两端施加一定电压时,它就会发出红外线。

目前使用最多的的红外发光二极管其发出940nm左右的红外线波长,除了颜色不同外其外形与普通发光二极管相同,。

接收部分的主要元件为红外接收二极管,一般有方形和圆形两种。在实际应用中要给该二极管加反向偏压,它才能正常工作。同时为了让灵敏度比较高,在电路中应用时是反向运用。

对于发射功率来说通常都较小(100mW左右),因此必须要添加高增益的放大电路才能解决红外线接收二极管接收到的信号比较微弱这一问题,最近几年都大多应用成品的红外线接收头。

1.2红外通信技术概述 1.2.1红外概述

从光学的角度而言,红外是频率低于红色光的不可见光,的无线光谱的整个频率中占有很小一个频率段,波长为0.75—100微秒之间,其中0.75—3微秒之间的红外光称为近红外,3—30微秒之间的红外光称为中红外,30—100微秒之间的称为远红外。红外光就其性质而言很简单,与普通光线的频率特性没有很大的区别,但是,由于任何有热量的物体均有能量产生,所以红外的利用非常广泛,而且不可取代,能否检测红外、能测到多少红外或者红外检测的技术是否可以应用于任何自然的或想象的场合是红外应用技术的关键。

当今红外技术的一个重要分支是红外通信技术的应用,这个应用的发展非常迅速,尤其是红外通信应用于计算机设备中,近几年的发展已经表现出其非常成熟的特性。 1.2.2 选择红外遥控的原因

无线遥控方式可分为无线电波式、声控式、超声波式和红外线式。由于无线电式容易

- 4 -

铜陵学院毕业设计

对其它电视机和无线电通讯设备造成干扰,而且,系统本身的抗干扰性能也很差,误动作多,所以未能大量使用。超声波式频带较窄,易受噪声干扰,系统抗干扰能力差以及声控式识别正确率低,难度大而未能大量采用。红外遥控方式是以红外线作为载体来传送控制信息的,同时随着电子技术的发展,单片机的出现,催生了数字编码方式的红外遥控系统的快速发展。所以现在很多无线遥控方式都采用红外遥控方式。 1.2.3红外的简单发射接收原理

在发射端,输入信号经放大后送入红外发射管发射,在接收端,接收管收到红外信号后,由放大器放大处理后还原成信号,这就是红外的简单发射接收原理。

2学习型遥控器的工作原理

自学习型遥控器的功能主要分为学习和发送两个部分。在学习的过程中,自学习型遥控器接收电路接收到用户想学习的遥控器所发送过来的红外遥控信号。红外遥控信号被接收电路接收到以后,经过先放大,后解调。最后让微处理进行处理TTL 电平信号,处理以后,使其存储到外部存储器里去。当红外信号要发射时,根据键盘值(扫描矩阵式键盘电路来获取),从外部存储器还原出与按键值相对应的红外线遥控编码,并调制到38 KHz的载波信号。红外遥控载波频率常用的为38kHz,决定于发射端编码芯片所使用的455kHz晶振。对晶振进行整数分频要在发射端进行,其分频的系数一般是12,所以455KHz÷12≈37.9 KHz≈38KHz。其他的一些遥控系统也有采用36KHz、40KHz、56KHz等。当红外遥控器的某个按键按下时,发射出一组串行二进制遥控编码脉冲,该脉冲调制在38KHZ的载波上,此时,红外接收头对其上波形进行解码,当有38KHZ的载波时,接收头将其解码为低电平,没有38KHZ的载波时,将其解码为高电平,如图1所示。

38KHZ载波 高电平 低电平 高电平 高电平 低电平 低电平 低电平

图1 红外遥控器发出的调制解调信号

- 5 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

在遥控编码中,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示:

图2 “0”“1”编码方式

解码后的波形脉冲如图3所示,该脉冲由引导码、系统系统识别码、功能码、功能反码以及与起始码完全相同的结束码组成,另外,在功能反码之后是一段23ms的高电平。

9.12ms 4.5ms 26位系统码…… 8位数据码与反码.. 9.12ms 4.5ms 23ms高电平 图3 NEC遥控器的码型

上述图3中“0”和“1”组成的42位二进制码经38KHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射。

通过区分这些码长以及编码便可设置不同的红外遥控器。红外接收器负责红外信号的放大和接收并解调出TTL电信号送至微处理器进行处理,微处理器通过识别和比较接收来的红外遥控NEC编码的不同便可执行不同的遥控器功能。

- 6 -

铜陵学院毕业设计

3系统硬件电路设计

在该电路中,硬件设计比较简单,主要有一下几个部分:键盘电路,红外接收电路,发射电路,存储电路,学习与发射之间的切换电路,其总体框图如图4所示:

键盘电路 发射电路 AT89C51单片机学习、发射切换电路 存储电路 红外接收电路 图4 设计总体框图

3.1键盘电路的设计

本设计中,利用单片机的P1口扩展外接一个4*4矩阵式的键盘电路。 1) 为了减少I/O口的占用,一般将按键按矩阵形式排列,如图5示:

图5 按键电路图

这种键盘,其垂直线和水平线在交叉处每条线都不直接连通,而是通过一个按键使原

- 7 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

本断路的地方加以连接。因此,P1口就可以构成4*4=16个按键,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,由此可见,这也是用矩阵法来做键盘最合理的地方。

2) 识别矩阵式键盘有无按键的方法:

检测键盘上哪个键被按下,在这里介绍一种方法叫“行扫描法”。行扫描法又被称之为逐列(或行)查询扫描法,是一种最通用的识别按键的方法。第一步要检查键盘中是否有键按闭合,将行线Y0-Y3全部置低电平,第二步就是检测列线,依据其电平状态只要其中有一列的电平是低电平,则说明该矩阵式键盘中有键被闭合,而且按下的那个键,在4根行线与低电平线相交叉的4个按键之中。如果所有的列线若都是高电平,那么键盘中没有按键闭合;第三步再判断按键所闭合的地方,在有键按下确认后,就可以进行具体的按键确定闭合的步骤。其步骤是:轮流使行线调为低电平状态,也就是说在调某根行线是低电平状态时,其它的列线必须是高电平状态。在确认某根行向线,如果是低电平状态后,再轮流检测各列向线,观察它的电平信号。如果有一列向线为低电平状态,那么调成低电平的行线与该列向线交叉处所在的地方有按键闭合。

3.2红外接收电路

红外接收电路的主体是红外接收芯片,我们选择的是TSOP1238, 一体化红外接收头TSOP1238作为输入接至单片机的P3.2口,由于TSOP1238反相作用,在无红外信号时为高电平,一旦检测到有红外信号,起始输入变成低电平。根据相应程序将编码存于单片机RAM中。其红外接收电路如图6所示:

图6 红外接收电路

3.3红外发射电路

红外发射电路中,可以直接用三极管控制红外发射管,如图7所示:

- 8 -

铜陵学院毕业设计

图7 红外发射电路

当系统进入发射功能时,AT89C51首先扫描矩阵键盘以识别相应的按键,然后从EEPROM中取出相应键值的编码,经P2.5口输出,通过9013三极管驱动红外发射管发出红外信号,完成相应的控制。

3.4存储电路

存储电路采用的芯片是AT24C04,它支持I2C总线编程。在学习是,首先扫描键盘电路,根据不同的按键将暂存在单片机RAM中的数据送入到EEPROM的相应地址单元进行存储;同样在发射时,根据不同的按键值将相应地址单元的数据取出,在继续编码发射,完成控制功能。其电路如图8所示:

图8 存储电路

3.5学习与发射之间的切换电路

在本设计中,特别加了一个学习与发射之间的切换电路,便于在实际使用中更加方便,当

- 9 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

按下P2.7时进入学习状态,当按下P2.6时进入发射状态,其电路如图9所示:

图9 学习与发射间的切换电路

4 系统软件设计

软件设计

对应于电路的硬件,该设计的软件程序主要包括以下几个部分:键盘程序,红外解码程序,AT24C02存储程序,红外编码程序,以及学习与发射的切换程序。

4.1 键盘扫描程序

根据键盘扫描电路原理及硬件原理图,我们可以写出键盘扫描的程序,其程序流程图如图10所示。

4.2 红外解码程序

当遥控器上任何一个键按下时间超过36ms时,都会发射一个信号,只是这个信号有可能是高电平或者是低电平信号,程序就是在这个信号后开始解码。红外编码的格式,程序应该等待9ms的起始码和4.5ms的结果码完成后才能读码。于是解码的程序流程图如图11所示。

- 10 -

铜陵学院毕业设计

程序初始化 P1=0F0H N P1=0F0H? Y 依次给列线置0 判断哪个键按下

图10 流程图(键盘扫描程序)

延时9.12+4.74ms N 26位系统引导码传完? Y 将此26位系统识别码存入30——33H中 等待高电平之后延时0.88ms 将此时P3.2上数据赋给C,并移位至A进行保存 继续对后面的数据码及其反码进行解码 将解码后的数据存入34——35H中

图11 流程图(解码程序)

4.3 AT2402存储程序

当将单片机RAM单元内容存储到EEPROMAT24C02中,运用到一种总线技术,即I2C总线技术,利用该技术,可以十分方便的进行数据的存储和读取,提高单片机的工作效率。下面简单介绍I2C总线技术以及相关特点。

- 11 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

4.3.1 I2C总线技术原理及其工作特点

I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为视频和音频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。下面对其特点及应用作相关介绍。

1) I2C总线特点

I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

2) I2C总线的基本工作原理

I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。

I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

开始信号:SCL为高电平时, SDA由高电平向低电平跳变,开始传送数据。 结束信号:SCL为高电平时, SDA由低电平向高电平跳变,结束传送数据。 应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出低电平信号,说明已经收到信号。受控单元接受到CPU发出的信号,会发出应答的信号给CPU。 3) 总线的操作

I2C有主/从两个方向的通讯功能。接收器接收发出的数据,发送器发送数据使其发送到到总线上,。从器件和主器件都可以工作于发送和接收状态。 总线必须让主器件控制,总线的传输方向由主器件产生串行时钟(SCL)控制,并产生停止或起始的条件。当SCL若是高电平状态的时候,停止和起始条件是用SDA的状态改变来表示,只有在SCL是低电平状态的时候才能改变SDA的信号状态。参见图12。

- 12 -

铜陵学院毕业设计

图12 数据传送顺序(串行总线上的)

3.1) 控制字节

控制字节的器件必须是在条件起始之后,其中的高四位作为识别符之类的东西(不同类型的芯片有着不一样的含义,但是存储单元一般都应该是1010),接着的低三位是片选,最后一低位是读写位,如果是0时是写操作,反之为1时为读操作。如图13所示。

图13 控制字节配置

3.2) 写操作

写操作分为页面写和字节写两种操作。对于页面写,如果芯片的一次装载的字节不同,那么会有所不同。关于字节写的地址、数据传送的时序和应答传送的时序参见图14。

- 13 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

图14 字节写

3.3) 读操作

读操作有三种基本操作:顺序读、当前地址读和随机读。图15仅给出的是当前地址读的时序图。应当关注的地方是:读操作在第9个时钟周期时,不是“不关心”。为了结束读操作,主机必须在第9个时钟周期内保持SDA为高电平状态、然后发出停止条件或者在第9个周期间发出停止条件。

图15 当前地址读

4.3.2 AT24CO2存储程序

通过以上的介绍,我们就可以写出相应存储电路的程序,程序主要流程图如图16所示:

- 14 -

铜陵学院毕业设计

程序初始化 键盘扫描程序 起始条件满足? Y N 根据键值进行数据传送,并存入相应单元

图16 存储程序流程图

在此,附加上数据传送单字节的程序,如下所示: //发送单字节子程序 BITS: MOV R0,#08H LOOP: CLR SCL RLC A MOV SDA,C NOP SETB SCL CALL DELAYI2C

DJNZ R0,LOOP ;循环8次送8个bit CLR SCL; CALL DELAYI2C SETB SCL REP: MOV C,SDA

JC REP ;判应答到否,未到则等待 CLR SCL

RET

4.4 红外编码程序

- 15 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

调用按键扫描程序,根据按下的键盘值从EEPROM中取出所存入的数据,并且将其传送到单片机的RAM中,然后根据RAM中的数据发出高低脉冲,即“0”,“1”的编码方式,还原出解码前的脉冲信号,并利用定时器T0在P2.5口产生38KHZ的方波,加载到编码输出口上,以便于发射。

4.4.1 读取EEPROM数据到单片机RAM中

编码首先要将学习时存储的数据读取到单片机片内RAM中,其程序流程图如图17所示:

调用键盘扫描程序 根据键值从EEPROM取出地址及其里面的数据 将其中的数据传送到单片机的40——45H单元 调用发射子程序

图17 读取EEPROM程序流程图

由此,写出读EEPROM的程序如下: //读串行E2PROM子程序I2CREAD: I2CREAD: MOV R1,RAMADDRESS SETB SCL SETB SDA

CLR SDA ;发开始信号 MOV A,#MACHINEAD ;送器件地址 CALL BITS ;调发送单字节子程序 MOV A,I2CADDRESS ;送片内字节地址

- 16 -

铜陵学院毕业设计

CALL BITS SETB SCL SETB SDA

CLR SDA ;再发开始信号 MOV A, #MACHINEAD

SETB ACC.0 ;发读命令 CALL BITS CALL BITR MOV @R1,A CLR SDA CALL DELAYI2C SETB SCL CALL DELAYI2C

SETB SDA RET //接受单字节子程序: BITR: MOV R0,#08H LOOP2: SETB SCL CALL DELAYI2C MOV C,SDA RLC A CLR SCL CALL DELAYI2C DJNZ R0,LOOP2 SETOK: CALL DELAYI2C SETB SCL CALL DELAYI2C CLR SCL CALL DELAYI2C

SETB SDA RET

4.4.2 红外编码发射程序

;送停止信号 ;应答毕,SDA置1

- 17 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

当EEPROM的数据传入到单片机内的RAM中后,根据RAM中的内容,还原出红外信号脉冲,其程序流程图如图18所示:

进入发射状态 将44和45H中的数据依次传送到C中 调用键盘扫描程序,根据键值从EEPROM相应单元取出数据 C=1? 先后发送9.12ms的低电平和4.5ms的高电平 Y 调用“1”码发射波形 调用“0”码发射波形 N 将40——43H中字节的前26位依次传送到C N C=1? Y 调用“1”码发射波形 调用“0”码发射波形 发射完毕,回到主程序 26位传送完? Y N

图18 红外编码发射程序流程图

4.4.3 38KHZ方波程序

在设计中,利用定时器0产生38KHZ的方波,以便提高发射效率,其程序如下: 38KHZ:

ORG 0000H LJMP START ORG 000BH

- 18 -

铜陵学院毕业设计

LJMP T0INT ORG 0040H

START:MOV SP,#60H MOV TMOD,#00H MOV TH0,#0F7H MOV TL0,#19H SETB TR0 SETB EA SETB ET0 SJMP $ TOINT:

MOV TH0,#0F7H MOV TL0,#19H CPL P2.5 RETI

4.5 学习与发射的切换程序

为方便遥控器的使用,特别加入了学习与发射的切换电路,以便能更好的运用,其程序流程图如图19所示: 对应程序如下: LOOP1: JB P2.7,SEND LCALL D088MS JB P2.7,SEND LJMP STUDY SEND:JB P2.6,LOOP1 LCALL D088MS JB P2.6,LOOP1 LJMP MAINSEND

- 19 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

程序初始化 P2.7按下? Y 进入学习子程序 N P2.6按下? Y N 学习完毕? 进入发射子程序,发射完毕。

图19 学习与发射的切换程序流程图

结论

这种自学习型红外遥控器能对NEC码的信号进行学习, 然后对这些数据识别以及存储, 并能对红外信号进行解码和读码。能很好地控制智能家居,让人们的生活变得更舒适和方便。其硬件电路很简单,软件功能也挺完善,性价比也高。缺点是红外编码NEC是特定的,并不能对所有的遥控器进行控制,给人们的生活带来诸多不便。

致 谢

经过两个多月来的艰苦努力,我的毕业论文终于取得了阶段性的进展,虽然我们未能最后将此系统做为产品,但我们自觉已在这两个多月之内尽了自己的最大的努力,去钻研这个系统,我接触了真正设计一个电子产品的全部过程,学到了很多实实在在的学问。

经历不知从何入手的无助,不知程序为什么出错的苦恼,初现光芒的窃喜还有最后攻破难关的欢呼。现在回头想想,真的是很有意义。在周妍老师的指导下一步步的完成了这个设计,在这里非常感谢周研老师的教导,如果没有她的帮助我现在估计还不知道从何入手这个设计,关于其中的很多内容都是在周老师的资料帮助下才能够完成。

- 20 -

铜陵学院毕业设计

参考文献

[1] 李湘闽,唐宏,葛继. [学习型红外遥控器].红外.2004,11(8):33~36

[2] 梅丽凤,王艳秋,张军等.[单片机原理及接口技术].北京:清华大学出版社,北京交通

大学出版社,2004. 2~4

[3] 戴峻峰,付丽辉. [多功能红外线遥控器的设计]. 传感器世界.2002,8(12):16~18 [4] 李洪明.[漫谈红外遥控].电子世界.2000年01期总第244期.53

[5] 严后选,孙健国等. [无线红外智能遥控器的设计]. 测控技术.2003.22(3):54~56 [6] 苏长赞.[红外线与超声波遥控].北京:人民邮电出版社.1995.64~68

[7] 李光飞,楼然苗,胡佳文等. [单片机课程设计实例指导].北京:北京航空航天出版

社.2004,168~170

[8] 苏凯,刘国庆,陈国平等 .[MCS-51系列单片机原理与设计].冶金工业出版 [9] 张爱全.[红外线遥控的基本原理和应用范围].山西电子技术.2003 6(12).40-41 [10] 杨恢先,王子菡,杨穗等. [一种基于单片机的红外遥控软件解码方法]. 自动化与仪器

仪表.2004,22(2):16~18

[11] 曲泊涛.[微型计算机系统原理].大连:大连理工大学出版社1999,42~44

[12] 杨光友,朱宏辉等.[单片微型计算机原理及接口技术].北京:中国水利水电出版

社.2002,188~194

[13] 胡汉才.[单片机原理及系统设计].北京:清华大学出版社.2002,254~258

[14] 于明鑫,冯文涛.[MCS-51系列单片机存储容量扩展的软硬件设计].辽宁师专学

报,2004.10,24:23~35

[15] 杨绪东,刘行景,杨兴瑶等.[实用电子电路精选].化学工业出版社. 2001,4. 129~

130

[16] 蔡睿研.[红外线遥控集成电路PT2243原理及应用]. 国外电子元器件. 2003.18(9):52~

54

[17] 曾哲昭. [红外遥控电子密码锁应用研究]. 国外电子元器件. 2002.11(2):7~8

[18] 裴彦纯,陈志超.[基于单片机系统的红外遥控器应用].现代电子技术.2004,4(17),15~17

[19] 刘光斌,刘冬,姚志成. [单片机系统实用抗干扰技术]. 北京:人民邮电出版社 2004,

135~138

[20] 丁元杰. [单片机原理及应用]. 北京:机械工业出版社. 2003, 71~75

[21] 鲍晓宇,黄松岭,刘国权.[PLD器件在红外遥控解码中的应用].电子技术应用.2000,

8(19).67~69

[22] 童厚健,吴青,孙光明. [一种红外遥控系统的硬件和软件实现]. 自动化技术与应用.

2004,6(14).14~18

- 21 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

[23] Angelo Martinez,Eddie Tunstel,Mo Jamshidi.Fuzzy logic based collisionfor a mobile

robot.Robotica Colume,1994,12,521-527

[24] Johan Borenstein,YonamKoren.Histogramic in-motion mapping for mobile robot obstacle

avoidance.IEEE Transactions on Robotics and Automation,2000,7:4 [25] Chang P.ShhJS.Anal Chim.Acta,1998,360(1-3):61

[26] Doica Adrian ,Schreier,Franz ,Hess,Michael,Iterayively regularized Gauss-newton method

for atmospheric remote sensing[J],computer physics communications,2002,148,214~226 [27] Carl j.Weisman.The Essential Guide to RF and Wireless.Publishing House of Electronics

Industry.2003,6. 227~229

- 22 -

附录B: 硬件实物图

附录A:硬件总原理图

铜陵学院毕业设计

- 23 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

附录C:源程序 ZHENGMA EQU 34H FANGMA EQU 35H

MACHINEAD EQU 0A0H ;I2c总线器件地址

I2CADDRESS EQU 20H ;将存入I2c总线的内部地址单元 RAMADDRESS EQU 21H ;预送I2C保存数据的RAM地址 SDA EQU P3.0 ; I2C总线的数据口 SCL EQU P3.1

ORG 0000H LJMP SELECT ORG 0003H LJMP T0IN

SELECT: JB P2.7,SEND

LCALL D088MS JB P2.7,SEND LJMP STUDY SEND:JB P2.6,LOOP1 LCALL D088MS JB P2.6,SELECT LJMP READ

STUDY:

MOV R0,#30H SETB EA SETB ET0 SETB EX0 LCALL D8S AJMP $ T0IN: CLR EA MOV R7,#10

LOOP1:

LCALL D088MS JB P3.2,EXIT DJNZ R7,LOOP1

; I2C总线的时钟口 - 24 -

铜陵学院毕业设计

JNB P3.2,$ LCALL D474MS MOV R1,#0 MOV R2,#4

LOOP2:

MOV R3,#8 JNB P3.2,$ LCALL D088MS

LOOP3:

INC R1 MOV A,R1 CLR C SUBB A,#26 JNC L1 MOV C,P3.2 JNC LOOP4 LCALL D1MS

LOOP4:

POP ACC RLC A PUSH ACC DJNZ R3,LOOP3 MOV @R0,A INC R0

DJNZ R2,LOOP2 MOV R6,#2

LOOP5:

MOV R3,#8

LOOP6:

JNB P3.2,$ LCALL D088MS MOV C,P3.2 JNC LOOP7 LCALL D1MS

LOOP7:

- 25 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

RLC A

DJNZ R3,LOOP6 MOV ZHENGMA,A

LOOP8:

MOV R3,#8 LOOP9:JNB P3.2,$ LCALL D088MS MOV C,P3.2 JNC LOOP10 LCALL D1MS LOOP10: RLC A

DJNZ R3,LOOP9 MOV FANGMA,A MOV A,35H CPL A

CJNE A,34H,EXIT LJMP STORE

EXIT:

SETB EA AJMP $

D8S:

MOV R4,#200

D1:

MOV R5,#200

D2: MOV R6,#98 DJNZ R6,$ DJNZ R5,D2 DJNZ R4,D1 RET D088MS:

MOV R4,#20

D3: MOV R5,#20 DJNZ R5,$ DJNZ R4,D3

- 26 -

铜陵学院毕业设计

RET D474MS:

MOV R4,#10

D4: MOV R5,#235 DJNZ R5,$ DJNZ R4,D4 RET D1MS: MOV R4,#2 D5: MOV R5,#248 DJNZ R5,$ DJNZ R4,D5 RET

STORE:

MOV MACHINEAD,#10100000B

AJMP START ORG 0030H START:

MOV SP,#60H

MOV R0,#30H

MAIN: LCALL KEY JNZ M2 MOV R6,#6 MOV R2,#0

M1:

MOV RAMADDRESS,R0 INC R0

MOV I2CADDRESS,R2 CALL I2CWRITE INC R2

DJNZ R6,M1 LJMP SELECT M2:

CJNE A,#1,M3

MOV R6,#6 MOV R2,#6

M4: MOV RAMADDRESS,R0

;程序开始 ;存入I2C中的地址- 27 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

INC R0

MOV I2CADDRESS,R2 ;存入I2C中的地址 CALL I2CWRITE INC R2

DJNZ R6,M4

M3: LJMP SELECT

;************************************************** ; 写串行E2PROM子程序I2CWRITE ;************************************************** I2CWRITE:

SETB RS1 ;选择寄存器2组

CLR RS0 ;保护寄存器0、1组中的内容 MOV R1,RAMADDRESS SETB SCL SETB SDA

CLR SDA ;发开始信号 MOV A,#MACHINEAD ;送器件地址 CALL BITS

MOV A,I2CADDRESS ;将存入I2c总线的内部地址单元 CALL BITS

MOV A,@R1 ;预送I2C保存数据的RAM内容送ACC CALL BITS ;调发送单字节子程序 CLR SDA ;SDA置0, 准备送停止信号 CALL DELAYI2C ;延时以满足传输速率要求 SETB SCL ;发停止信号; CALL DELAYI2C SETB SDA RET

;************************************************** ; 发送单字节子程序

;************************************************** BITS:

MOV R0,#08H MOOP: CLR SCL; RLC A ;

- 28 -

铜陵学院毕业设计

MOV SDA,C; NOP SETB SCL; CALL DELAYI2C

DJNZ R0,MOOP ;循环8次送8个bit

CLR SCL; CALL DELAYI2C SETB SCL REP: MOV C,SDA

JC REP ;判应答到否,未到则等待 CLR SCL ; RET

;************************************************** ;按键去抖延时子程序 ;Delay time=10ms

;************************************************** KEYDELAY:

MOV R6,#20H KEYDELA2: MOV R7,#248 KEYDELA1:

DJNZ R7,KEYDELA1 DJNZ R6,KEYDELA2 RET

;************************************************** ; I2C器件延时子程序 ; Delay time=4us

;************************************************** DELAYI2C: NOP NOP RET ;键盘程序 KEY:

LCALL KS

- 29 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

JZ KEY LCALL DELAY LCALL KS JZ KEY MOV R2,#0EFH MOV R4,#00H

K1: MOV P1,R2 L1:

JB P1.0,L2 MOV A,#00H AJMP LK

L2:

JB P1.1,L3 MOV A,#04H AJMP LK L3:

JB P1.2,L4 MOV A,#8 AJMP LK L4:

JB P1.3,NEXT MOV A,#12 LK:

ADD A,R4 PUSH ACC K2:

LCALL DELAY LCALL KS JNZ K2 POP ACC RET NEXT:

INC R4

MOV A,R2

JNB ACC.7,KEY

- 30 -

铜陵学院毕业设计

RL A MOV R2,A AJMP K1

MOV P1,#0FH MOV A,P1 XRL A,#0FH RET

KS:

DELAY:

MOV R4,200

D6: MOV R5,249 DJNZ R5,$

READ: MOV MACHINEAD,#10100000B AJMP START1 ;程序开始 START1:

MOV P2,#0FEH

MOV SP,#60H

MOV R0,#40H

MAIN1: LCALL KEY JNZ M21 MOV R6,#6

MOV R2,#0

MOV RAMADDRESS,R0 ;从EEPROM读出数据存到单片机RAM中 INC R0

MOV I2CADDRESS,R2 ;读取I2C中的地址 LCALL I2CREAD INC R2 DJNZ R6,M11

M11:

DJNZ R4,D1 RET

LJMP MAINSEND M21: CJNE A,#1,M31 MOV R6,#6 MOV R2,#6

- 31 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

M41: MOV RAMADDRESS,R0 ;从EEPROM读出的数据存储到单片机的RAM单元

INC R0

MOV I2CADDRESS,R2 ;读取I2C中的地址 LCALL I2CREAD INC R2 DJNZ R6,M41

M31: LJMP MAINSEND

;************************************************** ; 读串行E2PROM子程序I2CREAD

;************************************************** I2CREAD: SETB RS0 ;选择寄存器3组 SETB RS1 ;以保护0、1、2组内容 MOV R1,RAMADDRESS SETB SCL SETB SDA

CLR SDA ;发开始信号 MOV A,#MACHINEAD ;送器件地址

CALL BITS ;调发送单字节子程序 MOV A,I2CADDRESS ;送片内字节地址 CALL BITS SETB SCL SETB SDA

CLR SDA ;再发开始信号 MOV A, #MACHINEAD

SETB ACC.0 ;发读命令 CALL BITS CALL BITR MOV @R1,A CLR SDA CALL DELAYI2C SETB SCL CALL DELAYI2C

SETB SDA ;送停止信号 RET

;**************************************************

- 32 -

铜陵学院毕业设计

; 接受单字节子程序

;************************************************** BITR: MOV R0,#08H NOOP: SETB SCL CALL DELAYI2C MOV C,SDA RLC A CLR SCL CALL DELAYI2C DJNZ R0,NOOP SETOK: LCALL DELAYI2C SETB SCL CALL DELAYI2C CLR SCL CALL DELAYI2C

SETB SDA RET MAINSEND:

CLR P2.5 LCALL D912MS SETB P2.5 LCALL D45MS MOV R0,#40H MOV R1,#26 M22:

MOV A,@R0 MOV R3,#08H M12:

CLR C RLC A DJNZ R1,M32 N1:

MOV A,44H MOV R3,#08H N2:

;应答毕,SDA置1 - 33 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

CLR C RLC A JC SEND12 LCALL SEND0 N22:

DJNZ R3,N2 MOV A,45H MOV R3,#08H N3:

CLR C RLC A JC SEND13 LCALL SEND0 N33:

DJNZ R3,N3 LJMP HIGH23MS M32:

JC SEND11 LCALL SEND0 M42:

DJNZ R3,M12 INC R0 LJMP M22

HIGH23MS:

SETB P2.5 MOV R7,#100 D7: MOV R6,#116

NOP DJNZ R6,$ DJNZ R2,D7 CLR P2.5 LCALL D912MS SETB P2.5 LCALL D45MS

- 34 -

铜陵学院毕业设计

LJMP SELECT D912MS:

MOV R7,#60 D8:

MOV R6,#74 NOP DJNZ R6,$ DJNZ R2,D8 RET D45MS:

MOV R7,#50 D9:

MOV R6,#42 NOP DJNZ R6,$ DJNZ R2,D9 RET

D0565MS:

MOV R7,#2 D10:

MOV R6,#138 NOP DJNZ R6,$ DJNZ R2,D10 RET

D1685MS:

MOV R7,#5 D11:

MOV R6,#166

- 35 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

NOP DJNZ R6,$ DJNZ R7,D11 RET SEND11:

CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D1685MS LJMP M42 SEND12:

CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D1685MS LJMP N22 SEND13:

CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D1685MS LJMP N33 SEND0:

CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D0565MS RET END

- 36 -

陈洋德:基于51单片机的自学习型遥控器设计与实现

NOP DJNZ R6,$ DJNZ R7,D11 RET SEND11:

CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D1685MS LJMP M42 SEND12:

CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D1685MS LJMP N22 SEND13:

CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D1685MS LJMP N33 SEND0:

CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D0565MS RET END

- 36 -

本文来源:https://www.bwwdw.com/article/tgvg.html

Top