1、基于单片机的红外线遥控器设计毕业设计姓 名: 专 业: 班 级: 指导教师:课程设计任务书姓 名: 钟思专 业: 自动化 班 级: 1301班 设计课题:基于单片机的红外线遥控器设计指导教师: 电子信息工程系印制二一五年十二月 第一章 红外发射部分1.设计要求与指标红外遥控是目前使用较多的一种遥控手段。功能强、成本低等特点。 系统。设计要求利用红外传输控制指令 及智能控制系统 ,借助 微处理器 强大灵活的控制功能发出 脉冲编码 ,组成的一个遥控系统。本设计的主要技术指标如下:(1) 遥控范围: 0 1 米(2) 显示可控制的通道(3) 灵敏可靠,抗干扰能力强(4) 控制用电器电流最高为 2 A
2、红外遥控的特点是不影响周边环境的、不干扰其他电器设备。由于其无法穿透墙壁,故不同房间的家用电器可使用通用的遥控器而不会产生相互干扰; 多路遥控。红外遥控系统由发射和接收两大部分组成,系统采用编 / 解码专用集成电路和单片机芯片来进行控制操作。设计的电路由几个基本模块组成:直流稳压电源,红外发射电路,红外接收电路及控制部分。发射电路,利用遥控发射利用键盘, 这种代码指令信号调制在 40KH z 的载波上,激励红外光二极管产生具有脉冲串的红外波 ,通过空间的传送到受控机的遥控接收器。2.红外遥感发射系统的设计 红外遥控系统由发射和接收两大部分组成,系统采用编/解码专用集成电路和单片机芯片来进行控制
3、操作。发射系统设计的电路由如下的几个基本模块组成:直流稳压电源,红外发射电路。系统框图如图所示。3.红外发射电路的设计3.1.摇控码的编码格式采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0” ;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合二进制的“1”。3.2遥控码的发射当某个操作按键按下时,单片机先读出键值,然后根据键值设定遥控码的脉冲个数,再调制成 40kHz 方波由红外线发光管发射出去。 P3.5 端口的输出调制波如图 2 2 所示。图2-2单一按键波形图2-2连续按键波形3.3 红外发射电路图 遥控发射
4、通过键盘,每按下一个键,即产生具有不同的编码数字脉冲,这种代码指令信号调制在 40KH z 的载波上,激励红外光二极管产生不同的脉冲,通过空间的传送到受控机的遥控接收器。电路如下图所示。4 调试结果及其分析(1) 电路要求遥控控制距离为 0 1m ,在利用 38KHz 的接收头时,虽然能接收到信号,但是接收的距离很有限。经过反复调试,换用 40KHz 的接收头时基本满足了设计需求。(2) 由于将 3ms 的接收脉冲放在 1ms 的后面,编码解调出现错误,导致接受端无信号输 出。解决方法是将 3ms 的接收脉冲放在前面就可以接收到信号。 单片机进行数码帧的接收处理, 3 ms 的脉冲检验,当第一
5、位低电平码的脉宽小于 2 ms时就会错误处理。在初始化过程中,将 P1 口全置 0 ,但是继电器仍工作,通过反复调试,将初始化的 P1口全置 1 ,通过反向使得输出全为 0 ,从而满足上电复位,继电器掉电,满足初始化要求 。 第二章 红外接受部分1.红外遥控系统的设计 红外遥控系统由发射和接收两大部分组成,系统采用编 / 解码专用集成电路和单片机芯片来进行控制操作。设计的电路由如下的几个基本模块组成:红外发射电路,红外接收电路及控制部分。 1 .系统框图(如图 3 1 所示)2. XTAL2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬
6、浮不连接。 3. 输入 / 输出引脚 P0.0 P0.7 、 P10. P 1 .7 、 P2.0 P2.7 和 P3.0 P3.7 。 P0 端口( P0.0 P0.7 ) P0 是一个 8 位漏极开路型双向 I/O 端口。作为输出口用时,每位能以吸收电流的方式驱动 8 个 TTL 输入,对端口写 1 时,又可作高阻抗输入端用。在访问外部程序和数据存储器时,它是分时多路转换的地址(低8位) / 数据总线, 在访问期间激活了内部的上拉电阻。 P 1 端口( P 1 .0 P 1 .7 ) P 1 是一个带有内部上拉电阻的 8 位双向 I/O 端口。 P 1 的输出缓冲器可驱动(吸收或输出电流方
7、式) 4 个 TTL 输入。对端口写 1 时,通过内部的上拉 电阻把端口拉到高电位,这时可用作输入口。因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 P2 端口 ( P2.0 P2.7 ) P2 是一个带有内部上拉电阻的 8 位双向 I/O 端口。 P2 的输出缓冲器可驱动(吸收或输出电流方式) 4 个 TTL 输入。对端口写 1 时,通过内部的上拉电阻把端口拉到高电位, P2 作输入口使用时,因为有内部的上拉电阻,这时可用作输入口。P2作为输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器和 16 位地址的外部数据存储器 ( 如执行
8、MOVX DPTR 指令 )时, P2 送出高 8 位地址。在访问 8 位地址的外部数据存储器 ( 如执行 MOVX R i , A 指令 )时,P2口引脚上的内容,在整个访问期间不会改变。 P3 端口( P3.0 P3.7 ) P3 是一个带有内部上拉电阻的 8 位双向 I/O 端口。 P2 的输出缓冲器可驱动 ( 吸收或输出电流方式 )4 个 TTL 输入。对端输入口使用时,因为有内部的上拉电阻, 那些被外部信号拉低的引脚会输出一个电流。在 AT89C52 中, P3 端口还用于一些专门功能,这些兼用功能如下:(1) P3.0 RXD (串行输入口)(2) P3.1 TXD (串行输出口)
9、(3) P3.2 /INT0 (外部中断 0 )(4) P3.3 /INT1 (外部中断 1 )(5) P3.4 T0 (记时器 0 外部输入)(6) P3.5 T1 (记时器 1 外部输入)(7) P3.6 /WR (外部数据存储器写选通)(8) P3.7 /RD (外部数据存储器读选通)(9) P3 口同时为闪烁编程和编程校验接收一些控制信号4. 振荡器特性:XTAL1 和 XTAL2 分别为反向放大器,该反向放大器可以配置为片内振荡器。石英震荡和陶瓷震荡均可采用。如采用外部时钟源驱动器件, XTAL2 应不接。 由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何
10、要求,但必须保证脉冲的高低电平要求的宽度。 5. 芯片擦除:整个 PEROM 阵列和三个锁定位的电擦除可通过正确的控制信号组合, ALE 管脚处于低电平 10ms 来完成。在芯片擦操作中,代码阵列全被写 “ 1 ” 且在任何非空存储字节被重复编程以前,该操作必须被执行。主控制器采用ATMEL公司的8位单片机AT89C52。AT89C52是一个低功耗,高性能 CMOS 8位单片机,片内含 8k Bytes ISP(In-system programmable) 的可反复擦写 1000 次的 Flash只读程序存储器,器件采用 ATMEL 公司的高密度、非易失性存储技术制造,兼容标准 MCS -5
11、1指令系统。图3-9:主控制器电路原理图2.系统的功能实现方法2.1摇控码的编码格式采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0” ;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合二进制的“1” ,其波形如图4所示。 图4 遥控码的“1”和“0”红外遥控发射芯片采用 PPM 编码方式,当发射器按键按下后 , 将周期性地发出同一种32位二进制码,周期约为108ms 的编码脉冲。遥控编码脉冲由前导码、16 位地址码(8 位地址码、 8 位地址码的反码)和16 位操作码(8 位操作码、 8 位操作码的反码)组成。通过
12、对用户码的检验,每个遥控器只能控制一个设备动作,这样可以有效地防止多个设备之间的干扰。编码后面还要有编码的反码,用来检验编码接收的正确性,防止误操作,增强系统的可靠性。前导码是一个遥控码的起始部分,由一个 9ms 的高电平 ( 起始码 ) 和一个 4. 5ms 的低电平 ( 结果码 ) 组成,作为接受数据的准备脉冲。 图5 发送一组完整的编码脉冲上述“0”和“1”组成的32位二进制码经38khz的载频进行二次调制以提高发射频率,然后再通过红外发射二极管产生红外线向空间发射。2.2遥控码的发射当某个操作按键按下时,单片机先读出键值,然后根据键值设定遥控码的脉冲个数,再调制成 40kHz 方波由红
13、外线发光管发射出去。 P3.5 端口的输出调制波如图 4 1 所示。 2.3数码帧的接收处理当红外线接收器输出脉冲帧数据时,第一位码的低电平将启动中断程序实时接收 数据帧。在数据帧接收时,将对第一位码的码宽进行验证。若第一位低电平码的 的脉宽小于2ms ,将作为错误码处理。当间隔位的高电平脉宽大于 3ms 时,结束接收,然后根据累加器 A 中的脉冲个数,执行相应输出口操作。图4 2 就是红外线接收器输出的一帧遥控码波形图。3.红外接受电路图在接收过程中,脉冲通过光学滤波器和红外二极管转换为40KHZ的电信号,此信号经过放大,检波,整形,解调,送到解码与接口电路。如图 5 1 所示 。通常,红外
14、遥控器将遥控信号(二进制脉冲码) 调制在40KHz的载波上,经缓冲放大后送至红外发光二极管,产生红外信号发射出去。 将上述的遥控编码脉冲对频率为 40 KHz( 周期为26.3ms) 的载波信号进行脉幅调制 (PAM ) ,再经缓冲放大后送到红外发光管,将遥控信号发射出去。4.软件设计: 本系统的软件程序主要包括主程序、接收解码程序、发射程序、遥控器学习识别程序几个大的模块程序。5.调试结果及分析:本电路总共设计了21个输入按键,其中11个为特殊按键,其他键均为数字键。当输入一个按键0时,通过红外发射和接收电路,对应的继电器 1 的设备工作,液晶显示十六进制代码。当按下按键 1 时,数码管显示
15、不同的十六进制代码 。以此类推09号数字键功能同上,特殊按键,根据按的特殊按键的不同,会实现不同功能,如快进。本设计在调试过程中也遇到很多问题。1. 电路要求遥控控制距离为0 1m ,在利用 38KHz 的接收头时,虽然能接收到信号,但是接收的距离很有限。经过反复调试,换用 40KHz 的接收头时基本满足了设计需求。在初始化过程中,将 P1 口全置 0 ,但是继电器仍工作,通过反复调试,将初始化的 P1口全置 1 ,通过反向使得输出全为 0 ,从而满足上电复位,继电器掉电,满足初始化要求 。6.结论:由于目前的遥控装置大多对某一设备进行单独控制,而在本设计中的红外遥控电路设计了多个控制按键,可
16、以对不同的设备,也可以对同一设备的多个功能进行不同的控制。基本符合技术要求。但是本电路也有不完 , 它只能单通道实现对多个设备的控制 , 即它不能同时控制两个或者两个以上的设备。在设计过程中,通过大量的查阅资料,认真研究材料,对单片机有了更为深刻的理解,在设计软件时,须仔细的分析硬件电路,画出程序流程图,培养了我的耐性和刻苦钻研的精神。参考文献1 全国大学生电子设计竞赛组委会.第五届全国大学生电子设计竞赛获奖作品选编,第 1版,北京理工大学出版社, 2005 年, P10-17.2 康华光,陈大钦.电子技术基础模拟部分,第 4 版,高等教育出版社, 1999 年,第四 版,P 82 - 155
17、 .3 康华光 , 邹寿彬 . 电子技术基础数字部分,第 4 版,高等教育出版,2000 年 , 第四版 ,P 83 - 155 .附录:主程序: #include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include#include#define TURE 1#define FALSE 0sbit IR=P22; /红外接口标志/定义液晶接口sbit RS = P35;/Pin4sbit E = P34;/Pin6#define Data P1/数据端口unsigned int hour,minute,second,count;char code Tab16=01
18、23456789ABCDEF;char data TimeNum= ;char data Test1= ;/*/* 变量声明 */*/unsigned char irtime;/红外用全局变量bit irpro_ok,irok;unsigned char IRcord4; /处理后的红外码,分别是 客户码,客户码,数据码,数据码反码unsigned char irdata33; /33个高低电平的时间数据/*/* 函数声明 */*/void Ir_work(void);void Ircordpro(void);void ShowString (unsigned char line,char *
19、ptr);/*/* 定时器0中断服务函数 */*/void tim0_isr (void) interrupt 1 using 1/定时器0中断服务函数 irtime+; /用于计数2个下降沿之间的时间/*/* 外部中断0函数 */*/void ex0_isr (void) interrupt 0 using 0/外部中断0服务函数 static unsigned char i; /接收红外信号处理 if(irtime=33)/引导码 TC9012的头码,9ms+4.5ms i=0; irdatai=irtime;/存储每个电平的持续时间,用于以后判断是0还是1 irtime=0; i+; i
20、f(i=33) irok=1; i=0; /*/* 屏蔽数码管程序 */*/*/* 定时器0初始化 */*/void TIM0init(void)/定时器0初始化 TMOD=0x02;/定时器0工作方式2,TH0是重装值,TL0是初值 TH0=0x00; /重载值 TL0=0x00; /初始化值 ET0=1; /开中断 TR0=1; /*/* 外部中断初始化 */*/void EX0init(void) IT0 = 1; /指定外部中断0下降沿触发,INT0 (P3.2) EX0 = 1; /使能外部中断 EA = 1; /开总中断/*/* 红外键值处理 */*/ void Ir_work(v
21、oid) /红外键值散转程序 TimeNum5 = TabIRcord0/16; /处理客户码并显示 TimeNum6 = TabIRcord0%16; TimeNum8 = TabIRcord1/16; /处理客户码并显示 TimeNum9 = TabIRcord1%16; TimeNum11 = TabIRcord2/16; /处理数据码并显示 TimeNum12 = TabIRcord2%16; TimeNum14 = TabIRcord3/16; /处理数据反码并显示 TimeNum15 = TabIRcord3%16; ShowString(1,TimeNum);/显示处理过后的码值
22、 irpro_ok=0; /处理完成后清楚标志位 /*/* 红外解码函数处理 */*/void Ircordpro(void)/红外码值处理函数 unsigned char i, j, k; unsigned char cord,value; k=1; for(i=0;i4;i+) /处理4个字节 for(j=1;j7)/大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差 value=value|0x80; else value=value; if(j1; k+; IRcordi=value; value=0; irpro_ok=1;/处理完毕标志位置1 /*/* 微秒
23、延时函数 */*/void DelayUs(unsigned char us)/delay us unsigned char uscnt; uscnt=us1;/* Crystal frequency in 12MHz*/ while(-uscnt);/*/* 毫秒函数声明 */*/void DelayMs(unsigned char ms)/delay Ms while(-ms) DelayUs(250); DelayUs(250); DelayUs(250); DelayUs(250); /*/* 写入命令函数 */*/void WriteCommand(unsigned char c) DelayMs(5);/操作前短暂延时,保证信号稳定 E=0; RS=0; _nop_(); E=1; Data=c; E=0;/*/* 写入数据函数 */*/void WriteData(unsigned char c) DelayMs(5); /操作前短暂延时,保证信号稳定 E=0; RS=1; _nop_(); E=1; Data=c; E=0; RS=0;/*/* 写入字节函数 */*/void ShowChar(unsigned char pos,unsigned char c) unsigned char p
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1