红外密码遥控音乐播放器dd.doc_第1页
红外密码遥控音乐播放器dd.doc_第2页
红外密码遥控音乐播放器dd.doc_第3页
红外密码遥控音乐播放器dd.doc_第4页
红外密码遥控音乐播放器dd.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

红外密码遥控音乐播放器一、 设计任务:设计并制作一个红外遥控音乐播放器:采用红外发射器发射一串键控码作为密码,当接收端接收到相应密码时进行音乐播放。音乐由VHDL硬件描述语言产生,由Altera 的Quartus软件编制并下载到FPGA中执行。用表面贴装系统或者热转印系统自制印制板。分为三部分:1) 制作发送板。2)制作接收板。3)编制音乐程序。二、 红外密码遥控音乐播放器原理:2.1 红外密码遥控音乐播放器解密与音乐播放红外接收红外发送密码基本框图:2.2 红外遥控的原理:红外遥控的基本原理就是利用红外线来传递控制信号实现对控制对象的远距离控制的目的。就是由发射器发出红外指令信号,由接收器接收信号并对其进行处理。发射电路由密码控制红外线的发射,当输入密码正确时,发射电路发射红外线遥控信号,接收电路收到遥控信号之后进行解码并进行相应的控制工作。2.3 基本框架:产生5V电压作用于电路 编码器对信号进行编码 正确的密码被接收控制红外线的发射 解码并进行对应密码的音乐播放(或者直接按开关-进行对应的音乐播放)2.4 电路需要5V的稳压,其产生电路如图:下图的与非门和非门的门电路等构成的是载波振荡器,对载波进行幅度控制,载波频率约为38KHZ。编码器发出的脉冲信号作用于此振荡器。2.5 红外密码发射部分 : 采用地址加密编码器YYH26(VD5026)和解码器YYH28(VD5028)构成的红外线遥控密码系统,VD5026和VD5028的A0A11为加密地址编码输入端,除了A0只可编为三态(“1”,“0”和“开路”)外,A1A11均可编为四态(“1”,“0”,“开路”和“与A0相联”)。当编为三态时,有312531 000种不重复编码;当编为四态时,有4114 194 303种不重复编码。因此采用VD5026,VD5028作为编码、解码电路,要想破解密码是非常困难的。地址密码由BCD1和BCD2输入,由BCD1和BCD2将十进制数变成8421BCD码,编码器YYH26(VD5026)由(A0,A1,A2,A3,A4,A5,A6,A7)输入,再从D0输出串行编码脉冲,将A8-A11接低电平VSS,在制作时可将这几个端子一起纳入编码输入电路进行编码。发射电路中R1为编码器VD5026的振荡电阻,它和配对的解码器VD5028的振荡电阻R3应该取相同的阻值,以保证时钟频率一致,否则将不能译码。与非门U3A和U3B用CD4011。DS1、DS2可用任何型号的红外发光二极管。电源GB用5V三端稳压器(7805)实现。2.6 红外密码接收部分:1) TSOP1738内部电路TSOP1738经接收红外线的二极管接收红外线后经三个非门与电阻组成的线性放大电路,然后对红外接收二极管的调制载波进行放大,放大倍数可达8001000倍,由脉冲解调电路解调后,信号经反相后送至解码器YYH28(VD5028)的Di端。接收电路在收到发射器的遥控信号时YYH28(VD5028)VT输出高电平。为保证红外接收模块TSOPl738 接收的准确性,要求发送端载波信号的频率应尽可能接近38kHz。TSOPl738内部结构2)晶振及计数电路接收电路:接收电路中,用集成红外接收器TSOP1738,经CD4011反相后由解码器YYH28(VD5028)解码。当VD5028的加密地址编码与发射器中VD5026的加密地址编码完全相同时,VD5028的解码指示端VT输出高电平,三极管Q1导通,发光二极管LED发光,音乐播放器开始工作。否则,VD5028的VT端输出低电平,三极管Q1处于截止状态,发光二极管LED熄灭。电源用7805产生5V稳压,经过1117-3.3产生3.3V的电压为晶振提供电压使其振荡,由晶振产生32MHZ的信号提供给音乐播放部分电路。2.7 音乐播放部分:采用ALTERA公司的EPM570芯片带有3.3V的电源(不需要从外电路中加电源)。EPM570内部有570个逻辑单元, 相当于440 个宏单元, EPM570 内部分为两个I/O bank, 共116个通用I/O, 引脚延时为8.8ns, 满足系统的设计要求。在电路图中用两个插座P1与P4代替其引脚。三、 调试步骤:3.1调试发射电路1)调试与非门和非门的门路等构成的载波振荡器,对载波进行幅度键控调制,调试变阻器,载波频率约为38KHZ。D0端接高电位冲作用于振荡器。2)调试十进制开关和GAL20V8B,使开关输入的十进制密码与GAL20V8B输出的8421码对应。3.2调试接收电路1)调试晶体振荡器。2)调试采用地址加密编码器VD5026的输出波形和解码器VD5028的输入波形是否一致。3.3整体调试1)将GAL20V8B取下,测试当地址加密编码器VD5026的输入和解码器VD5028的输入都悬空时电路是否正常工作。2)测试完整电路,输入正确的密码,音乐播放器和指示灯是否都正常工作。四、测试数据及实验结果当输入正确密码时,音乐播放器开始正常工作。不同的密码对应不同的音乐。五、结论及使用说明1. 结论采用地址加密编码器YYH26(VD5026)和解码器YYH28(VD5028)构成的红外线遥控密码系统,有4114 194 303种不重复编码。因此采用VD5026,VD5028作为编码、解码电路,使用十分安全。大规模集成电路EPM570可以提供十分广泛的应用拓展。2. 方案存在的问题:1) 密码的更改需要专门的软件和编写工具,修改不易。2) 用户一旦忘记密码,将无法使用。3. 功能扩展方案(仅作理论讨论)增设密码更改设置功能,让用户自行更改密码。六、元器件清单序号元件名称型号数量1.编码器YYH26 (VD5026)12.解码器YYH28 (VD5028)13.大规模集成电路EPM570T100C5B14.4-2输入与非门CD401125.集成电路GAL20V8B16.晶体振荡器32MHz17.BCD2个28.功率放大器LM38619.发光二极管LED1个110.红外发射管波长0.94211.集成红外接收器TSOP 1738112.三端稳压器7805213.试验板214.开关小型215.电容器1000pF216.电容器100/63V417.导线焊料等18.三极管9013219.电位器10K 、20K各一个220.电阻5.1k121.电阻680k222.电阻100k123.电阻10k324.插座Pin84(方型)125.电源接线柱红黑-各2个4七、红外遥控密码音乐播放器电路特点:1.红外线为不可见光线,具有很强的隐蔽性和保密性,因此,在防盗、警戒等安全保卫装置中也得到了广泛的应用。2.红外线遥控的遥控距离一般为几米或几十米或更远一点。3.红外线遥控具有结构简单,制作方便,成本低廉、抗干扰能力强、工作可靠性高等一系例优点,是近距离遥控,特别是室内遥控的优选遥控方式。八、实习收获体会:第一,实习让我们巩固了平常的基础知识,增强了我们学习新知识的能力。在这几天中我们从各种途径学习了protel ,Quartus 等软件。第二,我们体会到了团队合作的重要性,大家发挥各自的长处积极配合。在合作中我们相互帮助共同提高。共同完成课程设计任务。第三,实习培养了我们动手能力,让我们不拘泥与书本知识,学会利用不同的资源,并增加了我们的探索怀疑精神。第四,实习培养了我们认真细心的态度,从电路原理图到PCB图到制作板子到焊接电路都需要我们步步细心,每一个微小的地方都需要认真对待,否则会影响到后续的工作,而前功尽弃。第五,做事情要有计划与安排,事情成功的概率才会更大。九、程序及原理图:程序:GAL20V8芯片内部密码设置程序:MODULE codingTITLE This a coding file”InputsQ PIN;”outputs a7 pin 15; a6 pin 16; a5 pin 17; a4 pin 18; a3 pin 19; a2 pin 20; a1 pin 21; a0 pin 22;a=a7.a0;c, x=.c. , .x . ;Equations when Q= =1 then a = 1,0,0,1,1,0,0,1 else a = 0,1,1,0,0,1,1,0 ;test vectors(Q-a7,a6,a5,a4,a3,a2,a1,a0)1-x,x,x,x,x,x,x,x;0-x,x,x,x,x,x,x,x;End;2) EPM570程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity final_system isport(clk:in std_logic;-时钟输入addr_key:in std_logic_vector(7 downto 0);-并行密码输入hex: out std_logic_vector(6 downto 0);-加计数器数码管显示selw: out std_logic_vector(2 downto 0);column:out std_logic_vector(7 downto 0);-点阵列输出sele: out std_logic_vector(2 downto 0);q: out std_logic_vector(7 downto 0);-点阵行输出end final_system;architecture one of final_system issignal we:integer range -1 to 1;signal choice:std_logic_vector(1 downto 0);signal addr_tmp: std_logic_vector(7 downto 0):=11111111;signal addr_p: std_logic_vector(7 downto 0):=11110000;signal addr_n: std_logic_vector(7 downto 0):=00001111;signal addr_stop:std_logic_vector(7 downto 0):=11001100;signal vt:std_logic;-使能signal vs:std_logic;-数码管和点阵选择signal addr:std_logic_vector(7 downto 0);signal chen:std_logic_vector(7 downto 0);beginprocess(clk) -点阵显示 variable sele_tmp:std_logic_vector(2 downto 0); variable selw_tmp:std_logic_vector(2 downto 0); variable count :std_logic_vector(2 downto 0); variable selw_hex0:std_logic_vector(23 downto 0); begin if clkevent and clk=1 then if selw_hex0=111111111111111111111111 then selw_hex0:=000000000000000000000000; else selw_hex0:=selw_hex0+1; if (selw_hex0=111111111111111111111111and count=011) then count:=000; else if(selw_hex0=111111111111111111111111and count=000) then count:=011; else if selw_hex0=111111111111111111111111 then count:=count+1; if selw_tmp=111then selw_tmp:=000; else if sele_tmp=111then sele_tmp:=000; else sele_tmp:=sele_tmp+1; if vt=0and vs=1then case sele_tmp is when 000=q=01000010; columnq=01000010; columnq=11111111; columnq=00011000; columnq=11111111; columnq=00010000; columnq=00101100; columnq=11000011; columnnull; end case; -关 else if vs=1and vt=1then case selw_tmp is when 000= if count=000then case sele_tmp is when 000=q=00000000; columnq=11111111; columnq=00100100; columnq=00100100; columnq=11111111; columnq=00100100; columnq=00101100; columnq=11000100; columnnull; end case; end if; -开 selw_tmp:=selw_tmp+1; when 001= if count=001then case sele_tmp is when 000=q=00000000; columnq=00011000; columnq=00100100; columnq=01000010; columnq=11111111; columnq=10000001; columnq=10000001; columnq=00000000; columnnull; end case; end if; -A selw_tmp:=selw_tmp+1; when 010= if count=010then case sele_tmp is when 000=q=10000000; columnq=10000000; columnq=10000000; columnq=11111000; columnq=10000100; columnq=10000100; columnq=10000100; columnq=11111000; columnnull; end case; end if; -b selw_tmp:=selw_tmp+1; when 011= if count=011then case sele_tmp is when 000=q=00000000; columnq=01111100; columnq=10000000; columnq=10000000; columnq=10000000; columnq=10000010; columnq=01111100; columnq=00000000; columnnull; end case; end if; -C selw_tmp:=000; when others=null; end case; end if; end if; end if; end if; end if; end if; end if; end if; end if; sele=sele_tmp; selw=selw_tmp; end process; process(clk,vt) -计数器 variable selw_hex:std_logic_vector(23 downto 0); variable sele_hex:std_logic_vector(3 downto 0); begin if clkevent and clk=1then if selw_hex=111111111111111111111111then selw_hex:=000000000000000000000000; else selw_hex:=selw_hex+1; if(selw_hex=111111111111111111111111and sele_hex=1010and choice=01)then sele_hex:=1111; else if(selw_hex=111111111111111111111111and sele_hex=0000and choice=10)then sele_hex:=1010; else if selw_hex=111111111111111111111111then sele_hex:=sele_hex+we; if vt=1and vshexhexhexhexhexhexhexhexhexhexhexhex=1000000; end case; else if vt=0 then hex=1111111; end if; end if; end if; end if; end if; end if; end if; end process; process(choice) -加减计数控制 begin if(choice=01)then -增 we=1; else if(choice=10)then -减 we=-1; else if(choice=11)then -保持 we=0; end if; end if; end if; end process; process(addr_key,addr) -比较 begin if(addr=addr_key) then vt=1; else vt=0; end if; end process; process(then) -循环赋值计数 begin if clkevent and clk=1then chen=chen+1; end if; end process; process(vt,clk,chen) -信号循环赋值 begin if chen=00and vt=0 then choice=00; addr=addr_tmp; vs=1; else if chen=01and vt=0 then choice=01; addr=addr_p; vs=0; else if chen=10and vt=0 then choice=10; addr=addr_n; vs=0; else if chen11and vt=0 then choice=11; addr=addr_stop; vs=0; end if; end if; end if; end if; end process;end one;end behavioral;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity automusic isport(clk,Auto:in std_logic; index2:in std_logic_vector(7 downto 0); index0: out std_logic_vector(7 downto 0); end automusic;architecture Behavioral of automusic is signal count0:integer range 0 to 31; signal clk2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论