單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)基于單片機(jī)的現(xiàn)代交通燈的設(shè)計(jì)_第1頁
單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)基于單片機(jī)的現(xiàn)代交通燈的設(shè)計(jì)_第2頁
單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)基于單片機(jī)的現(xiàn)代交通燈的設(shè)計(jì)_第3頁
單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)基于單片機(jī)的現(xiàn)代交通燈的設(shè)計(jì)_第4頁
單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)基于單片機(jī)的現(xiàn)代交通燈的設(shè)計(jì)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、序 號11單片機(jī)原理及接口技術(shù)課程設(shè)計(jì)說明書題 目: 基于單片機(jī)的現(xiàn)代交通燈的設(shè)計(jì) 學(xué) 院: 國際教育學(xué)院 班 級: 機(jī)電141班 學(xué) 號: 4 姓 名: 指導(dǎo)教師: 日 期: 2017年 9月 30 日 河南科技大學(xué)2017 至 2018 學(xué)年 第 一 學(xué)期課程設(shè)計(jì)任務(wù)書 學(xué)生姓名: 班級: 機(jī)電141班 學(xué)號:1414250101141、 設(shè)計(jì)題目基于單片機(jī)的現(xiàn)代交通燈的設(shè)計(jì)2、 設(shè)計(jì)要求設(shè)計(jì)任務(wù):1. 設(shè)計(jì)一款帶左轉(zhuǎn)、直行、右轉(zhuǎn)三種通行綠燈,參見實(shí)物效果圖; 2. 帶緊急按鈕功能,當(dāng)緊急按鈕按下時(shí),所有方向均亮起紅燈; 3. 夜間運(yùn)行模式按鈕,按下時(shí),所有方向黃燈閃爍; 4* 可更在線修

2、改紅綠燈等待時(shí)間; 5* 實(shí)現(xiàn)顯示倒計(jì)時(shí)功能; 6 其他功能(創(chuàng)新部分)提示: 1. proteus里的traffic模塊為傳統(tǒng)交通燈模型(只有紅、綠、黃三色); 現(xiàn)可用單管led(或led點(diǎn)陣)來取代左右轉(zhuǎn)指示,或直行指示。2.實(shí)物效果圖 指導(dǎo)教師: 日期: 2017年 9月 4日目 錄課程設(shè)計(jì)任務(wù)書11設(shè)計(jì)目的12設(shè)計(jì)思路13設(shè)計(jì)過程13.1 硬件電路設(shè)計(jì)13.2 單片機(jī)電源電路23.3 振蕩電路設(shè)計(jì)33.4 復(fù)位電路設(shè)計(jì)33.5 顯示電路設(shè)計(jì)33.6 中斷系統(tǒng)43.7功能控制電路設(shè)計(jì)33.8初值輸入電路設(shè)計(jì)33.9報(bào)警電路設(shè)計(jì)34設(shè)計(jì)仿真74.1 proteus仿真軟件簡介74.2 pr

3、oteus仿真軟件的使用84.3 proteus仿真過程95 總結(jié)10參考文獻(xiàn)10附錄:單片機(jī)程序111設(shè)計(jì)目的1.每個(gè)方向具有綠燈左拐、右拐、直行,人行道藍(lán)燈,提示紅燈、黃燈6種通行指示;2.數(shù)碼管顯示倒計(jì)時(shí);3.在緊急情況下按下緊急模式按鈕所有路口均亮紅燈,蜂鳴器報(bào)警提醒;4.夜間按下夜間模式按鈕,所有方向的黃燈閃爍;5.普通模式下按下初值設(shè)定按鈕可修改紅綠燈等待間隔時(shí)間;6.數(shù)碼管顯示紅燈倒計(jì)時(shí);7.創(chuàng)新功能: (1)倒計(jì)時(shí)到3s時(shí)蜂鳴器鳴叫;(2)緊急模式下蜂鳴器報(bào)警;(3)普通模式、緊急模式、夜間模式可相互跳轉(zhuǎn),不用重新復(fù)位。2設(shè)計(jì)思路1) 設(shè)計(jì)硬件電路2) 設(shè)計(jì)電源電路3) 設(shè)計(jì)振

