東南大學(xué)單片機(jī)實(shí)驗(yàn)報(bào)告測控技術(shù)與儀器_第1頁
東南大學(xué)單片機(jī)實(shí)驗(yàn)報(bào)告測控技術(shù)與儀器_第2頁
東南大學(xué)單片機(jī)實(shí)驗(yàn)報(bào)告測控技術(shù)與儀器_第3頁
東南大學(xué)單片機(jī)實(shí)驗(yàn)報(bào)告測控技術(shù)與儀器_第4頁
東南大學(xué)單片機(jī)實(shí)驗(yàn)報(bào)告測控技術(shù)與儀器_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)實(shí)驗(yàn)報(bào)告2015/1/5 單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)報(bào)告 姓 名: 學(xué) 號(hào): 院 系:儀器科學(xué)與工程學(xué)院 專 業(yè): 測控技術(shù)與儀器 實(shí) 驗(yàn) 室: 機(jī)械樓5樓 同組人員: 評定成績: 審閱教師: 軟件實(shí)驗(yàn)一 數(shù)據(jù)傳送實(shí)驗(yàn)一、 實(shí)驗(yàn)?zāi)康?、熟悉單片機(jī)仿真開發(fā)器的使用;2、掌握編程方法;3、掌握8051內(nèi)部RAM的數(shù)據(jù)操作二、 實(shí)驗(yàn)內(nèi)容內(nèi)部RAM 40H4FH單元置數(shù)A0HAFH,然后將40H4FH單元內(nèi)容送到內(nèi)部RAM50H5FH單元中。編輯、編譯、運(yùn)行程序,檢查內(nèi)部RAM中的結(jié)果。三、 實(shí)驗(yàn)程序 46 / 46 ORG 0000HRESET: AJMP MAIN ORG 003FHMAIN:

2、MOV R0,#40H MOV R2,#10H ;提高時(shí)將10H改為20H MOV A,#0A0H ;提高時(shí)將0A0H改為00HA1: MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#40H MOV R1,#50H ;提高時(shí)將50H改為60H MOV R2,#10H ;提高時(shí)將10H改為20HA2: MOV A,R0 MOV R1,A INC R0 INC R1 DJNZ R2,A2A3: SJMP A3四、 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)顯示RAM的40H4FH以及50H5FH的內(nèi)容都為A0HAFH。五、 實(shí)驗(yàn)提高修改程序:將所置的數(shù)改為00H1FH,置數(shù)單元和傳送單元分別改

3、為內(nèi)部RAM的40H5FH、60H7FH。見實(shí)驗(yàn)程序注釋部分。六、實(shí)驗(yàn)思考 熟悉了偉福單片機(jī)系統(tǒng)的使用方法,在仿真器中查看寄存器內(nèi)容變化,了解了51單片機(jī)內(nèi)部RAM尋址方式:立即數(shù)尋址、寄存器尋址等。 軟件實(shí)驗(yàn)二 多字節(jié)十進(jìn)制加法實(shí)驗(yàn)一、 實(shí)驗(yàn)?zāi)康恼莆誐CS-51匯編語言程序設(shè)計(jì)方法二、實(shí)驗(yàn)內(nèi)容多字節(jié)十進(jìn)制加法;加數(shù)存儲(chǔ)單元首地址由R0指出,被加數(shù)和結(jié)果的存儲(chǔ)單元首地址由R1指出,字節(jié)數(shù)由R2指出;編輯、編譯、運(yùn)行程序,檢查內(nèi)部RAM中的結(jié)果。三、實(shí)驗(yàn)程序加數(shù)存儲(chǔ)單元為:31H、30H,被加數(shù)存儲(chǔ)單元為:21H、20H,結(jié)果存儲(chǔ)單元為:22H、21H、20H。 ORG 0000HRESET:

4、AJMP MAIN ORG 0100HMAIN: MOV SP,#60H MOV R0,#31HMOV R0,#22H ;提高時(shí)將加數(shù)高位改為自定義的數(shù)的高位(如66H)DEC R0MOV R0,#33H ;提高時(shí)將加數(shù)低位改為自定義的數(shù)的低位(如77H)MOV R1,#21HMOV R1,#44H ;提高時(shí)作為被加數(shù)的高位被修改(如改為44H)DEC R1MOV R1,#55H ;提高時(shí)作為被加數(shù)的低位被修改(如改為55H)MOV R2,#02HACALL DACEHERE: SJMP HEREDACE: CLR CDAL: MOV A,R0 ADDC A,R1DA AMOV R1,AINC

5、 R0INC R1DJNZ R2,DALCLR AMOV ACC.0,CMOV R1,ARET四、實(shí)驗(yàn)結(jié)果 被加數(shù)單元地址 (21H)(20H)加數(shù)單元地址 (31H)(30H) +) 結(jié)果單元地址 (22H)(21H)(20H) 被加數(shù)數(shù)值 44H 55H加數(shù)數(shù)值 22H 33H +) 結(jié)果數(shù)值 00H 66H 88H五、實(shí)驗(yàn)提高修改加數(shù)和被加數(shù)(十進(jìn)制數(shù)),重復(fù)運(yùn)行程序。思考:見程序注釋部分,改過之后結(jié)果如下:被加數(shù)數(shù)值 44H 55H加數(shù)數(shù)值 66H 77H +) 結(jié)果數(shù)值 01H 11H 32H 六、實(shí)驗(yàn)思考學(xué)習(xí)了多字節(jié)十進(jìn)制加法,其中DA這條匯編指令是實(shí)現(xiàn)十進(jìn)制加法的關(guān)鍵,當(dāng)用BCD

