單片機(jī)應(yīng)用技術(shù)(c語言知識(shí)版第3版)[王靜霞]習(xí)題集標(biāo)準(zhǔn)答案_第1頁
單片機(jī)應(yīng)用技術(shù)(c語言知識(shí)版第3版)[王靜霞]習(xí)題集標(biāo)準(zhǔn)答案_第2頁
單片機(jī)應(yīng)用技術(shù)(c語言知識(shí)版第3版)[王靜霞]習(xí)題集標(biāo)準(zhǔn)答案_第3頁
單片機(jī)應(yīng)用技術(shù)(c語言知識(shí)版第3版)[王靜霞]習(xí)題集標(biāo)準(zhǔn)答案_第4頁
單片機(jī)應(yīng)用技術(shù)(c語言知識(shí)版第3版)[王靜霞]習(xí)題集標(biāo)準(zhǔn)答案_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1.1單項(xiàng)選擇題(1)1.2填空題(1)(2)硬件系統(tǒng)、軟件系統(tǒng) 時(shí)鐘電路、復(fù)位電路(3)(4)晶振1.3問答題XTAL1 、 XTAL2 、 RESET、 EA什么是單片機(jī)?它由哪幾部分組成?什么是單片機(jī)應(yīng)用系統(tǒng)?答:?jiǎn)纹⑿陀?jì)算機(jī)(Single Chip Microcomputer )簡(jiǎn)稱單片機(jī),是指集成在一個(gè)芯片上的微型計(jì)算機(jī),它的各種功能部件,包括CPU(Central Processing Unit )、存儲(chǔ)器(memory)、基本輸入/輸出(Input/Output,單片機(jī)應(yīng)用系統(tǒng)是以單片機(jī)為核心, 或多種功能的實(shí)用系統(tǒng)。簡(jiǎn)稱I/O)接口電路、定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)等,都制作在一塊

2、集成芯片上,構(gòu)成一個(gè)完整的微型計(jì)算機(jī)。配以輸入、輸出、顯示等外圍接口電路和控制程序,能實(shí)現(xiàn)一種1.4上機(jī)操作題(1)參考程序:reg51.h,定義了 51單片機(jī)的專用寄存器#include <reg51.h>/ 包含頭文件/函數(shù)名:delay/函數(shù)功能:實(shí)現(xiàn)軟件延時(shí)/形式參數(shù):無符號(hào)整型變量 i,控制空循環(huán)的循環(huán)次數(shù)/延時(shí)函數(shù)/返回值:無void delay(unsigned int i)unsigned int k;for(k=0;kvi;k+);voidmain()主函數(shù)while(1)P1=0x00;delay(20000);P1=0xff;調(diào)用延時(shí)函數(shù),實(shí)際參數(shù)為20000

3、delay(20000);調(diào)用延時(shí)函數(shù),實(shí)際參數(shù)為20000(2)參考程序:#include <reg51.h>/ 包含頭文件reg51.h,定義了 51單片機(jī)的專用寄存器/函數(shù)名:delay/函數(shù)功能:實(shí)現(xiàn)軟件延時(shí) /形式參數(shù):無符號(hào)整型變量 i,控制空循環(huán)的循環(huán)次數(shù)/延時(shí)函數(shù)/返回值:無 void delay(unsigned int i)unsigned int k;for(k=0;kvi;k+);voidmain()/主函數(shù)while(1)P1=0x55;delay(20000);調(diào)用延時(shí)函數(shù),實(shí)際參數(shù)為20000P 1=0xff;delay(20000);調(diào)用延時(shí)函數(shù),實(shí)

4、際參數(shù)為20000習(xí)題22.1單項(xiàng)選擇題(1)C ( 2) A(3) A(4)A( 5) A( 6) D( 7) C(8) A (9) A ( 10) C2.2填空題(1)外部程序存儲(chǔ)器、外部數(shù)據(jù)存儲(chǔ)器、內(nèi)部程序存儲(chǔ)器、內(nèi)部數(shù)據(jù)存儲(chǔ)器(2)程序存儲(chǔ)器(3)工作寄存器組、位尋址區(qū)、用戶RAM(4)1us、 2us(5)按鍵復(fù)位、上電復(fù)位(6)2、高2.3回答題(1)P3 口的第二功能是什么?答:P3 口各引腳的第二功能如下表。第一功能第二功能第二功能信號(hào)名稱P 3.0RXD串行數(shù)據(jù)接收P 3.1TXD串行數(shù)據(jù)發(fā)送P 3.2INT0外部中斷0申請(qǐng)P 3.3INT1外部中斷1申請(qǐng)P 3.4T0定時(shí)/

5、計(jì)數(shù)器0的外部輸入P 3.5T1定時(shí)/計(jì)數(shù)器1的外部輸入P 3.6WR外部RAM或外部I/O寫選通P 3.7RD外部RAM或外部I/O讀選通(2)畫出單片機(jī)時(shí)鐘電路,并指出石英晶體和電容的取值范圍。 答:?jiǎn)纹瑱C(jī)時(shí)鐘電路單片機(jī)時(shí)鐘電路如下圖。C,EMfLJODXTAJ7一般地,電容Ci和G取30 pF左右;晶體振蕩器,簡(jiǎn)稱晶振,頻率范圍是1.212 MHz。晶體振蕩頻率越高,系統(tǒng)的時(shí)鐘頻率也越高,單片機(jī)的運(yùn)行速度也就越快。在通常情況下,使用振蕩頻率為12 MHz的晶振。如果系統(tǒng)中使用了單片機(jī)的串行口通信,則一般采用振蕩頻率為(3)什么是機(jī)器周期?機(jī)器周期和晶振頻率有何關(guān)系?當(dāng)晶振頻率為6MHz答

