單片機(jī)原理及接口技術(shù) 課件 第5、6章 鍵盤(pán)檢測(cè)原理及應(yīng)用、中斷_第1頁(yè)
單片機(jī)原理及接口技術(shù) 課件 第5、6章 鍵盤(pán)檢測(cè)原理及應(yīng)用、中斷_第2頁(yè)
單片機(jī)原理及接口技術(shù) 課件 第5、6章 鍵盤(pán)檢測(cè)原理及應(yīng)用、中斷_第3頁(yè)
單片機(jī)原理及接口技術(shù) 課件 第5、6章 鍵盤(pán)檢測(cè)原理及應(yīng)用、中斷_第4頁(yè)
單片機(jī)原理及接口技術(shù) 課件 第5、6章 鍵盤(pán)檢測(cè)原理及應(yīng)用、中斷_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

單原及接片理口技術(shù)機(jī)12第五章

鍵盤(pán)檢測(cè)原理及應(yīng)用01按鍵去抖動(dòng)處理02按鍵工作原理和掃描方式03鍵盤(pán)檢測(cè)的應(yīng)用?04習(xí)題PrincipleandinterfacetechnologyofMicrocomputer按鍵去抖動(dòng)處理按鍵實(shí)際就是一種常用的按鈕,按鍵未按下時(shí),鍵的兩個(gè)觸點(diǎn)處于斷開(kāi)狀態(tài),按鍵按下時(shí),兩個(gè)觸點(diǎn)才閉合。而鍵盤(pán)上的按鍵大多數(shù)是利用機(jī)械觸點(diǎn)來(lái)實(shí)現(xiàn)鍵的閉合與釋放,由于其彈性作用的影響,機(jī)械觸點(diǎn)在閉合及斷開(kāi)瞬間均會(huì)產(chǎn)生抖動(dòng)過(guò)程,從而使按鍵輸入電壓信號(hào)也出現(xiàn)抖動(dòng),其電壓變化情況如圖5-1所示。01按鍵去抖動(dòng)處理從圖5-1中可以看出,理想波形和實(shí)際波形之間是有區(qū)別的,實(shí)際波形在按下和釋放的瞬間都有抖動(dòng)現(xiàn)象發(fā)生,抖動(dòng)時(shí)間的長(zhǎng)短與按鍵的機(jī)械特性有關(guān),一般為5~10ms。按鍵的穩(wěn)定閉合時(shí)間由操作人員的按鍵動(dòng)作所確定,一般為幾百毫秒至幾秒。為了保證系統(tǒng)對(duì)鍵的一次閉合僅做一次鍵輸入處理,必須進(jìn)行消抖處理。一般可用硬件或軟件的辦法來(lái)消抖。在單片機(jī)組成的各種系統(tǒng)中,常采用軟件去抖動(dòng)的辦法進(jìn)行消抖。軟件消抖就是在第一次檢測(cè)到有鍵按下時(shí)先不動(dòng)作,延時(shí)一段時(shí)間(一般為10ms),再次檢測(cè)按鍵的狀態(tài),如果仍保持閉合狀態(tài),則確認(rèn)真正有鍵按下。當(dāng)檢測(cè)按鍵釋放后,也要給一段時(shí)間(一般為10ms)的延時(shí),待后沿抖動(dòng)消失后才能轉(zhuǎn)入按鍵的處理程序。按鍵去抖動(dòng)流程如圖5-2所示。按鍵工作原理和掃描方式獨(dú)立式鍵盤(pán)一般是指直接用I/O口線外接按鈕構(gòu)成。每個(gè)鍵單獨(dú)占用一根I/O口線,I/O線間的工作狀態(tài)互不影響。當(dāng)某一按鍵閉合時(shí),對(duì)應(yīng)口線輸入低電平,釋放時(shí)輸入高電平。要判斷是否有鍵壓下,只需要檢測(cè)對(duì)應(yīng)的單片機(jī)I/O口是低電平還是高電平。獨(dú)立式鍵盤(pán)接口電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一根I/O口線,在鍵數(shù)較多時(shí),I/O口線浪費(fèi)較大,故只在按鍵數(shù)量不多時(shí)才采用這種鍵盤(pán)電路。在電路中,按鍵輸入一般采用低電平有效,上拉電阻保證了按鍵斷開(kāi)時(shí),I/O口線有確定的高電平。當(dāng)I/O內(nèi)部有上拉電阻時(shí),外電路可以不配置上拉電阻。02獨(dú)立式鍵盤(pán)電路如圖5-3所示,其中K1具有增數(shù)功能,K2具有減數(shù)功能。剛開(kāi)始數(shù)碼管顯示0,按一下K1,顯示1,再按一下K1,顯示2……,若數(shù)碼管顯示9,再按一下K1,顯示0;同樣,若剛開(kāi)始數(shù)碼管顯示0,按一下K2,顯示9,再按一下K2,顯示8……。元件清單如表5-1。例1解:每次按下K1,新顯示的數(shù)是原先的數(shù)加1;每次按下K2,新顯示的數(shù)是原先的數(shù)減1;也就是按下K1要執(zhí)行一個(gè)分支,按下K2執(zhí)行另一個(gè)分支。每次執(zhí)行完加1或者減1后都要在數(shù)碼管上顯示最后的結(jié)果;其次當(dāng)加到9再向上加時(shí)又回到繼續(xù)或當(dāng)減至0時(shí)再向下減又回到9繼續(xù)。流程如圖5-4,仿真結(jié)果如圖5-5所示。解按鍵工作原理和掃描方式矩陣鍵盤(pán)的結(jié)構(gòu)單片機(jī)的I/O口線數(shù)量是有限的,獨(dú)立鍵盤(pán)與單片機(jī)連接時(shí),每一個(gè)按鍵都需要單片機(jī)的一個(gè)I/O口,當(dāng)一個(gè)單片機(jī)系統(tǒng)需要的按鍵數(shù)較多時(shí),為了少占用I/O口線,通常采用矩陣式(又稱行列式)鍵盤(pán)接口電路。本書(shū)以4×4的矩陣式鍵盤(pán)為例介紹矩陣鍵盤(pán),其結(jié)構(gòu)如圖5-6。其由4根行線和4根列線交叉構(gòu)成,每一行將每個(gè)按鍵的一端連接在一起構(gòu)成行線,每一列將每個(gè)按鍵的另一端連接在一起構(gòu)成列線,按鍵位于行列的交叉點(diǎn)上,這樣便構(gòu)成16個(gè)按鍵。交叉點(diǎn)的行列線是不連接的,行線和列線是通過(guò)某個(gè)按鍵的按下和抬起實(shí)現(xiàn)聯(lián)通和斷開(kāi)的,當(dāng)按鍵按下的時(shí)候,此交叉點(diǎn)處的行線和列線導(dǎo)通。這樣,只占用一個(gè)8位的并口便可以實(shí)現(xiàn)16個(gè)按鍵,因此矩陣式鍵盤(pán)對(duì)端口的利用率很高。。02行列式鍵盤(pán)矩陣鍵盤(pán)的檢測(cè)獨(dú)立鍵盤(pán)與單片機(jī)連接時(shí),一端與單片機(jī)的I/O口相連,另一端與地相連,檢測(cè)時(shí)只需判斷與單片機(jī)相連的I/O口是高電平還是低電平。而矩陣鍵盤(pán)兩端都與單片機(jī)的I/O口相連,所以檢測(cè)時(shí)需要人為通過(guò)單片機(jī)I/O口送出低電平。矩陣鍵盤(pán)常用的檢測(cè)方法有逐行掃描法(或逐列掃描法)和行列掃描法(又稱反轉(zhuǎn)法)。逐行掃描法檢測(cè)原理是:給單片機(jī)高四位(列)輪流輸出低電平來(lái)對(duì)矩陣鍵盤(pán)進(jìn)行逐行掃描,當(dāng)?shù)退奈唤邮盏降臄?shù)據(jù)不全為高電平的時(shí)候,說(shuō)明有按鍵按下,然后通過(guò)接收到的數(shù)據(jù)是哪一位為低電平來(lái)判斷是哪一個(gè)按鍵被按下。以圖5-6為例說(shuō)明,先給P1口的高四位(列)輸出“1110”,即P1.4-P1.7為輸出口;低四位(行)輸入高電平“1111”,即P1.0-P1.3作為輸入口,即P1=0xEF;然后對(duì)低四位進(jìn)行逐行檢測(cè),若檢測(cè)到行有低電平,說(shuō)明對(duì)應(yīng)的行有鍵按下。若讀P1口的值為0xEE,說(shuō)明第一行有鍵按下(P1.0行有鍵按下,即k0鍵按下);可以通過(guò)此法判斷其它行有鍵按下。接著給P1口輸入0xDF,來(lái)判斷第二列是否有鍵按下;依次類推可以判斷其它列是否有鍵按下。行列掃描法(又稱反轉(zhuǎn)法)檢測(cè)原理是:檢測(cè)時(shí),通過(guò)給行、列端口輸出兩次相反的值,再將分別讀入的行值和列值進(jìn)行按位“或”運(yùn)算,得到每個(gè)鍵的掃描碼。即通過(guò)高四位全部輸出低電平,低四位輸出高電平,當(dāng)接收到的數(shù)據(jù),低四位不全為高電平時(shí),說(shuō)明有鍵按下,對(duì)應(yīng)低四位有低電平的那一行有按鍵按下;然后再反過(guò)來(lái),高四位輸出高電平,低四位輸出低電平,根據(jù)接收到的高四位的值判斷是那一列有按鍵按下;有按鍵按下的行與有按鍵按下的列的交叉點(diǎn)的按鍵就是我們要找的按鍵。矩陣鍵盤(pán)的檢測(cè)具體以例2說(shuō)明,先給P1口的高四位輸出低電平,即P1.4-P1.7為輸出口;低四位輸出高電平,即P1.0-P1.3作為輸入口,即P1=0x0f。若有鍵按下,讀P1口的低四位狀態(tài)為“1101”,其值為0xDH(P1.1行為低電平)。再給P1口的高四位輸出高電平,即P1.4-P1.7作為輸入口;低四位輸出低電平,即P1.0-P1.3為輸出口,即P1=0xf0。若有鍵按下,讀P1口的高四位狀態(tài)為“1110”,其值為0xE0H(P1.4列為低電平)。將兩次讀出的P1口狀態(tài)值進(jìn)行邏輯或運(yùn)算就得到其按鍵的特征編碼為0xEDH(行與列交叉點(diǎn)k4鍵為此時(shí)按下的鍵)。用同樣的方法可以得到其它15個(gè)按鍵的特征編碼。編程時(shí)可以利用特征編碼與按鍵的編碼進(jìn)行比較來(lái)判斷是哪一個(gè)鍵按下。其流程圖如圖5-7。例2例2將矩陣鍵盤(pán)的按鍵號(hào)顯示在一位靜態(tài)數(shù)碼管上,仿真電路如圖5-8,元件清單如表5-2。解:要人為定義每個(gè)按鍵的按鍵號(hào),然后根據(jù)矩陣鍵盤(pán)的掃描方法去獲取按鍵的特征鍵值,并根據(jù)特征鍵值列出對(duì)應(yīng)的按鍵號(hào),通過(guò)共陽(yáng)極數(shù)碼管顯示出來(lái),主流程圖如圖5-9,仿真結(jié)果如圖5-10。解課程發(fā)展STM32-C函數(shù)編寫(xiě)C函數(shù)來(lái)對(duì)H函數(shù)進(jìn)行具體的描述和說(shuō)明STM32引入結(jié)構(gòu)體函數(shù)自建函數(shù)需要在主函數(shù)中引入定義H函數(shù),注意ifdef和ifndef的用法異同點(diǎn)STM32-H函數(shù)Teachingcoursedesignofsinglechipmicrocomputer鍵盤(pán)檢測(cè)的應(yīng)用人機(jī)交互是單片機(jī)系統(tǒng)不可缺少,按鍵作為單片機(jī)系統(tǒng)的輸入設(shè)備,在單片機(jī)系統(tǒng)的應(yīng)用中發(fā)揮著重要的作用。03例3例3開(kāi)關(guān)的使用。電路如圖5-11,單片機(jī)P3.0引腳接一開(kāi)關(guān),P0口接8個(gè)發(fā)光二極管,當(dāng)開(kāi)關(guān)SW1閉合時(shí)從D1到D8流水燈循環(huán)點(diǎn)亮,斷開(kāi)時(shí)從D8到D1流水燈循環(huán)點(diǎn)亮,閉合或斷開(kāi)循環(huán)進(jìn)行。元件清單如表5-3。解:開(kāi)關(guān)在閉合后不會(huì)自動(dòng)彈起,閉合與斷開(kāi)都需要手動(dòng)完成。原則上它的使用與按鍵的使用類似。流程圖如5-12,仿真結(jié)果如圖5-13所示。解例4例4一鍵多功能的應(yīng)用。電路如圖5-14,按一下k1鍵從D1到D8流水燈循環(huán)點(diǎn)亮,再按一下k1鍵從D8到D1流水燈循環(huán)點(diǎn)亮,再按一下k1鍵奇偶Led燈交替點(diǎn)亮一次,再按一下k1鍵循環(huán)進(jìn)行。元件清單如表5-4。解:一鍵多功能,主要是要對(duì)每次按下鍵后給定義一個(gè)特殊的值來(lái)區(qū)分,然后根據(jù)這個(gè)特殊的值去執(zhí)行相應(yīng)的功能。就如在生活中,相同姓名的人可以用身份證號(hào)來(lái)區(qū)別是一樣的,因?yàn)樯矸葑C號(hào)是唯一的。流程圖如5-14,仿真結(jié)果如5-15所示。解例5例5設(shè)計(jì)一個(gè)兩位正整數(shù)的加減法簡(jiǎn)易計(jì)算器(減法要求被減數(shù)大于減數(shù),否則報(bào)錯(cuò))。要求對(duì)輸入的正整數(shù)在輸入時(shí)顯示,計(jì)算加減法只顯示最后的結(jié)果。解:根據(jù)題意,輸入的數(shù)較多,采用矩陣鍵盤(pán)實(shí)現(xiàn)輸入,而兩位正整數(shù)加法的和可能是兩位數(shù)或三位數(shù),故數(shù)碼管采用三位(由于proteus庫(kù)中沒(méi)有三位數(shù)碼管,故采用四位數(shù)碼管代替)。電路如圖5-16,元件清單如表5-5。揚(yáng)聲器主要是在做減法運(yùn)算時(shí),被減數(shù)小于減數(shù)報(bào)警響三聲,表示不符合要求出錯(cuò)。就像計(jì)算機(jī)中的計(jì)算器一樣,要對(duì)輸入的數(shù)要暫存處理保存,當(dāng)輸入為+、-、=時(shí)就取出暫存值賦給一個(gè)變量;若遇到等號(hào)時(shí)就根據(jù)前面輸入的+或-進(jìn)行加、減法計(jì)算。同時(shí)顯示時(shí)也要與生活習(xí)慣一致,高位在前,低位在后。流程圖如圖5-17,仿真結(jié)果如圖5-18所示。H文件對(duì)delayxms進(jìn)行定義,對(duì)delayxms函數(shù)聲明01主函數(shù)調(diào)用C文件,實(shí)現(xiàn)LED燈的閃爍,和原main函數(shù)對(duì)比03C文件實(shí)現(xiàn)具體延時(shí)函數(shù)的功能021.什么是按鍵抖動(dòng)?單片機(jī)系統(tǒng)中如何消除按鍵抖動(dòng)?2.獨(dú)立按鍵的檢測(cè)原理是什么?矩陣鍵盤(pán)的檢測(cè)原理是什么?3.什么是矩陣鍵盤(pán)行列掃描法?簡(jiǎn)述其工作過(guò)程。4.電路如圖5-19,P0口接一位數(shù)碼管,P3口接8個(gè)按鍵,哪個(gè)按鍵按下,數(shù)碼管就顯示那個(gè)按鍵的按鍵號(hào)。如K5按下,就把鍵號(hào)5顯示在數(shù)碼管上。5.設(shè)計(jì)一電路滿足:用LED燈組成?形圖形,系統(tǒng)有三個(gè)按鍵,當(dāng)?shù)谝粋€(gè)按鍵按下時(shí),所有的LED燈順時(shí)針逐一點(diǎn)亮;第二個(gè)按鍵按下時(shí),逆時(shí)針逐一熄滅所有的LED燈;第三個(gè)按鍵按下時(shí),所有的LED燈閃爍。6.8051單片機(jī)的P1口連接4×4矩陣鍵盤(pán),P0口連接一個(gè)四位數(shù)碼管,將矩陣鍵盤(pán)的按鍵號(hào)進(jìn)行平方顯示在四位數(shù)碼管上,仿真電路如圖5-20。習(xí)題05課程小結(jié)沒(méi)有結(jié)構(gòu)化程序編寫(xiě)方法邏輯思維清晰,代碼引入合理搭建項(xiàng)目調(diào)用自有成熟代碼從小開(kāi)始,從1開(kāi)始,使得構(gòu)建項(xiàng)目更加容易,實(shí)現(xiàn)更加便捷結(jié)構(gòu)化程序編寫(xiě)方法代碼邏輯混亂項(xiàng)目設(shè)計(jì)和實(shí)現(xiàn)從零開(kāi)始,費(fèi)時(shí)費(fèi)力使得初級(jí)程序員對(duì)程序編寫(xiě)工作產(chǎn)生抵觸05單原及接片理口技術(shù)機(jī)36第六章

