單片機(jī)應(yīng)用技術(shù)第5版王靜霞習(xí)題答案_第1頁(yè)
單片機(jī)應(yīng)用技術(shù)第5版王靜霞習(xí)題答案_第2頁(yè)
單片機(jī)應(yīng)用技術(shù)第5版王靜霞習(xí)題答案_第3頁(yè)
單片機(jī)應(yīng)用技術(shù)第5版王靜霞習(xí)題答案_第4頁(yè)
單片機(jī)應(yīng)用技術(shù)第5版王靜霞習(xí)題答案_第5頁(yè)
已閱讀5頁(yè),還剩24頁(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)介

項(xiàng)目11.1單項(xiàng)選擇題(1)A(2)C(3)C (4)A(5)D1.2填空題(1)硬件系統(tǒng)(或電路)、軟件系統(tǒng)(或控制程序)(2)時(shí)鐘電路、復(fù)位電路(或者復(fù)位電路、時(shí)鐘電路)(3)XTAL1、XTAL2、RESET、EA(順序可以改變)(4)晶振(或者時(shí)鐘電路)(5)正(或陽(yáng))1.3中英文填空題,請(qǐng)分別寫出下面英文縮寫的中文和英文翻譯英文翻譯中文翻譯(1)CPUCentralProcessingUnit中央處理單元(2)RAMRandomAccessMemory隨機(jī)存取存儲(chǔ)器(3)ROMRead-OnlyMemory只讀存儲(chǔ)器(4)MCUMicro-ControllerUnit微控制器單元(5)I/OInput/Output輸入/輸出1.4問(wèn)答題(1)什么是單片機(jī)?它由哪幾部分組成? 答:?jiǎn)纹⑿陀?jì)算機(jī)(SingleChipMicrocomputer)簡(jiǎn)稱單片機(jī),是指集成在一個(gè)芯片上的微型計(jì)算機(jī),它的各種功能部件,包括CPU(CentralProcessingUnit)、存儲(chǔ)器(memory)、基本輸入/輸出(Input/Output,簡(jiǎn)稱I/O)接口電路、定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)等,都制作在一塊集成芯片上,構(gòu)成一個(gè)完整的微型計(jì)算機(jī)。(2)什么是單片機(jī)應(yīng)用系統(tǒng)?答:?jiǎn)纹瑱C(jī)應(yīng)用系統(tǒng)是以單片機(jī)為核心,配以輸入、輸出、顯示等外圍接口電路和控制程序,能實(shí)現(xiàn)一種或多種功能的實(shí)用系統(tǒng)。1.5設(shè)計(jì)題(1)利用51單片機(jī)的并行I/O端口P1口控制8?jìng)€(gè)發(fā)光二極管,請(qǐng)畫出電路圖。參考電路如下:(2)設(shè)計(jì)8?jìng)€(gè)燈同時(shí)閃爍的控制程序。參考程序如下:#include<reg51.h>//包含頭文件reg51.h,定義了51單片機(jī)的專用寄存器//函數(shù)名:delay//函數(shù)功能:實(shí)現(xiàn)軟件延時(shí)//形式參數(shù):無(wú)符號(hào)整型變量i,控制空循環(huán)的循環(huán)次數(shù)//返回值:無(wú)voiddelay(unsignedinti) //延時(shí)函數(shù){unsignedintk; for(k=0;k<i;k++);}voidmain() //主函數(shù){while(1){P1=0x00; delay(20000); //調(diào)用延時(shí)函數(shù),實(shí)際參數(shù)為20000P1=0xff; delay(20000); //調(diào)用延時(shí)函數(shù),實(shí)際參數(shù)為20000}}(3)設(shè)計(jì)控制程序?qū)崿F(xiàn)如下亮滅狀態(tài)?!瘛稹瘛稹瘛稹瘛鹆翜缌翜缌翜缌翜鐓⒖汲绦蛉缦拢?include<reg51.h>//包含頭文件reg51.h,定義了51單片機(jī)的專用寄存器voidmain() //主函數(shù){P1=0x55; while(1);}}項(xiàng)目2測(cè)驗(yàn)題參考答案及評(píng)分標(biāo)準(zhǔn)2.1單項(xiàng)選擇題(1)C(2)A (3)A(4)A(5)A(6)D(7)D(8)A(9)A(10)C2.2填空題(1)程序存儲(chǔ)器(或ROM)(2)工作寄存器組、位尋址區(qū)、用戶RAM(順序可調(diào))(3)1us、2us(4)按鍵復(fù)位、上電復(fù)位(9)2、高2.3中英文填空題(1)請(qǐng)分別寫出下面專業(yè)術(shù)語(yǔ)英文縮寫的中文和英文翻譯英文中文PCProgramCounter程序計(jì)數(shù)器②SFRSpecialFunctionRegister特殊功能寄存器③PSWProgramStatusWord程序狀態(tài)字④LEDLigthtEmittingDiode發(fā)光二極管⑤PCBPrintedCircuitBoard印刷電路板(2)請(qǐng)寫出下面專業(yè)術(shù)語(yǔ)的中文意思①Reset復(fù)位 ②Crystaloscillator晶體振蕩器(或晶振)③Code代碼 ④Data數(shù)據(jù)⑤Byte字節(jié) ⑥Bit位⑦delay延時(shí) ⑧debug調(diào)試⑨project工程(項(xiàng)目) ⑩memory存儲(chǔ)器2.4回答題(1)畫出51單片機(jī)的時(shí)鐘電路,并指出石英晶體和電容的取值范圍。參考答案:?jiǎn)纹瑱C(jī)時(shí)鐘電路如下圖。一般地,電容C1和C2取30pF左右;晶體振蕩器,簡(jiǎn)稱晶振,頻率范圍是1.2~12MHz。晶體振蕩頻率越高,系統(tǒng)的時(shí)鐘頻率也越高,單片機(jī)的運(yùn)行速度也就越快。在通常情況下,使用振蕩頻率為6MHz或12MHz的晶振。如果系統(tǒng)中使用了單片機(jī)的串行口通信,則一般采用振蕩頻率為11.0592MHz的晶振。(2)什么是機(jī)器周期?機(jī)器周期和晶振頻率有何關(guān)系?參考答案:51單片機(jī)采用定時(shí)控制方式,有固定的機(jī)器周期。規(guī)定一個(gè)機(jī)器周期的寬度為6個(gè)狀態(tài),即12個(gè)振蕩脈沖周期,因此機(jī)器周期就是振蕩脈沖的十二分頻。(3)51單片機(jī)常用的復(fù)位方法有幾種?畫出電路圖并說(shuō)明其工作原理。參考答案:2種,上電復(fù)位和按鍵復(fù)位。單片機(jī)常見(jiàn)的復(fù)位電路下圖所示。(a)上電復(fù)位電路。它利用電容充電來(lái)實(shí)現(xiàn)復(fù)位,在接電瞬間,RST端的電位與VCC相同,隨著充電電流的減少,RST的電位逐漸下降。只要保證RST為高電平的時(shí)間大于兩個(gè)機(jī)器周期,便能正常復(fù)位。(b)為按鍵復(fù)位電路。該電路除具有上電復(fù)位功能外,還可以按圖2.5(b)中的RESET鍵實(shí)現(xiàn)復(fù)位,此時(shí)電源VCC經(jīng)兩個(gè)電阻分壓,在RST端產(chǎn)生一個(gè)復(fù)位高電平。圖1.23中的信號(hào)燈控制電路就采用按鍵復(fù)位電路。(4)C51編譯器支持的存儲(chǔ)器類型有哪些?參考答案:?jiǎn)纹瑱C(jī)的存儲(chǔ)器結(jié)構(gòu)包括4個(gè)物理存儲(chǔ)空間,C51編譯器對(duì)這4個(gè)物理存儲(chǔ)空間都能支持。常見(jiàn)的C51編譯器支持的存儲(chǔ)器類型如下表所示。存儲(chǔ)器類型描述data直接訪問(wèn)內(nèi)部數(shù)據(jù)存儲(chǔ)器,允許最快訪問(wèn)(128B)bdata可位尋址內(nèi)部數(shù)據(jù)存儲(chǔ)器,允許位與字節(jié)混合訪問(wèn)(16B)idata間接訪問(wèn)內(nèi)部數(shù)據(jù)存儲(chǔ)器,允許訪問(wèn)整個(gè)內(nèi)部地址空間(256B)pdata“分頁(yè)”外部數(shù)據(jù)存儲(chǔ)器(256B)xdata外部數(shù)據(jù)存儲(chǔ)器(64KB)code程序存儲(chǔ)器(64KB)(5)請(qǐng)說(shuō)明sfr和sbit兩個(gè)關(guān)鍵字的作用。參考答案:Sfr用來(lái)定義所有專用寄存器,從而在程序中能夠直接訪問(wèn)他們;Sbit用來(lái)定義專用寄存器中的可尋址位的位名稱。2.5設(shè)計(jì)題(共15分)用單片機(jī)控制1個(gè)開(kāi)關(guān)和兩個(gè)發(fā)光二級(jí)管,開(kāi)關(guān)SW由單片機(jī)的P0.0控制,LED1和LED2由P1.0和P1.1控制,要求:畫出系統(tǒng)電路圖。②編程實(shí)現(xiàn)如下功能:控制系統(tǒng)在一個(gè)開(kāi)關(guān)SW的控制下,兩個(gè)發(fā)光二級(jí)管LED1、LED2交替亮滅,無(wú)論開(kāi)關(guān)SW是閉合還是斷開(kāi),同一時(shí)刻只能有一個(gè)LED點(diǎn)亮,另一個(gè)LED不亮。③編程實(shí)現(xiàn)如下功能:讓開(kāi)關(guān)SW控制兩個(gè)LED交替以閃爍方式亮滅,即當(dāng)SW斷開(kāi)時(shí),LED1閃爍、LED2不亮;當(dāng)SW閉合時(shí),LED1不亮、LED2閃爍。參考答案:①參考電路如下:②參考代碼如下:#include<REGX51.H>//包含頭文件REGX51.H,定義了51單片機(jī)的所有SFRsbitLED1=P1^0;//定義P1.0引腳位名稱為L(zhǎng)ED1sbitLED2=P1^1;//定義P1.1引腳位名稱為L(zhǎng)ED2sbitSW=P0^0;//定義P0.0引腳位名稱為SWvoidmain() //主函數(shù){while(1)//無(wú)限循環(huán){ LED1=SW;//采用位操作,開(kāi)關(guān)斷開(kāi)時(shí)P0.0引腳接高電平,點(diǎn)亮LED1 LED2=~SW;//采用位操作,開(kāi)關(guān)閉合時(shí)將接低電平的P0.0引腳狀態(tài)取反,點(diǎn)亮LED2 } } ③參考代碼如下:#include<REGX51.H>//包含頭文件REGX51.H,定義了51單片機(jī)的所有SFRsbitLED1=P1^0;//定義P1.0引腳位名稱為L(zhǎng)ED1sbitLED2=P1^1;//定義P1.1引腳位名稱為L(zhǎng)ED2sbitSW=P0^0;//定義P0.0引腳位名稱為SW//函數(shù)名:delay//函數(shù)功能:實(shí)現(xiàn)軟件延時(shí)//形式參數(shù):無(wú)符號(hào)整型變量i,控制空循環(huán)的循環(huán)次數(shù)//返回值:無(wú)voiddelay(unsignedinti){while(i--);//i次空操作}voidmain() //主函數(shù){while(1)//無(wú)限循環(huán){ LED1=~SW;//采用位操作,開(kāi)關(guān)斷開(kāi)時(shí)將接高電平的P0.0引腳狀態(tài)取反,點(diǎn)亮LED1 LED2=SW;//采用位操作,開(kāi)關(guān)閉合時(shí)P0.0引腳接低電平,點(diǎn)亮LED2 delay(20000); LED1=1; LED2=1; delay(20000); }}項(xiàng)目3測(cè)驗(yàn)題3.1單項(xiàng)選擇題(1)C(2)A(3)A(4)D(5)D(6)D(7)A(8)B(9)C(10)D3.2填空題(1)sbitFLAG=P3^1;(2)sfr(3)選擇、循環(huán)(可以調(diào)換順序)(4)ifelseif、switch(可以調(diào)換順序)(5)do-while語(yǔ)句、while語(yǔ)句(6)10000(7)unsignedchar3.3簡(jiǎn)答題(1)假定在單片機(jī)的P3.0引腳連接了1個(gè)按鍵K,按下時(shí),P3.0引腳為低電平,否則為高電平。請(qǐng)畫出電路圖,并寫出完成下面功能的語(yǔ)句。①檢測(cè)按鍵是否按下②檢測(cè)按鍵是否彈起③等待按鍵按下④等待按鍵彈起參考答案:參考電路如下。①檢測(cè)按鍵是否按下if(K==0)或者if(!K)②檢測(cè)按鍵是否彈起if(K==1)或者if(K)③等待按鍵按下while(K==1)或者while(K)④等待按鍵彈起while(K==0)或者while(!K)(2)51單片機(jī)控制外部輸入輸出設(shè)備時(shí),一般都需要加上驅(qū)動(dòng)電路,比如蜂鳴器,請(qǐng)問(wèn)驅(qū)動(dòng)電路的作用是什么?參考答案:?jiǎn)纹瑱C(jī)的并行IO口輸出電流都比較小,無(wú)法驅(qū)動(dòng)外部設(shè)備,所以需要增加驅(qū)動(dòng)電路,用來(lái)放大電流或功率,驅(qū)動(dòng)外設(shè)。3.4綜合題(1)填空,完成下面的程序。#include<reg51.h>;voidmain(){while(){P1=0xFF;(1200);P1=0x00;(1200);}}//函數(shù)名:delay//函數(shù)功能:實(shí)現(xiàn)軟件延時(shí)//形式參數(shù):整型變量i,控制循環(huán)次數(shù)//返回值:無(wú)voiddelay(unsignedinti){for(k=0;k<i;k++);}參考答案:voiddelay(unsignedinti);1DelayDelayUnsignedintk;(2)利用單片機(jī)P3.0~P3.3控制4個(gè)按鍵K0~K3,按下為低電平,彈起為高電平;P1.0~P1.3控制4個(gè)發(fā)光二極管,低電平點(diǎn)亮;請(qǐng)?jiān)O(shè)計(jì)一個(gè)4人搶答器,要求編程實(shí)現(xiàn),當(dāng)有某一參賽者首先按下?lián)尨痖_(kāi)關(guān)時(shí),相應(yīng)的LED燈亮,此時(shí)搶答器不再接受其他輸入信號(hào),需按復(fù)位按鍵才能重新開(kāi)始搶答。參考程序://功能:實(shí)用4路搶答器程序#include<reg51.h>sbitP3_0=P3^0;//定義P3.0引腳名稱為P3_0sbitP3_1=P3^1;//定義P3.1引腳名稱為P3_1sbitP3_2=P3^2;//定義P3.2引腳名稱為P3_2sbitP3_3=P3^3;//定義P3.3引腳名稱為P3_3voidmain() //主函數(shù){ bitflag;//定義位變量flag while(!flag) { if(!P3_0) { P1=0xfe; flag=1; } elseif(!P3_1) { P1=0xfd; flag=1; } elseif(!P3_2) { P1=0xfb; flag=1; } elseif(!P3_3) { P1=0xf7; flag=1; } while(flag); }}3.假定單片機(jī)的P2口控制8個(gè)LED,灌電流方式,請(qǐng)?jiān)O(shè)計(jì)8個(gè)LED反復(fù)從中間到兩邊,再?gòu)膬蛇叺街虚g依次點(diǎn)亮的霓虹燈效果,時(shí)間間隔沒(méi)有要求。參考答案:#include<regx51.h>voiddelay(){unsignedinti;for(i=0;i<20000;i++);}voidmain(){unsignedchari;//定義變量iP2=0xff;//滅燈while(1){for(i=0;i<4;i++){P2=~((0x01<<i)|(0x80>>i));delay();}for(i=0;i<4;i++){P2=~((0x10<<i)|(0x08>>i));delay();}}}項(xiàng)目4測(cè)驗(yàn)題4.1單項(xiàng)選擇題(1)A(2)C(3)B(4)C(5)D(6)B(7)C(8)D(9)D(10)C4.2英漢互譯填空(每空2分,共20分)(1)LEDLightEmittingDiode