4、蕩電路4) 設(shè)計(jì)復(fù)位電路5) 設(shè)計(jì)顯示電路6) 設(shè)計(jì)中斷系統(tǒng)7) 設(shè)計(jì)功能控制電路8) 設(shè)計(jì)初值輸入電路9) 設(shè)計(jì)報(bào)警電路3設(shè)計(jì)過程3.1硬件電路設(shè)計(jì)硬件電路由at89c51、max7219、4個(gè)2位共陰數(shù)碼管、led燈、s8050三極管、4×4矩陣鍵盤等組成。主控制器采用at89c51,是atmel公司生產(chǎn)的一款性能穩(wěn)定的8位單片機(jī),at89c51具有1個(gè)8kb的flash程序存儲器,1個(gè)512字節(jié)的ram,4個(gè)8位的雙向可位尋址i/o端口,3個(gè)16位定時(shí)、計(jì)數(shù)器及1個(gè)串行口和6個(gè)二級中斷結(jié)構(gòu)。單片機(jī)的p0口用于控制南北及東西的通行燈, p1.0-p1.2口用于控制max7219驅(qū)

5、動(dòng)4組2位led數(shù)碼管,鍵盤賦值采用p2口,蜂鳴器報(bào)警使用p1.3,夜間模式使用p1.5。它們之間的聯(lián)系如(圖3-1)所示:at89c51 南北通行燈(2組)東西通行燈(2組)2位led燈顯示(4組)鍵盤輸入上電復(fù)位振蕩電路驅(qū)動(dòng)max7219蜂鳴器報(bào)警電路圖3-1-1 硬件電路聯(lián)系圖 圖3-1-2 單片機(jī)最小系統(tǒng)何謂單片機(jī)最小系統(tǒng)?實(shí)際上是以最小的外圍電路就能讓單片機(jī)正常工作,這樣的電路支持成為單片機(jī)最小系統(tǒng)電路。一般情況下,單片機(jī)的最小系統(tǒng)由電源供電、晶振電路及復(fù)位電路組成。3.2 單片機(jī)電源電路電源電路不單單是為單片機(jī)運(yùn)行提供工作電壓,還需要對單片機(jī)的外圍電路提供工作電源。這里提供2種電源

6、供電方案:1) usb接口供電具有usb接口的設(shè)備一般工作電壓都為5v。計(jì)算機(jī)上的usb接口(圖3-2)可以輸出穩(wěn)定的+5v電壓,最大額定電流為500ma,足以滿足本設(shè)計(jì)的要求。需要注意電路不能出現(xiàn)短路,以免損壞電腦的usb接口。 圖3-2-1 usb接口要注意,接口上的電源為四只引腳的最旁邊的兩個(gè),而中間的兩個(gè)引腳是usb的差分?jǐn)?shù)據(jù)線,在本設(shè)計(jì)中不需要使用。2) 7805穩(wěn)壓管電路電源電路的設(shè)計(jì)也可使用7805的穩(wěn)壓三極管ic,該ic只有三條引腳輸出,分別是輸入端、接地端和輸出端。電源所需的外圍元件極少,電路內(nèi)部還有過流、過熱及調(diào)整管的保護(hù)電路,使用起來可靠、方便,而且價(jià)格便宜。3.3 振蕩

7、電路設(shè)計(jì)圖3-3振蕩電路 單片機(jī)的運(yùn)行需要一個(gè)時(shí)鐘頻率,類似我們的計(jì)算機(jī)的cpu主頻的高低,現(xiàn)在計(jì)算機(jī)的cpu一般用ghz來左單位。而我們的51單片機(jī)常用到的時(shí)鐘頻率有12mhz,11.0592mhz,這些時(shí)鐘頻率都是依靠外部晶振產(chǎn)生的。晶振連接到單片機(jī)的xtal1、xtal2引腳處。電路上的晶振旁有兩個(gè)無極性電容,容量為22pf。這兩個(gè)電容稱晶振的負(fù)載電容,分別接在晶振的兩個(gè)腳上和對地的電容,一般在幾十皮發(fā),它會影響到晶振的諧振頻率和輸出幅度。 晶振的負(fù)載電容=(cd*cg)/(cd+cg)+cic+c (3.1) 式中cd,cg為分別接在晶振的兩個(gè)腳上和對地的電容,cic(集成電路內(nèi)部電容

8、)+c(pcb上電容)經(jīng)驗(yàn)值為3至5pf。設(shè)計(jì)需要考慮到串行通信的使用,為了減少誤碼率提高通信質(zhì)量,因此選用11.059mhz晶振。3.4復(fù)位電路設(shè)計(jì)當(dāng)單片機(jī)上電后,通過復(fù)位電路(圖3-4)使得單片機(jī)的pc指針復(fù)位到0000h。這時(shí),單片機(jī)就從0000h地址開始執(zhí)行代碼。理論上51單片機(jī)的復(fù)位需要12個(gè)時(shí)鐘周期的高電平,系統(tǒng)中使用一個(gè)0.1uf極性電容和1k電阻組成的復(fù)位電路。系統(tǒng)通電后,電容開始充電,此時(shí)單片機(jī)復(fù)位引腳輸入的是高電平。當(dāng)電容充滿電后,復(fù)位引腳輸入變?yōu)榈碗娖剑瑔纹瑱C(jī)完成復(fù)位,開始從0000h執(zhí)行代碼。復(fù)位電路延時(shí)時(shí)間計(jì)算公式如下:t = c*r t = 10*(10-6) *

