基于51单片机的红外遥控器设计Word文件下载.docx
《基于51单片机的红外遥控器设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的红外遥控器设计Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
![基于51单片机的红外遥控器设计Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/19/50b2544d-4ced-4271-823c-f30a62abaaf1/50b2544d-4ced-4271-823c-f30a62abaaf11.gif)
●用Proteus绘制电路图并仿真实现基本功能;
●制作出实物
二、需求分析(系统的应用场景、环境条件、参数等)
现在各种红外线技术已经源源不断进入我们的生活中,在很多场合发挥着作用。
机场、宾馆、商场等的自动门,会在人进出时自动地开启和关闭。
原来,在自动门的一侧有一个红外线光源,发射的红外线照射到另一侧的光电管上,红外线是人体察觉不到的。
当人走到大门口,身体挡住红外线,电管接收不到红外线了。
根据设计好的指令,触发相应开关,就把门打开了。
等人进去后,光电管又可以接到红外线,恢复原来的线路,门又会自动关闭。
因此这种光电管被称为“电眼”,在许多自动控制设备中大显身手。
在家庭中,许多电子设备如彩色电视、空调、冰箱和音响等,都使用了各种“红外线遥控器”。
利用它我们可以非常方便的转换电视频道或设定空调的温度档次。
三、概要设计(系统结构框图/系统工作说明流程图)
红外线收发、显示系统硬件由以下几部分组成:
红外遥控器,51单片机最小系统,接收放大器一体集成红外接收头,LED灯显示电路。
红外线接收是把遥控器发送的数据(已调信号)转换成一定格式的控制指令脉冲(调制信号、基带信号),是完成红外线的接收、放大、解调,还原成发射格式(高、低电位刚好相反)的脉冲信号。
这些工作通常由一体化的接收头来完成,输出TTL兼容电平。
最后通过解码把脉冲信号转换成数据,从而实现数据的传输。
红外遥控系统电路框图
四、详细设计(Proteus电路图、程序流程图、源程序清单)
1)Proteus电路图:
2)程序流程图:
程序是首先初始化红外接收端口,然后检测是否接收红外信号,如果接收到红外信号就调用接收子程序,然后就通过L额度LED显示当前按键的结果,如图所示:
初始化红外接收端口
调用接收子程序
Y
接收到红外信号?
N
开始
LED灯显示
返回
程序流程图
3)源程序清单:
#include<
reg51.h>
//头文件
#defineucharunsignedchar//这里用"
uchar"
代替"
unsignedchar"
,"
用来定义无符号字符型数。
#defineuintunsignedint//"
uint"
用来定义无符号整型数。
uchardistemp;
//定义变量
ucharIRCOM[7];
/*********声明子函数**************/
voiddelay(ucharx);
//x*0.14MS
voiddelayms(uint);
sbitIRIN=P3^3;
//定义红外接收器数据线
/********定义LED灯口线***********/
sbitP2_0=P2^0;
//定义LED灯口线。
sbitP2_1=P2^1;
sbitP2_2=P2^2;
sbitP2_3=P2^3;
sbitP2_4=P2^4;
sbitP2_5=P2^5;
sbitP2_6=P2^6;
sbitP2_7=P2^7;
voidIR_IN()interrupt2using0
{
unsignedcharj,k,N=0;
EX1=0;
delay(15);
if(IRIN==1)
{EX1=1;
return;
}
//确认IR信号出现
while(!
IRIN)//等IR变为高电平,跳过9ms的前导低电平信号。
{delay
(1);
}
for(j=0;
j<
4;
j++)//收集四组数据
{
for(k=0;
k<
8;
k++)//每组数据有8位
{
while(IRIN)//等IR变为低电平,跳过4.5ms的前导高电平信号。
while(!
IRIN)//等IR变为高电平
while(IRIN)//计算IR高电平时长
delay
(1);
N++;
if(N>
=30)
{EX1=1;
}//0.14ms计数过长自动离开。
}//高电平计数完毕
IRCOM[j]=IRCOM[j]>
>
1;
//数据最高位补“0”
=8){IRCOM[j]=IRCOM[j]|0x80;
}//数据最高位补“1”
N=0;
}
if(IRCOM[2]!
=~IRCOM[3])
switch(IRCOM[2])
case0x45:
//全亮
P2=0x00;
break;
case0x47:
//全灭
P2=0xff;
break;
case0x16:
//当得出十六进制值为0x16时。
P2_7=~P2_7;
case0x0c:
P2_6=~P2_6;
case0x18:
P2_5=~P2_5;
case0x5e:
P2_4=~P2_4;
case0x08:
P2_3=~P2_3;
case0x1c:
P2_2=~P2_2;
case0x5a:
P2_1=~P2_1;
case0x42:
P2_0=~P2_0;
EX1=1;
}
voiddelay(unsignedcharx)//延时函数x*0.14MS
unsignedchari;
while(x--)
for(i=0;
i<
13;
i++){}
voiddelayms(uintxms)//延时函数x*1ms
uintk,y;
for(k=xms;
k>
0;
k--)//i=xms即延时约xms毫秒
for(y=110;
y>
y--);
voidcheck()
P2=0X7F;
delayms(200);
P2=0X3F;
P2=0X1F;
P2=0X0F;
P2=0X07;
P2=0X03;
P2=0X01;
P2=0X00;
delayms(1000);
P2=0XFF;
main()//主函数
check();
//开机自检LED的好坏
IE=0x84;
//允许总中断中断,使能INT1外部中断
TCON=0x10;
//触发方式为脉冲负边沿触发
IRIN=1;
//I/O口初始化
delayms(10);
//延时
while
(1)
;
五、系统实现(清晰的实物照片)
六、个人总结(课程学习体会与收获及对课程的建议)
通过本次红外系统的设计,我大有收获。
从得到题目到查找资料,从电路板的调试到失败后再一次全部重新开始,在这一个充满挑战伴随挫折,充满热情伴随打击的过程中,我感触颇深,它已不仅是一个对我三年学习知识情况和我的应用动手能力的检验,而且还是对我的钻研精神,面对困难的心态,做事的毅力和耐心的考验。
我在这个过程中深刻的感受到了做毕业设计的意义所在。
这个课题的根本技术就是单片机控制技术,加部分外围电路来实现一些复杂的功能。
可以根据要求改变软件来实现功能的更新和扩展。
课程设计成绩:
指导教师签字:
年月日