交通燈課程設(shè)計(jì)報(bào)告[1]_第1頁(yè)
交通燈課程設(shè)計(jì)報(bào)告[1]_第2頁(yè)
交通燈課程設(shè)計(jì)報(bào)告[1]_第3頁(yè)
交通燈課程設(shè)計(jì)報(bào)告[1]_第4頁(yè)
交通燈課程設(shè)計(jì)報(bào)告[1]_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、一 設(shè)計(jì)內(nèi)容 設(shè)計(jì)一個(gè)十字路口交通燈控制器。模擬東西方向的十字路口交通信號(hào)控制情況。東西向通行時(shí)間為80s,南北向通行時(shí)間為60s,緩沖時(shí)間為3s。A方向紅燈時(shí)間=B方向綠燈時(shí)間+B方向黃燈緩沖時(shí)間,其中A為東西方向,B為南北方向。二 任務(wù)分析 2.1單片機(jī)交通控制系統(tǒng)的通行方案設(shè)計(jì)十字路口分為東西向和南北向,在任一時(shí)刻只有一個(gè)方向通行,另一方向禁行,持續(xù)一定時(shí)間,經(jīng)過(guò)短暫的過(guò)渡時(shí)間,將通行禁行方向?qū)Q。其具體狀態(tài)如下圖所示。說(shuō)明:黑色表示亮,白色表示滅。交通狀態(tài)從狀態(tài)1開(kāi)始變換,直至狀態(tài)4然后循環(huán)至狀態(tài)1,周而復(fù)始,即如圖1所示: 圖1 交通狀態(tài)通過(guò)具體的路口交通燈狀態(tài)的演示分析我們可以把這

2、四個(gè)狀態(tài)歸納如下: 本設(shè)計(jì)中共12只LED分別為東西向和南北向兩組,各組指示燈均有相向的2只紅色、2只黃色與2只綠色的LED,交通燈共四種狀態(tài),分別設(shè)定為S1、S2、S3、S4,交通燈以這四種狀態(tài)為一個(gè)周期,循環(huán)執(zhí)行如圖1所示。通行時(shí)間通過(guò)4個(gè)2位數(shù)碼管以倒計(jì)時(shí)方式循環(huán)顯示。其中狀態(tài)S1:東西方向綠燈亮,允許通行,南北方向紅燈亮,禁止通行; 狀態(tài)S2:東西方向綠燈轉(zhuǎn)黃燈閃爍,允許通行,南北方向紅燈亮,禁止通行;狀態(tài)S3:東西方向紅燈亮,禁止通行,南北方向綠燈亮,允許通行;狀態(tài)S4:東西方向紅燈亮,禁止通行,南北方向綠燈轉(zhuǎn)黃燈閃爍,允許通行; 圖2 交通燈狀態(tài)循環(huán) 依據(jù)上述分析,東西的通行時(shí)間為

3、狀態(tài)S1和狀態(tài)S2的時(shí)間之和,南北的通行時(shí)間為狀態(tài)S3和狀態(tài)S4的時(shí)間之和,因此可以列出各個(gè)路口燈的狀態(tài)轉(zhuǎn)換如表1所示(其中邏輯值“1”代表執(zhí)行通行,邏輯值“0”代表禁止通行,邏輯值“L”代表綠燈轉(zhuǎn)黃燈):表1 交通燈狀態(tài)轉(zhuǎn)換表順序時(shí)間東 西南 北綠燈黃燈紅燈 綠燈 黃燈 紅燈S177s100001S23s0L(閃爍)0001S357s001100S4 3s0010L(閃爍)02.2 單片機(jī)交通控制系統(tǒng)的功能要求 本設(shè)計(jì)能模擬基本的交通控制系統(tǒng),用紅綠黃燈表示禁行,通行和等待的信號(hào)發(fā)生,還能進(jìn)行倒計(jì)時(shí)顯示,通行時(shí)間調(diào)整和緊急處理等功能。程序就是上述四種狀態(tài)下循環(huán)轉(zhuǎn)化的,每四個(gè)狀態(tài)為一個(gè)周期,正

