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

上传人:tbuqq 文档编号:5223271 上传时间:2020-02-26 格式:PDF 页数:30 大小:1.59MB
返回 下载 相关 举报
信号检测与显示功能设计..pdf_第1页
第1页 / 共30页
信号检测与显示功能设计..pdf_第2页
第2页 / 共30页
信号检测与显示功能设计..pdf_第3页
第3页 / 共30页
信号检测与显示功能设计..pdf_第4页
第4页 / 共30页
信号检测与显示功能设计..pdf_第5页
第5页 / 共30页
点击查看更多>>
资源描述

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

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

2、4) 、具备本地及远程(串行方式)功能。 二、实验环境 汇编语言编译器,唐都试验箱 三、实验原理 设计要求是小键盘给定、数码管(屏幕)显示,完成对数字开 关量和模拟量的采样和显示, 基本思路是:通过小键盘选择所需操作, 即本地还是远程,数字还是模拟。若选定本地数字,则进入数字采样 子程序,通过读取开关量来确定输出值并通过数码管显示,若选定本 地模拟,则进入模拟量采样子程序,通过A/D 转换器读取数值,调用 数码管显示程序,在本地显示。若选择远程显示,则将采样后的值进 行发送,在接受端接收后再显示。 本次设计采用子程序调用的方式进行,在主程序中,主要是一 个字幕显示程序, 通过 9 号功能调用显

3、示欢迎字幕, 提示小键盘各按 键的功能选择。 然后进入 scan 函数,并设置由 scan 函数返回后的循 环,判断是否退出主程序,否则再次显示字幕,选择需要的循环。 . 键盘扫描 实验系统中的键盘及数码管显示单元提供了44 的 16 个按键。 四个数码管也接成了扫描电路,公用电位控制信号ADp ,各自的公 4 共端及列选通信号X1X4 ,扫描信号为 Y1Y4 。电路如图一所示: 并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传 递信息。 CPU和接口之间的数据传送总是并行 的,即可以同时传递8 位、16 位、32 位等。 8255可编程外围接口芯片是Intel公司生产的 通用并行

4、 I/O 接口芯片,它具有 A、B、C三个 并行接口,用 +5V单电源供电,能在以下三种 方式下工作: 方式 0- 基本输入 / 出方式、方式 1- 选通输入 / 出方式、方式 2- 双向选通工作方式。 8255的引脚如图 二所示,8255 工作方式控制字和C口按位置位 / 复位控制字格式如图 三所示。 5 在程序中,初始化8255, 方式 0,A口、B口输出, C口低 4 位输 入。 键盘扫描模块中,首先进行扫描,即A口全部送零,读出 C口状 态,若全为高电平,则说明没有键按下,继续扫描。若有的位为低电 平,判断是否为抖动,即延时20ms后再重新扫描,若为抖动则重新 扫描,若却有键按下则判断

5、是哪一行有键按下,若为0EH(1110B)则 为第一行有键按下,转入本地数字量处理程序,若为0DH(1101B) 则 为第二行有键按下,转入本地模拟量处理程序,若为0BH(1011)则为 第三行有键按下,转入远程数字量处理程序,若为07H(0111)则为第 一行有键按下,转入远程模拟量处理程序。 数码管输出模块中, 首先将采集到的 8 位数字量存储起来, 先取 高八位,查表转化成为共阴极码。 然后选通第一个数码管即8255A口 输出 0FEH (A 口只用到了第四位)。然后将转换成的共阴极码通过B 口输出。延时。然后将低四位数据通过同样方式输出到第二个数码管 6 上(8255A口输出 0FDH

6、 ) 。需要注意的是第一个数码管对应的是最低 位,并以此类推。 II. 数字开关量采样 输入接口一般用三态缓冲器实现, 外部设备输入数据通过三态缓冲器,通 过数据总线传送给微机系统。74LS245 是一种 8 通道双向的三态缓冲器,其管脚结构如图四所示。DIR引脚 控制缓冲器数据方向, DIR为 1 表示数据由 A7:0 至 B7:0 ,DIR为 0 表示数据由 B7:0 至 A7:0 。G引脚为缓冲器的片选信号, 低电平 有效。 在本地和远程的数字量采样子程序中,采样的方法是一样的。 即 每隔一段时间从基本输入单元读一次数据,再转入输出子程序或远程 发送子程序,转换成相应的共阴极码或ASC

