基于51单片机的现代交通灯Proteus仿真程序,单片机源程序文件。

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-03
基于51单片机的简易交通灯的proteus仿真,我要原理图,仿真图,protell图,程序要完整的,对应哦,

#include "reg51.h"
#define uchar unsigned char
sbit k1=P1^0;

void delay8s(void)
{
unsigned char i,j,k;
for(i=80;i>0;i--)
for(j=200;j>0;j--)
for(k=248;k>0;k--);
}

void delay05s(void)
{
unsigned char i,j,k;
for(i=2;i>0;i--)
for(j=200;j>0;j--)
for(k=248;k>0;k--);
}

void zt0()
{
P2=0xf3;
delay8s();
}

void zt1()
{
char i;
for(i=4;i>0;i--)
{
P2=0xeb;
delay05s();
P2=0xfb;
delay05s();
}
}

void zt2()
{
P2=0xde;
delay8s();
}

void zt3()
{
char j;
for(j=4;j>0;j--)
{
P2=0xdd;
delay05s();
P2=0xdf;
delay05s();
}
}

void k1yes()
{
while(1)
{
zt0();
zt1();
zt2();
zt3();
}
}

void k1no()
{
P2=0x00;
delay05s();
P2=0xff;
delay05s();
}

void main(void)
{
while(1)
{
uchar a;
a=P1;
a=a&0x01;
switch(a)
{
case 0:k1yes();break;
case 1:k1no();break;
}
}
}

悲哀啊。连论文都要别人帮你做,还不如把工资也交给别人帮你花算了。

ORG 0000H
SJMP A3 ;四盏红灯亮
A3:MOV SP,#60H
MOV A, #24H
MOV P1, A
CLR P3.4
CLR P3.3
SETB P3.5
SETB P3.2 ;显示5秒
MOV R4,#05H
LOOP1: MOV R2,#03H
LCALL LP ;调显示子程序
DJNZ R4,LOOP1
MOV R4,#00H
MOV R2,#03H
LCALL LP ;东西绿灯亮,南北红灯亮
A2:MOV A,#0CH
CLR P3.5
MOV P1,A
SETB P3.3
CLR P3.4
SETB P3.2 ;显示20秒
MOV R4,#14H
LOOP2 :MOV R2,#03H
LCALL LP ;调显示子程序
DJNZ R4,LOOP2
MOV R4,#00H
MOV R2,#03H
LCALL LP ;调显示子程序
SETB P3.2
CLR P3.3 ; 显示5秒
MOV R4 ,#05H ;东西黄灯亮,南北红灯亮
LOOP9:MOV A,#14H
MOV P1 ,A
CLR P3.5
SETB P3.4
MOV R2,#02H
LCALL LP ;调显示子程序
MOV R2,#01H ;定时
LCALL DELAY ;调延时子程序,南北红灯亮
MOV A ,#04H
MOV P1 ,A
CLR P3.4
CLR P3.5
MOV R2,#01H ;定时
LCALL DELAY ;调延时子程序
DJNZ R4,LOOP9
MOV R4,#00H
MOV R2,#03H
LCALL LP ;调显示子程序,东西红灯亮,南北绿灯亮
A8:MOV A, #61H
MOV P1,A
CLR P3.4
CLR P3.3
CLR P3.2
SETB P3.5 ; 显示20秒
MOV R4,#14H
LOOP3:MOV R2,#03H
LCALL LP ;调显示子程序
DJNZ R4,LOOP3
MOV R4,#00H
MOV R2,#03H
LCALL LP ;调显示子程序
SETB P3.5
MOV R4 ,#05H
LOOP10:MOV R2,#02H
LCALL LP ;调显示子程序,东西红灯亮,南北黄灯亮
A0:MOV A,#0A2H
MOV P1,A
CLR P3.4
CLR P3.3
CLR P3.2
MOV R2,#01H ;定时
LCALL DELAY ;调延时子程序,东西红灯亮
MOV A,#20H
MOV P1,A
CLR P3.4
CLR P3.3
CLR P3.2
MOV R2,#01H ;定时
LCALL DELAY ;调延时子程序
DJNZ R4,LOOP10
MOV R4,#00H
MOV R2,#03H
LCALL LP ;调显示子程序
LJMP A2 ;延时子程序
DELAY:PUSH 2
PUSH 1
PUSH 0
DELAY1: MOV 1,#00H
DELAY2:MOV 0,#0B2H
DJNZ 0,$
DJNZ 1,DELAY2
DJNZ 2,DELAY1
POP 0
POP 1
POP 2
DJNZ R2 ,DELAY
RET ;显示子程序
xian: MOV A,R4
MOV B,#10
DIV AB
MOV R6,A
MOV DPTR,#TAB
MOV A,B
MOVC A,@A+DPTR
MOV SBUF,A
MOV R7,#0FH
H55S:DJNZ R7,H55S
MOV A,R6
MOVC A,@A+DPTR
MOV SBUF,A
MOV R7,#0FH
H55S1:DJNZ R7,H55S1
LCALL DELAY
RET
这是交通灯的子程序。它主要是被调用控制各个方向灯亮灭情况和时间。
TAB:DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh ;查表子程序
END