4、常情況下共花費(fèi)140S。三 系統(tǒng)硬件設(shè)計(jì)3.1系統(tǒng)硬件框圖 本系統(tǒng)選用MSC-51系列單片機(jī)AT89C51為中心器件設(shè)計(jì)交通燈控制器,實(shí)現(xiàn)了紅綠燈循環(huán)點(diǎn)亮,綠燈變紅燈中間為黃燈閃爍警示的功能。用共陰顯示驅(qū)動(dòng)芯片MAX7219芯片連接單片機(jī)與4個(gè)共陰數(shù)碼管,顯示十字路口兩個(gè)方向通行或禁止的剩余時(shí)間,減少了對(duì)單片機(jī)引腳和機(jī)器的占用時(shí)間。系統(tǒng)的硬件框圖如圖3所示。圖3 系統(tǒng)硬件框圖3.2單元電路設(shè)計(jì)3.2.1時(shí)鐘電路取原選則:CPU的需要精確的定時(shí),這是用一個(gè)晶體振蕩器產(chǎn)生穩(wěn)定的時(shí)鐘脈沖來(lái)控制的。8051片內(nèi)有一個(gè)有高增益反相放大器所構(gòu)成的震蕩電路,XTAL1和XTAL2分別為震蕩電路的輸入和輸出端

5、,時(shí)鐘可以由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。在XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,組成并聯(lián)諧振回路,從而構(gòu)成一個(gè)穩(wěn)定的自激震蕩器。電容置在530PF之間選擇,電容的大小可起頻率微調(diào)作用。電容選取22uF,晶振為12MHZ。如圖4所示。圖4 時(shí)鐘電路3.2.2復(fù)位電路常見(jiàn)的復(fù)位電路有兩種,上電自動(dòng)復(fù)位、手動(dòng)復(fù)位電路。本設(shè)計(jì)中采用的是上電自動(dòng)復(fù)位。如圖5所示。圖5復(fù)位電路3.2.3交通燈電路本系統(tǒng)采用LED作為交通燈來(lái)使用,單片機(jī)的I/O口直接與LED連接。在十字路口的四組紅、黃、綠三色交通燈中,東西方向的同色燈連接在一起,南北方向的同色燈也彼此連接,受單片機(jī)AT89C51的P0.0P

6、0.5控制。12個(gè)LED指示燈采用共陽(yáng)極的連接方式,因此I/O口輸出低電平時(shí),與之相連的LED會(huì)亮,輸出高電平時(shí),LED熄滅。3.2.4倒計(jì)時(shí)顯示電路該交通燈控制系統(tǒng)在正常工作情況下,為方便提示路上行人及車輛交通燈轉(zhuǎn)換的剩余時(shí)間,專門為控制系統(tǒng)提供了一個(gè)倒計(jì)時(shí)的顯示裝置。該裝置采用2位七段數(shù)碼管來(lái)顯示,每個(gè)路口需要1個(gè),共4個(gè),在設(shè)計(jì)電路時(shí),本系統(tǒng)采用用共陰顯示驅(qū)動(dòng)芯片MAX7219的DIG0DIG1控制4個(gè)數(shù)碼管的循環(huán)動(dòng)態(tài)顯示。MAX7219是一種集成化的串行輸入/輸出共陰極顯示驅(qū)動(dòng)器,它連接微處理器與8位數(shù)字的7段數(shù)字LED顯示,也可以連接條線圖顯示器或者64個(gè)獨(dú)立的LED。其主要的特點(diǎn)是

