單片機實驗課題有助于單片機的學(xué)習(xí)
《單片機實驗課題有助于單片機的學(xué)習(xí)》由會員分享,可在線閱讀,更多相關(guān)《單片機實驗課題有助于單片機的學(xué)習(xí)(21頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、實驗一 Keil Vision的使用 一、實驗?zāi)康? 掌握Keil Vision的使用; 掌握單片機匯編程序的調(diào)試方法。 二、實驗原理 Keil Vision是美國Keil Software公司出品的單片機集成開發(fā)環(huán)境,具有單片機C語言或匯編語言程序編輯、編譯或匯編、連接、調(diào)試等功能,允許設(shè)置斷點,查看程序存儲器、數(shù)據(jù)存儲器和SFR的內(nèi)容,以圖形的方式顯示SFR或變量內(nèi)容隨時間的變化,是目前單片機開發(fā)最常用的軟件工具。 運行Keil Vision后,程序窗口如圖1-1所示。其中項目窗口用于管理工程項目所包含的文件,源程序窗口用于程序編輯,編譯信息窗口輸出編譯或匯編的狀態(tài)信息。各個窗
2、口可以懸?。‵loating)在主窗口之上,也可以停泊(Docking)在主窗口中,單擊程序主窗口Window菜單的Rest View to Defaults命令,將窗口恢復(fù)成默認(rèn)狀態(tài)。 編譯信息窗口 源程序窗口 項目窗口 圖1-1 Keil Vision程序窗口 三、實驗環(huán)境 Windows XP; Keil Vision 4; 四、實驗內(nèi)容 1.建立項目 雙擊桌面Keil Vision圖標(biāo)或單擊開始菜單的Keil Vision命令運行程序,出現(xiàn)圖1-1所示的程序窗口。 在主程序菜單欄單擊Project菜單的New Vision Project命令,出現(xiàn)創(chuàng)建新文件
3、對話框,為項目文件命名并選擇存放路徑(建議為每一個項目建立獨立的文件夾)。單擊保存按鈕,出現(xiàn)圖1-2所示器件選擇對話框,在Data base列表中選擇Atmel公司的AT89C52,作為項目使用的單片機。 當(dāng)出現(xiàn)如圖1-3所示的添加啟動代碼對話框時,單擊否。 圖1-2 器件選擇對話框 圖1-3 添加啟動代碼對話框 2.程序編輯 單擊File菜單的New命令,出現(xiàn)源程序編輯窗口,在源程序編輯窗口中輸入?yún)R編程序并保存(擴(kuò)展名為asm)。 ORG 0000H main: MOV P1,#00H loop: INC P1 SJMP loop END
4、在項目窗口中用鼠標(biāo)右鍵單擊Source Group 1,在彈出的快捷菜單中選擇Add Files to Group ‘Source Group 1’命令,將剛才保存的源程序文件添加到項目中。 3.程序調(diào)試 在項目窗口中用鼠標(biāo)右鍵單擊Target 1,在彈出的快捷菜單中選擇Options for Target ’Target 1’命令,出現(xiàn)圖1-4項目選項對話框。在選項對話框中,將晶振頻率改為12MHz。 單擊主程序窗口的Build工具或按快捷鍵F7,對源程序進(jìn)行匯編。如果程序有錯,根據(jù)輸出信息修改源程序,重新進(jìn)行匯編,直到錯誤為零。 單擊主程序窗口Debug菜單的Start/Stop
5、Debug Session命令,進(jìn)入調(diào)試狀態(tài)。調(diào)試狀態(tài)的主程序窗口如圖1-5所示。寄存器窗口可以查看和修改寄存器的值,反匯編窗口可以查看指令代碼及其在程序存儲器中的地址。單擊主程序窗口View菜單的Analysis Windows子菜單的Logic Analyzer命令,打開Logic Analyzer窗口,可以觀察SFR或變量的值隨時間的變化,各個子窗口排列可以通過鼠標(biāo)拖動或右鍵單擊標(biāo)題欄選擇彈出的子菜單命令加以改變。單擊Logic Analyzer窗口的Setup按鈕,出現(xiàn)Setup Logic Analyzer對話框(如圖1-6),在對話框中單擊右上角的Insert按鈕,將P1添加到待分
6、析信號中。 圖1-4 項目選項對話框 在主程序窗口中單擊Run工具或按快捷鍵F5運行程序,然后單擊Stop工具或Debug菜單的Stop命令,停止程序運行,觀察邏輯分析窗口中P1寄存器內(nèi)容隨時間的變化,應(yīng)如圖1-5所示呈鋸齒形變化。 五、思考題 1.修改程序,使P1的值在0~100之間變化。 2.修改程序,使P1的值隨時間呈三角形變化(如圖1-7所示)。 圖1-5 調(diào)試狀態(tài)主程序窗口 New(Insert)按鈕 圖1-6 設(shè)置待分析信號 圖1-7 P1隨時間呈三角形變化 實驗二 匯編語言程序設(shè)計 一、實驗?zāi)康? 熟悉單片機指令、偽指
7、令的使用; 掌握單片機匯編程序的設(shè)計、調(diào)試方法。 二、實驗原理 1.匯編語言 匯編程序由指令語句、偽指令語句和宏指令語句構(gòu)成。 指令語句即機器指令,由標(biāo)號、指令助記符、操作數(shù)和注釋四部分組成,單片機的指令長度為1~3個字節(jié),大部分為單周期指令,少部分為雙周期指令,只有乘法、除法指令為四周期指令。 偽指令語句定義程序結(jié)構(gòu)和符號,在程序中起指示或說明作用,不產(chǎn)生機器碼。 宏指令是通過將一段指令序列定義成一個宏,每次用到該指令序列可以用宏名代替。適當(dāng)使用宏指令,可以大大簡化程序設(shè)計,增強程序的可讀性。 2.兩字節(jié)乘除運算 單片機字長8位,一次只能完成8位乘8位或8位除8位運算,要進(jìn)
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位無符號整數(shù)除法運算如圖2-2所示。設(shè)除數(shù)有n位前導(dǎo)0,則對除數(shù)循環(huán)左移n次,商為n+1位。被除數(shù)減除數(shù),夠減時商為1,不夠減時商為零,每減一次,除數(shù)右移一位,重復(fù)n+1次。 三、實驗環(huán)境 Windows XP; Kei
9、l Vision 4; 四、實驗內(nèi)容 1.程序設(shè)計 雙擊桌面Keil Vision圖標(biāo)或單擊開始菜單的Keil Vision命令運行程序,在主程序中單擊Project菜單的New Vision Project命令,為項目文件命名并選擇存放路徑,選擇Atmel89C52作為項目所使用的單片機。 單擊File菜單的New命令,出現(xiàn)源程序編輯窗口,在源程序編輯窗口中輸入?yún)R編程序并保存(擴(kuò)展名為asm)。 被除數(shù)<除數(shù)? 商=0,余數(shù)=被除數(shù) 求除數(shù)前導(dǎo)0的個數(shù)n,并循環(huán)左移n次 重復(fù)次數(shù)=n+1 被除數(shù)-除數(shù)>0? 上商=1 上商=0 除數(shù)右移 重復(fù)次數(shù)=0? 圖2-
10、2 兩字節(jié)除法流程 16位乘法運算用R3、R2存放16位被乘數(shù),R1、R0存放16位乘數(shù),R7、R6、R5、R4存放32位乘積。 ORG 0000H LJMP MAIN MULT MACRO X,Y ;宏定義 MOV A,X MOV B,Y MUL AB ENDM MAIN: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
11、 A,#0 ADDC A,#0 MOV R7,A MULT R2,R1 ;R2R1 ADD 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 END 2.程序調(diào)試 單擊主程序窗口的Build工具或按快捷鍵F7,對源程序進(jìn)行
12、匯編。 單擊主程序窗口Debug菜單的Start/Stop Debug Session命令,進(jìn)入調(diào)試狀態(tài)。在寄存器窗口通過雙擊工作寄存值,將被乘數(shù)R3、R2設(shè)為B754H,乘數(shù)R1、R0設(shè)為A360H,通過按F10單步運算程序。程序執(zhí)行后,檢查乘積R7、R6、R5、R4的值,應(yīng)為74FF3B80H。 修改被乘數(shù)和乘數(shù),重新運行程序,檢查結(jié)果是否正確。 五、思考題 1.不用宏指令MULT,原程序該如何寫? 2.分析下列16位除法程序,用不同的被除數(shù)和除數(shù)驗證運算結(jié)果是否正確。 ORG 0000H LJMP MAIN 被除數(shù)高8位 被除數(shù)低8位 除數(shù)高8位 除數(shù)低
13、8位 42H 商高8位 商低8位 40H 44H dividend DATA 40H ;存放被除數(shù)和余數(shù) division DATA 42H ;存放除數(shù) quotient DATA 44H ;存放商 RRC16 MACRO TEMP ;兩字節(jié)右移宏定義 MOV A,TEMP RRC A ;高字節(jié)右移 MOV TEMP,A MOV A,TEMP+1 RRC A ;低字節(jié)右移 MOV TEMP+1,A ENDM RLC16 MACRO TEMP ;兩字節(jié)左移宏定義 MOV A,TE
14、MP+1 RLC A ;低字節(jié)左移 MOV TEMP+1,A MOV A,TEMP RLC A ;高字節(jié)左移 MOV TEMP,A ENDM MAIN: MOV dividend,#0FEH MOV dividend+1,#1AH ;設(shè)被除數(shù)為FE1AH(65050) MOV division,#00H MOV division+1,#0E6H ;設(shè)除數(shù)為00E6H(230) MOV quotient,#00H MOV quotient+1,#00H ;商清零 MOV B,#00H
15、 MOV A,division ADD A,division+1 JNZ L0 SETB OV SJMP EXIT ;除數(shù)為零,則退出 L0: MOV A,division ;計算除數(shù)前導(dǎo)0的位數(shù) JB ACC.7,L1 CLR C RLC16 division ;兩字節(jié)除數(shù)左移1位 INC B SJMP L0 L1: INC B L2: CLR C MOV A,dividend+1 SUBB A,division+1 MOV A,dividend SU
16、BB A,division JC L3 ;不夠減,商為0 MOV A,dividend+1 SUBB A,division+1 MOV dividend+1,A MOV A,dividend SUBB A,division MOV dividend,A SETB C ;夠減,商為1 SJMP L4 L3: CLR C L4: RLC16 quotient ;兩字節(jié)商左移1位 CLR C RRC16 division ;兩字節(jié)除數(shù)右移1位 DJNZ B,L2 E
17、XIT: SJMP $ END 實驗三 C51程序設(shè)計與Proteus仿真 一、實驗?zāi)康? 掌握C51程序設(shè)計調(diào)試方法; 掌握Proteus仿真軟件的使用; 加深對單片機工作原理及外部引腳的理解。 二、實驗原理 1.Proteus簡介 Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與仿真軟件。該軟件將單片機仿真和SPICE電路仿真相結(jié)合,支持單片機程序的編輯、匯編和調(diào)試,可以全速、單步、帶斷點運行程序,可以查看各個寄存器、變量的值,同時支持第三方的編譯和調(diào)試軟件,如Keil Vision。目前支持的單片機有:68000系列、8051系列、AVR系列、P
18、IC系列、HC11系列、以及ARM7TDMI系列。 Proteus ISIS具有原理圖繪制功能。通過在原理圖設(shè)計窗口放置元件,利用鼠標(biāo)操作,實現(xiàn)元件之間的連線,完成原理圖設(shè)計。Proteus ISIS提供各種虛擬儀器,如示波器、信號發(fā)生器、邏輯分析儀等,方便電路的分析和仿真。 計算機安裝了Proteus后,在“開始”菜單中增加了Proteus 7 Professional程序項,單擊ISIS 7 Professional啟動程序后,出現(xiàn)圖3-1所示的程序窗口。 庫管理按鈕 原理圖設(shè)計窗口 器件選擇按鈕 圖3-1 Proteus程序窗口 2.C51存儲器類型 匯編語言產(chǎn)生的
19、代碼少、速度快,但程序可讀性差,編程困難。C語言具有良好的可讀性、可移植性和基本的硬件操作能力,利用C51進(jìn)行程序設(shè)計,可以專注于程序的邏輯結(jié)構(gòu)和算法實現(xiàn),大大提高程序設(shè)計的效率。 C51根據(jù)單片機存儲器的結(jié)構(gòu),將存儲器分為不同的類型(如表3-1所示)。C51在定義變量時,可以指定存儲器類型。如:unsigned char data i; 表3-1 C51存儲器類型 類別 存儲器類型 地址范圍 code 程序存儲器 0000H~FFFFH data 內(nèi)部可直接尋址數(shù)據(jù)存儲器 00H~7FH idata 內(nèi)部可間接尋址數(shù)據(jù)存儲器 00H~FFH bdata 內(nèi)部
20、可位尋址數(shù)據(jù)存儲器 20H~2FH xdata 外部數(shù)據(jù)存儲器 0000H~FFFFH pdata 外部數(shù)據(jù)存儲器(一頁) 00H~FFH sfr 內(nèi)部特殊功能寄存器 80H~FFH 由于單片機字長只有8位,運算能力較弱,因此變量盡量采用無符號字符型(unsigned char),存儲器類型盡量使用片內(nèi)數(shù)據(jù)存儲器(data、idata、bdata),以提高程序執(zhí)行速度。 3.LED掃描顯示 LED數(shù)碼管是單片機最常見的數(shù)據(jù)顯示器。當(dāng)數(shù)碼管位數(shù)較多時,一般采用動態(tài)掃描方式,以節(jié)省單片機的I/O引腳,降低LED顯示功耗。 單片機每次輸出七段顯示碼,同時使1位數(shù)碼管的公共
21、端為有效電平(共陽數(shù)碼管為高電平,共陰數(shù)碼管為低電平),則該顯示碼所對應(yīng)數(shù)字顯示在所選中的1位LED上。適當(dāng)延時,輸出下一位顯示碼,實現(xiàn)掃描顯示。為使顯示穩(wěn)定無閃爍,延時時間一般為幾毫秒或十幾毫秒。 三、實驗環(huán)境 Windows XP; Keil μ Vision 4; Proteus 7.8。 四、實驗內(nèi)容 1.電路設(shè)計 啟動ISIS 7 Professional,在主程序器件選擇窗口單擊器件選擇按鈕或在原理圖設(shè)計窗口單擊右鍵選擇Place “放置”命令,選擇Component“元件”子命令,出現(xiàn)圖3-2所示器件選擇對話框。 在Microprocessor ICs類別中選擇8
22、0C52,在原理圖設(shè)計窗口中單擊鼠標(biāo),將單片機放入設(shè)計窗口,在Optoelectronics類別中選擇7SEG-MPX4-CC,將4位共陰數(shù)碼管放入設(shè)計窗口。通過單擊器件引腳,完成電路連線(如圖3-1所示)。單片機P2口輸出七段顯示碼,P3.0~P3.3用于選擇顯示位,當(dāng)P3.0為低電平時,最左邊的數(shù)碼管亮,P3.3為低電平時,最右邊的數(shù)碼管亮。 為實驗新建一個文件夾,將電路設(shè)計文件保存在新建的文件夾中。 實際電路設(shè)計時單片機P2.0~P2.7需串聯(lián)限流電阻,否則可能因電流過大損壞單片機,LED數(shù)碼管的位選擇1、2、3、4需采用緩沖器(四個三極管或74LS07),仿真時可省略。
23、圖3-2 器件選擇對話框
2.程序設(shè)計
啟動Keil Vision,單擊Project菜單的New Vision Project命令,出現(xiàn)創(chuàng)建新文件對話框,為項目文件命名并選擇存放路徑(選擇與Proteus文件相同的文件夾),并選擇Atmel公司的AT89C52作為本項目使用的單片機。
單擊File菜單的New命令,出現(xiàn)源程序編輯窗口,在源程序編輯窗口中輸入C語言程序并保存(擴(kuò)展名為.c)。
主程序完成四位數(shù)字的顯示,子程序?qū)崿F(xiàn)延時。
#include
24、e[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; void main() { unsigned char minute=12,second=0; while(1) { P3=0xF7; P2=dispcode[second%10]; Delay(5); P3=0xFB; P2=dispcode[second/10]; Delay(5); P3=0xFD; P2=dispcode[minute%10]; Delay(5);
25、 P3=0xFE; P2=dispcode[minute/10]; Delay(5); } } void Delay(unsigned char time) { unsigned char j; while(time>0) { for(j=0;j<255;j++); time--; } } 單擊Keil Vision程序窗口Project菜單的Options for Target “Target 1”命令,在出現(xiàn)的Options for Target“Target 1”對話框中選擇Output選項卡,選中Create
26、 HEX File。單擊Build工具或Project菜單的Build命令,編譯源程序。如編譯出現(xiàn)錯誤,根據(jù)輸出信息修改程序,重新編譯,直至錯誤為零。 3.程序仿真 在Proteus程序窗口雙擊單片機原理圖符號,出現(xiàn)圖3-3編輯元件屬性對話框。單擊Program File的打開文件按鈕,選擇編譯生成的HEX文件作為單片機的程序文件。單片機的主頻設(shè)為12MHz。 單擊Proteus窗口左下角的程序運行按鈕,運行單片機程序,觀察數(shù)碼管的顯示。 打開文件按鈕 圖3-3 編輯元件屬性對話框 五、思考題 1.頭文件reg51.h有哪些內(nèi)容? 2.修改程序,實現(xiàn)動態(tài)顯示兩位數(shù)的分和兩
27、位數(shù)的秒。 實驗四 中斷與定時/計數(shù)器 一、實驗?zāi)康? 掌握單片機中斷結(jié)構(gòu); 掌握單片機定時/計數(shù)器的應(yīng)用。 二、實驗原理 1.中斷源和中斷控制寄存器 MCS-51單片機有五個中斷源,每個中斷源可通過編程設(shè)為高優(yōu)先級或低優(yōu)先級,各中斷源名稱及對應(yīng)的中斷入口地址如表4-1所示。 表4-1 中斷入口地址 中斷序號 中斷源 入口地址 0 INT0 0003H 1 T0 000BH 2 INT1 0013H 3 T1 001BH 4 串行口 0023H 單片機與中斷相關(guān)的特殊功能寄存器是中斷允許寄存器IE和中斷優(yōu)先級寄存器IP。
28、中斷允許寄存器IE的字節(jié)地址為A8H,其各位的定義如下: EA - - ES ET1 EX1 ET0 EX0 中斷優(yōu)先級寄存器IP的字節(jié)地址為B8H,其各位的定義如下: - - - PS PT1 PX1 PT0 PX0 2.定時/計數(shù)器的工作方式與控制寄存器 MCS-51單片機內(nèi)部包含兩個十六位的定時/計數(shù)器T0和T1,當(dāng)被設(shè)為定時方式時,實際上是對機器周期計數(shù),每個機器周期計數(shù)器加1。當(dāng)被設(shè)為計數(shù)方式時,是對T0(P3.4)或T1(P3.5)引腳上的外部脈沖計數(shù)。 單片機中與定時/計數(shù)器相關(guān)的特殊功能寄存器是定時/計數(shù)器控制寄存器TCON和定時/計數(shù)器
29、模式寄存器TMOD。 模式寄存器TMOD的字節(jié)地址為89H(不可位尋址),其各位的定義如下: GATE C/T M1 M0 GATE C/T M1 M0 T1控制 T0控制 M1 M0 工作模式 0 0 模式0 13位定時/計數(shù)方式 0 1 模式1 16位定時/計數(shù)方式 1 0 模式2 8位自動重裝載方式 1 1 模式3 對T0:分為一個8位的定時/計數(shù)器TL0和一個8位的定時器TH0 對T1:停止計數(shù) C/=0,為定時器方式;C/=1,為計數(shù)器方式。 GATE=0,定時/計數(shù)器的啟動和停止完全由TCON的TR位控制。
30、GATE=1,只有當(dāng)TR=1并且引腳為高電平時才啟動計數(shù)器。 控制寄存器TCON的字節(jié)地址為88H,其各位的定義如下: TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 定時/計數(shù)器 外中斷控制 TRx:定時/計數(shù)器啟??刂?,TRx=1啟動定時/計數(shù)器(當(dāng)GATE=0時)。 TFx:定時/計數(shù)器溢出標(biāo)志,當(dāng)定時/計數(shù)器溢出時,由硬件置位,CPU響應(yīng)中斷時,自動清零。 3.定時初值的計算 當(dāng)單片機的振蕩頻率為fOSC,則機器周期為12/fosc,設(shè)定時初值為TC,則定時周期t為: 其中L為計數(shù)器的位數(shù),模式0時L=13,模式1時L=1
31、6,模式2、模式3時L=8。 三、實驗環(huán)境 Windows XP; Keil μ Vision 4; Proteus 7.8。 四、實驗內(nèi)容 1.定時器的應(yīng)用 利用定時/計數(shù)器T0的定時功能(工作方式1),使P1.0輸出1KHz的方波,并用虛擬示波器觀測輸出波形。 啟動Proteus仿真軟件,在原理圖設(shè)計窗口放置AT89C52單片機,右擊原理圖設(shè)計窗口,在彈出的快捷菜單中選擇Place命令的Virtual Instrument子命令,選擇OSCILLOSCOPE,將虛擬示波器放入設(shè)計窗口,將P1.0輸出信號送示波器A通道(如圖4-1所示)。 圖4-1 定時器應(yīng)用實驗原理
32、圖
設(shè)單片機的振蕩頻率為12MHz,定時初值為:
15
匯編參考程序如下(請自行補充完整):
ORG 0000H
LJMP MAIN
ORG 000BH ;T0中斷入口地址
CPL P1.0
MOV TH0,#0FEH
MOV TL0,#0CH
RETI
ORG 0100H
MAIN:
MOV IE,#82H;允許T0中斷
MOV TMOD,#01;T0方式1定時
MOV TH0,#0FEH
MOV TL0,#0CH
SETB TR0
SJMP $
END
C語言參考程序如下:
#include 33、h>
sbit P10=P1^0;
void main ()
{
IE=0x82;
TMOD=0x1;
TH0=0xFE;
TL0=0x0C;
TR0=1;
while(1);
}
void T0_isr () interrupt 1
{
TH0=0xFE;
TL0=0x0C;
P10=!P10;
}
用匯編語言設(shè)計程序,可以單擊Proteus程序窗口Source菜單的Add/Remove Source file命令,出現(xiàn)圖4-2所示對話框,在對話框中單擊New按鈕,為單片機建立匯編源程序,然后編輯、編譯程序。用C語言設(shè)計程序,可使用 34、Keil編輯和編譯源程序,最后生成HEX文件,在Proteus程序窗口雙擊單片機原理圖符號,將編譯生成的HEX文件作為單片機的程序文件。最后運行程序,出現(xiàn)圖4-3所示虛擬示波器窗口,觀察示波器中的波形并讀取周期和頻率。
圖4-2 添加/移除匯編源程序?qū)υ捒?
圖4-3 虛擬示波器
2.實時時鐘
單片機外接四位LED數(shù)碼管用于顯示分和秒(如圖4-4所示),定時/計數(shù)器T0設(shè)為工作方式2,定時時間200S,當(dāng)單片機主頻為12MHz時定時初值為56,每5000次中斷秒加1,每60秒分加1。用匯編或C語言寫出相應(yīng)的程序(LED掃描顯示可參照實驗三)。
圖4-4 實時時鐘電 35、路
編譯運行程序,觀察LED顯示的時間和Proteus窗口的ANIMATING時間,比較兩者的誤差。
五、思考題
1.影響實時時種計時精度的因素有哪些,如何進(jìn)一步提高計時精度?
實驗五 串行口
一、實驗?zāi)康?
掌握單片機串行口的內(nèi)部結(jié)構(gòu)和工作方式;
掌握單片機串行口的應(yīng)用;
二、實驗原理
1.串行口的工作方式及其控制寄存器
MCS-51系列單片機內(nèi)含一個16位全雙工串行口,有四種工作方式,既可以用于擴(kuò)展單片機的輸入/輸出口,也可以實現(xiàn)單片機與單片機、單片機與微機的串行通信。與串行口相關(guān)的特殊功能寄存器(SFR)有串行口控制寄存器SCON、串行口數(shù)據(jù)寄存器SBUF及電源 36、控制寄存器PCON。
串行口控制寄存器SCON的字節(jié)地址為98H,其各位的定義如下:
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0
SM0
SM1
工作模式
0
0
方式0
同步移位寄存器方式(波特率為fosc/12)
0
1
方式1
10位異步通信方式(UART)(波特率可編程)
1
0
方式2
11位異步通信方式(UART)(波特率為fosc/64或fosc/32)
1
1
方式3
11位異步通信方式(UART)(波特率可編程)
SM2在方式2和方式3時,作為多機通信的使能位,SM2=1時,只 37、有當(dāng)收到的第九個數(shù)據(jù)位為1時,才會使RI置位。
REN為接收允許位。REN=1時允許接收。
TB8為方式2或方式3時發(fā)送的第九個數(shù)據(jù)位。
RB8為方式2或方式3時接收的第九個數(shù)據(jù)位。
TI為發(fā)送中斷標(biāo)志。由硬件置位,需由軟件清除。
RI為接收中斷標(biāo)志。由硬件置位,需由軟件清除。
串行口數(shù)據(jù)寄存器SBUF實際上包含兩個獨立的寄存器:發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器。寫SBUF訪問發(fā)送數(shù)據(jù)寄存器并啟動一次串行發(fā)送;讀SBUF訪問接收數(shù)據(jù)寄存器,它們的字節(jié)地址均為99H。
電源控制寄存器PCON的字節(jié)地址為87H,其最高位為波特率系數(shù)控制位,當(dāng)SMOD=1時,波特率加倍。PCON各位的定 38、義如下:
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
39、
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
40、
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
SMOD
41、SMOD
SMOD
SMOD
SMOD
SMOD
-
42、
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
43、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
-
44、SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
SM2
-
REN
-
REN
-
REN
-
REN
-
REN
-
REN
-
REN
-
REN
-
REN
-
REN
- 45、
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
- 46、
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
- 47、
REN
-
REN
-
REN
-
REN
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
48、
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1 49、
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB8
GF1
TB 50、8
GF1
TB8
GF1
TB8
GF1
TB8
GF0
51、
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI 52、
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI 53、
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
PD
TI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
R 54、I
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI 55、
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
56、
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
IDL
RI
GF1、GF0為通用標(biāo)志位。
PD為掉電方式位,PD=1進(jìn)入掉電方式。
IDL為待機方式位,IDL=1進(jìn)入待機方式。
2.串行口波特率的計算
當(dāng)單片機的振蕩頻率為fOSC、定時/計數(shù)器的溢出速率為F時,串行口的波特率分別為:
方式0:波特率=
方式2:波特率=
方式1和方式3:波特率=
若定時器工作在8位自動重裝載方式(方式2 57、),定時初值為TC,則溢出速率F=
3.串行口的應(yīng)用
方式0主要用于輸入/輸出口的擴(kuò)展,方式1主要用于單片機與單片機之間、單片機與微機之間的串行通信(每次通信傳輸8個數(shù)據(jù)位),方式2和方式3主要用于多機通信或一次通信需要9個數(shù)據(jù)位(如帶奇偶校驗)的情況。
三、實驗環(huán)境
Windows XP;
Proteus7.5。
四、實驗內(nèi)容
1.串行口方式0實驗
串行口工作在方式0時,可通過外接移位存儲器實現(xiàn)串并行轉(zhuǎn)換。在這種方式下,數(shù)據(jù)為8位,只能從RXD端輸入輸出,TXD端總是輸出移位同步時鐘信號,其波特率固定為晶振頻率1/12。由軟件置位串行控制寄存器SCON的REN后才能啟動串行接 58、收,在CPU將數(shù)據(jù)寫入SBUF寄存器后,立即啟動發(fā)送。待8位數(shù)據(jù)傳輸完后,硬件將SCON寄存器的TI位置1,TI必須由軟件清零。實驗連線如圖5-1所示,圖中數(shù)碼管采用“7SEG-COM-ANODE”共陽數(shù)碼管。
圖5-1 串并轉(zhuǎn)換實驗電路圖
使數(shù)碼管輪流顯示0-9的數(shù)字的參考程序如下:
ORG 0000
MOV SCON,#00H;串行口方式0,禁止接收。
MOV DPTR,#CDATA
LOOP:MOV R0,#0
LP: MOV A,R0
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
59、CLR TI
INC R0
LCALL DELAY
CJNE R0,#0AH,LP
SJMP LOOP
DELAY:MOV R5,#5
DE2: MOV R6,#0
DE1: MOV R7,#0
DJNZ R7,$
DJNZ R6,DE1
DJNZ R5,DE2
RET
CDATA: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,01H,09H
END
寫出C語言程序并運行,觀察并記錄結(jié)果。
2.雙機串行通信 60、實驗
實驗原理圖如圖5-2所示,要求單片機U1的外接開關(guān)DIPSW_8可控制單片機U2的外接LED燈LED-BARGRAPH-GRN的亮暗。
圖5-2 雙機串行通信實驗原理圖
單片機U1發(fā)送數(shù)據(jù)參考程序如下:
ORG 0
LJMP MAIN
ORG 23H
CLR TI
MOV A,P1
MOV SBUF,A
RETI
ORG 30H
MAIN: MOV SCON,#40H;串行口方式1,禁止接收
MOV TMOD,#20H
MOV TL1,#0E0H
MOV TH1,#0E0H
SETB TR1
MOV IE, #90H
MOV A,P1
MOV 61、 SBUF,A
SJMP $
END
單片機U2接收參考程序如下:
ORG 0
LJMP MAIN
ORG 23H
CLR RI
MOV A,SBUF
MOV P2,A
RETI
ORG 30H
MAIN: MOV SCON,#50H;串行口方式1,允許接收
MOV TMOD,#20H
MOV TL1,#0E0H
MOV TH1,#0E0H
SETB TR1
MOV IE, #90H
SJMP $
END
寫出C語言程序,編譯后分別添加到單片機U1和U2。(如果用匯編編程,可直接選擇單片機U1,單擊源代碼菜單的添加/刪除源文件命令,為U1添加源程序。選擇單片機U2,再次單擊源代碼菜單的添加/刪除源文件命令,為U2添加源程序)。運行程序,單擊DIP開關(guān),改變U1單片機P1口的輸入狀態(tài),觀察U2單片機P2口LED的變化。
五、思考題
1.實驗內(nèi)容1不使用延時程序,而利用定時器實現(xiàn)1秒定時,程序應(yīng)如何修改?
2.實驗內(nèi)容2通信的波特率為多少?
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。