




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、杭州科技職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)報(bào)告單片機(jī)控制的交通燈控制系統(tǒng)設(shè)計(jì)題 目 單片機(jī)控制的交通燈 控制系統(tǒng)設(shè)計(jì) 專(zhuān) 業(yè) 應(yīng)用電子 班 級(jí) 0802 學(xué) 號(hào) k2008610236 姓 名 指導(dǎo)教師 2011年 01 月 13 日 摘要本設(shè)計(jì)是單片機(jī)控制的交通燈控制系統(tǒng)設(shè)計(jì)。由單片機(jī)系統(tǒng)、led顯示、交通燈演示系統(tǒng)、鍵盤(pán)電路及其控制電路組成。該系統(tǒng)除基本交通燈功能外,還具有倒計(jì)時(shí)、緊急情況處理、調(diào)整通行時(shí)間以及根據(jù)具體情況手動(dòng)控制等功能。十字路口的交通燈在工作時(shí)應(yīng)具有如下特點(diǎn):紅燈表示該條道路禁止通性;黃燈表示該條道路上未過(guò)停車(chē)線的車(chē)輛禁止通行,已過(guò)停車(chē)線的車(chē)輛繼續(xù)通性;綠燈亮表示該條道路允許通行。該系
2、統(tǒng)使用12mhz晶振與單片機(jī)at89s52相連接,通過(guò)軟件編程的方法實(shí)現(xiàn)十字路口的交通燈控制,輸入裝置是鍵盤(pán)開(kāi)關(guān),用于控制交通燈的運(yùn)行模式以及設(shè)置通行時(shí)間,顯示裝置是兩位的led七段數(shù)碼管。該系統(tǒng)是由at89s52單片機(jī)控制的,可以實(shí)現(xiàn)以下功能:1. 南北方向(主干道)車(chē)道和東西方向(支干道)兩條交叉道路上的車(chē)輛交替運(yùn)行,主干道每次通行時(shí)間都設(shè)為30秒、支干道每次通行間為20秒,時(shí)間可設(shè)置修改。2. 在綠燈轉(zhuǎn)為紅燈時(shí),要求黃燈先亮5秒鐘,才能變換運(yùn)行車(chē)道。3. 黃燈亮?xí)r,要求每秒閃亮一次。4. 東西方向、南北方向車(chē)道除了有紅、黃、綠燈指示外,每一種燈亮的時(shí)間都用顯示器進(jìn)行顯示(采用計(jì)時(shí)的方法)
3、。5. 一道有車(chē)而另一道無(wú)車(chē)(實(shí)驗(yàn)時(shí)用開(kāi)關(guān) k0 和 k1 控制),交通燈控制系統(tǒng)能立即讓有車(chē)道放行。6. 有緊急車(chē)輛要求通過(guò)時(shí),系統(tǒng)要能禁止普通車(chē)輛通行,a、b道均為紅燈。關(guān)鍵字:at89s52單片機(jī),交通燈,led顯示,鍵盤(pán)開(kāi)關(guān)電路。目 錄1概述-3-1.1設(shè)計(jì)背景 -3-1.2設(shè)計(jì)目的 -3-1.3設(shè)計(jì)要求 -3-2 系統(tǒng)總體方案及硬件設(shè)計(jì) -4-2.1 設(shè)計(jì)原理-4-2.2 各功能模塊設(shè)計(jì)-4-2.2.1單片機(jī)at89s52介紹 -4-2.2.2總體方案 -5-2.2.3時(shí)鐘電路模塊 -6-2.2.4復(fù)位電路模塊 -6-2.2.5交通燈演示模塊 -7-2.2.6 led顯示模塊 -7-
4、2.2.7鍵盤(pán)開(kāi)關(guān)模塊 -8-3 軟件設(shè)計(jì) -10-3.1程序流程圖-10-3.2系統(tǒng)軟件設(shè)計(jì)-11-3.2.1 led的編程-11-3.2.2交通燈模塊的編程設(shè)計(jì)-12-3.2.3定時(shí)器程序-12-3.2.4鍵盤(pán)程序-13-3.2.4.1通行時(shí)間設(shè)置程序-13-3.2.4.2緊急情況處理程序-14-3.2.4.3狀態(tài)調(diào)整程序-14-4 proreus仿真 -15-4.1正常工作狀態(tài)-15-4.2時(shí)間調(diào)整-17-4.3緊急狀況-19-4.4狀態(tài)調(diào)整-20-5課程設(shè)計(jì)體會(huì) -22-參考文獻(xiàn)-23-附1:源程序代碼 -24-附2:系統(tǒng)原理圖 -32-1 概述1.1 設(shè)計(jì)背景人們?cè)絹?lái)越關(guān)注城市交通問(wèn)
5、題,而交通燈在安全行車(chē)過(guò)程中起十分重要的作用, 現(xiàn)在交通燈一般設(shè)在十字路口,在醒目位置用紅、綠、黃三種顏色的指示燈, 加上一個(gè)倒計(jì)時(shí)的顯示計(jì)時(shí)器來(lái)控制行車(chē), 對(duì)于一般情況下的安全行車(chē)、車(chē)輛分流發(fā)揮著作用, 但根據(jù)實(shí)際行車(chē)過(guò)程中出現(xiàn)的情況, 主要有如下幾個(gè)缺點(diǎn): 1、車(chē)道讓車(chē)輪流放行時(shí)間相同且固定, 在十字路口, 經(jīng)常出現(xiàn)有些車(chē)道車(chē)輛較多, 放行時(shí)間應(yīng)該長(zhǎng)些;而有些車(chē)道車(chē)輛較少,放行時(shí)間應(yīng)短些。2、 沒(méi)有考慮緊急車(chē)通過(guò)時(shí), 兩車(chē)道應(yīng)采取的措施, 譬如, 有消防車(chē)通過(guò)執(zhí)行緊急任務(wù)時(shí), 兩車(chē)道的車(chē)都應(yīng)停止, 讓緊急車(chē)輛通過(guò)。根據(jù)行車(chē)過(guò)程中出現(xiàn)的實(shí)際情況, 如何合理高效地利用交通燈指示交通情況,這是一
6、個(gè)迫切需要解決的問(wèn)題。1.2 設(shè)計(jì)目的1. 進(jìn)一步熟悉和掌握單片機(jī)的結(jié)構(gòu)及工作原理。2. 掌握單片機(jī)的接口技術(shù)及相關(guān)外圍芯片的外特性,控制方法。3. 通過(guò)課程設(shè)計(jì),掌握以單片機(jī)核心的電路設(shè)計(jì)的基本方法和技術(shù)。4. 通過(guò)實(shí)際程序設(shè)計(jì)和調(diào)試,逐步掌握模塊化程序設(shè)計(jì)方法和調(diào)試技術(shù)。5. 了解開(kāi)發(fā)單片機(jī)應(yīng)用系統(tǒng)的全過(guò)程,為今后從事相關(guān)事業(yè)打下基礎(chǔ)。1.3 設(shè)計(jì)要求1. 設(shè)計(jì)一個(gè)十字路口的交通燈控制電路,要求南北方向(主干道)車(chē)道和東西方向(支干道)車(chē)道兩條交叉道路上的車(chē)輛交替運(yùn)行,主干道每次通行時(shí)間都設(shè)為30秒、支干道每次通行時(shí)間為20秒,時(shí)間可設(shè)置修改。2. 在綠燈轉(zhuǎn)為紅燈時(shí),要求黃燈先亮5秒鐘,才
7、能變換運(yùn)行車(chē)道;3. 黃燈亮?xí)r,要求每秒閃亮一次。4. 東西方向、南北方向車(chē)道除了有紅、黃、綠燈指示外,每一種燈亮的時(shí)間都用顯示器進(jìn)行顯示(采用計(jì)時(shí)的方法)。5. 一道有車(chē)而另一道無(wú)車(chē)(實(shí)驗(yàn)時(shí)用開(kāi)關(guān) k0 和 k1 控制),交通燈控制系統(tǒng)能立即讓有車(chē)道放行。 6. 有緊急車(chē)輛要求通過(guò)時(shí),系統(tǒng)要能禁止普通車(chē)輛通行,a、b道均為紅燈。2 系統(tǒng)總體方案及硬件設(shè)計(jì)2.1 設(shè)計(jì)原理本設(shè)計(jì)使用的是單片機(jī)作為核心的控制元件,使得電路的可靠性比較高,功能也比較強(qiáng)大,而且可以隨時(shí)更新系統(tǒng),根據(jù)道路情況適時(shí)調(diào)整交通燈的狀態(tài),全面有效地利用交通燈指示交通情況。該設(shè)計(jì)是以單片機(jī)at89s52為核心完成的,在硬件電路中
8、采用p1口點(diǎn)亮交通指示燈,采用p0口和p2口作為2位led數(shù)碼管的驅(qū)動(dòng)接口,可顯示各個(gè)方向的交通燈的持續(xù)時(shí)間,單片機(jī)外圍接有按鍵開(kāi)關(guān)電路,可以響應(yīng)外部中斷及鍵盤(pán)程序,實(shí)現(xiàn)緊急情況處理、調(diào)整交通燈的點(diǎn)亮?xí)r間等功能。芯片選用at89c51 單片機(jī),電路由下列部分組成:時(shí)鐘電路、復(fù)位電路、鍵盤(pán)電路、交通燈演示電路、led顯示電路。at89s52 復(fù)位電路交通燈演示電路led顯示電路鍵盤(pán)電路時(shí)鐘電路圖01 原理框圖2.2 各功能模塊設(shè)計(jì)2.2.1 單片機(jī)at89s52介紹at89s52是一個(gè)低電壓,高性能cmos型 8位單片機(jī),片內(nèi)含8kb的可反復(fù)擦寫(xiě)的flash只讀程序存儲(chǔ)器(rom)和256 b的
9、隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(ram)。at89s52是一個(gè)低功耗高性能單片機(jī),40個(gè)引腳,32個(gè)外部雙向輸入/輸出(i/o)端口,同時(shí)內(nèi)含2個(gè)外中斷口,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,at89s52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫(xiě)的flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。引腳使用說(shuō)明:i/o端口的編程實(shí)際上就是根據(jù)應(yīng)用電路的具體功能和要求對(duì)i/o寄存器進(jìn)行編程。具體步驟如下:l. 根據(jù)實(shí)際電路的要求,選擇要使用哪些i/o端口。2. 初始化端口的數(shù)據(jù)輸出寄存器,應(yīng)避免端口作為輸出時(shí)的開(kāi)始階段出現(xiàn)不確定狀態(tài),影響外圍
10、電路正常工作。3. 根據(jù)外圍電路功能,確定po端口的方向,初始化端口的數(shù)據(jù)方向寄存器。對(duì)于用作輸入的端口可以不考慮方向初始化,因?yàn)閜o的復(fù)位缺省值為輸入。4. 用作輸入的po管腳,需上拉電阻。5. 最后對(duì)i/o端口進(jìn)行輸出(寫(xiě)數(shù)據(jù)輸出寄存器)和輸入(讀端口)編程,完成對(duì)外圍電路的相應(yīng)功能。幾個(gè)特殊管腳:xtal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 xtal2:來(lái)自反向振蕩器的輸出。rst: 復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平。2.2.2 總體方案 此交通燈系統(tǒng)位于一個(gè)十字路口,此路口為東南西北走向。南北方向?yàn)橹鞲傻溃瑬|西方向?yàn)橹Ц傻?。各干道有一組紅、
11、綠、黃三色的指示燈,指揮車(chē)輛和行人安全通行。紅燈亮禁止通行,綠燈亮允許通行,黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換。此交通燈系統(tǒng)工作過(guò)程分為4個(gè)狀態(tài)。狀態(tài)0南北方向綠燈亮,東西方向紅燈亮。過(guò)25秒后轉(zhuǎn)為狀態(tài)1,南北方向綠燈滅,黃燈每秒閃亮一次,東西方向還是紅燈亮。歷時(shí)5秒鐘再轉(zhuǎn)為狀態(tài)2,南北方向紅燈亮,東西方向綠燈亮。過(guò)15秒后轉(zhuǎn)為狀態(tài)3,南北方向還是紅燈亮,東西方向綠燈滅,黃燈每秒閃亮一次。歷時(shí)5秒鐘又循環(huán)至狀態(tài)0。交通燈的狀態(tài)表如下:狀態(tài)(時(shí)間)主干道sn支干道we紅r綠g黃y紅r綠g黃y00101001001/010021000103100001/0表01 交通燈的狀態(tài)表注: 1:sn
12、:南北方向。we:東西方向。 2:狀態(tài):0:熄。1:亮。1/0:閃。2.2.3 時(shí)鐘電路模塊時(shí)鐘電路模塊給單片機(jī)提供特定的時(shí)鐘周期,以備單片機(jī)工作使用。單片機(jī)的機(jī)器周期有6mhz和12mhz的兩種。這里采用的是12mhz的晶振,以給單片機(jī)提供12mhz的機(jī)器周期。另外有兩個(gè)30p的電容,兩晶振引腳分別連到xtal1和xtal2振蕩脈沖輸入引腳。其電路圖如圖02所示: 圖02 時(shí)鐘電路模塊2.2.4 復(fù)位電路模塊單片機(jī)系統(tǒng)的復(fù)位電路采用的是上電+按鈕復(fù)位電路形式,其中電阻r采用10k的阻值,電容采用電容值為10f的電解電容。其具體連接電路如圖03所示:圖03 復(fù)位電路模塊2.2.5 交通燈演示模
13、塊此交通燈演示模塊由單片機(jī)的p1口作信號(hào)輸出端來(lái)控制12個(gè)交通燈的亮滅,交通燈采用的是發(fā)光二極管。因?yàn)閱纹瑱C(jī)的輸出電流非常小,為了使發(fā)光二極管能夠發(fā)光或者更亮,二極管采用共陽(yáng)極接法。即陽(yáng)極通過(guò)470電阻接+5v直流電源,陰極接單片機(jī)p1口。同時(shí)南北方向同色燈連同上拉電阻一起并聯(lián),東西方向也是一樣,以保證同一干道上的同色燈同時(shí)點(diǎn)亮或熄滅,并且流過(guò)二極管的電流不會(huì)因并聯(lián)而減半。其具體連接電路如圖04所示: 圖04交通燈演示電路2.2.6 led顯示模塊由于同一干道上的兩個(gè)方向的紅燈,綠燈,黃燈點(diǎn)亮?xí)r間相同,所以南北方向只需一個(gè)數(shù)碼管顯示相應(yīng)的時(shí)間即可,同理東西方向也只需一個(gè)。本次交通燈設(shè)計(jì)采用兩位
14、一體的共陰極數(shù)碼管來(lái)顯示相應(yīng)的時(shí)間。由單片機(jī)的p0口輸出字型碼,p2口的前四位p2.0p2.3作位選端。 位選端接led的共陰極,故低電位有效。因?yàn)閱纹瑱C(jī)i/o口的驅(qū)動(dòng)電流很小,一般只有幾個(gè)毫安。為了增加驅(qū)動(dòng)能力,每個(gè)led上都加上一個(gè)上拉電阻,接入+5v電源,本次設(shè)計(jì)采用的是排阻。當(dāng)p0口輸出低電平時(shí),led不導(dǎo)通,上拉電阻電流灌進(jìn)單片機(jī),而當(dāng)p0口輸出高電平時(shí),led導(dǎo)通。而且上拉電阻的電流也通過(guò)led,這自然就增加了led的發(fā)光亮度。 其具體連接電路如圖05所示:圖05 led顯示電路2.2.7 鍵盤(pán)開(kāi)關(guān)模塊此系統(tǒng)通過(guò)5個(gè)開(kāi)關(guān)實(shí)現(xiàn)所有的要求,開(kāi)關(guān)一端接地,另一端接單片機(jī)的p3口。k0接p
15、37,當(dāng)主干道有車(chē)而支干道無(wú)車(chē)時(shí),按一下k0鍵,可以實(shí)現(xiàn)主干道通行。k1接p36,當(dāng)支干道有車(chē)而主干道無(wú)車(chē)時(shí),按一下k1鍵,可以實(shí)現(xiàn)支干道通行。k2接p33,利用中斷1的方式對(duì)緊急情況進(jìn)行處理,即使東南西北四個(gè)方向都亮紅燈停車(chē)。k4接p32,利用中斷0的方式對(duì)各個(gè)干道的通行時(shí)間進(jìn)行設(shè)置。在相應(yīng)中斷0期間,k0,k1起調(diào)整時(shí)間的作用。每按一下k0,主干道通行時(shí)間加一,每按一下k0,主干道通行時(shí)間加一。k3接p35,按一下k3,可以使系統(tǒng)退出中斷,回到主程序。其具體連接電路如06圖示: 圖06 鍵盤(pán)開(kāi)關(guān)電路3 軟件設(shè)計(jì)3.1 系統(tǒng)流程圖nynyynnynynyynnynynynynyynynnyn
16、y開(kāi)始k=0,sn=25中斷按k0按k1sn=0倒計(jì)時(shí)響應(yīng)中斷k=1,sn=5k=3,we=5k=2,we=15倒計(jì)時(shí)倒計(jì)時(shí)倒計(jì)時(shí)中斷按k0按k1we=000按k1sn=0按k0中斷中斷we=-0按k1按k0響應(yīng)中斷響應(yīng)中斷響應(yīng)中斷圖07 系統(tǒng)流程圖- 33 -3.2 系統(tǒng)軟件設(shè)計(jì)本次單片機(jī)課程設(shè)計(jì)軟件部分利用c語(yǔ)言編程,采用模塊化程序設(shè)計(jì)。程序部分由主程序、定時(shí)器程序、t0/t1中斷服務(wù)程序、鍵盤(pán)掃描程序、交通燈點(diǎn)亮程序、led數(shù)碼管掃描顯示程序和延時(shí)程序構(gòu)成。3.2.1 led的編程本次交通燈設(shè)計(jì)采用兩位一體的共陰極數(shù)碼管來(lái)顯示相應(yīng)的時(shí)間。數(shù)碼管為七段數(shù)碼管,由8個(gè)發(fā)光二極管構(gòu)成,通過(guò)不同
17、的組合可用來(lái)顯示數(shù)字0-9,字符a-f、h、l、p、r、u、y、符號(hào)“-”及小數(shù)點(diǎn)“.”。本設(shè)計(jì)只需要顯示數(shù)字0-9,來(lái)表示相應(yīng)的時(shí)間。共陰極數(shù)碼管的8個(gè)發(fā)光二極管的陰極連接在一起接位選端。兩個(gè)兩位一體的共陰極數(shù)碼管共有4個(gè)位選端,分別接在p2o-p23,低電平有效。數(shù)碼管各個(gè)陽(yáng)極管腳接各段的驅(qū)動(dòng)電路輸出端,既p0口。p00接a,p01接b,p06接g,p07接dp,高電平有效。本設(shè)計(jì)采用逐位掃描的方式實(shí)現(xiàn)相應(yīng)時(shí)間的動(dòng)態(tài)顯示。先將p21置低電平,p20、p22、p23置高電平,來(lái)選中南北方向數(shù)碼管的個(gè)位,此時(shí)p0口的數(shù)據(jù)接傳送給它顯示。經(jīng)延時(shí)一段時(shí)間,將p21置低電位選中南北方向數(shù)碼管的十位,
18、此時(shí)p0口的數(shù)據(jù)接傳送給它顯示。再用同樣的方法依次驅(qū)動(dòng)?xùn)|西方向數(shù)碼管。通過(guò)不斷改變p0口、p2口的輸出,用循環(huán)掃描的方式,即可實(shí)現(xiàn)led的動(dòng)態(tài)顯示。led動(dòng)態(tài)顯示的流程圖如圖08:顯示南北方向個(gè)位開(kāi)始顯示南北方向十位顯示東西方向個(gè)位顯示東西方向十位圖08 led顯示3.2.2交通燈模塊的編寫(xiě)設(shè)計(jì)本次設(shè)計(jì)的交通燈演示模塊由單片機(jī)的p1口作信號(hào)輸出端來(lái)控制12個(gè)交通燈的亮滅。p11-p16依次連接南北的紅燈、綠燈、黃燈,東西的紅燈、綠燈,黃燈。所以4種狀態(tài)依次為0x6a,0x66,0x5c,0x3c。當(dāng)交通燈的剩余時(shí)間為零時(shí),改變p1口的輸出,進(jìn)而改變交通燈的點(diǎn)亮狀態(tài)。交通燈依次循環(huán)上面的4個(gè)狀態(tài)
19、,就可以實(shí)現(xiàn)指揮交通的作用。3.2.3 定時(shí)器程序本次設(shè)計(jì)用定時(shí)計(jì)數(shù)器t1,tmod是定時(shí)計(jì)算器的工作方式控制寄存器,通過(guò)對(duì)該寄存器的操作可以改變t1的工作方式。t1有4種工作方式,由tmod寄存器中間的m1、m0這兩位來(lái)決定。本次設(shè)計(jì)的定時(shí)計(jì)數(shù)器工作在工作方式1,m1、m0設(shè)定為01。定時(shí)計(jì)算器采用加1計(jì)數(shù)的方式,當(dāng)接收到一個(gè)驅(qū)動(dòng)事件時(shí)計(jì)數(shù)器加1。工作方式1的內(nèi)部計(jì)數(shù)器寬度為16位,由th1的8位和tl1的8位組成。當(dāng)tl1溢出時(shí)將向th1進(jìn)位,當(dāng)th1溢出后會(huì)產(chǎn)生相應(yīng)的溢出中斷。驅(qū)動(dòng)事件之間的時(shí)間間隔即為定時(shí)計(jì)數(shù)器的定時(shí)寬度。在定時(shí)的工作方式下,定時(shí)寬度是單片機(jī)的機(jī)械周期,也是外部時(shí)鐘頻率
20、的1/12。本次設(shè)計(jì)的外部時(shí)鐘頻率為12mhz。可知,接收106個(gè)驅(qū)動(dòng)事件的時(shí)間為1s。定是1s的流程圖如圖09所示:nyyn定時(shí)器初始化開(kāi)始count=0溢出中斷sn-.we-結(jié)束圖09 定時(shí)器流程圖計(jì)數(shù)conut+count=203.2.4 鍵盤(pán)程序?yàn)榱藢?shí)現(xiàn)設(shè)置通行時(shí)間、緊急情況處理、有車(chē)放行等功能,本次設(shè)計(jì)中有鍵盤(pán)電路。通行時(shí)間設(shè)置由外部中斷0實(shí)現(xiàn),緊急情況由外部中斷1處理,有車(chē)放行是用普通的鍵盤(pán)程序?qū)崿F(xiàn)的。按鍵實(shí)際是一種常用的按鈕,按鍵未按下時(shí),鍵的兩個(gè)觸點(diǎn)處于斷開(kāi)狀態(tài),按鍵按下時(shí),兩個(gè)觸點(diǎn)閉合。按鍵是利用機(jī)械觸點(diǎn)來(lái)實(shí)現(xiàn)鍵的閉合和釋放,由于彈性作用的影響,機(jī)械觸點(diǎn)在閉合及斷開(kāi)瞬間均有抖
21、動(dòng)過(guò)程,從而使鍵輸入也出現(xiàn)抖動(dòng)。抖動(dòng)時(shí)間一般為510ms。本次設(shè)計(jì)采用軟件的辦法消抖。在第一次檢測(cè)到有鍵按下時(shí)不動(dòng)作,延時(shí)10ms,再次檢測(cè)按鍵的狀態(tài),如果仍保持閉合狀態(tài),則確定真的有鍵按下。當(dāng)按鍵釋放后,轉(zhuǎn)入按鍵的處理程序延時(shí)程序如下:/*延時(shí)t毫秒*/void delay(uchar t) uchar i; /*定義無(wú)符號(hào)字符常量*/ for(t;t0;t-) /*執(zhí)行t次循環(huán)*/ for(i=2000;i0;i-) /*由于時(shí)鐘脈沖是12mhz,執(zhí)行2000次循環(huán)的時(shí)間為1ms*/ 3.2.4.1 通行時(shí)間設(shè)置程序本次設(shè)計(jì)通過(guò)外部中斷0設(shè)置各個(gè)干道的通行時(shí)間。外部中斷0的請(qǐng)求信號(hào)由p32
22、引腳輸入,采用低電平有效的方式響應(yīng)中斷,即it0=1。響應(yīng)中斷0期間,cpu禁止響應(yīng)其他中斷,按鍵k0,k1起調(diào)整時(shí)間的作用。采用加1的方式,每按一下k0,主干道通行時(shí)間加1,每按一下k1,支干道通行時(shí)間加1。通行時(shí)間可以直接在數(shù)碼管上顯示出來(lái)。按一下k3,可以使系統(tǒng)退出中斷,回到主程序斷點(diǎn)處,從下一個(gè)狀態(tài)開(kāi)始執(zhí)行新設(shè)置的通行時(shí)間。cpu再開(kāi)放總中斷。由于本次設(shè)計(jì)使用兩位一體的共陰極數(shù)碼管顯示時(shí)間,故設(shè)置各個(gè)干道的通行時(shí)間的范圍為0100s??紤]道路通車(chē)的實(shí)際情況,時(shí)間太短無(wú)法通過(guò)交通路口,所以本設(shè)計(jì)中通行時(shí)間下限為6s(綠燈1s,黃燈5s)。在699s之間可以任意設(shè)置通行時(shí)間,更合理高效的指
23、揮交通。3.2.4.2 緊急情況處理程序本次設(shè)計(jì)通過(guò)外部中斷1實(shí)現(xiàn)對(duì)緊急情況的處理。與外部中斷0相仿。外部中斷1的請(qǐng)求信號(hào)有p33引腳輸入,采用低電平有效的方式相應(yīng)中斷,即it0=1。響應(yīng)中斷1期間,cpu禁止響應(yīng)其他中斷,東南西北四個(gè)方向均亮紅燈,各個(gè)干道都禁止通行。由于不確定要持續(xù)多久,不采用倒計(jì)時(shí)的方式顯示時(shí)間,數(shù)碼管顯示00。緊急情況結(jié)束時(shí),按一下k3,可以使系統(tǒng)退出中斷,回到主程序斷點(diǎn)處,cpu再開(kāi)放總中斷。3.2.4.3 狀態(tài)調(diào)整程序在實(shí)際交通系統(tǒng)中,很有可能會(huì)不時(shí)的出現(xiàn)一道有車(chē)而另一道無(wú)車(chē)的情況,為了更合理高效的指揮交通,本次設(shè)計(jì)的交通燈控制系統(tǒng)能立即讓有車(chē)道放。由開(kāi)關(guān) k0 和
24、 k1 控制。采用查詢(xún)的方式不斷掃描k0、k1,看有沒(méi)有鍵按下。按一下k0鍵,可以實(shí)現(xiàn)主干道通行,按一下k1鍵,可以實(shí)現(xiàn)支干道通行。此時(shí)交通狀態(tài)的改變是因?yàn)榱硪宦窡o(wú)車(chē),所以不需要設(shè)置返回,直接按主程序循環(huán)指揮。也有可能較長(zhǎng)時(shí)間出現(xiàn)一道有車(chē)另一道無(wú)車(chē)的情況,只需多次按k0或k1鍵即可。4 proteus仿真4.1 正常工作狀態(tài)本次設(shè)計(jì)的交通燈控制系統(tǒng)共有四個(gè)工作狀態(tài),分別是狀態(tài)0、狀態(tài)1、狀態(tài)2和狀態(tài)3。開(kāi)始時(shí)先執(zhí)行狀態(tài)0,南北方向綠燈亮,東西方向紅燈亮。歷時(shí)25秒。如圖10所示:圖10 狀態(tài)025秒后轉(zhuǎn)為狀態(tài)1,南北方向綠燈滅,黃燈每秒閃亮一次,東西方向還是紅燈亮。歷時(shí)5秒。如圖11所示:圖1
25、1 狀態(tài)15秒后再轉(zhuǎn)狀態(tài)2,南北方向紅燈亮,東西方向綠燈亮。歷時(shí)15秒。如圖12所示:圖12 狀態(tài)215秒后轉(zhuǎn)狀態(tài)3,南北方向還是紅燈亮,東西方向綠燈滅,黃燈每秒閃亮一次。歷時(shí)5秒。如圖13所示:圖13 狀態(tài)3此狀態(tài)結(jié)束后再回到狀態(tài)0,如此循環(huán)進(jìn)行。4.2 時(shí)間調(diào)整 按一下開(kāi)關(guān)k4,系統(tǒng)響應(yīng)外部中斷0,進(jìn)入通行時(shí)間調(diào)整程序。各個(gè)干道的通行時(shí)間有數(shù)碼管顯示。如圖14所示:圖14 時(shí)間調(diào)整按鍵k0,k1起調(diào)整時(shí)間的作用,每按一下k0,主干道通行時(shí)間加1,每按一下k1,支干道通行時(shí)間加1。多次按鍵即可調(diào)整到合理的通行時(shí)間。如圖15所示:圖15 通行時(shí)間+1按一下k3,可以使系統(tǒng)退出中斷,回到主程序斷
26、點(diǎn)處,從下一個(gè)狀態(tài)開(kāi)始執(zhí)行新設(shè)置的通行時(shí)間。如圖16、17所示:圖16 主干道按新設(shè)置的時(shí)間執(zhí)行圖17 支干道按新設(shè)置的時(shí)間執(zhí)行4.3 緊急情況 當(dāng)出現(xiàn)緊急情況時(shí),按一下開(kāi)關(guān)k2,系統(tǒng)響應(yīng)外部中斷1,各個(gè)方向均亮紅燈禁止通行,數(shù)碼管均顯示0。按一下k3,可以使系統(tǒng)退出中斷,回到主程序斷點(diǎn)處。如圖18所示圖18 緊急情況4.4 狀態(tài)調(diào)整為了更合理高效的指揮交通,當(dāng)南北方向有車(chē)而東西方向無(wú)車(chē)時(shí),按k0,系統(tǒng)會(huì)自動(dòng)跳轉(zhuǎn)到狀態(tài)0,實(shí)現(xiàn)南北方向通行。如圖19所示: 圖19 南北方向有車(chē)而東西方向無(wú)車(chē)時(shí),南北放行當(dāng)東西方向有車(chē)而南北方向無(wú)車(chē)時(shí),按k1,系統(tǒng)會(huì)自動(dòng)跳轉(zhuǎn)到狀態(tài)2,實(shí)現(xiàn)東西方向通行。如圖20所示
27、:圖20 東西方向有車(chē)而南北方向無(wú)車(chē)時(shí),東西放行5 課程設(shè)計(jì)體會(huì)很榮幸有這次課程設(shè)計(jì)的機(jī)會(huì),我可以把理論的學(xué)習(xí)與實(shí)踐有機(jī)的結(jié)合起來(lái)。在設(shè)計(jì)過(guò)程中,首先要分析課題,根據(jù)所學(xué)知識(shí)繪制出系統(tǒng)總體設(shè)計(jì)框圖。然后按照自己的設(shè)計(jì)思路,利用所給的元器件繪制出設(shè)計(jì)圖。在繪制設(shè)計(jì)圖連接各個(gè)元器件的時(shí)候,要盡量使布線合適,從而使所作設(shè)計(jì)圖清晰易看。繪制完設(shè)計(jì)圖后,接下來(lái)就是要根據(jù)設(shè)計(jì)所要求的功能和已完成的設(shè)計(jì)圖編寫(xiě)程序,在編程時(shí),首先應(yīng)該繪制出主程序流程圖,然后采用模塊化程序設(shè)計(jì)的方式,編寫(xiě)實(shí)現(xiàn)各個(gè)功能的子程序,再將各個(gè)子程序與主程序連接起來(lái)。在設(shè)計(jì)程序時(shí)要不斷對(duì)程序進(jìn)行修改,同時(shí)在設(shè)計(jì)程序的過(guò)程中要養(yǎng)成注釋程序
28、的習(xí)慣,在對(duì)程序進(jìn)行修改的時(shí)候,可以通過(guò)注釋很容易的看出各句程序的功能,清晰明朗。當(dāng)程序設(shè)計(jì)出來(lái)之后,就可以通過(guò)仿真軟件對(duì)其進(jìn)行編譯,生成仿真所需要的hex文件。 將生成的文件加載到系統(tǒng)圖的單片機(jī)上,就可以進(jìn)行系統(tǒng)仿真。通過(guò)仿真,檢測(cè)所作設(shè)計(jì)是否能實(shí)現(xiàn)預(yù)期功能。本次課程設(shè)計(jì)使我對(duì)單片機(jī)的工作原理有了更深刻的認(rèn)識(shí),掌握了許多在以前學(xué)習(xí)中混淆不清的知識(shí)點(diǎn)。在翻閱相關(guān)書(shū)籍和查詢(xún)相關(guān)資料過(guò)程中學(xué)到了豐富的單片機(jī)知識(shí),開(kāi)闊了眼界,增廣了知識(shí)面。在編輯程序中,對(duì)c語(yǔ)言又有了新的認(rèn)識(shí)和理解。實(shí)物焊接中不僅鍛煉了自己的動(dòng)手能力,而且真正作到了理論聯(lián)系實(shí)際的重要性,收益匪淺。 本次課程設(shè)計(jì)我參考的三本書(shū)。一本是
29、余發(fā)山教授的單片機(jī)原理及其應(yīng)用技術(shù),一本是在圖書(shū)館借的王為青老師編寫(xiě)的單片機(jī)keil cx51應(yīng)用開(kāi)發(fā)技術(shù),還有一本就是賈宗璞老師的c語(yǔ)言程序設(shè)計(jì)。在此向編者表示誠(chéng)摯的謝意。本次設(shè)計(jì)中,我曾多次向沈國(guó)泉老師請(qǐng)教各個(gè)模塊設(shè)計(jì)的細(xì)節(jié)問(wèn)題,得到了老師的大力幫助,在此深表感謝!參考文獻(xiàn)1 余發(fā)山,王福忠.單片機(jī)原理及應(yīng)用技術(shù) 徐州:中國(guó)礦業(yè)大學(xué)出版社,2008 2 賈宗璞,許合利.c語(yǔ)言程序設(shè)計(jì) 徐州:中國(guó)礦業(yè)大學(xué)出版社,2007 3 王為青,程國(guó)剛.單片機(jī)keil cx51應(yīng)用開(kāi)發(fā)技術(shù) 北京:人民郵電出版社,2007 附1 源程序代碼#include /*對(duì)單片機(jī)的口進(jìn)行了定義*/#define u
30、char unsigned char /*定義字符串類(lèi)型為無(wú)符號(hào)型*/uchar code a10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*段碼組合,p0口,高有效*/uchar code b4=0x0d,0x0e,0x07,0x0b; /*p2口,低有效*/uchar code c4=0x6a,0x66,0x5c,0x3c; /*p1口.低有效*/char sn=25,we=30; /*sn表示南北方向主干道,we表示東西方向支干道*/char sn_g=25,we_g=15,y=5; /*sn_g表示南北方向的綠燈,we_g表
31、示東西方向的綠燈,y表示黃燈*/uchar i,k=0,count=0; /*定義無(wú)符號(hào)字符串變量*/void delay(uchar t);/*定義函數(shù)*/void light();/*定義函數(shù)*/void led(); /*定義函數(shù)*/void ledthrough();/*定義函數(shù)*/void leddrive(); /*定義函數(shù)*/sbit k0=p37;/*開(kāi)關(guān)k0接p37管腳*/sbit k1=p36;/*開(kāi)關(guān)k1接p36管腳*/sbit k2=p33;/*開(kāi)關(guān)k2接p33管腳*/sbit k3=p35;/*開(kāi)關(guān)k3接p35管腳*/sbit k4=p32;/*開(kāi)關(guān)k4接p32管腳*
32、/*程序初始化*/void init(void) /*12mhz */ tmod=0x01; /*計(jì)數(shù)器用模式1,為16位計(jì)數(shù)器*/ th1=(65536-50000)/256; /*0x3c*/ tl1=(65536-50000)%256; /*0xb0*/*計(jì)50000個(gè)數(shù),用時(shí)50ms*/ it0=1;/*外部中斷為低電平觸發(fā)方式*/ et0=1;/*允許t0中斷*/ tr0=1;/*啟動(dòng)計(jì)數(shù)器*/ ea=1;/*cpu開(kāi)放總中斷*/ ex0=1;/*允許外部中斷0中斷,即允許響應(yīng)端口p32(k4)中斷*/ ex1=1;/*允許外部中斷1中斷,即允許響應(yīng)端口p33(k2)中斷*/*中斷0
33、處理程序*/void int0(void) interrupt 0 ea=0;/*cpu禁止響應(yīng)一切中斷*/ p1=0x6c;/*東西南北方向均紅燈亮*/tr0=!tr0;/*計(jì)數(shù)器停止工作*/ for(;)/*無(wú)條件循環(huán)*/ ledthrough(); /*調(diào)用通行時(shí)間顯示函數(shù)*/ /*設(shè)置南北方向通行時(shí)間*/ if(k0=0) /*p37=0*/ delay(10);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/ if(k0=0) while(!k0)/*當(dāng)松開(kāi)k0開(kāi)關(guān)時(shí),跳出循環(huán),執(zhí)行后面的程序*/ ledthrough(); /*調(diào)用通行時(shí)間顯示函數(shù)*/ sn_g+;/*南北方向綠燈時(shí)間+1*/ if
34、(sn_g+y)=100)/*南北方向通行時(shí)間(綠燈加黃燈時(shí)間)為100s*/ sn_g=1;/*由于使用的是兩位數(shù)碼管,當(dāng)南北方向通行時(shí)間加到100后綠燈時(shí)間歸1*/ /*設(shè)置東西方向通行時(shí)間*/ if(k1=0) /*p36=0*/ delay(10);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/ if(k1=0) while(!k1)/*當(dāng)松開(kāi)k1開(kāi)關(guān)時(shí),跳出循環(huán),執(zhí)行后面的程序*/ ledthrough(); /*調(diào)用通行時(shí)間顯示函數(shù)*/ we_g+;/*東西方向綠燈時(shí)間+1*/ if(we_g+y)=100)/*東西方向通行時(shí)間(綠燈加黃燈時(shí)間)為100s*/ we_g=1;/*由于使用的是兩位數(shù)
35、碼管,當(dāng)東西方向通行時(shí)間加到100后綠燈時(shí)間歸1*/ /*返回*/ if(k3=0) /*p35=0*/ delay(10);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/ if(k3=0) while(!k3)/*當(dāng)松開(kāi)k3開(kāi)關(guān)時(shí),跳出循環(huán),執(zhí)行后面的程序*/ ledthrough(); /*調(diào)用通行時(shí)間顯示函數(shù)*/ tr0=!tr0;/*啟動(dòng)計(jì)數(shù)器*/ ea=1; /*cpu開(kāi)放總中斷*/ break;/*跳出*/ /*中斷1處理程序*/void int1(void) interrupt 2p1=0x6c,p0=a0;/*東西南北方向均紅燈亮,p0口輸出0*/ ea=0;/*cpu禁止響應(yīng)一切中斷*/tr
36、0=!tr0;/*計(jì)數(shù)器停止工作*/ for(;)/*無(wú)條件循環(huán)*/ leddrive(); /*數(shù)碼管驅(qū)動(dòng)程序*/ /*返回*/ if(k3=0) /*p35=0*/ delay(10);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/ if(k3=0) while(!k3)/*當(dāng)松開(kāi)k3開(kāi)關(guān)時(shí),跳出循環(huán),執(zhí)行后面的程序*/ leddrive(); /*數(shù)碼管驅(qū)動(dòng)程序*/ ea=1;/*cpu開(kāi)放總中斷*/tr0=!tr0;/*啟動(dòng)計(jì)數(shù)器*/ break;/*跳出*/ /*鍵盤(pán)程序*/void key()/*南北有車(chē)而東西無(wú)車(chē)*/ if(k0=0) /*k0=0*/ delay(10);/*延時(shí),把抖動(dòng)的時(shí)間
37、拋掉*/ if(k0=0) while(!k0)/*當(dāng)松開(kāi)k0開(kāi)關(guān)時(shí),跳出循環(huán),執(zhí)行后面的程序*/ light();/*調(diào)用交通燈函數(shù)*/led(); /*調(diào)用數(shù)碼管函數(shù)*/ count=0;/*清零*/ k=0;/*南北方向通車(chē),東西方向不通車(chē)*/ sn=sn_g,we=sn_g+y;/*南北方向顯示時(shí)間為南北方向綠燈通行時(shí)間,東西方向顯示時(shí)間為南北方向綠燈通行時(shí)間加黃燈閃亮?xí)r間*/ /*南北無(wú)車(chē)而東西有車(chē)*/ if(k1=0) /*k1=0*/ delay(10);/*延時(shí),把抖動(dòng)的時(shí)間拋掉*/ if(k1=0) while(!k1)/*當(dāng)松開(kāi)k1開(kāi)關(guān)時(shí),跳出循環(huán),執(zhí)行后面的程序*/ li
38、ght();/*調(diào)用交通燈函數(shù)*/led(); /*調(diào)用數(shù)碼管函數(shù)*/ count=0;/*清零*/ k=2;/*南北方向不通車(chē),東西方向通車(chē)*/ sn=we_g+y,we=we_g;/*南北方向顯示時(shí)間為東西方向綠燈通行時(shí)間加黃燈閃亮?xí)r間,東西方向顯示時(shí)間為東西方向綠燈通行時(shí)間*/ /*定時(shí)函數(shù)*/void time1(void) interrupt 1th0=0x3c;tl0=0xb0;/*計(jì)50000個(gè)數(shù),用時(shí)50ms*/count+; /*自增運(yùn)算*/if(count=20)/*當(dāng)count大于或等于20時(shí),歷時(shí)1s,執(zhí)行程序*/ sn-;/*自減運(yùn)算*/ we-;/*自減運(yùn)算*/ count=0;/*清零*/ if(sn=0|we=0)/*當(dāng)sn=0或者we=0時(shí),執(zhí)行程序*/ k+;/*自增運(yùn)算*/ if(k3)/*當(dāng)k3時(shí),執(zhí)行程序*/ k=0;/*清零*/ switch(k)/*switch語(yǔ)句*/ case 0:sn=sn_g,we=sn_g+y;break;/*南北方向顯示時(shí)間為南北方向綠燈通行時(shí)間,東西方向顯示時(shí)間為南北方向綠燈通行時(shí)間加黃燈閃亮?xí)r間*/ case 1:sn=y,we=y;break; /*東西南北方向顯示時(shí)間均為黃燈閃亮?xí)r間*/ case 2:sn=we_g+y,we=we
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【復(fù)習(xí)大串講】【中職專(zhuān)用】高二語(yǔ)文上學(xué)期期末應(yīng)用文寫(xiě)作專(zhuān)題(職業(yè)模塊)(原卷版)
- 分租店面裝修合同范本
- 農(nóng)機(jī)課題申報(bào)書(shū)怎么寫(xiě)
- 專(zhuān)用預(yù)埋件銷(xiāo)售合同范本
- 友誼合同范本
- 產(chǎn)業(yè)用工合同范本
- 前期物業(yè)托管合同范本
- 豐沃達(dá)采購(gòu)合同范本
- 農(nóng)場(chǎng)民宿到超市合同范本
- 醫(yī)院物業(yè)服務(wù)合同范本格式
- 2021年古包頭市昆都侖區(qū)水務(wù)公司招聘考試試題及答案
- 體檢中心健康知識(shí)講座
- 思維導(dǎo)圖在初中英語(yǔ)復(fù)習(xí)課中的應(yīng)用研究的中期報(bào)告
- 絕對(duì)干貨!國(guó)有企業(yè)總經(jīng)理辦公會(huì)決策事項(xiàng)及總經(jīng)理職責(zé)清單
- 高教社2023馬工程國(guó)際私法學(xué)教學(xué)課件u15
- 蘇教版六年級(jí)下冊(cè)數(shù)學(xué) 用“轉(zhuǎn)化”的策略解決問(wèn)題 教案(教學(xué)設(shè)計(jì))
- 紅領(lǐng)巾監(jiān)督崗檢查記錄表
- 靈山縣城鄉(xiāng)融合發(fā)展奶水牛標(biāo)準(zhǔn)化養(yǎng)殖小區(qū)項(xiàng)目環(huán)境影響報(bào)告書(shū)
- 中小學(xué)生防性侵教育課件主題班會(huì)
- 倉(cāng)儲(chǔ)管理改善計(jì)劃表
- 人教版四年級(jí)音樂(lè)下冊(cè)(簡(jiǎn)譜)全冊(cè)課件【完整版】
評(píng)論
0/150
提交評(píng)論