1、单片机系统开发与应用工程实习报告 单片机系统开发与应用工程实习报告 选题名称: 基于STC89C52的学习型红外遥控器的设计 系(院): 专 业: 班 级: 姓 名: 学 号: 指导教师: 学年学期: 2009 ~ 2010 学年 第 2 学期 2014 年 12 月 08 日 15 摘要: 学
2、习型红外线遥控器,通过自学习而拥有对多台电器的遥控功能。该遥控器有两种状态:学习状态和控制状态。处于学习状态时,使用者每按一个控制键红外接收电路就开始接收外来红外信号,并将其转换为电信号,然后经过检波、整形、放大,再由单片机定时对其采样,将每个采样点的二进制数据以8位为一个单位,分别存放到指定的存储单元中去,供以后对该设备控制使用;处于控制状态时,使用者每按一个控制键单片机从指定的存储单元中读取二进制数据,串行输出(位和位之间的时间间隔等于采样的时间间隔)给信号保持电路,同时由调制电路进行信号调制,将调制信号经放大后,由红外线发射二极管进行发射,从而实现对该键对应设备功能的控制。 关
3、键词:学习型;红外线遥控器;学习状态;控制状态;STC89C52 目 录 1 课题综述 1 1.1 课题来源及意义 1 1.2 预期目标 1 1.3 面对的问题 1 1.4 需解决的关键技术 1 2 系统分析 1 2.1 涉及的基础知识 1 2.2 解决问题的基本思路 2 2.3 总体方案 3 2.3 功能模块框图 3 3 系统设计 4 3.1电路原理图 4 3.2实现方法 5 3.3 详细流程图 5 4 代码编写 6 4.1 STC89C52单片机与各模块电路的连接端口分配 6 4.2 复位电路的设计 6
4、4.3 按键电路设计的实现 7 4.4 中断程序的实现 8 4.5 主函数的实现 10 5 程序调试 10 6 运行与测试 11 总 结 12 参考文献 13 1 课题综述 1.1 课题来源及意义 目前,人们的物质文化生活水平日益提高,各种各样的家用电器走进了千家万户,其中,大多数的家用电器都有各自不同的遥控器,人们常常为了控制某台电器到处寻找其对应的遥控器,这样就给人们的生活带来了很多步便。为了解决这个问题,笨项目提出了一个多功能遥控器的设计方案:该遥控器可以通过自学习而拥有对多台电器的遥控功能,既省时又省力,从而使人们免除同时面对众多遥控器的苦恼。 1.2 预期
5、目标 设计一种基于STC89C52单片机控制的红外线遥控器,具有以下功能: 1、适用于编码式红外线遥控型家用电器 2、可遥控多台家用电器 3、具有一个学习/控制复用键 4、可通过一个设备选择键和各个功能控制键实现对多台设备的常用功能的学习和控制 5、成本低,抗干扰能力强 1.3 面对的问题 1、对于STC89C52单片机的了解及应用 2、对于抗干扰能力的解决 1.4 需解决的关键技术 本项目是通过扫描按键的状态、单片机外中断0和定时/计数器程序来判断遥控器处于什么状态,实现什么功能,因此,对于功能键的设计和中断程序的设计是难点。同时,对于红外发射和红外接收的工作原理和设计
6、对于我们来说也是陌生的,都要从头开始,对其进行了解、掌握及使用,所以也是一个难题。 2 系统分析 2.1 涉及的基础知识 通过对本项目的了解,为了实现该项目的各个功能,必须要掌握以下知识点: 1、电源原理及设计 2、单片机复位电路工作原理及设计 3、单片机晶振电路工作原理及设计 4、按键电路的设计 5、驱动74LS07的特性及使用 6、一体化红外遥控接收器的特性及使用 7、STC89C52单片机引脚 8、单片机C语言程序设计 2.2 解决问题的基本思路 2.2.1 STC89C52单片机的基本知识 功能特性:STC89C52是一种低功耗、高性能CMOS8位微控制器,
7、具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得STC89C52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 STC89C52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口, 片内晶振及时钟电路。另外,STC89C52 可降至0Hz
8、静态逻 辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K 字节在系统可编程 Flash STC89C52。 主要性能:与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:0Hz~33Hz 、 三级加密程序存储器 、32个可编程I/O口线 、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、
9、掉电标识符。 图2-1 STC89C52引脚图 2.2.2 对于抗干扰能力的解决 该项目中采用一体化红外遥控接收器HX1838,该接收器的内部包括红外光敏二极管、谐振电路、放大电路、解码器、滤波器等,其工作电压为+5V,输出引脚直接输出不带副载波的负极性RC-5V信号,具有电路简单、灵敏度高、抗干扰性好等优点。 2.3 总体方案 学习型红外线遥控器,通过自学习而拥有对多台电器的遥控功能。该遥控器有两种状态:学习状态和控制状态。处于学习状态时,使用者每按一个控制键红外接收电路就开始接收外来红外信号,并将其转换为电信号,然后经过检波、整形、放大,再由单片机定时
10、对其采样,将每个采样点的二进制数据以8位为一个单位,分别存放到指定的存储单元中去,供以后对该设备控制使用;处于控制状态时,使用者每按一个控制键单片机从指定的存储单元中读取二进制数据,串行输出(位和位之间的时间间隔等于采样的时间间隔)给信号保持电路,同时由调制电路进行信号调制,将调制信号经放大后,由红外线发射二极管进行发射,从而实现对该键对应设备功能的控制。 2.3 功能模块框图 遥控器由红外接收及红外发射电路、复位电路、控制器STC89C52、按键及状态指示电路组成,其组成框图如图2-1所示。 STC89C52 控 制 器 红外接收电路
11、 状态指示电路 复位电路 电源电路 红外发射电路 图2-2基于STC89C52学习型红外线遥控器系统框图 3 系统设计 3.1电路原理图 控制芯片选择STC89C52单片机,控制系统按最小化工作模式设计,P1.0接红外线发射,P1.6和P1.7接两个发光二极管用来指示遥控器的工作状态,P3.4和P3.5用来接收和发射红外线。红外接收采用一体化红外遥控接收器(HX1838)。其原理图如图3-1所示。 图3-1 基于STC89C52学习型红外遥控器原理图 3.2实现方法 当红外遥控器的某个按键按下时,发射出的一组串行二进制编码脉冲,
12、该脉冲由引导码、系统码、功能码和反码组成,通过设置这些编码以及码长便可区分不同的红外遥控器。红外接收器负责红外信号的接收和放大并解调出TTL电平信号送至微处理器进行处理,微处理器通过比较和识别接收来的红外遥控编码便可执行相应的遥控功能,本系统的设计思想是不考虑红外编码方式,仅利用单片机STC89C52对多个红外遥控编码的脉冲宽度进行测量,并原封不动地把发射信号中高、低电平的时间宽度记忆至存储区的指定地址。当要发射红外信号时,从存储区中还原出相应的红外遥控编码,并调制到38kHz的载波信号上,最后,通过74LS07驱动发光二极管发射红外信号,达到学习和发射的目的,从而实现一个遥控器控制多种遥控设
13、备的功能。 3.3 详细流程图 在程序中主程序完成初始化、按键扫描和调用信号发射程序的功能,学习功能通过中断0来完成。程序的具体流程图如图3-2所示。 Y 结束? 中断开始 开学习指示灯 等待键释放 读遥控码 存学习标志,关指示灯 结束 N Y 开始 初始化 扫描按键? 信号发射 N (a)主程序流程图 (b)中断程序流程图 图3-2 基于STC89C52学习型红外线遥控器程序流程图 4 代码编写 4.1 STC89C52单片机与各模块电路的连
14、接端口分配 P1.6和P1.7分别接学习灯指示灯和发射指示灯 sbit studylamp=P2^7;//学习指示灯 sbit lamp=P2^6;//发射指示灯 sbit studykey=P3^2;//学习键(中断口) sbit remotein=P1^1;//遥控信号输入口 sbit remoteout=P1^2;//遥控信号输出口 sbit txkey=P1^0;//发射键 4.2 复位电路的设计 复位电路实现的是对单片机以及整个电路的初始化 uint i,j,n;//定义各个变量 uint idata FH[55]; //存脉冲宽度高电平数据用
15、uint idata FL[55]; //存脉冲宽度低电平数据用 uint head,head2;//存起始位用 clearmen()//初始化函数 { studylamp=1;//关学习指示灯 lamp=1;//关发射指示灯 remoteout=1;//关遥控输出 remotein=1; head=0; //起始位1 清0 head2=0; //起始位2 清0 for(i=0;i<55;i++)//清内存 { FH[i]=0x0000; FL[i]=0x0000; } IE=0x00;//中断允许控制寄存器置0 IP=0x01;
16、//定义中断优先级
TMOD=0x21;//8位自动重装模式和定时器0为16位模式
TCON=0x00;//定时器溢出位清零
TH1=0xf3;//40khz初值
TL1=0xf3;
IT0=1;//脉冲触发方式,负跳变有效
EX0=1;//外中断允许
EA=1;//开总中断
}
定义延时1ms子程序
delay1ms(uint t) //1ms延时子程序
{
for(i=0;i 17、功能键
{
if(txkey==0)
{
delay1ms(100);
if(txkey==0)
{
remoteout=1; //关闭红外输出口
TH0=~head/256;
TL0=~head%256;
ET1=1;TR1=1;// 产生脉冲
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
ET1=0;TR1=0;// 不产生脉冲
remoteout=1; //关闭红外输出口
TH0=~head2/256;
TL 18、0=~head2%256;
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
n=0;
while(1)
{
TH0=~FL[n]/256;
TL0=~FL[n]%256;
ET1=1;TR1=1;// 产生脉冲
lamp=~lamp;
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
ET1=0;TR1=0;// 不产生脉冲
remoteout=1; //关闭红外输出口
19、 TH0=~FH[n]/256;
TL0=~FH[n]%256;
lamp=~lamp;
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
if(FH[n]==0)
{
lamp=0;
break;
}
n++;
}
}
}
}
4.4 中断程序的实现
4.4.1定时器中断T1的服务程序
定时器中断T1的服务程序,实现控制红外发射灯是否发射。当remoteout为低电平时,红外发射处于工作状态,会发出红外信号;当送入的为高电 20、平时,红外发射不工作。
void time_intt1(void) interrupt 3//定时器中断T1
{
remoteout=~remoteout;
}
4.4.2 外中断0的服务程序
外中断服务程序实现的是接收遥控器发射的红外信号,判断其高低电平,并存入单片机指定的位置,以供当系统处于学习状态时,该红外遥控器进行学习,并控制家电的使用。
void intt0(void) interrupt 0//外中断0 接收遥控器发射的红外信号,判断其高低电平,并存入单片机指定的位置
{
ET1=0; //关定时器1中断
TR1=0; //关定时器1
EX 21、0=0; //关外部中断0
EA=0; //关总中断
n=0;
head=0; //起始位1 清0
head2=0; //起始位2 清0
for(i=0;i<55;i++)//清内存
{
FH[i]=0x0000;
FL[i]=0x0000;
}
studylamp=0; //学习指示灯亮
lamp=1; //发射指示灯灭
TH0=0x00;
TL0=0x00;
TR0=0;
while(remotein==1);//等待遥控码输入
TR0=1; //启动定时器
while(rem 22、otein==0); //低电平
TR0=0;
head=TH0*256+TL0; //起始位低电平脉宽宽度测量
TH0=0x00;
TL0=0x00;
TR0=1;
while(remotein==1); //高电平
TR0=0;
head2=TH0*256+TL0; //起始位高电平脉宽宽度测量
while(1)
{
TH0=0x00;
TL0=0x00;
TR0=1;
while(remotein==0); //低电平
TR0=0;
FL[n]=TH0*256+TL0; //数据 23、位低电平脉宽宽度测量
TH0=0x00;
TL0=0x00;
TR0=1;
while(remotein==1) //高电平
{
if(TH0>0x0E)
{
goto end;
}
}
TR0=0;
FH[n]=TH0*256+TL0; //数据位高电平脉宽宽度测量
n++; //FH和FL共用一个 n
}
end: FH[n]=0x0000;
studylamp=1; //学习指示灯灭
lamp=0; //发射指示 24、灯亮
TR0=0;
TF0=0;
TH0=0x00;
TL0=0x00;
EX0=1;
EA=1;
}
4.5 主函数的实现
主函数只需调用初始化函数实现电路复位,调用按键函数实现学习、控制功能。
main()
{
clearmen();
while(1)
{
keywork();//按键扫描
}
}
5 程序调试
各个函数实现后,对该函数整体实现,并进行调试了,调试过程中出现了一些低级错误,如变量的书写错误,定义的错误等等,但整体的模块规划设计实现跟设想的还是一样比较完整、正确的,故软件的实现还是比较顺利的。
6 25、运行与测试
本项目设计的是一个多功能红外线遥控器,控制电路板的安装与调试在整个系统研制中占有重要位置,它是把理论付诸实践的过程,也是把纸面设计转变成实际产品的必经阶段。在调试过程中药注意以下几个特点。
(1) 正确使用测量仪器的接地端,仪器的接地端与电路的接地端要可靠连接。
(2) 在信号较弱的输入端,尽可能使用屏蔽线连线,屏蔽线的外屏蔽层要接到公共地线上,在频率较高时要设法隔离连接线分布电容的电影,例如用示波器测量时应该使用使用示波器探头连接,以减少分布电容的影响。
(3) 测量电压所用仪器的输入阻抗必须远大于被测处的等效阻抗。
(4) 测量仪器的带宽必须大于被测量电路的带宽。
26、5) 正确选择测量点和测量。
(6) 认真观察记录实验过程,包括条件、现象、数据、波形、相位等。
(7) 出现故障时要认真查找原因。
在程序调试成功之后,我将该程序烧入STC89C52芯片中,并对整个系统进行了测试。刚开始时,当按下学习键时,其学习指示灯不亮,于是,我用万能表对焊接的状态指示电路进行了测试,最后发现是与单片机的P1.6端口接入处没有焊实。但经焊实后,发现跟我要系统实现的功能还是不完全,于是我又对程序进行了修改,经多次烧写、运行、调试,终于实现了学习型红外线遥控功能。
遥控器在使用时按下学习键,待学习指示灯亮后,用原遥控器对着红外接收头按下某一功能键,当学习指示灯灭时, 27、就可按发射键进行遥控操作了。本设计还有较多的扩展空间,若在系统中扩展一个存储器,再加入相应的按键就可以制作成一个学习型的万能遥控器。
总 结
本次单片机系统开发与应用工程实习报告前后历时两周。此次工程实习的前一周,我们对整个系统的进行了深入的了解,并对其进行了整体规划,分别划分为STC89C52控制器模块、红外接收电路模块、红外发射电路模块、状态指示电路模块、复位电路模块、电源电路模块。当我把该系统的模块确定以后,就初步画出该系统的硬件电路原理图,经过确定以后,就开始了硬件电路的焊接。经过对焊接的电路运行和测试成功后,就对软件设计进行了简单的设计。实 28、习的第二周主要是将程序烧写入硬件电路中,并对其进行运行与调试。
在学习这门课程时,感到单片机的概念抽象,对其中的引脚的分配、寄存器的功能等基本理论也不能很好地理解与掌握。通过本次工程实习,我对学到的单片机知识有了更深一步的深入,而且,本次实习让我对于实践也有了基本认识。刚开始时,我有的只是书本上的东西,只有表面记忆,通过该次实习,我对其有了进一步的了解,如STC89C52单片机芯片的具体功能、默认输出的值,元器件的如何正确焊接,如何验证元器件的焊接是否正确等等。
本次工程实习是本科学习阶段很有价值的理论与实践相结合的机会,这次实习能这么顺利的完成,首先感谢淮阴工学院、计算机工程学院提供的实 29、践机会,同时也感谢实验室老师给我们提供的良好的实验环境。当然,更要感谢一直陪伴在实验室的老师孜孜不倦的教诲、细心的指导和不懈的支持,以及同班同学的帮忙调试,让我学会了很多东西。这次比较系统的学习型红外遥控器的设计提高了我运用所学的专业基础知识来解决面临实际问题的能力,让我见证了单片机应用的价值,同时也提高了我查阅各种文献资料、设计手册、设计规范以及软件编程的水平。
参考文献
1 赵鑫,蒋亮,齐兆群等.数字电路设计.北京:机械工业出版社,2005
2 苏家健,曹柏荣,汪志锋.单片机原理及应用技术. 北京:高等教育出版社,2003
3 李朝青. 单片 30、机原理及接口技术. 北京:北京航天航空大学出版色,2001
4 胡汉才. 单片机原理及其接口技术. 北京:清华大学出版社,2004.
5 潭浩强.C语言程序设计.北京:清华大学出版社.2005
6 李华,李东.MCS51/98系列单片机原理与应用.北京:机械工业出版社.1997
7 杨居义,杨尧,杨晓琴等.单片机课程设计指导.北京:清华大学出版社.2009
指导教师评语
学号
姓名
班级
选题
名称
基于STC89C52的学习型红外遥控器的设计
序号
评价内容
权重(%)
得分 31、
1
考勤记录、学习态度、工作作风与表现。
5
2
自学情况:
上网检索机时数、文献阅读情况(笔记)。
10
3
论文选题是否先进,是否具有前沿性或前瞻性。
5
4
成果验收:
是否完成设计任务;能否运行、可操作性如何等。
20
5
报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。
30
6
文献引用是否合理、充分、真实。
5
7
答辩情况:
自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。
25
合计
指导教师(签章):
年 月 日






