單片機(jī)應(yīng)用技術(shù)(經(jīng)典項(xiàng)目化案例式新形態(tài)活頁教材)第5版 項(xiàng)目測驗(yàn)1-7參考答案匯 王靜霞_第1頁
單片機(jī)應(yīng)用技術(shù)(經(jīng)典項(xiàng)目化案例式新形態(tài)活頁教材)第5版 項(xiàng)目測驗(yàn)1-7參考答案匯 王靜霞_第2頁
單片機(jī)應(yīng)用技術(shù)(經(jīng)典項(xiàng)目化案例式新形態(tài)活頁教材)第5版 項(xiàng)目測驗(yàn)1-7參考答案匯 王靜霞_第3頁
單片機(jī)應(yīng)用技術(shù)(經(jīng)典項(xiàng)目化案例式新形態(tài)活頁教材)第5版 項(xiàng)目測驗(yàn)1-7參考答案匯 王靜霞_第4頁
單片機(jī)應(yīng)用技術(shù)(經(jīng)典項(xiàng)目化案例式新形態(tài)活頁教材)第5版 項(xiàng)目測驗(yàn)1-7參考答案匯 王靜霞_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目1測驗(yàn)題參考答案及評分標(biāo)準(zhǔn)1.1單項(xiàng)選擇題(每題2分,共計10分)(1)A(2)C(3)C (4)A(5)D1.2填空題(每空2分,共計20分)(1)硬件系統(tǒng)(或電路)、軟件系統(tǒng)(或控制程序)(2)時鐘電路、復(fù)位電路(或者復(fù)位電路、時鐘電路)(3)XTAL1、XTAL2、RESET、EA(順序可以改變)(4)晶振(或者時鐘電路)(5)正(或陽)1.3中英文填空題,請分別寫出下面英文縮寫的中文和英文翻譯(每空2分,共計20分)英文翻譯中文翻譯(1)CPUCentralProcessingUnit中央處理單元(2)RAMRandomAccessMemory隨機(jī)存取存儲器(3)ROMRead-OnlyMemory只讀存儲器(4)MCUMicro-ControllerUnit微控制器單元(5)I/OInput/Output輸入/輸出1.4問答題(每題10分,共計20分)(1)什么是單片機(jī)?它由哪幾部分組成? 答:單片微型計算機(jī)(SingleChipMicrocomputer)簡稱單片機(jī),是指集成在一個芯片上的微型計算機(jī)(5分),它的各種功能部件,包括CPU(CentralProcessingUnit)、存儲器(memory)、基本輸入/輸出(Input/Output,簡稱I/O)接口電路、定時/計數(shù)器和中斷系統(tǒng)等,都制作在一塊集成芯片上,構(gòu)成一個完整的微型計算機(jī)(5分)。(2)什么是單片機(jī)應(yīng)用系統(tǒng)?答:單片機(jī)應(yīng)用系統(tǒng)是以單片機(jī)為核心,配以輸入、輸出、顯示等外圍接口電路和控制程序,能實(shí)現(xiàn)一種或多種功能的實(shí)用系統(tǒng)。(10分)1.5設(shè)計題(每題10分,共計30分)(1)利用51單片機(jī)的并行I/O端口P1口控制8個發(fā)光二極管,請畫出電路圖。參考電路如下:(2)設(shè)計8個燈同時閃爍的控制程序。參考程序如下:#include<reg51.h>//包含頭文件reg51.h,定義了51單片機(jī)的專用寄存器//函數(shù)名:delay//函數(shù)功能:實(shí)現(xiàn)軟件延時//形式參數(shù):無符號整型變量i,控制空循環(huán)的循環(huán)次數(shù)//返回值:無voiddelay(unsignedinti) //延時函數(shù){unsignedintk; for(k=0;k<i;k++);}voidmain() //主函數(shù){while(1){P1=0x00; delay(20000); //調(diào)用延時函數(shù),實(shí)際參數(shù)為20000P1=0xff; delay(20000); //調(diào)用延時函數(shù),實(shí)際參數(shù)為20000}}(3)設(shè)計控制程序?qū)崿F(xiàn)如下亮滅狀態(tài)。●○●○●○●○亮滅亮滅亮滅亮滅參考程序如下:#include<reg51.h>//包含頭文件reg51.h,定義了51單片機(jī)的專用寄存器voidmain() //主函數(shù){P1=0x55; while(1);}}項(xiàng)目2測驗(yàn)題參考答案及評分標(biāo)準(zhǔn)(測驗(yàn)時間60分鐘,共計100分)2.1單項(xiàng)選擇題(每題2分,共20分)(1)C(2)A (3)A(4)A(5)A(6)D(7)D(8)A(9)A(10)C2.2填空題(每題2分,共20分)(1)程序存儲器(或ROM)(2)工作寄存器組、位尋址區(qū)、用戶RAM(順序可調(diào))(3)1us、2us(4)按鍵復(fù)位、上電復(fù)位(9)2、高2.3中英文填空題(共計20分)(1)請分別寫出下面專業(yè)術(shù)語英文縮寫的中文和英文翻譯(每空1分,共10分)英文中文PCProgramCounter程序計數(shù)器②SFRSpecialFunctionRegister特殊功能寄存器③PSWProgramStatusWord程序狀態(tài)字④LEDLigthtEmittingDiode發(fā)光二極管⑤PCBPrintedCircuitBoard印刷電路板(2)請寫出下面專業(yè)術(shù)語的中文意思(每空1分,共10分)①Reset復(fù)位 ②Crystaloscillator晶體振蕩器(或晶振)③Code代碼 ④Data數(shù)據(jù)⑤Byte字節(jié) ⑥Bit位⑦delay延時 ⑧debug調(diào)試⑨project工程(項(xiàng)目) ⑩memory存儲器2.4回答題(每題5分,共25分)(1)畫出51單片機(jī)的時鐘電路,并指出石英晶體和電容的取值范圍。參考答案:單片機(jī)時鐘電路如下圖(3分)。一般地,電容C1和C2取30pF左右;晶體振蕩器,簡稱晶振,頻率范圍是1.2~12MHz。晶體振蕩頻率越高,系統(tǒng)的時鐘頻率也越高,單片機(jī)的運(yùn)行速度也就越快。在通常情況下,使用振蕩頻率為6MHz或12MHz的晶振。如果系統(tǒng)中使用了單片機(jī)的串行口通信,則一般采用振蕩頻率為11.0592MHz的晶振。(2分)(2)什么是機(jī)器周期?機(jī)器周期和晶振頻率有何關(guān)系?參考答案:(5分)51單片機(jī)采用定時控制方式,有固定的機(jī)器周期。規(guī)定一個機(jī)器周期的寬度為6個狀態(tài),即12個振蕩脈沖周期,因此機(jī)器周期就是振蕩脈沖的十二分頻。(3)51單片機(jī)常用的復(fù)位方法有幾種?畫出電路圖并說明其工作原理。參考答案:2種,上電復(fù)位和按鍵復(fù)位。單片機(jī)常見的復(fù)位電路下圖所示。(1分)(a)(2分)上電復(fù)位電路。它利用電容充電來實(shí)現(xiàn)復(fù)位,在接電瞬間,RST端的電位與VCC相同,隨著充電電流的減少,RST的電位逐漸下降。只要保證RST為高電平的時間大于兩個機(jī)器周期,便能正常復(fù)位。(b)(2分)為按鍵復(fù)位電路。該電路除具有上電復(fù)位功能外,還可以按圖2.5(b)中的RESET鍵實(shí)現(xiàn)復(fù)位,此時電源VCC經(jīng)兩個電阻分壓,在RST端產(chǎn)生一個復(fù)位高電平。圖1.23中的信號燈控制電路就采用按鍵復(fù)位電路。(4)C51編譯器支持的存儲器類型有哪些?參考答案:單片機(jī)的存儲器結(jié)構(gòu)包括4個物理存儲空間,C51編譯器對這4個物理存儲空間都能支持。常見的C51編譯器支持的存儲器類型如下表所示。(5分)存儲器類型描述data直接訪問內(nèi)部數(shù)據(jù)存儲器,允許最快訪問(128B)bdata可位尋址內(nèi)部數(shù)據(jù)存儲器,允許位與字節(jié)混合訪問(16B)idata間接訪問內(nèi)部數(shù)據(jù)存儲器,允許訪問整個內(nèi)部地址空間(256B)pdata“分頁”外部數(shù)據(jù)存儲器(256B)xdata外部數(shù)據(jù)存儲器(64KB)code程序存儲器(64KB)(5)請說明sfr和sbit兩個關(guān)鍵字的作用。參考答案:Sfr用來定義所有專用寄存器,從而在程序中能夠直接訪問他們;(2.5分)Sbit用來定義專用寄存器中的可尋址位的位名稱。(2.5分)2.5設(shè)計題(共15分)用單片機(jī)控制1個開關(guān)和兩個發(fā)光二級管,開關(guān)SW由單片機(jī)的P0.0控制,LED1和LED2由P1.0和P1.1控制,要求:(5分)畫出系統(tǒng)電路圖。②(5分)編程實(shí)現(xiàn)如下功能:控制系統(tǒng)在一個開關(guān)SW的控制下,兩個發(fā)光二級管LED1、LED2交替亮滅,無論開關(guān)SW是閉合還是斷開,同一時刻只能有一個LED點(diǎn)亮,另一個LED不亮。③(5分)編程實(shí)現(xiàn)如下功能:讓開關(guān)SW控制兩個LED交替以閃爍方式亮滅,即當(dāng)SW斷開時,LED1閃爍、LED2不亮;當(dāng)SW閉合時,LED1不亮、LED2閃爍。參考答案:①(5分)參考電路如下:②(5分)參考代碼如下:#include<REGX51.H>//包含頭文件REGX51.H,定義了51單片機(jī)的所有SFRsbitLED1=P1^0;//定義P1.0引腳位名稱為LED1sbitLED2=P1^1;//定義P1.1引腳位名稱為LED2sbitSW=P0^0;//定義P0.0引腳位名稱為SWvoidmain() //主函數(shù){while(1)//無限循環(huán){ LED1=SW;//采用位操作,開關(guān)斷開時P0.0引腳接高電平,點(diǎn)亮LED1 LED2=~SW;//采用位操作,開關(guān)閉合時將接低電平的P0.0引腳狀態(tài)取反,點(diǎn)亮LED2 } } ③(5分)參考代碼如下:#include<REGX51.H>//包含頭文件REGX51.H,定義了51單片機(jī)的所有SFRsbitLED1=P1^0;//定義P1.0引腳位名稱為LED1sbitLED2=P1^1;//定義P1.1引腳位名稱為LED2sbitSW=P0^0;//定義P0.0引腳位名稱為SW//函數(shù)名:delay//函數(shù)功能:實(shí)現(xiàn)軟件延時//形式參數(shù):無符號整型變量i,控制空循環(huán)的循環(huán)次數(shù)//返回值:無voiddelay(unsignedinti){while(i--);//i次空操作}voidmain() //主函數(shù){while(1)//無限循環(huán){ LED1=~SW;//采用位操作,開關(guān)斷開時將接高電平的P0.0引腳狀態(tài)取反,點(diǎn)亮LED1 LED2=SW;//采用位操作,開關(guān)閉合時P0.0引腳接低電平,點(diǎn)亮LED2 delay(20000); LED1=1; LED2=1; delay(20000); }}項(xiàng)目3測驗(yàn)題(測驗(yàn)時間75分鐘,共計100分)3.1單項(xiàng)選擇題(每題2分,共計20分)(1)C(2)A(3)A(4)D(5)D(6)D(7)A(8)B(9)C(10)D3.2填空題(每空2分,共計20分)(1)sbitFLAG=P3^1;(2)sfr(3)選擇、循環(huán)(可以調(diào)換順序)(4)ifelseif、switch(可以調(diào)換順序)(5)do-while語句、while語句(6)10000(7)unsignedchar3.3簡答題(共計30分)(1)(25分)假定在單片機(jī)的P3.0引腳連接了1個按鍵K,按下時,P3.0引腳為低電平,否則為高電平。請畫出電路圖,并寫出完成下面功能的語句。①檢測按鍵是否按下②檢測按鍵是否彈起③等待按鍵按下④等待按鍵彈起參考答案:參考電路如下。①檢測按鍵是否按下if(K==0)或者if(!K)②檢測按鍵是否彈起if(K==1)或者if(K)③等待按鍵按下while(K==1)或者while(K)④等待按鍵彈起while(K==0)或者while(!K)(2)(5分)51單片機(jī)控制外部輸入輸出設(shè)備時,一般都需要加上驅(qū)動電路,比如蜂鳴器,請問驅(qū)動電路的作用是什么?參考答案:單片機(jī)的并行IO口輸出電流都比較小,無法驅(qū)動外部設(shè)備,所以需要增加驅(qū)動電路,用來放大電流或功率,驅(qū)動外設(shè)。3.4綜合題(共計30分)(1)填空,完成下面的程序(每空2分,共10分)。#include<reg51.h>;voidmain(){while(){P1=0xFF;(1200);P1=0x00;(1200);}}//函數(shù)名:delay//函數(shù)功能:實(shí)現(xiàn)軟件延時//形式參數(shù):整型變量i,控制循環(huán)次數(shù)//返回值:無voiddelay(unsignedinti){for(k=0;k<i;k++);}參考答案:voiddelay(unsignedinti);1DelayDelayUnsignedintk;(2)(10分)利用單片機(jī)P3.0~P3.3控制4個按鍵K0~K3,按下為低電平,彈起為高電平;P1.0~P1.3控制4個發(fā)光二極管,低電平點(diǎn)亮;請設(shè)計一個4人搶答器,要求編程實(shí)現(xiàn),當(dāng)有某一參賽者首先按下?lián)尨痖_關(guān)時,相應(yīng)的LED燈亮,此時搶答器不再接受其他輸入信號,需按復(fù)位按鍵才能重新開始搶答。參考程序://功能:實(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.(10分)假定單片機(jī)的P2口控制8個LED,灌電流方式,請設(shè)計8個LED反復(fù)從中間到兩邊,再從兩邊到中間依次點(diǎn)亮的霓虹燈效果,時間間隔沒有要求。參考答案:#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測驗(yàn)題(測驗(yàn)時間75分鐘,共計100分)4.1單項(xiàng)選擇題(每題2分,共計20分)(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程序填空題(每空2分,共計20分)(1)(10分)一個共陽極數(shù)碼管,8個段引腳a~dp連接在P1口的P1.0~P1.7,公共端接+5V,下面程序完成上電復(fù)位后循環(huán)顯示數(shù)字0~9,請?zhí)顚懣瞻滋幍拇a,完成程序設(shè)計。#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)用延時}}while(1);}參考答案:doled[k]k>=10breakdelay()(2)(10分)假定單片機(jī)控制6個共陽極數(shù)碼管,段選口由P1口控制,位選由P2.0~P2.5控制,下面程序?qū)崿F(xiàn)穩(wěn)定交替顯示"901225"和"125315"兩屏內(nèi)容,請?zhí)顚懣瞻滋幍拇a,完成程序設(shè)計。//功能:六位數(shù)碼管動態(tài)交替穩(wěn)定顯示"901225"和"125315"兩屏內(nèi)容#include<regx51.h>//包含頭文件regx51.h,定義51單片機(jī)的專用寄存器voiddelay(unsignedinti); //延時函數(shù)聲明//函數(shù)名:ledscan//函數(shù)功能:實(shí)現(xiàn)六個數(shù)碼管掃描一遍//形式參數(shù):顯示碼數(shù)組,長度為6//返回值:無voidledscan(unsignedcharled[]){ unsignedchari,com[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//一維數(shù)組存儲位選碼 for(i=0;i<6;i++) { ;//關(guān)顯示 P2=;//位選碼送位控制口P2口 P1=;//顯示字型碼送P1口 delay(100); //延時 }}voidmain() //主函數(shù){ unsignedcharlednum[2][6]={{0x90,0xc0,0xf9,0xa4,0xa4,0x92},{0xf9,0xa4,0x92,0xb0,0xf9,0x92}}; //二維數(shù)組存儲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ù)省略參考答案:P1=0xffcom[i]led[i]num<2lednum[num]4.4程序設(shè)計題(共計40分)(1)(10分)一個共陽極數(shù)碼管,8個段引腳a~dp連接在P1口的P1.0~P1.7,公共端接+5V,在P3.0引腳連接一個按鍵,按下時為低電平,請編程實(shí)現(xiàn),系統(tǒng)上電時,數(shù)碼管穩(wěn)定顯示0-F(加1計數(shù)),當(dāng)按鍵按下時,系統(tǒng)顯示F-0(減1計數(shù))。參考代碼如下。#include<regx51.h>//包含頭文件regx51.h,定義了51單片機(jī)的專用寄存器sbitkey=P3^0;voiddelay(unsignedinti) //延時函數(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,依次存儲包括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)(10分)請用89C51設(shè)計一個廣告牌來顯示一顆愛心,電路設(shè)計如圖1所示,請編寫程序。圖18*8點(diǎn)陣電路參考代碼如下。#include"regx51.h"http://包含頭文件regx51.h,定義了51單片機(jī)的專用寄存器voiddelay(unsignedinti)//延時函數(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分)假定已定義兩個頭文件lcd.h和key.h分別如下:key.h如下:charkey.h如下:charkeyscan();//矩陣鍵盤掃描函數(shù),如果有鍵按下,返回0-15,無鍵按下,則返回-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ù)請調(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測驗(yàn)題(測驗(yàn)時間75分鐘,共計100分)5.1單項(xiàng)選擇題(每題2分,共計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)定時器timer (2)計數(shù)器counter(3)interrupt 中斷 (4)溢出 overflow (5)優(yōu)先級 priority 5.3簡答題(每題5分,共計30分)(1)(5分)軟件延時與硬件定時的原理有何異同?參考答案:軟件定時是靠CPU運(yùn)行空操作實(shí)現(xiàn)的,CPU在定時時不能進(jìn)行其它操作,白白占用CPU時間。硬件定時是指采用單片機(jī)內(nèi)部定時器實(shí)現(xiàn)定時,當(dāng)定時器進(jìn)行計數(shù)操作時,CPU可以進(jìn)行其它操作。(2)(5分)當(dāng)定時/計數(shù)器在工作方式1下,晶振頻率為6MHz,請計算最短和最長定時時間各是多少?參考答案:工作方式1的計數(shù)模值是65536,機(jī)器周期2us,所以最短定時時間為2us,最長定時時間為:2us*65536=130ms。(3)(10分)查詢和中斷都是CPU控制外設(shè)的方式,請說明二者的特點(diǎn)?參考答案:查詢方式占用CPU時間。中斷方式具有實(shí)時性和并行性,提高CPU工作效率。(4)(10分)假定晶振頻率為6MHz,采用51單片機(jī)T1的工作方式0定時10ms,工作方式1定時125ms和工作方式2定時130us,請寫出三種工作方式下的賦值語句。參考答案:方式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è)計題(共計30分)(1)(10分)圖1所示AT89C51的P2口連接了8個按鍵,用來控制P1口的發(fā)光二極管點(diǎn)亮,當(dāng)S0按下時,LED0點(diǎn)亮;S1按下時,LED1點(diǎn)亮,以此類推,S7按下時,LED7點(diǎn)亮,不斷循環(huán)這個過程,請根據(jù)要求填空。圖1LED與按鍵電路#include<reg51.h>voiddelay10ms()//用定時器0實(shí)現(xiàn)10ms定時,晶振頻率6MHz{(1);//定時器0方式設(shè)置TH0=(2);//定時10ms初值的高8位TL0=(3);//定時10ms初值的低8位TR0=1;(4);//判斷是否溢出?(5);//溢出標(biāo)志位清0}voidmain(){unsignedchari;P1=0xff;//熄滅8個發(fā)光二極管P2=0xff;//P2口作為輸入先置1while(1){do//判斷有沒有按鍵按下{i=P2;}while(i==0xff);delay10ms();//該語句的目的(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)延時去抖(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è)計,P1口有8個發(fā)光二極管,連接方式如圖1所示,在P3.2引腳連接一個按鍵,通過按鍵改變霓虹燈的顯示方式,要求正常情況下8個霓虹燈依次順序點(diǎn)亮,循環(huán)顯示,時間間隔為1s(假定晶振頻率為12MHz,采用T1方式1中斷實(shí)現(xiàn));當(dāng)按鍵按下后8個霓虹燈同時閃爍一次,時間間隔沒有要求(按鍵動作采用外部中斷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,定時,方式1EX0=1; //外部中斷0允許位IT0=1; //設(shè)置外部中斷0為下降沿觸發(fā)方式PX0=1;//設(shè)置外部中斷0為高優(yōu)先級ET1=1; TH1=(65536-50000)/256;//重新設(shè)置T0計數(shù)初值高8位,定時時間50msTL1=(65536-50000)%256;//重新設(shè)置T0計數(shù)初值低8位TR1=1; //啟動T0EA=1;//允許所有中斷P1=0xfe; //設(shè)置左移流水燈初值while(1) //無限循環(huán){;}}voidt_1()interrupt3{ staticunsignedchari50=0; TH1=(65536-50000)/256;//重新設(shè)置T0計數(shù)初值高8位,定時時間50msTL1=(65536-50000)%256;//重新設(shè)置T0計數(shù)初值低8位 i50++; if(i50==20) { i50=0; P1=_crol_(P1,1); }}voidint_0()interrupt0//外部中斷0的中斷服務(wù)函數(shù),中斷號為0{unsignedcharj;j=P1;P1=0x00; //熄滅8個LEDdelayms(300);//延時P1=0xff; //點(diǎn)亮8個LED delayms(300);//延時 P1=0x00; //熄滅8個LEDdelayms(300);//延時 P1=j; }項(xiàng)目6測驗(yàn)題(測驗(yàn)時間90分鐘,共計100分)6.1單項(xiàng)選擇題(每題2分,共計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分)序號英文縮寫英文全寫中文翻譯(1)UARTUniversalAsynchronousReceiver/Transmitter通用異步接收/發(fā)送裝置(2)I2CInter-IntegratedCircuit內(nèi)置集成電路(3)SPISerialPeripheralinterface串行外圍設(shè)備接口(4)USBUniversalSerialBUS通用串行總線(5)bpsbitspersecond每秒位數(shù)或者位/秒6.3簡答題(共計20分)(1)(5分)什么是串行異步通信?說明異步通信的字符幀格式。答:在異步通信中,數(shù)據(jù)通常是以字符為單位組成字符幀傳送的。字符幀由發(fā)送端一幀一幀地發(fā)送,每一幀數(shù)據(jù)是低位在前,高位在后,通過傳輸線由接收端一幀一幀地接收。發(fā)送端和接收端分別使用各自獨(dú)立的時鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個時鐘彼此獨(dú)立,互不同步。字符幀也稱數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位四部分組成,(1)起始位:位于字符幀開頭,只占一位,為邏輯0低電平,用于向接收設(shè)備表示發(fā)送端開始發(fā)送一幀信息。(2)數(shù)據(jù)位:緊跟起始位之后,根據(jù)情況可取5位、6位、7位或8位,低位在前,高位在后。(3)奇偶校驗(yàn)位:位于數(shù)據(jù)位之后,僅占一位,用來表示串行通信中采用奇校驗(yàn)還是偶校驗(yàn),由用戶編程決定。(4)停止位:位于字符幀最后,為邏輯1高電平。通??扇。蔽?、15位或2位,用于向接收端表示一幀字符信息已經(jīng)發(fā)送完,也為發(fā)送下一幀做準(zhǔn)備。(2)(5分)定時器T1做串行口波特率發(fā)生器時,為什么采用工作方式2?答:實(shí)際上,當(dāng)定時器T1做波特率發(fā)生器使用時,通常是工作在定時器的模式2下,即作為一個自動重裝載的8位定時器,TL1做計數(shù)用,自動重裝載的值在TH1內(nèi)。(3)(10分)編寫查詢方式下等待發(fā)送和等待接收一個字符的函數(shù)。答:等待發(fā)送一個字符函數(shù):Voidtransmit(unsignedchardat){SBUF=dat;while(!TI);//等待發(fā)送是否完畢TI=0;}等待接收一個字符函數(shù):unsignedcharreceive(){while(!RI);//等待發(fā)送是否完畢RI=0;returnSBUF;}6.4綜合設(shè)計題(共計20分)(1)(10分)利用串行口擴(kuò)展并行口方法控制4位靜態(tài)LED顯示,系統(tǒng)采用4片74LS164級聯(lián),P3.0連接第一個芯片串行數(shù)據(jù)輸入端A,B,P3.1連接該芯片時鐘端CLK,P1.0連接該芯片清除端CLR,編寫程序要求4位LED每隔1s交替顯示“1234”參考程序如下:#include"reg51.h"http://包含頭文件reg51.h,定義51單片機(jī)的專用寄存器unsignedcharda[]={0xF9,0xA4,0xB0,0x99};//定義1~4的共陽極字型顯示碼unsignedcharda1[]={0x92,0x82,0x0F8,0x80};//定義5~8的共陽極字型voiddelay1s(){unsignedchari;for(i=0;i<0x20;i++) //設(shè)置20次循環(huán)次數(shù){ TH0=0x3c; //設(shè)置定時器初值TL0=0xb0;TR0=1; //啟動T0while(!TF0);//查詢計數(shù)是否溢出,即定時50ms時間到,TF0=0TF0=0; //50ms定時時間到,將定時器溢出標(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)(10分)實(shí)現(xiàn)一個單片機(jī)與PC機(jī)之間的串行口通信測試系統(tǒng)。系統(tǒng)中,單片機(jī)通過串口與PC機(jī)通信,同時P1口連接8個發(fā)光二級管LED。正常情況下,8個發(fā)光二級管閃爍,當(dāng)接收PC機(jī)發(fā)送的字符時,回送給PC機(jī)相同字符。同時,如果接收的字符為’A’,則LED左移流水燈顯示一遍,繼續(xù)閃爍;如果接收的字符為’B’,則LED右移流水燈顯示一遍,再返回閃爍狀態(tài)。請畫出電路圖,并編寫單片機(jī)控制代碼。參考電路如下:(5分)參考代碼如下:(5分)單片機(jī)通信程序如下。//程序:ex38.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ù):無符號整型變量i,控制空循環(huán)的循環(huán)次數(shù)//返回值:無voiddelay(unsignedinti){while(i--);}//函數(shù)名:flash//函數(shù)功能:8個LED閃爍一次//形式參數(shù):無//返回值:無voidflash(){P1=0x00;//點(diǎn)亮8個LED delay(10000); P1=0xff;//熄滅8個LED delay(10000);}//函數(shù)名:lsd1//函數(shù)功能:8個LED逐一點(diǎn)亮一次,左移方向//形式參數(shù):無//返回值:無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個LED逐一點(diǎn)亮一次,右移方向//形式參數(shù):無//返回值:無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ā)送一個字符,采用查詢方式實(shí)現(xiàn)//形式參數(shù):無符號整型變量i,定義發(fā)送的字符//返回值:無voidsendbyte(unsignedchari){SBUF=i; //發(fā)送字符寫入SBUFwhile(!TI); //查詢TI是否由0變1TI=0; //軟件給TI清0} voidmain() //主函數(shù){ TMOD=0x20; //設(shè)置定時器T1為方式2 TL1=0xfd; //波特率為9600b/s TH1=0xfd; TR1=1; SCON=0x40; //定義串行口工作于方式1,不接收 PCON=0x00; //SMOD=0 ES=1; //開串行口中斷EA=1; //開總中斷允許位 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ù):無//返回值:無voidserial()interrupt4 //串口中斷類型號為4{EA=0; //關(guān)中斷RI=0; //軟件清除中斷標(biāo)志位 Recbyte=SBUF; //接收數(shù)據(jù) sendbyte(Recbyte);//再送回PC機(jī)EA=1; //開中斷}項(xiàng)目7測驗(yàn)題(測驗(yàn)時間90分鐘,共計100分)7.1單項(xiàng)選擇題(每題2分,共計20分)(1)A(2)A(3)C(4)A(5)B(6)A(7)B(8)A(9)C(10)B7.2填空題(每空2分,共計40分)(1)模擬信號的英文是Analogsignal;數(shù)字信號的英文是Digitalsignal。(2)模擬信號是一種振幅和相位都連續(xù)的信號;人為抽象出來的在時間上不連續(xù)的信號,并用0和1的有限組合來表示的信號是數(shù)字信號。大自然的信號一般都是模擬信號。(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ù)字輸出量所對應(yīng)的模擬輸入量的實(shí)際值與理論值之間的差值。(6)

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

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

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論