交通信号灯控制系统设计c语言程序

作者&投稿:亓科 (若有异议请与网页底部的电邮联系)
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() //控制南北红灯亮,东西绿灯亮,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分诱惑不大。。

硬件电路设计此电中路设计采用AT89C51单片机,74LS47(数码管驱动)74LS373(数码管驱动输出锁存),8个数码管显示其延时值,四个红、黄、绿指示灯。硬件设计关键在于,延时显示时,要考虑到当个位数字显示时,要确保十位数字显示输出的不变。因此,可加输出锁存器。在延时最后三秒时,要让黄灯进行闪烁,并同时显示数字(这一步在软件设计上很关键)。(1)电路连接图:三、软件程序(C语言) 以下是整个设计的软件程序,直接可以编译成*。Hex代码。通过以上电路,下载到单片机,可直接运行。
//*****************************////程序名:十字路口交通灯控制//编写人:黄庭剑//初写时间:2009年1月2日//程序功能:南北为车行道,延时60秒;东西方向为人行道,延时20秒,且在最后3秒黄灯显示2秒钟再实现切换.//CPU说明:AT89C51型单片机; 24MHZ晶体振荡器//完成时间:2009年1月6日//*****************************//#include#include#includesfr p0 = 0x80;sfr p1 = 0x90;sfr p2 = 0xA0;sfr p3 = 0xb0; //这部分内容其实在“#include”里已经有,但里面定义的必须区分大小写,在这里,因为我程序采用的是小写,reg51.h里对各个端口与寄存器的定义都是大写,所以在编译连接时,会报错,所以,在本设计程序里,我只用到了端口,在这里也就只定义了四个,而没有去改reg51.h里面的内容。其实两者是一样的。sbit sw = p0^0;sbit OE =P0^6;sbit LE =P0^7; //74LS373锁存器控制端定义char display[]={ 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99 }; //p1口的数码管时间显示调用,利用74L74BCD码,8位驱动输出;//函数声明 beginvoid delay1(int count);void delay_long(int number1,int number2);void people_car_drive();//函数声明end//***********************//延时子程序void delay1(int count) { int i; for(i=count;i>0;i--) { ;} }void delay_long(int number1,int number2) { int a,b; for(a=number1;a>0;a--) { for(b=number2;b>0;b--) { _nop_(); } } }//**********************//延时子程序 void people_car_drive() { int p_1=2,i,j=9,p_2=6; //****************//行人通行时,延时20秒 p2=0x09; //南北红灯亮 p3=0x24; //东西绿灯亮 while(p_1-->0) { LE=1; OE=0; if(p_1==0){OE=1;} //当十位数减到0时,只显示个位数 p1=display[p_1]; delay1(1000); LE=0; j=9; for(i=10;i>0;i--) { if(p_1==0&&j==3)break; //减到3时退出循环,让其黄灯闪烁显示 p1=display[j--]; delay_long(16000,2); if(sw==1)return; } } //*******************************************************************************// p2=0x12; //南北黄灯闪烁三秒,以提醒行人注意 p3=0x12; p1=display[3]; delay_long(8000,1); p2=0x00; p3=0x00; delay_long(14000,1); p2=0x12; p3=0x12; p1=display[2]; delay_long(8000,1); p2=0x00; p3=0x00; delay_long(14000,1); p2=0x12; p3=0x12; p1=display[1]; delay_long(8000,1); p2=0x00; p3=0x00; delay_long(14000,1);//*****************以下是车辆通行时延时60秒// p2=0x24; //南北绿灯亮 p3=0x09; //东西红灯亮 while(p_2-->0) { LE=1; OE=0; if(p_2==0){OE=1;} //当十位数减到0时,只显示个位数 p1=display[p_2]; delay1(1000); LE=0; j=9; for(i=10;i>0;i--) { if(p_2==0&&j==3)break; //减到2时退出循环 p1=display[j--]; delay_long(16000,2); if(sw==1)return; } } p2=0x12; //南北黄灯闪烁三秒,以提醒行人注意 p3=0x12; p1=display[3]; delay_long(8000,1); p2=0x00; p3=0x00; delay_long(14000,1); p2=0x12; p3=0x12; p1=display[2]; delay_long(8000,1); p2=0x00; p3=0x00; delay_long(14000,1); p2=0x12; p3=0x12; p1=display[1]; delay_long(8000,1); p2=0x00; p3=0x00; delay_long(14000,1); //南北黄灯闪烁三秒完毕 } void main() //主函数入口处{ p0=0x01; p1=0x00; p2=0x00; p3=0x00; //初始化各端口 { while(1) { if(sw==0) { people_car_drive();}else { p2=0x00; p3=0x00; //关闭所有交通灯 } } }}