7、有獨(dú)立的LED段控制。3.3 理論基礎(chǔ)知識(shí)3.3.1定時(shí)器原理定時(shí)器工作的基本原理其實(shí)就是給初值,讓它不斷加1直至減完為模值,這個(gè)初值是送到TH和TL中的。它是以加法記數(shù)的,并能從全1到全0時(shí)自動(dòng)產(chǎn)生溢出中斷請(qǐng)求。因此,我們可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值,即所要求的計(jì)數(shù)值設(shè)定為C,把計(jì)數(shù)初值設(shè)定為TC 可得到如下計(jì)算通式:TC=M-C式中,M為計(jì)數(shù)器模值。計(jì)數(shù)值并不是目的,目的是時(shí)間值,設(shè)計(jì)1次的時(shí)間,即定時(shí)器計(jì)數(shù)脈沖的周期為T0,它是單片機(jī)系統(tǒng)主頻周期的12倍,設(shè)要求的時(shí)間值為T,則有C=TT0。計(jì)算通式變?yōu)椋篢=(MTC)T0模值和計(jì)數(shù)器工作方式有關(guān)。在方式0時(shí)M為8192;在方式1時(shí)M

8、的值為65536;在方式2和3為256。就此可以算出各種方式的最大延時(shí)。如單片機(jī)的主脈沖頻率為12MHZ,經(jīng)過(guò)12分頻后,若采用方式最大延時(shí)只有8.129毫秒,采用方式最大延時(shí)也只有65.536毫秒。這就是為什么掃描周期為50ms的原因,若使用軟件則會(huì)耽擱程序流程,顯然不可行。相反,時(shí)間計(jì)時(shí)方面卻不可能只用計(jì)數(shù)器,因?yàn)轱@然秒鐘已經(jīng)超過(guò)了計(jì)數(shù)器的最大定時(shí)間,所以我們還必須采用定時(shí)器和軟件相結(jié)合的辦法才能解決這個(gè)問(wèn)題。3.3.2軟件延時(shí)原理MCS-51的工作頻率為12MHZ,機(jī)器周期與主頻有關(guān),機(jī)器周期是主頻的12倍,所以一個(gè)機(jī)器周期的時(shí)間為12*(1/12MHZ)=1us。我們可以知道具體每條指

9、令的周期數(shù),這樣我們就可以通過(guò)指令的執(zhí)行條數(shù)來(lái)確定1秒的時(shí)間,但同時(shí)由于單片機(jī)的運(yùn)行速度很快其他的指令執(zhí)行時(shí)間可以忽略不計(jì)。3.3.3 中斷原理本系統(tǒng)主要使用了外部中斷,中斷信號(hào)有引腳INT0和INT1輸入,低電平有效,CPU每個(gè)時(shí)鐘周期都會(huì)檢測(cè)INT0和INT1上的信號(hào),8051允許外部中斷以電平方式或負(fù)邊沿方式兩種中斷方式輸入中斷請(qǐng)求信號(hào),可由用戶通過(guò)設(shè)置TCON中IT0和IT1位的狀態(tài)來(lái)實(shí)現(xiàn)。以IT0為例,IT0=0,為電平觸發(fā)方式,IT0=1,為負(fù)邊沿觸發(fā)方式,本設(shè)計(jì)采用電平方式,IE0為其中斷標(biāo)志位,有中斷信號(hào)則置位,中斷服務(wù)子程序響應(yīng)后,IE0自動(dòng)清零。IE中的EA為允許中斷的總控

