当前位置:首页 > 程序 > 正文

51单片机红绿灯闪烁程序

  • 程序
  • 2024-04-17 03:01:02
  • 8804

一、基于51单片机的红绿灯原理
注意p0口从东到西是红灯
;p1号门由东向西黄灯亮;p2口从东到西绿灯
;从北到南红灯
;p4为从北到南的黄灯
;p5为从北到南的绿灯
;绿灯持续3秒;闪烁5次,每次0.2秒,红灯长亮4秒
ORG0000H
LJMPMAIN
ORG0030H
MAIN:MOVDPTR,#B1
MOVR2,#4
MOVA,#0H
F3:MOVR1,A
MOVCA,@A+DPTR
JNBACC.4,SS1;判断东西方向黄灯是否亮。 若亮则切换至黄灯闪烁程序
JNBACC.1、SS2;判断南北黄灯是否亮。 如果亮了,切换到黄灯闪烁程序
MOVP1。 ,A
LCALLDY1S
SS:MOVA,R1
INCA
DJNZR2,F3
SJMPMAIN
SS1:MOVR0,#10
XH1:CPLACC.4
MOVP1,A
LCALLDYS
DJNZR0,XH1
SJMPSS
SS2:MOVR0,#10
XH2:CPLACC.1 LCALLDYS
DJNZR0,XH2
SJMPSS
DY1S:MOVR5,#30
DLP0:MOVR6,#100
DLP1:MOVR7,#250;F=6MHZ
DLP2:DJNZR7,DLP2;2X250X2uS=1ms
DJNZR6,DLP1;1x100=0.1S
DJNZR5,DLP0;0.1X30=3s
RET
DYS:MOVR6,#200
DLP3:MOVR7,#250;F=6MHZ
DLP4:DJNZR7,DLP4;2X250X1uS=500us=1ms
DJNZR6,DLP3;1x200=0.2S
RET
B1:DB11011110B,11101110B,11110011B,11110101B
END
二、求用C语言编写的交通灯程序,C51单片机控制,无左转右转
//以下代码是KeilC51软件调试的
#include"reg51.h"//头文件包含
//宏定义
#defineuintunsignedint
#Definitionucharunsignedchar
#defineON0//灯在0处亮
#defineOFF1//灯在1处亮
//引脚定义
//南北路黄灯亮。 红灯3秒,黄灯30秒,绿灯3秒,38秒
//东西向黄灯亮3秒,绿灯亮28秒,黄灯亮3秒,红灯亮40秒
sbitPortDX_Yellow=P1^0;//东西方向黄灯
sbitPortDX_Red=P1^1;//东西方向红灯Direction
sbitPortDX_Green=P1^2;//东西方向绿灯
sbitPortNB_Yellow=P1^3;//南北方向黄灯Light
sbitPortNB_Red=P1^4;//南北红灯
sbitPortNB_Green=P1^5;//南北绿灯
voiddelay(uintms)//毫秒延迟(AT89C52@11.0592MHz)
{
uintti;
while(ms--)
{
for(ti=0;ti<112;ti++){}//112
}
}
/*====================主要功能=====================*/
voidmain(void)
{
delay(400);//开始延迟400毫秒
期间(1)
{
PortNB_Yellow=ON;PortNB_Red=OFF;PortNB_Green=OFF;//北、南黄灯亮3秒
PortDX_Yellow=ON;PortDX_Red=OFFPortDX_Green=OFF;//东西黄灯亮3秒
delay(3000);
PortNB_Yellow=OFF;PortNB_Red=ON;PortNB_Green=OFF;//南北红灯亮28秒
PortDX_Yellow=OFF;PortDX_Red=OFF;PortDX_Green=ON;//东西绿灯亮28秒
delay(28000);
PortNB_Yellow=OFF;PortNB_Red=ON;PortNB_Green=OFF;//南北红灯亮2秒
PortDX_Yellow=ON;PortDX_Red=OFF;PortDX_Green=OFF;//东西黄灯亮2秒
delay(2000);
PortNB_Yellow=ON;PortNB_Red=OFF;PortNB_Green=OFF;//南北黄灯亮1秒
PortDX_Yellow=ON;PortDX_Red=OFF;PortDX_Green=OFF;//东西黄灯亮1秒
delay(1000);
PortNB_Yellow=ON;PortNB_Red=OFF;PortNB_Green=OFF;//南北黄灯灯亮2秒
PortDX_Yellow=OFF;PortDX_Red=ON;PortDX_Green=OFF;//东西红灯亮2秒
delay(2000);
PortNB_Yellow=OFF;PortNB_Red=OFF;PortNB_Green=ON;//南北绿灯亮38秒
PortDX_Yellow=OFF;PortDX_Red=ON;PortDX_Green=OFF;//东西红灯亮38秒
延迟(3800);
}
}
1.当黄灯亮时,北、南、东车道同时变黄,提醒行人或车辆下一个灯色即将到来,持续3秒。
2.南北路信号灯为红灯时,南北路车辆禁止通行30秒;当南北道路信号灯为绿色时,禁止南北道路车辆通行;38秒。
3.东、西车道绿灯亮时,东、西车道车辆允许通行28秒;东、西车道信号灯为红灯时,禁止东、西车道车辆通行;40秒。
4.这样,上表所示时间及红、绿、黄出现的顺序就可以按顺序进行,从而使行人和车辆能够安全、顺利地通行。