微机原理与接口实验报告
班级: 姓名: 学号:
日期:2016.12.4
目录
实验1 六位数码管动态显示实验 ........................................
实验2 小键盘案件识别实验 ............................................
实验3 8位AD转换实验................................................
实验4步进电机实验...................................................
实验1 六位数码管动态显示实验
1.1 实验目的
了解共阴级数码管显示数字的原理,掌握六位共阴级数码管动态显示的控制方法。
1.2 实验原理、内容,接线图,程序流程图,必要时附上实验步骤和电路原理图。
将0-9这十个数字按照从右到左的顺序循环步进显示,即首先从最右端数码管显示“0”,间隔一定时间后向左移动一位,直到最左端。到最左端后变换数字,按照同样的方法显示1-9,以此循环往复。做实验之前需要将七段数码管上方的拨动开关打到“CPU”位置。
实验接线图如图1所示,只需将LED_CS连接到地址译码200H即可。
图1 六位数码管显示实验接线图
图2 六位数码管单元电路图
实验系统使用了6个七段共阴级数码管,形成6位数码管显示电路,如图3-6所示。该电路由六个共阴级数码管组成,使用了段码锁存器(字形锁存器)74LS273、OC门驱动器和位码锁存驱动器TPIC6B273。段码锁存器(字形锁存器)74LS273输出高电平有效,位码锁存驱动器TPIC6B273输出低电平有效。/CS为两个锁存器的片选信号。地址线A0用来区分选择段码还是位码,在/CS=0,/IOW=0的情况下,A0=0 CPU发出来的数据被锁到段码锁存器(字形锁存器)74LS273,保存字形编码,A0=1 CPU发出来的数据被锁到位码锁存驱动器TPIC6B273,保存位选码。由于位码锁存驱动器TPIC6B273将输入的每一位数据反相后再输出的,所以对于段选和位选输入代码来说,都是高电平有效(高电平点亮数码管)。
每个七段共阴级数码管显示十进制/16进制数字的字形编码如图3。
图3共阴级7段数码管编码表
流程图如下:
图4六位数码管显示实验主程序参考流程图
图5六位数码管显示实验显示子程序参考流程图
1.3 完整的程序清单和相关注释。
.model small .386
data segment
num db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh data ends code segment
assume cs:code,ds:data BEGIN: mov si,0 mov ax,data mov ds,ax lea bx,num
count:mov cx,6 mov ah ,00000001b
scan:mov al,[bx+si] ;字形处理 mov dx,200h out dx,al
mov al,ah;字位处理 mov dx,201h out dx,al call delay shl ah,1 loop scan add si,1 cmp si,10 jnz count sub si,10 jmp count
delay proc near push cx mov cx,0 lop: loop lop pop cx ret
delay endp code ends end BEGIN
1.4 实验数据及结果分析
完成了0到9的八个数码管依次顺序显示,每次的显示都有一定的延迟,当
显示完数字9以后就再次从0开始。
1.5 实验过程中遇到的问题,以及解决办法
遇到的问题:显示的时候一开始很难延迟。
解决的方案:通过构造一个延迟函数来完成,在延迟函数中一直重复进行某一个动作,用计数器的倒计时来完成延迟的功能,由于需要调用新的函数,而且需要一个计数器的支持,所以需要将cx压入栈中。
1.6 实验总结
熟悉了汇编语言的相关语言,也熟悉了软件与接线板的操作。通过入栈压栈的方式,完成对于延迟操作的函数构造。同时,也实践了mov al,[bx+si] mov dx,200h out dx,al的字形处理,和mov al,ah mov dx,201h out dx,al的字为命令的语句熟悉。
实验2 小键盘按键识别实验
1.1 实验目的
掌握用软件方法识别行列式键盘按键的原理和方法。
1.2 实验原理、内容,接线图,程序流程图,必要时附上实验步骤和电路原理图。
当实验板上的小键盘有键按下时,将其对应的键号( 16进制数0-F)显示在七段数码管上。
实验系统提供了一个16按键的小键盘,采用行列式4×4键盘,形成矩阵结构,如图3-10所示。通常,该键盘矩阵的行线和列线分别与8255并行接口的两个端口连接,通过程序的检测和判断来识别按键操作。当需要检测某键按下时,依次给1、2、3、4行线输出低电平,某键按下时,相应的行和列上的两条线短路,即相应的列线被拉成低电平,其他列线维持高电平。程序通过并口读回4根列线的值,根据行线列线为0的状态即可判断出该按键的键号(即位置)。
图6 4X4键盘原理图
实验接线图如图7所示,将8255端口A的PA0-PA3与4个行线KL0-KL3连接,将8255端口B的PB0-PB3与4个列线KR0-KR3连接,设置选择8255 A组、B组端口为方式0(基本输入输出方式)工作,且端口A方向为输出,用来控制行线,端口B方向为输入,用来读入列线值。编写汇编程序,根据送出的行线值和读入的列线值来判断出该按键的位置,并将其键号在数码管上显示出来。
图7 小键盘按键识别实验接线图
流程图如下:
图8 小键盘按键识别实验程序流程图
1.3 完整的程序清单和相关注释。
.model small .386
DATA SEGMENT
rowport dw 200h colport dw 201h
controlport dw 203h ;控制字 led_cs dw 210h char
3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h table dw 0fefeh dw 0fefdh dw 0fefbh dw 0fef7h dw 0fdfeh dw 0fdfdh dw 0fdfbh dw 0fdf7h dw 0fbfeh dw 0fbfdh dw 0fbfbh dw 0fbf7h dw 0f7feh dw 0f7fdh dw 0f7fbh dw 0f7f7h DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA START:
begin:mov ax,data mov ds,ax mov dx,controlport mov al,10000010b
out dx,al;8255初始化 L1: call kb1 mov bh,ah mov bl,al call delay call kb1 cmp bl,al jnz begin cmp bh,ah jnz begin mov ax,bx call disp call delay
db
jmp L1
kb1 proc
mov ah,0feh kb2:mov al,ah
mov dx,rowport out dx,al;输出数据 mov dx,colport
in al,dx;读入PB口内容 or al,0f0h cmp al,0ffh jne num1 rol ah,1 jmp kb2 num1:ret kb1 endp
delay proc push cx
mov cx,8000h delay1:loop delay1 pop cx ret delay endp
disp proc push bx push dx
kb3: mov si,offset table mov di,offset char mov cx,16 kb4: cmp ax,[si] jz kb5 inc si inc si inc di loop kb4 kb5: mov al,[di] mov dx,led_cs
out dx,al;字形处理 mov al,01h inc dx
out dx,al;字位处理 pop dx
pop bx ret disp endp
CODE ENDS END START
1.4 实验数据及结果分析
完成了键盘按键在显示屏上的显示任务,可识别从0到F的各个数字及字母,做到了一一对应。
1.5 实验过程中遇到的问题,以及解决办法
遇到的问题:如何识别按键的位置
解决的方案:用table来记录各个按键的位置,由于table内部的数据是dw的,而字符是db的,所以当字符的偏移地址加一的时候,table的偏移地址加二,从而就可以完成一一对应的操作。
1.6 实验总结
熟悉了汇编语言和软件操作,也完成了键盘和显示屏的连接操作,完成了实验任务。但是代码部分还可以做适当的简略,逻辑部分还需要一定的考虑。
实验3 8位A/D转换实验
1.1 实验目的
掌握模/数信号转换的基本原理,掌握ADC0809芯片的查询方式使用方法。
1.2 实验原理、内容,接线图,程序流程图,必要时附上实验步骤和电路原理图。
从ADC0809通道0输入0--+5V可变电压,启动AD转换,使用查询方式读取转换数据,并以16进制显示在数码管上。实验接线如图3-21。
图9 8位A/D 转换实验接线图
流程图如下:
图 10 8位A/D 转换实验参考流程图
1.3 完整的程序清单和相关注释。
.MODEL small .386
AD_CS EQU 200h LED_CS EQU 210h DATA SEGMENT LEDCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H,77H,7CH,39H,5EH,79H,71H ;数码管0到f的显示 DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX RPT: MOV DX,AD_CS
OUT DX,AL ;让ADC0809锁存地址,并启动转换 MOV DX,AD_CS
ADD DX,2 ;此时DX指向202H处
L1: IN AL,DX ;读取ADC0809的EOC引脚状态并加以判断 TEST AL,01H ;EOI是否为1,判断转换是否完成 JZ L1 ;否,重复读入EOC状态并判断; MOV DX,AD_CS INC DX
IN AL,DX CALL DISP JMP RPT DISP PROC
MOV SI,OFFSET LEDCODE;设置7段表首地址 MOV BX,SI MOV CH,AL
MOV CL,4;截取转换数据的高四位 ROR AL,CL AND AL,0FH MOV AH,0 ADD BX,AX
MOV AL,[BX];获取LED显示编码 MOV DX,LED_CS
OUT DX,AL;转换后显示 MOV AL,02H INC DX NOP
OUT DX,AL CALL DELAY MOV AL,CH AND AL,0FH MOV AH,0 ADD SI,AX
MOV AL,[SI] MOV DX,LED_CS OUT DX,AL MOV AL,01H INC DX OUT DX,AL CALL DELAY RET DISP ENDP DELAY PROC PUSH CX MOV CX,50H X1: LOOP X1 POP CX RET DELAY ENDP CODE ENDS END START
1.4 实验数据及结果分析
完成了数模信号的转化任务,成功地将模拟量转化为数字量,范围为0到ff,完成了模拟量和显示屏的连接。
1.5 实验过程中遇到的问题,以及解决办法
遇到的问题:在模拟量改变的时候,显示屏的内容没有相应改变。
解决的方案:后查是在程序中,忘记将数据转入,少一个in操作所致。
1.6 实验总结
熟悉了汇编语言的编写操作和软件与连接板的实际操作,也熟悉了模拟量和数字量之间的转换任务。
实验4 步进电机实验
1.1 实验目的
掌握步进电机的控制方法。
1.2 实验原理、内容,接线图,程序流程图,必要时附上