10、制位,為1開(kāi)啟,EX0為外部中斷允許控制位,為1開(kāi)啟。在優(yōu)先級(jí)的允許下,一旦有外部中斷信號(hào)產(chǎn)生,單片機(jī)CPU首先保護(hù)斷點(diǎn),PC值進(jìn)棧,然后執(zhí)行相應(yīng)的中斷服務(wù)子程序,執(zhí)行完后,用RETI指令返回,此時(shí)CPU會(huì)從堆棧中取保存的斷點(diǎn)地址,送回PC,程序再正常執(zhí)行。 四 系統(tǒng)軟件設(shè)計(jì)使用proteus軟件進(jìn)行電路仿真,芯片AT89C51還需要載入代碼文件來(lái)支持其正常工作以實(shí)現(xiàn)預(yù)期功能要求。程序代碼編寫是整塊設(shè)計(jì)的核心內(nèi)容,本系統(tǒng)中利用一個(gè)定時(shí)器T0完成了交通指示燈所有的切換過(guò)程和數(shù)碼管的倒計(jì)時(shí)功能,其中指示燈的切換有4種不同的操作,用變量Operation_Type表示當(dāng)前的操作類型,數(shù)碼管的切換有2

11、種不同的操作,用變量i表示狀態(tài)的切換。采用C語(yǔ)言進(jìn)行編程,下面簡(jiǎn)要介紹下各段程序代碼的意義和功能。4.1主程序框圖主程序?yàn)榻煌羲膫€(gè)狀態(tài)循環(huán)轉(zhuǎn)換的死循環(huán),主程序代碼和程序框圖如圖6所示。 void main()/主程序 Initialise(); TMOD = 0x01;/定時(shí)器0工作在方式1 IE=0x82;/允許定時(shí)器0中斷 TR0=1;/啟動(dòng)定時(shí)器 while(1); 全部控制程序?qū)嶋H上分為若干模塊:鍵盤設(shè)置處理程序,狀態(tài)燈控制程序,LED顯示程序緊停程序,中斷服務(wù)子程序,紅綠燈時(shí)間調(diào)整程序等。整個(gè)軟件程序方面主要分兩大部分:主程序部分和中斷處理程序。開(kāi)始系統(tǒng)初始化東西亮綠燈,南北亮紅燈

12、調(diào)顯示子程序(動(dòng)態(tài)顯示)東西,南北方向換向東西黃燈閃爍,南北亮紅燈燈中斷處理子程序處理返回圖6 主程序框圖 設(shè)計(jì)說(shuō)明:該智能交通燈控制系統(tǒng)的軟件設(shè)計(jì)采用的是順序執(zhí)行并反復(fù)循環(huán)的方法。智能交通燈控制系統(tǒng)在正常工作的情況下,每140s循環(huán)變化一次。每個(gè)循環(huán)周期在還剩3s時(shí),正在通行路口的黃燈同時(shí)點(diǎn)亮并開(kāi)始閃爍,以提醒路人上的行人及車輛,交通燈即將發(fā)生變化。4.2 過(guò)程流程圖 圖7 過(guò)程流程圖 五 調(diào)試分析及所用器件5.1 調(diào)試環(huán)境本設(shè)計(jì)使用仿真軟件Proteus和Keil C進(jìn)行聯(lián)合調(diào)試。原理圖在Proteus提供的模板中選擇恰當(dāng)?shù)脑骷M(jìn)行設(shè)計(jì)繪圖,完成電路的搭建,發(fā)現(xiàn)設(shè)計(jì)中的錯(cuò)誤及時(shí)改正。所有

13、c語(yǔ)言源程序都在Keil C下編寫,對(duì)仿真軟件進(jìn)行相應(yīng)的設(shè)置后,Keil C和Proteus能進(jìn)行通信,即在Keil C中全速運(yùn)行程序時(shí),Proteus中的單片機(jī)系統(tǒng)也會(huì)自動(dòng)運(yùn)行。系統(tǒng)的軟件調(diào)試借助于TKS仿真器,在進(jìn)行系統(tǒng)軟件的連續(xù)調(diào)試之前要先進(jìn)行軟件的初調(diào),就是要使各個(gè)子程序模塊運(yùn)行正確,程序的運(yùn)行流程正確。軟件調(diào)試主要分以下幾個(gè)步驟進(jìn)行:1 功能子程序的調(diào)試。能子程序的調(diào)試包括運(yùn)算、采樣、數(shù)字濾波以及PID運(yùn)算等子程序的調(diào)試。在調(diào)試功能子程序時(shí),許多參數(shù)都是未知的,要根據(jù)其所需的條件,給出假定的數(shù)據(jù),使其運(yùn)行,如果能完成預(yù)定的處理功能或與手工計(jì)算的結(jié)果相符,就說(shuō)明該子程序己調(diào)試通過(guò)。調(diào)試

