ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:253.94KB ,
资源ID:6527823      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6527823.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于FPGA的红外线型学习遥控器.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于FPGA的红外线型学习遥控器.docx

1、基于FPGA的红外线型学习遥控器重庆大学本科生课外实践技术报告项目名称:基于FPGA的学习型红外遥控器设计学院:专业:指导老师:实验日期:引言随着人们生活水平的提高,家用电器的种类增多,红外遥控器的种类也随之增加,不同种类的遥控器之间由于采用的编码格式不同,使得不同产品的遥控器不能相互兼容,用户在使用的过程中容易产生混乱,给人们的生活带来诸多不便。针对这一现况,万能遥控器便应需出现了,目前主要分为两种类型,编码型和学习型。编码型万能遥控器需要各大电器制造商生产的遥控器的控制码编码格式,使用时选定相应机型,遥控器便可提取出其编码,再和38k的载波进行ASK调制便可驱动红外线发射管进行控制信号发射

2、了,但其显著的缺点是使用时需要查询冗长的机器型号手册。相对之下另外一种学习型的万能遥控器机理就比较简单了,其对不同遥控器发出的信号(解调后的信号)进行记录,待控制时调用出存储的信号对载波进行调制,便可驱动红外线发射管发射红外线对设备进行控制了。通过对比这两种万能遥控器的设计方案可知,相对编码型遥控器,自主学习型遥控器原理简单,实现较为方便。基于此本文尝试着设计了一款基于FPGA的红外线学习型遥控器,主要由FPGA控制模块、红外线接收模块、红外线发射模块和存储模块组成。在本文中详细的给出了设计的原理、技术方案、软硬件的实现过程等,并在附录中给出了各单元电路图、主程序和仿真电路图。1 设计方案与指

3、标1.1 设计原理简介基于FPGA制作一个红外遥控器,并可通过程序控制记忆按键功能,达到遥控器的自主学习功能,其实现原理框图如下:图1系统框图由原理框图可知,本设计主要由5个部分组成,FPGA控制器、红外线发射器、红外线接收器、学习遥控指示灯和操作键组成。遥控器自主学习工作进程如下:一、红外线接收器接收红外信号;二、红外接收模块对信号进行放大、检波、整形,解调出基带信号;三、FPGA控制器将解调出的信号的高、低电平的时间宽度进行储存;四、当要发射红外信号时,从储存区中还原出相应的红外遥控编码,以其对38kHz的载波信号进行调制;五、调制出的控制信号驱动红外发光二极管发射红外信号,从而实现对设备

4、的控制。红外编码解码原理:遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们采用的是NEC类型。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图3所示。遥控编码是连续的32位二

5、进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H;后16位为8位操作码(功能码)及其反码。遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在4563ms之间,图4为发射波形图。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8位地址码(9ms18ms),高8位地址码(9ms18ms),8位数据码(9ms18ms)和这8位数据

6、的反码(9ms18ms)组成。如果键按下超过108ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。解码的关键是如何识别“0”和“1”,从位的定义我们可以发现“0”、“1”均以0.56ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56ms,“1”为1.68ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56ms低电平过后,开始延时,0.56ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12

7、ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。 根据码的格式,应该等待9ms的起始码和4.5ms的结果码完成后才能读码。1.2 技术指标实现对能够通过学习来控制大多数需要红外线控制的设备(如:电视、空调等),并且设备能正确执行控制指令。2 遥控器硬件组成2.1 器件的选择在本设计中,控制模块利用的是手中已有的资源,Altera公司的芯片EP3C10E144C7,红外线发射模块选用Arduino电子积木红外发射模块IR Transmitter,红外线接收模块选用TSOP4838。并且购进了一个组合的红外接收发射模块发射模块,该模块基于940红外发射管,高电平驱动,所

8、需拉电流小,控制简易,应用广泛,接收模块基于HL-A838红外一体化接收头,可接收38KHz的红外信号,并解调成逻辑电平,即收到信号即输出低电平,否则输出高电平。低功耗、宽角度及长距离接收。2.2 PCB板的绘制和投板3 程序设计系统的程序设计部分主要有以下几个具体模块电路:按键去抖动、分频模块、红外发射、红外接收、存储模块(各个模块VHDL程序见附录)其系统顶层电路原理图如下所示:图2 系统顶层设计原理图4设计成果展示硬件完整电路图片以及操作视频(视频在文件夹里)5总结通过本次设计一个实用的万能遥控器,我们对课题设计的完整流程有了深入的认识,包括项目的选择、资料的收集、元件购买、PCB板的绘

9、制投板、模块程序设计以及报账流程等,最主要的是因为我们的设计程序在网上的相关资料很少,所以我们是自己根据要实现的功能尝试着自己写程序,自己调试,受益匪浅,不仅很好地巩固和理解了课堂理论知识,更为以后做项目参加比赛等积累了很好的经验。同时,4人小组的合作也很成功,经过这次设计懂得了团队协作和正确分工的重要性!6元件清单名称数量单价/元总计/元贴片电阻1500.1522.5贴片电容1000.2424S9013三极管201.8537IR5308C-C-45201.8537HL-A838203.774排针1*3301.8555.5250附录去抖动程序LIBRARYieee;USEieee.std_lo

