微机原理交通灯控制实验及其详细

合集下载

3十字路口红绿灯闪烁实验(微机原理)

3十字路口红绿灯闪烁实验(微机原理)

本科实验报告课程名称:微机原理及接口技术实验项目:十字路口红绿灯闪烁实验实验地点:微机原理实验室专业班级:电信1001 学号:2010001207 学生姓名:吴清涛指导教师:任光龙2013年6 月5 日一、实验目的通过对红,绿,黄灯的控制,熟练掌握掌握8255A接口芯片的变成方法。

二、实验内容对8255A接口芯片进行编辑,是红,绿,黄灯发光二极管按照十字路口交通灯的形式点亮或熄灭。

三、线路连接发光二极管共8个,其中两组红、黄、绿灯用6个,L1,L2,L3为一组,L4,L5,L6为一组,实验台连接如图。

低电平“1”时,点亮。

四、程序流程图五、参考程序程序列表DA TA SEGMENTIOPORT EQU 0D880H-280HIO8255C EQU IOPORT+282HIO8255T EQU IOPORT+283HPB DB ?MESS DB 'ENTER ANY KEY CAN EXIT TO DOS!',0DH,0AH,'$' DA TA ENDSSTACK SEGMENT STACKSTA DW 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DA TA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV AH,09HMOV DX,OFFSET MESSINT 21HMOV DX,IO8255TMOV AL,81HOUT DX,ALMOV DX,IO8255CIN AL,DXMOV PB,ALMOV DX,IO8255TMOV AL,80HOUT DX,ALMOV DX,IO8255CMOV AL,PBOR AL,0CHOUT DX,ALMOV AL,30HOUT DX,ALCALL DELAY10LLL: MOV DX,IO8255CMOV AL,12HOUT DX,ALCALL DELAY10CALL DELAY10CALL DELAY10CALL DELAY10MOV AL,10HOUT DX,ALMOV CX,0040HTTT: MOV AL,0CH OUT DX,ALPUSH CXMOV CX,80HLOP1: CALL DELAY1 LOOP LOP1MOV AL,00HOUT DX,ALMOV CX,80HLOP2: CALL DELAY1 LOOP LOP2POP CXLOOP TTTMOV AL,30HOUT DX,ALCALL DELAY10MOV AL,21HCALL DELAY10CALL DELAY10CALL DELAY10CALL DELAY10MOV AL,20HOUT DX,ALMOV CX,0040HGGG: MOV AL,0CH OUT DX,ALPUSH CXMOV CX,80HLOP3: CALL DELAY1 LOOP LOP3MOV AL,00HOUT DX,ALMOV CX,80HLOP4: CALL DELAY1 LOOP LOP4POP CXLOOP GGGMOV AL,30HOUT DX,ALCALL DELAY10MOV AH,06HMOV DL,0FFHINT 21HJNZ PPPJMP LLLPPP: MOV AX,4C00HINT 21HDELAY1 PROC NEARPUSH CXMOV CX,0FFFFHCCC: LOOP CCCPOP CXRETDELAY1 ENDPDELAY10 PROC NEARPUSH AXPUSH CXMOV CX,0F00HUUU: CALL DELAY1LOOP UUUPOP CXPOP AXRETDELAY10 ENDPCODE ENDSEND START六、实验结果七、思考题程序中红,绿,黄灯点亮和熄灭的延时时间是如何设定的?答:通过用延时子程序CALL DELAY 10的次数来设定。

交通灯控制实验(TPC-USB 微机接口实验系统集成开发环境)

交通灯控制实验(TPC-USB 微机接口实验系统集成开发环境)

实验八 交通灯控制实验一、实验目的:1、学习并掌握并行接口8255A的内部结构,功能及编程。

2、通过并行接口8255A实现十字路口交通灯的模拟控制,进一步掌握对并行A、B、C端口能在以下三种方式下工作:方式0—基本输入/出方式方式1—选通输入/出方式方式2—双向选通输入/出方式8255A的工作方式控制字用来决定8255A端口的工作方式,方式控制字的格式如图2-2所示。

