鸡西大学课程设计实验报告题目:基于8086的交通灯控制系统课程设计院系:电气与信息工程系班级:09机电一体化(4)班*名:***学号:***********指导老师:**(2010.12.9)目录一、设计要求。
2二、设计目的。
2三、设计的具体实现。
2(一)系统概述。
2 (二)单元电路设计。
5 (三)软件程序设计。
9四、结论与愿望。
15五、心得体会及建议。
16六、附录。
17七、参考文献。
181交通灯设计报告一、设计要求1、完成系统总体方案设计;2、设计控制算法;3、设计系统接线图;4、完成控制软件的编写;5、编写课程设计说明书。
二、设计目的1、了解交通灯管理的基本工作原理2、熟悉8259A中断控制器的工作原理和应用编程3、熟悉8255A并行接口的各种工作方式和应用4、熟悉8253计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定时的方法。
5、掌握多位LED显示问题的解决。
三、设计的具体实现(一)系统概述系统要求实现正常时序控制,启动开关接通时,交通信号按设定的时序工作,并且各个方向的红、黄、绿灯接通时间倒计时显示,东西方向和南北方向的绿灯接通时间可以由外部设定。
所以设计中使用了8259A中断控制器、8254计数器、8255可编程并行接口实现了,对南北、东西方向交通的分别计时、分别控制,设计采用定时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。
城市十字交叉路口红绿灯控制系统主要负责控制东西走向和南北走向的红绿灯的状态和转换顺序,关键是各个状态之间的转换和进行适当的时间延时,正是基于以上考虑,采用如下设计:1.东西南北两个方向起始状态全为红,延续3秒。
2.东西方向红灯亮,南北方向绿灯亮,延续45秒。
3.东西方向红灯亮,南北方向绿灯以频率1HZ闪烁3秒。
4.东西方向红灯亮,南北方向黄灯亮,延续3秒。
25.东西方向绿灯亮,南北方向红灯亮,延续40秒。
6.东西方向绿灯亮以频率1HZ闪烁3秒,南北方向红灯。
7.东西方向黄灯亮,南北方向红灯亮,延续3秒。
8.东西方向红灯亮,南北方向红灯亮循环以上步骤。
通过分析灯亮的规律,总结出如下的功能表:交通灯亮灭功能表转换成控制码为:系统流程图如下:34(二)单元电路设计1、 8259的工作原理1)、数据总线缓冲器:8259A与系统数据总线的接口,是8位双向三态缓冲器。
CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过缓冲器传送的。
2)、读/写控制逻辑:CPU通过它实现对8259A的读/写操作。
3)、级连缓冲器:用以实现8259A芯片之间的级连,使得中断源可以由8级扩展至64级。
4)、控制逻辑电路:对整个芯片内部各部件的工作进行协调和控制。
5)、中断请求寄存器IRR:8位,用以分别保存8个中断请求信号,当响应的中断请求输入脚有中断请求时,该寄存器的相应位置1。
6)、中断屏蔽寄存器IMR:8位,相应位用以对8个中断源的中断请求信号进行屏蔽控制。
当其中某位置“0“时,则相应的中断请求可以向CPU提出;否则,相应的中断请求被屏蔽,即不允许向CPU提出中断请求。
该寄存器的内容为8259A的操作命令字OCW1,可以由程序设置或改变。
7)、中断服务寄存器ISR:8位,当CPU正在处理某个中断源的中断请求时,ISR寄存器中的相应位置1。
8)、用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产生多重中断或中断嵌套。
2. 8255A的工作原理1)、8255A的内部结构:(1)数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。
输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
5(2)三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。
B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。
C端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。
(3) A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。
方式控制字的高5位决定A组的工作方式,低3位决定B组的工作方式。
对C口按位复位命令字可对C口的每一位实现置位或复位。
A组控制电路控制A口和C口上半部,B 组控制电路控制B口和C口下半部。
(4)读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。
2)、8255A的工作方式:方式0---基本输入输出方式;方式1---选通输入输出方式方式2---双向选通输入输出方式。
3)、引脚信号8255A的引脚如图7.5所示,分为数据线、地址线、读/写控制线、输入/输出端口线和电源线。
D7~D0(data bus):三态、双向数据线,与CPU数据总线连接,用来传送数据。
(chip select):片选信号线,低电平有效时,芯片被选中。
A1, A0(port address):地址线,用来选择内部端口。
(read):读出信号线,低电平有效时,允许数据读出。
6(write):写入信号线,低电平有效时,允许数据写入。
RESET(reset):复位信号线,高电平有效时,将所有内部寄存器(包括控制寄存器)清0。
PA7~PA0(port A):A口输入/输出信号线。
PB7~PB0(port B):B口输入/输出信号线。
PC7~PC0(port C):C口输入/输出信号线。
VCC:+5V电源。
GND:电源地线。
3、 8253的工作原理:8253是可编程的计数器/定时器,其内部有三个独立的16位计数器/定时器通道,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数。
其CLK0~CLK2是计数器0~2的时钟脉冲输入端, GATE0~GATE2是门控脉冲输入端, OUT0~OUT2是输出端。
4、计时功能实现逻辑:通过8253计数器0和计数器1级联实现准确定时;用8255的A口低六位控制东西、南北路口交通灯的状态;灯的亮灭可直接由8086输出0,1控制。
用8259A管理可屏蔽中断即开机初始化。
采用两个计数器级联的方式, 并且计数器0工作于方式3用于产生方波信号,计数器1工作方式0,计数到时高电平信号。
计数器1的输出端OUT1接入8255芯片的PC0口,通过查询8255的C口的值,以完成计时功能。
将计数器0的输出OUT0接到计数器1的输入端CLK1,而CLK0的输入采用1.19MHZ的时钟频率, 计数器0计数初值为59499=0E86BH,则OUT0=20HZ, 即计数器1的时钟频率为20HZ。
7当计数器1的记数初值为9时,0.5S后OUT1输出一高电平。
8086通过读取8255C口的值,来决定对A口写入的数据。
因此每隔0.5秒8086变换灯的状态,持续6次即完成3秒的闪烁功能。
当计数器1的记数初值为899时,45S后OUT1输出一高电平。
通过查询8255的C口PC0的状态改变,达到延时45秒的作用。
同理计数器1的计数初值分别为59、799时,分别为3、40秒的延时。
5、译码电路设计通过分析8259、8253、8255各端口地址,设计合理的地址译码电路。
8259的地址为20H、21H,8253的地址为40H、41H、42H、43H,8255的端口地址为0F0H、0F1H、0F2H、0F3H。
故芯片的地址只与8086的地址的低8位有联系,不妨设高十二为全为1将它们相与后作为38译码器的始能信号E3。
再分析发现8259、8253、8255各端口地址的低八位其中D2、D3均为0,将8086的地址总线的D2、D3作为38译码器的始能信号E1、E2。
将8086的地址总线的D0、D1分别与8253和8255的A0、A1连接,利用D4、D5、D6、D7构成译码电路。
将8086的地址总线的D0与8259的A0连接,利用D2、D4、D5、D6、D7通过38译码器构成译码电路。
具体见下图所示:8(三)软件程序设计******************************************************** *********MY8259_ICW1 EQU 20H ;实验系统中8259的ICW1端口地址MY8259_ICW2 EQU 21H ;实验系统中8259的ICW2端口地址MY8259_ICW3 EQU 21H ;实验系统中8259的ICW3端口地址MY8259_ICW4 EQU 21H ;实验系统中8259的ICW4端口地址MY8259_OCW1 EQU 21H ;实验系统中8259的OCW1端口地址MY8259_OCW2 EQU 20H ;实验系统中8259的OCW2端口地址MY8259_OCW3 EQU 20H ;实验系统中8259的OCW3端口地址MY8253_COUNT0 EQU 40H ;实验系统中8253计数器0端口地址MY8253_COUNT1 EQU 41H ;实验系统中8253计数器1端口地址MY8253_COUNT2 EQU 42H ;实验系统中8253计数器2端口地址MY8253_MODE EQU 43H ;实验系统中8253控制寄存器端口地址MY8255_A EQU 0F0H ;实验系统中8255的A口地址MY8255_B EQU 0F1H ;实验系统中8255的B口地址MY8255_C EQU 0F2H ;实验系统中8255的C口地址MY8255_MODE EQU 0F3H ;实验系统中8255的控制寄存器地址******************************************************** *********9DATA SEGMENTCS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量DATA ENDSCODE SEGMENTASSUME CS:CODE ,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,3508HINT 21HMOV IP_BAK, ES ;保存INTR原中断处理程序入口偏移地址MOV CS_BAK, BX ;保存INTR原中断处理程序入口段地址MOV AX,SEG INITIALMOV DS,AXMOV DX,OFFSET INITIALMOV AX,2508HINT 21H ;设置中断向量MOV DX,MY8259_ICW1 ; 初始化实验系统中8259的ICW1 MOV AL,13H ;边沿触发、单片8259、需要ICW4OUT DX,ALMOV DX, MY8259_ICW2 ;初始化实验系统中8259的ICW2 MOV AL,08H ;IR0中断类型号OUT DX,ALMOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4 MOV AL,03H ;自动结束EOIOUT DX,ALMOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1 MOV AL,0FEH ;打开IR0的屏蔽位OUT DX,ALMOV AL,00HMOV DX, MY8259_OCW2 ;初始化实验系统中8259的OCW2,完成8259的初始化OUT DX,ALQUERY: MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令MOV AL,0CHOUT DX,ALIN AL,DX ;读出查询字TEST AL,80H ;判断中断是否已响应JZ QUERY ;没有响应则继续查询AND AL,01HCMP AL,00HJNE QUERY ;若不是IR0请求,继续查询L4: INT 08H ;调用08H中断程序CALL DELAY3S ;延时3秒MOV DX,MY8255_A ;写8255的A口MOV AL,12HOUT DX,AL ; L2、L5亮CALL DELAY45S ;延时45秒MOV CX, 03H ;周期1S,循环三次完成灯闪烁L2: MOV DX,MY8255_A ;写8255的A口MOV AL,02HOUT DX,AL ; L2亮、L5灭CALL DELAYHALFS ;延时0.5秒MOV DX,MY8255_AMOV AL,12HOUT DX,AL ; L2、L5亮CALL DELAYHALFS ;延时0.5秒DEC CXJNZ L2 ;L2亮,L5闪烁MOV DX,MY8255_A ;写8255的A口MOV AL,06HOUT DX,AL ; L2、L3亮CALL DELAY3S ;延时3秒MOV DX,MY8255_A ;写8255的A口MOV AL,21HOUT DX,AL ; L1、L6亮CALL DELAY45S ;延时45秒MOV CX,03H ;周期1S,循环三次完成灯闪烁L3: MOV DX,MY8255_A ;写8255的A口MOV AL,01HOUT DX,AL ; L1亮、L6灭CALL DELAYHALFS ;延时0.5秒MOV DX,MY8255_A ;写8255的A口MOV AL,21HOUT DX,AL ; L1、L6亮CALL DELAYHALFS ;延时0.5秒DEC CX ;L1亮,L6闪烁JNZ L3MOV DX,MY8255_A ;写8255的A口MOV AL,09HOUT DX,AL ; L1、L4亮CALL DELAY3S ;延时3秒JMP L4 ;循环一次完成,跳到L4重新开始循环MOV AH,4CHINT 21H ;返回DOSINITIAL PROC ;中断类型号08H的中断子程序MOV DX,MY8253_MODE ;对8253初始化MOV AL,36HOUT DX,ALMOV AX, 0E86BHMOV DX,MY8253_COUNT0OUT DX,ALMOV AL,AHOUT DX,AL ;计数器0工作方式3 ,OUT0为频率20HZ的方波MOV DX, MY8255_MODEMOV AL,89HOUT DX,AL ;8255初始化完成A口输出,C口输入MOV DX,MY8255_AMOV AL,03HOUT DX,AL ;两个红灯L1、L2亮,灯初始化完成IRETINITIAL ENDP ;开机初始化完成DELAY3S PROC ;延时3S子程序MOV AL,51HMOV DX,MY8253_MODEOUT DX,ALMOV AL,59HMOV DX,MY8253_COUNT1OUT DX,AL ;计数器1工作方式0 ,计数初值为59 L1: MOV DX, MY8255_CIN AL,DXCMP AL,01HLOOPNZ L1RETDELAY3S ENDPDELAY45S PROC ;延时45S子程序MOV AL,71HMOV DX,MY8253_MODEOUT DX,ALMOV AX,0899HMOV DX,MY8253_COUNT1OUT DX,ALMOV AL,AHOUT DX,AL ;计数器1工作方式0 ,计数初值为899 L5: MOV DX, MY8255_CIN AL,DXCMP AL,01HLOOPNZ L5RETDELAY45S ENDPDELAYHALFS PROC ;延时0.5S子程序MOV AL,51HMOV DX,MY8253_MODEOUT DX,ALMOV AL,09HMOV DX,MY8253_COUNT1OUT DX,AL ;计数器1工作方式0 ,计数初值为9L6: MOV DX, MY8255_CIN AL,DXCMP AL,01HLOOPNZ L6RETDELAYHALFS ENDPDELAY40S PROC ;延时40S子程序MOV AL,71HMOV DX,MY8253_MODEOUT DX,ALMOV AX,0799HMOV DX,MY8253_COUNT1OUT DX,ALMOV AL,AHOUT DX,AL ;计数器1工作方式0 ,计数初值为799L7: MOV DX, MY8255_CIN AL,DXCMP AL,01HLOOPNZ L7RETDELAY40S ENDPCODE ENDSEND START四、结论与愿望1、结论:理论上结果应为东西南北两个方向起始状态全为红,延续3秒。