国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于51單片機(jī)十字路口紅綠燈交通燈+緊急模式

這篇具有很好參考價(jià)值的文章主要介紹了基于51單片機(jī)十字路口紅綠燈交通燈+緊急模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

基于51單片機(jī)十字路口紅綠燈交通燈

+無黃燈+緊急

仿真:proteus 7.8

程序編譯器:keil 4/keil 5

編程語言:C語言

設(shè)計(jì)編號(hào):J010

功能說明

十字路口交通燈由紅、綠兩色LED顯示器組成,LED顯示器顯示切換倒計(jì)時(shí),以秒為單位,每秒更新一次;為確保安全,綠LED計(jì)數(shù)到0轉(zhuǎn)紅,經(jīng)5秒延時(shí)(顯示紅色0)后,另一道開始綠色倒計(jì)時(shí)。

(1) 主千道(A道)先通行且通行時(shí)間為10s(加5秒紅燈延時(shí),共20秒);

(2) 支道(B道)通行時(shí)間為7s(加5秒紅燈延時(shí),共12秒);

(3) 主道與支道的車輛交錯(cuò)通;

(4) 若遇緊急情況,按開關(guān)K1時(shí),主道與支道都為紅燈20s;

(5) 根據(jù)實(shí)時(shí)交通堵塞情況人為控制時(shí),按K2時(shí),主道延時(shí)30s通行,按K3時(shí),支道延時(shí)30s通行;

(6) 具體秒數(shù)可在程序改數(shù)字實(shí)現(xiàn)。

仿真圖

正常交通燈運(yùn)行模式

1.A方向綠燈通行,B方向紅燈

2.A方向黃燈通行,B方向紅燈

3.B方向綠燈通行,A方向紅燈

4.B方向黃燈通行,A方向紅燈

實(shí)時(shí)交通堵塞情況人為控制時(shí),按K2時(shí),主道延時(shí)30s通行,按K3時(shí),支道延時(shí)30s通行;

基于51單片機(jī)十字路口紅綠燈交通燈+緊急模式

緊急運(yùn)行模式

遇緊急情況,按開關(guān)K1時(shí),主道與支道都為紅燈20s;

基于51單片機(jī)十字路口紅綠燈交通燈+緊急模式

程序設(shè)計(jì)

基于51單片機(jī)十字路口紅綠燈交通燈+緊急模式

主函數(shù)


void main()
{
	EA=1;	//開總中斷
	TMOD|= 0X01;
	TH0=0X4C;
	TL0=0X00;//11.0592M晶振 50ms定時(shí)初值
	ET0=1; //允許定時(shí)器1中斷
	TR0=1;//啟動(dòng)定時(shí)器0  
	
	while(1)
	{	
		led_sacn();				  		//LED和數(shù)碼管顯示,時(shí)刻刷新
		KeyDriver();

		if(flag1s)//正常倒計(jì)時(shí)模式一秒執(zhí)行一次
		{
			flag1s=0;
			main_road_time--;			//紅綠燈倒計(jì)時(shí)時(shí)間減
			secondary_road_time--;
		}

		if(all_one_sec_flag){//緊急模式倒計(jì)時(shí)
		    all_one_sec_flag=0;
			if(run_mode==1){
				sec_20s_cnt--;
				if(sec_20s_cnt<=1){//倒計(jì)時(shí)時(shí)間到
					run_mode=0;
					state=0;
					main_road_time=0;
				}
			}

		}
		
		
	}
}

程序講解

主要的核心點(diǎn)是倒計(jì)時(shí),和LED燈亮滅控制

倒計(jì)時(shí)的產(chǎn)生

記住這個(gè)點(diǎn)就可以設(shè)計(jì)軟件了。首先要有時(shí)間基礎(chǔ),倒計(jì)時(shí)從哪來呢?

一般兩個(gè)來源:

1,延時(shí)

delay(1000ms);

通過死循環(huán)卡主軟件的運(yùn)行來達(dá)到延時(shí)效果,程序執(zhí)行效率極低,不可取。

2,定時(shí)

通過定時(shí)器產(chǎn)生時(shí)基。軟件設(shè)置50ms產(chǎn)生一次定時(shí)中斷,在中斷執(zhí)行函數(shù)中做計(jì)數(shù)。

	EA=1;	//開總中斷
	TMOD|= 0X01;
	TH0=0X4C;
	TL0=0X00;//11.0592M晶振 50ms定時(shí)初值
	ET0=1; //允許定時(shí)器1中斷
	TR0=1;//啟動(dòng)定時(shí)器0  

