|
基于單片機(jī)的交通燈控制系統(tǒng)
摘要:本文根據(jù)AT89C51單片機(jī)的特點(diǎn)及交通燈在實(shí)際控制中的特點(diǎn),提出了一種用單片機(jī)自動(dòng)控制交通燈以及時(shí)間顯示的方法,同時(shí)給出了軟硬件設(shè)計(jì)的方法。設(shè)計(jì)的過程包括硬件電路設(shè)計(jì)和程序設(shè)計(jì)兩大步驟,對(duì)在單片機(jī)應(yīng)用中可能遇到的重要設(shè)計(jì)問題都有涉足。本系統(tǒng)采用單片機(jī)作為核心控制器,通過紅外檢測(cè)系統(tǒng)來測(cè)量東西方向和南北方向的車流量大小,經(jīng)過簡(jiǎn)單的算法得出紅綠燈時(shí)間。然后分別用紅、黃、綠燈的不同組合來指揮兩個(gè)方向的通車與禁行,用LED數(shù)碼管作為倒計(jì)時(shí)指示,實(shí)時(shí)地控制當(dāng)前交通燈時(shí)間使LED顯示器進(jìn)行倒計(jì)時(shí)工作并與狀態(tài)燈保持同步,在保持交通安全的同時(shí)最大限度地提高交通能順暢交替運(yùn)行,從而實(shí)現(xiàn)十字路口的智能交通控制。
關(guān)鍵詞:?jiǎn)纹瑱C(jī);交通燈;紅外檢測(cè);智能控制
Abstract: This paper according to characteristics of the AT89C51 single-chip microcomputer and the characteristics of the traffic lights in the actual control of the proposed a single-chip microcomputer automatic control traffic lights and time display method, and gives the hardware and software design method. Design process, including hardware circuit design and software design two major steps, on the important design issues that may be encountered in the application of SCM involved. This system uses the monolithic integrated circuit as the core controller, through the infrared detection system to measure the east-west and north-south direction the volume of traffic, the red and green light time was obtained through simple algorithm. Then respectively, with red, yellow and green light for different combinations of to command two The opening of the direction and the forbidden line, with LED digital tube as a countdown to the instructions, real-time control the traffic lights time led display countdown work and maintain the synchronization with the state of light, while maintaining the traffic safety and maximize the increase traffic to alternate running smoothly, so as to realize the crossroads of the intelligent traffic control.
Key words: single chip microcomputer; traffic lights; infrared detection; intelligent control
1 緒論
1858年,在英國(guó)倫敦主要街頭安裝了以燃煤氣為光源的紅、藍(lán)兩色的機(jī)械扳手式信號(hào)燈,用以指揮馬車通行,這是世界上最早的交通信號(hào)燈。1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。信號(hào)燈的出現(xiàn),使交通得以有效管制,對(duì)于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。1968年,聯(lián)合國(guó)《道路交通和道路標(biāo)志信號(hào)協(xié)定》對(duì)各種信號(hào)燈的含義作了規(guī)定:綠燈是通行信號(hào),面對(duì)綠燈的車輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行。紅燈是禁行信號(hào),面對(duì)紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號(hào),面對(duì)黃燈的車輛不能越過停車線。
1.1研究意義
隨著社會(huì)經(jīng)濟(jì)快速發(fā)展,汽車數(shù)量的急劇增加,給城市交通帶來了極大的壓力。特別是在上下班高峰期,巨大的車流量使得道路擁擠,造成了不必要的時(shí)間浪費(fèi)與經(jīng)濟(jì)損失。由此可見,交通擁塞已成為一個(gè)國(guó)際性的問題。因此,設(shè)計(jì)可靠、安全、便捷的智能交通燈控制系統(tǒng)有極大的現(xiàn)實(shí)必要性。而社會(huì)上正在使用的交通控制系統(tǒng)主要有兩個(gè)缺陷:1、車道放行車輛時(shí),時(shí)間設(shè)定相同且固定,十字路口經(jīng)常出現(xiàn)主車道車輛多,放行時(shí)間短,車流無法在規(guī)定時(shí)間內(nèi)通過,而副車道車輛少,放行時(shí)間明顯過長(zhǎng);2、未考慮急車強(qiáng)通(例如,消防車執(zhí)行緊急任務(wù)時(shí),兩車道都應(yīng)等待消防車通過)。由于交通信號(hào)燈控制系統(tǒng)缺乏有效的應(yīng)急措施,導(dǎo)致十字路口交通受阻,造成不必要的經(jīng)濟(jì)損失[18]。
本系統(tǒng)利用AT89C51單片機(jī)[1],實(shí)現(xiàn)了根據(jù)區(qū)域車流量、紅外檢測(cè)或者人為操作進(jìn)行十字路口交通信號(hào)燈智能控制[2],并在軟硬件方面采取一些改進(jìn)措施,實(shí)現(xiàn)了根據(jù)十字路口車流、紅外檢測(cè)量進(jìn)行交通信號(hào)燈智能控制,并且在緊急情況下,可以使用緊急按鍵使兩路口都為紅燈,讓緊急車輛通過后再恢復(fù)正常通車,這樣,交通信號(hào)燈現(xiàn)場(chǎng)控制靈活、有效,從一定程度上解決了交通路口堵塞、車輛停車等待時(shí)間不合理等問題,并可通過人為控制來解決緊急車輛強(qiáng)通問題。該系統(tǒng)具有結(jié)構(gòu)簡(jiǎn)單、可靠性高、成本低、實(shí)時(shí)性好、安裝維護(hù)方便等優(yōu)點(diǎn),并且具有良好的擴(kuò)展完善特點(diǎn),有廣泛的應(yīng)用前景。
1.2交通燈研究現(xiàn)狀
1.2.1 國(guó)內(nèi)城市交通現(xiàn)狀
汽車進(jìn)入家庭步伐的加快和城市汽車數(shù)量的增多, 城市道路交通問題顯得越來越重要。我們?cè)隈R路上經(jīng)常會(huì)看到這種現(xiàn)象: 一旦整個(gè)路口的交通信號(hào)燈出現(xiàn)故障, 若沒有交警的及時(shí)疏導(dǎo), 該路口就會(huì)塞得一塌糊涂。原交通信號(hào)控制大都采用繼電器實(shí)現(xiàn), 存在著功能少、可靠性差、維護(hù)量大等缺點(diǎn),越來越不能適應(yīng)城市道路交通高速發(fā)展的要求。另外, 根據(jù)人車流量的多少, 可能隨時(shí)增加路口的交通信號(hào), 比如增加轉(zhuǎn)彎或人行道交通信號(hào), 原有系統(tǒng)的制約性就更明顯了。交通問題在現(xiàn)在乃至將來的一段時(shí)間內(nèi)仍是制約國(guó)內(nèi)各大中城市發(fā)展的主要問題之一。
以北京為例,“開車沒有騎車快,坐車沒有走路快”,這種現(xiàn)象在北京交通高峰時(shí)段已是見怪不怪。當(dāng)年,奧委會(huì)在《申辦城市手冊(cè)》中談到交通問題時(shí)指出:“成功舉辦奧運(yùn)會(huì)的關(guān)鍵因素是要有一個(gè)有效的交通系統(tǒng)”,而“北京正面臨著經(jīng)濟(jì)發(fā)展和城市快速擴(kuò)展而產(chǎn)生的交通需求挑戰(zhàn)”,從而可見一個(gè)有效的先進(jìn)的交通系統(tǒng)的重要性。
目前各城市都在不斷改善交通設(shè)施,改進(jìn)各十字路口交通燈控制方式,都得到了很好的效果。
1.2.2 國(guó)際先進(jìn)成果
智能控制交通系統(tǒng)是目前研究的方向,也已經(jīng)取得不少成果,在少數(shù)幾個(gè)先進(jìn)國(guó)家已采用智能方式來控制交通信號(hào),其中主要運(yùn)用GPS全球定位系統(tǒng)等。出于便捷和效果的綜合考慮,可以制作傳感器探測(cè)車輛數(shù)量來控制交通燈的時(shí)長(zhǎng)。具體如下:在入路口的各個(gè)方向附近的地下按要求埋設(shè)感應(yīng)線圈,當(dāng)汽車經(jīng)過時(shí)就會(huì)產(chǎn)生渦流損耗,環(huán)狀絕緣電線的電感開始減少,即可檢測(cè)出汽車的通過,并將這一信號(hào)轉(zhuǎn)換為標(biāo)準(zhǔn)脈沖信號(hào)作為單片機(jī)的控制輸入,并用單片機(jī)的計(jì)數(shù)器計(jì)數(shù),按一定控制規(guī)律自動(dòng)調(diào)節(jié)紅綠燈的時(shí)長(zhǎng)。比較傳統(tǒng)的定時(shí)交通燈控制與智能交通燈控制,可知后者的最大優(yōu)點(diǎn)在于減緩滯流現(xiàn)象,也不會(huì)出現(xiàn)空道占時(shí)的情形,提高了公路交通通行率。目前,基于單片機(jī)的智能交通系統(tǒng)在國(guó)內(nèi)外還處于研究發(fā)展階段,但已取得了很大的研究成果,得到了豐富的理論知識(shí)。
1.3 研究?jī)?nèi)容
綜合研究和分析國(guó)內(nèi)外交通燈的研究技術(shù)以及方向,總結(jié)各類檢測(cè)車流量技術(shù)的特點(diǎn)和應(yīng)用前景,利用現(xiàn)有的檢測(cè)技術(shù)和控制技術(shù)設(shè)計(jì)一種基于51單片機(jī)的交通燈智能控制的裝置。本次畢業(yè)設(shè)計(jì)設(shè)計(jì)一個(gè)主動(dòng)式紅外對(duì)射式傳感器和單片機(jī)在交通系統(tǒng)中的應(yīng)用設(shè)計(jì),基本研究?jī)?nèi)容有以下幾點(diǎn):
1)學(xué)習(xí)并熟悉單片機(jī)的基本結(jié)構(gòu)、引腳功能說明等硬件方面的知識(shí)。
2)在傳感器上,主要使用的是紅外傳感器,在這方面我們要了解傳感器的工作原理,傳感器是該系統(tǒng)的檢測(cè)部分的核心之一,它關(guān)系到其它各個(gè)部分的運(yùn)行和操作。
3)學(xué)會(huì)利用多種語言編寫單片機(jī)的程序,特別是高級(jí)語言的使用會(huì)極大地降低編寫程序的復(fù)雜性。
4)在電路方面,我們要了解電路的作用,電路的工作原理,電路的設(shè)計(jì)原理,加深我們對(duì)電路知識(shí)的學(xué)習(xí)。
5)要熟悉系統(tǒng)設(shè)計(jì)思路,組織電路的設(shè)計(jì),了解整個(gè)電路的聯(lián)系,將其組成一個(gè)整體,實(shí)現(xiàn)最終的設(shè)計(jì)思路。
2 總體方案設(shè)計(jì)
本文是采用了以AT89C51單片機(jī)為核心的控制方案。方案中通過遮光式的紅外傳感器來檢測(cè)東西方向和南北方向的車流量大小,再經(jīng)過一定的簡(jiǎn)單算法算出各方向上的紅綠燈時(shí)間并在數(shù)碼管顯示器上顯示倒計(jì)時(shí),同時(shí)通過路口上的紅綠燈的點(diǎn)亮與熄滅控制車輛的通行與停止。另外,方案中還設(shè)計(jì)一個(gè)緊急車輛通行按鍵,每當(dāng)有緊急車輛需要通過時(shí),操作員按下按鍵,東西方向和南北方向上均為紅燈,并發(fā)出警報(bào)禁止普通車輛的通行,先讓緊急車輛通過。東西、南北兩干道交于一個(gè)十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車輛安全通行。紅燈亮禁止通行,綠燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換,且黃燈燃亮?xí)r間為東西、南北兩干道的公共停車時(shí)間,指示燈燃亮的方案如表2-1。
表2-1 指示燈的燃亮方案表
(T1-3)s 3s (T2-3)s 3s ……
東西道 紅燈亮 黃燈亮 綠燈亮 黃燈亮 ……
南北道 綠燈亮 黃燈亮 紅燈亮 黃燈亮 ……
表2-1說明:
(1)當(dāng)東西方向?yàn)榧t燈,此道車輛禁止通行;南北道為綠燈,此道車輛通過。時(shí)間為(T1-3)秒。
(2)黃燈閃爍3秒,警示車輛紅、綠燈的狀態(tài)即將切換。
(3)當(dāng)東西方向?yàn)榫G燈,此道車輛通行;南北方向?yàn)榧t燈,南北道車輛禁止通過。時(shí)間為(T2-3)秒。
(4)這樣如上表的時(shí)間和紅、綠、黃出現(xiàn)的順序依次出現(xiàn)這樣車輛就能安全暢通的通行。另外,在緊急情況下,操作員可以通過緊急按鍵K1,使兩路口均是紅燈,禁止普通車輛通行,先讓緊急車輛(例如救護(hù)車等)通過。
注:時(shí)間T1和T2均由紅外傳感器檢測(cè)電路測(cè)的。另外,在交通燈的燃亮指示表中,東西(南北)方向綠燈的點(diǎn)亮?xí)r間為(T1-3)(南北方向綠燈為(T2-3)),這是因?yàn)檠h(huán)時(shí)間段T1(T2)包括綠燈和黃燈的時(shí)間,扣除的3秒鐘為黃燈的點(diǎn)亮?xí)r間,所以從時(shí)間段T1(T2)扣除黃燈的3秒鐘即為東西方向的綠燈點(diǎn)亮?xí)r間(南北方向的綠燈點(diǎn)亮?xí)r間)。
3 硬件設(shè)計(jì)
本系統(tǒng)利用AT89C51單片機(jī)作為系統(tǒng)的核心控制部件,利用其定時(shí)器/計(jì)數(shù)器作為紅外傳感器的接收端,通過高低電平的變化來統(tǒng)計(jì)通過檢測(cè)區(qū)域的車流量,然后通過軟件計(jì)時(shí)來控制接在P0端口的紅綠燈的點(diǎn)亮與熄滅狀態(tài),并在8段數(shù)碼管(接在P1和P2端口)上顯示倒計(jì)時(shí)。系統(tǒng)的電路圖主要由電源電路、遮光式紅外傳感器檢測(cè)電路、紅綠燈顯示電路、紅綠燈時(shí)間倒計(jì)時(shí)電路以及緊急按鍵K1電路等電路組成。系統(tǒng)的基本原理框圖如圖3-1所示:
圖3-1 系統(tǒng)的基本原理框圖
下面從各個(gè)電路分別加以說明,首先介紹一下單片機(jī)。
3.1 單片機(jī)概述
單片機(jī)[3]也被稱為微控制器(Microcontroller),是因?yàn)樗钤绫挥迷诠I(yè)控制領(lǐng)域。單片機(jī)由芯片內(nèi)僅有CPU的專用處理器發(fā)展而來。最早的設(shè)計(jì)理念是通過將大量外圍設(shè)備和CPU集成在一個(gè)芯片中,使計(jì)算機(jī)系統(tǒng)更小,更容易集成進(jìn)復(fù)雜的而對(duì)體積要求嚴(yán)格的控制設(shè)備當(dāng)中。INTEL的Z80[16]是最早按照這種思想設(shè)計(jì)出的處理器,從此以后,單片機(jī)和專用處理器的發(fā)展便分道揚(yáng)鑣。
早期的單片機(jī)都是8位或4位的。其中最成功的是INTEL的8031,因?yàn)楹?jiǎn)單可靠而性能不錯(cuò)獲得了很大的好評(píng)。此后在8031上發(fā)展出了MCS51系列單片機(jī)系統(tǒng)。基于這一系統(tǒng)的單片機(jī)系統(tǒng)直到現(xiàn)在還在廣泛使用。隨著工業(yè)控制領(lǐng)域要求的提高,開始出現(xiàn)了16位單片機(jī),但因?yàn)樾詢r(jià)比不理想并未得到很廣泛的應(yīng)用。90年代后隨著消費(fèi)電子產(chǎn)品大發(fā)展,單片機(jī)技術(shù)得到了巨大提高。隨著INTEL i960系列特別是后來的ARM系列的廣泛應(yīng)用,32位單片機(jī)迅速取代16位單片機(jī)的高端地位,并且進(jìn)入主流市場(chǎng)。而傳統(tǒng)的8位單片機(jī)的性能也得到了飛速提高,處理能力比起80年代提高了數(shù)百倍。目前,高端的32位單片機(jī)主頻已經(jīng)超過300MHz,性能直追90年代中期的專用處理器,而普通的型號(hào)出廠價(jià)格跌落至1美元,最高端[1]的型號(hào)也只有10美元。當(dāng)代單片機(jī)系統(tǒng)已經(jīng)不再只在裸機(jī)環(huán)境下開發(fā)和使用,大量專用的嵌入式操作系統(tǒng)被廣泛應(yīng)用在全系列的單片機(jī)上。而在作為掌上電腦和手機(jī)核心處理的高端單片機(jī)甚至可以直接使用專用的Windows和Linux操作系統(tǒng)。
單片機(jī)比專用處理器更適合應(yīng)用于嵌入式系統(tǒng)[17],因此它得到了最多的應(yīng)用。事實(shí)上單片機(jī)是世界上數(shù)量最多的計(jì)算機(jī)�,F(xiàn)代人類生活中所用的幾乎每件電子和機(jī)械產(chǎn)品中都會(huì)集成有單片機(jī)。手機(jī)、電話、計(jì)算器、家用電器、電子玩具、掌上電腦以及鼠標(biāo)等電腦配件中都配有1-2部單片機(jī)。而個(gè)人電腦中也會(huì)有為數(shù)不少的單片機(jī)在工作。汽車上一般配備40多部單片機(jī),復(fù)雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百臺(tái)單片機(jī)在同時(shí)工作!單片機(jī)的數(shù)量不僅遠(yuǎn)超過PC機(jī)和其他計(jì)算的總和,甚至比人類的數(shù)量還要多。
單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。相當(dāng)于一個(gè)微型的計(jì)算機(jī),和計(jì)算機(jī)相比,單片機(jī)只缺少了I/O設(shè)備。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最佳選擇。
本文中使用的AT89C51單片機(jī)是MCS-51系列單片機(jī)的典型產(chǎn)品,我們以這一代表性的機(jī)型進(jìn)行系統(tǒng)的講解。8951單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明:
·中央處理器:
中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。
·數(shù)據(jù)存儲(chǔ)器(RAM):
8951內(nèi)部有128個(gè)8位用戶數(shù)據(jù)存儲(chǔ)單元和128個(gè)專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個(gè),可存放讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶定義的字型表。
·程序存儲(chǔ)器(ROM):
8951共有4096個(gè)8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。
·定時(shí)/計(jì)數(shù)器(ROM):
8951有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。
·并行輸入輸出(I/O)口:
8951共有4組8位I/O口(P0、 P1、P2或P3),用于對(duì)外部數(shù)據(jù)的傳輸。
·全雙工串行口:
8951內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。
·中斷系統(tǒng):
8951具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿足不同的控制要求,并具有2級(jí)的優(yōu)先級(jí)別選擇。
·時(shí)鐘電路:
8951內(nèi)置最高頻率達(dá)12MHz的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但8951單片機(jī)需外置振蕩電容。
AT89C51單片機(jī)的外形結(jié)構(gòu)為40條引腳雙列直插式封裝,下面是單片機(jī)的引腳圖,以及簡(jiǎn)單的管腳說明[4]:
圖3-2 單片機(jī)的引腳圖
VCC(40腳):供電電壓。
GND(20腳):接地。
XTAL1(19腳):反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。
XTAL2(18腳):來自反向振蕩器的輸出。
振蕩器特性:
XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。
RST(9腳):復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。
ALE/PROG(30腳):當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。
/PSEN(29腳):外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。
/EA/VPP(31腳):當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。
P0口(32-39腳):P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。
P1口(1-8腳):P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。
P2口(21-28腳):P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。
P3口(10-17腳):P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。
P3口也可作為AT89C51的一些特殊功能口,如下表所示:
P3口管腳 備選功能
P3.0(10腳):RXD(串行輸入口)
P3.1(11腳):TXD(串行輸出口)
P3.2(12腳):/INT0(外部中斷0)
P3.3(13腳):/INT1(外部中斷1)
P3.4(14腳):T0(記時(shí)器0外部輸入)
P3.5(15腳):T1(記時(shí)器1外部輸入)
P3.6(16腳):/WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)
P3.7(17腳):/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)
P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。
3.2 電源電路
電源采用輸出為正5V直流電壓的穩(wěn)壓電源電路[7]。IC采用集成穩(wěn)壓器7805三端穩(wěn)壓器。它是一種標(biāo)準(zhǔn)化、系列化的通用線性穩(wěn)壓電源集成電路,以其體積小、成本低、性能好、工作可靠性高、使用簡(jiǎn)捷方便等特點(diǎn),成為目前穩(wěn)壓電源中應(yīng)用最為廣泛的一種單片式集成穩(wěn)壓器件。當(dāng)輸出電流較大時(shí),7805應(yīng)配上散熱板。C3為輸入端濾波電容,C5為輸出端濾波電容。如圖3-3所示:
圖3-3 電源電路
本系統(tǒng)采用220V交流電電源,經(jīng)過5V適配器濾波后,在固定式三端穩(wěn)壓器LM7805的Vin和GND兩端形成一個(gè)并不十分穩(wěn)定的直流電壓(該電壓常常會(huì)因?yàn)槭须婋妷旱牟▌?dòng)或負(fù)載的變化等原因而發(fā)生變化)。此直流電壓經(jīng)過LM7805的穩(wěn)壓和電容的濾波便在穩(wěn)壓電源的輸出端產(chǎn)生了精度高、穩(wěn)定度好的直流輸出電壓。
3.3 檢測(cè)電路
檢測(cè)電路是本系統(tǒng)能夠?qū)崿F(xiàn)智能控制紅綠燈時(shí)間的關(guān)鍵。檢測(cè)電路的核心是紅外傳感器,下面首先對(duì)紅外傳感器做一個(gè)簡(jiǎn)單地介紹:
3.3.1 紅外傳感器的發(fā)展
傳感器被定義為能感受規(guī)定的被測(cè)量并按照一定的規(guī)律轉(zhuǎn)換成可用輸出信號(hào)的器件或裝置,通常由敏感元件和轉(zhuǎn)換元件組成。
紅外傳感器[5]是利用物體產(chǎn)生紅外輻射的特性,實(shí)現(xiàn)自動(dòng)檢測(cè)的傳感器。在物理學(xué)中,我們就已經(jīng)知道可見光、不可見光、紅外光及無線電等都是電磁波,它們之間的差別只是波長(zhǎng)(或頻率)的不同而已。
紅外技術(shù)發(fā)展到現(xiàn)在,已經(jīng)為大家所熟知,這種技術(shù)已經(jīng)在現(xiàn)代科技、國(guó)防和工農(nóng)業(yè)等領(lǐng)域獲得了廣泛的應(yīng)用。紅外傳感系統(tǒng)是利用紅外線為介質(zhì)的測(cè)量系統(tǒng),按照功能能夠分成五類:(1)輻射計(jì),用于輻射和光譜測(cè)量;(2)搜索和跟蹤系統(tǒng),用于搜索和跟蹤紅外目標(biāo),確定其空間位置并對(duì)它的運(yùn)動(dòng)進(jìn)行跟蹤;(3)熱成像系統(tǒng),可產(chǎn)生整個(gè)目標(biāo)紅外輻射的分布圖像;(4)紅外測(cè)距和通信系統(tǒng);(5)混合系統(tǒng),是指以上各類系統(tǒng)中的兩個(gè)或者多個(gè)的組合。
紅外傳感器根據(jù)探測(cè)機(jī)理可分成為:光子探測(cè)器(基于光電效應(yīng))和熱探測(cè)器(基于熱效應(yīng))。
3.3.2常用的紅外傳感器
(1)紅外探測(cè)器
紅外系統(tǒng)的核心是紅外探測(cè)器,按照探測(cè)的機(jī)理不同,可以分為熱探測(cè)器和光子探測(cè)器兩大類。
熱探測(cè)器是利用輻射熱效應(yīng),使探測(cè)元件接收到輻射能后引起溫度升高,進(jìn)而使探測(cè)器中依賴于溫度的性能發(fā)生變化。檢測(cè)其中某一性能的變化,便可探測(cè)出輻射。多數(shù)情況下是通過熱點(diǎn)變化來探測(cè)輻射的。當(dāng)元件接收輻射,引起非電量的物理變化時(shí),可以通過適當(dāng)?shù)淖儞Q后測(cè)量相應(yīng)的電量變化。
(2)紅外測(cè)溫產(chǎn)品:
HEITRONICS擁有40多年非接觸紅外測(cè)溫經(jīng)驗(yàn),50多種紅外測(cè)溫儀和非接觸紅外測(cè)溫系統(tǒng)可滿足不同行業(yè)用戶的特殊需求,提供最優(yōu)非接觸紅外測(cè)溫解決方案。在高性能和高品質(zhì)的紅外測(cè)溫產(chǎn)品市場(chǎng),來自德國(guó)的HEITRONICS以其在尖端領(lǐng)域應(yīng)用中良好的品質(zhì)記錄,被廣泛公認(rèn)為是世界一流的紅外測(cè)溫產(chǎn)品供應(yīng)者而受到信任。
HEITRONICS系列產(chǎn)品已廣泛應(yīng)用于冶金,玻璃,造紙,紡織,橡膠,木材,制陶,塑料涂層,瀝青建筑,電子,食品,石化,水泥等工業(yè)制造、科學(xué)研究和實(shí)驗(yàn)領(lǐng)域。
(3)壓電傳感器
壓電傳感器是一種典型的有源傳感器,它是以某些電介質(zhì)的壓電效應(yīng)為基礎(chǔ),在外力作用下,電介質(zhì)表面產(chǎn)生電荷,從而實(shí)現(xiàn)外力與電荷量間的轉(zhuǎn)換,達(dá)到非電量的電測(cè)目的。
壓電傳感器的應(yīng)用:可分為單向力,雙向力和三向力傳感器。壓電傳感器的物理基礎(chǔ)是壓電效應(yīng),壓電敏感元件感受力的作用而產(chǎn)生電壓或電荷輸出,即根據(jù)輸出電壓或電荷的大小和極性,就可確定作用力的大小和方向。由此可見,壓電傳感器可以直接用于測(cè)力,或測(cè)與力有關(guān)的壓力、位移、振動(dòng)加速度等。
(4)磁電傳感器
磁電傳感器可分為兩大類,一類是基于鐵芯線圈電磁感應(yīng)原理的磁電感應(yīng)式傳感器,一類是基于半導(dǎo)體材料磁敏效應(yīng)的磁敏傳感器。
磁敏管的應(yīng)用:不但具有很高的磁靈敏度,同時(shí)能識(shí)別磁場(chǎng)極性:而且體積小,功耗低,因而具有廣泛的應(yīng)用前景。
(5)光電傳感器
光電傳感器是一種將光信號(hào)轉(zhuǎn)換成電信號(hào)的裝置,它具有結(jié)構(gòu)簡(jiǎn)單,性能可靠,精度高,反應(yīng)快等優(yōu)點(diǎn),在現(xiàn)代測(cè)量和自動(dòng)控制系統(tǒng)中,應(yīng)用非常廣泛,是一種很有發(fā)展前途的新型傳感器。
(6)人體熱釋電紅外傳感器介紹和應(yīng)用
在電子防盜、人體探測(cè)器領(lǐng)域中,被動(dòng)式熱釋電紅外探測(cè)器的應(yīng)用非常廣泛,因其價(jià)格低廉、技術(shù)性能穩(wěn)定而受到廣大用戶和專業(yè)人士的歡迎。
(7)無線紅外傳感器
無線紅外傳感器又稱無線紅外探測(cè)器是根據(jù)人體紅外光譜而工作,當(dāng)人體在其接受范圍內(nèi)活動(dòng)時(shí),探測(cè)器輸出報(bào)警信號(hào),廣泛用于銀行、倉(cāng)庫(kù)和家庭等場(chǎng)所的安全防范。
綜上所述,每一種傳感器都有他的用處和廣泛的應(yīng)用前景。經(jīng)過比較,在本文系統(tǒng)中最適合采用的是光電傳感器,下面再簡(jiǎn)單地介紹下。
3.3.3 主動(dòng)式紅外傳感器簡(jiǎn)介
光電傳感器是通過把光強(qiáng)度的變化轉(zhuǎn)換成電信號(hào)的變化來實(shí)現(xiàn)控制的。光電傳感器在一般情況下,有三部分構(gòu)成,它們分為:發(fā)送器、接收器和檢測(cè)電路。發(fā)送器對(duì)準(zhǔn)目標(biāo)發(fā)射光束,發(fā)射的光束一般來源于半導(dǎo)體光源,發(fā)光二極管(LED)、激光二極管及紅外發(fā)射二極管。光束不間斷地發(fā)射,或者改變脈沖寬度。接收器有光電二極管、光電三極管、光電池組成。在接收器的前面,裝有光學(xué)元件如透鏡和光圈等。在其后面是檢測(cè)電路,它能濾出有效信號(hào)和應(yīng)用該信號(hào)。
本文采用的是一種對(duì)射型光電傳感器,即主動(dòng)紅外探測(cè)器。主動(dòng)紅外探測(cè)器由紅外發(fā)射機(jī)、紅外接收機(jī)和報(bào)警控制器組成。分別置于收、發(fā)端的光學(xué)系統(tǒng)一般采用的是光學(xué)透鏡,起到將紅外光束聚焦成較細(xì)的平行光束的作用,以使紅外光的能量能夠集中傳送。紅外光在人眼看不見的光譜范圍,有人經(jīng)過這條無形的封鎖線,必然全部或部分遮擋紅外光束。接收端輸出的電信號(hào)的強(qiáng)度會(huì)因此產(chǎn)生變化,從而啟動(dòng)報(bào)警控制器發(fā)出報(bào)警信號(hào)。主動(dòng)式紅外探測(cè)器遇到小動(dòng)物、樹葉、沙塵、雨、雪、霧遮擋則不應(yīng)報(bào)警,人或相當(dāng)體積的物品遮擋將發(fā)生報(bào)警。由于光束較窄,收發(fā)端安裝要牢固可靠,不應(yīng)受地面震動(dòng)影響,而發(fā)生位移引起誤報(bào),光學(xué)系統(tǒng)要保持清潔,注意維護(hù)保養(yǎng)。因此主動(dòng)式探測(cè)器所探測(cè)的是點(diǎn)到點(diǎn),而不是一個(gè)面的范圍。其特點(diǎn)是探測(cè)可靠性非常高。但若對(duì)一個(gè)空間進(jìn)行布防,則需有多個(gè)主動(dòng)式探測(cè)器,價(jià)格昂貴。主動(dòng)式探測(cè)器常用于博物館中單體貴重文物展品的布防以及工廠倉(cāng)庫(kù)的門窗封鎖、購(gòu)物中心的通道封鎖、停車場(chǎng)的出口封鎖、家居的陽臺(tái)封鎖等等。
主動(dòng)式紅外探測(cè)器有單光束、雙光束、四光束之分。以發(fā)射機(jī)與接收機(jī)設(shè)置的位置不同分為對(duì)向型安裝方式和反射式按裝方式,反射型安裝方式的接收機(jī)不是直接接收發(fā)射機(jī)發(fā)出的紅外光束,而是接收由反射鏡或適當(dāng)?shù)姆瓷湮铮ㄈ缡覊�、門板表面光滑的油漆層)反射回的紅外光束。當(dāng)反射面的位置與方向發(fā)生變化或紅外發(fā)射光束和反射光束之一被阻擋而使接收機(jī)無法接收到紅外反射光束時(shí)發(fā)出報(bào)警信號(hào)。
對(duì)于用于檢測(cè)車流量的傳感器[6],本系統(tǒng)采用主動(dòng)式紅外對(duì)射傳感器,它相對(duì)于傳統(tǒng)的被動(dòng)式熱釋紅外傳感器有以下優(yōu)點(diǎn):
1.主動(dòng)式對(duì)射紅外傳感器安裝于十字路口上,采用多光束綜合判斷,當(dāng)有車輛通過遮擋時(shí),才被觸發(fā),極大的降低了傳感器的誤報(bào)(例如飛鳥等);
2.天氣的變化對(duì)被動(dòng)式熱釋紅外傳感器產(chǎn)生的影響很大,而主動(dòng)式對(duì)射紅外傳感器大大地降低了這方面的影響。
3.3.4 檢測(cè)電路
從上面的介紹可知,我們利用紅外傳感器[5]的紅外線發(fā)射和接收方向性較強(qiáng)的特點(diǎn),在車輛經(jīng)過的路面上安裝密度適當(dāng)?shù)膸着偶t外線發(fā)射接收電路,組成紅外線矩陣,在沒有遮擋的情況下紅外線接收電路產(chǎn)生高電平信號(hào),反之產(chǎn)生低電平信號(hào)。因此,根據(jù)車駛?cè)�、通過、駛出測(cè)試區(qū)時(shí)等狀態(tài)引起的矩陣內(nèi)各點(diǎn)高低電平的復(fù)雜變化,通過硬件電路的設(shè)計(jì)和軟件算法的處理,最終統(tǒng)計(jì)出經(jīng)過該測(cè)量區(qū)域內(nèi)雙向并排經(jīng)過的車輛的總流量。紅外傳感器的檢測(cè)示意圖如圖3-4所示:
圖3-4 紅外傳感器檢測(cè)示意圖
3.3 緊急按鍵K1電路
當(dāng)有緊急車輛通過時(shí),操作員可以按下緊急按鍵K1,K1接在單片機(jī)的P3.1端口上,這樣就產(chǎn)生了一個(gè)高電平。而單片機(jī)通過軟件程序檢測(cè)到P3.1口為高電平后,再通過軟件調(diào)用一段子程序,使東西和南北方向都為紅燈,并接通蜂鳴器警告普通車輛禁止通行,先讓緊急車輛通過。待緊急車輛通過后,交通控制系統(tǒng)會(huì)恢復(fù)中斷前的現(xiàn)場(chǎng)。其電路原理圖如圖3-5所示:
圖3-5 緊急按鍵K1電路原理圖
3.4 紅綠燈顯示電路
交通燈最基本的功能是顏色燈的顯示, 每個(gè)路口均需紅、黃、綠燈各一盞,東、西道上的兩組同色燈蟬聯(lián)在一起,南、北道的兩組同色也彼此互聯(lián)。這6盞燈分別接在單片機(jī)的P0.0-P0.5口,如圖3-6所示。D1、D2、D3分別代表的是東西方向的綠、黃、紅燈;N1、N2、N3分別代表的是南北方向的綠、黃、紅燈。當(dāng)東西方向?yàn)榫G燈時(shí),P0.0口輸出低電平,綠燈D1點(diǎn)亮;對(duì)應(yīng)地,P0.6口也輸出低電平,南北方向的紅燈N3點(diǎn)亮。當(dāng)東西方向?yàn)榧t燈時(shí),P0.2口輸出低電平,紅燈D3點(diǎn)亮;對(duì)應(yīng)地,P0.3口也輸出低電平,南北方向的綠燈N1點(diǎn)亮。而當(dāng)東西方向和南北方向均為黃燈時(shí),黃燈會(huì)以2HZ的頻率閃爍(通過軟件來實(shí)現(xiàn)的),提醒車輛的駕駛員注意紅綠燈的轉(zhuǎn)換。具體的指示燈的燃亮?xí)r間表見表2-1,下面是紅綠燈與單片機(jī)的接線圖:
圖3-6 東西、南北方向紅綠燈與單片機(jī)接線圖
3.5 倒計(jì)時(shí)顯示電路
這里首先簡(jiǎn)單介紹一下7段LED數(shù)碼管[8]。LED數(shù)碼管由七段發(fā)光線段組成,每條線段可以是一個(gè)(或幾個(gè))發(fā)光二極管。其結(jié)構(gòu)如圖3-7所示。
在圖3-7中,只要使不同段的發(fā)光二極管發(fā)光,即可改變所顯示的數(shù)字和字母。例如,在圖3-7中,a、b、g、e、d各段的二極管發(fā)光,即可顯示“2”;而a、f、g、e、d共5個(gè)發(fā)光二極管亮則可顯示英文大寫字母E。LED七段數(shù)碼管根據(jù)其內(nèi)部LED的連接方法不同,有共陰極和共陽極兩種接法,如圖3-8所示。
圖3-7 七段數(shù)碼管結(jié)構(gòu)圖 圖3-8 LED數(shù)碼管的兩種接法
各種數(shù)字與七段代碼的關(guān)系如表3-1所示。
表3-1 段碼表
數(shù)字 代碼(十六進(jìn)制)
共陰極 共陽極
0 3F C0
1 06 F9
2 5B A4
3 4F B0
4 66 99
5 6D 92
6 7D 82
7 07 F8
8 7F 80
9 6F 90
上面簡(jiǎn)單介紹了七段數(shù)碼管的顯示原理。倒計(jì)時(shí)顯示系統(tǒng)的主要功能是對(duì)紅、黃、綠燈的延時(shí)時(shí)間進(jìn)行倒計(jì)時(shí),給車輛駕駛員以提示。這里使用共陰極的7段數(shù)碼管作為顯示設(shè)備,各個(gè)路口上兩個(gè)數(shù)碼管,一個(gè)顯示十位,一個(gè)顯示個(gè)位。本文中時(shí)間的倒計(jì)時(shí)是通過軟件來實(shí)行的,將在軟件部分進(jìn)行具體的說明。下面是7段數(shù)碼管與單片機(jī)的接線圖:
圖3-9 7段數(shù)碼管與單片機(jī)接線圖
3.6振蕩電路
AT89C51的XTAL1和XTAL2引腳分別為單極片內(nèi)反相放大器的輸入/輸出端,其頻率范圍為1.2~12MHz。XTAL2又是內(nèi)部時(shí)鐘發(fā)生器的輸入端,這個(gè)內(nèi)部反相器可與外部元件組成如圖3-10所示的皮爾斯(Pierce)振蕩器。當(dāng)采用石英晶體振蕩器時(shí),C=(30±10)pF;當(dāng)采用陶瓷諧振振蕩器時(shí),C=(40±10)pF[1]。
在任何情況下,振蕩器始終驅(qū)動(dòng)內(nèi)部時(shí)鐘發(fā)生器向主機(jī)提供時(shí)鐘信號(hào)。因?yàn)闀r(shí)鐘發(fā)生器的輸入是個(gè)二分頻觸發(fā)器,所以對(duì)外部振蕩信號(hào)的脈寬無特殊要求,但必須保證高低電平的最小寬度。
圖3-10 單片機(jī)振蕩電路
3.7復(fù)位電路
本文中的單片機(jī)采用了外接的復(fù)位電路,并且采用了一種上電復(fù)位和手動(dòng)復(fù)位的組合[9],復(fù)位電路圖如圖3-11所示。單獨(dú)上電復(fù)位的電路時(shí),并沒有圖3-11中與電容并聯(lián)的開關(guān),當(dāng)Vcc上升時(shí)間不超過1ms,振蕩器啟動(dòng)時(shí)間不超過10ms,則在Vcc接通電源時(shí),這個(gè)自動(dòng)上電復(fù)位電路保證在上電開機(jī)時(shí)對(duì)8951單片機(jī)進(jìn)行正確的復(fù)位。當(dāng)電源接通時(shí),電源Vcc向電容充電,電流流入RST引腳。開始時(shí),由于電容器上的電壓不能突變,所以RST引腳上的電壓升至等于Vcc電源電壓,因?yàn)镽ST上的電壓是Vcc和電容器上電壓之差,所以隨著充電過程,電容器上電壓不斷上升,RST引腳上的電壓就不斷下降。電容器容量越大,充電時(shí)間常數(shù)越大,即電容器上電壓上升越慢,則RST引腳上的電壓就下降越慢,必須使RST引腳上的電壓保持在斯密特觸發(fā)器的觸發(fā)門檻電壓以上足夠長(zhǎng)的時(shí)間,以滿足復(fù)位操作的要求。所需的這個(gè)時(shí)間應(yīng)為振蕩器的起振時(shí)間再加上兩個(gè)機(jī)器周期以上,因而所選的電容應(yīng)足夠大。如果Vcc上升時(shí)間不超過1ms,振蕩器的起振時(shí)間不超過10ms,則選取10uf的電容就可提供可靠的復(fù)位。
手動(dòng)復(fù)位可在上電復(fù)位基礎(chǔ)上并接一個(gè)復(fù)位開關(guān)(如圖3-11),這樣既保證上電復(fù)位,又可手動(dòng)復(fù)位。
單片機(jī)復(fù)位后,內(nèi)部特殊功能寄存器復(fù)位后的狀態(tài)為確定值。復(fù)位后,PC=00H,這表明程序從0000H地址單元開始執(zhí)行。PSW=00H,表明選寄存器0組為工作寄存器組。P0至P3=FFH,表明已向各端口寫入1。此時(shí),各端口既可用于輸入又可用于輸出。IE=0**00000B,表明各個(gè)中斷均被關(guān)斷。編程時(shí)如果記住一些特殊功能寄存器復(fù)位后的狀態(tài),對(duì)于減少應(yīng)用程序中的初始化是十分必要的。
圖3-11 單片機(jī)復(fù)位電路
4 系統(tǒng)軟件設(shè)計(jì)
上面主要講述了系統(tǒng)的硬件設(shè)計(jì)部分,但一個(gè)系統(tǒng)必須有軟件(即程序)來控制計(jì)算機(jī)運(yùn)行。目前,對(duì)大多數(shù)MCS-51單片機(jī)的應(yīng)用系統(tǒng)的編程語言主要有PLM、匯編和c語言[10]。其中匯編和c語言比較常用。匯編語言的機(jī)器代碼生成效率很高但可讀性并不強(qiáng),復(fù)雜一點(diǎn)的程序就更難讀懂,而c語言在大多數(shù)情況下,其機(jī)器代碼生成效率和匯編語言相當(dāng),但可讀性和可移植性卻遠(yuǎn)遠(yuǎn)超過匯編語言,而且c語言還可以嵌入?yún)R編語言來解決高時(shí)效性的代碼編寫問題。因此,c語言是單片機(jī)開發(fā)、應(yīng)用的重要趨勢(shì)。目前,c語言已經(jīng)成為在單片機(jī)基礎(chǔ)上應(yīng)用最為廣泛的計(jì)算機(jī)語言之一。將c語言向單片機(jī)移植始于20世紀(jì)80年代的中后期。這些年,經(jīng)過各公司(Keil/Franklin、Archmeades、IAR、BSO/Tasking等公司)堅(jiān)持不懈的努力,終于在20世紀(jì)90年代,單片機(jī)c語言編程開始日趨成熟。現(xiàn)在c語言已經(jīng)成為專業(yè)化的單片機(jī)編程高級(jí)語言。過去長(zhǎng)期困擾人們的所謂“高級(jí)語言產(chǎn)生代碼太長(zhǎng),運(yùn)行速度太慢,因此不適合單片機(jī)使用”的缺點(diǎn)已被克服。
現(xiàn)在MCS-51單片機(jī)上c語言的代碼長(zhǎng)度,已經(jīng)做到了只有匯編語言的1.2-1.5倍。4K字節(jié)以上的程序,c語言的優(yōu)勢(shì)更能得到發(fā)揮。關(guān)于執(zhí)行速度的問題,只要有好的仿真器幫助,找出關(guān)鍵代碼,進(jìn)一步用人工優(yōu)化,就能很簡(jiǎn)單地達(dá)到十分完美的程序。從開發(fā)速度、軟件質(zhì)量、結(jié)構(gòu)嚴(yán)謹(jǐn)、程序堅(jiān)固等方面比較,c語言的優(yōu)勢(shì)更多。
c語言有很多鮮明的特點(diǎn),比較適于編寫系統(tǒng)軟件和大型的應(yīng)用軟件。下面結(jié)合MCS-51介紹單片機(jī)c語言的優(yōu)越性。
(1) 不懂得單片機(jī)的指令集,也能夠編寫完美的單片機(jī)程序。
(2) 直接訪問物理地址,可以進(jìn)行位操作。
(3) 同函數(shù)的數(shù)據(jù)實(shí)行覆蓋,有效利用片上有限的RAM空間。
(4) 語言提供復(fù)雜的數(shù)據(jù)類型(數(shù)組、結(jié)構(gòu)、聯(lián)合、枚舉、指針等),極大地增強(qiáng)了程序處理能力和靈活性。
(5) 提供專門針對(duì)MCS-51單片機(jī)的data、idata、pdata、xdata、code等存儲(chǔ)類型,自動(dòng)為變量合理地分配地址。
(6) 提供small、compact、large等編譯模式,以適應(yīng)片上存儲(chǔ)器的大小。
(7) 提供常用的標(biāo)準(zhǔn)函數(shù)庫(kù),以供用戶直接使用。
(8) c語言作為高級(jí)語言對(duì)機(jī)器沒有依賴性,可以在各種不同的機(jī)器和操作系統(tǒng)上應(yīng)用,而不必改寫源代碼(所謂的移植性好),生成目標(biāo)代碼的效率高。
|
|