基于STC89C52单片机的红外遥控系统Word文档下载推荐.docx
- 文档编号:20581218
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:34
- 大小:154.44KB
基于STC89C52单片机的红外遥控系统Word文档下载推荐.docx
《基于STC89C52单片机的红外遥控系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于STC89C52单片机的红外遥控系统Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
二单片机系统开发与应用工程实习要求及相关知识
2.1单片机系统开发与应用工程实习的重要意义
单片机是计算机技术、大规模集成电路技术和控制技术的综合产物。
现在,凡是电脑控制的设备和产品,必有单片机嵌入其中,它早已成为人类生活中不可或缺的助手。
单片机体积小、重量轻,具有很强的灵活性而且价格便宜。
单片机主要用于工业环境的实时控制、智能化仪器仪表、家用电器等各个不同的领域。
不同领域对单片机的使用有不同的要求,诸如环境温度、湿度、电源波动、电磁场扰动、噪声、冲击、红外遥控等等,都直接影响着单片机应用系统的总体设计。
无论哪一种单片机应用系统,在总体设计中都必须把工作环境的制约当作重要因素对待。
单片机应用系统设计不但要熟练掌握单片机程序语言和编程技术,而且还要具备扎实的单片机硬件方面的理论和实践知识。
2.2预期目标
设计一种基于AT89S52单片机控制的红外线遥控器,具有以下功能:
(1)适用于编码式红外线遥控型家用电器;
(2)可遥控多台家用电器;
(3)具有一个学习/控制复用键;
(4)可通过一个设备选择键和各个功能控制键实现对多台设备的常用功能的学习和控制;
(5)成本低,抗干扰能力强。
2.3单片机相关知识
(1)本次实习所使用的单片机是Atmel公司的STC89C52芯片,此芯片的功能强大,可以实现我们日常生活中接触到的大部分家电的自动控制功能和实现对家电的远程遥控。
STC89C52的引脚图如2-1所示:
图2-1STC89C52引脚图
单片机最小系统如下图所示:
图2-2单片机最小系统
(2)单片机最小系统的复位电路
由电容串联电阻构成,由图并结合“电容电压不能突变"
的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计,可以参考电路分析相关书籍.
图2-3单片机最小系统复位电路
(3)单片机最小系统的晶振电路
单片机的时钟电路由振荡电路和分频电路组成,其振荡电路由反相器以及并联外接的石英晶体和电容组成,用于产生振荡脉冲。
分频电路用于把振荡脉冲分频,以的到所需要的时钟信号。
振荡电路如图2-2所示:
图2-3单片机最小系统晶振电路
其输入端为引脚XTAL1,输出端为引脚XTAL2。
通过这两个引脚在芯片外并接石英晶体振荡器和两只电容,石英晶体为一感性原件,与电容构成振荡回路,为片内放大器提供正反馈和振荡的相移条件,从而构成一个稳定的自激振荡器。
振荡器的频率主要取决于晶体的振荡频率,一般晶体可在1.2~12MHz之间任选,电容C1、C2可在5~30pF之间选择,电容的大小对振荡频率有微小的影响,可起频率微调作用。
振荡脉冲经二分频后作为系统的时钟信号,时钟信号经过三分频产生ALE信号,ALE信号用于控制把P0口的低8位地址送入锁存器锁起来,以实现低地址和数据的分时传送,ALE还可作为外部时钟或外部脉冲使用。
时钟信号经六分频得到机器周期信号。
(4)中断系统
A中断的概念
当CPU与外设交换信息时,由于外设的速度比较慢,若用查询的方式,则CPU就要浪费很多时间去等待外设。
这样就存在一个快速的CPU与慢速的外设之间的矛盾。
为了解决这个问题,就发展了中断的概念。
CPU正在处理某一程序时,发生了另一突发事件请求CPU迅速去处理(中断发生);
CPU暂时停止当前的工作,转到需要处理的中断源的服务程序的入口(中断响应),一般在入口处执行一跳转指令转去处理中断事件(中断服务);
待CPU将中断事件处理完毕后,再回到原来程序被中断的地方继续处理执行程序(中断返回),这一处理过程称为中断。
51单片机的中断系统提供5个中断源:
外部中断0和外部中断1,定时/计数器(T0)和(T1)的溢出中断,串行接口的接收和发送中断。
本程序中只用到了外部中断1。
B中断控制
1中断允许寄存器IE(A8H)
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器(IE)控制的。
IE各位的定义如表2-2所示:
表2-1
位地址
0AFH
0AEH
0ADH
0ACH
0ABH
0AAH
0A9H
0A8H
位符号
EA
/
ES
ET1
EX1
ET0
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)
各中断的优先级通过中断优先级控制寄存器IP来设定,其未定义及位地址如表2-3所示:
表2-2
0BFH
0BEH
0BDH
0BCH
0BBH
0BAH
0B9H
0B8H
PS
PT1
PX1
PT0
PX0
PX0——外部中断0优先级设定位;
PT0——定时中断0优先级设定位;
PX1——外部中断1优先级设定位;
PT1——定时中断1优先级设定位;
PS——串行中断优先级设定位。
C定时器控制寄存器(TCON)
该寄存器用于保存外部中断请求以及定时器的计数溢出。
进行字节操作时,寄存器地址为88H。
按位操作时,各位的地址为88H~8FH。
寄存器的内容及位地址表示如表2-4所示:
表2-3
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
位符号
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
IE0和IE1——外中断请求标志位。
当CPU采样到INT0(或INT1)端出现有效中断请求时,IE0(IE1)位由硬件置“1”。
当中断响应完成转向中断服务程序时,由硬件把IE0(或IE1)清零。
TR0和TR1——定时器运行控制位:
TR0(TR1)=0定时器/计数器不工作
TR0(TR1)=1定时器/计数器开始工作
TF0和TF1——计数溢出标志位。
当计数器产生计数溢出时,相应的溢出标志位硬件置“1”。
并自动产生定时中断请求。
(5)液晶显示模块
1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图所示:
图2-41602LCD尺寸图
1602LCD主要技术参数:
显示容量:
16×
2个字符芯片工作电压:
4.5—5.5V
工作电流:
2.0mA(5.0V)模块最佳工作电压:
5.0V
字符尺寸:
2.95×
4.35(W×
H)mm
引脚功能说明:
1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表所示:
编号
符号
引脚说明
1
VSS
电源地
9
D2
数据
2
VDD
电源正极
10
D3
3
VL
液晶显示偏压
11
D4
4
RS
数据/命令选择
12
D5
5
R/W
读/写选择
13
D6
6
E
使能信号
14
D7
7
D0
BLA
背光源正极
8
D1
16
BLK
背光源负极
表2-4:
引脚接口说明表
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光源正极。
第16脚:
背光源负极。
(6)声音提示模块
该设计有声音报警,当有病人呼叫时,蜂鸣器就会大声提示,直到护士应答回复,才会停止鸣叫,控制引脚接在P3.4引脚上,利用三极管当做开关电路可以保护单片机,还可以起到放大电流的作用,当三极管基极为高电平时,发射极截止,为低电平时,发射极导通。
报警模块如图2-5所示。
图2-5声音提示模块
三系统硬件设计
3.1红外遥控系统
通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。
发射部分包括键盘矩阵、编码调制、LED红外发送器;
接收部分包括光、电转换放大器、解调、解码电路。
如图所示:
3.2遥控发射器及其编码
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以兼容NEC的uPD6121G芯片发射码格式的芯片组成发射电路为例说明编码原理。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
这种遥控码具有以下特征:
采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;
以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图所示:
上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。
然后再通过红外发射二极管产生红外线向空间发射,如图所示:
UPD6121G产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。
芯片厂商把用户识别码固定为十六进制的一组数;
后16位为8位操作码(功能码)及其反码。
UPD6121G最多额128种不同组合的编码。
遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。
一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,图4为发射波形图。
当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。
如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。
3.接收器及解码
一体化红外线接收器是一种集红外线接收和放大于一体,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,而体积和普通的塑封三极管大小一样,它适合于各种红外线遥控和红外线数据传输。
红外接收头将38K载波信号过虑,得到与发射代码反向接收代码,如图:
(1)
解码的关键是如何识别“0”和“1”,
从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度
区别“0”和“1”。
如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。
(2)
根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才能读码。
四电路框图设计
4.1遥控发射单元的框图设计
遥控发射单元由单片机最小系统和按键电路、红外发射器电路等组成,遥控发射单元框图如图所示:
电源电路
图4-1红外遥控单元发射框图
4.2遥控接收单元的框图设计
遥控接收单元由单片机最小系统和红外接收器、控制对象电路等组成,遥控接收单元框图如图3-2所示:
晶振电路
图4-2红外遥控接收单元框图
五电路原理图及程序流程图
5.1遥控发射单元原理图
遥控发射单元由单片机最小系统和按键电路、红外发射器电路等组成,遥控发射单元原理图如图5-1所示。
图5-1遥控发射单元原理图
5.2遥控接收单元原理图
遥控接收单元由单片机最小系统和红外接收器、控制对象电路等组成,遥控接收单元原理图如图5-2所示。
图5-2遥控接收单元原理图
5.3总PCB图如图5-3所示:
图5-3总PCB图
5.4红外遥控程序流程图
(1)程序开始是对单片机进行初始化设置,循环扫描判断是否有键按下,如果有键按下就发射相应的红外信号,遥控发射程序流程图如图5-4所示:
图5-4遥控发射程序流程图
(2)程序开始是对单片机进行初始化设置,循环扫描判断是否有键按下,如果有键按下就发射相应的红外信号,遥控发射程序流程图如图5-5所示,
中断
延时
有开始脉冲?
接收红外
执行相应功能
中断返回
Y
N
5.5实物图
程序附录1:
/***************************************************************
名称:
红外线遥控发射(NEC编码)单片机:
STC89C52RC晶振:
12M
***************************************************************/
#include<
REG51.h>
#include"
MY_SET.h"
LCD1602_6IO.h"
#defineKEY_PORTP1
#defineKEY_NULL80
sbitIR=P2^0;
//发射引脚
//sbitLED1=P2^0;
sbitLED2=P2^1;
sbitLED3=P2^2;
sbitLED4=P2^3;
sbitKEY1=P1^0;
sbitKEY2=P1^1;
sbitKEY3=P1^2;
sbitKEY4=P1^3;
sbitKEY5=P1^4;
#defineUSER_HP2//用户码高8位
#defineUSER_LP0//用户码低8位
Uint8tab[16]={0x12,0x05,0x1e,0x55,0x01,0x1b,0x03,0x6b,0x07,0x08,0x09,0x68,0x22,0xE6,0x33,0xe2};
//操作码
uint16M=0;
#definem9(65536-9000)//9mS
#definem4_5(65536-4500)//4.5mS
#definem1_6(65536-1650)//1.65mS
#definem_56(65536-560)//0.56mS
#definem40(65536-40000)//40mS
#definem56(65536-56000)//56mS
#definem2_25(65536-2250)//2.25mS
voidSanZhuan();
uint8KEY(void);
voidZZ(uint8x);
//NEC编码发送程序
voidZ0(uint8temp);
//单帧(8位数据)发送程序
voidTT0(bitBT,uint16x);
//38KHz载波发射+延时程序
charkeyscan();
voiddelayk();
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
函数:
主程序
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
voidmain(void)
{
ucharm;
TMOD=0x01;
IE=0x81;
//允许总中断中断,使能INT0外部中断
TCON=0x01;
//触发方式为脉冲负边沿触发
IRIN=1;
//I/O口初始化
BEEP=1;
IR=1;
delay1(10);
//延时
lcd_init();
//初始化LCD
lcd_pos(0);
//设置显示位置为第一行的第1个字符
m=0;
while(cdis1[m]!
='
\0'
)
{//显示字符
lcd_wdat(cdis1[m]);
m++;
}
lcd_pos(0x40);
//设置显示位置为第二行第1个字符
while(cdis2[m]!
{
lcd_wdat(cdis2[m]);
//显示字符
while
(1){if(LED4==0){IE=0x00;
}
else{IE=0x81;
SanZhuan();
独立键盘
uint8KEY(void)
{
uint8Key=0xff;
if(KEY1==0)
{Key=0;
}//LED1=~LED1;
if(KEY2==0)
{Key=1;
LED2=~LED2;
if(KEY3==0)
{Key=2;
LED3=~LED3;
if(KEY4==0)
{Key=3;
if(KEY5==0)
{LED4=~LED4;
returnKey;
//返回键值
散转程序
voidSanZhuan()
uint8v;
//TMOD=0x01;
//v=KEY();
//键盘检测
v=keyscan();
switch(v)
case0:
ZZ(tab[0]);
break;
case1:
ZZ(tab[1]);
case2:
ZZ(tab[2]);
case3:
ZZ(tab[3]);
case4:
ZZ(tab[4]);
case5:
ZZ(tab[5]);
case6:
ZZ(tab[6]);
case7:
ZZ(tab[7]);
case8:
ZZ(tab[8]);
case9:
ZZ(tab[9]);
case'
*'
:
Z
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STC89C52 单片机 红外 遥控 系统