表2-1 8255端口地址L12、L11、L10作为东西路口的交通灯与PC0、PC1、PC2相连,编程使六个交通灯按如下变化规律燃灭。

十字路口交通灯的变化规律要求:(1)南北路口的绿灯、东西路口的红灯同时亮。

(2)南北路口的黄灯闪烁若干次,同时东西路口红灯继续亮。

(3)南北路口的红灯、东西路口的绿灯同时亮。

(4)南北路口的红灯继续亮,同时东西路口的黄灯亮闪烁若干次。

(5)转(1)重复。

四、实验步骤1、按图2-1连接实验线路,注意切断实验箱电源。

2、参考下面的实验流程编写实验程序。

实验流程如下:3、经汇编、链接后将程序装入系统。

4、运行程序,观察交通灯的变化。

交通灯控制实验程序1: data segmentprotc1 db 9bh,0bbh,0fbh,0bbh,0fbh,0bbh,0fbh db 7eh,7dh,7fh,7dh,7fh,7dh,7fhdb 0ffhdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,0e3hmov al,90hout dx,almov dx,0e2hloop1: mov bx,0000hloop2:mov al,protc1[bx]cmp al,0ffhjz loop1out dx,alcall delayinc bxjmp loop2delay:mov cx,01ffhde1: mov di,0ffhde0: dec dijnz de0loop de1retcode endsend start交通灯控制实验程序2:data segmentprotc1 db 0dbh,0bbh,0fbh,0bbh,0fbh,0bbh,0fbhdb 7eh,7dh,7fh,7dh,7fh,7dh,7fhdb 0ffhdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,0e3hmov al,90hout dx,almov dx,0e2hloop1: mov bx,0000hloop2:mov al,protc1[bx]cmp al,0ffhjz loop1out dx,aland al 21hcmp al,21hjz aamov cx,0effhjmp bbaa: mov cx,01dfhbb: call delayinc bxjmp loop2delay:de1: mov di,0ffhde0: dec dijnz de0loop de1retcode endsend startdata segmentportc1 db 24h,44h,04h,44h,04h,44h,04h ;六个灯可能db 81h,82h,80h,82h,80h,82h,80h ;的状态数据 db 0ffh ;结束标志 data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,io8255bmov al,90hout dx,al ;设置8255为C口输出mov dx,io8255are_on: mov bx,0on: mov al,portc1[bx]cmp al,0ffhjz re_onout dx,al ;点亮相应的灯inc bxmov cx,20 ;参数赋初值test al,21h ;是否有绿灯亮jz de1 ;没有,短延时mov cx,5000 ;有,长延时de1: mov di,9000 ;di赋初值5000de0: dec di ;减1计数jnz de0 ;di不为0loop de1push dxmov ah,06hmov dl,0ffhint 21hpop dxjz on ;没有,转到onexit: mov ah,4ch ;返回int 21hcode endsend start。

微机原理实验四实验报告控制交通灯实验

微机原理实验四实验报告控制交通灯实验

