2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、,2024/3/26,1,項目3 簡易秒表的設(shè)計與制作,本章內(nèi)容:,3-1 認(rèn)識單片機的中斷系統(tǒng),3-3 利用單片機輸出方波,3-2 認(rèn)識單片機定時器/計數(shù)器,3-5 簡易秒表的設(shè)計與制作,3-4 簡易計時器的設(shè)計,,2024/3/26,2,項目3 簡易秒表的設(shè)計與制作,重點掌握單片機的中斷系統(tǒng)及應(yīng)用重點掌握單片機的定時器/計數(shù)器的結(jié)構(gòu)及 工作原理重點掌握單片機的定時器/計數(shù)器的應(yīng)用,本章要點:,,202

2、4/3/26,3,3.1 任務(wù)1 認(rèn)識單片機的中斷系統(tǒng),單片機都具有實時處理能力,即能對外部或是內(nèi)部發(fā)生的事件做出及時處理,這是靠中斷技術(shù)來實現(xiàn)的。,1. 單片機的中斷的魅力,單片機對外部或是內(nèi)部事件的處理方式有兩種:查詢方式和中斷方式。采用程序查詢方式,CPU不能再做別的事,而是在大部分時間處于等待狀態(tài),使CPU的工作效率降低。為了提高CPU的利用效率和進行實時數(shù)據(jù)處理,CPU常采用中斷方式對外部或是內(nèi)部事件進行處理。,(1)中斷

3、的基本概念,當(dāng)CPU正在處理某項事件時,如果外部或內(nèi)部發(fā)生了緊急情況要求CPU迅速去處理,于是CPU暫停當(dāng)前正在處理的工作,轉(zhuǎn)去處理這緊急情況,待緊急情況處理完以后再回到原來被中斷的地方繼續(xù)執(zhí)行原來被中斷的程序,這一過程就稱為中斷,如圖3-1所示。,圖3-1 中斷示意圖,(一)中斷源:引起緊急情況的來源,可分為兩大類:一類來自單 片機內(nèi)部,稱之為內(nèi)部中斷源;另一類來自單片機 外部

4、,稱之為外部中斷源。,中斷請求(或中斷申請):中斷源要求服務(wù)的請求。中斷服務(wù):對中斷請求(或中斷申請)提供的服務(wù)。中斷管理系統(tǒng):能實現(xiàn)中斷功能的硬件和軟件。中斷響應(yīng)過程:中斷管理系統(tǒng)處理事件的過程。,單片機處理中斷有4個步驟:中斷請求、中斷響應(yīng)、中斷處理和中斷返回。,(二)兩種中斷:,1.可屏蔽中斷: 可程控“開中斷/關(guān)中斷”。軟件設(shè)置 允許/禁止CPU響應(yīng)中斷。2.非屏蔽中斷: 不可程控“關(guān)中斷”。有中斷請求

5、信號, CPU必須響應(yīng)。,INTR(Interrupt Request):可屏蔽中斷請求NMI(Non-Maskable Interrupt):非屏蔽中斷,(2)MCS-51中斷系統(tǒng),1)MCS-51單片機的中斷源,MCS-51單片機的中斷源共有5個,可分為如下三類: 外部中斷:/INT0、/INT1定時中斷:T0、T1串行口中斷,說明:外部中斷源:當(dāng)/INT0(P3.2)引腳、INT1(P3.3)引腳出現(xiàn)低電平或下降沿

6、時定時中斷源:內(nèi)部定時/計數(shù)器T0、T1定時時間到,或計數(shù)值超限溢出時串行口中斷源:一幀串口數(shù)據(jù)發(fā)送/接收完成,即一幀數(shù)據(jù)送出,或收到時,CPU響應(yīng)中斷后,只知道有中斷源請求中斷服務(wù),但并不知道是5個中斷源中的哪個中斷源,CPU尋找哪個中斷源發(fā)出中斷請求的過程即為中斷識別。中斷識別的目的是獲取中斷服務(wù)程序入口地址。每個中斷源都有一個位于ROM內(nèi)的中斷服務(wù)程序入口地址。中斷服務(wù)程序入口地址如表3-1所示。,表3-1 中斷服務(wù)程序入口

7、地址,C51中不必考慮中斷向量,使用中斷號即可。C51中斷服務(wù)函數(shù)聲明的格式: 函數(shù)名 ( ) interrupt n [using m] { 函數(shù)體語句 },2)MCS-51單片機中斷系統(tǒng)的結(jié)構(gòu),MCS-51單片機中斷系統(tǒng)結(jié)構(gòu)圖如圖3-3所示。,,圖3-3 MCS-51單片機中斷系統(tǒng)結(jié)構(gòu)圖,3)與MCS-51單片機中斷系統(tǒng)有關(guān)

