




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
模塊4定時器控制的報警燈設(shè)計4.1項(xiàng)目描述4.2項(xiàng)目目的與要求
4.3項(xiàng)目支撐知識鏈接4.4項(xiàng)目實(shí)施項(xiàng)目小結(jié)項(xiàng)目拓展技能與練習(xí)
【項(xiàng)目導(dǎo)入】
在單片機(jī)的應(yīng)用系統(tǒng)中,往往會遇到要求用定時器對某些控制系統(tǒng)進(jìn)行設(shè)計,例如定時檢測系統(tǒng)、定時掃描系統(tǒng)等。51系列單片機(jī)中設(shè)置有2個16位定時器/計數(shù)器,分別是T0和T1,要學(xué)會對定時器進(jìn)行編程,必須掌握這兩個定時器的工作方式和初值的計算。在此,我們通過一個項(xiàng)目設(shè)計,讓同學(xué)們掌握定時器/計數(shù)器在單片機(jī)控制技術(shù)中的使用。
【項(xiàng)目目標(biāo)】
1.知識目標(biāo)
(1)理解定時器/計數(shù)器的結(jié)構(gòu)和工作原理;
(2)理解寄存器TMOD、TCON、TH0、TL0、TH1、TL1的功能;
(3)掌握定時器/計數(shù)器的工作方式;
(4)掌握定時器的定時初值的計算。
2.能力目標(biāo)
(1)根據(jù)需要會選擇使用定時器/計數(shù)器的某種工作
方式;
(2)會計算定時器/計數(shù)器的初值;
(3)能熟練使用定時器/計數(shù)器;
(4)會運(yùn)用C51語言對應(yīng)用程序進(jìn)行編程。
4.1項(xiàng)目描述
單片機(jī)的定時器/計數(shù)器在工業(yè)控制與測量領(lǐng)域有著廣泛的應(yīng)用,比如定時檢測、定時計數(shù)及定時掃描等。本項(xiàng)目通過設(shè)計一個由定時器控制的報警旋轉(zhuǎn)燈,使學(xué)生掌握定時器/計數(shù)器的工作原理、工作方式和定時器/計數(shù)器的初值計算。
4.2項(xiàng)目目的與要求
本項(xiàng)目的目的就是設(shè)計一個由定時器控制的報警旋轉(zhuǎn)燈系統(tǒng)。通過控制P2口的8個LED燈,要求它們旋轉(zhuǎn)閃爍紅燈并發(fā)出報警聲。項(xiàng)目在實(shí)施過程中需要解決以下關(guān)鍵問題:
(1)與定時器/計數(shù)器相關(guān)的寄存器的各位的功能是怎
樣的;
(2)選擇哪種定時器,采用何種工作方式,如何計算定時初值;
(3)編寫延時程序;
(4)如何裝入初值。
4.3項(xiàng)目支撐知識鏈接
4.3.1定時器/計數(shù)器的結(jié)構(gòu)
1.定時器的結(jié)構(gòu)及工作原理
1)定時器/計數(shù)器組成框圖
89C51單片機(jī)內(nèi)部有兩個16位可編程定時器/計數(shù)器:定時器0(T0)和定時器1(T1)。其邏輯結(jié)構(gòu)如圖4-1所示。圖4-151單片機(jī)定時器/計數(shù)器的內(nèi)部結(jié)構(gòu)圖由圖4-1可知,定時器/計數(shù)器0、定時器/計數(shù)器1是16位加法計數(shù)器,分別由兩個8位專用寄存器組成:定時器0由TH0和TL0組成,定時器1由TH1和TL1組成。TL0、TL1、TH0、TH1的訪問地址依次為8AH~8DH,每個寄存器均可單獨(dú)訪問。定時器0或定時器1用作計數(shù)器時,對芯片引腳T0(P3.4)或T1(P3.5)上輸入的脈沖計數(shù),每輸入一個脈沖,加法計數(shù)器加1;其用作定時器時,對內(nèi)部機(jī)器周期脈沖計數(shù),由于機(jī)器周期是定值,故計數(shù)值確定時,時間也隨之確定。TMOD、TCON與定時器0、定時器1間通過內(nèi)部總線及邏輯電路連接,TMOD用于設(shè)置定時器的工作方式,TCON用于控制定時器的啟動與停止。
2)定時器/計數(shù)器工作原理
當(dāng)定時器/計數(shù)器設(shè)置為定時工作方式時,計數(shù)器對內(nèi)部機(jī)器周期計數(shù),每過一個機(jī)器周期,計數(shù)器增1,直至計滿溢出。定時器的定時時間與系統(tǒng)的振蕩頻率緊密相關(guān),C51單片機(jī)的一個機(jī)器周期由12個振蕩脈沖組成。當(dāng)采用12MHz晶振時,一個機(jī)器周期為1μs,計數(shù)頻率為1MHz。因此,適當(dāng)選擇定時器的初值可獲取各種定時時間。當(dāng)定時器/計數(shù)器設(shè)置為計數(shù)工作方式時,計數(shù)器對來自輸入引腳T0(P3.4)和T1(P3.5)的外部信號計數(shù),外部脈沖的下降沿將觸發(fā)計數(shù)。在每個機(jī)器周期的S5P2期間采樣引腳輸入電平,若前一個機(jī)器周期采樣值為1,后一個機(jī)器周期采樣值為0,則計數(shù)器加1。新的計數(shù)值是在檢測到輸入引腳電平發(fā)生1到0的負(fù)跳變后,與下一個機(jī)器周期的S3P1期間裝入計數(shù)器中的。可見,檢測一個由1到0的負(fù)跳變,需要兩個機(jī)器周期。所以,最高檢測頻率為振蕩頻率的1/24。計數(shù)器對外部輸入信號的占空比沒有特別的限制,但必須保證輸入信號的高電平與低電平的持續(xù)時間在一個機(jī)器周期以上。當(dāng)設(shè)置了定時器的工作方式并啟動定時器工作后,定時器就按被設(shè)定的工作方式獨(dú)立工作,不再占用CPU的操作時間,只有在計數(shù)器計滿溢出時,才可能中斷CPU當(dāng)前的操作。
2.定時器/計數(shù)器的相關(guān)寄存器
如上所述,要使定時器/計數(shù)器按要求工作,得到所需的定時時間或計數(shù)值,必須通過編程進(jìn)行控制才能實(shí)現(xiàn)。通過對工作方式控制寄存器(TMOD)和定時器/計數(shù)器控制寄存器(TCON)的設(shè)置即可實(shí)現(xiàn)對定時器/計數(shù)器的控制。
51單片機(jī)的定時器/計數(shù)器(T0、T1)主要由工作方式寄存器TMOD和控制寄存器TCON等組成??梢酝ㄟ^軟件對這些寄存器進(jìn)行設(shè)置來實(shí)現(xiàn)不同的控制目的。其中,TH0和TL0用來存放定時器T0的計數(shù)初值,TMOD用來控制定時器的工作方式,TCON用作中斷溢出標(biāo)志并控制定時器的啟、停。
1)工作方式寄存器TMOD
特殊功能寄存器TMOD用于控制T0和T1的工作方式,低4位用于控制T0,高4位用于控制T1。TMOD的地址為89H,其各位狀態(tài)只能通過CPU的字節(jié)傳送指令來設(shè)定,而不能用位尋址指令改變,復(fù)位時各位狀態(tài)為0,其各位的定義如下:其中,低4位用于T0,高4位用于T1,它們的含義是完全相同的。TMOD各位的功能如下:
M1和M0:操作方式控制位。兩位可形成四種編程,對應(yīng)于四種操作方式,如表4-1所示。
C/:功能選擇位。當(dāng)C/為0時,選擇定時方式。在定時方式中,以振蕩器輸出時鐘脈沖的12分頻信號作為計數(shù)信號,也就是每一個機(jī)器周期定時器加1。若晶振頻率為
12MHz,則定時器的計數(shù)頻率為1MHz;當(dāng)C/為1時,選擇計數(shù)方式,采用外部引腳T0(P3.4)、T1(P3.5)的輸入脈沖作為計數(shù)脈沖,當(dāng)外部輸入脈沖發(fā)生1到0的負(fù)跳變時,計數(shù)器加1,最高計數(shù)頻率為時鐘頻率的1/24。
GATE:門控位。GATE為0時,允許軟件控制位TR0或TR1啟動定時器;當(dāng)GATE為1時,允許外部中斷引腳
(或)為高電平且由軟件使TR0(或TR1)置1,才能啟動定時器工作。TMOD不能進(jìn)行位尋址,只能用字節(jié)指令設(shè)置定時器工作方式,復(fù)位時,TMOD所有位均為零。
2)控制寄存器TCON
TCON是一個8位寄存器,用于控制定時器的啟動/停止以及標(biāo)志定時器的溢出中斷申請。TCON的地址為88H,既可進(jìn)行字節(jié)尋址,又可進(jìn)行位尋址,復(fù)位時所有位被清零。TR0和TR1分別用于控制T0和T1的啟動與停止,TF0和TF1用于標(biāo)志T0和T1是否產(chǎn)生了溢出中斷請求??刂萍拇嫫鱐CON的高4位是定時器運(yùn)行的控制位和溢出標(biāo)志位,低4位是外部中斷的中斷標(biāo)志和中斷觸發(fā)方式控制位。TCON各位定義及格式如圖4-2所示。圖4-2控制寄存器TCON的位定義
TF1:T1的溢出標(biāo)志位。當(dāng)T1溢出時,由硬件自動使中斷觸發(fā)器TF1置1,并向CPU申請中斷,當(dāng)CPU響應(yīng)中斷進(jìn)入中斷服務(wù)程序后,TF1又被硬件自動清零,TF1也可以由軟件清零。
TF0:T0溢出標(biāo)志位。其功能和操作與TF1相同。
TR1:定時器T1運(yùn)行控制位,可通過軟件置1或清0來啟動或關(guān)閉T1。例如,SETBTR1,即啟動T1;CLRTR1,則關(guān)閉T1。
TR0:定時器T0運(yùn)行控制位。其功能及操作同TR1。
IE1,IT1,IE0,IT0:外部中斷、請求及請求方式控制位。其定義前面已經(jīng)講過。
定時器/計數(shù)器T0和T1是在TMOD和TCON的聯(lián)合控制下進(jìn)行定時或計數(shù)工作的,其輸入時鐘和控制邏輯可用圖
4-3綜合表示。圖4-3T0和T1輸入時鐘與控制邏輯圖
3)定時器/計數(shù)器的初始化
由于定時器/計數(shù)器的功能是由軟件編程確定的,所以,一般在使用定時器/計數(shù)器前都要對其進(jìn)行初始化。初始化步驟如下:
(1)確定工作方式:對TMOD賦值。賦值語句為TMOD=0x00,設(shè)定T0為方式0定時。
(2)預(yù)置定時或計數(shù)的初值:直接將初值寫入TH0、TL0或TH1、TL1,注意定時器/計數(shù)器的初值因工作方式的不同而不同。
(3)根據(jù)需要開啟定時器/計數(shù)器中斷:直接對IE寄存器賦值。
(4)啟動定時器/計數(shù)器工作:將TR0或TR1置“1”。
當(dāng)GATE=0時,直接由軟件置位啟動;當(dāng)GATE=1時,除軟件置位外,還必須在外中斷引腳處加上相應(yīng)的電平值才能啟動。
至此為止,定時器/計數(shù)器的初始化過程已完畢。4.3.2定時器/計數(shù)器的工作方式
51單片機(jī)定時器/計數(shù)器T0有4種工作方式(方式0、1、2、3),T1有3種工作方式(方式0、1、2)。前3種工作方式,T0和T1除了所使用的寄存器、有關(guān)控制位、標(biāo)志位不同外,其他操作完全相同。為了簡化敘述,下面以定時器/計數(shù)器0為例進(jìn)行介紹。
1.工作方式0
當(dāng)TMOD的M1M0為00時,定時器/計數(shù)器工作于方式0,如圖4-4所示。方式0為13位計數(shù),由TL0的低5位(高3位未用)和TH0的高8位組成。由圖4-4可知:16位加法計數(shù)器(TH0和TL0)只用了13位。其中,TH0占高8位,TL0占低5位。當(dāng)TL0低5位溢出時自動向TH0進(jìn)位,而TH0溢出時向中斷位TF0進(jìn)位(硬件自動置位),并申請中斷。圖4-4定時器0在方式0時的邏輯電路結(jié)構(gòu)當(dāng)C/
=0時,T0選擇為定時器模式,對CPU內(nèi)部機(jī)器周期加1計數(shù),其定時時間為T=(213-T0初值)×機(jī)器周
期。如果晶振頻率為12MHz,則時鐘周期為1/12μs,當(dāng)
初值為0時,最長的定時時間為TMAX=(213-0)×1/12×
12μs=8.192ms。
當(dāng)C/=?1時,控制開關(guān)與引腳T0(P3.4)接通,計數(shù)器T0對來自外部引腳T0的輸入脈沖計數(shù),當(dāng)外部信號電平發(fā)生由1到0的跳變時,計數(shù)器加1,這時T0成為外部事件計
數(shù)器。當(dāng)GATE?=?0時,或門輸出恒為1,使外部中斷輸入引腳信號失效,同時又打開與門,由TR0控制定時器T0的開啟和關(guān)斷。若TR0?=?1,接通控制開關(guān),啟動定時器T0工作,計數(shù)器被控制為允許計數(shù)。若TR0=0,則斷開控制開關(guān),停止計數(shù)。
當(dāng)GATE=1時,與門的輸出由的輸入電平和TR0位的狀態(tài)來確定。若TR0?=?1,則打開與門,外部信號電平通過引腳直接開啟或關(guān)斷定時器T0。當(dāng)為高電平時,允許計數(shù),否則停止計數(shù)。這種工作方式可用來測量外部信號的脈沖寬度等。
2.工作方式1
當(dāng)M1M0為01時,定時器/計數(shù)器工作在方式1,其電路結(jié)構(gòu)和操作方法與方式0基本相同,它們的差別僅在于計數(shù)的位數(shù)不同,如圖4-5所示。圖4-5定時器0在方式1時的邏輯電路結(jié)構(gòu)由圖4-5可知,方式1構(gòu)成一個16位定時器/計數(shù)器,其結(jié)構(gòu)與操作幾乎完全與方式0相同,唯一差別是二者計數(shù)位數(shù)不同。作定時器用時其定時時間為(216-定時器0初值)×機(jī)器周期;作計數(shù)用時其計數(shù)值為216-計數(shù)初值,計數(shù)范圍為1~65536(216)。
3.工作方式2
當(dāng)TMOD的M1M0為10時,定時器/計數(shù)器工作在方式2,其邏輯結(jié)構(gòu)如圖4-6所示。圖4-6T0方式2的邏輯結(jié)構(gòu)方式2為自動重裝初值的8位計數(shù)方式,僅用TL0計數(shù),最大計數(shù)值為28=256,計滿溢出后,一方面進(jìn)位TF0,使溢出標(biāo)志TF0=1,另一方面,使原來裝在TH0中的初值裝入TL0。
方式2的優(yōu)點(diǎn)是定時初值可自動恢復(fù),TH0中存放初值;缺點(diǎn)是計數(shù)范圍小,只適用于需要重復(fù)定時,而定時范圍不大的應(yīng)用場合。計數(shù)個數(shù)與計數(shù)初值的關(guān)系為X=28-N??梢?,計數(shù)個數(shù)為1時,初值為255,計數(shù)個數(shù)為256時,初值X為0,即初值在255~0范圍時,計數(shù)范圍為1~256。由于工作方式2省去了用戶軟件中重裝常數(shù)的程序,所以特別適于用作較精確的脈沖信號發(fā)生器。方式2中,16位加法計數(shù)器的TH0和TL0具有不同功能。其中,TL0是8位計數(shù)器,TH0是重置初值的8位緩沖器。
4.方式3
定時器/計數(shù)器T0和T1在前三種工作方式下,其功能是完全相同的,但在方式3下,T0與T1的功能相差很大。當(dāng)T1設(shè)置為方式3時,它將保持初始值不變,并停止計數(shù),其狀態(tài)相當(dāng)于將啟/??刂莆辉O(shè)置成TR1=0,因而T1不能工作在方式3下。當(dāng)將T0設(shè)置為方式3時,T0的兩個寄存器TH0和TL0被分成兩個互相獨(dú)立的8位計數(shù)器,其邏輯結(jié)構(gòu)如圖4-7所示。圖4-7方式3的邏輯結(jié)構(gòu)由圖4-7可知,在方式3下,定時器0被分解成兩個獨(dú)立的8位計數(shù)器TL0和TH0。其中,TL0占用原定時器0的控制位、引腳和中斷源,即GATE、TR0、TF0和T0(P3.4)引腳和外部中斷0(P3.2引腳)。除計數(shù)位數(shù)不同于方式0、方式1外,其功能、操作與方式0、方式1完全相同,可定時,亦可計數(shù)。TH0占用原定時器1的控制位TF1和TR1,同時還占用了定時器1的中斷源,其啟動和關(guān)閉僅受TR1置1或清0控制。TH0只能對機(jī)器周期進(jìn)行計數(shù),因此,TH0只能用作簡單的內(nèi)部定時,不能用作對外部脈沖進(jìn)行計數(shù),是定時器0附加的一個8位定時器。4.3.3定時器/計數(shù)器應(yīng)用舉例
51單片機(jī)的計數(shù)器是可編程的。因此,在利用定時器/計數(shù)器進(jìn)行定時或計數(shù)之前,先要通過軟件對它進(jìn)行初始化。其初始化應(yīng)完成的工作如下:
(1)對TMOD賦值,以確定T0和T1的工作方式。
(2)計算初值,并將其寫入TH0、TL0或TH1、TL1。
(3)設(shè)置IE、IP來規(guī)定中斷的開放/禁止和優(yōu)先級。
(4)使TR0或TR1置位,啟動定時器/計數(shù)器開始定時或計數(shù)。
1.方式0的應(yīng)用
【例4-1】利用定時器T0的方式0定時由P1.0輸出頻率為500Hz的方波,設(shè)單片機(jī)晶振頻率為12MHz。
分析:選用定時器/計數(shù)器T0作定時器,輸出為P1.0引腳,500Hz的方波可由間隔1ms的高低電平相間而形成,
因而只要每隔1ms對P1.0取反一次即可得到這個方波。
定時1ms的初值:因?yàn)镃程序清單如下:
#include<reg.51.h> //頭文件
main()
{TMOD=0x00; //設(shè)T0為方式0
TH0=0xe0; //設(shè)定1ms的定時初值
TL0=0x18;
TR0=1; //啟動T0
While(1)
{while(!TF0); //等待定時器溢出
TF0=0; //清除溢出標(biāo)志
P1_0=!P1_0; //取反
TH0=0xe0; //重裝初值
TL0=0x18;
}
}
2.方式1的應(yīng)用
方式1與方式0基本相同,只是方式1改用了16位計數(shù)器。當(dāng)要求定時周期較長時,13位計數(shù)器不夠用,可改用16位計數(shù)器。
【例4-2】利用定時器0產(chǎn)生10Hz的方波,由P1.0口輸出,設(shè)單片機(jī)晶振頻率為12MHz。分析:10Hz的方波,周期為100ms,定時時間為
50ms,也就是每50ms電平就取反一次,12MHz的機(jī)器周期為1μs,初值T0=(216-t)/T=(65536-50000)/1=0x3cb0,則TH0=0x3c,TL0=0xb0。
C語言的源程序如下:
#include<reg.51.h> //頭文件
main()
{TMOD=0x01;
//設(shè)T0為方式1
TH0=0x3c; //設(shè)定1ms的定時初值
TL0=0xb0;TR0=1; //啟動T0
While(1)
{while(!TF0); //等待定時器溢出
TF0=0; //清除溢出標(biāo)志
P1_0=!P1_0; //取反
TH0=0x3c; //重裝初值
TL0=0xb0;
}
}
3.方式2的應(yīng)用
方式2是定時器自動重裝載的操作方式。在這種方式下,定時器0和1的工作是相同的,它的工作過程與方式0、方式1基本相同,只不過在溢出的同時,將8位二進(jìn)制初值自動重裝載,即在中斷服務(wù)子程序中,不需要再進(jìn)行重新送初值。定時器T1工作在方式2時,可直接用作串行口波特率發(fā)生器。
【例4-3】設(shè)計用定時器T0控制4個LED滾動閃爍,要求閃爍時間為200μs,硬件電路如圖4-8所示。圖4-8T0控制LED燈閃爍分析:
利用T0的方式2定時,根據(jù)要求時間延時為200μs,
則初值計算為28-200=0x38,TMOD的低四位是針對T0
進(jìn)行設(shè)置的,由于T0工作在方式2作為定時使用,因此M1M0=10,C/=0,于是可得TMOD=0x02。
C51語言源程序?yàn)?/p>
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitB1=P0^0;
sbitG1=P0^1;
sbitR1=P0^2;
sbitY1=P0^3;
uinti,j,k;
//主程序
voidmain()
{
i=j=k=0;
P0=0xff;
TMOD=0x02; //定時器0工作方式2
TH0=256-200; //?200μs定時
TL0=256-200;
IE=0x82; //開中斷
TR0=1; //啟動定時器
while(1);
}//T0中斷函數(shù)
voidLED_Flash_and_Scroll()interrupt1
{
if(++k<35) return; //定時中斷若干次后執(zhí)行閃爍
k=0;
switch(i)
{ case0: B1=~B1;break;
case1: G1=~G1;break;
case2: R1=~R1;break;
case3: Y1=~Y1;break;
default:i=0; }
if(++j<300)return; //每次閃爍持續(xù)一段時間
j=0;
P0=0xff; //關(guān)閉顯示
i++; //切換到下一個LED
}
4.方式3的應(yīng)用
定時器/計數(shù)器工作在方式3只適用T0,在方式3下T0是2個8位定時器/計數(shù)器,且TH0借用了定時器T1的溢出中斷標(biāo)志TF1和運(yùn)行控制位TR1。此方式使用較少,此處不再舉例。
5.中斷與定時器/計數(shù)器的綜合應(yīng)用
定時/計數(shù)功能與中斷一樣,都是單片機(jī)的常用功能。兩者經(jīng)常同時在一起使用,因此在單片機(jī)的中斷、定時綜合應(yīng)用實(shí)例的程序編制過程中,要注意以下幾點(diǎn):
(1)選擇合適的中斷和定時/計數(shù)方式。例如,外部中斷是采用電平觸發(fā)還是脈沖下降沿觸發(fā),定時/計數(shù)是采用自動重裝方式還是每次定時結(jié)束后用軟件重裝。
(2)確定定時結(jié)束的判別方式,是用中斷還是查詢。如果采用中斷,與其他中斷的優(yōu)先級如何確定,是否會影響系統(tǒng)的功能。
(3)正確初始化和合理分配控制功能。
【例4-4】用計數(shù)器中斷實(shí)現(xiàn)100以內(nèi)的按鍵計數(shù),要求用T0計數(shù)器,中斷實(shí)現(xiàn)按鍵計數(shù)。
分析:由于計數(shù)寄存器初值為1,因此P3.4引腳的每次負(fù)跳變都會觸發(fā)T0中斷,實(shí)現(xiàn)計數(shù)值累加。計數(shù)器的清零用外部中斷0控制。電路圖如圖4-9所示。圖4-9按鍵計數(shù)電路圖C51語言源程序如下:
#include<reg51.h>
#defineucharunsignedchar
#defineuintunsignedint
//段碼
ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
ucharCount=0;
//主程序
voidmain(){
P0=0x00;
P2=0x00;
TMOD=0x06; //計數(shù)器T0方式2
TH0=TL0=256-1; //計數(shù)值為1
ET0=1; //允許T0中斷
EX0=1; //允許INT0中斷
EA=1; //允許CPU中斷
IP=0x02; //設(shè)置優(yōu)先級,T0高于INT0
IT0=1; //?INT0中斷觸發(fā)方式為下降沿觸發(fā)
TR0=1; //啟動T0
while(1)
{ P0=DSY_CODE[Count/10];
P2=DSY_CODE[Count%10];
}
}
//T0計數(shù)器中斷函數(shù)
voidKey_Counter()interrupt1
{
Count=(Count+1)%100; //因?yàn)橹挥袃晌粩?shù)碼管,所以計數(shù)控制在100以內(nèi)(00~99)
}
//INT0中斷函數(shù)
voidClear_Counter()interrupt0
{
Count=0;
}
4.4項(xiàng)目實(shí)施
4.4.1項(xiàng)目硬件設(shè)計
該控制系統(tǒng)結(jié)構(gòu)比較簡單,其硬件電路模塊包括電源電路、時鐘電路、按鍵復(fù)位電路和LED燈接口電路,硬件原理圖如圖4-10所示。圖4-10定時器控制的報警燈設(shè)計電路圖4.4.2項(xiàng)目軟件設(shè)計
由硬件電路可知,要實(shí)現(xiàn)報警燈旋轉(zhuǎn)閃爍紅燈,必須要求P2口依次輸出高電平;在程序設(shè)計中需要開啟兩個定時器,即T0和T1,用定時器T0產(chǎn)生報警響聲,用定時器T1實(shí)現(xiàn)紅燈的旋轉(zhuǎn)。報警開關(guān)的實(shí)現(xiàn)是通過按下按鈕產(chǎn)生的外部中斷0信號形成的,當(dāng)按下按鍵時,最高級別的中斷就產(chǎn)生了(=0,中斷發(fā)生),于是紅燈旋轉(zhuǎn)和報警聲同時產(chǎn)生。把系統(tǒng)要實(shí)現(xiàn)的功能搞清楚后,就可以編寫程序了。編寫程序的具體思路如圖4-11所示。圖4-11定時器控制的報警旋轉(zhuǎn)燈設(shè)計流程圖根據(jù)程序流程圖,寫出單片機(jī)C51語言程序如下:
/*****報警與旋轉(zhuǎn)燈說明:定時器控制報警燈旋轉(zhuǎn)顯示,并發(fā)出仿真警報聲******/
#include<reg51.h>
#include<intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitSPK=P3^7;
ucharFRQ=0x00;
//延時
voidDelayMS(uintms){
uchari;
while(ms--)for(i=0;i<120;i++);
}
//INT0中斷函數(shù)
voidEX0_INT()interrupt0
{
TR0=~TR0; //開啟或停止兩定時器,分別控制報警器的聲音和LED旋轉(zhuǎn)
TR1=~TR1; if(P2==0x00)
P2=0xe0; //開3個旋轉(zhuǎn)燈
else
P2=0x00; //關(guān)閉所有LED
}
//定時器0中斷
voidT0_INT()interrupt1
{
TH0=0xfe;
TL0=FRQ;
SPK=~SPK;
}//定時器1中斷
voidT1_INT()interrupt3
{
TH1=-45000/256;
TL1=-45000%256;
P2=_crol_(P2,1);
}
//主程序
voidmain(){
P2=0x00;
SPK=0x00;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小型裝飾施工合同范本
- 印刷標(biāo)牌制作合同范本
- 修路工程土建合同范本
- 賣家汽車租賃合同范本
- 配電設(shè)備制作合同范本
- 合同范本模板小學(xué)生
- 化學(xué)藥劑合同范本
- 合伙協(xié)議合同范本多人
- 景區(qū)承接團(tuán)隊(duì)合同范本
- d代加工合同范本
- 教育專家報告合集:年度得到:沈祖蕓全球教育報告(2023-2024)
- 兒童尿道黏膜脫垂介紹演示培訓(xùn)課件
- 下肢骨關(guān)節(jié)損傷課件
- 2023發(fā)電企業(yè)防汛工作管理辦法
- 食品安全風(fēng)險評估的課件
- 復(fù)方板藍(lán)根顆粒工藝驗(yàn)證方案大全
- 信息技術(shù)拓展模塊高職PPT完整全套教學(xué)課件
- 《動物王國開大會》說課PPT
- 春玉米套種秋黃瓜技術(shù)
- QC成果提高工業(yè)廠房基礎(chǔ)預(yù)埋地腳螺栓的精確度
- 四年級下冊勞動技術(shù)教案
評論
0/150
提交評論