微机原理及应用课程设计--交通信号灯的控制

1.通过8255A并口来控制LED发光二极管的亮灭。
2.A口控制红灯,B口控制黄灯,C口控制绿灯。
3.输出为0则亮,输出为1则灭。
4.用8253定时来控制变换时间。
要求:设有一个十字路口,1、3为南,北方向,2、4为东西方向,初始态为4个路口的红灯全亮。之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延迟30秒后,1、3路口的绿灯熄灭,而1,3路口的黄灯开始闪烁(1HZ)。闪烁5次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。延迟30秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁5次后,再切换到1、3路口方向。之后,重复上述过程。

系统原理
工作原理说明:
此方案是通过并行接口芯片8255A和8088计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。
硬件连接参考方案:红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接1,2,3,4路口的红灯,B,C口类推。8088工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,A8~A15通过地址锁存器,接到3—8译码器,译码后分别连到8255和8253的CS片选端。8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2;OUT1产生30秒定时信号;OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。8255三个口全部工作在方式0,即基本输入输出方式,红绿灯的转换由软件编程实现。

2、有关系统定时方法:PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,用BIOS调用INT 1AH可以取得该定时单位。例:1秒=18.2 (计时单位)

ORG 0000H
LJMP STAR1
A_BIT EQU 20H;数字的管店的内存位置
B_BIT EQU 21H个位数字数码管的十位数字的存储空间位置
TEMP EQU 22H;计数器的值存储位置

STAR1:MOV TEMP,#20;初始化计数器60
CLR P1.0;南北方向的红灯
CLR P1 0.5,东西方向绿灯
STLOP1:由ACALL和DISPLAY1;调用显示子程序
DEC的TEMP 1
MOV A计数器减的TEMP;
CJNE A,#0,STLOP1;判断计数器满了吗?“
SETB P1.0;南北方向的红灯熄灭
SETB P1.5 ACALL和山绿色
由东向西方向的呼叫闪烁的黄灯过程 BR /> STAR2:MOV TEMP,#20;重新开始60秒倒计时
CLR P1.2;南北方向的绿灯
CLR P1.3;东方红西方向
STLOP2:ACALL并显示2;调用数码管子程序
DEC TEMP;计数器减
MOV A,TEMP
CJNE A,#0,STLOP2以确定是否计数器?
SETB P1.2
SETB P1.3
ACALL山,子程序调用黄灯闪烁?
由SJMP STAR1;

DISPLAY1:MOV A,TEMP
MOV B,#10
DIV AB
MOV B_BIT,B位B BR /> MOV A_BIT,A;十

MOV DPTR,#NUMTAB;指定查找表启起始地址
MOV R0,#12;
DPL1: MOV R1,#250;
DPLOP1:MOV A,A_BIT;个位数
MOVC A,@ A + DPTR;调查位数的7段码
MOV P0,A;发送出去位7段码
CLR P2.3;打开一个数字显示
ACALL和D1MS所; 162微秒
SETB P2.3;关闭了一下,以防止鬼影
MOV A,B_BIT,以十位数
MOVC A _at_ A + DPTR;调查10位,7段码
MOV P0,A;发送10七段码
CLR至P2.2,开放的10显著?
CLR P2.0
CLR P2.1

ACALL D1MS显示
SETB P2.2 162微秒;近10个,以防止重影
> DJNZ R1 DPLOP1循环执行250次
DJNZ R0,DPL1流通实施250X4 = 1000
RET
DISPLAY2:MOV A,TEMP TEMP中的十六进制数转换成十进制数 BR /> MOV B,#10; 10进制/ 10 =十进制
DIV AB;
MOV A_BIT,B,在B
MOV B_BIT 10,A;一个

MOV DPTR,#NUMTAB,
MOVC A指定的查找表的起始地址
MOV R0,#12;
DPL2:MOV R1,#250;
DPLOP2:MOV A,A_BIT带数字,@ A + DPTR;调查数字的7段码
MOV P0,A;发送的位7段码
CLR P2。 0;打开一个位
ACALL和D1MS;
显示162微秒SETB P2.0;关闭位,防止重影
MOV A,B_BIT十位数</ MOVC A _at_ A + DPTR;调查的10位数字的7段码
MOV P0,A,派出10个7段码
CLR P2.1,开放的十个重大
CLR P2.2 CLR P2.3

ACALL D1MS显示
SETB P2.1,162微秒;关闭10
DJNZ R1 DPLOP2,防止重影;循环执行250次
DJNZ R0,DPL2循环执行250X4 = 1000
RET
山:MOV R3,#5;
ROUND:CLR P1.1; /> CLR P1.4;
ACALL DELAY;黄灯闪烁5
SETB P1.1,每次间隔一秒钟
SETB P1.4;
ACALL延迟
DJNZ R3è½®;
RET;

D1MS:MOV R7,#80; 2 +2 X80 = 162微秒的延迟计算12MHZ
DJNZ R7,美元;
RET;
DELAY:MOV R6,#10;
YL3:MOV R4,#100;
XL2:MOV R5,#71;
DL1:NOP;秒的延时子程序
NOP
NOP
NOP
NOP
DJNZ R5,DL1;
DJNZ R4,XL2;
DJNZ R6,YL3的; <br / RET;
共阴极数码管显示的代码
NUMTAB一个:DB 03FH 0
END
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-30
武科大的吧追问

自动化4、5、6班之一的吧