<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎么設計一個基于單片機的交通燈控制系統?

冬至子 ? 來源:好吶好吶 ? 作者:七月九 ? 2023-05-02 14:28 ? 次閱讀

1 概述

1.1設計背景

如今隨著人們生活水平的提高,車輛越來越多,交通事故頻繁發生。交通信號燈的出現,使交通得以有效管制,對于疏導交通流量,提高道路通行能力,減少交通事故有明顯效果。交通燈在城市交通中起著重要的作用,它與人們日常生活密切相關,是人們出行的安全保障。因此提供一個可靠、安全、便捷的多功能交通燈控制系統有著現實的必要性。為了解決這些問題,我們更應該提高交通控制和管理水平,合理使用現有交通設施,充分發揮其能力,提高交通效率,促進和諧交通的建立。,

近年來隨著科技的飛速發展,單片機的應用正在不斷地走向深入,同時帶動傳統控制檢測日新月益更新。在實時檢測和自動控制的單片機應用系統中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據具體硬件結構,以及針對具體應用對象特點的軟件結合,加以完善。

而本系統設計一個基于單片機的交通燈控制系統。能方便的對交通燈進行控制,使交通更和諧。

1.2設計目的

通過自主設計和調試交通紅綠燈系統,綜合應用單片機原理、微機原理、微機接口技術等課程方面的知識,熟練掌握單片機仿真系統的使用方法,達到提高綜合應用相關知識的能力,掌握單片機系統設計全部設計過程的目的。

1.3設計思路

此系統核心元件為單片機AT89C51,對其編寫相關程序來控制交通信號燈和數碼管的時間顯示。系統共采用8個發光二極管模擬各路交通信號燈,4個顯示倒計時的顯示器,通過倒計時的顯示這種方式顯示各個方向上允許通行或禁止通行的信號燈剩余的時間。在東西和南北兩個方向上這兩種狀態不斷循環。源程序采用C語言編寫,并通過kei1軟件進行編譯,最后倒入AT89C51單片機中,運行系統。設計好后通過proteus軟件仿真,并調試。

2 軟件設計

2.1keil簡介

Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環境、強大的軟件仿真調試工具也會令你事半功倍。

2.2proteus簡介

Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是比較好的仿真單片機及外圍器件的工具。雖然國內推廣剛起步,但已受到單片機愛好者、從事單片機教學的教師、致力于單片機開發應用的科技工作者的青睞。

Proteus是英國著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,一鍵切換到PCB設計,真正實現了從概念到產品的完整設計。是世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MATLAB等多種編譯器。

3 系統總體方案與硬件設計

3.1硬件電路各元件介紹

3.1.1核心芯片AT89C51單片機的說明

1.主要特性

(1)與MCS-51兼容

(2)4K字節可編程閃爍存儲器

(3)壽命:1000寫/擦循環

(4)數據保留時間:10年

(5)全靜態工作:0Hz-24Hz

(6)三級程序存儲器鎖定

(7)128*8位內部RAM

(8)32可編程I/O線

(9)兩個16位定時器/計數器

(10)5個中斷源

(11)可編程串行通道

(12)低功耗的閑置和掉電模式

(13)片內振蕩器時鐘電路

圖片

圖3-1 AT89C51

2.管腳說明

VCC:供電電壓。

GND:接地。

P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據或地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。

P1口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。

P2口:P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。

P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收,輸出4個

TTL門電流。P3口也可作為AT89C51的一些特殊功能口

RST :復位輸入。當振蕩器復位器件時,要保持RST腳兩個機器周期的高電平時間。

ALE/PR0G:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。

/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數據存儲器時,這兩次有效的/PSEN信號將不出現。

/EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內部程序存儲器。注意加密方式1時,/EA將內部鎖定為RESET;當/EA端保持高電平時,此間內部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。

3.1.2兩位共陰七段數碼

兩位共陰七段式數碼管其實就是將兩個一位八段式數碼接相應的電路組合在一起。并引出兩控制端1和2,同過其電平的高低來控制兩個數碼管的高低位

工作。

