单片机交通灯程序

时间:2024-10-13 00:57:18编辑:思创君

基于单片机的交通信号灯控制系统_基于单片机的交通信号灯控制系统设计毕业论文

HD2000交通信号集中控制系统是华路德公司开发研制的HD202、HD204、HD207系列交通信号控制器的远程控制软件,利用城域宽带网,远程监视和控制路口信号机的工作状态和运行方式,使用户足不出户即可了解和控制路口交通状况,实现区域内交通信号灯的联动绿波带协调控制,从而提高道路通行能力和管理部门紧急情况处置反应能力,能极大地减轻交通管理部门的维护和调节工作量。性能与特点高级语言编制,界面友好,操作方便。联网方式灵活,可以通过以太网、无线通讯、电话拨号、GPRS等实现中心与路口的通讯联系。覆盖路口控制机类型广泛,可以选择我公司出厂的HD202系列、HD204系列、HD207系列交通信号控制器,给用户最大的选择余地。建设成本低,本系统涵盖了我公司所有档次的信号机,在已经安装了电子警察的道路交叉口,可以借用电子警察网络资源,避免了重复投资。控制路口点数多,可以同时控制多达180个以上路口的交通信号控制机,如果建立分级通讯机制,则控制点数不受限制。系统提供软件接口与其他系统(如GPS卫星定位系统、城市交通诱导系统、公安视频监控系统、电子警察系统等)实现交警数据的共享,为建设和谐交通提供一手交通流量数据。采用服务器/客户端模式,后台系统由服务器和若干工作站组成,监控路口真正做到足不出户,有条件的客户甚至能通过Internet实现对路口信号机的远程监控。功能介绍远程监视功能,通过控制中心能实时监视路口信号机的运行状况,包括当前运行方式、运行总周期、信号灯输出状态等用户首先需要了解的路口信息。用户可以通过两种画面监视运行状态:监视主画面和路口模拟图画面。监视主画面用于全面了解路口信号机的运行状态,而路口模拟图画面能使用户直观了解实际路口信号灯的红绿显示情况。单路口远程控制功能,通过远程监视画面(包括监视主画面和路口示意图画面)用户可以实现对路口信号机的远程手、自动切换和运行方式变换,配合视频监控能有效、及时地疏导交通和临时交通处置。远程设置功能,通过不同类型信号机的设置画面,用户能远程设置和修改路口信号机的运行参数,如相位方案、时段方案、配时方案、运行常量等。远程流量收集,若路口设置有车辆检测器,系统能自动、定时地收集和保存不同时段路口车道流量状态。绿波带控制功能,系统能根据路口之间的距离、车速等信息自动协调关联路口的信号灯输出周期,实现多路口之间的绿波带协调控制功能,并能根据路段的车流状态定时切换协调方向。警卫路线控制功能,系统能根据预先设置的警卫路线,准确命令警卫路线上的信号机在特定时间段开启指定信号灯绿灯,并在持续一段时间后自动后恢复。远程登录与控制功能,系统采用服务器/客户端模式,所有信号机数据和用户需求信息均通过服务器实现转发、存储和提取;用户通过客户端实现对服务器的登录,并通过服务器实现对路口的监视与控制。详细资料你可以看参考!

基于单片机的交通灯显示系统设计

基于单片机的交通灯显示系统设计1,单片机1只,如果单片机要使用外部振荡器,+1个晶体两个电容;2,红色、绿色、黄色LED灯若干个;3,用于对LED限流的电阻若干个;4,5V直流电源1个或干电池3个电池夹1个;5,设计1个电路板或截取8*8CM万能板1块;有这些就可以做成1个模拟板了,接下来就是写程序,然后将程序烧录到单片机里运行。【摘要】
基于单片机的交通灯显示系统设计【提问】
基于单片机的交通灯显示系统设计1,单片机1只,如果单片机要使用外部振荡器,+1个晶体两个电容;2,红色、绿色、黄色LED灯若干个;3,用于对LED限流的电阻若干个;4,5V直流电源1个或干电池3个电池夹1个;5,设计1个电路板或截取8*8CM万能板1块;有这些就可以做成1个模拟板了,接下来就是写程序,然后将程序烧录到单片机里运行。【回答】
以 AT89C51 单片机为控制核心,设计一个交通灯显示系统。要求:1 东西方向、南北方向均有红、黄、绿三种信号灯。2) 灯显示顺序A.东西方向亮绿灯,南北方向亮红灯,时间3秒:B、东西方向绿灯闪烁,南北方向亮红灯,冈烁3次;C.东西方向亮黄灯,南北方向亮红灯,时间2.秒;D、东西方向亮红灯,南北方向亮线灯,时间3秒。E、东西方向亮红灯,南北方向亮绿灯闪烁,闪烁3次;F、东西方向亮红灯,南北方向亮黄灯,时间2秒:【提问】
设计一个十字路口交通信号灯控制器,其中红灯〔凤亮,表示该条路禁止通 行;黄灯〔丫〕 亮表示停车;绿灯〔G〕亮表示允许通行。其要求如下:1. 设南北方向的红、黄、绿灯分别为 NSR NSY NSG东西方向的红、黄绿灯分别为EWR EWY EWG2. 满足两个方向的工作时序:东西方向红灯亮的时间应等于南北方向黄、绿灯亮的时间之和;南北方向红灯亮的时间应等于东西方向黄、绿灯亮的时间之和。一个周期为60秒,其中,绿灯亮25秒,黄灯亮5秒,红灯亮30秒。其中NSG (EWR- NSR( EW)黄灯用于闪烁提示绿灯变为红灯。南北向绿灯亮,东西向红灯亮一一占南北向黄灯亮,东西向红灯亮一一占弘南北向红灯为 东西向绿灯亮一一占 卷南北向红灯亮,东西向黄灯亮一一占乐3. 十字路口要有数字显示装置,作为时间提示,以便人们更直观地把握时间。 具体要求为:当某方向绿灯亮时,置计数器为某一数值,然后以每秒减1的计数 方式工作,直至减到数为“ 0”,十字路口红、绿灯交换,一次工作循环结束,进 入另一个方向的工作循环。例如:当南北方向从红灯转换成绿灯时, 置南北方向 数字显示为29,并使数显计数器开始减“ 1”计数,当减法计数到绿灯灭而黄灯 亮(闪耀)时,数码管显示的数值应为 4,当减法计数到“ 0”时,黄灯灭,而 南北方向的红灯亮;同时,使得东西方向的绿灯亮,并置东西方向的数码管的显 示为29。4. 可以通过开关将交通灯手动调整为夜间状态,夜间状态为只有黄灯闪耀。 黄灯一直闪耀,提醒过往行人注意。根据设计任务和设计要求,我们可以从三个部分考虑。1.交通灯的灯显部分由于交通灯显示的时间分别为绿灯亮 25秒,黄灯亮5秒,红灯亮30 秒, 所以灯显时间周期为60秒【回答】


求单片机80c51交通灯程序

我编写了一个:P1.0—P1.2分别为南北方向的红,黄,绿灯; P1.3——P1.5为东西方向的红,黄,绿灯;共阴极数码管的a,b,c,d,e,f,g,dp分别接P0.0-P0.7;数码管V0-V2分别接P2.0——P2.2(V0为百位,V1为10位,V2为个位);南北为主干道,能行时间180秒,黄灯亮3秒,东西为乡村道,通行时间为60秒,黄灯亮3秒;采用T0为中断源,扫描显示数码管,T1为定时器,每次定时0.5秒,两次计数1秒。
打字难打,我在实验板上试过,但不知是不是你 想要的。
#include
#define uint unsigned int
#define uchar unsigned char
#define led P0 //数码管7段显示由P0控制
uchar count, times
#define sec times%10 //个位
#define tse time/10%10 //十位
#define hse times/100 //百位
bit n_s, w_e; //南北,东西
sbit n_red=P1^0; //南北红灯
sbit n_ylw=P1^1; //南北黄灯
sbit n_grn=P1^2; //南北绿灯
sbit w_red=P1^3; //东西红灯
sbit w_ylw=P1^4; //....
sbit w_grn=P1^5; //....
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管显示码存表

/*中断函数,供数码管显示用*/
T0_srv() interrupt 1 using 1
{
TH0=-(5000/256);
TL0=-(5000%256);
led=0xff;
P2=((0xfe>(8-count)));
count++;
if(count==3) count=0;
if((P2|0xf0)==0xfe)
{
led=table[hse];
}
else
{
if((P2|0xf0)==0xfd
{
led=table[tse];}
else
{
led=table[sec];}
}

/*延时函数(延时i秒)*/
void delay(uint i)
{
uint j,k;
TR1=1;
for(j=i*2;j>0;j--)
{
for(k=10;k>0;k--)
{
TH1=0x3c; //TH与TL写入初值,0.05秒
Tl1=0xb0;
while(TF1==0);
TF1=0;
}
if((j<7)&&(n_s==1)) //n_s为南北通行标致
n_grn=~n_grn; //n_s最后3秒,绿灯闪烁
if((j<7)&&(w_e==1)) //w_e为东西通行标致
w_grn=~w_grn; //w_e最后3秒,绿灯闪烁
if(j%2==0) times--; /*计时2次0.5秒, time减1*/
}
TR1=0; //停止计时
}

void north_south() //南北通行函数
{
n_s=1;
times=180; //通行180秒
P1=0xf3; //南北亮绿灯,东西亮红灯
delay(180);
n_s=0;
}

void nor_yellow() //南北黄灯函数
{
times=3; //黄灯亮3秒
P1=0xf5;
delay(3);
}

void west_east() //东西通行函数
{
w_e=1;
times=60; //通行60秒
P1=0xde; //东西绿灯,南北红红灯
delay(60);
w_e=0;
}

void wst_yellow() //东西黄灯函数
{
times=3;
P1=0xee; //东西黄灯,南北红灯
delay(3);
}

void main(void)
{
TMOD=0x11; //T0与T1工作在方式1
TH0=-(5000/256); //T0装入初值
TL0=-(5000%256);
IE=0x82; //允许T0中断
TR0=1; //开能T0
P2=0xfe; //数码管扫描初值(从百位开始)
count=0; //计数初值为0
while(1) //无限循环
{
north_south(); //调用南北通行函数
nor_yellow(); //调用南北黄灯函数
west_east(); //调用东西通行函数
wst_yellow(); //调用东西黄灯函数
}
}

/*你很有诚意,虽然只是30分悬赏,但已是你所有家当,希望能帮到你*/


c51单片机c语言交通灯的程序

Proteus仿真原理图:程序如下:#include #define uchar unsigned char#define uint unsigned intuchar data buf[4];uchar data sec_dx=20;//东西数默认uchar data sec_nb=30;//南北默认值uchar data set_timedx=20;uchar data set_timenb=30;int n;uchar data b;//定时器中断次数sbit k1=P1^6;//定义5组开关sbit k2=P1^7;sbit k3=P2^7;sbit k4=P3^0;sbit k5=P3^1;sbit Yellow_nb=P2^5; //南北黄灯标志sbit Yellow_dx=P2^2; //东西黄灯标志sbit Green_nb=P2^4;sbit Green_dx=P2^1;sbit Buzz=P3^7;bit Buzzer_Indicate;bit time=0;//灯状态循环标志bit set=1;//调时方向切换键标志uchar code table[11]={ //共阴极字型码0x3f, //--00x06, //--10x5b, //--20x4f, //--30x66, //--40x6d, //--50x7d, //--60x07, //--70x7f, //--80x6f, //--90x00 //--NULL};//函数的声明部分void delay(int ms);//延时子程序void key();//按键扫描子程序void key_to1();//键处理子程序void key_to2();void key_to3();void display();//显示子程序void logo(); //开机LOGOvoid Buzzer();//主程序void main(){TMOD=0X01; TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1;EX0=1;EX1=1;logo();P2=0Xc3;// 开始默认状态,东西绿灯,南北黄灯sec_nb=sec_dx+5;while(1){ key(); //调用按键扫描程序display(); //调用显示程序Buzzer();} }//函数的定义部分void key() //按键扫描子程序{if(k1!=1){delay(10);if(k1!=1){while(k1!=1){key_to1();for(n=0;n<40;n++){ display();}}}}if(k2!=1){delay(10);if(k2!=1){while(k2!=1){key_to2();for(n=0;n<40;n++){ display();}}}}if(k3!=1){ TR0=1; //启动定时器Buzzer_Indicate=0;sec_nb=set_timenb; //从中断回复,仍显示设置过的数值sec_dx=set_timedx;if(time==0){ P2=0X99;sec_nb=sec_dx+5; }else { P2=0xC3;sec_dx=sec_nb+5; }} if(k4!=1){delay(5);if(k4!=1){ while(k4!=1);set=!set;}}if(k5!=1){delay(5);if(k5!=1){while(k5!=1) key_to3();}}}void display() //显示子程序{ buf[1]=sec_dx/10; //第1位 东西秒十位buf[2]=sec_dx%10; //第2位 东西秒个位buf[3]=sec_nb/10; //第3位 南北秒十位buf[0]=sec_nb%10; //第4位 南北秒个位 P1=0xff; // 初始灯为灭的P0=0x00;P1=0xfe; //片选LCD1P0=table[buf[1]];delay(1);P1=0xff;P0=0x00;P1=0xfd; //片选LCD2P0=table[buf[2]];delay(1);P1=0xff;P0=0x00;P1=0Xfb; //片选LCD3P0=table[buf[3]];delay(1);P1=0xff;P0=0x00;P1=0Xf7;P0=table[buf[0]]; //片选LCD4 delay(1);}void time0(void) interrupt 1 using 1 //定时中断子程序{b++;if(b==19) // 定时器中断次数{ b=0;sec_dx--;sec_nb--;if(sec_nb<=5&&time==0) //东西黄灯闪 { Green_dx=0;Yellow_dx=!Yellow_dx;} if(sec_dx<=5&&time==1) //南北黄灯闪 { Green_nb=0;Yellow_nb=!Yellow_nb;} if(sec_dx==0&&sec_nb==5)sec_dx=5;if(sec_nb==0&&sec_dx==5)sec_nb=5;if(time==0&&sec_nb==0){ P2=0x99;time=!time;sec_nb=set_timenb;sec_dx=set_timenb+5;}if(time==1&&sec_dx==0){P2=0Xc3;time=!time;sec_dx=set_timedx;sec_nb=set_timedx+5;}} }void key_to1() //键盘处理子程序之+{TR0=0; //关定时器 if(set==0)set_timenb++; //南北加1Selseset_timedx++; //东西加1Sif(set_timenb==100)set_timenb=1;if( set_timedx==100)set_timedx=1; //加到100置1sec_nb=set_timenb ; //设置的数值赋给东西南北sec_dx=set_timedx; }void key_to2() //键盘处理子程序之-{TR0=0; //关定时器if(set==0)set_timenb--; //南北减1Selseset_timedx--; //东西减1Sif(set_timenb==0)set_timenb=99; if( set_timedx==0 )set_timedx=99; //减到1重置99sec_nb=set_timenb ; //设置的数值赋给东西南北sec_dx=set_timedx; }void key_to3() //键盘处理之紧急车通行{TR0=0;P2=0Xc9;sec_dx=00;sec_nb=00;Buzzer_Indicate=1;}void int0(void) interrupt 0 using 1 //只允许东西通行{TR0=0;P2=0Xc3;Buzzer_Indicate=0;sec_dx=00;sec_nb=00;}void int1(void) interrupt 2 using 1 //只允许南北通行{TR0=0;P2=0X99;Buzzer_Indicate=0;sec_nb=00;sec_dx=00;}void logo()//开机的Logo "- - - -"{ for(n=0;n<50;n++){P0=0x40;P1=0xfe;delay(1);P1=0xfd;delay(1);P1=0Xfb;delay(1);P1=0Xf7;delay(1);P1 = 0xff;}}void Buzzer(){if(Buzzer_Indicate==1)Buzz=!Buzz;else Buzz=0;}void delay(int ms) //延时子程序{uint j,k;for(j=0;j<ms;j++)for(k=0;k<124;k++);}

上一篇:刘美君最后一夜

下一篇:没有了