發(fā)光二極管(2)LCDLiquidCrystalDisplay液晶顯示器(3)鍵盤 keyboard (4)命令command(5)清屏 clear(6)初始化initialization;

initialize (7)讀/寫 read/write (8)函數(shù) function (9)數(shù)組 array (10)返回 return 4.3程序填空題(1)一個(gè)共陽(yáng)極數(shù)碼管,8個(gè)段引腳a~dp連接在P1口的P1.0~P1.7,公共端接+5V,下面程序完成上電復(fù)位后循環(huán)顯示數(shù)字0~9,請(qǐng)?zhí)顚懣瞻滋幍拇a,完成程序設(shè)計(jì)。#include<regx51.h>voiddelay(){unsignedinti;for(i=0;i<10000;i++);}voidmain(){unsignedcharled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedchark;{for(k=0;;k++){P1=;//點(diǎn)亮數(shù)碼管if();;//調(diào)用延時(shí)}}while(1);}參考答案:doled[k]k>=10breakdelay()(2)假定單片機(jī)控制6個(gè)共陽(yáng)極數(shù)碼管,段選口由P1口控制,位選由P2.0~P2.5控制,下面程序?qū)崿F(xiàn)穩(wěn)定交替顯示"901225"和"125315"兩屏內(nèi)容,請(qǐng)?zhí)顚懣瞻滋幍拇a,完成程序設(shè)計(jì)。//功能:六位數(shù)碼管動(dòng)態(tài)交替穩(wěn)定顯示"901225"和"125315"兩屏內(nèi)容#include<regx51.h>//包含頭文件regx51.h,定義51單片機(jī)的專用寄存器voiddelay(unsignedinti); //延時(shí)函數(shù)聲明//函數(shù)名:ledscan//函數(shù)功能:實(shí)現(xiàn)六個(gè)數(shù)碼管掃描一遍//形式參數(shù):顯示碼數(shù)組,長(zhǎng)度為6//返回值:無(wú)voidledscan(unsignedcharled[]){ unsignedchari,com[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//一維數(shù)組存儲(chǔ)位選碼 for(i=0;i<6;i++) { ;//關(guān)顯示 P2=;//位選碼送位控制口P2口 P1=;//顯示字型碼送P1口 delay(100); //延時(shí) }}voidmain() //主函數(shù){ unsignedcharlednum[2][6]={{0x90,0xc0,0xf9,0xa4,0xa4,0x92},{0xf9,0xa4,0x92,0xb0,0xf9,0x92}}; //二維數(shù)組存儲(chǔ)910812、102315的字型碼 unsignedchari,num; while(1) { for(num=0;;num++)//顯示兩屏字符 for(i=0;i<100;i++)//循環(huán)顯示一屏字符100次,達(dá)到穩(wěn)定顯示作用 ledscan(); } }voiddelay(unsignedinti) //延時(shí)函數(shù)省略參考答案:P1=0xffcom[i]led[i]num<2lednum[num]4.4程序設(shè)計(jì)題(共計(jì)40分)(1)一個(gè)共陽(yáng)極數(shù)碼管,8個(gè)段引腳a~dp連接在P1口的P1.0~P1.7,公共端接+5V,在P3.0引腳連接一個(gè)按鍵,按下時(shí)為低電平,請(qǐng)編程實(shí)現(xiàn),系統(tǒng)上電時(shí),數(shù)碼管穩(wěn)定顯示0-F(加1計(jì)數(shù)),當(dāng)按鍵按下時(shí),系統(tǒng)顯示F-0(減1計(jì)數(shù))。參考代碼如下。#include<regx51.h>//包含頭文件regx51.h,定義了51單片機(jī)的專用寄存器sbitkey=P3^0;voiddelay(unsignedinti) //延時(shí)函數(shù){ unsignedintk; for(k=0;k<i;k++);}voidmain()//主函數(shù){ unsignedchari; unsignedcharcodedisp[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //定義數(shù)組led,依次存儲(chǔ)包括0~Fi=0;while(1){ if(key==0){delay(1000);if(key==0){P1=disp[i];if(i==0)i=16;i--;delay(10000);}}else{P1=disp[i];i++;if(i==16)i=0;delay(10000);} } }(2)請(qǐng)用89C51設(shè)計(jì)一個(gè)廣告牌來(lái)顯示一顆愛(ài)心,電路設(shè)計(jì)如圖1所示,請(qǐng)編寫程序。圖18*8點(diǎn)陣電路參考代碼如下。#include"regx51.h"http://包含頭文件regx51.h,定義了51單片機(jī)的專用寄存器voiddelay(unsignedinti)//延時(shí)函數(shù){ unsignedintk; for(k=0;k<i;k++);}voidmain()//主函數(shù){ unsignedcharcodeled[]={0xff,0x93,0x01,0x01,0x83,0xc7,0xef,0xff}; unsignedcharw; unsignedinti; while(1) { w=0x01;//行初值為0x01 for(i=0;i<8;i++) { P1=w;//行數(shù)據(jù)送P1口 P0=~led[i];//列數(shù)據(jù)送P0口 delay(100); w<<=1;//行變量左移指向下一行 } }}(3)(20分)假定已定義兩個(gè)頭文件lcd.h和key.h分別如下:key.h如下:charkey.h如下:charkeyscan();//矩陣鍵盤掃描函數(shù),如果有鍵按下,返回0-15,無(wú)鍵按下,則返回-1lcd.h如下:voidlcd_w_cmd(unsignedcharcom);//寫命令字函數(shù)voidlcd_w_dat(unsignedchardat);//寫數(shù)據(jù)函數(shù)unsignedcharlcd_r_start();//讀狀態(tài)函數(shù)voidlcd_int(); //LCD初始化函數(shù)voiddelay(unsignedinti);//可控延時(shí)函數(shù)請(qǐng)調(diào)用以上函數(shù),編寫程序?qū)崿F(xiàn)如下功能,鍵盤按下的鍵值顯示在LCD的第2行第1列。參考代碼如下。#include<REGX51.H>#include<lcd.H>#include<key.H>voidmain(){chark;lcd_init();while(1){ k=keyscan(); if(k==-1)continue; else { lcd_w_cmd(0x01); lcd_w_cmd(0xc0); lcd_w_dat(k/10+48); lcd_w_dat(k%10+48); }}}項(xiàng)目5測(cè)驗(yàn)題(測(cè)驗(yàn)時(shí)間75分鐘,共計(jì)100分)5.1單項(xiàng)選擇題(每題2分,共計(jì)30分)(1)B(2)A(3)A(4)A(5)B(6)B(7)D(8)A(9)D(10)A(11)C(12)D(13)C(14)D(15)B5.2專業(yè)詞匯翻譯填空(每空2分,共10分)(1)定時(shí)器timer (2)計(jì)數(shù)器counter(3)interrupt 中斷 (4)溢出 overflow (5)優(yōu)先級(jí) priority 5.3簡(jiǎn)答題(每題5分,共計(jì)30分)(1)軟件延時(shí)與硬件定時(shí)的原理有何異同?參考答案:軟件定時(shí)是靠CPU運(yùn)行空操作實(shí)現(xiàn)的,CPU在定時(shí)時(shí)不能進(jìn)行其它操作,白白占用CPU時(shí)間。硬件定時(shí)是指采用單片機(jī)內(nèi)部定時(shí)器實(shí)現(xiàn)定時(shí),當(dāng)定時(shí)器進(jìn)行計(jì)數(shù)操作時(shí),CPU可以進(jìn)行其它操作。(2)當(dāng)定時(shí)/計(jì)數(shù)器在工作方式1下,晶振頻率為6MHz,請(qǐng)計(jì)算最短和最長(zhǎng)定時(shí)時(shí)間各是多少?參考答案:工作方式1的計(jì)數(shù)模值是65536,機(jī)器周期2us,所以最短定時(shí)時(shí)間為2us,最長(zhǎng)定時(shí)時(shí)間為:2us*65536=130ms。(3)查詢和中斷都是CPU控制外設(shè)的方式,請(qǐng)說(shuō)明二者的特點(diǎn)?參考答案:查詢方式占用CPU時(shí)間。中斷方式具有實(shí)時(shí)性和并行性,提高CPU工作效率。(4)假定晶振頻率為6MHz,采用51單片機(jī)T1的工作方式0定時(shí)10ms,工作方式1定時(shí)125ms和工作方式2定時(shí)130us,請(qǐng)寫出三種工作方式下的賦值語(yǔ)句。參考答案:方式0:TH1=(8192-10000/2)/32=692/32;(4分)TL1=(8192-10000/2)%32=692%32;方式1:TH1=(65536-125000/2)/256=3036/256;(4分)TL1=(65536-125000/2)%256=3036%256;方式2:TH1=256-130/2=191;(2分)TL1=256-130/2=191;5.4綜合設(shè)計(jì)題(共計(jì)30分)(1)圖1所示AT89C51的P2口連接了8個(gè)按鍵,用來(lái)控制P1口的發(fā)光二極管點(diǎn)亮,當(dāng)S0按下時(shí),LED0點(diǎn)亮;S1按下時(shí),LED1點(diǎn)亮,以此類推,S7按下時(shí),LED7點(diǎn)亮,不斷循環(huán)這個(gè)過(guò)程,請(qǐng)根據(jù)要求填空。圖1LED與按鍵電路#include<reg51.h>voiddelay10ms()//用定時(shí)器0實(shí)現(xiàn)10ms定時(shí),晶振頻率6MHz{(1);//定時(shí)器0方式設(shè)置TH0=(2);//定時(shí)10ms初值的高8位TL0=(3);//定時(shí)10ms初值的低8位TR0=1;(4);//判斷是否溢出?(5);//溢出標(biāo)志位清0}voidmain(){unsignedchari;P1=0xff;//熄滅8個(gè)發(fā)光二極管P2=0xff;//P2口作為輸入先置1while(1){do//判斷有沒(méi)有按鍵按下{i=P2;}while(i==0xff);delay10ms();//該語(yǔ)句的目的(6)do{i=P2;}while(i==0xff);switch((7)){case0x7f:(8);break;//S0按下,LED0點(diǎn)亮case0xbf:P1=0xfd;break;//S1按下,LED1點(diǎn)亮case0xdf:P1=0xfb;break;//S2按下,LED2點(diǎn)亮case0xef:(9);break;//S3按下,LED3點(diǎn)亮case0xf7:P1=0xef;break;//S4按下,LED4點(diǎn)亮case0xfb:P1=0xdf;break;//S5按下,LED5點(diǎn)亮case(10):P1=0xbf;break;//S6按下,LED6點(diǎn)亮case0xfe:P1=0x7f;break;//S7按下,LED7點(diǎn)亮}(1)TMOD=0x00(6)延時(shí)去抖(2)3192/32(7)i(3)3192%32(8)P1=0xfe(4)while(!TF0)(9)P1=0xf7(5)TF0=0(10)0xfd(2)(20分)可控霓虹燈設(shè)計(jì),P1口有8?jìng)€(gè)發(fā)光二極管,連接方式如圖1所示,在P3.2引腳連接一個(gè)按鍵,通過(guò)按鍵改變霓虹燈的顯示方式,要求正常情況下8?jìng)€(gè)霓虹燈依次順序點(diǎn)亮,循環(huán)顯示,時(shí)間間隔為1s(假定晶振頻率為12MHz,采用T1方式1中斷實(shí)現(xiàn));當(dāng)按鍵按下后8?jìng)€(gè)霓虹燈同時(shí)閃爍一次,時(shí)間間隔沒(méi)有要求(按鍵動(dòng)作采用外部中斷0實(shí)現(xiàn))參考程序:#include<REGX51.H>//包含頭文件REGX51.H,定義了51單片機(jī)的所有SFR#include<INTRINS.H>sbitK1=P3^2; //定義P3.2引腳的位名稱為K1voiddelayms(unsignedintms) {unsignedinti;while(ms--){//for(i=0;i<112;i++)//11.0592M晶體 for(i=0;i<120;i++);//12M晶體}}voidmain() //主函數(shù){TMOD=0x10; //設(shè)置T1,定時(shí),方式1EX0=1; //外部中斷0允許位IT0=1; //設(shè)置外部中斷0為下降沿觸發(fā)方式PX0=1;//設(shè)置外部中斷0為高優(yōu)先級(jí)ET1=1; TH1=(65536-50000)/256;//重新設(shè)置T0計(jì)數(shù)初值高8位,定時(shí)時(shí)間50msTL1=(65536-50000)%256;//重新設(shè)置T0計(jì)數(shù)初值低8位TR1=1; //啟動(dòng)T0EA=1;//允許所有中斷P1=0xfe; //設(shè)置左移流水燈初值while(1) //無(wú)限循環(huán){;}}voidt_1()interrupt3{ staticunsignedchari50=0; TH1=(65536-50000)/256;//重新設(shè)置T0計(jì)數(shù)初值高8位,定時(shí)時(shí)間50msTL1=(65536-50000)%256;//重新設(shè)置T0計(jì)數(shù)初值低8位 i50++; if(i50==20) { i50=0; P1=_crol_(P1,1); }}voidint_0()interrupt0//外部中斷0的中斷服務(wù)函數(shù),中斷號(hào)為0{unsignedcharj;j=P1;P1=0x00; //熄滅8個(gè)LEDdelayms(300);//延時(shí)P1=0xff; //點(diǎn)亮8個(gè)LED delayms(300);//延時(shí) P1=0x00; //熄滅8個(gè)LEDdelayms(300);//延時(shí) P1=j; }項(xiàng)目6測(cè)驗(yàn)題(測(cè)驗(yàn)時(shí)間90分鐘,共計(jì)100分)6.1單項(xiàng)選擇題(每題2分,共計(jì)40分)(1)B(2)D(3)B(4)A(5)B(6)B(7)A(8)B(9)C(10)B(11)D(12)C(13)B(14)C(15)C(16)A(17)C(18)D(19)A(20)D6.2專業(yè)詞匯翻譯填空(每空1分,共20分)1.英漢互譯(每空1分,共10分)(1)單工simplex (2)半雙工halfduplex(3)全雙工 fullduplex (4)異步通信 Asynchronouscommunication(5)同步通信 synchronouscommunication (6)發(fā)送transmit(7)接收receive (8)SerialI/O串行輸入輸出(9)Baudrate波特率 (10)characterframe字符幀2.寫出下列縮寫專業(yè)詞匯的中文和英文全稱(每空1分,共10分)序號(hào)英文縮寫英文全寫中文翻譯(1)UARTUniversalAsynchronousReceiver/Transmitter通用異步接收/發(fā)送裝置(2)I2CInter-IntegratedCircuit內(nèi)置集成電路(3)SPISerialPeripheralinterface串行外圍設(shè)備接口(4)USBUniversalSerialBUS通用串行總線(5)bpsbitspersecond每秒位數(shù)或者位/秒6.3簡(jiǎn)答題(共計(jì)20分)(1)什么是串行異步通信?說(shuō)明異步通信的字符幀格式。答:在異步通信中,數(shù)據(jù)通常是以字符為單位組成字符幀傳送的。字符幀由發(fā)送端一幀一幀地發(fā)送,每一幀數(shù)據(jù)是低位在前,高位在后,通過(guò)傳輸線由接收端一幀一幀地接收。發(fā)送端和接收端分別使用各自獨(dú)立的時(shí)鐘來(lái)控制數(shù)據(jù)的發(fā)送和接收,這兩個(gè)時(shí)鐘彼此獨(dú)立,互不同步。字符幀也稱數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位四部分組成,(1)起始位:位于字符幀開(kāi)頭,只占一位,為邏輯0低電平,用于向接收設(shè)備表示發(fā)送端開(kāi)始發(fā)送一幀信息。(2)數(shù)據(jù)位:緊跟起始位之后,根據(jù)情況可?。滴弧ⅲ段?、7位或8位,低位在前,高位在后。(3)奇偶校驗(yàn)位:位于數(shù)據(jù)位之后,僅占一位,用來(lái)表示串行通信中采用奇校驗(yàn)還是偶校驗(yàn),由用戶編程決定。(4)停止位:位于字符幀最后,為邏輯1高電平。通??扇。蔽?、15位或2位,用于向接收端表示一幀字符信息已經(jīng)發(fā)送完,也為發(fā)送下一幀做準(zhǔn)備。(2)定時(shí)器T1做串行口波特率發(fā)生器時(shí),為什么采用工作方式2?答:實(shí)際上,當(dāng)定時(shí)器T1做波特率發(fā)生器使用時(shí),通常是工作在定時(shí)器的模式2下,即作為一個(gè)自動(dòng)重裝載的8位定時(shí)器,TL1做計(jì)數(shù)用,自動(dòng)重裝載的值在TH1內(nèi)。(3)編寫查詢方式下等待發(fā)送和等待接收一個(gè)字符的函數(shù)。答:等待發(fā)送一個(gè)字符函數(shù):Voidtransmit(unsignedchardat){SBUF=dat;while(!TI);//等待發(fā)送是否完畢TI=0;}等待接收一個(gè)字符函數(shù):unsignedcharreceive(){while(!RI);//等待發(fā)送是否完畢RI=0;returnSBUF;}6.4綜合設(shè)計(jì)題(共計(jì)20分)(1)利用串行口擴(kuò)展并行口方法控制4位靜態(tài)LED顯示,系統(tǒng)采用4片74LS164級(jí)聯(lián),P3.0連接第一個(gè)芯片串行數(shù)據(jù)輸入端A,B,P3.1連接該芯片時(shí)鐘端CLK,P1.0連接該芯片清除端CLR,編寫程序要求4位LED每隔1s交替顯示“1234”參考程序如下:#include"reg51.h"http://包含頭文件reg51.h,定義51單片機(jī)的專用寄存器unsignedcharda[]={0xF9,0xA4,0xB0,0x99};//定義1~4的共陽(yáng)極字型顯示碼unsignedcharda1[]={0x92,0x82,0x0F8,0x80};//定義5~8的共陽(yáng)極字型voiddelay1s(){unsignedchari;for(i=0;i<0x20;i++) //設(shè)置20次循環(huán)次數(shù){ TH0=0x3c; //設(shè)置定時(shí)器初值TL0=0xb0;TR0=1; //啟動(dòng)T0while(!TF0);//查詢計(jì)數(shù)是否溢出,即定時(shí)50ms時(shí)間到,TF0=0TF0=0; //50ms定時(shí)時(shí)間到,將定時(shí)器溢出標(biāo)志位TF0清零}}main(){ unsignedchari; P1=0xff; //P1.0置1,允許串行移位 SCON=0x00; //設(shè)串行口方式0TMOD=0x01; //設(shè)置T0為工作方式1 while(1){ for(i=0;i<4;i++) { SBUF=da[i]; //送顯示數(shù)據(jù)1234 TI=0; while(!TI); //等待發(fā)送完畢 }delay1s();for(i=0;i<4;i++) { SBUF=da1[i]; //送顯示數(shù)據(jù)5678 TI=0; while(!TI); //等待發(fā)送完畢 }}}(2)實(shí)現(xiàn)一個(gè)單片機(jī)與PC機(jī)之間的串行口通信測(cè)試系統(tǒng)。系統(tǒng)中,單片機(jī)通過(guò)串口與PC機(jī)通信,同時(shí)P1口連接8個(gè)發(fā)光二級(jí)管LED。正常情況下,8個(gè)發(fā)光二級(jí)管閃爍,當(dāng)接收PC機(jī)發(fā)送的字符時(shí),回送給PC機(jī)相同字符。同時(shí),如果接收的字符為’A’,則LED左移流水燈顯示一遍,繼續(xù)閃爍;如果接收的字符為’B’,則LED右移流水燈顯示一遍,再返回閃爍狀態(tài)。請(qǐng)畫出電路圖,并編寫單片機(jī)控制代碼。參考電路如下:參考代碼如下:?jiǎn)纹瑱C(jī)通信程序如下。//程序:ex38.c//功能:?jiǎn)纹瑱C(jī)通信程序,接收采用中斷方式實(shí)現(xiàn)#include<REGX51.H> //包含頭文件REGX51.H,定義了51單片機(jī)的所有SFR #include<INTRINS.h> //包含頭文件INTRINS.h,定義了移位函數(shù)unsignedcharRecbyte;//全局變量,存放接收的字符//函數(shù)名:delay//函數(shù)功能:實(shí)現(xiàn)軟件延時(shí)//形式參數(shù):無(wú)符號(hào)整型變量i,控制空循環(huán)的循環(huán)次數(shù)//返回值:無(wú)voiddelay(unsignedinti){while(i--);}//函數(shù)名:flash//函數(shù)功能:8個(gè)LED閃爍一次//形式參數(shù):無(wú)//返回值:無(wú)voidflash(){P1=0x00;//點(diǎn)亮8個(gè)LED delay(10000); P1=0xff;//熄滅8個(gè)LED delay(10000);}//函數(shù)名:lsd1//函數(shù)功能:8個(gè)LED逐一點(diǎn)亮一次,左移方向//形式參數(shù):無(wú)//返回值:無(wú)voidlsd1(){unsignedchari,w; w=0xfe; //流水燈初值 for(i=0;i<8;i++) { P1=w; delay(10000); w=_crol_(w,1); //循環(huán)左移1位 }}//函數(shù)名:lsd2//函數(shù)功能:8個(gè)LED逐一點(diǎn)亮一次,右移方向//形式參數(shù):無(wú)//返回值:無(wú)voidlsd2(){unsignedchari,w; w=0x7f; //流水燈初值 for(i=0;i<8;i++) { P1=w; delay(10000); w=_cror_(w,1); //循環(huán)右移1位 }}//函數(shù)名:sendbyte//函數(shù)功能:向串口發(fā)送一個(gè)字符,采用查詢方式實(shí)現(xiàn)//形式參數(shù):無(wú)符號(hào)整型變量i,定義發(fā)送的字符//返回值:無(wú)voidsendbyte(unsignedchari){SBUF=i; //發(fā)送字符寫入SBUFwhile(!TI); //查詢TI是否由0變1TI=0; //軟件給TI清0} voidmain() //主函數(shù){ TMOD=0x20; //設(shè)置定時(shí)器T1為方式2 TL1=0xfd; //波特率為9600b/s TH1=0xfd; TR1=1; SCON=0x40; //定義串行口工作于方式1,不接收 PCON=0x00; //SMOD=0 ES=1; //開(kāi)串行口中斷EA=1; //開(kāi)總中斷允許位 REN=1; //接收允許Recbyte=0; //接收字符初值0 while(1) {switch(Recbyte) { case'A':lsd1();Recbyte=0;break; //左移流水燈 case'B':lsd2();Recbyte=0;break; //右移流水燈 default:flash(); //閃爍 } }}//函數(shù)名:serial//函數(shù)功能:串行口中斷接收函數(shù)//形式參數(shù):無(wú)//返回值:無(wú)voidserial()interrupt4 //串口中斷類型號(hào)為4{EA=0; //關(guān)中斷RI=0; //軟件清除中斷標(biāo)志位 Recbyte=SBUF; //接收數(shù)據(jù) sendbyte(Recbyte);//再送回PC機(jī)EA=1; //開(kāi)中斷}項(xiàng)目7測(cè)驗(yàn)題(測(cè)驗(yàn)時(shí)間90分鐘,共計(jì)100分)7.1單項(xiàng)選擇題(1)A(2)A(3)C(4)A(5)B(6)A(7)B(8)A(9)C(10)B7.2填空題(每空2分,共計(jì)40分)(1)模擬信號(hào)的英文是Analogsignal;數(shù)字信號(hào)的英文是Digitalsignal。(2)模擬信號(hào)是一種振幅和相位都連續(xù)的信號(hào);人為抽象出來(lái)的在時(shí)間上不連續(xù)的信號(hào),并用0和1的有限組合來(lái)表示的信號(hào)是數(shù)字信號(hào)。大自然的信號(hào)一般都是模擬信號(hào)。(3)D/A轉(zhuǎn)換器的作用是將數(shù)字量轉(zhuǎn)為模擬量,A/D轉(zhuǎn)換器的作用是將模擬量轉(zhuǎn)為數(shù)字量。(4)10位ADC轉(zhuǎn)換后的數(shù)字量范圍用十進(jìn)制表示是0到1023。(5)A/D轉(zhuǎn)換器的精度是指與數(shù)字輸出量所對(duì)應(yīng)的模擬輸入量的實(shí)際值與理論值之間的差值。(6)

