用Keilc软件设计一个交通灯程序C程序
发布网友
发布时间:2022-04-21 09:42
我来回答
共2个回答
热心网友
时间:2023-10-23 13:18
东西和南北的时间不同步,楼主没有说得很清楚
你把时间流程说清楚我可以把代码写出来
//以下代码经过Keil C51软件调试通过
#include "reg51.h" //头文件包含
//宏定义
#define uint unsigned int
#define uchar unsigned char
#define ON 0 //0的时候灯亮
#define OFF 1 //1的时候灯亮
//管脚定义
//南北道 黄灯亮3秒 红灯亮 30秒 黄灯3秒 绿灯38秒
//东西道 黄灯亮3秒 绿灯亮 28秒 黄灯3秒 红灯40秒
sbit PortDX_Yellow = P1^0; //东西方向黄灯
sbit PortDX_Red = P1^1; //东西方向红灯
sbit PortDX_Green = P1^2; //东西方向绿灯
sbit PortNB_Yellow = P1^3; //南北方向黄灯
sbit PortNB_Red = P1^4; //南北方向红灯
sbit PortNB_Green = P1^5; //南北方向绿灯
void delay(uint ms) // 毫秒级延时(AT89C52 @ 11.0592MHz)
{
uint ti;
while(ms--)
{
for(ti=0;ti<112;ti++){}//112
}
}
/*==================== 主函数 ====================*/
void main(void)
{
delay(400); //开机延时400ms
while(1)
{
PortNB_Yellow = ON ;PortNB_Red = OFF;PortNB_Green = OFF;//南北黄灯亮3秒
PortDX_Yellow = ON ;PortDX_Red = OFF;PortDX_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秒
delay(3800);
}
}
热心网友
时间:2023-10-23 13:18
东西和南北的时间不同步,楼主没有说得很清楚
你把时间流程说清楚我可以把代码写出来
//以下代码经过Keil
C51软件调试通过
#include
"reg51.h"
//头文件包含
//宏定义
#define
uint
unsigned
int
#define
uchar
unsigned
char
#define
ON
0
//0的时候灯亮
#define
OFF
1
//1的时候灯亮
//管脚定义
//南北道
黄灯亮3秒
红灯亮
30秒
黄灯3秒
绿灯38秒
//东西道
黄灯亮3秒
绿灯亮
28秒
黄灯3秒
红灯40秒
sbit
PortDX_Yellow
=
P1^0;
//东西方向黄灯
sbit
PortDX_Red
=
P1^1;
//东西方向红灯
sbit
PortDX_Green
=
P1^2;
//东西方向绿灯
sbit
PortNB_Yellow
=
P1^3;
//南北方向黄灯
sbit
PortNB_Red
=
P1^4;
//南北方向红灯
sbit
PortNB_Green
=
P1^5;
//南北方向绿灯
void
delay(uint
ms)
//
毫秒级延时(AT89C52
@
11.0592MHz)
{
uint
ti;
while(ms--)
{
for(ti=0;ti<112;ti++){}//112
}
}
/*====================
主函数
====================*/
void
main(void)
{
delay(400);
//开机延时400ms
while(1)
{
PortNB_Yellow
=
ON
;PortNB_Red
=
OFF;PortNB_Green
=
OFF;//南北黄灯亮3秒
PortDX_Yellow
=
ON
;PortDX_Red
=
OFF;PortDX_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秒
delay(3800);
}
}