10、gic_1164.all;USEieee.std_logic_unsigned.all;ENTITYhw_qdISPORT(clk:INSTD_LOGIC;kin:INSTD_LOGIC;kout:OUTSTD_LOGIC);ENDENTITY;ARCHITECTUREbehavOFhw_qdISSIGNALkh,kl:std_logic_vector(3downto0);BEGINPROCESS(kin,clk)BEGINifrising_edge(clk)thenif(kin=0)thenkl=kl+1;elsekl=0000;endif;endif;ENDPROCESS;PROCESS(

11、kin,clk)BEGINifrising_edge(clk)thenif(kin=1)thenkh=kh+1;elsekh1100)thenkout0111)thenkout=0;endif;endif;ENDPROCESS;ENDbehav;红外接收程序libraryieee;useieee.std_logic_1164.all;entityhw_InfraredPortisport(CLK:instd_logic;-50MHzRST:instd_logic;IRIN:instd_logic;RD:instd_logic;CS:instd_logic;led:outstd_logic;DA

12、TA:outstd_logic_vector(31downto0);endentityhw_InfraredPort;architectureoneofhw_InfraredPortistypestateis(s0,s1,s2,s3,s4);signalsta:state;signalvData:std_logic_vector(31downto0);signalclk_1m:std_logic;-1MHzbeginprocess(CLK)variableclk_counter:integerrange0to25;beginif(CLKeventandCLK=1)thenclk_counter

13、:=clk_counter+1;if(clk_counter=25)thenclk_counter:=0;clk_1m=notclk_1m;endif;endif; endprocess;process(RST,CLK)variablestep:integerrange0to32;variablecounter:integerrange0to10000;beginif(RST=0)thensta=s0;vData=X00000000;ledled=0;counter:=0; if(IRIN=0)thenstaled3200)then-time(9ms)3.2mssta=s2;counter:=

14、0;elsestaled8000)then-time(4.5ms)8ms,backtobeginsta=s0;endif;elsif(counter8000)then-time(4.5ms)8ms,continuesta=s3;counter:=0;step:=0;elsestaled=1;if(IRIN=0)thencounter:=counter+1;elsif(counter1600)then-time(0.56ms)1.6ms,continuesta=s4;counter:=0;elsestaled3200)then-time(1.12ms)3.2ms,backtobeginsta=s

15、0;DATA800)then-time0.8ms,getthedata1vData(step)=1;elsevData(step)=0;-time0.8ms,getthedata0endif;step:=step+1;sta=s3;counter:=0;endif;endcase;endif;endprocess;endarchitectureone;存储写入程序:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhw_addressisport(clk:instd_logic;data:in

16、std_logic_vector(31downto0);anjian1:instd_logic;anjian2:instd_logic;anjian3:instd_logic;od:outstd_logic_vector(15downto0);ad:outstd_logic_vector(4downto0);endentity;architecturebehavofhw_addressistypestateis(s0,s1,s2,s3);signalsta:state;signaladdr:std_logic_vector(4downto0);beginad=addr;process(anji

17、an1,anjian2,anjian3,clk)beginif(anjian1=1andanjian2=1andanjian3=1)thensta=s0;od=x0000;addrif(anjian1=0)thenod=x0000;addr=00001;sta=s1;elsif(anjian2=0)thenod=x0000;addr=00011;sta=s1;elsif(anjian3=0)thenod=x0000;addr=00101;staaddr=addr;od=data(15downto0);staaddr=addr+1;od=data(31downto16);stasta=s3;en

18、dcase;endif;endprocess;存储读出程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityhw_adoutisport(clk:instd_logic;inin:instd_logic_vector(15downto0);anjian1:instd_logic;anjian2:instd_logic;anjian3:instd_logic;output:outstd_logic_vector(31downto0);endentity;architecturebehavofhw

19、_adoutistypestateis(s0,s1,s2,s3);signalsta:state;signalin1:std_logic_vector(15downto0);signalout1:std_logic_vector(31downto0);beginin1=inin;output=out1;process(anjian1,clk)beginif(anjian1=1andanjian2=1andanjian3=1)thensta=s0;out1out1(15downto0)=in1;staif(out1=in1)thensta=s1;elseout1(15downto0)=in1;s

20、taif(out1=in1)thensta=s2;elseout1(31downto16)=in1;stasta=s3;endcase;endif;endprocess;endbehav;红外发射程序libraryieee;useieee.std_logic_1164.all;entityhw_OUTPUTisport(CLK:instd_logic;-50MHzkin:instd_logic;DATA:instd_logic_vector(31downto0); IROUT:outstd_logic);endentityhw_OUTPUT;architectureoneofhw_OUTPUT

21、istypestateis(s0,s1,s2,s3,s4);signalsta:state;signalclk_1m:std_logic;-1MHzsignalclk_38k:std_logic;-38kHzbeginprocess(CLK)variableclk_counter:integerrange0to25;beginif(CLKeventandCLK=1)thenclk_counter:=clk_counter+1;if(clk_counter=25)thenclk_counter:=0;clk_1m=notclk_1m;endif;endif; endprocess;process

22、(CLK)variableclk_counter:integerrange0to658;beginif(CLKeventandCLK=1)thenclk_counter:=clk_counter+1;if(clk_counter=658)thenclk_counter:=0;clk_38k=notclk_38k;endif;endif; endprocess;process(kin,clk_1m)variablestep:integerrange0to32;variablecounter:integerrange0to100000;beginif(kin=1)thenIROUT=0;step:

23、=0;staIROUT=0;if(counter100000)thencounter:=counter+1; elsestaIROUT=clk_38k;if(counter9000)thencounter:=counter+1; elsestaIROUT=0;if(counter4500)thencounter:=counter+1;elsestaIROUT=clk_38k;if(counter560)thencounter:=counter+1;elsestaIROUT=0;if(DATA(step)=0)thenif(counter565)thencounter:=counter+1;elsif(step32)thensta=s3;step:=step+1;counter:=0;elsesta=s0;step:=0;counter:=0;endif;elsif(DATA(step)=1)thenif(counter1690)thencounter:=counter+1;elsif(s

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1