基于单片机实现红外遥控读码器.docx
《基于单片机实现红外遥控读码器.docx》由会员分享,可在线阅读,更多相关《基于单片机实现红外遥控读码器.docx(19页珍藏版)》请在冰豆网上搜索。
基于单片机实现红外遥控读码器
本科课程设计报告
课程:
《单片微机原理与应用》
题目:
基于单片机实现红外遥控读码器
姓名:
学号:
院(系):
电气信息工程学院
年级专业:
2005级电子信息工程
指导教师:
二〇〇八年七
摘要
电子计算机是20世纪的重大科学成就之一,它的应用已进入了社会的各个领域,有力地推动了社会的发展。
电子计算机之所以能在现代社会中起着极其重要的作用,是由它的高速度、高度自动化、具有记忆能力、逻辑判断等卓越特性决定的。
当今,计算机技术带来了科研和生产的许多重大的飞越,微型计算机的应用已经深入到生产、生活的各个方面。
单片微型计算机虽然问世不久,然而体积小、价廉、功能强、其销售额每年以80%的速率增长。
它的性能不断提高,适用的范围越来越强,在计算机应用邻域已占有日益重要的作用。
单片计算机简称为微机或单片机,有称微控制器。
它是在一快半导体芯片上,集成了CPU、ROM、RAM、I/O接口,定时器/计数器,中断系统等功能部件,构成了一台完整的电子计算机。
由于集成电路技术的进步,片内甚至还可以包含HSO、HIS、A/D转换器、PWN等称为“片内外设”的特殊功能部件。
随着单片机功能的增强,由单片机构成的计算机应用系统的功能也日益增强它一样可以配用打印机、绘图仪、CRT等外围设备。
配合大功率晶体管的运用、有了波形发生器,扩展了在电气传动邻域的应用等。
这进一步深化了单片机在工业控制、自动检测、智能仪器仪表、家用电器邻域的突出地位,并不断的阔展了应用范围,增添了新的活力。
单片机的应用结束了计算机专业人员“垄断”计算机系统开发与应用的时代,它给各种专业人员、特别是许多工程技术人员带来了学习和掌握计算机技术带来了可能性。
遥控技术是通过一定的手段对被控物体实施一定距离的控制,常用的方式有无线电遥控、有线遥控、红外线和超声波遥控等。
红外线遥控是目前使用最广泛的一种通信和遥控手段。
由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。
工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。
红外遥控的广泛应用对此课题的设计具有非常重要的意义。
此设计应用单片机实现红外遥控信号的编码显示,进而可探索它的控制能力进入实践应用而提高红外遥控的实用能力,因而具有现实意义。
通过对此设计的完成实现,可以更清楚的了解此课程的实际意义而进一步掌握理解。
关键词:
单片机,红外译码,数码显示,软件设计
目录
1绪论1
2MCS-51单片机结构功能2
2.1单片机的主要功能2
2.2芯片引脚描述3
2.1.1主电源引脚3
2.1.2外接晶体引脚3
2.1.3控制或与其它电源复用引脚4
2.3MSC-51硬件结构5
3红外遥控系统原理及单片机软件解码6
3.1红外遥控系统6
3.2遥控发射器及其编码7
3.3遥控信号接收8
3.4 遥控信号的解码9
3.5设计报告电路图10
3.5.1硬件电路10
3.5.2数码管显示代码11
3.6软件实现11
4课程设计体会14
5参考文献15
1绪论
电子计算机是20世纪的重大科学成就之一,而在当今,计算机技术带来了科研和生产的许多重大的飞越,微型计算机的应用已经深入到生产、生活的各个方面。
其中单片微型计算机虽然问世不久,然而体积小、价廉、功能强、其销售额每年以80%的速率增长。
它的性能不断提高,适用的范围越来越强,在计算机应用邻域已占有日益重要的作用。
单片计算机简称为微机或单片机,有称微控制器。
它是在一快半导体芯片上,集成了CPU、ROM、RAM、I/O接口,定时器/计数器,中断系统等功能部件,构成了一台完整的电子计算机。
由于集成电路技术的进步,片内甚至还可以包含HSO、HIS、A/D转换器、PWN等称为“片内外设”的特殊功能部件。
随着单片机功能的增强,由单片机构成的计算机应用系统的功能也日益增强它一样可以配用打印机、绘图仪、CRT等外围设备。
配合大功率晶体管的运用、有了波形发生器,扩展了在电气传动邻域的应用等。
这进一步深化了单片机在工业控制、自动检测、智能仪器仪表、家用电器邻域的突出地位,并使它不断阔宽应用范围,增添了新的活力。
单片机的运用结束了计算机专业人员的“垄断”计算机系统开发与运用的时代,它既给各种专业人员、特别是许多的工程技术人员带来了学习和掌握计算机技术的紧迫性,同时也带来了可能性,因为计算机运用系统变的容易。
遥控技术是通过一定的手段对被控物体实施一定距离的控制,常用的方式有无线电遥控、有线遥控、红外线和超声波遥控等。
此设计实现红外线遥控信号的读码,对信号的编码进行显示。
遥控发射器专用芯片很多,根据编码格式可以分成脉冲宽度调制和脉冲相位调制两大类,这里我们以运用比较广泛,解码比较容易的脉冲宽度调制来加以说明。
现以日本NEC的uPD6121G组成发射电路为例说明编码原理。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。
这样即可用单片机的延时来判断编码为“1”还是为“0”,进而可实现用二进制读出编码信息,再送数码管进行显示。
此外还对遥控过程进行开始、暂停、停止、复位操作。
2MCS-51单片机结构功能
2.1单片机的主要功能
MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片机。
主要有8031、8051、8751等机型,它们的指令系统与芯片引脚完全兼容,仅片内ROM不同。
51系列主要功能有:
1、8位CPU
2、片内带振荡器,振荡频率fosc范围为1.2-12MHz
3、128个字节的片内数据存储器
4、4K字节的程序存储器(8031无)
5、程序存储器的寻址范围为64K(0000H-FFFFH)
6、片外数据存储器的寻址范围为64K
7、21个字节专用寄存器
8、4个8位并行I/O接口:
P0、P1、P2、P3
9、1个全双工串行I/O接口,可多机通信
10、2个16位定时器/计数器
11、中断系统有5个中断源,可编程为两个优先级
12、111条指令、含乘法指令和除法指令
13、有强的位寻址、位处理能力
14、片内采用单总线结构
15、用单一+5V电源
2.2芯片引脚描述
HMOS制造工艺的MCS-51单片机都采用40引脚的直插封装(DIP方式),制造工艺为CHMOS的80C51/80C31芯片除采用DIP封装方式外,还采用方型封装工艺,引脚排列如图。
其中方型封装的CHMOS芯片有44只引脚,但其中4只引脚(标有NC的引脚1、12、23、34)是不使用的。
在以后的讨论中,除有特殊说明以外,所述内容皆适用于CHMOS芯片。
如图2.1,是MCS-51的引脚图。
在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制或与其它电源复用的引脚,32条输入/输出(I/O)引脚。
下面按其引脚功能分为四部分叙述这40条引脚的功能。
图2.1MCS-51单片机芯片引脚图
2.1.1主电源引脚VCC和VSS
VCC——(40脚)接+5V电压;
VSS——(20脚)接地;
2.1.2外接晶体引脚XTAL1和XTAL2
XTAL1(19脚)接外部晶体的一个引脚。
在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。
当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚)接外晶体的另一端。
在单片机内部,接至上述振荡器的反相放大器的输出端。
采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮。
2.1.3控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP
2.1.3.1RST/VPD(9脚):
当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。
推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。
VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。
当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源。
2.1.3.2ALE/PROG(30脚):
当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。
即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。
因此,它可用作对外输出的时钟,或用于定时目的。
然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。
ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。
对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。
2.1.3.3PSEN(29脚):
此脚的输出是外部程序存储器的读选通信号。
在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。
但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。
2.1.3.4EA/VPP(引脚):
当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。
当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。
对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。
对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)。
2.1.3.5输入/输出(I/O)引脚P0、P1、P2、P3(共32根):
①P0口(39脚至32脚):
是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。
②P1口(1脚至8脚):
是准双向8位I/O口。
由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。
P1口能驱动(吸收或输出电流)4个LS型的TTL负载。
对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。
对EPROM编程和程序验证时,它接收低8位地址。
③P2口(21脚至28脚):
是准双向8位I/O口。
在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。
在对EPROM编程和程序验证期间,它接收高8位地址。
P2可以驱动(吸收或输出电流)4个LS型的TTL负载。
④P3口(10脚至17脚):
是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。
P3能驱动(吸收或输出电流)4个LS型的TTL负载。
作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。
作为第二功能使用时,各引脚的定义如表所示。
值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。
下表2.1是各口的第二功能定义
表2.1P3口的第二功能
引脚
线第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入
P3.6
WR(外部数据存储器写脉冲)
P3.7
RD(外部数据存储器读脉冲)
2.3MSC-51硬件结构
MCS-51系列内部结构框图如下图2.3.1所示:
图2.3.1MCS-51硬件电路
含有运算器、控制器、片内存储器、4个I/O接口、串行接口、定时器/计数器、中断系统、振荡器等功能部件,SP堆栈指针寄存器、PSW程序状态字、DPTR数据指针、B寄存器。
MCS-51系列单片机是在一块芯片上集成了CPU,RAM,ROM、定时器/计数器和多功能I/O口等基本功能部件的一台计算机。
单片机必须配备部分外围元件才能使用,其系统核心是单片机芯片。
3红外遥控系统原理及单片机软件解码
3.1红外遥控系统
通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图3.1所示。
发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括光、电转换放大器、解调、解码电路。
图3.1红外线遥控系统框图
3.2遥控发射器及其编码
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理(一般家庭用的DVD、VCD、音响都使用这种编码方式)。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图3.2所示。
图3.2遥控码的“0”和“1”(注:
所有波形为接收端的与发射相反)
上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。
然后再通过红外发射二极管产生红外线向空间发射,如图3.3所示。
图3.3遥控信号编码波形图
UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。
该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。
UPD6121G最多额128种不同组合的编码。
遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。
一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,图3.4为发射波形图。
图3.4遥控连发信号波形
当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个引导码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。
图3.5引导码 图3.6连发码
如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。
3.3遥控信号接收
红外接收头是塑封一体化红外线接收器,它是一种集红外线接收、放大、整形于一体的集成电路,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,没有红外遥控信号时为高电平,收到红外信号时为低电平,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。
接收器对外只有3个引脚:
Out、GND、Vcc与单片机接口非常方便,如图3.7所示。
图3.7
①脉冲信号输出接,直接接单片机的IO口。
②GND接系统的地线(0V);
③Vcc接系统的电源正极(+5V);
3.4 遥控信号的解码
对AT89C51实验板配套的红外线遥控器的解码程序,它可以把红外遥控器每一个按键键值的操作码读出来,并且通过实验板上P1口的8个LED指示出来,以及在数码管上显示,在解码成功的同时并且能发出“嘀嘀嘀”的提示音。
当遥控器上任意一个按键按下超过36ms时,遥控红外发射器芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。
解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.565ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为2.25ms,所以必须根据高电平的宽度区别“0”和“1”。
如果从0.565ms低电平过后,开始延时,0.565ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.565ms长些,但又不能超过1.13ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.13ms+0.56ms)/2=0.85ms最为可靠,一般取0.85ms左右即可。
3.5设计报告电路图
3.5.1硬件电路
此设计使用P2.2口接收红外信号、P0口进行数码显示、P1口LED灯指示,使用P3口对遥控器的读码过程进行简单控制,对遥控进行开始、暂停、停止、复位简单操作。
P2.2口接红外线接收头,并且读入红外编码信号,也控制51软件程序是否开始运行。
图3.8主要硬件电路
单片机P0口接显示数码管,对信号的数据码显示;P1指示数据码信号。
P2.3控制蜂鸣器,解码成功时发出“嘀嘀嘀”的提示音;P2.4-P2.7口控制四位数码管的开关,与程序相协调。
硬件电路中还包括其他部分:
RS232串口电脑通讯接口(如图3.9)、I2C总线接口的E2PROM存储器、ISP在线编程接口以及外接电源供电电路。
51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:
第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。
电子制作实验室网站的提供的带扩展元件的51单片机实验板上已经装配好了全部硬件。
串口通讯
图3.9
的硬件电路如上图所示,我们可以采用以下方法来判断串口是否存在硬件问题,将MAX232的第9脚接地,测量一下串口的第3脚和第5脚之间是否输出10V左右的直流电压?
将MAX232的第9脚接正5V,测量一下串口的第3脚和第5脚之间是否输出-10V左右的直流电压?
这样可以判断MAX232是否完好和串口线的排线压接处是否有接触不良。
3.5.2数码管显示代码
此设计所使用的数码管是共阴极类型的,控制口为“0”时选通该位数码管,反之关闭。
其代码如下(表3.1):
显示数码
二进制代码
16进制代码
0
00101000B
28H
1
11101011B
0EB
2
00110010B
32H
3
10100010B
0A2H
4
11100001B
0E1H
5
10100100B
0A4H
6
00100100B
24H
7
11101010B
0EAH
8
00100000B
20H
9
10100000B
0A0H
A
01100000B
60H
B
00100101B
45H
C
00111100B
3CH
D
00100011B
23H
E
00110100B
34H
F
01110100B
74H
-
11110111B
0F7H
不显示
11111111B
0FFH
表3.1数码管显示代码
3.6软件实现
使用单片机对信号解码的关键是如何识别“0”和“1”,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,从位的定义我们可以发现“0”、“1”均以0.565ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.685ms,所以必须根据高电平的宽度区别“0”和“1”;对信号宽度的区分在单片机中可以使用延时程序实
现。
这就要求准确调用延时区分信号的引导码(9ms)、连发码(2.25ms)、起始码(9ms)、结束码(2.25ms)以及有效编码段(36ms-72ms),这也是解码成功与否的关键。
此设计主要调用三个延时程序:
882微秒延时(DELAY882)、1000微秒延时(DELAY1000)、2400微秒延时(DELAY2400)子程序,初值分别为:
202、229、245。
程序中在对各种类型码进行判断时灵活调用上述三个延时程序来实现。
为了进一步准确的区分各种类型码,程序中使用了控制(A1、A2、A3、A4)、跳转(IR-GOTO、IR-ERROR、IR-RP等)和判断指令。
其程序流程图如图3.10所示:
图3.10程序流程图
设计源程序:
K1EQUP3.4
K2EQUP3.5
K3EQUP3.6
K4EQUP3.7
ORG0008H
MAIN:
MOVP2,#00000000B
MOVP0,#28H
JNBK1,A1;STOP,停止
JNBK2,A2;RESTART,重新开始
JNBK3,A3;ZERO,复位
JNBK4,A4;PAUSE,暂停
A1:
MOVP2,#11110000B
JNBK1,A2
A2:
JNBP2.2,IR
A3:
MOVP2,#00000000B
MOVP0,#3FH
LCALLDELAY2400
JNBK2,A2
A4:
LCALLxshi
JNBK2,A2
RET
JNBP2.2,IR;遥控扫描
LJMPMAIN;在正常无遥控信号时,一体化红外接收头输出是高电平,程序一直在循环。
IR:
MOVR6,#10;以下对遥控信号的9000微秒的初始低电平信号的识别
IR_SB:
ACALLDELAY882
JBP2.2,IR_ERROR
DJNZR6,IR_SB
JNBP2.2,$
ACALLDELAY2400
JNBP2.2,IR_Rp
ACALLDELAY2400
MOVR1,#1AH
MOVR2,#4
IR_4BYTE:
MOVR3,#8
IR_8BIT:
JNBP2.2,$
LCALLDELAY882
MOVC,P2.2
JNCIR_8BIT_0
LCALLDELAY1000
IR_8BIT_0:
MOVA,@R1
RRCA
MOV@R1,A
DJNZR3,IR_8BIT
INCR1
DJNZR2,IR_4BYTE