这是某年这浙江省电子设计竞赛一道题目,具体要求如下:
一、任务
设计并制作一个城市交道口交通灯控制系统
二、要求
三、1, 基本要求
四、(1)在1平方米左右木板上制作交道口模型,装上交通灯。交道口模型如图所示。
(2)交通灯控制规则如下:
1)每个街口有左拐、右拐、直行及行人四种指示灯。每个灯有红、绿两种颜色。 自行车与汽车共用左拐、右拐和直行灯。
2)共有四种通行方式:
① 车辆南北直行、各路右拐,南北向行人通行。南北向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。
② 南北向左拐、各路右拐,行人禁行。通行时间为1分钟。
③ 东西向直行、各路右拐,东西向行人通行。东西向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。
④ 东西向左拐、各路右拐。行人禁行。通行时间为1分钟。 3)在通行结束前10秒钟,绿灯闪烁直至结束。
(3)不必自制电源。
2, 发挥部分
(1)有倒计时时间显示。
(2)若交道口出现紧急情况,交警可将糸统设置成手动:全路口车辆禁行、行人通 行。紧急情况结束后再转成自动状态。
(3)当有119、120等特种车辆通过时,糸统自动转为特种车放行,其它车辆禁止状 态。特种车辆通过15秒钟后,糸统自动恢复,用模型车演示。
作品展示:
原理图:
交通灯 核心板
交通灯 显示板
主要通过I/O口的控制来控制灯的亮灭。用位选段选数码管来显示倒计时。借鉴按键调控时钟时间来调控各方向的灯的亮灭。其次主要是计算电流大小,确保不会烧坏芯片。引脚间主要靠杜邦线连接,然后藏到箱子里。
五丶程序框图
完整代码:
#include
#define uchar unsigned char
#define uint unsigned int
sbit south_left_RED=P0^0;
sbit south_left_GREEN=P0^1;
sbit south_forward_RED=P0^2;
sbit south_forward_GREEN=P0^3;
sbit south_right_RED=P0^4;
sbit south_right_GREEN=P0^5;
sbit south_human_RED=P0^6;
sbit south_human_GREEN=P0^7;
sbit east_left_RED=P1^0;
sbit east_left_GREEN=P1^1;
sbit east_forward_RED=P1^2;
sbit east_forward_GREEN=P1^3;
sbit east_right_RED=P1^4;
sbit east_right_GREEN=P1^5;
sbit east_human_RED=P1^6;
sbit east_human_GREEN=P1^7;
sbit s1=P2^3;
sbit s2=P2^2;
sbit s3=P2^1;
sbit wei_1=P2^6;
sbit wei_2=P2^5;
uchar Time, Second,num,s1num,count,flag,m,n,q;
uchar sum;
unsigned int code DIG_CODE = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//0、1、2、3、4、5、6.7.8.9的显示码
void Timer0Cofig_init()
{
Time=0;Second=0;num=0;s1num=0;count=0;flag=0;sum=0;m=1;n=1;q=1;
TMOD = 0x01; //定时器0选择工作方式1
TH0 = 0x3C; //设置初始值,定时50MS
TL0 = 0xB0;
EA = 1; //打开总中断
ET0 = 1; //打开定时器0中断
TR0 = 1; //启动定时器0
}
void Delay1ms(uint y)
{
uint x;
for( ; y>0; y--)
{
for(x=110; x>0; x--);
}
}
void delay(unsigned int c)
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void Light_Change()
{
if(Second<60)
{
if(Second<10)
{
if(m==1)
{
sum=10;
m=0;
n=1;
}
P0=0x99;
P1=0xAA;
Delay1ms(100);
P0=0x91;
P1=0xA2;
Delay1ms(100);
}
if(Second>9&&Second<50)
{
if(n==1)
{
sum=50;
m=1;
n=0;
}
P0=0x95;
P1=0xA6;
}
if(Second>49)
{
P0=0x95;
P1=0xA6;
Delay1ms(100);
P0=0x80;
P1=0xA2;
Delay1ms(100);
}
}
if(Second>59&&Second<120)
{
if(Second<110)
{
if(m==1)
{
sum=60;
m=0;
n=1;
}
P0=0x66;
P1=0xA6;
}
if(Second>109)
{
P0=0x66;
P1=0xA6;
Delay1ms(100);
P0=0x22;
P1=0xA2;
Delay1ms(100);
}
}
if(Second>119&&Second<180)
{
if(Second<130)
{
if(n==1)
{
sum=10;
m=1;
n=0;
}
P0=0xAA;
P1=0x99;
Delay1ms(100);
P0=0xA2;
P1=0x91;
Delay1ms(100);
}
if(Second>129&&Second<170)
{
if(m==1)
{
sum=50;
m=0;
n=1;
这是某年这浙江省电子设计竞赛一道题目,具体要求如下:
一、任务
设计并制作一个城市交道口交通灯控制系统
二、要求
三、1, 基本要求
四、(1)在1平方米左右木板上制作交道口模型,装上交通灯。交道口模型如图所示。
(2)交通灯控制规则如下:
1)每个街口有左拐、右拐、直行及行人四种指示灯。每个灯有红、绿两种颜色。 自行车与汽车共用左拐、右拐和直行灯。
2)共有四种通行方式:
① 车辆南北直行、各路右拐,南北向行人通行。南北向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。
② 南北向左拐、各路右拐,行人禁行。通行时间为1分钟。
③ 东西向直行、各路右拐,东西向行人通行。东西向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。
④ 东西向左拐、各路右拐。行人禁行。通行时间为1分钟。 3)在通行结束前10秒钟,绿灯闪烁直至结束。
(3)不必自制电源。
2, 发挥部分
(1)有倒计时时间显示。
(2)若交道口出现紧急情况,交警可将糸统设置成手动:全路口车辆禁行、行人通 行。紧急情况结束后再转成自动状态。
(3)当有119、120等特种车辆通过时,糸统自动转为特种车放行,其它车辆禁止状 态。特种车辆通过15秒钟后,糸统自动恢复,用模型车演示。
作品展示:
原理图:
交通灯 核心板
交通灯 显示板
主要通过I/O口的控制来控制灯的亮灭。用位选段选数码管来显示倒计时。借鉴按键调控时钟时间来调控各方向的灯的亮灭。其次主要是计算电流大小,确保不会烧坏芯片。引脚间主要靠杜邦线连接,然后藏到箱子里。
五丶程序框图
完整代码:
#include
#define uchar unsigned char
#define uint unsigned int
sbit south_left_RED=P0^0;
sbit south_left_GREEN=P0^1;
sbit south_forward_RED=P0^2;
sbit south_forward_GREEN=P0^3;
sbit south_right_RED=P0^4;
sbit south_right_GREEN=P0^5;
sbit south_human_RED=P0^6;
sbit south_human_GREEN=P0^7;
sbit east_left_RED=P1^0;
sbit east_left_GREEN=P1^1;
sbit east_forward_RED=P1^2;
sbit east_forward_GREEN=P1^3;
sbit east_right_RED=P1^4;
sbit east_right_GREEN=P1^5;
sbit east_human_RED=P1^6;
sbit east_human_GREEN=P1^7;
sbit s1=P2^3;
sbit s2=P2^2;
sbit s3=P2^1;
sbit wei_1=P2^6;
sbit wei_2=P2^5;
uchar Time, Second,num,s1num,count,flag,m,n,q;
uchar sum;
unsigned int code DIG_CODE = {
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//0、1、2、3、4、5、6.7.8.9的显示码
void Timer0Cofig_init()
{
Time=0;Second=0;num=0;s1num=0;count=0;flag=0;sum=0;m=1;n=1;q=1;
TMOD = 0x01; //定时器0选择工作方式1
TH0 = 0x3C; //设置初始值,定时50MS
TL0 = 0xB0;
EA = 1; //打开总中断
ET0 = 1; //打开定时器0中断
TR0 = 1; //启动定时器0
}
void Delay1ms(uint y)
{
uint x;
for( ; y>0; y--)
{
for(x=110; x>0; x--);
}
}
void delay(unsigned int c)
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
void Light_Change()
{
if(Second<60)
{
if(Second<10)
{
if(m==1)
{
sum=10;
m=0;
n=1;
}
P0=0x99;
P1=0xAA;
Delay1ms(100);
P0=0x91;
P1=0xA2;
Delay1ms(100);
}
if(Second>9&&Second<50)
{
if(n==1)
{
sum=50;
m=1;
n=0;
}
P0=0x95;
P1=0xA6;
}
if(Second>49)
{
P0=0x95;
P1=0xA6;
Delay1ms(100);
P0=0x80;
P1=0xA2;
Delay1ms(100);
}
}
if(Second>59&&Second<120)
{
if(Second<110)
{
if(m==1)
{
sum=60;
m=0;
n=1;
}
P0=0x66;
P1=0xA6;
}
if(Second>109)
{
P0=0x66;
P1=0xA6;
Delay1ms(100);
P0=0x22;
P1=0xA2;
Delay1ms(100);
}
}
if(Second>119&&Second<180)
{
if(Second<130)
{
if(n==1)
{
sum=10;
m=1;
n=0;
}
P0=0xAA;
P1=0x99;
Delay1ms(100);
P0=0xA2;
P1=0x91;
Delay1ms(100);
}
if(Second>129&&Second<170)
{
if(m==1)
{
sum=50;
m=0;
n=1;
交通灯