9、(103) = 100 ms (3.2) 圖3-4 單片機(jī)復(fù)位電路3.5 顯示電路設(shè)計(jì)設(shè)計(jì)4組交通指示燈。紅燈表示停止通行;黃燈表示等一等,綠燈分別實(shí)現(xiàn)左轉(zhuǎn)、直行、右轉(zhuǎn),藍(lán)燈亮表示人行道通行;設(shè)計(jì)4組2位led數(shù)碼顯示電路,用來表示允許停車或通行的時(shí)間,與max7219串行輸入/輸出共陰極顯示驅(qū)動(dòng)器相接的。max7219是一種集成化的串行輸入/輸出共陰極顯示驅(qū)動(dòng)器,它連接微處理器與8位數(shù)字的7段數(shù)字led顯示,也可以連接條線圖顯示器或者64個(gè)獨(dú)立的led。其上包括一個(gè)片上的b型bcd編碼器、多路掃描回路,段字驅(qū)動(dòng)器,而且還有一個(gè)8*8的靜態(tài)ram用來存儲每一個(gè)數(shù)據(jù)。 圖3-5-1 max721

10、9引腳圖圖3-5-2 交通燈布局圖3.6 中斷電路89c51具備完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)器/計(jì)數(shù)器中斷,可以滿足不同的控制要求,并具有優(yōu)先級別選擇。3.7 功能控制電路的設(shè)計(jì)按鈕s1實(shí)現(xiàn)復(fù)位功能;k3實(shí)現(xiàn)在線時(shí)間調(diào)整;按鈕k2實(shí)現(xiàn)夜間模式;k4實(shí)現(xiàn)緊急模式。 圖3-7 功能按鈕3.8 初值輸入電路的設(shè)計(jì)初始化的時(shí)候修改紅綠燈通行時(shí)間,使用4*4矩陣鍵盤進(jìn)行設(shè)置,接單片機(jī)p2口。圖3-8 4x4矩陣鍵盤3.9 報(bào)警電路的設(shè)計(jì)報(bào)警電路,使用5v有源蜂鳴器,采用s8050三極管驅(qū)動(dòng),原理電路如下; 圖3-9報(bào)警示意圖4設(shè)計(jì)仿真 通過proteus軟件對系統(tǒng)硬件設(shè)計(jì)和軟件設(shè)計(jì)結(jié)合仿真,從

11、仿真的效果檢查系統(tǒng)設(shè)計(jì)存在的錯(cuò)誤或者缺陷,這樣可以比較有針對性地進(jìn)行系統(tǒng)硬件設(shè)計(jì)和軟件設(shè)計(jì)的修改。4.1 proteus仿真軟件簡介proteus軟件是英國labcenter electronics公司出版的eda工具軟件(該軟件中國總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它eda工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。proteus是世界上著名的eda工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到p

12、cb設(shè)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、pcb設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺,其處理器模型支持8051、hc11、pic10/12/16/18/24/30/dspic33、avr、arm、8086和msp430等,2010年即將增加cortex和dsp系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持iar、keil和mplab等多種編譯器。在proteus繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.hex,可以在proteus的原理圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過程。proteus 是單片機(jī)課堂教學(xué)的先進(jìn)助手。proteus不僅可

13、將許多單片機(jī)實(shí)例功能形象化,也可將許多單片機(jī)實(shí)例運(yùn)行過程形象化。前者可在相當(dāng)程度上得到實(shí)物演示實(shí)驗(yàn)的效果,后者則是實(shí)物演示實(shí)驗(yàn)難以達(dá)到的效果。它的元器件、連接線路等卻和傳統(tǒng)的單片機(jī)實(shí)驗(yàn)硬件高度對應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調(diào)試、運(yùn)行結(jié)果等。 課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)是學(xué)生走向就業(yè)的重要實(shí)踐環(huán)節(jié)。由于proteus提供了實(shí)驗(yàn)室無法相比的大量的元器件庫,提供了修改電路設(shè)計(jì)的靈活性、提供了實(shí)驗(yàn)室在數(shù)量、質(zhì)量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)學(xué)生實(shí)踐精神、創(chuàng)造精神的平臺。 隨著科技的發(fā)展,“計(jì)算機(jī)仿真技術(shù)”已成為許多設(shè)計(jì)部門

