《單片機(jī)技術(shù)》課件項目三 單片機(jī)旋轉(zhuǎn)燈與報警器設(shè)計_第1頁
《單片機(jī)技術(shù)》課件項目三 單片機(jī)旋轉(zhuǎn)燈與報警器設(shè)計_第2頁
《單片機(jī)技術(shù)》課件項目三 單片機(jī)旋轉(zhuǎn)燈與報警器設(shè)計_第3頁
《單片機(jī)技術(shù)》課件項目三 單片機(jī)旋轉(zhuǎn)燈與報警器設(shè)計_第4頁
《單片機(jī)技術(shù)》課件項目三 單片機(jī)旋轉(zhuǎn)燈與報警器設(shè)計_第5頁
已閱讀5頁,還剩90頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

一、學(xué)習(xí)目標(biāo)1。了解按鍵識別檢測原理。2。掌握蜂鳴器的使用。3。掌握中斷的使用。二、學(xué)習(xí)任務(wù)本項目任務(wù)分解為具體3個學(xué)習(xí)任務(wù):任務(wù)一外部中斷的使用;任務(wù)二蜂鳴器的使用;任務(wù)三單片機(jī)旋轉(zhuǎn)燈與報警器設(shè)計。三、任務(wù)分解任務(wù)一外部中斷的使用【任務(wù)描述】

單片機(jī)系統(tǒng)運(yùn)行時,通常需要應(yīng)用輸入設(shè)備實現(xiàn)人工參與控制。鍵盤是由若干個按鍵組成的,是單片機(jī)最簡單也是最常用的輸入設(shè)備。操作人員通過鍵盤輸入數(shù)據(jù)或命令,實現(xiàn)簡單的人機(jī)對話。本任務(wù)要求設(shè)計1個獨(dú)立按鍵,單按下改鍵時,對應(yīng)的LED亮,再一次按下,LED熄滅,如此重復(fù)?!救蝿?wù)分析】

當(dāng)按鍵被按下時,電平被拉成低電平,此電平作為作為單片機(jī)的輸入,單片機(jī)接收到低電平時,認(rèn)為產(chǎn)生了按鍵動作,執(zhí)行相應(yīng)的程序。一、中斷的概念

CPU在處理某一事件A時,發(fā)生了另一事件B請求CPU迅速去處理(中斷發(fā)生);

CPU暫時中斷當(dāng)前的工作,轉(zhuǎn)去處理事件B(中斷響應(yīng)和中斷服務(wù));待CPU將事件B處理完畢后,再回到原來事件A被中斷的地方繼續(xù)處理事件A(中斷返回),這一過程稱為中斷?!鞠嚓P(guān)知識】MCS-51單片機(jī)的中斷系統(tǒng)結(jié)構(gòu)執(zhí)行主程序主程序繼續(xù)執(zhí)行主程序斷點中斷請求中斷響應(yīng)執(zhí)行中斷處理程序中斷返回引起CPU中斷的根源,稱為中斷源。中斷源向CPU提出的中斷請求。CPU暫時中斷原來的事務(wù)A,轉(zhuǎn)去處理事件B。對事件B處理完畢后,再回到原來被中斷的地方(即斷點),稱為中斷返回。實現(xiàn)上述中斷功能的部件稱為中斷系統(tǒng)(中斷機(jī)構(gòu))。

隨著計算機(jī)技術(shù)的應(yīng)用,人們發(fā)現(xiàn)中斷技術(shù)不僅解決了快速主機(jī)與慢速I/O設(shè)備的數(shù)據(jù)傳送問題,而且還具有如下優(yōu)點:

分時操作。CPU可以分時為多個I/O設(shè)備服務(wù),提高了計算機(jī)的利用率;實時響應(yīng)。CPU能夠及時處理應(yīng)用系統(tǒng)的隨機(jī)事件,系統(tǒng)的實時性大大增強(qiáng);可靠性高。CPU具有處理設(shè)備故障及掉電等突發(fā)性事件能力,從而使系統(tǒng)可靠性提高。數(shù)據(jù)的輸入/輸出傳送方式查詢傳送方式(LOOKUP):傳送前一方先查詢另一方的狀態(tài),若已經(jīng)準(zhǔn)備好就傳送,否則就繼續(xù)查詢/等待中斷傳送方式(IRQ):一方通過申請中斷的方式與另一方進(jìn)行數(shù)據(jù)傳送無條件傳送方式:一方對另一方來說總是準(zhǔn)備好的直接存儲器存取方式(DMA):雙方直接通過總線傳送數(shù)據(jù),不經(jīng)CPU中轉(zhuǎn)