8、的SFR,定時器控制寄存器TCON ——主要用于保存中斷信息。串行口控制寄存器SCON ——主要用于保存中斷信息。中斷允許寄存器IE ——主要用于控制中斷的開放和關(guān)閉。中斷優(yōu)先級寄存器IP——主要用于設(shè)定優(yōu)先級別。硬件查詢電路——主要用于判定5個中斷源的自然優(yōu)先級別。,TCON(88H):定時器控制寄存器,控制定時器的啟動與停止,并保存T0、T1的溢出中斷標(biāo)志和外部中斷的中斷標(biāo)志。,,TF1(TCON.7):定時器1溢出標(biāo)志位。

9、定時器1被啟動計數(shù)后,從初值開始進行加1計數(shù),當(dāng)定時器1計滿溢出時,由硬件自動使TF1置1,并申請中斷。該標(biāo)志一直保持到CPU響應(yīng)中斷后,才由硬件自動清0。也可用軟件查詢該標(biāo)志,并由軟件清0。,TR1(TCON.6):定時器1啟??刂莆?。,IT1(TCON.2):外部中斷1觸發(fā)方式選擇位。當(dāng)ITl=0時,外部中斷1為電平觸發(fā)方式。當(dāng)ITl=1時,外部中斷1為邊沿觸發(fā)方式。,IE1(TCON.3):外部中斷1請求標(biāo)志位。IEl=1表示外部

10、中斷1向CPU申請中斷。當(dāng)CPU響應(yīng)外部中斷1的中斷請求時,由硬件自動使IE1清0。TF0(TCON.5):定時器0溢出標(biāo)志位。其功能同TF1。TR0(TCON.4):定時器0啟、??刂莆弧F涔δ芡琓R1。IE0(TCON.1):外部中斷0請求標(biāo)志位。其功能同IE1。IT0(TCON.0):外部中斷0觸發(fā)方式選擇位。其功能同IT1。,SCON(98H):串行口控制寄存器,低2位TI和RI保存串行口的接收中斷和發(fā)送中斷標(biāo)志

11、。,,TI (SCON.1):串行發(fā)送中斷請求標(biāo)志。CPU將一個字節(jié)數(shù)據(jù)寫入發(fā)送緩沖器SBUF后啟動發(fā)送,每發(fā)送完一幀數(shù)據(jù),硬件自動使TI置1。但CPU響應(yīng)中斷后,硬件并不能自動使TI清0,必須由軟件使TI清0。RI (SCON.0):串行接收中斷請求標(biāo)志。在串行口允許接收時,每接收完一幀數(shù)據(jù),硬件自動使RI置1。但CPU響應(yīng)中斷后,硬件并不能自動使RI清0,必須由軟件使RI清 0。,IE(A8H):中斷允許寄存器,控制CPU對中斷

12、的開放或屏蔽以及每個中斷源是否允許中斷。,,中斷總允許標(biāo)志——EA,1→允許全部,0→禁止全部串口中斷允許標(biāo)志——ES,1→允許,0→禁止定時中斷0允許標(biāo)志——ET0,1→允許,0→禁止定時中斷1允許標(biāo)志——ET1,1→允許,0→禁止外部中斷0允許標(biāo)志—— EX0,1→允許, 0→禁止外部中斷1允許標(biāo)志—— EX1,1→允許, 0→禁止,IP(B8H):中斷優(yōu)先級寄存器,設(shè)定各中斷源的優(yōu)先級別。,,串口中斷優(yōu)先級標(biāo)志

13、——PS,1→高優(yōu)先,0→低優(yōu)先定時中斷0優(yōu)先級標(biāo)志——PT0, 1→高優(yōu)先,0→低優(yōu)先定時中斷0優(yōu)先級標(biāo)志——PT1, 1→高優(yōu)先,0→低優(yōu)先外部中斷0優(yōu)先級標(biāo)志—— PX0, 1→高優(yōu)先,0→低優(yōu)先外部中斷1優(yōu)先級標(biāo)志—— PX1, 1→高優(yōu)先,0→低優(yōu)先,(四) 中斷優(yōu)先級控制原則和控制邏輯:,中斷優(yōu)先級是為中斷嵌套服務(wù)的。 如圖,MCS—51具有2級優(yōu)先級。 1、優(yōu)先級控制原則:(1)

14、低優(yōu)先級中斷不能打斷高優(yōu)先級的中斷服務(wù); 但高優(yōu)先級中斷請求信號可以打斷低優(yōu)先級 的中斷服務(wù),從而實現(xiàn)中斷嵌套。(2)如果一個中斷請求已被響應(yīng),則同級的其它 中斷服務(wù)將被禁止。即同級中斷不能嵌套。(3)如同級的多個中斷請求同時出現(xiàn),則按CPU 查詢次序確定哪個中斷請求被響應(yīng)。 查詢次序為:INT0→T0→INT1→T1→RI/TI。 2、控制邏輯:(1)利用中斷優(yōu)先級控制寄