6、碼十進(jìn)制數(shù)進(jìn)行加法運(yùn)算時(shí),其運(yùn)算結(jié)果的和數(shù)不一定仍為十進(jìn)制的BCD碼,必須用DA指令調(diào)整成十進(jìn)制的BCD碼。軟件實(shí)驗(yàn)三 十進(jìn)制數(shù)排序?qū)嶒?yàn)一、實(shí)驗(yàn)?zāi)康恼莆帐M(jìn)制數(shù)的排序方法二、實(shí)驗(yàn)內(nèi)容本程序用的是“冒泡排序”法,是將一個(gè)數(shù)與后面的數(shù)相比較,如果比后面的數(shù)大,則交換,如此將所有的數(shù)比較一遍后,最大的數(shù)就會(huì)在數(shù)列的最后面。再進(jìn)行下一輪比較,找出第二大數(shù)據(jù),直到全部數(shù)據(jù)有序,即從小到大排序。三、實(shí)驗(yàn)程序SIZE EQU 10ARRAY EQU 40HCHANGE EQU 0SORT: MOV R0,#ARRAYMOV R7,#SIZE-1CLR CHANGEGOON: MOV A,R0MOV R2,A

7、INC R0MOV B,R0CJNE A,B,NOTEQUALSJMP NEXTNOTEQUAL: JC NEXT;提高時(shí)將“JC” 改為“JNC”SETB CHANGEXCH A,R0DEC R0XCH A,R0INC R0NEXT: DJNZ R7,GOONJB CHANGE,SORTLJMP $END四、實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)時(shí),運(yùn)行程序前手動(dòng)更改RAM 50H59H的內(nèi)容為任意10個(gè)無序的數(shù),如00H,09H,0FH,0AH,04H,C0H,B1H,34H,25H,F(xiàn)FH。運(yùn)行程序后可以看到50H59H的內(nèi)容變?yōu)?0H,04H,09H,0AH,0FH,25H,34H,B1H,C0H,FFH即按升

8、序排列的10個(gè)數(shù)。五、實(shí)驗(yàn)提高修改程序,按照從小到大的順序排列。結(jié)果:只要將NOTEQUAL子程序中的JC改為JNC即可實(shí)現(xiàn)。運(yùn)行后的數(shù)據(jù)將按照從大到小排列。六、實(shí)驗(yàn)思考本實(shí)驗(yàn)使用的是冒泡排序,冒泡排序是很經(jīng)典的排序算法,通過依次比較前后兩個(gè)數(shù)大小從而將整個(gè)序列排序。這個(gè)方法算法思想直觀易懂,實(shí)現(xiàn)方式簡單,但是由于需要多次循環(huán)所以整個(gè)過程很繁瑣,尤其是數(shù)據(jù)較多時(shí)需要處理的時(shí)間就會(huì)大大加長。硬件實(shí)驗(yàn)一 I/O口輸入/輸出及控制實(shí)驗(yàn) 、I/O口輸入/輸出實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)單片機(jī)I/O口的使用方法;2、學(xué)習(xí)延時(shí)子程序的編寫和使用。二、實(shí)驗(yàn)內(nèi)容1、I/O口輸出:P1口做輸出口,接八只發(fā)光二極管,

9、編寫程序讓發(fā)光二極管循環(huán)點(diǎn)亮。2、I/O口輸入/輸出:P1.0、P1.1做輸入口接兩個(gè)撥動(dòng)開關(guān);P1.2、P1.3做輸出口,接兩個(gè)發(fā)光二極管。編寫程序讀取開關(guān)狀態(tài),將此狀態(tài)在發(fā)光二極管上顯示出來。編程時(shí)應(yīng)注意P1.0、P1.1作為輸入口時(shí)應(yīng)先置1,才能正確讀入值。三、實(shí)驗(yàn)步驟1、I/O口輸出硬件連接連線連接孔1連接孔21P1.0L02P1.1L13P1.2L24P1.3L35P1.4L46P1.5L57P1.6L68P1.7L7MCS51的P1口循環(huán)點(diǎn)燈2、I/O口輸入/輸出硬件連接連線連接孔1連接孔21K4P1.02K5P1.13P1.2L44P1.3L5MCS51的P1口輸入/輸出3、分別

10、連接硬件并執(zhí)行相關(guān)程序,記錄結(jié)果。四、實(shí)驗(yàn)程序1、I/O口輸出(P1口循環(huán)點(diǎn)燈)LOOP: MOV A,#01H ;提高時(shí)將01H改為55H MOV R2,#8OUTPUT: MOV P1,A RL A CALL DELAY DJNZ R2,OUTPUT LJMP LOOPDELAY: MOV R6,#0 MOV R7,#0DELAYLOOP: DJNZ R6,DELAYLOOP DJNZ R7,DELAYLOOP RETEND2、I/O口輸入/輸出(P1口輸入/輸出)KEYLEFT EQU P1.0 KEYRIGHT EQU P1.1 LEDLEFT EQU P1.2 LEDRIGHT EQ