14、重要的前期設(shè)計(jì)手段。它具有設(shè)計(jì)靈活,結(jié)果、過程的統(tǒng)一的特點(diǎn)。可使設(shè)計(jì)時(shí)間大為縮短、耗資大為減少,也可降低工程制造的風(fēng)險(xiǎn)。相信在單片機(jī)開發(fā)應(yīng)用中proteus也能茯得愈來愈廣泛的應(yīng)用。 使用proteus 軟件進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計(jì), 是虛擬仿真技術(shù)和計(jì)算機(jī)多媒體技術(shù)相結(jié)合的綜合運(yùn)用,有利于培養(yǎng)學(xué)生的電路設(shè)計(jì)能力及仿真軟件的操作能力;在單片機(jī)課程設(shè)計(jì)和全國大學(xué)生電子設(shè)計(jì)競賽中,我們使用 proteus 開發(fā)環(huán)境對學(xué)生進(jìn)行培訓(xùn),在不需要硬件投入的條件下,學(xué)生普遍反映,對單片機(jī)的學(xué)習(xí)比單純學(xué)習(xí)書本知識更容易接受,更容易提高。4.2 proteus仿真軟件的使用運(yùn)行proteus軟件后,新建一個(gè)仿真空

15、白界面。按照在protel軟件上設(shè)計(jì)的硬件原理圖重新在proteus上搭建硬件電路。當(dāng)中有些元件是因仿真庫中不包含或者演示效果不理想的,需要使用其他器件替換。在proteus搭建硬件電路的另一個(gè)好處是不需根據(jù)實(shí)際工作電路完成設(shè)計(jì)也可以正常工作,如單片機(jī)的最小系統(tǒng)可以在proteus忽略搭建。只需要從元件庫中調(diào)用51系列的單片機(jī),雙擊該單片機(jī)即可設(shè)置晶振頻率等參數(shù)。這個(gè)優(yōu)點(diǎn)同時(shí)也是proteus不可忽視的弱點(diǎn),在某些電路實(shí)際設(shè)計(jì)存在錯(cuò)誤,但是在proteus還是能進(jìn)行仿真并且將錯(cuò)誤忽略。由此可見,仿真軟件上能正常運(yùn)行的系統(tǒng),并不完全代表是沒有存在缺陷的系統(tǒng)。設(shè)計(jì)好的仿真電路如下:圖4-2 仿真電

16、路圖4.3 proteus仿真過程完成硬件電路的搭建,以及程序代碼的編寫后,可通過點(diǎn)擊單片機(jī)加載程序編譯后生成的二進(jìn)制文件999.hex,實(shí)現(xiàn)硬件與程序的結(jié)合仿真。具體過程如下:1) 雙擊仿真圖上的單片機(jī),出現(xiàn)編輯元器件的對話框。2) 加載對應(yīng)的程序編譯后二進(jìn)制文件(999.hex)。 3) 點(diǎn)擊開始運(yùn)行仿真按鈕 若硬件設(shè)計(jì)沒有出現(xiàn)邏輯錯(cuò)誤,開始運(yùn)行仿真,運(yùn)行的效果如下圖所示:圖4-3 普通模式仿真效果圖圖4-4 夜間模式仿真效果圖圖4-4 緊急模式仿真效果圖 圖4-4 pcb效果圖5 總結(jié)經(jīng)過這幾個(gè)星期的學(xué)習(xí)和設(shè)計(jì),現(xiàn)代交通燈設(shè)計(jì)完畢。其功能基本滿足要求。但由于個(gè)人知識、能力、經(jīng)驗(yàn)以及設(shè)計(jì)時(shí)