6、:6 MHz 或11.0592 MHz 的晶振。時(shí),機(jī)器周期是多少?51單片機(jī)采用定時(shí)控制方式,有固定的機(jī)器周期。規(guī)定一個(gè)機(jī)器周期的寬度為 蕩脈沖周期,因此機(jī)器周期就是振蕩脈沖的十二分頻。當(dāng)晶振頻率為6MHz時(shí),機(jī)器周期是2US。(4)51單片機(jī)常用的復(fù)位方法有幾種?畫電路圖并說明其工作原理。答:2種,上電復(fù)位和按鍵復(fù)位。單片機(jī)常見的復(fù)位電路下圖所示。6個(gè)狀態(tài),即12個(gè)振22Fftl 'T片機(jī)RSTIkfl *<a> hqi臭位哨wtV,ccI卻F十REStT =U102eoo1Lkll f*4按a熒位Ui舒(a) 為上電復(fù)位電路。它利用電容充電來實(shí)現(xiàn)復(fù)位,在接電瞬間,RS

7、T端的電位與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ù)位電路。(5)51單片機(jī)片內(nèi)RAM的組成是如何劃分的?各有什么功能?答:8051的內(nèi)部RAM共有256個(gè)單元,通常把這256個(gè)單元按其功能劃分為兩部分:低128單元(單元地址0x000x7F)和高128單元(單元地址 0x80OxFF )。片內(nèi)RAM的低128個(gè)單元用

8、于存放程序執(zhí)行過程中的各種變量和臨時(shí)數(shù)據(jù),稱為DATA區(qū)。內(nèi)部RAM的高128單元地址為0x800xFF,是供給專用寄存器 SFR (Special Function Register,也稱為特殊功能寄存器)使用的。(6)51單片機(jī)有多少個(gè)特殊功能寄存器?它們分布在什么地址范圍?答:51單片機(jī)有21個(gè)可尋址的專用寄存器,它們不連續(xù)地分布在片內(nèi)RAM的高128單元中,盡管PC,它不其中還有許多空閑地址,但用戶不能使用。另外還有一個(gè)不可尋址的專用寄存器,即程序計(jì)數(shù)器 占據(jù)RAM單元,在物理上是獨(dú)立的。(7)簡(jiǎn)述程序狀態(tài)寄存器 PSW各位的含義,單片機(jī)如何確定和改變當(dāng)前的工作寄存器組。答:程序狀態(tài)字

9、PSW是一個(gè)8位寄存器,用于存放程序運(yùn)行中的各種狀態(tài)信息。PSW的各位定義如下表所示。位地 址0xD70xD60xD50xD40xD30xD20xD10xD0位名 稱CYACF0RS1RS0OVF1PCY( PSW.7):進(jìn)位標(biāo)志位。存放算術(shù)運(yùn)算的進(jìn)位標(biāo)志。AC( PSW.6):輔助進(jìn)位標(biāo)志位。存放算術(shù)運(yùn)算中低4位向高4位進(jìn)位或借位。RS1 RSO=OO。F0( PSW.5:用戶標(biāo)志位。供用戶定義的標(biāo)志位,需要利用軟件方法置位或復(fù)位。RS1和RS0( PSW.4,PSW.3):工作寄存器組選擇位。上電或復(fù)位后,OV( PSW.2):溢出標(biāo)志位。存放帶符號(hào)數(shù)加減運(yùn)算的溢出位。F1( PSW.1)

10、:保留未使用。1的個(gè)數(shù)的奇偶性。一般用于異步串4個(gè)物理存儲(chǔ)空間都能支持。常見的P( PSW.0):奇偶標(biāo)志位。存放累加器ACC數(shù)據(jù)的二進(jìn)制形式中行通信中的奇偶校驗(yàn)。(8)C51編譯器支持的存儲(chǔ)器類型有哪些?(9)當(dāng)單片機(jī)外部擴(kuò)展 RAM和ROM時(shí),P0 答:P0 口可以分時(shí)復(fù)用作為8位數(shù)據(jù)總線和低(10)在單片機(jī)的C語言程序設(shè)計(jì)中,如何使用 答:采用sfr和sbit來定義專用寄存器和位。答:?jiǎn)纹瑱C(jī)的存儲(chǔ)器結(jié)構(gòu)包括 4個(gè)物理存儲(chǔ)空間,C51編譯器對(duì)這存儲(chǔ)器類型描述data直接訪問內(nèi)部數(shù)據(jù)存儲(chǔ)器,允許最快訪問(128 B)bdata可位尋址內(nèi)部數(shù)據(jù)存儲(chǔ)器,允許位與字節(jié)混合訪問(16 B)idata

11、間接訪問內(nèi)部數(shù)據(jù)存儲(chǔ)器,允許訪問整個(gè)內(nèi)部地址空間(256 B)p data“分頁”外部數(shù)據(jù)存儲(chǔ)器(256 B)xdata外部數(shù)據(jù)存儲(chǔ)器(64 KB )code程序存儲(chǔ)器(64 KB )C51編譯器支持的存儲(chǔ)器類型如下表所示??诤蚉2 口各起什么作用?8位地址線,P2 口作為高8位地址線。SFR和可尋址位?2.4上機(jī)操作題(1)修改程序ex2_1.c,使得蜂鳴器發(fā)出有變化的報(bào)警聲。提示:修改延時(shí)參數(shù),聲音就會(huì)有改變。(2)利用單片機(jī)控制蜂鳴器和發(fā)光二極管,設(shè)計(jì)一個(gè)聲光報(bào)警系統(tǒng)。提示:增加一個(gè)LED發(fā)光二極管,采用一個(gè)I/O 口來控制,當(dāng)報(bào)警時(shí),發(fā)出聲音的同時(shí),燈也閃動(dòng)。(3)利用單片機(jī)控制按鍵和

