8255a交通灯控制
- 格式:doc
- 大小:80.07 KB
- 文档页数:6
`目录第一章引言 (1)1.1设计目的 (1)1.2 设计背景 (1)1.3 设计要求 (2)第二章系统硬件设计 (3)2.1设计方案 (3)2.2工作原理 (3)2.3 硬件介绍 (4)2.3.1 MSC-51芯片简介 (4)2.3.2 8255A芯片 (5)第三章系统软件设计 (7)3.1 时间及信号灯的显示 (7)3.2 延时设计 (8)3.3 程序流程图 (9)3.4 程序源代码 (10)第四章系统调试结果 (15)4.1 测试结果 (15)小结 (16)参考文献 (17)第一章引言1.1设计目的1、通过交通信号灯控制系统的设计,掌握8255A并行口传输数据的方法,以控制发光二极管的亮与灭;2、用8255作为输出口,控制十二个发光二极管熄灭,模拟交通灯管理.3、通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力;4、完成控制系统的硬件设计、软件设计、仿真调试。
1.2 设计背景十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各50秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。
交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。
但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。
交通灯控制实验计算机实验班1001 赵训201026811130交通灯控制实验:设计一个十字路口的交通灯控制,设初始状态是4个路口红灯全亮,然后,南北方向绿灯亮,延时30秒,南北方向灯灭,黄灯闪3次后,红灯亮,东西方绿灯亮,延时30秒,东西方黄灯闪3次后红灯亮。
重复上述过程。
要求:作出实验流程图。
硬件连接图。
写出汇编语言程序。
1、实验目的:分析实际的十字路口交通灯的亮灭过程,用实验箱上的8255实现交通灯的控制(红,黄,绿三色灯)。
2、实验设备及材料:微机原理和接口技术实验室的实验箱和电脑设备等。
3、理论依据:此设计是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。
8255A是可编程的通用并行输入/输出接口芯片,因通用性强,使用灵活,可直接与CPU总线相连,应用非常广泛。
8255A芯片内部有3个8为的输入/输出端口,即A口,B口和C口。
从内部控制的角度来讲,可分为两组:A组合B组。
A 组控制模块管理A口和C口德高四位(PC7~PC4),B组控制模块管理B口和C口的低四位(PC3~PC0)。
如硬件连接图所示(在后),红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4(南东北西)路口的红灯,B,C口类推。
8086工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,AD8~AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。
8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2,OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30s定时到。
OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。
8255控制交通灯实验原理我们需要了解交通灯的工作原理。
一般来说,交通灯是通过控制红、黄、绿三个灯的亮灭来指示交通的状态。
红灯表示停车,黄灯表示准备行车,绿灯表示可以行车。
交通灯的亮灭是通过控制电流的开关来实现的。
在实验中,我们将使用8255芯片的三个I/O端口来控制交通灯的红、黄、绿三个灯。
具体来说,我们将把红灯连接到8255芯片的一个I/O端口,黄灯连接到另一个I/O端口,绿灯连接到第三个I/O端口。
通过编程控制这三个I/O端口的输出电平,我们就可以控制交通灯的亮灭。
在编程方面,我们需要使用汇编语言来编写控制程序。
首先,我们需要初始化8255芯片的工作模式。
通过将控制字写入控制寄存器,我们可以将8255芯片设置为输出模式,同时设置输出的电平。
然后,我们需要编写一个循环程序,不断改变输出的电平,从而实现交通灯灯光的变换。
具体来说,我们可以通过改变红、黄、绿三个灯的输出电平的组合来控制交通灯的亮灭。
在实验中,我们可以通过按下开关来触发交通灯的变换。
当按下开关时,控制程序将会执行一次循环,改变交通灯的亮灭状态。
这样,我们就可以通过按下开关来模拟交通灯的工作过程。
通过这个实验,我们可以更好地理解8255芯片的工作原理,并且掌握使用8255芯片来控制外部设备的方法。
在实际应用中,我们可以利用8255芯片来控制各种外部设备,如LED灯、电机等。
这样,我们可以通过编程来实现对外部设备的控制,从而实现各种功能。
使用8255芯片来控制交通灯是一种简单而有效的方法。
通过编程控制8255芯片的输出电平,我们可以实现交通灯的亮灭变换。
这个实验不仅可以帮助我们更好地理解8255芯片的工作原理,还可以培养我们的编程能力。
希望通过这个实验,我们可以更好地掌握8255芯片的使用,为以后的学习和工作打下良好的基础。
8255A控制交通灯完整实验二○一一~二○一二学年第二学期信息科学与工程学院课程设计报告书课程名称:微机原理课程设计班级:电子信息工程2009级 6 班学号:200904135150姓名:张强指导教师:徐守明二○一二年二月二十日8255A控制交通灯实验一、实验流程图如下:1、主程序流程图2、中断服务程序(以外部中断0为例)1、2、的设计延时程序,需要知道时钟周期,状态周期,机器周期的概念以及循环程序设计的基本思路。
3、8255A编程,实验中应该先写控制字后写方式字。
这里需要指出的是,硬件连线时一定要严格按照8255A的控制字连线,也就是地址分配问题。
AT89S52的P2口在实验中做地址线,充当地址高8位,P0口既做地址线也做数据线,做地址线时充当地址低8位。
4、8255A选择A口时,不能直接把A0,A1接地,而应该用地址赋值语句给A0,A1赋值,使其同时为低电平,选中A口。
四、实验程序如下:;*********8255PA口的次低三位是南北路口。
次高三位是东西路口*********ORG 0000HLJMP STARTORG 0003H ;外部中断0的中断程序入口地址LJMP KEY1 ;转外部中断0中断服务程序ORG 0013H ;外部中断1的中断程序入口地址LJMP KEY2 ;转外部中断1中断服务程序START:SETB IT0 ;INTO为边沿触发SETB IT1SETB EX0 ;启动T0SETB EX1SETB EA ;开总中断MOV DPTR,#03FFHMOV A,#80HMOVX @DPTR,AS1: MOV A,#10111101BM OV DPTR,#00FFHM OVX @DPTR,A ;第一种状态:东西红灯亮,南北绿灯亮C ALL DELAY5S ;5秒延时西红灯亮,南北黄灯亮M OV DPTR,#00FFHM OVX @DPTR,AC ALL DELAY1S ; 0.2秒延时M OV A,#10111111B ;东西红灯亮,南北黄灯灭,黄灯第一次闪烁M OV DPTR,#00FFHMOVX @DPTR,ACALL DELAY1SMOV A,#10111011B ;第二种状态:东西红灯亮,南北黄灯亮M OV DPTR,#00FFHM OVX @DPTR,AC ALL DELAY1SM OV A,#10111111B ;东西红灯亮,南北黄灯灭,黄灯第二次闪烁M OV DPTR,#00FFHMOVX @DPTR,ACALL DELAY1S红灯亮,南北黄灯亮M OV DPTR,#00FFHM OVX @DPTR,AC ALL DELAY1SM OV A,#10111111B ;东西红灯亮,南北黄灯灭,黄灯第次闪烁M OV DPTR,#00FFHMOVX @DPTR,ACALL DELAY1SS3: MOV A,#11100111B ;第三种状态:东西绿灯亮,南北红灯亮MOV DPTR,#00FFHMOVX @DPTR,ACALL DELAY5SS4: MOV A,#11010111B ;第四种状态:东西黄灯亮,南北红灯亮MOV DPTR,#00FFHMOVX @DPTR,ACALL DELAY1SMOV A,#11110111B ;东西黄灯灭,南北红灯亮,第一次闪烁MOV DPTR,#00FFHMOVX @DPTR,ACALL DELAY1SMOV A,#11010111B ;第四种状态:东西黄灯亮,南北红灯亮MOV DPTR,#00FFHMOVX @DPTR,ACALL DELAY1SMOV A,#11110111B ;东西黄灯灭,南北红灯亮,第二次闪烁MOV DPTR,#00FFHMOVX @DPTR,ACALL DELAY1SMOV A,#11010111B ;第四种状态:东西黄灯亮,南北红灯亮MOV DPTR,#00FFHMOVX @DPTR,ACALL DELAY1SMOV A,#11110111B ;东西黄灯灭,南北红灯亮,第三次闪烁MOV DPTR,#00FFHMOVX @DPTR,ACALL DELAY1SAJMP S1 ;跳转到状态S1状态,循环DELAY5S: ;延时5秒MOV R7,#100L0: MOV R6,#100L1: MOV R5,#248L2: DJNZ R5,L2DJNZ R6,L1D JNZ R7,L0RETDELAY1S: ;延时0.5秒MOV R4,#200L3: MOV R3,#248L4: DJNZ R3,L4D JNZ R4,L3R ET;*****************紧急处理1:东西红灯亮,南北绿灯亮***************************** KEY1:PUSH PSWMOV A,#10111101B ;紧急处理1:东西红灯亮,南北绿灯亮MOV DPTR,#00FFHMOVX @DPTR,AMOV R7,#100 ;延时5S LCALL L0;POP PSW ;注意这里不能把POP弹出堆栈段,弹出就不对RETI ;返回中断位置执行下一条指令;*****************紧急处理2:东西红灯亮,南北绿灯亮**************************** KEY2:PUSH PSWMOV A,#11100111B ;紧急处理2:东西红灯亮,南北绿灯亮MOV DPTR,#00FFHMOVX @DPTR,AMOV R7,#100 ;延时5SLCALL L0;POP PSWRETI ;返回中断位置执行下一条指令END。
实验八 交通灯控制实验一、实验目的: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。
8255控制十字路口交通灯一、实验目的了解8255芯片的结构及编程方法,掌握采用单片机接口实现模拟十字路口交通灯控制系统的硬件设计方法。
熟悉模拟交通灯控制系统程序的设计与调试,提高微机接口与通信技术的应用系统的设计和调试水平。
二、设计实验的内容和要求设计采用8255做输出口,控制十二个发光二极管燃灭来模拟十字路口交通灯控制的程序,通过微机接口系统模拟十字路口交通信号灯控制管理,实现如下功能:1、通行方向控制:实现东西、南北方向通行控制2、通行时间控制:能实现东西、南北方向通行时间的任意设置3、禁止通行控制:能实现东西、南北方向禁止通行控制4、禁止通行时间控制:能实现东西、南北方向禁止通行时间的任意设置5、黄灯闪烁控制:能实现东西、南北方向黄灯闪烁控制循环控制:能实现东西和南北方向通行、禁止通行、黄灯闪烁等的循环运行。
6、设计程序框图7、根据设计要求和实验结果写出完整的实验报告三、实验设计说明1.因为本实验是十字路口交通灯控制的设计性实验,所以要先了解实际交通灯的变化情况和规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1东西绿灯通车,南北红灯。
过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。
再转状态3,南北绿灯通车,东西红灯。
过一段时间转状态 4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。
最后循环至状态1。
2、程序中注意8255的工作模式的设定,及3个端口的工作方式等,相应参数的设定请查阅8255的资料。
3、各发光二极管共阳极,使其点亮应使8255相应端口的位清0。
4本设计性实验,涉及外部数据存储器扩展寻址操作,需按下图连接实验线路。
⑴将存储器单元的D0~D7总线接口用8芯排线或8芯扁平线与数据总线单元D0~D7的任一接口相连,存储器单元的A0~A7地址接口与地址总线单元(低八位)A0~A7的任一接口相连,存储器单元的A8~A12地址接口与地址总线单元(高八位)A8~A12的任一接口相连。
随着计算机科学技术的不断发展,微型计算机得到了广泛的应用,是人们利用计算机设计和开发各种应用系统的基础。
同时微型计算机接口技术也是一门实践性较强的课程,理论与实践相结合可以更好的掌握知识,这也是这次交通灯系统控制的设计目的。
交通灯是交通安全的关键,已广泛应用于城乡的十字路口,它的有无作为交通安全检查的重要依据,是交通秩序正常进行的有力保障。
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。
但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。
目前,有一种使用“模糊控制”技术控制交通灯的方法。
能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。
但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。
本次的交通灯控制系统主要由8255A并行口、8253定时/计算器、8259单极中断控制器以及74LS139译码器实验等芯片组成。
整个课程设计主要使用8255A的A口和B口模拟十字路口交通灯的闪烁情况。
主要包括以下五个方面:1.课程设计题目名称;2.课程设计要求完成的任务;3.系统设计文档(包括了总体设计、详细设计以及程序设计等文档);4、课程设计总结;5.参考文献本次课程设计以固定的程序实现对交通灯实行控制,没有实现智能化,但智能化是交通控制系统是交通控制系统发展的必然趋势,也是满足日益发展的社会需要。
微机原理课程设计-8255控制交通灯[精选合集]第一篇:微机原理课程设计-8255控制交通灯微机原理课程设计:8255模拟交通灯1、目的:学习8255使用方法,学习模拟交通灯控制的方法,学习双色灯的使用。
2、要求:控制4个双色LED灯(可发红,绿,黄光),模拟十字路口交通灯管理。
3、电路及连线PC0-PC3连DG1-DG4,PC4-PC7连DR1-DR4。
8255片选CS8255连138译码处210H。
4、说明(1)因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的变化规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
再转状态3,东西绿灯通车,南北红灯。
过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态1。
(2)双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
(3)74LS240为8输入输出的反向驱动器。
5、完成的任务(1)利用计算机和微机原理试验箱,将实验6的程序Tlamp_88.asm在试验箱运行和调试。
全速运行,观察整体效果。
单步运行,观察程序每条语句额执行效果,理解语句含义。
(2)修改实验连线为,PC7-PC4连DG1-DG4,PC3-PC0连DR1-DR4。
8255片选CS8255连138译码处210H孔。
将Tlamp_88.asm另存为jiaotong.asm。
修改jiaotong.asm,实现交通灯原有功能。
(3)修改实验连线为,PB7-PB4连DG1-DG4,PB3-PB0连DR1-DR4。
8255片选CS8255连138译码处210H孔。
将jiaotong.asm另存为jiaotong2.asm。
交通灯程序/*********************************************************** 十字路口交通灯控制 C 程序***********************************************************/#include <reg51.h>#define uchar unsigned char#define uint unsigned int/*****定义控制位*******************************************/sbit Time_Show_LED2=P2^5; //Time_Show_LED2(直行时间显示)控制位sbit Time_Show_LED1=P2^4; //Time_Show_LED1(直行时间显示)控制位sbit EW_LED2=P2^3; //EW_LED2控制位sbit EW_LED1=P2^2; //EW_LED1控制位sbit SN_LED2=P2^1; //SN_LED2控制位sbit SN_LED1=P2^0; //SN_LED1控制位sbit SN_Yellow=P1^6; //SN黄灯sbit EW_Yellow=P1^2; //EW黄灯sbit EW_ManGreen=P3^0; //EW人行道绿灯sbit SN_ManGreen=P3^1; //SN人行道绿灯sbit Special_LED=P2^6; //交通特殊指示灯sbit Busy_LED=P2^7; //交通繁忙指示灯sbit Nomor_Button=P3^5; //交通正常按键sbit Busy_Btton=P3^6; //交通繁忙按键sbit Special_Btton=P3^7; //交通特殊按键sbit EW_ManRed=P3^3; //EW人行道红灯sbit SN_ManRed=P3^4; //SN人行道红灯bit Flag_SN_Yellow; //SN黄灯标志位bit Flag_EW_Yellow; //EW黄灯标志位char Time_EW; //东西方向倒计时单元char Time_SN; //南北方向倒计时单元uchar EW=60,SN=40,EWL=19,SNL=19; //程序初始化赋值,正常模式uchar EW1=60,SN1=40,EWL1=19,SNL1=19; //用于存放修改值的变量uchar codetable[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //0-9段选码uchar code S[8]={0x28,0x48,0x18,0x48,0x82,0x84,0x81,0x84};//交通信号灯控制代码/**********************延时子程序**************************/void Delay(uchar a){uchar i;i=a;while(i--){;}}/*****************显示子函数******************************/ void Display(void){uchar h,l;h=Time_EW/10;l=Time_EW%10;P0=table[l];EW_LED2=1; //点亮EW_LED2Delay(2);EW_LED2=0; //熄灭EW_LED2P0=table[h];EW_LED1=1; //点亮EW_LED1Delay(2);EW_LED1=0;h=Time_SN/10;l=Time_SN%10;P0=table[l];SN_LED2=1; //点亮SN_LED2Delay(2);SN_LED2=0;P0=table[h];SN_LED1=1; //点亮SN_LED1Delay(2);SN_LED1=0;h= EW1/10;l= EW1%10;P0=table[l];Time_Show_LED1=1; //点亮Time_Show_LED1Delay(2);Time_Show_LED1=0;P0=table[h];Time_Show_LED2=1; //点亮Time_Show_LED2Delay(2);Time_Show_LED2=0;}/**********************外部0中断服务程序******************/void INT0_srv(void)interrupt 0 using 1{EX0=0; //关中断if(Nomor_Button==0) //测试按键是否按下,按下为正常状态 {EW1=60;SN1=40;EWL1=19;SNL1=19;Busy_LED=0; //关繁忙信号灯Special_LED =0; //关特殊信号灯}if(Busy_Btton==0) //测试按键是否按下,按下为繁忙状态 {EW1=45;SN1=30;EWL1=14;SNL1=14;Special_LED=0; //关特殊信号灯Busy_LED=1; //开繁忙信号灯}if(Special_Btton==0)//测试按键是否按下,按下为特殊状态 {EW1=75;SN1=55;EWL1=19;SNL1=19;Busy_LED=0; //关繁忙信号灯Special_LED =1;//开特殊信号灯}EX0=1; //开中断}/**********************T0中断服务程序*******************/ void timer0(void)interrupt 1 using 1{static uchar count;TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==10){if(Flag_SN_Yellow==1) //测试南北黄灯标志位{SN_Yellow=~SN_Yellow;}if(Flag_EW_Yellow==1) //测试东西黄灯标志位{EW_Yellow=~EW_Yellow;}}if(count==20){Time_EW--;Time_SN--;if(Flag_SN_Yellow==1) //测试南北黄灯标志位{SN_Yellow=~SN_Yellow;}if(Flag_EW_Yellow==1) //测试东西黄灯标志位{EW_Yellow=~EW_Yellow;}count=0;}}/*********************主程序开始***********************/ void main(void){Busy_LED=0;Special_LED=0;IT0=1; //INT0负跳变触发TMOD=0x01; //定时器工作于方式1TH0=(65536-50000)/256; //定时器赋初值TL0=(65536-50000)%256;EA=1; //CPU开中断总允许ET0=1; //开定时中断EX0=1; //开外部INTO中断TR0=1; //启动定时while(1){/*******S0状态**********/SN_ManRed=0;SN_ManGreen=1; //SN人行道通行EW_ManRed=1; //EW人行道禁止EW_ManGreen=0;Flag_EW_Yellow=0; //EW关黄灯显示信号Time_EW=EW;Time_SN=SN;while(Time_SN>=5){P1=S[0]; //SN绿灯,EW红灯Display();}/*******S1状态**********/P1=0x00;while(Time_SN>=0){Flag_SN_Yellow=1; //SN开黄灯信号位P1=P1|0x08; //保持EW红灯Display();}/*******S2状态**********/SN_ManRed=1; //SN人行道禁止SN_ManGreen=0;EW_ManRed=1; //EW人行道禁止EW_ManGreen=0;Flag_SN_Yellow=0; //SN关黄灯显示信号Time_SN=SNL;while(Time_SN>=5){P1=S[2]; //SN左拐绿灯亮,EW红灯Display();}/*******S3状态**********/P1=0x00;while(Time_SN>=0){Flag_SN_Yellow=1; //SN开黄灯信号位P1=P1|0x08; //保持EW红灯Display();}/***********赋值*********/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;/*******S4状态**********/SN_ManRed=1; //SN人行道禁止SN_ManGreen=0;EW_ManRed=0;EW_ManGreen=1; //EW人行道通行Flag_SN_Yellow=0; //SN关黄灯显示信号Time_EW=SN;Time_SN=EW;while(Time_EW>=5){P1=S[4]; //EW通行,SN红灯Display();}/*******S5状态**********/P1=0X00;while(Time_EW>=0){Flag_EW_Yellow=1;//EW开黄灯信号位P1=P1|0x80; //保持SN红灯Display();}/*******S6状态**********/SN_ManRed=1; //SN人行道禁止SN_ManGreen=0;EW_ManRed=1; //EW人行道禁止EW_ManGreen=0;Flag_EW_Yellow=0;//EW关黄灯显示信号Time_EW=EWL;while(Time_EW>=5){P1=S[6]; //EW左拐绿灯亮,SN红灯Display();}/*******S7状态**********/P1=0X00;while(Time_EW>=0){Flag_EW_Yellow=1; //EN开黄灯信号位P1=P1|0x80; //保持SN红灯Display();}/***********赋值********/EW=EW1;SN=SN1;EWL=EWL1;SNL=SNL1;}}。
..’. 实验四8255A并行口实验-----交通灯控制一、8255A并行口实验(二)目的掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。
二、8255A并行口实验(二)内容1、实验原理实验原理图如图所示,PB4 ~ PB7和PC0 ~ PC7分别与发光二极管电路L1~ L12 相连,本实验为模拟交通灯实验。
交通灯的亮灭规律如下:设有一个十字路口,1、3为南北方向,2、4为东西方向,初始为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车;延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3 路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车;延时一段时间后,2、4 路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到1、3路口方向,之后重复上述过程。
8255A的PB4~ PB7对应黄灯,PC0 ~ PC3对应红灯,PC4~ PC7对应绿灯。
8255A工作于模式0,并置为输出。
由于各发光二极管为共阳极,使其点亮应使8255A相应端口清0。
2、实验线路连接(1) 8255CS插孔连译码输出070H-07FH插孔。
(2) L1 - PC4 L4 - PC5 L7 - PC6 L10 - PC7L2 - PB4 L5 - PB5 L8 - PB6 L11 - PB7L3 - PC0 L6 - PC1 L9 - PC2 L12 - PC33、实验步骤(1) 按图5-9连好实验线路(2) 运行实验程序在系统显示"DVCC-86H"状态下,按任意键,系统显示命令提示符"-"。
按GO键,显示"1000 XX"输入F000 :B1B0按EXEC键,在DVCC-8086H上显示"8255-2"。
同时L1~L12 发光二极管模拟交通灯显示。
三、实验程序CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0073HIOAPT EQU 0070HIOBPT EQU 0071HIOCPT EQU 0072HIOBDATA EQU 0500HCONTPORT EQU 00DFH DATAPORT EQU 00DEHDATA1 EQU 0640HSTART: JMP IOLEDIOLED: CALL FORMATCALL LEDDISPMOV AX,0HMOV DS,AXMOV AL,82HMOV DX,IOCONPTOUT DX,ALMOV DX,IOBPTIN AL,DXMOV BYTE PTR DS:[0501H],ALMOV DX,IOCONPTMOV AL,80HOUT DX,ALMOV DX,IOBPTMOV AL,DS:[0501H]OR AL,0F0HOUT DX,ALMOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY1IOLED0: MOV AL,10100101BMOV DX,IOCPTOUT DX,ALCALL DELAY1CALL DELAY1OR AL,0F0HOUT DX,ALMOV CX,8HIOLED1: MOV DX,IOBPTMOV AL,DS:[0501H]AND AL,10101111BOUT DX,AL..’. CALL DELAY2OR AL,01010000B OUT DX,ALCALL DELAY2 LOOP IOLED1 MOV DX,IOCPT MOV AL,0F0H OUT DX,ALCALL DELAY2 MOV AL,01011010B OUT DX,ALCALL DELAY1 CALL DELAY1OR AL,0F0HOUT DX,ALMOV CX,8HIOLED2: MOV DX,IOBPT MOV AL,DS:[0501H]AND AL,01011111BOUT DX,ALCALL DELAY2OR AL,10100000BOUT DX,ALCALL DELAY2LOOP IOLED2MOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY2JMP IOLED0 DELAY1: PUSH AXPUSH CXMOV CX,0030H DELY2: CALL DELAY2 LOOP DELY2POP CXPOP AXRETDELAY2: PUSH CXMOV CX,8000H DELA1: LOOP DELA1POP CXRETLEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00 LED1: CMP BYTE PTR DS:[0600H],07HJA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DA TA1]MOV DX,DA TAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0640H],405BHADD BX,2MOV WORD PTR DS:[BX+0640H],4040HADD BX,2MOV WORD PTR DS:[BX+0640H],6D6DHADD BX,2MOV WORD PTR DS:[BX+0640H],7F5BHRETCODE ENDSEND START。
二○○九~二○一○学年第二学期信息科学与工程学院课程设计报告书
课程名称:微机原理课程设计
班级:电子信息工程2007级6 班学号:200704135150
姓名:张琦
指导教师:徐望明
二○一○年二月二十日
1、课程设计目的:
综合运用《微机原理与应用》课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高软硬件设计能力及实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。
2、课程设计内容及要求:
8255A应用——交通灯控制
1)、设计目的
●掌握8255A方式0的使用与编程方法
● PC机及配套的接口电路实验装置
● IC芯片:8255A应用
2)、内容
●采用8255A设计交通灯控制的接口方案
●插接电路
●编写控制程序
3)、设计步骤
(1)方案设计
考虑普通十字路口,交通灯的控制可分东西向和南北向两组,每组可用红、黄、绿三个灯进行交通管理,所以本方案要点是对六个交通灯进行控制。
由于灯光控制只需要开、关两个状态,所以可以采用开关量实施控制。
开关量的输出可以采用8255A的端口,由于开关量有6位,所以采用8位端口,又因为灯光控制不需要联络信号,所以按照方式0输出即可。
(2)电路插接
本实验利用装置提供的8255A芯片和逻辑电平显示器进行。
(3)编程与运行
3、详细设计:
(一)、编写汇编程序通过8255A控制四个方向交通灯的状态,具体假设设计状态如下:
1、首先初始状态0为东西南北都关灯。
2、然后经过一段时间后转为状态1东西绿灯通车,南北红灯。
3、过一段时间转为状态2,东西绿灯闪几次转亮黄灯,延时几秒,南北路口的仍然亮红灯。
4、再转状态3,南北绿灯通车,东西红灯。
5、过一段时间转状态4,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
6、最后返回至状态1继续循环。
说明:(1)实际上黄灯的闪烁由两个状态组成,例如南北红灯同时东西黄灯亮与南北红灯同时东西黄灯灭这两个状态的组成。
所以端口一共有七组状态。
东西方向:PA0红灯;PA1黄灯;PA3绿灯;
南北方向:PA4红灯;PA5黄灯;PA6绿灯;
(2)双色LED是由一个红灯LED管芯和一个绿色LED管芯封装在一起,公用负端。
当红色端加高电平,绿色正端加低电平,红灯亮;当红色端加低电平,绿色正端加高电干,绿灯亮;两端都加高电平时,黄灯亮。
(二)、端口状态图、程序流程图:
状态PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 PA
全灭0 0 0 0 0 0 0 0 00 0 南北红灯,东西绿灯0 0 0 1 0 1 0 0 14 1 南北红灯,东西黄灯0 0 0 1 0 0 1 0 12 2 南北红灯,东西关灯0 0 0 1 0 0 0 0 10 3 南北绿灯,东西红灯0 1 0 0 0 0 0 1 41 4 南北绿灯,东西红灯0 0 1 0 0 0 0 1 21 5 南北绿灯,东西红灯0 0 0 0 0 0 0 1 01 6
东西路口的绿灯、南北路口红灯同时亮
一段时间东西路口的红灯继续亮,同时南北路口的黄灯闪烁4次
东西路口的黄灯闪烁4次,同时南北路口的红灯继续亮东西路口的红灯、南北路口绿灯同时亮一段时间
(三)、实验连接线路图及相关说明
4、源程序代码
DATA SEGMENT
TIME1 EQO 10
TIME2 EQO 600
OUT_CODE DB 14H,5 DUP(12H,10H),41H,5 DUP(21H,01H),0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,307H ;控制字端口地址送DX
MOV AL,80H ;送方式字
OUT DX,AL
MOV DX,304H ;端口A的输出端送DX LPPO0: LEA SI. OUT_CODE ;数据段
LPPO1:MOV AL,[SI]
AND AL,AL ;CF置零
JZ LOOP0
OUT DX,AL
INC SI
MOV CX,TIME1 ;短延时
TEST AL,44H ;测码字为14H或41H?
JZ DELAY1 ;均非
MOV CX,TIME2 ;长延时
DELAY1:PUSH CX ;延时程序
PUSH AX
MOV CX,0040H
A1: MOV AX,056CH
A2: DEC AX
JNZ A2
LOOP A1
POP AX
POP CX
LOOP DELAY1
MOV AH,0BH ;检测是否有键盘输入
INT 21H
AND AL,AL
JZ LOOP1
XOR AL,AL ;关灯退出
OUT DX,AL
MOV AH,4CH ;返回DOS系统
INT 21H
CODE ENDS
END START
5、程序运行结果
初始状态为东西南北全都为关灯。
经过一段时间后,东西方向交通灯变绿,南北仍然为红灯。
再一段时间后,东西黄灯开始闪烁,闪5次,南北仍为红灯。
接着东西红灯亮,同时南北方向变成绿灯。
同样,一段时间后,南北黄灯闪5次,东西为红灯。
接着回到东西绿灯,南北红灯,如此往复循环。
6、课程设计总结
通过本次课程设计,我的收获很大。
上学期所学的微机原理的理论知识得到巩固和加深理解,实验技能也进一步加强了,树立了工程观点和严谨的科学作风,初步具有运用理论知识分析问题、解决问题的能力。
同时,培养学了运用所学的理论解决实际问题的能力,初步掌握分析简单电路,调试简单汇编程序以及撰写实验报告的能力。
总之,提高了我分析和解
决问题的能力以及实验技能。
7、参考文献
[1] 朱定华,微机原理、汇编与接口技术,清华大学出版社,2007;
[2].倪继烈,刘新民主编,《微机原理与接口技术(第二版)》,电子科技大学出版社,2004;。