51微控制器交通燈(十字路口演示)

2021-10-07 14:08:09 字數 3787 閱讀 5613

系統**圖:

本專案中採用微控制器 at89c52為中心器件來設計交通訊號燈控制器, 系統實用性強、操作簡單、擴充套件性強。本設計系統就是由微控制器最小系統、交通燈狀態顯示系統、 led數碼顯示系統、復位電路和按鍵操作電路等幾大部分組成。系統除具有基本的交通訊號燈功能外,還具有倒計時和緊急情況處理功能,較好的模擬實現了十字路口可能出現的狀況。軟體上採用 keil c 程式設計,主要編寫了主程式, led數碼管顯示程式,中斷程式,延時程式等。經過整機除錯,實現了對十字路**通燈的模擬。

組合完成效果圖:

系統硬體框圖:

主程式框圖:

程式**:

#include

#define uchar unsigned char

#define uint unsigned int

#define on 0

#define off 1

sbit ns_g=p2^5;

// 南北綠燈

sbit ns_y=p2^4;

// 南北黃燈

sbit ns_r=p2^3;

// 南北紅燈

sbit ew_g=p2^2;

// 東西綠燈

sbit ew_y=p2^1;

// 東西黃燈

sbit ew_r=p2^0;

// 東西紅燈

sbit led_d1=p3^7;

// 南北方向數碼管位控制

sbit led_c1=p3^6;

// 南北方向數碼管位控制

sbit led_b1=p3^1;

// 東西方向數碼管為控制

sbit led_a1=p3^0;

// 東西方向數碼管位控制

sbit key1=p3^2;

//開關位定義

sbit key2=p3^3;

/********* 倒計時賦初值 *************/

uchar ewf=

30,nsf=

25,x=

30,y=

25,z=

30,shu=30;

uchar count;

void

keyscan1()

//南北緊急制動按鍵函式

}void

keyscan2()

//東西緊急制動按鍵函式

}void

init

(void

)void

timer1

(void

) interrupt 1

}/****************** 延時 **********************/

void

delay

(uchar z)

/******************led 控制 *******************/

unsigned

char table=

;// 共陰極數碼管賦值

void

display1

(uchar num1,uchar num2)

//控制東西方向 led 顯示 }}

void

display2

(uchar num3,uchar num4)

// 控制南北方向 led 顯示}}

void

main()

ns_r=off;

// 南北方向紅燈關閉

ew_r=off;

// 東西方向紅燈關閉

while(1

)}} ew_r=off;

// 東西方向的紅燈關閉

ns_g=off;

// 南北方向的綠燈關閉

ns_y=off;

// 南北方向的黃燈開啟

ewf=

30,nsf=

25,x=

30,y=

25,z=

30,shu=30;

// 重新賦值

/**************** 狀態 3:東西綠燈 (25s), 南北紅燈 (30s)**************/

/*************** 狀態 4:東西黃燈 (5s) , 南北紅燈 (30s)****************/

while(1

)}} ns_r=off;

// 南北方向的紅燈關閉

ew_g=off;

// 東西方向的綠燈關閉

ew_y=off;

// 東西方向的黃燈關閉

ewf=

30,nsf=

25,x=

30,y=

25,z=

30,shu=30;

// 重新賦值

break;}}}}

個人小結:這次是我認為最有意義的一次課程設計,從原理圖設計到軟體**,我從中收穫

了許多。剛開始設計時,我就在校門口仔細觀察交通燈的轉換,經過研究思考最終得

到了上述的交通燈狀態轉換表。

對於交通燈這個題目,由於剛學了 plc實現交通訊號燈的控制實驗,所以就想通

過不同的核心器件來實現同樣的功能,來加深自己在這個題目上的深入研究,在確定

題目之後,查閱了大量的資料,初步完成了電路設計方案。

在程式編寫上,我選擇了用 keil c 語言進行程式設計,。在整個程式的編寫過程中,採用模組化,編乙個子程式**乙個, 通過 keil 和 proteus 兩個軟體來實現的。keil幫助檢查程式是否存在語法錯誤之類的問題,同時可以生成 hex 檔案,供 proteus 軟體**使用。通過一周的課程設計,使我更深入的學習了 at89c52微控制器,尤其是在中斷程式的編寫上學到了好多。

參考文獻: [1] 張毅坤 . 單片微型計算機原理及應用,西安電子科技大學出版社 1998 [2] 夏繼強 . 微控制器實驗與實踐教程

. 北京:北京航空航天大學出版社 , 2001 [3] 彭偉. 微控制器 c語言程式設計 100 例. 北京:電子工業出版社 , 2009

[5] 雷麗文 . 微機原理與接**術 . 北京:電子工業出版社 , 2001 [6] 於永. 51微控制器 c語言常用模組與綜合系統設計

. 北京:電子工業出版社 , 2007 14 [7] 譚浩強 . c 語言程式設計 . 北京:清華大學出版社 , 2005 [8]

於永. 51微控制器 c語言常用模組與綜合系統設計 . 北京:電子工業出版社 , 2007

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

系統概要 由於該交通系統設計乙個十字路口,a道為主幹道,b道為支幹道。由於主幹道的交通壓力較大車流量大,所以a道的通行時間 即a道的綠燈與黃燈的時間應該比b道的綠燈與黃燈時間長 只有a道的通行時間比b道的通行時間長才能合理的分配十字交通路口的交通壓力。並且該系統應該有緊急的交通情況,也就是遇到交通的...

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

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

10 3 微控制器交通燈例項

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