12、發(fā)光二極管,設(shè)計(jì)一個(gè)單鍵控制單燈亮滅的系統(tǒng)。參考電路如下圖:<3V1參考程序如下:I' JUFa»9C5IP3.ti Ul 1XT MJ邑J*卻0 L HE.功能:?jiǎn)捂I控制單燈程序#include vreg51.h>sbit P1_0=P 1人0;定義P1.0引腳名稱為P1 0sbit P3_0=P 39/定義P3.0引腳名稱為P3_0void main()主函數(shù)bit led;定義位變量ledP3_0=1; led=P3_0;/P3.0作為輸入口,置1讀 P3.0if(led=1)if()led=0P1_0=1; /判斷按鍵是否按下,沒有按下,燈熄滅P1_0=0

13、; /按鍵按下,燈點(diǎn)亮(4)利用單片機(jī)控制 4個(gè)按鍵和4個(gè)發(fā)光二極管,設(shè)計(jì)一個(gè) 4人搶答器,要求當(dāng)有某一參賽者首先按 下?lián)尨痖_關(guān)時(shí),相應(yīng)的 LED燈亮,此時(shí)搶答器不再接受其他輸入信號(hào),需按復(fù)位按鍵才能重新開始搶答。參考電路如下圖。參考程序如下。/功能:實(shí)用4路搶答器程序 #include <reg51.h>sbit P3_0=P3A0; /定義 P3.0 引腳名稱為 P3_0sbit P3_1= P3A1;定義P3.1引腳名稱為P3_1sbit P3_2=P3A2;定義P3.2引腳名稱為P3_2sbit P3_3=P3A3;定義P3.3引腳名稱為P3_3void main()/主函

14、數(shù)bit flag; 11定義位變量flagwhile(!flag)if(! P3_0)P1=0xfe;flag=1;else if(! P3_1)P1=0xfd;flag=1;else if(! P3_2)P1=0xfb;flag=1;else if(! P3_3)P1=0xf7;flag=1;while(flag);3.1單項(xiàng)選擇題(1) C(2) A (3) A (4) D ( 5) D(6)習(xí)題3D ( 7) A ( 8) B ( 9) C ( 10) A(11) void delay (unsigned int i)、delay、delay3.2 填空題(1) main( 2) sb

15、it FLAG=P3人1;( 3)sfr(4)順序、選擇和循環(huán)(5)表達(dá)式和分號(hào)(6) if、switch(7) do-while語句、while語句 (8)無限次(9) 10000( 10) unsigned char(11)指定該變量在51單片機(jī)硬件系統(tǒng)中所使用的存儲(chǔ)區(qū)域,并在編譯時(shí)準(zhǔn)確的定位。(12) '0'3.3上機(jī)操作題(1)感應(yīng)燈控制系統(tǒng)設(shè)計(jì)。實(shí)現(xiàn)當(dāng)照明燈感應(yīng)到有人接近時(shí)自動(dòng)開燈,當(dāng)人離開后自動(dòng)關(guān)燈的功能。提示:采用熱釋電紅外傳感器模塊和發(fā)光二極管模擬電燈(2) 自動(dòng)滑動(dòng)門開關(guān)控制系統(tǒng)設(shè)計(jì)。實(shí)現(xiàn)當(dāng)滑動(dòng)玻璃門感應(yīng)到有人接近時(shí)自動(dòng)開門,當(dāng)人離開后自動(dòng)關(guān)門 的功能。提示:

16、采用熱釋電紅外傳感器模塊和電機(jī)模擬自動(dòng)開關(guān)門習(xí)題44.1單項(xiàng)選擇題(1) C(2)(3)C(4) B( 5) B ( 6) D ( 7) B(8) C (9)4.2填空題(1) ledk(10) D(11) CdelayO;(2),0'(3)程序存儲(chǔ)器的圖4.1中,如果直接將共陽極數(shù)碼管換成共陰極數(shù)碼管,能否正常顯示?為什么?應(yīng)采取4.3在任務(wù)10什么措施?答:不能正常顯示。因?yàn)楣碴枠O數(shù)碼管和共陰極數(shù)碼管的顯示碼不同,二者是反相關(guān)系。修改程序,或者 將顯示碼數(shù)組disp中的顯示碼換成共陰極顯示碼,或者在程序中增加取反操作即可。4.4七段LED靜態(tài)顯示和動(dòng)態(tài)顯示在硬件連接上分別具有什么特

17、點(diǎn),實(shí)際設(shè)計(jì)時(shí)應(yīng)如何選擇使用?答:靜態(tài)顯示是指使用數(shù)碼管顯示字符時(shí),數(shù)碼管的公共端恒定接地(共陰極)或+5V電源(共陽極)。將每個(gè)數(shù)碼管的8個(gè)段控制引腳分別與單片機(jī)的一個(gè)8位I/O端口相連。只要I/O端口有顯示字型碼輸出,數(shù)碼管就顯示給定字符,并保持不變,直到I/O端口輸出新的段碼。數(shù)碼管動(dòng)態(tài)顯示電路通常是將所有數(shù)碼管的8個(gè)顯示段分別并聯(lián)起來,僅用一個(gè)并行I/O端口控制,稱為“段選端”。各位數(shù)碼管的公共端,稱為“位選端”,由另一個(gè)I/O端口控制。實(shí)際應(yīng)用時(shí),當(dāng)顯示位數(shù)少于2位時(shí),可以采用靜態(tài)顯示方式;當(dāng)顯示位數(shù)較多時(shí),建議采用動(dòng)態(tài)顯示方式。4.5 LED大屏幕顯示一次能點(diǎn)亮多少行?顯示的原理是