//看看用AT89s52行不?
//制作:晓军
#include <reg52.h>

#define ON 1
#define OFF 0

unsigned int t,t_Light;
unsigned char flag;

sbit SN_Green=P1^0;
sbit SN_Yellow=P1^1;
sbit SN_Red=P1^2;
sbit EW_Green=P1^3;
sbit EW_Yellow=P1^4;
sbit EW_Red=P1^5;

void init(void)
{
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}

void main(void)
{
init();
while(1)
{
switch(flag)
{
case 1:
SN_Green=ON;
SN_Yellow=OFF;
SN_Red=OFF;
EW_Green=OFF;
EW_Yellow=OFF;
EW_Red=ON;
break;
case 2:
SN_Green=OFF;
SN_Yellow=ON;
SN_Red=OFF;
EW_Green=OFF;
EW_Yellow=ON;
EW_Red=OFF;
break;
case 3:
SN_Green=OFF;
SN_Yellow=OFF;
SN_Red=ON;
EW_Green=ON;
EW_Yellow=OFF;
EW_Red=OFF;
break;
}
}
}

void timer(void) interrupt 1 using 0
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==18)
{
t=0;
t_Light++;

if(t_Light<=30)
{
flag=1;
}
else if(t_Light<=34)
{
flag=2;
}
else if(t_Light<88)
{
flag=3;
if(t_Light==88) t_Light=0;
}

}
}

很简单。明天给你写。

我不知道怎么控制时间,其他都会,标记一下,明天来看答案。

答案等待中


交通信号灯控制程序设计
使用74LS273作为输出口,控制4个双色LED灯(可发红、绿、黄光),模拟交通灯的管理。二、实验目的 1. 学习在单片机系统中扩展简单I\/O接口的方法。2. 学习数据输出程序的设计方法。3. 学习模拟交通灯控制的方法。4. 学习双色灯的使用。三、实验电路及连线 四、实验说明 1. 由于本实验是交通灯控制...

智能交通信号灯控制系统怎么控制交通信号
智能交通信号灯的控制方式主要有三种:1、定时控制智能交通信号灯的控制系统按事先设定的配时方案运行,可以一天只用一个配时方案,也按不同时段的交通量采用几个配时方案。2、感应控制在交叉口进口道上设置车辆检测器,交通信号灯配时方案由计算机或智能化信号控制机计算,可随检测器检测到的车流信息而...

交通灯控制系统设计的毕业论文
1、通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。2、通过交通信号灯控制系统的设计,掌握定时\/计数器的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。1.2设计的实际意义 随着社会的发展,人们的消费水平不断的提高,私人车辆不断的增加。

交通信号灯的控制方法有哪些
1、定时控制:交叉口交通信号控制机均按事先设定的配时方案运行,也称定周期控制。一天只用一个配时方案的称为单段式定时控制;一天按不同时段的交通量采用几个配时方案的称为多段式定时控制。 最基本的控制方式是单个交叉口的定时控制。线控制、面控制也都可用定时控制的方式,也叫静态线控系统、静态...

交通里灯控是什么意思
交通里的灯控即是指交通信号灯控制器系统。它是专为管理和控制交通信号灯而设计的现代化设备,可以自动调度和控制交通信号灯以提供道路交通的安全性和流畅性。交通信号灯分为红绿灯和黄灯两种,红绿灯是区分车辆通行和停止的信号灯;黄灯则是过渡信号灯,用于提示车辆即将改变方向,让车辆做好准备。交通...

基于单片机的交通信号灯模拟控制系统设计
LJMP INT0P ORG 000BH LJMP T0INT ORG 0013H LJMP INT1P ORG 001BH LJMP CTC1 ORG 0100H MAIN: LCALL CSHIH ;初始化 LOOP: LCALL TONGX ;通行路口 LCALL H_BCD2 ;计算(1位HEX转换为2位BCD码)LCALL YIMA ;译码 LCALL LED4W ;显示 CLR ...

十字路口交通信号灯控制程序设计
通灯显示控制 一、前言 (1)通过8255A实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用.(2)进一步学习微处理器的编程技术.二、8255的工作原理:8255有三种方式可以选择:方式0:基本输入\/输出方式;方式1:带选通的输入\/输出方式 方式2:双向传输方式。8255为总线兼容型,可以与CPU的总线直接接口...

T字形路口交通信号灯PLC(欧姆龙)控制系统设计
1、无论是箭头,还是灯,在PLC中都是对应1个输出点,所以你这个就是9个输出点。2、T字路口,将其看成A、B、C 3条交汇的路。以1min为一个周期,则可以这样设计,0-20秒,A路的车走,B路和C路停,20-40秒,B路车走,A、C路停,40-60秒,则是C路车走,A、B两路停。这样就很简单了...