20ms執(zhí)行一次中斷函數(shù),通過one_sec_flag累加到50判斷時(shí)間過去了一秒。設(shè)置一秒標(biāo)志位flag1s置一。

	TH0=0XBB;
	TL0=0X00;
	KeyScan();
	if(++one_sec_flag<50){
		return;//提前結(jié)束函數(shù)
		}
	
	one_sec_flag=0;
	all_one_sec_flag=1;
	if(run_mode==0){//不是正常運(yùn)行時(shí),不紅綠燈數(shù)值不減一 
		flag1s=1;	
	}

在主函數(shù)while循環(huán)里判斷標(biāo)志位,如果是1,則倒計(jì)時(shí)計(jì)數(shù)值減一,即完成了倒計(jì)時(shí)的軟件設(shè)計(jì)思路

if(flag1s)//正常倒計(jì)時(shí)模式一秒執(zhí)行一次
{
    flag1s=0;
    main_road_time--;	
    //紅綠燈倒計(jì)時(shí)時(shí)間減
    secondary_road_time--;
}
紅黃綠燈狀態(tài)處理

正常紅綠燈運(yùn)行分有四個(gè)模式

1.A方向綠燈通行,B方向紅燈

2.A方向黃燈通行,B方向紅燈

3.B方向綠燈通行,A方向紅燈

4.B方向黃燈通行,A方向紅燈

5.執(zhí)行第一步

基于51單片機(jī)十字路口紅綠燈交通燈+緊急模式

     if(run_mode==0)			 //0 正常運(yùn)行
    {
   	if(main_road_time==0 || secondary_road_time==0)//當(dāng)A車道或者B車道倒數(shù)到0,切換狀態(tài)。
   	//這一段程序只有倒計(jì)時(shí)為0才執(zhí)行一次,執(zhí)行完一次等下一次倒計(jì)時(shí)為0才再執(zhí)行一次
   	{
   		switch(state)//改變紅綠燈的狀態(tài)
   		{
   			case 0:
   			{
   				state=1;//下次切換到下一個(gè)模式
   				main_road_time=ns_green_cnt;//A車道綠燈通行時(shí)間
   				secondary_road_time=ns_green_cnt+yellow_cnt; 
   				 we_red    = ON;
   				 we_green  = OFF;
   				 ns_red    = OFF;
   				 ns_green  = ON;
   			}break;
   			case 1:
   			{
   				state=2;
   				main_road_time = yellow_cnt;
                   //A車道紅燈延遲時(shí)間時(shí)間
   				we_red	  = ON;
   				we_green  = OFF;
   				ns_red	  = ON;
   				ns_green  = OFF;	
   			}break;
   			case 2:
   			{
   				state=3;
   				main_road_time=we_green_cnt+yellow_cnt;
                   //B車道綠燈通行時(shí)間
   				secondary_road_time =we_green_cnt;
   				we_red	  = OFF;
   				we_green  = ON;
   				ns_red	  = ON;
   				ns_green  = OFF;	
   			}break;
   			case 3:
   			{
   				state=0;
   				secondary_road_time=yellow_cnt;
                   //B車道紅燈延遲時(shí)間時(shí)間
   				we_red	  = ON;
   				we_green  = OFF;
   				ns_red	  = ON;
   				ns_green  = OFF;	
   			}break;
   			
   			default:break;
   		}
   	}
   	
   	seg_disp(main_road_time/10,0);
         //顯示W(wǎng)0控制的數(shù)碼管 時(shí)刻刷新
   	seg_disp(main_road_time%10,1);
         //顯示W(wǎng)1控制的數(shù)碼管
   	seg_disp(secondary_road_time/10,2);
         //顯示W(wǎng)2控制的數(shù)碼管
   	seg_disp(secondary_road_time%10,3);
         //顯示W(wǎng)3控制的數(shù)碼管
   	
   }
倒計(jì)時(shí)顯示處理

實(shí)際上倒計(jì)時(shí)顯示就是顯示main_road_time–; secondary_road_time–;設(shè)計(jì)函數(shù)通過數(shù)碼管分別顯示A方向的main_road_time和B方向的secondary_road_time即可

		seg_disp(main_road_time/10,0);//顯示W(wǎng)0控制的數(shù)碼管 時(shí)刻刷新
		seg_disp(main_road_time%10,1);//顯示W(wǎng)1控制的數(shù)碼管
		seg_disp(secondary_road_time/10,2);//顯示W(wǎng)2控制的數(shù)碼管
		seg_disp(secondary_road_time%10,3);//顯示W(wǎng)3控制的數(shù)碼管
