单片机C++模拟十字路口的红绿灯变化。

作者&投稿:钟离卞 (若有异议请与网页底部的电邮联系)
十字路口的红绿灯变换规则!~

并不是你想的那样,不过,利用红灯的时间休息是个很好的选择。不管你在哪个方向,%80的红绿灯时这么设计的(仅供参考):左转向和直行红灯,右转向绿灯,那么,如果左转和直行那么红灯时间会很长,如果全部绿灯,那么在二十秒——十秒之内甚至更短的时间亮绿灯。红绿灯总介绍:先全部红灯,因为人行道时绿灯,很短时间内全部绿灯,左转和直行绿灯时间很短(至少比右转时间短)左直行红灯后,右行绿灯,因为其他方向要转,不是只有你一个的,其他方向转的时候,红灯时间会很长,右转红灯亮的时候,是因为转完了,人开始走了的时候,亮了红灯

起码你要给出点规则吧。红绿灯亮灭的规则,限制。中间间隔好长时间。

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit RED_A=P3^0; //东西向指示灯
sbit YELLOW_A=P3^1;
sbit GREEN_A=P3^2;
sbit RED_B=P3^3; //南北向指示灯
sbit YELLOW_B=P3^4;
sbit GREEN_B=P3^5;
sbit KEY1=P1^0;
sbit KEY2=P1^1;
sbit KEY3=P1^2;
//延时倍数,闪烁次数,操作类型变量
uchar Flash_Count=0,Operation_Type=1,LEDsng,LEDsns,LEDewg,LEDews,discnt;
uint Time_Count=0,time;
uchar ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
void displaysn()
{
LEDsng=((time-Time_Count)/20)%10;
LEDsns=((time-Time_Count)/20)/10;
LEDewg=0x10;
LEDews=0x10;
}
void displayew()
{
LEDewg=((time-Time_Count)/20)%10;
LEDews=((time-Time_Count)/20)/10;
LEDsng=0x10;
LEDsns=0x10;
}
//定时器0 中断函数
void T0_INT() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
switch(Operation_Type)
{
case 1: //东西向绿灯与南北向红灯亮
if((Time_Count%20)==0)displayew();
RED_A=0;YELLOW_A=0;GREEN_A=1;
RED_B=1;YELLOW_B=0;GREEN_B=0;
if(++Time_Count!=time) return;
Time_Count=0;
Operation_Type=2;
break;
case 2: //东西向黄灯开始闪烁,绿灯关闭
LEDewg=0x0;
LEDews=0x0;
if(++Time_Count!=8) return;
Time_Count=0;
YELLOW_A=~YELLOW_A;GREEN_A=0;
if(++Flash_Count!=6) return; //闪烁
Flash_Count=0;
Operation_Type=3;
break;
case 3: //东西向红灯与南北向绿灯亮
if((Time_Count%20)==0)displaysn();
RED_A=1;YELLOW_A=0;GREEN_A=0;
RED_B=0;YELLOW_B=0;GREEN_B=1;
if(++Time_Count!=time) return;
Time_Count=0;
Operation_Type=4;
break;
case 4: //南北向黄灯开始闪烁,绿灯关闭
LEDsng=0x0;
LEDsns=0x0;
if(++Time_Count!=8) return;
Time_Count=0;
YELLOW_B=~YELLOW_B;GREEN_A=0;
if(++Flash_Count!=6) return; //闪烁
Flash_Count=0;
Operation_Type=1;
break;
}
}
void t1_isr() interrupt 3
{
TR1=0;
TH1=(65536-3000)/256;
TL1=(65536-3000)%256;
TR1=1;
switch(discnt)
{
case 0:
P2=0x02;
P0=ledtab[LEDewg];
break;
case 1:
P2=0x01;
P0=ledtab[LEDews];
break;
case 2:
P2=0x08;
P0=ledtab[LEDsng];
break;
case 3:
P2=0x04;
P0=ledtab[LEDsns];
break;
default:discnt=0;break;
}
discnt++;
discnt&=0x03;
}
void delay()
{
uint i;
for(i=0;i<1000;i++);
}
//主程序
void main()
{
TMOD=0x11; //T0 方式1
EA=1;
ET0=1;
TR0=1;
TH1=(65536-3000)/256;
TL1=(65536-3000)%256;
TR1=1;
ET1=1;
time=120;
Time_Count=100;
Time_Count=0;
Operation_Type=1;
while(1)
{
if(KEY1==0) //按一下加1S
{
delay();
if(KEY1==0)
{
while(KEY1==0);
TR0=0;
time+=20;
LEDsng=(time/20)%10;
LEDsns=(time/20)/10;
LEDewg=0x10;
LEDews=0x10;
}
}
if(KEY2==0) //按一下减1S
{
delay();
if(KEY2==0)
{
while(KEY2==0);
TR0=0;
time-=20;
if(time==0)time=20;
LEDewg=(time/20)%10;
LEDews=(time/20)/10;
LEDsng=0x10;
LEDsns=0x10;
}
}
if(KEY3==0) //启动
{
delay();
if(KEY3==0)
{
while(KEY2==0);
TR0=1;
Time_Count=0;
}
}
}
}

