基于单片机的红外线遥控器设计 - 图文

更新时间:2023-12-23 04:30:01 阅读量: 教育文库 文档下载

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

基于单片机的红外线遥控器设计

院 系:机电与自动化学院 专 业 班:自动化1003班 姓 名: 李 斌 学 号: 20101184120 指导老师: 吴 蕾

2014年5月

基于单片机的红外线遥控器设计 Design of Infrared Remote Control Based on the Single Chip Microcomputer

摘 要

单片机被广泛应用于促进设备和产品的微型化,数字化,自控化和智能化。计算机在自动化控制技术方面的深化得益于单片机的应用,因此一场基于传统控制技术的变革在自动控制领域里引发了,即传统的设计方法和控制思想的本质正在被单片机逐渐地改变。现在我们可以通过软件的方法去完成控制功能,而这是过去必须要通过数字或模拟电路来实现的。尤其是家用电器给我们带来了方便快捷的生活之后,红外遥控这种计算机技术就被广泛使用了。许多中断技术都在红外遥控中得到了运用。在计算机系统中,各种硬件设备可以产生中断,将它用来请求服务或报告故障报警等。另外,处理器本身也可以产生中断。电平方式和脉冲方式是外部中断请求的两种信号不同方式。电平方式在进行中断请求时低电平有效,脉冲方式则是在脉冲下降沿的时候才有效。在图书馆查阅相关资料之后,我设计了一些方案,最后选定了一个最佳方案:即运用单片机技术实现遥控和采用模块化设计。它包括红外发射和红外接收两个模块。开关控制红外发射模块中的单片机,使红外发射管对另一个单片机发射信号;而红外接收管接收的信号控制红外接收模块中的单片机。此外,设计的电路图也完成了红外遥控的任务。最后通过仿真器输入程序,手动中断,中断结束后程序从断点处继续执行,实现了红外遥控过程的硬件组成及其工作原理和软件设计。

关键词:单片机 遥控器 红外发射 红外接收

I

Abstract

Single-chip microcomputer is widely applied to promote the miniaturization of equipment and products, digital, automatic and intelligent. Deepening of computer in automatic control technology thanks to MCU application, so a change based on traditional control technology in the field of automatic control led, namely the traditional design method and thought is the essence of SCM gradually changed. Now we can approach to achieving the control function by the software, which is the past must be implemented through digital or analog circuit. Especially in household appliances brings us a convenient life, infrared remote control the computer technology is widely used. Many interrupt technology are used in the infrared remote control. In a computer system, a variety of hardware equipment can generate interrupts, it is used to request services or report fault alarm, etc. In addition, the processor itself can also generate interrupts. Level mode and pulse mode is two kinds of signals of different way of external interrupt request.To interrupt request level way in low level effectively, pulse method is effective only when falling edge in pulse. After the library access to relevant data, I designed a few solutions, finally settled on a best solution: namely using single-chip microcomputer technology to realize remote control and adopts the modular design. It consists of infrared emission and receiving two modules. Switch control infrared emission module of the single chip microcomputer, infrared transmitting tube to another MCU emission signal; And infrared receiving tube receiving signal control infrared receiving module of the single chip microcomputer. In addition, the design of the circuit diagram is also completed the infrared remote control tasks. Finally through the simulator input program, manual interruption, from the breakpoint continue after the interrupt program, realized the infrared remote control process and its working principle of the hardware and the software design.

Key words: MCU Remote-control unit Infrared emission Infrared receiver

II

目 录

摘要????????????????????????????????2 Abstract??????????????????????????????错误

绪论????????????????????????????????1 1 红外遥控?????????????????????????????2 1.1 红外通信原理?????????????????????????2 1.2 红外发射???????????????????????????3 1.3 红外接收???????????????????????????3 2 总体方案设计??????????????????????????4 2.1 简易红外遥控电路???????????????????????4 2.2 红外遥控开关电路???????????????????????4 3 单片机?????????????????????????????6 3.1 单片机系统??????????????????????????6 3.2 AT89S52单片机????????????????????????7 3.3 系统复位???????????????????????????10 3.4 晶振电路???????????????????????????11 3.5 按键电路???????????????????????????12 3.6 中断系统???????????????????????????13 3.6.1 中断的概念?????????????????????????13 3.6.2 中断控制??????????????????????????13 4 电路框图设计??????????????????????????15 4.1 遥控发射单元的电路图设计???????????????????15 4.2 遥控接收单元的电路图设计???????????????????15 5 系统设计????????????????????????????16 5.1 硬件设计???????????????????????????16 5.1.1 红外遥控发射单元原理图???????????????????16