18、怎樣的?答:LED大屏幕顯示一次能點(diǎn)亮 1行,采用逐行點(diǎn)亮的方式。顯示原理:先給第1行送高電平(行高電平有效),同時(shí)給8列送該行顯示碼(列低電平有效);然后 給第2行送高電平,同時(shí)給 8列送顯示碼,最后給第 8行送高電平,同時(shí)給 8列顯示碼。每行點(diǎn)亮延 時(shí)時(shí)間為約1 ms,第8行結(jié)束后再從第1行開始循環(huán)顯示。利用視覺駐留現(xiàn)象,人們看到的就是一個(gè)穩(wěn)定 的字符。4.6機(jī)械式按鍵組成的鍵盤,應(yīng)如何消除按鍵抖動(dòng)?答:按鍵的機(jī)械抖動(dòng)可采用硬件電路來消除,也可以采用軟件方法進(jìn)行去抖。軟件去抖編程思路:在檢測(cè)到有鍵按下時(shí),先執(zhí)行10 ms左右的延時(shí)程序,然后再重新檢測(cè)該鍵是否仍然按下,以確認(rèn)該鍵按下不是因

19、抖動(dòng)引起的。同理,在檢測(cè)到該鍵釋放時(shí),也采用先延時(shí)再判斷的方法消除抖動(dòng)的影響。4.7獨(dú)立式按鍵和矩陣式按鍵分別具有什么特點(diǎn)?適用于什么場(chǎng)合?答:在單片機(jī)應(yīng)用系統(tǒng)中,如果系統(tǒng)需要按鍵數(shù)量較少,一般采用獨(dú)立式按鍵接口,每個(gè)按鍵單獨(dú)占用一根I/O端口線,按鍵的工作不會(huì)影響其他I/O端口線的狀態(tài),獨(dú)立式按鍵的電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一根I/O端口線,因此,在按鍵較多時(shí),I/O端口線浪費(fèi)較大,不宜采用。為了節(jié)約單片機(jī)硬件接口資源,當(dāng)系統(tǒng)需要按鍵數(shù)量較多時(shí),一般采用矩陣鍵盤接口方式。由線和4根列線組成,例如:P0.0P0.3控制行線,且行線通過上拉電阻接到+ 5V電源上,構(gòu)成了一個(gè)4

20、根行P2.0P2.3控制列線,按鍵位于行、列線的交叉點(diǎn)上,4X4 (16個(gè)按鍵)的矩陣式鍵盤。5.1單項(xiàng)選擇題(1)C(10) A(2) A( 3) D ( 4) A(11) C (12) C(13) C(5)A(14)D(6) B ( 7) A(8) A ( 9)5.2填空題(1)TO、T1、方式寄存器TMOD和控制寄存器TCON(2)GATE=0(3)(5)(6)(4 )設(shè)置定時(shí)器的工作方式控制定時(shí)器的啟動(dòng)、停止、標(biāo)識(shí)定時(shí)器的溢出和中斷情況 中斷標(biāo)志寄存器0x50TCON、串行口控制寄存器SCON、中斷允許控制寄存器IE和中斷優(yōu)先級(jí)控制寄存器IP(7)寄存器IP中斷標(biāo)志寄存器TCON和串行

21、口控制寄存器SCON、中斷允許控制寄存器IE和中斷優(yōu)先級(jí)控制(8)電平觸發(fā)方式(9)軟件方法、硬件方法、硬軟結(jié)合(10) 05.3問答題(1)機(jī)器周期1計(jì)數(shù)的初值就是計(jì)數(shù)值。計(jì)算初值時(shí),增1計(jì)數(shù)的初值需要用最大計(jì)數(shù)值(模值)減去計(jì)數(shù)值;減(4)當(dāng)定時(shí)/計(jì)數(shù)器在工作方式1下,晶振頻率為 6 MHz,請(qǐng)計(jì)算最短定時(shí)時(shí)間和最長(zhǎng)定時(shí)時(shí)間各 是多少?答:工作方式1的計(jì)數(shù)模值是 65536,機(jī)器周期2us,所以最短定時(shí)時(shí)間為2us,最長(zhǎng)定時(shí)時(shí)間為: 2us*65536=130ms。(5)51單片機(jī)定時(shí)/計(jì)數(shù)器四種工作方式的特點(diǎn)有哪些?如何進(jìn)行選擇和設(shè)定?答:工作方式0是13位定時(shí)計(jì)數(shù)器,工作方式 1是16