按鍵處理
uchar keystr[]={1,1,1,1},backup[]={1,1,1,1};
void KeyScan()						        	//鍵盤掃描
{
	static uchar keybuf[4]={0XFF,0XFF,0XFF,0XFF};
	uchar i;
	keybuf[0]=(keybuf[0]<<1)|KEY1;
	keybuf[1]=(keybuf[1]<<1)|KEY2;
	keybuf[2]=(keybuf[2]<<1)|KEY3;

	for(i=0;i<3;i++)
	{
		if(keybuf[i]==0X00)			keystr[i]=0;
		else if(keybuf[i]==0XFF) 	keystr[i]=1;
	}
}
void KeyAction(uchar key)	//鍵盤執(zhí)行
{
	switch(key)
	{

		case 0:	//KEY3按下
			if(run_mode==0&&state==3){
				if (secondary_road_time<70&&main_road_time<70)//小于70才能+時(shí)間,否則超過100,顯示錯(cuò)誤
					{
					  secondary_road_time=secondary_road_time+30;
					  main_road_time=main_road_time+30;
					}
			}
			break;
		case 1:	//KEY2按下
			if(run_mode==0&&state==1){
				if (secondary_road_time<70&&main_road_time<70)//小于70才能+時(shí)間,否則超過100,顯示錯(cuò)誤
					{
					  secondary_road_time=secondary_road_time+30;
					  main_road_time=main_road_time+30;
				}
			}
			break;
		case 2: KEY1按下
			if(run_mode!=1){
			  run_mode=1; 
			  sec_20s_cnt=20;
			}
			break;
			  default:break;
	}
}
void KeyDriver()								 //鍵盤驅(qū)動(dòng)
{
	uchar i;
	for(i=0;i<3;i++)
	{
		if(keystr[i]!=backup[i])
		{
			if(keystr[i]==0)
				KeyAction(i);//這里適當(dāng)修改程序可以實(shí)現(xiàn)組合按鍵的效果
		}
		backup[i]=keystr[i];
	}
}

資料清單

–下載–

基于51單片機(jī)十字路口紅綠燈交通燈+緊急模式文章來源地址http://www.zghlxwxcb.cn/news/detail-443833.html