7、码后发送。 III.模拟量采样 ADC0809完成模拟信号到数字信号的转 换。 输入模拟信号由 A/D 转换单元可调电位 器提供的 05V。 ADC0809 包括一个 8 位的逐次逼近型的 ADC 部分,并提供一个 8 通道的模拟多路开 关和联合寻址逻辑。 用它可直接输入 8 个单端的模拟信号, 分时进行 A/D转换,在多点巡回检测、过程控制等应用领域中使用非常广泛。 ADC0809 的主要技术指标为: 7 分辨率: 8 位 单电源: 5V 转换时间:取决于时钟频率 模拟输入范围:单极性 0 5V 时钟频率范围: 10KHz 1280KHz ADC0809 的外部管脚如图五所示 模拟量通过 A

8、DC0809 读入,通过 OUT 指令启动 A/D 转换,然后经 数据线读入。每隔一段时间采样一次, 采样后的数据经 OUT 程序输出, 或经 SEND 程序发送。循环操作和数字量相同。 IV串行通信 16550 是一种连接任何类型虚拟串行接口的可编程通信接口,与 Intel微处理器完全兼容的使用非常广泛的 异步接收器 / 发送器( UART ) 。它内置了16 字节 的 FIFO 缓冲 , 最 大通 讯 速率 可 达 115Kb/s,是现代基于微处理器设备包括PC 机和许多调制解调器的最普遍的通信接口。 16550的引脚如图六所示。 串行通讯分发送端和接收端两部分。发送端将数字量装换成2 个

9、 ASC 码表示的十六进制数,然后将转化成的十六进制数发送,即写 到 16550的 0 号端口。在输出端调用中断服务子程序,从 0 号端口读 出数据。需要注意的是,在屏幕输出时要设置光标回零,使其在屏幕 的同一位置显示数据,不然将出现满屏的现象。 8 四、硬件接线图 、键盘扫描及显示电路 、数字量采样电路 9 、模拟量采样电路 、串行通讯实验电路 10 五、程序流程图 、主程序 MAIN 11 、键盘扫描子程序SCAN 12 、数字量本地显示子程序、模拟量本地显示子程序 13 、数字量采样远程发送子程序、模拟量采样远程发送子程序 14 、本地输出子程序OUT1 15 、远程发送子程序SEND

10、16 、中断接收显示子程序 17 六、程序清单 I 、本地采样显示,远程发送端 ;#根据 CHECK 配置 # IOY0 EQU 0C400H IOY1 EQU 0C440H IOY2 EQU 0C480H IOY3 EQU 0C4C0H ;# M8255_A EQU IOY0 M8255_B EQU IOY0+01H*4 M8255_C EQU IOY0+02H*4 M8255_CTL EQU IOY0+03H*4 IO_B EQU IOY1 AD0809 EQU IOY2 M16550_0 EQU IOY3 M16550_1 EQU IOY3+01H*4 M16550_3 EQU IOY3

11、+03H*4 M16550_4 EQU IOY3+04H*4 M16550_5 EQU IOY3+05H*4 DATA SEGMENT TTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H W1 DB =,0DH,0A H,$ W2 DB Please have a choice: 1.Local 初始化 8255,方式 0,A 口、B 口输出, C 口低 4 位输入 MOV AL,81H OUT DX,AL CALL DALL Y MOV DX,MY16550_3 ;设置 16550 线路控制寄存器

12、 MOV AL,80H OUT DX,AL CALL DALL Y MOV DX,MY16550_0 ;设置除数寄存器低字节0CH MOV AL,0CH OUT DX,AL CALL DALL Y MOV DX,MY16550_1 ;设置除数寄存器高字节00H MOV AL,00H OUT DX,AL CALL DALL Y MOV DX,MY16550_3 ;设置线路控制寄存器,初始化数据格式 MOV AL,1BH OUT DX,AL CALL DALL Y MOV DX,MY16550_4 ;设置 MODEM 控制寄存器 MOV AL,03H OUT DX,AL CALL DALL Y M

13、OV DX,MY16550_1 ;设置中断允许寄存器 MOV AL,00H ;中断不打开 OUT DX,AL CALL DALL Y M1: MOV DX,OFFSET W1 MOV AH,9 INT 21H 19 MOV DX,OFFSET W2 MOV AH,9 INT 21H MOV DX,OFFSET W1 MOV AH,9 INT 21H CALL SCAN CALL DALL Y CALL DALL Y MOV AH,1 INT 16H JZ M1 QUIT: MOV AH,4CH INT 21H RET MAIN ENDP SCAN PROC NEAR ;键盘扫描子程序 PUSH

