基于单片机的红外遥控设计与制作Word文件下载.docx
《基于单片机的红外遥控设计与制作Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的红外遥控设计与制作Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
采用指令键产生电路产生不同的控制指令,单片机进
行状态的编码,直接由单片机的口输出方波信号控制红外
发射管进行发射。
红外发射管采用普通的红外发射二极管。
3.2
红外遥控接收电路的方案
遥控系统采用红外线脉冲个数编码,直接利用单片机
软件解码,实现功能的遥控。
3.3
单片机的选择
本设计所编写的程序比较简单,功能也比较少,所用到的
输入输出端口也不是很多,所以我们决定用
STC89C52
单片
机来完成本设计,既方便也很实用。
3.4
红外遥控系统电路的原理框图以及各部分作用
各部分作用:
(1)行列式键盘
行列式键盘又称为矩阵式键盘,用
I/O
线组成行列结构,按
键设置在行列的交点上,行列式分别连接到按键开关的两
端。
键盘中有无按键按下是由行线送入扫描字及列线读入
列线状态字来判断的,有键按下时通过查键并执行键功能
程序。
(2)红外线发射电路
遥控器信息码由单片机的定时器
1
中断产生
40KHZ
红外线
方波信号。
由
P3.5
口输出,经过三极管放大,由红外线发
射管发送。
(3)单片机
单片机用于输出方波信号控制红外发射电路的工作。
3.5
红外接收部分原理框图以及各部分作用
(1)+5V
电源电路
给单片机最小系统、控制电路提供以及红外接收电路提
供电压。
(2)红外接收电路
红外接收电路把接收到的状态在内部进行解码,从而实
现不同的功能。
(3)控制电路
通过发射电路的按键实现对控制电路的控制作用。
3.6
系统硬件电路的设计
红外发射电路:
红外接收电路:
4、遥控发射及接收控制电路的软件设计
4.1
软件设计流程图
4.1.1
键扫描程序流程图
相应的按键扫描程序:
#include<
reg52.h>
#define
uint
unsigned
int
ucharunsigned
char
keyrowP0
keylineP2
uchar
code
keyv[8]={1,2,4,8};
keyscan(void)
{
keyval,i;
keyval=0;
keyrow=0xfe;
if(keyline!
=0xff)
for(i=0;
i<
4;
i++)
if(~keyline==keyv[i])keyval=i+1;
keyrow=0xfd;
if(~keyline==keyv[i])keyval=i+5;
keyrow=0xfb;
if(~keyline==keyv[i])keyval=i+9;
keyrow=0xf7;
if(~keyline==keyv[i])keyval=i+13;
while(keyline!
=0xff);
return(keyval);
}
4.1.2
遥控码发射程序流程图
红外信号发射过程:
该遥控器采用脉冲个数编码,不同的脉冲个数代表不同的
码,最小为
个脉冲,最大为
17
个脉冲,为了使接收可靠,
第一位码宽为
3ms,其余为
1ms,遥控码数据帧间隔大于
10ms
。
当某个被控电器的电源开关被按下时,单片机先读出
键值,然后根据键值设定遥控码的脉冲个数,再调制成
40kHz
方波由红外线发光管发身出去。
相应的遥控码发射程序如下:
sbit
remoteout=P3^5;
extern
void
delay1ms(uint
time);
/*************初始化函数***********/
init(void)
remoteout=0;
IE=0x00;
IP=0x08;
TMOD=0x22;
TH1=0xf3;
TL1=0xf3;
EA=1;
/*****************发射函数***********/
send_infrared(uchar
keyval)
m;
ET1=1;
TR1=1;
delay1ms(3);
ET1=0;
TR1=0;
for(m=keyval;
m>
0;
m--){
delay1ms
(1);
delay1ms(10);
/******************40KHZ
发生器************/
time_intt1(void)
interrupt
3
remoteout=~remoteout;
4.1.3
遥控发射主程序流程图
遥控发射的主程序流程图:
首先初始化程序,然后调用键扫
描程序。
相应的发射主程序如下:
keyscan(void);
init(void);
keyval);
time)
i,j;
time;
for(j=0;
j<
110;
j++);
main()
keyval;
init();
while
(1)
keyval=keyscan();
while(keyscan());
if(keyval)
{send_infrared(keyval);
4.1.4
中断程序流程图
中断过程:
首先判断低电平脉宽度是否大于
2ms,若脉宽不到
2ms,则中断返回;
若低电平大于
2ms,则接收并对低电平脉冲
计数,接下来看判断高电平脉宽度冲是否大于
3ms,若脉宽不
到
3ms,则返回上一接收计数过程;
若高电平脉宽大于
3ms,则
按照脉冲个数至对应功能程序。
此时中断返回。
相应的中
断程序如下:
intrins.h>
remotein=P3^1;
value;
/***********初始化********/
clearmen(void)
EX0=1;
/**************外中断遥控接收函数**************/
intt0(void)
{
keyval,k,sign;
EX0=0;
sign=0;
if(remotein==0)
delay1ms
(2);
while(remotein==0);
keyval++;
k=0;
while(remotein==1)
k++;
if(k>
2)
value=keyval-1;
sign=1;
break;
}if(sign)
4.1.5
遥控接收器主程序流程图
相应的接收主程序:
clearmen(void);
temp;
youyi(void)//7
个流水灯逐个闪动
i;
temp=0x01;
8;
P2=~temp;
delay1ms(1000);
temp<
<
=1;
zuoyi(void)
//7
个流水灯反向逐个闪动
temp=0x80;
Temp>
>
quanliang(void)
{uint
temp=0xfe;
i++)//7
个流水灯依次全部点亮
P2=temp;
fquanliang(void)
temp=0x7f;
clearmen();
P0=0xff;
while
(1)
if(value==1){P2=0xfe;
if(value==2){P2=0xfd;
if(value==3){P2=0xfb;
if(value==4{P2=0xf7;
if(value==5){P2=0xef;
if(value==6){P2=0xdf;
if(value==7){P2=0xbf;
if(value==8){P2=0x7f;
if(value==9){P1=0xfe;
if(value==10){P1=0xfd;
if(value==11)youyi();
if(value==12)zuoyi();
if(value==13)quanliang();
if(value==14)fquanliang();
5、演示结果
当按下键
时,发光二极管
LED1
亮;
LED2
LED3
4
LED4
5
LED5
6
LED6
7
LED7
8
LED8
9
LED9
LED10
11
LED8-LED1
依次渐亮;
12
LED1-LED8
依次全亮;
14
附录:
1.程序:
keyrow
P0
keyline
P2
if(~keyline==keyv[i])
keyval=i+1;
keyval=i+13;
delay1
}
接收系统:
接收主程序:
youyi(void)
zuoyi(void)
2.个人小结
这次课程设计我们的题目是设计单片机遥控系统设计,以
51
单片机为基础通过
红外发射与接收装置来实现信息的传递,通过这次课程设计,我学会了红外通
信装置的使用以及它们之间编码的设计。
另外,通过自己设计焊接单片机让我
对单片机的结构有了新的认识与理解。
单片机的每一个端口都有自己所需的结
构与电路,特别是
P0
口,需要接上拉电阻。
这次课程设计我负责接收模块与部
分程序设计,我用了一个
hs0038
一体化红外接收头,使接收电路大大的简洁化
了,为了找
的电路,还上网找了很多版本的资料,最终确定了一个相对
简单的电路,且比较稳定。
最后实验结果虽然不尽如人意,但是也学会了很多
电路设计的方法。
——————章韬略
这次课程设计,我们的设计共分为两个模块,我负责的是红外发射模块。
首先
我在网上查询了一些关于红外发射模块硬件电路的资料,确定所需要的硬件材
料。
运用软件来绘制出了硬件电路图。
再购买到了材料之后,开始了硬件电路
的焊接工作,焊接完成后,开始编写程序。
在写程序的过程中,我了解到了
51
单片机芯片的工作原理,学会了矩阵键盘的扫描原则。
同时,也认清了红外发
射的原理,这次我采用的是按脉冲个数来对应相应的功能,相对来说更为简单
易懂。
再完成这些工作之后,我们开始了测试和调节,虽然最终并没有完全达
到预期的效果,但通过这次课程设计,我还是了学会了很多电路设计和单片机
的知识。
-----------陈舒佳