數(shù)據(jù)傳送的雙方平時各自做自己的工作,一旦甲方要求與乙方進(jìn)行數(shù)據(jù)傳送,就主動發(fā)出信號提出申請,乙方接到申請后若同意傳送,安排好當(dāng)前的工作,再響應(yīng)與甲方發(fā)生數(shù)據(jù)傳送。完事后,回去繼續(xù)做打斷前的工作。中斷功能強(qiáng)弱是計算機(jī)性能優(yōu)劣的重要標(biāo)志

提高CPU效率

解決速度矛盾

實現(xiàn)并行工作

應(yīng)付突發(fā)事件……中斷傳送方式特點①中斷源②中斷申請③開放中斷④保護(hù)現(xiàn)場⑤中斷服務(wù)⑥恢復(fù)現(xiàn)場⑦中斷返回中斷涉及的幾個環(huán)節(jié)(前面提到的甲方)(甲方發(fā)出信號提出申請)(乙方同意傳送)(安排好當(dāng)前的工作)(響應(yīng)乙方的要求)(完事后,回去……)(繼續(xù)做打斷前的工作)單片機(jī)的中斷源及TCONCPU在每個機(jī)器周期的S5P2期間,會自動查詢各個中斷申請標(biāo)志位,若查到某標(biāo)志位被置位,將啟動中斷機(jī)制。51子系列允許5個(52子系列6個)中斷源:

2個外部中斷請求:INT0,INT12個片內(nèi)定時器/計數(shù)器T0和T1中斷請求:

TF0,TF1,(TF2——52子系列有T2)

1個串行口中斷請求:TI/RICPU識別中斷申請的依據(jù):定時器控制寄存器TCON(88H)TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0TCONTF0/TF1:定時器溢出中斷申請標(biāo)志位:

=0:定時器未溢出;

=1:定時器溢出申請中斷,進(jìn)中斷后自動清零。TR0/TR1:定時器運(yùn)行啟??刂莆唬?/p>

=0:定時器停止運(yùn)行;

=1:定時器啟動運(yùn)行。TCON:Timer控制寄存器,是管理定時器工作的SFR(其中低4位管外部中斷)定時器控制寄存器TCON(88H)TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0TCONIE0/IE1:外部中斷申請標(biāo)志位:

=0:沒有外部中斷申請;

=1:有外部中斷申請。IT0/IT1:外部中斷請求的觸發(fā)方式選擇位:

=0:在INT0/INT1端申請中斷的信號低電平有效;=1:在INT0/INT1端申請中斷的信號負(fù)跳變有效.TCON:Timer控制寄存器,低4位管理外部中斷

在CPU已經(jīng)開放了外部中斷允許的前提下:

在INT0/INT1引腳輸入一個負(fù)脈沖或低電平,

TCON寄存器中的IE0/IE1標(biāo)志位自動變“1”,

檢測到IE0/IE1變“1”后,將產(chǎn)生指令:

LCALL0003H(/0013H)執(zhí)行中斷服務(wù)程序,

并將IE0/IE1標(biāo)志位自動清“0”,以備下次申請。外部中斷(INT0,INT1)申請過程

PT2PSPT1

PX1

PT0

PX0IP中斷優(yōu)先級控制寄存器IP(0B8H)PX0/PX1:INT0/1優(yōu)先級控制位:

=0時屬低優(yōu)先級;=1時屬高優(yōu)先級。PT0/PT1/PT2:T0/1/2中斷優(yōu)先級控制位:

=0時屬低優(yōu)先級;=1時屬高優(yōu)先級。PS1:串行口中斷優(yōu)先級控制位:

=0時屬低優(yōu)先級;=1時屬高優(yōu)先級。對同時發(fā)生多個中斷申請時:?不同優(yōu)先級的中斷同時申請

——先高后低(很難遇到)?相同優(yōu)先級的中斷同時申請

——按序執(zhí)行(很難遇到)?正處理低優(yōu)先級中斷又接到高級別中斷

——高打斷低?正處理高優(yōu)先級中斷又接到低級別中斷

——高不理低中斷優(yōu)先級處理原則?沒有同級的中斷或更高級別的中斷正在處理;在中斷源提出了中斷申請且CPU此前已經(jīng)允許中斷的前提下,還須滿足以下三個條件:?正在執(zhí)行的指令必須執(zhí)行完最后1個機(jī)器周期;?若正在執(zhí)行RETI,或正在訪問IE或IP寄存器,須執(zhí)行完上述指令和下一條指令以后方能響應(yīng)中斷。