I2C總線以字節(jié)為單位傳送數(shù)據(jù),首先傳送的是數(shù)據(jù)的最高位(MSB)。

(7)對(duì)于I2C總線,SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào);SCL線為高電平期間,SDA線由低電平向高電平的變化表示結(jié)束信號(hào)。(8)I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。(9)如果PCF8591芯片的地址線A2A1A0接地,那么該器件寫地址是90H,讀地址是91H。7.3簡(jiǎn)答題(共計(jì)20分)(1)判斷A/D轉(zhuǎn)換是否結(jié)束,一般可采用幾種方式?每種方式有何特點(diǎn)?答:查詢方式,CPU通過(guò)查詢轉(zhuǎn)換結(jié)束標(biāo)志位確認(rèn)轉(zhuǎn)換結(jié)束后,再執(zhí)行后面的操作,占用CPU時(shí)間;中斷方式,轉(zhuǎn)換結(jié)束后向CPU申請(qǐng)中斷,CPU在中斷服務(wù)函數(shù)中讀取轉(zhuǎn)換值,不占用CPU時(shí)間;延時(shí)方式,如果知道A/D轉(zhuǎn)換時(shí)間,可以在轉(zhuǎn)換開(kāi)始后直接延時(shí)超過(guò)該時(shí)間的時(shí)間,占用CPU時(shí)間。(2)寫出采用51單片機(jī)模擬I2C總線的開(kāi)始信號(hào)和結(jié)束信號(hào)的函數(shù),假定I2C的兩條信號(hào)線定義為SDA和SCL,延時(shí)函數(shù)名為delayNOP()。答://函數(shù)名:iic_start//函數(shù)功能:?jiǎn)?dòng)I2C總線,即發(fā)送I2C起始條件//形式參數(shù):無(wú)//返回值:無(wú)voidiic_start(){SDA=1;//時(shí)鐘保持高,數(shù)據(jù)線從高到低一次跳變,I2C通信開(kāi)始SCL=1;delayNOP();//起始條件建立時(shí)間大于4.7us,延時(shí)SDA=0;delayNOP();//起始條件鎖定時(shí)間大于4μsSCL=0;//鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù)}//函數(shù)名:iic_stop//函數(shù)功能:停止I2C總線數(shù)據(jù)傳送//形式參數(shù):無(wú)//返回值:無(wú)voidiic_stop(){SDA=0;//時(shí)鐘保持高,數(shù)據(jù)線從低到高一次跳變,I2C通信停止SCL=1;delayNOP();SDA=1;delayNOP();SCL=0;}7.4綜合設(shè)計(jì)題(共計(jì)20分)(1)采用A/D轉(zhuǎn)換芯片ADC0809采集0~5V連續(xù)可變的模擬電壓信號(hào),轉(zhuǎn)變?yōu)?位數(shù)字信號(hào)00~FFH后,送單片機(jī)處理,并在兩位數(shù)碼管上顯示出來(lái)0.0~5.0V(小數(shù)點(diǎn)不用顯示)。0~5V的模擬電壓信號(hào)通過(guò)調(diào)節(jié)電位器來(lái)獲得。畫出電路圖并編寫程序代碼。參考電路如下:74LS74是雙D觸發(fā)器芯片,在這

溫馨提示

  • 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)論