圖片

圖3-2 兩段共陰七段數碼管

3.1.3其他元件說明

交通信號燈:采用紅、黃、綠三種顏色的二極管組成三色交通信號。

圖片

圖3-3 三色二極管

3.2總體電路工作原理

十字路口要有數字顯示裝置,作為時間提示,以便人們更直觀地把握時間。具體要求為:當某方向綠燈亮時,置定時器為某一個數值,然后以每秒減1的計數方式工作,直至減到數為0,十字路口紅、綠燈交換,一次工作循環結束,進入另一個方向的工作循環。數碼顯示管就是用來顯示東西和南北兩個道口的紅黃綠三種顏色的燈的倒計時時間。

南北路處于禁止通行的狀態,東西路處于允許通行的狀態。南北路亮紅燈時,東西路亮綠燈;南北路亮綠燈時,東西路亮紅燈。南北路亮紅燈時,東西路亮綠燈;當綠燈時間減完之后,東西路換為黃燈,南北路仍為紅燈.這樣東西路與南北路的時間同時減完。減完之后,東西路換為紅燈,南北路換為綠燈,再經過一個綠燈時間,南北路換為黃燈,東西路仍為紅燈。這時東西路與南北路時間相同,同時減完。減完后,南北路為紅燈,東西路為綠燈。如此隔環下去。

整個設計滿足了任務的要求,即完成了四個狀態的轉換,完成了倒計時數碼管的顯示,所以這個系統的設計足以控制十字路口的交通燈正常變換,保證各道車輛的暢通運行。

4 程序設計

4.1系統流程圖

此系統主要以東西南北紅、綠、黃三種顏色的LED燈來表示交通燈組成交通紅綠燈管理系統,紅燈等待時間為25秒,綠燈通行時間是20秒,相差的5秒時間為黃燈閃爍時間,用來提示行人和車輛,具體流程圖如下:

圖片

圖4-1 系統總流程圖

4.2源程序代碼

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define DIG0 0x01

#define DIG1 0x02

#define DIG2 0x03

#define DIG3 0x04

void delay(uint i);

void T0_init();

void MAX7219(uchar addr,uchar num);

void MAX7219_init();

void display();

sbit DIN=P3^0;

sbit LOAD=P3^1;

sbit CLK=P3^2;

sbit G1=P0^0;

sbit Y1=P0^1;

sbit R1=P0^2;

sbit G2=P1^0;

sbit Y2=P1^1;

sbit R2=P1^2;

uchar NS_S,NS_G,EW_S,EW_G;

uchar NS,EW;

uchar temp=0,i;

uchar code table[10]= {0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b}; //12ò???êy??1üêy×é

void delay(uint i)