D034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710RD 5WR 36A09A18RESET 35CS68255U36D0D1D2D3D4D5D6D7WRRD RSTA0A1PC5PC6PC7PC2PC3PC4PC0PC1DS35DS36DS37DS38DS39DS40DS4112345678VCCDS42A0A1CSCS1(0F000H)510R111510R112510R113510R114510R115510R116510R117510R118.MODEL TINYCOM_ADD EQU 0F003HPA_ADD EQU 0F000HPB_ADD EQU 0F001HPC_ADD EQU 0F002H.STACK 100.DATALED_Data DB 01111101B ;东西绿灯,南北红灯DB 11111101B ;东西绿灯闪烁,南北红灯DB 10111101B ;东西黄灯亮,南北红灯DB 11010111B ;东西红灯,南北绿灯DB 11011111B ;东西红灯,南北绿灯闪烁DB 11011011B ;东西红灯,南北黄灯亮.CODESTART: MOV AX,@DATAMOV DS,AXNOPMOV DX,COM_ADDMOV AL,80H ;PA、PB、PC为基本输出模式OUT DX,ALMOV DX,PA_ADD ;灯全熄灭MOV AL,0FFHOUT DX,ALLEA BX,LED_DataSTART1: MOV AL,0XLATOUT DX,AL ;东西绿灯,南北红灯CALL DL5SMOV CX,6START2: MOV AL,1XLATOUT DX,AL ;东西绿灯闪烁,南北红灯CALL DL500msMOV AL,0XLATOUT DX,ALCALL DL500msLOOP START2MOV AL,2 ;东西黄灯亮,南北红灯XLATOUT DX,ALCALL DL3SMOV AL,3 ;东西红灯,南北绿灯XLATOUT DX,ALCALL DL5SMOV CX,6START3: MOV AL,4 ;东西红灯,南北绿灯闪烁XLATOUT DX,ALCALL DL500msMOV AL,3XLATOUT DX,ALCALL DL500msLOOP START3MOV AL,5 ;东西红灯,南北黄灯亮XLATOUT DX,ALCALL DL3SJMP START1DL500ms PROC NEARPUSH CXMOV CX,60000DL500ms1: LOOP DL500ms1POP CXRETDL500ms ENDPDL3S PROC NEARPUSH CXMOV CX,6DL3S1: CALL DL500msLOOP DL3S1POP CXRETENDPDL5S PROC NEARPUSH CXMOV CX,10DL5S1: CALL DL500msLOOP DL5S1POP CXRETENDPEND START七、实验扩展及思考1、如何对8255的PC口进行位操作?控制字最高位写0,中间三位无关取0,接着三位是编码了对应的C口哪几位,最低一位为0是复位,为1是置位。

微机交通灯实验报告

微机交通灯实验报告

微机交通灯实验报告微机交通灯实验报告摘要:本实验旨在通过设计和实现一个微机交通灯系统,探索微机控制在交通管理中的应用。

通过实验,我们成功地搭建了一个基于微机的交通灯控制系统,并对其进行了功能测试和性能评估。

实验结果表明,微机交通灯系统能够有效地提高交通流量的控制和管理效果,为城市交通运输提供了更高效、更安全的解决方案。

一、引言交通管理一直是城市发展中的重要问题之一。

为了提高交通效率和确保交通安全,交通灯作为一种重要的交通管理设施,被广泛应用于城市道路。

然而,传统的交通灯控制系统存在一些问题,如无法根据实际交通情况进行动态调整,容易导致交通堵塞和拥堵。

因此,设计一个基于微机的交通灯控制系统,能够更好地适应不同交通状况,提高交通流量的控制效果,具有重要的研究和应用价值。

二、实验设计本实验采用了基于微机的交通灯控制系统。

该系统由红灯、黄灯和绿灯三个信号灯组成,通过微机控制器实现对交通灯的控制。

系统根据预设的时间间隔,按照红-黄-绿的顺序进行信号灯切换。

同时,系统还可以根据交通流量和优先级设置进行动态调整,以提高交通效率。

三、实验过程1. 硬件搭建我们首先搭建了一个简单的电路,包括红灯、黄灯和绿灯的LED灯,以及与微机控制器相连的开关和传感器。

通过这些硬件设备,我们可以实现对交通灯的控制和监测。

2. 软件编程为了实现交通灯的控制,我们使用了C语言对微机控制器进行编程。

通过编写程序,我们可以根据预设的时间间隔和交通流量等参数,实现对交通灯的自动切换和调整。

同时,我们还可以通过传感器获取实时的交通流量数据,以便更好地进行交通管理。

3. 功能测试在完成硬件搭建和软件编程后,我们进行了功能测试。