17、間等因素限制,這套系統(tǒng)還不是很完美,存在一定程度的不足,比如夜間模式不能設(shè)定初值,初值設(shè)定只能倒序輸入數(shù)字。在現(xiàn)實(shí)使用中,某些地方設(shè)置不夠靈活,比如四個(gè)交通燈顯示時(shí)間都一樣,這些問題將在后續(xù)時(shí)間開發(fā)工作中進(jìn)行補(bǔ)充。參考文獻(xiàn)1 余錫存,曹國華.單片機(jī)原理及接口技術(shù).西安電子科技大學(xué)出版社,2007.122 郭天祥.新概念51單片機(jī)c語言教程j.電子工業(yè)出版社,2009,13 潭浩強(qiáng).c語言程序設(shè)計(jì).清華大學(xué)出版社,2010.6.附錄:單片機(jī)程序#include <reg51.h>/*獨(dú)立按鍵接口*/sbit key_1 = p14; sbit key_2 = p15; sbit ke

18、y_3 = p16;sbit key_4 = p17;/*交通燈定義 */unsigned char second,second2,count2=0,count1=0,flag1,flag2,flag3,flag4,shuru1,shuru2,shuru3,shuru4,night=0;data disdata4,i,num1,num2,num3,a,c;sbit buzzer = p13; /報(bào)警接口sbit redc1 = p00; /東西向:紅燈sbit yellowc2 = p01; / 黃燈sbit greenc3 = p02; / 直右轉(zhuǎn)綠燈sbit greenc4 = p03;

19、/左轉(zhuǎn)綠燈sbit redb1 = p04; /南北向:紅燈sbit yellowb2 = p05; / 黃燈sbit greenb3 = p06; / 直右轉(zhuǎn)綠燈sbit greenb4 = p07; /左轉(zhuǎn)綠燈/*max7219*/#define dig_0 0x01 /定義max7219數(shù)碼管*/#define dig_1 0x02#define dig_2 0x03#define dig_3 0x04#define dig_4 0x05#define dig_5 0x06#define dig_6 0x07#define dig_7 0x08sbit clk = p10; /max72

20、19接口sbit load = p11; sbit din = p12;#define decode_mode 0x09 /max7219參數(shù)設(shè)置#define intensity 0x0a#define scan_limit 0x0b#define shut_down 0x0c#define display_test 0x0f void write_max7219_byte(unsigned char temp) /向max7219寫一字節(jié)unsigned char i;for (i=0;i<8;i+)clk=0;din=(bit)(temp&0x80);temp<<

21、;=1;clk=1; void write_max7219(unsigned char address,unsigned char dat)/向max7219寫入地址,數(shù)據(jù)load=0;write_max7219_byte(address);write_max7219_byte(dat);load=1;void init_max7219(void) /max7219初始化/write_max7219(shut_down, 0x01); write_max7219(display_test, 0x00); write_max7219(decode_mode, 0xff); write_max72

22、19(scan_limit, 0x07); write_max7219(intensity, 0x04); /*延時(shí)程序*/void delay(unsigned int xms) unsigned int i,j;for(i=xms;i>0;i-)for(j=123;j>0;j-); /*定時(shí)器、中斷初始化*/void init_timer_interrupt() tmod =0x11; /定時(shí)器0、1設(shè)置16位定時(shí)方式 10ms in 12m crystal th0=0xd8; /定時(shí)器0賦初值 tl0=0xf0; th1=0xd8; /定時(shí)器1賦初值 tl1=0xf0; ie

23、 =0x8f; /打開全部中斷(除串行口) it0=0; /外部中斷設(shè)為電平出發(fā) it1=0; /*鍵盤 */#define p p2unsigned char keyscan() unsigned char temp,key=16; p=0xfe; /將第一行線置為高電平,其余行線全部為高電平 temp=p; /讀取p3口當(dāng)前狀態(tài)值賦給臨時(shí)變量temp,用于后面計(jì)算 temp=temp&0xf0; /將temp與0xf0進(jìn)行與運(yùn)算,然后將結(jié)果賦給temp.if(temp!=0xf0)/如果temp不等于0xf0,說明有鍵按下delay(10);/延時(shí)去抖temp=p;/重新讀一次p3

24、口數(shù)據(jù)temp=temp&0xf0;if(temp!=0xf0)temp=p;/重新讀取一次p2口數(shù)據(jù)switch(temp)/判斷那個(gè)按鍵被按下case 0xee:key=1;break;case 0xde:key=2;break;case 0xbe:key=3;break;case 0x7e:key=10;break;while(temp!=0xf0)/等待按鍵釋放temp=p;temp=temp&0xf0; return(key);p=0xfd;temp=p;temp=temp&0xf0;if(temp!=0xf0)delay(10);temp=p;temp=te