22、位定時(shí)計(jì)數(shù)器,工作方式 2是初值自動(dòng)重載的8位定時(shí)計(jì)數(shù)器,工作方式 3下只有T0可以設(shè)置為工作方式 3,T1設(shè)置為工作方式3后不工作。 可根據(jù)應(yīng)用場(chǎng)合和定時(shí)時(shí)間來確定工作方式,在TMOD寄存器中設(shè)定。(6)什么叫中斷?中斷有什么特點(diǎn)?答:中斷是指通過硬件來改變 CPU的運(yùn)行方向。計(jì)算機(jī)在執(zhí)行程序的過程中,外部設(shè)備向CPU發(fā)出中斷請(qǐng)求信號(hào),要求CPU暫時(shí)中斷當(dāng)前程序的執(zhí)行而轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,待處理程序執(zhí)行完畢后,再繼 續(xù)執(zhí)行原來被中斷的程序。這種程序在執(zhí)行過程中由于外界的原因而被中間打斷的情況稱為“中斷”。中斷特點(diǎn):同步工作、實(shí)時(shí)處理、異常處理等。(7)51單片機(jī)有哪幾個(gè)中斷源?如何設(shè)定它

23、們的優(yōu)先級(jí)?答:中斷源有5個(gè),分別為外部中斷 0請(qǐng)求INT0、外部中斷1請(qǐng)求INtT、T0溢出中斷請(qǐng)求TF0、T1溢出 中斷請(qǐng)求TF1和串行口中斷請(qǐng)求 RI或TI。51單片機(jī)有兩個(gè)中斷優(yōu)先級(jí):高優(yōu)先級(jí)和低優(yōu)先級(jí)。每個(gè)中斷源都可以通過設(shè)置中斷優(yōu)先級(jí)寄存器IP確定為高優(yōu)先級(jí)中斷或低優(yōu)先級(jí)中斷,實(shí)現(xiàn)二級(jí)嵌套。同一優(yōu)先級(jí)別的中斷源可能不止一個(gè),因此,也需要進(jìn)行優(yōu)先權(quán)排隊(duì)。同一優(yōu)先級(jí)別的中斷源采用自然優(yōu)先級(jí)。中斷優(yōu)先級(jí)寄存器IP,用于鎖存各中斷源優(yōu)先級(jí)控制位。IP中的每一位均可由軟件來置 1或清零,1表示高優(yōu)先級(jí),0表示低優(yōu)先級(jí)。(8 )外部中斷有哪兩種觸發(fā)方式?如何選擇和設(shè)定?答:外部中斷有電平觸發(fā)方

24、式和下降沿觸發(fā)方式。由TCON中的IT位設(shè)定,例如:當(dāng)IT1 = 0時(shí),外部中斷1控制為電平觸發(fā)方式;當(dāng)IT1 = 1時(shí),外部中斷1控制為邊沿(下降沿)觸 發(fā)方式。(9)中斷函數(shù)的定義形式是怎樣的?答:C51編譯器支持在C源程序中直接以函數(shù)形式編寫中斷服務(wù)程序。中斷函數(shù)的定義形式如下:void 函數(shù)名()interru ptn其中n為中斷類型號(hào),C51編譯器允許031個(gè)中斷,n的取值范圍為031。5.4 操作題(1 )設(shè)計(jì)時(shí)間間隔為1s的流水燈控制程序。 參考程序如下:/功能:間隔顯示時(shí)間為1秒的流水燈程序#include "REG51.H"/包含頭文件REG51.H定義了

25、 MCS-5單片機(jī)的特殊功能寄存器/函數(shù)名:delayls函數(shù)功能:用T1工作在方式1下的1秒延時(shí)函數(shù),采用查詢方式實(shí)現(xiàn) 形式參數(shù):無返回值:無void delay1s()unsigned char i;for(i=0;i<0x14;i+)/TH1=0x3c;設(shè)置20次循環(huán)次數(shù)/設(shè)置定時(shí)器初值為3CB0HTL1=0xb0;TR1=1;/啟動(dòng)T1while(!TF1);/TF1=0;查詢計(jì)數(shù)是否溢出,即定時(shí) 50ms時(shí)間到,TF1=1/50ms定時(shí)時(shí)間到,將T1溢出標(biāo)志位TF1清零void main()/主函數(shù)unsigned char i,w;TMOD=0x10;/設(shè)置T1為工作方式1w

26、hile(1)w=0x01;/顯示碼初值為01Hfor(i=0;iv8;i+)P1=w;/ww<<=1;/取反后送P1 口,點(diǎn)亮相應(yīng)LED丁 點(diǎn)亮燈的位置移動(dòng)delay1s();/調(diào)用1秒延時(shí)函數(shù)(2)用單片機(jī)控制時(shí)間間隔為1 s。個(gè)LED發(fā)光二極管,要求 8個(gè)發(fā)光二極管按照 BCD碼格式循環(huán)顯示 0059,提示:45,其BCD碼形BCD (Binary Coded Decimal )碼是用二進(jìn)制數(shù)形式表示十進(jìn)制數(shù),例如十進(jìn)制數(shù) 式為0x45。BCD碼只是一種表示形式,與其數(shù)值沒有關(guān)系。BCD碼用4位二進(jìn)制數(shù)表示一位十進(jìn)制數(shù),這4位二進(jìn)制數(shù)的權(quán)為8421,所以BCD碼又稱為8421

27、碼。用4位二進(jìn)制數(shù)表示一個(gè)十進(jìn)制數(shù),例如十進(jìn)制數(shù)56、87和143的BCD碼表示形式如下:0101 0110(56)1000 0111(87)0001 0100 0011(143)答:參考程序如下:/功能:采用BCD碼格式顯示的059簡(jiǎn)易秒表程序#include <reg51.h> void main()void delay1s() /1秒延時(shí)函數(shù),參見任務(wù)7程序ex4_1.cunsigned char i, t;TMOD=0x10;/置T1為工作方式1while(1)for(i=0;iv60;i+)t=(i/10)vv4)|(i%10);/將i轉(zhuǎn)換為BCD碼P1=t;/計(jì)數(shù)值取反