通过模拟不同的交通情况,我们验证了交通灯系统的正常工作和切换效果。

实验结果表明,系统能够准确地按照预设的时间间隔进行信号灯切换,适应不同交通状况。

四、实验结果与讨论通过实验,我们得出了以下结论:1. 微机交通灯系统能够有效地提高交通流量的控制效果。

微型计算机原理实验 交通灯的设计实验

微型计算机原理实验 交通灯的设计实验

微型计算机原理与接口技术实验基于唐都TD-PITE实验箱的交通灯实验【实验内容】用8255A和8253/8254设计一个交通信号灯,其中用D0~D3模拟红灯,D4~D7模拟绿灯,D8~D11模拟黄灯。

要求如下:(1)除上述出现的LED灯以外,其他LED灯不亮;(2)同组LED等要动作一致,同时亮起或同时熄灭;(3)交通灯的亮灭规律:开始时东西路口的绿灯亮,南北路口的红灯亮,此时东西路口方向通车。

等待5秒后,东西路口的绿灯熄灭,黄灯开始闪烁2秒。

然后东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时等待5秒后,南北路口的绿灯熄灭,黄灯开始闪烁两秒。

闪烁若干次后,再切换到东西路口方向,之后重复以上过程。

【实验思路】本题虽然文字描述较多,但并不复杂,鉴于8254芯片并不好使用,在本次实验中使用8255芯片与由空循环组成的DELAY延时函数完成本题目。

基本思路是设立一个死循环,在一次循环中包含以下事件:东西路口通行,南北不通行→东西路口绿灯熄灭,黄灯闪烁→南北路口通行,东西不通行→南北路口绿灯熄灭,黄灯闪烁。

在每个事件伊始,只需要将正确的值传入8255的对应端口,则相应的LED等会亮起或熄灭。

合适执行这些指令则有DELAY延时函数指定。

【实验连线】本实验通过唐都公司TD-PITE实验装置与Wmd86联机集成开发调试软件完成。

如上图所示,本次实验中使用8255的A、B端口,其A、B端口均用方式0,皆作为输出端。

其中A端口用于红灯与绿灯,B端口低四位用于黄灯,高四位不使用。

【实验代码】;========================================================= IOY0 EQU 0600H ;片选IOY0对应的端口始地址MY8255_A EQU IOY0+00H*2 ;8255的A口地址MY8255_B EQU IOY0+01H*2 ;8255的B口地址MY8255_C EQU IOY0+02H*2 ;8255的C口地址MY8255_MODE EQU IOY0+03H*2 ;8255的控制寄存器地址SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX, MY8255_MODEMOV AL, 80HOUT DX, ALAA1: MOV BX, 3C00H;东西路口通行MOV DX, MY8255_AMOV AL, BHOUT DX, ALMOV DX, MY8255_BMOV AL, BLOUT DX, ALPUSH CXMOV CX, 0005HGO1: CALL DELAYCALL DELAYCALL DELAYCALL DELAYLOOP GO1POP CXMOV BX, 00C0FHMOV DX, MY8255_AMOV AL, BHOUT DX, ALMOV DX, MY8255_BMOV AL, BLOUT DX, ALPUSH CXMOV CX, 0002HGO2: CALL DELAYCALL DELAYCALL DELAYCALL DELAYLOOP GO2POP CX;东西路口黄灯警告MOV BX, 0C300H;南北通行MOV DX, MY8255_AMOV AL, BHOUT DX, ALMOV DX, MY8255_BMOV AL, BLOUT DX, ALPUSH CXMOV CX, 0005HGO3: CALL DELAYCALL DELAYCALL DELAYCALL DELAYLOOP GO3POP CX;东西路口黄灯警告MOV BX, 0030FH;南北通行MOV DX, MY8255_AMOV AL, BHOUT DX, ALMOV DX, MY8255_BMOV AL, BLOUT DX, ALPUSH CXMOV CX, 0002HGO4: CALL DELAYCALL DELAYCALL DELAYCALL DELAYLOOP GO4POP CX;东西路口黄灯警告JMP AA1DELAY: P USH CXMOV CX, 0FFFFHAA2: PUSH AXPUSH AXPOP AXPOP AXLOOP AA2POP CXRETCODE ENDSEND START。