EA—ET2ESET1EX1ET0EX0IE中斷允許寄存器IE(0A8H)EX0/EX1/ET1/ET0/ES位:分別是INT0/1,Timer0/1,串行口的中斷允許控制位:=0時禁止中斷;=1時允許中斷。ET2:T2中斷允許控制位(僅52子系列有)

=0時禁止中斷;=1時允許中斷。EA:總的中斷允許控制位(總開關(guān)):

=0時禁止全部中斷;=1時允許中斷。中斷系統(tǒng)硬件結(jié)構(gòu)注:各中斷允許控制位=0,開關(guān)斷開;=1,開關(guān)接通IE0EX0TF0IE1TF1TIESET1EX1ET0外部中斷請求0外部中斷請求1內(nèi)部定時器0內(nèi)部定時器1內(nèi)部串行口TRRIIE寄存器EA位IP寄存器各單路開關(guān)總開關(guān)中斷源標(biāo)志位查詢機(jī)構(gòu)高中斷級中斷請求低中斷級中斷請求中斷入口中斷源標(biāo)志位INT0INT1中斷入口中斷源標(biāo)志位EX0ET0EX1EX0ET0ET1EX1EX0ET0ESET1EX1EX0ET0IE寄存器IP寄存器中斷入口IE寄存器IP寄存器中斷入口中斷入口IE寄存器IP寄存器80C51中斷系統(tǒng)的結(jié)構(gòu)

80C51的中斷系統(tǒng)有5個中斷源(8052有6個)

,2個優(yōu)先級,可實現(xiàn)二級中斷嵌套

。80C51的中斷源

一、中斷源1、(P3.2)??捎蒊T0(TCON.0)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測到P3.2引腳上出現(xiàn)有效的中斷信號時,中斷標(biāo)志IE0(TCON.1)置1,向CPU申請中斷。2、(P3.3)。可由IT1(TCON.2)選擇其為低電平有效還是下降沿有效。當(dāng)CPU檢測到P3.3引腳上出現(xiàn)有效的中斷信號時,中斷標(biāo)志IE1(TCON.3)置1,向CPU申請中斷。

3、TF0(TCON.5),片內(nèi)定時/計數(shù)器T0溢出中斷請求標(biāo)志。當(dāng)定時/計數(shù)器T0發(fā)生溢出時,置位TF0,并向CPU申請中斷。

4、TF1(TCON.7),片內(nèi)定時/計數(shù)器T1溢出中斷請求標(biāo)志。當(dāng)定時/計數(shù)器T1發(fā)生溢出時,置位TF1,并向CPU申請中斷。

5、RI(SCON.0)或TI(SCON.1),串行口中斷請求標(biāo)志。當(dāng)串行口接收完一幀串行數(shù)據(jù)時置位RI或當(dāng)串行口發(fā)送完一幀串行數(shù)據(jù)時置位TI,向CPU申請中斷。

中斷請求標(biāo)志1、TCON的中斷標(biāo)志IT0(TCON.0),外部中斷0觸發(fā)方式控制位。當(dāng)IT0=0時,為電平觸發(fā)方式。當(dāng)IT0=1時,為邊沿觸發(fā)方式(下降沿有效)。IE0(TCON.1),外部中斷0中斷請求標(biāo)志位。IT1(TCON.2),外部中斷1觸發(fā)方式控制位。IE1(TCON.3),外部中斷1中斷請求標(biāo)志位。TF0(TCON.5),定時/計數(shù)器T0溢出中斷請求標(biāo)志位。TF1(TCON.7),定時/計數(shù)器T1溢出中斷請求標(biāo)志位。

2、SCON的中斷標(biāo)志RI(SCON.0),串行口接收中斷標(biāo)志位。當(dāng)允許串行口接收數(shù)據(jù)時,每接收完一個串行幀,由硬件置位RI。同樣,RI必須由軟件清除。TI(SCON.1),串行口發(fā)送中斷標(biāo)志位。當(dāng)CPU將一個發(fā)送數(shù)據(jù)寫入串行口發(fā)送緩沖器時,就啟動了發(fā)送過程。每發(fā)送完一個串行幀,由硬件置位TI。CPU響應(yīng)中斷時,不能自動清除TI,TI必須由軟件清除。

一、中斷允許控制

CPU對中斷系統(tǒng)所有中斷以及某個中斷源的開放和屏蔽是由中斷允許寄存器IE控制的。80C51中斷的控制

