微机原理与接口实验报告.docx
《微机原理与接口实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口实验报告.docx(6页珍藏版)》请在冰豆网上搜索。
微机原理与接口实验报告
微机原理与接口实验报告
班级:
姓名:
学号:
日期:
目录
实验1六位数码管动态显示实验........................................
实验2小键盘案件识别实验............................................
实验38位AD转换实验................................................
实验4步进电机实验...................................................
实验1六位数码管动态显示实验
实验目的
了解共阴级数码管显示数字的原理,掌握六位共阴级数码管动态显示的控制方法。
实验原理、内容,接线图,程序流程图,必要时附上实验步骤和电路原理图。
将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=0CPU发出来的数据被锁到段码锁存器74LS273,保存字形编码,A0=1CPU发出来的数据被锁到位码锁存驱动器TPIC6B273,保存位选码。
于位码锁存驱动器TPIC6B273将输入的每一位数据反相后再输出的,所以对于段选和位选输入代码来说,都是高电平有效。
每个七段共阴级数码管显示十进制/16进制数字的字形编码如图3。
图3共阴级7段数码管编码表
流程图如下:
图4六位数码管显示实验主程序参考流程图
图5六位数码管显示实验显示子程序参考流程图
完整的程序清单和相关注释。
.modelsmall.386
datasegment
numdb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhdataendscodesegment
assumecs:
code,ds:
dataBEGIN:
movsi,0 movax,data movds,ax leabx,num
count:
movcx,6 movah,00000001b
scan:
moval,[bx+si];字形处理 movdx,200h outdx,al
moval,ah;字位处理 movdx,201h outdx,al calldelay shlah,1 loopscan addsi,1 cmpsi,10 jnzcount subsi,10 jmpcount
delayprocnear pushcx movcx,0lop:
looplop popcx ret
delay endpcodeends endBEGIN
实验数据及结果分析
完成了0到9的八个数码管依次顺序显示,每次的显示都有一定的延迟,当
显示完数字9以后就再次从0开始。
实验过程中遇到的问题,以及解决办法
遇到的问题:
显示的时候一开始很难延迟。
解决的方案:
通过构造一个延迟函数来完成,在延迟函数中一直重复进行某一个动作,用计数器的倒计时来完成延迟的功能,于需要调用新的函数,而且需要一个计数器的支持,所以需要将cx压入栈中。
实验总结
熟悉了汇编语言的相关语言,也熟悉了软件与接线板的操作。
通过入栈压栈的方式,完成对于延迟操作的函数构造。
同时,也实践了moval,[bx+si]movdx,200houtdx,al的字形处理,和moval,ahmovdx,201houtdx,al的字为命令的语句熟悉。
实验2小键盘按键识别实验
实验目的
掌握用软件方法识别行列式键盘按键的原理和方法。
实验原理、内容,接线图,程序流程图,必要时附上实验步骤和电路原理图。
当实验板上的小键盘有键按下时,将其对应的键号显示在七段数码管上。
实验系统提供了一个16按键的小键盘,采用行列式4×4键盘,形成矩阵结构,如图3-10所示。
通常,该键盘矩阵的行线和列线分别与8255并行接口的两个端口连接,通过程序的检测和判断来识别按键操作。
当需要检测某键按下时,依次给1、2、3、4行线输出低电平,某键按下时,相应的行和列上的两条线短路,即相应的列线被拉成低电平,其他列线维持高电平。
程序通过并口读回4根列线的值,根据行线列线为0的状态即可判断出该按键的键号。
图64X4键盘原理图
实验接线图如图7所示,将8255端口A的PA0-PA3与4个行线KL0-KL3连接,将8255端口B的PB0-PB3与4个列线KR0-KR3连接,设置选择8255A组、B组端口为方式0工作,且端口A方向为输出,用来控制行线,端口B方向为输入,用来读入列线值。
编写汇编程序,根据送出的行线值和读入的列线值来判断出该按键的位置,并将其键号在数码管上显示出来。
图7小键盘按键识别实验接线图
流程图如下:
图8小键盘按键识别实验程序流程图
完整的程序清单和相关注释。
.modelsmall.386
DATASEGMENT
rowportdw200hcolportdw201h
controlportdw203h;控制字led_csdw210hchar
3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71htabledw0fefeh dw0fefdh dw0fefbh dw0fef7h dw0fdfeh dw0fdfdh dw0fdfbh dw0fdf7h dw0fbfeh dw0fbfdh dw0fbfbh dw0fbf7h dw0f7feh dw0f7fdh dw0f7fbh dw0f7f7hDATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATASTART:
begin:
movax,data movds,ax movdx,controlport moval,10000010b
outdx,al;8255初始化L1:
callkb1 movbh,ah movbl,al calldelay callkb1 cmpbl,al jnzbegin cmpbh,ah jnzbegin movax,bx calldisp calldelay
db
jmpL1
kb1proc
movah,0fehkb2:
moval,ah
movdx,rowport outdx,al;输出数据 movdx,colport
inal,dx;读入PB口内容 oral,0f0h cmpal,0ffh jnenum1 rolah,1 jmpkb2num1:
retkb1endp
delayproc pushcx
movcx,8000hdelay1:
loopdelay1 popcx retdelayendp
dispproc pushbx pushdx
kb3:
movsi,offsettable movdi,offsetchar movcx,16kb4:
cmpax,[si] jzkb5 incsi incsi incdi loopkb4kb5:
moval,[di] movdx,led_cs
outdx,al;字形处理 moval,01h incdx
outdx,al;字位处理 popdx
popbx retdispendp
CODEENDSENDSTART
实验数据及结果分析
完成了键盘按键在显示屏上的显示任务,可识别从0到F的各个数字及字母,做到了一一对应。
实验过程中遇到的问题,以及解决办法
遇到的问题:
如何识别按键的位置
解决的方案:
用table来记录各个按键的位置,于table内部的数据是dw的,而字符是db的,所以当字符的偏移地址加一的时候,table的偏移地址加二,从而就可以完成一一对应的操作。
实验总结
熟悉了汇编语言和软件操作,也完成了键盘和显示屏的连接操作,完成了实验任务。
但是代码部分还可以做适当的简略,逻辑部分还需要一定的考虑。
实验38位A/D转换实验
实验目的
掌握模/数信号转换的基本原理,掌握ADC0809芯片的查询方式使用方法。
实验原理、内容,接线图,程序流程图,必要时附上实验步骤和电路原理图。
从ADC0809通道0输入0--+5V可变电压,启动AD转换,使用查询方式读取转换数据,并以16进制显示在数码管上。
实验接线如图3-21。
图98位A/D转换实验接线图
流程图如下:
图108位A/D转换实验参考流程图
完整的程序清单和相关注释。
.MODELsmall.386
AD_CSEQU200hLED_CSEQU210hDATASEGMENTLEDCODEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H,77H,7CH,39H,5EH,79H,71H;数码管0到f的显示DATAENDSCODESEGMENT
ASSUMECS:
CODE,DS:
DATASTART:
MOVAX,DATA MOVDS,AXRPT:
MOVDX,AD_CS
OUTDX,AL;让ADC0809锁存地址,并启动转换 MOVDX,AD_CS
ADDDX,2;此时DX指向202H处
L1:
INAL,DX;读取ADC0809的EOC引脚状态并加以判断 TESTAL,01H;EOI是否为1,判断转换是否完成 JZL1;否,重复读入EOC状态并判断; MOVDX,AD_CS INCDX
INAL,DX CALLDISP JMPRPTDISPPROC
MOVSI,OFFSETLEDCODE;设置7段表首地址 MOVBX,SI MOVCH,AL
MOVCL,4;截取转换数据的高四位 RORAL,CL ANDAL,0FH MOVAH,0 ADDBX,AX
MOVAL,[BX];获取LED显示编码 MOVDX,LED_CS
OUTDX,AL;转换后显示 MOVAL,02H INCDX NOP
OUTDX,AL CALLDELAY MOVAL,CH ANDAL,0FH MOVAH,0 ADDSI,AX
MOVAL,[SI] MOVDX,LED_CS OUTDX,AL MOVAL,01H INCDX OUTDX,AL CALLDELAY RETDISPENDPDELAYPROC PUSHCX MOVCX,50HX1:
LOOPX1 POPCX RETDELAYENDPCODEENDSENDSTART
实验数据及结果分析
完成了数模信号的转化任务,成功地将模拟量转化为数字量,范围为0到ff,完成了模拟量和显示屏的连接。
实验过程中遇到的问题,以及解决办法
遇到的问题:
在模拟量改变的时候,显示屏的内容没有相应改变。
解决的方案:
后查是在程序中,忘记将数据转入,少一个in操作所致。
实验总结
熟悉了汇编语言的编写操作和软件与连接板的实际操作,也熟悉了模拟量和数字量之间的转换任务。
实验4步进电机实验
实验目的
掌握步进电机的控制方法。
实验原理、内容,接线图,程序流程图,必要时附上