15、存器;(2)2個不可尋址的優(yōu)先級狀態(tài)觸發(fā)器:狀態(tài)“0”或“1”。,,,(4)單片機復(fù)位時,IP各位都被置0,所有中斷源為低級中斷,(五) CPU響應(yīng)中斷必須滿足如下條件(必須同時滿足):有中斷源發(fā)出中斷請求中斷總允許位EA=1請求中斷的中斷源的中斷允許位為1,(六)中斷響應(yīng)過程:1.關(guān)中斷:屏蔽其它中斷請求信號。2.保護斷點:將斷點地址壓入堆棧保存,即當(dāng)前PC值入棧。3.尋找中斷源:中斷程序入口地址®PC,轉(zhuǎn)入中

16、斷服務(wù)。4.保護現(xiàn)場:將中斷服務(wù)程序使用的所有寄存器內(nèi)容入棧。5.中斷處理:執(zhí)行中斷源所要求的程序段。鏈接中斷處理6.恢復(fù)現(xiàn)場:恢復(fù)被使用寄存器的原有內(nèi)容。7.開中斷:允許接受其它中斷請求信號。8.中斷返回:執(zhí)行RETI指令,堆棧斷點地址®PC, 程序跳轉(zhuǎn)回斷點處執(zhí)行。 RETI= RET指令+通知CPU中斷服務(wù)已結(jié)束(復(fù)位觸發(fā)器),(八)中斷響應(yīng)周期時序: 每個機器周期的最

17、后一個狀態(tài)(S6)采樣中斷標(biāo)志位,若有中斷請求,將在下一個機器周期的第一個狀態(tài)(S1)按優(yōu)先級順序進行中斷查詢。 中斷響應(yīng)時間: 正常中斷響應(yīng)時間為3~8個機器周期,如果有同級或高級中斷服務(wù),將延長中斷響應(yīng)時間。,(七)中斷響應(yīng)阻斷: 1 . CPU正處在為一個同級或高級的中斷服務(wù)中。即當(dāng)有同級或 高級中斷服務(wù)。 2.查詢中斷請求的機器周期不是當(dāng)前指令的最后一個機器周期。

18、 即當(dāng)CPU未執(zhí)行完一條指令。 3.當(dāng)前執(zhí)行返回指令RET/RETI或訪問IE、IP的指令后,不能立即 響應(yīng)中斷,還應(yīng)再執(zhí)行一條指令,然后才能響應(yīng)中斷。 程序單步執(zhí)行就是利用此原理,借助單片機的外部中斷功 能來實現(xiàn)的。,3T: 中斷請求標(biāo)志查詢:1T 產(chǎn)生、執(zhí)行LCALL: 2T,8T: 執(zhí)行RET/RETI(訪問IP/IE):2T

19、主程序中MUL/DIV指令: 4T 執(zhí)行LCALL指令: 2T,4)中斷請求的撤除,CPU響應(yīng)某中斷請求后,在中斷返回前,應(yīng)該撤消該中斷請求,否則會引起另一次中斷。定時器溢出中斷請求的撤除 CPU在響應(yīng)中斷后,硬件會自動清除中斷請求標(biāo)志TF0或TFl。串行口中斷的撤除 在CPU響應(yīng)中斷后,硬件不能清除中斷請求標(biāo)志TI和RI,而要由軟件來清除相應(yīng)的標(biāo)志。外部中斷的撤除 邊沿觸發(fā)方

20、式時,CPU響應(yīng)中斷后,硬件會自動清除中斷請求標(biāo)志IE0或IEl。電平觸發(fā)方式時,CPU響應(yīng)中斷后,硬件會自動清除中斷請求標(biāo)志IE0或IEl,但由于加到INT0或INT1引腳的外部中斷請求信號并未撤除,中斷請求標(biāo)志IE0或IEl會再次被置1,所以在CPU響應(yīng)中斷后應(yīng)立即撤除INT0或INT1引腳上的低電平。,4)電平方式外部中斷請求的撤消:自動與強制撤除 通過硬件自動地使標(biāo)志位(IE0或IE1)清0。電平請求方式光靠清除中斷標(biāo)志,

21、并不能徹底解決中斷請求的撤除問題。需在中斷響應(yīng)后把中斷請求輸入端從低電平強制改為高電平。 D觸發(fā)器的直接置位端SD(得到負(fù)脈沖):ORL P1 ,#01H ; P1輸出高電平ANL P1 ,#0FEH ;P1 輸出低電平軟硬件相結(jié)合完成:硬件——自動清標(biāo)志位(IE0或IE1清0); 軟件——撤消中斷請求信號

22、 (由低電平改為高電平)。,2.單片機中斷的應(yīng)用,在使用單片機的中斷功能時,需對中斷系統(tǒng)進行初始化。其初始化步驟如下:開放CPU中斷和有關(guān)中斷源的中斷允許,設(shè)置中斷允許寄存器IE中相應(yīng)的位。根據(jù)需要確定各中斷源的優(yōu)先級別,設(shè)置中斷優(yōu)先級寄存器IP中相應(yīng)的位。根據(jù)需要確定外部中斷的觸發(fā)方式,設(shè)置定時器控制寄存器TCON中相應(yīng)的位。,【實例3-1】如圖3-5

