單片機(jī)控制十字路口交通燈.doc
《單片機(jī)控制十字路口交通燈.doc》由會員分享,可在線閱讀,更多相關(guān)《單片機(jī)控制十字路口交通燈.doc(28頁珍藏版)》請在裝配圖網(wǎng)上搜索。
單片機(jī)原理及應(yīng)用課程設(shè)計題 目: 十字路口交通燈 學(xué) 院: 電氣與信息工程學(xué)院 專 業(yè): 電氣工程及其自動化 姓 名: 學(xué) 號: 指導(dǎo)老師: 完成時間: 成績評定一、指導(dǎo)教師評語二、評分課程設(shè)計成績評定 成績: 指導(dǎo)教師簽字 年 月 日摘要隨著各種交通工具的發(fā)展和交通指揮的需要,第一盞名副其實的三色燈(紅、黃、綠三種標(biāo)志)于1918年誕生。它是三色圓形四面投影器,被安裝在紐約市五號街的一座高塔上,由于它的誕生,使城市交通大為改善。黃色信號燈的發(fā)明者是我國的胡汝鼎,他懷著“科學(xué)救國”的抱負(fù)到美國深造,在大發(fā)明家愛迪生為董事長的美國通用電器公司任職員。一天,他站在繁華的十字路口等待綠燈信號,當(dāng)他看到紅燈而正要過去時,一輛轉(zhuǎn)彎的汽車呼地一聲擦身而過,嚇了他一身冷汗?;氐剿奚?,他反復(fù)琢磨,終于想到在紅、綠燈中間再加上一個黃色信號燈,提醒人們注意危險。他的建議立即得到有關(guān)方面的肯定。于是紅、黃、綠三色信號燈即以一個完整的指揮信號家族,遍及全世界陸、海、空交通領(lǐng)域了。 交通燈控制器設(shè)計主要功能是用單片機(jī)控制LED燈模擬指示。模擬東西南北方向的十字路口交通燈信號控制情況。以89C52單片機(jī)為核心芯片,采用中斷方式實現(xiàn)控制。本模擬系統(tǒng)由單片機(jī)硬/軟件系統(tǒng),兩位8段數(shù)碼管和LED燈顯示系統(tǒng)。和復(fù)位電路控制電路等組成,較好的模擬了交通路面的控制。關(guān)鍵詞:交通燈 單片機(jī) 數(shù)碼管目錄1.概述.12系統(tǒng)總體方案及硬件設(shè)計.2 2.1設(shè)計內(nèi)容.2 2.2 設(shè)計要求.2 2.3 總體設(shè)計思想.2 2.4 設(shè)計參考.2 2.5 知識點準(zhǔn)備.23各模塊設(shè)計.3 3.1設(shè)計項目簡介.3 3.2總體設(shè)計.3 3.3硬件設(shè)計.3 3.4軟件設(shè)計.94軟件仿真.125課程設(shè)計體會.13參考文獻(xiàn).14附錄一程序清單.15附錄二系統(tǒng)原理圖.211概述 自從1858年英國人,發(fā)明了原始的機(jī)械扳手交通燈之后,隨后的一百多年里,交通燈改變了交通路況,也在人們?nèi)粘I钪姓紦?jù)了重要地位,隨著人們社會活動日益增加,經(jīng)濟(jì)發(fā)展,汽車數(shù)量急劇增加,城市道路日漸擁擠,交通燈更加顯示出了它的功能,使得交通得到有效管制,對于交通疏導(dǎo),提高道路導(dǎo)通能力,減少交通事故有顯著的效果。近年來,隨著科技的飛速發(fā)展,電子器件也隨之廣泛應(yīng)用,其中單片機(jī)也不斷深入人民的生活當(dāng)中。本模擬交通燈系統(tǒng)利用單片機(jī)AT89C52作為核心元件,實現(xiàn)了通過信號燈對路面狀況的智能控制。從一定程度上解決了交通路口堵塞、車輛停車等待時間不合理、急車強(qiáng)通等問題。系統(tǒng)具有結(jié)構(gòu)簡單、可靠性高、成本低、實時性好、安裝維護(hù)方便等優(yōu)點,有廣泛的應(yīng)用前景。本模擬系統(tǒng)由單片機(jī)硬/軟件系統(tǒng),兩位8段數(shù)碼管和LED燈顯示系統(tǒng)。和復(fù)位電路控制電路等組成,較好的模擬了交通路面的控制。2 系統(tǒng)總體方案及硬件設(shè)計2.1設(shè)計內(nèi)容交通燈控制器設(shè)計主要功能是用單片機(jī)控制LED燈模擬指示。模擬東西南北方向的十字路口交通燈信號控制情況。以89C52單片機(jī)為核心芯片,采用中斷方式實現(xiàn)控制。(1)數(shù)碼管選用2位共陰極顯示的數(shù)碼管,共4個;(2)東西通行時間為80s,南北通行時間為60s,緩沖時間為3s;2.2 設(shè)計要求 設(shè)計單片機(jī)最小系統(tǒng)(包括復(fù)位按鈕、晶振電路等); 繪制實現(xiàn)本設(shè)計內(nèi)容的硬件電路(原理圖),系統(tǒng)的組成框圖。 相應(yīng)的控制狀態(tài)表; 編寫本課程設(shè)計內(nèi)容的軟件設(shè)計(包含程序流程圖和對程序注釋)。 硬件實驗部分可選用實驗箱測試或Proteus仿真軟件實現(xiàn)。2.3 總體設(shè)計思想(供參考) 利用定時器T0產(chǎn)生每10ms一次的中斷,每100次中斷為1s; 對兩個方向分別顯示紅、綠、黃燈的剩余時間即可; 用MAX7219芯片實現(xiàn)共陰極顯示驅(qū)動; A方向的紅燈時間=方向的綠燈時間+黃燈緩沖時間。2.4 設(shè)計參考交通燈控制器設(shè)計有電源電路、單片機(jī)主控電路、顯示電路、信號燈電路等組成,如圖1所示:2.5 知識點準(zhǔn)備: +5V電源原理及設(shè)計; MAX7219工作原理; 單片機(jī)復(fù)位電路工作原理及設(shè)計(元件選擇的依據(jù)); 單片機(jī)晶振電路工作原理及設(shè)計(元件選擇的依據(jù)); 數(shù)碼管顯示特性、驅(qū)動設(shè)計及應(yīng)用; LM1602液晶顯示屏特性、驅(qū)動設(shè)計及應(yīng)用; 89C51單片機(jī)引腳資源、引腳分配等; 單片機(jī)匯編語言及程序設(shè)計(中斷、延時子程序的設(shè)計)。3各模塊設(shè)計3.1設(shè)計項目簡介功能:交通燈控制器,通過單片機(jī)控制交通燈和數(shù)碼管,實現(xiàn)4路口交通燈的正確亮滅,并能顯示發(fā)亮交通燈發(fā)亮狀態(tài)的剩余時間。東西通行時間為80s,南北通行時間為60s,緩沖時間為3s。類似產(chǎn)品簡介:基于數(shù)字電子技術(shù)設(shè)計的交通燈控制器:元器件多而復(fù)雜,連線復(fù)雜易出錯,設(shè)計困難,且功耗較大,不經(jīng)濟(jì),不利于節(jié)約環(huán)保?;赑LC技術(shù)設(shè)計的交通燈控制器:設(shè)計程序簡單易懂,但價格較貴,不經(jīng)濟(jì)。項目特色:通過單片機(jī)控制,進(jìn)行模塊化處理,體積小,功耗低,元器件少且簡單,價格實惠,功能齊全,能夠?qū)崿F(xiàn)正常顯示,而不會出現(xiàn)4路口交通燈混亂的情況,時間顯示正常。3.2總體設(shè)計總體設(shè)計模式圖:AT89C52單片機(jī)控制中心MAX7219控制模塊路口數(shù)字顯示模塊4路口交通燈模塊用一片AT89C52單片機(jī)控制4路口交通燈的亮滅。單片機(jī)發(fā)送地址、數(shù)據(jù)信息給MAX7219,通過MAX7219控制數(shù)碼管的時間顯示。3.3硬件設(shè)計硬件原理圖:晶振模塊復(fù)位模塊塊數(shù)字顯示模塊交通燈模塊MAX7219模塊單片機(jī)中心模塊電路圖:硬件選型及相關(guān)依據(jù):AT89C52:4組8位I/O輸入/輸出端口,可滿足控制所需I/O口數(shù)目要求??赏饨訒r鐘電路,有復(fù)位管腳,接復(fù)位電路可實現(xiàn)復(fù)位功能。接5V高電平,功耗小,價格低。MAX7219:串行輸入,16位并行輸出,可控制8位八段數(shù)碼管顯示。滿足設(shè)計中的四位控制要求。4組2位共陰數(shù)碼管:4路口兩位數(shù)顯示,滿足所需,易實現(xiàn)控制。4個LED-GREEN:10mA額定電流,2.2V額定電壓,用于模擬十字路口綠燈亮滅顯示。4個LED-YELLOW:10mA額定電流,2.0V額定電壓,用于模擬十字路口黃燈亮滅顯示。4個LED-RED:10mA額定電流,2.0V額定電壓,用于模擬十字路口紅燈亮滅顯示。4個280電阻、8個300電阻:由VCC=V+IR,(VCC:5V;I:LED燈額定電流;V:LED燈額定電壓)計算出電阻大小。9K電阻1個:MAX7219的18管腳接高電平時串聯(lián)電阻。12MHZ晶振1個、30pf電容2個:根據(jù)經(jīng)驗,12M晶振與2個30p電容并聯(lián)構(gòu)成外部時鐘振蕩電路。10K電阻1個、1K電阻1個、10uf電解電容1個、1個按鍵:構(gòu)成單片機(jī)復(fù)位電路。電容放電時間=RC=10K10uf=0.1s21/12M=s(2個時鐘周期),即電容放電時間大于2倍的時鐘周期,即可實現(xiàn)復(fù)位。AT89C52簡介:AT89C52是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C52是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。主要特性:與MCS-51 兼容 ;4K字節(jié)可編程閃爍存儲器 ;壽命:1000寫/擦循環(huán);數(shù)據(jù)保留時間:10年;全靜態(tài)工作:0Hz-24Hz;三級程序存儲器鎖定;128*8位內(nèi)部RAM;32可編程I/O線;兩個16位定時器/計數(shù)器;5個中斷源;可編程串行通道;低功耗的閑置和掉電模式;片內(nèi)振蕩器和時鐘電路。MAX7219芯片簡介:MAX7219 是MAXIM 公司生產(chǎn)的串行輸入/輸出共陰極數(shù)碼管顯示驅(qū)動芯片,一片MAX7219 可驅(qū)動8 個7 段(包括小數(shù)點共8 段)數(shù)字LED、LED 條線圖形顯示器、或64 個分立的LED 發(fā)光二級管。該芯片具有10MHz 傳輸率的三線串行接口可與任何微處理器相連,只需一個外接電阻即可設(shè)置所有LED 的段電流。它的操作很簡單,MCU 只需通過模擬SPI 三線接口就可以將相關(guān)的指令寫入MAX7219 的內(nèi)部指令和數(shù)據(jù)寄存器,同時它還允許用戶選擇多種譯碼方式和譯碼位。此外它還支持多片7219 串聯(lián)方式,這樣MCU 就可以通過3根線(即串行數(shù)據(jù)線、串行時鐘線和芯片選通線)控制更多的數(shù)碼管顯示。MAX7219 的外部引腳分配如圖1 所示及內(nèi)部結(jié)構(gòu)如上圖所示。各引腳的功能為:DIN:串行數(shù)據(jù)輸入端DOUT:串行數(shù)據(jù)輸出端,用于級連擴(kuò)展LOAD:裝載數(shù)據(jù)輸入CLK:串行時鐘輸入DIG0DIG7:8 位LED 位選線,從共陰極LED 中吸入電流SEG ASEG G DP 7 段驅(qū)動和小數(shù)點驅(qū)動ISET: 通過一個10k 電阻和Vcc 相連,設(shè)置段電流MAX7219 有下列幾組寄存器: 譯碼控制寄存器、亮度控制寄存器、掃描界限寄存器、關(guān)斷模式寄存器、測試控制寄存器。編程時只有正確操作這些寄存器,MAX7219 才可工作。MAX7219讀寫時序說明:MAX7129 是SPI 總線驅(qū)動方式。它不僅要向寄存器寫入控制字,還需要讀取相應(yīng)寄存器的數(shù)據(jù)。要想與MAX7129 通信,首先要先了解MAX7129 的控制字。MAX7129 的控制字格式如下圖。如圖,工作時,MAX7219 規(guī)定一次接收16 位數(shù)據(jù),在接收的16 位數(shù)據(jù)中:D15D12 可以與操作無關(guān),可以任意寫入,D11D8 決定所選通的內(nèi)部寄存器地址,D7D0 為待顯示數(shù)據(jù)或是初始化控制字。在CLK 脈沖作用下,DIN 的數(shù)據(jù)以串行方式依次移入內(nèi)部16 位寄存器,然后在一個LOAD 上升沿作用下,鎖存到內(nèi)部的寄存器中。注意在接收時,先接收最高位D16,最后是D0,因此,在程序發(fā)送時必須先送高位數(shù)據(jù),在循環(huán)移位。工作時序圖見下圖。由于52 是8 位單片機(jī)故需要分兩次來送數(shù)據(jù)。數(shù)據(jù)讀寫時序圖單片機(jī)復(fù)位電路:上電自動復(fù)位原理:在電路圖中,電容的的大小是10uF,電阻的大小是10k。所以根據(jù)公式,可以算出電容充電到電源電壓的0.7倍(單片機(jī)的電源是5V,所以充電到0.7倍即為3.5V),需要的時間是10K*10UF=0.1S。也就是說在啟動的0.1S內(nèi),電容兩端的電壓時在03.5V增加。這個時候10K電阻兩端的電壓為從51.5V減少(串聯(lián)電路各處電壓之和為總電壓)。所以在0.1S內(nèi),RST引腳所接收到的電壓是5V1.5V。在5V正常工作的51單片機(jī)中小于1.5V的電壓信號為低電平信號,而大于1.5V的電壓信號為高電平信號。所以在開機(jī)0.1S內(nèi),單片機(jī)系統(tǒng)自動復(fù)位(RST引腳接收到的高電平信號時間為0.1S左右)。按鍵按下的時候復(fù)位原理:在單片機(jī)啟動0.1S后,電容C兩端的電壓持續(xù)充電為5V,這是時候10K電阻兩端的電壓接近于0V,RST處于低電平所以系統(tǒng)正常工作。當(dāng)按鍵按下的時候,開關(guān)導(dǎo)通,這個時候電容兩端形成了一個回路,電容被短路,所以在按鍵按下的這個過程中,電容開始釋放之前充的電量。隨著時間的推移,電容的電壓在0.1S內(nèi),從5V釋放到變?yōu)榱?.5V,甚至更小。根據(jù)串聯(lián)電路電壓為各處之和,這個時候10K電阻兩端的電壓為3.5V,甚至更大,所以RST引腳又接收到高電平。單片機(jī)系統(tǒng)自動復(fù)位。數(shù)碼管簡介:數(shù)碼管也稱LED數(shù)碼管,數(shù)碼管按段數(shù)可分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個發(fā)光二極管單元(多一個小數(shù)點顯示);按能顯示多少個(8)可分為1位、2位、3位、4位、5位、6位、7位等數(shù)碼管。按發(fā)光二極管單元連接方式可分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管,共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮,當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽極為高電平時,相應(yīng)字段就點亮,當(dāng)某一字段的陽極為低電平時,相應(yīng)字段就不亮。 驅(qū)動方式:分靜態(tài)顯示驅(qū)動和動態(tài)顯示驅(qū)動兩種方式。靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機(jī)的I/O端口進(jìn)行驅(qū)動,或者使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動。數(shù)碼管動態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)碼管的8個顯示筆劃a,b,c,d,e,f,g,dp的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是哪個數(shù)碼管會顯示出字形,取決于單片機(jī)對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點亮?xí)r間為12ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。3.4軟件設(shè)計首先對程序進(jìn)行模塊化處理,根據(jù)要求的4路口交通燈的具體功能,對程序進(jìn)行模塊化處理。根據(jù)不同功能的分配可以將程序劃分為以下幾個模塊:主模塊、MAX7219初始化模塊、初始化模塊(主函數(shù)初始化)、定時器模塊、MAX7219地址和數(shù)據(jù)發(fā)送模塊、數(shù)字變化處理模塊。由子模塊的功能,可以設(shè)計繪制出各模塊的程序流程圖。各子模塊之間可能會有聯(lián)系,也可能沒有聯(lián)系,最后由主模塊對其進(jìn)行必要的匯總處理,實現(xiàn)要求的功能。流程圖繪制完畢后,可以將流程圖作為編程的依據(jù),進(jìn)行編程操作。如此,可使程序簡化處理,減少錯誤,提高程序的編寫效率。給自己帶來不少的方便之處。程序流程圖:1、主模塊:2、MAX7219初始化模塊:3、初始化模塊:4、定時器模塊:5、MAX7219地址和數(shù)據(jù)發(fā)送模塊:6、數(shù)字變化處理模塊:本著簡潔清晰明了易懂的目的,對程序模塊化處理,不同模塊執(zhí)行不同的功能。就如同多元化的大家庭一樣,進(jìn)行不同的分工,個分工之間也可能存在聯(lián)系。最后,由主模塊進(jìn)行總的調(diào)用處理,從而將零散的分工匯聚一起,共同實現(xiàn)最終的目的。模塊說明:主模塊:采用順序循環(huán)程序設(shè)計,進(jìn)行匯總處理,實現(xiàn)最終的目的。即實現(xiàn)交通等控制器功能,東西通行時間為80s,南北通行時間為60s,緩沖時間為3s。MAX7219初始化模塊:順序調(diào)用MAX7219地址、數(shù)據(jù)發(fā)送模塊,對MAX7219進(jìn)行初始化處理。初始化模塊:采用順序程序?qū)Χ〞r器中斷初始化,開中斷定時器進(jìn)行計時。并對相應(yīng)變量和交通燈做初始化出處理。數(shù)碼管數(shù)字顯示處理模塊:調(diào)用數(shù)字變化處理模塊,得到正確的跳變時間,根據(jù)時間的變化做出相應(yīng)變化,并作出相應(yīng)的處理。調(diào)用MAX7219地址和數(shù)據(jù)發(fā)送模塊使數(shù)字信息在數(shù)碼管上正確地顯示出來。MAX7219地址和數(shù)據(jù)發(fā)送模塊:根據(jù)MAX7219地址、數(shù)據(jù)發(fā)送時序圖,對MAX7219做相應(yīng)處理,使其能夠發(fā)送一位地址和數(shù)據(jù)。數(shù)字變化處理函數(shù):當(dāng)數(shù)字變量變?yōu)?時,相應(yīng)方向的數(shù)字變化標(biāo)志增1,并根據(jù)數(shù)字變化標(biāo)志當(dāng)前值,使數(shù)字變量做出相應(yīng)的變化,并使相應(yīng)方向上相應(yīng)的燈發(fā)亮。以實現(xiàn)數(shù)字變量從0的正確跳轉(zhuǎn)和交通燈的正確發(fā)亮。定時器模塊:對定時器重新賦初值,并使時間標(biāo)志t加1計時。4軟件仿真課程設(shè)計體會 一周的課程設(shè)計結(jié)束了,在這次的課程設(shè)計中不僅檢驗了我所學(xué)習(xí)的知識,也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計過程中,與同學(xué)分工設(shè)計,和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。學(xué)會了合作,學(xué)會了運(yùn)籌帷幄,學(xué)會了寬容,學(xué)會了理解,也學(xué)會了做人與處世。 課程設(shè)計是我們專業(yè)課程知識綜合應(yīng)用的實踐訓(xùn)練,著是我們邁向社會,從事職業(yè)工作前一個必不少的過程“千里之行始于足下”,通過這次課程設(shè)計,我深深體會到這句千古名言的真正含義我今天認(rèn)真的進(jìn)行課程設(shè)計,學(xué)會腳踏實地邁開這一步,就是為明天能穩(wěn)健地在社會大潮中奔跑打下堅實的基礎(chǔ) 通過這次單片機(jī)設(shè)計,本人在多方面都有所提高。通過這次單片機(jī)設(shè)計,綜合運(yùn)用本專業(yè)所學(xué)課程的理論和生產(chǎn)實際知識進(jìn)行一次DXP制板設(shè)計工作的實際訓(xùn)練從而培養(yǎng)和提高學(xué)生獨立工作能力,鞏固與擴(kuò)充了單片機(jī)設(shè)計等課程所學(xué)的內(nèi)容,提高了計算能力,繪圖能力,熟悉了規(guī)范和標(biāo)準(zhǔn),同時各科相關(guān)的課程都有了全面的復(fù)習(xí),獨立思考的能力也有了提高。 在這次設(shè)計過程中,體現(xiàn)出自己單獨設(shè)計單片機(jī)的能力以及綜合運(yùn)用知識的能力,體會了學(xué)以致用、突出自己勞動成果的喜悅心情,從中發(fā)現(xiàn)自己平時學(xué)習(xí)的不足和薄弱環(huán)節(jié),從而加以彌補(bǔ)。 感謝對我?guī)椭^的同學(xué)們,謝謝你們對我的幫助和支持,讓我感受到同學(xué)的友誼。 由于本人的設(shè)計能力有限,在設(shè)計過程中難免出現(xiàn)錯誤,懇請老師們多多指教,我十分樂意接受你們的批評與指正,本人將萬分感謝。參考文獻(xiàn)1 張毅剛,彭喜元,彭宇等單片機(jī)原理及應(yīng)用M.北京:高等教育出版社,2010.53 趙茂泰智能儀器原理及應(yīng)用M.北京:電子工業(yè)出版社,20094 劉江海EDA技術(shù)M北京:華中科技大學(xué)出版社,20065 郭天祥51單片機(jī)C語言教程M北京:電子工業(yè)出版社,20066 張忠梅單片機(jī)的C語言應(yīng)用程序設(shè)計M.北京:北京航空航天大學(xué)出版社,2006 附1:程序代碼#include#define unint unsigned int#define unchar unsigned char/管腳定義sbit DIN=P30;/MAX7219 串行數(shù)據(jù) 1 腳sbit LOAD=P31; /MAX7219 片選 12sbit CLK=P32;/MAX7219 串行時鐘 13 腳sbit P10=P10;sbit P11=P11;sbit P12=P12;sbit P15=P15;sbit P16=P16;sbit P17=P17;/寄存器宏定義#define DECODE_MODE 0x09 /譯碼控制寄存器#define INTENSITY 0x0A/亮度控制寄存器#define SCAN_LIMIT 0x0B /掃描界限寄存器#define SHUT_DOWN 0x0C/關(guān)斷模式寄存器#define DISPLAY_TEST 0x0F/測試控制寄存器/定義全局變量unchar t,dte,dts;/t為1ms脈沖產(chǎn)生標(biāo)志,dte、dts分別為東西方向、南北方向數(shù)字變化標(biāo)志unchar Easw,Soun; /東西、南北方數(shù)碼管數(shù)字變量/函數(shù)聲明void Write7219(unchar address,unchar dat); /MAX7219控制處理函數(shù)聲明void Display(); /數(shù)碼管數(shù)字顯示處理函數(shù)聲明void Initial(void); /MAX7219初始化函數(shù)聲明void Init(void); /定時器初始化函數(shù)聲明/*主函數(shù):交通等控制器,東西通行時間為80s,南北通行時間為60s,緩沖時間為3s。*/void main(void)Initial(); /MAX7219 初始化Init(); /變量初始化while(1)Display(); /調(diào)用顯示函數(shù)/*MAX7219初始化函數(shù):MAX7219 初始化,設(shè)置MAX7219 內(nèi)部的控制寄存器*/void Initial(void)Write7219(SHUT_DOWN,0x01); /開啟正常工作模式(0xX1)Write7219(DISPLAY_TEST,0x00); /選擇工作模式(0xX0)Write7219(DECODE_MODE,0xff);/選用全譯碼模式Write7219(SCAN_LIMIT,0x03); /選用前4只LEDWrite7219(INTENSITY,0x04); /設(shè)置初始亮度/*初始化函數(shù):設(shè)置定時/計數(shù)器0工作方式1,設(shè)置50ms定時時間,并進(jìn)行初始化。開總中斷、定時/計數(shù)器0,初始化所需全局變量 */void init()TMOD = 0X01;/設(shè)置定時器0工作方式1TH0 = 0X4C;/定時器0高八位初始化TL0 = 0X00;/定時器0低八位初始化ET0 = 1;/定時器0中斷允許TR0 = 1;/開定時器0EA = 1;/開總中斷t = 0;dte = 0;dts = 0;Easw = 79;/東西方向數(shù)碼管初值79Soun = 82;/南北方向數(shù)碼管初值82P1 = 0X24;/初始化東西方向亮綠燈/初始化南北方向亮紅燈/*數(shù)碼管數(shù)字顯示處理函數(shù):通過定時器精確定時,動態(tài)地顯示交通燈時間的變化 */void Display()unchar i; unchar Ewsn4=0;/定義一個只含四個元素的一位數(shù)組void Digit_deal();/數(shù)字變化處理函數(shù)聲明if(t = 20)/t=20時,定時1秒,Easw、Soun做自減t= 0;Easw-;Soun-;Digit_deal();/數(shù)字變化處理函數(shù)Ewsn0 = Easw/10;/東西顯示數(shù)字十位Ewsn1 = Easw%10;/東西顯示數(shù)字個位Ewsn2 = Soun/10;/南北顯示數(shù)字十位Ewsn3 = Soun%10;/南北顯示數(shù)字個位for(i=1;i5;i+)Write7219(i,Ewsni-1);/4位共陰數(shù)碼管顯示/*地址、數(shù)據(jù)發(fā)送子程序:MAX7219地址和數(shù)據(jù)的發(fā)送,以確保數(shù)碼管的正常顯示*/void Write7219(unchar address,unchar dat)unchar i;LOAD=0;/拉低片選線,選中器件/發(fā)送地址for (i=0;i8;i+)/移位循環(huán)8 次CLK=0;/清零時鐘總線DIN=(bit)(address&0x80);/每次取高字節(jié)address=1;/左移一位CLK=1;/時鐘上升沿,發(fā)送地址/發(fā)送數(shù)據(jù)for (i=0;i8;i+)CLK=0;DIN=(bit)(dat&0x80);dat=1;CLK=1;/時鐘上升沿,發(fā)送數(shù)據(jù)LOAD=1;/發(fā)送結(jié)束,上升沿鎖存數(shù)據(jù)/*數(shù)字變化處理函數(shù):對東西南北方向數(shù)字變換時值的處理*/void Digit_deal()/東西方向數(shù)字變換if(!Easw)/Easw為0時,dte加1dte +;if(Easw = 0) & (dte = 1)/Easw為0且dte為1時,東西方向數(shù)字置為3,亮黃燈Easw = 3;P16 = 1;P15 = 0;P17 = 0;if(Easw = 0) & (dte = 2)/Easw為0且dte為2時,東西方向數(shù)字置為63,亮紅燈Easw = 63;P16 = 0;P15 = 0;P17 = 1;if(Easw = 0) & (dte = 3)/Easw為0且dte為3時,東西方向數(shù)字置為79,dte置0,亮綠燈Easw = 79;dte = 0;P16 = 0;P15 = 1;P17 = 0;/南北方向數(shù)字變換 if(!Soun)/Soun為0時,dts加1dts +;/Soun為0且dts為1時,南北方向數(shù)字置為60,亮綠燈if(Soun = 0) & (dts = 1)Soun = 60;P10 = 1;P11 = 0;P12 = 0; if(Soun = 0) & (dts = 2)/Soun為0且dts為2時,南北方向數(shù)字置為3,亮黃燈 Soun = 3;P10 = 0;P11 = 1;P12 = 0;if(Soun = 0) & (dts = 3)/Soun為0且dts為3時,南北方向數(shù)字置為82,dts置0,亮紅燈Soun = 82;dts = 0;P10 = 0;P11 = 0;P12 = 1; /*定時器0中斷函數(shù):產(chǎn)生50ms脈沖,實現(xiàn)1s鐘時間定時*/void Time0() interrupt 1TH0 = 0X4C;TL0 = 0X00;t+;附2 系統(tǒng)原理圖致謝 感謝這幾個星期以來老師的答題解疑和耐心輔導(dǎo);感謝實驗室的管理員的指導(dǎo);感謝同學(xué)的幫助并一起討論解決問題的方法。通過這次實際的動手操作,我受益匪淺,了解到了認(rèn)真鉆研的意義,對于以后在學(xué)習(xí)和工作中遇到的難題會以更加積極端正的的心態(tài)和刻苦鉆研的精神去對待。- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機(jī) 控制 十字路口 交通燈
鏈接地址:http://www.szxfmmzy.com/p-6647148.html