到了這里,關(guān)于基于51單片機(jī)十字路口紅綠燈交通燈+緊急模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 基于Verilog的十字路口交通燈控制電路設(shè)計(jì)

    基于Verilog的十字路口交通燈控制電路設(shè)計(jì)

    設(shè)計(jì)并實(shí)現(xiàn)一個(gè)簡(jiǎn)單的十字路口交通燈控制電路。以4個(gè)紅色指示燈、4個(gè)綠色指示燈和4個(gè)黃色指示燈模擬路口東西南北4個(gè)方向的紅綠黃交通燈??刂七@些燈,使它們安下列規(guī)律亮滅。 1、東西方向綠燈亮,南北方向紅燈亮。東西方向通車,時(shí)間30秒; 2、東西方向黃燈閃爍,南

    2024年02月03日
    瀏覽(99)
  • 基于高云FPGA開發(fā)板的十字路口交通燈

    基于高云FPGA開發(fā)板的十字路口交通燈

    結(jié)合高云MiniStar_Nano EDA開發(fā)板,完成設(shè)計(jì)十字路口交通信號(hào)燈控制系統(tǒng)。 1.要求該交通燈為三色燈控制器,紅燈亮表示禁止通行,綠燈亮表示允許通行,黃燈亮表示要求壓線車輛快速穿越。主干道和次干道燈的亮滅時(shí)序按照交通規(guī)則設(shè)置。 2.可以調(diào)整主干道和次干道綠燈和紅

    2024年01月19日
    瀏覽(118)
  • 基于Openmv H7 Plus 的紅色巡線+十字路口+多數(shù)字識(shí)別算法

    基于Openmv H7 Plus 的紅色巡線+十字路口+多數(shù)字識(shí)別算法

    由于是采用命令集的方式控制openmv,攝像頭不需要接收太多的數(shù)據(jù),我采用的是判斷串口接收的長(zhǎng)度來區(qū)分命令集。flag為接收數(shù)據(jù)的長(zhǎng)度,通過發(fā)送不同長(zhǎng)度數(shù)據(jù)來改變openmv的工作模式 1.巡線 在openmv的開源庫(kù)中有色塊識(shí)別的關(guān)鍵函數(shù)blob(),可以傳回識(shí)別出的矩形色塊的中心

    2024年02月16日
    瀏覽(232)
  • 基于51單片機(jī)十字路交通燈仿真_黃燈閃爍_正常模式+夜間模式+緊急模式

    基于51單片機(jī)十字路交通燈仿真_黃燈閃爍_正常模式+夜間模式+緊急模式

    (程序+仿真+仿真視頻) 仿真:proteus 7.8 程序編譯器:keil 4/keil 5 編程語言:C語言 設(shè)計(jì)編號(hào):J002 51單片機(jī)十字路交通燈仿真_黃燈閃爍+夜間+緊急 通過單片機(jī)模擬交通燈,東西方向黃綠紅,南北方向黃綠紅的工作方式。 1、顯示時(shí)間倒計(jì)時(shí); 2、夜晚能夠進(jìn)行所有黃燈閃爍;

    2024年02月10日
    瀏覽(14)
  • 【畢業(yè)設(shè)計(jì)】基于PLC的十字路口交通燈控制系統(tǒng)設(shè)計(jì)【仿真+源碼+論文】

    【畢業(yè)設(shè)計(jì)】基于PLC的十字路口交通燈控制系統(tǒng)設(shè)計(jì)【仿真+源碼+論文】

    摘 要 本次設(shè)計(jì)的課題是基于PLC的十字路口交通燈控制系統(tǒng)設(shè)計(jì),傳統(tǒng)的十字路口交通燈多采用單片機(jī)集成電路作為控制系統(tǒng),單片機(jī)系統(tǒng)雖然在功能上能夠?qū)崿F(xiàn)十字路口交通燈的各種控制需求,但是單片機(jī)控制系統(tǒng)在設(shè)計(jì)時(shí)需要數(shù)字電路與模擬電路的完美結(jié)合,這樣的控制

    2024年02月08日
    瀏覽(111)
  • FPGA十字路口紅綠燈控制器

    FPGA十字路口紅綠燈控制器

    課程設(shè)計(jì):十字路口紅綠燈控制器 1.要求雙方向8個(gè)燈的時(shí)序控制 2.要求顯示倒計(jì)時(shí) verilog?hdl代碼模塊 測(cè)試程序模塊 注意: 選擇比較好的器件 測(cè)試文件命名為testbench.vt,否則不行。 采用BCD倒計(jì)時(shí),經(jīng)測(cè)試時(shí)序無錯(cuò),代碼結(jié)構(gòu)清晰。 EDA課設(shè),感謝論壇其他大佬的代碼,基于

    2024年02月11日
    瀏覽(95)
  • 電賽智能送藥小車_OpenMV巡線&識(shí)別十字路口完整代碼

    ? 整體思路 :通過劃分ROI區(qū)域分區(qū)進(jìn)行識(shí)別,中央 ROI 區(qū)域?yàn)檠簿€,左右兩側(cè)的 ROI_L 和 ROI_R 為十字路口識(shí)別 . 主程序如下 : # 本文代碼中所導(dǎo)入的pid.py就是OpenMV官網(wǎng)上例程的代碼 需要完整源碼請(qǐng)私信我。

    2024年02月12日
    瀏覽(99)
  • DE0開發(fā)板交通燈十字路口紅綠燈VHDL

    DE0開發(fā)板交通燈十字路口紅綠燈VHDL

    名稱:基于DE0開發(fā)板的交通燈十字路口紅綠燈 軟件:Quartus 語言:VHDL 要求: 設(shè)計(jì)一個(gè)十字路口交通信號(hào)燈的控制電路。分為兩種情況,正常狀態(tài)和報(bào)警狀態(tài)。 1.正常狀態(tài):要求紅、綠燈按一定的規(guī)律亮和滅,并在亮燈期間進(jìn)行倒計(jì)時(shí),且將運(yùn)行時(shí)間用數(shù)碼管顯示出來。 綠燈

    2024年02月07日
    瀏覽(106)
  • Web3游戲的十字路口:沿用傳統(tǒng)IP還是另起爐灶?

    Web3游戲的十字路口:沿用傳統(tǒng)IP還是另起爐灶?

    人們經(jīng)常問我對(duì) Web3 游戲有什么看法。因此,我想以書面形式概述一下我目前的想法。 讓我先澄清一下:我不是專家。這不是一篇深入探討游戲世界精細(xì)指標(biāo)如 MAU 或 D14 等的全面分析。請(qǐng)把這看作是我根據(jù)個(gè)人交流和研究,這反映我在游戲領(lǐng)域關(guān)注的焦點(diǎn)。 為什么選擇游戲

    2024年02月04日
    瀏覽(22)
  • apollo自動(dòng)駕駛進(jìn)階學(xué)習(xí)之:如何實(shí)現(xiàn)十字路口左轉(zhuǎn)障礙物繞行

    apollo自動(dòng)駕駛進(jìn)階學(xué)習(xí)之:如何實(shí)現(xiàn)十字路口左轉(zhuǎn)障礙物繞行

    首先需要理解Planning模塊是基于Scenario、Stage、Task這樣的層次來進(jìn)行的,即:場(chǎng)景-步驟-具體的決策方法。Apollo可以應(yīng)對(duì)自動(dòng)駕駛所面臨的不同道路場(chǎng)景,都是通過Scenario統(tǒng)一注冊(cè)與管理。Scenario通過一個(gè)有限狀態(tài)機(jī)來判斷選擇當(dāng)前行車場(chǎng)景,每個(gè)Scenario下又有多個(gè)Stage,指當(dāng)前

    2024年02月12日
    瀏覽(104)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包