{

uint j;

for(j=0;j

}

void T0_init()

{

TMOD=0X01;

TH0=0XD8;

TL0=0XF0;

ET0=1;

TR0=1;

}

void MAX_write(uchar ch)

{

uchar j,ads;

for(j=0;j<8;j++)

{

ads=ch&0x80;

CLK = 0;

if(ads)

DIN = 1;

else

DIN = 0;

ch=ch<<1;

CLK=1; //é?éy??£?DINμ?êy?YD′è?μ?7219

}

}

void MAX7219(uchar addr, uchar num)

{

LOAD = 0;

nop ();

MAX_write(addr);

nop ();

MAX_write(num);

nop ();

LOAD = 1;

}

void MAX7219_init()

{

MAX7219(0x0c,0x01);

MAX7219(0x0b,0x03); //éè??é¨?è·??§DIG0-3

MAX7219(0x0a,0x05);

MAX7219(0x09,0x00); //2éó?ò???·?ê? ,2?ò???

}

void display()

{

NS_S=NS/10;

NS_G=NS%10;

EW_S=EW/10;

EW_G=EW%10;

MAX7219(DIG0,table[NS_S]);

MAX7219(DIG1,table[NS_G]);

MAX7219(DIG2,table[EW_S]);

MAX7219(DIG3,table[EW_G]);

}

void T0_(void)interrupt 1

{

temp++;

TH0=0xD8;

TL0=0xF0;

if(temp==100)

{

temp=0;

NS--;

EW--;

if((NS==0)&&(EW==5)&&(i==0))

{

NS=5;

EW=5;

i=1;

}

if((NS==0)&&(EW==0)&&(i==1))

{

NS=25;

EW=20;

i=2;

}

if((NS==5)&&(EW==0)&&(i==2))

{

NS=5;

EW=5;

i=3;

}

if((NS==0)&&(EW==0)&&(i==3))

{

NS=20;

EW=25;

i=4;

}

}

display();

}

void main()

{

T0_init();

MAX7219_init();

EA=1;

NS=20;

EW=25;

while (1)

{

uint k;

display();

switch(i)

{

case 0:

R2=0;

G1=0;

break;

case 1:

G1=1;

Y1=0;

for(k=0;k<3;k++)

{

Y1=~Y1;

delay(10000);

}

break;

case 2:

G2=0;

R2=1;

R1=0;

Y1=1;

break;

case 3:

G2=1;

Y2=0;

for(k=0;k<3;k++)

{

Y2=~Y2;

delay(10000);

}

break;

case 4:

i=0;

R1=1;

break;

}

}

}

5 仿真測試

5.1軟件調試

整個程序是一個主程序調用各個子程序實現功能的過程,要使主程序和整個程序都能平穩運行,各個模塊的子程序的正確與平穩運行必不可少,所以在軟件調試的最初階段就是把各個子程序進行分別調試。

(1)keil軟件中生成hex文件如圖所示::

圖片

圖5-1生成相應程序hex的圖

(2)將keil程序下生成的文件導入AT89C51中,如圖所示:

圖片

圖5-2導入文件圖

5.2仿真調試

在keil中調試完成后,生成文件,再到proteus中進行仿真。首先在proteus中需要的元件依次找出來,根據電路所需要實現的功能畫好電路原理圖,當檢查電路完全沒有錯誤后,雙擊芯片,再將在keil中生成的hex文件導入芯片,接著點擊play鍵開始進行電路仿真。其中,此次的交通燈整個中循環共有四個工作狀態。

5.1.1

5.2.1所需軟件查詢展示

圖片

圖5-3所需元件展示圖

5.2.2四種狀態展示

(1)狀態一:點擊play鍵,電路開始進行仿真,此時紅綠燈顯示的情況為:東西方向為綠燈亮,南北方向為紅燈亮,即東西方向通行,南北方向禁止通行,大東西方向通行時間為20秒,南北禁止通行時間為25秒,交通燈顯示狀態如圖所示。

圖片

圖5-4狀態一

(2)狀態二:在開始仿真經過20秒后,黃燈開始閃爍,閃爍時間為5秒,紅綠燈的狀態將發生變化,即東西方向黃燈閃爍,顯示情況如圖所示。

圖片

圖5-5狀態二

(3)狀態三:此時紅綠燈顯示的情況為:東西方向為紅燈亮,南北方向為綠燈亮,即東西方向禁止通行,南北方向通行,東西方向禁止通行時間為25秒,南北通行時間為20秒,交通燈顯示狀態如圖所示。

圖片

圖5-6狀態三

(4)狀態四:經過20秒后,黃燈開始閃爍,閃爍時間為5秒,紅綠燈的狀態將發生變化,即南北方向黃燈閃爍,顯示情況如圖所示。

圖片

圖5-7狀態四

5.3結果分析

本次交通信號燈設計基本滿足了所需要的要求,保證了行人和車輛可以順利通過,避免出現擁擠、堵車等現象,但設計也有不足,由于程序設計較為簡便,無法對具體的的路況進行適時地調整,無法通過對當前道路的狀況進行智能化調節,比如;早高峰和晚高峰期間的人流和車輛較多,可以適當增加綠燈時間,減少紅燈時間,以此來減少道路擁擠。而中午和夜間人流量相對較少,可以僅閃爍黃燈來進行提示。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6002

    文章

    43995

    瀏覽量

    621393
  • 數碼管
    +關注

    關注

    31

    文章

    1827

    瀏覽量

    89976
  • LED顯示
    +關注

    關注

    0

    文章

    339

    瀏覽量

    37592
  • AT89C51
    +關注

    關注

    27

    文章

    543

    瀏覽量

    80383
收藏 人收藏

    評論

    相關推薦

    基于MSC-51單片機交通燈控制系統的研究

    系統采用MSC一51系列單片機ATSC51和可鳊程并行I/O接口芯片8255A為中心器件來設計交通燈控制器,實現了能根據實際車流量通過8051芯片的P1口設置紅、綠燈燃亮時間的功能;
    發表于 04-17 14:51 ?572次下載
    基于MSC-51<b class='flag-5'>單片機</b><b class='flag-5'>交通燈</b><b class='flag-5'>控制系統</b>的研究

    基于C51系列單片機交通控制系統設計

    AT89C51單片機交通燈控制系統是由AT89C51單片機、鍵盤電路、LED倒計時、交通燈顯示等模塊組成。
    發表于 06-29 11:35 ?6847次閱讀
    基于C51系列<b class='flag-5'>單片機</b>的<b class='flag-5'>交通</b><b class='flag-5'>控制系統</b>設計

    單片機課程設計(基于單片機交通燈控制系統設計)

    發表于 11-30 12:44 ?112次下載

    基于MSC51單片機交通燈控制系統的研究

    發表于 01-04 20:24 ?31次下載

    項目1 基于AT89S52單片機交通燈控制系統的設計

    發表于 01-05 10:38 ?67次下載

    基于AT89C51單片機交通燈控制系統設計

    發表于 02-26 09:23 ?176次下載

    基于單片機交通燈控制系統設計

    發表于 03-27 16:24 ?0次下載

    單片機交通燈控制系統畢業設計

    發表于 04-16 14:27 ?39次下載

    基于單片機交通燈控制系統設計及仿真_畢業設計論文

    發表于 08-13 18:27 ?140次下載

    基于STC89C52單片機交通燈控制系統設計

    基于STC89C52單片機交通燈控制系統設計 論文類
    發表于 12-14 15:44 ?167次下載

    基于MSC-51單片機交通燈控制系統的研究

    單片機設計資料電子類資料材料,有興趣的同學可以下載學習
    發表于 05-03 17:55 ?12次下載

    單片機交通燈控制系統設計的詳細資料說明

    系統單片機系統、鍵盤、LED 顯示、交通燈演示系統組成。系統包括人行道、左轉、右轉、以及基本
    發表于 03-08 16:54 ?19次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>交通燈</b><b class='flag-5'>控制系統</b>設計的詳細資料說明

    基于51單片機交通燈控制系統設計

    摘 要交通燈是生活中的重要系統。本設計為基于51單片機交通燈系統的設計,采用模塊化、層次化設計。運用
    發表于 11-04 11:21 ?33次下載
    基于51<b class='flag-5'>單片機</b>的<b class='flag-5'>交通燈</b><b class='flag-5'>控制系統</b>設計

    基于單片機交通燈控制系統設計程序

    ```c#include <reg52.h> #include <intrins.h> typedef unsigned int u16; //對數據類型進行聲明定義typedef unsigned char u8;//--定義使用的IO口--//#define GPIO_DIG P0#define GPIO_TRAFFIC P1sbit LSA=P2^0;sbit LSB=P2^1;sbit LSC=P2^2;sbit DG
    發表于 11-17 17:21 ?46次下載
    基于<b class='flag-5'>單片機</b>的<b class='flag-5'>交通燈</b><b class='flag-5'>控制系統</b>設計程序

    求一種STM32單片機交通燈控制系統設計方案

    本項目使用Proteus8.12仿真STM32單片機控制器,使用數碼管、按鍵、交通信號燈模塊等。
    發表于 07-25 15:08 ?568次閱讀
    求一種STM32<b class='flag-5'>單片機</b><b class='flag-5'>交通燈</b><b class='flag-5'>控制系統</b>設計方案
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>