28、后送P1 口顯示delay1s();/調(diào)用1秒延時(shí)函數(shù)(3)可控霓虹燈設(shè)計(jì)。系統(tǒng)包括 的顯示方式。要求正常情況下燈同時(shí)亮滅一次,時(shí)間間隔為8個(gè)發(fā)光二極管,連接在 P3.2引腳的一個(gè)按鍵,通過按鍵改變霓虹燈8個(gè)霓虹燈依次順序點(diǎn)亮,循環(huán)顯示,時(shí)間間隔為1 S。按鍵按下后8個(gè)霓虹0.5S。(按鍵動(dòng)作采用外部中斷 0實(shí)現(xiàn))。答:參考程序如下:/功能:可控信號(hào)燈程序#include <reg51.h>函數(shù)名:delay0_5s函數(shù)功能:用T0的方式1編制0.5秒延時(shí)程序,假定系統(tǒng)采用 12MHz晶振,定時(shí)器1、工作方式1定時(shí)50ms,再循環(huán)10次即可定時(shí)到0.5秒/形式參數(shù):無返回值:無vo

29、id delay0_5s()unsigned char i;for(i=0;i<0x0a;i+)TH0=0x3c;TL0=0xb0;/設(shè)置10次循環(huán)次數(shù)/設(shè)置定時(shí)器初值TR0=1;/啟動(dòng)T0while(!TF0);/查詢計(jì)數(shù)是否溢出,即定時(shí) 50ms時(shí)間到,TF0=0TF0=0;/ 50ms定時(shí)時(shí)間到,將定時(shí)器溢出標(biāo)志位TF0清零/函數(shù)名:delay_t函數(shù)功能:實(shí)現(xiàn)0.5秒128秒延時(shí)/形式參數(shù):unsigned char t;延時(shí)時(shí)間為0.5秒X t/返回值:無void delay_t(unsigned char t)unsigned char i;for(i=0;i<t;i+

30、)delay0_5s();/函數(shù)名:int 0/函數(shù)功能:外部中斷 0中斷函數(shù),當(dāng)CPJ響應(yīng)外部中斷0的中斷請(qǐng)求時(shí),自動(dòng)執(zhí)行該 函數(shù),實(shí)現(xiàn)八個(gè)信號(hào)燈閃爍/形式參數(shù):無返回值:無void int_0() interru pt 0 /外部中斷0的中斷號(hào)為0P1=0x00;/熄滅八個(gè)信號(hào)燈delay0_5s();/調(diào)用0.5秒延時(shí)函數(shù)P1=0xff;/點(diǎn)亮八個(gè)信號(hào)燈delay0_5s();/調(diào)用0.5秒延時(shí)函數(shù)void main()/主函數(shù)unsigned char i,w;EA=1;/打開中斷總允許位EX0=1;/打開外部中斷0允許位IT0=1;TMOD=0x01;/設(shè)置外部中斷為邊沿(下降沿)觸

31、發(fā)方式 設(shè)置T0為工作方式1while(1)w=0x01;/顯示碼初值為01Hfor(i=0;i<8;i+)P1=w;/ w取反后送P1 口,點(diǎn)亮相應(yīng)LED丁w<<=1;/點(diǎn)亮燈的位置移動(dòng)delay_t(2);/調(diào)用延時(shí)函數(shù)delay_t(),實(shí)際參數(shù)為2,延時(shí)1秒6.1單項(xiàng)選擇題(1)A(9)C(2) B(3)D(10) A (11)(4)CC ( 12)(5)B(6) C ( 7)D( 13)A6.2問答題B (8)C(1)答:什么是串行異步通信?有哪幾種幀格式?在異步通信中,數(shù)據(jù)通常是以字符為單位組成字符幀傳送的。字符幀由發(fā)送端一幀一幀地發(fā)送,每一 幀數(shù)據(jù)是低位在前,高

32、位在后,通過傳輸線由接收端一幀一幀地接收。發(fā)送端和接收端分別使用各自獨(dú)立 的時(shí)鐘來控制數(shù)據(jù)的發(fā)送和接收,這兩個(gè)時(shí)鐘彼此獨(dú)立,互不同步。在串行通信中,兩相鄰字符幀之間可以沒有空閑位,也可以有若干空閑位,這由用戶來決定。(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)。7.3 編程題(1 )利用串行口設(shè)計(jì) 4位靜態(tài)LED顯示,畫出電路圖并編寫程序,要求4位LED每隔1 s交替顯示“ 1234 ”和“ 5678”。參考電路在教材第 20

33、7頁圖6.16的基礎(chǔ)之上再添加兩片 74LS164和兩個(gè)數(shù)碼管即可。參考程序如下:#include "reg51.h" /包含頭文件reg51.hunsigned char da=0xF9,0xA4,0xB0,0x99; /,定義51單片機(jī)的專用寄存器定義14的共陽極字型顯示碼unsigned char da1=0x92,0x82,0x0F8,0x80; /定義58的共陽極字型void delay1s()unsigned char i;for(i=0;iv0x20;i+)/設(shè)置20次循環(huán)次數(shù)/設(shè)置定時(shí)器初值TH0=0x3c;TL0=0xb0;TR0=1;/啟動(dòng)T0while