plc交通灯设计
1) 交通信号灯系统由一启动开关SB1控制,此开关接通时,信号灯系统开始运行;当该开关断开时,所有的信号灯均熄灭;2) 南北方向绿灯与东西方向绿灯不能同时亮,一旦出现此情况应关闭信号灯系统;并发出报警信号;3) 南北红灯亮维持30秒,此时东西方向绿灯也亮并维持25秒,然后进入闪烁3秒,东西方向黄...

红绿灯控制系统的原理是怎样的?
道路交通信号灯控制的原理:1、在每个交叉口设置红绿灯信号控制参数,使其信号控制对本交叉口的所有方向的交通流在交叉口的停顿延误时间为最小。2、在多个交叉口信号联锁绿波控制时,寻求满足以上条件同时还保证双向绿波带的形成,并且绿波带宽达到最宽。3、建立交通流分时模型,如日时段划分,并建立每个日...

卢氏县18350239091: 交通信号灯控制系统设计c语言程序 -
烛支金刚: //看看用AT89s52行不?//制作:晓军#include <reg52.h>#define ON 1#define OFF 0 unsigned int t,t_Light; unsigned char flag; sbit SN_Green=P1^0; sbit SN_Yellow=P1^1; sbit SN_Red=P1^2; sbit EW_Green=P1^3; sbit EW_Yellow=P1^4; sbit EW...

卢氏县18350239091: 用C语言编写的交通灯控制程序 -
烛支金刚: 我用的是ATMEGA16单片机编程的,也是AVR单片机 假设PA0接红灯,PA1接黄灯,PA2接绿灯.高电平亮. 我的延时函数是ms延时,比如delay(1000)表示延时1000毫秒 void main() { DDRA|=BIT(0)|BIT(1)|BIT(2);//设置PA0,PA1,PA2口为输出...

卢氏县18350239091: 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() //控...

卢氏县18350239091: 求用C语言编写的交通灯程序,C51单片机控制,无左转右转 -
烛支金刚: //以下代码经过Keil C51软件调试通过 #include "reg51.h" //头文件包含//宏定义 #define uint unsigned int #define uchar unsigned char#define ON 0 //0的时候灯亮 #define OFF 1 //1的时候灯亮//管脚定义 //南北道 黄灯亮3秒 红灯亮 30秒 黄灯3秒 ...

卢氏县18350239091: c语言编写十字路口交通灯的程序 -
烛支金刚: 这程序是自己写的吗?要是的话也有点太,,,,那啥了吧,就是有点乱,感觉不用sbit那么多.不过自己写的怎么都比抄的好. P0=table【I】 table数组从来没看到.定义的数组是uchar codetable[]和uchar codeS[8,codes数组也没看到.

卢氏县18350239091: c语言怎么写出交通灯的简单程序 -
烛支金刚: 我实训是做了这个项目,发给你看看,功能主要和交通灯的差不多,还可以显示具体的时间,跳转的时候,时间是倒计时的,当到0以后,下面灯转换 #include<reg51.h> unsigned int shi,ge,js; void delay(unsigned char i); sbit P2_0=P2^0; sbit P2_...

卢氏县18350239091: 求一个C语言的红绿灯程序 80C51 -
烛支金刚: #include<reg51.h>/*下面中n代表north. n s w e分别代表四个不同的方向*/ sbit rednts=P1^0; sbit yellownts=P1^1; sbit greennts=P1^2; sbit redwte=P1^3; sbit yellowwte=P1^4; sbit greenwte=P1^5;//由于实验实的板只用了P1口作输入 int tmp1=0; ...

卢氏县18350239091: 如何用C语言汇编红绿灯的程序 -
烛支金刚: 用random生成一个随机数,或者是用户自己输入一个数字,用switch语句来响应,当是1时,红灯亮,当是2时,绿灯亮等.

卢氏县18350239091: 急求!!!单片机交通灯设计与控制,C语言程序和仿真图、、、 -
烛支金刚: 手里面刚好有一个交通灯的,东西、南北方向,可以设置红绿灯时间,检测车流量.没有画仿真图

卢氏县18350239091: 基于单片的交通信号灯的软件程序怎么写(用C语言) -
烛支金刚: 定义一个变量t作为时间基准,在定时器中断里,对t进行加1,单位最好为秒,选定几个时间点进行红绿灯的切换,如t等于40(绿灯时间),45(黄灯时间为5s),75(红灯时间为30s),最后将t清零,完成一次循环

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