III

5.1.2 红外遥控接收单元原理图???????????????????16 5.2 软件设计???????????????????????????17 5.2.1 红外遥控发射流程图?????????????????????17 5.2.2 红外遥控接收流程图?????????????????????18 5.2.3 红外发射端程序???????????????????????19 5.2.4 红外接收端程序???????????????????????22 结论??????????????????????????????26 致谢???????????????????????????????27 参考文献?????????????????????????????28

IV

绪 论

目前,红外遥控技术运用在很多电子设备和其它小型电器装置上,在家用电器方面更是广泛采用。同时也逐步在计算机系统中得到应用;工业设备方面,在一些特殊环境下如粉尘、辐射、高压、有毒气体等,红外遥控可以充分地隔离电气干扰而且安全可靠。红外发射设备是一种采用红外发光二极管的通信和遥控的手段。运用最广泛的是遥控发射器。因此,在彩电、录像机之后,诸多价格低廉的小型化设备都用数字信号编码和二次调制方式去完成。它的好处在于强化遥控功能,能控制多路信息,误操作变少,增强抗干扰性,降低功率消耗。并且红外线有较高的传输效率、较快的反应速度和稳定安全的工作环境等,所以目前红外遥控方式在无线遥控方式领域里独占鳌头。以红外线作为载体来传送控制信息的方式称为红外遥控。电子技术的飞速发展,带来了单片机的问世,促进了以数字编码方式的红外遥控系统的快速发展。虽然采用专用的遥控编码及解码集成电路的传统遥控器容易实现,可是其功能受到了一定的限制,只能应用在某一专用的电器产品上,大大限制了其应用范围。然而在遥控系统的应用设计中引入单片机,其灵活多样的编程和可以随便设定操作码个数等一系列优势。

60年代初,虽然有些发达国家已经开始了遥控技术产品的研究,但是当时电子技术条件受到了限制,只能让遥控技术缓慢地发展。70年代末,遥控技术的快速发展得益于大规模集成电路和计算机技术的发展。总的来说,遥控方式经历了从有线到无限的超声波,从振动子到红外线,再到使用总线的微机红外遥控这样几个阶段。虽然采用不同的方式,但重要的是都能将信号准确无误地传输,达到预定的控制结果。电磁波传输信号在以往的无线遥控装置中是非常常见的,可是电磁波在传输过程中容易产生干扰信号,也容易受到干扰,所以超声波和红外线慢慢地取代了电磁波。由于超声波传感器的频带较窄,只能携带的少量信息,并且容易因干扰而引发误动作。所以现在出现的红外线多功能遥控器成为了主流。它采用的是一种光控方式,这种用红外线遥控的方式慢慢取代了超声波。课题中需要制作的遥控器要解决单片机原理和最小系统设计、键盘的扫描设计、红外发射和接收器的工作原理等,还要编写汇编语言进行调试运行。

1

1 红外遥控

红外线在频谱上不在可见光的范围之内,拥有光波的直线传播特点,所以相互间的干扰是不易产生的,对外界的抗干扰性强,可以作为良好的信息传输媒体。调制红外光的强弱可以对信息直接进行传输,另外信息先对用红外线产生的一定频率的载波进行调制后,再让接收端去掉载波就可以获得信息。显而可见,后一种方法对信号的完整安全来说更有优势。这一方法在现在市面上绝大多数的红外遥控上就可以看到。采用红外遥控方式不仅不会干扰到其他电器的正常使用,而且对附近的无线电设备也不会产生影响。这是因为红外线有比无线电远小的波长的原因。

1.1 红外通信原理

