微机原理与接口实验报告班级:姓名:学号:日期: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.386data segmentnum db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhdata endscode segmentassume cs:code,ds:dataBEGIN: mov si,0mov ax,datamov ds,axlea bx,numcount:mov cx,6mov ah ,00000001bscan:mov al,[bx+si] ;字形处理mov dx,200hout dx,almov al,ah;字位处理mov dx,201hout dx,alcall delayshl ah,1loop scanadd si,1cmp si,10jnz countsub si,10jmp countdelay proc nearpush cxmov cx,0lop: loop loppop cxretdelay endpcode endsend BEGIN1.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.386DATA SEGMENTrowport dw 200hcolport dw 201hcontrolport dw 203h ;控制字led_cs dw 210hchar db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71htable dw 0fefehdw 0fefdhdw 0fefbhdw 0fef7hdw 0fdfehdw 0fdfdhdw 0fdfbhdw 0fdf7hdw 0fbfehdw 0fbfdhdw 0fbfbhdw 0fbf7hdw 0f7fehdw 0f7fdhdw 0f7fbhdw 0f7f7hDATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART:begin:mov ax,datamov ds,axmov dx,controlportmov al,10000010bout dx,al;8255初始化L1: call kb1mov bh,ahmov bl,alcall delaycall kb1cmp bl,aljnz begincmp bh,ahjnz beginmov ax,bxcall dispcall delaykb1 procmov ah,0fehkb2:mov al,ahmov dx,rowportout dx,al;输出数据mov dx,colportin al,dx;读入PB口内容 or al,0f0hcmp al,0ffhjne num1rol ah,1jmp kb2num1:retkb1 endpdelay procpush cxmov cx,8000hdelay1:loop delay1pop cxretdelay endpdisp procpush bxpush dxkb3: mov si,offset table mov di,offset char mov cx,16kb4: cmp ax,[si]jz kb5inc siinc siinc diloop kb4kb5: mov al,[di]mov dx,led_csout dx,al;字形处理mov al,01hinc dxout dx,al;字位处理pop dxretdisp endpCODE ENDSEND START1.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.386AD_CS EQU 200hLED_CS EQU 210hDATA SEGMENTLEDCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H,77H,7CH,39H,5EH,79H,71H ;数码管0到f的显示DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXRPT: MOV DX,AD_CSOUT DX,AL ;让ADC0809锁存地址,并启动转换MOV DX,AD_CSADD DX,2 ;此时DX指向202H处L1: IN AL,DX ;读取ADC0809的EOC引脚状态并加以判断TEST AL,01H ;EOI是否为1,判断转换是否完成JZ L1 ;否,重复读入EOC状态并判断;MOV DX,AD_CSINC DXIN AL,DXCALL DISPJMP RPTDISP PROCMOV SI,OFFSET LEDCODE;设置7段表首地址MOV BX,SIMOV CH,ALMOV CL,4;截取转换数据的高四位ROR AL,CLAND AL,0FHMOV AH,0ADD BX,AXMOV AL,[BX];获取LED显示编码MOV DX,LED_CSOUT DX,AL;转换后显示MOV AL,02HINC DXNOPOUT DX,ALCALL DELAYMOV AL,CHAND AL,0FHMOV AH,0ADD SI,AXMOV AL,[SI]MOV DX,LED_CSOUT DX,ALMOV AL,01HINC DXOUT DX,ALCALL DELAYRETDISP ENDPDELAY PROCPUSH CXMOV CX,50HX1: LOOP X1POP CXRETDELAY ENDPCODE ENDSEND START1.4 实验数据及结果分析完成了数模信号的转化任务,成功地将模拟量转化为数字量,范围为0到ff,完成了模拟量和显示屏的连接。