EX0(IE.0),外部中斷0允許位;ET0(IE.1),定時/計數(shù)器T0中斷允許位;EX1(IE.2),外部中斷0允許位;ET1(IE.3),定時/計數(shù)器T1中斷允許位;ES(IE.4),串行口中斷允許位;EA(IE.7),CPU中斷允許(總允許)位。二、中斷優(yōu)先級控制

80C51單片機(jī)有兩個中斷優(yōu)先級,即可實現(xiàn)二級中斷服務(wù)嵌套。每個中斷源的中斷優(yōu)先級都是由中斷優(yōu)先級寄存器IP中的相應(yīng)位的狀態(tài)來規(guī)定的

。PX0(IP.0),外部中斷0優(yōu)先級設(shè)定位;PT0(IP.1),定時/計數(shù)器T0優(yōu)先級設(shè)定位;PX1(IP.2),外部中斷0優(yōu)先級設(shè)定位;PT1(IP.3),定時/計數(shù)器T1優(yōu)先級設(shè)定位;PS

(IP.4),串行口優(yōu)先級設(shè)定位;PT2(IP.5),定時/計數(shù)器T2優(yōu)先級設(shè)定位。PX0(IPH.0),外部中斷0優(yōu)先級設(shè)定位;PT0(IPH.1),定時/計數(shù)器T0優(yōu)先級設(shè)定位;PX1(IPH.2),外部中斷0優(yōu)先級設(shè)定位;PT1(IPH.3),定時/計數(shù)器T1優(yōu)先級設(shè)定位;PS

(IPH.4),串行口優(yōu)先級設(shè)定位;PT2(IPH.5),定時/計數(shù)器T2優(yōu)先級設(shè)定位。而80C52單片機(jī)有四個中斷優(yōu)先級,即可實現(xiàn)四級中斷服務(wù)嵌套。每個中斷源的中斷優(yōu)先級由中斷優(yōu)先級寄存器IP和IPH中的相應(yīng)位的狀態(tài)來規(guī)定的

。

同一優(yōu)先級中的中斷申請不止一個時,則有中斷優(yōu)先權(quán)排隊問題。同一優(yōu)先級的中斷優(yōu)先權(quán)排隊,由中斷系統(tǒng)硬件確定的自然優(yōu)先級形成,其排列如所示:設(shè)置52單片機(jī)的4個中斷源,使他們的優(yōu)順序為T1,INT1,INT0,T0.

IPH=0X08; PT1=1;

IP=0X40; PX1=1;80C51單片機(jī)的中斷優(yōu)先級有三條原則:CPU同時接收到幾個中斷時,首先響應(yīng)優(yōu)先級別最高的中斷請求。正在進(jìn)行的中斷過程不能被新的同級或低優(yōu)先級的中斷請求所中斷。正在進(jìn)行的低優(yōu)先級中斷服務(wù),能被高優(yōu)先級中斷請求所中斷。

為了實現(xiàn)上述后兩條原則,中斷系統(tǒng)內(nèi)部設(shè)有兩個用戶不能尋址的優(yōu)先級狀態(tài)觸發(fā)器。其中一個置1,表示正在響應(yīng)高優(yōu)先級的中斷,它將阻斷后來所有的中斷請求;另一個置1,表示正在響應(yīng)低優(yōu)先級中斷,它將阻斷后來所有的低優(yōu)先級中斷請求。一、中斷響應(yīng)條件中斷源有中斷請求;此中斷源的中斷允許位為1;

CPU開中斷(即EA=1)。同時滿足時,CPU才有可能響應(yīng)中斷。中斷響應(yīng)條件和時間

80C51單片機(jī)中斷處理過程中斷服務(wù)的進(jìn)入:

CPU執(zhí)行程序過程中,在每個機(jī)器周期的S5P2期間,中斷系統(tǒng)對各個中斷源進(jìn)行采樣。這些采樣值在下一個機(jī)器周期內(nèi)按優(yōu)先級和內(nèi)部順序被依次查詢。如果某個中斷標(biāo)志在上一個機(jī)器周期的S5P2時被置成了1,那么它將于現(xiàn)在的查詢周期中及時被發(fā)現(xiàn)。接著CPU便執(zhí)行一條由中斷系統(tǒng)提供的硬件LCALL指令,轉(zhuǎn)向被稱作中斷向量的特定地址單元,進(jìn)入相應(yīng)的中斷服務(wù)程序。

