




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)系統(tǒng)設(shè)計(jì)與制作項(xiàng)目4秒表的設(shè)計(jì)與制作目錄
知識(shí)鏈接任務(wù)實(shí)施一、任務(wù)分析二、安裝與調(diào)試一、定時(shí)器/計(jì)數(shù)器的基本概念及其應(yīng)用目錄
知識(shí)鏈接任務(wù)實(shí)施一、任務(wù)分析二、安裝與調(diào)試一、定時(shí)器/計(jì)數(shù)器的基本概念及其應(yīng)用1、作用和功能進(jìn)行精確地定時(shí)和計(jì)數(shù)。定時(shí)器:?jiǎn)纹瑱C(jī)內(nèi)部穩(wěn)定的信號(hào)源計(jì)數(shù)。計(jì)數(shù)器:用于記錄單片機(jī)外部發(fā)生的事件。作用廣泛應(yīng)用于工業(yè)控制和檢測(cè)中,可實(shí)現(xiàn)定時(shí)、延時(shí)、頻率測(cè)量、信號(hào)檢測(cè)等功能。功能2、內(nèi)部結(jié)構(gòu)及工作原理MCS-51單片機(jī)內(nèi)部有兩個(gè)16位的可編程定時(shí)器/計(jì)數(shù)器T0(定時(shí)器0)和T1(定時(shí)器1),分別由兩個(gè)8位的RAM單元組成,最大計(jì)數(shù)值為65536,超過(guò)65536時(shí),定時(shí)器/計(jì)數(shù)器產(chǎn)生溢出。內(nèi)部結(jié)構(gòu)加法計(jì)數(shù)器TMODTCON定時(shí)器/計(jì)數(shù)器控制寄存器,控制T0、T1的啟動(dòng)和停止及設(shè)置溢出標(biāo)志。定時(shí)器/計(jì)數(shù)器工作方式寄存器,確定工作方式和功能。16位,高8位和低8位組成。2、內(nèi)部結(jié)構(gòu)及工作原理圖5.1
T0、T1內(nèi)部結(jié)構(gòu)示意圖TL02、內(nèi)部結(jié)構(gòu)及工作原理TH010000000000000001111111111111111TF0011設(shè)定初值2啟動(dòng)計(jì)數(shù)送入計(jì)數(shù)脈沖3計(jì)數(shù)溢出產(chǎn)生中斷信號(hào)2、內(nèi)部結(jié)構(gòu)及工作原理定時(shí)工作方式時(shí),計(jì)數(shù)脈沖來(lái)自系統(tǒng)時(shí)鐘振蕩器輸出十二分頻信號(hào)。計(jì)數(shù)周期即為單片機(jī)的一個(gè)機(jī)器周期。調(diào)整計(jì)數(shù)器初值,即調(diào)整了定時(shí)時(shí)間。定時(shí)工作方式2、內(nèi)部結(jié)構(gòu)及工作原理相關(guān)數(shù)值計(jì)算計(jì)數(shù)值N=溢出值(最大計(jì)數(shù)值)-計(jì)數(shù)初值X定時(shí)時(shí)間τ=機(jī)器周期T×計(jì)數(shù)值N計(jì)數(shù)頻率?c=時(shí)鐘頻率?osc/122n(溢出值)2n-1(全1)……計(jì)數(shù)初值X……0計(jì)數(shù)值N例?osc=12MHz時(shí),T=1/[12×106×(1/12)]=1μs若計(jì)數(shù)值為N,則定時(shí)Nμs。(計(jì)數(shù)值N=定時(shí)時(shí)間τ/機(jī)器周期T)2、內(nèi)部結(jié)構(gòu)及工作原理計(jì)數(shù)工作方式時(shí),計(jì)數(shù)脈沖來(lái)自輸入引腳T0(P3.4)和T1(P3.5)的外部信號(hào),外部脈沖的下降沿觸發(fā)計(jì)數(shù),計(jì)數(shù)器加1。CPU能夠檢測(cè)到的外部脈沖的最高頻率為系統(tǒng)時(shí)鐘頻率的1/24。外部輸入信號(hào)的高電平與低電平的持續(xù)時(shí)間須在一個(gè)機(jī)器周期以上。計(jì)數(shù)工作方式3、定時(shí)器/計(jì)數(shù)器的控制寄存器位D7D6D5D4D3D2D1D0TMODGATEC/TM1M0GATEC/TM1M089H定時(shí)器T1方式字段定時(shí)器T0方式字段表5.2
TMOD位格式定義TMOD(Timer/CounterModeControlRegister)定時(shí)器工作方式寄存器。用于控制T0和T1的工作方式,低4位用于T0,高4位用于T1。TMOD其位格式定義如表5.2所示。(1)TMOD3、定時(shí)器/計(jì)數(shù)器的控制寄存器位D7D6D5D4D3D2D1D0TMODGATEC/TM1M0GATEC/TM1M089H定時(shí)器T1方式字段定時(shí)器T0方式字段GATE:選通控制位。GATE=0,軟件對(duì)TR0(或TR1)置1時(shí)可啟動(dòng)定時(shí)器。GATE=1,在INT0(或INT1)引腳為1,且軟件對(duì)TR0(或TR1)置1時(shí)啟動(dòng)定時(shí)器工作。C/T:定時(shí)器/計(jì)數(shù)器方式選擇位。C/T=0,定時(shí)工作方式;C/T=1,計(jì)數(shù)工作方式。M1、M0:工作方式控制位,可構(gòu)成4種工作方式。注意:TMOD所有位復(fù)位后清零。TMOD不能位尋址,只能以字節(jié)方式工作。3、定時(shí)器/計(jì)數(shù)器的控制寄存器M1M0工作方式說(shuō)明最大計(jì)數(shù)值00013位定時(shí)器/計(jì)數(shù)器213=819201116位定時(shí)器/計(jì)數(shù)器216=65536102自動(dòng)重裝初值8位定時(shí)器/計(jì)數(shù)器28=256113T0:分成兩個(gè)8位計(jì)數(shù)器T1:停止計(jì)數(shù)28=256表5.3工作方式選擇3、定時(shí)器/計(jì)數(shù)器的控制寄存器與定時(shí)器計(jì)數(shù)器相關(guān)的是TCON的高四位,TF1、TF0為溢出中斷標(biāo)志位,TR1、TR0為定時(shí)器/計(jì)數(shù)器運(yùn)行控制位。請(qǐng)復(fù)習(xí)任務(wù)4相關(guān)內(nèi)容(見(jiàn)教材P74)。(2)TMOD位D7D6D5D4D3D2D1D0TCONTF1TR1TF0TR0IE1IT1IE0IT088H8FH8EH8DH8CH8BH8AH89H88H表4.2TCON位格式定義4、定時(shí)器/計(jì)數(shù)器的工作方式用戶通過(guò)指令把工作方式寫(xiě)入TMOD,選擇定時(shí)器/計(jì)數(shù)器的功能和工作方式,然后將計(jì)數(shù)初值寫(xiě)入THx和TLx中控制定時(shí)或計(jì)數(shù)長(zhǎng)度,再通過(guò)選通控制位的置1或清0來(lái)啟動(dòng)或停止定時(shí)器/計(jì)數(shù)器工作。查詢TH、TL和TCON的內(nèi)容,可以判斷定時(shí)器的狀態(tài)。4、定時(shí)器/計(jì)數(shù)器的工作方式
(1)工作方式0TLx———×××××THx××××××××13位計(jì)數(shù)器,由TLx的低5位(高3位未用)和THx的8位組成。213=8192最大計(jì)數(shù)值1~8192計(jì)數(shù)范圍1~8192μs(fosc=12MHz)定時(shí)范圍4、定時(shí)器/計(jì)數(shù)器的工作方式
(2)工作方式1TLx××××××××THx××××××××16位計(jì)數(shù)器,由TLx的8位和THx的8位組成。216=65536最大計(jì)數(shù)值1~65536計(jì)數(shù)范圍1~65536μs(fosc=12MHz)定時(shí)范圍4、定時(shí)器/計(jì)數(shù)器的工作方式
(3)工作方式2TLx××××××××THx××××××××可自動(dòng)重裝初值的8位計(jì)數(shù)器,僅TLx用于計(jì)數(shù),THx用于保存計(jì)數(shù)初值。28=256最大計(jì)數(shù)值1~256計(jì)數(shù)范圍1~256μs(fosc=12MHz)定時(shí)范圍4、定時(shí)器/計(jì)數(shù)器的工作方式
(3)工作方式3TL0××××××××TH0××××××××定時(shí)器T0被分解成兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0,兩個(gè)定時(shí)器的最大計(jì)數(shù)值均為256。此時(shí),定時(shí)器T1的中斷標(biāo)志位TF1和運(yùn)行控制位TR1被TH0占用,不能中斷,只能將溢出送給串行口。T1不能使用工作方式3。28=256最大計(jì)數(shù)值1~256計(jì)數(shù)范圍1~256μs(fosc=12MHz)定時(shí)范圍5、定時(shí)器/計(jì)數(shù)器的應(yīng)用
(1)定時(shí)器/計(jì)數(shù)器的編程確定工作方式計(jì)算計(jì)數(shù)初值開(kāi)放中斷根據(jù)功能,確定計(jì)數(shù)還是定時(shí)工作方式,將工作方式控制字寫(xiě)入TMOD。根據(jù)定時(shí)時(shí)間或計(jì)數(shù)要求計(jì)算計(jì)數(shù)初值,并將其寫(xiě)入TLx和THx。若需要使用中斷,ETx、EA置1,開(kāi)放定時(shí)器/計(jì)數(shù)器中斷和CPU中斷。啟動(dòng)計(jì)數(shù)GATE=0時(shí),TRx置1啟動(dòng)計(jì)數(shù);GATE=1時(shí),除TRx置1外,還必須在外中斷引腳處加上相應(yīng)的電平值才能啟動(dòng)。5、定時(shí)器/計(jì)數(shù)器的應(yīng)用利用中斷系統(tǒng),計(jì)數(shù)溢出后向CPU發(fā)出中斷請(qǐng)求,將溢出后需要執(zhí)行的操作放入定時(shí)器/計(jì)數(shù)器對(duì)應(yīng)的中斷服務(wù)程序中執(zhí)行。采用中斷方式可以提高CPU的效率。在整個(gè)計(jì)數(shù)過(guò)程中,通過(guò)指令不斷查詢TF0或TF1的狀態(tài)來(lái)判斷計(jì)數(shù)是否溢出。這種方式編程較簡(jiǎn)單,但是需要占用大量CPU時(shí)間,使得CPU效率降低。編程方式查詢中斷如果在某些應(yīng)用中不需要進(jìn)行定時(shí)或計(jì)數(shù),則T0和T1可作為外部中斷請(qǐng)求使用。此時(shí)將定時(shí)器/計(jì)數(shù)器設(shè)置成計(jì)數(shù)方式,計(jì)數(shù)初值設(shè)為最大值。5、定時(shí)器/計(jì)數(shù)器的應(yīng)用查詢的編程方式小丁同學(xué),你的作業(yè)還沒(méi)做完嗎?每隔10分鐘……5、定時(shí)器/計(jì)數(shù)器的應(yīng)用中斷的編程方式報(bào)告老師,我作業(yè)做完了!5、定時(shí)器/計(jì)數(shù)器的應(yīng)用
(2)應(yīng)用實(shí)例如所示,P1口接有8個(gè)發(fā)光二極管,編程使8個(gè)發(fā)光二極管輪流點(diǎn)亮。每個(gè)發(fā)光二極管亮100ms,設(shè)晶振頻率fosc=6MHz。例5.1①確定工作方式
用T1完成100ms定時(shí)時(shí)間,使P1初始狀態(tài)為01H,每隔100ms左移一次。
當(dāng)晶振頻率fosc=6MHz時(shí),機(jī)器周期Tcy=2μs,則:
計(jì)數(shù)值N=T/Tcy=100ms/2μs=50000
因此采用工作方式1,工作方式字TMOD=10H,即: TMOD.0~TMOD.3:因T0不用,可取任意值,此處取0值; TMOD.4、TMOD.5:M1M0=01,T1工作在方式1; TMOD.6:C/T=0,T1為定時(shí)方式; TMOD.7:GATE=0,計(jì)數(shù)不受INT1腳控制。5、定時(shí)器/計(jì)數(shù)器的應(yīng)用②計(jì)算計(jì)數(shù)初值
X=216-N=65536-50000=15536=3CB0H
則: TH1=3CH,TL1=0B0H。③C源程序(查詢方法)#include"reg51.h"voidmain(){ P1=0x01;
//點(diǎn)亮第一個(gè)LED TMOD=0x10;
//T1工作于方式1 TR1=1;
//啟動(dòng)T1計(jì)數(shù)
while(1) { TH1=0x3c; //裝載計(jì)數(shù)初值
TL1=0xb0;
//TH1=(65536-50000)/256; //TL1=(65536-50000)%256;
while(!TF1); //等待定時(shí)器溢出
P1<<=1; //點(diǎn)亮下一LED if(P1==0) P1=0x01;
TF1=0;
//軟件清除TF1 }}④C源程序(中斷方法)#include"reg51.h"voidtimer1()interrupt3using1 //T1中斷服務(wù)程序{ TH1=0x3c; //重裝計(jì)數(shù)初值
TL1=0xb0;
P1<<=1; //點(diǎn)亮下一LED
if(P1==0) P1=0x01;}voidmain(){ P1=0x01; //點(diǎn)亮第一個(gè)LED TMOD=0x10; //T1工作于方式1 TH1=0x3c; //裝載計(jì)數(shù)初值
TL1=0xb0;
IE=0x88; //開(kāi)放T1中斷
TR1=1; //啟動(dòng)T1計(jì)數(shù)
while(1); //等待中斷}T1中斷初始化5、定時(shí)器/計(jì)數(shù)器的應(yīng)用在單片機(jī)P1.0口接一個(gè)發(fā)光二極管,要求利用定時(shí)控制使LED亮1s滅1s周而復(fù)始,設(shè)晶振頻率fosc=6MHz。例5.2當(dāng)fosc=6MHz時(shí),機(jī)器周期Tcy=2μs,工作方式0最大定時(shí)時(shí)間為16.384ms,工作方式1最大定時(shí)時(shí)間為131.072ms,工作方式2最大定時(shí)時(shí)間為512μs。顯然無(wú)法滿足定時(shí)1s的要求。5、定時(shí)器/計(jì)數(shù)器的應(yīng)用確定工作方式
可以采用方式0,使T0每隔10ms中斷一次,利用軟件對(duì)中斷次數(shù)進(jìn)行計(jì)數(shù),中斷100次即實(shí)現(xiàn)1s定時(shí)。也可以采用方式1,使T0每隔100ms中斷一次,中斷10次實(shí)現(xiàn)1s定時(shí)。
這里采用T0工作方式0,則TMOD=00H。計(jì)算計(jì)數(shù)初值X=213-N=8192-(10ms/2μs)=3192=0C78H=0000110001111000B則TH0=01100011B=63H,TL0=00011000B=18H。C源程序#include"reg51.h"sbitLED=P1^0;unsignedcharnum=0;voidtimer0()interrupt1
//T0中斷服務(wù)程序{ TH0=0x63;
//重裝計(jì)數(shù)初值
TL0=0x18;
num++;
if(num==100) //1s時(shí)間到LED狀態(tài)取反
{ LED=~LED;
num=0;
}}voidmain(){ TMOD=0x00; //T0工作于方式0
TH0=0x63;
//定時(shí)10ms
TL0=0x18;
ET0=1; //開(kāi)放T0中斷
EA=1;
TR0=1; //啟動(dòng)T0計(jì)數(shù)
while(1); //等待中斷}T0中斷初始化C源程序#include"reg51.h"sbitLED=P1^0;unsignedcharnum=0;voidtimer0()interrupt1
//T0中斷服務(wù)程序{ TH0=(8192-5000)/32;
//重裝計(jì)數(shù)初值
TL0=(8192-5000)%32;
num++;
if(num==100) //1s時(shí)間到LED狀態(tài)取反
{ LED=~LED;
num=0;
}}voidmain(){ TMOD=0x00; //T0工作于方式0
TH0=(8192-5000)/32;
//定時(shí)10ms
TL0=(8192-5000)%32;
ET0=1; //開(kāi)放T0中斷
EA=1;
TR0=1; //啟動(dòng)T0計(jì)數(shù)
while(1); //等待中斷}T0中斷初始化5、定時(shí)器/計(jì)數(shù)器的應(yīng)用當(dāng)GATE=1、TR0=1時(shí),只有INT0(P3.2)引腳上出現(xiàn)高電平時(shí),T0才被允許計(jì)數(shù),試?yán)眠@一功能測(cè)試INT0(P3.2)引腳上正脈沖的寬度(以機(jī)器周期表示)。例5.3設(shè)外部待測(cè)脈沖由INT0腳輸入,T0工作在方式1,設(shè)置為定時(shí)狀態(tài),GATE置1。測(cè)試時(shí),在INT0端為0時(shí)TR0置1,當(dāng)INT0腳變?yōu)?時(shí)啟動(dòng)計(jì)數(shù);再次變?yōu)?時(shí)停止計(jì)數(shù)。此時(shí)的計(jì)數(shù)值即為被測(cè)正脈沖寬度。TR=1TR=0計(jì)數(shù)C源程序#include"reg51.h"sbitsignal=P3^2;voidmain(){ unsignedintwidth=0;
TMOD=0x09; //T0工作于方式1定時(shí),GATE=1 TH0=0x00;
TL0=0x00;
while(signal); //等待P3.2變低
TR0=1; //啟動(dòng)T0計(jì)數(shù)
while(!signal); //等待P3.2變高
while(signal); //等待P3.2再次變低
TR0=0; //停止計(jì)數(shù)
width=(TH0<<8)|TL0;}T0中斷初始化目錄
知識(shí)鏈接任務(wù)實(shí)施一、任務(wù)分析二、安裝與調(diào)試一、定時(shí)器/計(jì)數(shù)器的基本概念及其應(yīng)用1、任務(wù)要求本任務(wù)要求設(shè)計(jì)一個(gè)計(jì)時(shí)時(shí)間為0~59s的秒表。利用定時(shí)器實(shí)現(xiàn)1s定時(shí)。P3.7口接一個(gè)按鍵,該按鍵有三個(gè)功能,分別為開(kāi)始計(jì)時(shí)、停止計(jì)時(shí)和清零。每次按下按鍵后,按鍵標(biāo)識(shí)會(huì)在三個(gè)功能之間循環(huán)。P0、P2口接共陽(yáng)極數(shù)碼管,靜態(tài)顯示秒表計(jì)時(shí)。用KeilC、Proteus等作開(kāi)發(fā)工具,進(jìn)行仿真,并完成實(shí)物電路制作并測(cè)試,最后需完成項(xiàng)目報(bào)告。秒表任務(wù)要求2、總體設(shè)計(jì)方案AT89C51單片機(jī)按鍵控制復(fù)位電路時(shí)鐘電路LED數(shù)碼管顯示3、硬件電路設(shè)計(jì)4、軟件設(shè)計(jì)
程序流程圖C源程序(1)#include"reg51.h"unsignedcharsegtab[10]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; //0~9共陽(yáng)極段碼表unsignedcharcount; //秒計(jì)數(shù)unsignedcharkey_flag; //按鍵功能:0啟動(dòng),1停止,2清零unsignedcharnum; //定時(shí)次數(shù)計(jì)數(shù)sbitkey=P1^0; //按鍵bitkey_state; //按鍵狀態(tài)voidDelay(unsignedcharn) //延時(shí)程序{ unsignedchari,j; for(i=0;i<n;i++) for(j=0;j<200;j++);}C程序(2)voidTimer0()interrupt1 //T0中斷服務(wù)程序{ TH0=(65536-50000)/256; //重裝初值,50ms TL0=(65536-50000)%256; num++; if(num==20) //每50ms*20=1s刷新一次
{ num=0; count++; P0=segtab[count%10]; //顯示個(gè)位
if(count/10==0) //顯示十位,十位為0則不顯示
P2=0xff; else P2=segtab[count/10]; if(count==60) //計(jì)滿59秒后回0 count=0; }}C程序(3)voidKey_Event() //按鍵處理子程序{ if(key_state==0) key_flag=(key_flag+1)%3; switch(key_flag) { case1: //啟動(dòng)計(jì)時(shí)
TR0=1;break; case2: //停止計(jì)時(shí)
TR0=0;break; case0: //清零
P0=0xc0;P2=0xff;count=0;num=0;break; }}C程序(4)voidmain() //主程序{ P0=0xc0; //顯示0s P2=0xff;num=0;count=0;
key_flag=2;
//按鍵標(biāo)志初值為0 key_state=1; TMOD=0x01; //T
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 準(zhǔn)備2025年保安證考試的必知試題及答案
- 保安證考試現(xiàn)代化試題及答案
- 破解難題2025年保安證考試試題及答案
- 預(yù)防性安全防范的試題及答案
- 專業(yè)技能解析的保安證試題及答案
- 2025保安證考試模擬測(cè)試試題及答案
- 保安培訓(xùn)考試內(nèi)容解析及試題及答案
- 監(jiān)控安全施工方案
- 民宿項(xiàng)目可行性分析
- 晉中市重點(diǎn)中學(xué)2025年高中高三聯(lián)考?xì)v史試題含解析
- 《短詩(shī)三首》繁星(七一)【教案】部編版語(yǔ)文四年級(jí)下冊(cè)
- 水電解質(zhì)紊亂酸堿平衡
- 尼爾森老師不見(jiàn)了
- 項(xiàng)目部費(fèi)用報(bào)銷管理辦法
- 中藥學(xué)電子版教材
- 畢業(yè)設(shè)計(jì)外文文獻(xiàn)-基于 Vue.js 的后臺(tái)單頁(yè)應(yīng)用管理系統(tǒng)的研究與實(shí)現(xiàn)
- 教師組織生活談心談話記錄內(nèi)容范文(5篇)
- 高壓電工安全技術(shù)實(shí)操K13考試題庫(kù)(含答案)
- 宋代藥業(yè)研究
- 守株待兔兒童故事繪本PPT
- 臨近營(yíng)業(yè)線施工大型機(jī)械安全管理措施
評(píng)論
0/150
提交評(píng)論