單片機(jī)原理與應(yīng)用(C51編程+Proteus仿真) 習(xí)題及答案 劉霞 第6章定時(shí)器計(jì)數(shù)器習(xí)題答案_第1頁(yè)
單片機(jī)原理與應(yīng)用(C51編程+Proteus仿真) 習(xí)題及答案 劉霞 第6章定時(shí)器計(jì)數(shù)器習(xí)題答案_第2頁(yè)
單片機(jī)原理與應(yīng)用(C51編程+Proteus仿真) 習(xí)題及答案 劉霞 第6章定時(shí)器計(jì)數(shù)器習(xí)題答案_第3頁(yè)
單片機(jī)原理與應(yīng)用(C51編程+Proteus仿真) 習(xí)題及答案 劉霞 第6章定時(shí)器計(jì)數(shù)器習(xí)題答案_第4頁(yè)
單片機(jī)原理與應(yīng)用(C51編程+Proteus仿真) 習(xí)題及答案 劉霞 第6章定時(shí)器計(jì)數(shù)器習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章定時(shí)器/計(jì)數(shù)器習(xí)題答案一、填空題1.T0/T1作為計(jì)數(shù)器使用時(shí),T0對(duì)引腳的外部脈沖進(jìn)行計(jì)數(shù),T1對(duì)引腳的外部脈沖進(jìn)行計(jì)數(shù)。答:P3.4P3.52.如果采用晶振的頻率為12MHz,T0/T1方式1的最大定時(shí)時(shí)間為,方式2的最大定時(shí)時(shí)間為。答:65536us,256μs3.T0/T1作為定時(shí)器使用時(shí),對(duì)進(jìn)行計(jì)數(shù)。答:系統(tǒng)晶振的12分頻信號(hào)(機(jī)器周期)4.T0/T1作為計(jì)數(shù)器模式時(shí),外部輸入脈沖的最高頻率為系統(tǒng)晶振頻率的。答:1/245.晶振頻率為12MHz,T0方式1產(chǎn)生1ms定時(shí),則(TH0)=,(TL0)=。答:(65536-1000)/256(65536-1000)%2566.晶振頻率為12MHz,T1的方式2定時(shí)100us,則(TH1)=,(TL1)=。答:256-100=0x9C0x9C7.定時(shí)器T2有3種工作方式:、和,可通過(guò)對(duì)寄存器中的相關(guān)位進(jìn)行軟件設(shè)置來(lái)選擇。答:捕捉,重新裝載(增計(jì)數(shù)或減計(jì)數(shù)),波特率發(fā)生器,T2CON8.占空比是指在一個(gè)周期內(nèi),信號(hào)處于的時(shí)間占據(jù)整個(gè)信號(hào)周期的百分比。答:高電平9.PWM技術(shù)是技術(shù),通過(guò)改變脈沖的寬度進(jìn)行調(diào)制,也就是通過(guò)調(diào)節(jié)占空比來(lái)調(diào)節(jié)信號(hào)、能量等的變化。答:脈沖寬度調(diào)制10.T2的捕捉方式就是及時(shí)“捕捉”變化,例如信號(hào)發(fā)生的跳變。常用于精確測(cè)量輸入信號(hào)的脈寬或周期等。答:輸入信號(hào)在某一瞬間的二、選擇題1.定時(shí)器T1有種工作方式。A.1種 B.2種C.3種 D.4種

答:C2.定時(shí)器T0/T1工作于方式1時(shí),其計(jì)數(shù)器為位。A.8位B.16位C.14位D.13位答:B3.T0定時(shí)溢出時(shí),位由硬件自動(dòng)置1。A.TR0B.TF0C.ET0D.PT0答:B4.定時(shí)器T0的GATE=1計(jì)數(shù)器是否計(jì)數(shù)的條件。A.僅取決于TR0狀態(tài)B.僅取決于GATE位狀態(tài)C.是由TR0和INT0兩個(gè)條件共同控制D.僅取決于INT0的狀態(tài)答:C5.T1計(jì)數(shù)計(jì)滿溢出時(shí),溢出標(biāo)志位(TF1)=。A.0B.1C.0xffD.0x00答:B6.采用T1方式2,計(jì)滿250次溢出,則(TH1)和(TL1)的初值為。A.0x06,0x06B.0xff,0x06C.0x06,0xffD.0x00,0x06答:A7.T0方式1是計(jì)數(shù)器。A.16位加1B.16位減1C.8位加1D.8位減1答:A8.T2作為波特率發(fā)生器使用時(shí),對(duì)進(jìn)行計(jì)數(shù)。A.晶振頻率的12分頻信號(hào)B.晶振頻率的2分頻信號(hào)C.晶振頻率的24分頻信號(hào)D.機(jī)器周期答:B9.T2作為捕捉方式,則位是“捕捉”或“自動(dòng)重新裝載”選擇位。A.

