欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      單片機(jī):交通燈控制系統(tǒng)設(shè)計(jì)范文大全

      時(shí)間:2019-05-14 03:36:54下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《單片機(jī):交通燈控制系統(tǒng)設(shè)計(jì)》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《單片機(jī):交通燈控制系統(tǒng)設(shè)計(jì)》。

      第一篇:?jiǎn)纹瑱C(jī):交通燈控制系統(tǒng)設(shè)計(jì)

      交通燈控制系統(tǒng)設(shè)計(jì)

      摘要:本系統(tǒng)由單片機(jī)系統(tǒng)、鍵盤、LED 顯示、交通燈演示系統(tǒng)組成。系統(tǒng)包括人行道、左轉(zhuǎn)、右轉(zhuǎn)、以及基本的交通燈的功能。系統(tǒng)除基本交通燈功能外,還具有倒計(jì)時(shí)、時(shí)間設(shè)置、緊急情況處理、分時(shí)段調(diào)整信號(hào)燈的點(diǎn)亮?xí)r間以及根據(jù)具體情況手動(dòng)控制等功能。關(guān)鍵詞:AT89S51,交通規(guī)則

      一、方案比較、設(shè)計(jì)與論證 1 電源提供方案

      為使模塊穩(wěn)定工作,須有可靠電源。我們考慮了兩種電源方案

      方案一:采用獨(dú)立的穩(wěn)壓電源。此方案的優(yōu)點(diǎn)是穩(wěn)定可靠,且有各種成熟電路可供選用;缺點(diǎn)是各模塊都采用獨(dú)立電源,會(huì)使系統(tǒng)復(fù)雜,且可能影響電路電平。方案二:采用單片機(jī)控制模塊提供電源。改方案的優(yōu)點(diǎn)是系統(tǒng)簡(jiǎn)明扼要,節(jié)約成本;缺點(diǎn)是輸出功率不高。綜上所述,我們選擇第二種方案。2 顯示界面方案

      該系統(tǒng)要求完成倒計(jì)時(shí)、狀態(tài)燈等功能?;谏鲜鲈?,我們考慮了三種方案: 方案一:完全采用數(shù)碼管顯示。這種方案只顯示有限的符號(hào)和數(shù)碼字苻,無(wú)法勝任題目要求。

      方案二:完全采用點(diǎn)陣式LED 顯示。這種方案實(shí)現(xiàn)復(fù)雜,且須完成大量的軟件工作;但功能強(qiáng)大,可方便的顯示各種英文字符,漢字,圖形等。

      方案三:采用數(shù)碼管與點(diǎn)陣LED 相結(jié)合的方法因?yàn)樵O(shè)計(jì)既要求倒計(jì)時(shí)數(shù)字輸出,又要求有狀態(tài)燈輸出等,為方便觀看并考慮到現(xiàn)實(shí)情況,用數(shù)碼管與LED燈分別顯示時(shí)間與提示信息。這種方案既滿足系統(tǒng)功能要求,又減少了系統(tǒng)實(shí)現(xiàn)的復(fù)雜度。權(quán)衡利弊,第三種方案可互補(bǔ)一二方案的優(yōu)缺,我們決定采用方案三以實(shí)現(xiàn)系統(tǒng)的顯示功能。3 輸入方案:

      題目要求系統(tǒng)能手動(dòng)設(shè)燈亮?xí)r間、緊急情況處理,我們討論了兩種方案: 方案一:采用8155擴(kuò)展I/O 口及鍵盤,顯示等。該方案的優(yōu)點(diǎn)是:

      使用靈活可編程,并且有RAM,及計(jì)數(shù)器。若用該方案,可提供較多I/O 口,但操作起來(lái)稍顯復(fù)雜。

      方案二: 直接在IO口線上接上按鍵開(kāi)關(guān)。因?yàn)樵O(shè)計(jì)時(shí)精簡(jiǎn)和優(yōu)化了電路,所以剩余的口資源還比較多,我們使用四個(gè)按鍵,分別是K1、K2、K3、K4。由于該系統(tǒng)對(duì)于交通燈及數(shù)碼管的控制,只用單片機(jī)本身的I/O 口就可實(shí)現(xiàn),且本身的計(jì)數(shù)器及RAM已經(jīng)夠用,故選擇方案二。

      二、理論分析與計(jì)算

      1.交通燈顯示時(shí)序的理論分析與計(jì)算

      對(duì)于一個(gè)交通路口來(lái)說(shuō),能在最短的時(shí)間內(nèi)達(dá)到最大的車流量,就算是達(dá)到了最佳的性能,我們稱在單位時(shí)間內(nèi)多能達(dá)到的最大車流為車流量,用公式:車流量= 車流 / 時(shí)間 來(lái)表示。

      先設(shè)定一些標(biāo)號(hào)如圖2-1 所示。

      說(shuō)明:此圖為直方圖,上邊為北路口燈,右邊為東路口燈,下邊為南路口燈,左邊為西 路口燈。

      圖2-2 所示為一種紅綠燈規(guī)則的狀態(tài)圖,分別設(shè)定為S1、S2、S3、S4,交通燈以這四 的狀態(tài)為一個(gè)周期,循環(huán)執(zhí)行(見(jiàn)圖2-3)。

      請(qǐng)注意圖2-1b和圖2-1d,它們?cè)谝粋€(gè)時(shí)間段中四個(gè)方向都可以通車,這種狀態(tài)能在

      一定的時(shí)間內(nèi)達(dá)到較大的車流量,效率特別高。

      依據(jù)上述的車輛行駛的狀態(tài)圖,可以列出各個(gè)路口燈的邏輯表,由于相向的燈的狀態(tài)圖

      是一樣的,所以只需寫出相鄰路口的燈的邏輯表;根據(jù)圖2-3 可以看出,相鄰路口的燈它

      們的狀態(tài)在相位上相差180°。因此最終只需寫出一組S1、S2、S3、S4的邏輯狀態(tài)表。

      如表2-1 所示。

      表中的“×”代表是紅燈亮(也代表邏輯上的0),“√”是代表綠燈亮(也代表邏輯上 的1),依上表,就可以向相應(yīng)的端口送邏輯值。2.交通燈顯示時(shí)間的理論分析與計(jì)算

      東西和南北方向的放行時(shí)間的長(zhǎng)短是依據(jù)路口的各個(gè)方向平時(shí)的車流量來(lái)設(shè)定,并且

      S1、S2、S3、S4各個(gè)狀態(tài)保持的時(shí)間之有嚴(yán)格的對(duì)應(yīng)關(guān)系,其公式如下所示。T-S1+T-S2=T-S3 T-S2=T-S4 T-S1=T-S3 我們可以依據(jù)上述的標(biāo)準(zhǔn)來(lái)改變車輛的放行時(shí)間。按照一般的規(guī)則,一個(gè)十字路口可分

      為主干道和次干道,主干道的放行時(shí)間大于次干道的放行時(shí)間,我們?cè)O(shè)定值時(shí)也應(yīng)以此為參 考。

      三、電路圖及設(shè)計(jì)文件 1.燈控制電路設(shè)計(jì)

      由于32個(gè)LED 來(lái)實(shí)現(xiàn)紅綠燈狀態(tài),若直接接在單片機(jī)的口線,路口倒計(jì)時(shí)的顯示就不

      能實(shí)現(xiàn),所以本次設(shè)計(jì)中采用一種新型的電路如圖3-1 所示。

      圖中74LS04的作用是倒相和驅(qū)動(dòng),它輸出的電流大約48mA,實(shí)際測(cè)試發(fā)現(xiàn)足以滿足要

      求,而且發(fā)光管也能達(dá)到足夠的亮度。

      觀察圖可以看出:兩組發(fā)光管(一組紅、一組綠)由于反相器的作用,其邏輯狀態(tài)恰恰 相反。

      圖中和電阻串聯(lián)的二極管的作用是為了分壓,防止因上下兩組發(fā)光管分壓不同導(dǎo)致邏輯 的錯(cuò)誤。

      共四組和上述相同的電路分別代表東西南北四個(gè)方向的紅綠燈,使用兩片74LS04 作為 驅(qū)動(dòng)。

      2.倒計(jì)時(shí)顯示電路設(shè)計(jì)

      前面已經(jīng)分析過(guò)相向的燈的狀態(tài)和倒計(jì)時(shí)都是相同的,所以為了節(jié)省,采用兩組四個(gè)數(shù)碼管

      作為倒計(jì)時(shí)的顯示;同時(shí)為了節(jié)省口資源,采用串口顯示的方式驅(qū)動(dòng)數(shù)碼管。見(jiàn)圖3-2 所 示。

      四、程序設(shè)計(jì)思路與流程圖 1.主程序流程圖

      主程序中主要是一個(gè)死循環(huán),不停的循環(huán)四個(gè)狀態(tài),如圖4-1 所示。

      2.按鍵子程序流程圖

      它包含倒計(jì)時(shí)調(diào)整和緊急狀態(tài)兩個(gè)狀態(tài)。

      主程序中放了一個(gè)按鍵的判斷指令,當(dāng)有按鍵按下的時(shí)候,程序就自動(dòng)的跳轉(zhuǎn)到按鍵子

      程序處理。當(dāng)檢測(cè)到K2鍵按下的時(shí)候就自動(dòng)返回到主程序。當(dāng)出現(xiàn)緊急的情況的時(shí)候,按下K3或者K4 就切換到緊急狀態(tài),當(dāng)緊急事件處理完畢 的時(shí)候,按下K2,就可以返回正常狀態(tài)。

      五、測(cè)試、數(shù)據(jù)及結(jié)果分析 1.狀態(tài)燈顯示測(cè)試

      當(dāng)電路連接完畢后,將寫好的測(cè)試程序刷寫到芯片內(nèi),K1 和K2分別給端口送高電平和

      低電平,通電即可檢測(cè)。2.?dāng)?shù)碼管的測(cè)試

      將串口的和電路板上的接口連接,將寫好的測(cè)試程序刷寫到芯片內(nèi),開(kāi)電源即可測(cè)試。

      3.整體電路測(cè)試

      系統(tǒng)上電,刷寫好程序即可開(kāi)始測(cè)試,觀測(cè)一個(gè)周期(共計(jì)S1~S4四個(gè)狀態(tài),默認(rèn)140 秒)燈的顯示狀態(tài)是否正常,同時(shí)觀察倒計(jì)的計(jì)數(shù)是否正常。

      六、總結(jié)

      由于使用的是單片機(jī)作為核心的控制元件,使得電路的可靠性比較高,功能也比較強(qiáng)大,而且可以隨時(shí)的更新系統(tǒng),進(jìn)行不同狀態(tài)的組合。

      但是在我們?cè)O(shè)計(jì)和調(diào)試的過(guò)程中,也發(fā)現(xiàn)了一些問(wèn)題,譬如紅燈和綠燈的切換還不夠迅

      速,紅綠燈規(guī)則不效率還不是很高等等,這需要在實(shí)踐中進(jìn)一步完善。附錄 系統(tǒng)總體電路圖

      1.滿足南北向紅綠燈亮,東西向紅燈亮,占25秒——南北向黃燈亮,東西向紅燈亮,占5秒——南北向紅燈亮,東西向綠燈亮,占25秒——南北向紅燈亮,東西向黃燈亮,占5秒。如此循環(huán),周而復(fù)始。2.十字路口要有數(shù)字顯示,提示行人把握時(shí)間:當(dāng)某方向綠燈亮?xí)r,置顯示器為24,然后以每秒減1計(jì)數(shù)方式工作,直到減為0,綠燈滅,黃燈亮。黃燈滅,紅燈亮?xí)r,再次置顯示器為29,并開(kāi)始減計(jì)數(shù),直到為0,十字路口紅綠燈交換,完成一次工作循環(huán)。

      3.可手動(dòng)調(diào)整和自動(dòng)調(diào)整,夜間為黃燈閃耀。下面是一個(gè)單片機(jī)交通燈程序 /*

      ****************************************************************************************** * *

      * Keil C 89S51 交通信號(hào)控制程序 * *(C)版權(quán)所有 Dai_Weis@hotmail.com * * *

      ****************************************************************************************** */

      #include “reg51.h” #define UINT unsigned int #define ULONG unsigned long #define UCHAR unsigned char /*

      信號(hào)燈變量

      南北方向綠燈

      sbit n_bike_g = P1^0;//自行車

      sbit n_right_g = P1^1;//右轉(zhuǎn)

      sbit n_up_g = P1^2;//直行

      sbit n_left_g = P1^3;//左轉(zhuǎn) 調(diào)頭

      南北方向紅燈

      sbit n_bike_r = P1^4;//自行車

      sbit n_right_r = P1^5;//右轉(zhuǎn)

      sbit n_up_r = P1^6;//直行

      sbit n_left_r = P1^7;//左轉(zhuǎn) 調(diào)頭 南北方向黃燈

      sbit n_bike_y = P3^0;//自行車

      sbit n_right_y = P3^1;//右轉(zhuǎn)

      sbit n_up_y = P3^2;//直行

      sbit n_left_y = P3^3;//左轉(zhuǎn) 調(diào)頭

      東西方向綠燈

      sbit e_bike_g = P2^0;//自行車

      sbit e_right_g = P2^1;//右轉(zhuǎn)

      sbit e_up_g = P2^2;//直行

      東西方向紅燈

      sbit e_bike_r = P2^4;//自行車

      sbit e_right_r = P2^5;//右轉(zhuǎn)

      sbit e_up_r = P2^6;//直行

      東西方向黃燈

      sbit e_bike_y = P3^4;//自行車

      sbit e_right_y = P3^5;//右轉(zhuǎn)

      sbit e_up_y = P3^6;//直行

      */ //延時(shí)

      void delay(UINT t, UINT s){ while(t){ UINT i;

      for(i = 0;i < s;i++){ } t--;} }

      //信號(hào)燈狀態(tài)

      void time_x(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3){

      P1 = P_P1;P2 = P_P2;P3 = P_P3;delay(150, 65535);}

      void time_s(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3, UCHAR P_P11, UCHAR P_P22){ UINT i;

      for(i = 0;i < 3;i ++){

      P1 = P_P1;P2 = P_P2;delay(5, 65535);P1 = P_P11;P2 = P_P22;delay(5, 65535);}

      P1 = P_P1;P2 = P_P2;P3 = P_P3;delay(10, 65535);} //主程序

      void main(){

      P1 = P2 = P3 = 0x0;while(1){

      time_x(0xA5, 0x38, 0x0);

      time_s(0xA4, 0x38, 0x1, 0xA5, 0x38);time_x(0x96, 0x52, 0x0);

      time_s(0x92, 0x52, 0x4, 0x96, 0x52);time_x(0x5A, 0x52, 0x0);

      time_s(0x50, 0x50, 0x2A, 0x5A, 0x52);time_x(0xF0, 0x25, 0x0);

      time_s(0xF0, 0x24, 0x20, 0xF0, 0x25);time_x(0xD2, 0x16, 0x0);

      time_s(0xD0, 0x10, 0x62, 0xD2, 0x16);} }

      給你一個(gè)定時(shí)控制的信號(hào)系統(tǒng),我只做的簡(jiǎn)單的測(cè)試,至于延時(shí)我用的軟件,你自己想辦法。^_^

      Dai_Weis 于 2005-5-4 13:43:23 重新給你說(shuō)明

      /*

      *********************************************************************************** * *

      * Keil C AT89S51 交通信號(hào)控制程序 * *(C)版權(quán)所有 Dai_Weis@hotmail.com * * *

      *********************************************************************************** 開(kāi)發(fā)說(shuō)明:

      固定時(shí)間信號(hào)變換,南北設(shè)置調(diào)頭、左傳、直行、右轉(zhuǎn)、自行車。

      東西設(shè)置左傳、直行、右轉(zhuǎn)、自行車。

      時(shí)序狀態(tài):

      紅 綠 紅 綠

      序號(hào) 左 前 右 自 左 前 右 自 前 右 自 前 右 自1 0 1 0 0 1 0 1 1 1 1 0 0 0 2 1 0 0 1 0 1 1 0 1 0 1 0 1 0 3 0 1 0 1 1 0 1 0 1 0 1 0 1 0 4 1 1 1 1 0 0 0 0 0 1 0 1 0 1 5 1 1 0 1 0 0 1 0 0 0 1 1 1 0 */

      另外修正個(gè)錯(cuò)誤

      while(1){

      time_x(0xA5, 0x70, 0x0);time_s(0xA4, 0x70, 0x1, 0xA5, 0x70);

      材料: 1、89S51 11.0592M 晶振

      1K電阻、10UF電容

      12個(gè)燈,紅、黃、綠各四個(gè),12個(gè)1K電阻

      ,十字路口嘛。蜂鳴器一個(gè)。

      按鍵一個(gè),按鍵復(fù)位

      采用AT89s51型號(hào)的單片機(jī),由于交通十字路口的對(duì)稱性,所以一個(gè)引腳可以同時(shí)控制兩個(gè)燈,將發(fā)光二極管分別接到P1各個(gè)引腳,在其中加入一個(gè)時(shí)振蕩當(dāng)電路,來(lái)控制時(shí)間,在P3.0引腳接入蜂鳴器只黃燈亮的時(shí)候發(fā)出聲響,這里我們讓每次黃燈亮的時(shí)候發(fā)出六聲響,通過(guò)C程序的控制就可以實(shí)現(xiàn),每次循環(huán)是10秒。2、9cm*15cm萬(wàn)用板 1片 單片機(jī)及IC座 1套 12M晶振 1只 22P電容 2只 10uF電容 1只 10K電阻 1只 1K排阻 1只 兩位一體數(shù)碼管 2只 DC座 1只 自鎖開(kāi)關(guān) 1只

      發(fā)光二極管紅綠黃

      各4只 按鍵 7只 USB電源線 1條 導(dǎo)線

      若干

      1、基于51系列單片機(jī)(型號(hào):STC89C52、AT89C51/C52、AT89S51/S52,隨機(jī)選擇,如有特

      殊要求請(qǐng)與店主討論)設(shè)計(jì)實(shí)現(xiàn)。(以上幾種單片機(jī)全部為51系列單片機(jī),除了名字不一樣外,功能及應(yīng)用完全一樣,互相

      兼容)

      2、兩個(gè)兩位一體數(shù)碼管顯示東西、南北方向時(shí)間。

      3、四方向各有紅綠黃三顆燈。

      4、七個(gè)按鍵操作,分別是:禁止通行、東西通行、南北通行、時(shí)間加、時(shí)間減、切換方向、確認(rèn)。

      第二篇:基于單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)

      P10P11P12P13設(shè)置鍵加鍵減鍵模式鍵P00P01P02P03P04P05P06U18765P134P123P112P101P1.7P1.6P1.5P1.4P1.3P1.2P1.1/T2EXP1.0/T2P3.7/RDP3.6/WRP3.5/T1P3.4/T0P3.3/INT1P3.2/INT0P3.1/TXDP3.0/RXDP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8P0.7/AD7P0.6/AD6P0.5/AD5P0.4/AD4P0.3/AD3P0.2/AD2P0.1/AD1P0.0/AD0******23222***373839P37P36P35P34P22P23P24D7D4P27P26P25P24P23P22P21P20P07P06P05P04P03P02P01P0098765432110KP27LED-REDD92H1HD1D6P25LED-YELLOWD11P26LED-YELLOWLED-GREENLED-REDC31uF313029EAALEPSEND12P26R0100RP1P25LED-GREENLED-GREENC120PF9RSTD5P00P01P02P03P04P05P06LED-YELLOWD3P27LED-REDX1C220PF12M19LED-REDLED-GREENLED-YELLOWP24P23P22XTAL1AT89C51Q1PNPQ2PNPQ3PNPQ4PNPP34P35657U2SCKSDAWP24C02CA0A1A2123R151R1HR251R2HR351R3HR451R4HP36P37P21P00P01P02P03P04P05P0651R51R51R51R2H1HR19R20R21P20R223H4HXTAL2P00P01P02P03P04P05P0618D2D10D83H4H

      #include

      //調(diào)用單片機(jī)頭文件

      #define uchar unsigned char

      //宏定義“uchar”代替“unsigned char”。#define uint unsigned int

      //宏定義“uint”用來(lái)定義無(wú)符號(hào)整型數(shù)。

      //數(shù)碼管段選定義 0

      7

      uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, //

      A B C

      D

      E

      F 不顯示

      0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};//斷碼

      uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};uchar smg_i = 4;

      //顯示數(shù)碼管的個(gè)位數(shù)

      //數(shù)碼管位選定義

      sbit smg_we1 = P2^0;

      //數(shù)碼管位選定義 sbit smg_we2 = P2^1;sbit smg_we3 = P3^6;sbit smg_we4 = P3^7;

      char dx_s = 0;//東西

      南北 倒計(jì)時(shí)變量 sbit dx_red

      = P2^4;

      //東西紅燈 sbit dx_green = P2^3;//東西綠燈 sbit dx_yellow = P2^2;//東西黃燈

      sbit nb_red

      = P2^7;//南北紅燈 sbit nb_green = P2^6;//南北綠燈 sbit nb_yellow = P2^5;//南北黃燈

      sbit scl=P3^4;//寫24C02時(shí)鐘

      sbit sda=P3^5;//寫24C02數(shù)據(jù)

      uchar flag_jtd_mode;//交通燈的模式 根據(jù)時(shí)間

      bit flag_1s = 0;bit flag_500ms;bit flag_dx_nb;uchar flag_5m_value;uchar i;//東西南北模式

      uchar flag_alarm;//模式

      uchar dx_time = 30,nb_time = 20;

      //東西、南北的時(shí)間 uchar flag_jdgz;

      //交通管制

      //---延時(shí)函數(shù)---// void delay(){;;}

      void start()//起始信號(hào) { sda=1;delay();scl=1;delay();sda=0;delay();}

      void stop()//停止信號(hào) { sda=0;delay();scl=1;delay();sda=1;delay();}

      void respons()//應(yīng)答信號(hào) { uchar i;scl=1;delay();while((sda==1)&&(i<250))i++;scl=0;delay();}

      void init()//初始狀態(tài),24C02的數(shù)據(jù)和時(shí)鐘線都拉高 { sda=1;delay();scl=1;delay();}

      void writebyte(uchar date)//寫24C02 { uchar i,temp;temp=date;for(i=0;i<8;i++){

      temp=temp<<1;

      scl=0;

      delay();

      sda=CY;

      delay();

      scl=1;

      delay();} scl=0;delay();sda=1;delay();} uchar readbyte()//讀24C02 { uchar i,k;scl=0;delay();sda=1;delay();

      for(i=0;i<8;i++){

      scl=1;

      delay();

      k=(k<<1)|sda;

      scl=0;

      delay();} return k;}

      void writeadd(uchar address,uchar date)//寫24C02 {

      start();//起始信號(hào)

      writebyte(0xa0);//寫入器件地址寫 respons();

      writebyte(address);//寫入存儲(chǔ)單元地址 respons();

      writebyte(date);//寫入數(shù)據(jù) respons();

      stop();//停止信號(hào) }

      uchar readadd(uchar address)//讀24C02 { uchar date;

      start();//起始信號(hào)

      writebyte(0xa0);//寫入器件地址寫

      respons();

      writebyte(address);//寫入讀單元地址

      respons();

      }

      start();//起始信號(hào)

      writebyte(0xa1);//讀命令 respons();date=readbyte();//讀數(shù)據(jù) stop();//停止信號(hào) return date;/***********************數(shù)碼位選函數(shù)*****************************/ void smg_we_switch(uchar i){ switch(i){

      case 0: smg_we1 = 0;smg_we2 = 1;smg_we3 = 1;smg_we4 = 1;break;

      case 1: smg_we1 = 1;smg_we2 = 0;smg_we3 = 1;smg_we4 = 1;break;

      case 2: smg_we1 = 1;smg_we2 = 1;smg_we3 = 0;smg_we4 = 1;break;

      case 3: smg_we1 = 1;smg_we2 = 1;smg_we3 = 1;smg_we4 = 0;break;} }

      /******************************************************************** * 名稱 : delay_1ms()* 功能 : 延時(shí)1ms函數(shù) * 輸入 : q * 輸出 : 無(wú)

      ***********************************************************************/ void delay_1ms(uint q){ uint i,j;for(i=0;i

      for(j=0;j<110;j++);}

      /******************************************************************** * 名稱 : display()* 功能 : 數(shù)碼管顯示 * 輸入 : 無(wú) * 輸出 : 無(wú) ***********************************************************************/ void display(){ uchar i;for(i=0;i

      P0 = 0xff;

      //消隱

      smg_we_switch(i);

      //位選

      P0 = dis_smg[i];

      //段選

      delay_1ms(3);} }

      /*********************定時(shí)器0、定時(shí)器1初始化******************/ void time0_init()

      { EA = 1;

      //開(kāi)總中斷

      TMOD = 0X11;//定時(shí)器0、定時(shí)器1工作方式1 ET0 = 1;

      //開(kāi)定時(shí)器0中斷

      TR0 = 1;

      //允許定時(shí)器0定時(shí)

      }

      /*********************交通燈處理函數(shù)*********************************/ void jiaotongdeng_dis(){

      char dx,nb;

      if(flag_dx_nb == 0){ dx=dx_s;nb=dx_s-5;if(nb<=0)nb=dx_s;}

      if(flag_dx_nb == 1){ dx=dx_s-5;nb=dx_s;if(dx<=0)dx=dx_s;}

      if(flag_1s == 1){ dx_s--;flag_1s = 0;

      if(dx_s == 0){

      if(flag_dx_nb == 1)

      dx_s = nb_time;

      //南北時(shí)間

      else

      dx_s = dx_time;

      //東西時(shí)間

      flag_dx_nb = ~flag_dx_nb;

      }

      }

      dis_smg[0] = smg_du[dx % 10];dis_smg[1] = smg_du[dx / 10];dis_smg[2] = smg_du[nb % 10];dis_smg[3] = smg_du[nb / 10];

      /***********************南北時(shí)間*********************************/

      if(flag_dx_nb == 0)

      {

      if(dx_s > 5)

      {

      dx_red

      = 1;//滅

      dx_green = 0;//亮

      dx_yellow = 1;//滅

      nb_red

      = 0;//亮

      nb_green = 1;//滅

      nb_yellow = 1;//滅

      flag_5m_value = 0;

      }else if(dx_s <= 5)

      //當(dāng)小于5秒時(shí)

      黃燈要閃了

      {

      dx_red

      = 1;

      //滅

      }

      } dx_green = 1;

      //滅 nb_red

      = 0;

      //亮 nb_green = 1;

      //滅 nb_yellow = 1;

      //滅 if(flag_500ms == 0){ dx_yellow = 0;//亮

      } else { } dx_yellow = 1;//滅

      /***********************東西時(shí)間*********************************/

      if(flag_dx_nb == 1)

      {

      if(dx_s > 5)

      {

      dx_red

      = 0;

      //亮

      dx_green = 1;

      //滅

      dx_yellow = 1;

      //滅

      nb_red

      = 1;

      //滅

      nb_green = 0;

      //亮

      nb_yellow = 1;

      //滅

      flag_5m_value = 0;

      }else if(dx_s <= 5)

      //當(dāng)小于5秒時(shí)

      黃燈要閃了

      {

      dx_red

      = 0;

      //滅

      dx_green = 1;

      //滅

      dx_yellow = 1;

      //滅

      nb_red

      = 1;

      //滅

      nb_green = 1;

      //滅

      if(flag_500ms == 0)

      //黃燈閃爍

      {

      }

      }

      } nb_yellow = 0;//亮 } else { nb_yellow = 1;//滅 }

      /********************獨(dú)立按鍵程序*****************/ uchar key_can;//按鍵值

      void key()//獨(dú)立按鍵程序 { static uchar key_new;key_can = 20;

      //按鍵值還原

      P1 |= 0x1f;

      if((P1 & 0x1f)!= 0x1f)//按鍵按下 { delay_1ms(1);

      //按鍵消抖動(dòng)

      if(((P1 & 0x1f)!= 0x1f)&&(key_new == 1))

      {

      key_new = 0;switch(P1 & 0x1f){

      //確認(rèn)是按鍵按下

      case 0x1e: key_can = 1;break;//得到按鍵值

      case 0x1d: key_can = 2;break;//得到按鍵值

      case 0x1b: key_can = 3;break;//得到按鍵值

      case 0x17: key_can = 4;break;//得到按鍵值

      }

      }

      } else

      key_new = 1;}

      uchar menu_1,flag_s;

      /********************設(shè)置函數(shù)*****************/ void key_with(){ if(key_can == 4)

      //交通管制按鍵

      {

      flag_jdgz ++;

      if(flag_jdgz > 5)

      flag_jdgz = 0;

      if(flag_jdgz == 1)// 全部亮紅燈

      {

      dx_red

      = 0;//亮

      dx_green = 1;//滅

      dx_yellow = 1;//滅

      } nb_red

      = 0;//亮

      nb_green = 1;//滅 nb_yellow = 1;//滅

      if(flag_jdgz == 2)// 東西紅燈

      南北綠燈

      {

      dx_red

      = 0;//亮

      dx_green = 1;//滅

      dx_yellow = 1;//滅

      nb_red

      = 1;//滅

      nb_green = 0;//亮

      nb_yellow = 1;//滅

      } if(flag_jdgz == 3)// 南北紅燈 {

      dx_red

      = 1;//滅

      dx_green = 0;//亮

      dx_yellow = 1;//滅

      nb_red

      = 0;//亮

      nb_green = 1;//滅

      nb_yellow = 1;//滅

      } if(flag_jdgz == 4)// 南北綠燈 {

      dx_red

      = 1;//滅

      dx_green = 0;//亮

      dx_yellow = 1;//滅

      nb_red

      = 1;//滅

      nb_green = 0;//亮

      nb_yellow = 1;//滅

      } if(flag_jdgz == 5)// 南北黃燈 {

      dx_red

      = 1;//滅

      dx_green = 1;//滅

      dx_yellow = 0;//亮

      nb_red

      = 1;//滅

      nb_green = 1;//滅

      nb_yellow = 0;//亮

      } } if(key_can == 1)

      //設(shè)置鍵 { menu_1 ++;

      東西綠燈 東西綠燈

      東西黃燈

      if(menu_1 >= 3){

      menu_1 = 0;} } if(menu_1 == 1)

      //設(shè)置東西的時(shí)間 { if(key_can == 2){

      dx_time ++;//加1

      if(dx_time > 99)

      dx_time = 99;} if(key_can == 3){

      dx_time--;//減1

      if(dx_time <= 10)

      dx_time = 10;} dis_smg[0] = smg_du[10];//顯示為A dis_smg[1] = smg_du[10];//顯示為A dis_smg[2] = smg_du[dx_time % 10];dis_smg[3] = smg_du[dx_time / 10];

      writeadd(4,dx_time);//保存數(shù)據(jù)

      } if(menu_1 == 2)

      //設(shè)置南北的時(shí)間 { if(key_can == 2){

      nb_time ++;//加1

      if(nb_time > 99)

      nb_time = 99;} if(key_can == 3){

      nb_time--;//減1

      //顯示東西設(shè)置的時(shí)候

      if(nb_time <= 10)

      nb_time = 10;} dis_smg[0] = smg_du[11];//顯示為B dis_smg[1] = smg_du[11];//顯示為B dis_smg[2] = smg_du[nb_time % 10];dis_smg[3] = smg_du[nb_time / 10];

      //顯示東西設(shè)置的時(shí)候

      writeadd(2,nb_time);//保存數(shù)據(jù)

      } }

      /******************************************************************** * 名稱 : main()* 功能 : 實(shí)現(xiàn)燈的閃爍 * 輸入 : 無(wú) * 輸出 : 無(wú)

      ***********************************************************************/ void main(){ time0_init();

      init();//24C02初始化

      nb_time=readadd(2);//讀取地址2處一個(gè)字節(jié)給

      dx_time=readadd(4);//讀取地址4處一個(gè)字節(jié)給

      if(nb_time>99)nb_time=20;

      if(dx_time>99)dx_time=30;

      dx_s = nb_time;

      //東西時(shí)間

      while(1){

      key();

      if(key_can < 20)

      key_with();

      if((menu_1 == 0)&&(flag_jdgz == 0))

      } }

      jiaotongdeng_dis();display();/*********************定時(shí)器0中斷服務(wù)程序************************/ void time0_int()interrupt 1

      {

      } static uchar value;

      //定時(shí)10ms中斷一次 TH0 = 0x3c;TL0 = 0xb0;

      //50ms value ++;flag_5m_value++;if(flag_5m_value % 10 == 0)flag_500ms = ~flag_500ms;if(value >= 20){ value = 0;flag_1s = 1;}

      第三篇:基于單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)

      基于單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)

      摘要:十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來(lái)實(shí)現(xiàn)這井然秩序呢?靠的就是交通信號(hào)燈的自動(dòng)指揮系統(tǒng)。交通信號(hào)燈控制方式很多。本系統(tǒng)采用MSC-51系列單片機(jī)ATSC51和可編程并行I/O接口芯片8255A為中心器件來(lái)設(shè)計(jì)交通燈控制囂,實(shí)現(xiàn)了能根據(jù)實(shí)際車流量通過(guò)8051芯片的P1口設(shè)置紅、綠燈燃亮?xí)r間的功能;紅綠燈循環(huán)點(diǎn)亮。倒計(jì)時(shí)剩5秒時(shí)黃燈閃爍警示;車輛闖紅燈報(bào)警;綠燈時(shí)間可檢測(cè)車流量并可通過(guò)雙位數(shù)碼管顯示。本系統(tǒng)實(shí)用性強(qiáng)、操作簡(jiǎn)單、擴(kuò)展功能強(qiáng)。

      關(guān)鍵詞:?jiǎn)纹瑱C(jī);交通燈

      單片機(jī)技術(shù)的發(fā)展對(duì)社會(huì)進(jìn)步產(chǎn)生了巨大的影響。今天,單片機(jī)及其應(yīng)用技術(shù)的發(fā)展速度、深度及其廣度,在國(guó)防、科學(xué)研究、政治經(jīng)濟(jì)、教育文化等方面幾乎無(wú)所不及。將之用于交通燈控制系統(tǒng)設(shè)計(jì),對(duì)于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。

      1、單片機(jī)涵義

      一臺(tái)能夠工作的計(jì)算機(jī)要有這樣幾個(gè)部份構(gòu)成:CPU(進(jìn)行運(yùn)算、控制)、RAM(數(shù)據(jù)存儲(chǔ))、ROM(程序存儲(chǔ))、輸入,輸出設(shè)備(例如:串行口、并行輸出口等)。在個(gè)人計(jì)算機(jī)上這些部份被分成若干塊芯片,安裝一個(gè)稱之為主板的印刷線路板上。而在單片機(jī)中,這些部份,全部被做到一塊集成電路芯片中了,所以就際=缸單片(單芯片)機(jī),單片機(jī)即微控制器(Microniroller μC)有一些單片機(jī)中除了上述部份外,還集成了其它部份如AID,DIA,定時(shí)計(jì)數(shù)器,RTC,各種串行接口等。

      2、MSC-51芯片簡(jiǎn)介

      2.1 MSC-51結(jié)構(gòu)

      8051是MCS-51系列單片機(jī)的典型產(chǎn)品,8051單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí),計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線。

      2.2 8255芯片簡(jiǎn)介

      8255可編程并行接口芯片有三個(gè)輸入輸出端口,即A口、B口和c口,對(duì)應(yīng)于引腳PAT—PA0、PB7-PB0和PC7-PC0。其內(nèi)部還有一個(gè)控制寄存器,即控制口。通常A口、B口作為輸入輸出的數(shù)據(jù)端口。c口作為控制或狀態(tài)信息的端口,它在方式字的控制下,可以分成4位的端口,每個(gè)端口包含一個(gè)4位鎖存器。它們分別與端口A/B配合使用,可以用作控制信號(hào)輸出或作為狀態(tài)信號(hào)輸入。

      8255有兩種控制命令字;一個(gè)是方式選擇控制字;另一個(gè)是c口按位置位/復(fù)位控制字。

      2.3 74LS373簡(jiǎn)介

      SN74LS373。SN74LS374常用的8d鎖存器。常用作地址鎖存和I/0輸出,可以用74he373代換,74H373是高速CMOS器件,功能與74LS373相同,兩者可以互換。74LS373內(nèi)有8個(gè)相同的D型(三態(tài)同相)鎖存器,由兩個(gè)控制端(11腳c或EN;1腳OUT、CONT、OE)控制。當(dāng)OE接地時(shí),若G為高電平,741Ls373接收由PPU輸出的地址信號(hào);如果G為低電平,則將地址信號(hào)鎖存。

      3、系統(tǒng)硬件

      3.1 交通管理的方案論證 東西、南北兩干道交于一個(gè)十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行。綠燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換,且黃燈燃亮?xí)r間為東西、南北兩千道的公共停車時(shí)問(wèn)。設(shè)東西道比南北道的車流量。

      3.2 系統(tǒng)硬件設(shè)計(jì)

      選用設(shè)備8031單片機(jī)一片選用設(shè)備:8031彈片機(jī)一片,8255并行通用接口芯片一片,74LS07兩片,MAX692‘看門狗’一片,共陰極的七段數(shù)碼管兩個(gè)雙向晶閘管若干,7805三端穩(wěn)壓電源一個(gè),紅、黃、綠交通燈各兩個(gè)。開(kāi)關(guān)鍵盤、連線若干。

      4、控制器的軟件設(shè)計(jì)

      4.1 每秒鐘的設(shè)定

      延時(shí)方法可以有兩種:一種是利用NCS-51內(nèi)部定時(shí)器才生溢出中斷來(lái)確定1秒的時(shí)間,另一種是采用軟延時(shí)的方法。

      4.2 計(jì)數(shù)器硬件延時(shí)

      4.2.1 初值計(jì)算

      定時(shí)器工作時(shí)必須給計(jì)數(shù)器送計(jì)數(shù)器初值,這個(gè)值是送到TH和TL中的。他是以加法記數(shù)的,并能從全1到全0時(shí)自動(dòng)產(chǎn)生溢出中斷請(qǐng)求。因此,我們可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值設(shè)定為c和計(jì)數(shù)初值設(shè)定為TC。

      4.2.2 1秒的方法

      我們采用在主程序中設(shè)定一個(gè)初值為20的軟件計(jì)數(shù)器和使TO定時(shí)5O毫秒,這樣每當(dāng)TO到50毫秒時(shí)cPu就響應(yīng)它的溢出中斷請(qǐng)求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中,cPu先使軟件計(jì)數(shù)器減1,然后判斷它是否為零。為零表示1秒已到可以返回到輸出時(shí)間顯示程序。

      4.3 計(jì)數(shù)器軟件延時(shí)

      MCS-51的工作頻率為2-12MHZ,我們選用的8031單片機(jī)的工作頻率為6MHZ。機(jī)器周期與主頻有關(guān),機(jī)器周期是主頻的12倍,所以一個(gè)機(jī)器周期的時(shí)間為12*(1/6M)=2us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過(guò)指令的執(zhí)行條數(shù)來(lái)確定1秒的時(shí)間。

      4.4 時(shí)間及信號(hào)燈的顯示

      4.4.1 8051并行口的擴(kuò)展

      8051雖然有4個(gè)8位I/0端口,但真正能提供借用的只有Pl口。因?yàn)镻2和P0口通常用于傳送外部傳送地址和數(shù)據(jù),P3口也有它的第二功能。因此,8031通常需要擴(kuò)展。由于我們用外部輸入設(shè)定紅綠燈倒計(jì)時(shí)初值、數(shù)碼管的輸出顯示、紅綠黃信號(hào)燈的顯示都要用到一個(gè)I/0端口,顯然8031的端口是不夠,需要擴(kuò)展。

      擴(kuò)展的方法有兩種:(1)借用外部RAM地址來(lái)擴(kuò)展I/0端口;(2)采用I/0接口新片來(lái)擴(kuò)充。我們用8255并行接口信片來(lái)擴(kuò)展I/0端口。

      4.4.2 8255與8051的連接

      用8051的PO口的pO.7連接8255的片選信號(hào),我們用8031的地址采用全譯碼方式,當(dāng)pO.7:0時(shí)片選有效,其他無(wú)效,pO.1用于選擇8255端口。

      5、結(jié) 論

      本系統(tǒng)就是充分利用了8051和8255芯片的I/O引腳。系統(tǒng)統(tǒng)采用MSC-51系列單片機(jī)Intel8051和可編程并行I/0接口芯片8255A為中心器件來(lái)設(shè)計(jì)交通燈控制器,實(shí)現(xiàn)了能根據(jù)實(shí)際車流量通過(guò)8031芯片的Pl口設(shè)置紅、綠燈燃亮?xí)r間的功能;紅綠燈循環(huán)點(diǎn)亮,倒計(jì)時(shí)剩5秒時(shí)黃燈閃爍警示(交通燈信號(hào)通過(guò)PA口輸出,顯示時(shí)間直接通過(guò)8255的PC口輸出至雙位數(shù)碼管);車輛闖紅燈報(bào)警;綠燈時(shí)間可檢測(cè)車流量并可通過(guò)雙位數(shù)碼管顯示。

      參考文獻(xiàn):

      [1]張毅剛,新編MCS-51單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M]哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2006

      [2]王義軍,單片機(jī)原理及應(yīng)用習(xí)題與實(shí)驗(yàn)指導(dǎo)書[M],北京:中國(guó)電力出版社,2006

      [3]陳明熒8051單片機(jī)課程設(shè)計(jì)實(shí)訓(xùn)教材[M],北京:清華大學(xué)出版社。2004

      第四篇:基于單片機(jī)的交通燈控制系統(tǒng)

      單片機(jī)原理及系統(tǒng)課程設(shè)計(jì)報(bào)告

      基于單片機(jī)的交通燈控制系統(tǒng) 引言

      單片機(jī)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域具有廣泛的應(yīng)用。本文設(shè)計(jì)了基于單片機(jī)的交通燈控制系統(tǒng)以AT89C51單片機(jī)為核心芯片,通過(guò)控制三色LED燈的亮滅來(lái)控制各車道的通行。設(shè)計(jì)方案及原理

      本系統(tǒng)由AT89C51單片機(jī)、紅、黃、綠LED交通信號(hào)燈、共陰極數(shù)碼管、緊急通車開(kāi)關(guān)等模塊組成該電路具有設(shè)計(jì)簡(jiǎn)單,顯示亮度高,能耗小,可靠性高燈特點(diǎn)。其總體設(shè)計(jì)框圖如圖1所示。

      復(fù)位電路七段數(shù)碼管倒計(jì)時(shí)顯示電路AT89C51晶振電路A、B車道LED顯示電路按鍵電路

      圖1 系統(tǒng)總體設(shè)計(jì)方框圖

      2.1 系統(tǒng)設(shè)計(jì)

      交通燈控制系統(tǒng)主要控制A,B兩車道的交通,以AT89C51單片機(jī)為核心芯片,通過(guò)控制三色LED燈的亮滅來(lái)控制各車道的通行;另外通過(guò)3個(gè)按鍵來(lái)模擬各車道有無(wú)車輛的情況和有緊急車輛的情況。根據(jù)設(shè)計(jì)要求,制定總體設(shè)計(jì)思想如下:

      (1)用AT89C51單片機(jī)控制交通燈電路,晶振采用12MHz。(2)用發(fā)光二極管模擬交通信號(hào)燈,用按鍵開(kāi)關(guān)模擬車輛檢測(cè)信號(hào)。

      (3)有緊急車輛通過(guò)時(shí),按下K3開(kāi)關(guān)使A、B車道均為紅燈,禁行20s。此時(shí),

      第五篇:基于C51單片機(jī)的交通燈控制系統(tǒng)

      基于C51單片機(jī)的交通燈控制系統(tǒng)

      1、實(shí)驗(yàn)方案論證:

      進(jìn)行十字路口的交通信號(hào)燈控制電路設(shè)計(jì),畫出電路原理圖及實(shí)驗(yàn)電路圖,進(jìn)行軟件編程、以及使用說(shuō)明文檔的建立等一整套工作任務(wù)。進(jìn)行十字路口的交通信號(hào)燈控制程序設(shè)計(jì),提交一個(gè)符合上述功能要求的十字路口的交通信號(hào)燈控制系統(tǒng)設(shè)計(jì)。

      2、控制流程分析:

      對(duì)設(shè)計(jì)要求進(jìn)行分析后可得出以下交通工作狀態(tài)表:

      3、硬件設(shè)計(jì)概要:

      根據(jù)設(shè)計(jì)要求,可用6個(gè)LED燈分別模擬東西、南北的交通燈。具體接法如下: AT89C51的P1口接LED燈,P1.0、P1.1、P1.2分別接?xùn)|西方向紅、綠、黃交通燈,P1.3、P1.4、P1.5分別接南北方向的紅、綠、黃交通燈。P1口和LED燈之間要接限流保護(hù)電阻。兩位數(shù)碼管段選接P2口,位選接P0口低兩位,P0口低兩位接上拉電阻使其可以輸出高電平。緊急情況按鈕一端接地,另一端與外中斷1引腳相連;恢復(fù)正常按鈕一端接地,另一端與外中斷0引腳相連。

      三、原理圖設(shè)計(jì)

      1、LED顯示部分電路設(shè)計(jì):

      把單片機(jī)AT89C51的P1口作為紅黃綠燈顯示部分,用6個(gè)LED燈分別模擬東西、南北的交通燈。P1.0、P1.1、P1.2各通過(guò)一個(gè)300Ω的限流保護(hù)電阻接?xùn)|西方向的紅、綠、黃LED燈;P1.3、P1.4、P1.5各通過(guò)一個(gè)300Ω的限流保護(hù)電阻接南北方向的紅、綠、黃LED燈。LED燈的一端接電源,另一端經(jīng)電阻接P1口,因此當(dāng)P1口引腳輸出低電平時(shí)LED燈發(fā)光,即此方案采取低電平驅(qū)動(dòng)方式。具體電路如下:

      2、緊急情況處理電路設(shè)計(jì):

      緊急情況按鈕一端接地,另一端與外中斷1引腳相連;恢復(fù)正常按鈕一端接地,另一端與外中斷0引腳相連。在程序設(shè)計(jì)時(shí),我會(huì)將其設(shè)置為下降沿觸發(fā)方式。具體電路如下:

      3、數(shù)字顯示電路設(shè)計(jì): 選用共陰極兩位數(shù)碼管。兩位數(shù)碼管A~G引腳各通過(guò)一個(gè)300Ω的限流保護(hù)電阻分別接P2.0~P2.6,位選1引腳和2引腳分別接P0.0口低兩位,P0口低兩位接5kΩ的上拉電阻使其可以輸出高電平。

      4、其他部分電路:

      XTAL1端和XTAL2端之間接一個(gè)12M Hz的晶振,再各接一個(gè)30pF的普通電容后接地;RST復(fù)位端一端經(jīng)10uF的電解電容接+5V電源,一端經(jīng)一個(gè)10K的電阻接地。具體電路如下:

      4、系統(tǒng)電路總圖:

      四、程序設(shè)計(jì):

      1、定時(shí)器初值的計(jì)算:

      由于要求定時(shí)時(shí)間相當(dāng)精確,我用定時(shí)器T0進(jìn)行定時(shí)。根據(jù)公式可知若已知要求的定時(shí)時(shí)間為t,則定時(shí)器的初值為x(其中fosc=12M Hz)

      : 需要定時(shí)器的定時(shí)時(shí)間為50ms,根據(jù)公式計(jì)算得出X=15536,因此定時(shí)器初值的低位TL0=(0B0H),高位TH0=(3CH)。

      2、程序流程圖: 2.1主程序流程

      主程序主要是對(duì)單片機(jī)進(jìn)行初始化。初始化首先要開(kāi)放總中斷、定時(shí)器T0中斷以及外部中斷0和外部中斷1。其次是設(shè)置中斷優(yōu)先級(jí),把外中斷0設(shè)置為高優(yōu)先級(jí),外中斷1設(shè)置為低優(yōu)先級(jí)。再次是給定時(shí)器T0裝頂初值,然后后是啟動(dòng)定時(shí)器,是使定時(shí)器開(kāi)始定時(shí)。最后是等待中斷。

      2.2緊急情況中斷處理流程

      緊急情況中斷處理包括兩部分,第一部分是出現(xiàn)緊急情況可以手動(dòng)使東西、南北方向紅燈全亮,而且直到緊急狀況解除后才能恢復(fù)正常通車。這就要求緊急狀況解除前不能退出外中斷1處理程序,因此要在外中斷1處理程序處設(shè)置一無(wú)限循環(huán)。第二部分是緊急狀況解除。為了使外中斷1處理程序退出無(wú)限循環(huán),可用中斷嵌套使機(jī)器轉(zhuǎn)去執(zhí)行外中斷0處理程序,而外中斷0處理程序修改了寄存器R2的值,中斷返回后由于寄存器R2的值的改變使外中斷1處理程序跳循環(huán)。2.2.1外中斷1處理程序(低優(yōu)先級(jí))2.2.2外中斷0處理程序(高優(yōu)先級(jí))

      1.3定時(shí)器中斷處理流程

      Y Y

      3、程序源代碼: ORG 0000H AJMP START ORG 0003H;外中斷0入口 AJMP SERV0 ORG 000BH AJMP SERV1 ORG 0013H AJMP SERV2 ORG 0030H START:MOV IE,#87H MOV IP,#01H MOV TMOD,#01H MOV TCON,#05H MOV TH0,#3CH MOV TL0,#0B0H MOV DPTR,#TAB MOV P1,#0F6H MOV R0,#20 MOV R5,#00H MOV R6,#00H SETB TR0 LOOP1:MOV P0,#02H MOV A,R6 MOVC A,@A+DPTR MOV P2,A ACALL D10MS MOV P0,#01H MOV A,R5 MOVC A,@A+DPTR MOV P2,A ACALL D10MS AJMP LOOP1;外中斷1入口;定時(shí)器中斷入口 設(shè)置中斷優(yōu)先級(jí);裝定時(shí)器初值;裝表首地址;啟動(dòng)定時(shí)器;循環(huán)動(dòng)態(tài)顯示,由10秒開(kāi)始倒計(jì)時(shí)

      SERV0:MOV R2,#0FFH;正常狀態(tài)恢復(fù)程序,使R0的值不為0 RETI SERV1:DJNZ R0,NEXT;未到1秒,則轉(zhuǎn)到NEXT CJNE R5,#01,DHE0 AJMP DHE3 DHE0: CJNE R5,#00H,DHE1 CJNE R6,#00H,DHE2 MOV R5,#00H MOV R6,#01H MOV P1,#0F5H AJMP OUT0 DHE1: DEC R5 AJMP OUT0 DHE2: MOV R6,#00H MOV R5,#09H OUT0: MOV R0,#20 RETI DHE3: MOV P0,#00H MOV P2,#3FH MOV A,P1 MOV R1,#05H JNB ACC.0,CHE0 YELL0:SETB P1.0 SETB P1.1 CLR P1.2 ACALL DMS SETB P1.2 ACALL DMS DJNZ R1,YELL0 MOV P1,#0EEH SJMP NEXT1 CHE0: JNB ACC.3,CHE1 YELL1:SETB P1.3 SETB P1.4 CLR P1.5;減1秒;顯示為0;東西方向紅燈亮,則轉(zhuǎn)到CHE0;東西方向綠燈滅;東西方向黃燈閃爍5次;東西方向紅燈亮,南北方向綠燈亮;南北方向綠燈滅 ACALL DMS SETB P1.5 ACALL DMS DJNZ R1,YELL1;南北方向黃燈閃爍5次 CHE1: MOV P1,#0F5H;南北方向紅燈亮,東西方向綠燈亮 NEXT1:MOV R0,#20 MOV R5,#00H MOV R6,#01H;重置顯示為10秒 NEXT: MOV TH0,#3CH;重裝定時(shí)器初值 MOV TL0,#0B0H RETI SERV2:MOV P0,#00H MOV P2,#3FH;顯示為0 MOV R5,#00H MOV R6,#00H MOV R2,#00H;緊急狀況服務(wù)程序,使R2的值為0 MOV P1,#0F6H LOOP3:CJNE R2,#00H,OUT1;R2的值為0,則無(wú)限循環(huán),直到執(zhí)行SERV0狀 MOV R3,#02H;態(tài)恢復(fù)程序,使R0的值不為0才返回 DJNZ R3,LOOP3 OUT1: RETI DMS: MOV 32H,#4;延時(shí)子程序,延時(shí)0.4秒 DL0: MOV 31H,#200 DL1: MOV 30H,#250 DL2: DJNZ 30H,DL2 DJNZ 31H,DL1 DJNZ 32H,DL0 RET D10MS:MOV 33H,#50;延時(shí)子程序,延時(shí)10毫秒 DL3: MOV 34H,#100 DL4: DJNZ 34H,DL4 DJNZ 33H,DL3 RET TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END

      五、仿真結(jié)果與分析

      在PROTEUS軟件仿真中的結(jié)果如下:

      1、初始狀態(tài)

      2、東西路口的綠燈亮,南北路口的紅燈亮

      3、東西路口綠燈滅,黃燈閃爍

      4、東西路口紅燈亮,南北路口的綠燈亮

      5、南北路口綠燈滅,黃燈閃爍

      由以上仿真結(jié)果可以看出,電路圖和源程序設(shè)計(jì)完全滿足設(shè)計(jì)要求。

      六、課程設(shè)計(jì)總結(jié)與體會(huì)

      通過(guò)這次課程設(shè)計(jì)我鞏固和加深課堂所學(xué)知識(shí);掌握一般軟硬件的設(shè)計(jì)方法和查詢、運(yùn)用資料的能力;掌握通過(guò)定時(shí)器進(jìn)行定時(shí)的基本方法、中斷控制的原理和方法以及LED控制的方法。

      這次課程設(shè)計(jì),我將課本上的理論知識(shí)和實(shí)際的應(yīng)用有機(jī)的結(jié)合起來(lái),提高分析和解決問(wèn)題的實(shí)際能力,通過(guò)對(duì)匯編語(yǔ)言程序代碼的設(shè)計(jì)、編寫、修改以提高自己實(shí)際編程能力。

      總的來(lái)說(shuō),這次課程設(shè)計(jì)的難度不算大,整個(gè)設(shè)計(jì)、調(diào)試任務(wù)都有我獨(dú)立完成。而在PROTEUS軟件仿真中的結(jié)果可以看到我的設(shè)計(jì)完全符合要求。在設(shè)計(jì)過(guò)程中我還認(rèn)識(shí)到,遇到問(wèn)題時(shí)應(yīng)回到書本,查找實(shí)際問(wèn)題所需的理論知識(shí),將理論和實(shí)際結(jié)合起來(lái)。這樣,在解決問(wèn)題的同時(shí)還能提高我對(duì)理論知識(shí)的理解。

      下載單片機(jī):交通燈控制系統(tǒng)設(shè)計(jì)范文大全word格式文檔
      下載單片機(jī):交通燈控制系統(tǒng)設(shè)計(jì)范文大全.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