11、U P1.3 SETB KEYLEFT SETB KEYRIGHTLOOP: MOV C,KEYLEFT MOV LEDLEFT,C MOV C,KEYRIGHT MOV LEDRIGHT,C LJMP LOOPEND六、實(shí)驗(yàn)結(jié)果I/O口輸出實(shí)驗(yàn),運(yùn)行程序后可以看到LED從右向左循環(huán)點(diǎn)亮;I/O口輸入/輸出實(shí)驗(yàn),運(yùn)行程序并置1后,撥動(dòng)某一個(gè)開關(guān)后會(huì)看到對應(yīng)的LED發(fā)光。七、實(shí)驗(yàn)提高修改I/O口輸出程序,改成先1,3,5,7燈亮,再2,4,6,8燈亮。思考:只要將程序第一行的01H 改為55H即可,55H即0101 0101B,最初1,3,5,7燈亮,右循環(huán)后變?yōu)?010 1010B,2,4,6

12、,8燈亮。八、實(shí)驗(yàn)思考 本實(shí)驗(yàn)第一次使用延時(shí)程序,對于程序DELAY:MOV R6, #0HMOV R7, #0HDELAYLOOP:DJNZ R6, DELAYLOOPDJNZ R7, DELAYLOOPRET查指令表可知MOV和DJNZ指令均需兩個(gè)指令周期,在12MHz晶振時(shí),一個(gè)機(jī)器周期時(shí)間為:12/12MHZ = 1ms,該延時(shí)子程序延時(shí):(256X256+2)X2X12/12=130ms。由于DJNZ指令是先對寄存器內(nèi)容減1再與0比較,所以給R6R7賦值0可以獲得最長延時(shí)。 、 繼電器控制實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)I/O端口的使用方法;2、掌握繼電器控制的基本方法;3、了解用弱電控制強(qiáng)

13、電的方法。二、實(shí)驗(yàn)內(nèi)容用單片機(jī)端口,輸出電平控制繼電器的吸合和斷開,實(shí)現(xiàn)對外部裝置的控制。三、實(shí)驗(yàn)步驟1、硬件連線連線連接孔1連接孔21P1.0繼電器輸入25V繼電器常閉輸入3L0繼電器中間輸入2、實(shí)驗(yàn)說明本實(shí)驗(yàn)采用的繼電器其控制電壓是5V,控制端為高電平時(shí),繼電器工作常開觸點(diǎn)吸合,連接觸點(diǎn)的LED燈被點(diǎn)亮。當(dāng)控制端為低電平時(shí),繼電器不工作,LED燈滅。3、分析并執(zhí)行程序四、實(shí)驗(yàn)程序OUTPUT EQU P1.0 ; P1.0 PORTLOOP: CLR C MOV OUTPUT, C CALL DELAY SETB C MOV OUTPUT, C CALL DELAY LJMP LOOPDE

14、LAY: ;提高時(shí)為了修改延時(shí)時(shí)間,只要更改2個(gè)立即數(shù)0即可。 MOV R6, #0 MOV R7, #0DLOOP: DJNZ R7, DLOOP DJNZ R6, DLOOP RETEND五、實(shí)驗(yàn)結(jié)果運(yùn)行程序后可以看到LED燈呈亮、滅、亮、滅的循環(huán)。六、實(shí)驗(yàn)提高1、修改程序,改變繼電器吸合的時(shí)間間隔;更改DELAY子程序中的兩個(gè)立即數(shù)即可。2、查詢資料,了解其他弱電控制強(qiáng)電的方法。弱電控制強(qiáng)電是通過低壓系統(tǒng)的設(shè)備如定時(shí)器、傳感器等設(shè)備對強(qiáng)電(220V以上)供電系統(tǒng)實(shí)現(xiàn)自動(dòng)延時(shí)開啟或關(guān)閉功能,有固體繼電器、可控硅、光電耦合可控硅等等。七、實(shí)驗(yàn)思考這次試驗(yàn)比較簡單,初步了解了繼電器及其使用方法

15、。硬件實(shí)驗(yàn)二 數(shù)據(jù)輸入/輸出口擴(kuò)展實(shí)驗(yàn) 、 用74HC245讀入數(shù)據(jù)一、實(shí)驗(yàn)?zāi)康?、了解CPU數(shù)據(jù)總線的使用;2、掌握利用74HC245數(shù)據(jù)輸入/輸出的方法。二、實(shí)驗(yàn)內(nèi)容利用試驗(yàn)箱上的74HC245輸入電路,用總線方式讀入開關(guān)狀態(tài)。三、實(shí)驗(yàn)步驟1、硬件連接連線連接孔1連接孔21K0245-I02K1245-I13K2245-I24K3245-I35K4245-I46K5245-I57K6245-I68K7245-I79CS0CS2452、實(shí)驗(yàn)說明一般情況下,CPU的總線會(huì)掛有很多器件,如何使這些器件不造成沖突,這就要使用一些總線隔離器件,例如74HC245就是一種。74HC245是三態(tài)總線收發(fā)

16、器,利用它既可以輸出也可以輸入數(shù)據(jù)。本實(shí)驗(yàn)74HC245的片選地址為CS0,即8000H,讀這個(gè)地址,就是從74HC245讀回開關(guān)的值??梢杂脝尾降姆绞綀?zhí)行程序,改變開關(guān)狀態(tài),觀察讀回的值。3、分析并執(zhí)行程序,觀察并記錄實(shí)驗(yàn)結(jié)果。四、實(shí)驗(yàn)程序CS245 EQU 8000HORG 0000HLOOP: MOV DPTR,#CS245 MOVX A,DPTR LJMP LOOP END五、實(shí)驗(yàn)結(jié)果程序執(zhí)行后,撥動(dòng)八位開關(guān),開為1,閉為0,開關(guān)狀態(tài)表示8位二進(jìn)制數(shù),相應(yīng)的寄存器顯示對應(yīng)的結(jié)果。六、實(shí)驗(yàn)提高連接撥動(dòng)開關(guān),利用發(fā)光二極管顯示撥動(dòng)開關(guān)的狀態(tài)。如果利用74HC245輸出,如何設(shè)計(jì)電路?將二極

17、管與開關(guān)一一對應(yīng)相連即可。其中開關(guān)連接74HC245的輸入端,LED連接74HC245的輸出端。八、實(shí)驗(yàn)思考 這次試驗(yàn)第一次訪問了外部RAM,使用MOVX指令,將外部RAM地址放入數(shù)據(jù)指針DPTR間接尋址,尋址范圍可達(dá)64KB。 、 74HC273擴(kuò)展數(shù)據(jù)輸出一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)在單片機(jī)系統(tǒng)中擴(kuò)展簡單I/O接口的方法;2、學(xué)習(xí)數(shù)據(jù)輸出程序的設(shè)計(jì)方法;3、了解數(shù)據(jù)鎖存的概念和方法。二、實(shí)驗(yàn)內(nèi)容利用實(shí)驗(yàn)箱上的273輸出電路,從總線上輸出I/O口信號(hào),控制八個(gè)LED燈。三、實(shí)驗(yàn)步驟1、硬件連接連線連接孔1連接孔21L0273-I02L1273-I13L2273-I24L3273-I35L4273-I

18、46L5273-I57L6273-I68L7273-I79CS0CS2732、實(shí)驗(yàn)說明本實(shí)驗(yàn)用74HC273擴(kuò)展I/O端口。方法是:通過片選信號(hào)和寫信號(hào)將數(shù)據(jù)總線上的值鎖存在273中,同時(shí)在273的輸出端口輸出。當(dāng)數(shù)據(jù)總線上的值撤銷后,由于273能夠鎖存信號(hào),所以273的輸出端保持不變,直到下次有新的數(shù)據(jù)被鎖存。本實(shí)驗(yàn)中,在數(shù)據(jù)輸出同時(shí)輸出片選信號(hào)和寫信號(hào)。3、分析并執(zhí)行程序,觀察并記錄結(jié)果。四、實(shí)驗(yàn)程序CS273 EQU 8000HMOV DPTR,#CS273MOV A,#1LOOP: MOVX DPTR,A MOV R6,#0FFH MOV R7,#0FFHDELAYLOOP: DJNZ

19、 R6,DELAYLOOP DJNZ R7,DELAYLOOP NOPRL A ;提高時(shí)將RL改為RR LJMP LOOPDELAY: ENDCS273 EQU 8000H MOV DPTR, #CS273 MOV A, #1LOOP: MOVX DPTR,A RL A ;提高時(shí)將RL改為RR NOP LJMP LOOPEND五、實(shí)驗(yàn)結(jié)果執(zhí)行程序后可以看到LED燈從右向左循環(huán)點(diǎn)亮。六、實(shí)驗(yàn)提高增加延時(shí)程序,讓LED燈由左向右循環(huán)點(diǎn)亮。見程序注釋。七、實(shí)驗(yàn)思考74HC273具有八路邊沿觸發(fā),D 型觸發(fā)器,帶獨(dú)立的D輸入和Q輸出。273帶鎖存,這樣D輸入的信號(hào)可以鎖住保持在輸出端,保持LED的驅(qū)動(dòng)

20、是固定的電平狀態(tài),所以當(dāng)總線數(shù)據(jù)撤銷后,輸出端的值可以保持不變。硬件實(shí)驗(yàn)四 顯示器/鍵盤實(shí)驗(yàn) 、八段數(shù)碼管顯示實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、了解數(shù)碼管動(dòng)態(tài)顯示的原理;2、了解用總線方式控制數(shù)碼管顯示。二、實(shí)驗(yàn)內(nèi)容利用實(shí)驗(yàn)儀提供的顯示電路,動(dòng)態(tài)顯示一行數(shù)據(jù)。三、實(shí)驗(yàn)步驟1、硬件連接連線連接孔1連接孔21KEY/LED_CSCS02、實(shí)驗(yàn)說明注意:當(dāng)用總線方式驅(qū)動(dòng)八段顯示管時(shí),請將八段的驅(qū)動(dòng)方式選擇開關(guān)撥到“內(nèi)驅(qū)”位置;當(dāng)用I/O方式驅(qū)動(dòng)八段顯示管時(shí),請將開關(guān)撥到“外驅(qū)”位置。本實(shí)驗(yàn)儀提供了6 位8段碼LED顯示電路,學(xué)生只要按地址輸出相應(yīng)數(shù)據(jù),就可以實(shí)現(xiàn)對顯示器的控制。顯示共有6位,用動(dòng)態(tài)方式顯示。8位段

21、碼、6位位碼是由兩片74LS374輸出。位碼經(jīng)MC1413或ULN2003倒相驅(qū)動(dòng)后,選擇相應(yīng)顯示位。本實(shí)驗(yàn)儀中 8位段碼輸出地址為0X004H,位碼輸出地址為 0X002H。此處X是由KEY/LED CS 決定,參見地址譯碼。做鍵盤和LED實(shí)驗(yàn)時(shí),需將KEY/LED CS 接到相應(yīng)的地址譯碼上。以便用相應(yīng)的地址來訪問。例如,將KEY/LED CS 接到CS0上,則段碼地址為08004H,位碼地址為08002H。七段數(shù)碼管的字型代碼表如下表: 顯示字形gfedcba段碼001111113fh1000011006h210110115bh310011114fh4110011066h51101101

22、6dh611111017dh7000011107h811111117fh911011116fhA111011177hb11111007chC011100139hd10111105ehE111100179hF111000171h3、分析并執(zhí)行程序,觀察并記錄結(jié)果。四、實(shí)驗(yàn)程序OUTBIT EQU 08002HOUTSEG EQU 08004HIN EQU 08001HLEDBUF EQU 60HNUM EQU 70HDELAYT EQU 75HLJMP STARTLEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5

23、EH,79H,71HDELAY: MOV R7,#0DELAYLOOP: DJNZ R7,DELAYLOOP DJNZ R6, DELAYLOOP RETDISPLAYLED: MOV R0,#LEDBUF MOV R1, #6 MOV R2, #00100000BLOOP: MOV DPTR,#OUTBIT MOV A,#0 MOVX DPTR,A MOV A,R0 MOV DPTR,#OUTSEG MOVX DPTR,A MOV DPTR,#OUTBIT MOV A,R2 MOVX DPTR,A MOV R6,#05 CALL DELAY MOV A,R2 RR A MOV R2,A IN

24、C R0 DJNZ R1,LOOP MOV DPTR,#OUTBIT MOV A,#0 MOVX DPTR,A RETSTART: MOV SP,#40H MOV NUM, #0 MLOOP: INC NUM MOV A,NUM MOV B,A MOV R0,#LEDBUFFILLBUF: MOV A,B ANL A,#0FH MOV DPTR,#LEDMAP MOVC A,A+DPTR MOV R0,A INC R0 INC B CJNE R0,#LEDBUF+6,FILLBUF MOV DELAYT,#30DISPAGAIN: CALL DISPLAYLED DJNZ DELAYT,DIS

25、PAGAIN LJMP MLOOP END五、實(shí)驗(yàn)結(jié)果數(shù)碼管動(dòng)態(tài)地012345、123456、234567、·······、F012345、0123456、······不斷循環(huán)顯示。六、實(shí)驗(yàn)提高修改程序,顯示1、2、3、4、5、6或A、B、C、D、E、F。去掉MLOOP: INC NUM一句,NUM的值一直是1或者A,主程序結(jié)尾處也不要跳轉(zhuǎn)回MLOOP,我讓程序在結(jié)尾處一直循環(huán)DISPLAYLED子程序。七、思考多個(gè)數(shù)碼管掃描顯示利用了人眼的視覺暫留現(xiàn)象,單片機(jī)一次

26、位選一個(gè)數(shù)碼管,點(diǎn)亮一個(gè)字符,然后位選下一個(gè)數(shù)碼管,這時(shí)候上一個(gè)數(shù)碼管其實(shí)滅了,但是單片機(jī)掃描速度非???,人眼看到的現(xiàn)象就是多個(gè)數(shù)碼管同時(shí)亮了。 、 鍵盤掃描顯示實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、掌握鍵盤和顯示器的接口方法和編程方法。2、掌握鍵盤掃描和LED八段碼顯示器的工作原理。二、實(shí)驗(yàn)內(nèi)容在上一個(gè)實(shí)驗(yàn)的基礎(chǔ)上,利用實(shí)驗(yàn)儀提供的鍵盤掃描電路和顯示電路,做一個(gè)掃描鍵盤和數(shù)碼顯示實(shí)驗(yàn),把按鍵輸入的鍵碼在六位數(shù)碼管上顯示出來。實(shí)驗(yàn)程序可分成三個(gè)模塊。鍵輸入模塊:掃描鍵盤、讀取一次鍵盤并將鍵值存入鍵值緩沖單元。顯示模塊:將顯示單元的內(nèi)容在顯示器上動(dòng)態(tài)顯示。主程序:調(diào)用鍵輸入模塊和顯示模塊。三、實(shí)驗(yàn)步驟1、硬件連接

27、連線連接孔1連接孔21KEY/LED_CSCS0列碼(0X002H)讀回行碼(0X001H)數(shù)據(jù)總線2、實(shí)驗(yàn)說明本實(shí)驗(yàn)儀提供了一個(gè)6×4的小鍵盤,向列掃描碼地址(0X002H)逐列輸出低電平,然后從行碼地址(0X001H)讀回。如果有鍵按下,則相應(yīng)行的值應(yīng)為低,如果無鍵按下,由于上拉的作用,相應(yīng)行碼為高。在判斷有鍵按下后,要有一定的延時(shí),防止鍵盤抖動(dòng)。再通過輸出的列碼和讀取的行碼來判斷按下的是什么鍵。地址中的X是由KEY/LED CS 決定,參見地址譯碼。做鍵盤和LED實(shí)驗(yàn)時(shí),需將KEY/LED CS 接到相應(yīng)的地址譯碼上。以便用相應(yīng)的地址來訪問。例如將KEY/LED CS信號(hào)接CS

28、0上,則列掃描地址為08002H,行碼地址為08001H。列掃描碼還可以分時(shí)用作LED的位選通信號(hào)(參見鍵盤顯示電路)。3、分析并執(zhí)行程序,觀察并記錄結(jié)果。四、實(shí)驗(yàn)程序OUTBIT EQU 08002HOUTSEG EQU 08004HIN EQU 08001HLEDBUF EQU 60HLJMP STARTLEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HDELAY: MOV R7,#0DELAYLOOP: DJNZ R7,DELAYLOOP DJNZ R6, DELAYLOOP RETD

29、ISPLAYLED: MOV R0,#LEDBUF MOV R1, #6 MOV R2, #00100000BLOOP: MOV DPTR,#OUTBIT MOV A,#0 MOVX DPTR,A MOV A,R0 MOV DPTR,#OUTSEG MOVX DPTR,A MOV DPTR,#OUTBIT MOV A,R2 MOVX DPTR,A MOV R6,#1 CALL DELAY MOV A,R2 RR A MOV R2,A INC R0 DJNZ R1,LOOP RETTESTKEY: MOV DPTR,#OUTBIT MOV A,#0 MOVX DPTR,A MOV DPTR,#I

30、N MOVX A,DPTR CPL A ANL A,#0FH RETKEYTABLE: DB 16H,15H,14H,0FFH DB 13H,12H,11H,10H DB 0DH,0CH,0BH,0AH DB 0EH,03H,06H,09H DB 0FH,02H,05H,08H DB 00H,01H,04H,07HGETKEY: MOV DPTR,#OUTBIT MOV P2,DPH MOV R0,#LOW(IN) MOV R1,#00100000B MOV R2,#6KLOOP: MOV A,R1 CPL A MOVX DPTR,A CPL A RR A MOV R1,A MOVX A,R0

31、 CPL A ANL A,#0FH JNZ GOON1 DJNZ R2,KLOOP MOV R2,#0FFH SJMP EXITGOON1: MOV R1,A MOV A,R2 DEC A RL A RL A MOV R2,A MOV A,R1 MOV R1,#4LOOPC: RRC A JC EXIT INC R2 DJNZ R1,LOOPCEXIT: MOV A,R2 MOV DPTR,#KEYTABLE MOVC A,A+DPTR MOV R2,AWAITRELEASE: MOV DPTR,#OUTBIT CLR A MOVX DPTR,A MOV R6,#10 CALL DELAY C

32、ALL TESTKEY JNZ WAITRELEASE MOV A,R2 RETSTART: MOV SP,#40H MOV LEDBUF+0,#0 MOV LEDBUF+1,#0 MOV LEDBUF+2,#0 MOV LEDBUF+3,#0 MOV LEDBUF+4,#0 MOV LEDBUF+5,#0MLOOP: CALL DISPLAYLED CALL TESTKEY JZ MLOOP CALL GETKEY ANL A,#0FH MOV DPTR,#LEDMAP MOVC A,A+DPTR MOV LEDBUF+5,A LJMP MLOOP END五、實(shí)驗(yàn)結(jié)果鍵盤按下一個(gè)鍵后,數(shù)碼管

33、就顯示相應(yīng)的鍵值。六、實(shí)驗(yàn)提高1、修改程序,使鍵值在數(shù)碼管上從右向左移動(dòng)顯示。檢測鍵盤,有鍵按下就獲取鍵值,將鍵值存在寄存器A中,調(diào)用上一個(gè)實(shí)驗(yàn)中的數(shù)碼管的程序。2、設(shè)計(jì)程序 ,每按一次鍵,數(shù)碼管顯示加1,實(shí)現(xiàn)099的自加。主程序:START:MOV SP,#40HMOV LEDBUF,#0MOVCOUNT,#0MLOOP: CALL DISPLAYLED CALL TESTKEY JZ MLOOP INCCOUNTMOVA,COUNT MOV DPTR,#LEDMAP MOVC A,A+DPTR MOV LEDBUF,ACALL DELAY LJMP MLOOPEND七、實(shí)驗(yàn)思考擴(kuò)展實(shí)驗(yàn)第二

34、個(gè),每檢測到一次按鍵并且計(jì)數(shù)加一顯示,要注意加一個(gè)延時(shí),在進(jìn)行下一次檢測和顯示,人手按鍵時(shí)間對于程序來說太慢,一次按鍵,可能計(jì)數(shù)很多次。硬件實(shí)驗(yàn)五 串行口實(shí)驗(yàn) 、串行數(shù)據(jù)轉(zhuǎn)換并行數(shù)據(jù)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、掌握MCS51/MCS96串行口方式0工作方式及編程方法;2、掌握用MCS51/MCS96的P1口的I/O功能,輸出串行數(shù)據(jù);3、掌握利用串行口入I/O口,擴(kuò)展I/O通道的方法。二、實(shí)驗(yàn)內(nèi)容利用單片機(jī)的串行口和I/O端口串行輸出,利用板上的74HC164串轉(zhuǎn)并電路,移位轉(zhuǎn)換成并行數(shù)據(jù),接在LED燈上顯示。三、實(shí)驗(yàn)步驟1、硬件連接連線連接孔1連接孔21L0164-Q02L1164-Q13L2164

35、-Q24L3164-Q35L4164-Q46L5164-Q57L6164-Q68L7164-Q79RXD(P3.0)164-AB11TXD(P3.1)164-CLK2、實(shí)驗(yàn)說明串行口工作在方式0時(shí),可通過外接移位寄存器實(shí)現(xiàn)串并行轉(zhuǎn)換。在這種方式下,數(shù)據(jù)為8位,只能從RXD端輸入輸出,TXD端總是輸出移位同步時(shí)鐘信號(hào),其波特率固定為Fosc/12。3、分析并執(zhí)行程序,觀察記錄結(jié)果。四、實(shí)驗(yàn)程序串口0方式:MOV SCON,#0MOV A,#0AAHMOV SBUF,AJNB T1,$CLR T1LJMP $ENDI/O口方式 DAT EQU P1.0 CLK EQU P1.1 MOV A,#55

36、H SETB CLK MOV R7,#8NEXT: RRC A MOV DAT,C CLR CLK SETB CLK DJNZ R7,NEXT LJMP $END 五、實(shí)驗(yàn)結(jié)果LED燈的L0,L2,L4,L6亮,L1,L3,L5,L7滅。六、實(shí)驗(yàn)提高將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù),驅(qū)動(dòng)八段LED顯示器,即利用串行口擴(kuò)展LED顯示器,畫出線路圖并說明工作過程。七、實(shí)驗(yàn)思考串口工作方式0是同步串口通訊。其特點(diǎn)是:在有效數(shù)據(jù)信息開始傳輸前需用同步字符來指示有效數(shù)據(jù)信息傳輸?shù)拈_始,其接收/發(fā)送的數(shù)據(jù)信息必須由時(shí)鐘信號(hào)來進(jìn)行嚴(yán)格的同步。 、 并行數(shù)據(jù)轉(zhuǎn)換串行數(shù)據(jù)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康恼莆詹⑿袛?shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)的方法

37、。二、實(shí)驗(yàn)內(nèi)容利用板上的74HC165并轉(zhuǎn)串電路,讀入外部的并行數(shù)據(jù),移位轉(zhuǎn)換成串行數(shù),利用單片機(jī)串行口和P1口串行讀入。三、實(shí)驗(yàn)步驟1、硬件連接連線連接孔1連接孔21K0165-P02K1165-P13K2165-P24K3165-P35K4165-P46K5165-P57K6165-P68K7165-P79P1.1165-Q710P1.2165-CLK11P1.0165-LOAD2、實(shí)驗(yàn)說明串行口工作在方式0時(shí),可通過外接移位寄存器實(shí)現(xiàn)串并行轉(zhuǎn)換。在這種方式下,數(shù)據(jù)為8位,只能從RXD端輸入輸出,TXD端總是輸出移位同步時(shí)鐘信號(hào),其波特率固定為晶振頻率Fosc/12。利用P1.0控制74H

38、C165護(hù)具輸入/鎖存。3、分析并執(zhí)行程序,觀察記錄結(jié)果。四、實(shí)驗(yàn)程序 LD EQU P1.0 CLR LD SETB LD MOV SCON,#00010000BWAIT: JNB RI,WAIT MOV A,SBUF CLR RI LJMP $ ENDI/O口方式 LD EQU P1.0 DAT EQU P1.1 CLK EQU P1.2 SETB CLK CLR LD SETB LD MOV R7,#8NEXT: RR A MOV C,DAT MOV ACC.7,C CLR CLK SETB CLK DJNZ R7,NEXT LJMP $ END五、實(shí)驗(yàn)結(jié)果通過改變開關(guān)的開閉情況使累加器

39、輸出此時(shí)的開關(guān)值。例如當(dāng)開關(guān)的輸入為10011001B時(shí),可以看到累加器A的值為1六、實(shí)驗(yàn)思考74HC165是8位并行輸入串行輸出移位寄存器,可在末級(jí)得到互斥的串行輸出(Q0和Q7),當(dāng)并行讀取(PL)輸入為低時(shí),從D0到D7口輸入的并行數(shù)據(jù)將被異步地讀取進(jìn)寄存器內(nèi)。而當(dāng)PL為高時(shí),數(shù)據(jù)將從DS輸入端串行進(jìn)入寄存器,在每個(gè)時(shí)鐘脈沖的上升沿向右移動(dòng)一位(Q0 Q1 Q2,等等)。利用這種特性,只要把Q7輸出綁定到下一級(jí)的DS輸入,即可實(shí)現(xiàn)并轉(zhuǎn)串?dāng)U展。硬件實(shí)驗(yàn)六 計(jì)數(shù)器/定時(shí)器實(shí)驗(yàn) 、計(jì)數(shù)器實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)單片機(jī)內(nèi)部定時(shí)/計(jì)數(shù)器使用方法。二、實(shí)驗(yàn)內(nèi)容MCS51內(nèi)部定時(shí)計(jì)數(shù)器T0,按計(jì)數(shù)器模式和

40、方式1工作,對P3.4(T0)引腳進(jìn)行計(jì)數(shù)。將其數(shù)值按二進(jìn)制數(shù)在P1口驅(qū)動(dòng)LED燈上顯示出來。三、實(shí)驗(yàn)步驟1、硬件連接連線連接孔1連接孔21P1.0L02P1.1L13P1.2L24P1.3L35單脈沖輸出P3.4(T0)2、實(shí)驗(yàn)說明本實(shí)驗(yàn)中內(nèi)部計(jì)數(shù)器起計(jì)數(shù)器的作用。外部事件計(jì)數(shù)脈沖由P3.4引入定時(shí)器T0。單片機(jī)在每個(gè)機(jī)器周期采樣一次輸入波形,因此單片機(jī)至少需要兩個(gè)機(jī)器周期才能檢測到一次跳變。這就要求被采樣電平至少維持一個(gè)完整的機(jī)器周期,以保證電平在變化之前即被采樣。同時(shí)這就決定了輸入波形的頻率不能超過機(jī)器周期頻率。3、分析并執(zhí)行程序,觀察記錄結(jié)果。四、實(shí)驗(yàn)程序MOV TMOD,#00000