红外通信是利用950nm近红外波段的红外线作为传递信息的媒体,即通信信道。发送端将基带二进制数字信号调制为一系列的脉冲序列,并驱动红外发射管发射红外光信号。接收端先把接收到的光脉转换成电信号,再通过放大、滤波解调电路进行处理,最后将其还原为二进制数字信号后输出。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。红外通信接口实际上是一个专门就红外信道而言的调制解调器。

在脉宽调制的串行码中,我们用0.5ms脉宽、0.5ms间隔和1ms 周期的组合来代表二进制“0”,用0.5ms脉宽、1ms间隔、2ms 周期的组合来代表二进制“1”。如图1-1所示。其中为了提高发射效率,我们可以用“0”和“1”组成二进制码进行二次调制以,而且可以降低电源功耗。最后再通过红外发射二极管产生红外线向空间发射。

图1-1 遥控码的“0”和“1”

2

1.2 红外发射

红外发光二极管常被运用在红外遥控发射电路中,发出经过调制的红外光波。红外发射过程框图如下:

指令键 编码电路 调制电路 驱动电路 发射电路 图1-2 红外发射器框图

可以看出,红外发射器一般包括指令键、编码系统、调制电路、驱动电路和发射电路等几个部分。指令编码电路在指令键被按下或是操作杆被推动时会产生相应的指令编码信号,然后指令编码信号将调制的载波经过驱动电路进行功率放大,最后得到的特定的指令编码信号经过发射电路后向外发射。

1.3 红外接收

红外接收电路一般包括红外接收二极管、三极管或硅光电池。红外发射器发射的红外光经过接收电路后会转换为相应的电信号,再送入放大电路。红外接收过程框图如下: 接 收电 路 放 大电 路 解 调电 路 译 码电 路 驱 动电 路 执 行电 路 图1-3 红外接收器框图

可以看出,接收器通常包括接收电路、放大电路、解调电路、译码电路、驱动电路和执行电路等几部分。由红外发射器调制的特定的编码指令信号会被接收电路接收下来,经过放大电路放大后送入解调电路。特定的指令编码信号会在这里被解调出来还原为编码信号。编码信号会在译码电路得到译码。而各种指令的操作控制是由最终的信号被送入驱动电路和执行电路来实现的。

3

2 总体方案设计

根据任务书的要求,利用单片机设计一个遥控开关,可以拟定以下二种方案。

2.1 简易红外遥控电路

常规的集成电路就可以实现单通道红外遥控,所以没用到多电路时可以考。 而且成本低,没必要使用高额的专用编译码器。方案框图如下:

红外发射部分:

图2-1 红外发射部分框图(a)

产生振荡频率 红外发射 此方案的电路是一个简单的单通道遥控器。红外发光二极管发射的是一个能实现控制功能的震荡电路频率。

红外接收部分:

红外接收

图2-2 红外接收部分框图(a)

解调控制 受控电器 2.2 红外遥控开关电路

用单片机来实现红外发射和红外接收的控制电路,其优点是可选择不同的输出控制方式,适应能力更好。方案框图如下: 红外发射部分:

遥控按钮

图2-3 红外发射部分框图(b)

单片机 红外发射 可见,单片机在遥控被按下时会产生相应的控制脉冲,再经过红外发光二极管

4

向外发射。

红外接收部分:

控制方式选择开关 红外接收 单片机 受控电路

图2-4 红外接收部分框图(b)

控制方式选择开关在红外接收器收到控制脉冲后,会选择是“互锁”还是单电路控制。送入单片机处理后,受控电路会对电器产生控制相应。

5

3 单片机

单片机全称单片微型计算机(Single Chip Microcomputer),又称MCU(Micro Controller Unit),是将计算机的部分微型化,使之集成在一块芯片上的微机。最初的单片机芯片内仅有CPU的专用处理器。为了让计算机系统变得更小、更加集成化,CPU和大量外围设备都被集成在了一个芯片之中 。

