微机原理应之伟大作业_第1页
微机原理应之伟大作业_第2页
微机原理应之伟大作业_第3页
微机原理应之伟大作业_第4页
微机原理应之伟大作业_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

<感应电控门<

TeamProject<应之伟 <><><>l1sensor包含三根线,分别是电源/地/信号输出,10。门的开关采用直流电机驱动,要设计总线和电机之间的接口电路。可参考P413。CASM编程。迟时间5秒钟(用8255的方式1,因为延迟为5s,所以CLK的频率应该很低才能满足如此如果连续有人进门,则应保持开的状态(1的原因)试设计软硬件,以及实验环21s以内,以免人来到时等待时间过长。这对传感器的要求比较高,1m。序。 3如流所示0FFH。B基本和传感器信号同步。1A=0FFH时,B8255,使占空比50%。这样电机就可以停止运转且维持打开状态。A=0FFH时,从A“0B=0。由于A0FFH,设计此时令控制电机逆向转动。100FFH,B=1A开始计数,至A=0FFHA=0,即门完全闭上。主要功能:采用8086为主控制单元,8255A作为 脉冲宽度调制基本原理:等的脉冲列作为波形,通过改变使电压与频率协调变化。可以通过调整的周期的占空比而达到控制会输出信号“1“0字信号来控制电机的运动。电机的速度调节通过实现,由CPU控制8255一I/OQ11(DELAY5s的倒计时。传感器信0:若门开启,且维持5s1OUT应能使PRCLR的相差正好颠 82552)project的主要要求。当有人靠近、传感器给出信号“1”时,CPU开始给8255传递信号。经8254调整触发器的占空比(Q的Q50%5秒之内没有人靠近,门关闭时,触发器的占空比50%。5软件设计(1页完整程ASM程;***************根据CHECK配置信息修改下列符号值;INTR对应的中断矢;INTR对应PC8259的OCW1地;INTR对应PC8259的OCW2地;INTR对应的中断;PCI;片选IOY0对应的端口始地;片选IOY1对应的端口始地;AD0809;8255的A;8255的B;8255的C口地;8255的控制寄存;PC机内82540端口;PC机内8254控制DW128DUP(?) LABELWORDSTACK1ENDSDATA ;字符 DB'As_Spd:Cu_Spd:',0AH,0DH,'$' DB'***END***',0AH,0DH,'$' DB DB ;换行,回 DW ;保存INTR原中断处理程 DW ;保存INTR原中断处理程 DB ;保存INTR原中断字的变CS_BAK1DW ;保存定时器0中断处理程 IP_BAK1DW ;保存定时器0中断处理程 IM_BAK1DB ;保存定时器0中断字的变DBDW;A/DDW;积分分离DW;DW;积分系DW ;微分系DWDBDWDBDBDBFDBDBDWDWDWDBDBDBDBDBDWDWDWDWDWDWDWDBDWCODEASSUMESTART:MOVMOVMOVDX,OFFSETTABLE1MOVAH,09HINTMOVDX,OFFSETTABLE2 ;显示字符串2MOVAH,09HINTMOVAX,0000HMOVES,AXMOVDI,0020HMOVMOV ;保存定时器0中断处理程序偏移地MOVAX,OFFSETMOV ADDMOVMOV ;保存定时器0中断处理程序段地MOVAX,SEGMOV MOV ;保存INTR原中断ANDOUT ;打开定时器0中断MOVDX,PCI_INTCSR ;初始化PCI卡中断控制寄存器MOVAX,1F00H ;向PCI_INTCSR中写入003F1F00HOUTDX,AXADDMOVAX,003FHOUTDX,AXMOVDI,INTR_IVADDMOVAX,ES:[DI]MOV ;保存INTR原中断处理程序偏移地MOVAX,OFFSETMOV ADDMOVMOV ;保存INTR原中断处理程序段地MOVAX,SEGMOV ;设置当前中断处理程序段地MOVDX,INTR_OCW1 MOV ;保存INTR原中断ANDOUT ;打开INTR的中断MOVVADD,0000H MOVZV,00HMOVMOVZVV,00HMOVCK,00HMOVYK,0000HMOVCK_1,00HMOVEK_1,0000HMOVAEK_1,0000HMOVBEK,0000HMOVBBB,00HMOVVBB,00HMOVR0,0000HMOVR1,0000HMOVR2,0000HMOVR3,0000HMOVR4,0000HMOVR5,0000HMOVR6,0000HMOVR7,00HMOVR8,0000HMOVMARK,00HMOVF,01HMOVAAAA,7FHMOVVAA,7FHMOVTC,00HMOVAL,80H ;初始化8255MOVDX,MY8255_MODEOUTDX,ALMOVAL,00HMOVDX,MY8255_BOUTDX,ALMOVDX,PC8254_MODE ;初始化PC0,定时5sMOVAL,36HOUTMOVMOV ;500分OUTDX,ALMOVAL,01HOUTDX,ALMOVDX,MY8254_COUNT2 MOVAL,00H ;18432分频OUTDX,ALMOVAL,48HOUTDX,AL MOVAL,TS SUBAL,TCJNCM1 MOVTC,00HMOVDX,AD0809;启动A/D转OUTMOV ;由A/D读入数 MOVCH,04HMOVAH,00HDIVCHMOVAH,00HMOVSPEC,AXCALLMOVDX,OFFSETEMTMOVAH,09HINTMOVMOVMOV ;得到反馈量CALL ;调用PID子程序,得到控制量MOV 输SUBAL,80H MOVAAAA,ALJMPCOU MOVAL,10H ;10HMOVAAAA,AL MOVSUBAL,AAAAMOVBBB,ALMOV ;将反馈值YK送到屏CALLMOV ;回MOVAH,02HINT21HMOVDL,0DHMOVAH,02HINT21HMOVAH,1 INT16H EXIT:MOVAL,00H MOVDX,MY8255_BOUTMOVDX,OFFSETENTMOVAH,09HINTMOVDX,OFFSETTABLE3 ;显示字符串3MOVAH,09HINTMOV ;恢复PC机定时器0状MOVAL,36HOUTDX,ALMOVDX,PC8254_COUNT0MOVAL,00HOUTDX,ALMOVAL,00HOUTDX,ALMOV ;恢复PCI卡中断控制MOVAX,0000HOUTDX,AXMOV ;恢复INTRMOVMOVMOV ;恢复INTR原中断处理程序偏移地MOVES:[DI],AXADDDI,2MOV ;恢复INTR原中断处理程序段地MOVMOV ;恢复INTR原中断寄存器的MOVAL,IM_BAKOUTDX,ALMOVMOV ;恢复定时器0中断处理程序偏移地MOVES:[DI],AXADDDI,2MOV ;恢复定时器0中断处理程序段地MOVMOVOUT ;恢复MOVAX,4C00HINT21HMYISRPROC ;系统总线INTR中断处PUSHAXPUSHCXPUSHMOVAX,DATAMOVDS,AXMOVAL,MARKCMPAL,01H MOVMARK,01HJMPIN2 MOVMARK,00H MOVDX,0000HMOVAX,03E8HMOVCX,VADDCMPCX,0000H DIV MOVMOVVADD,0000H MOVAL,ZVMOV MOV ;清PCI卡控制寄存器SUBDX,19H MOVDX,PCI_INTCSRADDDX,2MOVAX,003FHOUTDX,AXMOV ;向PC机内部8259发送中断结束命MOVAL,20HOUTDX,ALMOVAL,20HOUT20H,ALPOPDXPOPPOPAXMYISRTIMERISRPROC ;PC机定时器0中断处PUSHAXPUSHCXPUSHMOVAX,DATAMOVDS,AXINCTC ;1CALLKJCMP INCCMPVADD,0700H MOVVADD,0700HMOVMARK,00H MOV ;中断结束,发EOI命OUT20H,ALPOPDXPOPPOPAXTIMERISRKJPROC ;子程PUSHCMP ;为1,产 的高电JNZTEST2CMPVAA,00HJNZANOT0MOVF,02HMOVAL,BBBRCRAL,01HMOVVBB,ALJMPTEST2ANOT0:DECMOVAL, ;PB0=1电机转MOVDX,MY8255_BOUTDX,ALTEST2:CMPF ;为2,产 的低电JNZOUTTCMPVBB,00HJNZBNOT0MOVF,01HMOVAL,AAAARCRAL,01HMOVVAA,ALJMPOUTTBNOT0:DECMOV ;PB0=0电机停MOVDX,MY8255_BOUTDX,ALOUTT:POPKJ MOVAX,SPEC ;PID子程序SUBAX,YK ;求偏差EKMOVR0,AXMOVR1,AXSUBAX,EK_1MOVR2,AXSUB ;求MOVBEK,AXMOVR8,AXMOV ;求偏差变化量MOVEK_1,AXMOVAX,R2MOVAEK_1,AXTESTR1,8000H ;若偏差EK为正数,则不需要求补NEG ;若偏差EK为负数,则求偏差EK的补 MOV ;判断偏差EKSUB ;在积分分离值范围内,则跳转到II,计算积分项MOVR3,00H ;若不在积分分离值范围内,则将积分0JMP ;计算微分 MOV ;计算积分项,结果放在R3变量中MOV ;其中TS和KII均为正数,所以R3的正负由EK决MOVCX,R1MULCXMOVCX,KIIDIVCXMOVR3,AXTEST NEGR3 TESTBEK,8000H ;判断BEK的正负 ;为正数,则BEK不NEG ;为负数,则求BEK的补DDD1:MOVAX,BEK MOVCX,KDDMULCXPUSHAXPUSHDXMOVAL,TSMOV ;将微分项缩小8MOVCX,0008HMULCXMOVCX,AXPOPDXPOPDIVCXMOVR4,AXTEST NEG ;为负数,则微分项结果R4 MOV ;积分项和微分项相加,结果放在R5ADDAX,R4MOV MOVAX,R5ADDMOV MOVAX,R6 ;计算KPP*R6MOVCX,KPPIMULMOVCX,1000HIDIVCXMOVRCLAH,01H RCRAL,01H CMPCH,00H MOVAL,7FHJMPLLL2LLL1:CMP MOVAL,80HLLL2:MOVR7,AL ADDAL,CK_1 MOVADDAL,80HMOVCK,ALTEST;CKJNZ;若为负溢出,则赋给赋极值TESTJNZMOV;若为正溢出,则赋给正极值JMPMOV;若为负溢出,则赋给负极值JMPTESTJNZMOVJMPMOVJMPDECSHOWPROCNEAR MOVDX,0MOV ;计算DIVADD ;商+30HASCIIMOVAH,0EHINT10HADD ;余+30H,即为个位ASCIIMOVAH,2INT21HDECSHOWENDPCODEENDSENDTeamProject<LED显示控制模块(8段数码管形式简单键盘模块和键盘矩阵模块(集成版本<矩阵要分别在不同的模块中实现,其中上常用的8255在这里完全被FPGA替代。的标准键盘(如:标准101/102键盘或自然PS/2键盘)来实现人与计算机之间的接再言之,LED8255CPULED控制的连接与通FPGACPU8255A控制显示器。8255AAPA7~PA074LS07同相驱动器与数码显示器相连,用来输出显LED8255AALED数码显示器的段控制端口。对于这个模CPULED以及按键这三个模块工作FPGAISEMODEL-SIM的配合使用,先参考馆和网络上的有限资源,我们了解了FPGA的主要方法,通过基于FPGA的语言描述8255被替代,进行了相当多的思考,决定主要通过一个锁存器和一个缓冲器来 LED显示控制模块上的应该亮 和ISE软件,在软件上模拟我们需要的软件和程序,同时控制我们需要因为要在电脑上测试我们的设计效果,我们需要初步掌握ISE和 方案FPGA实的,需要单独设计成的小键盘。现代EDA(电子设计自动化)技术提供了一种很好的途以上的流使我们希望达到的较为完美的效果这样的设计之下的键盘扫描模块可以基本CPUCPU的运行负CPU通过软件方法对键盘进行扫描,键盘扫描程序的流CPU定期执行键盘扫描程序,从而获得按键键值,这种扫 FPGALED八段数码管控制模块先通过原始的8255的控制来看原理在这种方案中,LED数码显示器为共阴极接法。CPU8255A8255A端LED8255AALED8255AB的PB7~PB074LS06LEDLED的显示位,8255A的端BLEDB口中一位输出为“1”时,经反相驱动,便在相应8CPU送出一个显示代码时,各数码管的阳极都收到了此代码。但是,只有位控制码中对应的数码管才得到导8LEDA送出的代码送到相应的位上去显示。此时,8255AA送出的一个七段码,虽然各位LED都能接收到,但由于端口B只有一位输出高电平,所以只有一个LED的相应通显LEDALEDB依次选中一位8LED输送显示代码和扫描各位通过借鉴以上的流,我们可以绘制出在我们能力范围之内的通过FPGA控制的响应流其中通过FPGA来编译一个缓存器和锁存器来实现CPU与LED以及键盘矩阵之间的<电路图LEDlibraryuseIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_TEXTIO.ALL;USESTD.TEXTIO.ALL;entityledport(CLK: :::::::::::::end

IfCS='1'IF(Y3='0'ANDY2='0'ANDY1='0'ANDY0='0')THEN B7<='1';B6<='0';B5<='0';B4<='0';B3<='0';B2<='0';B1<='0';ELSIF(Y3='0'ANDY2='0'ANDY1='0'ANDY0='1')THEN B7<='1';B6<='1';B5<='1';B4<='1';B3<='0';B2<='0';B1<='1';ELSIF(Y3='0'ANDY2='0'ANDY1='1'ANDY0='0')THEN B7<='0';B6<='1';B5<='0';B4<='0';B3<='1';B2<='0';B1<='0';ELSIF(Y3='0'ANDY2='0'ANDY1='1'ANDY0='1')THEN B7<='0';B6<='1';B5<='1';B4<='0';B3<='0';B2<='0';B1<='0';ELSIF(Y3='0'ANDY2='1'ANDY1='0'ANDY0='0')THEN B7<='0';B6<='0';B5<='1';B4<='1';B3<='0';B2<='0';B1<='1';ELSIF(Y3='0'ANDY2='1'ANDY1='0'ANDY0='1')THEN B7<='0';B6<='0';B5<='1';B4<='0';B3<='0';B2<='1';B1<='0';ELSIF(Y3='0'ANDY2='1'ANDY1='1'ANDY0='0')THEN B7<='0';B6<='0';B5<='0';B4<='0';B3<='0';B2<='1';B1<='1';ELSIF(Y3='0'ANDY2='1'ANDY1='1'ANDY0='1')THEN B7<='1';B6<='1';B5<='1';B4<='1';B3<='0';B2<='0';B1<='0';ELSIF(Y3='1'ANDY2='0'ANDY1='0'ANDY0='0')THEN B7<='0';B6<='0';B5<='0';B4<='0';B3<='0';B2<='0';B1<='0';ELSIF(Y3='1'ANDY2='0'ANDY1='0'ANDY0='1')THEN B7<='0';B6<='0';B5<='1';B4<='1';B3<='0';B2<='0';B1<='0';B0<='1';ENDIF;ENDENDPROCESS;endBEHAVIORAL;Y0Y309libraryuseIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;USEIEEE.STD_LOGIC_TEXTIO.ALL;USESTD.TEXTIO.ALL;entityKEYBOARDport(CS :in : : : : : : : : :in INT:out :out :out :out :out end

IFCS='1'IFI0='1'THENELSIF AFTER1NS;ELSIFI2='1' AFTER1NS;ELSIFI3='1' AFTER1ENDIFJ0='1' AFTER1NS;ELSIFJ1='1'THEN AFTER1NS;ELSIFJ2='1'THEN AFTER1NS;ELSIFJ3='1'THEN INT<='0'AFTER1ENDIF;ENDIF;ENDPROCESS;endBEHAVIORAL;方案UART(通用异步收发器)是广泛使用的串行数据传输协议使用vhdl将uart的功能集成。接收部分接收部分libraryuseIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;use mentthefollowinglibrarydeclarationif----anyXilinxprimitivesinthis entityTOPPort(clk32mhz,reset,rxd,xmit_cmd_p_in:instd_logic;txdbuf_in:instd_logic_vector(7downto0);redbuf_in:instd_logic_vector(7downto0);endARCHITECTUREBehavioralofTOPiscomponentreceiverred:instd_logic_vector(7downto0);rbuf:outstd_logic_vector(7downto0));endcomponentport(bclkt,resett,xmit_cmd_p:in

温馨提示

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

评论

0/150

提交评论