34、(!TF0);/TF0=0;查詢計(jì)數(shù)是否溢出,即定時(shí) 50ms時(shí)間到,TF0=0/ 50ms定時(shí)時(shí)間到,將定時(shí)器溢出標(biāo)志位TF0清零main()unsigned char i;/P 1.0置1,允許串行移位P1=0xff;SC0N=0x00;/設(shè)串行口方式0TMOD=0x01;/設(shè)置T0為工作方式1while(1)for (i=0;i<4;i+)SBUF=dai;TI=0;/送顯示數(shù)據(jù)1234while(!TI);/等待發(fā)送完畢delay1s();for (i=0;i<4;i+)SBUF=da1i;/送顯示數(shù)據(jù)5678TI=0;while(!TI);/等待發(fā)送完畢7.2填空題1 s

35、發(fā)送一次“ A”字符,乙機(jī)接收到以后,(2)編程實(shí)現(xiàn)甲乙兩個(gè)單片機(jī)進(jìn)行點(diǎn)對(duì)點(diǎn)通信,甲機(jī)每隔 在LCD上能夠顯示出來。參考電路圖略。參考程序如下:甲機(jī)發(fā)送程序:void Stop( void);/停止函數(shù)/功能:甲機(jī)發(fā)送數(shù)據(jù)程序,采用查詢方式實(shí)現(xiàn)包含頭文件reg51.h,定義51單片機(jī)的專用寄存器/主函數(shù)#include vreg51.h>/void main()unsigned char i;TMOD=0x20;/定時(shí)器T1工作于方式2TL1=0xf4;/波特率為2400bpsTH1=0xf4;TR1=1;while(1)SCON=0x40;/定義串行口工作于方式1SBUF=0x41;/

36、while(TI=0);/發(fā)送A查詢等待發(fā)送是否完成TI=0;/發(fā)送完成,TI由軟件清0delay1s(); /1秒延時(shí)函數(shù)參見7.3(1)題乙機(jī)接收程序略。(3)編寫一個(gè)實(shí)用的串行通信測(cè)試軟件,其功能為:將PC機(jī)鍵盤的輸入數(shù)據(jù)發(fā)送給單片機(jī),單片機(jī)收到PC機(jī)發(fā)來的數(shù)據(jù)后,回送同一數(shù)據(jù)給PC機(jī),并在屏幕上顯示出來。只要屏幕上顯示的字符與所鍵入的字符相同,說明二者之間的通信正常。通信協(xié)議:第1字節(jié),最高位(MSB )為1,為第1字節(jié)標(biāo)志;第2字節(jié),MSB為0,為非第1字節(jié)標(biāo)志,依次類推,最后1字節(jié)為前幾字節(jié)后7位的異或校驗(yàn)和。單片機(jī)串行口工作在方式 1,晶振為11.0592 MHz,波特率為480

37、0 bps。通信程序略。習(xí)題 77.1 單項(xiàng)選擇題(1)D( 2)A( 3)C ( 4)D( 5)A(1)(2)模擬,數(shù)字,數(shù)字,模擬 分辨率、建立時(shí)間7.3問答題(1)答:判斷A/D轉(zhuǎn)換是否結(jié)束,一般可采用幾種方式?每種方式有何特點(diǎn)?查詢方式,CPU通過查詢轉(zhuǎn)換結(jié)束標(biāo)志位確認(rèn)轉(zhuǎn)換結(jié)束后, 再執(zhí)行后面的操作,占用 中斷方式,轉(zhuǎn)換結(jié)束后向 CPU申請(qǐng)中斷,CPU在中斷服務(wù)函數(shù)中讀取轉(zhuǎn)換值,不占用間;延時(shí)方式,如果知道 A/D轉(zhuǎn)換時(shí)間,可以在轉(zhuǎn)換開始后直接延時(shí)超過該時(shí)間的時(shí)間,占用 時(shí)間。CPU時(shí)間;CPU時(shí)CPU7.4應(yīng)用題(1 )設(shè)計(jì)一個(gè)鋸齒波發(fā)生器系統(tǒng)。提示:程序ex7_3.c中修改數(shù)組si

38、n據(jù)即可。統(tǒng)。(2)EEPROM芯片AT24C02采用的也是I2C總線接口,請(qǐng)?jiān)O(shè)計(jì) 51單片機(jī)擴(kuò)展EEPROM的軟硬件系提示:請(qǐng)查閱 AT24C02資料,參考電路(AT24C01)/功能:EEPRO讀寫程序,從AT24C01的4個(gè)連續(xù)存儲(chǔ)單元中讀出4個(gè)字節(jié)的數(shù)據(jù),然后將4 個(gè)新的數(shù)值寫入AT24C01的對(duì)應(yīng)4個(gè)存儲(chǔ)單元中,再重新讀出。/#include <reg51.h>#include <intrins.h>/*/_nop_()函數(shù)所在的頭文件位定義及預(yù)定義 */#define AddWr 0xa0/器件地址選擇及寫數(shù)據(jù)地址 OxaO#define AddRd 0xa

39、1/器件地址選擇及讀數(shù)據(jù)地址0xa1sbit SDA= P 3人4;/sbit SCL= P 3人3;/串行數(shù)據(jù)輸入/輸出位定義 串行時(shí)鐘位定義bit ack_bit;/應(yīng)答標(biāo)志/*void mDelay(unsigned char ms);函數(shù)聲明 */延時(shí)函數(shù)聲明void Start(void);/開始函數(shù)void Ack(void);/應(yīng)答函數(shù)void NoAck(void);/反向應(yīng)答函數(shù)void Shout(unsigned char Data);/串行輸出數(shù)據(jù)函數(shù)unsigned char Shin(void);/串行輸入數(shù)據(jù)函數(shù)void WrByte(unsigned char

40、Data,unsigned char Address,unsigned char Num); /寫字節(jié)函數(shù)void RdRadom(unsigned char Data,unsigned char Address,unsigned char Num); /隨機(jī)地址讀函數(shù)/*主函*/void main()unsigned char R1data4= 0,0,0,0;/初始化讀數(shù)據(jù)數(shù)組1為全0unsigned char R2data4= 0,0,0,0;/初始化讀數(shù)據(jù)數(shù)組2為全0unsigned char Wdata4=1,2,3,4;/初始化寫數(shù)據(jù)數(shù)組RdRadom(R1data,4,4);/讀