23、所示電路,要求采用中斷方式編程實現(xiàn)按鍵按壓一次,發(fā)光二級管的狀態(tài)反轉(zhuǎn)一次,發(fā)光二極管初始狀態(tài)為滅。,圖3-5 實例3-1電路圖,參考程序如下:#includesbit button=P3^2; //定義位變量sbit led=P1^0; //定義位變量void int0() interrupt 0 //外部中斷0中斷子程序{ led=~led; //狀態(tài)取反}void main(

24、){ button=1; //為輸入做準(zhǔn)備 EA=1; //開總中斷 IT0=1; //設(shè)置外部中斷0為下降沿觸發(fā) EX0=1; //開外部中斷0的中斷開關(guān) led=0; //初始狀態(tài)為滅 while(1);},【實例3-2】如圖3-6所示電路,要求采用中斷方式編

25、程實現(xiàn)按鍵按壓一次,數(shù)碼管的值加1,到F時重新從0開始,數(shù)碼管初始狀態(tài)為黑屏。,圖3-6 實例3-2電路圖,參考程序如下:#includesbit button=P3^2;unsigned char duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char i;void int

26、0() interrupt 0{P2=duan[i]; i++; if(i==16) i=0;}void main(){ button=1; EA=1; IT0=1; EX0=1; P2=0; while(1);},【實例3-3】如圖3-7所示電路

27、,編程驗證兩級外部中斷的嵌套效果。要求key1優(yōu)先級為低,key2優(yōu)先級為高,key1按鍵按壓一次led發(fā)光二極管閃爍5次,key2按鍵按壓一次數(shù)碼管從0循環(huán)顯示到F。led發(fā)光二極管初始狀態(tài)為滅,數(shù)碼管初始狀態(tài)為黑屏。,圖3-7 實例3-3電路圖,參考程序如下: #includesbit key1=P3^2;sbit key2=P3^3;sbit led=P1^0;unsigned char duan[]={0x3f,

28、0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(unsigned int z){ unsigned int x,y; for(x=z;x>0;x--) for(y=125;y>0;y--);}void int0() interrupt

29、0{ unsigned char j; for(j=0;j<10;j++) { led=~led; delay(500); }},void int1() interrupt 2{ unsigned char i; for(i=0;i<16;i++) {

30、 P2=duan[i]; delay(500); } }void main(){ key1=1; key2=1; IE=0x85; IP=0x04; IT0=1; IT1=1; P2=0; led=0; while(

31、1);},,2024/3/26,29,3.2 任務(wù)2 認(rèn)識單片機的定時器/計數(shù)器,定時/計數(shù)器是單片機系統(tǒng)一個重要的部件,其工作方式靈活、編程簡單、使用方便,可用來實現(xiàn)定時控制、延時、頻率測量、脈寬測量、信號發(fā)生、信號檢測等。此外,定時/計數(shù)器還可作為串行通信中波特率發(fā)生器。,1. 單片機的定時器/計數(shù)器,MCS-51單片機有兩個16位定時器/計數(shù)器,分別為T0和T1。T0和T1又分別可分為兩個8位定時器/計數(shù)器,名為TH0/TL

32、0和TH1/TL1。,MCS-51單片機的定時器/計數(shù)器的本質(zhì)都是是計數(shù)器。,對MCS-51單片機來說,當(dāng)選擇單片機的機器周期作為計數(shù)對象時,它們是定時器;當(dāng)對通過T0引腳(P3.4)或T1引腳(P3.5)引入的外部脈沖作為計數(shù)對象時,它們是計數(shù)器。定時/計數(shù)功能由軟件控制和切換,如圖3-8所示。,圖3-8 MCS-51單片機定時器/計數(shù)器結(jié)構(gòu)示意圖,MCS-51單片機定時器/計數(shù)器工作原理如圖3-9所示。,圖3-9 MCS-51單

33、片機定時器/計數(shù)器工作原理圖,(1)定時器/計數(shù)器的基本工作原理,當(dāng)T0或T1用做定時器時,其計數(shù)脈沖來源于晶振時鐘輸出信號的12分頻,即每個機器周期使計數(shù)器加1;當(dāng)T0或T1用做計數(shù)器時,只要T0或T1引腳上有一個從1到0的負(fù)跳變,相應(yīng)的計數(shù)器就加1;單片機只在每個機器周期的S5P2狀態(tài)對T0及T1引腳上的電平進行一次采樣,同時單片機需要用兩個機器周期來識別一次負(fù)跳變,所以單片機計數(shù)器的最高計數(shù)頻率為晶振頻率的1/24。,(2)定

34、時器/計數(shù)器的結(jié)構(gòu),MCS-51單片機定時器/計數(shù)器工作原理如圖3-10所示。,圖3-10 MCS-51單片機定時器/計數(shù)器結(jié)構(gòu)圖,(3)定時器/計數(shù)器的控制,定時/計數(shù)器的控制關(guān)系(以T1為例)如圖3-11所示。,圖3-11 T1定時器/計數(shù)器控制關(guān)系圖,與定時器/計數(shù)器有關(guān)的SFR主要有TMOD和TCON。,定時器方式控制寄存器TMOD,GATE:門控位,參與定時器的啟停管理。0:軟件啟動定時器,即用 指令使TCON

35、中的TR1(TR0)置1即可啟動定時器1(定時器0)。1 :軟件和硬件共同啟動定時器,即用指令使TCON中的 TR1(TR0)置1時,只有外部中斷INT1(INT0)引腳輸入高電平時 才能啟動定時器1(定時器0)。,,C/T:模式選擇位。0:定時,1:計數(shù)。M1M0:方式選擇位。00:方式0,01:方式1,10:方式2,11:方式3。,,定時器控制寄存器SCON,TF1(TCON.7):定時器1溢

36、出標(biāo)志位。當(dāng)定時器1計滿溢出時,由硬件自 動使TF1置1,并申請中斷。對該標(biāo)志位有兩種處理方 法,一種是以中斷方式工作,即TF1置1并申請中斷,響 應(yīng)中斷后,執(zhí)行中斷服務(wù)程序,并由硬件自動使TF1清 0;另一種以查詢方式工作,即通過查詢該位是否為1來 判斷是否溢出,TF1置1后必須用軟件使TF1清0。 T

37、R1(TCON.6):定時器1啟??刂莆弧ATE=0時,用軟件使TR1置1即啟動 定時器1,若用軟件使TR1清0則停止定時器1。GATE=1 時,用軟件使TR1置1的同時外部中斷INT1的引腳輸入高 電平才能啟動定時器1。,TF0(TCON.5):定時器0溢出標(biāo)志位。其功能同TF1。TR0(TCON.4):定時器0啟停控制位。其功能同TR1。IE1(TC

38、ON.3):外部中斷1請求標(biāo)志位。IT1(TCON.2):外部中斷1觸發(fā)方式選擇位。IE0(TCON.1):外部中斷0請求標(biāo)志位。IT0(TCON.0):外部中斷0觸發(fā)方式選擇位。,2.定時器/計數(shù)器的工作方式,定時器/計數(shù)器共有4中工作方式,由TMOD寄存器中的M1M0決定,功能如表3-3所示。,表3-3 定時器/計數(shù)器工作方式,(1) 方式0,在方式0下,定時器/計數(shù)器是一個使用13位的定時/計數(shù)器(THi7-0+TLi4-

39、0)。以T1為例,方式0的邏輯結(jié)構(gòu)圖如圖3-12所示。,圖3-12 T1方式0邏輯結(jié)構(gòu)圖,在方式0下: 定時時間 t = (213 - X)×T機 (μs) 計數(shù)初值 X= 213 - t/T機其中,T機是單片機的機器周期,12MHz時T機=1μs,則最大定時時間t=213μs = 8.192ms?!緦嵗?】假設(shè)晶振頻率為12MHz,計算定時器T1在方式0下定時時間為500?s時的定時初值。解:

40、計數(shù)初值X=213-500/1=7692= 1 1110 0000 1100B注意:方式0的TL1高3位未用,可填0 ,即在低5位前插入3個0,因此 X= 1111 0000 0000 1100B = F00CH,(2) 方式1,在方式1下,定時器/計數(shù)器是一個使用16位的定時/計數(shù)器(THi+TLi)。以T1為例,方式1的邏輯結(jié)構(gòu)圖如圖3-13所示。,圖3-13 T1方式1邏輯結(jié)構(gòu)圖,在方式1下:

41、 定時時間 t = (216 - X)×T機 (μs) 計數(shù)初值 X= 216 - t/T機12MHz時,最大定時時間t=216μs = 65.536ms。,(3) 方式2,在方式2下,定時器/計數(shù)器是一個使用8位的能夠自動重裝初值的定時/計數(shù)器。THi中的8位用于存放定時初值或計數(shù)初值,TLi中的8位用于加1計數(shù)器,TLi溢出后, THi數(shù)值可自動裝入TLi。 以T1為例,方式2的邏輯結(jié)構(gòu)圖如圖3-14所示

42、。,圖3-14 T1方式2邏輯結(jié)構(gòu)圖,在方式2下: 定時時間 t = (28 - X)×T機 (μs) 計數(shù)初值 X= 28 - t/T機12MHz時,最大定時時間t=28μs = 0.256ms。,(4) 方式3,在方式3下,2個定時器/計數(shù)器共有三種狀態(tài),方式3的邏輯結(jié)構(gòu)圖如圖3-15所示。,圖3-15 方式3邏輯結(jié)構(gòu)圖,TH0+TF1+TR1組成的8位定時器,只能用于定時。TL0+

43、TF0+TR0組成的8位定時/計數(shù)器,既可用于定時, 也能用于計數(shù)。T1組成的無中斷功能的定時器。,(5) 不同工作方式的定時初值或計數(shù)初值的計算方法,不同工作方式的定時初值或計數(shù)初值的計算方法如下表3-4所示。 裝載計數(shù)初值時:THx = X / 256, TLx = X % 256 (X = 0、1),表3-4 不同工作方式的定時初值或計數(shù)初值,,2024/3/26,45,3.3 任務(wù)3 利用單片機輸出

44、方波,1.簡易方波發(fā)生器的設(shè)計,初始化的步驟如下:,,(1)定時器/計數(shù)器的初始化,確定定時器/計數(shù)器的工作方式,確定方式控制字,并寫入 TMOD。預(yù)置定時初值或計數(shù)初值,根據(jù)定時時間或計數(shù)次數(shù),計 算定時初值或計數(shù)初值,并寫入TH0、TL0或TH1、TL1。根據(jù)需要開放定時器/計數(shù)器的中斷,給IE中的相關(guān)位賦值。啟動定時器/計數(shù)器,給TCON中的TR1或TR0置1。,(2)利用單片機的定時器/計數(shù)器設(shè)計簡易方波發(fā)生器,【

45、實例3-4】在P1.0引腳輸出周期為1 ms(頻率1kHz)的方波,要求采用定時器1方式1的查詢法和中斷法分別設(shè)計程序,晶振頻率為12MHz。,根據(jù)題意,只要使P1.0每隔500?s取反一次即可得到周期1 ms的方波,因而T1的定時時間為500?s。解:計數(shù)初值X=216- T/T機=65536-500/1=65036=FE0CH 則TH1 = 0xfe TL1 = 0x0c 定時器1方式1時,TMOD=0x

46、10,查詢法參考程序#includesbit p1_0=P1^0;void main(){TMOD=0x10;TH1=0xfe;TL1=0x0c;TR1=1;p1_0=0;while(1){while(!TF1);TF1=0;p1_0=~p1_0;TH1=0xfe; TL1=0x0c;}},中斷法參考程序#includesbit p1_0=P1^0;voi

47、d timer1() interrupt 3{p1_0=~p1_0; TH1=0xfe;TL1=0x0c;}void main(){TMOD =0x10; TH1=0xfe;TL1=0x0c;EA=1;ET1=1;TR1=1;while(1);},2.調(diào)試與仿真運行,,圖3-17 實例5電路圖,,圖3-18 實例5仿真波形圖,,2024/3/26,49,3.4 任務(wù)4 簡易計

48、時器的設(shè)計,1.認(rèn)識LED數(shù)碼管,LED顯示元件是常見的人機交互輸出設(shè)備,其作用是指示中間運行結(jié)果與運行狀態(tài)。LED種類較多,常見的LED如圖3-19所示。,,,圖3-19 LED實物圖,(1)單個LED的驅(qū)動,常見的單個LED的驅(qū)動電路如圖3-20所示電路,(a)圖中端口引腳輸出低電平,則LED點亮,R1為限流電阻,避免流過LED電流過大。(b)圖中端口引腳輸出低電平,則Q1導(dǎo)通,LED點亮,R2為限流電阻。,圖3-20 常見的單

49、個LED驅(qū)動電路,(2)單個數(shù)碼管的驅(qū)動,將多個LED封裝在一起,即可構(gòu)成筆劃式數(shù)碼管。 數(shù)碼管內(nèi)部由七個條形發(fā)光二極管和一個小圓點發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。常見數(shù)碼管有10根管腳。管腳排列及分類如下圖3-21所示。其中COM為公共端,根據(jù)內(nèi)部發(fā)光二極管的接線形式可分為共陰極和共陽極兩種。,,,圖3-21 數(shù)碼管管腳排列及分類,使用時,共陰極數(shù)碼管公共端接地,共陽極數(shù)碼管公共端接電源。靜態(tài)時,推薦使用10~15m

50、A驅(qū)動電流;動態(tài)掃描時,平均電流4~5 mA。由于常規(guī)的數(shù)碼管起輝電流只有1~2 mA,最大極限電流也只有10~30 mA,所以它的輸入端在5 V電源或高于TTL高電平(3.5 V)的電路信號相接時,一定要串加限流電阻,以免損壞器件。,(3)恒流驅(qū)動與非恒流驅(qū)動對數(shù)碼管的影響,①顯示效果。由于發(fā)光二極管基本上屬于電流敏感器件,其正向壓降的分散性很大,并且還與溫度有關(guān),為了保證數(shù)碼管具有良好的亮度均勻度.就需要使其具有恒定的工作電流,且不

51、能受溫度及其他因素的影響。另外,當(dāng)溫度變化時驅(qū)動芯片還要能夠自動調(diào)節(jié)輸出電流的大小以實現(xiàn)色差平衡溫度補償。②安全性。即使是短時間的電流過載也可能對發(fā)光管造成永久性的損壞,采用恒流驅(qū)動電路后可防止由于電流故障所引起的數(shù)碼管的大面積損壞。,(4)數(shù)碼管使用條件,①段及小數(shù)點上加限流電阻。③使用電壓。段:根據(jù)發(fā)光顏色決定;查引腳排布圖,看一下每段的芯片數(shù)量是多少?當(dāng)紅色與黃色時,使用1.9V乘以每段的芯片串聯(lián)的個數(shù);當(dāng)綠色與藍(lán)色時,使用

52、2.1V乘以每段的芯片串聯(lián)的個數(shù);③使用電流。靜態(tài):總電流 80 mA(每段 10 mA);動態(tài):平均電流 4~5 mA,峰值電流100mA。,2.數(shù)碼管的字形編碼與顯示方式,(1)數(shù)碼管的字形編碼,數(shù)碼管的8段正好組成一個字節(jié)。當(dāng)單片機的并行口P0~P3驅(qū)動數(shù)碼管時,通常要求數(shù)據(jù)位D0~D7分別與數(shù)碼管的a、b、c、…、dp對應(yīng)相連,即數(shù)據(jù)位D0驅(qū)動a字段,數(shù)據(jù)位D1驅(qū)動b字段,依此類推,如表3-6所示。,表3-6 數(shù)據(jù)位與各顯示段

53、的對應(yīng)關(guān)系,當(dāng)單片機P1口驅(qū)動數(shù)碼管時,P1口各管腳與數(shù)碼管各顯示段的連接關(guān)系如圖3-23所示。,,,(a) 與共陽極數(shù)碼管相連 (b) 與共陰極數(shù)碼管相連 圖3-23單片機并行口與數(shù)碼管的連接關(guān)系,單片機P1口驅(qū)動數(shù)碼管時,無論是驅(qū)動共陰極還是共陽極數(shù)碼管,P1口各管腳與數(shù)碼管的連接關(guān)系相同,如圖3-23所示,單片機其它并行口和數(shù)碼管各顯示段的對應(yīng)連接關(guān)系與P1口相同。,要使數(shù)碼管顯

54、示相應(yīng)的字符,必須使單片機并行口輸出相應(yīng)的字形編碼(也稱段碼)。對照圖3-23(a),驅(qū)動共陽極數(shù)碼管時,P1口輸出的數(shù)據(jù)為0(低電平)表示對應(yīng)字段亮,數(shù)據(jù)為1(高電平)表示對應(yīng)字段暗(不亮)。驅(qū)動共陰極數(shù)碼管時,輸出的數(shù)據(jù)為0表示對應(yīng)字段暗,數(shù)據(jù)為1表示對應(yīng)字段亮。例如,數(shù)碼管顯示數(shù)字“0”時,對共陽極數(shù)碼管,應(yīng)使字段g和字段dp暗,其它6個字段亮,因此單片機輸出的字型編碼應(yīng)為“11000000B”(即C0H);對共陰極數(shù)碼管,對應(yīng)的

55、字型編碼應(yīng)為“00111111B”(即3FH)。依此類推,可求得數(shù)碼管字形編碼如表3-7所示。,表3-7 數(shù)碼管顯示段碼表,(2)數(shù)碼管的顯示方式,點亮LED顯示器有靜態(tài)和動態(tài)兩種方法,如圖3-24所示。,,靜態(tài)顯示,b.動態(tài)顯示,圖3-24 數(shù)碼管的顯示方式,靜態(tài)顯示,就是數(shù)碼管的各筆劃段都由具有鎖存能力的I/O端口引腳驅(qū)動,CPU將段碼寫入鎖存器后,每個數(shù)碼管都由鎖存器持續(xù)驅(qū)動,直到下一次CPU更新鎖存器存儲的段碼之前,數(shù)碼管的顯

56、示不會改變。當(dāng)需要用靜態(tài)顯示的方法驅(qū)動多個數(shù)碼管時,就需要使用多個具有鎖存能力的I/O端口。動態(tài)顯示,是把所有數(shù)碼管的8個筆劃段a~g和dp同名端連在一起,而每一個數(shù)碼管的公共極COM各自獨立地受I/O線控制。CPU向字段輸出口送出字形碼時,所有數(shù)碼管接收到相同的字形碼。但究竟是哪個數(shù)碼管亮,則取決于COM端。動態(tài)掃描用分時的方法輪流控制各個數(shù)碼管的COM端,使各個數(shù)碼管輪流點亮。在輪流點亮數(shù)碼管的掃描過程中,每位數(shù)碼管的點亮?xí)r間極