中斷、定時(shí)器/計(jì)數(shù)器原理及應(yīng)用01中斷系統(tǒng)02定時(shí)器/計(jì)數(shù)器03中斷、定時(shí)器/計(jì)數(shù)器應(yīng)用編程04習(xí)題PrincipleandinterfacetechnologyofMicrocomputer 什么叫中斷?在我們生活中的時(shí)常會(huì)發(fā)生這樣的事情,某同學(xué)正在教室寫(xiě)作業(yè),忽然被人叫出去,回來(lái)后,繼續(xù)寫(xiě)作業(yè)。這是生活中的中斷現(xiàn)象。在程序運(yùn)行的過(guò)程中,由于系統(tǒng)內(nèi)、外的某種原因使CPU暫時(shí)中止其正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行請(qǐng)求中斷的那個(gè)服務(wù)程序,等處理完中斷服務(wù)程序后再返回執(zhí)行原來(lái)中止的程序的過(guò)程,叫做中斷。中斷的發(fā)生及執(zhí)行過(guò)程如圖6-1所示。01 為什么要設(shè)置中斷??⑴提高CPU工作效率。大多數(shù)外部設(shè)備的速度比CPU慢,比如打印機(jī)打印字符的速度相比CPU運(yùn)行速度要慢許多,CPU與外部設(shè)備無(wú)法同步進(jìn)行輸入輸出,用CPU查詢方式又大大浪費(fèi)CPU的時(shí)間。因此,可通過(guò)中斷方式實(shí)現(xiàn)CPU與外部設(shè)備的協(xié)調(diào)。⑵具有實(shí)時(shí)處理功能。在實(shí)時(shí)控制中,現(xiàn)場(chǎng)的各種參數(shù)、信息均隨時(shí)間和現(xiàn)場(chǎng)而變化。這些外界變量可根據(jù)要求隨時(shí)向CPU發(fā)出中斷申請(qǐng),請(qǐng)求CPU及時(shí)處理中斷請(qǐng)求。如中斷條件滿足,CPU馬上就會(huì)響應(yīng),進(jìn)行相應(yīng)的處理,從而實(shí)現(xiàn)實(shí)時(shí)處理。⑶具有故障處理功能。針對(duì)難以預(yù)料的情況或故障,如掉電、存儲(chǔ)出錯(cuò)、運(yùn)算溢出等,可通過(guò)中斷系統(tǒng)由故障源向CPU發(fā)出中斷請(qǐng)求,再由CPU轉(zhuǎn)到相應(yīng)的故障處理程序進(jìn)行處理。??⑷實(shí)現(xiàn)分時(shí)操作。中斷系統(tǒng)的組成MCS-51單片機(jī)提供了3種類型的中斷源,共包括2個(gè)外中斷((INT0)?、(INT1)?),2個(gè)片內(nèi)定時(shí)/計(jì)數(shù)器中斷(T0、T1),1個(gè)串行口中斷。中斷系統(tǒng)結(jié)構(gòu)如圖6-2所示。1.1中斷向量及中斷寄存器1中斷向量中斷向量是指中斷服務(wù)程序的入口地址。中斷響應(yīng)后,程序?qū)⑻D(zhuǎn)至對(duì)應(yīng)的中斷向量執(zhí)行中斷子程序。對(duì)于C語(yǔ)言程序,設(shè)計(jì)者可以不必知道中斷向量的真實(shí)地址,但在匯編語(yǔ)言程序中,必須明確該中斷子程序?qū)儆谀膫€(gè)中斷源以及它所對(duì)應(yīng)的中斷向量。1.22寄存器TCON為定時(shí)器/計(jì)數(shù)器的控制寄存器,同時(shí)鎖存T0、T1溢出中斷源標(biāo)志、外部中斷請(qǐng)求標(biāo)志。各位可位尋址。SCON為串行口控制寄存器,其字節(jié)地址為98H,可以進(jìn)行位尋址。MCS-51對(duì)中斷源的開(kāi)放或屏蔽是由中斷允許寄存器IE控制的,IE的字節(jié)地址為A8H,可以按位尋址,當(dāng)單片機(jī)復(fù)位時(shí),IE被清為“0”。MCS-51內(nèi)部的中斷優(yōu)先級(jí)控制寄存器IP用于設(shè)定各中斷的優(yōu)先級(jí)。其字節(jié)地址為B8H,既可按字節(jié)形式訪問(wèn),又可按位形式訪問(wèn)。設(shè)置IP寄存器的初始值,使得MCS-51的片內(nèi)中斷為低優(yōu)先級(jí),片外中斷為高優(yōu)先級(jí)。例1解:用位操作指令串行口、T0、T1為低優(yōu)先級(jí):PS=0;PT0=0;PT1=0;外中斷0、1為高優(yōu)先級(jí):PX0=1;PX1=1;用字節(jié)操作指令:IP=0x05;MSC-51有2個(gè)中斷優(yōu)先級(jí),每一個(gè)中斷請(qǐng)求源均可編程為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷,從而實(shí)現(xiàn)2級(jí)中斷嵌套。如圖6-3所示。中斷處理MCS-51單片機(jī)中斷處理過(guò)程分為三個(gè)階段,即中斷響應(yīng)、中斷處理和中斷返回。其中中斷響應(yīng)由CPU硬件自動(dòng)完成,而中斷服務(wù)則由軟件完成。1.31中斷響應(yīng)在每一個(gè)機(jī)器周期中,所有的中斷源都要按照其順序檢查一遍。到S6狀態(tài)時(shí),就查找到所有被激活的中斷申請(qǐng)并排好優(yōu)先順序。在下一個(gè)機(jī)器周期的S1狀態(tài),只要不受阻斷,就開(kāi)始響應(yīng)高級(jí)中斷。2中斷處理如果中斷響應(yīng)條件滿足,而且不存在中斷受阻,CPU將響應(yīng)中斷。在此情況下,CPU首先使被響應(yīng)中斷的“優(yōu)先級(jí)激活”觸發(fā)器置位,以阻斷同級(jí)和低級(jí)的中斷。然后,根據(jù)中斷源的類別,在硬件的控制下將斷點(diǎn)壓入堆棧,并將對(duì)應(yīng)中斷源的入口地址裝入程序計(jì)數(shù)器PC。3中斷返回中斷處理程序的最后一條指令是中斷返回指令RETI。它的功能是將斷點(diǎn)彈出送回PC中,使程序返回到原來(lái)被中斷的斷點(diǎn)處,繼續(xù)執(zhí)行被中斷的程序。外部中斷系統(tǒng)的應(yīng)用編程從軟件角度看,中斷應(yīng)用包含編寫(xiě)中斷初始化程序和中斷服務(wù)程序兩部分。1.41中斷初始化程序中斷初始化程序?qū)嵸|(zhì)上就是對(duì)TCON、SCON、IE和IP寄存器的管理和控制,也即對(duì)這些寄存器的相應(yīng)位進(jìn)行狀態(tài)設(shè)置。初始化程序一般都包含在主程序中,根據(jù)需要通過(guò)相應(yīng)語(yǔ)句來(lái)完成。在編寫(xiě)中斷初始化程序時(shí)應(yīng)考慮以下三個(gè)方面:1、對(duì)外中斷源,設(shè)置中斷請(qǐng)求的觸發(fā)方式。2、設(shè)置中斷允許控制寄存器IE。3、設(shè)置中斷優(yōu)先級(jí)寄存器IP。2中斷服務(wù)程序中斷服務(wù)程序是一種具有特定功能的獨(dú)立程序段,根據(jù)中斷源的具體要求進(jìn)行編寫(xiě)。C51編譯器允許在C語(yǔ)言源程序中聲明中斷和編寫(xiě)中斷服務(wù)程序,通過(guò)使用interrupt關(guān)鍵字實(shí)現(xiàn)。定義中斷服務(wù)程序的一般格式如下:void函數(shù)名()interruptn[usingm]usingm代表使用單片機(jī)內(nèi)存4組工作寄存器的哪一組,系統(tǒng)編譯時(shí)自動(dòng)分配,所以常省略不寫(xiě)。利用(INT0)?引入單脈沖,每來(lái)一個(gè)負(fù)脈沖,將連接到P1口的發(fā)光二極管循環(huán)點(diǎn)亮。電路如圖6-4所示,元件清單如表6-6。例2解:通過(guò)k1按下實(shí)現(xiàn)外部中斷0的負(fù)跳沿中斷,此時(shí)就將IT0置1。中斷一次P1口的發(fā)光二極管點(diǎn)亮一個(gè),多次按下k1鍵實(shí)現(xiàn)流水燈的效果。在中斷函數(shù)要實(shí)現(xiàn)給P1口賦不同的值來(lái)點(diǎn)亮相應(yīng)的發(fā)光二極管。流程圖如圖6-5,仿真結(jié)果如圖6-6所示。解開(kāi)始P1口的8只LED發(fā)光二極管閃爍,單片機(jī)(INT0)?腳接按鍵k1,當(dāng)按下k1鍵8只LED以從上向下的流水燈形式循環(huán)3次,中斷結(jié)束后回到P1口8只LED發(fā)光二極管閃爍。例3解:本題通過(guò)外部中斷0可以實(shí)現(xiàn)對(duì)主程序的中斷,在中斷沒(méi)有時(shí)主程序中要實(shí)現(xiàn)P1口8只LED發(fā)光二極管閃爍;中斷到來(lái)時(shí)要中斷主程序去執(zhí)行外部中斷0的中斷函數(shù),當(dāng)外部中斷0的中斷執(zhí)行完后要返回主程序繼續(xù)執(zhí)行。流程圖如圖6-7,仿真結(jié)果如圖6-8所示。解定時(shí)器/計(jì)數(shù)器在實(shí)時(shí)控制系統(tǒng)中,常常需要有實(shí)時(shí)時(shí)鐘以實(shí)現(xiàn)定時(shí)或延時(shí),也常需要有計(jì)數(shù)功能以實(shí)現(xiàn)對(duì)外界事件進(jìn)行計(jì)數(shù)。定時(shí)或計(jì)數(shù)達(dá)到終點(diǎn)時(shí)將會(huì)產(chǎn)生中斷。02定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)與工作原理2.1MCS-51單片機(jī)內(nèi)有兩個(gè)16位定時(shí)器/計(jì)數(shù)器(Timer/Counter)T0和T1。其結(jié)構(gòu)如圖6-9所示。它由特殊功能寄存器TCON、TMOD以及T0、T1組成。其中TMOD為模式控制寄存器,主要用來(lái)設(shè)置定時(shí)器/計(jì)數(shù)器的工作方式;TCON為控制寄存器,主要用來(lái)控制定時(shí)器的啟動(dòng)與停止。兩個(gè)16位的工作寄存器T0、T1是定時(shí)器/計(jì)數(shù)器的核心,他們均可以分成2個(gè)獨(dú)立的8位計(jì)數(shù)器即TH0、TL0、TH1和TL1,均是加1的計(jì)數(shù)器。加1計(jì)數(shù)器的脈沖有兩個(gè)來(lái)源,一個(gè)是外部脈沖源,另一個(gè)是系統(tǒng)時(shí)鐘振蕩器。計(jì)數(shù)器對(duì)兩個(gè)脈沖源之一進(jìn)行輸入計(jì)數(shù),每輸入一個(gè)脈沖,計(jì)數(shù)值加1。定時(shí)器/計(jì)數(shù)器控制寄存器2.2 定時(shí)器/計(jì)數(shù)器工作模式寄存器TMODTMOD用于控制定時(shí)器/計(jì)數(shù)器的工作模式和工作方式,其字節(jié)地址為89H,不可位尋址。其中,低4位用于決定T0的工作方式,高4位用于決定T1的工作方式,M1和M0用來(lái)確定所選工作方式。其格式如表6-8所示。定時(shí)器/計(jì)數(shù)器控制寄存器TCONTCON為定時(shí)器/計(jì)數(shù)器的控制寄存器,同時(shí)鎖存T0、T1溢出中斷源標(biāo)志、外部中斷請(qǐng)求標(biāo)志。各位可位尋址。其格式如表6-7所示。設(shè)定時(shí)器T0為定時(shí)工作方式,要求用軟件啟動(dòng)定時(shí)器T0工作,按方式1工作;定時(shí)器T1為計(jì)數(shù)工作方式,要求軟件啟動(dòng),工作方式為方式2。則TMOD應(yīng)怎樣設(shè)置?例4解:根據(jù)TMOD各位的定義可知,其控制字如表6-10。TMOD各位的設(shè)置應(yīng)為01100001B,即控制字為61H。其指令形式為T(mén)MOD=0x61。定時(shí)器/計(jì)數(shù)器的工作方式2.3方式1當(dāng)M1M0為01時(shí),工作于方式1。工作方式1是16位定時(shí)器/計(jì)數(shù)器。工作方式0時(shí)的電路結(jié)構(gòu)如圖6-11所示。方式0當(dāng)M1M0為00時(shí),工作于方式0。工作方式0是13位定時(shí)器/計(jì)數(shù)器,16位寄存器只用13位,其中TLx(x=0,1)的高3位沒(méi)用。工作方式0時(shí)的電路結(jié)構(gòu)如圖6-10所示。定時(shí)器/計(jì)數(shù)器的工作方式2.3方式3當(dāng)M1M0為11時(shí),工作于方式3,是8位定時(shí)器/計(jì)數(shù)器。該方式只適合用于定時(shí)器T0。工作方式3時(shí)的電路結(jié)構(gòu)如圖6-12所示。方式2當(dāng)M1M0為10時(shí),工作于方式2,為8位定時(shí)器/計(jì)數(shù)器自動(dòng)重裝方式。在方式2中,16位計(jì)數(shù)分成兩部分,僅TLx作為工作寄存器,而THx的值在計(jì)數(shù)中保持不變。TLx溢出時(shí),THx中的值將作為裝載值由CPU(硬件)自動(dòng)裝入TLx中。因此,使用時(shí)為了保證Tx(x=0,1)首次工作也能正常運(yùn)行,在初始化時(shí)TLx、THx均應(yīng)裝入相同的計(jì)數(shù)初值。工作方式2時(shí)的電路結(jié)構(gòu)如圖6-12所示。定時(shí)器/計(jì)數(shù)器的編程2.42定時(shí)器/計(jì)數(shù)器編程當(dāng)T0或T1工作于計(jì)數(shù)模式時(shí),計(jì)數(shù)脈沖由外部引入,它是對(duì)外部脈沖進(jìn)行計(jì)數(shù)。因此計(jì)數(shù)值應(yīng)根據(jù)實(shí)際要求來(lái)確定。計(jì)數(shù)初值的計(jì)算公式為:X=M-計(jì)數(shù)值。其中X為計(jì)數(shù)初值,M為最大計(jì)數(shù)值(溢出值)。當(dāng)T0或T1工作于定時(shí)模式時(shí),由于是對(duì)機(jī)器周期進(jìn)行計(jì)數(shù),故計(jì)數(shù)值應(yīng)為定時(shí)時(shí)間對(duì)應(yīng)的機(jī)器周期個(gè)數(shù)。為此,應(yīng)首先將定時(shí)時(shí)間轉(zhuǎn)換為所需要記錄的機(jī)器周期個(gè)數(shù)(計(jì)數(shù)值)。定時(shí)初值的計(jì)算公式為:X=M-計(jì)數(shù)值=M-(Tc×fosc)/12。Tc為定時(shí)時(shí)間,fosc為機(jī)器時(shí)鐘(振蕩器)的振蕩頻率,M為最大定時(shí)值(溢出值),X為定時(shí)初值。1定時(shí)器/計(jì)數(shù)器初始化初始化程序應(yīng)該完成以下工作:⑴對(duì)TMOD賦值,以確定T0和T1的工作方式;