单片机有较强的可靠性,可以实现实时控制功能,实用性广,应用范围较大,所以成了控制系统的核心部件。随着人们对生活质量的要求越来越高,单片机控制将逐步进入我们的日常活,它所带来的好处也是无法取代的。在这之中,有个典型的例子就是红外遥控,但科技的发展越来越刺激人们的在各方面的需求。因此,对单片机技术的要求就逐渐显露出来,单片机的数字化和智能化变得迫在眉睫,也是必然的发展趋势。所以学习单片机的相关知识,了解掌握单片机的实际应用技术变得尤为重要。从单片机的基本结构,到各部分的工作原理以及各种编译指令的运用,这些理论性的知识横重要。同时,实践也是必不可少的,理论与实践的完美结合,才会把一切变得可能。

3.1 单片机系统

经典的单片机系统主要包括单片机、晶振电路、复位电路、输入控制电路、输出显示电路以及外围功能器件6个部分。如图3-1所示:

晶振复位电路

外围功能器件

图3-1 单片机系统的组成

6

输入控制 单片机 显示输出

单片机最小系统是单片机能够正常运行的最基本电路系统,如图3-2所示。通过最小系统与外围设备的链接可以实现不同的功能。

图3-2 单片机最小系统原理图

3.2 AT89S52单片机

此次课题是基于单片机的红外线遥控器设计,设计中所要求的单片机是Atmel公司的AT89S52芯片。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

7

AT89S52的引脚图如下所示:

图3-3 AT89S52的引脚图

AT89S52单片机引脚注释: VCC:接电源端。 GND:接地端。

P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在 flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

P1 口:P1 口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,

8

将输出电流(IIL)。

P2 口:P2 口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2 口送出高八位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3 口:P3 口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些控制信号。

RST: 复位输入。晶振工作时,RST脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。 ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。

PSEN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当 AT89S52从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN将不被激活。EA/VPP:访问外部程序存储器控制信

9

号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。在flash编程期间,EA也接收12伏VPP电压。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。

3.3 系统复位

通过某种方式,使单片机内各寄存器的值变为初始状态的操作称为复位。51单片机在时钟电路工作以后,2个机器周期的高电平持续加在RST/VPD端就可以完成复位操作(一般复位正脉冲宽度大于10 ms)。外部按键复位和上电复位为复位的两种基本方式。在程序开发过程中,程序跑飞的情况会在系统运行的过程中出现,这时就需要进行手动复位。而这次也是选用的手动复位即上述引脚出现2个机器周期的的高电平,此时单片机振荡器正常运行时,单片机将会实现复位。而操作员用手按键的时间远远大于2个机器周期,复位能够实现。如图3-4所示:

图3-4 复位电路原理图

51单片机复位后,ALE在复位期间将输出高电平,但片内RAM存放的内容不会受复位的影响。程序计数器PC和特殊功能寄存器复位的状态如表3-1所示。从表中可以得到以下结果:

(1) (PC)=0000H ,复位后程序的入口地址为0000H;

(2) (PSW)=00H,其中RS1(PSW.4)=0, RS0(PSW.3)=0, 表示复位后单片机选择工作寄存器0组;

(3) (SP)=07H ,复位后堆栈在片内RAM的08H单元处建立;

10

(4) P0口~P3口锁存器为全1状态,,说明复位后这些并行接口可以直接作输入口, 无须向端口写1。

表3-1 51单片机复位后程序计数器PC和特殊功能寄存器复位的状态

寄存器名称 PC A B PSW SP DPTR P0~P3 复位状态 0000H 00H 00H 00H 07H 0000H FFH 寄存器名称 TCON T2CON TH0 TL0 TH1 TL1 SCON 复位状态 00H 00H 00H 00H 00H 00H 00H 3.4 晶振电路

晶振电路是维持单片机最小系统运行的基本模块,它为单片机提供时钟脉冲信号,没有时钟电路单片机便不能正常工作。单片机的晶振电路由振荡电路和分频电路组成。其中,振荡电路又包括电容、反相器和并联外接的石英晶体3个部分,它的主要功能是产生振荡脉冲。而要得到所需要的时钟信号就要用到把振荡脉冲分频的分频电路。