57、為短暫。只要數(shù)碼管點亮的間隔小于人眼的視覺暫留時間(40ms),人們就會認(rèn)為數(shù)碼管是一直點亮的。多個數(shù)碼管動態(tài)顯示時需同時提供相應(yīng)的段碼和位碼。,3.60S計時器的設(shè)計,【實例3-5】設(shè)計任務(wù):設(shè)計一60s計時器。設(shè)計要求:(1)設(shè)計2個按鍵,key1為啟動鍵,key2為清零鍵,直接清零時,數(shù)碼顯示管上顯示“00”。(2)計時器為60s內(nèi)遞加計時,計時間隔為1s。(3)計時器遞加到60s時,數(shù)碼管顯示“60”,同時蜂鳴器發(fā)聲,直到key

58、2清零鍵按下蜂鳴器停止發(fā)聲。設(shè)晶振頻率為12MHz。,分析:可選用T0的方式1進行定時,但方式1最大定時時間為65.536ms,為實現(xiàn)1s的定時,可設(shè)定時器T0的定時時間為50ms,定時器溢出20次則說明定時滿1s。 計數(shù)初值X=216- T/T機=65536-50000/1=15536=3CB0H 則TH0 = 0x3c TL0 = 0xb0 定時器T0工作在方式1時,TMOD=0x01,實例6硬件電路

