MCS-51單片機(jī)技術(shù)項(xiàng)目驅(qū)動(dòng)教程C語言第二版牛軍課后參考答案_第1頁
MCS-51單片機(jī)技術(shù)項(xiàng)目驅(qū)動(dòng)教程C語言第二版牛軍課后參考答案_第2頁
MCS-51單片機(jī)技術(shù)項(xiàng)目驅(qū)動(dòng)教程C語言第二版牛軍課后參考答案_第3頁
MCS-51單片機(jī)技術(shù)項(xiàng)目驅(qū)動(dòng)教程C語言第二版牛軍課后參考答案_第4頁
MCS-51單片機(jī)技術(shù)項(xiàng)目驅(qū)動(dòng)教程C語言第二版牛軍課后參考答案_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

MCS-51單片機(jī)技術(shù)項(xiàng)目驅(qū)動(dòng)教程C語言第二版習(xí)題答案第1章思考與練習(xí)1.什么是單片機(jī)?最早的單片機(jī)是什么時(shí)間推出的?答:單片機(jī)是單片微型計(jì)算機(jī)的簡稱,它將中央處理器(CPU)、隨機(jī)存儲器(RAM)、只讀存儲器(ROM)、中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器、串行口和I/O接口等主要計(jì)算機(jī)部件集成在一塊大規(guī)模集成電路芯片上,具有了微型計(jì)算機(jī)的組成結(jié)構(gòu)和功能。最早的單片機(jī)是在20世紀(jì)70年代初推出的。2.簡述單片機(jī)的特點(diǎn)。答:單片機(jī)具有種類眾多、性價(jià)比高、集成度和可靠性高、存儲器ROM和RAM嚴(yán)格區(qū)分、采用面向控制的指令系統(tǒng)、I/O引腳通常是多功能的、外部擴(kuò)展能力強(qiáng)等特點(diǎn)。3.什么是MCS-51單片機(jī)?最早是哪家公司推出的?答:MCS-51單片機(jī)是所有兼容Intel8051指令系統(tǒng)單片機(jī)的統(tǒng)稱,最早由Intel公司推出。4.說出4種以上常用的單片機(jī)類型。答:(1)MCS-51單片機(jī);(2)AVR單片機(jī);(3)PIC單片機(jī);(4)MSP430單片機(jī);(5)Motorola單片機(jī)。5.什么是總線?單片機(jī)中的總線有哪幾種?答:總線是指從任意一個(gè)源點(diǎn)到任意一個(gè)終點(diǎn)的一組傳輸數(shù)字信息的公共通道。單片機(jī)中總線包括地址總線、數(shù)據(jù)總線和控制總線三種。6.簡述單片機(jī)中位和字節(jié)的概念。答:一個(gè)二進(jìn)制數(shù)叫1位,相鄰的8位二進(jìn)制數(shù)構(gòu)成一個(gè)字節(jié)。存儲地址的作用是什么?答:存儲地址用來定義每個(gè)存儲單元,以供CPU尋址、操作。第2章思考與練習(xí)1.AT89C51單片機(jī)的內(nèi)部ROM和RAM分別是多大空間?最多可擴(kuò)展多少空間?答:分別是4KB和128B,ROM最多可擴(kuò)展60KB,RAM最多可擴(kuò)展64KB。2.AT89C51單片機(jī)有哪幾個(gè)中斷源?答:有3個(gè)內(nèi)部中斷源和2個(gè)外部中斷源。3.畫出MCS-51單片機(jī)的復(fù)位電路原理圖,包括上電復(fù)位和手動(dòng)復(fù)位功能,并根據(jù)參數(shù)計(jì)算上電復(fù)位時(shí)高電平的持續(xù)時(shí)間。答:復(fù)位電路原理圖如下圖所示。上電復(fù)位時(shí)高電平的持續(xù)時(shí)間t=0.55RC=0.55×22×10-6×103秒=12.1毫秒。4.MCS-51單片機(jī)的ALE引腳有什么特點(diǎn)?答:每個(gè)機(jī)器周期輸出兩個(gè)正脈沖。5.當(dāng)MCS-51單片機(jī)使用內(nèi)部程序存儲器時(shí),引腳應(yīng)該接什么電平?答:高電平。6.MCS-51單片機(jī)有幾個(gè)I/O端口?在三總線結(jié)構(gòu)中,數(shù)據(jù)總線和地址總線分別由哪些端口組成?答:有4個(gè)I/O端口。在三總線結(jié)構(gòu)中,數(shù)據(jù)總線由P0口組成,地址總線高8位由P2口組成,低8位由P0口組成。7.MCS-51單片機(jī)內(nèi)部RAM的低128字節(jié)可劃分為哪幾個(gè)區(qū)域?位尋址區(qū)有什么特點(diǎn)?答:可劃分為工作寄存器區(qū)、位尋址區(qū)和通用數(shù)據(jù)區(qū)三個(gè)區(qū)域。位尋址區(qū)的每一位都可以單獨(dú)進(jìn)行位操作。8.MCS-51單片機(jī)的晶振頻率為24MHz時(shí),其機(jī)器周期是多少?答:0.5μs9.寫出MCS-51單片機(jī)內(nèi)部ROM中定時(shí)器1的中斷矢量區(qū)地址范圍。答:001BH~0022H。第3章思考與練習(xí)1.C51中有哪些數(shù)據(jù)類型?它們的數(shù)值范圍分別是多少?答:C51中的數(shù)據(jù)類型及其數(shù)值范圍如下表所示。數(shù)據(jù)類型表示方法數(shù)值范圍無符號字符型unsignedchar0~255有符號字符型signedchar-128~127無符號整型unsignedint0~65535有符號整型signedint-32768~32767無符號長整型unsignedlong0~4294967295有符號長整型signedlong-2147483648~2147483647浮點(diǎn)型float±1.1755E-38~±3.40E+38特殊功能寄存器型sfrsfr160~2550~65535位類型bit、sbit0或12.C51變量定義的格式是什么?答:C51中對變量進(jìn)行定義的格式為:[存儲類型]數(shù)據(jù)類型[存儲區(qū)]變量名1[=初值][,變量名2[=初值]][,……];3.要在片內(nèi)RAM 的36H單元定義一個(gè)動(dòng)態(tài)無符號的字符型變量time,寫出其定義語句。答:unsignedchardatatime_at_0x36;4.定義一個(gè)普通位變量button,寫出其定義語句。定義后的button變量將被分配在哪個(gè)存儲區(qū)域?答:bitbutton;定義后被分配在低128字節(jié)的位尋址區(qū)。5.如果在bdata區(qū)域定義了一個(gè)char型變量,則該變量將具有什么特點(diǎn)?答:可以按位進(jìn)行操作。6.如果將單片機(jī)P1口的第3位定義為位變量LED,寫出其定義語句。答:sbitLED=P1^3;7.采用指針定義的訪問存儲器的宏編寫程序,將單片機(jī)外部RAM中地址從2000H開始的16個(gè)字節(jié)數(shù)據(jù)傳送到片內(nèi)RAM地址從40H單元開始的區(qū)域中。答:程序代碼如下:#include<absacc.h> voidmain() {unsignedchari;for(i=0;i<16;i++) DBYTE[0x40+i]=XBYTE[0x2000+i]; }8.如果定義一個(gè)定時(shí)器0的中斷服務(wù)程序,寫出其函數(shù)的定義語句。答:voidtimer0_INT()interrupt1 {…… }9.編寫C51程序,把片內(nèi)RAM40H和41H單元存放的某無符號整型數(shù)按十進(jìn)制將其個(gè)、十、百、千、萬位分離,并將分離后的結(jié)果對應(yīng)存放在51H~55H單元中。答:程序代碼如下:unsignedchardatashu[5]_at_0x51;unsignedintdatatemp_at_0x40; voidmain { unsignedchari; for(i=0;i<4;i++) { shu[i]=temp%10; temp=temp/10; } shu[4]=temp; }10.編寫C51程序,將片外RAM地址從2000H開始的連續(xù)30個(gè)存儲單元依次寫入數(shù)據(jù)1,2,3,……,30。答:程序代碼如下:#include<absacc.h> voidmain() {unsignedchari;for(i=1;i<31;i++) XBYTE[0x2000+i]=i; }11.已知數(shù)組data[10]={1,60,20,16,92,6,70,34,18,12},編程對其進(jìn)行排序,按照由大到小順序依次排列數(shù)據(jù)后重新存放于該數(shù)組中。答:程序代碼如下:unsignedchardata[10]={1,60,20,16,92,6,70,34,18,12};unsignedchari,j,k;voidmain(){ for(j=0;j<9;j++) { for(i=0;i<10-j;i++) { if(data[j]<data[j+1]) { k=data[j]; data[j]=data[j+1]; data[j+1]=k; } } }}第4章思考與練習(xí)1.為什么說MCS-51單片機(jī)的I/O口是準(zhǔn)雙向口?答:因?yàn)樵谳斎胍_數(shù)據(jù)時(shí)需要先向端口鎖存器寫1。2.MCS-51單片機(jī)的P0口作為一般I/O口使用時(shí)必須注意哪兩點(diǎn)?答:(1)作為輸出口時(shí),引腳必須外接上拉電阻;(2)作為輸入口時(shí),在讀入引腳數(shù)據(jù)前,必須先向端口鎖存器寫入1。3.傳統(tǒng)MCS-51單片機(jī)端口在輸出高電平時(shí)的驅(qū)動(dòng)電流是多少?答:十幾個(gè)μA。4.編程讀取AT89C51單片機(jī)P2口的引腳狀態(tài),并將其取反后存儲于內(nèi)部RAM的40H單元中。答:程序代碼如下:#include<reg51.h>unsignedchardataSHU_at_0x40;voidmain(){ SHU=P0; SHU=~SHU;}5.編寫C51程序,當(dāng)P1.0引腳輸入為低電平時(shí),P2.0引腳輸出低電平;當(dāng)P1.0引腳輸入為高電平時(shí),P2.0引腳輸出高電平。答:程序代碼如下:#include<reg51.h>sbitP1_0=P1^0;sbitP2_0=P2^0;voidmain(){ if(P1_0==0);P2_0=0 elseif(P1_0==1)P2_0=1;}6.在圖4-12的電路中編寫C51程序,實(shí)現(xiàn)P0口的LED燈從左往右循環(huán)流水顯示,時(shí)間間隔自定。答:程序代碼如下:#include<reg51.h>voiddelay(unsignedintz) //1ms延時(shí)函數(shù){unsignedintx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidmain(void){unsignedchari,j;P0=0x00;while(1){for(j=0;j<8;j++){P0=(0x80>>j);delay(1000); //延時(shí)1s }}}第5章思考與練習(xí)1.增強(qiáng)型MCS-51單片機(jī)共有幾個(gè)中斷源?其默認(rèn)的優(yōu)先級順序是什么?答:有6個(gè),按默認(rèn)優(yōu)先級順序由高到低依次為:外部中斷0,定時(shí)器/計(jì)數(shù)器T0中斷,外部中斷1,定時(shí)器/計(jì)數(shù)器T1中斷,串行口中斷,定時(shí)器/計(jì)數(shù)器T2中斷。2.MCS-51單片機(jī)的外部中斷對應(yīng)的輸入引腳分別是什么?其信號觸發(fā)方式有哪兩種?如何設(shè)置?答:外部中斷0請求引腳為P3.2,外部中斷1請求引腳為P3.3。信號觸發(fā)方式有電平觸發(fā)和邊沿觸發(fā)兩種。當(dāng)ITx=0時(shí),外部中斷x定義為電平觸發(fā)方式;ITx=1時(shí),外部中斷x定義為邊沿觸發(fā)方式。3.外部中斷采用電平觸發(fā)方式時(shí),對觸發(fā)信號的持續(xù)時(shí)間有什么要求?答:在中斷返回前,引腳的低電平信號必須撤掉。4.控制MCS-51單片機(jī)外部中斷功能的特殊功能寄存器有哪些?分別起什么作用?答:有(1)TCON,選擇中斷觸發(fā)方式;(2)IE,設(shè)置中斷允許位;(3)IP,設(shè)置中斷優(yōu)先級。5.要使CPU能響應(yīng)、T1中斷,應(yīng)如何設(shè)置IE寄存器?答:IE=0x89。6.當(dāng)優(yōu)先級寄存器IP=10H時(shí),寫出AT89C51單片機(jī)中斷源的優(yōu)先響應(yīng)次序。答:串行口中斷,外部中斷0,定時(shí)器/計(jì)數(shù)器T0中斷,外部中斷1,定時(shí)器/計(jì)數(shù)器T1中斷。7.若要求MCS-51單片機(jī)外部中斷1為邊沿觸發(fā)方式,高優(yōu)先級,寫出其中斷初始化程序。答:TCON=0X04;IE=0X84;IP=0X04。第6章思考與練習(xí)1.在C51中定義一個(gè)數(shù)字0~9的共陽極七段碼碼表。答:unsignedcharcodediscode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};2.共陽極和共陰極數(shù)碼管的區(qū)別是什么?答:把8個(gè)發(fā)光二極管的陰極連接在一起作為公共端,這種結(jié)構(gòu)為共陰極;把8個(gè)發(fā)光二極管的陽極連接在一起作為公共端,這種結(jié)構(gòu)稱為共陽極。3.LED數(shù)碼管的譯碼方式有哪些?原理分別是什么?答:有軟件譯碼和硬件譯碼兩種。軟件譯碼采用程序查表的方法實(shí)現(xiàn),硬件譯碼采用“BCD—七段碼”譯碼器電路實(shí)現(xiàn)。4.簡述LED數(shù)碼管動(dòng)態(tài)掃描的基本原理。答:LED數(shù)碼管動(dòng)態(tài)掃描是將所有數(shù)碼管的段選線并聯(lián)在一起,由一個(gè)8位I/O口控制。而公共端分別由不同的I/O線控制,通過程序?qū)崿F(xiàn)各位的分時(shí)選通。5.人眼的視覺暫留時(shí)間一般為多少?答:50~100ms。6.LED數(shù)碼管動(dòng)態(tài)掃描程序中消隱語句的作用是什么?編程時(shí)有哪兩種實(shí)現(xiàn)方法?使用時(shí)應(yīng)遵循的原則是什么?答:消隱語句的作用是避免有重影。消隱的方法可以采用段信號消隱,也可以采用位信號消隱。在編程時(shí)必須要遵循一個(gè)原則:在掃描程序中,先送段選信號后送位選信號時(shí),用位消隱的方法;先送位選信號后送段選信號時(shí),采用段消隱的方法。7.編寫C51程序,用3個(gè)共陽LED數(shù)碼管同時(shí)在P0、P1、P2端口靜態(tài)顯示數(shù)字3、6、9。答:程序代碼如下:#include<reg51.h> unsignedcharcodediscode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定義七段碼常數(shù)表,在code區(qū)voidmain(){ while(1) //程序循環(huán)執(zhí)行{ P0=discode[3];//將數(shù)字3的七段碼取出送P0口P1=discode[6];//將數(shù)字6的七段碼取出送P1口P2=discode[9];//將數(shù)字9的七段碼取出送P2口 }}8.編程實(shí)現(xiàn)1位共陰LED數(shù)碼管在P1口依次顯示十六進(jìn)制數(shù)字0~F,時(shí)間間隔1秒鐘,不斷循環(huán)。答:程序代碼如下:#include<reg51.h> unsignedcharcodetable[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelay(unsignedcharx) //1ms延時(shí)子程序{unsignedchary;for(;x>0;x--)for(y=110;y>0;y--); }voidmain(void){ unsignedchari; while(1) { for(i=0;i<=15;i++) { P1=table[i];delay(1000); } }}第7章思考與練習(xí)1.什么是點(diǎn)陣顯示時(shí)的字模?通常怎么獲得?答:在16×16LED點(diǎn)陣屏上顯示漢字時(shí),32個(gè)字節(jié)編碼叫作漢字的字模。通常是使用一些專門的小軟件來計(jì)算字模。2.1個(gè)16×16點(diǎn)陣的字模包括多少個(gè)字節(jié)?答:包括32個(gè)字節(jié)。3.在實(shí)際應(yīng)用中,16×16點(diǎn)陣是如何構(gòu)成的?答:由4個(gè)8×8點(diǎn)陣拼接而成。5.根據(jù)圖7-6的電路編寫程序,在8×8點(diǎn)陣上輪流顯示符號A、B、C、D、E、F。答:程序代碼如下:#include<reg51.h>unsignedcharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//列線值unsignedcharcodedigittab[6][8]={{0x00,0x3E,0x48,0x88,0x88,0x48,0x3E,0x00},//A{0x00,0xFE,0x92,0x92,0x92,0x6C,0x00,0x00},//B{0x00,0x7C,0x82,0x82,0x82,0x44,0x00,0x00},//C{0x00,0xFE,0x82,0x82,0x82,0x44,0x38,0x00},//D{0x00,0xFE,0x92,0x92,0x92,0x92,0x82,0x00},//E{0x00,0xFE,0x90,0x90,0x90,0x90,0x00,0x00}//F};unsignedinttimecount; //定義定時(shí)次數(shù)變量unsignedcharlie; //定義列變量unsignedcharshu; //定義要顯示數(shù)字的順序變量voidmain(void){TMOD=0x01; //定時(shí)器0初始化,打開中斷,定時(shí)3msTH0=(65536-3000)/256;TL0=(65536-3000)%256;TR0=1;ET0=1;EA=1;while(1); //等定時(shí)器中斷 }voidt0(void)interrupt1 //定時(shí)器0中斷服務(wù)程序{ TH0=(65536-3000)/256; //重裝初值 TL0=(65536-3000)%256; P3=tab[lie]; //送列值 P0=digittab[shu][lie]; //送行值 lie++; //列值加1 if(lie==8)lie=0; //8列掃描完,列值歸0 timecount++; if(timecount==333) //顯示時(shí)間夠1s { timecount=0; //定時(shí)次數(shù)清0 shu++; //換下一個(gè)數(shù)字 if(shu==6) //A~F顯示完 { shu=0; //再從A開始 }}}第8章思考與練習(xí)1.簡述單片機(jī)識別按鍵的基本原理。答:當(dāng)按鍵未被按下時(shí),按鍵端口輸入為高電平;當(dāng)按下時(shí),端口輸入變?yōu)榈碗娖?。通過判斷按鍵端口的電平便可知道按鍵的狀態(tài)。2.單片機(jī)系統(tǒng)中使用機(jī)械式按鍵會(huì)存在什么問題?應(yīng)如何解決?答:會(huì)存在按鍵抖動(dòng)問題,應(yīng)通過硬件或軟件的方法消抖。3.獨(dú)立式鍵盤和矩陣式鍵盤的優(yōu)缺點(diǎn)各是什么?在實(shí)際應(yīng)用中應(yīng)如何選擇?答:獨(dú)立式鍵盤優(yōu)點(diǎn)是電路簡單,編程簡單;缺點(diǎn)是按鍵數(shù)量較多時(shí),要占用較多的I/O線,只適用于按鍵數(shù)量較少的場合;矩陣式鍵盤優(yōu)點(diǎn)是能夠節(jié)約單片機(jī)的I/O口線,缺點(diǎn)是對按鍵的鍵值識別上比較復(fù)雜。4.簡述行掃描法的工作步驟。答:行掃描法的掃描過程一共分為三個(gè)步驟:(1)判別鍵盤中有無鍵按下;(2)查找按下鍵所在位置;(3)計(jì)算按鍵鍵值。第9章思考與練習(xí)1.AT89C51單片機(jī)的定時(shí)器/計(jì)數(shù)器有哪幾種工作模式?答:共有4種工作模式,如下表所示:工作模式功能模式013位定時(shí)器/計(jì)數(shù)器模式116位定時(shí)器/計(jì)數(shù)器模式28位自動(dòng)重置定時(shí)器/計(jì)數(shù)器模式3定時(shí)器0:TL0可做8位定時(shí)器/計(jì)數(shù)器,TH0為8位定時(shí)器定時(shí)器1:不工作2.AT89C51單片機(jī)的定時(shí)器/計(jì)數(shù)器主要由哪幾個(gè)特殊功能寄存器編程控制,各起什么作用?答:由特殊功能寄存器TMOD和TCON控制。TMOD主要用于設(shè)定T0和T1的工作模式,TCON寄存器主要使用TR0和TR1來啟動(dòng)定時(shí)器/計(jì)數(shù)器開始工作。3.AT89C51單片機(jī)的定時(shí)器/計(jì)數(shù)器工作于計(jì)數(shù)方式時(shí)的最高計(jì)數(shù)頻率如何計(jì)算?當(dāng)晶振頻率為6MHz時(shí),最高計(jì)數(shù)頻率是多少?答:最高計(jì)數(shù)頻率為振蕩頻率的1/24。當(dāng)晶振頻率為6MHz時(shí),最高計(jì)數(shù)頻率是0.25MHz。4.當(dāng)AT89C51單片機(jī)的定時(shí)器/計(jì)數(shù)器工作于模式0時(shí),其計(jì)數(shù)值共多少位?在TH和TL寄存器中如何存放?答:模式0時(shí)的計(jì)數(shù)值共13位,低5位放在TL0中,高8位放在TH0中。5.實(shí)際編程時(shí),應(yīng)如何合理選擇定時(shí)器/計(jì)數(shù)器的工作模式?答:實(shí)際編程時(shí)根據(jù)定時(shí)時(shí)間長短選擇工作模式,定時(shí)時(shí)間長短依次為模式1>模式0>模式2。如果產(chǎn)生周期性信號,則首選模式2。6.AT89C51單片機(jī)的定時(shí)器/計(jì)數(shù)器初始化時(shí)一般包括哪些步驟?答:定時(shí)器/計(jì)數(shù)器初始化時(shí)步驟一般包括以下幾步:(1)設(shè)置TMOD。首先要根據(jù)功能分析,選擇做定時(shí)器還是計(jì)數(shù)器,其次要在4種工作模式中選擇合適的模式。(2)設(shè)置定時(shí)器的計(jì)數(shù)初值。將初值寫入TH0和TL0或TH1、TL1。(3)設(shè)置TCON,啟動(dòng)定時(shí)器。也可以使用位操作指令,如TR0=1。(4)設(shè)置中斷允許寄存器IE。如果需要中斷,則要設(shè)置中斷總開關(guān)EA和定時(shí)器的分開關(guān)ET0或者ET1。7.編寫程序,實(shí)現(xiàn)AT89C51單片機(jī)的P1.7引腳向外輸出周期為2ms的方波,設(shè)晶振頻率為6MHz。答:程序代碼如下:#include<reg52.h> //包含特殊功能寄存器庫sbit P1_7=P1^7; //進(jìn)行引腳的位定義 voidmain(){ TMOD=0x01; //T0做定時(shí)器,工作在模式1 TL0=0x0c; //設(shè)置定時(shí)器的初值 TH0=0xfe;ET0=1; //允許T0中斷 EA=1; //允許CPU中斷TR0=1; //啟動(dòng)定時(shí)器while(1); //等待中斷}voidtime0_int(void)interrupt1 //中斷服務(wù)程序{ TL0=0x0c; //定時(shí)器重賦初值

