基于单片机的红外遥控设计与制作.docx
《基于单片机的红外遥控设计与制作.docx》由会员分享,可在线阅读,更多相关《基于单片机的红外遥控设计与制作.docx(17页珍藏版)》请在冰豆网上搜索。
![基于单片机的红外遥控设计与制作.docx](https://file1.bdocx.com/fileroot1/2022-11/27/891bf5f2-83ac-46b3-ac1c-f5392cc50d22/891bf5f2-83ac-46b3-ac1c-f5392cc50d221.gif)
基于单片机的红外遥控设计与制作
基于单片机的红外遥控设计与制作
13 工试 2 班陈舒佳章韬略
1、设计目的
对于本课题的研究,其理论中的价值是对红外线这种
电磁波的特性进行更加深入的研究。
同时在与单片机和电
子电路的共同作用下,找到单片机及电子电路在实际运用
中的更多功能,从而挖掘出红外线和硬件设备结合中的更
多可能性。
在现实意义中,对于红外线的使用,它不仅提
高了单片机、硬件设备和硬件系统在智能遥控领域的广泛
应用,而相对了在硬件设施上使用了红外线的遥控技术,
也同时大大拓宽了硬件设施的应用范围。
在不久的将来,
我相信,人们对于红外遥控控制的运用,会变得越来越广。
2、设计要求
基本功能要求:
1.以一个单片机作为控制遥控器,另一个单片机控制系统为
被遥控对象;
2.用遥控器的 10 个遥控开关,控制遥控对象的 10 个电源开
关通断;
3.能实现 10 个电源开关状态显示;
4.能实现定时开关某一个电源开关。
扩展功能:
1.能实现灯光亮度连续调节;
2.能根据不同电器实现不同时间通断控制;
3.其他扩展功能。
3、方案设计
3.1 红外遥控发射电路的方案
采用指令键产生电路产生不同的控制指令,单片机进
行状态的编码,直接由单片机的口输出方波信号控制红外
发射管进行发射。
红外发射管采用普通的红外发射二极管。
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
#define uint unsigned int
#define ucharunsigned char
#define keyrowP0
#define keylineP2
uchar code keyv[8]={1,2,4,8};
uchar keyscan(void)
{
uchar 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!
=0xff)
for(i=0;i<4;i++)
if(~keyline==keyv[i])keyval=i+5;
keyrow=0xfb;
if(keyline!
=0xff)
for(i=0;i<4;i++)
if(~keyline==keyv[i])keyval=i+9;
keyrow=0xf7;
if(keyline!
=0xff)
for(i=0;i<4;i++)
if(~keyline==keyv[i])keyval=i+13;
while(keyline!
=0xff);
return(keyval);
}
4.1.2 遥控码发射程序流程图
红外信号发射过程:
该遥控器采用脉冲个数编码,不同的脉冲个数代表不同的
码,最小为 2 个脉冲,最大为 17 个脉冲,为了使接收可靠,
第一位码宽为 3ms,其余为 1ms,遥控码数据帧间隔大于
10ms 。
当某个被控电器的电源开关被按下时,单片机先读出
键值,然后根据键值设定遥控码的脉冲个数,再调制成 40kHz
方波由红外线发光管发身出去。
相应的遥控码发射程序如下:
sbit remoteout=P3^5;
extern void delay1ms(uint time);
/*************初始化函数***********/
void init(void) {
remoteout=0;
IE=0x00;
IP=0x08;
TMOD=0x22;
TH1=0xf3;
TL1=0xf3;
EA=1;
}
/*****************发射函数***********/
void send_infrared(uchar keyval)
{
uchar m;
ET1=1;TR1=1;delay1ms(3);ET1=0;TR1=0;remoteout=0;
for(m=keyval;m>0;m--){
delay1ms
(1);
ET1=1;TR1=1;delay1ms
(1);ET1=0;TR1=0;remoteout=0;
}
delay1ms(10);
}
/******************40KHZ 发生器************/
void time_intt1(void) interrupt 3 {
remoteout=~remoteout; }
4.1.3 遥控发射主程序流程图
遥控发射的主程序流程图:
首先初始化程序,然后调用键扫
描程序。
相应的发射主程序如下:
#include
#define uint unsigned int
#define uchar unsigned char
extern uchar keyscan(void);
extern void init(void);
extern void send_infrared(uchar keyval);
void delay1ms(uint time) {
uint i,j;
for(i=0;i