(2025年)單片機(jī)C5復(fù)習(xí)題(課后習(xí)題及答案)_第1頁
(2025年)單片機(jī)C5復(fù)習(xí)題(課后習(xí)題及答案)_第2頁
(2025年)單片機(jī)C5復(fù)習(xí)題(課后習(xí)題及答案)_第3頁
(2025年)單片機(jī)C5復(fù)習(xí)題(課后習(xí)題及答案)_第4頁
(2025年)單片機(jī)C5復(fù)習(xí)題(課后習(xí)題及答案)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

(2025年)單片機(jī)C5復(fù)習(xí)題(課后習(xí)題及答案)一、選擇題1.以下關(guān)于8051單片機(jī)內(nèi)部結(jié)構(gòu)的描述,錯(cuò)誤的是()A.片內(nèi)包含4KB的ROM(或Flash)和128B的RAMB.有4個(gè)8位并行I/O口(P0-P3)C.包含2個(gè)16位定時(shí)器/計(jì)數(shù)器(T0、T1)D.所有型號的8051單片機(jī)均不支持串口通信功能答案:D(部分8051兼容型號支持串口通信,如STC89C52)2.執(zhí)行指令“MOVA,0x30”后,累加器A的內(nèi)容是()A.0x30(十六進(jìn)制)B.30(十進(jìn)制)C.00110000(二進(jìn)制)D.以上均正確答案:D(三種表示方式等價(jià))3.若單片機(jī)晶振頻率為11.0592MHz,定時(shí)器T0工作于模式1(16位定時(shí)器),要產(chǎn)生1ms定時(shí)中斷,需設(shè)置的初值為()A.TH0=0xFC,TL0=0x66B.TH0=0x66,TL0=0xFCC.TH0=0xCD,TL0=0x6BD.TH0=0xB0,TL0=0xDC答案:A(機(jī)器周期=12/11.0592MHz≈1.085μs,1ms=1000μs,計(jì)數(shù)次數(shù)=1000/1.085≈921,初值=65536-921=64615=0xFC66)4.8051單片機(jī)的中斷優(yōu)先級寄存器IP中,若設(shè)置PS=1、PT0=1、PX1=0、PT1=0、PX0=0,則中斷優(yōu)先級從高到低排列為()A.串口中斷>T0中斷>外部中斷1>T1中斷>外部中斷0B.外部中斷0>T1中斷>外部中斷1>T0中斷>串口中斷C.串口中斷>T0中斷>外部中斷0>T1中斷>外部中斷1D.T0中斷>串口中斷>外部中斷1>T1中斷>外部中斷0答案:A(IP中對應(yīng)位為1表示高優(yōu)先級,PS(串口)=1最高,PT0(T0)=1次之,其余為0則按默認(rèn)順序:外部中斷0>T0>外部中斷1>T1>串口,但此處PS和PT0被設(shè)為高優(yōu)先級,故調(diào)整為串口>T0>外部中斷1>T1>外部中斷0)5.以下哪種尋址方式不能訪問片外RAM?()A.寄存器間接尋址(@DPTR)B.直接尋址(MOVXA,@R0)C.立即尋址(MOVA,0x50)D.變址尋址(MOVCA,@A+DPTR)答案:C(立即尋址用于訪問指令中的常數(shù),不涉及RAM)6.若P1口作為輸出口驅(qū)動8個(gè)LED(共陽極),要使P1.2和P1.5對應(yīng)的LED點(diǎn)亮,應(yīng)向P1口寫入()A.0xFB(二進(jìn)制11111011)B.0x9F(二進(jìn)制10011111)C.0xDF(二進(jìn)制11011111)D.0xE7(二進(jìn)制11100111)答案:A(共陽極LED需低電平點(diǎn)亮,P1.2(第2位)和P1.5(第5位)置0,其余位為1,即二進(jìn)制11111011=0xFB)7.串口工作于方式1(10位異步通信)時(shí),一幀數(shù)據(jù)包含()A.1位起始位+8位數(shù)據(jù)位+1位停止位B.1位起始位+7位數(shù)據(jù)位+1位奇偶校驗(yàn)位+1位停止位C.2位起始位+8位數(shù)據(jù)位+0位停止位D.1位起始位+8位數(shù)據(jù)位+2位停止位答案:A(方式1為10位格式:1起始+8數(shù)據(jù)+1停止)8.執(zhí)行指令“CJNEA,0x50,LOOP”后,若A=0x50,則程序()A.跳轉(zhuǎn)到LOOP處執(zhí)行B.順序執(zhí)行下一條指令C.進(jìn)入中斷D.復(fù)位答案:B(CJNE比較不相等時(shí)跳轉(zhuǎn),相等則順序執(zhí)行)9.以下特殊功能寄存器(SFR)中,用于控制定時(shí)器啟停的是()A.TMODB.TCONC.SCOND.IE答案:B(TCON中的TR0、TR1位控制T0、T1的啟動/停止)10.若單片機(jī)需要擴(kuò)展8KB的外部RAM,至少需要()根地址線A.13B.14C.15D.16答案:A(8KB=8×1024=8192=2^13,故需13根地址線)二、填空題1.8051單片機(jī)的程序計(jì)數(shù)器PC是____位寄存器,其尋址范圍為____。答案:16;64KB(0000H-FFFFH)2.片內(nèi)RAM的____區(qū)(地址____)可進(jìn)行位尋址,其中位地址0x30對應(yīng)字節(jié)地址____的第____位。答案:位尋址;20H-2FH;26H(0x20+0x06=0x26);0(位地址=字節(jié)地址×8+位序號,0x30=0x26×8+0)3.定時(shí)器T0工作于模式2(自動重裝模式)時(shí),其最大定時(shí)時(shí)間(晶振12MHz)為____μs,此時(shí)TH0和TL0的初值關(guān)系為____。答案:256×1=256;TH0=TL0(自動重裝時(shí)TH0保存初值,TL0溢出后自動從TH0重裝)4.外部中斷0的中斷入口地址是____,若設(shè)置為邊沿觸發(fā)方式,需將TCON中的____位設(shè)為____。答案:0003H;IT0;15.串口控制寄存器SCON中,REN位的作用是____,TI位的作用是____。答案:允許串口接收(1為允許);發(fā)送中斷標(biāo)志(發(fā)送完成后置1)6.執(zhí)行“ANLP1,0x0F”后,P1口的高4位被____,低4位____。答案:清零;保持不變7.若DPTR=0x2000,執(zhí)行“MOVXA,@DPTR”后,單片機(jī)從____地址讀取數(shù)據(jù)到A中。答案:外部RAM的0x20008.中斷服務(wù)程序的最后必須執(zhí)行____指令,其作用是____。答案:RETI;恢復(fù)斷點(diǎn)并開放中斷9.8051單片機(jī)的ALE引腳在訪問____時(shí)會輸出時(shí)鐘脈沖,其頻率為晶振頻率的____。答案:外部存儲器;1/610.若要將累加器A的內(nèi)容循環(huán)左移一位,應(yīng)使用____指令;若要將A的低4位與高4位交換,應(yīng)使用____指令。答案:RLA;SWAPA三、簡答題1.簡述8051單片機(jī)中斷響應(yīng)的條件及過程。答案:條件:(1)中斷源有中斷請求;(2)總中斷允許(EA=1);(3)對應(yīng)中斷的允許位(如EX0、ET0等)=1;(4)無更高優(yōu)先級或同優(yōu)先級中斷正在執(zhí)行。過程:(1)檢測中斷請求;(2)保護(hù)斷點(diǎn)(PC值壓棧);(3)清除中斷標(biāo)志(部分需軟件清除,如串口TI/RI);(4)跳轉(zhuǎn)到對應(yīng)中斷入口地址(如外部中斷0為0003H);(5)執(zhí)行中斷服務(wù)程序;(6)執(zhí)行RETI指令,恢復(fù)斷點(diǎn),繼續(xù)執(zhí)行主程序。2.說明定時(shí)器/計(jì)數(shù)器的4種工作模式及適用場景。答案:模式0:13位定時(shí)器(TLx低5位+THx高8位),兼容早期8048單片機(jī),現(xiàn)較少使用;模式1:16位定時(shí)器,適用于較長時(shí)間定時(shí)(如1ms以上);模式2:8位自動重裝模式,適用于需要重復(fù)定時(shí)(如波特率發(fā)生器);模式3:僅T0可用,拆分為兩個(gè)獨(dú)立的8位定時(shí)器(T0和T1的一部分),適用于需要3個(gè)定時(shí)器的場景(但此時(shí)T1只能作為串口波特率發(fā)生器)。3.設(shè)計(jì)一個(gè)基于8051的按鍵檢測電路(消抖),說明硬件連接和軟件實(shí)現(xiàn)方法。答案:硬件連接:按鍵一端接VCC,另一端接單片機(jī)I/O口(如P3.2),I/O口內(nèi)部或外部下拉電阻(或利用內(nèi)部上拉,按鍵按下時(shí)I/O口為低電平)。軟件實(shí)現(xiàn):(1)檢測按鍵輸入(如P3.2=0);(2)延時(shí)10-20ms消抖;(3)再次檢測P3.2是否仍為0,確認(rèn)按鍵按下;(4)執(zhí)行按鍵處理函數(shù);(5)檢測按鍵釋放(P3.2=1),再次延時(shí)消抖,確認(rèn)釋放完成。4.串口通信中,為何8051單片機(jī)常用11.0592MHz晶振?說明串口方式1的波特率計(jì)算公式。答案:11.0592MHz晶振可使串口波特率計(jì)算時(shí)避免誤差(如9600bps時(shí),波特率=晶振頻率/(32×12×(2^SMOD)/16)),11.0592MHz時(shí),SMOD=0時(shí),(11.0592×10^6)/(32×12×16)=9600,無誤差)。方式1波特率公式:波特率=(2^SMOD/32)×(晶振頻率/(12×(256-TH1))),其中TH1為定時(shí)器T1模式2的初值。5.簡述D/A轉(zhuǎn)換器(如DAC0832)與8051單片機(jī)的接口方式及單緩沖模式下的工作流程。答案:接口方式:DAC0832為8位電流輸出型D/A轉(zhuǎn)換器,與單片機(jī)通過數(shù)據(jù)總線(D0-D7)、寫信號(WR1、WR2)、片選(CS)、傳送控制(XFER)連接。單緩沖模式:將WR2和XFER接地(常選通),僅控制WR1和CS。工作流程:(1)單片機(jī)向DAC0832的數(shù)據(jù)寄存器寫入8位數(shù)字量;(2)WR1和CS同時(shí)有效(低電平),數(shù)據(jù)鎖存到DAC寄存器;(3)DAC0832輸出對應(yīng)模擬電流,通過運(yùn)放轉(zhuǎn)換為電壓輸出。四、編程題1.設(shè)計(jì)一個(gè)LED流水燈程序(P1口接8個(gè)共陰極LED),要求從P1.0到P1.7依次點(diǎn)亮,每個(gè)LED亮500ms,循環(huán)執(zhí)行。晶振11.0592MHz,使用定時(shí)器T0中斷實(shí)現(xiàn)延時(shí)。答案:```cinclude<reg52.h>defineucharunsignedchardefineuintunsignedintucharled_mod=0x01;//初始點(diǎn)亮P1.0(共陰極,低電平點(diǎn)亮)uintcount=0;//中斷計(jì)數(shù)變量voidTimer0_Init(){TMOD=0x01;//T0模式1(16位定時(shí)器)TH0=0xFC;//1ms初值(11.0592MHz晶振)TL0=0x66;ET0=1;//允許T0中斷EA=1;//總中斷允許TR0=1;//啟動T0}voidTimer0_ISR()interrupt1{TH0=0xFC;//重裝初值TL0=0x66;count++;if(count>=500){//500次中斷=500mscount=0;led_mod<<=1;//左移一位,下一個(gè)LED點(diǎn)亮if(led_mod==0x00)led_mod=0x01;//循環(huán)P1=~led_mod;//共陰極需低電平,取反}}voidmain(){P1=~led_mod;//初始化P1口Timer0_Init();while(1);//等待中斷}```關(guān)鍵說明:定時(shí)器T0模式1產(chǎn)生1ms中斷,每500次中斷(500ms)移動一次LED位置,通過左移操作實(shí)現(xiàn)流水效果,共陰極LED需輸出低電平(故對led_mod取反后賦值P1)。2.編寫程序?qū)崿F(xiàn):通過P3.4檢測按鍵(按下為低電平),按鍵按下時(shí)啟動定時(shí)器T1計(jì)時(shí),再次按下時(shí)停止計(jì)時(shí)并通過串口(方式1,9600bps)發(fā)送計(jì)時(shí)時(shí)間(單位:ms)。晶振11.0592MHz,SMOD=0。答案:```cinclude<reg52.h>defineucharunsignedchardefineuintunsignedintsbitKEY=P3^4;uinttime_cnt=0;//計(jì)時(shí)變量(ms)bitstart_flag=0;//計(jì)時(shí)啟動標(biāo)志voidUart_Init(){TMOD|=0x20;//T1模式2(自動重裝)TH1=0xFD;//9600bps初值(11.0592MHz,SMOD=0)TL1=0xFD;SCON=0x50;//串口方式1,允許接收TR1=1;//啟動T1EA=1;//總中斷允許}voidTimer1_Init(){TMOD|=0x10;//T1模式1(16位定時(shí)器,僅用于計(jì)時(shí))TH1=0xFC;//1ms初值TL1=0x66;ET1=1;//允許T1中斷}voidSend_Byte(uchardat){SBUF=dat;//發(fā)送字節(jié)while(!TI);//等待發(fā)送完成TI=0;//清除標(biāo)志}voidSend_Time(uintt){ucharh,l;h=t/100;//百位l=t%100;//十位和個(gè)位Send_Byte(h+'0');//發(fā)送百位字符Send_Byte((l/10)+'0');//十位Send_Byte((l%10)+'0');//個(gè)位Send_Byte('m');//發(fā)送單位Send_Byte('s');}voidmain(){Uart_Init();Timer1_Init();while(1){if(!KEY){//檢測按鍵按下delay_ms(10);//消抖(需自行實(shí)現(xiàn)delay_ms)if(!KEY){start_flag=!start_flag;if(start_flag){TR1=1;//啟動計(jì)時(shí)time_cnt=0;//清零計(jì)時(shí)}else{TR1=0;//停止計(jì)時(shí)Send_Time(time_cnt);//發(fā)送時(shí)間}while(!KEY);//等待按鍵釋放delay_ms(10);//消抖}}}}voidTimer1_ISR()interrupt3{TH1=0xFC;//重裝初值TL1=0x66;time_cnt++;//每1ms遞增}```關(guān)鍵說明:T1模式1用于1ms計(jì)時(shí),串口模式1通過T1模式2產(chǎn)生9600bps波特率。按鍵檢測使用消抖,第一次按下啟動計(jì)時(shí),第二次按下停止并通過串口發(fā)送時(shí)間(轉(zhuǎn)換為字符格式)。3.利用DS18B20溫度傳感器設(shè)計(jì)溫度采集系統(tǒng),編寫初始化、讀溫度、顯示(P0口接4位共陰數(shù)碼管)的主程序框架。答案:```cinclude<reg52.h>include<intrins.h>defineucharunsignedchardefineuintunsignedintsbitDQ=P3^7;//DS18B20數(shù)據(jù)總線ucharcodeseg_table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共陰數(shù)碼管段碼表uchartemp_buf[4];//溫度顯示緩沖區(qū)(十位、個(gè)位、小數(shù)位、符號位)//DS18B20初始化函數(shù)bitDS18B20_Init(){bitack;DQ=1;_nop_();DQ=0;//拉低總線delay_us(480);//延時(shí)480μsDQ=1;//釋放總線delay_us(60);//等待響應(yīng)ack=DQ;//讀取應(yīng)答信號(0為存在)delay_us(420);//完成初始化時(shí)序returnack;}//寫一個(gè)字節(jié)到DS18B20voidDS18B20_Write(uchardat){uchari;for(i=0;i<8;i++){DQ=0;//起始位_nop_();DQ=dat&0x01;//寫最低位delay_us(60);DQ=1;//釋放總線dat>>=1;//右移一位}}//從DS18B20讀一個(gè)字節(jié)ucharDS18B20_Read(){uchari,dat=0;for(i=0;i<8;i++){DQ=0;//起始位_nop_();DQ=1;//釋放總線_nop_();dat>>=1;if(DQ)dat|=0x80;//讀取當(dāng)前位delay_us(60);}returndat;}//讀取溫度值(返回整數(shù)部分×10,如25.6℃返回256)intRead_Temp(){ucharTL,TH;inttemp;DS18B20_Init();DS18B20_Write(0xCC);//跳過ROMDS18B20_Write(0x44);//啟動溫度轉(zhuǎn)換delay_ms(750);//等待轉(zhuǎn)換完成DS18B20_Init();DS18B20_Write(0xCC);//跳過ROMDS18B20_Write(0xBE);//讀取溫度寄存器TL=DS18B20_Read();//低8位TH=DS18B20_Read();//高8位temp=(TH<<8)|TL;//組合為16位溫度值return(temp>>4)10+(temp&0x0F)0.625;//轉(zhuǎn)換為×10格式}//數(shù)碼管顯示函數(shù)(動態(tài)掃描)voidDisplay(){staticucharpos=0;P2=0x00;//消隱switch(pos){case0:P2=0x01;P0=seg_table[temp_buf[3]];break;//符號位case1:P2=0x02;P0=seg_table[temp_buf[0]/10];break;//十位case2:P2=0x04;P0=seg_table[temp_buf[0]%10]|0x80;break;//個(gè)位(帶小數(shù)點(diǎn))case3:P2=0x08;P0=seg_table[temp_buf[1]];break;//小數(shù)位}pos=(pos+1)%4;delay_ms(2);//掃描間隔}voidmain(){inttemp;while(1){temp=Read_Temp();//讀取溫度值(×10)if(temp<0){//處理負(fù)溫度temp_buf[3]=0x40;//符號位('-'對應(yīng)段碼0x40)temp=-temp;}else{temp_buf[3]=0x00;//無符號}temp_buf[0]=temp/10;//整數(shù)部分(如25℃)temp_buf[1]=temp%10;//小數(shù)部分(如6)Display();//動態(tài)顯示}}```關(guān)鍵說明:DS18B20通過單總線通信,需嚴(yán)格遵循初始化、寫、讀時(shí)序。溫度值為16位補(bǔ)碼,其中低4位為小數(shù)部分(0.0625℃/位),轉(zhuǎn)換為×10格式便于顯示。數(shù)碼管采用動態(tài)掃描,依次顯示符號位、十位、個(gè)位(帶小數(shù)點(diǎn))、小數(shù)位。4.設(shè)計(jì)一個(gè)PWM控制直流電機(jī)轉(zhuǎn)速的程序(P2.0輸出PWM波,占空比0%-100%可調(diào),按鍵P3.1增加占空比,P3.2減少占空比,步長5%)。答案:```cinclude<reg52.h>defineucharunsignedchardefineuintunsignedintsbitMOTOR=P2^0;sbitKEY_ADD=P3^1;sbitKEY_SUB=P3^2;ucharpwm_duty=0;//占空比(0-20,對應(yīng)0%-100%,步長5%)ucharpwm_cnt=0;//PWM周期計(jì)數(shù)器(0-19)voidTimer0_Init(){TMOD=0x02;//T0模式2(

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論