C/T2B.CP/RL2C.答:B10.T2工作在16位自動(dòng)重載方式時(shí),T2既可以增1計(jì)數(shù),也可實(shí)現(xiàn)減1計(jì)數(shù),取決于。A.T2引腳的負(fù)跳變B.T2引腳的正跳變C.T2EX引腳的負(fù)跳變D.T2EX引腳的正跳變答:C三、問(wèn)答題1.一個(gè)定時(shí)器的定時(shí)時(shí)間有限,如何用兩個(gè)定時(shí)器的串行定時(shí)來(lái)實(shí)現(xiàn)較長(zhǎng)時(shí)間的定時(shí)?答:方法1,在第一個(gè)定時(shí)器的中斷程序里關(guān)閉本定時(shí)器的中斷程序,設(shè)置和打開另一個(gè)定時(shí)器;在另一個(gè)定時(shí)器的中斷程序中關(guān)閉本定時(shí)中斷,設(shè)置和打開另一個(gè)定時(shí)器。這種方式的定時(shí)時(shí)間為兩個(gè)定時(shí)器定時(shí)時(shí)間的和。方法2,一個(gè)作為定時(shí)器,在定時(shí)中斷后產(chǎn)生一個(gè)外部計(jì)數(shù)脈沖(比如由P1.0接產(chǎn)生),另一個(gè)定時(shí)器工作在計(jì)數(shù)方式。這樣兩個(gè)定時(shí)器的定時(shí)時(shí)間為一個(gè)定時(shí)器的定時(shí)時(shí)間乘以另一個(gè)定時(shí)器的計(jì)數(shù)值。2.說(shuō)明T0/T1溢出中斷標(biāo)志位TF0/TF1的撤銷方法。答:采用中斷方式,則有硬件自動(dòng)撤銷;采用查詢方式,則由軟件撤銷。3.對(duì)T0/T1溢出斷標(biāo)志位TF0/TF1的檢測(cè)方法有哪些?各有什么優(yōu)缺點(diǎn)?答:可以采用中斷方式,也可采用查詢方式。中斷方式快速實(shí)時(shí)性好,CPU執(zhí)行效率高,但編程復(fù)雜。查詢方式編程簡(jiǎn)單,但需要采用軟件的方式不斷查詢標(biāo)志位,CPU執(zhí)行效率低。四、仿真練習(xí)1.基本要求:利用T1方式1控制發(fā)出1kHz的音頻信號(hào),采用虛擬示波器查看波形。答:1.硬件電路設(shè)計(jì)2.軟件設(shè)計(jì)#include<reg52.h> //頭文件reg52.hsbitP20=P2^0; //定義特殊功能寄存器P2的位變量P2.0voidT1_init();//定時(shí)器T1初始化/*************主函數(shù)************/voidmain(void) //主程序{ T1_init(); while(1) { while(TF1==0);TH1=(65536-500)/256;//重賦初值TL1=(65536-500)%256;//重賦初值 P20=!P20; //P2.0狀態(tài)求反 TF1=0; //TF0標(biāo)志清零 }}/**********定時(shí)器T1初始化*********/voidT1_init(){TMOD=0x10; //設(shè)置T0為方式1TH1=(65536-500)/256;//置T0高8位初值TL1=(65536-500)%256;//置T0低8位初值 TR1=1; //啟動(dòng)T0TF1=0;}仿真運(yùn)行2.基本要求:利用T0采用方式2在P2.0引腳輸出周期為1ms,占空比為80%的矩形脈沖。答:1.硬件電路設(shè)計(jì)2.軟件設(shè)計(jì)#include<reg52.h> //頭文件reg52.h#defineucharunsignedchar#defineuintunsignedintsbitPWM=P2^0; //定義特殊功能寄存器P2的位變量P2.0uintflag;voidT0_init();//定時(shí)器T0初始化/*************主函數(shù)************/voidmain(void) //主程序{ T0_init(); while(1) { }}/**********定時(shí)器T0初始化*********/voidT0_init(){TMOD=0x02; //設(shè)置T0為方式2TH0=156; //置T0高8位初值TL0=156; //置T0低8位初值 TR0=1; //啟動(dòng)T0ET0=1; //開T0中斷EA=1; //開總中斷}voidpwm()interrupt1{ TH0=156; TL0=156; //定時(shí)100us flag++; if(flag==10) flag=0; if(flag<8) PWM=1; else PWM=0; }3.仿真運(yùn)行3.擴(kuò)展要求:測(cè)量脈沖信號(hào)的頻率,并在LCD1602上顯示。答:1.硬件電路設(shè)計(jì)2.軟件設(shè)計(jì)#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharsbitlcdrs=P1^0;//LCD1602液晶顯示器數(shù)據(jù)/命令選擇端口sbitlcdrw=P1^1;//LCD1602液晶顯示器讀/寫選擇端口sbitlcden=P1^2;//LCD1602液晶顯示器使能端口 sbitP3_3=P3^3; //INT1測(cè)量脈沖輸入引腳定義voiddelay(uintdat);//延時(shí)程序voidlcd_init();//lcd初始化voidwrite_cmd(charcmd);//寫指令函數(shù)voidwrite_data(uchardat);//寫數(shù)據(jù)函數(shù)voidwrite_str(uchar*str);//寫字符串函數(shù)voiddisplay(uintdate);//顯示uintWidth_num,Freq;//脈沖的寬度,T1的計(jì)數(shù)值/*****主函數(shù)******/voidmain(){ lcd_init();//LCD初始化 write_cmd(0x82);//在LCD1602第一行第2個(gè)位置顯示write_str("Frequency:"); //顯示Frequency: write_cmd(0xcb);//在LCD1602第二行第11個(gè)位置顯示write_str("Hz"); //顯示Hz while(1) { TMOD=0x90; //T1方式1、定時(shí)、GATE=1TH1=0; //向定時(shí)器T1寫入計(jì)數(shù)初值0TL1=0;while(P3_3==1);//等待INT1引腳輸入變低TR1=1; //如果INT1為低,TR1=1,等待INT1變高啟動(dòng)T1while(P3_3==0);//等待INT1變高,INT1變高,硬啟動(dòng)條件滿足,T1計(jì)數(shù)開始while(P3_3==1);//等待INT1變低,變低后T1停止計(jì)數(shù)TR1=0; //復(fù)位TR1 Width_num=TH1*256+TL1;//計(jì)算T1計(jì)數(shù)值,即脈沖寬度 Freq=1000000/(2*Width_num); //跟據(jù)公式算出脈沖寬度與頻率關(guān)系 display(Freq); //顯示頻率}}/*****延時(shí)程序******/voiddelay(uintdat){uinti,j;for(j=dat;j>0;j--) for(i=110;i>0;i--);}/********************1602初始化***************/voidlcd_init(){lcdrw=0; lcden=0; write_cmd(0x38); //顯示模式設(shè)置 write_cmd(0x0c); //顯示開關(guān),光標(biāo)關(guān)閉 write_cmd(0x06); //顯示光標(biāo)移動(dòng)設(shè)置 write_cmd(0x01); //清除屏幕}/***************寫指令函數(shù)*****************/voidwrite_cmd(ucharcmd){ lcdrs=0; //RS拉低 P2=cmd; //P0口寫入指令 delay(1); lcden=1; delay(1); lcden=0;}/***************寫數(shù)據(jù)函數(shù)*****************/voidwrite_data(uchardat){ lcdrs=1; //RS拉高 P2=dat; //P0口寫入數(shù)據(jù) delay(1); lcden=1; delay(1); lcden=0;}/***************寫字符串函數(shù)*****************/voidwrite_str(uchar*str)//{ while(*str!='\0')//字符串寫完之前,一直進(jìn)行寫入操作 { write_data(*str++); delay(1); }}/***************顯示函數(shù)*****************/voiddisplay(uintdate){ucharwidth[7]; width[0]=date/10000+0x30;//分離十萬(wàn)位,轉(zhuǎn)換為ASCII width[1]=date%100000/10000+0x30;//分離萬(wàn)位,轉(zhuǎn)換為ASCII width[2]=date%10000/1000+0x30;//分離千位,轉(zhuǎn)換為ASCII width[3]=date%1000/100+0x30;//分離百位,轉(zhuǎn)換為ASCII width[4]=date%100/10+0x30;//分離十位,轉(zhuǎn)換為ASCII width[5]=date%10+0x30; //分離個(gè)萬(wàn)位,轉(zhuǎn)換為ASCII width[6]='\0'; //數(shù)組末尾填加字符串結(jié)束的標(biāo)志 write_cmd(0xc5);//在LCD第2行第5個(gè)位置寫入 write_str(width);//將脈沖寬度轉(zhuǎn)換為字符數(shù)組寫入LCD}3.仿真運(yùn)行4.擴(kuò)展要求:采用T2實(shí)現(xiàn)秒表,按下按鍵1啟動(dòng)秒表計(jì)時(shí)并在數(shù)碼管(共陽(yáng))顯示,按下按鍵2停止秒表計(jì)時(shí),顯示當(dāng)前值。再按下按鍵1則從0開始計(jì)時(shí),重復(fù)上述過(guò)程。計(jì)時(shí)范圍00~59s,如果計(jì)時(shí)到59s,將重新開始從0計(jì)時(shí)。系統(tǒng)晶振為12MHz。答:1.硬件電路設(shè)計(jì)2.軟件設(shè)計(jì)#include<reg52.h> //頭文件reg52.h#defineucharunsignedchar#defineuintunsignedintsfrT2MOD=0xc9;//reg52.h中沒(méi)有定義T2MODvoidT2_init();//定時(shí)器T2初始化unsignedintcount,shi,ge,aa,temp=0,x,y,z,flag=0;sbitkey1=P1^6;sbitkey2=P1^7; ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽(yáng)0-9段碼voiddelay(uintz) //延時(shí)1ms{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddisplay0()//數(shù)碼管顯示函數(shù){ P0=0x02;//根據(jù)接口片選十位 P2=table[shi];//十位顯示 delay(1); P2=0xff;//全部熄滅數(shù)碼管,防止重影 P0=0x01;//根據(jù)接口片選個(gè)位 P2=table[ge];//個(gè)位顯示 delay(1); P2=0xff;//全部熄滅數(shù)碼管,防止重影}/*************主函數(shù)************/voidmain(void) {T2_init();//T2初始化while(1)//死循環(huán) { display0(); if(key1==0&&flag==0)//key1按下中斷開,開始計(jì)時(shí),啟動(dòng)秒表 { delay(2); if(key1==0&&flag==0) { TR2=1; } } if(key2==0)//key2按下中斷關(guān),停止計(jì)時(shí),停止秒表 { delay(2); if(key2==0) { TR2=0; flag=1; } } if(key1==0&&flag==1)//key1再次按下,秒表歸零,從新計(jì)時(shí) { delay(2); if(key1==0&&flag==1) { temp=0; shi=0; ge=0; flag=0; } } if(shi==6&&ge==0)//計(jì)時(shí)到60秒,清零 { temp=0; shi=0; ge=0; }}}/**********定時(shí)器T2初始化*********/voidT2_init(){RCLK=0;//T2不用作波特率發(fā)生器接收時(shí)鐘使用TCLK=0;//T2不用作波特率發(fā)生器發(fā)送時(shí)鐘使用CP_RL2=0;//T2捕捉/自動(dòng)重裝載選擇位=0(自動(dòng)重裝載)=1(捕捉)EXEN2=0;//=0(T2計(jì)滿溢出觸發(fā)自動(dòng)重裝)//=1(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論