石英晶体是感性原件,电容是容性原件。图中引脚XTAL1、引脚XTAL2分别为输入端为输出端。在这2个引脚上外并接石英晶体振荡器和两只电容就可以形成振荡回路。而稳定的自激振荡器需要它为片内放大器提供振荡的相移条件和正反馈。晶体的振荡频率对振荡器的频率起决定性的作用, 一般晶体可在1.2~12 MHz之间任选, 电容C1、 C2可在5~30 pF之间选择。由于电容的大小对振荡频率有微小的

11

影响, 所以可以用来对微调频率。 振荡电路如图3-5所示:

图3-5 振荡电路

系统的时钟信号是以经过二分频后的振荡脉冲为标准的;用于控制把P0口的低8位地址送入锁存器锁起来的ALE信号是时钟信号经过三分频产生的;它可以完成低地址和数据的分时传送。另外,外部时钟和外部脉冲都可以使用ALE信号。机器周期信号是时钟信号六分频的结果。

3.5 按键电路

此次设计用到的键盘是2*8矩阵键盘,如图3-6所示。相比编码键盘,设计简单方便且成本较低的矩阵键盘更好,况且不必用专门的编码芯片。键盘的原理也十分简单易懂:一端接入高电平,另一端的检测用单片机的一个端口链接。当按键按下时会产生低电平。图中的键盘为2行8列,每列都加有高电平和上拉电阻。当调用程序进行行扫描和列扫描时,就可以锁定按键的具体位置。理想状态下,按键按下时会产生稳定的波形,不会有抖动,但实际并非如此,因此程序设计中要有消除抖动的操作。这里调用一个10ms的延迟程序来解决。

图3-6 2*8按键原理图

12

3.6 中断系统

3.6.1 中断的概念

中断的概念来源于CPU与外设之间访问速度的矛盾。当CPU采用查询方式与外设交换信息时,CUP反应快而外设则比较慢。这样会造成CPU资源的大量浪费,于是中断由此产生。

中断有四个过程即中断发生、中断响应、中断服务、和中断返回。当CPU和外设正在并行工作时,有某种突发事件发生并向CUP提出请求(中断发生),CPU暂时正在执行的程序转到需要处理的入口处并跳转处理中断事件为外设服务(中断响应、中断服务),处理完毕再回到原断点继续处理执行原程序(中断返回)。这个过程称为中断。

51单片机的中断系统提供5个中断源:外部中断0和外部中断1,定时/计数器(T0)和(T1)的溢出中断,串行接口的接收和发送中断。 3.6.2 中断控制

(1) IE(A8H):中断允许寄存器

中断允许寄存器(IE)决定CPU是否开放或屏蔽中断系统所有中断和某个中断源。IE各位的定义如下表所示:

表3-2 IE各位的定义

位地址 0AFH 0AFH 0ADH 0ACH 0ABH 0AAH 0A9H 位符号 EA / / ES ET1 EX1 ET0 0A8H EX0 EA:中断允许总控制位。EA=0,中断被禁止,总是禁止一切中断;EA=1,中断被允许,在此基础上各中断源的中断允许控制位最终决定中断是否被禁止或是允许。

EX0和EX1:外部中断允许控制位。EX0(EX1)=0,禁止外部中断;EX0(EX1)=1,允许外部中断。

ET0和ET1:定时器/计数器中断允许控制位。ET0(ET1)=0,禁止定时器/计数器中断;ET0(ET1)=1,允许定时器/计数器中断。

ES:串行中断允许控制位。ES=0,禁止串行中断;ES=1,允许串行中断。 (2) 中断优先级控制寄存器(IP)

13

各中断的优先级通过中断优先级控制寄存器IP来设定,其未定义及位地址如下表所示:

表3-3 IP各位的定义

位地址 0BFH 位符号 / 0BEH 0BDH 0BCH 0BBH 0BAH 0B9H / / PS PT1 PX1 PT0 0B8H PX0 PX0:外部中断0优先级设定位; PT0:定时中断0优先级设定位; PX1:外部中断1优先级设定位; PT1:定时中断1优先级设定位; PS:串行中断优先级设定位。 (3) 定时器控制寄存器(TCON)

该寄存器用于保存外部中断请求以及定时器的计数溢出。进行字节操作时,寄存器地址为88H。按位操作时,各位的地址为88H~8FH。寄存器的位地址和位符号如下表所示:

表3-4 TCON各位的定义

位地址 位符号 8FH TF1 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0 IE0和IE1:外中断请求标志位。当CPU采样到 INT0(或INT1)端出现有效中断请求时,IE0(IE1)位由硬件置“1”; 当中断响应完成转向中断服务程序时,由硬件把IE0(或IE1)清零。

TR0 和TR1:定时器运行控制位。TR0(TR1 )=0,定时器/计数器不工作;TR0(TR1 )=1,定时器/计数器开始工作。

TF0和TF1:计数溢出标志位。当计数器产生计数溢出时,相应的溢出标位硬件置“1”, 并自动产生定时中断请求。

14

4 电路框图设计

4.1 遥控发射单元的电路图设计

遥控发射单元主要包括按键电路、红外发射器电路和单片机最小系统等,其框图如下所示:

电源电路

复位电路 AT89S52 单片机 红外发射

图4-1 红外遥控单元发射框图

晶振电路 按键电路 4.2 遥控接收单元的电路图设计

遥控接收单元主要包括控制对象电路、红外接收器电路和单片机最小系统等,其框图如下图所示:

电源 复位电路 AT89S52 单片机 晶振电路 红外接收器

图4-2 红外遥控接收单元框图

控制对象 15

5 系统设计

5.1 硬件设计

5.1.1 红外遥控发射单元原理图

发射端采用具有在线下载功能的AT89S52芯片作为控制中心,与键盘扫描电路和发射电路共同构成。此设计采用矩阵式较为合理。首先,发射端利用单片机将需要的信号编码调制为特定的脉冲序列,再由P1.0口发出的脉冲用三极管功率放大后,最后驱动红外发射管LED1 完成发射过程。

图5-1是遥控发射单元的发射原理图,其中P1口作为键盘扫描口,具有16个功能操作键,第9脚为单片机复位脚,采用复位电路如图所示,15脚作为红外遥控码的输出口,用于38MHZ载波编码,18 、19脚12MHZ晶振。

5-1 红外遥控发射单元原理图

5.1.2 红外遥控接收单元原理图

以AT89S52芯片作为控制中心,另加控制接收电路和各自的控制电路组成了接收控制器。其中接收电路使用一体化红外接收头HS0038,HS0038工作频率为38 kHz,能对收到遥控信号进行放大、检波、整形、解调,得到TTL 电平的编码信号,再送给

16

单片机,经单片机解码并执行相关控制程序,对外只有3个引脚:VS、GND和1个脉冲信号输出引脚,使用方便,性能可靠。

图5-2为该遥控器的接收器原理图,其中P0口作为数码管的二进制数据输出,显示按键号,第9脚为单片机复位脚,采用复位电路如图所示,18 19脚为12MHZ晶振。

图5-2 红外遥控接收单元原理图

5.2 软件设计

5.2.1 红外遥控发射流程图

程序开始时对单片机进行初始化设置,循环扫描判断是否有键按下,如果有键按下就发射相应的红外信号,遥控发射程序流程图如图所示:

17

开始 扫描

调用按键扫描程序 初始化 Y 按键信号发送程序 N 键按下 发送

图5-3 红外遥控发射程序流程图

发送完毕 5.2.2 红外遥控接收流程图

遥控接收通过中断接收遥控信号,通过延时判断是否有开始脉冲,如果有开始脉冲就开始接收脉冲序列,根据脉冲序列判断需要执行的程序,最终完成相应的功能。遥控接收程序流程图如图所示:

18

中断

中断返回

图5-4 红外遥控接收程序流程图

Y 接收脉冲 N 是否开始脉冲 延时

执行功能 5.2.3 红外遥控发射端程序

/**************************************************************** * 文件名 : 红外遥控发射端

****************************************************************/ #include #include

#define uint unsigned int #define uchar unsigned char

uchar count = 0;