你这是要应付考试或者作业吗?


幼儿园安全教案
场地准备:布置好活动场景(模拟十字路口),画好机动车道、非机动车道、人行横道。 活动过程: 一、 幼儿观看课件,教师引导幼儿讨论: 1、幼儿观看课件1――《上学路上》,教师提问: 刚才的动画片告诉我们上学路上应该注意些什么?哪些行为是违反交通规则的?正确的应该怎么做?对回答问题的小朋友进行鼓励,把交通安全小...

大学生个人履历怎么写?
计算机二级C语言操作能力:掌握C语言技能描述:计算机一级操作能力:熟练掌握office操作软体 语言技能 外语...自动控制原理、电机拖动基础、过程控制系统与仪表、单片微型计算机原理及应用、电子技术基础模拟、数字、

交通安全主题教育的活动方案
3、布置好活动场景(模拟十字路口),画好机动车道、非机动车道、人行横道。 活动过程: 一、幼儿观看课件,引导幼儿讨论: 1、幼儿观看课件1——《上学路上》。 教师提问:刚才的动画片告诉我们上学路上应该注意些什么?哪些行为是违反交通规则的?正确的应该怎么做?对回答问题的小朋友进行鼓励,把交通安全小卫士的贴片贴...

求电容串并联的题目与详解
C.电视机工作时,屏表面温度较高而吸附灰尘。D.电视机工作时,屏表面有静电而吸咐灰尘。5.(1994年全国初赛)图4中所示为自动调温电熨斗的电路图。右下方为温控部分。在未通电和低于预定温度时,双金属片A和静片B上的触点接通,指示灯L亮,电热丝R发热、当温度达到预定温度时,双金属片因___向...

初三各类竞赛的卷子
A.化学能转化为电能 B.内能转化为电能 C.光能转化为光能 D.机械能转化为电能 3.用可变焦的光学照相机可以把远处的景物“拉近”进行拍摄,就是说,虽然...4.(4分)按照我旧交通管理的规定“红灯停、绿灯行、黄灯预备”,小刚在科技活动中设计了一个实验电路,用以模拟十字路口的红绿灯,如图5所示。请你分析并回...

商城县15343145391: 单片机编程:设计十字路口交通灯,以最常用的两条线路的交通信号控制为例. -
弓达康妇: ORG 0000H MAIN:MOV DPTR,#0FF20H MOV A,#03H MOVX @DPTR,A MOV 2AH,#1FH MOV P1,#0CH MOV R7,#19H PRG1: LCALL DELAY1 DJNZ R7,PRG1 MOV P1,#0AH MOV R7,#05H PRG2: LCALL DELAY1 DJNZ R7, PRG2 MOV P1,#...

