基於51微控制器模擬交通燈程式

2021-10-03 02:36:53 字數 1622 閱讀 6883

系統概要:由於該交通系統設計乙個十字路口,a道為主幹道,b道為支幹道。由於主幹道的交通壓力較大車流量大,所以a道的通行時間(即a道的綠燈與黃燈的時間應該比b道的綠燈與黃燈時間長),只有a道的通行時間比b道的通行時間長才能合理的分配十字交通路口的交通壓力。並且該系統應該有緊急的交通情況,也就是遇到交通的緊急情況,a道與b道的交通燈應該為紅色,禁止a道與b道的車輛通過,使緊急車輛通過後。重新恢復到a道與b道紅綠燈狀態。

首先a道方向綠燈亮,b到方向紅燈亮,同時開始計時60s,在段數碼管上顯示時間60秒倒數。當時間少於10s倒計時a道方向切換黃燈,b道依然為紅燈。當60s倒計時結束後,a道方向黃燈開始轉變為紅燈,b道方向紅燈開始轉變為綠燈。並開始倒計時30秒,當時間少於5s時b道方向由綠燈轉變為黃燈,a道方向還是紅燈亮。當5s倒計時結束後b道黃燈轉變為紅燈,a道開始由紅燈轉變為綠燈。接著又開始迴圈以上步驟。應該還包含乙個緊急車輛的情況,當有緊急車輛通過時,ab道都應該為紅燈。(綠燈用亮3個燈,黃燈亮乙個燈,紅燈則不亮,緊急情況用按下按鍵k3)

廢話不多說直接上**:

#include#define uchar unsigned char

#define uint unsigned int

sbit du=p2^0;//段碼鎖存器開關

//sbit du1=p2^0;

//sbit du2=p2^0;

sbit we=p2^1;//位碼鎖存器開關

sbit beep=p2^3;

sbit gd=p2^2;

//sbit b_red=p1^5

sbit anniu=p3^2;

unsigned int pp;

unsigned char code table=;//7到f顯示

uchar j,k,l=255;

uchar a1,a0;

uchar shijian,deng=1;

void delay(unsigned int i) //位碼的轉換 3*5*125=1875ms=1.875s

void display(unsigned char sh_c,unsigned char g_c)

void int0(void) interrupt 0 //interrupt是宣告函式為中斷服務函式,0是編譯器對中斷的編號

void main()

} if(pp==20)

a0=shijian%10; //時間個位

a1=shijian/10; //時間十位

display(a1,a0);

switch(deng)

break;

case 1: /*if(shijian%2==0) //黃燈

p1=0x00;

if(shijian%2==1)

p1=0xff;

break;*/

p1=0xe3;

if(shijian<=5)

break;

} }}void time0() interrupt 1 //定時器t0溢位中斷

基於51微控制器交通燈(組合語言)

設計要求 設計交通燈控制系統。模擬交通訊號燈控制 一般情況下正常顯示,東西 南北交替放行,各方向通行時間為30秒。有救護車或警車到達時,兩個方向交通訊號燈全為紅色,以便讓急救車或警車通過,設通行時間為10秒,之後交通恢復正常。用單次脈衝模擬急救車或警車申請外部中斷。proteus 圖 微控制器晶振為...

51微控制器 交通燈實驗及報告

1.實驗目的 學習模擬交通燈控制的實現方法 掌握proteus硬體 與除錯。2.任務 根據要求編寫程式,並寫出原理性注釋 將檢查程式執行的結果,分析一下是否正確 完成所建工程的 及除錯。3.實驗內容及要求 按照電路要求在protues中設計電路圖。程式設計實現如下功能 用微控制器埠作輸出口,控制四個...

10 3 微控制器交通燈例項

同學們在學習技術的時候,一定要多動腦筋,遇到問題後,三思而後問。有些時候你考慮的和真理就差一點點了,沒有堅持下去,別人告訴你後才恍然大悟。這樣得到的結論,可以讓你學到知識,但是卻培養不了你的邏輯思維能力。不是不能問,而是要在認真思考的基礎上再發問。有同學有疑問,板子上只有 8 個流水燈,那如果我要做...