遇以下任一條件,硬件將受阻,不產(chǎn)生LCALL指令:CPU正在處理同級或高優(yōu)先級中斷;當(dāng)前查詢的機(jī)器周期不是所執(zhí)行指令的最后一個機(jī)器周期。即在完成所執(zhí)行指令前,不會響應(yīng)中斷,從而保證指令在執(zhí)行過程中不被打斷;正在執(zhí)行的指令為RET、RETI或任何訪問IE或IP寄存器的指令。即只有在這些指令后面至少再執(zhí)行一條指令時才能接受中斷請求。

若由于上述條件的阻礙中斷未能得到響應(yīng),當(dāng)條件消失時該中斷標(biāo)志卻已不再有效,那么該中斷將不被響應(yīng)。就是說,中斷標(biāo)志曾經(jīng)有效,但未獲響應(yīng),查詢過程在下個機(jī)器周期將重新進(jìn)行。中斷響應(yīng)時間響應(yīng)時間--從查詢中斷請求標(biāo)志位到轉(zhuǎn)向中斷服務(wù)入口地址所需的機(jī)器周期數(shù)。(1)最快響應(yīng)時間以外部中斷的電平觸發(fā)為最快。從查詢中斷請求信號到中斷服務(wù)程序需要三個機(jī)器周期:

1個周期(查詢)+2個周期(長調(diào)用LCALL)(2)最長時間若當(dāng)前指令是RET、RETI和IP、IE指令,緊接著下一條是乘除指令發(fā)生,則最長為8個周期:2個周期執(zhí)行當(dāng)前指令(其中含有1個周期查詢)+4個周期乘除指令+2個周期長調(diào)用=8個周期。將相應(yīng)的優(yōu)先級狀態(tài)觸發(fā)器置1(以阻斷后來的同級或低級的中斷請求)。執(zhí)行一條硬件LCALL指令,即把程序計數(shù)器PC的內(nèi)容壓入堆棧保存,再將相應(yīng)的中斷服務(wù)程序的入口地址送入PC。(P116)執(zhí)行中斷服務(wù)程序。中斷響應(yīng)過程

中斷響應(yīng)過程的前兩步是由中斷系統(tǒng)內(nèi)部自動完成的,而中斷服務(wù)程序則要由用戶編寫程序來完成。

中斷返回RETI指令的具體功能是:將中斷響應(yīng)時壓入堆棧保存的斷點地址從棧頂彈出送回PC,CPU從原來中斷的地方繼續(xù)執(zhí)行程序;將相應(yīng)中斷優(yōu)先級狀態(tài)觸發(fā)器清0,通知中斷系統(tǒng),中斷服務(wù)程序已執(zhí)行完畢。

注意,不能用RET指令代替RETI指令。在中斷服務(wù)程序中PUSH指令與POP指令必須成對使用,否則不能正確返回斷點。

若外部中斷定義為電平觸發(fā)方式,中斷標(biāo)志位的狀態(tài)隨CPU在每個機(jī)器周期采樣到的外部中斷輸入引腳的電平變化而變化,這樣能提高CPU對外部中斷請求的響應(yīng)速度。但外部中斷源若有請求,必須把有效的低電平保持到請求獲得響應(yīng)時為止,不然就會漏掉;而在中斷服務(wù)程序結(jié)束之前,中斷源又必須撤消其有效的低電平,否則中斷返回之后將再次產(chǎn)生中斷。

電平觸發(fā)方式適合于外部中斷輸入以低電平輸入且中斷服務(wù)程序能清除外部中斷請求源的情況。例如,并行接口芯片8255的中斷請求線在接受讀或?qū)懖僮骱蠹幢粡?fù)位,因此,以其去請求電平觸發(fā)方式的中斷比較方便。

若外部中斷定義為邊沿觸發(fā)方式,在相繼連續(xù)的兩次采樣中,一個周期采樣到外部中斷輸入為高電平,下一個周期采樣到為低電平,則在IE0或IE1中將鎖存一個邏輯1。即便是CPU暫時不能響應(yīng),中斷申請標(biāo)志也不會丟失,直到CPU響應(yīng)此中斷時才清零。這樣,為保證下降沿能被可靠地采樣到,外中斷引腳上的高低電平(負(fù)脈沖的寬度)均至少要保持一個機(jī)器周期(若晶振為12MHz時,為1微秒)。