⑵計(jì)算初值,并將其寫(xiě)入TH0、TL0或TH1、TL1;⑶中斷方式時(shí),則對(duì)IE賦值,開(kāi)放中斷;

⑷使TR0或TR1置位,啟動(dòng)定時(shí)計(jì)數(shù)器。AT89C52單片機(jī)的P1口連接74LS373鎖存器,鎖存器的輸出端分別連接8個(gè)LED燈,電路如圖6-13所示。請(qǐng)用定時(shí)器方式0實(shí)現(xiàn)從上各下的流水燈(D1向D8逐一點(diǎn)亮)效果。假設(shè)單片機(jī)的晶振頻率為12MHz,流水燈間隔的時(shí)間為300毫秒。元件清單如表6-13所示。例5解:由于采用12MHz的晶振,因此單片機(jī)的機(jī)器周期為12÷12MHz=1us。而定時(shí)器方式0下最大時(shí)間可以定義為8ms,300ms需要多次循環(huán)定時(shí)才能實(shí)現(xiàn)。為了方便計(jì)算,選擇定時(shí)6ms,用一個(gè)變量對(duì)6毫秒定時(shí)進(jìn)行一次計(jì)數(shù),計(jì)數(shù)300÷6=50次。定時(shí)時(shí)間=6ms=6×10-3=(213-X)×1×10-6,得X=2192,TH0=2192/32=0x44;TL0=2192%32=0x10。采用中斷方式的流程圖如圖6-14,仿真結(jié)果如圖6-15所示。解系統(tǒng)時(shí)鐘頻率為12MHZ,編程實(shí)現(xiàn)從P1.1輸出周期為1s的方波。仿真電路如圖6-16,元件清單如表6-12所示。例6解:方波的高低電平各占一半,要產(chǎn)生1s的方波,所以高低電平各為500ms,應(yīng)產(chǎn)生500ms的周期性的定時(shí),定時(shí)到則對(duì)P1.1取反就可實(shí)現(xiàn)。由于定時(shí)時(shí)間較長(zhǎng),一個(gè)定時(shí)/計(jì)數(shù)器不能直接實(shí)現(xiàn),可用定時(shí)/計(jì)數(shù)器T0產(chǎn)生周期性為10ms的定時(shí),然后用一個(gè)寄存器R2對(duì)10ms計(jì)數(shù)50次或用定時(shí)/計(jì)數(shù)器T1對(duì)10ms計(jì)數(shù)50次實(shí)現(xiàn)。系統(tǒng)時(shí)鐘為12MHZ,定時(shí)/計(jì)數(shù)器T0定時(shí)10ms,計(jì)數(shù)值N為10000,只能選方式1,方式控制字為00000001B(01H),初值X:X=65536-10000=55536=1101100011110000B則TH0=11011000B=D8H,TL0=11110000B=F0H。解(1)用寄存器R2作計(jì)數(shù)器軟件計(jì)數(shù),中斷處理方式,流程圖如圖6-17。(2)用定時(shí)/計(jì)數(shù)器T1計(jì)數(shù)實(shí)現(xiàn),定時(shí)/計(jì)數(shù)器T1工作于計(jì)數(shù)方式時(shí),計(jì)數(shù)脈沖通過(guò)T1(P3.5)輸入,設(shè)定時(shí)/計(jì)數(shù)器T0定時(shí)時(shí)間到對(duì)T1(P3.5)取反一次,則T1(P3.5)每20ms產(chǎn)生一個(gè)計(jì)數(shù)脈沖,那么定時(shí)500ms只須計(jì)數(shù)25次,設(shè)定時(shí)/計(jì)數(shù)器T1工作于方式2,初值X=256-25=231=11100111B=E7H,TH1=TL1=E7H。因?yàn)槎〞r(shí)/計(jì)數(shù)器T0工作于方式1定時(shí),定時(shí)/計(jì)數(shù)器T1工作于方式2計(jì)數(shù),則這時(shí)方式控制字為01100001B(61H)。定時(shí)/計(jì)數(shù)器T0和T1都采用中斷方式工作。其流程圖如圖6-18所示。解中斷、定時(shí)器/計(jì)數(shù)器應(yīng)用編程03按鍵k1接(INT0)?腳、按鍵k2接(INT1)?腳,電路如圖6-20:通電后,P1口的8只LED燈全燈閃爍,當(dāng)按下P3.3引腳上的按鍵k2時(shí)產(chǎn)生一個(gè)低優(yōu)先級(jí)外部中斷1(跳沿觸發(fā)),P1口外接的LED燈執(zhí)行從下向上的流水燈(一個(gè)led燈亮的流水燈)循環(huán)3次后恢復(fù)全亮閃爍;若在外部中斷1執(zhí)行期間,按下P3.2引腳上的按鍵k1執(zhí)行一個(gè)高優(yōu)先級(jí)外部中斷0(跳沿觸發(fā)),P1口外接的LED燈執(zhí)行從上向下的流水燈(一個(gè)led燈亮的流水燈)循環(huán)3次后返回外部中斷0的中斷服務(wù)程序繼續(xù)執(zhí)行。例7解:這里牽涉外部中斷的優(yōu)先級(jí)處理,盡管外部中斷(INT0)?的自然優(yōu)先級(jí)比外部中斷(INT1)?高(自然優(yōu)先級(jí)下再者屬于優(yōu)先級(jí)同級(jí)),但是當(dāng)外部中斷(INT1)?已經(jīng)在執(zhí)行的情況下,外部中斷(INT0)?是不能去中斷外部中斷(INT1)?的執(zhí)行。要能中斷外部中斷(INT1)?的執(zhí)行,必須將外部中斷(INT0)?的優(yōu)先級(jí)設(shè)置成高級(jí)優(yōu)先級(jí),才能實(shí)現(xiàn)題目的要求。其次,這里的跳沿觸發(fā)就是下降沿觸發(fā)。開(kāi)始P1口的8只LED燈全燈閃爍,這個(gè)是在主程序中執(zhí)行,按下k1、k2執(zhí)行的是中斷處理程序。對(duì)于中斷前的狀態(tài)是否要保存,要根據(jù)具體情況而定。流程圖如圖6-21,仿真結(jié)果如圖6-22所示。設(shè)計(jì)一采用中斷掃描方式獨(dú)立式鍵盤(pán),只有在鍵盤(pán)有按鍵按下時(shí),才進(jìn)行處理,接口電路見(jiàn)圖6-23。單片機(jī)與4個(gè)獨(dú)立按鍵k1~k4及8個(gè)LED指示燈的一個(gè)獨(dú)立式鍵盤(pán)。4個(gè)按鍵接在P1.0~P1.3引腳,P1口接8個(gè)LED指示燈,控制LED指示燈亮與滅。按下k1鍵,P1口8個(gè)LED正向(由上至下)流水點(diǎn)亮;按下k2鍵,P1口8個(gè)LED反向(由下而上)流水點(diǎn)亮;按下k3鍵,P1口8個(gè)LED編號(hào)為奇數(shù)與偶數(shù)的4個(gè)LED交替點(diǎn)亮;按下k4鍵,P1口8個(gè)LED閃爍點(diǎn)亮。例8解:k1~k4按下都要引起外部中斷,要確定是哪個(gè)按鍵按下產(chǎn)生的中斷,就要對(duì)四個(gè)按鍵所連接的單片機(jī)引腳進(jìn)行高低電平的判斷。四個(gè)按鍵可以隨意按下其中一個(gè),沒(méi)有先后順序的問(wèn)題。其流程圖如圖6-24,仿真結(jié)果如圖6-25所示。解采用12MHz晶振,在P1.0腳上輸出周期為2s,占空比為40%的脈沖信號(hào)。仿真電路如圖6-26,元件清單如表6-14所示。例9解:占空比是指在一串理想的脈沖周期序列中,正脈沖的持續(xù)時(shí)間與脈沖總周期的比值。對(duì)于12MHz晶振,取50ms定時(shí),則周期為2s需40次中

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論