41、101BMOV TH0,#0MOV TL0,#0SETB TR0LOOP:MOV P1,TL0LJMP LOOPEND五、實(shí)驗(yàn)結(jié)果根據(jù)脈沖輸入,從0開始,按一下脈沖輸入,計(jì)數(shù)加1,并在LED上反映出來。六、實(shí)驗(yàn)提高1、修改程序,連接八個(gè)LED燈用于計(jì)數(shù)顯示;在原有的連線基礎(chǔ)上將P1.4P1.7與L4L7連接2、修改程序,要求將計(jì)數(shù)器中的數(shù)值以十進(jìn)制的形式顯示。擴(kuò)展主程序:START:movtmod,#00000101bmovth0,#0movtl0,#0setbtr0movr0,#LEDBUFloop:movp1,tl0 MOV A,tl0 ;數(shù)碼管顯示開始 ANL A,#0FH MOV DP

42、TR,#LEDMAP MOVC A,A+DPTRmovr0,a CALL DISPLAYLED LJMP loop END使用了之前數(shù)碼管實(shí)驗(yàn)的程序八、實(shí)驗(yàn)思考 熟悉了單片機(jī)定時(shí)器的計(jì)數(shù)功能,學(xué)會(huì)配置寄存器TMOD,單片機(jī)定時(shí)器最常用的功能是定時(shí)功能,其工作在計(jì)數(shù)模式時(shí),其計(jì)數(shù)信號(hào)來自于外部事件提供給端口TX(x=0,1)上的負(fù)跳變脈沖。在每個(gè)機(jī)器周期采樣一次輸入波形,因此單片機(jī)至少需要兩個(gè)機(jī)器周期才能檢測到一次跳變。這就要求被采樣電平至少維持一個(gè)完整的機(jī)器周期,以保證電平在變化之前即被采樣。同時(shí)這就決定了輸入波形的頻率不能超過機(jī)器周期頻率。 、 定時(shí)器(秒脈沖發(fā)生器)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?、學(xué)習(xí)

43、單片機(jī)內(nèi)部計(jì)數(shù)器/定時(shí)器的使用和編程方法;2、進(jìn)一步掌握中斷處理程序的編程方法。二、實(shí)驗(yàn)內(nèi)容用CPU內(nèi)部定時(shí)器中斷方式計(jì)時(shí),實(shí)現(xiàn)每一秒鐘輸出狀態(tài)發(fā)生一次反轉(zhuǎn)。三、實(shí)驗(yàn)步驟1、硬件連接連線連接孔1連接孔21P1.0L02、實(shí)驗(yàn)說明1、 關(guān)于內(nèi)部計(jì)數(shù)器的編程主要是定時(shí)常數(shù)的設(shè)置和有關(guān)控制寄存器的設(shè)置。內(nèi)部計(jì)數(shù)器在單片機(jī)中主要有定時(shí)器和計(jì)數(shù)器兩個(gè)功能。本實(shí)驗(yàn)使用的是定時(shí)器。2、 定時(shí)器有關(guān)的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于設(shè)置定時(shí)器/計(jì)數(shù)器的工作方式0-3,并確定用于定時(shí)還是用于計(jì)數(shù)。TCON主要功能是為定時(shí)器在溢出時(shí)設(shè)定標(biāo)志位,并控制定時(shí)器的運(yùn)行或停止等。3、 內(nèi)部

44、計(jì)數(shù)器用作定時(shí)器時(shí),是對機(jī)器周期計(jì)數(shù)。每個(gè)機(jī)器周期的長度是12個(gè)振蕩器周期。因?yàn)閷?shí)驗(yàn)系統(tǒng)的晶振是6MHZ,本程序工作于方式2,即8位自動(dòng)重裝方式定時(shí)器, 定時(shí)器100us中斷一次, 所以定時(shí)常數(shù)的設(shè)置可按以下方法計(jì)算:機(jī)器周期=12÷6MHZ=2uS(256-定時(shí)常數(shù))×2uS=100us定時(shí)常數(shù)=206. 然后對100us中斷次數(shù)計(jì)數(shù)10000次,就是1秒鐘.4、 在例程的中斷服務(wù)程序中,因?yàn)橹袛喽〞r(shí)常數(shù)的設(shè)置對中斷程序的運(yùn)行起到關(guān)鍵作用,所以在置數(shù)前要先關(guān)對應(yīng)的中斷,置數(shù)完之后再打開相應(yīng)的中斷。3、分析并執(zhí)行程序,觀察記錄結(jié)果。四、實(shí)驗(yàn)程序TICKEQU 5000T10

45、0USEQU 256-100C100USEQU 30HLEDBUFEQU 0LEDEQU P1.0LJMPSTARTORG000BHTOINT:PUSHPSWMOV A,C100US+1JNZGOONDECC100USGOON:DECC100US+1MOV A,C100USORLA,C100US+1JNZEXITMOVC100US,#HIGH(TICK)MOVC100US+1,#LOW(TICK)CPLLEDBUFEXIT:POPPSWRETISTART:MOVTMOD,#01HMOVTH0,#T100USMOVTL0,#T100USMOVIE,#10000010BSETBTR0CLRLEDBUFCLRLED

溫馨提示

  • 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)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論