中斷服務(wù)程序函數(shù)名()interruptnusingm{}其中,中斷函數(shù)只能用void說明,表示沒有返回值,同時也表示沒有形式參數(shù),即不能傳遞參數(shù)。interrupt后面的n是中斷號,其值從0開始,以AT89C51單片機(jī)為例,編號從0~4,分別對應(yīng)外部中斷0,定時器/計數(shù)器0中斷、外部中斷1、定時器/計數(shù)器1中斷和串行口中斷。關(guān)鍵字using后面的n是所選擇的寄存器組,取值范圍是0-3。定義中斷函數(shù)時,using是一個選項,可以省略不用。如果不用則由編譯器選擇一個寄存器組作為絕對寄存器組。例如定時器/計數(shù)器1中斷源的編號是3,下面語句voidtimer()interrupt3{LED=~LED;//定時時間到,對LED 取反

}定義定時器/計數(shù)器1中斷服務(wù)程序名字為timer(),使用interrupt關(guān)鍵字,定時器/計數(shù)器1對應(yīng)的中斷號是3號?!救蝿?wù)實施】程序代碼如下:#include"reg51.h"#defineucharunsignedchar#defineuintunsignedintsbitLED=P1^0;voiddelayms(uintt)//延時程序{uinti,j;for(i=0;i<t;i++)for(j=0;j<120;j++);}voidint0_init()//外部中斷0初始化程序{EA=1;//開CPU總中斷

EX0=1;//允許外部中斷0中斷

IT0=1;//設(shè)置下降沿觸發(fā)

while(1);//原地踏步,等待中斷產(chǎn)生}voidint0()interrupt0//外部中斷0的中斷服務(wù)程序名字取為int0{LED=~LED; //進(jìn)入中斷,就對P1.0引腳電平取反}voidmain()//主程序{ int0_init(); //調(diào)用外部中斷0初始化子程序}【進(jìn)階提高】中斷程序的編寫,也可以用查詢方式來實現(xiàn)。讓CPU老是去查詢外部中斷有沒有,執(zhí)行if(IE0==1)到底為真還是為假,便可以知道有沒有外部中斷0事件產(chǎn)生。下面給出本任務(wù)對應(yīng)的查詢程序:#include"reg51.h"#defineucharunsignedchar//包含單片機(jī)寄存器的頭文件#defineuintunsignedint//宏定義,定義uint為無符號整型

sbitLED=P1^0;//P1.0引腳定義為LEDvoidmain(){while(1){EA=1;//開放中斷

EX0=1;//允許外部中斷

IT0=1;//外部中斷0為邊沿觸發(fā)方式

if(IE0==1){//IE0=則產(chǎn)生了外部中斷0請求

LED=~LED;//上面條件為真,則LED取反

IE0=0; //清除外部中斷0標(biāo)志,以便檢測下一次中斷

}}}任務(wù)二蜂鳴器的使用【任務(wù)描述】學(xué)習(xí)單片機(jī)驅(qū)動蜂鳴器的知識,AT89C51單片機(jī)P2.7引腳驅(qū)動一有源蜂鳴器,讓蜂鳴器有規(guī)則的鳴響?!救蝿?wù)分析】需要知道蜂鳴器的基本硬件結(jié)構(gòu),學(xué)習(xí)單片機(jī)驅(qū)動蜂鳴器的驅(qū)動方法。利用AT89C51單片機(jī)的P2.7引腳輸出電位的變化,控制蜂鳴器的鳴叫,P2.7引腳的電位變化可以通過指令來控制。蜂鳴器發(fā)聲原理是電流通過電磁線圈,使電磁圈產(chǎn)生磁場來驅(qū)動振動膜發(fā)聲的。因此需要一定的電流才能驅(qū)動它,而單片機(jī)I/O引腳輸出的電壓較小。單片機(jī)輸出的TTLK電平基本驅(qū)動不了蜂鳴器,因需要增加一個放大電路??梢杂萌龢O管作為放大電路。1.蜂鳴器蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計算機(jī)、打印機(jī)、復(fù)印機(jī)、報警器、電子玩具、電話機(jī)、定時器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器在電路中用字母“H”或“HA”(舊標(biāo)準(zhǔn)用“FM”、“LB”、“JD”等)表示?!鞠嚓P(guān)知識】生日賀卡萬用表通斷報警壓電式:電磁式:蜂鳴器的分類及結(jié)構(gòu)蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型1.壓電式蜂鳴器壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。有的壓電式蜂鳴器外殼上還裝有發(fā)光二極管。

多諧振蕩器由晶體管或集成電路構(gòu)成。當(dāng)接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。

壓電蜂鳴片由鋯鈦酸鉛或鈮鎂酸鉛壓電陶瓷材料制成。在陶瓷片的兩面鍍上銀電極,經(jīng)極化和老化處理后,再與黃銅片或不銹鋼片粘在一起。2.電磁式蜂鳴器電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。