25、mp&0xf0;if(temp!=0xf0)temp=p;switch(temp)temp=p;case 0xed:key=4;break;case 0xdd:key=5;break;case 0xbd:key=6;break;case 0x7d:key=11;break;while(temp!=0xf0)temp=p;temp=temp&0xf0; return(key);p=0xfb;temp=p;temp=temp&0xf0;if(temp!=0xf0)delay(10);temp=p;temp=temp&0xf0;if(temp!=0xf0)temp=p

26、;switch(temp)case 0xeb:key=7;break;case 0xdb:key=8;break;case 0xbb:key=9;break;case 0x7b:key=12;break;while(temp!=0xf0)temp=p;temp=temp&0xf0;return(key);p=0xf7;temp=p;temp=temp&0xf0;if(temp!=0xf0)delay(10);temp=p;temp=temp&0xf0;if(temp!=0xf0)temp=p;switch(temp)case 0xe7:key=14;break;case

27、 0xd7:key=0;break;case 0xb7:key=15;break;case 0x77:key=13;break;while(temp!=0xf0)temp=p;temp=temp&0xf0; return(key); return(key); /*模式*/void model_one() /模式一普通模式 if(key_1=0) delay(100); if(key_1=0) while(!key_1);/等待按鍵松開 night=0; /模式一處理邏輯 buzzer=0; init_max7219(); /max7219初始化 redc1=0,greenc3=1,gr

28、eenc4=0,yellowc2=0; /普通模式,狀態(tài)設(shè)定 redb1=1,greenb3=0,greenb4=0,yellowb2=0; init_timer_interrupt(); tr0=1; /開定時(shí)器0 void model_two() /模式二夜間模式 if(key_2=0) delay(100); if(key_2=0) while(!key_2);/等待按鍵松開 buzzer=0; redc1=0,greenc3=0,greenc4=0,yellowc2=0; /關(guān)閉所有交通燈 redb1=0,greenb3=0,greenb4=0,yellowb2=0; night=1;

29、 /模式二處理邏輯 tr0=1; void model_three()/模式三初值設(shè)定模式 if(key_3=0) delay(100); if(key_3=0) while(!key_3);/等待按鍵松開 tr0=0; /模式三處理邏輯 buzzer=0; night=0; i=0; for(i=0;i<4;i+) /輸入4位09的數(shù),跳出循環(huán) while(1) a=keyscan(); if(a!=16) disdatai=a; break; num1=disdata3*10+disdata2; num2=disdata1*10+disdata0; shuru1=num1; /東西向

30、通行時(shí)間賦初值 shuru2=num2; /南北向通行時(shí)間賦初值 tr0=1; second=shuru1; void model_four() /模式四緊急模式 if(key_4=0) delay(100); if(key_4=0) while(!key_4); /等待按鍵松開 /模式四處理邏輯 redc1=1,greenc3=0,greenc4=0,yellowc2=0;/緊急狀態(tài),紅燈全亮 redb1=1,greenb3=0,greenb4=0,yellowb2=0; tr0=0; buzzer=1; /緊急狀態(tài),蜂鳴器報(bào)警 /*主程序*/void main() shuru1=20,sh

31、uru2=10; /k1未按下,賦原始初值,東西20s,南北10s second=shuru1;buzzer=0; while(1) / rst_(); model_one(); model_two(); model_three(); model_four();/*定時(shí)中斷0服務(wù)程序*/void interrupt_timer0() interrupt 1 shuru3=shuru1+5;shuru4=shuru2+5;th0=0xd8; /定時(shí)器0重新賦值tl0=0xf0;count1+;if (count1=100) /100次為1s count1=0; second-; /second 減1 if(night=0) if(second<=3) /second<3s時(shí),綠燈滅,黃燈閃爍、蜂鳴器報(bào)警 switch(flag1) /flag1為黃燈閃爍標(biāo)志,為0東西黃燈閃爍,為1南北方向黃燈閃爍 case 0:greenc3=0;greenc4=0;yellowc2=!yellowc2;buzzer=!buzzer;break; case 1:greenb3=0;greenb4=0;yellowb2=!yellowb2;buzzer=!buzzer;break; if(second=0) /second讀盡時(shí)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論