/**************************************************************** * 名称 : delay_1ms()

* 功能 : 延时子程序,延时时间为 1ms * x

19

* 输入 : x (延时一毫秒的个数)

****************************************************************/ void delay_1ms(uint i) {

uchar x,j;

for(j=0;j

for(x=0;x<=148;x++) }

/*************************************************************** * 名称 : time0_init()

* 功能 : 定时器的初始化,定时10ms

****************************************************************/ void time0_init() {

TMOD = 0x01; IE = 0x82; TH0 = 0x15; TL0 = 0xA0; }

/**************************************************************** * 名称 : time0_int() * 功能 : 定时器中断

****************************************************************/ void time0_int() interrupt 1 {

count++; TH0 = 0x15; TL0 = 0xA0; }

/**************************************************************** * 名称 : keyscan()

* 功能 : 实现按键的读取

****************************************************************/ uchar keyscan(void) {

uchar i,j, temp, buffer[4] = {0xef, 0xdf, 0xbf, 0x7f}; for(j=0; j<4; j++) {

20

P1 = buffer[j]; /*以下三个_nop_();作用为让 P1 口的状态稳定*/ _nop_(); _nop_(); _nop_(); temp = 0x01; for(i=0; i<4; i++) { if(!(P1 & temp)) { return (i+j*4); //返回取得的按键值 } temp <<= 1; } } }

/**************************************************************** * 名称 : main() * 功能 : 主函数

****************************************************************/ void main(void) {

uchar key_value; //读出的键值 while(1) { P1 = 0xf0; if(P1 != 0xf0) { delay_1ms(15); //按键消抖 if(P1 != 0xf0) { key_value = keyscan() + 1; //key_value是键码加 1 } time0_init(); TR0 = 1; while(1) { uchar i; for(;count < 10;) //发射首部 P2 = 0x00; count = 0;

21

}

}

}

}

for(;count < 10;) P2 = 0xff; count = 0;

for(i = 0; i < key_value; i++) { for(;count < 5;) P2 = 0x00; count = 0; for(;count < 5;) P2 = 0xff; count = 0; }

TR0 = 0; break;

//发射数据

5.2.4 红外遥控接收端程序

/**************************************************************** * 文件名 : 红外遥控接收端

****************************************************************/ #include #include

#define uchar unsigned char #define uint unsigned int

uchar count = 0; //定时器计时 uchar time = 0; //脉冲计时 uchar num = 0; //键码值

uchar receive = 0; //为0时不是接收状态,为1时为正在接收数据状态

void receive();

/**************************************************************** * 名称 : delay()

* 功能 : 延时,延时时间为

****************************************************************/ void delay(uint k) {

uint i,j;

22

for(i=0; i

for(j=0; j<1800; j++) ; }

/**************************************************************** * 外部中断0初始化 inter0_init()

****************************************************************/ void inter0_init() {

EA = 1; PX0 = 0;

IT0 = 1; //下降沿触发 }

/**************************************************************** * 外部中断0 inter0_int()

****************************************************************/ void inter0_int() interrupt 0 {

TR0 = 1;

while(P3^1 == 0); TR0 = 0;

time = 5 * count;

if(time > 450 && time < 750) { receive = 1; //等于1开始接收数据 EX0 = 0; num = 0; }

count = 0; }

/**************************************************************** * 定时器0初始化

****************************************************************/ void time0_init() {

EA = 1; ET0 = 1; PT0 = 1; TH0 = 0xEC;

23

TL0 = 0x78; }

void time0_int() interrupt 1 {

TH0 = 0xEC; TL0 = 0x78; count++; }

/**************************************************************** * 键码接收

****************************************************************/ void receive() {

TR0 = 1;

while(P3^1 == 0); //计时高电平的时 TR0 = 0; time = 5 * count;

if(time > 180 && time < 420) { num++; count = 0; } else { receive= 0; EX0 = 1; }

time = 0; }

/**************************************************************** * 名称 : main()

****************************************************************/ void main() {

EX0 = 1; while(1) { time0_init(); inter0_init();

24

while(receive) { receive(); }

P0 = num; delay(5); }

}

25

结 论

红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,

功耗低,成本低,易实现等显著优点;而以单片机为核心的控制系统,也具有实时控制功能强,可靠性高,实用性强,应用范围广等优点。使用红外遥控器作为系统的输入设备,具有成本低、灵活方便的特点。通过分析与研究,可以使用遥控发射单元和遥控接收单元来实现单个遥控发射模块控制多个控制对象。该课题主要介绍红外遥控器的设计原理与实现方法。以设计过程为主线,分别从硬件和软件两个方面描述设计过程,即从硬件电路的设计方法到实现所要求功能的软件技术。

该红外线遥控器设计使用AT89S52作为主控芯片,最终实现单个遥控发射模块控制多个控制对象。此论文详细介绍了遥控电路的设计过程,并给出发射单元与接收单元的原理图,在软件方面用C语言进行了编程,对于软件设计主要有主控制器、分控制器的通信程序设计与红外传输解码程序设计以及灯光控制。

在设计过程中成功解决了两大难题。硬件方面,接收电路使用一体化红外接收头HS0038,HS0038工作频率为38 kHz,能对收到遥控信号进行放大、检波、整形、解调,得到TTL 电平的编码信号,再送给单片机,经单片机解码并执行相关控制程序,对外只有3个引脚:VS、GND和1个脉冲信号输出引脚,使用方便,性能可靠;软件方面,调用了按键消抖程序,这个程序的加入成功解决了外界干扰因素,大大提高了红外遥控器的性能。

26

致 谢

首先,我要感谢我的论文指导老师吴蕾。在毕业论文的写作过程中,吴老师一直悉心指导和严格要求。对于单片机的相关知识,以前觉得自己掌握得很不错,但是这次的毕业设计让我深刻得体会到了自己知识面的狭隘,真是书到用时方恨少啊!而吴老师给予我的指导、提供给我的支持和帮助,让我克服了我许多技术上的难题和心理上的障碍,逐步把系统做的更加正确、更加具体、更加完善。

其次,对那些帮助过我的同学,我要奉上我最真诚的谢意。你们帮我解决了很多设计难题和生活困扰。另外,机电与自动化学院给我们提供了良好的实验器材和实验室环境,这让我们十分感动。由于你们的慷慨牺牲,我得到了太多的关照,太多的锻炼机会,视野得到很大的拓展,大大提升了自己的综合素质。

最后,再一次衷心地感谢所有在毕业设计中帮助过我的指导老师和同学。毕业设计的圆满完成,只是我大学生活的一个总结。在今后的人生道路上,对于自己在相关领域存在的不足,希望能得到老师和同学的批评和指正。

27

参考文献

[1] Tseng, P.-C. The design of a single-chip tool monitoring system for on-line turning

operation. International Journal of Advanced Manufacturing Technology. 2004,24(5):404-414.

[2] Doebelin E O. Measurement Systems: Application and Design. McGraw-Hill Inc,

1990.

[3] 郑学坚.微型计算机原理及应用.北京:清华大学出版社,2008. [4] 谢自美.电子线路设计、实验、测试.武汉:华中理工大学出版社,2000. [5] 王贺明,王成安.模拟电子技术.大连:大连理工大学出版社,2003. [6] 何小艇.电子系统设计.杭州:浙江大学出版社,2004.

[7] 何立民.MCS-51系列单片机应用系统设计.北京:北京行天航空工业大学出版

社,1990.

[8] 于京,张景璐.51系列单片机C程序设计及应用案例.北京:中国电力出版 社,2006.

[9] 李广弟.单片机基础(修订本) .北京:北京航空航天大学出版社,2001. [10] 张毅刚,彭喜院.单片机原理与应用设计.哈尔滨:哈尔滨工业大学出版社, 2008.

[11] 李全利.单片机原理及接口技术.北京:高等教育出版社,2009. [12] 刘鲲,孙春亮.单片机C语言入门.北京:人民邮电出版社,2010. [13] 谢维城,杨家国.单片机原理与应用及C51程序设计,北京:清华大学出版 社,2006.

[14] 朱月秀,冷祖祁.单片机基础.北京:北京航天大学出版社,2007. [15] 华成英,童诗白.模拟电子技术基础.北京:高等教育出版社,2006. [16] 赵亮,候国锐.单片机C语言编程与实例.北京:人民邮电出版社,2003.

28

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

Top