信号检测与显示功能设计.docx

上传人:大张伟 文档编号:10687544 上传时间:2021-05-31 格式:DOCX 页数:38 大小:417.10KB
返回 下载 相关 举报
信号检测与显示功能设计.docx_第1页
第1页 / 共38页
信号检测与显示功能设计.docx_第2页
第2页 / 共38页
信号检测与显示功能设计.docx_第3页
第3页 / 共38页
信号检测与显示功能设计.docx_第4页
第4页 / 共38页
信号检测与显示功能设计.docx_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《信号检测与显示功能设计.docx》由会员分享,可在线阅读,更多相关《信号检测与显示功能设计.docx(38页珍藏版)》请在三一文库上搜索。

1、微机原理及接口技术课程设计报告班 级:自动化0800班学 号:0000000000姓 名:无名氏指导老师:李志民中南大学目录一、设计要求2二、实验环境2三、实验原理2四、硬件接线图8五、程序流程图10六、源程序清单17七、调试问题及心得体会29八、参考文献3038信号检测与显示功能设计一、设计要求:(1)、分别用C语言和汇编语言编程完成硬件接口功能设计;( 2) 、硬件电路基于80x86 微机接口电路的采样接口电路;( 3) 、程序功能要求:小键盘给定、数码管(屏幕)显示,完成对数字开关量和模拟量的采样和显示;( 4) 、具备本地及远程(串行方式)功能。二、实验环境汇编语言编译器,唐都试验箱三

2、、实验原理设计要求是 小键盘给定、数码管(屏幕)显示,完成对数字开关量和模拟量的采样和显示, 基本思路是: 通过小键盘选择所需操作,即本地还是远程,数字还是模拟。若选定本地数字,则进入数字采样子程序, 通过读取开关量来确定输出值并通过数码管显示, 若选定本地模拟,则进入模拟量采样子程序,通过A/D 转换器读取数值,调用数码管显示程序,在本地显示。若选择远程显示,则将采样后的值进行发送,在接受端接收后再显示。本次设计采用子程序调用的方式进行,在主程序中,主要是一个字幕显示程序, 通过 9 号功能调用显示欢迎字幕, 提示小键盘各按键的功能选择。 然后进入 scan 函数, 并设置由 scan 函数

3、返回后的循环,判断是否退出主程序,否则再次显示字幕,选择需要的循环。I.键盘扫描实验系统中的键盘及数码管显示单元提供了4X4的16个按键。四个数码管也接成了扫描电路,公用电位控制信号 ADp各自的公共端及列选通信号X1X4扫描彳言号为Y1Y4电路如图一所示:t工|工二Y4V0008800 0 0 0 080并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行 的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是Intel公司生产的 通用并行I/O接口芯片,它具有A、B、C三个 并行接口,用+5V单电源供电,能在以下三种方式下工作

4、:方式0-基本输入/出方式、方式圉3器551峰出1-选通输入/出方式、方式2-双向选通工作方式。8255的引脚如图二所示,8255工作方式控制字和C 口按位置位/复位控制字格式如图三所示D7 D6 D5 04 a D2 DI DO :C 口吃4位 口睡出 1输儿出A 口输物 Bo 10 4 Ko1疔式1C 口高4位。输出出入 匚辆新 A O1D7DCD5D3D2DIDO不用置位更位1,J: 1C口的位边择 位 D3D2D1 0 0 0 0 10 0 1 2 0 10 3 0 11 4 1 0 0 5 10 1 6 110 7 13 1方式选择 003式。 01斤式1 lx方式?laJ工作方式控

