1、 微机系统与接口实验报告 班级: 组员: 一、 实验目的 Ø 通过本实验了解串行通信原理; Ø 理解计算机软件、硬件如何配合工作,如何对计算机进行功能扩展; Ø 学会一般接口电路设计过程和驱动代码编写方法; Ø 学会如何进行软件、硬件调试。 二、实验内容 (1)实验任务 利用两台TPC—ZK微机原理实验平台实现两机之间通信。 (2)实验要求 在实验台实现: Ø 设计硬件电路并在实验台上完成连接; Ø 双机通信时,一方用键盘或AD采集模拟信号,在另一方机器展示; Ø 完成程序的编写、调试工作。 三、实验原理
2、 分析设计思想,绘制实验原理图、流程图。 (1).实验原理图 Ø 键盘扫描原理图 按上图接线,8255C口接键盘(8255的C0~C3接键盘的列0~列3,C4~C7接键盘的行0~行3),片选CS接大板上地址译码输出的288h~28fh。识别键盘上的闭合键,通过采用行扫描法(行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值;如果列值中有某位为低电平,则表明行列交点处的键被按下;否则扫描下一行,直到扫完全部的行线为止)。 Ø 数码管显示原理图 电路原理如上图。8255CS接地址译码输出的288h~28fh.用20芯扁平电缆连接实验板与主实验台上的2
3、0芯扩展插座。8255的A口(PA0~PA6)与七段数码管的段码输入端a~g,8255的B口(PB0~PB5)与位码驱动输入端已连好,不用再接线。 (2)。流程图 开始 初始化8251、8254和8255芯片 置8255A控制字为81H:PC0~PC3输入,PC4~PC7输出 读入C口数据,判断小键盘上是否有键按下 调用键盘扫描子程序,读入小键盘的按键值 向8251数据口写入数据并发送 读串行接口芯片8251状态口数据,判断其是否可以传送数据 读8251状态口数据,判断其是否收到数据 调数码管显示子程序,输出数据 是 是 是 否 否 否 四、实验程序 程
4、序清单及相关注释: DATA SEGMENT DATAﻩENDS STACK SEGMENT STACK ﻩDWﻩ100H DUP(?) STACK ENDS CODE SEGMENT ﻩASSUME CS:CODE,DS:DATA ;;实验机器指定的端口地址 PORTAﻩEQU ﻩ288H ﻩ;8255端口地址 PORTBﻩEQUﻩ289H PORTCﻩEQUﻩ28AH TIMER EQU ﻩ280H ﻩ;8254的端口地址 START: ;初始化8251 ﻩMOV ﻩDX,2B9H ﻩ;控制口地址为2B9H MOV AL,0 ﻩ
5、OUTﻩDX,AL ﻩOUT ﻩDX,AL ﻩOUT DX,AL MOV AL,40H ;IR(D6)置1(40H:01000000)使8251A复位(内部复位) OUT DX,AL ;方式控制字必须在复位后首先写入 MOV AL,0CFHﻩ;异步传送;帧的格式,8位字符,2个停止位,无校验;1200Baud/s,波特率因子64 ﻩOUT ﻩDX,AL MOV AL,27H ﻩ;写入命令控制字,允许发送和接受,并使RTS输出为低 ﻩOUT ﻩDX,AL ﻩ;初始化8254计数器 ﻩMOV AL,00110110B ;方式3,作为方波
6、发生器 ﻩMOV DX,TIMER+3 OUT ﻩDX,AL MOV AX,52ﻩ;频率19。2Khz MOV DX,TIMER ﻩOUT ﻩDX,AL ;写入计数器初值的低字节 MOV ﻩAL,AH OUT DX,AL ﻩ;写入计数器初值的高字节 ;初始化8255,工作方式0,A口输出,C口高位输出,低位输入,B口输出 ;A口输出段码;C口用于检测键盘输入 ﻩMOVﻩDX,PORTA+3 MOVﻩAL,81H ;10000001 OUT DX,AL ﻩ;从键盘获取输入 X1:ﻩMOV ﻩAL, 00h MOVﻩDX,
7、 PORTC ﻩOUTﻩDX, AL ﻩ;00—〉C口,PC0置0 WAIT:ﻩIN AL, DXﻩ;读入列线值 ﻩANDﻩAL, 0FHﻩ;只要低四位 CMP AL, 0FH ;无按键按下,则跳转至X2,判断是否收到数据 JZ X2 CALL DELAY ﻩMOV BL, 4 ﻩ;行数 MOV ﻩBH, 4 ﻩ;列数 MOV AL, 0EFH ;扫描码 ﻩMOV CL, 0FH MOV CH, 0FFH ;键值—1 ROW:ﻩOUT DX, AL ROL AL, 1 ﻩ;左移生成下一个扫描码 MOV ﻩAH, AL ﻩIN
8、 AL, DX ﻩ;读入列线值 ﻩANDﻩAL, 0FH CMPﻩAL, 0FH ﻩJNZ COL ;有键按下转COL ﻩADDﻩCH, BH ;指向某列按键号,开始编号 ﻩMOVﻩAL, AH ﻩDEC BL ﻩJNZ ROW JMP X1 COL:ﻩINC CH RCR AL,1 ;根据接口可能需要改为SHL ﻩJC COL ﻩMOV AL, CH ;AL为键号 CALLﻩINPUT MOV BL, AL ;;在屏幕上显示 ﻩ;;发送输入的字符 SEND:ﻩMOV DX,2B9H IN AL,DXﻩ;读状
9、态口 AND ﻩAL,01Hﻩ;TxRDY=1?是否可以传送 ﻩJZ SEND ﻩDEC ﻩDX ﻩMOV AL, BL ﻩOUT ﻩDX, AL ;; X2:ﻩMOV DX,2B9H IN AL,DX ﻩ;读状态口 AND AL,02H ;RxRDY=1?是否收到新消息 JZ X1 ;未接收到跳转到X1 ﻩDEC DX ﻩIN AL, DX ﻩCALLﻩQDM X3:ﻩMOVﻩDX, PORTA OUTﻩDX, AL JMP ﻩX1 E: MOVﻩAX,4C00H INT ﻩ21H DELAYﻩPROCﻩNEAR
10、PUSH CX MOV CX, 7FFFH ;有按键按下 LP0: LOOP LP0 ﻩ;延时 POP CX RET DELAY ENDP ﻩ;;子程序INPUT,将小键盘输入的键号,转换成相对应的ASCII码 ;;输入的存储在AL中,转换结果成储存在AL中 INPUT PROC ﻩNEAR PUSH ﻩBX CMPﻩAL, 6 ﻩJB IN1 MOV ﻩBL, 0FH SUB BL, AL ﻩMOV AL, BL ADD AL, ’0' ﻩJMP ﻩINEND IN1: MOVﻩBL, 'f' ﻩSUB BL, AL ﻩMO
11、V AL, BL INEND:POP BX RET INPUT ENDP ;;子程序QDM,将数字转换成七段码在数码管上显示 ﻩ;;AL储存要转换的字符的ASCII码,转换结果在AL中 QDMﻩPROC NEAR CASE0:ﻩCMP ﻩAL,’0’ JNE CASE1 MOV ﻩAL,3FH ﻩJMP CASEEND CASE1: CMP ﻩAL,’1’ ﻩJNEﻩCASE2 ﻩMOV AL,06H ﻩJMP CASEEND CASE2: CMP AL,'2’ JNEﻩCASE3 MOV AL,5BH ﻩJMP CASEEND C
12、ASE3: CMP AL,’3’ ﻩJNEﻩCASE4 ﻩMOV AL,4FH ﻩJMP CASEEND CASE4:ﻩCMP ﻩAL,'4' JNE CASE5 MOV AL,66H JMP CASEEND CASE5: CMP AL,’5’ ﻩJNE CASE6 ﻩMOV AL,6DH JMP CASEEND CASE6:ﻩCMP ﻩAL,'6' JNE CASE7 MOV AL,7DH JMP CASEEND CASE7: CMP ﻩAL,’7’ ﻩJNE CASE8 ﻩMOV AL,07H JMP CASEEND C
13、ASE8:ﻩCMP AL,'8' ﻩJNE CASE9 MOV AL,7FH JMP CASEEND CASE9: CMP AL,’9' JNE CASEA ﻩMOV AL,6FH JMP CASEEND CASEA:ﻩCMP AL,’a' ﻩJNE CASEB ﻩMOV AL,77H ﻩJMP CASEEND CASEB: CMP AL,’b' ﻩJNE CASEC MOV AL,7CH ﻩJMP CASEEND CASEC: CMP AL,'c’ JNE CASED MOV AL,39H JMP CASEEND CASED: CMP
14、 AL,'d’ ﻩJNE CASEE MOV AL,5EH JMP CASEEND CASEE: CMP AL,’e’ JNE CASEF MOV AL,79H ﻩJMP CASEEND CASEF:ﻩCMP AL,’f’ ﻩJNE DEFAULT ﻩMOV AL,71H ﻩJMP CASEEND DEFAULT: ﻩMOV AL,0H CASEEND:ﻩRET QDM ﻩENDP CODE ﻩENDS ﻩEND START CODE ﻩENDS END START 五、实验结果 描述实验现象及结果并给予分析。 实验现象: 按照上述
15、实验原理图连接好每台机器的电路,然后把把两台机器的TxD和RxD分别互联起来。双机通信时,在每台机器上的小键盘上按键时,都可立刻在另一台机器的数码管上显示输入的数据,两台机器是异步双工通信的,发送和接受可同时进行且互不干扰。 结果分析: 由上述的实验流程图可知,当机器甲没有按键时,程序中会转到检查是否收到数据的部分,若机器乙有数据传来,则接收数据并调用数码管显示模块输出;若有按键,则调用键盘扫描程序读入按键值,并把数据传到串行接口芯片8251,由其与机器乙按照事先规定好的帧的格式传送数据,对机器乙也是执行与机器甲相同的流程. 六、问题解决及收获体会 本次试验首先的问题便是4乘4键盘输入的识别,通过首先确定列号再通过行扫描的方式解决了问题,而后关于芯片的具体作用通过翻阅课本得到了复习和巩固,同时在连线的时候对于软件给出的连线方式一开始有疑惑,感觉似乎少了几根线,后来才知道,实验板内部本省已有部分连线,如此给我们节省了时间也给查错带来了方便。在验收前的实验中,同旁边组的一起由于带电操作的问题把板子左上边的那一块给烧了,刚开始不知道原因,通过更换那一小块板子后整体工作正常找到了故障的所在。总体来说这次试验还算顺利,相关知识遗忘较为严重,某些考研的同学竟然也都不知道,今后在知识的学习上以及在实际的操作上都要更加的细心,更加的有条理。
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818