接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。

電磁式蜂鳴器分類

有源蜂鳴器和無源蜂鳴器教你區(qū)分有源蜂鳴器和無源蜂鳴器現(xiàn)在市場上出售的一種小型蜂鳴器因其體積小(直徑只有11mm)、重量輕、價格低、結(jié)構(gòu)牢靠,而廣泛地應(yīng)用在各種需要發(fā)聲的電器設(shè)備、電子制作和單片機(jī)等電路中。有源蜂鳴器和無源蜂鳴器的外觀如圖a、b所示。圖:有源和無源蜂鳴器的外觀A)有源b)無源從圖a、b外觀上看,兩種蜂鳴器好像一樣,但仔細(xì)看,兩者的高度略有區(qū)別,有源蜂鳴器a,高度為9mm,而無源蜂鳴器b的高度為8mm。如將兩種蜂鳴器的引腳都朝上放置時,可以看出有綠色電路板的一種是無源蜂鳴器,沒有電路板而用黑膠封閉的一種是有源蜂鳴器。有源蜂鳴器直接接上額定電源就可連續(xù)發(fā)聲;而無源蜂鳴器則和電磁揚(yáng)聲器一樣,需要接在音頻輸出電路中才能發(fā)聲。有源蜂鳴器和無源蜂鳴器。有源蜂鳴器內(nèi)部帶振蕩源,無源蜂鳴器內(nèi)部不帶振蕩源。這里所說的“源”不是指“電源”,而是指“振蕩源”。有源蜂鳴器和無源蜂鳴器的主要差別是對輸入信號的要求不一樣,有源蜂鳴器工作的理想信號是直流電,無源蜂鳴器工作的理想信號是方波。無源蜂鳴器接直流電是不會工作的有源蜂鳴器和無源蜂鳴器的工作條件驅(qū)動電路周期T等于頻率f的倒數(shù)T=1/f我們讓蜂鳴器發(fā)出1KHZ的聲音那么周期是1/1000hz=1MST1/2T1/2T周期與頻率的關(guān)系【任務(wù)實施】單片機(jī)驅(qū)動有源蜂鳴器電路對應(yīng)的程序代碼如下:#include<reg51.h>#defineucharunsignedcharsbitSPK=P2^7;//定義蜂鳴器引腳voidDelay(uchart)//延時函數(shù){for(;t>0;t--);}voidmain(void){unsignedintCYCLE=500,PWM_LOW=0;//定義周期并賦值while(1){ SPK=1; Delay(500); for(PWM_LOW=1;PWM_LOW<CYCLE;PWM_LOW++)//高低電平交替變化

{ SPK=0; Delay(PWM_LOW); SPK=1; Delay(CYCLE-PWM_LOW); } SPK=0; for(PWM_LOW=CYCLE-1;PWM_LOW>0;PWM_LOW--)//高低電平交替變化

{ SPK=0; Delay(PWM_LOW); SPK=1; Delay(CYCLE-PWM_LOW); }}}【進(jìn)階提高】在本任務(wù)基礎(chǔ)上,實現(xiàn)蜂鳴器漸變鳴聲,試錄入下面程序,并調(diào)試。//頭文件:#include"reg51.h"http://引腳定義:sbitSPK=P2^7; //定義蜂鳴器//函數(shù)定義: voiddelay(unsignedinttime);//延時子函時,//主函數(shù),C語言的入口函數(shù): voidmain(void){unsignedinttt; //作為延時量