14、 AX PUSH DX PUSH CX S1: MOV AL,00H MOV DX,M8255_A OUT DX,AL MOV DX,M8255_C IN AL,DX AND AL,0FH CMP AL,0FH JE S1 MOV CX,16EAH S2: LOOP S2 IN AL,DX AND AL,0FH CMP AL,0FH JZ S1 MOV AL,0 ;MOV CL,0 S3: MOV DX,M8255_A OUT DX,AL MOV DX,M8255_C IN AL,DX 20 AND AL,0FH ; CALL OUT1 CMP AL,0EH JE S4 CMP AL,0DH

15、JE S5 CMP AL,0BH JE S6 CMP AL,07H JE S7 S4: MOV AL,01H MOV DX,OFFSET W3 CALL out1 CALL DALL Y CALL LD JMP Q1 S5: MOV AL,02H MOV DX,OFFSET W4 CALL out1 CALL DALL Y CALL LA JMP Q1 S6: MOV AL,03H MOV DX,OFFSET W5 CALL out1 CALL DALL Y CALL RD JMP Q1 S7: MOV AL,04H MOV DX,OFFSET W6 CALL out1 CALL DALL Y

16、 CALL RA Q1: POP CX POP DX POP AX RET SCAN ENDP OUT0 PROC NEAR MOV AH,9 INT 21H RET 21 OUT0 ENDP LD PROC NEAR ;本地数字采样子程序 PUSH DX PUSH CX PUSH BX PUSH AX L1: CALL DALLY MOV DX,IO_B IN AL,DX CALL OUT1 MOV AH,1 INT 16H JZ L1 POP AX POP BX POP CX POP DX RET LD ENDP LA PROC NEAR ;本地模拟采样子程序 PUSH AX PUSH B

17、X PUSH CX PUSH DX L2: MOV DX,AD0809 ;启动 A/D 转换 OUT DX,AL CALL DALL Y MOV DX,AD0809 IN AL,DX CALL OUT1 MOV AH,1 INT 16H JZ L2 POP DX POP CX POP BX POP AX RET LA ENDP 22 RD PROC NEAR ;远程数字采样子程序 PUSH DX PUSH CX PUSH BX PUSH AX L1: CALL DALLY MOV DX,IO_B IN AL,DX CALL SEND MOV AH,1 INT 16H JZ L1 POP AX

18、POP BX POP CX POP DX RET RD ENDP RA PROC NEAR ;远程模拟采样子程序 PUSH AX PUSH BX PUSH CX PUSH DX L2: MOV DX,AD0809 ;启动 A/D 转换 OUT DX,AL CALL DALL Y MOV DX,AD0809 IN AL,DX CALL SEND MOV AH,1 INT 16H JZ L2 POP DX POP CX POP BX POP AX RET RA ENDP OUT1 PROC NEAR ;本地数码管显示子程序 MOV CH,AL ;AND AL,0F0H 23 MOV CL,4 SH

19、R AL,CL MOV BX,OFFSET TTABLE AND AX,000FH ADD BX,AX MOV AL,BX PUSH AX MOV DX,M8255_A MOV AL,0FEH ;LED 低电平选通 OUT DX,AL POP AX MOV DX,M8255_B OUT DX,AL CALL DALL Y MOV AL,CH MOV BX,OFFSET TTABLE AND AX,000FH ADD BX,AX MOV AL,BX PUSH AX ;PUSH DX MOV DX,M8255_A MOV AL,0FDH OUT DX,AL ;POP DX POP AX MOV D

20、X,M8255_B OUT DX,AL CALL DALL Y RET OUT1 ENDP SEND PROC NEAR MOV CH,AL AND AL,0F0H MOV CL,04H SHR AL,CL CMP AL,09H JG A1 ADD AL,30H JMP A2 24 A1: ADD AL,37H A2: MOV DX,MY16550_0 MOV AL,AA OUT DX,AL CALL DALL Y MOV AL,CH AND AL,0FH CMP AL,09H JG A3 ADD AL,30H JMP A4 A3: ADD AL,37H A4: MOV DX,MY16550_

21、0 MOV AL,AA OUT DX,AL CALL DALL Y RET SEND ENDP DALL Y PROC NEAR ;延时子程序 PUSH CX PUSH AX MOV CX,0300H D1: MOV AX,3000H D2: DEC AX JNZ D2 LOOP D1 POP AX POP CX RET DALL Y ENDP CODE ENDS END START II 、远程接收端 ;#根据 CHECK 配置 # INTR_IV ADD EQU 01CCH INTR_OCW1 EQU 0A1H 25 INTR_OCW2 EQU 0A0H INTR_IM EQU 0F7H