14、時(shí)由小到大,由里到外。例如,調(diào)試PID算法子程序時(shí),先調(diào)通其包含的各個(gè)運(yùn)算子程序和參數(shù)處理子程序,然后將它們連起來(lái)進(jìn)行通調(diào)。通調(diào)時(shí),也是假定一些數(shù)據(jù)、參數(shù)和初始條件,然后運(yùn)行程序。當(dāng)運(yùn)算結(jié)果與手工計(jì)算的結(jié)果相同時(shí),該算法子程序則調(diào)試完成,反之,就要進(jìn)行相應(yīng)的修改。其它子程序的調(diào)試同理;2 程序流程的調(diào)試。序流程的調(diào)試主要是查看程序運(yùn)行的步驟是否正確,在某時(shí)刻程序運(yùn)行所處的位置是否正確,是否能正確運(yùn)行各個(gè)中斷服務(wù)程序。在調(diào)試過(guò)程中,先將PID算法子程序屏蔽,輸出可控硅導(dǎo)通時(shí)間用一個(gè)固定的常數(shù)代替,在各個(gè)中斷服務(wù)子程序設(shè)置斷點(diǎn),然后運(yùn)行程序,查看程序是否能運(yùn)行到所有的斷點(diǎn),若所有斷點(diǎn)都能運(yùn)行到,則

15、程序流程基本正確。去掉所有斷點(diǎn),再一次運(yùn)行程序,查看可控硅狀態(tài),從而判斷程序流程正確,反之,若程序流程不正確,做相應(yīng)的修改后,重新調(diào)試;3 功能程序與算法程序的通調(diào)。完成整個(gè)程序流程的調(diào)試后,將PID等算法子程序加入,在算法子程序前或后設(shè)置斷點(diǎn),運(yùn)行整個(gè)程序。當(dāng)程序在斷點(diǎn)處暫停時(shí),查看PID計(jì)算的控制量與手工計(jì)算的值是否相同。多運(yùn)行幾次,若每次的結(jié)果都正確,則說(shuō)明程序各個(gè)部分互相沒(méi)有矛盾,反之,則說(shuō)明算法子程序和其它子程序之間有影響,需要做相應(yīng)的修改后重新調(diào)。5.2所用芯片及參數(shù) 表5-1 所用芯片及參數(shù)序號(hào)名稱元件編號(hào)參數(shù)數(shù)量1單片機(jī)AT89C5112顯示驅(qū)動(dòng)器MAX721913指示燈LED

16、-REDGREENYELLOW12(各4個(gè))47段數(shù)碼管7SEG-MPX2-CC45電容CAP22pF26晶振 CRYSTAL12Mhz17電阻RES10k38電解電容CAP-ELEC10F1 六 心得體會(huì)這次是我認(rèn)為最有意義的一次課程設(shè)計(jì),從原理圖設(shè)計(jì)到軟件仿真,我從中收獲了許多。設(shè)計(jì)剛開(kāi)始時(shí),我就在學(xué)校中門仔細(xì)觀察路口交通燈,經(jīng)過(guò)研究思考最終得到了上述的交通燈狀態(tài)轉(zhuǎn)換表。 對(duì)于交通燈這個(gè)題目,由于以前學(xué)單片機(jī)這個(gè)課程時(shí),做過(guò)類似相關(guān)的實(shí)驗(yàn),覺(jué)得這個(gè)比較簡(jiǎn)單而且做出的東西也比較直觀,在確定題目之后,查閱了大量的資料,初步完成了電路設(shè)計(jì)方案。 我選擇了用c語(yǔ)言進(jìn)行編程,在編寫倒計(jì)時(shí)顯示遇到了困