unsignedchari; while(1){ //主程序循環(huán)

tt=60000;

for(i=0;i<30;i++){ //循環(huán)30次輸出,時間從長漸變到短

SPK=0; delay(tt); SPK=1; delay(tt); tt-=2000; //每循環(huán)一次時間量減2000 } SPK=1; //關(guān)閉蜂響器,

delay(50000); //等待一會再開始循環(huán)

delay(50000); delay(50000); } }//延時子函數(shù)voiddelay(unsignedinttime){ while(time--);}任務(wù)三單片機(jī)旋轉(zhuǎn)燈與報警器設(shè)計【任務(wù)描述】報警器與旋轉(zhuǎn)燈,是一種為防止或預(yù)防某事件發(fā)生所造成的后果,以聲、光兩種形式來提醒或警示我們應(yīng)當(dāng)采取某種行動的電子產(chǎn)品。隨著科技的進(jìn)步,機(jī)械式報警器越來越多地被先進(jìn)的電子報警器代替,經(jīng)常應(yīng)用于系統(tǒng)故障、安全防范、交通運(yùn)輸、醫(yī)療救護(hù)、應(yīng)急救災(zāi)、感應(yīng)檢測等領(lǐng)域,與社會生產(chǎn)密不可分。設(shè)計一個簡易的信號燈交替閃爍和喇叭不斷示警的模型。接上電源,綠色LED燈亮,說明該產(chǎn)品處于運(yùn)行狀態(tài),當(dāng)有人按下按鈕喇叭就會報警,紅色LED燈閃爍,再按下時喇叭停止報警,紅色LED燈不亮且不閃爍?!救蝿?wù)分析】按下按鍵時,產(chǎn)生了外部中斷0事件,單片機(jī)檢測到后,驅(qū)動蜂鳴器開始和LED開始旋轉(zhuǎn)點亮,在程序中設(shè)置了一個外部標(biāo)志flag,在外部中斷0事件的中斷服務(wù)程序里,對flag取反。在蜂鳴器和LED開始旋轉(zhuǎn)子程序里,讀取flag標(biāo)志,如果flag標(biāo)志為真,就旋轉(zhuǎn)點亮LED和驅(qū)動蜂鳴器,否則熄滅LED和停止蜂鳴器?!鞠嚓P(guān)知識】外部中斷會有抖動,如果不消除會導(dǎo)致讀出數(shù)值的不準(zhǔn)確。如果設(shè)置了邊沿觸發(fā),進(jìn)中斷以后要延時一段時間,大約10ms,然后再開始讀數(shù)據(jù)。讀完數(shù)據(jù)以后,出中斷。具體看一實例:voidinter0()interrupt0using1{EA=0;//先關(guān)中斷

if(INT0Pin==0){//去抖動開始

Delay_us(20); if(INT0Pin==0){//是真的按下就執(zhí)行中斷服務(wù)程序

flag=~flag;} } EA=1;//允許中斷

}【任務(wù)實施】報警器與旋轉(zhuǎn)燈電路對應(yīng)的程序代碼如下:#include"reg51.h"#include"intrins.h"#defineucharunsignedchar#defineuintunsignedint#defineu8unsignedchar#defineLEDP2ucharc=0x01;bitflag=0;sbitBEEP=P3^7;//定義喇叭端口//蜂鳴器高低電平控制codeu8alarm_tab[200]={210,210,210,210,210,210,219,219,219,219,219,218,218,218,217,217,217,216,216,215,215,215,214,214,213,213,212,211,211,210,210,209,208,208,207,206,206,205,204,204,203,202,201,201,200,199,198,198,197,196,195,195,194,193,192,192,191,190,190,189,188,187,187,186,185,185,184,183,183,182,181,181,180,180,179,179,178,178,177,177,176,176,176,175,175,174,174,174,174,173,173,173,173,173,172,172,172,172,172,172,172,172,172,172,172,172,173,173,173,173,173,174,174,174,174,175,175,175,176,176,177,177,178,178,179,179,180,180,181,181,182,183,183,184,185,185,186,187,187,188,

189,189,190,191,192,192,193,194,195,195,196,197,198,198,199,200,201,201,202,203,204,204,205,206,206,207,208,208,209,210,210,211,211,212,212,213,214,214,215,215,215,216,216,217,217,217,218,218,218,219,219,219,219,219,210,210,210,210,210,210};voiddelayms(unsignedintxms){//延時函數(shù)

uinti,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}voidDelay_us(unsignedchart){while(--t);}voidbeep(bitx)//蜂鳴器響或關(guān)閉子程序

{uinti;if(x){for(i=0;i<800;i++){Delay_us(alarm_tab[i/4]-18);BEEP=!BEEP;}}else{BEEP=0;}}voidxuanzhuan(bitx){//LED旋轉(zhuǎn)子函數(shù)

uinti;if(x){for(i=0;i<8;i++){LED=c;delayms(10);c=_crol_(c,1);}}else{LED=0x00;}}voidmain(){EA=1;EX0=1;PX0=1;IT0=1;//外部中斷0下降沿觸發(fā)

LED=0x00;//熄滅燈

while(1) { beep(flag);//調(diào)用蜂鳴器子程序

xuanzhuan(flag); //調(diào)用旋轉(zhuǎn)燈子程序

}; }voidinter0()interrupt0using1//外部中斷0中斷服務(wù)子程序

{flag=~flag;}【進(jìn)階提高】把外部中斷0擴(kuò)展為4個外部中斷使用,如圖,按下KEY1鍵,對應(yīng)的LED1燈亮;按下KEY2鍵

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論