22、PCI_INTCSR EQU 9438H IOY0 EQU 9C00H ;# MY16550_0 EQU IOY0+00H*4 MY16550_1 EQU IOY0+01H*4 MY16550_3 EQU IOY0+03H*4 MY16550_4 EQU IOY0+04H*4 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT CS_BAK DW ? IP_BAK DW ? IM_BAK DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

23、MOV DS,AX CLI MOV DX,PCI_INTCSR SUB DX,19H IN AL,DX MOV DX,PCI_INTCSR ;初始化 PCI 卡中断控制寄存器 MOV AX,1F00H OUT DX,AX ADD DX,2 MOV AX,003FH OUT DX,AX MOV AX,0000H ;替换 INTR 的中断矢量 MOV ES,AX MOV DI,INTR_IVADD MOV AX,ES:DI MOV IP_BAK,AX MOV AX,OFFSET MYISR MOV ES:DI,AX 26 ADD DI,2 MOV AX,ES:DI MOV CS_BAK,AX MO

24、V AX,SEG MYISR MOV ES:DI,AX MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR 的屏蔽位 IN AL,DX MOV IM_BAK,AL AND AL,INTR_IM OUT DX,AL MOV DX,MY16550_3 ;设置 16550 线路控制寄存器 MOV AL,80H OUT DX,AL CALL DALL Y MOV DX,MY16550_0 MOV AL,0CH OUT DX,AL CALL DALL Y MOV DX,MY16550_1 MOV AL,00H OUT DX,AL CALL DALL Y MOV DX,MY16550_3

25、 ;设置线路控制寄存器,初始化数据格式 MOV AL,1BH OUT DX,AL CALL DALL Y MOV DX,MY16550_4 ;设置 MODEM 控制寄存器 MOV AL,03H OUT DX,AL CALL DALL Y MOV DX,MY16550_1 ;设置中断允许寄存器 MOV AL,01H OUT DX,AL CALL DALL Y STI 27 WAIT1: MOV AH,1 INT 16H JZ WAIT1 QUIT: CLI MOV DX,PCI_INTCSR MOV AX,0000H OUT DX,AX MOV AX,0000H MOV ES,AX MOV DI

26、,INTR_IVADD MOV AX,IP_BAK MOV ES:DI,AX ADD DI,2 MOV AX,CS_BAK MOV ES:DI,AX MOV DX,INTR_OCW1 MOV AL,IM_BAK OUT DX,AL STI MOV AX,4C00H INT 21H MYISR PROC NEAR ;中断子程序 MOV DX,MY16550_0 IN AL,DX MOV DL,AL MOV AH,02H INT 21H MOV DX,MY16550_0 IN AL,DX MOV DL,AL MOV AH,02H INT 21H MOV DL,0DH ;回车,置光标到行首 MOV

27、AH,02H INT 21H OVER: MOV DX,PCI_INTCSR SUB DX,19H IN AL,DX 28 MOV DX,PCI_INTCSR ADD DX,2 MOV AX,003FH OUT DX,AX MOV DX,INTR_OCW2 MOV AL,20H OUT DX,AL MOV AL,20H OUT 20H,AL IRET MYISR ENDP DALL Y PROC NEAR ;延时子程序 PUSH CX PUSH AX MOV CX,0100H D1: MOV AX,2000H D2: DEC AX JNZ D2 LOOP D1 POP AX POP CX RE

28、T DALL Y ENDP CODE ENDS END START 29 七、调试问题及心得体会 在程序编完之后的调试过程中同样遇到了很多问题。例如刚 开始调试时,将所有硬件的线路接好,然后运行,结果出现死机 的现象, 且重新启动找不出导致死机的原因。故调试工作得不到 进展。后来逐渐探索出了一条逐渐发现问题,解决问题的道路: 分块调试。即将源程序能单独完成功能的一部分保存在另一个文 件中,仅连接其所需硬件线路,调试其功能。待各模块均调试好 之后,再将它们逐个添加到主程序中。这样更便于发现问题。 例如在 SCAN子程序中,开始时由于将读入量误认为是高电 位有效,导致出现死循环。后编写OUT0子程

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

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

当前位置:首页 > 其他


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