59、圖設(shè)計如圖3-25所示。,圖3-25 實例3-5仿真圖,參考程序如下:#includeunsigned char duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};sbit key1=P1^0;sbit key2=P1^1;sbit beep=P3^7;bit run;unsigned char count,i;void delay(unsigned

60、int z){ unsigned int x,y; for(x=z;x>0;x--) for(y=125;y>0;y--);},void main(){ P0=0; P2=0; key1=1; key2=1; TMOD=0x01; TH0=0x3c; TL0=0xb0; EA=1; ET0=1; while(

61、1) { if(key1==0) { run=1; count=0; },else if(key2==0) { run=0; count=0; } if(run) { TR0=1; }

62、 else { TR0=0; P0=duan[0]; P2=duan[0]; } if(count==60) { beep=1;//蜂鳴器響 delay(1);//調(diào)用1ms延時 beep=0;//蜂鳴器不響 delay(1);//調(diào)用1ms延時

63、,} }},void timer0( ) interrupt 1{ i++; if(i==20) { i=0; count++; if(count>=60) { count=60; } P0=duan[count/10]; P2=duan[count%

64、10]; } TH0=0x3c; TL0=0xb0;},,2024/3/26,64,3.5 任務(wù)5 簡易秒表的設(shè)計與制作,電子秒表是一種常用的測時儀器,具有顯示直觀、讀取方便、功能多等優(yōu)點,在日常生活中應(yīng)用的較為廣泛。利用單片機的定時器/計數(shù)器實現(xiàn)分、秒定時,結(jié)合按鍵和顯示部件,很容易實現(xiàn)電子秒表的設(shè)計。,,,1. 硬件電路設(shè)計與軟件程序設(shè)計,【實例3-6】設(shè)計任務(wù):設(shè)計一簡易秒表。設(shè)計要求:(1)

65、4位LED數(shù)碼管顯示秒、分值。從右往左顯示秒值的個位、十位,分值的個位、十位,個位能向十位進位。(2)上電后首先顯示00 00 ,表示從00 00 秒開始計時,當(dāng)時間顯示到59 59時,4位顯示都清零,從零開始。(3)設(shè)計3個獨立式按鍵key1,key2,key3,分別實現(xiàn)啟動、暫停、復(fù)位功能。,分析:為方便編程,3個獨立按鍵key1,key2,key3可分別接到外部中斷0、外部中斷1和

66、定時器T0引腳上,采用中斷方式,外部中斷0、外部中斷1設(shè)為下降沿觸發(fā),T0作為計數(shù)器,計1次溢出,可選工作方式2,此時TH0、TL0初值均為0xff,T1作為1s定時器使用,為了保證延時的精確性,這里T1亦采用工作方式2,但方式2最大定時時間為0.256ms,為實現(xiàn)1s的定時,可設(shè)定時器T1的定時時間為0.25ms,定時器溢出4000次則說明定時滿1s。定時器T1計數(shù)初值X=28- T/T機=256-250/1=6則TH1= TL

67、1=0x06定時器T0作為計數(shù)器、T1作為定時器,均為工作方式2時,TMOD=0x26,實例3-6硬件電路圖設(shè)計如圖3-26所示。,圖3-26 實例3-6電路圖,參考程序如下: #includeunsigned char duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned char wei[]={0xfe,0xfd,0xfb,0xf7};uns

68、igned char time[4];sbit key1=P3^2;sbit key2=P3^3;sbit key3=P3^4;unsigned int i;unsigned char miao,fen,j;void delay(unsigned int z){ unsigned int x,y; for(x=z;x>0;x--) for(y=125;y>0;y--);},vo

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論