微机实验 交通灯实验报告

微机实验 交通灯实验报告

微机实验交通灯实验报告微机实验交通灯实验报告引言交通灯作为城市交通管理的重要组成部分,对于保障交通安全和顺畅起着至关重要的作用。

本次实验旨在通过微机控制,模拟交通灯的工作原理,并实现交通灯的自动控制。

一、实验目的本次实验的主要目的是通过搭建一套微机控制系统,实现交通灯的自动控制,并通过实验验证交通灯在不同道路情况下的工作原理和效果。

二、实验原理1. 交通灯的工作原理交通灯通常由红、黄、绿三个信号灯组成。

红灯表示停止,黄灯表示准备,绿灯表示可以通行。

交通灯通过不同颜色的灯光变化,指示车辆和行人何时可以通行,以保障交通的有序进行。

2. 微机控制系统微机控制系统是利用计算机和相应的软硬件实现对设备、机器等的控制和管理。

在交通灯实验中,我们可以通过编程控制计算机输出不同的信号,从而实现交通灯的自动控制。

三、实验器材和步骤1. 实验器材- 微机控制系统:包括计算机、编程软件和控制接口等。

- 交通灯模型:模拟真实的交通灯,包括红、黄、绿三个信号灯。

2. 实验步骤- 连接交通灯模型和微机控制系统。

- 编写程序,设置交通灯的工作时间和信号灯变化规律。

- 运行程序,观察交通灯的工作状态和变化过程。

四、实验结果和分析通过实验,我们成功地实现了交通灯的自动控制。

在程序中,我们设置了红灯亮10秒,黄灯亮3秒,绿灯亮15秒的时间间隔,模拟了真实交通灯的工作规律。

在实验过程中,我们观察到交通灯按照预设的时间间隔循环变化,红灯亮起时车辆停止,绿灯亮起时车辆可以通行。

这样的交通灯控制方式可以有效地维持交通的有序进行,减少交通事故的发生。

五、实验总结通过本次实验,我们深入了解了交通灯的工作原理和微机控制系统的应用。

微机控制系统作为一种高效、精确的控制手段,可以广泛应用于各个领域,提高设备的自动化程度和工作效率。

在今后的学习和工作中,我们将继续深入学习微机控制系统的原理和应用,掌握更多的编程技巧和控制方法,为实现更多实际问题的自动化解决方案做出贡献。

微机原理十字路口交通灯实验报告1

微机原理十字路口交通灯实验报告1

一、课程设计(论文)题目十字路口交通灯模拟二、本次课程设计(论文)应达到的目的通过本次课程设计,使学生不仅更加深刻领会微型计算机从硬件组成到软件编程的基本原理和知识,而且更要学会应用,务必做到理论和实践相结合,掌握硬件分析、软件设计的基本思想和方法,提高分析问题、解决问题和工程实践的能力。

三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等)本课程设计题目的主要内容是模拟十字路口交通灯(红、黄、绿三色)的显示控制。

设计要求为:1.主干道计时60秒,次干道计时45秒,时间到则切换红绿灯;2.红绿灯不变期间,在七段数码管上显示每秒倒计时;3.计时到最后5秒时,两个方向的黄灯同时闪烁直至计时到0。

四、应收集的资料及主要参考文献:1.《微型计算机基本原理与接口技术》陈红卫,科学出版社 2003.22.《8086实验指导书》张维琪、张晓群,信控学院实验中心3.其他与本课程设计题目相关的资料五、审核批准意见教研室主任(签字)摘要本设计以TDN86/51实验箱为载体,结合中断控制器8259A、并行接口8255、中断定时器8253、七段数码显示管LED及八个发光二极管的功能,用汇编语言编程实现了十字路口交通灯模拟的实验。

