設計的系統應用在一個車流量大的十字交叉路口,縱向南北方向作為主干道,橫向東西方向為支干道。主、支干道交替通行,兩個干道上的交通燈工作方式同時進行,主干道每次放行15秒,支干道每次放行10秒;每次綠燈變紅之前,黃燈先亮3秒,此時另一干道上的紅燈并閃爍。
主干道和支干道各由一組三色交通燈來控制,分別是主干道方向的紅、黃、綠以及支干道方向的紅、黃、綠。邏輯分析可知,當主干道為綠燈通行時,支干道必須為紅燈禁行;綠燈結束后,主干道進入黃燈等待狀態,支干道紅燈閃爍;黃燈結束后,主干道變為紅燈禁行,支干道變為綠燈通行;支干道綠燈結束后,支干道進入黃燈等待狀態,主干道紅燈閃爍,如此循環。從這個過程中可以看出,交通燈控制共分4個狀態,分別為:S1狀態,主干道方向為綠燈,支干道方向為紅燈;S2狀態,主干道方向為黃燈,支干道紅燈閃爍;S3狀態,主干道方向為紅燈,支干道方向為綠燈;S4狀態,支干道方向為黃燈,主干道紅燈閃爍,這四個狀態不斷循環。由此我們可以列出4個狀態的列表和做出4個狀態的流程圖。
| 主干道方向 | 支干道方向 | 說明 | ||||
紅 | 黃 | 綠 | 紅 | 黃 | 綠 | ||
S1 | 滅 | 滅 | 亮 | 亮 | 滅 | 滅 | 12s常亮 |
S2 | 滅 | 亮 | 滅 | 閃爍 | 滅 | 滅 | S1->S2 |
S3 | 亮 | 滅 | 滅 | 滅 | 滅 | 亮 | 7s常亮 |
S4 | 閃爍 | 滅 | 滅 | 滅 | 亮 | 滅 | S3->S4 |
圖2.1 交通燈流程圖
系統設置有4個按鍵,分別為Enter鍵,+鍵,-鍵和Shift鍵。Enter鍵是對設置的確認,+和-是對設置參數做調整,Shift鍵是對程序運行和參數設置兩種狀態的切換。當系統上電或手動復位之后,默認模式下會按照斷電前程序里記錄的參數運行。若此時Shift鍵按下,則設置為參數設置狀態,數碼管上顯示原本記錄的參數并閃爍,可通過+或-鍵對參數進行修改,最后按下Enter鍵將新參數保存。
然后系統控制狀態燈和LED數碼管的顯示,將狀態碼值以及顯示的時間值的個位和十位送到相應IO口,通過定時器設定1s定時,當定時時間達到時產生定時器中斷,在中斷中將時間減一,然后刷新LED數碼管的顯示。直到時間值被減為0,判斷下一個指示燈狀態并裝入對應的狀態代碼和時間值的狀態。
本課題的主要內容是設計了一種基于AT89C51單片機的控制的交通燈設計。這次設計以單片機為主要控制器,可以方便的實現十字路口交通燈的控制,實現行人與車流的分流,該系統控制期間各路轉彎不再進行。擬解決的主要問題:
①模擬交通信號燈的交替變換。
②系統硬件設計與實現。
③系統軟件設計。
④系統軟硬件綜合調試。
研究主要方法:
本設計根據實際交通法則模擬基本的交通控制系統,用紅色LED表示禁行,綠色LED表示通行,黃色LED表示等待的信號,每個方向有一組LED數碼管,可以倒計時顯示提醒行駛者。據此,本設計系統以單片機為控制核心,連接成最小系統,和按鍵設置模塊等產生輸入,信號燈狀態模塊,LED倒計時模塊。
研究要求:
①單片機型號:AT89C51
②縱向為主干道,橫向為支干道。主、支干道交替通行,兩個干道上的交通燈工作方式同時進行。
③主干道每次放行15秒,支干道每次放行10秒。
④每次綠燈變紅之前,黃燈先亮3秒,此時另一干道上的紅燈并閃爍。
⑤給出整個系統的結構圖、軟硬件流程
系統要想正常而穩定的運行,必須要有一套穩定的電源電路。為了給單片機和各種芯片提供工作電壓,需要將交流220V轉換為直流5V。
根據模擬電路學到的知識,轉換過程如圖3.1所示:
變壓器經過一個保險絲連接電源,變壓器或后面的電路如果發生短路,保險絲會因大電流引發的高溫溶化而斷開,從而保證后續電路不會受大電流的損壞。
變壓器后面是一個橋式整流電路,整流后會得到一個紋波很大的直流電源,還需要接一個1000uF/25V的電解電容濾除紋波。
變壓器輸出端的電壓經過橋式整流并電容濾波,如果電容兩端直接接負載,當負載變化或交流電源電壓出現波動時,電解電容C1兩端的電壓會發生較大幅度變化,要得到一個比較穩定的電壓,需要在這里接一個三端穩壓器。
當負載電流大時穩壓器內的電阻會變小,當負載電流變小時三端穩壓器內的電阻又會變大,使的穩壓器的輸出電壓基本保持不變。
單片機和大多數功能芯片的輸入電壓都是直流5V,這里我們需要將交流220V經過變壓器轉換為9V的電壓,整流后經7805穩壓成直流5V。LM7805最大輸出電流為1A,內部有限流式短路保護,短時間內輸出端對地(2腳)短路不會燒壞7805。
三端穩壓器后面接一個104的瓷片電容,起濾波和阻尼作用。
方案一:AVR單片機。AVR不是一個簡單的外設功能的疊加,但更多的模型以滿足不同設計開發者的實際需要,同時可以提供一個低成本的OTP芯片。此外,PIC是低功耗的睡眠功能、深度睡眠、上電、掉電復位電路、看門狗電路,外圍設備,占用空間小;成本低,安全技術也非常可靠,能夠最大程度地滿足開發者的實際要求。因此,在工業控制,PIC單片機被廣泛的應用到各行各業的控制中,其穩定性、系統功耗等都為廣大開發者認可。價格相比同性能產品在中上游水平。
方案二:PIC24H64GP506是16位RISC混合信號處理器,具有以下特點:
工作電壓低,最低工作電壓1.8V下正常工作。
功耗小,在運行模式下,只有200mA的工作電流,在休眠和待機模式下只有3ma的電流,在power off狀態下只需要用0.1mA;運行狀態中包含提供6種運行模式,3個時鐘信號,包括1個高頻率的時鐘,1個低頻時鐘和1的DCO,靈活的時鐘選擇使系統能夠在最合理的時鐘工作,大大降低了系統功耗,便于系統的設計。
豐富的外設接口,包括標準的UART,SPI、I2C接口,可以和具有相同接口的設備連接進行通訊采集相關外設的數據。該MCU,具有256位RAM和8 kbit Flash內部;中斷喚醒功能,可以通過中斷使單片機從睡眠模式到主動模式。
方案三:選擇價格低廉的51系列單片機,具有51內核的低功耗、高性能的8位單片機,內含4K字節Flash只讀程序存儲器,兼容MCS-51指令和80C5l引腳結構,功能強大的微型計算機的AT89C51為工業控制應用系統提供低成本、高可靠性的解決方案。它具有如下特點:128字節內部RAM,32個I/O口線,看門狗,兩個16位定時和計數單元,一個5兩級中斷結構的向量,一個UART通信口,內部晶振和時鐘電路。
根據系統實際需要,最終選擇成本低廉,便于操作的51系列單片機,型號為STC80C51。如圖3.2所示為51系列單片機內核示意圖,圖3.3所示為AT80C51單片機最小系統電路圖。
單片機最小系統是指一個微控制器系統可以正常工作需要具備的最少的元件構成的系統。51系列單片機的最小系統一般應包括:單片機,晶振電路,復位電路。
復位電路由電阻電容和電阻串聯組成,根據電容電壓不能突然改變的性質可以知道,一個系統上電,RST引腳默認為低電平,RC電路來決定高電平的時間。一個典型的51單片機,當RST引腳為高電平兩個機器周期以上的將被重置,所以RC值要選擇適當,才能確保可靠的復位,根據t=R*C,t要大于兩個機器周期,選擇電阻阻值為10k,電容容值為10uF。當然還有其他的參數組合,只要滿足原理使RC組合可以產生在RST引腳置高至少兩個機器周期。至于如何具體量化的計算,可以參考電路分析的書籍。
單片機復位電路就像電腦的重啟,按下復位按鈕內部的程序將從頭開始運行。單片機系統在運行中,可能因為環境干擾等因素導致運行失控,就可以通過復位按鍵實現對單片機系統的重新啟動。
在電路圖中,電容器的容值為10uF,電阻器阻值為10k。所以根據公式,充電電容器增大到0.7倍電源電壓,即設備電源是5V,充電電容器電壓增長到5*0.7=3.5V這一過程所需要的時間是10K * 10UF = 0.1S。
也就是說,在計算機啟動0.1S的過程中,電容兩端的電壓會從0增大到3.5V。這段時間內在電阻10K兩端的電壓會降低到1.5V(串聯周圍電路中的電壓和總電壓)。所以在0.1S,RST引腳電壓為5V?1.5V。微控制器啟動之后0.1S,電容C連續充電到5V,這是10K電阻兩端的電壓接近0V,RST在低電平,以使系統正常工作。當按下按鈕時,該開關被接通時,這時在電容器兩端形成環路,電容器被短路,電容器放電。隨著時間的推移,電容器兩端的電壓,從5V釋放成為1.5V,或甚至更小。這時10K電阻器兩端的電壓達到3.5V,或甚至更多,所以RST引腳變為高電平,單片機系統自動復位。
原則是微控制器復位電路RST引腳接收超過2US的高電平信號,只要電容器充電和放電時間大于2US,即可復位,該電路的電容值和電阻值可以根據實際電路做修改。按復位鍵,使電容短路,釋放之前儲存的能量,使電阻兩端電壓升高,從而給RST引腳一個高電平。
晶振電路是由振蕩晶體和兩個電容組成,為單片機提供指令時鐘。對于51系統,外部晶振通常選擇11.0592MHz,這樣可以產生精準的微秒級別的機器時間,準確地得到9600bps和19200bps,用于有串口通訊的場合,方便定時操作。晶振電路在PCB布線設計時一定要盡量靠近單片機,并且兩個引腳到單片機的走線盡量一樣長,如果偏差太大會導致起振不良,或者計時不準確。晶振電路的地一定要和單片機的地共地,51單片機最小系統晶振在正常工作的情況下可以采用更高頻率的晶振,51單片機最小系統晶振的振蕩頻率直接影響單片機的處理速度,頻率越大處理速度越快。在晶振頻率的選擇上,在能夠滿足系統需要的前提下盡可能的選擇低頻率的晶振,晶振頻率越低其功耗的能量越低,所以并不是晶振頻率越高越好,要根據實際情況對頻率和功耗進行取舍。
單片機的外部晶振如果單獨跟單片機連接,理論上也是可以起振使單片機工作的,只是這樣的結構會使電路中產生很多其他頻率的諧波,諧波會降低時鐘振蕩器的穩定性。因此,在外部晶振的旁邊會通過加一對起振電容去過濾諧波。起振電容的容值沒有特別固定的值,根據不同的單片機會有不同的選擇范圍,51系列單片機的起振電容一般在15~30pF,在做PCB布線時起振電容離晶振越近越好,而晶振離單片機也是越近越好
LED數碼管是由多個發光二極管被封裝在一起,以形成“8”字形的裝置,引線被連接在內部,每個二極管有自己的一個引腳,他們共同具有一個公共電極。數碼管里有顯示7段和一個小數點的8個發光二極管,就會看到相應的數碼管段被點亮。
當一個特定的段的LED被施加電壓時,這些特定的段將被點亮,以形成我們眼睛看到的圖像。8段LED數碼管只能顯示簡單的0~9的阿拉伯數字和A~F的英文字母,有一些段數比較多的LED可以顯示更多的內容,總之,數碼管還是以顯示數字和字母為主,復雜的顯示信息還是需要考慮使用液晶之類的更為復雜的電子器件。如圖3.4所示為8段LED數碼管示意圖。
圖3.4 LED數碼管示意圖
LED數碼管主要是通過點亮相應段的發光二極管,在視覺上給人們顯示出各個數字和字母的形狀,驅動LED數碼管的方式有兩種,一種是靜態顯示驅動,另一種是動態顯示驅動。靜態顯示驅動,也被稱為直流驅動。靜態驅動的裝置,每個段需要由單片機的一個I / O口來驅動,或者作為BCD碼兩用。靜態驅動的優點是編程簡單,顯示亮度高,缺點是占用I/ O端口多,加入需要驅動4個8段的數碼管,則需要4*8=32個IO口,而51單片機可用的I/O端口一共只有32。我們在實際應用中必須增加的編解碼驅動器,來減少I/O口的浪費,同時也增加了硬件電路的復雜性。第二種是動態顯示驅動,數碼管動態顯示方式在微控制器中被廣泛使用。動態顯示是利用了人眼具有視覺停留現象,即人眼在看到某一景物后,在很短的時間內,即使該景物消失,在人眼中還會保留該景物的像。動態顯示就是將數字按照個十百千位的格式分開,根據各個位的數字分別控制點亮對應數碼管的發光二極管的段。每次只點亮一個位對應的數碼管,其他位的數碼管被熄滅。
通過依次控制每個LED數碼管的COM端,它使每一個對應的數字顯示,這是一個動態的過程。反過來顯示,每位數碼管點亮時間為1?2毫秒,由于人的視覺和發光二極管的余輝效應的持續性的現象,盡管你不是在同一時間點亮數碼管,但事實只要掃描速度足夠快,給人的印象是一組穩定的顯示數據,不會有閃爍感,動態顯示和靜態顯示的效果是一樣的,但是可以節省大量的I / O端口,以及更低功耗。因此動態顯示更為廣泛的被應用。
第四節 按鍵設置模塊鍵盤是最常用的單片機系統的人機界面,根據組合形式可分為兩種:獨立式和陣列式。獨立式鍵盤由于一個按鍵需要對應一個IO口,因此適合用于按鍵數量少的場合;陣列式是通過橫向和縱向交叉檢測,可以將IO口的使用數量呈指數減少,例如三根橫向和三根縱向線交叉可以實現9個鍵碼的分辨,如果按獨立式鍵盤設計,需要9個IO口,而陣列式鍵盤只需要6個IO口,按鍵數量越多,可以節省的IO口就越多,所以陣列式非常適用于需要按鍵較多的情況,本系統需要小按鈕控制,單片機的I / O端口足夠,可直接使用獨立式設計。按鍵電路原理圖如圖3.7所示。
圖3.7 獨立式按鍵電路
鍵盤開關矩陣由多個按鈕組成,是單芯片系統中最常用的輸入裝置,可以將命令,地址和數據輸入給單片機。通常單片機系統采用非編碼鍵盤,非編碼鍵盤由軟件識別的鍵盤上的按鍵,它具有結構簡單,靈活的特點,因此被廣泛應用于微處理器系統。鍵盤按鈕分為接觸式和非接觸式兩種,微控制器應用的按鍵通常由一個機械鍵盤接觸組成。
當開關K沒有被按下時,KeyIn由于通過4.7K的上拉電阻與5V電源連接,因此輸入為高,當K閉合后,KeyIn與GND短接,輸入為低電平。也就是說,程序檢測按鍵是否按下的方法是檢測對應IO由高電平變成低電平,就表示該按鍵被按下。
但是由于按鍵結構采用的是機械觸點,機械觸電在狀態變化的瞬間會產生電壓的波動,這種抖動對于人的感知來說是極快的,根本感覺不到,但對于處理速度達到微秒級甚至納秒級的單片機來說,這就是一段很長的時間了,在這段時間里,所有的電壓波動都能被單片機一一檢測到,單純的只是檢測IO的邊沿變化就會在機械觸電處于不穩定狀態時誤認為是按鍵被按下,而且會出現多次。如果設置為中斷查詢,程序就是頻繁的進入中斷函數。
解決這種問題的方法也很簡單,就是我們通常所說的去抖。原理就是避開機械觸點物理上會產生不穩定電壓的時間段,再去檢測IO口的電平。不管是通過輪詢檢測還是中斷檢測,一旦檢測到按鍵IO口電平狀態相比默認狀態發生改變,則加入一小段延時,一般為幾十個毫秒,延時過后,再去檢測IO的電平,如果又變回默認狀態,就說明這屬于干擾導致的按鍵抖動,不需要處理;反之,則是真正的按鍵被按下的信號。
根據去抖的原理,我們也可以發現,去抖的延時時間也不能設置太長,否則會出現延時結束時按鍵早已經被松開,這樣就導致有按鍵被按下卻無法識別到。按鈕在實際應用中千差萬別,要根據實際按鍵的方式以及硬件電路等多方面因素去靈活運用,但以上的去抖原則是一定要遵循的。
第四章 交通燈的軟件設計在主函數流程中,首先單片機要實現自身寄存器的初始化,定時器初始化以及數碼管和紅綠燈狀態顯示控制,因為在運行過程中,數碼管需要顯示倒計時的時間,單片機可利用定時器T0和T1進行計時,設置定時器中斷,在中斷函數中對時間進行刷新。對于系統按鍵的檢測可以使用主循環輪詢方式,也可以采用外部中斷處理方式。為了更加快速的響應按鍵信息,在程序中通過外部中斷來實現按鍵的檢測。
根據系統程序運行的特點分析,每個交通燈的狀態都是從S1->S2->S3->S4->S1,如此循環往復,這些狀態是固定的,而從一個狀態轉變為另一個狀態的條件也是固定的,所以,在編程時采用狀態機的處理方式是最合適的,狀態機會比普通的邏輯羅列要清楚的多,也不易于出現邏輯上的錯誤,只是需要把各個狀態都考慮清楚,不要留有狀態上的漏洞。如圖4.1所示為系統主函數流程圖。
狀態機是在軟件程序設計中的一個重要的概念。例如,一個按鈕命令,它可以被看作是一個狀態機:一個狀態為A,按下按鈕后切換到B狀態;然后觸發另一個鍵切換到C的狀態,或者返回的狀態。這是關鍵的狀態機的最簡單的例子。實際分析方法比這些要復雜的多,但是這并不影響我們的狀態機的理解。此外,按鍵本身可以被看作是一個狀態機。一個小按鍵,包括:釋放,抖動,閉合,抖動等狀態。
要保證程序高效穩定的運行,除了各個功能模塊程序,還需要一個重要的模塊就是看門狗。在單片機系統中,由于微控制器的操作可能會受到來自外部電磁場的干擾,使程序失控陷入死循環中,程序的正常運行被中斷,由MCU控制的系統不能繼續工作,這將導致整個系統停頓,造成不可預料的后果,因此為了對微控制器的運行狀況進行實時監控,單片機中有一個專門的硬件電路,俗稱“看門狗”。
加入看門狗電路的目的是使微控制器可以實現連續工作,避免進入程序跑飛的死循環,看門狗功能模塊是內嵌在單片機內部的,與單片機的I / O引腳相連,該引腳可以通過程序的控制,定期向單片機引腳送出高電平或低電平。一旦受到干擾,單片機程序跑飛,并陷入一個無限循環,看門狗引腳發送電平的功能不能被執行,這個時候,看門狗電路會由于缺乏由MCU發出的信號,向跟它連在一起的復位電路的引腳發送一個復位信號,使微控制器重新從程序存儲器的起始位置執行代碼,這樣就實現了單芯片自動復位。
以前,看門狗電路需要一個特殊的看門狗芯片連接到單片機來實現,但是這會帶來復雜的電路設計。隨著技術的不斷進步,現在的單片機基本都內置看門狗電路,看門狗定時器寄存器,查看其相應的功能知識點。
單片機的定時器可以根據程序設置的分頻頻率進行計數,當計數達到某個設定值時,可以產生一個中斷事件。比如51單片機外部晶振12M,最大計數兩個字節,也就是65535,計一個數的時間為1/12M秒,就算計數值設為最大值的65535,也不可能計時1s,因此,需要在進入定時中斷后對次數進行累加,比如中斷累計20次,就表示當前計時為20*65535/12M=0.109225s。因此想要延時1s,需要將計數值設置為60000的情況下,進入中斷200次。
MCS-51的工作頻率通常情況為12MHz,機器周期與單片機工作頻率相關,機器周期是12倍的工作頻率,因此一個機器周期的時間長度為12 *(1 / 12MHZ)= 1微秒。我們可以知道每個指令周期的特定數目,這樣我們就可以由一個指令執行的數量確定需要的時間。
中斷程序分為定時器中斷和外部中斷。中斷初始化函數和中斷處理服務函數模塊如下:
/**************定時器0初始化***********************
* 名稱 : Time0_Init()
* 功能 : 定時器的初始化,12MZ晶振,50ms
* 輸入 : 無
* 輸出 : 無
****************************************************/
void Time0_Init()
{
TMOD = 0x11;
TH1 = 0xec;
TL1 = 0x78;
EA = 1;
ET0 = 1;
TR0 = 1;
}
/************外部中斷0 的初始化***********************
* 名稱 : Outside_Init()
* 功能 : 外部中斷0 的初始化
* 輸入 : 無
* 輸出 : 無
*******************************************************/
void Outside_Init(void)
{
EX0 = 1; //開外部中斷0
IT0 = 1; //負邊沿觸發
EA = 1; //開總中斷
}
/*****************定時器1***********************************
* 名稱 : Time1_Int()
* 功能 : 顯示定時器,工作方式1
* 輸入 : 無
* 輸出 : 無
****************************************************************/
void Time1_Int() interrupt 3
{
TH1 = 0xec;
TL1 = 0x78;
TR1=1;
if(key1<=3)
display();
else
ndisplay();
}
中斷0服務程序
/****************外部中斷0 服務函數********************************
* 名稱 : Outside_Int()
* 功能 : 外部中斷0 的中斷處理
* 輸入 : 無
* 輸出 : 無
*******************************************************************/
void Outside_Int(void) interrupt 0
{
EX0 = 0;
delay(30); //對按鍵進行抗干擾處理
if(key1 < 6)
{ key1++;}
else
key1=0;
delay(30);
EX0 = 1;
}
顯示數值 | a | b | c | d | e | f | g | dp | 驅動代碼(16進制) |
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0xFC |
1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0x18 |
2 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0xC6 |
3 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0xE6 |
4 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0xDA |
5 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0x6E |
6 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0x7E |
7 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0xD4 |
8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0xFE |
9 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0xEE |
設計中采用發光二極管作為交通燈來使用,單片機的I/O接口直接和交通燈(發光二極管)連接。在十字路口的四組紅、黃、綠三色交通燈中,東西方向道路上的兩組同色燈連接在一起,南北方向道路上的兩組同色的燈也彼此連接在,受單片機P2.2~P2.7控制。單片機的I/O接口與交通燈電路的具體連接方式為:P2.5~P2.7分別接東西方向的紅、黃、綠共6個放光二極管,P2.2~P2.4分別接南北方向的紅、黃、綠共6個發光二極管。12個發光二極管采用了共陰極的連接方式,因此I/O口輸出高電平時,與之相連的發光二極管會亮,I/O口輸出低電平時,相應的發光二極管會滅。交通燈電路原理圖如下圖所示。
該顯示器選用雙位數碼管來顯示交通燈轉換的剩余時間,根據設計的要求,每個路口需要1個數碼管,這樣就要4個數碼管。我們可以選用共陰型數碼管。四個路口倒計時顯示被置在同一時刻顯示不同的數字。電路如下圖
圖4.3倒計時顯示器電路圖
我們把倒計時顯示器電路圖、單片機、其他硬件連接起來,就有了總的電路圖。以下是交通燈總電路圖和PCB圖。
Proteus軟件是英國Labcenter 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和MPLAB等多種編譯器。本次設計就是用該軟件成功仿真程序運行。
軟件運行后,交通燈開始工作(二極管顯示紅、黃、綠三色燈,LED顯示倒計時),系統自動進入狀態S1:縱向南北主干道方向綠燈亮,橫向東西支干道方向紅燈亮,南北主干道LED倒計時12秒,東西支干道LED倒計時7秒后,系統進入(S1~S2)然后南北方向黃燈亮3秒,東西方向紅燈閃爍。仿真圖片如下。
3秒之后,系統進入S3狀態,縱向南北方向紅燈亮,橫向東西方向綠燈亮,仿真圖如下。
7秒后系統進入轉換階段,縱向南北方向紅燈閃爍,橫向東西方向黃燈亮3秒,仿真圖如下。
圖4.9 轉換階段
在整個系統的調試過程中,由于自身經驗的缺乏,不管是在硬件方面還是軟件方面,都遇到了很多問題,經過各方查閱資料和老師同學的幫助,終于將問題一一解決,并總結了一些經驗教訓。
焊接時首先焊接電源部分的器件,如果發現電源部分工作電壓異常,要立即斷電,檢查焊接線和器件的焊接方向是否正確。確保電源正常后,再焊接電路其他部分,避免其他器件被高電壓損壞。如果焊接一個功能模塊后發現調試不正常時候,首先應該先檢查原理圖連線是否正確,在查看原理圖和焊接的板子是否一致。如果都是正確的,就應該確定原理圖和芯片手冊的引腳對應是否正確,檢查是否有漏焊、虛焊、引腳短路的現象出現。可以利用示波器芯片引腳的電平進行測試,找到問題所在。有時我們可以將現在IO口轉到別的上去看是否是IO口出現問題引起的。在焊接時候最好一起焊接兩個板子進行對比,排除因為人為焊接原因造成錯誤發生。軟件和硬件的調試時相互配合的,如果遇到問題時候不一定都是硬件出現問題造成系統錯誤。
軟件調試首先根據系統的整體要求繪制出系統的程序流程圖,根據程序流程圖里的相關要求,利用KEIL編譯軟件利用C語言對系統硬件進行驅動首先要配置單片機各個寄存器的狀態,配置相關的IO口,調試過程中盡量使用LED燈來觀察程序的運行狀態以判斷單片機IO口是否已根據程序的要求輸出相應的電平。控制繼電器驅動時候要注意電路的控制,以避免外部的輸入干擾對單片機系統造成影響,同時系統運行過程中要加如看門狗,當程序跑飛的時候及時復位單片機,是系統能夠正常的運行,在按鍵檢測電路的時候要注意對按鍵的抖動造成程序誤操作。
通過這次設計,我對所學的專業知識有了更深的理解,尤其是單片機方面。在51單片機方面做了很多的資料方面的學習,掌握了單片機的基本工作的方法,以及焊接調試的流程。在設計過程中,查閱了大量的中外文資料,解決了不少難題,使我在分析問題解決問題的能力方面有了提升,增強了對學習的信心,并對電子專業產生了濃厚的興趣,相信這對我以后的工作和學習有重要的幫助。
本次設計初步實現了51單片機控制十字路口交通等,實現行人與車流的分流的目的。運用了傳統的8位MCU、性能全面、成本造價低、能夠在室溫下安全可靠運行,運行電子制圖軟件和KEIL編程軟件,同時完成系統原理圖和MCU的底層驅動代碼的編寫。能夠在設計過程中完成對電子專業的各個節本技能的強化和所有應用課程的實踐應用,其中包括單片機課程、數字電路、模擬電路、單片機c語言編程的各個專業課程的綜合運用,在設計完成時我對自己本專業的四年所有科目進行的簡單并全面的運行。
系統由于能力和精力的限制,整個系統還存在很多的不足,還可以實現更多的擴展,比如可以加入一些測量道路經過車輛數量的傳感器,根據傳感器的數據可以更加智能的實現對紅綠燈時間的設置,使道路的利用率更高;還可以將單片機通過有線或無線的形式與交通指揮中心實現通信,使指揮中心可以根據實際交通情況實時的調整紅綠燈的時間參數等等,我會在以后的學習中繼續完善知識體系,盡可能的改善不足。隨著單片機技術的進一步發展,這些問題都將被繼續研究解決。
致 謝
經過幾個月資料的查找和對本畢業設計相關知識的學習,已經完成整個系統的設計,在這個畢業設計過程中曝露出我許多的問題,由于對有些專業知識的了解不夠深入,設計有些方面還是不夠完善。在老師的幫助下,解決了遇到的很多設計難題,才使得畢業設計能夠順利的完成。再次對我的指導教師表示深深的感謝,老師在忙碌的工作中,對我畢業設計的進行耐心的指導,從設計最初我查找資料的時候,給我很大幫助讓我在眾多的資料中梳理出需要的知識的重點,在畢業設計的中期我提出系統的設計方案和解決方法,老師對我的設計方案進行了評估,指導我方案中出現的我的問題,并提出了寶貴的經驗。在畢業設計后期對我設計電路和程序進行了指導。使我對單片機硬件電路和軟件程序有了更深入的了解。把我繁瑣的設計變得簡潔、系統功能更合理。深深感受到了張清蓉老師對整個系統全局統籌性很強,使我也從中學到很多在課堂上學不到設計經驗。在此,對張老師的嚴謹的治學態度和對學生負責的態度表示深深欽佩。其次對和我一起做畢設的同學表示深深的感謝,當我遇到問題時候,幫助我解決好多我能力之外的困難,如果沒有他們的幫助我能這么順利的完成我畢業設計。
最后感謝大學所有任課教師,他們在我在學校的四年里耐心的傳授我知識,對我的各個方面能力培養付出太多的艱辛工作。為我在以后的工作中更好的學習打下了堅實的基礎,同時感謝所有的同學們正式有你們鼓勵和支持,才讓我在做畢業設計這段時間不斷改掉缺點,努力的把我的畢業設計認真的完成。
單片機源程序如下:
交通燈全套資料.7z
(5.65 MB, 下載次數: 782)
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |