單片機實驗課題有助于單片機的學習
《單片機實驗課題有助于單片機的學習》由會員分享,可在線閱讀,更多相關《單片機實驗課題有助于單片機的學習(21頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、實驗一 Keil Vision的使用一、實驗目的掌握Keil Vision的使用;掌握單片機匯編程序的調(diào)試方法。二、實驗原理Keil Vision是美國Keil Software公司出品的單片機集成開發(fā)環(huán)境,具有單片機C語言或匯編語言程序編輯、編譯或匯編、連接、調(diào)試等功能,允許設置斷點,查看程序存儲器、數(shù)據(jù)存儲器和SFR的內(nèi)容,以圖形的方式顯示SFR或變量內(nèi)容隨時間的變化,是目前單片機開發(fā)最常用的軟件工具。運行Keil Vision后,程序窗口如圖1-1所示。其中項目窗口用于管理工程項目所包含的文件,源程序窗口用于程序編輯,編譯信息窗口輸出編譯或匯編的狀態(tài)信息。各個窗口可以懸?。‵loatin
2、g)在主窗口之上,也可以停泊(Docking)在主窗口中,單擊程序主窗口Window菜單的Rest View to Defaults命令,將窗口恢復成默認狀態(tài)。編譯信息窗口源程序窗口項目窗口圖1-1 Keil Vision程序窗口三、實驗環(huán)境Windows XP;Keil Vision 4;四、實驗內(nèi)容1建立項目雙擊桌面Keil Vision圖標或單擊開始菜單的Keil Vision命令運行程序,出現(xiàn)圖1-1所示的程序窗口。在主程序菜單欄單擊Project菜單的New Vision Project命令,出現(xiàn)創(chuàng)建新文件對話框,為項目文件命名并選擇存放路徑(建議為每一個項目建立獨立的文件夾)。單擊
3、保存按鈕,出現(xiàn)圖1-2所示器件選擇對話框,在Data base列表中選擇Atmel公司的AT89C52,作為項目使用的單片機。當出現(xiàn)如圖1-3所示的添加啟動代碼對話框時,單擊否。圖1-2 器件選擇對話框圖1-3 添加啟動代碼對話框2程序編輯單擊File菜單的New命令,出現(xiàn)源程序編輯窗口,在源程序編輯窗口中輸入?yún)R編程序并保存(擴展名為asm)。ORG 0000Hmain:MOV P1,#00Hloop:INC P1SJMP loopEND在項目窗口中用鼠標右鍵單擊Source Group 1,在彈出的快捷菜單中選擇Add Files to Group Source Group 1命令,將剛才保
4、存的源程序文件添加到項目中。3程序調(diào)試在項目窗口中用鼠標右鍵單擊Target 1,在彈出的快捷菜單中選擇Options for Target Target 1命令,出現(xiàn)圖1-4項目選項對話框。在選項對話框中,將晶振頻率改為12MHz。單擊主程序窗口的Build工具或按快捷鍵F7,對源程序進行匯編。如果程序有錯,根據(jù)輸出信息修改源程序,重新進行匯編,直到錯誤為零。單擊主程序窗口Debug菜單的Start/Stop Debug Session命令,進入調(diào)試狀態(tài)。調(diào)試狀態(tài)的主程序窗口如圖1-5所示。寄存器窗口可以查看和修改寄存器的值,反匯編窗口可以查看指令代碼及其在程序存儲器中的地址。單擊主程序窗口
5、View菜單的Analysis Windows子菜單的Logic Analyzer命令,打開Logic Analyzer窗口,可以觀察SFR或變量的值隨時間的變化,各個子窗口排列可以通過鼠標拖動或右鍵單擊標題欄選擇彈出的子菜單命令加以改變。單擊Logic Analyzer窗口的Setup按鈕,出現(xiàn)Setup Logic Analyzer對話框(如圖1-6),在對話框中單擊右上角的Insert按鈕,將P1添加到待分析信號中。圖1-4 項目選項對話框在主程序窗口中單擊Run工具或按快捷鍵F5運行程序,然后單擊Stop工具或Debug菜單的Stop命令,停止程序運行,觀察邏輯分析窗口中P1寄存器內(nèi)容
6、隨時間的變化,應如圖1-5所示呈鋸齒形變化。五、思考題1修改程序,使P1的值在0100之間變化。2修改程序,使P1的值隨時間呈三角形變化(如圖1-7所示)。圖1-5 調(diào)試狀態(tài)主程序窗口New(Insert)按鈕圖1-6 設置待分析信號圖1-7 P1隨時間呈三角形變化實驗二 匯編語言程序設計一、實驗目的熟悉單片機指令、偽指令的使用;掌握單片機匯編程序的設計、調(diào)試方法。二、實驗原理1匯編語言匯編程序由指令語句、偽指令語句和宏指令語句構成。指令語句即機器指令,由標號、指令助記符、操作數(shù)和注釋四部分組成,單片機的指令長度為13個字節(jié),大部分為單周期指令,少部分為雙周期指令,只有乘法、除法指令為四周期指
7、令。偽指令語句定義程序結構和符號,在程序中起指示或說明作用,不產(chǎn)生機器碼。宏指令是通過將一段指令序列定義成一個宏,每次用到該指令序列可以用宏名代替。適當使用宏指令,可以大大簡化程序設計,增強程序的可讀性。2兩字節(jié)乘除運算單片機字長8位,一次只能完成8位乘8位或8位除8位運算,要進行16位乘除運算,需按運算規(guī)則編程實現(xiàn)。16位乘法運算如圖2-1所示,由四次8位乘法運算組成,四次乘法運算的乘積經(jīng)錯位相加,形成32位乘積。R1(8位)R0(8位)R3(8位)R2(8位)R2R0(16位)R3R0(16位)R2R1(16位)R3R1(16位)Product(32位)圖2-1 兩字節(jié)乘法運算16位除16
8、位無符號整數(shù)除法運算如圖2-2所示。設除數(shù)有n位前導0,則對除數(shù)循環(huán)左移n次,商為n+1位。被除數(shù)減除數(shù),夠減時商為1,不夠減時商為零,每減一次,除數(shù)右移一位,重復n+1次。三、實驗環(huán)境Windows XP;Keil Vision 4;四、實驗內(nèi)容1程序設計雙擊桌面Keil Vision圖標或單擊開始菜單的Keil Vision命令運行程序,在主程序中單擊Project菜單的New Vision Project命令,為項目文件命名并選擇存放路徑,選擇Atmel89C52作為項目所使用的單片機。單擊File菜單的New命令,出現(xiàn)源程序編輯窗口,在源程序編輯窗口中輸入?yún)R編程序并保存(擴展名為asm
9、)。被除數(shù)0?上商=1上商=0除數(shù)右移重復次數(shù)=0?圖2-2 兩字節(jié)除法流程16位乘法運算用R3、R2存放16位被乘數(shù),R1、R0存放16位乘數(shù),R7、R6、R5、R4存放32位乘積。ORG 0000HLJMP MAINMULT MACRO X,Y;宏定義MOV A,XMOV B,YMUL ABENDMMAIN:MULT R2,R0;R2R0 MOV R4,A MOV R5,B MULT R3,R0;R3R0 ADD A,R5 MOV R5,A MOV A,B ADDC A,#0 MOV R6,A MOV A,#0 ADDC A,#0 MOV R7,A MULT R2,R1;R2R1 ADD
10、A,R5 MOV R5,A MOV A,B ADDC A,R6 MOV R6,A MOV A,R7 ADDC A,#0 MOV R7,A MULT R3,R1;R3R1 ADD A,R6 MOV R6,A MOV A,B ADDC A,,R7 MOV R7,,A END2程序調(diào)試單擊主程序窗口的Build工具或按快捷鍵F7,對源程序進行匯編。單擊主程序窗口Debug菜單的Start/Stop Debug Session命令,進入調(diào)試狀態(tài)。在寄存器窗口通過雙擊工作寄存值,將被乘數(shù)R3、R2設為B754H,乘數(shù)R1、R0設為A360H,通過按F10單步運算程序。程序執(zhí)行后,檢查乘積R7、R6、R5
11、、R4的值,應為74FF3B80H。修改被乘數(shù)和乘數(shù),重新運行程序,檢查結果是否正確。五、思考題1不用宏指令MULT,原程序該如何寫?2分析下列16位除法程序,用不同的被除數(shù)和除數(shù)驗證運算結果是否正確。ORG 0000HLJMP MAIN被除數(shù)高8位被除數(shù)低8位除數(shù)高8位除數(shù)低8位42H商高8位商低8位40H44Hdividend DATA 40H;存放被除數(shù)和余數(shù)division DATA 42H;存放除數(shù)quotient DATA 44H;存放商RRC16 MACRO TEMP;兩字節(jié)右移宏定義MOV A,TEMPRRC A;高字節(jié)右移MOV TEMP,AMOV A,TEMP+1RRC A
12、;低字節(jié)右移MOV TEMP+1,AENDMRLC16 MACRO TEMP;兩字節(jié)左移宏定義MOV A,TEMP+1RLC A;低字節(jié)左移MOV TEMP+1,AMOV A,TEMPRLC A;高字節(jié)左移MOV TEMP,AENDMMAIN: MOV dividend,#0FEHMOV dividend+1,#1AH;設被除數(shù)為FE1AH(65050)MOV division,#00HMOV division+1,#0E6H;設除數(shù)為00E6H(230)MOV quotient,#00HMOV quotient+1,#00H;商清零MOV B,#00HMOV A,divisionADD A,
13、division+1JNZ L0SETB OVSJMP EXIT;除數(shù)為零,則退出L0:MOV A,division;計算除數(shù)前導0的位數(shù)JB ACC.7,L1CLR CRLC16 division;兩字節(jié)除數(shù)左移1位INC BSJMP L0L1:INC BL2:CLR CMOV A,dividend+1SUBB A,division+1MOV A,dividendSUBB A,divisionJC L3 ;不夠減,商為0MOV A,dividend+1SUBB A,division+1MOV dividend+1,AMOV A,dividendSUBB A,divisionMOV divid
14、end,ASETB C;夠減,商為1SJMP L4L3:CLR CL4:RLC16 quotient;兩字節(jié)商左移1位CLR CRRC16 division;兩字節(jié)除數(shù)右移1位DJNZ B,L2EXIT:SJMP $END實驗三 C51程序設計與Proteus仿真一、實驗目的掌握C51程序設計調(diào)試方法;掌握Proteus仿真軟件的使用;加深對單片機工作原理及外部引腳的理解。二、實驗原理1Proteus簡介Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與仿真軟件。該軟件將單片機仿真和SPICE電路仿真相結合,支持單片機程序的編輯、匯編和調(diào)試,可以全速、單步、帶斷點運行程序,可
15、以查看各個寄存器、變量的值,同時支持第三方的編譯和調(diào)試軟件,如Keil Vision。目前支持的單片機有:68000系列、8051系列、AVR系列、PIC系列、HC11系列、以及ARM7TDMI系列。Proteus ISIS具有原理圖繪制功能。通過在原理圖設計窗口放置元件,利用鼠標操作,實現(xiàn)元件之間的連線,完成原理圖設計。Proteus ISIS提供各種虛擬儀器,如示波器、信號發(fā)生器、邏輯分析儀等,方便電路的分析和仿真。計算機安裝了Proteus后,在“開始”菜單中增加了Proteus 7 Professional程序項,單擊ISIS 7 Professional啟動程序后,出現(xiàn)圖3-1所示的
16、程序窗口。庫管理按鈕原理圖設計窗口器件選擇按鈕圖3-1 Proteus程序窗口2C51存儲器類型匯編語言產(chǎn)生的代碼少、速度快,但程序可讀性差,編程困難。C語言具有良好的可讀性、可移植性和基本的硬件操作能力,利用C51進行程序設計,可以專注于程序的邏輯結構和算法實現(xiàn),大大提高程序設計的效率。C51根據(jù)單片機存儲器的結構,將存儲器分為不同的類型(如表3-1所示)。C51在定義變量時,可以指定存儲器類型。如:unsigned char data i;表3-1 C51存儲器類型類別存儲器類型地址范圍code程序存儲器0000HFFFFHdata內(nèi)部可直接尋址數(shù)據(jù)存儲器00H7FHidata內(nèi)部可間接尋
17、址數(shù)據(jù)存儲器00HFFHbdata內(nèi)部可位尋址數(shù)據(jù)存儲器20H2FHxdata外部數(shù)據(jù)存儲器0000HFFFFHpdata外部數(shù)據(jù)存儲器(一頁)00HFFHsfr內(nèi)部特殊功能寄存器80HFFH由于單片機字長只有8位,運算能力較弱,因此變量盡量采用無符號字符型(unsigned char),存儲器類型盡量使用片內(nèi)數(shù)據(jù)存儲器(data、idata、bdata),以提高程序執(zhí)行速度。3LED掃描顯示LED數(shù)碼管是單片機最常見的數(shù)據(jù)顯示器。當數(shù)碼管位數(shù)較多時,一般采用動態(tài)掃描方式,以節(jié)省單片機的I/O引腳,降低LED顯示功耗。單片機每次輸出七段顯示碼,同時使1位數(shù)碼管的公共端為有效電平(共陽數(shù)碼管為高
18、電平,共陰數(shù)碼管為低電平),則該顯示碼所對應數(shù)字顯示在所選中的1位LED上。適當延時,輸出下一位顯示碼,實現(xiàn)掃描顯示。為使顯示穩(wěn)定無閃爍,延時時間一般為幾毫秒或十幾毫秒。三、實驗環(huán)境Windows XP;Keil Vision 4;Proteus 7.8。四、實驗內(nèi)容1電路設計啟動ISIS 7 Professional,在主程序器件選擇窗口單擊器件選擇按鈕或在原理圖設計窗口單擊右鍵選擇Place “放置”命令,選擇Component“元件”子命令,出現(xiàn)圖3-2所示器件選擇對話框。在Microprocessor ICs類別中選擇80C52,在原理圖設計窗口中單擊鼠標,將單片機放入設計窗口,在Op
19、toelectronics類別中選擇7SEG-MPX4-CC,將4位共陰數(shù)碼管放入設計窗口。通過單擊器件引腳,完成電路連線(如圖3-1所示)。單片機P2口輸出七段顯示碼,P3.0P3.3用于選擇顯示位,當P3.0為低電平時,最左邊的數(shù)碼管亮,P3.3為低電平時,最右邊的數(shù)碼管亮。為實驗新建一個文件夾,將電路設計文件保存在新建的文件夾中。實際電路設計時單片機P2.0P2.7需串聯(lián)限流電阻,否則可能因電流過大損壞單片機,LED數(shù)碼管的位選擇1、2、3、4需采用緩沖器(四個三極管或74LS07),仿真時可省略。圖3-2 器件選擇對話框2程序設計啟動Keil Vision,單擊Project菜單的Ne
20、w Vision Project命令,出現(xiàn)創(chuàng)建新文件對話框,為項目文件命名并選擇存放路徑(選擇與Proteus文件相同的文件夾),并選擇Atmel公司的AT89C52作為本項目使用的單片機。單擊File菜單的New命令,出現(xiàn)源程序編輯窗口,在源程序編輯窗口中輸入C語言程序并保存(擴展名為.c)。主程序完成四位數(shù)字的顯示,子程序實現(xiàn)延時。#include void Delay(unsigned char);unsigned char code dispcode=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;void main()unsigne
21、d char minute=12,second=0;while(1) P3=0xF7; P2=dispcodesecond%10; Delay(5); P3=0xFB; P2=dispcodesecond/10; Delay(5); P3=0xFD; P2=dispcodeminute%10; Delay(5); P3=0xFE; P2=dispcodeminute/10; Delay(5); void Delay(unsigned char time)unsigned char j;while(time0) for(j=0;j255;j+);time-;單擊Keil Vision程序窗口Pr
22、oject菜單的Options for Target “Target 1”命令,在出現(xiàn)的Options for Target“Target 1”對話框中選擇Output選項卡,選中Create HEX File。單擊Build工具或Project菜單的Build命令,編譯源程序。如編譯出現(xiàn)錯誤,根據(jù)輸出信息修改程序,重新編譯,直至錯誤為零。3程序仿真在Proteus程序窗口雙擊單片機原理圖符號,出現(xiàn)圖3-3編輯元件屬性對話框。單擊Program File的打開文件按鈕,選擇編譯生成的HEX文件作為單片機的程序文件。單片機的主頻設為12MHz。單擊Proteus窗口左下角的程序運行按鈕,運行單片
23、機程序,觀察數(shù)碼管的顯示。打開文件按鈕圖3-3 編輯元件屬性對話框五、思考題1頭文件reg51.h有哪些內(nèi)容?2修改程序,實現(xiàn)動態(tài)顯示兩位數(shù)的分和兩位數(shù)的秒。實驗四 中斷與定時/計數(shù)器一、實驗目的掌握單片機中斷結構;掌握單片機定時/計數(shù)器的應用。二、實驗原理1中斷源和中斷控制寄存器MCS-51單片機有五個中斷源,每個中斷源可通過編程設為高優(yōu)先級或低優(yōu)先級,各中斷源名稱及對應的中斷入口地址如表4-1所示。表4-1 中斷入口地址中斷序號中斷源入口地址0INT00003H1T0000BH2INT10013H3T1001BH4串行口0023H單片機與中斷相關的特殊功能寄存器是中斷允許寄存器IE和中斷優(yōu)
24、先級寄存器IP。中斷允許寄存器IE的字節(jié)地址為A8H,其各位的定義如下:EA-ESET1EX1ET0EX0中斷優(yōu)先級寄存器IP的字節(jié)地址為B8H,其各位的定義如下:-PSPT1PX1PT0PX02定時/計數(shù)器的工作方式與控制寄存器MCS-51單片機內(nèi)部包含兩個十六位的定時/計數(shù)器T0和T1,當被設為定時方式時,實際上是對機器周期計數(shù),每個機器周期計數(shù)器加1。當被設為計數(shù)方式時,是對T0(P3.4)或T1(P3.5)引腳上的外部脈沖計數(shù)。單片機中與定時/計數(shù)器相關的特殊功能寄存器是定時/計數(shù)器控制寄存器TCON和定時/計數(shù)器模式寄存器TMOD。模式寄存器TMOD的字節(jié)地址為89H(不可位尋址),
25、其各位的定義如下: GATEC/TM1M0GATEC/TM1M0T1控制T0控制M1M0工作模式00模式013位定時/計數(shù)方式01模式116位定時/計數(shù)方式10模式28位自動重裝載方式11模式3對T0:分為一個8位的定時/計數(shù)器TL0和一個8位的定時器TH0對T1:停止計數(shù)C/=0,為定時器方式;C/=1,為計數(shù)器方式。GATE=0,定時/計數(shù)器的啟動和停止完全由TCON的TR位控制。GATE=1,只有當TR=1并且引腳為高電平時才啟動計數(shù)器??刂萍拇嫫鱐CON的字節(jié)地址為88H,其各位的定義如下:TF1TR1TF0TR0IE1IT1IE0IT0定時/計數(shù)器外中斷控制TRx:定時/計數(shù)器啟???/p>
26、制,TRx=1啟動定時/計數(shù)器(當GATE=0時)。TFx:定時/計數(shù)器溢出標志,當定時/計數(shù)器溢出時,由硬件置位,CPU響應中斷時,自動清零。3定時初值的計算當單片機的振蕩頻率為fOSC,則機器周期為12/fosc,設定時初值為TC,則定時周期t為:其中L為計數(shù)器的位數(shù),模式0時L=13,模式1時L=16,模式2、模式3時L=8。三、實驗環(huán)境Windows XP;Keil Vision 4;Proteus 7.8。四、實驗內(nèi)容1定時器的應用利用定時/計數(shù)器T0的定時功能(工作方式1),使P1.0輸出1KHz的方波,并用虛擬示波器觀測輸出波形。啟動Proteus仿真軟件,在原理圖設計窗口放置A
27、T89C52單片機,右擊原理圖設計窗口,在彈出的快捷菜單中選擇Place命令的Virtual Instrument子命令,選擇OSCILLOSCOPE,將虛擬示波器放入設計窗口,將P1.0輸出信號送示波器A通道(如圖4-1所示)。圖4-1 定時器應用實驗原理圖設單片機的振蕩頻率為12MHz,定時初值為:15匯編參考程序如下(請自行補充完整):ORG 0000HLJMP MAINORG 000BH;T0中斷入口地址CPL P1.0MOV TH0,#0FEHMOV TL0,#0CHRETIORG 0100HMAIN:MOV IE,#82H;允許T0中斷MOV TMOD,#01;T0方式1定時MOV
28、 TH0,#0FEHMOV TL0,#0CHSETB TR0SJMP $ENDC語言參考程序如下:#include sbit P10=P10;void main ()IE=0x82;TMOD=0x1;TH0=0xFE;TL0=0x0C;TR0=1;while(1);void T0_isr () interrupt 1TH0=0xFE;TL0=0x0C;P10=!P10;用匯編語言設計程序,可以單擊Proteus程序窗口Source菜單的Add/Remove Source file命令,出現(xiàn)圖4-2所示對話框,在對話框中單擊New按鈕,為單片機建立匯編源程序,然后編輯、編譯程序。用C語言設計程序
29、,可使用Keil編輯和編譯源程序,最后生成HEX文件,在Proteus程序窗口雙擊單片機原理圖符號,將編譯生成的HEX文件作為單片機的程序文件。最后運行程序,出現(xiàn)圖4-3所示虛擬示波器窗口,觀察示波器中的波形并讀取周期和頻率。圖4-2 添加/移除匯編源程序對話框圖4-3 虛擬示波器2實時時鐘單片機外接四位LED數(shù)碼管用于顯示分和秒(如圖4-4所示),定時/計數(shù)器T0設為工作方式2,定時時間200S,當單片機主頻為12MHz時定時初值為56,每5000次中斷秒加1,每60秒分加1。用匯編或C語言寫出相應的程序(LED掃描顯示可參照實驗三)。圖4-4 實時時鐘電路編譯運行程序,觀察LED顯示的時間
30、和Proteus窗口的ANIMATING時間,比較兩者的誤差。五、思考題1影響實時時種計時精度的因素有哪些,如何進一步提高計時精度?實驗五 串行口一、實驗目的掌握單片機串行口的內(nèi)部結構和工作方式;掌握單片機串行口的應用;二、實驗原理1串行口的工作方式及其控制寄存器MCS-51系列單片機內(nèi)含一個16位全雙工串行口,有四種工作方式,既可以用于擴展單片機的輸入/輸出口,也可以實現(xiàn)單片機與單片機、單片機與微機的串行通信。與串行口相關的特殊功能寄存器(SFR)有串行口控制寄存器SCON、串行口數(shù)據(jù)寄存器SBUF及電源控制寄存器PCON。串行口控制寄存器SCON的字節(jié)地址為98H,其各位的定義如下:SM0
31、SM1SM2RENTB8RB8TIRISM0SM0SM1工作模式00方式0同步移位寄存器方式(波特率為fosc/12)01方式110位異步通信方式(UART)(波特率可編程)10方式211位異步通信方式(UART)(波特率為fosc/64或fosc/32)11方式311位異步通信方式(UART)(波特率可編程)SM2在方式2和方式3時,作為多機通信的使能位,SM2=1時,只有當收到的第九個數(shù)據(jù)位為1時,才會使RI置位。REN為接收允許位。REN=1時允許接收。TB8為方式2或方式3時發(fā)送的第九個數(shù)據(jù)位。RB8為方式2或方式3時接收的第九個數(shù)據(jù)位。TI為發(fā)送中斷標志。由硬件置位,需由軟件清除。R
32、I為接收中斷標志。由硬件置位,需由軟件清除。串行口數(shù)據(jù)寄存器SBUF實際上包含兩個獨立的寄存器:發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器。寫SBUF訪問發(fā)送數(shù)據(jù)寄存器并啟動一次串行發(fā)送;讀SBUF訪問接收數(shù)據(jù)寄存器,它們的字節(jié)地址均為99H。電源控制寄存器PCON的字節(jié)地址為87H,其最高位為波特率系數(shù)控制位,當SMOD=1時,波特率加倍。PCON各位的定義如下:SMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSM
33、ODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSMODSM
34、ODSMODSMODSMODSMODSMODSMODSMOD-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-SM2-REN-REN-REN-R
35、EN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-REN-RENGF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1T
36、B8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1TB8GF1T
37、B8GF1TB8GF1TB8GF1TB8GF1TB8GF0PDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIPDTIIDLRIIDLRIIDLRI
38、IDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRIIDLRI
39、IDLRIGF1、GF0為通用標志位。PD為掉電方式位,PD=1進入掉電方式。IDL為待機方式位,IDL=1進入待機方式。2串行口波特率的計算當單片機的振蕩頻率為fOSC、定時/計數(shù)器的溢出速率為F時,串行口的波特率分別為:方式0:波特率=方式2:波特率=方式1和方式3:波特率=若定時器工作在8位自動重裝載方式(方式2),定時初值為TC,則溢出速率F=3串行口的應用方式0主要用于輸入/輸出口的擴展,方式1主要用于單片機與單片機之間、單片機與微機之間的串行通信(每次通信傳輸8個數(shù)據(jù)位),方式2和方式3主要用于多機通信或一次通信需要9個數(shù)據(jù)位(如帶奇偶校驗)的情況。三、實驗環(huán)境Windows XP
40、;Proteus7.5。四、實驗內(nèi)容1串行口方式0實驗串行口工作在方式0時,可通過外接移位存儲器實現(xiàn)串并行轉換。在這種方式下,數(shù)據(jù)為8位,只能從RXD端輸入輸出,TXD端總是輸出移位同步時鐘信號,其波特率固定為晶振頻率1/12。由軟件置位串行控制寄存器SCON的REN后才能啟動串行接收,在CPU將數(shù)據(jù)寫入SBUF寄存器后,立即啟動發(fā)送。待8位數(shù)據(jù)傳輸完后,硬件將SCON寄存器的TI位置1,TI必須由軟件清零。實驗連線如圖5-1所示,圖中數(shù)碼管采用“7SEG-COM-ANODE”共陽數(shù)碼管。圖5-1 串并轉換實驗電路圖使數(shù)碼管輪流顯示0-9的數(shù)字的參考程序如下:ORG 0000MOV SCON,
41、#00H;串行口方式0,禁止接收。MOV DPTR,#CDATALOOP:MOV R0,#0LP: MOV A,R0 MOVC A,A+DPTR MOV SBUF,A JNB TI,$ CLR TI INC R0 LCALL DELAY CJNE R0,#0AH,LP SJMP LOOPDELAY:MOV R5,#5DE2: MOV R6,#0DE1: MOV R7,#0 DJNZ R7,$ DJNZ R6,DE1 DJNZ R5,DE2 RETCDATA: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H END寫出C語言程序并運行,觀察并記錄結果。2雙機
42、串行通信實驗實驗原理圖如圖5-2所示,要求單片機U1的外接開關DIPSW_8可控制單片機U2的外接LED燈LED-BARGRAPH-GRN的亮暗。圖5-2 雙機串行通信實驗原理圖單片機U1發(fā)送數(shù)據(jù)參考程序如下:ORG 0LJMP MAINORG 23HCLR TIMOV A,P1MOV SBUF,ARETIORG 30HMAIN: MOV SCON,#40H;串行口方式1,禁止接收MOV TMOD,#20HMOV TL1,#0E0HMOV TH1,#0E0HSETB TR1MOV IE, #90HMOV A,P1MOV SBUF,ASJMP $END單片機U2接收參考程序如下:ORG 0LJM
43、P MAINORG 23HCLR RIMOV A,SBUFMOV P2,ARETIORG 30HMAIN: MOV SCON,#50H;串行口方式1,允許接收MOV TMOD,#20HMOV TL1,#0E0HMOV TH1,#0E0HSETB TR1MOV IE, #90HSJMP $END寫出C語言程序,編譯后分別添加到單片機U1和U2。(如果用匯編編程,可直接選擇單片機U1,單擊源代碼菜單的添加/刪除源文件命令,為U1添加源程序。選擇單片機U2,再次單擊源代碼菜單的添加/刪除源文件命令,為U2添加源程序)。運行程序,單擊DIP開關,改變U1單片機P1口的輸入狀態(tài),觀察U2單片機P2口LED的變化。五、思考題1實驗內(nèi)容1不使用延時程序,而利用定時器實現(xiàn)1秒定時,程序應如何修改?2實驗內(nèi)容2通信的波特率為多少?
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。