




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于單片機(jī)交通燈電路的設(shè)計(jì)【摘 要】根據(jù)8051單片機(jī)的特點(diǎn)及交通燈在實(shí)際控制中的特點(diǎn),本文提出一種用單片機(jī)自動(dòng)控制交通燈及時(shí)間顯示的方法。同時(shí)給出了軟硬件設(shè)計(jì)方法,設(shè)計(jì)過(guò)程包括硬件電路設(shè)計(jì)和程序設(shè)計(jì)兩大步驟,對(duì)在單片機(jī)應(yīng)用中可能遇到的重要技術(shù)問(wèn)題都有涉足。本文對(duì)十字路口狀態(tài)預(yù)設(shè)為兩種,一種是正常狀態(tài),另一種是故障或緊急狀態(tài),并分別用黃、紅、綠色燈的不同組合來(lái)表示。本文介紹了控制基本原理以及控制的表現(xiàn),同時(shí)也介紹了城市交通信息系統(tǒng)的設(shè)計(jì)目標(biāo), 開(kāi)發(fā)途徑及其系統(tǒng)結(jié)構(gòu)與功能和數(shù)據(jù)地理編碼、建庫(kù), 同時(shí), 論述了系統(tǒng)中交通現(xiàn)狀、交通管理、交通規(guī)劃及背景信息查詢模塊的建造及應(yīng)用。介紹了用于城市交叉路口
2、的三色程控交通信號(hào)時(shí)間顯示器的研制方案,對(duì)其電源供電、發(fā)光二極管構(gòu)成的負(fù)載結(jié)構(gòu)、燈色時(shí)間檢測(cè)都給出了精巧合理的優(yōu)化結(jié)構(gòu),大幅度地提高了產(chǎn)品可靠性并降低了制造成本。關(guān)鍵詞:8051單片機(jī),軟件,硬件abstractaccording to the feature of scm8051 and the characteristics of traffic lights in real control,the article puts forward the method of using sigle-chip microcomputer to control automatically the t
3、raffic signal lights and time-show.the method of realization of hardware has also been given,the whole process included hardware circuit designing and program designing,in which some important technique problem that may meet during the use of singlechip involved.in this paper,the state of crossing w
4、as designed as two states.one is normal,another breackdown or urgent,which are expressed with different colour lamp named yellow、red and green.the basic principle and method of controlling are introduced.in this paper, the design goals, development ways, system structure, system functions, geographi
5、c codes and data base of the urban traffic information system (u t is) were presented. furthermore, the development and the application tests of the traffic situation model, thetraffic management model, the traffic plan model and the background information inquirement model of u t is were discussed.
6、this paper introduces the development scheme of three-colour programmable traffic signal time indicator used in the level-crossing of our city,and gives its power supply,load construction made by led and time detection of traffic lamp colour a reasonable optimize structure.the reliability of product
7、 is substantiallyimproved while the cost is reduced.key words:scm8051, hardwore,softwore 目錄摘 要1abstract2引言5第1章 原理及其器件介紹71.1 工作原理71.2 器件71.2.1 單片機(jī)71.2.2 單片機(jī)系統(tǒng)101.2.3 數(shù)碼管11第2章 系統(tǒng)組成122.1 硬件控制線路圖122.2 晶振電路122.3 復(fù)位電路142.4 信號(hào)燈控制電路152.5 led顯示及顯示接口17第3章 交通信號(hào)燈的c語(yǔ)言編程203.1 單片機(jī)的c語(yǔ)言程序設(shè)計(jì)203.2 c語(yǔ)言與 mcs51203.2.1 mc
8、s51酌編程語(yǔ)言203.2.2 c51編譯器與程序開(kāi)發(fā)過(guò)程213.2.3 c51程序結(jié)構(gòu)213.3 利用c51程序編寫(xiě)延時(shí)程序223.4 信號(hào)燈亮滅的定時(shí)功能223.4.1 單片機(jī)的定時(shí)器233.4.2 如何使用mcs-51單片機(jī)的定時(shí)器呢?233.4.3 定時(shí)器數(shù)值的設(shè)置應(yīng)該注意的事項(xiàng)253.4.4 定時(shí)1ms的程序代碼253.5 51單片機(jī)的中斷系統(tǒng)253.5.1 中斷系統(tǒng)的概念253.5.2 單片機(jī)的中斷系統(tǒng)的作用263.5.3 如何實(shí)現(xiàn)單片機(jī)的中斷263.5.4 單片機(jī)系統(tǒng)的中斷過(guò)程283.6 數(shù)碼管顯示程序功能293.7 軟件流程圖30第4章 系統(tǒng)的組裝與調(diào)試314.1制板314.2
9、 組裝及調(diào)試324.2.1 at89s51單片機(jī)實(shí)驗(yàn)及實(shí)踐系統(tǒng)板簡(jiǎn)介324.2.2 keil c軟件和at89s51單片機(jī)下載器軟件的使用334. 2. 3 調(diào)試過(guò)程35第5章 總結(jié)37謝 辭38參考文獻(xiàn)39附 錄40引言 交通的發(fā)達(dá),標(biāo)志著城市的發(fā)達(dá),相對(duì)交通的管理則顯得越來(lái)越重要。對(duì)于復(fù)雜的城市交通系統(tǒng),為了確保安全,保證正常的交通秩序,十字路口的信號(hào)控制必需按照一定的規(guī)律變化,以便于車(chē)輛行人能順利地通過(guò)十字路口??紤]到單片機(jī)具有物美價(jià)廉、功能強(qiáng)、使用方便靈活、可靠性高等特點(diǎn),擬采用mcs - 51系列的單片機(jī)來(lái)實(shí)現(xiàn)十字路口交通信號(hào)燈的控制。 正常情況下,十字路口的紅綠燈應(yīng)交替變換,考慮緊
10、急情況下,如有救護(hù)車(chē)或警車(chē)到來(lái)時(shí),應(yīng)優(yōu)先讓其通過(guò)。 在本文中,用發(fā)光二極管來(lái)模擬信號(hào)燈,救護(hù)車(chē)的優(yōu)先通過(guò)請(qǐng)求信號(hào)由外部中斷技術(shù)來(lái)模擬。要求使用 8051定時(shí)器/ 計(jì)數(shù)器0作為定時(shí)器,假設(shè)南北和東西的通車(chē)時(shí)間都為30 s ,外部中斷的延時(shí)為10 s ,要求對(duì)通行時(shí)間進(jìn)行倒計(jì)時(shí),從p1 口輸出,在led上顯示并進(jìn)行遞減。以此來(lái)實(shí)現(xiàn)十字路口交通燈的指示功能。其設(shè)計(jì)要求為:首先,要了解實(shí)際交通燈的變化規(guī)律. 假設(shè)一個(gè)十字路口為東西南北走向. 初始狀態(tài)0東西方向綠燈通車(chē),南北方向紅燈,延時(shí)30 s. 轉(zhuǎn)狀態(tài)1 ,東西方向黃燈亮,南北方向紅燈按1hz的頻率閃爍,延時(shí)5s . 再轉(zhuǎn)狀態(tài)2 ,東西方向紅燈亮,
11、南北方向綠燈通車(chē),延時(shí)20 s. 轉(zhuǎn)狀態(tài)3 ,東西方向紅燈按1hz的頻率閃爍,南北方向黃燈亮,延時(shí)5 s . 最后循環(huán)至狀態(tài)0. 這里的延時(shí)采用定時(shí)器0延時(shí). 其次,當(dāng)有緊急救護(hù)車(chē)出現(xiàn)時(shí),應(yīng)使東西南北四個(gè)方向全亮紅燈,并延時(shí)10 s , 以便急救車(chē)通過(guò),同時(shí)對(duì)通行時(shí)間進(jìn)行倒計(jì)時(shí),從p1口及p3口輸出在發(fā)光二極管,使用8051 定時(shí)器/ 計(jì)數(shù)器0作為定時(shí)器實(shí)現(xiàn)子程序延時(shí).技術(shù)上可用外部中斷0發(fā)出一單脈沖向cpu申請(qǐng)中斷. 再次,一般交通信號(hào)燈控制程序中使用軟件延時(shí),軟件延時(shí)是靠執(zhí)行一個(gè)循環(huán)程序以進(jìn)行時(shí)間延遲. 軟件定時(shí)的特點(diǎn)是時(shí)間精確,且不需外加硬件電路. 但軟件定時(shí)要占用cpu ,增加cpu
12、開(kāi)銷,因此軟件定時(shí)的時(shí)間不宜太長(zhǎng).本程序使用定時(shí)器/ 計(jì)數(shù)器0來(lái)定時(shí),定時(shí)電路已經(jīng)集成在芯片中,這種由硬件電路完成,不占cpu 時(shí)間. 它通過(guò)對(duì)系統(tǒng)時(shí)鐘脈沖的計(jì)數(shù)來(lái)實(shí)現(xiàn),即每個(gè)機(jī)器周期產(chǎn)生一個(gè)計(jì)數(shù)脈沖,也就是每個(gè)機(jī)器周期計(jì)數(shù)器加1. 計(jì)數(shù)值通過(guò)程序設(shè)定,改變計(jì)數(shù)值,也就改變了定時(shí)時(shí)間,使用起來(lái)既靈活又方便.交通燈在安全行車(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í)間相同且固
13、定, 在十字路口, 經(jīng)常一個(gè)車(chē)道為主干道,車(chē)輛較多, 放行時(shí)間應(yīng)該長(zhǎng)些; 另一車(chē)道為副干道, 車(chē)輛較少,放行時(shí)間短些。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í)際情況, 如何全面有效地利用交通燈指示交通情況, 本人嘗試用單片機(jī)來(lái)控制交通燈, 在軟、硬件方面采取一些改進(jìn)措施, 使交通燈在控制中靈活而有效。 傳統(tǒng)的交通燈控制系統(tǒng), 采用的基本上是3種控制方式。手按: 交警在崗?fù)ぶ凳?人為進(jìn)行紅綠燈改變; 黃閃: 夜間無(wú)人值守時(shí), 用每秒1次的黃燈閃亮, 提醒司機(jī)安全駕駛; 程控: 以60s 作為
14、一個(gè)時(shí)間單位。某一方面(例南北方向) 紅黃綠三燈的工作程序分別是: 紅燈先亮30s, 然后綠燈亮28s, 再綠燈閃亮3s (每秒1次) , 最后黃燈亮2s。此時(shí), 另一方向(東西方向) 紅黃綠三燈的工作順序相應(yīng)為: 綠燈亮25s, 綠燈閃亮3s (每秒1次) , 黃燈亮2s, 最后紅燈亮30s。此后以60s 作為時(shí)間單位進(jìn)行上述的反復(fù)循環(huán), 較為合理地解決了十字路口的交通調(diào)度問(wèn)題。但紅綠燈的工作順序及時(shí)間都是固定的, 缺乏靈活性。采用該3種方式能解決一般崗?fù)さ慕煌艨刂?。但重點(diǎn)崗?fù)と孕枰?人以上同時(shí)值班, 保證有事要處理時(shí), 仍能保留一名交警負(fù)責(zé)對(duì)交通燈的控制。而此時(shí)若想采用程控方式, 交警
15、將無(wú)法對(duì)交通燈再人為地加以管理。難以再科學(xué)地指揮車(chē)輛的通行, 有效地解決交通堵塞問(wèn)題。例如當(dāng)南北方向車(chē)流量很大時(shí), 程控方式下的南北方向綠燈無(wú)法保證開(kāi)放更長(zhǎng)的時(shí)間, 以緩解交通擁擠的問(wèn)題。當(dāng)前,交通事業(yè)蓬勃發(fā)展,交通流量年年增長(zhǎng),大、中、小城市的汽車(chē)、摩托車(chē)等各種車(chē)輛與日俱增,道路交通繁忙,經(jīng)常有嚴(yán)重堵車(chē)現(xiàn)象,特別是在交叉口,機(jī)動(dòng)車(chē)、非機(jī)動(dòng)車(chē)、行人來(lái)往非?;靵y,為了在叉口的各條干道實(shí)現(xiàn)合理的科學(xué)分流。本人根據(jù) 單片機(jī)具有物美價(jià)廉、功能強(qiáng)、使用方便靈活、可靠性高等特點(diǎn),提出了一種用mcs-51單片機(jī)自動(dòng)控制交通信號(hào)燈及時(shí)間顯示的方法,具體如下:選用mcs-51單片機(jī)來(lái)實(shí)現(xiàn),根據(jù)設(shè)計(jì)要求,交通信號(hào)
16、燈控制器的外部輸出信號(hào)為主、副車(chē)道紅、黃、綠燈共12個(gè)驅(qū)動(dòng)信號(hào);編程使相應(yīng)位復(fù)/置位來(lái)實(shí)現(xiàn)信號(hào)燈的亮/滅控制,使得十字路口的紅、綠燈交替點(diǎn)亮;在燈色交換時(shí),黃燈閃爍提醒。設(shè)計(jì)要求有緊急車(chē)輛通過(guò)時(shí),十字路口均顯示紅燈??梢酝ㄟ^(guò)軟件中斷來(lái)完成緊急任務(wù),定義t0為計(jì)數(shù)中斷并為下降沿觸發(fā),編寫(xiě)對(duì)應(yīng)中斷向量子程序和中斷服務(wù)程序,完成中斷處理。設(shè)計(jì)還對(duì)定時(shí)控制有所要求。對(duì)于精確定時(shí),應(yīng)該用計(jì)數(shù)器加以控制,硬件實(shí)現(xiàn)復(fù)雜度增加??紤]到該設(shè)計(jì)對(duì)時(shí)間精度要求不高,所以采用軟件定時(shí)可以大大簡(jiǎn)化電路。先計(jì)算出程序單部執(zhí)行的時(shí)間,設(shè)置循環(huán)參數(shù),利用if語(yǔ)句按設(shè)計(jì)要求完成定時(shí)控制。 第1章 原理及其器件介紹1.1 工作原
17、理采用單片機(jī)的i/o口p1口和p3直接和交通燈連接, 控制程序放在mcs- 51單片機(jī)如8051的rom中, 在十字路口的四組紅、黃、綠交通燈中, 受單片機(jī)p1.0p1.7和p3.0、p3.1、p3.3、p3.7 控制, 由于交通燈為發(fā)光二極管且陽(yáng)極通過(guò)限流電阻和電源正極連接, 因此i/o口輸出低電平時(shí), 與之相連的相應(yīng)指示燈會(huì)亮, i/o口輸出高電平時(shí), 相應(yīng)指示燈會(huì)滅。緊急車(chē)請(qǐng)求通過(guò)的信號(hào)由人工控制, 以中斷方式輸入單片機(jī), 無(wú)緊急車(chē)通過(guò)時(shí), 中斷引腳int0 通過(guò)電阻和電源正極連接為高電平, 不產(chǎn)生中斷請(qǐng)求, 單片機(jī)執(zhí)行主程序, 有緊急車(chē)通過(guò)時(shí), 中斷引腳采用人工方法接地為低電平, 產(chǎn)生
18、中斷請(qǐng)求, 單片機(jī)執(zhí)行中斷服務(wù)程序, 讓緊急車(chē)通過(guò), 緊急車(chē)通過(guò)后, 中斷引腳變?yōu)楦唠娖? 返回主程序。由于倒計(jì)時(shí)顯示裝置已普遍采用, 因此本文未引入探討。1.2 器件1.2.1.單片機(jī) 單片機(jī)是將中央處理器(cpu)、隨機(jī)存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom或eprom)、定時(shí)器芯片和一些輸入/輸出接口電路集成在一個(gè)芯片上的微控制器(microcontroller)。 中央處理器包括運(yùn)算器、控制器和寄存器3個(gè)主要部分,是單片機(jī)的核心。 存儲(chǔ)器按工作方式可以分為兩大類:隨機(jī)存儲(chǔ)器ram和只讀存儲(chǔ)器rom。ram可被cup隨機(jī)地讀寫(xiě),斷電后存儲(chǔ)的內(nèi)容消失;rom中的信息只能被讀取,一般用于存放固
19、定的程序。rom中的內(nèi)容只能用編程器專用設(shè)備寫(xiě)入。 輸入/輸出接口(i/o接口)是單片機(jī)的重要組成部分。程序、數(shù)據(jù)以及現(xiàn)場(chǎng)信息需要通過(guò)輸入設(shè)備送到單片機(jī),計(jì)算結(jié)果需要通過(guò)輸出設(shè)備輸出到外設(shè)。常用的輸入有按鍵、鍵盤(pán)、a/d等,輸出設(shè)備一般有l(wèi)ed、電機(jī)等。 為了方便理解,我們可以將單片機(jī)和pc機(jī)進(jìn)行一個(gè)比較。一臺(tái)能夠工作的計(jì)算機(jī)要由cpu、ram、rom、輸入/輸出設(shè)備等幾個(gè)部分組成。在pc機(jī)上這些部分被分成若干塊芯片,安裝在主板上。而單片機(jī)相當(dāng)于集成了以上所有芯片的一塊集成電路芯片。有一些單片機(jī)中除了上述基本的功能,還集成了其他部分功能,如a/d、d/a等。一個(gè)標(biāo)準(zhǔn)的89c51單片機(jī)的引腳功能
20、圖如圖3所示。圖3 89c51單片機(jī)及其引腳1at89c51單片機(jī)性能介紹 at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(fperomfalsh programmable and erasable read only memory)的低電壓,高性能cmos8位微處理器,俗稱單片機(jī)。該器件采用atmel高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲(chǔ)器組合在單個(gè)芯片中,atmel的at89c51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。2主要特性:1.與mcs-51 兼容 2.4k字節(jié)可編程
21、閃爍存儲(chǔ)器 3.壽命:1000寫(xiě)/擦循環(huán)4.數(shù)據(jù)保留時(shí)間:10年5.全靜態(tài)工作:0hz-24hz6.三級(jí)程序存儲(chǔ)器鎖定7.128*8位內(nèi)部ram8.32可編程i/o線9.兩個(gè)16位定時(shí)器/計(jì)數(shù)器10.5個(gè)中斷源 11.可編程串行通道12.低功耗的閑置和掉電模式13.片內(nèi)振蕩器和時(shí)鐘電路3管腳說(shuō)明:vcc:供電電壓。 gnd:接地。 p0口:p0口為一個(gè)8位漏級(jí)開(kāi)路雙向i/o口,每腳可吸收8ttl門(mén)電流。當(dāng)p1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時(shí),p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,
22、此時(shí)p0外部必須被拉高。 p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門(mén)電流。p1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時(shí),p1口作為第八位地址接收。 p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門(mén)電流,當(dāng)p2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),p2口輸出地址的高
23、八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個(gè)ttl門(mén)電流。當(dāng)p3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。p3口也可作為at89c51的一些特殊功能口,如下表2-1所示:口管腳備選功能p3.0rxd(串行輸入口)p3.1txd(串行輸出口)p3.2/int0(外部中斷0)p3.3/int1(外部中斷1)p3
24、.4t0(記時(shí)器0外部輸入)p3.5t1(記時(shí)器1外部輸入)p3.6/wr(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)p3.7/rd(外部數(shù)據(jù)存儲(chǔ)器讀選通)p3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間.ale/prog:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ale脈沖。如想禁止ale的輸出可在
25、sfr8eh地址上置0。此時(shí), ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無(wú)效。 /psen:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen信號(hào)將不出現(xiàn)。 /ea/vpp:當(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)。 x
26、tal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 xtal2:來(lái)自反向振蕩器的輸出。1.2.2 單片機(jī)系統(tǒng) 單片機(jī)系統(tǒng)的基本結(jié)構(gòu)框圖如圖4所示。從圖中可以看出,對(duì)于一個(gè)典型的單片機(jī)系統(tǒng)而言,主要由單片機(jī)、晶振和復(fù)位電路、輸入控制電路、輸出顯示電路以及外圍功能器件5個(gè)部分組成。除了上文中介紹過(guò)的單片機(jī)外,單片機(jī)系統(tǒng)中的其他4個(gè)部分的主要作用和器件如下。晶振和復(fù)位電路:?jiǎn)纹瑱C(jī)系統(tǒng)的必要組成部分,控制單片機(jī)的機(jī)器周期和功能復(fù)位。輸入控制:是指在一定要求下,采取何種形式的控制方式來(lái)實(shí)現(xiàn)單片機(jī)不同功能的轉(zhuǎn)換,以及控制指令以何種方式傳送到單片機(jī)。常用的輸入控制方法有按鍵、矩陣鍵盤(pán)、串行通信等方式。
27、晶振、復(fù)位電路輸入控制輸出顯示外圍功能器件單片機(jī)圖4 單片機(jī)系統(tǒng)的基本組成 輸出顯示:是指單片機(jī)將需要顯示的數(shù)據(jù)發(fā)送到led、液晶等顯示模塊,并控制led等顯示模塊按照一定的格式顯示的功能。此外,輸出對(duì)象還有電機(jī)、傳感器等特殊的功能器件。外圍功能器件:?jiǎn)纹瑱C(jī)只是控制器件,對(duì)應(yīng)與一定的設(shè)計(jì)要求,需要加入特定功能的器件。例如外部存儲(chǔ)器,單片機(jī)通過(guò)對(duì)外部存儲(chǔ)器的讀寫(xiě)操作,完成對(duì)數(shù)據(jù)的存儲(chǔ)器的讀寫(xiě)操作,完成對(duì)數(shù)據(jù)的存儲(chǔ)和讀取,從而擴(kuò)展單片機(jī)的存儲(chǔ)單元和數(shù)據(jù)。此外,常用的外圍器件還有a/d、d/a、74ls07門(mén)電路以及特定功能的傳感器等。單片機(jī)的最簡(jiǎn)單系統(tǒng)是指單片機(jī)能正常工作所必須的外圍元件,主要由單
28、片機(jī)、晶振電路和復(fù)位電路構(gòu)成。而輸入/輸出部分則通過(guò)單片機(jī)的i/o口實(shí)現(xiàn)。1.2.3 數(shù)碼管數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管; 按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(com)的數(shù)碼管,共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極com接到+5v,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(com)的數(shù)碼
29、管,共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極com接到地線gnd上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就不亮。 第2章 系統(tǒng)組成2.1 硬件控制線路圖圖2原理圖2.2 晶振電路 簡(jiǎn)單地說(shuō),沒(méi)有晶振,就沒(méi)有時(shí)鐘周期,沒(méi)有時(shí)鐘周期,就無(wú)法執(zhí)行程序代碼,單片機(jī)就無(wú)法工作。單片機(jī)工作時(shí),是一條一條地從rom中取指令,然后一步一步地執(zhí)行。單片機(jī)訪問(wèn)一次存儲(chǔ)器的時(shí)間,稱之為一個(gè)機(jī)器周期,這是一個(gè)時(shí)間基準(zhǔn)。一個(gè)機(jī)器周期包括12個(gè)時(shí)鐘周期。如果一個(gè)單片機(jī)選擇了12mhz晶振,它的時(shí)鐘周期是1/12us,它的一個(gè)機(jī)器周期是12*(1/12)us,也就是1us。mcs-
30、51單片機(jī)的所有指令中,有一些完成得比較快,只要一個(gè)機(jī)器周期就行了,有一些完成得比較慢,得要2個(gè)機(jī)器周期,還有兩條指令要4個(gè)機(jī)器周期才行。為了衡量指令執(zhí)行時(shí)間的長(zhǎng)短,又引入一個(gè)新的概念:指令周期。所謂指令周期就是指執(zhí)行一條指令的時(shí)間。例如,當(dāng)需要計(jì)算djnz指令完成所需要的時(shí)間時(shí),首先必須要知道晶振的頻率,設(shè)所用晶振為12mhz,則一個(gè)機(jī)器周期就是1us。而djnz指令是雙周期指令,所以執(zhí)行一次要2us。如果該指令需要執(zhí)行500次,正好1000us,也就是1ms。機(jī)器周期不僅對(duì)于指令執(zhí)行有著重要的意義,而且機(jī)器周期也是單片機(jī)定時(shí)器和計(jì)數(shù)器的時(shí)間基準(zhǔn)。例如一個(gè)單片機(jī)選擇了12mhz晶振,那么當(dāng)定
31、時(shí)器的數(shù)值加1時(shí),實(shí)際經(jīng)過(guò)的時(shí)間就是1us,這就是單片機(jī)的定時(shí)原理。1、晶振的選擇晶振一般分為晶體振蕩器和晶體諧振器。在單片機(jī)系統(tǒng)中,晶體振蕩器將外圍的電容集成到振蕩器的內(nèi)部,無(wú)需再設(shè)計(jì)晶振電路,只需要將電源加載到晶振上,晶振就可以起振,并通過(guò)兩個(gè)引腳輸出到單片機(jī)的晶振引腳上。一般的,由于晶體振蕩器的體積較大,價(jià)格較貴,在實(shí)際使用中,還可以選擇晶體諧振器,也就是常說(shuō)的立式晶振。該晶振需要外部的晶振電路才可以起振,但是由于該電路非常簡(jiǎn)單,并且使用靈活,在單片機(jī)系統(tǒng)中也有廣泛地應(yīng)用。2、通用的晶振電路單片機(jī)的晶振電路是一種典型電路,分為內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式兩種。內(nèi)部時(shí)鐘方式的電路如圖4所示。
32、圖4 單片機(jī)的內(nèi)部晶振電路內(nèi)部始終的晶振頻率一般都選擇在4mhz12mhz之間,外接兩個(gè)諧振電容。該電容的典型值為30pf,但是在實(shí)際應(yīng)用時(shí),需要根據(jù)實(shí)際起振情況選擇。如果單片機(jī)的時(shí)鐘必須使用某一個(gè)外接的時(shí)鐘信號(hào),就不要外接晶振。由于此時(shí)的外接晶振引腳上沒(méi)有晶振信號(hào)輸入,內(nèi)部的時(shí)鐘電路將停振。這種方式稱為外部時(shí)鐘方式。圖5給出了兩種外部時(shí)鐘的電路,可以根據(jù)不同的單片機(jī)型號(hào)選擇不同的電路。 hmos型單片機(jī) chmos型單片機(jī)圖5 單片機(jī)的外部晶振電路3、振蕩器特性: xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘
33、源驅(qū)動(dòng)器件,xtal2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。2.3 復(fù)位電路簡(jiǎn)單地說(shuō),單片機(jī)的復(fù)位就和計(jì)算機(jī)的重起一樣的概念。任何單片機(jī)在工作之前都要有個(gè)復(fù)位的過(guò)程,復(fù)位對(duì)單片機(jī)來(lái)說(shuō),是程序還沒(méi)有開(kāi)始執(zhí)行,是在做準(zhǔn)備工作。一般的復(fù)位只需要5ms的時(shí)間。復(fù)位引腳rst/vpd通過(guò)片內(nèi)一個(gè)施密特觸發(fā)器(抑制噪聲作用)與片內(nèi)復(fù)位電路相連,施密特觸發(fā)器的輸出,在每個(gè)機(jī)器周期的s5p2有復(fù)位電路采樣依次。當(dāng)振蕩電路工作,并且在rst引腳加上一個(gè)至少保持2個(gè)機(jī)器周期的高電平時(shí),就能使8051完成一次復(fù)位。按上面所說(shuō),時(shí)
34、間不少于5ms。為了達(dá)到這個(gè)要求,需要在外部設(shè)計(jì)復(fù)位電路。復(fù)位電路的實(shí)現(xiàn)可以有很多種方法,但是從功能上一般分為兩種:一種是電源復(fù)位,即外部的復(fù)位電路在系統(tǒng)通上電源之后直接使單片機(jī)工作,單片機(jī)的起停通過(guò)電源控制;另一種方法是在復(fù)位電路中設(shè)計(jì)按鍵開(kāi)關(guān),通過(guò)按鍵開(kāi)關(guān)觸發(fā)復(fù)位電平,控制單片機(jī)的復(fù)位。1、通用的復(fù)位電路和晶振電路一樣,復(fù)位電路也是單片機(jī)系統(tǒng)的典型外部電路?;镜膹?fù)位電路的原理圖如圖6所示。圖6 單片機(jī)的復(fù)位電路從原理上,一般采用上電復(fù)位嗲路。這種復(fù)位電路的工作原理是:通電時(shí),電容兩端相當(dāng)于是短路,于是rst引腳上為高電平,然后電源通過(guò)電阻對(duì)電容充電,rst端電壓慢慢下降,降到一定程序,即
35、為低電平,單片機(jī)開(kāi)始正常工作。2、改進(jìn)型的復(fù)位電路對(duì)于有著豐富電路設(shè)計(jì)經(jīng)驗(yàn)的讀者而言,可以根據(jù)自己的需要,定制滿足實(shí)際要求的電路。這里,給出了一種根據(jù)實(shí)際需要設(shè)計(jì)的上電復(fù)位電路,如圖7所示。圖7 改進(jìn)型的復(fù)位電路2.4信號(hào)燈控制電路外圍器件選擇的是發(fā)光二極管,發(fā)光二極管在其兩端的電壓差超出其導(dǎo)通壓降時(shí)開(kāi)始工作,發(fā)光二極管的導(dǎo)通壓降一般為1.7v1.9v。此外,工作電流要滿足該二極管的工作電流。滿足電流和電壓的要求,發(fā)光二極管就可以發(fā)光了。單片機(jī)系統(tǒng)中往往是數(shù)字信號(hào),不是5v就是0v,所以只要將二極管的正負(fù)極和電源對(duì)應(yīng)上就可以了。但還需在發(fā)光二極管和單片機(jī)連接時(shí)加一個(gè)限流電阻,這個(gè)電阻的作用在于
36、限制通過(guò)二極管的電流,從而達(dá)到減少功耗或者滿足端口對(duì)最大電流的限制。圖8 信號(hào)燈控制和時(shí)間顯示電路一般二極管的點(diǎn)亮電流為5ma至10ma,在5v驅(qū)動(dòng)時(shí),廠家多采用470歐的限流電阻,在電路中采用了1k的電阻,電流也就35ma。當(dāng)然為了更亮一點(diǎn),可以減小電阻值,當(dāng)然,二極管的電流不要超出單片機(jī)的i/o最大電流。發(fā)光二極管的參數(shù)分成三大類:一是電參數(shù);二是光參數(shù);三是極限參數(shù)。 電參數(shù)發(fā)光二極管的電參數(shù)主要有下列幾項(xiàng)。 正向電壓vf。它是指:在給發(fā)光二極管加入規(guī)定的正向電流時(shí),發(fā)光二極管正極與負(fù)極引腳之間的電壓降。發(fā)向耐壓vr。它是指:保證發(fā)光二極管不出現(xiàn)反向擊穿時(shí)所允許給發(fā)光二極管加的最大反向電
37、壓。反向漏電流ir。它是指:在給發(fā)光二極管加上規(guī)定的反向偏置電壓時(shí),流過(guò)發(fā)光二極管的反向電流,即從負(fù)極流向正極的電流。結(jié)電容co。它是指:發(fā)光二極管pn結(jié)的結(jié)電容,一般為小于100pf,此結(jié)電容愈小愈好。 光參數(shù)發(fā)光二極管的光參數(shù)主要有發(fā)光峰值波長(zhǎng)、半峰寬度和發(fā)光強(qiáng)度。其中發(fā)光強(qiáng)度是發(fā)光二極管的一項(xiàng)重要光參數(shù),它表征了發(fā)光二極管發(fā)光時(shí)的亮度。 極限參數(shù)發(fā)光二極管的極限參數(shù)關(guān)系到發(fā)光二極管的安全使用,在使用過(guò)程中若超過(guò)極限參數(shù),發(fā)光二極管將會(huì)損壞。發(fā)光二極管的極限參數(shù)主要有兩項(xiàng):一是極限功率pm;二是極限工作電流im。在小電流發(fā)光二極管中,極限電流一般小于5ma。發(fā)光二極管的三種參數(shù)中,除光參數(shù)
38、是它特有的外,其他兩項(xiàng)參數(shù)的含義與普通二極管相同。2.5 led顯示及顯示接口單片機(jī)應(yīng)用系統(tǒng)中,使用的顯示器主要有l(wèi)ed(發(fā)光二極管顯示器)和lcd(液晶顯示器)。這兩種顯示器成本低廉,配置靈活,與單片機(jī)接口放便。近年來(lái)也開(kāi)始配置簡(jiǎn)易形式的crt接口,可以較方使池進(jìn)行圖形顯示。數(shù)碼管在該電路中主要是顯示單片機(jī)的輸出數(shù)據(jù)、狀態(tài)等,因而,作為外圍典型器件,數(shù)碼管顯示是反映系統(tǒng)輸出和操縱輸入的有效器件。數(shù)碼管具備數(shù)字接口,可以很方便地和單片機(jī)系統(tǒng)連接;數(shù)碼管的體積小,重量輕,并且共好低,是一種理想的顯示單片機(jī)數(shù)據(jù)輸出內(nèi)容的期間,在單片機(jī)系統(tǒng)中有著重要的作用。顯示電路如圖8所示。1led顯示器結(jié)構(gòu)與原
39、理led顯示塊是由發(fā)光二極管顯示字段的顯示器件,在單片機(jī)應(yīng)用系統(tǒng)中通常使用的是七段led。這種顯示塊有共陰極與共陽(yáng)極兩種,如圖9所示。共陰極led顯示塊的發(fā)光級(jí)管陰極共地。如圖中(c)所示,當(dāng)某個(gè)發(fā)光二極管的陽(yáng)極為高電平時(shí),發(fā)光二極管點(diǎn)亮;共陽(yáng)極led顯示塊的發(fā)光二極管陽(yáng)極并接。如圖中(b)所示。圖中(a)為七段碼顯示器的實(shí)際外觀與引腳連接圖,另外兩只沒(méi)有標(biāo)出的引腳是共陰或者共陽(yáng)引腳,實(shí)際連接中接地(共陰)或者接+5伏(共陽(yáng))。圖9 led的管腳和電路原理通常的七段顯示器(也有人稱為七節(jié)顯示屏)是由八個(gè)發(fā)光二極管所組成的,因此也被叫做八段顯示器。其中包括七個(gè)細(xì)長(zhǎng)條形的led及小數(shù)點(diǎn)行的led,
40、顯示器的每一段或沒(méi)一劃都有其名稱,分別是英文小寫(xiě)的a到f,以及小數(shù)點(diǎn)dp(decimal point)。七段顯示器可以顯示包括小數(shù)點(diǎn)的0到9數(shù)字與部分的英文字母。在近年來(lái),由于生產(chǎn)器件的工藝的進(jìn)步,也出現(xiàn)了十六段碼led顯示器和點(diǎn)陣式單色和雙色顯示器,這些led顯木器被廣泛應(yīng)用于電梯、大屏幕led顯示器、公共汽車(chē)報(bào)站器、車(chē)站車(chē)次顯示等領(lǐng)域,特別是點(diǎn)陣式雙色顯示器的出現(xiàn),極大的方便了漢字的顯示和圖形顯示,為其在網(wǎng)民經(jīng)濟(jì)的領(lǐng)域的應(yīng)用拓寬了道路。以共陽(yáng)極的七段顯示器為例,若想要顯示數(shù)字1時(shí),就要使b劃與c劃點(diǎn)亮,在電路上我們會(huì)把共同點(diǎn)接到正電源端(+5v),標(biāo)示b與c的地方經(jīng)過(guò)限流電阻到地,就可以顯
41、示數(shù)字1。如果是單個(gè)的數(shù)碼管,七段顯示器是直接點(diǎn)亮的,亦即用8位去推動(dòng)一個(gè)七段顯示器。如果有多位數(shù)字要顯示時(shí),可以用掃描的方式顯示,以節(jié)省控制腳位。 七段顯示塊與單片機(jī)接口非常容易。只要將一個(gè)8位并行輸出門(mén)與顯示塊的發(fā)光二極管引腳相連即可。8位并行輸出門(mén)輸出不同的字節(jié)數(shù)據(jù)即可獲得不同的數(shù)字或字符,其段碼如表2-3所示。通常將控制發(fā)光二極管的8位字節(jié)數(shù)據(jù)稱為段選碼。共陽(yáng)極與共陰極的段選碼義為補(bǔ)數(shù)。圖10 七段led 碼的顯示碼2. led是如何顯示單片機(jī)數(shù)據(jù)的用單片機(jī)驅(qū)動(dòng)led數(shù)碼管有很多種方法,按顯示方式分,有靜態(tài)顯示和動(dòng)態(tài)顯示。首先介紹靜態(tài)顯示方法。靜態(tài)顯示就是顯示驅(qū)動(dòng)電路具有輸出鎖存功能,
42、單片機(jī)將所要顯示的數(shù)據(jù)送出后就不再控制led,直到下一次顯示時(shí)再傳送一次新的顯示數(shù)據(jù)。靜態(tài)顯示的數(shù)據(jù)穩(wěn)定,占用的cup時(shí)間少。靜態(tài)顯示中,沒(méi)一個(gè)顯示器都要占用單獨(dú)的具有鎖存功能的i/o接口,該接口用于筆劃段字形代碼。這樣單片機(jī)只要把顯示的字形代碼發(fā)送到接口電路,該字段就可以顯示發(fā)送的字形。要顯示新的數(shù)據(jù)時(shí),單片機(jī)再發(fā)送新的字形碼。另一種方法是動(dòng)態(tài)掃描顯示。動(dòng)態(tài)掃描的方法是用其接口電路把所有顯示器的8個(gè)筆劃段a-h同名端連在一起,而沒(méi)一個(gè)顯示器的公共極com各自獨(dú)立地受i/o線控制。cpu向字段輸出口送出字形碼時(shí),所有顯示器接口接收到相同的字形碼,但究竟是哪個(gè)顯示器亮,則取決于com端,而這一端
43、是有i/o控制的,由單片機(jī)決定何時(shí)顯示哪一位了。動(dòng)態(tài)掃描用分時(shí)的方法輪流控制各個(gè)顯示器的com端,使各個(gè)顯示器輪流點(diǎn)亮。在輪流點(diǎn)亮掃描過(guò)程中,沒(méi)位顯示器的點(diǎn)亮?xí)r間極為短暫,但由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù)。3靜態(tài)顯示和動(dòng)態(tài)顯示的比較這兩種顯示方式各有利弊:靜態(tài)顯示雖然數(shù)據(jù)顯示穩(wěn)定,占用很少的cpu時(shí)間,但每個(gè)顯示單元都需要單獨(dú)的顯示驅(qū)動(dòng)電路,使用的電路硬件較多;動(dòng)態(tài)顯示需要cpu時(shí)刻對(duì)顯示器進(jìn)行數(shù)據(jù)刷新,顯示數(shù)據(jù)有閃爍感,占用的cpu時(shí)間多,但使用的硬件少,能節(jié)省線路板空間。在一般較為簡(jiǎn)單的系統(tǒng)中,為了降低成本,動(dòng)態(tài)顯示方案具備一定的實(shí)用性,也是目
44、前單片機(jī)數(shù)碼管顯示中較為常用的一種顯示方法。動(dòng)態(tài)顯示法是目前各種單片計(jì)算機(jī)采用的流行方法。其優(yōu)點(diǎn)是煙堿簡(jiǎn)單?!皠?dòng)態(tài)”由軟件實(shí)現(xiàn)。第3章 交通信號(hào)燈的c語(yǔ)言編程3.1單片機(jī)的c語(yǔ)言程序設(shè)計(jì) c語(yǔ)言程序設(shè)計(jì)是單片機(jī)開(kāi)發(fā)、應(yīng)用的重要趨勢(shì)之一。目前,支持硬斷點(diǎn)的單片機(jī)仿真器已能很好地進(jìn)行c語(yǔ)言程序調(diào)試,為單片機(jī)編程使用c語(yǔ)言提供了便利條件。 編譯型程序設(shè)計(jì)語(yǔ)言c的優(yōu)點(diǎn)已為大家熟知:既有多種高級(jí)語(yǔ)言的特點(diǎn),又具備匯編語(yǔ)言的功能:有豐富的庫(kù)函數(shù)、運(yùn)算速度快、編譯效率高、可移植性好,而且可以實(shí)現(xiàn)對(duì)系統(tǒng)硬件的直接控制;具有完善的模塊程序結(jié)構(gòu),支持廣泛采用的由頂向下結(jié)構(gòu)化程序設(shè)汁,為軟件開(kāi)發(fā)中采用模塊化設(shè)計(jì)方法
45、提供了有效支持;可以大大縮短目標(biāo)系統(tǒng)軟件的開(kāi)發(fā)周期,軟件的可讀件明顯增加,便于改進(jìn)、擴(kuò)充,研制規(guī)模更大、性能更完備的系統(tǒng)。3.2 c語(yǔ)言與mcs513.2.1 mcs51酌編程語(yǔ)言 支持mcs51單片機(jī)編程的語(yǔ)言除了前面學(xué)過(guò)的匯編語(yǔ)言外,還有三種:basic、pl/m和c。 basic語(yǔ)言簡(jiǎn)單易學(xué),適用于對(duì)編程效率或運(yùn)行速度要求不高的場(chǎng)合,8052單片機(jī)片內(nèi)就固化了basic語(yǔ)言解釋器。但是basic采用浮點(diǎn)運(yùn)算,導(dǎo)致程序復(fù)雜且執(zhí)行時(shí)間長(zhǎng),即使basic編譯器也未能解決這個(gè)問(wèn)題。 pl/m可以說(shuō)是“高級(jí)匯編語(yǔ)言”,詳細(xì)控制著代碼的生成。但對(duì)mcs-51系列,pl/m不支持復(fù)雜的算術(shù)運(yùn)算和浮點(diǎn)變
46、量,也沒(méi)有豐富的庫(kù)函數(shù)。 用c語(yǔ)言進(jìn)行單片機(jī)程序設(shè)計(jì),編譯器能自動(dòng)完成變量的存儲(chǔ)單元的分配,編程者可以專過(guò)于應(yīng)用軟件的設(shè)計(jì)大大加快開(kāi)發(fā)速度,可以對(duì)單片機(jī)常用的接口芯片編制通用的驅(qū)動(dòng)函數(shù),對(duì)常用的功能模塊、算法等編制相應(yīng)的函數(shù),還可以很容易地進(jìn)行信號(hào)處理算法和程序的移植,有利于產(chǎn)品中單片機(jī)的重新選型和軟件設(shè)計(jì)水平的提高、與國(guó)外嵌入式系統(tǒng)的程序設(shè)計(jì)接軌。 與匯編語(yǔ)言相比,c語(yǔ)言程序在開(kāi)發(fā)速度、軟件質(zhì)量、結(jié)構(gòu)嚴(yán)謹(jǐn)、程序可靠性等方面有明顯優(yōu)勢(shì)。而代碼效率相對(duì)較低的缺點(diǎn),對(duì)于片內(nèi)rom空間16k/32k字節(jié)以上的單片機(jī)而言,已經(jīng)不很重要。目前,單片機(jī)上c語(yǔ)言程序未經(jīng)人工優(yōu)化的代碼長(zhǎng)度,已縮短到用人工方便
47、地對(duì)時(shí)間要求比較嚴(yán)格的匯編語(yǔ)言模塊和關(guān)鍵代碼進(jìn)行優(yōu)化。3.2.2 c51編譯器與程序開(kāi)發(fā)過(guò)程 已經(jīng)開(kāi)發(fā)了各種單片機(jī)的c語(yǔ)言編譯器 對(duì)于并不以快速運(yùn)算見(jiàn)長(zhǎng)的mcs51單片機(jī)來(lái)說(shuō),其c語(yǔ)言編譯器(簡(jiǎn)稱c51)的各項(xiàng)性能指標(biāo)中,最重要的是開(kāi)發(fā)便利,其次是生成代碼緊湊,以及編譯速度、是否有浮點(diǎn)庫(kù)和足夠的算術(shù)支持。c51程序開(kāi)發(fā)過(guò)程如圖10所示:圖10 c51程序開(kāi)發(fā)過(guò)程3.2.3 c51程序結(jié)構(gòu) 與一般c語(yǔ)言相似,c51程序的基本單位是函數(shù)。函數(shù)由函數(shù)說(shuō)明和函數(shù)體兩部分組成。一個(gè)c源程序至少包含個(gè)(main)也可以是一個(gè)主函數(shù)和若干其它函數(shù)。主函數(shù)是程序的入口;主函數(shù)中的所有語(yǔ)句執(zhí)行完畢,則程序結(jié)束。
48、 c51程序的一般格式如下:類型 函數(shù)名(參數(shù)表)參數(shù)說(shuō)明: 數(shù)據(jù)說(shuō)明部分: 執(zhí)行語(yǔ)句部分: 在程序中,函數(shù)有三種形態(tài):函數(shù)定義、函數(shù)調(diào)用和函數(shù)說(shuō)明。 函數(shù)定義相當(dāng)于匯編中的一般子程序。 函數(shù)調(diào)用相當(dāng)于調(diào)用子程序的call語(yǔ)句,要求有函數(shù)名和實(shí)參數(shù)表。在c中,更普遍地規(guī)定函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中。函數(shù)定義和函數(shù)調(diào)用不分先后,但若調(diào)用在定義之前,必須在調(diào)用前先進(jìn)行函數(shù)說(shuō)明。函數(shù)說(shuō)明是一個(gè)沒(méi)有函數(shù)體的函數(shù)定義。 c51中函數(shù)分為兩大類:庫(kù)函數(shù)和用戶定義函數(shù)。被調(diào)用的函數(shù)可以是庫(kù)函數(shù),也可以是用戶函數(shù)。 庫(kù)函數(shù)是c51在庫(kù)文件中已定義的函數(shù),其函數(shù)說(shuō)明在相關(guān)的頭文件中。用戶在編程時(shí)只要用inclu
49、de預(yù)處理指令將頭文件包含在用戶文件中,直接調(diào)用即可。 用戶函數(shù)是用自己定義,自己調(diào)用的一類函數(shù)。 c51程序的編制與一勝c語(yǔ)言行序大致相同。3.3 利用c51程序編寫(xiě)延時(shí)程序?yàn)榱搜驖u進(jìn)地學(xué)習(xí)單片機(jī)的功能,這里我們即使用了單片機(jī)中的定時(shí)器,也直接采用軟件的延時(shí)程序定時(shí)控制發(fā)光二極管的亮滅。該延時(shí)程序的時(shí)間主要是通過(guò)計(jì)算單片機(jī)執(zhí)行指令所需的時(shí)間來(lái)確定的。例如,在前文中介紹過(guò),在選擇12mhz晶振時(shí),執(zhí)行一個(gè)簡(jiǎn)單加法指令的時(shí)間為一個(gè)指令周期,需要1/12m(秒)=1(微秒),所以程序中作1m次加法循環(huán)所需要的時(shí)間就是1秒鐘。當(dāng)然,這只是一個(gè)粗略的算法,需要加上執(zhí)行其他必須指令所花的時(shí)間,并且考慮
50、程序代碼的效率。但是,這不失為一種簡(jiǎn)單的解決方案。 程序代碼void delay10ms(void) unsigned char i,j; /定義延時(shí)循環(huán)變量 for(i=20;i0;i-) for(j=248;j0;j-); /雙重循環(huán),延時(shí)10ms3.4 信號(hào)燈亮滅的定時(shí)功能 單片機(jī)之所以在工業(yè)控制中有大量的應(yīng)用,就是在于它有其獨(dú)特的定時(shí)、計(jì)數(shù)功能。在本電路中,用定時(shí)器來(lái)實(shí)現(xiàn)燈的閃爍功能??刂茊纹瑱C(jī)i/o端口電平的高低,從而控制發(fā)光二極管的亮滅通過(guò)對(duì)p1口和p3.0、p3.1、p3.3、p3.7口的變量置1和置0,控制p1口和p3口的電平高和低。當(dāng)為高電平時(shí),發(fā)光二極管兩端壓差為零,二極管
51、不導(dǎo)通,燈不亮;當(dāng)為低電平時(shí),發(fā)光二極管兩端壓差為5v,二極管導(dǎo)通,燈亮。3.4.1 單片機(jī)的定時(shí)器mcs-51系列的單片機(jī)一般有兩個(gè)內(nèi)部的16位定時(shí)器/計(jì)數(shù)器,分別稱為t0和t1。這兩個(gè)計(jì)數(shù)器分別是兩個(gè)8位的ram單元組成的,即每個(gè)計(jì)數(shù)器都是16位的計(jì)數(shù)器,最大的計(jì)數(shù)量是65536。那么這個(gè)定時(shí)/計(jì)數(shù)器是如何產(chǎn)生定時(shí)作用的呢?舉個(gè)例子,如果將時(shí)鐘定時(shí)到1分鐘,那么秒針計(jì)數(shù)到60次后,始終鬧鈴就會(huì)響。這里有個(gè)計(jì)數(shù)和定時(shí)之間的概念轉(zhuǎn)化,時(shí)間表示為秒針的計(jì)數(shù)值,即秒針每一次走動(dòng)的時(shí)間正好是1s。單片機(jī)中的定時(shí)器和計(jì)數(shù)器是復(fù)用的,計(jì)數(shù)器是記錄外部脈沖的個(gè)數(shù),而定時(shí)器則是由單片機(jī)提供的一個(gè)非常穩(wěn)定的計(jì)
52、數(shù)源。定時(shí)器是由單片機(jī)的晶振經(jīng)過(guò)12分頻后獲得的一個(gè)脈沖源。當(dāng)單片機(jī)的晶振為12mhz時(shí),計(jì)數(shù)值1代表的時(shí)間就是1us。計(jì)數(shù)器的容量是16位,也就是最大的計(jì)數(shù)值達(dá)到65536,因此計(jì)數(shù)計(jì)到65536就會(huì)產(chǎn)生溢出。當(dāng)定時(shí)器/計(jì)數(shù)器溢出時(shí),就會(huì)使得相關(guān)的寄存器標(biāo)志產(chǎn)生變化,單片機(jī)將由此而產(chǎn)生定時(shí)中斷,在中斷服務(wù)程序中處理定時(shí)到而需要完成的任務(wù)。3.4.2 如何使用mcs-51單片機(jī)的定時(shí)器呢? 使用單片機(jī)的定時(shí)器/計(jì)數(shù)器主要和編程有關(guān)。編程中需要對(duì)兩個(gè)特殊功能寄存器進(jìn)行操作。這兩個(gè)特殊功能寄存器就是tmod和tcon,又稱為定時(shí)器的控制字。 首先,介紹定時(shí)器/計(jì)數(shù)器的方式寄存器tmod。tmod是
53、一個(gè)8位的特殊功能寄存器,對(duì)應(yīng)的地址為89h,不可位尋址。tmod控制字中可以完成3個(gè)功能:確定選擇定時(shí)器,還是計(jì)數(shù)器。選擇何種工作方式。是否借用外中斷控制定時(shí)器和計(jì)數(shù)器的啟停。tmod的低4位是用于控制t0的字段,高四位用于控制t1。tmod的控制字的格式和含義如表3-1所示。表3-1 tmod的控制字tmod.7tmod.6tmod.5tmod.4tmod.3tmod.2tmod.1tmod.0gatec/tm1m0gatec/tm1m0這里,以tmod的低4位來(lái)說(shuō)明各位的定義和功能。gate:分為兩種情況,gate=0,定時(shí)器的起停和int1無(wú)關(guān),在這種情況下,定時(shí)器的起停只取決于tr0
54、。gate=1時(shí),在此種情況下定時(shí)器/計(jì)數(shù)器的開(kāi)關(guān)不僅要由tr0來(lái)控制,而且還要受到int1引腳的控制,只有tr1為1,且int1引腳也是高電平,定時(shí)器才能開(kāi)始工作。c/t:定時(shí)/計(jì)數(shù)器即可作定時(shí)也可用于計(jì)數(shù)。選擇何種功能,由c/t的控制字決定。如果c/t為0就用作定時(shí)器,如果c/t為1就用作計(jì)數(shù)器。當(dāng)然,一個(gè)定時(shí)/計(jì)數(shù)器同一時(shí)刻要么作定時(shí)用,要么作計(jì)數(shù)用,不能同時(shí)用。m1、m0:用m1、m0來(lái)控制定時(shí)/計(jì)數(shù)器4種工作方式的選擇。工作方式0:m0=0,m1=0。13位定時(shí)/計(jì)數(shù)方式,它由tl(1/0)的低5位和th(0/1)的8位構(gòu)成13位的計(jì)數(shù)器,此時(shí)tl(1/0)的高3位未用。工作方式1:
55、m0=0,m1=1。是16位的定時(shí)/計(jì)數(shù)方式,其他特性與工作方式0相同。工作方式2:m0=1,m1=0,自動(dòng)重裝初值的8位定時(shí)器/計(jì)數(shù)器。初值放在t(0/1)的高8位。在工作方式2,只有低8位參與計(jì)數(shù),而高8位不參與計(jì)數(shù),用作預(yù)置數(shù)的存放,計(jì)數(shù)范圍256。每當(dāng)計(jì)數(shù)溢出,就會(huì)打開(kāi)t(0/1)的高、低8位之間的開(kāi)關(guān),計(jì)預(yù)置數(shù)進(jìn)入低8位,這是由硬件自動(dòng)完成的,不需要由人工干預(yù)。通常這種工作方式用于波特率發(fā)生器,用于這種用途時(shí),定時(shí)器就是為了提供一個(gè)時(shí)間基準(zhǔn)。計(jì)數(shù)溢出后重新裝入預(yù)置數(shù),再開(kāi)始計(jì)數(shù),不要任何延遲。工作方式3:m0=1,m1=1。這種工作方式之下,定時(shí)/計(jì)數(shù)器0被拆成2個(gè)獨(dú)立的定時(shí)/計(jì)數(shù)器來(lái)用。其中,tl0可以構(gòu)成8位的定時(shí)器或計(jì)數(shù)器的工作方式,而th0則只能作為定時(shí)器來(lái)用。一般情況下,只有在t1以上工作方式2運(yùn)行(當(dāng)波特率發(fā)生器用)時(shí),才讓t0工作于方式3。接下來(lái),介紹定時(shí)器/計(jì)數(shù)器的控制寄存器tcon。tcon是一個(gè)8位的特殊功能寄存器,對(duì)應(yīng)的地址為88h,可位尋址。tcon中的低4位用于外部中斷的控制,在后文中將加以介紹,此處只對(duì)高4位的t0、t1控制字及其控制原理進(jìn)行介紹。tcon控制寄存器的格式和含義如表3-2所示。表3-2 tcon控制寄存器tcon.7
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學(xué)導(dǎo)數(shù)考試題庫(kù)及答案
- 中醫(yī)藥師考試題及答案
- 浙江省金華市金華十校2024-2025學(xué)年化學(xué)高二下期末檢測(cè)模擬試題含解析
- 云南省曲靖市宣威九中2025年高二生物第二學(xué)期期末綜合測(cè)試試題含解析
- 生態(tài)循環(huán)經(jīng)濟(jì)車(chē)間廠房租賃與節(jié)能減排合同
- 倉(cāng)儲(chǔ)配送與供應(yīng)鏈金融服務(wù)合同范本
- 在海外舉辦中外合資經(jīng)營(yíng)企業(yè)章程(19篇)
- 2025年四年級(jí)語(yǔ)文下學(xué)期教學(xué)工作總結(jié)范文(5篇)
- 百日沖刺演講稿范文錦集(16篇)
- 社區(qū)干部培訓(xùn)心得體會(huì)(17篇)
- 把未來(lái)點(diǎn)亮歌詞打印版
- 船體振動(dòng)知到章節(jié)答案智慧樹(shù)2023年華中科技大學(xué)
- 四級(jí)下冊(cè)英語(yǔ)期末測(cè)試卷深圳版
- 新能源汽車(chē)驅(qū)動(dòng)電機(jī)常見(jiàn)故障診斷與排除
- 健康安全危險(xiǎn)源識(shí)別、風(fēng)險(xiǎn)評(píng)估和風(fēng)險(xiǎn)控制表
- 職業(yè)生涯規(guī)劃書(shū)職業(yè)生涯規(guī)劃大賽優(yōu)秀作品
- 摩托車(chē)不過(guò)戶免責(zé)協(xié)議(2篇)
- GB 2715-2016食品安全國(guó)家標(biāo)準(zhǔn)糧食
- 第25課《活板》復(fù)習(xí)課件-部編版語(yǔ)文七年級(jí)下冊(cè)
- 國(guó)家開(kāi)放大學(xué)《金融法規(guī)》章節(jié)自測(cè)練習(xí)參考答案
- 《言語(yǔ)治療技術(shù)》考試復(fù)習(xí)題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論