1 引 言 我國機動(dòng)車(chē)輛發(fā)展迅速,而城鎮道路建設由于歷史等各種原因相對滯后。道路擁擠、阻塞現象及交通事故常有發(fā)生。如何利用當今計算機與自動(dòng)控制技術(shù),有效地疏導交通,提高城鎮交通路口的通行能力,提高車(chē)輛速度,減少交通事故是值得我們研究的新課題。而目前國內利用單片機實(shí)行交通管制這方面應用較少。下面分析用PIC實(shí)現交通燈控制設計方法。 2 硬件設計 本系統選用美國Microchip公司的PICl6F873單片機。配合一些外圍電路完成交通燈自動(dòng)轉換系統。PIC單片機有以下優(yōu)點(diǎn): ①采用哈佛結構(數據總線(xiàn)和指令總線(xiàn)分離)。 ②指令的"單字節化"。 ③精簡(jiǎn)指令集(RISC)技術(shù)。 ④尋址方式簡(jiǎn)單。 ⑤代碼壓縮率的提高。 ⑥運行速度高。 ⑦功耗低、驅動(dòng)能力強。 ⑧具備PC和SPI串行總線(xiàn)端口。 ⑨尋址空間簡(jiǎn)潔。 ⑩外圍電路簡(jiǎn)潔。 ⑾開(kāi)發(fā)方便。 ⑿C語(yǔ)言編程。 ⒀品種豐富。 ⒁程序保密性強。 其指令系統除了程序分支指令是單字節雙周期指令外,其他指令都是單周期、單字節指令。在這些指令中,沒(méi)有功能相交叉的指令,使所有的指令具有簡(jiǎn)潔性,從而執行速度非?。PIC單片機硬件特點(diǎn):PICl6F873型單片機是PIC中級單片機中很有特色的一款,其指令字節為14b。他具有PIC單片機的全部?jì)?yōu)點(diǎn),而且片內還帶有128×8的EzPROM數據存儲器,其程序存儲器(4k×l4b)也與眾不同,采用快閃存儲器?扉W存儲器可以實(shí)現在電路板上快速擦除和寫(xiě)入,最適合制作仿真板。借助于PICl6F873制作的仿真板,我們在程序編寫(xiě)和調試過(guò)程中,可以方便的燒寫(xiě)程序和修改程序。 電路完成功能是:車(chē)輛放行方向上(A線(xiàn))綠燈亮25s,黃燈警告5s,車(chē)輛禁止方向上(B線(xiàn))紅燈亮30s,然后綠燈開(kāi)始放行。各方向上計數器從30開(kāi)始遞減,減到。從新開(kāi)始。設計方框圖如圖1所示,整個(gè)電路由PICl6873所控制,譯碼電路由CD4056和7段數碼管構成,CD4056的功能是將BCD碼轉換成十進(jìn)制數,然后送7段數碼管顯示輸出。6個(gè)發(fā)光二極管用來(lái)模擬雙向十字路口的紅、黃、綠燈。 3 軟件設計 Microchip公司為PIC系列單片機配備了功能強大的軟件集成開(kāi)發(fā)環(huán)境MPLAB,應用MPLAB就能在微機上對PIC系列單片機進(jìn)行程序的創(chuàng )建、錄入、編輯以及匯編,甚至還能實(shí)現程序的模擬運行動(dòng)態(tài)調試(Debug)之類(lèi)的虛擬演練,而且調試可以采用連續運行、單步運行、自動(dòng)單步運行、設置斷點(diǎn)運行等多種運行方式。 3.1 主程序方框圖 主程序框圖如圖2所示。 控制過(guò)程可分為4個(gè)過(guò)程: ①給PORTA送控制碼"0CH",就是給A口的數據寄存器送"00001100''這樣就使A線(xiàn)的綠燈亮,B線(xiàn)的紅燈亮。 ②同樣的給PORTA送"0AH",A線(xiàn)黃燈亮,B線(xiàn)紅燈亮。 ③給PORTA送"21H",A線(xiàn)紅燈亮,B線(xiàn)綠燈亮。 ④給PORTA送"llH",A線(xiàn)紅燈亮,B線(xiàn)黃燈亮。 這樣就完成了紅綠燈的轉換。用A口來(lái)控制雙向路口的紅黃綠燈的閃亮,將控制碼送入A口的數據寄存器PORTA,送1表示輸出高電平、0表示輸出為低電子,PORTA內容輸出就可控制紅黃綠燈的亮暗。 3.2 8位二進(jìn)制轉化成2位BCD碼流程圖 二進(jìn)制到BCD碼轉變流程圖如圖3所示。 如果直接接?段顯示器,就需要2個(gè)輸出端口(PORTC和PORTB),而接上CD4056后只需要1個(gè)輸出端口(PORTC),這樣就可以省出一個(gè)輸出端口(PORTB)用于其功能擴展。二進(jìn)制到BCD碼轉變子程序就是為了利用CD4056能完成功能而編寫(xiě)的。 3.3 延時(shí)子程序流程圖 延時(shí)序中,整個(gè)指令執行的時(shí)間和延時(shí)時(shí)間。使用4 MHz時(shí)鐘,每個(gè)指令周期需要4個(gè)震蕩周期,則每條指令周期為1μs所以單指令周期執行時(shí)間為1μs,雙周期指令為2μs。在這種情況下,秒級的延時(shí)需要三重循環(huán)。 延時(shí)時(shí)間=[(3×255+5) ×255十7] ×5+6=991 785μs=0.991 785 s 所以延時(shí)子程序整個(gè)指令執行時(shí)間(延時(shí)子程序)約1 s。 4 MPLAB-1CD在線(xiàn)調試 MPLAB-ICD是Microchip公司為其PIC單片機中具有片內Flash程序存儲器的PICl6F87X研制的一套廉價(jià)的學(xué)習和開(kāi)發(fā)工具套件。MPLAB-ICD可以用作實(shí)驗階段的評估和輔助調試。他既是一個(gè)編程器(即程序燒寫(xiě)器),又是一個(gè)實(shí)時(shí)仿真和程序燒寫(xiě)器。 用MPLAB-ICD工具套件可以實(shí)現以下工作: ①電路中實(shí)時(shí)運行和調試自己的源程序; ②硬件調試。用自己編制的程序來(lái)調試和檢測自制目標板上的電路; ③程序固化。利用"在線(xiàn)串行編程技術(shù)"將自己設計的目標程序燒寫(xiě)到插在目標板上的PICl6F87X單片機中。 4.1 軟件調試 在應用MPLAB-ICD實(shí)現在線(xiàn)調試時(shí)首先應用MPLAB-ICD提供的一個(gè)范例程序tut877.a(chǎn)sm,他能完成使PORTC口8個(gè)輸出口依次高點(diǎn)平,而MPLAB-ICD在PORTC的8個(gè)口上都接了發(fā)光二極管,那么將程序燒寫(xiě)進(jìn)去后就能完成8個(gè)發(fā)光二極管的依次閃動(dòng)。則程序燒寫(xiě)正確了。 接下來(lái)依次調試子程序。例如在程序調試的后期,程序已經(jīng)基本能完成任務(wù)。因為單部執行時(shí),寄存器內容正確,所以程序正確,只是燒寫(xiě)器有問(wèn)題。所以在程序調試過(guò)程中要細心、耐心,調試時(shí)最好能夠及時(shí)地記錄程序調試的進(jìn)程和已解決的問(wèn)題,這樣有利于調試工作的連續性,調試工作不會(huì )有重復。而且及時(shí)的記錄調試進(jìn)程有利于錯誤的縮小,可以更好地完成調試。 4.2 程序燒寫(xiě) 程序燒寫(xiě)的步驟如下 ①建立一個(gè)十六進(jìn)制調試文件; ②新"項目"; ③項目會(huì )話(huà)窗口; ④設置節點(diǎn)屬性; ⑤增加節點(diǎn); ⑥完成對"項目"的設置; ⑦建立"項目"(Make Project); ⑧對PICl6F873進(jìn)行編程; ⑨運行pro.a(chǎn)sm軟件。 程序燒寫(xiě)完畢后,就可以將單片機插入實(shí)驗板中運行了。 4.3 整體電路設計和安裝調試 原理圖設計出后,就是進(jìn)行原理圖打印和印刷電路板的設計了。這通常是有Protel完成。成形的電路這里不再贅述。 5 結 語(yǔ) 實(shí)驗測試結果證明用本系統PIC單片機能完成交通燈一般控制過(guò)程,但功能還不夠完善,比如交通燈紅、黃、綠時(shí)間還不能按交通緊松完成手控調整,軟件編寫(xiě)實(shí)現功能還不能很好控制硬件人工操作。本系統今后還有待以進(jìn)一步完善,增加更強大功能,比如手控時(shí)間的調節、攝像機交通監控的控制、盲人通過(guò)的交通燈的控制等。 |