5、制于(b) C口按位百危复位控匕不圉豆皮彭控制庄卷式在程序中,初始化8255,方式0, A 口、B 口输出,C 口低4位输 入。键盘扫描模块中,首先进行扫描,即 A 口全部送零,读出C 口状 态,若全为高电平,则说明没有键按下,继续扫描。若有的位为低电 平,判断是否为抖动,即延时 20ms后再重新扫描,若为抖动则重新 扫描,若却有键按下则判断是哪一行有键按下,若为0EH(1110B)则为第一行有键按下,转入本地数字量处理程序,若为0DH(1101B则为第二行有键按下,转入本地模拟量处理程序,若为0BH(1011)则为第三行有键按下,转入远程数字量处理程序,若为 07H(0111)则为第 一行有

6、键按下,转入远程模拟量处理程序。数码管输出模块中,首先将采集到的8位数字量存储起来,先取 高八位,查表转化成为共阴极码。然后选通第一个数码管即8255A 口 输出0FEH(A 口只用到了第四位)。然后将转换成的共阴极码通过 B 口输出。延时。然后将低四位数据通过同样方式输出到第二个数码管上(8255A 口输出0FDH。需要注意的是第一个数码管对应的是最低 位,并以此类推。II.数字开关量采样-Fi201一vccA0219 bG输入接口 一般用三态缓冲器实现,储,一匚嚣A5-14 4外部设备输入数据通过三态缓冲器,通第三;界巳言GNDI WIB:过数据总线传送给微机系统。74LS245【二”是一

7、种8通道双向的三态缓冲器,其管脚结构如图四所示。 DIR引脚 控制缓冲器数据方向,DIR为1表示数据由A7:0至B7:0 , DIR为 0表示数据由B7:0至A7:0。G引脚为缓冲器的片选信号,低电平 有效。在本地和远程的数字量采样子程序中,采样的方法是一样的。即每隔一段时间从基本输入单元读一次数据,再转入输出子程序或远程 发送子程序,转换成相应的共阴极码或ASCH码后发送。III.模拟量采样2273%425524623AD0 809 环92010191112171316N15LEP-651QRE一 B-nA-ABC ADDDDDDADC0809完成模拟信号到数字信号的转 换。输入模拟信号由A

8、/D转换单元可调电位 器提供的05V。ADC0809包括一个8位的逐次逼近型的 ADCSB分,并提供一个8通道的模拟多路开关和联合寻址逻辑。用它可直接输入8个单端的模拟信号,分时进行A/D转换,在多点巡回检测、过程控制等应用领域中使用非常广泛。ADC0809勺主要技术指标为: 分辨率:8位 单电源:+ 5V 转换时间:取决于时钟频率 模拟输入范围:单极性05V 时钟频率范围:10KHz- 1280KHzADC0809勺外部管脚如图五所示模拟量通过ADC0809卖入,通过OU甘旨令启动A/D转换,然后经 数据线读入。每隔一段时间采样一次,采样后的数据经OUTS序输出, 或经SENDS序发送。循环

9、操作和数字量相同。IV.串行通信16550是一种连接任何类型虚拟串行接口的可编程通信接口,与DO一 DI D2一 D3 D4- D5 D& RCLK RXD TXD CSO 一 CS1 CS2t BA1LDOUTc3CPTXOUT一 cWR-CWD 力 9 S 7 6 5 4m一1 D* li 6 4 - J 1-1 4 r,31- rh hj 3 3 T J 3J - 7 - - 1 1 - iVCCRIDCDDSR CTSMRDU:DTRRTS0UT2INTRRXRDYA?口 ADSa-TXRDYDDISIntel微处理器完全兼容的使用非常广泛的 异步接收器/发送器(UART。它内置了 1

10、6 字节的FIFO缓冲,最大通讯速率可达 115Kb/s,是现代基于微处理器设备包括 PC 机和许多调制解调器的最普遍的通信接口。 16550的引脚如图六所示。串行通讯分发送端和接收端两部分。发送端将数字量装换成2个 ASCZ码表示的十六进制数,然后将转化成的十六进制数发送,即写 到16550的0号端口。在输出端调用中断服务子程序,从0号端口读 出数据。需要注意的是,在屏幕输出时要设置光标回零,使其在屏幕 的同一位置显示数据,不然将出现满屏的现象。四、硬件接线图I、键盘扫描及显示电路XD7XDf0-0on a- 4 56 7 & B _B B R B B B PIPI斑PIPEPIPEPI55

11、元2 Bg目D7DCD5D4D3D2D1D0AlAO虹RDCS盘数管示元 键及码显单 ABCDEFGDPXJX2灯X4Yll2Y3Y4o 1* 1-rJK,pc,pcpc-XD4由七桂盘初揭及里东包瞄口、数字量采样电路开关及LED显示单元Q 1 E 34 56 7 KK L KKKKK012 3 4 5 7 EBB B&B B BIII lull输出本输基入_ 6 5 4 3-1-10 DDDDDDDD立7 C CTO64 QQXD3 7ZTXD1XDOXIQW C CXIOR 一 门I0Y1田、模拟量采样电路OOABCoIN? KCPDS up cc76543210 dddddddd出九模料

12、/束咻电器IV、串行通讯实验电路加1655。单元INTKCLK INCS- 6 5 4 - J 1 o r=1 0DDDDDDDD AAA五、程序流程图I、主程序MAINn、键盘扫描子程序SCAN田、数字量本地显示子程序IV、模拟量本地显示子程序V、数字量采样远程发送子程序VI、模拟量采样远程发送子程序即、本地输出子程序OUT1川、远程发送子程序 SENDIX、中断接收显示子程序关中断机始化PCIINTC0R门口派中此斗盍位开中断关中断慎攵PCI INTCSiR快且INTR中断矢星S VINTR. 13 U敲不“中断 N D05结束六、程序清单I 、本地采样显示,远程发送端;# 根据 CHEC

13、K 配置 #IOY0EQU0C400HIOY1EQU0C440HIOY2EQU0C480HIOY3EQU0C4C0H;# ;M8255_AEQUIOY0M8255_BEQUIOY0+01H*4M8255_CEQUIOY0+02H*4M8255_CTL EQUIOY0+03H*4IO_BEQUIOY1AD0809EQUIOY2M16550_0EQUIOY3M16550_1EQUIOY3+01H*4M16550_3EQUIOY3+03H*4M16550_4EQUIOY3+04H*4M16550_5EQUIOY3+05H*4DATA SEGMENTTTABLE DB3FH,06H,5BH,4FH,6

14、6H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HW1 DB=,0DH,0AH,$W2 DB Please have a choice: 1.Local & Digital 2.Local & Analog 3.Remote & Digital 4.Remote & Analog,0DH,0AH,$W3DB 1.Local & Digital,0DH,0AH,$W4DB 2.Local & Analog,0DH,0AH,$W5DB 3.Remote & Digital,0DH,0AH,$W6DB 4.Remote & Analog,0DH,0AH,$D

15、ATA ENDSSTACK1 SEGMENT STACK STACKSTT DB 200 DUP(?)TOP EQU LENGTH STTSTACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK1MAIN PROC FARSTART: MOV AX,STACK1MOV SS,AXMOV SP,TOPMOV AX,DA TAMOV DS,AXMOV DX,M8255_CTLMOV AL,81HOUT DX,ALCALL DALL Y;初始化 8255,方式 0, A 口、 B 口输出, C 口低 4 位输入MOV DX,MY16550_3MO

16、V AL,80HOUT DX,ALCALL DALL Y; 设置 16550 线路控制寄存器MOV DX,MY16550_0MOV AL,0CHOUT DX,ALCALL DALL YMOV DX,MY16550_1MOV AL,00HOUT DX,ALCALL DALL Y; 设置除数寄存器低字节0CH; 设置除数寄存器高字节00HMOV DX,MY16550_3MOV AL,1BHOUT DX,ALCALL DALL Y; 设置线路控制寄存器,初始化数据格式MOV DX,MY16550_4MOV AL,03HOUT DX,ALCALL DALL YMOV DX,MY16550_1MOV A

17、L,00HOUT DX,ALCALL DALL YM1:MOV DX,OFFSET W1MOV AH,9INT 21H; 设置 MODEM 控制寄存器; 设置中断允许寄存器; 中断不打开MOV DX,OFFSET W2MOV AH,9INT 21HMOV DX,OFFSET W1MOV AH,9INT 21HCALL SCANCALL DALL YCALL DALL YMOV AH,1INT 16HJZ M1QUIT: MOV AH,4CHINT 21HRET; 键盘扫描子程序MAIN ENDPSCAN PROC NEARPUSH AXPUSH DXPUSH CX51: MOV AL,00HM

18、OV DX,M8255_AOUT DX,ALMOV DX,M8255_CIN AL,DXAND AL,0FHCMP AL,0FHJE S1MOV CX,16EAH52: LOOP S2IN AL,DXAND AL,0FHCMP AL,0FHJZ S1MOV AL,0;MOV CL,053: MOV DX,M8255_AOUT DX,ALMOV DX,M8255_CIN AL,DXAND AL,0FH; CALL OUT1CMP AL,0EHJE S4CMP AL,0DHJE S5CMP AL,0BHJE S6CMP AL,07HJE S754: MOV AL,01HMOV DX,OFFSET

19、W3CALL out1CALL DALL YCALL LDJMP Q155: MOV AL,02HMOV DX,OFFSET W4CALL out1CALL DALL YCALL LAJMP Q156: MOV AL,03HMOV DX,OFFSET W5CALL out1CALL DALL YCALL RDJMP Q157: MOV AL,04HMOV DX,OFFSET W6CALL out1CALL DALL YCALL RAQ1: POP CXPOP DXPOP AXRETSCAN ENDPOUT0 PROC NEARMOV AH,9INT 21HRETOUT0 ENDPLD PROC

20、 NEAR PUSH DX PUSH CX PUSH BX PUSH AXL1: CALL DALL Y MOV DX,IO_B IN AL,DX CALL OUT1 MOV AH,1 INT 16HJZ L1 POP AX POP BX POP CX POP DX RETLD ENDPLA PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DXL2: MOV DX,AD0809 OUT DX,AL CALL DALL Y;本地数字采样子程序;本地模拟采样子程序;启动 A/D 转换MOV DX,AD0809IN AL,DXCALL OUT1MOV AH,1INT 1

21、6HJZ L2POP DXPOP CXPOP BXPOP AXRETLA ENDP;远程数字采样子程序RD PROC NEARPUSH DXPUSH CXPUSH BXPUSH AXL1: CALL DALL YMOV DX,IO_BIN AL,DX CALL SENDMOV AH,1INT 16HJZ L1POP AXPOP BXPOP CXPOP DXRETRD ENDPRA PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DXL2: MOV DX,AD0809 OUT DX,AL CALL DALL Y MOV DX,AD0809 IN AL,DX CALL

22、 SEND MOV AH,1 INT 16HJZ L2 POP DX POP CX POP BX POP AX RETRA ENDPOUT1 PROC NEAR MOV CH,AL ;AND AL,0F0H;本地数码管显示子程序;远程模拟采样子程序;启动 A/D 转换MOV CL,4SHR AL,CLMOV BX,OFFSET TTABLEAND AX,000FHADD BX,AXMOV AL,BXPUSH AXMOV DX,M8255_AMOV AL,0FEH;LED 低电平选通OUT DX,ALPOP AXMOV DX,M8255_BOUT DX,ALCALL DALL YMOV AL,C

23、HMOV BX,OFFSET TTABLEAND AX,000FHADD BX,AXMOV AL,BXPUSH AX;PUSH DXMOV DX,M8255_AMOV AL,0FDHOUT DX,AL;POP DXPOP AXMOV DX,M8255_BOUT DX,ALCALL DALL YRETOUT1 ENDPSEND PROC NEARMOV CH,ALAND AL,0F0HMOV CL,04HSHR AL,CLCMP AL,09HJG A1ADD AL,30HJMP A2A1:ADD AL,37HA2:MOV DX,MY16550_0MOV AL,AAOUT DX,ALCALL DA

24、LL YMOV AL,CHAND AL,0FHCMP AL,09HJG A3ADD AL,30HJMP A4A3:ADD AL,37HA4:MOV DX,MY16550_0MOV AL,AAOUT DX,ALCALL DALL YRETSEND ENDPDALL Y PROC NEAR;延时子程序PUSH CXPUSH AXMOV CX,0300HD1:MOV AX,3000HD2:DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALL Y ENDPCODE ENDSEND STARTII 、远程接收端;# 根据 CHECK 配置 #INTR_IV ADDEQU01CCH

25、INTR_OCW1EQU0A1HINTR_OCW2EQU0A0HINTR_IMEQU0F7HPCI_INTCSREQU9438HIOY0EQU9C00H;# ;MY16550_0EQUIOY0+00H*4MY16550_1EQUIOY0+01H*4MY16550_3EQUIOY0+03H*4MY16550_4EQUIOY0+04H*4STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENTCS_BAK DW ?IP_BAK DW ?IM_BAK DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA

26、START: MOV AX,DATAMOV DS,AXCLIMOV DX,PCI_INTCSRSUB DX,19H; 初始化 PCI 卡中断控制寄存器;替换 INTR 的中断矢量IN AL,DXMOV DX,PCI_INTCSRMOV AX,1F00HOUT DX,AXADD DX,2MOV AX,003FHOUT DX,AXMOV AX,0000HMOV ES,AXMOV DI,INTR_IV ADDMOV AX,ES:DIMOV IP_BAK,AXMOV AX,OFFSET MYISRMOV ES:DI,AXADD DI,2MOV AX,ES:DIMOV CS_BAK,AXMOV AX,S

27、EG MYISR;设置中断屏蔽寄存器,打开INTR 的屏蔽位; 设置 16550 线路控制寄存器MOV ES:DI,AXMOV DX,INTR_OCW1IN AL,DXMOV IM_BAK,ALAND AL,INTR_IMOUT DX,ALMOV DX,MY16550_3MOV AL,80HOUT DX,ALCALL DALL YMOV DX,MY16550_0MOV AL,0CHOUT DX,ALCALL DALL YMOV DX,MY16550_1MOV AL,00HOUT DX,ALCALL DALL YMOV DX,MY16550_3MOV AL,1BHOUT DX,ALCALL DA

28、LL YMOV DX,MY16550_4MOV AL,03HOUT DX,ALCALL DALL YMOV DX,MY16550_1MOV AL,01HOUT DX,ALCALL DALL Y; 设置线路控制寄存器,初始化数据格式; 设置 MODEM 控制寄存器; 设置中断允许寄存器STIWAIT1: MOV AH,1INT 16HJZ WAIT1QUIT: CLIMOV DX,PCI_INTCSRMOV AX,0000HOUT DX,AXMOV AX,0000HMOV ES,AXMOV DI,INTR_IV ADDMOV AX,IP_BAKMOV ES:DI,AXADD DI,2MOV AX

29、,CS_BAKMOV ES:DI,AXMOV DX,INTR_OCW1MOV AL,IM_BAKOUT DX,AL STIMOV AX,4C00H;中断子程序INT 21HMYISR PROC NEARMOV DX,MY16550_0IN AL,DXMOV DL,ALMOV AH,02HINT 21HMOV DX,MY16550_0IN AL,DXMOV DL,ALMOV AH,02H; 回车,置光标到行首INT 21HMOV DL,0DHMOV AH,02HINT 21HOVER: MOV DX,PCI_INTCSR SUB DX,19HIN AL,DXMOV DX,PCI_INTCSRAD

30、D DX,2MOV AX,003FHOUT DX,AXMOV DX,INTR_OCW2MOV AL,20HOUT DX,ALMOV AL,20HOUT 20H,ALIRET;延时子程序MYISR ENDPDALL Y PROC NEARPUSH CXPUSH AXMOV CX,0100HD1:MOV AX,2000HD2:DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALL Y ENDPCODE ENDSEND START七、调试问题及心得体会在程序编完之后的调试过程中同样遇到了很多问题。 例如刚开始调试时,将所有硬件的线路接好,然后运行,结果出现死机的现象, 且重新启

31、动找不出导致死机的原因。 故调试工作得不到进展。后来逐渐探索出了一条逐渐发现问题,解决问题的道路:分块调试。 即将源程序能单独完成功能的一部分保存在另一个文件中,仅连接其所需硬件线路,调试其功能。待各模块均调试好之后,再将它们逐个添加到主程序中。这样更便于发现问题。例如在SCAN?程序中,开始时由于将读入量误认为是高电位有效,导致出现死循环。后编写 OUT*程序,将AL中的值输 出,观测程序在每一位置的寄存器值。最终发现问题所在。本次课程设计还使我了解到了理论联系实践的重要性。 如在数码管显示模块, 先送高位数据再送低位数据, 两个数码管分别选通,但在实际操作中却发现数码管显示出现相互干扰的现

32、象。只选通一个时则正常, 后经分析: 相互干扰说明数据的传送具有延时性, 故分别在每位传送数据之后加一延时子程序, 并通过观察显示量确定延时大小,问题解决。同时还注意采取不同方式解决问题的灵活性。如在检验AD转换模块时,可以通过万用表实时测量模拟量输出值。本次课程设计临近考试, 时间较短, 但在设计的过程中使我学到了很多知识, 加强了实践能力, 特别是在调试程序的过程中逐一解决问题的思路和方法。八、参考文献【 1】 8086 汇编语言程序设计王鉴泉高等教育出版社【 2】 微型计算机原理与接口技术吴秀清中国科学技术大学出版社【 3】 汇编语言 王爽 清华大学出版社【4】80X86汇编语言程序设计教程 杨季文 清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1