C语言程序设计编写一个交通红绿灯的控制,各位高手帮帮忙急!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言程序设计编写一个交通红绿灯的控制,各位高手帮帮忙急!相关的知识,希望对你有一定的参考价值。

当我们走在城市的十字路口时,都会遇到红绿灯,按照一定的时间间隔变换着红绿灯,指挥着交通。现在交通红绿灯的控制都是用计算机(单片机)自动控制,今天我们就在实验室模拟“交通红绿灯的控制”,通过学习进一步掌握顺序、循环程序设计。
任务要求
任务完整的工作过程
控制南北红灯亮,东西绿灯亮
等待30秒
控制南北红灯亮,东西黄灯亮
等待2秒
控制南北绿灯亮,东西红灯亮
等待30秒
控制南北黄灯亮,东西红灯亮
等待2秒
以此循环

参考技术A 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() //控制南北红灯亮,东西绿灯亮,30s

unsigned char temp = 30;
red_nb=1;
.....
green_dx=1;

while(1)

if( counter>19)counter=0;temp-- //每次counter=20,即1s,temp自减
if(temp) break; //当temp为0时,即30秒,退出状态1,进入状态2



没经过测试,完全是5分诱惑不大。。本回答被提问者采纳

数据结构:五岔路口交通管理红绿灯设计

技术分享图片
我们可以知道这是一个“图”的着色问题:设置交通灯的问题等价于对图的顶点染色问题,要求对图上的每一个顶点染一种颜色,并且要求有线相连的两个顶点不能用同一种颜色。
首先要考虑,为什么可行路线是13条?当然可以通过穷举得出,如果用公式:则是:
技术分享图片或者技术分享图片
注:一条路线必须包括一出一进两个方向
第一种答案的解法:
一、固定E为入口,则有C_4^1=4的可能;
二、除去E(因为E只有一个入向),剩下ABCD四个路口,然后因为C只有一个出方向,所以从剩下的ABD中选择一个入口,即C_3^1;
三、再从剩下的三个出口任选一个(包括C)组成出入路线:C_3^1?C_3^1 = 9;
        四、4+9=13,这便是最后答案。
 
第二种答案的解法:
一、考虑5个路口组成一出一进的路线,则有A_5^2=20种方案,
二、因为E只有入口,故去除以E为入口,ABD为出口的路线C_3^1=3种;
三、又因为C只有出口,所以除去以C为出口,ABD为入口的路线C_3^1=3种,
四、再去掉一种是C为入口,E为出口的路线,故20-3-3-1=13种。
 
 
接下来我们将得到的13个路线分别用不同的圆圈来表示,而交叉路线(通路之间的矛盾关系)用两个圆圈之间的连线来表示,则有这样的分析图:
技术分享图片
我们以第一个路线AB为例进行分析,当路线AB是通路时,可以发现路线BC、BD、DA、EA均与AB有交叉,因此将AB的圆圈与其他四个圆圈用线连接:
技术分享图片
同理,可以找出所有的连接线:
首先是AB、AC、AD的连接线:
技术分享图片
然后是BA、BC、BD的连接线:
技术分享图片
 
接下来是DA、DB、DC的连接线以及最后计算出每个顶点的度数(有多少条线,则度数即为所求):
技术分享图片
最后我们可以得到关于这个问题的图模型的表示,我们将这个顶点的度数进行排序,依次对度数最大的顶点进行涂色,最后的涂色颜色数目,就是我们需要的设定的交通灯的颜色数目。


1楼 hilljiang2017-07-02 18:18发表 [回复] [引用] [举报]

技术分享图片
请问根据度数涂色,那么如果3度的灯亮了,B→C和D→B和A→D三条路是可通行的,这明显车会相撞的啊
Re: 猫猫被注册了2017-08-28 20:56发表 [回复] [引用] [举报]
技术分享图片
回复hilljiang:我只是标出了度数,然后根据顶点的度数进行排序,依次对度数最大的顶点进行涂色,最后的涂色颜色数目,就是我们需要的设定的交通灯的颜色数目,连线的不能涂同一个颜色,这样来保证不冲突

以上是关于C语言程序设计编写一个交通红绿灯的控制,各位高手帮帮忙急!的主要内容,如果未能解决你的问题,请参考以下文章

交通灯 C语言 单片机。中断函数问题

交通灯的PLC控制设计

基于51单片机交通灯控制系统 汇编语言 汇编交通灯

C语言问题,利用堆栈实现四则运算,谢谢高手帮我编写出来

C语言问题,利用堆栈实现四则运算,谢谢高手帮我编写出来

c语言程序设计 题目:某医药公司售货系统 求C语言高手帮下忙,成功后高分奖励,谢谢