微机原理与接口技术实验报告.docx
微机原理与接口技术实验报告级:名:通信1309_rJ张哲熙学 号:指导教师:周永华实验一交通信号灯模拟控制一. 实验目的交通信号灯模拟控制是一个基于实际工程原理,结合文献、现实十字路口交 通等得研究,对工程问题进行确定、表述和建模分析,获得最优设计方案,理解 并在工程实践中遵守工程职业道德规范,根据实验室实验环境限定条件确定实验 方案。所有知识涵盖本课程中的并行接口芯片、汇编语言程序设计、算法分析、 接口地址的确定、外围设备的控制等。通过此实验可以理解微机系统中接口电路 的作用,掌握软件硬件协同工作原理,熟悉微机原理与接口技术的综合应用。最 终达到如下实验目的:(1)掌握可编程并行接口 8255芯片的工作原理(2)掌握利用并行接口芯片8255实现信号灯控制的硬件设计和软件设计(3)掌握接口电路及汇编语言程序设计的调试方法(4)了解PC机和实验系统板的连接原理,理解系统机扩展原理(5)了解并行接口芯片在工程实践中的典型应用及实现方式。二. 实验内容设计利用TPC-2003A实验系统提供的8255芯片和信号灯设计实现十字路 口交通灯的模拟控制的硬件连接和程序设计。1. 设计要求(1)通过实际调研了解十字路口交通灯原理,确定实现的算法流程。(2)利用实验系统设计硬件电路,明确8255芯片端口地址。(3)编程实现并调试完成交通信号灯的模拟控制。(4)分析设计方案并比较和实际交通信号灯的技术性能差别。2. 设计目标和性能指标(1)考察一个实际十字交通等路口交通控制,模拟在实验室实现。(2)扩展功能:用LED应倒计时方式显示各路口灯亮时间。(3)对于复杂多路口应该如何设计。例如结合车流、人流等多方因素方案如何 确定。三. 实验电路如图5-3, L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、 L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯 变化规律燃灭。8255动态分配地址:控制寄存器:28BHA 口 地址: 288HC 口地址:28AH红黄绿红黄绿四.程序流程图(开始)设肯8雾制口输出。门输出南北路1绿灯亮,东西路口红灯,亮长延时南北路口黄灯闪,东西路口红灯况南北路口红灯亮,东西路口绿灯亮长延时五.源程序CODE SEGMENTASSUME CS:CODESTART: MOV DX,0EC0BH;写控制端口,地址 0EC0BHMOV AL,B;C 口方式0输出OUT DX,ALFIRST: MOV DX,0EC0AHMOV AL,00100100BOUT DX,ALMOV CX,0MOV AX,2000HDELAY1: DEC AXJNZ DELAY1LOOP DELAY1MOV BL,5SECOND:MOV DX,0EC0AHMOV AL,01000100BOUT DX,AL;写 C 口,地址 0EC0AH;南北绿,东西红,C 口写00100100;外层循环初值65536,延时程序;内层循环初值2000H;黄灯亮5次;C端口;南北黄,东西红;短延时,黄灯亮与暗之间的间隔MOV CX,3000HLI1:DEC AXJNZ LI1LOOP LI1MOV DX,0EC0AHMOV AL,00000100BOUT DX,ALMOV CX,3000HMOV AX,0100HWEN1: DEC AXJNZ WEN1LOOP WEN1DEC BLJNZ SECONDTHIRD: MOV DX,0EC0AHMOV AL,BOUT DX,ALMOV CX,0MOV AX,2000H;南北黄灯灭,东西红灯继续亮;短延时;闪烁次数控制;南北路口黄灯再亮;写入C 口;南北红,东西绿;长延时,外循环初值65536,同上;内循环初值2000HDELAY2: DEC AXLOOP DELAY2MOV BL,4FORTH: MOV DX,0EC0AHMOV AL,BOUT DX,ALMOV CX,3000HMOV AX,0100HLI2:DEC AXJNZ LI2LOOP LI2MOV DX,0EC0AHMOV AL,BOUT DX,ALMOV CX,3000HMOV AX,0100HWEN2: DEC AXJNZ WEN2LOOP WEN2DEC BL;控制黄灯亮的次数;写入C 口;南北红,东西黄;短延时;C端口;东西黄灯灭,南北红灯继续亮JNZ FORTH;东西路口黄灯再亮MOV AH,06HINT 21H;查看是否有键按下JZ FIRST;没有就重复MOV AH,4CHINT 21H;返回 DOSCODE ENDSEND START六.实验总结这是第一个微机实验,我和我们组另外两名同学在去实验室做实验之前,先 上网查阅了相关资料,也和其他组的同学交流了一下各自的程序,在大概了解了 程序之后我们去九教实验室进行实验。虽然第一个实验并不难,但是在做的过程 中我们还是遇到了各种问题,比如运行程序后实验箱上的灯不亮,经过我们小组 同学讨论,求助助教之后发现可能是电脑和实验箱的连接出了问题。解决了问题 之后顺利的出了结果。这次实验用的是8255芯片,经过这次实验,我了解了伤 及调试的方法,以及出现一些常见的问题时应该如何解决。结合微机课上学习的 知识,对8255芯片的应用也有了更深入的理解。实验二计数、定时系统的设计实现一. 实验目的掌握8253的基本工作原理和编程方法。二. 实验内容 (1)按图5-1虚线连接电路,将计数器0设置为方式0,计数器初值为N (NW0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔 观察OUT0电平变化(当输入N+1个脉冲后变高电平)。图5-1(2)按图5-2连接电路图,将计数器0、1分别设置为方式3,计数初值设为1000, 用逻辑 笔观察OUT1输出电平的变化(频率1Hz)。图5-2三. 实验原理8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时, 每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号 时,计数就成为定时。作计数器时,要求计数的次数可直接作为计数器的初值 预置到减“ 1”计数器中。8253中各通道可有6种可供选择的工作方式,以完 成定时、计数或脉冲发生器等多种功能。本实验用到的是方式0计数结束中断。 在写入计数值N之后的第一个CLK的下降沿将N装入计数执行单元,待下一个 CLK的下降沿到来且门控信号GATE为高电平时,通道开始启动计数。在计数过 程中,OUT 直保持低电平,直到计数达“0”时,OUT输出由低电平变为高电平, 并且保持高电平。工作方式3是分频器功能。四. 程序流程图五.源程序1.实验内容一程序:CODE SEGMENTASSUME CS:CODESTART:MOV DX,0EC03HMOV AL,00010000BOUT DX,ALMOV DX,0EC00HMOV AL,0EHOUT DX,ALMOV CL,1READ: INC CLCMP CL,0JZ STARTMOV DX,0EC00HIN AL,DXMOV DL,ALMOV CL,ALCMP AL,9JG BIG;计数器0,方式0;自加1;读计数器0ADD DL,30H;0到9,显示ASCII数字INT 21HMOV DL,0DHINT 21HJMP JUDGEBIG: ADD DL,37HMOV AH,02HINT 21HMOV DL,0DHINT 21HJMP JUDGEJUDGE:MOV DL,0FFHMOV AH,06HINT 21HJZ READMOV AH,4CHINT 21HCODE ENDSEND START;大于9,显示ASCII字母;加回车符,只显示一个符号;有键按下回DOS2、实验内容二程序:CODE SEGMENTASSUME CS:CODESTART: MOV DX,0EC03H;计数器0置控制字为工作方式3MOV AL,00110110BOUT DX,ALMOV DX,0EC00HMOV AX,1000;向计数器0送初值OUT DX,AL;先送低字节后送高字节MOV AL,AHOUT DX,ALMOV DX,0EC03H;计数器1置控制字为工作方式3MOV AL,01110110BOUT DX,ALMOV DX,0EC01H;向计数器1送初值MOV AX,1000;先送低字节后送高字节OUT DX,ALMOV AL,AHOUT DX,ALNEXT: MOV DL,0FFH;DOS 6号功能调用,按任意键返回MOV AH,06HINT 21HINT 21HCODE ENDSEND START六.实验总结这次实验我们做了可编程定时器/计数器,练习了对芯片8253的使用。在做 实验之前,我和我们小组的其他成员就先阅读了实验指导书,并且上网查阅了相 关资料,对实验内容和任务有了初步的了解。随后去实验室进行实验,由于实验 箱的问题,最开始我们的程序并没有运行成功,后来换了一个实验箱,程序就可 以正常运行了。第一个实验中我们用了计数器方式0,当有按键按下时,计数值减少1,显 示屏上会逐个显示B、A、9、8.直到1、0。第二个实验实现了一个分频的功 能因为两次分频的计数值都是1000,输入为1MHz,经过两次分频后输出为1Hz。经过这次实验我对计数和分频的功能以及8253芯片的一些基本使用方法, 也对程序的调试有了更深刻的认识。实验三双机串行通信实验一、实验目的1、进一步了解串行通信的基本原理。2、掌握串行接口芯片8250的工作原理和编程方法。3、熟悉PC机串行口的基本连接方法二、实验内容1、PC机RS-232串口自发自收。按照PC机串口自发自收的连接方法连线。编写PC机自发自收串行通信程序, 要求:从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收 回来并在屏幕上显示,实现自发自收。硬件连接图如下:RS-232CTXI) ;RXD GND2、两台PC机间RS-232串口通信。按照PC机RS-232串口直接互连的方法连接两台PC机。编写PC机直接互 连串行通信程序;要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过 串口接收字符并显示在屏幕上。当键入感叹号“”结束收发过程。硬件连接图 如下:计H机三、实验原理(1)本实验为异步通信:以字符为单位进行传送,每传送一个字符,以起始位 作为开始标志,以停止位作为结束标志。异步串行通信的工作过程是:传送开始后,接收设备不断地检测传输线是否 有起始位到来,当接收到一系列的“1”(空闲或停止位)之后,检测到第一个“0”, 说明起始位出现,就开始接收所规定的数据位、奇偶校验位及停止位。经过接收 器处理,将停止位去掉,把数据位拼装成一字节数据,并且经奇偶校验无错误, 才算是正确地接收到了一个字符。当一个字符接收完毕,接收设备又继续测试传 输线,监视“0”电平的到来(下一个字符的开始)。D0D1Dn(2)8250各部分功能说明8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄 存器(LCR)的最高位DLAB来决定。各寄存器的地址和格式如下所示:8250寄存器地址DLABA2A1A01/0地址对应寄存器00003F8H(2F8H)发送端数据寄存器00003F8H(2F8H)接收端数据寄存器10003F8H(2F8H)波特率因子寄存器(低8位)10013F9H(2F9H)波特率因子寄存器(高8位)00013F9H(2F9H)中断允许寄存器(IER)X0103FAH(2FAH)中断识别寄存器(IIR)X0113FBH(2FBH)线路控制寄存器(LCR)X1003FCH(2FCH)MODEM控制寄存器(MCR)X1013FDH(2FDH)线路状态寄存器(LSR)X1103FEH(2FEH)MODEM状态寄存器X1113FFH(2FFH)保留(3)数据发送和接收:数据发送:(插入起始、校验、停止位后发出)时钟控制数据数据接收:数据起始位SIN移位R-串转并数据接收R1CPU四、源程序实验(1)自发自收DATA SEGMENTCHL DB 0AH,0DH,'$'换行字符串DATA ENDSSTACK1 SEGMENT STACKDW 100 DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AX;INITMOV DX,3FBH ;MOV AL,80H ;DLAB=1OUT DX,ALMOV AX,0CH ;N=12 BAUD=9600bpsMOV DX,3F8H ;低位OUT DX,ALMOV AL,AHINC DXOUT DX,ALMOV AL,03H ;八位数据,1停止,无校验MOV DX,3FBH;线路控制REGOUT DX,ALMOV AL,0 ;屏蔽全部中断MOV DX,3F9HOUT DX,ALWAIT1: MOV DX,3FDH ;读线路状态寄存器IN AL,DXTEST AL,1EH ;判断是否有错JNZ ERRORTEST AL,01H ;判断是否收到JNZ RECEIVETEST AL,20H ;判断发送端是否空JZ WAIT1MOV DL,0FFH ;六号功能调用读入待发送数据MOV AH,06HINT 21HJZ WAIT1MOV DX,3F8H ;写发送REGJMP WAIT1 ;返回 WAIT1CHAR: PUSH AXMOV DL,AL ;显示接收MOV AH,02HINT 21HMOV DX,OFFSET CHL;输出字符串换行MOV AH,09HINT 21HPOP AXJMP WAIT1ERROR: MOV DX,3FDHIN AL,DXMOV DL,'?'对于错误显示'?"MOV AH,02HINT 21HJMP WAIT1RECEIVE:MOV DX,3F8HIN AL,DX ;读数据接收寄存器CMP AL,'!'判断是否结束JNE CHAR;MOV AH,4CHINT 21HCODE ENDSEND START实验(2)双机通信(1)发送端:CODE SEGMENTASSUME CS:CODESTART:MOV AL,80H;8250初始化,设 DLAB=1MOV DX,3FBHOUT DX,ALMOV AX,30HMOV DX,3F8HOUT DX,AL;写入除数低字节MOV AL,AHOUT DX,AL;写入除数高字节MOV AL,0AHMOV DX,3FBHOUT DX,ALMOV AL,03HMOV DX,3FCHOUT DX,ALMOV AL,0MOV DX,3F9HOUT DX,ALWAIT1:MOV DX,3FDHIN AL,DX;7位数据,1位停止,奇校验;写入线路控制寄存器;写入Modem控制寄存器;写中断允许寄存器,屏蔽所有中断;读线路状态寄存器TEST AL,1EH ;出错否JNZ ERROR;TEST AL,01H;接收数据就绪否;JNZ SEND;发送SEND:ERROR:EXIT:TEST AL,20HJZ WAIT1MOV AH,1INT 21HCMP AL,21HJZ EXITMOV DX,3F8HOUT DX,ALJMP WAIT1MOV DX,3FDHIN AL,DXMOV DL,'?'MOVINTJMPMOVAH,02H21HWAIT1AH,4CH;发送寄存器空否,不空,返回等待;读键盘;是!?;是,返回操作系统;不是,则发送;返回等待;出错则清除线路状态寄存器;显示'?'INT 21HCODE ENDSEND START(2)接收端:CODE SEGMENTASSUME CS:CODESTART:MOV AL,80HMOV DX,3FBHOUT DX,ALMOV AX,30HMOV DX,3F8HOUT DX,ALMOV AL,AHINC DXMOV DX,3F9HOUT DX,ALMOV AL,0AH;8250初始化;写入除数低字节;写入除数高字节MOV DX,3FBHOUT DX,AL;写入线路控制寄存器MOV AL,03HMOV DX,3FCHOUT DX,AL;写入Modem控制寄存器MOV AL,0MOV DX,3F9HOUT DX,AL;写中断允许寄存器,屏蔽所有中断;读线路状态寄存器;出错否WAIT1:MOV DX,3FDHIN AL,DXTEST AL,1EHJNZ ERRORTEST AL,01H;接收数据就绪否JNZ RECEIVE;转接收;TEST AL,20H;发送寄存器空否,不空,返回等待;JZ WAIT1JMP WAIT1;均返回等待RECEIVE: MOV DX,3F8HIN AL,DXAND AL,01111111BCMP AL,21HJNZ CHARMOV AH,4CHINT 21HCHAR:PUSH AXMOV DL,ALMOV AH,2INT 21HPOP AXJMP WAIT1ERROR:MOV DX,3FDHIN AL,DXMOV DL,'?'MOV AH,02H;读接收数据;保留位数据;是'!'?;返回操作系统;显示接受字符;返回等待;出错则清除线路状态寄存器;显示'?'INT 21HJMP WAIT1CODE ENDSEND START拓展部分DATA SEGMENTD1 DB ?CHL DB 0AH,0DH,'$'DATA ENDSSTACK1 SEGMENT STACKDW 100H DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AX;INITMOV AX, DATAMOV DS, AXMOV AL,BOUT DX,AL;MOV DX,3F8HMOV AX,60HOUT DX,ALINC DXMOV AL,AHOUT DX,ALMOV DX,3FBHMOV AL,00001010BOUT DX,ALMOV DX,3FCHMOV AL,00000011BOUT DX,ALMOV DX,3F9HMOV AL,00000000BOUT DX,ALWAIT1: MOV DX,3FDHIN AL,DXTEST AL,00011110B;JNZ ERRORTEST AL,00000001B;JNZ RECEIVETEST AL,00100000B;JZ WAIT1MOV DL,0FFHMOV AH,06HINT 21HJZ WAIT1MOV DX,3F8HOUT DX,ALJMP WAIT1MOV DL,ALMOV AH,02HINT 21HMOV DX,OFFSET CHLMOV AH,09HINT 21HPOP AXJMP WAIT1ERROR: MOV DX,3FDH ;IN AL,DXMOV DLMOV AH,02HINT 21HJMP WAIT1RECEIVE:MOV DX,3F8HIN AL,DXCMP ALJNE CHARINT 21HCODE ENDSEND START五、实验总结这次实验中,我们用了 8250芯片来实现自发自收和双机通讯的功能。在单 机自发自收的实验中我们把一台PC机的TXD和RXD端口连在一起,运行程序之 后就可以实现自发自收。而在双机通讯的实验中,我们需要把第一台PC机的TXD 端口与第二台PC机的RXD端口连在一起,把第一台的RXD与第二台的TXD连在 一起,实现双机通讯。在进行实验的过程中我们遇到了一些问题,在自发自收的时候不能让8250 处于自检模式,如果处于自检模式,实验现象跟要求是一样的,但实际上是在芯 片内部将RXD与TXD连在一起了,此时外部有没有将RXD和TXD连在一起都没有 影响。实验竞赛抢答器一. 实验目的1、了解微机化竞赛抢答器的基本原理。2、进一步学习使用并行接口。二. 实验内容图5-4为竞赛抢答器(模拟)的原理图,逻辑开关K0K7代表竞赛抢答 按钮07号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。在七 段数码管上将其组号(07)显示出来,并使喇叭响一下。从键盘上按空格键 开始下一轮抢答,按其它键程序退出。U 1 7 74L524423 4fl色白222222图5-4三、程序流程图四. 源程序DATA SEGMENTLIST DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDATA ENDSSTACK1 SEGMENT STACKDW 100H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AX,MOV DX,0EC0BHMOV AL,89HOUT DX,ALL0: MOV DX,0EC0AHIN AL,DXCMP AL,0JZ L0MOV BL,0L1: INC BLSHR AL,1DEC BLMOV AL,BLMOV BX,OFFSET LISTAND AX,00FFHADD BX,AXMOV AL,BXMOV DX,0EC08HOUT DX,ALMOV DL,7MOV AH,2INT 21HMOV AH,01HINT 21HCMP AL,20HJZ CLOSEMOV AH,4CHINT 21HCLOSE:MOV AL,0MOV DX,0EC08HOUT DX,ALJMP L0CODE ENDSEND START五. 实验总结这是最后一个微机实验,这次实验主要是使用8255的C 口输入,入口输出, 当07号要抢答时,对应C 口的那一位被置1,程序中使用逻辑右移来判断是几 号发出的抢答信号,即对进行逻辑右移,直到CY的值为1停止右移,由于计数 寄存器BX的初值为0,此时BX的值为8,故需要再减一来实现显示7,在答辩 的过程中,助教要求我们把原来现实的07改为18,要实现这个功能有很多办 法第一可以将BX的初值设为1,或者把DEC BX这一行代码删掉,或者在在后边 加一行INC BX,或者还可以直接修改数据段等等。通过这学期四个微机实验, 巩固了我在微机课上学的知识,也提高了实践能力。六、市场前景分析这次实验设计的竞赛抢答器,在现实生活中很常见,尤其是在随着各种益智 电视节目的不断发展,越来越多的竞赛抢答器被用在了其中,这种抢答器的好处 是不仅能够锻炼参赛选手的反应能力,而且能增加节目现场的紧张、活跃气氛,让观众看得更有情趣。可见抢答器在现实生活中确实很实用,运用前景非常广 泛。?在知识竞赛中,特别是做抢答题时,在抢答过程中,为了知道哪一组或哪一 位选手先答题,必须要有一个系统来完成这个任务。如果在抢答中,只靠人的视 觉是很难判断出哪组先答题。这次设计使以上问题得以解决,即使两组的抢答时 间相差几微秒,也可分辨出哪组优先答题。可见,这次实验设计的竞赛抢答器的 市场前景还是很广阔的。