41、AT24C0中的4個(gè)字節(jié)數(shù)據(jù)到讀數(shù)據(jù)數(shù)組1WrByte(Wdata,4,4);/將初始化后的數(shù)值寫入AT24C01mDelay(20);RdRadom(R2data,4,4);/重新讀出寫入的數(shù)據(jù)到讀數(shù)據(jù)數(shù)組2/*寫字節(jié) */函數(shù)名:WrByte函數(shù)功能:向AT24C*器件的指定地址按字節(jié)連續(xù)寫入數(shù)據(jù)/形式參數(shù):待寫入的數(shù)據(jù) Data,起始地址Address,待寫入的字節(jié)數(shù)Num/返回值:返回為0表示操作成功,否則操作有誤void WrByte(unsigned char Data,unsigned char Address,unsigned char Num)unsigned char i;

42、unsigned char *P Data;P Data=Data;for(i=0;i<Num;i+)/連續(xù)寫入Nun個(gè)字節(jié)數(shù)據(jù)Start();Shout(AddWr);/發(fā)送啟動(dòng)信號(hào)/發(fā)送寫操作器件地址AddW,0xa0Ack();/接收ACI應(yīng)答Shout(Address+i);/發(fā)送地址Ack();/接收ACI應(yīng)答Shout(*( PData+i);/發(fā)送待寫入的數(shù)據(jù)Ack();/接收ACI應(yīng)答Stop();/發(fā)送停止信號(hào)mDelay(20);/ 等待內(nèi)定時(shí)寫入周期結(jié)束/*隨機(jī)地址讀 */ 函數(shù)名:RdRadom/函數(shù)功能:從AT24C*器件的指定地址按字節(jié)讀入數(shù)據(jù)/形式參數(shù):起始

43、地址 Address,待讀入的字節(jié)數(shù)Num/返回值:讀出的字節(jié)放入 data,如果操作成功返回為0,否則操作有誤 void RdRadom(unsigned char Data,unsigned char Address,unsigned char Num)unsigned char i;unsigned char *P Data;P Data=Data;for(i=O;ivNum;i+)Start();/開始Shout(AddWr);/發(fā)送寫操作器件地址AAck();shout(Address+i);/發(fā)送字節(jié)地址Ack();Start();/開始shout(AddRd);/發(fā)送讀操作器件地

44、址AddRdAck();*(P Data+i)=shin();/調(diào)用讀數(shù)據(jù)函數(shù)SCL=0;NoAck();/反向應(yīng)答Stop();/停止/*開始函*/函數(shù)名:Start/函數(shù)功能:發(fā)送STAR狀態(tài),定義為當(dāng)形式參數(shù):無SC為高時(shí)SDA從高到低/返回值:返回時(shí)SCL, SDA為氐SCL=1;_nop_();_nop_();_nop_();_nop_();/升高SCL/保持?jǐn)?shù)據(jù)建立延遲及周期延遲SDA=0;/降低SDA_nop_();_nop_();_nop_();_nop_();SCL=0;/保持SDA為低,保持時(shí)間hold delay/降低SCL/*停止函*/函數(shù)名:Sto P函數(shù)功能:發(fā)送S

45、TOP狀態(tài),定義為當(dāng)SCL為高時(shí)SDA從低變高/形式參數(shù):無void Start(void)SDA=1;/ 升高 SDA/返回值:返回時(shí)SCL,SDA為高 void Stop( void)/保持SCI為低及數(shù)據(jù)穩(wěn)定/保持建立延遲/*串行輸出數(shù)據(jù) */函數(shù)名:Shout/函數(shù)功能:串行發(fā)送一個(gè)字節(jié)(包括地址和數(shù)據(jù)) 形式參數(shù):待發(fā)送的字節(jié) Data,調(diào)用前SCL 返回值:無給AT24C*器件,高位在前SDA為低,返回時(shí)SCL低。void Shout(unsigned char Data)unsigned char BitCounter=8;/設(shè)置位計(jì)數(shù)器unsigned char temp;/中

46、間變量控制dotemp=Data;SCL=0;_nop_();_nop_();_nop_();_nop_();/時(shí)鐘為低電平保持SCL為低if(te mp&0x80)=0x80) SDA=1;/輸出一位,如果最高位是1,則輸出1到SDAelse SDA=0;/SCL=1;如果最高位是0,則輸出0到SDA時(shí)鐘為高電平/temp=Datavv1;/左移一位(咼位在前)SDA=O;_nop_();_nop_();SCL=1;_nop_();_nop_();_nop_();_nop_();SDA=1;_nop_();_nop_();_nop_();_nop_();Data=te mp;BitCounter-;while(BitCounter);/傳送下一位SCL=0;/*串行輸入數(shù)據(jù)*/函數(shù)名:Shin/函數(shù)功能:從AT24C*串行讀入一個(gè)字節(jié)數(shù)據(jù),高位在前 形式參數(shù):調(diào)用前SCL為低/返回值:返回讀入的字節(jié),返回時(shí) SCL為低unsigned char Shin(void)unsigned char temp=0;unsig

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論