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