学习型红外遥控开关的设计与实现修改.docx
- 文档编号:27346665
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:15
- 大小:73.89KB
学习型红外遥控开关的设计与实现修改.docx
《学习型红外遥控开关的设计与实现修改.docx》由会员分享,可在线阅读,更多相关《学习型红外遥控开关的设计与实现修改.docx(15页珍藏版)》请在冰豆网上搜索。
学习型红外遥控开关的设计与实现修改
挑战杯
曲阜师范大学第十届课外学术科技作品竞赛
参赛类别:
科技发明B类
参赛作品名称:
学习型红外遥控开关的设计与实现
参赛成员:
张广明赵安琪崔佳宁
指导教师:
赵建平韩英梅
所属院系:
物理工程学院
参赛作品信息
1.项目的立项依据及当前国内外同类课题研究水平概述
随着生活水平和科学技术的提高,人们对生活质量的要求也在不断提高。
遥控技术也原来越受人们的欢迎,其中红外遥控是目前使用最广泛的一种通信和遥控手段,在此,我们思考将红外遥控技术应用到平时的工作生活中。
在不同场合都存在各种开关,手动开关给我们的生活带来很多不便,因此我们从最平常的事物出发,发明基于单片机的具有学习功能的红外遥控开关,这将给人们带来很多便捷。
面对开关的改革,很多人设计了延时开关、声控开关、光控开关,但此类开关仍存在许多问题,例如需近距离手动操作、受环境影响大。
后来有人发明了红外遥控开关,但需要配置专门的遥控器,不具有通用性,或者通用性太广,不能识别区分不同遥控器,容易与其它电器遥控器的红外信号混杂在一起,引起误操作。
这些在日常工作生活中的应用都具有狭隘性。
在这些诸多研究的基础上,我们提出了由单片机对特定红外信号学习的红外遥控开关,采用C语言编程对单片机实现控制。
可以方便达到让你用电视机等普通遥控器操纵开关的目的,提高了遥控器在家电领域的实用价值。
2.项目的研究目标、研究内容以及拟解决的关键问题
(1)总体目标
设计开发出可以由普通遥控器作为信号输入并基于单片机设计的学习型红外遥控开关,并能在各场合中得到很好应用。
(2)研究内容
本科技发明是以解决日常工作生活中的不便之处为目的,针对常见的普通开关的控制问题,研究了一种可以由普通遥控器作为信号输入并基于STC89C52单片机设计的学习型红外遥控开关。
(3)拟解决的关键问题
该发明制作要解决的关键问题是重新设计日常的开关电路控制器,使其具有特定学习功能。
拟设计的开关电路是基于STC89C52单片机的,使开关具有学习性,能够识别和记忆常用遥控器特定按键发出的红外信号编码,并通过将接收到的红外信号与单片机存储在
PROM的数据比较,从而控制遥控开关的通断。
使其与普通机械开关相比,具有体积小、可靠性高、性能优越、使用方便等优点,并可广泛应用于工业、医疗、家用电器等方面的开关控制。
3.拟采取的研究方法、技术路线和实验方案及可行性分析
(1)研究方法
该科技发明采用了以观察法为主,文献法为辅的综合研究方法。
加深对实践活动及其背景的理解研究,本次项目的核心是实验室观察法,有较详细的观察计划、步骤以及合理设计的可控性观察,能获得翔实的材料,并能对观察资料进行定量分析和对比研究。
(2)技术路线和实验方案
由遥控器的方便性和机械开关的不可移动性
能否将两者结合起来
搜集大量资料、请教老师
可以利用单片机的存储控制功能实现
用C语言进行编程控制
软件测试与实现
电路图以及电路板的设计与实现
软硬件结合,组装调试
实现功能。
(3)可行性分析
该生活便捷型的科技发明可得到广泛应用,与普通机械开关相比,该开关控制器具有体积小、可靠性高、性能优越、使用方便等优点,成本较低,适合推广使用。
它可以方便达到让你用电视机等普通遥控器操纵开关的目的,解决了黑暗中摸索墙壁开关的麻烦和房间重新布置时由于开关位置固定所带来的麻烦,又提高了遥控器在家电领域的实用价值。
指导老师赵建平教授有多年设计电路的经验,在电路设计领域作出许多优秀的成果。
在指导老师的带领下,该组成员张广明、崔佳宁、赵安琪三位同学学习了许多电路设计的专业知识,自学了有关单片机C语言编程的科目,这将有力保证该发明制作的顺利完成。
4.本项目的特色和创新之处
本项目的特色是从日常的实际出发,由随处可见有随处需要的开关出发,通过对老式电路及工具的改造,设计出基于单片机控制的具有学习功能的红外遥控开关,使设计出的新成果能广泛应用于工作生活中,更好的服务大众、便捷生活。
本项目的创新之处在于该红外遥控开关采用C语言编程对单片机实现控制,利用单片机对特定红外信号的的学习功能,可以由常见的普通遥控器对开关进行控制,提高了遥控器在家电领域的实用价值。
该红外遥控开关既避免了已设计出的延时开关、声控开关、光控开关的需近距离手动操作、受环境影响大等问题,又解决了红外遥控开关需要配置专门的遥控器,不具有通用性,或者通用性太广,不能识别区分不同遥控器,容易与其它电器遥控器的红外信号混杂在一起,引起误操作等一系列问题。
学习型红外线遥控开关的设计与实现
张广明崔佳宁赵安琪
(曲阜师范大学物理工程学院,山东曲阜273165)
摘要:
针对开关的控制问题,本文介绍了一种可以由普通遥控器作为信号输入并基于单片机控制的学习型红外遥控开关。
它以STC89C52单片机为设计核心,能够识别和记忆常用遥控器特定按键发出的红外信号编码,并通过将接收到的红外信号与单片机存储在
PROM的数据比较,从而控制遥控开关的通断。
与普通机械开关相比,该开关控制器具有体积小、可靠性高、性能优越、使用方便等特点,可广泛应用于工业、医疗、家用电器等领域的开关控制。
关键词:
红外遥控,单片机,软件解码,开关控制
1引言
随着人们生活水平的提高,人们对生活质量的要求也在不断提高。
遥控技术也原来越受人们的欢迎,其中红外遥控是目前使用最广泛的一种通信和遥控手段[1]。
目前,人们普遍使用的开关大多是手动造作控制,十分不便,为此很多人设计了延时开关、声控开关、光控开关,此类开关仍存在许多问题,例如需近距离手动操作、受环境影响大。
后来有人发明了红外遥控开关,但需要配置专门的遥控器,不具有通用性,或者通用性太广,不能识别区分不同遥控器,容易与其它电器遥控器的红外信号混杂在一起,引起误操作。
为解决以上问题,使红外遥控开关更好地应用到生活中,本文将介绍一种基于单片机的学习型红外遥控开关,它能够学习和记忆普通遥控器的某一特定按键发出的红外信号编码。
它可以方便达到让你用电视机等普通遥控器操纵开关的目的,解决了黑暗中摸索墙壁开关的麻烦和房间重新布置时由于开关位置固定所带来的麻烦,又提高了遥控器在家电领域的实用价值。
2系统总体的设计原理
红外遥控发射器:
按键
编码
调制
红外发射
遥控接收开关:
红外接收
单片机解调
开关
图1.系统设计的原理框图
3系统的硬件设计
硬件电路设计包括电源电路的设计和解码电路的设计两部分。
图2.系统硬件结构图
电路原理:
电路图的左侧为整流电路,产生+5V的直流电以给单片机和红外线接收头供电,右侧为STC89C52单片机及其外围电路组成,J1为一体化红外线接收头1838B,可以接收并解调遥控器发出的红外线信号。
图中上部为继电器,通过控制继电器的吸合可以控制电灯的亮暗。
图左下角为学习按键。
4
系统的软件设计
图3.系统软件程序框图
由于用现成的普通遥控器作为系统的输入,因此在软件方面存在几个主要需要解决的问题:
如何接收红外遥控信号;如何识别红外遥控信号;如何对红外遥控信号进行解码等。
系统执行过程:
红外遥控信号发射出来后,经过红外线一体接收头解调后传送至P3.2口,触发该口中断。
如果P2.6学习键按下时,单片机对信号进行解码,并把所接触的数据码存入C52单片机自带的
,从而完成对遥控器按键的学习功能。
当下一次遥控信号来时,同时触发中断,单片机对信号进行解码,并将解出的数据码与
里的数据码作对比。
如果两次数据完全一致,则由P2.4控制继电器吸合,从而点亮灯泡,否则单片机继续等待下一次中断产生。
5结束语
本设计采用红外发射和接收的方式,保证了信号传输的可靠性,并且控制简单、实施方便、成本低廉。
通过单片机对遥控器特定按键红外信号的学习,避免了与其他遥控信号的混杂,增加了可靠性,本产品可在工业、医疗、家用电器等方面得到广泛应用,使工作生活更加便捷!
6致谢
我们的导师赵建平教授,在红外遥控开关的选题及研究过程中倾注了大量的心血。
正是他的具体细致的指导,使我们的发明制作得以顺利的完成。
赵老师扎实的专业知识、活跃的思维和创新的精神使我们受益匪浅。
谨在此向我的老师致以崇高的敬意!
在我们研究的整个过程中,韩英梅师姐给我们提供了极大的支持,帮助我们解决了一系列研究的难题,在这里也向她表示深深的谢意。
文章对所有引用的参考文献已准确的注明了出处,在这里对文献的作者一并致谢!
参考文献:
[1]卢飞跃.红外遥控多路抢答器的设计[J].番禺职业技术学院学报,2003,2
(2):
25-29
附录:
学习型红外线遥控开关C语言程序
#include
#include
#defineRdCommand0x01
#definePrgCommand0x02
#defineEraseCommand0x03
#defineError1
#defineOk0
#defineWaitTime0x01
#definePerSector512
unsignedchara[4];
unsignedcharb[4];
sbitIR=P3^2;//将IR位定义为P3.2引脚
unsignedintLowTime,HighTime;//储存高、低电平
sbitkey=P2^6;
sbitI=P2^4;
/*IAP有关功能寄存器*/
sfrISP_DATA=0xe2;
sfrISP_ADDRH=0xe3;
sfrISP_ADDRL=0xe4;
sfrISP_CMD=0xe5;
sfrISP_TRIG=0xe6;
sfrISP_CONTR=0xe7;
/*
打开ISP,IAP功能
*/
voidISP_IAP_enable(void)
{
EA=0;/*关中断*/
ISP_CONTR&=0x18;/*0001,1000*/
ISP_CONTR|=WaitTime;/*写入硬件延时*/
ISP_CONTR|=0x80;/*ISPEN=1*/
}
/*
关闭ISP,IAP功能
*/
voidISP_IAP_disable(void)
{
ISP_CONTR&=0x7f;/*ISPEN=0*/
ISP_TRIG=0x00;
EA=1;/*开中断*/
}
/*
公用的触发代码
*/
voidISPgoon(void)
{
ISP_IAP_enable();/*打开ISP,IAP功能*/
ISP_TRIG=0x46;/*触发ISP_IAP命令字节1*/
ISP_TRIG=0xb9;/*触发ISP_IAP命令字节2*/
_nop_();
}
/*
扇区擦除
*/
voidsectorerase(unsignedintsector_addr)
{
unsignedintiSectorAddr;
iSectorAddr=(sector_addr&0xfe00);/*取扇区地址*/
ISP_ADDRH=(unsignedchar)(iSectorAddr>>8);
ISP_ADDRL=0x00;
ISP_CMD&=0xf8;/*清空低3位*/
ISP_CMD|=EraseCommand;/*擦除命令3*/
ISPgoon();/*触发执行*/
ISP_IAP_disable();/*关闭ISP,IAP功能*/
}
/*
字节写入
*/
unsignedcharbyte_read(unsignedintbyte_addr)
{
ISP_ADDRH=(unsignedchar)(byte_addr>>8);
ISP_ADDRL=(unsignedchar)(byte_addr&0xff);
ISP_CMD&=0xf8;
ISP_CMD|=RdCommand;
ISPgoon();
ISP_IAP_disable();
return(ISP_DATA);
}
voidbyte_write(unsignedintbyte_addr,unsignedcharoriginal_data)
{
ISP_ADDRH=(unsignedchar)(byte_addr>>8);
ISP_ADDRL=(unsignedchar)(byte_addr&0xff);
ISP_CMD&=0xf8;
ISP_CMD|=PrgCommand;
ISP_DATA=original_data;
ISPgoon();
ISP_IAP_disable();
}
/************************************************************
函数功能:
对4个字节的用户码和键数据码进行解码
说明:
解码正确,返回1,否则返回0
出口参数:
dat
*************************************************************/
unsignedintDeCode()
{
unsignedchari,j;
unsignedchartemp;//储存解码出的数据
for(i=0;i<4;i++)//连续读取4个用户码和键数据码
{
for(j=0;j<8;j++)//每个码有8位数字
{
temp=temp>>1;//temp中的各数据位右移一位,因为先读出的是高位数据
TH0=0;//定时器清0
TL0=0;//定时器清0
TR0=1;//开启定时器T0
while(IR==0)//如果是低电平就等待
;//低电平计时
TR0=0;//关闭定时器T0
LowTime=TH0*256+TL0;//保存低电平宽度
TH0=0;//定时器清0
TL0=0;//定时器清0
TR0=1;//开启定时器T0
while(IR==1)//如果是高电平就等待
;
TR0=0;//关闭定时器T0
HighTime=TH0*256+TL0;//保存高电平宽度
if((LowTime<370)||(LowTime>640))
return0;//如果低电平长度不在合理范围,则认为出错,停止解码
if((HighTime>420)&&(HighTime<620))//如果高电平时间在560微秒左右,即计数560/1.085=516次
temp=temp&0x7f;//(520-100=420,520+100=620),则该位是0
if((HighTime>1300)&&(HighTime<1800))//如果高电平时间在1680微秒左右,即计数1680/1.085=1548次
temp=temp|0x80;
//(1550-250=1300,1550+250=1800),则该位是1
}
a[i]=temp;//将解码出的字节值储存在a[i]
}
if(a[2]=~a[3])//验证键数据码和其反码是否相等,一般情况下不必验证用户码
return1;//解码正确,返回1
}
/************************************************************
函数功能:
执行遥控功能
*************************************************************/
voidFunction(void)
{
I=~I;//将按键数据码送P1口显示
}
/************************************************************
函数功能:
主函数
*************************************************************/
voidmain()
{
I=0;
EA=1;//开启总中断
EX0=1;//开外中断0
ET0=1;//定时器T0中断允许
IT0=1;//外中断的下降沿触发
TMOD=0x01;//使用定时器T0的模式1
TR0=0;//定时器T0关闭
while
(1)//等待红外信号产生的中断
;
}
/************************************************************
函数功能:
红外线触发的外中断处理函数
*************************************************************/
voidInt0(void)interrupt0using0
{
unsignedinti;
unsignedintbyte_addr;
unsignedchard;
EX0=0;//关闭外中断0,不再接收二次红外信号的中断,只解码当前红外信号
if(key==0)
{
if(DeCode()==1)
{
b[0]=a[0];
b[1]=a[1];
b[2]=a[2];
b[3]=a[3];
sectorerase(0x2000);
byte_addr=0x2000;
byte_write(byte_addr,a[2]);
}
}
else
{
if(DeCode()==1)
{
byte_addr=0x2000;
d=byte_read(byte_addr);
if(a[2]-d==0)
Function();
}
}
EX0=1;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学习 红外 遥控 开关 设计 实现 修改