17、難,因?yàn)椴涣私庑酒琈AX7219的顯示原理。通過(guò)查閱資料,克服了困難,很有成就感。在整個(gè)程序的編寫過(guò)程中,研究每個(gè)子程序是否好使,我是通過(guò)Keil 和proteus兩個(gè)軟件來(lái)實(shí)現(xiàn)的。Keil 則幫助我檢查程序是否存在語(yǔ)法錯(cuò)誤之類的問(wèn)題,還可以生成hex文件,供proteus軟件仿真使用。通過(guò)幾天的編寫,程序最終無(wú)誤并且在仿真中實(shí)現(xiàn)了預(yù)定的功能。 七 參考文獻(xiàn)1張毅坤. 單片微型計(jì)算機(jī)原理及應(yīng)用,西安電子科技大學(xué)出版社 1998 2夏繼強(qiáng). 單片機(jī)實(shí)驗(yàn)與實(shí)踐教程. 北京:北京航空航天大學(xué)出版社, 20013彭偉. 單片機(jī)C語(yǔ)言程序設(shè)計(jì)100例.北京:電子工業(yè)出版社, 20095雷麗文. 微機(jī)原理

18、與接口技術(shù).北京:電子工業(yè)出版社, 20016于永. 51單片機(jī)C語(yǔ)言常用模塊與綜合系統(tǒng)設(shè)計(jì).北京:電子工業(yè)出版社, 20077譚浩強(qiáng). C語(yǔ)言程序設(shè)計(jì).北京:清華大學(xué)出版社, 20058于永. 51單片機(jī)C語(yǔ)言常用模塊與綜合系統(tǒng)設(shè)計(jì).北京:電子工業(yè)出版社, 2007八 程序代碼#include #include #define uchar unsigned char#define uint unsigned int sbit RED_A = P00;sbit YELLOW_A = P01;sbit GREEN_A = P02;sbit RED_B = P10;sbit YELLOW_B =

19、P11;sbit GREEN_B = P12;sbit DIN=P30;sbit LOAD=P31;sbit CLK=P32;uchar Flash_Count = 0, Operation_Type = 1,Time_Count=0,hh=1,i=80,mm=1,tt=9; /寫數(shù)據(jù)void Write(uchar Addr,uchar Dat) uchar i; LOAD=0; for(i=0;i8;i+) CLK=0;Addr=1;DIN=CY; CLK=1;_nop_();_nop_(); CLK=0; for(i=0;i8;i+) CLK=0;Dat=1;DIN=CY; CLK=1;

20、_nop_();_nop_(); CLK=0; LOAD=1;/MAX7219初始化void Initialise() Write(0x09,0x3f);/編碼模式地址 Write(0x0a,0x07);/亮度地址 Write(0x0b,0x01);/掃描數(shù)碼管個(gè)數(shù)地址 Write(0x0c,0x01);/工作模式地址/T0中斷子程序void T0_INT() interrupt 1 TH0=-50000/256;/設(shè)定50ms定時(shí)初值TL0=-50000%256;if(tt-=0)/50ms*10=500mstt=9;if(hh- =0)/500ms*2=1shh=1;Write(1,i/0x0a);/數(shù)碼管寫數(shù)據(jù)Write(2,i%0x0a); if(i-=0)/初始化時(shí)定義i=80if(mm=0)/判斷語(yǔ)句 mm=1;i=80;else mm= 0; i=60; switch (Operation_Type) case 1:/東西向綠燈,南北向紅燈 RED_A = 1; YELLOW_A = 1; GREEN_A = 0; RED_B = 0; YELLOW_B = 1; GREEN_B = 1; if(+Time_Count!=155) return;/500ms*(2*77)=77s Time_Count = 0; O

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論