学习型红外线遥控器的设计
课程设计报告
单片机原理及应用
: 学习型红外线遥控器的设计
电子信息工程
:
:
:
指导教师签名: 年 月 日
0.2 1、设计过程中出勤、学习态度等方面
2、课程设计质量与答辩 0.5
3、设计报告
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
写及图纸
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
程度 0.3
总 成 绩 教研室审核意见:
教研室主任签字: 年 月 日 教学系审核意见:
主任签字: 年 月 日
2
摘 要
当今社会科学技术的发展与日俱增,人们的生活水平也是日益提高,为了减
少人的工作量,所以对各种家用电器、电子器件的非人工控制的要求也是越来越
高,针对这种情况,设计出一种集成度比较高的控制体系是必然的。单片机的集
成度很高,它具有体积小、质量轻、价格便宜、耗电少等突出特点,尤其耗电少,
又可使供电电源体积小、质量轻。本课程设计介绍了基于单片机的一种学习型万
能遥控器的设计与实现,可以对各种红外线遥控器发射的信号进行识别、存储和
再现等功能,从而实现对各类家电的控制。学习型万能遥控器由单片机、红外线
接收、红外线发射、显示、存储、按键和欠电压指示等部分组成。本设计详细介
绍了学习型万能遥控器的软硬件设计方法,并给出了具体的各单元电路设计、程
序设计及主程序流程图。在硬件设计中,我们选取STC89C52型号单片机为核心器件,并给出外围电路模块如红外接收模块、红外发射模块、显示模块、以及外部
控制模块等组成部分的设计实现。软件部分采用keil进行C程序设计与编译,并将编译后产生的hex文件通过STC_ISP_V479下载到单片机中,进行调试。本学习
型遥控器采用最小化应用模式设计,电路简单,尤其是通过大量不同遥控码的特
征分析,在遥控码的读入时选择了最佳采样间隔,使遥控码的学习成功率大大提
高。
关键词:遥控学习;红外解码;单片机控制;红外遥控
3
目 录
设计要求............................................................ 1
前言................................................................ 1
1、
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
论证......................................................... 1
2、基本功能模块设计与说明........................................... 2
2.1.初始化模块 .................................................. 2
2.2遥控码读入处理模块........................................... 2
2.3遥控码发射处理模块........................................... 3
2.4 主模块 ...................................................... 3
3、调试与操作说明................................................... 4
3.1学习型红外遥控器的电路原理图的设计.......................... 4
3.2 程序的编译及下载 ........................................... 6
3.3实际电路的测试.............................................. 7
4、课程设计心得体会................................................. 7
5、元器件及仪器设备明细............................................. 9 6、参考文献........................................................ 10
7、致谢............................................................ 11
8、附录............................................................ 12
4
学习型红外遥控器的设计
学习型红外线遥控器要求可以学习不同遥控器的某个按键码功能。使用时先
用原遥控器对着学习器按一下某操作键,学习器就可以实现原遥控器中该键的遥
控功能。
本课程设计是一个基于单片机的学习型红外遥控器,能够学习不同遥控器的
某个按键功能。利用单片机STC89C52对多个红外遥控编码的脉冲宽度进行测量,
并原封不动地把发射信号中高、低电平的时间宽度记忆至扩展存储区的指定地
址。当要发射红外信号时,从扩展存储区中还原出相应的红外遥控编码,并调制
到40KHz的载波信号上,最后,通过三极管放大电路驱动红外发光二极管发射红
外信号,达到学习和发射的目的,从而实现一个遥控器控制多种红外遥控设备。
为了实现遥控码的记录还原功能,系统应具有红外线的接收解码、红外线调
制发射、操作按键和功能控制功能等单元。由于功能定为学习一个遥控器按键的
遥控功能,因此决定采用STC89C52单片机作为控制器。STC89C52单片机中具有256
字节的内存单元,可存储遥控码脉宽的数据。遥控码的脉宽数据可用红外线接收
器解码后送单片机读入,发射时有单片机产生40kHZ红外调制信号送红外发射管发射.单键学习型红外遥控器的实现方案框图如图1所示。
图1 单键学习型红外遥控器系统框图
2
2.1.初始化模块
初始化模块的主要任务时清存放脉宽数据单元,关闭学习及发射指示灯,关
闭遥控输出口,将定时器T1设为8位自动重装模式,设置中断。 2.2遥控码读入处理模块
遥控码的学习处理程序主要是将原遥控器发出的脉冲码宽依次存入内存单
元,存放规则为偶数地址(0、2、4、6等)存放高电平脉宽数据,奇数地址(1、3、5等)存放低电平脉宽数据。定义文件中划了206个单元用于存放脉宽数据,
符合常用遥控器的最大码长要求。遥控码读入程序流程图如图2所示。 本程序在编程设计中非常重要,通过大量的、不同中来的遥控码波形实验测试分
析,遥控码的帧间歇位宽度均在10ms以上,起始码宽度在100us~20ms之间,编码位在100us~3.5ms之间。为确保所有遥控器学习的成功,可采用以下程序实现方
法。
读起始位方法:由于起始位的码宽范围较大,因此计数单元采用单独的2字节,计数周期约为15us,这样按65536*15us算,最大可存起始位脉宽为983ms。当
2
输入为高电平时,停止起始位计数,进入高电平计数。
读遥控码的方法:采用1字节计数单元对吗(高电平或低电平)进行宽度计
数,电平跳变时结束计数,并将数据存入规定的地址。在高电平码计数时,当计
数值大于255时(宽度大于3.825ms),则判定为结束帧间隔位,在相应存储单元
写入数据0xOO作为结束标志。
2.3遥控码发射处理模块
遥控码发射程序将原存于内存单元的脉冲数据还原成40KHZ方波,利用定时/计数器T1中断功能产生40KHZ载波,调制波从P3.5脚送出。利用原读入时的低电
平持续时间控制产生40KHZ方波的时间,而原读入时为高电平的脉宽数据将作为
停发40KHZ方波的持续时间控制。遥控码发射处理程序图如图3所示。 2.4 主模块
主程序在完成上电初始化后进行按键查询,当确认有键按下时将编码发出
去。主程序流程图4所示
3
图2遥控码读入程序流程图 图3遥控码发射处理程序图 图4主程序流程图 3.1学习型红外遥控器的电路原理图的设计
图5所示为该学习机遥控器的电路原理图,单片机使用STC89C52。其中:
P1.2口接遥控器发射按键;
P1.6口用作状态指示,绿灯亮代表学习状态,绿灯灭代表码已读入;
P1,7口用作指示遥控键的操作,闪烁代表遥控码正在发射之中; 第9脚为单片机的复位脚,采用RC上电复位电路;
第12脚为单片机中断输入口,用于工作方式的转换控制,当INT0脚为低电平时,
4
系统进入学习状态;
第14脚用于红外线接收解码器的输出信号输入
第15脚作为遥控码红外调制信号的输出口,输出40KHZ的方波脉冲; 第18、19脚接12M晶振。
由于采用最小化应用系统,因此控制线PSEN(片外取指控制)、ALE(地址锁存控制)不用,EA(片外存储器选择)接高电平,使用片内程序存储器。
红外线接收器使用市场上用于电视机的三端一体化红外接收解调器,三极管
可用9013系列,红外线发射二极管也用普通遥控器中使用的器件。
图5 单键遥控码学习控制器电路原理图
5
3.2 程序的编译及下载
1、创建工程并选择AT89C52型号芯片。
2、新建remote.c文件。
3、编写源程序并编译,如图6所示。
图6学习型遥控器的程序编译图
3、打开STC-ISP下载软件,选择STC89C52RC型号的芯片,选择串口1并导入编译生成的hex文件。
4、将单片机与计算机的串口相连,并将程序下载至单片机,如图7所示。
6
图7学习型红外遥控器程序下载图
3.3实际电路的测试
程序下载进单片机后,打开单片机开发板上电源接口开关以及P1口电源切换开关,按下中断0控制键,待绿色的流水灯亮后,将电视遥控器对准单片机开发
板上的红外接收头按下某个按键,当绿灯熄灭时,此时代表学习完成了,然后关
闭PI口电源切换开关按下单片机开发板上的发射键对电视机进行遥控操作。测试
可知,本次设计的学习型遥控器完全符合要求,达到了预期目的。 4、课程设计心得体会
本次课程设计的基于单片机学习型红外遥控器,在keil软件上进行了进行C程序的设计、编译,并将输出的的hex文件通过STC_ISP_V479下载到单片机中,最后在单片机开发板上进行调试,测试硬件电路功能。经过实践验证,本设计是
正确的。测试中,我们选取了电视机的遥控器作为学习对象,通过学习遥控器上
7
某个键的功能,能实现单片机对电视机的控制。达到预期目的, 设计完全成功。本文给出的设计思想也适用于其他基于单片机的系统设计。
我们这次课程设计是通过小组的讨论与实验所完成的,在进行过程中碰到了
一些困难。首先,本次设计是采用keil与STC_ISP_V479软件来完成的。因此对于这两种软件的使用也提出了一定的要求。其次,由于在设计遥控码的码宽时,参
数设置不够恰当,导致单片机无法成功对遥控器的按键功能进行学习。再次,在
硬件电路功能测试过程中,由于实际的单片机开发板的电路连接与本课程设计的
硬件电路不完全一致,导致无法进行调试。通过修改信号输入输出端口,并结合
实际的单片机开发板硬件连接进行外部控制,最终成功实现了学习型遥控器的学
习功能。通过这次实验我们感觉到动手能力及思维方式得到很大的加强。在这次
课程设计中,我们学会了怎样去根据课题的要求运用学过的知识去设计电路和调
试电路。从中我们发现了实践的重要性,在以后的学习中我们要加强理论与实际
的结合。而且这次实验也体现了团队合作的重要性与探索精神的必要性。
8
5、元器件及仪器设备明细
表1 元器件及仪器设备明细表
器件名称 型号/版本 数量 备注
微型计算机 联想 一台
keil软件 一套
STC_ISP_V479软件 一套
单片机开发板 STC89C52 一套
电视机 TCL 一台
电视机遥控器 TCL 一台
9
6、参考文献
[1] 舒经文. 最新彩电机芯及其遥控系统的原理与维修. 北京: 电子工业出版社, 1993 [2] 梁延贵. 遥控电路可控硅触发电路语音电路分册 北京: 科学技术文献出版社,2002 [3] 李华. MCS-51系列单片机实用接口技术. 北京: 航天航空大学出版社,1999 [4] 麦山.基于单片机的
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
红外遥控系统.电子技术: 1998
[5] 何立民.MCS-51系列单片机应用系统设计,系统配置与接口技术.北京:航空航天大学出版社,1995
[6] 刘宁生周哨山.脉冲与数字电路.北京:中国广播电视出版社,1995
[7] 康光华,陈大钦. 电子技术基础(模拟部分).高等教育出版社.1999.6.第四版. [8]李建华. 实用遥控器原理与制作.北京: 人民邮电出版社,1996
10
7、致谢
本次课程设计主要由我们两人共同完成,其间当然老师也同样是付出了大量
的时间和精力来帮助我们。不论结果怎样,我们都会欣然接受,因为我们努力过
了。同时我们也要衷心地感谢我们所有的老师,以及帮助我们的同学,要是没你
们的帮助我们是不能这么好的完成这次课程设计的。
11
8、附录
学习型遥控器C程序清单 #pragma src(E:\remote.asm)
#include "reg51.h"
#include "intrins.h" //_nop_();延时函数用 #define uchar unsigned char
#define uint unsigned int
sbit studylamp=P1^6; //学习状态指示灯 sbit lamp=P1^7; //发射指示灯 sbit studykey=P3^2; //学习键(中断口) sbit remotein=P1^1; //遥控信号输入口 sbit remoteout=P1^0; // 遥控输出口 sbit txkey=P1^2 ; //发射键 uint i,j,m=255,n,k,s;
uchar idata remotedata[206];//存肪冲宽度数据用 uint head; //存起始位用
uint remdata;
/*********1毫秒延时程序**********/
delay1ms(uint t)
{
for(i=0;i
0;i--){;}
remoteout=0;ET1=0;TR1=0;
n=0;
while(1)
{
13
if(remotedata[n]==0x00){delay1ms(10);break;}//数据为0结束
for(i=remotedata[n];i>0;i--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_
nop_();_nop_();_nop_();}
lamp=~lamp;n++;//偶地址不发脉冲
ET1=1;TR1=1; //奇地址发调制脉冲
for(i=remotedata[n];i>0;i--){;}
remoteout=0;ET1=0;TR1=0;n++;
}
}
}
/***********主函数***************/
main()
{
clearmen(); //初始化 while(1)
{
keywork(); //按键扫描
}
}
/*********40KHZ发生器***********/ //定时中断T1
void time_intt1(void) interrupt 3
{
remoteout=~remoteout;
}
/***********学习函数 ***********/
//外中断0
void intt0(void) interrupt 0
{
14
ET1=0;TR1=0;EX0=0;EA=0;
head=0;studylamp=1;lamp=0;
while(studykey==0); //等待键释放
while(remotein==1); //等待遥控码输入
head=0; //读入起始位
while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();head++;}
n=0;remdata=0x0000;
while(1)
{
while(remotein==1){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_no
p_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();remdata++;}
if(remdata>m) //高电平>5毫秒退出
{remotedata[n]=0x00;EX0=1;EA=1;goto end;}
remotedata[n]=remdata;n++; //存高电平脉宽数据
remdata=0x0000; //脉宽计数器清零
while(remotein==0){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_no
p_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();remdata++;} //低
电平计数
remotedata[n]=remdata;n++;remdata=0x00;//存低电平脉宽数据
}
end: lamp=1;studylamp=0;
}
//*********************结束**************************//
15