




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、YCF正版可修改PPT(中職)單片機(jī)原理及應(yīng)用第三章教學(xué)課件第三章單片機(jī)翅味實臉的編寫設(shè)計模塊概述單片機(jī)SCM(Single Chip Microcomputer),即MicroController,是把微型計算機(jī)主要部分都集成在一個芯片上的單芯片微型計算機(jī)。主要包括了微處理器(CPU )、存儲器(ROM,RAM ) ,輸入/輸出口(I/O口)和定時器/計數(shù)器、中斷系統(tǒng)等功能部件。單片機(jī)自20世紀(jì)70年代出現(xiàn)以來,已經(jīng)有了很大的發(fā)展,被廣泛應(yīng)用于機(jī)械、測量控制、工業(yè)自動化、智能接口和智能儀表等許多領(lǐng)域。例如:單片機(jī)與傳統(tǒng)的機(jī)械產(chǎn)品相結(jié)合后簡化產(chǎn)品結(jié)構(gòu),實現(xiàn)控制智能化,成為新一代的機(jī)、電一體化產(chǎn)
2、品;利用單片機(jī)來構(gòu)成各種工業(yè)控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)等;在大型工業(yè)測控系統(tǒng)中,單片機(jī)進(jìn)行接口的控制與管理,與計算機(jī)主機(jī)并行工作,可以大大提高系統(tǒng)運行速度。為了使單片機(jī)初學(xué)者更好地了解單片機(jī)的簡單應(yīng)用,本章介紹六個簡單實驗電路的設(shè)計。下一頁第三章單片機(jī)翅味實臉的編寫設(shè)計教學(xué)目標(biāo)1.掌握對單片機(jī)的I/O端口控制、各中斷的具體應(yīng)用設(shè)計方法。2.掌握單片機(jī)產(chǎn)生音樂的設(shè)計方法、發(fā)光二極管和多位七段數(shù)碼管顯示的控制方法。3.了解鍵盤輸入的控制設(shè)計方法以及模擬信號到數(shù)字信號的簡單轉(zhuǎn)換控制設(shè)計方法等。下一頁第三章單片機(jī)翅味實臉的編寫設(shè)計3.1單片機(jī)聲控LED燈控制器3.2可控制的LED閃爍燈3.3LED流水燈效
3、果的控制3.4LED復(fù)雜顯示效果的實驗3.5單片機(jī)輸出音頻信號的方法3.6單片機(jī)LED數(shù)碼顯示器3.7練習(xí)3.1單片機(jī)聲控LED燈控制器單片機(jī)聲控LED燈控制器也是利用計算機(jī)中斷口來進(jìn)行信號輸入的。學(xué)生通過本節(jié)的學(xué)習(xí),可以進(jìn)一步理解中斷過程及其原理。一、實驗組織要求1.實驗?zāi)康?進(jìn)一步了解計算機(jī)中斷產(chǎn)生的機(jī)理;.了解中斷接口電路在實際中的應(yīng)用。2.實驗器材下一頁返回3.1單片機(jī)聲控LED燈控制器下一頁上一頁返回3.1單片機(jī)聲控LED燈控制器3.教學(xué)節(jié)奏與方式下一頁上一頁返回3.1單片機(jī)聲控LED燈控制器二、實驗內(nèi)容1.聲控前置放大電路與聲控原理本聲控LED燈閃亮控制器是利用單片機(jī)的中斷系統(tǒng)實現(xiàn)
4、控制的,為了使較小的聲響觸發(fā)脈沖也能觸發(fā)單片機(jī)的中斷系統(tǒng),必須有一個合適的音頻放大器,以便于將微弱的聲音信號得到放大,其放大電路如圖3一1所示。這里采用的是駐極體話筒,三極管幾乎可以使用任何一個NPN型三極管。其工作原理是:話筒MIC拾取了外界的聲音之后,將音頻信號變?yōu)殡姎庑盘?,?jīng)過C4傳送給VT2進(jìn)行放大處理,并由VT2的集電極輸出。在話筒剛剛拾取聲音的一瞬間,由于三極管的放大作用,使得VT2導(dǎo)通,C極的電位下降,從而觸發(fā)了單片機(jī)的中斷請求。電路中C5的作用是為了穩(wěn)定P3. 5端線的電壓不發(fā)生瞬間的跳變,以保證中斷請求所需要的時間。在實下一頁上一頁返回3.1單片機(jī)聲控LED燈控制器際的實驗中
5、可根據(jù)單片機(jī)的設(shè)置,適當(dāng)n調(diào)整C5和R34的參數(shù)值。2.工作原理與電路制作 由圖可知,音頻放大的輸出端與89C51單片機(jī)的P3. 5接口連接,P3口是一個具有第二功能的接口,P3. 5端的第二功能為定時器/計數(shù)器1( T1)的外部脈沖信號輸入端。如果單片機(jī)內(nèi)部相關(guān)設(shè)置被許可,當(dāng)外部有脈沖信號輸入到該腳時,定時器/計數(shù)器的計數(shù)值將逐一累加,當(dāng)累加后的數(shù)值大于計數(shù)器的最大值時,定時器/計數(shù)器便向CPU發(fā)出中斷請求,進(jìn)而去執(zhí)行中斷程序。在這里以交通路口的紅綠燈為例進(jìn)行說明:當(dāng)有汽車駛?cè)肼房跁r,該路口為紅燈,而另外的路口又沒有車輛,此時紅燈路口汽車的駛進(jìn)而發(fā)出聲響,此聲響由單片機(jī)控制器接收到,并控制路
6、口交通燈切換。單片機(jī)聲控LED燈控制器元器件列表如表3一1所示。下一頁上一頁返回3.1單片機(jī)聲控LED燈控制器本制作也可以選用萬用電路板。這里使用了本教材配套的成品印制電路板(PCB板),裝配好的電路板如圖3一2所示,圖中線框內(nèi)的電路即為聲控電路元件。用一條連接線將PCB板上的“A,點與“B”點(見圖3 -2中白圈處)連接起來,將聲控放大電路的輸出端與單片機(jī)的T1端連接,即完成本電路的全部制作過程。下一頁上一頁返回3.1單片機(jī)聲控LED燈控制器3.單片機(jī)聲音控制程序本程序可以在交通燈程序的基礎(chǔ)上加以改制。由于使用了定時器/計數(shù)器的中斷資源,因此中斷入口地址為001 BH。但目前有一個新的問題,
7、定時器/計數(shù)器要通過計數(shù)脈沖來工作的,怎樣才能使其變?yōu)橥獠恐袛喽丝谑褂媚?其實只要將定時器/計數(shù)器的預(yù)置初值設(shè)置為FFH,那么,只要再增力口一個脈沖,就可使定時器/計數(shù)器因記滿數(shù)字而發(fā)生溢出現(xiàn)象,進(jìn)而向CPU發(fā)出中斷請求。因此,本實驗的中心內(nèi)容是綜合訓(xùn)練中斷系統(tǒng)與定時器/計數(shù)器的參數(shù)設(shè)置及編程技巧,具體程序如表3一2所示。下一頁上一頁返回3.1單片機(jī)聲控LED燈控制器4.單片機(jī)聲控LED燈的調(diào)試電路的供電電壓為5V,電阻器和電容器除了阻值和容量有要求外,其他參數(shù)隨意,在以上條件下本實驗的制作和調(diào)試過程如下:.接通5V電源,可以看到交通燈在按照正常的流程進(jìn)行。將萬用表撥至lOV直流電壓檔,黑表筆
8、接地,紅表筆與89C51單片機(jī)的15腳連接,目的是測量該腳的電壓值;.進(jìn)行測量,此時表指針應(yīng)大于3V,對于單片機(jī)來說,此電壓值為高電平,說明一切準(zhǔn)備就緒; .對著話筒,兩手猛然合擊,此時萬用表的指針會隨之快速擺動,說明前級放大電路工作正常,如果程序編寫正確,那么可以看到路口上的實物交通燈會發(fā)生翻轉(zhuǎn),則本訓(xùn)練順利完成。上一頁返回3.2可控制的LED閃爍燈通常情況下,單片機(jī)根據(jù)程序流程自動運行,還可根據(jù)傳感器接收到的外界信息進(jìn)行自動控制,但有時也需要人工輸入一些參數(shù)甚至強(qiáng)行加以控制,這時單片機(jī)就需要有人機(jī)對話功能。單片機(jī)人機(jī)對話功能即根據(jù)單片機(jī)的輸入/輸出等功能引腳,將控制指令或數(shù)據(jù)輸入到單片機(jī)內(nèi)
9、部,從而對系統(tǒng)運行進(jìn)行控制等。本節(jié)將就上述情況的實現(xiàn)進(jìn)行講解。一、實驗組織要求1.實驗?zāi)康?學(xué)會利用查詢方式進(jìn)行輸入控制信息的方法;.了解中斷過程及其簡單指令的使用;.掌握中斷子程序的編寫方法。下一頁返回3.2可控制的LED閃爍燈下一頁上一頁返回3.2可控制的LED閃爍燈二、實驗內(nèi)容可控LED流水燈是通過外接開關(guān)與單片機(jī)的輸入/輸出接口相連,利用開關(guān)通、斷的變化,來改變程序的運行狀態(tài),一般來說,有兩種控制方式:查詢方式和中斷方式。下面將結(jié)合實際,介紹單片機(jī)信息的輸入與控制原理。1.按鍵的查詢方式顧名思義,查詢方式就是通過主動檢查和詢問的方式來獲取端口信息的方式,是一個事先安排好了的計劃和步驟的
10、行為。因此,單片機(jī)的程序運行時,中央處理器CPU的注意力將定時在既定的窗口上出現(xiàn),并檢查端口狀態(tài)。當(dāng)查詢窗口時間內(nèi),如果該引腳出現(xiàn)電平的變化,將被CPU發(fā)現(xiàn),進(jìn)而執(zhí)行相應(yīng)的開關(guān)程序,單片機(jī)端口作為輸入端口使用時的結(jié)構(gòu)示意圖如圖3 -3所示。當(dāng)開關(guān)管VT截止時,端口因電阻R的存下一頁上一頁返回3.2可控制的LED閃爍燈在而顯現(xiàn)出高電平;當(dāng)開關(guān)S閉合時,端口的電位被強(qiáng)行下拉至0V,端口變?yōu)榈碗娖?,此時若有指令查詢端口狀態(tài),那么開關(guān)被按下的信息將被CPU獲取,進(jìn)而可依據(jù)預(yù)期安排執(zhí)行相應(yīng)程序。(1)單片機(jī)按鍵查詢方式的控制電路原理在本節(jié)中,單片機(jī)按鍵實驗的輸入電路如圖3-4所示。89C51單片機(jī)的12
11、腳和14腳分別是屬于P3. 2端口和P3. 4端口,通過開關(guān)S1和S2與地相連接。如果12腳和14腳原來為高電平,當(dāng)開關(guān)S1或S2被按下時,相應(yīng)的引腳因與地相連而變成低電平,這里就有一個量的變化;反過來說,如果該引腳出現(xiàn)量的變化,就說明該引腳上的開關(guān)被按下,根據(jù)程序的預(yù)先設(shè)置要求,CPU將作出相應(yīng)的程序處理,進(jìn)而完成了開關(guān)的預(yù)置使命。下一頁上一頁返回3.2可控制的LED閃爍燈(2)單片機(jī)按鍵查詢方式的程序流程以12腳開關(guān)S1為例,當(dāng)按鍵按下時,12腳的電平應(yīng)由高電平變?yōu)榈碗娖?,這就要求在按鍵S1被按下來之前,12腳必須為高電平,因此在使用查詢方式作為開關(guān)輸入量的輸入時,要通過軟件將該腳置為高電
12、平。查詢方式的按鍵流程圖如圖3 -5所示,顯然,程序?qū)⒏鶕?jù)S1的狀態(tài)來選擇不同的執(zhí)行路線,最終也就有了不同的運行結(jié)果。下面以LED流水燈為例,通過修改程序,加入相應(yīng)的查詢指令,通過軟件的判斷,使原本固定的程序流程方向發(fā)生轉(zhuǎn)向。修改后的程序如表3一3所示。下一頁上一頁返回3.2可控制的LED閃爍燈將程序編譯完成和燒錄到芯片中之后,就等待接插電路實驗了。(3)按鍵控制電路的制作本節(jié)中所使用的開關(guān)沒有什么特殊要求,可以選用任何一種常開開關(guān)。這里使用了微型按鍵式開關(guān),如圖3一6所示,它有兩組開關(guān),在使用時一定要使用萬用表的電阻擋測量,分清楚常開開關(guān)點和常閉開關(guān)點。由于此微型開關(guān)是由塑料殼體組成,不宜過
13、長時間地焊接,以免出現(xiàn)開關(guān)接觸不良的現(xiàn)象。焊接完畢的萬用板正、反面情況焊接完畢之后,利用萬用表的電阻擋,在單片機(jī)電路板斷電的情況下,對電路進(jìn)行檢查。開關(guān)電路S1和S2的檢查流程如表3一4(1)所示。如圖3一7所示。下一頁上一頁返回3.2可控制的LED閃爍燈經(jīng)過電路的制作和程序的修改,使本節(jié)中的流水燈具有可人工控制LED點亮效果,其操作過程與演示效果如下: .接通單片機(jī)電源之后,LED燈開始流動閃爍; .按下S1開關(guān),LED開始反向流動閃爍; .按下S1開關(guān),停止流動閃爍; .再按S1開關(guān),程序又返回初始狀態(tài)。(4)程序去除按鍵抖動的工作原理將寫好程序的單片機(jī)芯片插入集成電路插座上之后,程序運行
14、正常。但按下開關(guān)之后,有時LED流水燈能反向點亮,而有時會出現(xiàn)跳躍式的控制結(jié)果,給使用帶來不便,其原因是:盡管開關(guān)結(jié)構(gòu)一切正常,但在開關(guān)接通的一瞬間,在開關(guān)觸電的兩端會出現(xiàn)火花現(xiàn)象,如圖3一8所示,其結(jié)果好似開關(guān)接觸和斷開多次,CPU會認(rèn)為連續(xù)按下幾次開關(guān)。這主要是因為按鍵是一個機(jī)械器件,下一頁上一頁返回3.2可控制的LED閃爍燈在進(jìn)行按鍵操作時由于按鍵的機(jī)械特性,按鍵在閉合與斷開的瞬間都存在一個抖動期,抖動期的長短與按鍵質(zhì)量有關(guān),一般為5-20ms。如果任其不管,程序?qū)⒊霈F(xiàn)多次跳轉(zhuǎn)的結(jié)果。那么如何才能去除開關(guān)上的火花現(xiàn)象而造成CPU誤判的問題呢?方法有兩種:一是采取改進(jìn)硬件電路來消除此現(xiàn)象;
15、二是可以通過軟件的形式來消除影響。軟件消除開關(guān)觸電抖動程序如圖3一9所示。當(dāng)CPU查詢到有按鍵按下之后,延時一段時間之后再回頭查詢一下該按鍵是否還是被按下,如狀態(tài)未變,則說明開關(guān)為被按下狀態(tài);否則,程序?qū)⑻^開關(guān)程序,繼續(xù)執(zhí)行主程序。下一頁上一頁返回3.2可控制的LED閃爍燈圖3一9中t1和t3按鍵均為抖動期時的開關(guān)觸電接觸狀態(tài)波形,t2為按鍵被按下而可靠接觸的時間。目前MCS51單片機(jī)處理與判斷事件的速度為s級,而按鍵的抖動期是ms級的。顯然,若不加以處理,這個抖動期對按鍵操作的識別是有影響的。(5)位數(shù)據(jù)判斷轉(zhuǎn)移指令 JNB bit, STRAT若位地址(bit) =0時,則立即轉(zhuǎn)移到指定
16、的地址“STRAT“.JB bit, STRAT;若位地址(bit ) =1時,則立即轉(zhuǎn)移到指定的地址“STRAT . (6)位置位指令 SETB bit;將位“bit,置1。下一頁上一頁返回3.2可控制的LED閃爍燈2.按鍵的中斷方式(1)中斷技術(shù)概況中斷是在執(zhí)行或做某件事的過程中,被隨機(jī)出現(xiàn)的某一情況而打斷了的現(xiàn)象。中斷現(xiàn)象可形象地比喻成如下情況: .一個人在看書; .突然有人敲門; .你會放下書,在書頁間夾好標(biāo)簽; .起身去開門,并在門口與人交談; .電話鈴響了; .讓客人稍等片刻; .轉(zhuǎn)而去接電話; .然后又回到門口與來人繼續(xù)交談;下一頁上一頁返回3.2可控制的LED閃爍燈.結(jié)束交談后
17、,關(guān)好門,回到書桌前,接著之前做標(biāo)簽的地方繼續(xù)閱讀。上述片段是人們在日常生活中經(jīng)常遇到的情景,可以說,在日常生活中,我們經(jīng)常被外界某一事件所打斷。這就是我們?nèi)粘I钪械闹袛喱F(xiàn)象。同樣,在計算機(jī)的運行過程中,中央處理器每時每刻都在不停地忙碌著,它既要主持主程序的工作流程,還經(jīng)常被外部其他事件所打斷。這種被打斷的情況是隨機(jī)性的,在這樣的環(huán)境下,CPU將根據(jù)所接收到的中斷信息的輕重緩急,合理安排眼前的事物,及時合理地處理外部事件。從整體上來看,中斷其實就是一個資源面向多項任務(wù)的分時控制技術(shù),由于只有一個CPU,采用中斷技術(shù)可有效地解決各個事件之間的矛盾。中斷技術(shù)是計算機(jī)系統(tǒng)中的一項重要的組成部分,是
18、一項資源共享技術(shù)。下一頁上一頁返回3.2可控制的LED閃爍燈(2) 51單片機(jī)的中斷系統(tǒng)在計算機(jī)系統(tǒng)中,中斷是一個非常重要的概念。在89C51單片機(jī)中,共設(shè)立有5個中斷源:外部中斷源INT0和INTl兩個,定時器/計數(shù)器中斷源兩個,串口中斷源一個。例如,外部中斷源IN”與某一電路相連,假如此時單片機(jī)的程序設(shè)置允許使用該中斷源,那么,當(dāng)有信號接人INT1時,CPU會停下正在運行的程序,并將中斷的程序做上標(biāo)記,轉(zhuǎn)而去執(zhí)行此中斷程序;當(dāng)中斷程序執(zhí)行完畢以后,CPU首先要提取標(biāo)記,再根據(jù)標(biāo)記所指的地址,回到上次被中斷的地方繼續(xù)執(zhí)行原來的程序。這里提到的“做標(biāo)記”,在單片機(jī)中稱之為入棧,提取標(biāo)記的過程稱
19、之為出棧。下一頁上一頁返回3.2可控制的LED閃爍燈那么,CPU何時響應(yīng)中斷請求呢?這主要決定于單片機(jī)工作程序的設(shè)置,也就是說,根據(jù)編程者的預(yù)期來設(shè)定程序,具體是:通過程序?qū)纹瑱C(jī)中有關(guān)中斷的寄存器進(jìn)行設(shè)置,這些寄存器有中斷允許寄存器、定時器控制寄存器、串行口控制寄存器和中斷優(yōu)先級控制寄存器。51系列單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)圖如圖3一10所示。從圖中可以了解到,單片機(jī)能否被中斷所左右,關(guān)鍵要看TCON,IE和IP這3個寄存器的狀態(tài),其中IE寄存器中的EA為中斷總允許。下面將分別作詳細(xì)介紹。下一頁上一頁返回3.2可控制的LED閃爍燈(3)中斷允許寄存器(IE)單片機(jī)中斷程序是否能被允許執(zhí)行,首先要由
20、“中斷允許寄存器”來決定,它就像一個大宅院,要進(jìn)入房間,首先要通過大門,然后再打開房門進(jìn)入房間,這個宅院的大門,就好似單片機(jī)中斷系統(tǒng)中的中斷總允許,具體的中斷源就好比宅院中的一扇房間門,缺少其中的任何環(huán)節(jié),中斷過程都無法完成。中斷允許寄存器用IE來表示,字節(jié)地址為A8H,如表3 -4(2)所示,該單元中的8個位中的位地址AEH和ADH為無效位,下面將具體介紹其他幾個位地址具體含義。下一頁上一頁返回3.2可控制的LED閃爍燈EA:中斷允許總控制位。 EA=1,中斷總允許打開; EA = 0,中斷總允許關(guān)閉。ES:串行中斷允許控制位。 ES =1,允許串行中斷; ES = 0,關(guān)閉串行中斷。ETl
21、:定時器/計數(shù)器1中斷允許控制位。 ETl =1,允許定時默計數(shù)器1的中斷請求; ETl = 0,關(guān)閉定時器/計數(shù)器1的中斷請求。EXl:外部中斷1允許控制位。 EXl =1,允許外部中斷1的中斷請求; EXl =0,關(guān)閉外部中斷1的中斷請求。下一頁上一頁返回3.2可控制的LED閃爍燈 ETO:定時器/計數(shù)器0中斷允許控制位。 ET0=1,允許定時默計數(shù)器1的中斷請求; ET0= 0,關(guān)閉定時器/計數(shù)器1的中斷請求。 EXO:外部中斷0允許控制位。 EX1 =1,允許外部中斷1的中斷請求; EX1=0,關(guān)閉外部中斷1的中斷請求。(4)定時器控制寄存器(TCON)定時器/計數(shù)器的啟動、中斷請求標(biāo)
22、志位及外部中斷請求標(biāo)志位、外部中斷信號觸發(fā)方式都在本寄存器中進(jìn)行設(shè)置。定時器控制寄存器的字節(jié)地址是88H,位地址及相關(guān)名稱如表3一5所示。下一頁上一頁返回3.2可控制的LED閃爍燈在8個位地址中,與中斷有直接關(guān)系的只有6位,具體如下。.IEO:外部中斷0請求標(biāo)志位。IEO =1,外部中斷0有請求。.IEl:外部中斷1請求標(biāo)志位。IEl =1,外部中斷1有請求。.ITO:外部中斷0 (INTO)請求方式控制位。 IT0 =1,外部中斷INTO端為負(fù)脈沖觸發(fā)中斷方式。 IT0 = 0,外部中斷INTO端為低電平觸發(fā)中斷方式。.IT1:外部中斷1(INTl)請求方式控制位。 IT0 =1,外部中斷I
23、NTl端為負(fù)脈沖觸發(fā)中斷方式。 IT0= 0,外部中斷INTl端為低電平觸發(fā)中斷方式。 TF0:定時器/計數(shù)器0中斷請求標(biāo)志位。 TF0=1,定時器/計數(shù)器計數(shù)溢出請求中斷。當(dāng)CPU執(zhí)行此中斷程序后,TF0被清零。下一頁上一頁返回3.2可控制的LED閃爍燈.TF1:定時器/計數(shù)器1中斷請求標(biāo)志位。 TF0=1,定時器/計數(shù)器1計數(shù)溢出請求中斷。當(dāng)CPU執(zhí)行此中斷程序后,TF1被清零。.TR1,TR0:分別是定時器/計數(shù)器1和定時器/計數(shù)器0的計數(shù)啟動控制位。 TR1(或TR0 ) =1時,定時器/計數(shù)器開始計數(shù)。 TR1(或TR0 ) = 0時,定時器/計數(shù)器停止計數(shù)。 (5)中斷優(yōu)先級控制寄
24、存器(IP)我們知道,51系列單片機(jī)共有5個中斷源。在條件許可的情況下,這5個中斷源都可以向CPU發(fā)出中斷請求,假若出現(xiàn)同時申請中斷的情況,CPU將如何進(jìn)行處理呢?這要根據(jù)中斷事件的輕重緩急來定。在單片機(jī)中,設(shè)置了“中斷優(yōu)先級控制寄存器”,通過對該寄存器的設(shè)置,就可以設(shè)定各中斷源的優(yōu)先級別,具體如下一頁上一頁返回3.2可控制的LED閃爍燈表3一6所示,中斷優(yōu)先級控制寄存器由IP來表示,字節(jié)地址為BBH. 51系列單片機(jī)共分有兩個級別,即高優(yōu)先級和低優(yōu)先級,具體解釋如下。.PS:串行I/O口中斷優(yōu)先級控制位。PS =1,高優(yōu)先級;PS = 0,低優(yōu)先級。.PT1:定時器/計數(shù)器1中斷請求優(yōu)先級控
25、制位。PT1=1,高優(yōu)先級;PT1 = 0,低優(yōu)先級。.PX1:外部中斷1中斷優(yōu)先級控制位。PX1=1,高優(yōu)先級;PX1=0,低優(yōu)先級。.PT0:定時器/計數(shù)器0中斷優(yōu)先級控制位。PT0=1,高優(yōu)先級;PT0 = 0,低優(yōu)先級。.PX0:外部中斷0中斷優(yōu)先級控制位。PX0 =1.高優(yōu)先級:PX0= 0.低優(yōu)先級。下一頁上一頁返回3.2可控制的LED閃爍燈(6)中斷的響應(yīng)過程當(dāng)幾個相同級別的中斷源同時向CPU申請中斷,且這幾個中斷源被設(shè)置為允許中斷,中斷總允許的大門也被打開,那么它們被CPU響應(yīng)和執(zhí)行中斷程序的順序為: .外部中斷0中斷; .定時器/計數(shù)器0中斷; .外部中斷1中斷; .定時器/
26、計數(shù)器1中斷; .串行口中斷。 下一頁上一頁返回3.2可控制的LED閃爍燈中斷源被響應(yīng)后,必然會轉(zhuǎn)移程序地址,去執(zhí)行中斷程序,那么怎樣才能準(zhǔn)確找到和執(zhí)行申請中斷的程序呢?根據(jù)不同的中斷源,51系列單片機(jī)通過硬件設(shè)置了5個中斷源入口地址,一個中斷源對應(yīng)一個中斷入口地址,中斷源被響應(yīng)之后,程序便轉(zhuǎn)向該中斷源的入口地址,并執(zhí)行中斷程序。中斷源入口地址及說明,如表3 -7所示。由于每一個中斷源對應(yīng)一個中斷入口,在中斷源得到響應(yīng)時,相應(yīng)的中斷標(biāo)志位被置1,等待CPU執(zhí)行該中斷。如果該中斷沒有被響應(yīng),則該中斷標(biāo)志將一直保持,除非人為清零中斷標(biāo)志位;當(dāng)CPU開始執(zhí)行中斷程序之后,該中斷標(biāo)志會被硬件清零;然而
27、,對于串行口中斷標(biāo)志而言,中斷程序在響應(yīng)之后,中斷標(biāo)志位不會被單片機(jī)自動清零,而需要在中斷服務(wù)程序中安排指令,以清除被執(zhí)行的中斷標(biāo)志。下一頁上一頁返回3.2可控制的LED閃爍燈(7)中斷方.式下的開關(guān)控制LED交通燈89C51單片機(jī)的12腳不僅是通用型的輸入/輸出口,而且也是單片機(jī)的外部中斷0的信息輸入端口,因此,在進(jìn)行中斷控制實驗的時候無需更換按鍵引腳,只是控制機(jī)理發(fā)生了變化而已。下面將以LED交通紅綠燈為例,采用計算機(jī)中斷技術(shù),在LED交通燈的控制系統(tǒng)中,加入東西向臨時放行的延時效果,具體程序如表3一8所示。與前面交通紅綠燈不同的是,在表3一8所示的程序中,已經(jīng)加入了開關(guān)按鍵中斷處理控制指
28、令,如主程序中添加的中斷指令有: MAIN:MOV SP, #30H;重新設(shè)置堆棧指針 SETB ITO;外部中斷0的中斷方式為下降沿,若使用清除指令CLR ITO,則變更為低電平觸發(fā)中斷下一頁上一頁返回3.2可控制的LED閃爍燈SETB EXO;為開啟外部中斷0的允許指令,若改用CLR EXO指令,則關(guān)閉了外部中斷0SETB EA;開啟了單片機(jī)中斷的總允許程序編譯和燒錄后,即可接人電路測試,按照本程序的工作意圖,開機(jī)后程序進(jìn)入正??刂栖壽E。當(dāng)按下S1開關(guān)之后,單片機(jī)將立即進(jìn)入中斷程序,東、西方向的綠色LED燈被強(qiáng)行點亮lOs,而后又自動返回正常的運行狀態(tài)。實驗時,最好趕在東、西方向剛剛變?yōu)榧t
29、燈時按下S1,此時東、西方向綠色的LED燈又被點亮,更能說明中斷系統(tǒng)的實時控制情況。下一頁上一頁返回3.2可控制的LED閃爍燈(9)中斷處理過程中要注意的幾個問題在主程序中的設(shè)置:考慮到有出現(xiàn)中斷的可能性,在主程序中,必須對中斷前的信息進(jìn)行調(diào)整和準(zhǔn)備,如堆棧指針(SP),51系列單片機(jī)復(fù)位后SP = 07H,如堆棧深度較大,SP要選擇一個合適的地址空間才行,否則會出現(xiàn)數(shù)據(jù)沖突等問題。設(shè)置好中斷控制位:根據(jù)中斷預(yù)期的流程,及時準(zhǔn)確地把握中斷控制位的設(shè)置數(shù)據(jù)。編寫中斷處理程序:既然設(shè)置了允許中斷,那么就必須要有中斷處理程序,中斷程序的內(nèi)容應(yīng)包括對中斷中將要使用的寄存器特殊功能寄存器等,其原有的數(shù)據(jù)
30、是否需要保護(hù),應(yīng)給予充分的考慮。保護(hù)的方法是使用入棧指令PUSH direct,將需要保護(hù)的數(shù)據(jù)壓入堆棧區(qū),出棧時應(yīng)使用指令下一頁上一頁返回3.2可控制的LED閃爍燈POP direct,將數(shù)據(jù)彈出堆棧區(qū);需要提示的是PUSH指令和POP指令必須成對使用,并遵循先人后出的原則,即最先壓入堆棧區(qū)的數(shù)據(jù),將最后一個撤離堆棧區(qū)。(9)中斷返回指令RETI是中斷子程序中的一個重要的組成部分,當(dāng)單片機(jī)在執(zhí)行中斷程序的過程中,若遇到RETI指令,則程序?qū)⒘⒓捶祷刂袛嗲暗牡刂穲?zhí)行程序。上一頁返回3.3LED流水燈效果的控制本節(jié)通過單片機(jī)控制LED發(fā)光二極管形成流水式的閃亮效果的實現(xiàn),進(jìn)一步介紹單片機(jī)端口電路
31、與軟件之間的關(guān)系。一、實驗組織要求1.實驗?zāi)康?學(xué)習(xí)單片機(jī)控制指令;.了解流水燈的形成及編程原理。2.使用器材下一頁返回3.3LED流水燈效果的控制下一頁上一頁返回3.3LED流水燈效果的控制二、實驗內(nèi)容1.硬件部分(1)LED流水燈電路簡介本電路仍然選用P1口作為LED控制的輸出端口,具體電路如圖3一11所示。由圖3一11可見,P1口的8個端線分別連接8個LED發(fā)光二極管,并通過限流電阻與電源正極相連。其中VD1已經(jīng)在前面所講知識中使用過,因此,在這里只需要增加7只LED發(fā)光二極管和7只電阻器即可。 (2)LED流水燈形成原理LED形成流水燈的效果的實質(zhì)是按順序以間歇的方式逐一點亮發(fā)光二極管
32、,其發(fā)光過程如表3一9所示。下一頁上一頁返回3.3LED流水燈效果的控制(3)LED流水燈硬件的制作根據(jù)圖3-11所示的電路原理圖,將所選用的元器件焊接在萬用電路板上,焊裝過程如表3一10所示。 LED發(fā)光二極管焊接完成之后,用萬用表的電阻擋測量電源與地之間是否有短路現(xiàn)象,正常晴況下,剛剛接觸時指針猛然擺動一下,隨后指針指示的電固以雇防立接近無窮大,表明電路無短路。為確保單片機(jī)硬件電路可以在正常的情況下運行程序,應(yīng)盡量在沒有插入單片機(jī)芯片的情況下,調(diào)試和驗證LED發(fā)光二極管電路的正確性,具體步驟如表3一11所示。通過上述檢測,基本上可以確定硬件電路是否能正常工作。由于單片機(jī)電路屬于脈沖數(shù)字電路
33、,因此,只要連接無誤,硬件電路一般無須調(diào)試即可正常工作。下一頁上一頁返回3.3LED流水燈效果的控制2.軟件部分(1)程序流程圖硬件電路完成后,就要利用單片機(jī)的指令來編制程序。程序的編制應(yīng)從整體出發(fā),首先要根據(jù)總體方案和意圖,確定大致的功能模塊和技術(shù)要求,為了快速地勾畫出編程者的程序思路或邏輯順序,一般使用一種方框圖來描述程序的大致流程情況,這個方框圖稱為程序流程圖。為統(tǒng)一規(guī)范和使用方便,要對方框圖的功能作出一定的規(guī)定。一般情況下,方框圖內(nèi)標(biāo)明有該塊內(nèi)要完成的任務(wù)或執(zhí)行步驟,以便于分析和閱讀程序;方框圖還有一個程序入口和至少一個程序出口。詳細(xì)說明如表3 -12所示。下一頁上一頁返回3.3LED
34、流水燈效果的控制 (2)LED流水燈程序方框圖根據(jù)LED點亮從而形成預(yù)期的循環(huán)效果,可以采用單分支結(jié)構(gòu)程序來規(guī)劃設(shè)計本程序。 LED流水燈程序流程圖如圖3一12所示。圖3一12(a)為程序設(shè)計者初步構(gòu)思所形成的流程圖,根據(jù)本模塊的要求,首先將P1. 0端口變?yōu)榈碗娖?,其他口保持高電平,因此便只有一個LED被點亮,隨后程序進(jìn)行P1口字節(jié)數(shù)據(jù)平移,延時后又返回相應(yīng)的地址,準(zhǔn)備下一次水平移動。若沒有經(jīng)過分析,這樣的設(shè)計思路應(yīng)該是合情合理的,然而,51系列單片機(jī)的數(shù)據(jù)水平位移指令僅僅對累加器A是有效的,因此必須經(jīng)過圖3一12(b)所示的流程,通過累加器A進(jìn)行數(shù)據(jù)中轉(zhuǎn),以實現(xiàn)位數(shù)據(jù)水平移動,最后再傳給P
35、1端口輸出。下一頁上一頁返回3.3LED流水燈效果的控制(3)LED流水燈程序的編制由于本模塊的電路圖及欲控制的LED形成流水式的點亮效果較為簡單,所以可以采用簡單的基本結(jié)構(gòu)來編制程序,即順序結(jié)構(gòu)程序。具體的程序和說明如表3一13所示。 將表中的程序通過軟件輸入并燒錄到單片機(jī)的芯片中,接通電源后即可見到LED的流水式點亮效果,如圖3一13所示。電路板上的LED的亮度與限流電阻(R2-R9)有關(guān),電阻值越小,通過LED的電流就越大,LED發(fā)出的光也就越強(qiáng)。一般情況下,該電阻值不能小于100。下一頁上一頁返回3.3LED流水燈效果的控制(4)指令學(xué)習(xí)在本節(jié)中共使用了10條指令,其中匯編使用的偽指令
36、有2條,數(shù)據(jù)傳送指令有6條,減1指令2條,轉(zhuǎn)移指令1條及位移動指令單字節(jié)位平移指令。在51系列單片機(jī)的指令中,單字節(jié)操作數(shù)的邏輯運算指令均是針對累加器A中的內(nèi)容進(jìn)行操作的,其共有6條指令,具體如表3一14所示。 (5)延時程序的分析到目前為止,已經(jīng)兩次使用指令進(jìn)行了延時處理,下面將著重介紹本模塊中延時程序的工作原理及主要相關(guān)參數(shù)。 第一條指令和第二條指令是為了給工作寄存器預(yù)置數(shù)據(jù): MOV R3 , #05 H Z2:MOV R4,#00H 下一頁上一頁返回3.3LED流水燈效果的控制這兩條指令的含義是將立即數(shù)送給工作寄存器中,每條指令的運行時間為1個機(jī)器周期,由于一個機(jī)器周期為12/晶體頻率
37、,因此,運行此指令所需要的時間為: t=12/4=3 s(微秒)第三條和第四條指令為減1指令: Z3:DJNZ R4,Z3 DJNZ R3 ,Z2 SJMP Z1下一頁上一頁返回3.3LED流水燈效果的控制 每執(zhí)行一次“DJNZ R4,Z3”指令,工作寄存器R4中的數(shù)據(jù)將會減1,減1之后還要判斷R4中是否為。,不為。則轉(zhuǎn)移到標(biāo)號為Z3的地址,否則就會順序執(zhí)行下一條指令。顯然,最終工作寄存器R3和R4中的數(shù)據(jù)將等于0,這期間反復(fù)執(zhí)行指令“DJNZ R4,Z3”和“DJNZ R3,Z2。反復(fù)執(zhí)行的次數(shù)由前面的MOV指令決定,也就是說,預(yù)先送給R3和R4的數(shù)值越大,DJNZ減1的次數(shù)也就越多。在這里
38、,則利用此種方法來實現(xiàn)程序延時器的作用。DJNZ R4,Z3指令是一個減1判0指令,在指令表中的格式為:DJNZ Rn,rel;其中Rn有8種選擇,即RO,R1,R2,R3,R4,RS,R6和R7,這里選用了工作寄存器R4。指令格式中的“rel是地址偏移量,表示指令跳轉(zhuǎn)的相對距離,在實際中,可以直接使用標(biāo)號替代。下一頁上一頁返回3.3LED流水燈效果的控制3.單片機(jī)輸入/輸出端口LED發(fā)光二極管亮/滅是通過改變單片機(jī)輸入/輸出引腳的狀態(tài)來實現(xiàn)的,因此,只要了解單片機(jī)各端口的地址等信息和控制指令,就可以控制端口的狀態(tài)。表3一15所列內(nèi)容為89C51單片機(jī)的4組輸入/輸出端口的詳細(xì)情況表,PO口、
39、P1口、P2口和P3口的字節(jié)地址、位地址和引腳均對應(yīng)列出,通過查閱表中數(shù)據(jù),選用相應(yīng)的指令,就可以改變各端口的狀態(tài)。根據(jù)控制部位的不同,相應(yīng)指令可分為字節(jié)控制指令和位操作指令。下一頁上一頁返回3.3LED流水燈效果的控制(1)字節(jié)數(shù)據(jù)傳送指令如MOV Direct,#XXH;控制指令,含義是將數(shù)據(jù)“XXH”送到地址名稱為“Direct”的地址里。例如:MOV 90H,#2AH;將數(shù)值為2AH的數(shù)送到地址90H里面。MOV:數(shù)據(jù)傳送指令的操作碼,用來說明本指令的性質(zhì)和作用。90H:地址編號,這里稱之為直接地址,在指令格式中用“Direct”表示。由于地址編號為90H是單片機(jī)的P1口的直接地址碼,
40、因此,執(zhí)行本指令后,就等于將25 H的數(shù)據(jù)傳送到了P1口上。對于一些常用的寄存器,在實際應(yīng)用中,人們常常使用寄存器下一頁上一頁返回3.3LED流水燈效果的控制或端口的名稱直接融入指令中,如上述“MOV 90H, #2AH”指令就可以寫成“MOV P1, #2AH的形式。(2)位控制指令利用位操作指令可以直接對具有位地址的寄存器或端口進(jìn)行操作。位傳送指令:MOV bit, C ;含義:將CY位的數(shù)據(jù)傳送到直接位地址里去。例如:(CY) -1,執(zhí)行MOV 90H,C指令之后,P1. 0位地址變?yōu)楦唠娖健N蝗》粗噶?CPL bit;含義:將直接位地址的狀態(tài)取反。例如:位地址(90HH )=1,執(zhí)行指
41、令CPL,90H之后,則(P1.0 )=0.下一頁上一頁返回3.3LED流水燈效果的控制位置1指令:SETB bit;含義:將直接位地址置1。例如:位地址(90H )=0,執(zhí)行指令CPL 90H之后,則(P1. 0 )=1。位清零指令:CLR bit;含義:將直接位地址清零。例如:位地址(90H )=1,執(zhí)行指令CPL 90H之后,則(P1. 0 )=0。上面的例子都選用了直接位地址90H,在實際應(yīng)用中,可以使用直接位地址的名稱代替位地址。上一頁返回3.4LED復(fù)雜顯示效果的實驗單片機(jī)控制電路與常規(guī)的電子控制電路不同的是,一般的數(shù)字硬件控制電路的控制流程在電路設(shè)計完成之時就已經(jīng)確定,如若改變控
42、制流程就必須重新建立和改造電路結(jié)構(gòu),而改變單片機(jī)控制電路中的控制流程只須修改軟件部分,便可完成對新流程的控制。因此,單片機(jī)的控制電路具有很大的升級空間。 一、實驗組織要求1.實驗?zāi)康?.進(jìn)一步掌握指令的編排技巧; .學(xué)習(xí)匯編語言的指令。2.實驗器材下一頁返回3.4LED復(fù)雜顯示效果的實驗下一頁上一頁返回3.4LED復(fù)雜顯示效果的實驗二、實驗內(nèi)容本實驗中的學(xué)習(xí)內(nèi)容將以軟件實驗為目的,依托一些電路結(jié)構(gòu),進(jìn)行兩種不同的發(fā)光控制操作,從而完成相應(yīng)的顯示效果。1. LED星球大撞擊(1)撞擊效果的構(gòu)思LED星球大撞擊顯示效果的形成,是利用LED發(fā)光的變化,來模擬兩物體之間的相對運動來完成的。從整體效果分
43、析來看,兩側(cè)較遠(yuǎn)處的LED先被點亮,然后同時向中心逐位點亮,直至兩個LED發(fā)光點靠近。當(dāng)LED的發(fā)光點重合時,即表示兩物體已產(chǎn)生了深度撞擊的影像,為了模擬兩星體“相撞”后發(fā)生劇烈爆炸的場面,此時應(yīng)有一個由中心向兩端同時快速點亮LED的過程,這里設(shè)計的LED發(fā)光運動軌跡過程如表3一16所示。下一頁上一頁返回3.4LED復(fù)雜顯示效果的實驗(2)程序的分析根據(jù)表3 -16所示的LED點亮的構(gòu)思,可以編制出如圖3 -14所示的流程圖,根據(jù)此圖,可以把編程者的初步想法和完成的步驟粗略地表達(dá)出來,為隨后的具體編制程序搭制框架。以上程序流程圖的編制只反映出筆者的某種想法或問題的某種解決方案,也許具體方法很多
44、,但在實際中必須選擇一條路,有的人興許走了捷徑,有的人也許繞了大彎,但最終都抵達(dá)同一地點(即完成了預(yù)期的目的)。在這里采用了查表取值的方法,來完成對單片機(jī)端口的控制。在程序運行的初期,必須指明存儲數(shù)據(jù)的地址,這個任務(wù)由數(shù)據(jù)指針來完成,所以,在程序中應(yīng)安排DPTR賦值指令及變址取數(shù)的操作過程,最后將數(shù)據(jù)轉(zhuǎn)送至端口,從而完成LED的顯示過程。下一頁上一頁返回3.4LED復(fù)雜顯示效果的實驗(3)程序的編制有了LED發(fā)光效果的運動軌跡圖和程序流程圖,下面就應(yīng)下達(dá)相應(yīng)的單片機(jī)控制指令。根據(jù)控制流程,現(xiàn)編制出如表3一17所示的匯編程序。需要提示的是,在指令的注釋部分,不一定要按照指令碼原有的含義進(jìn)行解釋,
45、可以根據(jù)編程者的意圖,并結(jié)合實際方案,靈活地作出文字上的說明(注釋必須使用“;”開頭)。(4)程序的調(diào)試由于本處中的實驗仍然使用LED流水燈效果控制模塊三中的電路結(jié)構(gòu),所以只需要改變程序(也常稱為“軟件”)就可以改變發(fā)光效果,這也是單片機(jī)區(qū)別于其他純硬件電路的一大特點,即無需對硬件電路做任何變動,僅對軟件進(jìn)行修改就可改變原有的功能。匯編程序編制完成之后,即可進(jìn)行校對和編譯。此項工作都是基于編譯程序自動提示和機(jī)器代碼的轉(zhuǎn)換來完成的,而下一頁上一頁返回3.4LED復(fù)雜顯示效果的實驗且本處中均已給出正確程序,因此程序的編寫工作就顯得較為輕松。接通燒錄好的單片機(jī)電路板的電源,應(yīng)能看到:位于兩端的LED
46、先同時發(fā)光,然后同步向里跳躍式發(fā)光,當(dāng)中心兩個相鄰的LED發(fā)光二極管均發(fā)光時,便由中心快速向兩端逐一點亮,從整體上來看就形成了相撞后的爆炸效果,如圖3一15所示。在表3一17中,匯編程序的序號1一序號6和序號55為程序運行的準(zhǔn)備階段,在這個階段可以對單片機(jī)的寄存器或外圍器件的狀態(tài)進(jìn)行調(diào)整和準(zhǔn)備。該階段有時也被稱為初始化階段。在本程序里使用了調(diào)用指令A(yù)CALL,分別調(diào)用了延時子程序TIMER1 , TIMER2和TIMER3。其中TIMERI的延時最長,TIMER2的延時最短,分別用在LED的不同顯示時段,下一頁上一頁返回3.4LED復(fù)雜顯示效果的實驗其中的R2和R3為延時器的時基參數(shù),改變其賦
47、值的大小,即可改變相應(yīng)時段的效果,如:將TIMERI中指令“MOV R2,#OOH”改為“MOV R2,#OFH,那么,程序開始運行時,LED的點亮過程將變?yōu)楦蛹彼俚匾苿?改變TIMER2中的R2和R3的賦值,將牽扯到快速閃爍的爆炸效果等。(5)查表指令在單片機(jī)正常運行時,程序存儲器是不能隨意被訪問的,也就是說,限制了用戶對程序存儲器ROM的操作,用戶只能從ROM中讀取數(shù)據(jù),數(shù)據(jù)的傳輸是單向的。從ROM中讀數(shù)據(jù)可以使用下面的指令進(jìn)行。 MOVC A, A + DPTR;將累加器A中的數(shù)據(jù)與數(shù)據(jù)指針DPTR中的數(shù)據(jù)相加,得到的和作為新的地址,再將該地址中的數(shù)據(jù)傳送到累加器A中。 下一頁上一頁返
48、回3.4LED復(fù)雜顯示效果的實驗 MOVCA , A + PC;將累加器A中的數(shù)據(jù)與程序指針PC中的數(shù)據(jù)相加,得到的和作為新的地址,再將該地址中的數(shù)據(jù)傳送到累加器A中。2.程控交通紅綠燈交通紅綠燈是交通路口上的交通通行指揮燈,有3種顏色組成,即紅色燈、綠色燈和黃色燈,紅燈亮禁行,綠燈亮通行,黃色燈在綠一紅轉(zhuǎn)換的中間過渡期時點亮幾秒。因此,交通指揮燈實際上就是一個程控時間分路開關(guān),可以分時分別對某一路段進(jìn)行燈光控制,從而完成交通指揮的任務(wù)。(1)硬件部分下一頁上一頁返回3.4LED復(fù)雜顯示效果的實驗交通指揮燈的電路原理與制作交通指揮燈的電路圖如圖3-16所示,該電路使用了12只LED發(fā)光二極管,
49、紅、黃、綠各4只,每只二極管的負(fù)極通過電阻連接至單片機(jī)89C51的I/O引腳上,以實現(xiàn)單片機(jī)對LED的硬件輸出線路的連接。交通指揮燈的實驗電路板實物圖如圖3一17所示,在萬用板的右下角規(guī)劃布置本線路,為了能盡可能逼真地模擬交通指揮燈及方便程序的調(diào)試,紅綠燈的安置位置應(yīng)按實際中的情況設(shè)置,即3個紅綠燈為一邊,黃燈在中間。圖3一16中的空心箭頭是與74HC595的引腳連接的端點,連接時注意箭頭下面對應(yīng)的腳號不能搞錯,否則將會出現(xiàn)錯誤的點亮順序。本節(jié)制作過程及元件安裝順序如表3一18所示下一頁上一頁返回3.4LED復(fù)雜顯示效果的實驗交通指揮燈電路的調(diào)試使用萬用板安裝焊接應(yīng)用電路,最容易出現(xiàn)焊接錯誤或
50、接觸不良的問題,有時感覺焊接正確,但實際上卻存在較大的隱患。為了消除在后期調(diào)試軟件時對硬件電路裝接質(zhì)量的懷疑,焊接完成之后,應(yīng)對硬件部分進(jìn)行一次“全身體檢”。眾所周知,十字路口的交通紅綠燈是3個燈為一組,所以檢查時應(yīng)對照圖3一17所示的電路進(jìn)行。后面的程序是針對本電路編制出來的,為了使LED燈光保持正確點亮流程,每組內(nèi)紅、黃、綠燈也不能出現(xiàn)交叉的現(xiàn)象,表3一19列出了每組LED紅綠燈與U1所對應(yīng)的引腳號碼,以方便核對。下一頁上一頁返回3.4LED復(fù)雜顯示效果的實驗實際檢查步驟如圖3一18所示。將萬用表撥至50mA的電流擋,黑表筆接地(或負(fù)極),利用紅表筆逐一接觸表3一18所示U1的引腳,檢查各
51、路口燈亮情況。注意:不能把紅表筆隨意接觸表3一18所示引腳以外的引腳上,以免出現(xiàn)因短路而燒毀萬用表保險的現(xiàn)象。(2)軟件部分程序的編制交通路口指揮燈的控制流程常常是一個固定的模式,也就是說,可以使用最簡單的順序程序來構(gòu)建程序主體結(jié)構(gòu),如圖3一19所示。根據(jù)程序流程圖各程序方塊的功能,查閱可能要使用的單片機(jī)指令。初學(xué)時應(yīng)將相關(guān)指令集中列表,一方面是熟悉指令,另一方面就是進(jìn)行指令對比。表3一20所列為89C51單片機(jī)交通紅綠燈的工作程序。下一頁上一頁返回3.4LED復(fù)雜顯示效果的實驗程序的調(diào)試程序編制、燒錄完成后,就可以將有程序的單片機(jī)芯片插到電路板上。由于硬件電路此前已經(jīng)過嚴(yán)格的檢查,此時就可以
52、直接在電路板上加入5V電源,首先能觀察到所有路口的紅燈一起點亮;延時一段時間后,所有紅燈變成了黃燈;幾秒鐘之后,紅、綠燈開始交替點亮。圖3一20所示為接電之后的運行情況,圖3一21所示為使用與本書配套的器材制作的紅綠燈運行情況。在運行過程中,應(yīng)仔細(xì)觀察LED的點亮流程,根據(jù)本程序,交通燈點亮的流程動作應(yīng)如圖3一22所示。為了便于觀察和調(diào)試程序,此處的實驗沒有嚴(yán)格按照實際中指揮通行的時間間隔來進(jìn)行。下一頁上一頁返回3.4LED復(fù)雜顯示效果的實驗 (3)調(diào)用指令長距調(diào)用指令LCALL LIU:當(dāng)前指令將臨時轉(zhuǎn)移到標(biāo)號為“LIU”的地址去執(zhí)行,當(dāng)遇到返回指令“RET時,程序?qū)⒎祷氐睫D(zhuǎn)移指令的下一條指
53、令去執(zhí)行。本指令的調(diào)用范圍是:64KB.短距調(diào)用指令A(yù)CALL LIU:當(dāng)前指令將臨時轉(zhuǎn)移到標(biāo)號為“LIU”的地址去執(zhí)行,當(dāng)遇到返回指令“RET時,程序?qū)⒎祷氐睫D(zhuǎn)移指令的下一條指令去執(zhí)行。本指令的調(diào)用范圍是:2KB.上一頁返回3.5單片機(jī)輸出音頻信號的方法在傳統(tǒng)電子技術(shù)中,利用電子振蕩裝置來制作音頻信號,本節(jié)通過軟件對單片機(jī)的定時器/計數(shù)器進(jìn)行設(shè)置和編程,制作和輸出音頻信號,進(jìn)而使學(xué)生學(xué)習(xí)到單片機(jī)的重要部件之一定時器/計數(shù)器。一、實驗組織要求1.實驗?zāi)康?.了解單片機(jī)定時器/計數(shù)器的結(jié)構(gòu); .學(xué)會對定時器/計數(shù)器的設(shè)置方法。2.實驗器材下一頁返回3.5單片機(jī)輸出音頻信號的方法下一頁上一頁返回3
54、.5單片機(jī)輸出音頻信號的方法二、實驗內(nèi)容本實驗將以89C51單片機(jī)定時器/計數(shù)器為核心,由簡人繁地介紹單片機(jī)的定時器/計數(shù)器的構(gòu)成原理,并結(jié)合實際應(yīng)用,對單片機(jī)的編程及定時器/計數(shù)器基本功能的設(shè)置進(jìn)行介紹。1.硬件部分(1)89C51單片機(jī)輸出音頻信號的電路單片機(jī)輸出音頻信號主要是通過軟件來實現(xiàn)的,相對于單片機(jī)的軟件部分,其外圍電路就顯得較為簡單。圖3一23所示為單片機(jī)音頻信號輸出放大電路,它由三極管VT1、電阻R32,R31和揚聲器SP組成。該放大器的輸入端與單片機(jī)的輸入/輸出接口P3. 7相連接,在通常情況下,P3. 7應(yīng)保持高電平,基本上與供電極Vcc保持同等電位,因此也就沒有Ib;當(dāng)P
55、3. 7口為低電下一頁上一頁返回3.5單片機(jī)輸出音頻信號的方法平時,在R31和R32上形成了壓降,進(jìn)而出現(xiàn)了基極電流Ib。由于三極管是一個電流放大器件,所以較小的Ib便可以引起較大的集電極Ic的變化(見圖3一24 );如果此變化的信息是由單片機(jī)產(chǎn)生的音頻信號,那么,該放大器的輸出能力足以推動揚聲器發(fā)出聲響。圖3一25所示的單三極管放大電路是為本書專門設(shè)計的實驗板上的實際電路圖。相比前面的單片機(jī)音頻信號輸出放大電路,該電路中多了兩個元器件R30和J3,為后續(xù)的擴(kuò)展實驗留下盡可能大的空間,在本次實驗中,只要將R30和J3短路即可。下一頁上一頁返回3.5單片機(jī)輸出音頻信號的方法(2)單片機(jī)音頻信號輸
56、出電路的制作單片機(jī)音頻信號輸出的硬件部分,基本上都集中在三極管放大電路上。音頻的產(chǎn)生由單片機(jī)軟件部分來實現(xiàn)的,其電路制作極為簡單,只是要求揚聲器的阻抗盡可能大為好,揚聲器實際的阻抗范圍是8一32SZ。在使用前應(yīng)對每一個元器件進(jìn)行檢測,三極管應(yīng)為PNP型。三極管常見的型號有9012和A733等,這兩種三極管的引腳分布略有差別,具體如圖3一26和圖3一27所示,焊裝時注意識別。下一頁上一頁返回3.5單片機(jī)輸出音頻信號的方法2.軟件部分(1)程序的編錄本節(jié)中的音頻信號發(fā)生器是利用單片機(jī)中的定時器/計數(shù)器來產(chǎn)生周期性的溢出信號而工作的。定時器/計數(shù)器有4種工作方式,即方式0、方式1、方式2和方式3。這
57、里選用的是方式0,可以使用控制指令來完成設(shè)置,詳細(xì)說明見后文,下面給出了全部的程序代碼,如表3一21所示。按照表中的程序,將其編譯到單片機(jī)中,插接到應(yīng)用的電路板上,接通電源即可聽見悅耳的音頻聲。(2)指令的學(xué)習(xí) JBC bit, rel ; bit表示位,該指令是位狀態(tài)判斷指令。如果被判斷位的狀態(tài)為高電平,即(bit) =1,那么,程序?qū)l(fā)生轉(zhuǎn)移,轉(zhuǎn)移的地址由地址偏移量rel決定。在使用匯編軟件編程時,可直接使用需轉(zhuǎn)移的地址標(biāo)號來替代。下一頁上一頁返回3.5單片機(jī)輸出音頻信號的方法例如:本程序中的JBC TF1, LIU10該指令的含義是:如果位地址“TFl”為高電平1時,則程序?qū)⒘⒓崔D(zhuǎn)移到地
58、址標(biāo)號為LIU1”的程序段上去執(zhí)行指令。 CLR bit:是位清零指令,執(zhí)行該指令之后,無論bit原來是什么狀態(tài),一律變?yōu)榈碗娖?. 3.定時器/計數(shù)器的結(jié)構(gòu)與設(shè)置51系列單片機(jī)內(nèi)部設(shè)立有兩個定時器/計數(shù)器,分別為:定時器/計數(shù)器0,用1b表示;定時器/計數(shù)器1,用T1表示。從該部件的實際電路來看,其核心部分就是一個16位可編程控制的脈沖計數(shù)器,最大計數(shù)值均為216 (65536) 。脈沖信號有兩個來源:一個是通過單片機(jī)引腳引入的脈沖信號,另一個是由單片機(jī)內(nèi)部振蕩器產(chǎn)生的脈沖信號。下一頁上一頁返回3.5單片機(jī)輸出音頻信號的方法 由于單片機(jī)使用的振蕩源頻率較為準(zhǔn)確,脈沖間隔均等,因此從內(nèi)部振蕩器
59、引入定時器/振蕩器,就可構(gòu)成一個較為精準(zhǔn)的延時器,我們形象地稱之為定時器。如果脈沖信號由外部引入單片機(jī),由于外部情況有可能存在一些不確定因素,脈沖信號的頻率可能會發(fā)生變化,只能機(jī)械地記錄外來脈沖的個數(shù),此時的“定時器/計數(shù)器”運行結(jié)果,只有記錄脈沖的數(shù)量有意義,此時又稱之為計數(shù)器。當(dāng)計數(shù)器達(dá)到最大值時,便會向CPU申請中斷,如果此時程序的設(shè)置是允許中斷請求,則CPU將立即執(zhí)行該請求,以完成中斷事件中所急需處理的問題和動作。下一頁上一頁返回3.5單片機(jī)輸出音頻信號的方法此種情況就像一個橢圓形的400m跑道一樣,如圖3一28所示,橢圓形閉合跑道距離就好比是定時器/計數(shù)器的最大計數(shù)值,400m賽跑的
60、起點和終點在一個點上。如果只要求運動員跑200m的距離,那么運動員就必須先順行走到200m處作為起點,然后再以此為起點,當(dāng)聽到起跑命令之后,再向400m跑道的終點沖去,到達(dá)終點沖線后,由終點裁判計時。這時先走的200m就類似于編程者事先賦予定時器/計數(shù)器的數(shù)值,在單片機(jī)中稱之為初值。此例中,雖然使用了400m的終點,但運動員實際跑動的距離只有剩下的200m,很顯然,同一個運動員跑200m的用時要比跑全程400m的用時要少一半時間。下一頁上一頁返回3.5單片機(jī)輸出音頻信號的方法同理,如果單片機(jī)程序事先給定時器/計數(shù)器賦予一定的數(shù)值,使定時器/計數(shù)器以該數(shù)值為起點開始計數(shù),那么賦值后的定時器/計數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java分布式開發(fā)面試題及答案
- 2024-2025學(xué)年下學(xué)期期末備考高二物理專題01 動量守恒定律(優(yōu)練)
- 貴州醫(yī)科大學(xué)神奇民族醫(yī)藥學(xué)院《醫(yī)學(xué)遺傳學(xué)A》2023-2024學(xué)年第二學(xué)期期末試卷
- 漯河職業(yè)技術(shù)學(xué)院《中學(xué)體育教材教法研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江外國語學(xué)院《英語寫作記敘文》2023-2024學(xué)年第二學(xué)期期末試卷
- 年產(chǎn)30萬立方米加氣混凝土砌塊項目可行性投資申請報告計劃書
- 年產(chǎn)30萬噸高強(qiáng)瓦楞紙項目環(huán)評報告
- 寬屏?xí)h盛典慶典模板46
- 2013-2022北京高中合格考?xì)v史匯編:遼夏金多民族政權(quán)的并立與元朝的統(tǒng)一
- 歷史早期的殖民掠奪課件
- 江蘇南京市北京東路小學(xué)四年級數(shù)學(xué)下冊期末復(fù)習(xí)試卷(二)及答案
- 浙江中考生物知識點大全
- 金屬非金屬礦山安全標(biāo)準(zhǔn)化講義
- 2023宿遷地生中考試卷
- 一人力資源轉(zhuǎn)型和價值
- 機(jī)房設(shè)備安裝工程及移動通信工程施工工藝圖解
- 國內(nèi)生態(tài)工業(yè)園區(qū)發(fā)展分析
- YY/T 0292.1-1997醫(yī)用診斷X射線輻射防護(hù)器具第1部分:材料衰減性能的測定
- LY/T 1697-2017飾面木質(zhì)墻板
- GB/T 97.1-2002平墊圈A級
- GB/T 5121.27-2008銅及銅合金化學(xué)分析方法第27部分:電感耦合等離子體原子發(fā)射光譜法
評論
0/150
提交評論