版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
單片機應(yīng)用技術(shù)項目式教程—基于Proteus和KeilCSINGLE-CHIP
COMPUTER
APPLICATION
TECHNOLOGY
數(shù)字電子鐘的設(shè)計定時/計數(shù)器的應(yīng)用01LED數(shù)碼管結(jié)構(gòu),分類及應(yīng)用02數(shù)字電子鐘的設(shè)計03知識要點05
數(shù)字電子鐘的設(shè)計
了解定時/計數(shù)器的結(jié)構(gòu)及原理,并用C語言編程01掌握LED動態(tài)掃描的編程方法02能用proteus軟件繪制仿真原理圖03能應(yīng)用C語言編程輸出方波和矩形波,并進行仿真04學(xué)習要求05實現(xiàn)數(shù)字電子鐘的設(shè)計4.1定時/計數(shù)器工作原理4.1.1傳統(tǒng)MCS-51單片機定時/計數(shù)器的基本結(jié)構(gòu)定時/計數(shù)器的基本結(jié)構(gòu)如圖4.1所示。基本部件是兩個16位寄存器T0和T1,每個寄存器分成兩個8位寄存器(T0由高8位TH0和低8位TL0組成,T1由TH1和TL1組成)。TMOD是定時/計數(shù)器的工作方式寄存器,由它確定定時/計數(shù)器的工作方式和功能;TCON是定時/計數(shù)器的控制寄存器,用于控制T0、T1的啟動和停止,以及設(shè)置溢出標志。4.2定時/計數(shù)器的特殊功能寄存器
STC15系列單片機
定時/計數(shù)器的特殊功能
寄存器見表4-1。4.2定時/計數(shù)器的特殊功能寄存器4.2.1定時/計數(shù)器T0和T1的控制寄存器控制寄存器(TCON)(88H)的低4位用于控制外部中斷,已在前面介紹TCON的高4位用于控制定時/計數(shù)器的啟動和中斷申請。其格式如下:1)TF1:定時/計數(shù)器T1溢出中斷請求標志位(可看作TimerFull的縮寫)。定時/計數(shù)器T1計數(shù)溢出時由硬件自動置TF1為“1”。在進入中斷服務(wù)程序后TF1由硬件自動清“0”;若用于查詢方式,此位可作為狀態(tài)位供查詢,但應(yīng)注意查詢后要由軟件清“0”。2)TR1:定時/計數(shù)器T1運行控制位(可看作TimerStart的縮寫)。TR1置“1”時,定時/計數(shù)器T1開始工作;TR1置“0”時,定時/計數(shù)器T1停止工作。TR1由軟件置“1”或清“0”。所以,用軟件可控制定時/計數(shù)器T1的啟動與停止。3)TF0:定時/計數(shù)器T0溢出中斷請求標志位,其功能與TF1類同。4)TR0:定時/計數(shù)器T0運行控制位,其功能與TR1類同。4.2定時/計數(shù)器的特殊功能寄存器4.2.2工作方式寄存器工作方式寄存器(TMOD)(89H)用于設(shè)置定時/計數(shù)器的工作方式,低4位用于T0,高4位用于T1。其格式如下:
1)GATE:門控位。GATE=0時,若軟件使TCON中的TR0或TR1設(shè)置為“1”,則啟動定時/計數(shù)器工作;GATE=1時,當軟件使TR0或TR1設(shè)置為“1”,同時外部中斷引腳INT0或INT1也為高電平時,才能啟動定時/計數(shù)器工作。即此時定時器的啟動條件,加上了INT0或INT1引腳為高電平這一條件。
2)C/T:定時/計數(shù)模式選擇位。C/T=0為定時模式,C/T=1為計數(shù)模式。
3)M1M0:工作方式設(shè)置位。定時/計數(shù)器有4種工作方式,由M1M0進行設(shè)置。STC15系列單片機的方式0與傳統(tǒng)MCS-51單片機不同,為16位自動重裝定時/計數(shù)器,其他方式與傳統(tǒng)MCS-51單片機相同,具體功能見表4.2。4.2定時/計數(shù)器的特殊功能寄存器4.2.2工作方式寄存器工作方式寄存器(TMOD)(89H)用于設(shè)置定時/計數(shù)器的工作方式,低4位用于T0,高4位用于T1。其格式如下:
1)GATE:門控位。GATE=0時,若軟件使TCON中的TR0或TR1設(shè)置為“1”,則啟動定時/計數(shù)器工作;GATE=1時,當軟件使TR0或TR1設(shè)置為“1”,同時外部中斷引腳INT0或INT1也為高電平時,才能啟動定時/計數(shù)器工作。即此時定時器的啟動條件,加上了INT0或INT1引腳為高電平這一條件。
2)C/T:定時/計數(shù)模式選擇位。C/T=0為定時模式,C/T=1為計數(shù)模式。
3)M1M0:工作方式設(shè)置位。定時/計數(shù)器有4種工作方式,由M1M0進行設(shè)置。STC15系列單片機的方式0與傳統(tǒng)MCS-51單片機不同,為16位自動重裝定時/計數(shù)器,其他方式與傳統(tǒng)MCS-51單片機相同,具體功能見表4.2。4.2定時/計數(shù)器的特殊功能寄存器4.2.2工作方式寄存器工作方式寄存器(TMOD)(89H)用于設(shè)置定時/計數(shù)器的工作方式,低4位用于T0,高4位用于T1。其格式如下:
1)GATE:門控位。GATE=0時,若軟件使TCON中的TR0或TR1設(shè)置為“1”,則啟動定時/計數(shù)器工作;GATE=1時,當軟件使TR0或TR1設(shè)置為“1”,同時外部中斷引腳INT0或INT1也為高電平時,才能啟動定時/計數(shù)器工作。即此時定時器的啟動條件,加上了INT0或INT1引腳為高電平這一條件。
2)C/T:定時/計數(shù)模式選擇位。C/T=0為定時模式,C/T=1為計數(shù)模式。
3)M1M0:工作方式設(shè)置位。定時/計數(shù)器有4種工作方式,由M1M0進行設(shè)置。由于TMOD不能進行位尋址,因此只能用字節(jié)指令設(shè)置定時/計數(shù)器的工作方式。CPU復(fù)位時TMOD所有位清“0”,工作在非門控定時器方式0狀態(tài)。STC15系列單片機的方式0與傳統(tǒng)MCS-51單片機不同,為16位自動重裝定時/計數(shù)器,其他方式與傳統(tǒng)MCS-51單片機相同,具體功能見表4.2。4.2.3輔助寄存器AUXR
STC15系列單片機是1T的8051單片機,為兼容傳統(tǒng)8051單片機,定時器0、定時器1和定時器2復(fù)位后是傳統(tǒng)8051的速度,即12分頻,這是為了兼容傳統(tǒng)8051單片機。但也可不進行12分頻,通過設(shè)置新增加的特殊功能寄存器AUXR,將T0、T1、T2設(shè)置為1T。AUXR格式如下:T0x12:定時器0速度控制位。取值0時定時器0是傳統(tǒng)8051速度,即12分頻;取值1時定時器0的速度是傳統(tǒng)8051的12倍,不分頻。T1x12:定時器1速度控制位。取值0時定時器1是傳統(tǒng)8051速度,即12分頻;取值1時定時器1的速度是傳統(tǒng)8051的12倍,不分頻。UART_M0x6:串行口1模式0的通信速度設(shè)置位。取值0時串行口1模式0的速度是傳統(tǒng)8051單片機串口的速度,即12分頻;取值1時串行口1模式0的速度是傳統(tǒng)8051單片機串行口速度的6倍,2分頻。T2R:定時器2允許控制位。取值0時不允許定時器2運行;取值1時允許定時器2運行。4.2定時/計數(shù)器的特殊功能寄存器T2_C/T:控制定時器2用作定時器或計數(shù)器。取值0時用作定時器(對內(nèi)部系統(tǒng)時鐘進行計數(shù));取值1時用作計數(shù)器(對引腳T2/P3.1的外部脈沖進行計數(shù))。T2x12:定時器2速度控制位。取值0時定時器2是傳統(tǒng)8051速度,即12分頻;取值1時定時器2的速度是傳統(tǒng)8051的12倍,不分頻。如果串行口1或串行口2用T2作為波特率發(fā)生器,則由T2x12決定串行口1或串行口2是12T還是1T。EXTRAM:內(nèi)部/外部RAM存取控制位。取值0時允許使用邏輯上在片外、物理上在片內(nèi)的擴展RAM;取值1時,禁止使用邏輯上在片外、物理上在片內(nèi)的擴展RAM。S1ST2:串行口1(UART1)選擇定時器2作波特率發(fā)生器的控制位。取值0時選擇定時器1作為串行口1(UART1)的波特率發(fā)生器;取值1時選擇定時器2作為串行口1(UART1)的波特率發(fā)生器,此時定時器1得到釋放,可以作為獨立定時器使用。T0CLKO/P3.5、T1CLKO/P3.4和T2CLKO/P3.0的時鐘輸出控制由INT_CLKO(AUXR2)寄存器的T0CLKO位、T1CLKO位和T2CLKO位控制。T0CLKO的輸出時鐘頻率由定時器0控制,T1CLKO的輸出時鐘頻率由定時器1控制,相應(yīng)的定時器需要工作在定時器的模式0(16位自動重裝載模式)或模式2(8位自動重裝載模式),不允許相應(yīng)的定時器中斷,免得CPU反復(fù)進中斷。T2CLKO的輸出時鐘頻率由定時器2控制,同樣不允許相應(yīng)的定時器中斷,免得CPU反復(fù)進中斷。定時器2的工作模式固定為模式0(16位自動重項目4數(shù)字電子鐘的設(shè)計117裝載模式),在此模式下定時器2可用作可編程時鐘輸出。INT_CLKO(AUXR2)格式如下:T0CLKO:是否允許將P3.5/T1引腳配置為定時器0(T0)的時鐘輸出T0CLKO1允許將P3.5/T1引腳配置為定時器0(T0)的時鐘輸出T0CLKO;0不允許將P3.5/T1引腳配置為定時器0(T0)的時鐘輸出T0CLKO.T1CLKO:是否允許將P3.4/T0引腳配置為定時器1(T1)的時鐘輸出T1CLKO1允許將P3.4/T0引腳配置為定時器1(T1)的時鐘輸出T1CLKO;0不允許將
P3.4/T0引腳配置為定時器1(T1)的時鐘輸出T1CLKO。T2CLKO:是否允許將P3.0引腳配置為定時器2(T2)的時鐘輸出T2CLKO。1允許將P3.0引腳配置為定時器2的時鐘輸出T2CLKO;0不允許將P3.0引腳配置為定時器2的時鐘輸出T2CLKO4.2定時/計數(shù)器的特殊功能寄存器4.2.5定時器T0和T1的中斷控制寄存器:IE和IP
1.中斷允許寄存器IE
CPU對中斷系統(tǒng)所有中斷以及某個中斷源的開放和屏蔽是由中斷允許寄存器(IE)(A8H)控制的.IE的狀態(tài)可通過程序由軟件設(shè)定。某位設(shè)定為“1”,相應(yīng)的中斷源
中斷允許;某位設(shè)定為“0”,相應(yīng)的中斷源中斷屏蔽。CPU復(fù)位時,IE各位清“0”,禁止所有中斷。IE各位的定義如下(標注STC15系列表示傳統(tǒng)51沒有相應(yīng)功能):ET0:定時/計數(shù)器(T0)中斷允許位。ET1:定時/計數(shù)器(T1)中斷允許位。EA:CPU中斷總允許位。2.中斷優(yōu)先級寄存器IPMCS-51單片機有兩個中斷優(yōu)先級,因此可實現(xiàn)二級中斷服務(wù)嵌套。每個中斷源的中斷優(yōu)先級都是由中斷優(yōu)先級寄存器(IP)(B8H)中的相應(yīng)位的狀態(tài)來規(guī)定的。IP的狀態(tài)由軟件設(shè)定,某位設(shè)定為“1”,則相應(yīng)的中斷源為高優(yōu)先級中斷;某位設(shè)定為“0”,則相應(yīng)的118單片機應(yīng)用技術(shù)項目式教程———基于C51+Proteus仿真中斷源為低優(yōu)先級中斷。單片機復(fù)位時,IP各位清“0”,各中斷源同為低優(yōu)先級中斷。IP各位的定義如下(標注STC15系列表示傳統(tǒng)51沒有相應(yīng)功能):PT0:定時/計數(shù)器(T0)中斷優(yōu)先級設(shè)定位。PT1:定時/計數(shù)器(T1)中斷優(yōu)先級設(shè)定位。注意:當定時器/計數(shù)器0工作在模式3(不可屏蔽中斷的16位自動重裝載模式)時,不需要設(shè)置EA=1,只需設(shè)置ET0=1就能打開T0的中斷,此模式下的T0中斷與總中斷使能位EA無關(guān)。一旦此模式下的定時器/計數(shù)器0中斷被打開后,該定時器/計數(shù)器0中斷優(yōu)先級就是最高的,它不能被其他任何中斷所打斷(不管是比定時器/計數(shù)器0中斷優(yōu)先級低的中斷還是比其優(yōu)先級高的中斷,都不能打斷此時的定時器/計數(shù)器0中斷),而且該中斷打開后既不受EA/IE7控制也不再受ET0控制,即清零EA或ET0都不能關(guān)閉此中斷。4.2定時/計數(shù)器的特殊功能寄存器4.3定時/計數(shù)器0的工作模式STC15單片機和傳統(tǒng)MCS-51單片機定時/計數(shù)器T0有4種工作方式(方式0、1、2、3),T1有3種工作方式(方式0、1、2),此外T1還可作為串行通信接口的波特率發(fā)生器,若錯將T1設(shè)置為方式3,則T1將停止工作。下面以定時/計數(shù)器T0為例進行介紹。1.方式0當TMOD的M1M0為“00”時,定時/計數(shù)器工作于方式0,傳統(tǒng)MCS-51單片機方式0為13位計數(shù)器,由TL0的低5位(高3位未用)和TH0的8位組成。13位定時/計數(shù)器是為了與Intel公司早期的產(chǎn)品MCS-48系列兼容,該系列已過時,且計數(shù)初值裝入易出錯,所以在實際應(yīng)用已不再使用。4.3定時/計數(shù)器0的工作模式STC15系列單片機對傳統(tǒng)MCS-51單片機進行了創(chuàng)新設(shè)計,模式0下定時器/計數(shù)器作為可自動重裝載的16位計數(shù)器,具體結(jié)構(gòu)圖如圖4.2所示。
4.3定時/計數(shù)器0的工作模式
定時器0有兩個隱藏的寄存器RL_TH0和RL_TL0。RL_TH0與TH0共用同一個地址,RL_TL0與TL0共用同一個地址。當TR0=0即定時器/計數(shù)器0被禁止工作時,對TL0寫入的內(nèi)容會同時寫入RL_TL0,對TH0寫入的內(nèi)容也會同時寫入RL_TH0。當TR0=1即定時器/計數(shù)器0被允許工作時,對TL0寫入內(nèi)容,實際上不是寫入當前寄存器TL0中,而是寫入隱藏的寄存器RL_TL0中;對TH0寫入內(nèi)容,實際上也不是寫入當前寄存器TH0中,而是寫入隱藏的寄存器RL_TH0。這樣可以巧妙地實現(xiàn)16位重裝載定時器。當讀TH0和TL0的內(nèi)容時,所讀的內(nèi)容就是TH0和TL0的內(nèi)容,而不是RL_TH0和RL_TL0的內(nèi)容。當定時器0工作在模式0(TMOD[1∶0]/[M1,M0]=00B)時,[TL0,TH0]的溢出不僅置位TF0,而且會自動將[RL_TL0,RL_TH0]的內(nèi)容重新裝入[TL0,TH0]。當T0CLKO/INT_CLKO0=1時,P35/T1引腳配置為定時器0的時鐘輸出T0CLKO。輸出時鐘頻率=T0溢出率/2。如果C/T=0,定時器/計數(shù)器T0對內(nèi)部系統(tǒng)時鐘計數(shù),則:T0工作在1T模式(AUXR7/T0x12=1)時的輸出時鐘頻率=(SYSclk)/(65536-[RL_TH0,RL_TL0])/2;T0工作在12T模式(AUXR7/T0x12=0)時的輸出時鐘頻率=(SYSclk)/12/(65536-[RL_TH0,RL_TL0])/2。如果C/T=1,定時器/計數(shù)器T0是對外部脈沖輸入(P34/T0)計數(shù),則輸出時鐘頻率=(T0_Pin_CLK)/(65536-[RL_TH0,RL_TL0])/24.3定時/計數(shù)器0的工作模式2.方式1STC15系列單片機和傳統(tǒng)51單片機在方式1上功能基本相同,STC15系列單片機相比傳統(tǒng)51單片機主要是對系統(tǒng)時鐘,增加了1T模式。當TMOD的M1M0為“01時,定時/計數(shù)器工作于方式1,其邏輯結(jié)構(gòu)如圖4.3所示。4.3定時/計數(shù)器0的工作模式
3.方式2當M1M0為“10”時,定時/計數(shù)器工作于方式2,其邏輯結(jié)構(gòu)如圖4.4所示(STC15系列單片機和傳統(tǒng)51單片機在方式2上功能基本相同,STC15系列單片機相比傳統(tǒng)51單片機主要是對系統(tǒng)時鐘,增加了1T模式,同時增加了T0CLKO輸出)。
4.方式3本書講解STC15系列單片機的方式3,傳統(tǒng)51單片機定時器0的方式3,請參考相關(guān)書籍。對定時器/計數(shù)器1,在方式3時,定時器1停止計數(shù),效果與將TR1設(shè)置為0相同。對定時器/計數(shù)器0,其工作方式3與工作方式0是一樣的(圖4.5是定時器方式3的原理圖,與方式0是一樣的)。唯一不同的是:當定時器/計數(shù)器0工作在方式3時,只需允許ET0/IE.1(定時器/計數(shù)器0中斷允許位),不需要允許EA/IE.7(總中斷使能位),就能打開定時器/計數(shù)器0的中斷,此方式下的定時器/計數(shù)器0中斷與總中斷使能位EA無關(guān);一旦工作在方式3下的定時器/計數(shù)器0中斷被打開(ET0=1),那么該中斷是不可屏蔽的,其優(yōu)先級是最高的,即該中斷不能被任何中斷所打斷,而且該中斷打開后既不受EA/IE.7控制也不再受ET0控制,當EA=0或ET0=0時都不能屏蔽此中斷。故將此方式稱為不可屏蔽中斷的16位自動重裝載模式,該方式可用于實時操作系統(tǒng)中的節(jié)拍定時器。4.4應(yīng)用定時/計數(shù)器輸出方波和矩形波MCS-51單片機的定時/計數(shù)器可以用于較精確的延時和計數(shù),對于延時的應(yīng)用,可遵循以下幾個方面進行應(yīng)用設(shè)計。1)確定延時時間。2)定時/計數(shù)器初始化。定時/計數(shù)器初始化主要包括:1)確定定時/計數(shù)器的工作方式。
2)計算定時/計數(shù)器的初值。
3)在主程序中進行初始化設(shè)計,包括定時/計數(shù)器的初始化和中斷初始化,即對TH0、TL0或TH1、TL1,TMOD、TCON、IP、IE賦值。
4)中斷服務(wù)程序設(shè)計。下面以輸出方波和矩形波為例具體講解定時/計數(shù)器的應(yīng)用。4.4應(yīng)用定時/計數(shù)器輸出方波和矩形波
在實際應(yīng)用中,需要產(chǎn)生一定頻率的波形,在本書中,方波指占空比為50%的波形,矩形波指占空比可變的波形,本節(jié)主要講解方波的實現(xiàn)。對于方波的實現(xiàn),STC15系列單片機可以使用兩種方法實現(xiàn)。方法1是使用定時/計數(shù)器方式0或方式2的可編程分頻輸出實現(xiàn),但該方法輸出引腳固定,不適用傳統(tǒng)的MCS-51單片機;方法2是應(yīng)用定時/計數(shù)器的延時實現(xiàn),輸出引腳適用于所有I/O引腳,也適用傳統(tǒng)MCS-51單片機。1.可編程分頻輸出生成的方波
對于可編程分頻輸出生成的方波,本書以定時/計數(shù)器0方式0為例,講解相關(guān)應(yīng)用方法,其他定時器(如T1~T4)的使用方法,可參考相關(guān)書籍。
定時/計數(shù)器0方式0可編程分頻輸出方波的頻率:
1T模式,輸出時鐘頻率=(SYSclk)/(65536-[RL_TH0,RL_TL0])/2;
12T模式,輸出時鐘頻率=(SYSclk)/12/(65536-[RL_TH0,RL_TL0])/2。
圖4.6為輸出方波的圖形,周期為T,每延時2/T時間輸出翻轉(zhuǎn),方波的
圖4.6周期為T的方波周期T/2=(65536-[RL_TH0,RL_TL0])?機器周期;
輸出頻率f?2=1/((65536-[RL_TH0,RL_TL0])?機器周期);
1T模式,f=(SYSclk)/(65536-[RL_TH0,RL_TL0])/2;
12T模式,f=(SYSclk)/12/(65536-[RL_TH0,RL_TL0])/2。
由于定時/計數(shù)器是16位計數(shù)器,因此對于1T模式,輸出頻率范圍為SYSclk/(65536?2)~SYSclk/2;對于12T模式,輸出頻率范圍為SYSclk/(65536?24)~SYSclk/24?!纠?1】產(chǎn)生一個50Hz的方波,此方波由P3.5引腳輸出,晶振頻率為12MHz,12T模式。解題思路:輸出引腳P3.5為可編程分頻輸出引腳,方波頻率f=50Hz,在輸出頻率范圍之內(nèi),因此可以用可編程分頻輸出實現(xiàn)。編程步驟如下:(1)確定定時器初值:f=(SYSclk)/12/(65536-[RL_TH0,RL_TL0])/2,f=50Hz,SYSclk=12MHz65536-[RL_TH0,RL_TL0]=500000/50[RL_TH0,RL_TL0]=65536-10000;在C語言編程中,TL0為低8位,TL0=65536-10000;TH0為高8位,TH0=(65536-10000)>>8;(2)求T0的方式控制字TMOD:GATE=0,C/T=0,M1M0=00,可取方式控制字為TMOD=00H,即T0的方式0。(3)12T模式為默認模式(上電復(fù)位后的模式),可以不用設(shè)置。(4)INT_CLKO(AUXR2)寄存器設(shè)置。對于可編程分頻輸出,需要設(shè)置INT_CLKO(AUXR2)寄存器的D0為1,由于INT_CL?KO(AUXR2)寄存器不能位尋址,只能對字節(jié)賦值。方法1:直接對寄存器賦值,即INT_CLKO=0x1;但這種方法影響其他位的設(shè)置,因此需要對所有位都設(shè)置后統(tǒng)一賦值;方法2:使用與、和、或設(shè)置的方法,對某一位賦值,如果對n位置1,則INT_CLKO|=(1<<n);如果對n位清0,則INT_CLKO&=?。ǎ保迹迹睿?;本節(jié)中使用方法2實現(xiàn),INT_CLKO|=(1<<0);(5)啟動計數(shù)器。TR0=1;具體程序如下:2.延時實現(xiàn)方波使用延時實現(xiàn)方波,根據(jù)圖4.7,方波的周期為T,每延時2/T時間輸出翻轉(zhuǎn),實現(xiàn)周期為T的方波。該方法同時適合傳統(tǒng)MCS-51單片機。為了兼容傳統(tǒng)MCS-51單片機,實例使用定時/計數(shù)器0的方式1來實現(xiàn),即12T模式(注:如果采用STC15系列單片機,推薦使用方式0實現(xiàn))。在實際應(yīng)用中,中斷方式相較于查詢方式有更高的效率,因此采用中斷方式實現(xiàn)延時。【例4.2】產(chǎn)生一個100Hz的方波(使用定時/計數(shù)器0方式1),此方波由P1.0引腳輸出,晶振頻率為12MHz。解題思路:方波頻率f=100Hz,周期T=1/100s=0.01s,如果讓定時器計滿0.005s,P1.0輸出“0”,再計滿0.005s,P1.0輸出“1”,就能滿足要求,此題轉(zhuǎn)化為由定時器產(chǎn)生0.005s定時的問題。實現(xiàn)方法如下:(1)查詢方式:通過查詢T0的溢出標志TF0是否為“1”,判斷定時時間是否已到。當TF=1時,定時時間已到,對P1.0取反操作。其缺點是,CPU一直忙于查詢工作,占用了CPU的有效時間。(2)中斷方式:CPU正常執(zhí)行主程序,一旦定時時間到,TF0=1向CPU申請中斷,CPU響應(yīng)了T0的中斷,就執(zhí)行中斷程序,在中斷程序里對P1.0進行取反操作。
(2)中斷方式:思考:由于計數(shù)器是16位,延時時間有一定限制,如對于12MHz時鐘,在12T模式下,最大延時時間為65.536ms,那如果需要延時時間超過65.536ms,程序需要怎樣實現(xiàn)?思考:由于計數(shù)器是16位,延時時間有一定限制,如對于12MHz時鐘,在12T模式下,最大延時時間為65.536ms,那如果需要延時時間超過65.536ms,程序需要怎樣實現(xiàn)?4.4.2應(yīng)用定時/計數(shù)器輸出矩形波矩形波是占空比可變的波形,方波是特殊的矩形波,即占空比為50%的矩形波。對于矩形波,可以應(yīng)用計算值和比較值相比較的方法來實現(xiàn),具體實現(xiàn)可參考圖4.7。在圖4.7中,計數(shù)值和比較值相比較,當計數(shù)值小于比較值時,輸出為0,大于或等于比較值時,輸出為1(相反也可以)。最大計數(shù)值CNT?T決定了矩形波的頻率,比較值/計數(shù)值為矩形波的占空比,其中T為計一次數(shù)的時間,可以使用定時器中斷實現(xiàn),CNT決定了占空比的精度。由于計數(shù)和比較需要在定時器中斷中實現(xiàn),因此T最好至少要大于30個機器周期?!纠?3】利用定時/計數(shù)器(T0)的方式1,產(chǎn)生一個50Hz的矩形波,由P2.0引腳輸出,12T模式,占空比20%,占空比精度到1%,晶振頻率為12MHz。解題思路:由于占空比精度到1%,最大計數(shù)值CNT=100,矩形波頻率f=50Hz,周期T=1/50s=0.02s,T=100?t延時,t延時=0.02/100ms=0.2ms。程序定時器中斷延時時間0.2ms,進一次中斷,計數(shù)器加1,P2.0口初值為0,當計數(shù)值=比較值時,P2.0輸出為1,當計數(shù)值等于最大計數(shù)值時,P2.0輸出為0。
4.5LED數(shù)碼管的結(jié)構(gòu)和分類在單片機應(yīng)用系統(tǒng)中,鍵盤和顯示器是很關(guān)鍵的部件,是構(gòu)成人機對話的一種基本設(shè)備。鍵盤能向計算機輸入數(shù)據(jù)、傳送命令,是人工干預(yù)計算機的主要手段。顯示器則顯示控制過程或結(jié)果。本節(jié)講述顯示器的工作原理、LED顯示器的編碼顯示原理以及它們與單片機的接口技術(shù)。4.5.1顯示器及其接口顯示器是計算機的主要輸出設(shè)備,它把運算結(jié)果、程序清單等以字符的形式顯示出來,以供用戶查閱。目前常用的顯示器有數(shù)碼管顯示器(LED顯示器)、液晶顯示器(LCD顯示器)等。下面詳細介紹LED顯示器的結(jié)構(gòu)與工作原理:4.5LED數(shù)碼管的結(jié)構(gòu)和分類LED顯示器的結(jié)構(gòu)如圖4.8a所示,由8個發(fā)光二極管按“日”字形排列,其中7個發(fā)光二極管組成“日”字形的筆畫段,另一個發(fā)光二極管為圓點形狀,安裝在顯示器的右下角作為小數(shù)點使用,分別控制各筆畫段的LED,使其中的某些發(fā)亮,從而可以顯示出0~9的阿拉伯數(shù)字符號以及其他能由這些筆畫段構(gòu)成的各種字符。LED顯示器根據(jù)內(nèi)部結(jié)構(gòu)不同分為兩種,一種是把所有發(fā)光二極管的陽極連在一起,稱為共陽極數(shù)碼管,如圖4.8b所示;另一種是8個發(fā)光二極管的陰極連在一起,稱為共陰極數(shù)碼管,如圖4.8所示。當某一二極管導(dǎo)通時,相應(yīng)的字段發(fā)亮。這樣,若干個二極管導(dǎo)通,就構(gòu)成了一個字符。在共陰極數(shù)碼管中,導(dǎo)通的二極管用“1”表示,其余的用“0”表示。這些“1”“0”數(shù)符按一定的順序排列,就組成了所要顯示字符的顯示代碼。例如,對于共陰極數(shù)碼管來說,陽極排列順序為h、g、f、e、d、c、b、a。這樣,字符1的顯示代碼為00000110,字符F的顯示代碼為01110001,用十六進制表示分別為06H和71H。若要顯示某一個字符,就在二極管的陽極按顯示代碼加高電平,陰極加低電平即可。顯示七段碼表見表4.
3。
從前面的學(xué)習知道,單片機的P0~P3口具有輸入數(shù)據(jù)可以緩沖和輸出數(shù)據(jù)可以鎖存的功能,并且有一定的帶負載能力。但一般I/O接口芯片的驅(qū)動能力是很有限的。在LED顯示接口電路中,若輸出口所能提供的驅(qū)動電流或吸收電流不能滿足要求時,就需要增加LED驅(qū)動電路,特別是多段LED顯示器更是如此。有兩種形式的驅(qū)動電路:低電平有效驅(qū)動電路和高電平有效驅(qū)動電路。在低電平有效驅(qū)動電路中,當驅(qū)動管導(dǎo)通而使集電極處于低電平時,LED被正向?qū)ǘl(fā)光,驅(qū)動電路吸收LED工作電流。在高電平有效驅(qū)動電路中,當驅(qū)動管截止而使集電極處于高電平時,LED導(dǎo)通而發(fā)光,驅(qū)動電路為LED提供工作電流。驅(qū)動電路中的R為限流電阻,通常取數(shù)百歐。限流電阻R的計算公式如下:R=(????????????)/??_??式中,??_??為輸入信號電平;??_??為輸入端發(fā)光二極管的電壓降,通常是1.2~2.5V;??_????為驅(qū)動器的電壓降,通常是0.1~0.5V;??_??為發(fā)光二極管的工作電流,通常是2~10mA。在單片機應(yīng)用系統(tǒng)中,LED顯示器的顯示方法有兩種:靜態(tài)顯示法和動態(tài)掃描顯示法。
4.5.2數(shù)碼管的靜態(tài)顯示所謂靜態(tài)顯示,就是每一個顯示器各筆畫段都要獨占具有鎖存功能的輸出口線,CPU把要顯示的字形代碼送到輸出口上,就可以使顯示器顯示所需的數(shù)字或符號,此后,即使CPU不再去訪問它,因為各筆畫段接口具有鎖存功能,顯示的內(nèi)容也不會消失。靜態(tài)顯示法的優(yōu)點是顯示程序十分簡單,顯示亮度大,由于CPU不必經(jīng)常掃描顯示器,因此節(jié)約了CPU的工作時間。但靜態(tài)顯示也有其缺點,主要是占用的I/O接口線較多,硬件成本較高。所以靜態(tài)顯示法常用在顯示器數(shù)目較少的應(yīng)用系統(tǒng)中。LED采用靜態(tài)顯示與單片機接口時,共陰極或共陽極點連接在一起接地或接高電平。
每個顯示位的段選線與一個8位并行口線對應(yīng)相連,只要在顯示位上的段選線上保持段碼電平不變,則該位就能保持相應(yīng)的顯示字符。這里的8位并行口可以直接采用并行I/O接口芯片,也可以采用串入/并出的移位寄存器或者其他具有三態(tài)功能的鎖存器等。
考慮到若采用并行I/O接口,占用I/O資源較多,因此靜態(tài)顯示器接口中通常采用串行口,設(shè)置為方式0輸出方式,外接74HC595移位寄存器,構(gòu)成顯示器接口電路。下面介紹采用BCD/7段顯示譯碼驅(qū)動芯片構(gòu)成的靜態(tài)顯示接口電路,其特點是一個LED顯示器僅占4條I/O口線,當一個并行I/O接口經(jīng)過該譯碼顯示驅(qū)動器時,可以連接兩個LED顯示器。
常用的BCD數(shù)碼顯示譯碼驅(qū)動芯片有兩種類型,一種是適用于共陽極顯示器,如74LS47;另一種適用于共陰極顯示器,如74LS49。圖4.9是采用共陽極顯示器的靜態(tài)顯示器接口電路。單片機輸出控制信號由P2.0和WR合成,當二者同時為“0”時,或門輸出為0,將P0口數(shù)據(jù)鎖存到74LS273中,口地址為FEFFH。輸出線的低4位和高4位分別接BCD/7段顯示譯碼驅(qū)動器74LS47。74LS47能使顯示器顯示出由I/O接口送來的BCD碼數(shù)和某些符號。
具體顯示程序也非常簡單,如欲在兩個顯示器上顯示兩位十進制數(shù)35,僅需將該數(shù)送往顯示口地址即可。
【例4.4】在單片機最小系統(tǒng)的基礎(chǔ)上設(shè)計4位共陽數(shù)碼管顯示“1、2、3、4”。程序?qū)崿F(xiàn)如下:
動態(tài)掃描顯示法是單片機應(yīng)用系統(tǒng)中最常用的顯示方法之一。它是把所有顯示器的8個筆畫段a~h的各段同名端互相并接在一起,并把它們接到字段輸出接口上。為了防止各個顯示器同時顯示相同的數(shù)字,各個顯示器的公共端COM還要受控制信號控制,即把它們接到位輸出接口上。這樣,對于一組LED顯示器需要有兩組信號來控制,一組是字段輸出口輸出的字形代碼,用來控制顯示的字形,稱為段碼;另一組是輸出接口輸出的控制信號,來選擇第幾位顯示器工作,稱為位碼。在這兩組信號的控制下,可以一位一位地輪流點亮各個顯示器,顯示各自的數(shù)碼,以實現(xiàn)動態(tài)掃描顯示。
由于動態(tài)掃描方法要求每個數(shù)碼管顯示時間基本相同,每個數(shù)碼管顯示的內(nèi)容都是在中斷服務(wù)程序中實現(xiàn),中斷服務(wù)程序主要由以下程序組成:1)計數(shù)器重賦初值(對于自動重載方式,不需要)。2)在對應(yīng)數(shù)碼管顯示相應(yīng)的數(shù)值。3)計數(shù)值+1,當計數(shù)值=數(shù)碼管個數(shù)時,計算值回0。
4.5.4基于查表法動態(tài)顯示實例本節(jié)通過實例講解數(shù)碼管動態(tài)掃描編程方法,實例具體要求如下:1)對4位數(shù)碼管(共陽極)編程,實現(xiàn)從0000~9999十進制計數(shù)器,每計一次數(shù)時間為1s。2)4位數(shù)碼管與單片機的連接如圖4.10所示,該圖用Proteus軟件所畫,未考慮硬件的驅(qū)動能力,未加限流電阻和驅(qū)動元件,只用于驗證程序功能正確性。
對4位數(shù)碼管實現(xiàn)從0000~9999十進制計數(shù)器,1s延時和動態(tài)掃描的延時都需要使用定時器實現(xiàn),整個程序的實現(xiàn)框圖包括主程序框圖和中斷服務(wù)程序框圖。(1)主程序框圖計數(shù)器的主程序框圖如圖4.11所示,其實現(xiàn)過程如下:
1)定時器初始化,實現(xiàn)1ms的延時,使用定時/計數(shù)器0方式1實現(xiàn)。2)變量賦初值,計數(shù)變量清0,cnt1ms表示1ms計數(shù)一次,cnt是0~9999計數(shù)器變量,cntbit是表示數(shù)碼管個數(shù)的計數(shù)器,由于程序中使用4位數(shù)碼管,因此該變量實現(xiàn)四進制計數(shù)器,對應(yīng)4個數(shù)碼管。cnt和cnt1ms是unsignedint類型變量,cntbit為unsignedchar類型變量,三個變量可以定義時直接清0;顯示緩沖區(qū)賦初值,程序上電顯示0000。3)判斷計時是否到1s,到1s繼續(xù)執(zhí)行。4)cnt1ms清0。5)cnt計數(shù)器加1,并加到10000時回0。6)取cnt的個位、十位、百位和千位到顯示緩沖區(qū),以便在中斷服務(wù)程序中顯示。
(2)中斷服務(wù)程序框圖4位數(shù)碼管計數(shù)器的中斷服務(wù)程序框圖如圖4.12所示,其實現(xiàn)過程如下:1)重賦初值
(2)中斷服務(wù)程序框圖4位數(shù)碼管計數(shù)器的中斷服務(wù)程序框圖如圖4.12所示,其實現(xiàn)過程如下:1)重賦初值2)在對應(yīng)數(shù)碼管顯示相應(yīng)的數(shù)值,不同的計數(shù)值,表示相應(yīng)的數(shù)碼管亮,并顯示相應(yīng)的數(shù)值,如cntbit=0,表示第0個數(shù)碼管亮,顯示計數(shù)器的個位值,cntbit=1,表示第1個數(shù)碼管亮,顯示計數(shù)器的十位值,以此類推。程序?qū)崿F(xiàn)可以采用兩種方法。方法1:
使用switchcase語句,根據(jù)不同的cntbit值,對相應(yīng)的數(shù)碼管賦值,這種方法由于代碼量較大,運行時間長,不建議使用;方法2:采用查表法,設(shè)對應(yīng)數(shù)碼管的位碼和段碼,直接賦值,這種方法代碼量小,運行時間短,因此一般使用該方法實現(xiàn)。具體實現(xiàn)如下
3)四進制計數(shù)器,使用對4求余數(shù),實現(xiàn)四進制計數(shù)器。(3)程序清單
程序代碼如下:
3)四進制計數(shù)器,使用對4求余數(shù),實現(xiàn)四進制計數(shù)器。(3)程序清單
程序代碼如下:
3)四進制計數(shù)器,使用對4求余數(shù),實現(xiàn)四進制計數(shù)器。(3)程序清單
程序代碼如下:
4.6數(shù)字電子時鐘設(shè)計4.6.1項目功能描述設(shè)計數(shù)字電子時鐘,具有時、分、秒計數(shù)顯示功能,以24小時循環(huán)計時,并用數(shù)碼管顯示,具體要求如下:1)用8個數(shù)碼管實現(xiàn)數(shù)字電子鐘,其中6個用于實現(xiàn)時、分、秒顯示,2個數(shù)碼管顯示“-”。2)分鐘、秒為六十進制計數(shù),小時為二十四進制計數(shù)。3)8個數(shù)碼管用動態(tài)掃描方式連接。4)單片機使用STC15W4K32S4芯片。5)用CAD軟件(AltiumDesigner)繪制硬件原理圖,并根據(jù)原理圖繪制Proteus仿真電路圖,并用Proteus仿真。
4.6.1項目功能描述設(shè)計數(shù)字電子時鐘,具有時、分、秒計數(shù)顯示功能,以24小時循環(huán)計時,并用數(shù)碼管顯示,具體要求如下:1)用8個數(shù)碼管實現(xiàn)數(shù)字電子鐘,其中6個用于實現(xiàn)時、分、秒顯示,2個數(shù)碼管顯示“-”。2)分鐘、秒為六十進制計數(shù),小時為二十四進制計數(shù)。3)8個數(shù)碼管用動態(tài)掃描方式連接。4)單片機使用STC15W4K32S4芯片。5)用CAD軟件(AltiumDesigner)繪制硬件原理圖,并根據(jù)原理圖繪制Proteus仿真電路圖,并用Proteus仿真。
4.6.2項目硬件電路設(shè)計數(shù)字電子鐘的硬件由單片機電路、電源電路、復(fù)位電路、晶振電路、數(shù)碼管顯示電路及數(shù)碼管驅(qū)動電路組成,具體框圖如圖4.13所示。
4.數(shù)碼管顯示電驅(qū)動電路由于傳統(tǒng)51系列單片機的灌電流能力強,對數(shù)碼管的段選端一般為低電平有效,因此多位數(shù)碼管選擇共陽極數(shù)碼管,由于點亮一位數(shù)碼管的電流較大,一般超過40mA,需要加驅(qū)動電路,采用PNP晶體管驅(qū)動,具體電路如圖4.16所示。在Proteus仿真電路圖中,由于PNP晶體管仿真有問題,改用74HC04代替PNP晶體管。
數(shù)字電子鐘的整體電路圖及仿真圖分別如圖4.17和圖4.18所示。
1)定時器初始化,實現(xiàn)1ms的延時,使用定時/計數(shù)器0方式1實現(xiàn)。2)變量賦初值,顯示賦初值,計數(shù)變量清0,cnt1ms表示1ms一次計數(shù),sec、min、和hour分別表示秒、分鐘和小時計數(shù)器,cntbit是表示數(shù)碼管個數(shù)的計數(shù)器,由于程序中使用8位數(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自媒體短視頻制作(山西財貿(mào)職業(yè)技術(shù)學(xué)院)知到智慧樹答案
- 財務(wù)主管的領(lǐng)導(dǎo)能力提升計劃
- 人造崗石樹脂相關(guān)行業(yè)投資規(guī)劃報告
- 井下波速測量儀相關(guān)項目投資計劃書范本
- 秋季教育資源的優(yōu)化配置計劃
- 高中生素質(zhì)教育方案計劃
- 幼兒教師培訓(xùn)課件:幼兒素質(zhì)發(fā)展課程-美術(shù)活動中班
- 《小腸梗阻的診斷與治療中國專家共識(2023版)》解讀
- 博才中學(xué)《雨林的毀滅-世界性災(zāi)難》課件
- 《解破學(xué)生殖系統(tǒng)》課件
- YS/T 649-2007銅及銅合金擠制棒
- 長慶油田公司預(yù)防監(jiān)守自盜、內(nèi)勾外聯(lián)涉油違法犯罪專題法治講座
- 國家開放大學(xué)電大建筑制圖基礎(chǔ)機考網(wǎng)考試題庫及答案
- 職業(yè)生涯訪談活動范文優(yōu)選5篇
- 建筑工程變更單
- 以“政府績效與公眾信任”為主題撰寫一篇小論文6篇
- 2.1.1國外生態(tài)文明建設(shè)的發(fā)展歷程
- 餐廳服務(wù)員考核評分表
- 杭州灣跨海大橋項目融資方案
- 勞動最光榮六年級美術(shù)(課堂PPT)
- 天然藥物化學(xué)試題庫及答案(六套)
評論
0/150
提交評論