單片機(jī)實(shí)驗(yàn)課題有助于單片機(jī)的學(xué)習(xí)
《單片機(jī)實(shí)驗(yàn)課題有助于單片機(jī)的學(xué)習(xí)》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)實(shí)驗(yàn)課題有助于單片機(jī)的學(xué)習(xí)(21頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、實(shí)驗(yàn)一 Keil Vision的使用 一、實(shí)驗(yàn)?zāi)康? 掌握Keil Vision的使用; 掌握單片機(jī)匯編程序的調(diào)試方法。 二、實(shí)驗(yàn)原理 Keil Vision是美國(guó)Keil Software公司出品的單片機(jī)集成開(kāi)發(fā)環(huán)境,具有單片機(jī)C語(yǔ)言或匯編語(yǔ)言程序編輯、編譯或匯編、連接、調(diào)試等功能,允許設(shè)置斷點(diǎn),查看程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器和SFR的內(nèi)容,以圖形的方式顯示SFR或變量?jī)?nèi)容隨時(shí)間的變化,是目前單片機(jī)開(kāi)發(fā)最常用的軟件工具。 運(yùn)行Keil Vision后,程序窗口如圖1-1所示。其中項(xiàng)目窗口用于管理工程項(xiàng)目所包含的文件,源程序窗口用于程序編輯,編譯信息窗口輸出編譯或匯編的狀態(tài)信息。各個(gè)窗
2、口可以懸?。‵loating)在主窗口之上,也可以停泊(Docking)在主窗口中,單擊程序主窗口Window菜單的Rest View to Defaults命令,將窗口恢復(fù)成默認(rèn)狀態(tài)。 編譯信息窗口 源程序窗口 項(xiàng)目窗口 圖1-1 Keil Vision程序窗口 三、實(shí)驗(yàn)環(huán)境 Windows XP; Keil Vision 4; 四、實(shí)驗(yàn)內(nèi)容 1.建立項(xiàng)目 雙擊桌面Keil Vision圖標(biāo)或單擊開(kāi)始菜單的Keil Vision命令運(yùn)行程序,出現(xiàn)圖1-1所示的程序窗口。 在主程序菜單欄單擊Project菜單的New Vision Project命令,出現(xiàn)創(chuàng)建新文件
3、對(duì)話框,為項(xiàng)目文件命名并選擇存放路徑(建議為每一個(gè)項(xiàng)目建立獨(dú)立的文件夾)。單擊保存按鈕,出現(xiàn)圖1-2所示器件選擇對(duì)話框,在Data base列表中選擇Atmel公司的AT89C52,作為項(xiàng)目使用的單片機(jī)。 當(dāng)出現(xiàn)如圖1-3所示的添加啟動(dòng)代碼對(duì)話框時(shí),單擊否。 圖1-2 器件選擇對(duì)話框 圖1-3 添加啟動(dòng)代碼對(duì)話框 2.程序編輯 單擊File菜單的New命令,出現(xiàn)源程序編輯窗口,在源程序編輯窗口中輸入?yún)R編程序并保存(擴(kuò)展名為asm)。 ORG 0000H main: MOV P1,#00H loop: INC P1 SJMP loop END
4、在項(xiàng)目窗口中用鼠標(biāo)右鍵單擊Source Group 1,在彈出的快捷菜單中選擇Add Files to Group ‘Source Group 1’命令,將剛才保存的源程序文件添加到項(xiàng)目中。 3.程序調(diào)試 在項(xiàng)目窗口中用鼠標(biāo)右鍵單擊Target 1,在彈出的快捷菜單中選擇Options for Target ’Target 1’命令,出現(xiàn)圖1-4項(xiàng)目選項(xiàng)對(duì)話框。在選項(xiàng)對(duì)話框中,將晶振頻率改為12MHz。 單擊主程序窗口的Build工具或按快捷鍵F7,對(duì)源程序進(jìn)行匯編。如果程序有錯(cuò),根據(jù)輸出信息修改源程序,重新進(jìn)行匯編,直到錯(cuò)誤為零。 單擊主程序窗口Debug菜單的Start/Stop
5、Debug Session命令,進(jìn)入調(diào)試狀態(tài)。調(diào)試狀態(tài)的主程序窗口如圖1-5所示。寄存器窗口可以查看和修改寄存器的值,反匯編窗口可以查看指令代碼及其在程序存儲(chǔ)器中的地址。單擊主程序窗口View菜單的Analysis Windows子菜單的Logic Analyzer命令,打開(kāi)Logic Analyzer窗口,可以觀察SFR或變量的值隨時(shí)間的變化,各個(gè)子窗口排列可以通過(guò)鼠標(biāo)拖動(dòng)或右鍵單擊標(biāo)題欄選擇彈出的子菜單命令加以改變。單擊Logic Analyzer窗口的Setup按鈕,出現(xiàn)Setup Logic Analyzer對(duì)話框(如圖1-6),在對(duì)話框中單擊右上角的Insert按鈕,將P1添加到待分
6、析信號(hào)中。 圖1-4 項(xiàng)目選項(xiàng)對(duì)話框 在主程序窗口中單擊Run工具或按快捷鍵F5運(yùn)行程序,然后單擊Stop工具或Debug菜單的Stop命令,停止程序運(yùn)行,觀察邏輯分析窗口中P1寄存器內(nèi)容隨時(shí)間的變化,應(yīng)如圖1-5所示呈鋸齒形變化。 五、思考題 1.修改程序,使P1的值在0~100之間變化。 2.修改程序,使P1的值隨時(shí)間呈三角形變化(如圖1-7所示)。 圖1-5 調(diào)試狀態(tài)主程序窗口 New(Insert)按鈕 圖1-6 設(shè)置待分析信號(hào) 圖1-7 P1隨時(shí)間呈三角形變化 實(shí)驗(yàn)二 匯編語(yǔ)言程序設(shè)計(jì) 一、實(shí)驗(yàn)?zāi)康? 熟悉單片機(jī)指令、偽指
7、令的使用; 掌握單片機(jī)匯編程序的設(shè)計(jì)、調(diào)試方法。 二、實(shí)驗(yàn)原理 1.匯編語(yǔ)言 匯編程序由指令語(yǔ)句、偽指令語(yǔ)句和宏指令語(yǔ)句構(gòu)成。 指令語(yǔ)句即機(jī)器指令,由標(biāo)號(hào)、指令助記符、操作數(shù)和注釋四部分組成,單片機(jī)的指令長(zhǎng)度為1~3個(gè)字節(jié),大部分為單周期指令,少部分為雙周期指令,只有乘法、除法指令為四周期指令。 偽指令語(yǔ)句定義程序結(jié)構(gòu)和符號(hào),在程序中起指示或說(shuō)明作用,不產(chǎn)生機(jī)器碼。 宏指令是通過(guò)將一段指令序列定義成一個(gè)宏,每次用到該指令序列可以用宏名代替。適當(dāng)使用宏指令,可以大大簡(jiǎn)化程序設(shè)計(jì),增強(qiáng)程序的可讀性。 2.兩字節(jié)乘除運(yùn)算 單片機(jī)字長(zhǎng)8位,一次只能完成8位乘8位或8位除8位運(yùn)算,要進(jìn)
8、行16位乘除運(yùn)算,需按運(yùn)算規(guī)則編程實(shí)現(xiàn)。 16位乘法運(yùn)算如圖2-1所示,由四次8位乘法運(yùn)算組成,四次乘法運(yùn)算的乘積經(jīng)錯(cuò)位相加,形成32位乘積。 R1(8位) R0(8位) R3(8位) R2(8位) R2R0(16位) R3R0(16位) R2R1(16位) R3R1(16位) Product(32位) 圖2-1 兩字節(jié)乘法運(yùn)算 16位除16位無(wú)符號(hào)整數(shù)除法運(yùn)算如圖2-2所示。設(shè)除數(shù)有n位前導(dǎo)0,則對(duì)除數(shù)循環(huán)左移n次,商為n+1位。被除數(shù)減除數(shù),夠減時(shí)商為1,不夠減時(shí)商為零,每減一次,除數(shù)右移一位,重復(fù)n+1次。 三、實(shí)驗(yàn)環(huán)境 Windows XP; Kei
9、l Vision 4; 四、實(shí)驗(yàn)內(nèi)容 1.程序設(shè)計(jì) 雙擊桌面Keil Vision圖標(biāo)或單擊開(kāi)始菜單的Keil Vision命令運(yùn)行程序,在主程序中單擊Project菜單的New Vision Project命令,為項(xiàng)目文件命名并選擇存放路徑,選擇Atmel89C52作為項(xiàng)目所使用的單片機(jī)。 單擊File菜單的New命令,出現(xiàn)源程序編輯窗口,在源程序編輯窗口中輸入?yún)R編程序并保存(擴(kuò)展名為asm)。 被除數(shù)<除數(shù)? 商=0,余數(shù)=被除數(shù) 求除數(shù)前導(dǎo)0的個(gè)數(shù)n,并循環(huán)左移n次 重復(fù)次數(shù)=n+1 被除數(shù)-除數(shù)>0? 上商=1 上商=0 除數(shù)右移 重復(fù)次數(shù)=0? 圖2-
10、2 兩字節(jié)除法流程 16位乘法運(yùn)算用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,對(duì)源程序進(jìn)行
12、匯編。 單擊主程序窗口Debug菜單的Start/Stop Debug Session命令,進(jìn)入調(diào)試狀態(tài)。在寄存器窗口通過(guò)雙擊工作寄存值,將被乘數(shù)R3、R2設(shè)為B754H,乘數(shù)R1、R0設(shè)為A360H,通過(guò)按F10單步運(yùn)算程序。程序執(zhí)行后,檢查乘積R7、R6、R5、R4的值,應(yīng)為74FF3B80H。 修改被乘數(shù)和乘數(shù),重新運(yùn)行程序,檢查結(jié)果是否正確。 五、思考題 1.不用宏指令MULT,原程序該如何寫(xiě)? 2.分析下列16位除法程序,用不同的被除數(shù)和除數(shù)驗(yàn)證運(yùn)算結(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 ;計(jì)算除數(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 實(shí)驗(yàn)三 C51程序設(shè)計(jì)與Proteus仿真 一、實(shí)驗(yàn)?zāi)康? 掌握C51程序設(shè)計(jì)調(diào)試方法; 掌握Proteus仿真軟件的使用; 加深對(duì)單片機(jī)工作原理及外部引腳的理解。 二、實(shí)驗(yàn)原理 1.Proteus簡(jiǎn)介 Proteus ISIS是英國(guó)Labcenter公司開(kāi)發(fā)的電路分析與仿真軟件。該軟件將單片機(jī)仿真和SPICE電路仿真相結(jié)合,支持單片機(jī)程序的編輯、匯編和調(diào)試,可以全速、單步、帶斷點(diǎn)運(yùn)行程序,可以查看各個(gè)寄存器、變量的值,同時(shí)支持第三方的編譯和調(diào)試軟件,如Keil Vision。目前支持的單片機(jī)有:68000系列、8051系列、AVR系列、P
18、IC系列、HC11系列、以及ARM7TDMI系列。 Proteus ISIS具有原理圖繪制功能。通過(guò)在原理圖設(shè)計(jì)窗口放置元件,利用鼠標(biāo)操作,實(shí)現(xiàn)元件之間的連線,完成原理圖設(shè)計(jì)。Proteus ISIS提供各種虛擬儀器,如示波器、信號(hào)發(fā)生器、邏輯分析儀等,方便電路的分析和仿真。 計(jì)算機(jī)安裝了Proteus后,在“開(kāi)始”菜單中增加了Proteus 7 Professional程序項(xiàng),單擊ISIS 7 Professional啟動(dòng)程序后,出現(xiàn)圖3-1所示的程序窗口。 庫(kù)管理按鈕 原理圖設(shè)計(jì)窗口 器件選擇按鈕 圖3-1 Proteus程序窗口 2.C51存儲(chǔ)器類型 匯編語(yǔ)言產(chǎn)生的
19、代碼少、速度快,但程序可讀性差,編程困難。C語(yǔ)言具有良好的可讀性、可移植性和基本的硬件操作能力,利用C51進(jìn)行程序設(shè)計(jì),可以專注于程序的邏輯結(jié)構(gòu)和算法實(shí)現(xiàn),大大提高程序設(shè)計(jì)的效率。 C51根據(jù)單片機(jī)存儲(chǔ)器的結(jié)構(gòu),將存儲(chǔ)器分為不同的類型(如表3-1所示)。C51在定義變量時(shí),可以指定存儲(chǔ)器類型。如:unsigned char data i; 表3-1 C51存儲(chǔ)器類型 類別 存儲(chǔ)器類型 地址范圍 code 程序存儲(chǔ)器 0000H~FFFFH data 內(nèi)部可直接尋址數(shù)據(jù)存儲(chǔ)器 00H~7FH idata 內(nèi)部可間接尋址數(shù)據(jù)存儲(chǔ)器 00H~FFH bdata 內(nèi)部
20、可位尋址數(shù)據(jù)存儲(chǔ)器 20H~2FH xdata 外部數(shù)據(jù)存儲(chǔ)器 0000H~FFFFH pdata 外部數(shù)據(jù)存儲(chǔ)器(一頁(yè)) 00H~FFH sfr 內(nèi)部特殊功能寄存器 80H~FFH 由于單片機(jī)字長(zhǎng)只有8位,運(yùn)算能力較弱,因此變量盡量采用無(wú)符號(hào)字符型(unsigned char),存儲(chǔ)器類型盡量使用片內(nèi)數(shù)據(jù)存儲(chǔ)器(data、idata、bdata),以提高程序執(zhí)行速度。 3.LED掃描顯示 LED數(shù)碼管是單片機(jī)最常見(jiàn)的數(shù)據(jù)顯示器。當(dāng)數(shù)碼管位數(shù)較多時(shí),一般采用動(dòng)態(tài)掃描方式,以節(jié)省單片機(jī)的I/O引腳,降低LED顯示功耗。 單片機(jī)每次輸出七段顯示碼,同時(shí)使1位數(shù)碼管的公共
21、端為有效電平(共陽(yáng)數(shù)碼管為高電平,共陰數(shù)碼管為低電平),則該顯示碼所對(duì)應(yīng)數(shù)字顯示在所選中的1位LED上。適當(dāng)延時(shí),輸出下一位顯示碼,實(shí)現(xiàn)掃描顯示。為使顯示穩(wěn)定無(wú)閃爍,延時(shí)時(shí)間一般為幾毫秒或十幾毫秒。 三、實(shí)驗(yàn)環(huán)境 Windows XP; Keil μ Vision 4; Proteus 7.8。 四、實(shí)驗(yàn)內(nèi)容 1.電路設(shè)計(jì) 啟動(dòng)ISIS 7 Professional,在主程序器件選擇窗口單擊器件選擇按鈕或在原理圖設(shè)計(jì)窗口單擊右鍵選擇Place “放置”命令,選擇Component“元件”子命令,出現(xiàn)圖3-2所示器件選擇對(duì)話框。 在Microprocessor ICs類別中選擇8
22、0C52,在原理圖設(shè)計(jì)窗口中單擊鼠標(biāo),將單片機(jī)放入設(shè)計(jì)窗口,在Optoelectronics類別中選擇7SEG-MPX4-CC,將4位共陰數(shù)碼管放入設(shè)計(jì)窗口。通過(guò)單擊器件引腳,完成電路連線(如圖3-1所示)。單片機(jī)P2口輸出七段顯示碼,P3.0~P3.3用于選擇顯示位,當(dāng)P3.0為低電平時(shí),最左邊的數(shù)碼管亮,P3.3為低電平時(shí),最右邊的數(shù)碼管亮。 為實(shí)驗(yàn)新建一個(gè)文件夾,將電路設(shè)計(jì)文件保存在新建的文件夾中。 實(shí)際電路設(shè)計(jì)時(shí)單片機(jī)P2.0~P2.7需串聯(lián)限流電阻,否則可能因電流過(guò)大損壞單片機(jī),LED數(shù)碼管的位選擇1、2、3、4需采用緩沖器(四個(gè)三極管或74LS07),仿真時(shí)可省略。
23、圖3-2 器件選擇對(duì)話框
2.程序設(shè)計(jì)
啟動(dòng)Keil Vision,單擊Project菜單的New Vision Project命令,出現(xiàn)創(chuàng)建新文件對(duì)話框,為項(xiàng)目文件命名并選擇存放路徑(選擇與Proteus文件相同的文件夾),并選擇Atmel公司的AT89C52作為本項(xiàng)目使用的單片機(jī)。
單擊File菜單的New命令,出現(xiàn)源程序編輯窗口,在源程序編輯窗口中輸入C語(yǔ)言程序并保存(擴(kuò)展名為.c)。
主程序完成四位數(shù)字的顯示,子程序?qū)崿F(xiàn)延時(shí)。
#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”對(duì)話框中選擇Output選項(xiàng)卡,選中Create
26、 HEX File。單擊Build工具或Project菜單的Build命令,編譯源程序。如編譯出現(xiàn)錯(cuò)誤,根據(jù)輸出信息修改程序,重新編譯,直至錯(cuò)誤為零。 3.程序仿真 在Proteus程序窗口雙擊單片機(jī)原理圖符號(hào),出現(xiàn)圖3-3編輯元件屬性對(duì)話框。單擊Program File的打開(kāi)文件按鈕,選擇編譯生成的HEX文件作為單片機(jī)的程序文件。單片機(jī)的主頻設(shè)為12MHz。 單擊Proteus窗口左下角的程序運(yùn)行按鈕,運(yùn)行單片機(jī)程序,觀察數(shù)碼管的顯示。 打開(kāi)文件按鈕 圖3-3 編輯元件屬性對(duì)話框 五、思考題 1.頭文件reg51.h有哪些內(nèi)容? 2.修改程序,實(shí)現(xiàn)動(dòng)態(tài)顯示兩位數(shù)的分和兩
27、位數(shù)的秒。 實(shí)驗(yàn)四 中斷與定時(shí)/計(jì)數(shù)器 一、實(shí)驗(yàn)?zāi)康? 掌握單片機(jī)中斷結(jié)構(gòu); 掌握單片機(jī)定時(shí)/計(jì)數(shù)器的應(yīng)用。 二、實(shí)驗(yàn)原理 1.中斷源和中斷控制寄存器 MCS-51單片機(jī)有五個(gè)中斷源,每個(gè)中斷源可通過(guò)編程設(shè)為高優(yōu)先級(jí)或低優(yōu)先級(jí),各中斷源名稱及對(duì)應(yīng)的中斷入口地址如表4-1所示。 表4-1 中斷入口地址 中斷序號(hào) 中斷源 入口地址 0 INT0 0003H 1 T0 000BH 2 INT1 0013H 3 T1 001BH 4 串行口 0023H 單片機(jī)與中斷相關(guān)的特殊功能寄存器是中斷允許寄存器IE和中斷優(yōu)先級(jí)寄存器IP。
28、中斷允許寄存器IE的字節(jié)地址為A8H,其各位的定義如下: EA - - ES ET1 EX1 ET0 EX0 中斷優(yōu)先級(jí)寄存器IP的字節(jié)地址為B8H,其各位的定義如下: - - - PS PT1 PX1 PT0 PX0 2.定時(shí)/計(jì)數(shù)器的工作方式與控制寄存器 MCS-51單片機(jī)內(nèi)部包含兩個(gè)十六位的定時(shí)/計(jì)數(shù)器T0和T1,當(dāng)被設(shè)為定時(shí)方式時(shí),實(shí)際上是對(duì)機(jī)器周期計(jì)數(shù),每個(gè)機(jī)器周期計(jì)數(shù)器加1。當(dāng)被設(shè)為計(jì)數(shù)方式時(shí),是對(duì)T0(P3.4)或T1(P3.5)引腳上的外部脈沖計(jì)數(shù)。 單片機(jī)中與定時(shí)/計(jì)數(shù)器相關(guān)的特殊功能寄存器是定時(shí)/計(jì)數(shù)器控制寄存器TCON和定時(shí)/計(jì)數(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í)/計(jì)數(shù)方式 0 1 模式1 16位定時(shí)/計(jì)數(shù)方式 1 0 模式2 8位自動(dòng)重裝載方式 1 1 模式3 對(duì)T0:分為一個(gè)8位的定時(shí)/計(jì)數(shù)器TL0和一個(gè)8位的定時(shí)器TH0 對(duì)T1:停止計(jì)數(shù) C/=0,為定時(shí)器方式;C/=1,為計(jì)數(shù)器方式。 GATE=0,定時(shí)/計(jì)數(shù)器的啟動(dòng)和停止完全由TCON的TR位控制。
30、GATE=1,只有當(dāng)TR=1并且引腳為高電平時(shí)才啟動(dòng)計(jì)數(shù)器。 控制寄存器TCON的字節(jié)地址為88H,其各位的定義如下: TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 定時(shí)/計(jì)數(shù)器 外中斷控制 TRx:定時(shí)/計(jì)數(shù)器啟??刂?,TRx=1啟動(dòng)定時(shí)/計(jì)數(shù)器(當(dāng)GATE=0時(shí))。 TFx:定時(shí)/計(jì)數(shù)器溢出標(biāo)志,當(dāng)定時(shí)/計(jì)數(shù)器溢出時(shí),由硬件置位,CPU響應(yīng)中斷時(shí),自動(dòng)清零。 3.定時(shí)初值的計(jì)算 當(dāng)單片機(jī)的振蕩頻率為fOSC,則機(jī)器周期為12/fosc,設(shè)定時(shí)初值為TC,則定時(shí)周期t為: 其中L為計(jì)數(shù)器的位數(shù),模式0時(shí)L=13,模式1時(shí)L=1
31、6,模式2、模式3時(shí)L=8。 三、實(shí)驗(yàn)環(huán)境 Windows XP; Keil μ Vision 4; Proteus 7.8。 四、實(shí)驗(yàn)內(nèi)容 1.定時(shí)器的應(yīng)用 利用定時(shí)/計(jì)數(shù)器T0的定時(shí)功能(工作方式1),使P1.0輸出1KHz的方波,并用虛擬示波器觀測(cè)輸出波形。 啟動(dòng)Proteus仿真軟件,在原理圖設(shè)計(jì)窗口放置AT89C52單片機(jī),右擊原理圖設(shè)計(jì)窗口,在彈出的快捷菜單中選擇Place命令的Virtual Instrument子命令,選擇OSCILLOSCOPE,將虛擬示波器放入設(shè)計(jì)窗口,將P1.0輸出信號(hào)送示波器A通道(如圖4-1所示)。 圖4-1 定時(shí)器應(yīng)用實(shí)驗(yàn)原理
32、圖
設(shè)單片機(jī)的振蕩頻率為12MHz,定時(shí)初值為:
15
匯編參考程序如下(請(qǐng)自行補(bǔ)充完整):
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定時(shí)
MOV TH0,#0FEH
MOV TL0,#0CH
SETB TR0
SJMP $
END
C語(yǔ)言參考程序如下:
#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;
}
用匯編語(yǔ)言設(shè)計(jì)程序,可以單擊Proteus程序窗口Source菜單的Add/Remove Source file命令,出現(xiàn)圖4-2所示對(duì)話框,在對(duì)話框中單擊New按鈕,為單片機(jī)建立匯編源程序,然后編輯、編譯程序。用C語(yǔ)言設(shè)計(jì)程序,可使用 34、Keil編輯和編譯源程序,最后生成HEX文件,在Proteus程序窗口雙擊單片機(jī)原理圖符號(hào),將編譯生成的HEX文件作為單片機(jī)的程序文件。最后運(yùn)行程序,出現(xiàn)圖4-3所示虛擬示波器窗口,觀察示波器中的波形并讀取周期和頻率。
圖4-2 添加/移除匯編源程序?qū)υ捒?
圖4-3 虛擬示波器
2.實(shí)時(shí)時(shí)鐘
單片機(jī)外接四位LED數(shù)碼管用于顯示分和秒(如圖4-4所示),定時(shí)/計(jì)數(shù)器T0設(shè)為工作方式2,定時(shí)時(shí)間200S,當(dāng)單片機(jī)主頻為12MHz時(shí)定時(shí)初值為56,每5000次中斷秒加1,每60秒分加1。用匯編或C語(yǔ)言寫(xiě)出相應(yīng)的程序(LED掃描顯示可參照實(shí)驗(yàn)三)。
圖4-4 實(shí)時(shí)時(shí)鐘電 35、路
編譯運(yùn)行程序,觀察LED顯示的時(shí)間和Proteus窗口的ANIMATING時(shí)間,比較兩者的誤差。
五、思考題
1.影響實(shí)時(shí)時(shí)種計(jì)時(shí)精度的因素有哪些,如何進(jìn)一步提高計(jì)時(shí)精度?
實(shí)驗(yàn)五 串行口
一、實(shí)驗(yàn)?zāi)康?
掌握單片機(jī)串行口的內(nèi)部結(jié)構(gòu)和工作方式;
掌握單片機(jī)串行口的應(yīng)用;
二、實(shí)驗(yàn)原理
1.串行口的工作方式及其控制寄存器
MCS-51系列單片機(jī)內(nèi)含一個(gè)16位全雙工串行口,有四種工作方式,既可以用于擴(kuò)展單片機(jī)的輸入/輸出口,也可以實(shí)現(xiàn)單片機(jī)與單片機(jī)、單片機(jī)與微機(jī)的串行通信。與串行口相關(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時(shí),作為多機(jī)通信的使能位,SM2=1時(shí),只 37、有當(dāng)收到的第九個(gè)數(shù)據(jù)位為1時(shí),才會(huì)使RI置位。
REN為接收允許位。REN=1時(shí)允許接收。
TB8為方式2或方式3時(shí)發(fā)送的第九個(gè)數(shù)據(jù)位。
RB8為方式2或方式3時(shí)接收的第九個(gè)數(shù)據(jù)位。
TI為發(fā)送中斷標(biāo)志。由硬件置位,需由軟件清除。
RI為接收中斷標(biāo)志。由硬件置位,需由軟件清除。
串行口數(shù)據(jù)寄存器SBUF實(shí)際上包含兩個(gè)獨(dú)立的寄存器:發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器。寫(xiě)SBUF訪問(wèn)發(fā)送數(shù)據(jù)寄存器并啟動(dòng)一次串行發(fā)送;讀SBUF訪問(wèn)接收數(shù)據(jù)寄存器,它們的字節(jié)地址均為99H。
電源控制寄存器PCON的字節(jié)地址為87H,其最高位為波特率系數(shù)控制位,當(dāng)SMOD=1時(shí),波特率加倍。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為待機(jī)方式位,IDL=1進(jìn)入待機(jī)方式。
2.串行口波特率的計(jì)算
當(dāng)單片機(jī)的振蕩頻率為fOSC、定時(shí)/計(jì)數(shù)器的溢出速率為F時(shí),串行口的波特率分別為:
方式0:波特率=
方式2:波特率=
方式1和方式3:波特率=
若定時(shí)器工作在8位自動(dòng)重裝載方式(方式2 57、),定時(shí)初值為TC,則溢出速率F=
3.串行口的應(yīng)用
方式0主要用于輸入/輸出口的擴(kuò)展,方式1主要用于單片機(jī)與單片機(jī)之間、單片機(jī)與微機(jī)之間的串行通信(每次通信傳輸8個(gè)數(shù)據(jù)位),方式2和方式3主要用于多機(jī)通信或一次通信需要9個(gè)數(shù)據(jù)位(如帶奇偶校驗(yàn))的情況。
三、實(shí)驗(yàn)環(huán)境
Windows XP;
Proteus7.5。
四、實(shí)驗(yàn)內(nèi)容
1.串行口方式0實(shí)驗(yàn)
串行口工作在方式0時(shí),可通過(guò)外接移位存儲(chǔ)器實(shí)現(xiàn)串并行轉(zhuǎn)換。在這種方式下,數(shù)據(jù)為8位,只能從RXD端輸入輸出,TXD端總是輸出移位同步時(shí)鐘信號(hào),其波特率固定為晶振頻率1/12。由軟件置位串行控制寄存器SCON的REN后才能啟動(dòng)串行接 58、收,在CPU將數(shù)據(jù)寫(xiě)入SBUF寄存器后,立即啟動(dòng)發(fā)送。待8位數(shù)據(jù)傳輸完后,硬件將SCON寄存器的TI位置1,TI必須由軟件清零。實(shí)驗(yàn)連線如圖5-1所示,圖中數(shù)碼管采用“7SEG-COM-ANODE”共陽(yáng)數(shù)碼管。
圖5-1 串并轉(zhuǎn)換實(shí)驗(yà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
寫(xiě)出C語(yǔ)言程序并運(yùn)行,觀察并記錄結(jié)果。
2.雙機(jī)串行通信 60、實(shí)驗(yàn)
實(shí)驗(yàn)原理圖如圖5-2所示,要求單片機(jī)U1的外接開(kāi)關(guān)DIPSW_8可控制單片機(jī)U2的外接LED燈LED-BARGRAPH-GRN的亮暗。
圖5-2 雙機(jī)串行通信實(shí)驗(yàn)原理圖
單片機(jī)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
單片機(jī)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
寫(xiě)出C語(yǔ)言程序,編譯后分別添加到單片機(jī)U1和U2。(如果用匯編編程,可直接選擇單片機(jī)U1,單擊源代碼菜單的添加/刪除源文件命令,為U1添加源程序。選擇單片機(jī)U2,再次單擊源代碼菜單的添加/刪除源文件命令,為U2添加源程序)。運(yùn)行程序,單擊DIP開(kāi)關(guān),改變U1單片機(jī)P1口的輸入狀態(tài),觀察U2單片機(jī)P2口LED的變化。
五、思考題
1.實(shí)驗(yàn)內(nèi)容1不使用延時(shí)程序,而利用定時(shí)器實(shí)現(xiàn)1秒定時(shí),程序應(yīng)如何修改?
2.實(shí)驗(yàn)內(nèi)容2通信的波特率為多少?
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護(hù)納稅人的合法權(quán)益)
- 2024《文物保護(hù)法》全文解讀學(xué)習(xí)(加強(qiáng)對(duì)文物的保護(hù)促進(jìn)科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見(jiàn)問(wèn)題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說(shuō)話方式
- 汽車銷售績(jī)效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對(duì)成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營(yíng)銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