商城县15343145391: 十字路口交通灯的设计方案,是单片机(C语言)的编程!!1 -
弓达康妇: #include<reg51.h> unsigned char t0,t1; void delay0_5s1() { for(t0=0;t0<0x0a;t0++) { TH1=0x3c; TL1=0xb0; TR1=1; while(!TF1); TF1=0; } } void delay_t1(unsigned char t) { for(t1=0;t1<t;t1++) delay0_5s1(); } void int_0() interrupt 0 { unsigned char i,j,k,l,...

商城县15343145391: C语言程序设计编写一个交通红绿灯的控制,各位高手帮帮忙急! -
弓达康妇: unsigned char counter; sbit red_nb=P2^0;......void main() { TMOD= TH0 TL0 ET0 TR0 while(1) //根据楼主所给,有4种状态 { state1; state2; state3; state4; } } void timer0() interrupt 1 //定时器0 { TH0=0x3c; TL0=0xb0; counter++; } void state1() //控...

商城县15343145391: 如何用C语言汇编红绿灯的程序 -
弓达康妇: 用random生成一个随机数,或者是用户自己输入一个数字,用switch语句来响应,当是1时,红灯亮,当是2时,绿灯亮等.

商城县15343145391: 用C语言编写 模拟十字路口交通指挥灯的程序 -
弓达康妇: 你没写具体的方式. 用了最基本的语法,写了一个~#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(void) {int glight = 1;int ylight=0;int rlight=0; while(1){if(glight == 1 && ylight == 0 && rlight == 0){printf("绿灯\n");...

商城县15343145391: c语言单片机模拟红绿灯程序 请各位高手帮忙 -
弓达康妇: uchar i,a,b,c,d,e,f; sbit a=P1^0,b=P1^1,c=P1^2,d=P1^3,e=P1^4,f=P1^5; 你的错误是:a,b,c,d,e,f重复定义;sbit 要单独一行.可以修改如下: sbit aa=P1^0;sbit bb=P1^1;sbit cc=P1^2;sbit dd=P1^3;sbit ee=P1^4;sbit ff=P1^5; 你的延时函数这样取可以,没有问题.

商城县15343145391: 单片机控制交通灯的程序怎么写? -
弓达康妇: 十字路口东西向和南北向都有红、黄、绿三种颜色的灯,东西向绿灯和南北向红灯同时亮50秒(最后的十秒要用LED显示倒计时)后,两个方向的黄灯亮3秒,;然后东西向红灯和南北向绿灯同时亮50秒(最后的十秒要用LED显示倒计时)后,两个方向的黄灯再亮3秒,如此实现循环.(注:我交通灯接的是P1口,LED的a、b、c、d、e、f、g端接的是P0口,接地是P2.6和P2.7)

商城县15343145391: 基于单片机的交通灯模拟控制系统设计 -
弓达康妇: 不知道你远程控制系统是机器自动完成还是人工.如果要自动检测车流量,你需要一个红外线或者超声波传感器,接在中断口上,在路口前方x米的地方计数,然后用有线或者无线的方式传送给主控器,主控器根据两方四个计数器的计数来比较,按百分比分配时间. 然后控制相应的灯亮. 灯用发光二极管做,三色的四组,共阴,io口输出高电平亮. 还是比较简单的,毕业设计自己做吧,原理是这样.如果有人帮你做了,你还是不会.以后出来找工作,靠的还是本事哦.

商城县15343145391: 单片机作业:二、在十字路口东西南北各设置红、黄、绿三种信号灯,东西方向(A线)通车时,东西方向绿灯亮、 -
弓达康妇: 南北红灯维持25s,在南北红灯亮的同时,东西绿灯亮,并维持20s,到20s时,婷婷?? UPC? 你好,这个设计你可以找我做的.

商城县15343145391: 单片机的红绿灯控制程序如何写啊 -
弓达康妇: //-------------------------------------------------- //名称:LED模拟交通灯 //作者:彭伟《单片机C语言程序设计实训100例-基于8051+PROTEUS仿真》 //-------------------------------------------------- //说明:东西向绿灯亮若干秒后,黄灯闪烁,闪烁5次后亮红灯 // 红...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网