8255A的两个端口在本次实验中均有用处,A口为方式0用作输出,与七段数码管LED连接,用于向七段数码管输入数据的。

B 口为方式0用作输出,与八个发光二极管连接,用于向发光二极管输入数据。

C口低四位在本实验中做输出与LED数码管相连,高四位没有用到,但在初始化中将C口均初始化为输出。

8253A芯片在本实验中用了计数器2工作在方式3下,计数初值赋为59500,工作箱的时钟频率为1.19MHz,即计时50ms,它的OUT2接到8259A的IRQ7上,让IRQ7每隔50ms发一次中断,这样就可以通过控制发中断的次数来得到想要的时间。

8259A芯片在本实验中被用到了5个中断,作为计时或在特殊情况下的特殊功能。

北京工业大学-微机原理-实验十二-交通灯控制实验-实验报告

北京工业大学-微机原理-实验十二-交通灯控制实验-实验报告

微机原理实验报告——实验九交通灯控制实验姓名:学号:一、实验要求用8255、8253芯片模拟实现交通灯控制,要求亮灯时间用8253控制二、延时置数设计提供的时钟频率为1MHz,而8253最大工作频率为2MHz,所以无需分频。

延时5秒对应的计数初值为N=5秒/1MHz=5000000,因为8253有3个16位计数器,每个计数器最大计数初值为:65535<5000000,所以将两个计数器串联使用。

计数器0计数初值为1000,计数器1计数初值为5000。

三、实验内容1.实验电路原理图2.实际电路图2.实验流程图3.实验代码IOPORT EQU 5400H-280H ;定义CPU输出地址CODE SEGMENTASSUME CS:CODESTART: MOV AL, 00100101B ;设置8253用计数器0,只读高字节,方式2(自动重复),10进制MOV DX, IOPORT+293HOUT DX, ALMOV AL, 10H ;给计数器0置数1000(0001 0000 0000 0000)MOV DX, IOPORT+290HOUT DX, ALMOV AL, 10010000B ;初始化8255,1--控制字,A口方式0输入,C口输出,B口输出MOV DX, IOPORT+28BHOUT DX, ALINOUT: MOV AL, 00100100B ;南北路口绿灯亮,东西路口红灯亮MOV DX, IOPORT+28AH ;C口0方式输出,所以可以直接控制PC0~PC7的输出电平OUT DX, ALMOV AL, 01100001B ;设置8253通道1,只读高字节,方式0(不自动重复),10进制MOV DX, IOPORT+293HOUT DX, ALMOV AL, 50H ;置数5000,与计数器0串联即:延时5秒MOV DX, IOPORT+291HOUT DX, ALLOP1: MOV DX, IOPORT+288H ;A口查询,判断延时是否结束IN AL, DXCMP AL, 0JE LOP1 ;延时结束,顺序执行,否则继续查询MOV AL, 01000100B ;南北路口黄灯亮,东西路口红灯亮MOV DX, IOPORT+28AH ;C口0方式输出,所以可以直接控制PC0~PC7的输出电平OUT DX, ALMOV AL, 01100001B ;设置8253通道MOV DX, IOPORT+293HOUT DX, ALMOV AL, 30H ;延时3秒(1000*3000),原理与延时5秒一致MOV DX, IOPORT+291HOUT DX, ALLOP2: MOV DX, IOPORT+288H ;A口查询,判断延时是否结束IN AL, DXCMP AL, 0JE LOP2 ;延时结束,顺序执行,否则继续查询MOV AL, 10000001B ;南北路口红灯亮,东西路口绿灯亮MOV DX, IOPORT+28AH ;C口0方式输出,所以可以直接控制PC0~PC7的输出电平OUT DX, ALMOV AL, 01100001B ;设置8253通道1MOV DX, IOPORT+293HOUT DX, ALMOV AL, 50H ;延时5秒MOV DX, IOPORT+291HOUT DX, ALLOP3: MOV DX, IOPORT+288HIN AL, DXCMP AL, 0JE LOP3MOV AL, 10000010B ;南北路口红灯亮,东西路口黄灯亮MOV DX, IOPORT+28AHOUT DX, ALMOV AL, 01100001B ;设置8253通道1MOV DX, IOPORT+293HOUT DX, ALMOV AL, 30H ;延时3秒MOV DX, IOPORT+291HOUT DX, ALLOP4: MOV DX, IOPORT+288HIN AL, DXCMP AL, 0JE LOP4MOV AH, 0BH ;检查键盘状态(不等待),AL=FFH 表示有键入,AL=00H表示无键入INT 21HCMP AL,0FFH ;有键入,程序退出JNZ INOUTMOV AH, 4CHINT 21HCODE ENDSEND START四、实验中遇到的问题地址书上要求定义的范围是从280H开始的,而我们在编写程序的时候是从288H开始使用的,再连线的时候,忘记了这一点,而致使结果一直出不来,后来再检查连线的时候发现了这个问题,即使进行了改正,出现了预计效果,试验成功。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