TH0=0xfe; P1_7=~P1_7; //P1.7取反,輸出方波 }8.編寫程序,當(dāng)AT89C51單片機(jī)的P3.4引腳輸入10個(gè)脈沖信號時(shí),P1.7引腳向外連續(xù)輸出周期為1秒的方波。答:設(shè)fosc=12MHz,程序代碼如下:#include<reg51.h>sbitP1_7=P1^7;unsignedinti;voidmain(){ TMOD=0x16; //定時(shí)器0為計(jì)數(shù)方式,模式2;定時(shí)1為定時(shí)方式,模式1 TH0=246; TL0=246; TR0=1; ET0=1; EA=1; TR1=0; ET1=0; while(1);}voidT0_int()interrupt1{ TH1=(65536-110592/12)/256; //裝定時(shí)器1初值,定時(shí)10ms TL1=(65536-110592/12)%256; TR1=1; //啟動(dòng)定時(shí)器1ET1=1; //開定時(shí)器1中斷 i=0;}voidT1_int()interrupt3{ TH1=(65536-110592/12)/256; //重裝初值 TL1=(65536-110592/12)%256; if(++i==50) { P1_7=~P1_7; i=0; } }第10章思考與練習(xí)1.LCD1602的三個(gè)輸入控制端分別是什么?答:E、R/W、RS三個(gè)輸入控制端。2.要在LCD1602上顯示字符串NiHao,寫出這幾個(gè)字母的字符碼。答:字符串NiHao的字符碼依次為:0x4E,0x69,0x48,0x61,0x6F。4.LCD1602第一行和第二行的第1個(gè)字符的地址分別是多少?在實(shí)際寫入顯示地址時(shí)應(yīng)該寫入什么數(shù)據(jù)?答:第一行第一個(gè)字符的地址是00H,實(shí)際寫入的數(shù)據(jù)應(yīng)該是80H;第二行第一個(gè)字符的地址是40H,實(shí)際寫入的數(shù)據(jù)應(yīng)該是C0H。第11章思考與練習(xí)1.什么是串行通信?其優(yōu)缺點(diǎn)分別是什么?答:串行通信是指單位信息的各位數(shù)據(jù)按先后次序一位一位分時(shí)傳送。其優(yōu)點(diǎn)是只需一對傳輸線,大大降低了傳送成本,特別適用于遠(yuǎn)距離通信;缺點(diǎn)是傳送速度較低。2.什么是異步串行通信?其數(shù)據(jù)格式是什么?答:異步串行通信中,發(fā)送器和接收器以各自獨(dú)立的時(shí)鐘作為基準(zhǔn)。其幀格式為:一個(gè)起始位、數(shù)據(jù)位、一個(gè)奇偶校驗(yàn)位(可以不要)、一個(gè)停止位。3.AT89C51單片機(jī)串口的TXD和RXD分別是哪個(gè)引腳?答:分別對應(yīng)單片機(jī)的P3.0和P3.1引腳.4.如何實(shí)現(xiàn)把一個(gè)數(shù)據(jù)通過單片機(jī)的串口向外發(fā)送?答:當(dāng)要把一個(gè)數(shù)據(jù)通過串口向外發(fā)送時(shí),只需要把這個(gè)數(shù)據(jù)寫入到發(fā)送SBUF中就可以了。5.簡述MCS-51單片機(jī)串口接收數(shù)據(jù)的過程。答:當(dāng)RXD引腳上有一幀串行數(shù)據(jù)到來時(shí),如果串口設(shè)置為允許接收狀態(tài),且接收中斷標(biāo)志位RI=0,那么在串口移位時(shí)鐘的同步下,數(shù)據(jù)會(huì)進(jìn)入到串入并出移位寄存器。一幀信息接收完畢,系統(tǒng)硬件自動(dòng)置位接收中斷標(biāo)志位RI,向CPU發(fā)出中斷請求,同時(shí)把移位寄存器中的數(shù)據(jù)并行送入到接收SBUF中。6.MCS-51單片機(jī)的串口有哪幾種工作方式?功能分別是什么?答:MCS-51單片機(jī)的串行口一共有四種工作方式,功能如下表所示。方式功能08位移位寄存器方式110位通用異步接收器/發(fā)送器211位通用異步接收器/發(fā)送器311位通用異步接收器/發(fā)送器7.MCS-51單片機(jī)串口在接收和發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)位的先后順序是什么?答:低位在前,高位在后。8.MCS-51單片機(jī)串口方式1、3的波特率如何計(jì)算?答:方式1、3的波特率=(2SMOD/32)×(fosc/12)/(2n-初值)。9.寫出MCS-51單片機(jī)串口編程時(shí)的初始化步驟。答:一般的初始化步驟包括:(1)設(shè)定串口工作方式。(2)如果采用中斷方式編程,則需要打開串行口中斷。(3)設(shè)定SMOD的狀態(tài),以控制波特率是否加倍。(4)工作方式為1或3時(shí)進(jìn)行波特率設(shè)計(jì)。10.編寫C51程序,實(shí)現(xiàn)單片機(jī)串口向外發(fā)送字符串NiHao,要求串口工作于方式1,波特率為9600b/s,晶振頻率為11.0592MHz。答:程序代碼如下:#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharucharsend[]={"NiHao"};uchari=1;voidmain(){SCON=0x50; //串口方式1,允許接收TMOD=0x20;TH1=0xfd; //波特率9600TL1=0xfd;TR1=1; //啟動(dòng)定時(shí)器EA=1; //開串行口中斷ES=1;SBUF=send[0]; //發(fā)送字符串}voidserve()interrupt4{if(TI){ TI=0; if(i<5) { SBUF=send[i]; //發(fā)送字符串i++;}elsei=1;}} 11.編寫程序,AT89C51單片機(jī)的串口在收到數(shù)據(jù)后將其存入到片內(nèi)RAM40H開始的單元中,直至收到的數(shù)據(jù)為字符D時(shí)停止接收功能。串口波特率為9600b/s,晶振頻率為11.0592MHz。答:程序代碼如下:#include<reg51.h>#include<>unsignedchari=0;voidmain(){ SCON=0x50; //串口方式1,允許接收 TMOD=0x20; TH1=0xfd; //波特率9600 TL1=0xfd; TR1=1; //啟動(dòng)定時(shí)器 EA=1; //開串行口中斷 ES=1; while(1); //等待接收中斷}voidserve()interrupt4{ RI=0; ACC=SBUF; //接收串口數(shù)據(jù) if(ACC!==’D’) //收到的字符不是D,繼續(xù)接收 { DBYTE[0x40+i]=ACC;i++; } elseREN=0;}第12章思考與練習(xí)1.MCS-51單片機(jī)擴(kuò)展外部RAM時(shí)的最大擴(kuò)展容量是多少?答:64KB。2.MCS-51單片機(jī)并行擴(kuò)展外部RAM時(shí)要用到哪幾個(gè)控制線?答:用到ALE、、和等三個(gè)。3.簡述MCS-51單片機(jī)執(zhí)行一條寫片外RAM存儲單元的指令時(shí),總線操作的過程是什么?答:當(dāng)單片機(jī)執(zhí)行寫片外RAM存儲單元的指令時(shí),總線操作的過程分為以下幾個(gè)步驟:(1)