开始
设置8255C口输出
南北路口的绿灯、东西路口的红灯亮
长延时
南北路口的黄灯闪烁,东西路口红灯亮南北路口的红灯、东西路口的绿灯亮
长延时
南北路口红灯亮、东西路口黄灯亮闪烁
是否有键按下N
交通灯信号控制实验
一、实验目的
1、掌握并行接口8253的基本原理
2、掌握8253的编程方法
二、实验内容
如图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。

编程使六个灯按交通变化规律亮灭。

三、编程提示
1、8255控制寄存器地址:28BH—0C40BH
A口地址:288H—04C408H
C口地址:28AH—04C40AH
2、十字路口交通灯的变化规律要求
(1)南北路口的绿灯、东西路口的红灯同时亮三秒;
(2)南北路口的黄灯闪烁三次,同时东西路口的红灯继续亮;
(3)南北路口的红灯、东西路口的绿灯同时亮三秒;
(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁三次;
(5)转(1)重复。

3、程序设计流程
四、程序设计及实验调试
程序设计的思想及注意事项:
1.首先是在选择程序时是选用软件延时还是硬件延时。

我采用的是C口方式0输入,所以选用了软件延时。

2.在选择循环的时间上,老师上课时说过,长延时可以采用双层嵌套,外层嵌套为0FFFFH,内层嵌套为4000H,我在编程时外层送进了0,相当于初值为65536,内层送进了4000H。

为了达到闪烁和延时的区别,我在编闪烁的程序时,给外层嵌套送入初值3000H,内层0100H (这是我通过实验的结果)。

人眼感觉闪烁的效果只是短延时的结果。

实验程序:
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,0C40BH
MOV AL,10010000B ;C口方式0输入
OUT DX,AL
FIRST: MOV DX,0C40AH
MOV AL,00100100B
OUT DX,AL ;南北绿,东西红写入C口
MOV CX,0 ;送入初值65536
MOV AX,4000H ;软件长延时,由经验值确定
DELAY1: DEC AX
JNZ DELAY1
LOOP DELAY1
MOV BL,4 ;控制黄灯亮的次数
SECOND:MOV DX,0C40AH
MOV AL,01000100B
OUT DX,AL ;南北黄,东西红
MOV CX,3000H
MOV AX,0100H
LI1:
DEC AX
JNZ LI1
LOOP LI1
MOV DX,0C40AH ;软件短延时
MOV AL,00000100B ;南北黄灭
OUT DX,AL
MOV CX,3000H
MOV AX,0100H
WEN1:
DEC AX
JNZ WEN1 ;软件短延时
LOOP WEN1
DEC BL
JNZ SECOND ;黄灯闪烁4次THIRD: MOV DX,0C40AH ;写入C口
MOV AL,10000001B
OUT DX,AL ;南北红,东西绿
MOV CX,0
MOV AX,4000H
DELAY2: DEC AX ;软件长延时
JNZ DELAY2
LOOP DELAY2
MOV BL,4 ;控制黄灯亮的次数FORTH: MOV DX,0C40AH ;写入C口
MOV AL,10000010B
OUT DX,AL ;南北红,东西黄
MOV CX,3000H
MOV AX,0100H
LI2:
DEC AX
JNZ LI2 ;软件短延时
LOOP LI2
MOV DX,0C40AH
MOV AL,10000000B
OUT DX,AL ;东西黄灭
MOV CX,3000H
MOV AX,0100H
WEN2:
DEC AX
JNZ WEN2
LOOP WEN2
DEC BL
JNZ FORTH ;黄灯闪烁4次
MOV DL,0FFH
MOV AH,06H
INT 21H ;执行键盘输入操作
JZ FIRST
MOV AH,4CH
INT 21H ;返回操作系统
CODE ENDS
END START
实验中遇到问题及分析:
1.首先,实验出现的问题是在编程方面。

由于自己使用了LOOP语句,而开始自己没有注意LOOP WEN2相当于DEC CX JNZ WEN2,而自己在赋值时,对CX赋值有点混乱。

编程时由于粗心,写如C口的初值有错,导致二极管没能按预定结果亮,通过硬件结果,我很快发现了问题所在。

2.实验课上,自己认真听老师说怎样对六个灯进行赋值达到控制的结果,所以在编程时没有将灯的顺序搞混,在写入8255的C口时比较顺利。

3.实验时遇到了一些问题,有一个是按键下去返回操作系统。

自己运行完执行文件,当按键下去返回操作系统时,却发现执行文件没有反应,而交通灯也在继续亮。

我查看了自己的程序,发现有MOV AH,06H INT 21H JZ FIRST MOV AH,4CH INT 21H 几条语句,后来又试验了几次,并增加了停留时间,我最后发现是电脑运行较的问题。

五、实验结果及分析:
程序执行后实验板上首先是南北绿灯和东西红灯亮,几秒后南北向的黄灯闪烁两次,东西向红灯亮,之后南北向的红灯和东西向的绿灯同时亮几秒钟,之后东西黄灯闪烁四次,南北红灯亮。

然后LED继续以上循环,若在执行文件中有按键按下,则结束程序。

本次编程中为了达到长延时的效果,我使用了双层嵌套的方法,通过嵌套编程,我熟悉了子程序的编写和调用。

在延时语句的编写时,可以使用执行指令和定时器定时两种方法,我采用了执行指令(即软件延时)的方法。

在处理黄灯闪烁的问题时,我令黄灯在短延时情况下交替亮灭,并可通过设置BL的值控制黄灯闪烁次数,达到了预期目的。

实验时遇到了按键很慢才返回操作系统的问题。

运行完执行文件,按键下去交通灯也在继续亮。

而程序中有MOV AH,06H INT 21H JZ FIRST MOV AH,4CH INT 21H 几条语句,感觉这就是对毅力的考验,通过反复实验,发现可以返回,只是电脑反应较慢。

六、实验总结:
本次实验为8255A并行接口实验,这次实验在代码编写阶段一开始找到了入手点。

我在程序中使用了软件延时,时长取决与循环次数和计算机的速度,一开始编制的程序中短延时采用了两层循环,由于自己没有实践经验,所以最后通过实验结果确定了最后的数据。

通过此次程序设计,我认识到画软件流程图的重要性,画好流程图后可以很清晰的看清逻辑,不仅加快了编写过程,而且有利于出错时查找问题所在。

虽然这次实验我是一步一
步编程下来的,但是在调试结果时,仍发现了红灯错亮的问题,最后发现时写程序时的粗心所致。

相关文档
最新文档