P0口先輸出片外存儲單元地址的低8位,P2口輸出地址的高8位。(2)

ALE引腳輸出脈沖信號,在脈沖的高電平階段,P0口的低8位地址從74HC573的D端輸入,從Q端輸出,加到片外RAM的地址引腳A0~A7上。(3)在ALE脈沖的下降沿,74HC573進(jìn)入鎖存狀態(tài),低8位地址鎖存在Q端。(4)

P0口輸出數(shù)據(jù)信息到片外RAM的數(shù)據(jù)端口D0~D7。(5)單片機(jī)引腳向外輸出一負(fù)脈沖到6264的寫允許信號輸入端。(6)

片外RAM將數(shù)據(jù)存儲到地址A0~A12所對應(yīng)的存儲單元中。4.簡述MCS-51單片機(jī)執(zhí)行一條讀片外RAM存儲單元的指令時(shí),總線操作的過程是什么?答:當(dāng)單片機(jī)執(zhí)行一條讀片外RAM存儲單元的指令時(shí),總線操作的過程分為以下幾個(gè)步驟:(1)P0口先輸出片外存儲單元地址的低8位,P2口輸出地址的高8位。(2)ALE引腳輸出脈沖信號,在脈沖的高電平階段,P0口的低8位地址從74HC573的D端輸入,從Q端輸出,加到片外RAM的地址引腳A0~A7上。(3)在ALE脈沖的下降沿,74HC573進(jìn)入鎖存狀態(tài),低8位地址鎖存在Q端。(4)單片機(jī)引腳向外輸出一負(fù)脈沖到片外RAM的讀允許信號輸入端。(5)片外RAM將地址A0~A12對應(yīng)存儲單元中的數(shù)據(jù)取出送到端口D0~D7,數(shù)據(jù)通過P0口進(jìn)入到單片機(jī)內(nèi)部總線。第13章思考與練習(xí)1.AD轉(zhuǎn)換器的作用是什么?其數(shù)據(jù)輸出方式有哪兩種?ADC0809屬于哪一種?答:AD轉(zhuǎn)換器的作用是把模擬量轉(zhuǎn)換成相應(yīng)的數(shù)字量。2.ADC0809是幾位AD轉(zhuǎn)換器?其內(nèi)部由哪幾部分構(gòu)成?答:ADC0809是并行8位A/D轉(zhuǎn)換芯片,內(nèi)部由8路模擬量開關(guān)、8位A/D轉(zhuǎn)換器、三態(tài)輸出鎖存器以及地址鎖存與譯碼器等組成。3.簡述AD轉(zhuǎn)換器的基準(zhǔn)電壓作用是什么?答:基準(zhǔn)電壓是進(jìn)行A/D轉(zhuǎn)換時(shí)的參考電壓,也就是說,當(dāng)把一個(gè)模擬電壓轉(zhuǎn)換成相應(yīng)的數(shù)字量時(shí),究竟應(yīng)該轉(zhuǎn)換成多大的一個(gè)數(shù)字量,其依據(jù)的就是基準(zhǔn)電壓。4.簡述MCS-51單片機(jī)控制ADC0809的工作過程。答:單片機(jī)控制ADC0809進(jìn)行A/D轉(zhuǎn)換的工作過程如下:(1)為ADC0809添加基準(zhǔn)電壓和時(shí)鐘信號。(2)外部模擬電壓信號從通道IN0~I(xiàn)N7中的一路輸入到多路模擬開關(guān)。(3)將通道選擇字輸入到ADDC、ADDB、ADDA引腳。(4)在ALE引腳輸入高電平,選通并鎖存相應(yīng)通道。(5)在START引腳輸入高電平,啟動(dòng)A/D轉(zhuǎn)換。(6)當(dāng)EOC引腳變?yōu)楦唠娖綍r(shí),在OE引腳輸入高電平。(7)將D0~D7上的并行數(shù)據(jù)讀入單片機(jī)。第14章思考與練習(xí)1.DA轉(zhuǎn)換器的作用是什么?其數(shù)據(jù)輸入方式有哪兩種?DAC0832屬于哪一種?答:它將數(shù)字量轉(zhuǎn)換成與之成正比的模擬量。其數(shù)據(jù)輸入方式有并行和串行兩種,DAC0832屬于并行方式。2.DAC0832的轉(zhuǎn)換精度是多少?答:轉(zhuǎn)換精度為8位3.DAC0832應(yīng)用時(shí)有哪三種工作方式?答:在應(yīng)用時(shí),DAC0832通常有三種工作方式:直通方式、單緩沖方式、雙緩沖方式。4.畫出DAC0832工作于單緩沖方式時(shí)同AT89C51單片機(jī)的接口電路圖。答:接口電路圖如下所示:第15章思考與練習(xí)1.什么是I2C總線?有什么特點(diǎn)?答:I2C總線是Philips公司開發(fā)的二線式串行總線,它的主要特點(diǎn)是接口線少、通信速率高等。總線長度最高可達(dá)6.35m,最大傳輸速率為100Kb/s。2.I2C總線有幾根線組成?在總線連接時(shí)有什么要求?答:由SDA、SCL兩根線構(gòu)成,其中SDA是數(shù)據(jù)線,SCL是時(shí)鐘線。在硬件連接時(shí)需要接上拉電阻。3.I2C總線在通信時(shí)的信號類型有哪幾種?答:I2C總線在通信過程中共有五種類型信號,分別是起始信號、停止信號、應(yīng)答信號、非應(yīng)答信號和數(shù)據(jù)信號。5.I2C總線通信時(shí)數(shù)據(jù)位的先后順序是什么?答:高位在前,低位在后。6.MCS-51單片機(jī)是如何擴(kuò)展I2C總線的?答:可以利用I/O口,通過編程,軟件模擬I2C通信數(shù)據(jù)傳輸過程。7.寫出I2C總線上的器件地址組成格式及各部分的含義。答:地址組成格式如下:D7D6D5D4D3D2D1D0器件類型片選地址各部分含義如下:器件類型D7~D4:是I2C總線委員會(huì)分配好的固定值,E2PROM的器件類型為1010。片選地址D3~D1:由器件的外部引腳A2、A1、A0的接線來確定(對總線上同一類型的器件進(jìn)行選擇,最多只能接8片)。最后一位D0:數(shù)據(jù)方向位,1表示讀;0表示寫。8.簡述單片機(jī)從AT24C02讀數(shù)據(jù)的編程流程。答:發(fā)起始位→發(fā)器件寫地址→檢查應(yīng)答位→發(fā)存儲單元地址→檢查應(yīng)答位→重發(fā)起始位→發(fā)器件讀地址→檢查應(yīng)答位→接收數(shù)據(jù)→發(fā)應(yīng)答位→……→接收完畢,發(fā)非應(yīng)答位→發(fā)停止位。9.簡述單片機(jī)向AT24C02寫數(shù)據(jù)的編程流程。答:發(fā)起始位→發(fā)器件寫地址→檢查應(yīng)答位→發(fā)存儲單元地址→檢查應(yīng)答位→發(fā)數(shù)據(jù)→檢查應(yīng)答位→……→數(shù)據(jù)發(fā)送完畢,發(fā)停止位。第16章思考與練習(xí)1.SPI總線一共有幾根線?功能分別是什么?答:SPI通信有三根線,包括:串行數(shù)據(jù)輸出線SDO(serialdataout):主設(shè)備數(shù)據(jù)輸出,從設(shè)備數(shù)據(jù)輸入。串行數(shù)據(jù)輸入線SDI(serialdatain):主設(shè)備數(shù)據(jù)輸入,從設(shè)備數(shù)據(jù)輸出。串行時(shí)鐘線SCK(serialclock):時(shí)鐘信號由主設(shè)備產(chǎn)生。2.SPI總線上的數(shù)據(jù)位先后順序是什么?答:高位在前,低位在后。4.寫出TLC2543命令字的格式。答:命令字如下表所示:通道選擇輸出數(shù)據(jù)長度輸出數(shù)據(jù)順序數(shù)據(jù)極性D7D6D5D4D3D2D1D06.如果要控制TLC2543轉(zhuǎn)換通道為AIN5,轉(zhuǎn)換結(jié)果按照12位數(shù)據(jù)輸出,低位在前,則其寫入的命令字應(yīng)該是什么?答:52H。7.TLC5615是什么器件?其數(shù)據(jù)位是多少?答:TLC5615是串行D/A轉(zhuǎn)換器,數(shù)據(jù)位是10位。8.設(shè)TLC5615的基準(zhǔn)電壓為2.048V,當(dāng)輸入的數(shù)字量為756H時(shí),其輸出的模擬電壓是多少?答:因?yàn)?2位數(shù)據(jù)的最低2位為無效位,所以實(shí)際轉(zhuǎn)換數(shù)字量為1D5H,即4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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

提交評論