欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      2013單片機(jī)實(shí)驗(yàn)教案

      時(shí)間:2019-05-13 21:50:04下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《2013單片機(jī)實(shí)驗(yàn)教案》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《2013單片機(jī)實(shí)驗(yàn)教案》。

      第一篇:2013單片機(jī)實(shí)驗(yàn)教案

      單片機(jī)技術(shù)實(shí)驗(yàn)

      杰 實(shí)驗(yàn)一(1)順序結(jié)構(gòu)程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?/p>

      掌握匯編語(yǔ)言設(shè)計(jì)和調(diào)試方法。

      二、實(shí)驗(yàn)內(nèi)容

      把外部RAM中2000h單元的內(nèi)容拆開,高位送2001h單元,低位送2002h單元,2001h、2002h高位清零,一般本程序用于把數(shù)據(jù)送顯示緩沖區(qū)時(shí)用。

      三、程序流程

      四、實(shí)驗(yàn)步驟

      1、LED環(huán)境

      ⑴在“P.”狀態(tài)下按“0→EV/UN”,裝載實(shí)驗(yàn)所需的代碼程序。

      ⑵在“P.”狀態(tài)下鍵入0000,然后按“STEP”或“EXEC”進(jìn)入實(shí)驗(yàn)項(xiàng)目的調(diào)試與運(yùn)行。

      2、PC環(huán)境

      在與PC聯(lián)機(jī)狀態(tài)下,編譯、連接、下載PH51se02.asm,用連續(xù)或單步方式運(yùn)行程序。

      3、運(yùn)行結(jié)果檢查

      ⑴在單步運(yùn)行時(shí)每走一步可觀察其運(yùn)行結(jié)果。

      ⑵在連續(xù)運(yùn)行狀態(tài)下,應(yīng)按“暫停圖標(biāo)”或?qū)嶒?yàn)箱上的“暫停按鈕”,使系統(tǒng)無條件退出用戶運(yùn)行狀態(tài)返回監(jiān)控,然后再用相應(yīng)的命令鍵觀察與檢查2000~2002h中內(nèi)容變化情況。

      五、思考

      如何用斷點(diǎn)方式調(diào)試本程序。

      ORG 0000H LJMP START

      ORG 0030H START: MOV DPTR,#2000H

      MOVX A,@DPTR ANL A,#0F0H SWAP A MOV DPTR,#2001H MOVX @DPTR,A

      MOV DPTR ,#2000H MOVX A,@DPTR ANL A,0FH MOV DPTR,#2002H MOVX @DPTR,A SJMP $ END 實(shí)驗(yàn)一(2)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?/p>

      熟悉MCS-51指令系統(tǒng),掌握程序設(shè)計(jì)方法。

      二、實(shí)驗(yàn)內(nèi)容

      編寫并調(diào)試一個(gè)排序子程序,其功能為用冒泡法將內(nèi)容RAM中幾個(gè)單元字節(jié)無符號(hào)的正整數(shù),按從小到大的次序重新排列。

      三、程序框圖

      四、實(shí)驗(yàn)步驟

      1、LED環(huán)境

      ⑴在“P.”狀態(tài)下按“0→EV/UN”,裝載實(shí)驗(yàn)所需的代碼程序。

      ⑵對(duì)片內(nèi)RAM地址50h~5AH進(jìn)行不規(guī)則置數(shù)。

      ⑶在“P.”狀態(tài)下鍵入0000,然后按“STEP”或“EXEC”進(jìn)入實(shí)驗(yàn)項(xiàng)目的調(diào)試與運(yùn)行。

      2、PC環(huán)境

      在與PC聯(lián)機(jī)狀態(tài)下,編譯、連接、下載PH51se05.asm,用連續(xù)或單步方式運(yùn)行程序。

      3、運(yùn)行結(jié)果檢查

      ⑴在單步運(yùn)行時(shí)每走一步可觀察其運(yùn)行結(jié)果。

      ⑵在連續(xù)運(yùn)行狀態(tài)下,應(yīng)按“暫停圖標(biāo)”或?qū)嶒?yàn)箱上的“暫停按鈕”,使系統(tǒng)無條件退出用戶運(yùn)行狀態(tài)返回監(jiān)控,然后再用相應(yīng)的命令鍵觀察與檢查片內(nèi)50~5Ah中內(nèi)容是否按從 小到大排列。

      五、思考:修改程序把50~5Ah中內(nèi)容按從小到大排列。

      ORG 0000H LJMP START ORG 0030H MOV R7,#09H MOV R6,#00H;清除標(biāo)志 CLR C MOV A,@R0 INC R0 SUBB A,@R0 JC LOOP1 MOV R6,#01H DEC R0 MOV A,@R0 INC R0 XCH A,@R0 MOV @R0,A DJNZ R7,START1 CJNE R6,#00H,START SJMP $ END START:

      MOV R0,#50H START1:

      DEC R0

      INC R0 LOOP1:

      實(shí)驗(yàn)一(3)選擇結(jié)構(gòu)程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?/p>

      掌握匯編語(yǔ)言的編程。

      二、實(shí)驗(yàn)內(nèi)容

      編寫程序,根據(jù)送入的數(shù)據(jù)轉(zhuǎn)移運(yùn)行。

      三、程序框圖

      四、實(shí)驗(yàn)步驟

      1、LED環(huán)境

      ⑴在“P.”狀態(tài)下按“0→EV/UN”,裝載實(shí)驗(yàn)所需的代碼程序。⑵在20H中分次送入00、01、02、03。

      ⑶在“P.”狀態(tài)下鍵入0A10,然后按“STEP”或“EXEC”進(jìn)入實(shí)驗(yàn)項(xiàng)目的調(diào)試與運(yùn)行。

      2、PC環(huán)境

      在與PC聯(lián)機(jī)狀態(tài)下,編譯、連接、下載PH51se08.asm,用連續(xù)或單步方式運(yùn)行程序。

      3、運(yùn)行結(jié)果檢查

      (1)在單步運(yùn)行時(shí)每走一步可觀察其運(yùn)行結(jié)果。

      (2)在連續(xù)運(yùn)行狀態(tài)下,應(yīng)按“暫停圖標(biāo)”或?qū)嶒?yàn)箱上的“暫停按鈕”,使系統(tǒng)無條件退出用戶運(yùn)行狀態(tài)返回監(jiān)控,然后觀察每次運(yùn)行程序后,數(shù)碼管上數(shù)字循環(huán)情況。

      ORG 0000H

      LJMP START

      ORG 0030H START: MOV 20H,#00H MOV A,20H MOV B,#03H

      MUL AB

      MOV DPTR,#TAB

      JMP @A+DPTR

      SJMP $ ORG 3000H TAB:

      LJMP LOOPA

      LJMP LOOPB

      LJMP LOOPC

      LOOPA: MOV A,#01H LOOPA1: MOV P1,A

      LCALL DELAY1S

      RL A

      LJMP LOOPA1

      LOOPB: MOV A,#03H LOOPB1: MOV P1,A

      LCALL DELAY1S

      RL A

      LJMP LOOPB1

      LOOPC: MOV A,#05H LOOPC1: MOV P1,A

      LCALL DELAY1S

      RL A

      LJMP LOOPC1

      DELAY1S: DELAY1S3: DELAY1S2: DELAY1S1:

      MOV R7,#10 MOV R6,#200 MOV R5,#250 DJNZ R5,DELAY1S1 DJNZ R6,DELAY1S2 DJNZ R7,DELAY1S3 RET END

      實(shí)驗(yàn)二 中斷實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      熟悉單片機(jī)中斷概念及中斷編程方法。

      二、實(shí)驗(yàn)內(nèi)容

      編寫程序,從P3.3輸入脈沖,記錄輸入脈沖個(gè)數(shù),并用P1口外部鏈接的發(fā)光二極管顯示技術(shù)結(jié)果。

      二、參考程序

      ORG 0000H

      LJMP START

      ORG 0013H

      LJMP INT1_COUNT

      ORG 0030H START:

      MOV SP,#60H

      MOV A,#00H

      SETB IT1;下降邊沿觸發(fā)方式

      SETB EX1;開啟INT1中斷

      SETB EA

      SJMP $ INT1_COUNT:

      INC A

      MOV P1,A

      RETI

      END

      實(shí)驗(yàn)三 LED顯示實(shí)驗(yàn)

      一、實(shí)驗(yàn)要求

      利用實(shí)驗(yàn)系統(tǒng)提供的顯示設(shè)備,動(dòng)態(tài)顯示一行數(shù)據(jù)。

      二、實(shí)驗(yàn)?zāi)康?/p>

      ⑴了解數(shù)碼管動(dòng)態(tài)顯示的原理; ⑵了解用總線方式控制數(shù)碼管顯示。

      三、實(shí)驗(yàn)說明

      本實(shí)驗(yàn)系統(tǒng)提供了8位七段碼LED顯示電路,學(xué)生只要按地址輸出相應(yīng)數(shù)據(jù),就可以實(shí)現(xiàn)對(duì)顯示器的控制。

      四、程序框圖

      ORG 0000H LJMP START ORG 0030H START: MOV SP,#60H MOV 50H,#8CH;顯示字符P.MOV 51H,#40H MOV 52H,#79H MOV 53H,#24H MOV 54H,#30H MOV 55H,#19H MOV 56H,#12H MOV 57H,#02H

      LOOP1: LCALL DISPLAY

      LJMP LOOP1

      DISPLAY: MOV P2,#0FH MOV P0,50H LCALL DELAY20MS

      MOV P2,#1FH MOV P0,51H LCALL DELAY20MS

      MOV P2,#2FH MOV P0,52H LCALL DELAY20MS MOV P2,#3FH MOV P0,53H LCALL DELAY20MS

      MOV P2,#4FH MOV P0,54H LCALL DELAY20MS

      MOV P2,#5FH MOV P0,55H LCALL DELAY20MS

      MOV P2,#6FH MOV P0,56H LCALL DELAY20MS

      MOV P2,#7FH MOV P0,57H LCALL DELAY20MS

      LJMP DISPLAY

      DELAY20MS: MOV R7,#20 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET

      TAB: DB 40H,79H,24H,30H,19H,12H,02H;0 1 2 3 4 5 6 DB 78H,00H,10H,08H,03H,46H,21H,06H,0EH;7 8 9 A B C D E F的字符碼

      TAB1: DB 8CH;P.TAB2: DB 7FH;END 的字符碼的字符碼

      空,不顯示的字符

      鍵盤電路實(shí)驗(yàn)

      電路圖:

      程序:

      ;用int1中斷實(shí)現(xiàn)按鍵功能,鍵值存放在4fh單元中;通過P1口輸出按鍵值,用發(fā)光二極管顯示按鍵值;通過P2.4--P2.6和三八譯碼器輸出八列按鍵掃描碼;通過P2.0---P2.3讀入按鍵的行值;行列值組合,就是按鍵的鍵值 ORG 0000H LJMP START ORG 0013H LJMP key_value ORG 0030H START: MOV 4fH,#00h;存放按鍵鍵值單元 MOV P1,#00H MOV P2,#0FFH setb ex1 setb it1 setb ea KEY_SCAN: MOV P2,#0FH LCALL DELAY5MS

      MOV P2,#1FH LCALL DELAY5MS

      MOV P2,#2FH LCALL DELAY5MS

      MOV P2,#3FH LCALL DELAY5MS

      MOV P2,#4FH LCALL DELAY5MS

      MOV P2,#5FH LCALL DELAY5MS

      MOV P2,#6FH LCALL DELAY5MS

      MOV P2,#7FH LCALL DELAY5MS

      LJMP KEY_SCAN

      DELAY5MS: MOV R7,#40 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET

      KEY_VALUE: PUSH ACC PUSH PSW MOV A,P2 MOV 4FH,A MOV P1,A POP PSW POP ACC RETI END

      LED和鍵盤綜合實(shí)驗(yàn)

      電路圖:

      參考程序:

      ORG 0000H LJMP START ORG 0013H LJMP KEY_VALUE ORG 0030H START: MOV SP,#60H

      MOV 4fH,#00h;存放按鍵鍵值單元 MOV P2,#0FFH setb ex1 setb it1 setb ea

      MOV 50H,#0CH;顯示字符P.MOV 51H,#0CH MOV 52H,#7FH MOV 53H,#7FH MOV 54H,#7FH MOV 55H,#7FH MOV 56H,#7FH MOV 57H,#0CH

      LOOP1: LCALL DISPLAY

      LJMP LOOP1

      DISPLAY: MOV P2,#0FH MOV P0,50H LCALL DELAY20MS

      MOV P2,#1FH MOV P0,51H LCALL DELAY20MS

      MOV P2,#2FH MOV P0,52H LCALL DELAY20MS

      MOV P2,#3FH MOV P0,53H LCALL DELAY20MS

      MOV P2,#4FH MOV P0,54H LCALL DELAY20MS

      MOV P2,#5FH MOV P0,55H LCALL DELAY20MS

      MOV P2,#6FH MOV P0,56H LCALL DELAY20MS

      MOV P2,#7FH MOV P0,57H LCALL DELAY20MS

      LJMP DISPLAY

      DELAY20MS: MOV R7,#20 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET

      KEY_VALUE: PUSH ACC PUSH PSW MOV 4FH,P2 LCALL KEY_VALUE_DISP POP PSW POP ACC RETI

      KEY_VALUE_DISP: MOV A,4FH ANL A,#0F0H SWAP A MOV DPTR,#TAB MOVC A,@A+DPTR MOV 56H,A MOV A,4FH ANL A,#0FH MOVC A,@A+DPTR MOV 57H,A RET

      TAB: DB 40H,79H,24H,30H,19H,12H,02H;0 1 2 3 4 5 6的字符碼 DB 78H,00H,10H,08H,03H,46H,21H,06H,0EH;7 8 9 A B C D E F的字符碼

      TAB1: DB 8CH;P.的字符碼

      TAB2: DB 7FH;空,不顯示的字符 END

      實(shí)驗(yàn)四 A/D轉(zhuǎn)換實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      (1)掌握A/D轉(zhuǎn)換與單片機(jī)接口的方法;(2)了解A/D芯片0809轉(zhuǎn)換性能及編程方法;(3)通過實(shí)驗(yàn)了解單片機(jī)如何進(jìn)行數(shù)據(jù)采集。

      二、實(shí)驗(yàn)內(nèi)容

      利用實(shí)驗(yàn)系統(tǒng)上的0809做A/D轉(zhuǎn)換器,實(shí)驗(yàn)系統(tǒng)上的電位器提供模擬量輸入,編制程序,將模擬量轉(zhuǎn)換成數(shù)字,通過數(shù)碼管顯示出來。

      三、程序框圖

      四、實(shí)驗(yàn)電路

      五、實(shí)驗(yàn)步驟

      把0809的零通道INT0用插針接至AINl孔,0809CS位FFE0孔,運(yùn)行程序,數(shù)碼管顯示0809.XX,后二位顯示當(dāng)前采集的電壓轉(zhuǎn)換的數(shù)字量,調(diào)節(jié)W1,該二位將隨著電壓變化而相應(yīng)變化。

      六、思考

      修改程序,用其它通道輪流采樣顯示。

      實(shí)驗(yàn)五 電腦時(shí)鐘(定時(shí)器、中斷綜合實(shí)驗(yàn))

      一、實(shí)驗(yàn)?zāi)康?/p>

      熟悉MCS-51定時(shí)器,串行口和中斷初始化編程方法,了解定時(shí)器的應(yīng)用實(shí)時(shí)程序的設(shè)計(jì)與調(diào)試技巧。

      二、實(shí)驗(yàn)內(nèi)容

      編寫程序,從本實(shí)驗(yàn)系統(tǒng)鍵盤上輸入時(shí)間初值,用定時(shí)器產(chǎn)生0.1S定時(shí)中斷,對(duì)時(shí)鐘計(jì)數(shù)器計(jì)數(shù),并將數(shù)值實(shí)時(shí)地送數(shù)碼管顯示。

      三、程序框圖

      四、實(shí)驗(yàn)步驟

      連續(xù)運(yùn)行程序,在鍵盤上輸入時(shí)間初值,按執(zhí)行鍵EXEC執(zhí)行,數(shù)碼管上實(shí)時(shí)顯示時(shí)間值。

      五、思考

      (1)電子鐘走時(shí)精度和程序中那些常數(shù)有關(guān)?

      (2)修改程序使定時(shí)器工作方式改變,調(diào)節(jié)有關(guān)參數(shù),進(jìn)一步提高精度。

      六、參考程序

      ORG 0000H LJMP START ORG 000BH LJMP T0_INT ORG 0030H START: MOV 50H,#00H;時(shí)的低位字符碼 MOV 51H,#00H;時(shí)的高位字符碼 MOV 52H,#00H;“-”的字符碼 MOV 53H,#00H;分的低位字符碼 MOV 54H,#00H;分的高位字符碼 MOV 55H,#00H;“-”的字符碼 MOV 56H,#00H;秒的低位字符碼 MOV 57H,#00H;秒的高位字符碼 MOV 5FH,#00H;存放小時(shí)的單元 MOV 5EH,#00H;存放分鐘的單元 MOV 5DH,#00H;存放秒的單元 MOV 5CH,#00H;存放T0中斷次數(shù),50次為1秒

      MOV SP,#60H;設(shè)置堆棧棧頂 MOV TH0,#???;設(shè)置T0定時(shí)器初值 MOV TL0,#??? MOV TMOD,#00000001H;T0工作在定時(shí)方式,工作方式0

      SETB ET0;開放T0中斷 SETB EA;開放總中斷 SETB TR0;啟動(dòng)定時(shí)器T0 LOOP: mov P2,#11111110H MOV R0,#50H loop1: MOV R7,#08H LOOP2: MOV A,@R0 MOV P1,A LCALL DELAY INC R0 MOV A,P2 RL A

      MOV P2,A DJNZ R7, LOOP2 LJMP LOOP SJMP $

      DELAY: MOV R6,#2;延時(shí)程序 DELAY1: MOV R5,#10 DELAY2: MOV R4,#100 DELAY3: DJNZ R4,DELAY3 DJNZ R5,DELAY2 DJNZ R6,DELAY1 RET 16 T0_INT: CLR TR0 PUSH ACC MOV A,5CH CJNE A,#50H,T0_INT1 MOV 5CH,#00H MOV A,5DH CJNE A,#59H,T0_INT2 MOV 5DH,#00H MOV A,5EH CJNE A,#59H,T0_INT3 MOV 5EH,#00H MOV A,5FH CJNE A,#23H,T0_INT4 MOV 5FH,#00H LJMP T0_END T0_INT1: INC 5CH LJMP T0_END T0_INT2: INC 5DH LJMP T0_END T0_INT3: INC 5EH LJMP T0_END T0_INT4: INC 5FH T0_END: MOV A,5FH

      MOV B,#10 DIV AB MOV 51H,A MOV A,B MOV 50H,A MOV A,5EH MOV B,#10 DIV AB MOV 54H,A MOV A,B MOV 53H,A MOV A,5DH MOV B,#10 DIV AB MOV 57H,A MOV A,B MOV 56H,A POP ACC

      MOV TH0,#??? MOV TL0,#??? SETB TR0 RETI

      實(shí)驗(yàn)六 LCD液晶顯示屏實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      ⑴掌握單片機(jī)擴(kuò)展液晶顯示接口的設(shè)計(jì)與編程。⑵利用字符式液晶顯示器顯示字符。

      二、實(shí)驗(yàn)內(nèi)容

      編制程序,在液晶顯示器上顯示:

      學(xué)生所在的院系的漢語(yǔ)拼音字母和學(xué)生的名字。分兩行顯示。

      三、實(shí)驗(yàn)電路

      四、參考程序

      DAT1 DAT2 EQU EQU 30H;第一參數(shù)單元 31H;第二參數(shù)單元 32H;指令代碼單元 0100H;指令通道地址 0000H;數(shù)據(jù)通道地址 COM EQU C_ADD EQU D_ADD EQU

      org 0000h ljmp main org 0030h;主程序

      MAIN: MOV SP,#60H;

      lcall delay;上電延時(shí)

      LCALL INT;初始化

      LCALL CLEAR;清緩沖區(qū) TEST: LCALL hgnu_disp;顯示“WELCOM TO HGNU” LCALL PL_XW_ZKB;顯示 “P_L :”

      “X_W :”

      “ZKB:” sjmp test

      ;上電延時(shí)子程序 delay: MOV R6,#50H;MOV R7,#00H;DELY1: NOP DJNZ R7,DELY1;上電延時(shí)

      DJNZ R6,DELY1;ret;讀狀態(tài)字子程序

      R_ST: MOV DPTR,#C_ADD;設(shè)置指令通道 MOVX A,@DPTR;RET;判斷狀態(tài)位STA1,STA0子程序(讀寫指令和數(shù)據(jù)),在指令的讀,寫

      ;數(shù)據(jù)之前這兩個(gè)標(biāo)志必須同時(shí)為“1” ST01: LCALL R_ST;JNB ACC.0,ST01;JNB ACC.1,ST01;RET;判斷狀位STA2子程序(數(shù)據(jù)自動(dòng)讀狀態(tài)),該位

      ;在數(shù)據(jù)自動(dòng)操作過程中取代STA0和STA1有效。在連續(xù)讀過程中每讀一次;之前都要確認(rèn)STA2=1 ST2: LCALL R_ST;JNB ACC.2,ST2;RET;判斷STA3子程序(數(shù)據(jù)自動(dòng)寫狀態(tài))ST3: LCALL R_ST;JNB ACC.3,ST3;RET;判斷狀態(tài)位STA6子程序(屏讀/屏拷貝狀態(tài))ST6: LCALL R_ST;JB ACC.6,ERR;RET ERR: LJMP ST6;;出錯(cuò)處理

      ;寫指令和寫數(shù)據(jù)子程序..;雙字節(jié)參數(shù)指令寫入入口

      PR1: LCALL ST01;判斷狀態(tài)位STA1,STA0 MOV A,DAT1;取第一參數(shù)單元數(shù)據(jù)

      LCALL PR13;寫入?yún)?shù);單字節(jié)參數(shù)指令寫入入口

      PR11: LCALL ST01;判斷狀態(tài)位STA1,STA0 MOV A,DAT2;取第二參數(shù)單元數(shù)據(jù) LCALL PR13;寫入?yún)?shù)

      ;無參數(shù)指令寫入入口

      PR12: LCALL ST01;無參數(shù)指令寫入入口

      MOV A,COM;取指令代碼單元數(shù)據(jù)

      MOV DPTR,#c_ADD;設(shè)置指令通道地址/數(shù)據(jù)寫入入口

      LJMP PR14;寫入指令代碼

      PR13: MOV DPTR,#D_ADD;設(shè)置數(shù)據(jù)通道地址/數(shù)據(jù)寫入入口 PR14: MOVX @DPTR,A;寫入操作 RET;讀數(shù)據(jù)子程序 PR2: LCALL ST01;判斷狀態(tài)位

      MOV DPTR,#D_ADD;設(shè)置數(shù)據(jù)通道地址

      MOVX A,@DPTR;讀數(shù)據(jù)操作 MOV DAT2,A;數(shù)據(jù)存入第二參數(shù)/數(shù)據(jù)單元

      RET;初始化子程序

      INT:

      ;顯示區(qū)域設(shè)置

      MOV DAT1,#00H;設(shè)置文本顯示區(qū)首地址

      MOV DAT2,#00h;MOV COM,#40H;LCALL PR1;雙字節(jié)參數(shù)指令寫入入口

      MOV DAT1,#16;設(shè)置文本顯示區(qū)域?qū)挾?/p>

      MOV DAT2,#00H;即一行顯示所占字節(jié)數(shù)

      MOV COM,#41H;LCALL PR1;雙字節(jié)參數(shù)指令寫入入口

      MOV DAT1,#00H;設(shè)置顯示區(qū)域首地址

      MOV DAT2,#00H;或文本屬性區(qū)域首地址

      MOV COM,#42H;LCALL PR1;雙字節(jié)參數(shù)指令寫入入口

      MOV DAT1,#10H;設(shè)置圖形顯示區(qū)域?qū)挾?/p>

      MOV DAT2,#00H;或?yàn)槲谋緦傩詤^(qū)域狂寬度

      MOV COM,#43H;即一行顯示所占字節(jié)數(shù)

      LCALL PR1;雙字節(jié)參數(shù)指令寫入入口

      ;顯示光標(biāo)設(shè)置

      MOV COM,#0A1H;光標(biāo)形狀設(shè)置

      LCALL PR12;

      ;設(shè)置光標(biāo)初始位置,是字符行和字符列,第0行第15列

      MOV DAT1,#0;光標(biāo)行位置

      MOV DAT2,#0;光標(biāo)列位置

      MOV COM,#21H;LCALL PR1;雙字節(jié)參數(shù)指令寫入入口

      ;顯示方式設(shè)置,使用內(nèi)部字符發(fā)生器

      MOV COM,#80H;顯示方式設(shè)置,邏輯“或”合成 LCALL PR12;無參數(shù)指令寫入入口+

      MOV COM,#97H;僅用文本顯示

      LCALL PR12;無參數(shù)指令寫入入口

      ;顯示開關(guān)方式

      RET

      ;寫數(shù)據(jù)子程序,8*8點(diǎn)陣

      ;R6中裝入顯示位置的列數(shù)(字符的個(gè)數(shù)),每行16個(gè)字符,R7中裝入顯示位置距左上角的字符行數(shù)

      ;5FH單元中裝入待顯示的字符碼 DISP: mov b,r7

      mov a,#16 mul ab mov r7,a CLR C mov a,R6

      ADD A,R7 MOV R6,A;R7*16+R6

      MOV DAT1,R6;設(shè)置顯示RAM首地址,水平方向字符數(shù)

      MOV DAT2,#00H;固定送00H MOV COM,#24H;地址指針指令

      LCALL PR1;MOV

      dat2,5fH;取要顯示的字符

      MOV COM,#0c4H;數(shù)據(jù)寫,地址不變 LCALL PR11;寫入數(shù)據(jù)

      RET;清顯示緩沖區(qū)(16*8單元)clear: MOV 5FH,#00H

      MOV R5,#0 CLEAR0: MOV R4,#0 CLEAR1: MOV A,R5

      MOV R7,A MOV A,R4 MOV R6,A CLEAR2: LCALL DISP

      INC R4 CJNE R4,#16,CLEAR1

      mov r4,#00h

      INC R5

      CJNE R5,#8,CLEAR0 CLEAR9: RET;顯示頻率、相位、占空比、相位差等字符。(P_L :;PL_XW_ZKB:MOV R7,#3 MOV R6,#0 MOV

      5fh,#30H;“P” LCALL DISP MOV R7,#3 MOV R6,#1 MOV

      5fh,#3FH;“_” LCALL DISP MOV R7,#3 MOV R6,#2 MOV

      5fh,#2CH;“L”

      X_W :

      ZKB:)

      LCALL DISP MOV R7,#3 MOV R6,#3 MOV

      5fh,#1AH;“: ” LCALL DISP MOV R6,#0 MOV

      5fh,#38H;“X” LCALL DISP MOV R7,#5 MOV R6,#1 MOV

      5fh,#3FH;“_” LCALL DISP MOV R7,#5 MOV R6,#2 MOV

      5fh,#37H;“W” LCALL DISP MOV R7,#5 MOV R6,#3 MOV

      5fh,#1AH;“: ” LCALL DISP

      MOV R7,#5

      MOV R7,#7 MOV R6,#0 MOV

      5fh,#3AH;“Z” LCALL DISP

      MOV R7,#7 MOV R6,#1 MOV

      5fh,#2BH;“K” LCALL DISP MOV R7,#7 MOV R6,#2 MOV

      5fh,#22H;“B ” LCALL DISP MOV R7,#7 MOV R6,#3 MOV

      5fh,#1AH;“: ” LCALL DISP RET;頂行顯示“黃岡師院物科院“的英文名稱。;”welcome to hgnu!“ hgnu_DISP:

      MOV R7,#0;顯示位置的行列數(shù)

      MOV R6,#0 MOV

      5fh,#37H;”W“ LCALL DISP MOV R7,#0 MOV R6,#1 MOV

      5fh,#25H;”E“ LCALL DISP MOV R7,#0 MOV R6,#2 MOV

      5fh,#2CH;”L“ LCALL DISP MOV R7,#0 MOV R6,#3 MOV

      5fh,#23H;”C“ LCALL DISP MOV R7,#0 MOV R6,#4 MOV

      5fh,#2FH;”0“ LCALL DISP MOV R7,#0 MOV R6,#5 MOV

      5fh,#2DH;”M“ LCALL DISP MOV R7,#0 MOV R6,#6 MOV

      5fh,#25H;”E“ LCALL DISP MOV R7,#0 MOV R6,#7 MOV

      5fh,#00H;” “ LCALL DISP MOV R7,#0 MOV R6,#8 MOV

      5fh,#34H;”T“ LCALL DISP MOV R7,#0 MOV R6,#9 MOV

      5fh,#2FH;”O(jiān)“ LCALL DISP MOV R7,#0 MOV R6,#10 MOV

      5fh,#00H;” “ LCALL DISP MOV R7,#0 MOV R6,#11 MOV

      5fh,#28H;”H“ LCALL DISP

      MOV R7,#0 MOV R6,#12 MOV

      5fh,#27H;”G“ LCALL DISP MOV R7,#0 MOV R6,#13 MOV

      5fh,#2EH;”N“ LCALL DISP MOV R7,#0 MOV R6,#14 MOV

      5fh,#35H;”U“ LCALL DISP RET tab: db 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h;”0-----9“

      db 21h,22h,23h,24h,25h,26h;”A-----F" end

      實(shí)驗(yàn)七 直流電機(jī)轉(zhuǎn)速測(cè)量與控制實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.掌握直流電機(jī)的驅(qū)動(dòng)原理。2.了解直流電機(jī)調(diào)速的方法。

      二、實(shí)驗(yàn)內(nèi)容

      1.用0832 D/A轉(zhuǎn)換電路后的輸出經(jīng)放大后驅(qū)動(dòng)直流電機(jī)。

      2.編制程序改變0832輸出經(jīng)放大后的方波信號(hào)的占空比來控制電機(jī)轉(zhuǎn)速。本實(shí)驗(yàn)中 D/A輸出為雙極性輸出,因此電機(jī)可以正反向旋轉(zhuǎn)。

      三、程序流程

      三、實(shí)驗(yàn)電路

      五、參考程序

      DATA_TH0 EQU 00H DATA_TL0 EQU 00H;信號(hào)周期為130ms DATA_TH1 EQU 20H DATA_TL1 EQU 00H;高電平時(shí)間65ms ORG 0000H LJMP MAIN ORG 0003H LJMP INT_0;啟動(dòng)電機(jī)按鍵

      ORG 000BH LJMP T_0;T0確定輸出信號(hào)的周期(或者頻率)ORG 0013H LJMP INT_1;電機(jī)轉(zhuǎn)動(dòng)方向控制按鍵 ORG 001BH LJMP T_1;T1確定輸出信號(hào)高電平的時(shí)間期

      ORG 0030H MAIN: MOV SP,#60H

      CLR P1.0 CLR P1.1;關(guān)閉電機(jī)

      setb 20h.0;初始化電機(jī)正轉(zhuǎn)

      clr 20h.1;初始狀態(tài)時(shí),電機(jī)停止轉(zhuǎn)動(dòng) MOV TMOD,#11H SETB IT0 SETB EX0 SETB IT1 SETB EX1 SETB ET0 SETB ET1 SETB EA

      SJMP $

      T_0: JNB 20H.1,T_01;

      MOV TH1,#DATA_TH1

      MOV TL1,#DATA_TL1 SETB TR1

      MOV TH0,#DATA_TH0 MOV TL0,#DATA_TL0 SETB TR0 JNB 20H.0,T_02 setb P1.0 clr P1.1 LJMP T_05 T_02: clr P1.0 setb P1.1 LJMP T_05 T_01: CLR P1.0

      CLR P1.1 CLR TR0 CLR TR1 RETI CLR TR1 T_05: T_1: clr p1.0 clr p1.1 RETI int_1: CPL 20H.1;電機(jī)啟動(dòng)標(biāo)志求反,開啟電機(jī)或者關(guān)閉電機(jī)

      JNB 20H.1,INT_11;啟動(dòng)標(biāo)志不為1,則停止電機(jī),關(guān)閉定時(shí)器

      MOV TH1,#DATA_TH1;啟動(dòng)標(biāo)志為1,則開啟定時(shí)器1和定時(shí)器2,輸出PWM波

      MOV TL1,#DATA_TL1 SETB TR1

      MOV TH0,#DATA_TH0

      MOV TL0,#DATA_TL0 SETB TR0 JNB 20H.0,INT_12;轉(zhuǎn)動(dòng)方向標(biāo)志不為1,則反轉(zhuǎn),否則正轉(zhuǎn) setb P1.0 clr P1.1 LJMP INT_19 setb P1.1 LJMP INT_19 INT_12: clr P1.0 INT_11: CLR P1.0 CLR P1.1 CLR TR0 CLR TR1 INT_19: RETI 26

      INT_0: CPL 20H.0 RETI END

      實(shí)驗(yàn)八 步進(jìn)電機(jī)控制實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.了解步進(jìn)電機(jī)控制的基本原理。2.掌握步進(jìn)電機(jī)轉(zhuǎn)動(dòng)編程方法。

      二、實(shí)驗(yàn)內(nèi)容

      從鍵盤上輸入正、反轉(zhuǎn)命令,轉(zhuǎn)速參數(shù)和轉(zhuǎn)動(dòng)步數(shù)顯示在顯示器上,CPU再讀取顯示器上顯示的正、反轉(zhuǎn)命令,轉(zhuǎn)速級(jí)數(shù)(16級(jí))和轉(zhuǎn)動(dòng)步數(shù)后執(zhí)行。轉(zhuǎn)動(dòng)步數(shù)減為零時(shí)停止轉(zhuǎn)動(dòng)。

      三、實(shí)驗(yàn)電路圖

      四、參考程序

      ORG 0000H

      ljmp main ORG 000BH LJMP COUNT0 ORG 001BH LJMP COUNT1 ORG 0100H MAIN: MOV P0,#0FFH;輸送脈沖口,SETB P1.2;MOV R0,#1;延時(shí)變化變量 LOOP1: MOV P0,#0FCH LCALL DELAY MOV P0,#0F6H LCALL DELAY MOV P0,#0F3H LCALL DELAY MOV P0,#0F9H LCALL DELAY JNB P1.2,LOOP2 MOV TMOD,#01010101B MOV TH0,#0FFH MOV TL0,#0FFH MOV TH1,#0FFH MOV TL1,#0FFH SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A JMP LOOP1 LOOP2: MOV P0,#0FCH LCALL DELAY MOV P0,#0F9H LCALL DELAY MOV P0,#0F3H LCALL DELAY MOV P0,#0F6H LCALL DELAY JB P1.2,LOOP1 MOV TMOD,#01010101B MOV TH0,#0FFH MOV TL0,#0FFH MOV TH1,#0FFH MOV TL1,#0FFH 28 SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A JMP LOOP2 SJMP $ COUNT0: MOV TH0,#0FFH;減速中斷 MOV TL0,#0FFH CJNE R0,#9,L4 JMP L5 L4: INC R0

      L5: setb TR0 RETI COUNT1: MOV TH1,#0FFH;加速中斷 MOV TL1,#0FFH CJNE R0,#1,L6 JMP L7 L6: DEC R0 L7: setb TR1 RETI DELAY: MOV A,R0;延時(shí) MOV R1,A L1: MOV R2,#50 L2: MOV R3,#250 L3: DJNZ R3,L3 DJNZ R2,L2 DJNZ R1,L1 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;顯示程序查表,共陰 END

      第二篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)教案

      實(shí)驗(yàn)一

      數(shù)據(jù)傳送

      一、實(shí)驗(yàn)?zāi)康?/p>

      1、熟悉單片機(jī)指令系統(tǒng),掌握單片機(jī)循環(huán)程序設(shè)計(jì)方法

      2、掌握單片機(jī)數(shù)據(jù)排序方法.二.實(shí)驗(yàn)內(nèi)容:

      預(yù)先向單片機(jī)內(nèi)部RAM 50H 開始填入一批數(shù)據(jù),以00H結(jié)尾.編這批數(shù)據(jù)按從小到大的順序進(jìn)行排序.三、實(shí)驗(yàn)步驟:

      a.先向單片機(jī)內(nèi)部RAM50H開始填入一批數(shù)據(jù),以00H結(jié)尾

      b.編程求出這批數(shù)據(jù)的長(zhǎng)度,存入R7中,編程將這批數(shù)據(jù)按從小到大順序

      四、參考程序:

      ORG 0030H

      MOV R0,#50H

      MOV R7,#00H

      CLR 00H

      LOOP2:CJNE @R0,#00H ,TB

      LJMP MAIN

      TB: INC R7

      INC R0

      LJMP LOOP2

      MAIN:MOV R0,#50H

      DJNZ R7,LOOP3

      LJMP A0

      LOOP3: MOV B, R7

      MOV A,@R0 LOOP:INC R0

      MOV R2,A

      SUBB A,@R0

      MOV A,R2

      JC NEXT

      SETB 00H

      XCH A,@R0

      DEC R0

      XCH A,@R0

      INC R0 NEXT:MOV A,@R0

      DJNZ B,LOOP

      JB 00H,MAIN

      A0 :SJMP $

      END 實(shí)驗(yàn)二 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?/p>

      1、熟悉單片機(jī)指令系統(tǒng),掌握單片機(jī)循環(huán)程序設(shè)計(jì)方法

      2、掌握單片機(jī)數(shù)據(jù)排序方法.二.實(shí)驗(yàn)內(nèi)容:

      預(yù)先向單片機(jī)內(nèi)部RAM 50H 開始填入一批數(shù)據(jù),以00H結(jié)尾.編這批數(shù)據(jù)按從小到大的順序進(jìn)行排序.三、實(shí)驗(yàn)步驟:

      a.先向單片機(jī)內(nèi)部RAM50H開始填入一批數(shù)據(jù),以00H結(jié)尾

      b.編程求出這批數(shù)據(jù)的長(zhǎng)度,存入R7中,編程將這批數(shù)據(jù)按從小到大順序

      四、參考程序: ORG 1000H MOV R0,#50H MOV R7,#00H LOOP: MOV A,@R0

      INC R0 CJNE A, #00H,LOOP1 SJMP LOOP2 LOOP1:INC R7 SJMP LOOP LOOP2:MOV R0, #50H CLR 00H;(00H)=00H為標(biāo)志位

      MOV A,R7 MOV R6,A LOOP3:MOV A,@R0 INC R0 MOV 30H,@R0 CJNE A,30H,LOOP4 LOOP4:JC LOOP5

      XCH A,@R0 DEC R0 XCH A,@R0 INC R0 SETB 00H INC R0 LOOP5:DJNZ R6,LOOP3 JB 00H,LOOP2 SJMP $ END

      實(shí)驗(yàn)三 信號(hào)燈控制

      一、實(shí)驗(yàn)?zāi)康?/p>

      (1)學(xué)習(xí)P1口的使用方法;

      (2)學(xué)習(xí)延時(shí)子程序的編寫。

      (3)掌握proteus仿真軟件的基本使用。

      二、實(shí)驗(yàn)內(nèi)容

      做單一燈的左移右移,硬件電路如圖4.4.1所示,八個(gè)發(fā)光二極管L1-L8分別接在單片機(jī)的P1.0-P1.7接口上,輸出“0”時(shí),發(fā)光二極管亮,開始時(shí)P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重復(fù)循環(huán)。

      三、程序流程圖:

      四、參考程序 ORG 0 START: MOV R2,#8 MOV A,#0FEH SETB C LOOP: MOV P1,A LCALL DELAY RLC A DJNZ R2,LOOP MOV R2,#8 LOOP1: MOV P1,A LCALL DELAY RRC A DJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#20;D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END

      實(shí)驗(yàn)四 脈沖計(jì)數(shù)實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康模?/p>

      1)掌握定時(shí)計(jì)數(shù)器的使用。2)學(xué)習(xí)延遲程序的編寫和使用。

      3)熟悉proteus仿真軟件的使用方法。

      二、實(shí)驗(yàn)內(nèi)容:

      1)開始時(shí),顯示“00”,第一次按下SP1后就開始計(jì)時(shí)。2)第二次按下SP1后,計(jì)時(shí)停止。3)

      第三次按下SP1時(shí),計(jì)時(shí)歸零。

      三、主程序流程圖

      四、中斷服務(wù)程序流程圖如下:

      五、參考程序如下: TCNTA EQU 30H TCNTB EQU 31H SEC EQU 32H KEYCNT EQU 33H SP1 BIT P3.5 ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV KEYCNT,#00H MOV SEC,#00H MOV A,SEC MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A MOV TMOD,#02H SETB ET0 SETB EA WT: JB SP1,WT LCALL DELY10MS JB SP1,WT INC KEYCNT MOV A,KEYCNT CJNE A,#01H,KN1 SETB TR0 MOV TH0,#06H MOV TL0,#06H MOV TCNTA,#00H MOV TCNTB,#00H LJMP DKN KN1: CJNE A,#02H,KN2 CLR TR0 LJMP DKN KN2: CJNE A,#03H,DKN MOV SEC,#00H MOV A,SEC MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A MOV KEYCNT,#00H DKN: JNB SP1,$ LJMP WT DELY10MS: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET INT_T0: INC TCNTA MOV A,TCNTA CJNE A,#100,NEXT MOV TCNTA,#00H INC TCNTB MOV A,TCNTB CJNE A,#4,NEXT MOV TCNTB,#00H INC SEC MOV A,SEC CJNE A,#100,DONE MOV SEC,#00H DONE: MOV A,SEC MOV B,#10 DIV AB MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A MOV A,B MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,A NEXT: RETI TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END

      實(shí)驗(yàn)五 8255控制交通燈

      一、實(shí)驗(yàn)?zāi)康?/p>

      進(jìn)一步了解8255芯片的結(jié)構(gòu)及編程方法,學(xué)習(xí)模擬交通控制的實(shí)現(xiàn)方法。

      二、實(shí)驗(yàn)內(nèi)容

      用8255做輸出口,控制十二個(gè)發(fā)光二極管燃滅,模擬交通燈管理。

      四、參考程序如下: ;交通燈

      ORG 0030H

      JOD0:MOV SP,#60H

      MOV DPTR,#0FFDBH

      MOV A,#88H

      ;8255初始化

      MOVX @DPTR,A

      MOV DPTR,#0FFD8H

      MOV A,#0B6H

      MOVX @DPTR,A

      INC DPTR

      MOV A,#0DH

      MOVX @DPTR,A;點(diǎn)亮4個(gè)紅燈

      MOV R2,#25H;延時(shí)

      LCALL DELY

      JOD3:MOV DPTR,#0FFD8H

      MOV A,#75H

      MOVX @DPTR,A

      INC DPTR

      MOV A,#0DH

      MOVX @DPTR,A

      ;東西綠燈亮,南北紅燈亮

      MOV R2,#55H

      LCALL DELY

      ;延時(shí)

      MOV R7,#05H

      ;閃爍次數(shù)

      JOD1:MOV DPTR,#0FFD8H

      MOV A,#0F3H

      MOVX @DPTR,A

      INC DPTR

      MOV A,#0CH

      MOVX @DPTR,A

      ;東西黃燈亮,南北紅燈亮

      MOV R2,#20H

      LCALL DELY

      ;延時(shí)

      MOV DPTR,#0FFD8H

      MOV A,#0F7H

      MOVX @DPTR,A

      INC DPTR

      MOV A,#0DH

      MOVX @DPTR,A

      ;南北紅燈亮

      MOV R2,#20H

      LCALL DELY

      ;延時(shí)

      DJNZ R7,JOD1

      ;閃爍次數(shù)未到繼續(xù)

      MOV DPTR,#0FFD8H

      MOV A,#0AEH

      MOVX @DPTR,A

      INC DPTR

      MOV A,#0BH

      MOVX @DPTR,A;東西紅燈亮,南北綠燈亮

      MOV R2,#55H

      LCALL DELY

      ;延時(shí)

      MOV R7,#05H

      ;閃爍次數(shù)

      JOD2:MOV DPTR,#0FFD8H

      MOV A,#9EH

      MOVX @DPTR,A

      INC DPTR

      MOV A,#07H

      MOVX @DPTR,A

      ;東西紅燈亮,南北黃燈亮

      MOV R2,#20H

      LCALL DELY

      ;延時(shí)

      MOV DPTR,#0FFD8H

      MOV A,#0BEH

      MOVX @DPTR,A

      INC DPTR

      MOV A,#0FH

      MOVX @DPTR,A

      ;東西紅燈亮

      MOV R2,#20H

      LCALL DELY

      ;延時(shí)

      DJNZ R7,JOD2

      ;閃爍次數(shù)未到繼續(xù)

      LJMP JOD3

      ORG 0213H

      DELY:PUSH 02H

      DEL2:PUSH 02H

      DEL3:PUSH 02H

      DEL4:DJNZ R2,DEL4

      POP 02H

      DJNZ R2,DEL3

      POP 02H

      DJNZ R2,DEL2

      POP 02H

      DJNZ R2,DELY

      RET

      END

      實(shí)驗(yàn)六 A/D轉(zhuǎn)換

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.掌握A/D轉(zhuǎn)換與單片機(jī)的接口方法 2.了解A/D芯片0809性能及編程方法 3.通過實(shí)驗(yàn)了解單片機(jī)如何進(jìn)行數(shù)據(jù)采集

      二、實(shí)驗(yàn)內(nèi)容

      1.利用proteus軟件仿真,實(shí)現(xiàn)A/D轉(zhuǎn)換實(shí)驗(yàn)。

      2.實(shí)驗(yàn)要求通過電位器提供模擬量的輸入,編寫程序,將模擬量轉(zhuǎn)換成數(shù)字量,通過數(shù)碼管顯示出來。

      三、參考程序如下: LED_0 EQU 30H

      ;存放三個(gè)數(shù)碼管的段碼 LED_1 EQU 31H LED_2 EQU 32H

      ADC EQU 35H;存放轉(zhuǎn)換后的數(shù)據(jù) ST BIT P3.2 OE BIT P3.0 EOC BIT P3.1 ORG 00H

      START: MOV LED_0,#00H MOV LED_1,#00H MOV LED_2,#00H MOV DPTR,#TABLE;送段碼表首地址

      SETB P3.4 SETB P3.5 CLR P3.6

      ;選擇ADC0808的通道3

      WAIT: CLR ST SETB ST CLR ST

      ;啟動(dòng)轉(zhuǎn)換

      JNB EOC,$

      ;等待轉(zhuǎn)換結(jié)束

      SETB OE

      ;允許輸出

      MOV ADC,P1

      ;暫存轉(zhuǎn)換結(jié)果

      CLR OE

      ;關(guān)閉輸出

      ;MOV A,ADC

      ;將AD轉(zhuǎn)換結(jié)果轉(zhuǎn)換成BCD碼

      ;MOV B,#100;DIV AB;MOV LED_2,A;MOV A,B;MOV B,#10;DIV AB;MOV LED_1,A;MOV LED_0,B lcall

      intov LCALL DISP

      ;顯示AD轉(zhuǎn)換結(jié)果

      SJMP WAIT

      intov:;mov a,led_1;m;ov b,#10;mul ab

      ;add a,led_0;mov r1,a;mov a,led_2;mov b,#100;mul ab;add a,r1 mov dptr,#tab mov a,adc

      movc a,@a+dptr mov b,#2 div ab mov r1,b mov b,#10 div ab mov led_2,a mov led_1,b cjne r1,#01,kk1

      mov led_0,#05 back:

      ret kk1:

      mov led_0,#00

      ajmp back

      DISP: mov

      dptr,#table

      MOV A,LED_0

      MOVC A,@A+DPTR

      CLR P2.3 MOV P0,A LCALL DELAY SETB P2.3

      mov

      dptr,#table MOV A,LED_1 MOVC A,@A+DPTR CLR P2.2 MOV P0,A LCALL DELAY SETB P2.2

      mov

      dptr,#table MOV A,LED_2 MOVC A,@A+DPTR setb

      acc.7 CLR P2.1

      ;數(shù)碼顯示子程序 MOV P0,A LCALL DELAY SETB P2.1 RET DELAY: MOV R6,#10

      ;延時(shí)5毫秒 D1: MOV R7,#250 DJNZ R7,$ DJNZ R6,D1

      RET

      TABLE: DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FH

      tab:db 0, 0 ,0 , 1, 0, 2, 0, db 4, 0, 0, 5, 0, 6, 0, 0, 7, 0 db 8, 0, 0, 9, 0, 0, 10, 0, 11, 0 db 0, 12, 0, 13, 0, 0, 14, 0, 15, 0 db 0, 16, 0, 17, 0, 0, 18, 0, 19, 0 db 0, 20, 0, 0, 21, 0, 22, 0, 0, 23 db 0, 24, 0, 0, 25, 0, 26, 0, 0, 27 db 0, 28, 0, 0, 29, 0, 0, 30, 0, 31 db 0, 0, 32, 0, 33, 0, 0, 34, 0, 35 db 0, 0, 36, 0, 37, 0, 0, 38, 0, 39 db 0, 0, 40, 0, 0, 41, 0, 42, 0, 0 db 43, 0, 44, 0, 0, 45, 0, 46, 0, 0 db 47, 0, 48, 0, 0, 49, 0, 50, 0, 0 db 51, 0, 0, 52, 0, 53, 0, 0, 54, 0 db 55, 0, 0, 56, 0, 57, 0, 0, 58, 0 db 59, 0, 0, 60, 0, 0, 61, 0, 62, 0 db 0, 63, 0, 64, 0, 0, 65, 0, 66, 0 db 0, 67, 0, 68, 0, 0, 69, 0, 70, 0 db 0, 71, 0, 0, 72, 0, 73, 0, 0, 74 db 0, 75, 0, 0, 76, 0, 77, 0, 0, 78 db 0, 79, 0, 0, 80, 0, 0, 81, 0, 82 db 0, 0, 83, 0, 84, 0, 0, 85, 0, 86 db 0, 0, 87, 0, 88, 0, 0, 89, 0, 90 db 0, 0, 91, 0, 0, 92, 0, 93, 0, 0 db 94, 0, 95, 0, 0, 96, 0, 97, 0, 0 db 98, 0, 99, 0, 0, 100, 0, 0, 0

      END

      0, 3, 0

      第三篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)教案

      實(shí)驗(yàn)一 集成開發(fā)環(huán)境keil c51的使用與調(diào)試

      Keil C51 u Vision2 是德國(guó)Keil公司開發(fā)的基于Windows環(huán)境的8051軟件開發(fā)平臺(tái),它集項(xiàng)目管理、源程序編輯、程序調(diào)試于一體,是一個(gè)強(qiáng)大的集成開發(fā)環(huán)境。

      u Vision2 支持Keil的各種8051工具,包括:C編譯器,宏匯編譯器、連接/定位器及Object-hex轉(zhuǎn)換程序,可以幫助用戶快速有效的實(shí)現(xiàn)嵌入式系統(tǒng)的設(shè)計(jì)與調(diào)試。

      1.1 硬件安裝

      1、連接51CPU板,在實(shí)驗(yàn)箱右下角有三個(gè)插座:J1、J2、J3,用來連接51CPU板,在51CPU板上有一個(gè)小撥碼開關(guān):J18,是單片機(jī)的EA腳,是用來選擇讀片內(nèi)還是片外ROM的,撥向左邊為讀片內(nèi)ROM;撥向右邊為讀片外ROM。

      2、KEIL仿真器與實(shí)驗(yàn)箱的連接:將KEIL仿真器40芯的排線連到51CPU板的40芯插座上,仿真器的USB連接線連到微機(jī)的USB口。

      3、八段數(shù)碼管右上角的兩個(gè)撥碼小開關(guān)是用來設(shè)置工作模式的,將兩個(gè)撥碼小開關(guān)同時(shí)撥向右邊是選擇51單片機(jī)工作模式,此時(shí)應(yīng)撥向右邊。

      1.2 新建一個(gè)項(xiàng)目文件

      首先點(diǎn)擊 Keil uVision2,進(jìn)入uVision2界面。點(diǎn)擊工具欄Project選項(xiàng)中的New Project,準(zhǔn)備開始建立自己的項(xiàng)目。

      輸入工程文件名稱,并選擇保存工程文件的目錄。

      為項(xiàng)目文件選擇一個(gè)目標(biāo)器件(如ATMEL89C51),如圖所示。

      用鼠標(biāo)對(duì)項(xiàng)目工作區(qū)的目標(biāo)1,點(diǎn)擊右鍵在彈出的菜單中選擇“為目標(biāo)‘目標(biāo)1’設(shè)置選項(xiàng)”如下圖所示。

      在“為目標(biāo)‘目標(biāo)1’設(shè)置選項(xiàng)”中,點(diǎn)擊“調(diào)試”菜單,在此菜單中可選擇是使用硬件仿真,還是軟件仿真,連接實(shí)驗(yàn)箱做實(shí)驗(yàn)時(shí)選擇硬件仿真,點(diǎn)擊硬件仿真選項(xiàng)后面的[設(shè)置]選項(xiàng),在此對(duì)對(duì)話框中選擇串口和波特率,串口根據(jù)所連電腦來決定。波特率為38400。

      軟件仿真 硬件仿真 選擇串口 選擇波特率

      點(diǎn)擊“文件/新建”創(chuàng)建源程序文件并輸入程序代碼。

      在文本框中輸入原程序,如下圖所示

      點(diǎn)擊“文件/保存“對(duì)程序進(jìn)行保存

      用鼠標(biāo)對(duì)項(xiàng)目工作區(qū)的目標(biāo)1,點(diǎn)擊右鍵在彈出的菜單中選擇添加文件到原代碼組,如下圖所示

      在彈出的添加文件框中,選擇需要添加到項(xiàng)目中的文件

      點(diǎn)擊編譯連接的圖標(biāo),對(duì)項(xiàng)目文件進(jìn)行編譯

      點(diǎn)擊“調(diào)試/啟動(dòng)/停止調(diào)試”進(jìn)入調(diào)試界面

      在調(diào)試界面中可以對(duì)程序進(jìn)行單步或者全速運(yùn)行的調(diào)試

      連機(jī)/停止 全速運(yùn)行

      單步

      若要查看內(nèi)存中的數(shù)據(jù),點(diǎn)擊“視圖/存儲(chǔ)器窗口”

      在此地址框中,輸入不同的指令查看內(nèi)部數(shù)據(jù)

      如果需要查看一些內(nèi)部數(shù)據(jù),在菜單欄點(diǎn)擊[視圖/存儲(chǔ)窗口]。

      C:0X地址 顯示程序存儲(chǔ)區(qū)數(shù)據(jù) X:0X地址 顯示數(shù)據(jù)存儲(chǔ)區(qū)中數(shù)據(jù) D:0X地址 顯示CPU內(nèi)部存儲(chǔ)區(qū)中數(shù)據(jù)

      注意:仿真器使用者使用時(shí)應(yīng)注意:

      Keil C仿真器用戶程序在全速運(yùn)行時(shí),如果需暫停運(yùn)行,請(qǐng)按實(shí)驗(yàn)儀鍵盤“RST”,此時(shí)仿真器存儲(chǔ)器數(shù)據(jù)清零。如果您要再次運(yùn)行您所編寫的程序,就必須重新裝載運(yùn)行。

      1.3 實(shí)驗(yàn)指導(dǎo)使用說明

      點(diǎn)擊“幫助/使用手冊(cè)”打開“HK系列實(shí)驗(yàn)指導(dǎo)”

      選擇“軟件實(shí)驗(yàn)”右邊的下三角可選擇實(shí)驗(yàn)類別或者芯片查詢

      點(diǎn)擊實(shí)驗(yàn)?zāi)康摹?shí)驗(yàn)電路、實(shí)驗(yàn)連線、實(shí)驗(yàn)程序可查看關(guān)于實(shí)驗(yàn)的具體介紹

      在芯片查詢中,可查看常用芯片的管腳定義

      實(shí)驗(yàn)二 程序設(shè)計(jì)實(shí)驗(yàn)

      C51中進(jìn)行絕對(duì)地址訪問:

      (1)在頭文件中加入

      #include (2)可以使用 CBYTE XBYTE PWORD DBYTE CWORE

      XWORD PBYTE DWORD 指向內(nèi)存空間的絕對(duì)地址。(具體看課本Page 71~72)

      (3)使用指針進(jìn)行絕對(duì)地址訪問(具體看課本Page68~71,課后用指針對(duì)下面實(shí)驗(yàn)程序進(jìn)行修改)

      例如:

      #define ADDR

      XBYTE[0x8000]

      定義ADDR為 片外RAM地址0x8000的內(nèi)容

      Segment = CBYTE[0x0002]

      將程序存儲(chǔ)器的0002H地址的內(nèi)容賦值給Segment

      Segment = XBYTE[0x0002]

      將向片外RAM的0002H地址的內(nèi)容賦值給Segment

      XBYTE[0x0002]=57

      將57賦值給片外RAM0002H絕對(duì)地址

      實(shí)驗(yàn)1:將片外8000H中的內(nèi)容拆開,高位送8001H地址低位,低位送8002H的地址低位,8001H和8002H地址單元的高位清零。#include #include

      #define a0 XBYTE[0x8000] #define a1 XBYTE[0x8001] #define a2 XBYTE[0x8002]

      void main(){ a0 = 0xab;a1 = a0 & 0x0f;a2 = a0 >> 4;}

      實(shí)驗(yàn)2:使用絕對(duì)地址進(jìn)行char型數(shù)組賦值,數(shù)組的首地址為片外8000H #include #include #define uint unsigned int uint i;#define uchar unsigned char void main(){

      for(i=0;i<10;i++){

      XBYTE[0x8000+i]=i;} }

      請(qǐng)對(duì)上述實(shí)驗(yàn)進(jìn)行修改:使用絕對(duì)地址進(jìn)行int型數(shù)組賦值,數(shù)組的首地址為片外8000H

      實(shí)驗(yàn)3:將內(nèi)部RAM中的50H-5AH中的無符號(hào)數(shù),按照從小到大的次序重新排列

      #include #include

      #define uint unsigned int #define uchar unsigned char uint i,j;uchar temp;void main(){ for(i=0;i<=10;i++)//賦初值

      {

      DBYTE[0x50+i]=10-i;} for(i=0;i<=10;i++){

      for(j=i+1;j<10;j++)

      {

      if(DBYTE[0x50+i]>DBYTE[0x50+j])

      {

      temp=DBYTE[0x50+i];

      DBYTE[0x50+i]=DBYTE[0x50+j];

      DBYTE[0x50+j]=temp;

      }

      } } } 實(shí)驗(yàn)三

      單片機(jī)I/O接口實(shí)驗(yàn)

      1.看懂電路圖

      2.用開關(guān)分別控制,左邊4盞燈同時(shí)亮,右邊的4盞熄滅,開關(guān)導(dǎo)向另一邊,左邊4盞熄滅,右邊4盞點(diǎn)亮。#include sbit P3_0 = P3^0;

      //查閱sbit和bit 的區(qū)別 #define uint unsigned int #define uchar unsigned char void main(){ While(1){ if(P3_0 == 0)

      {

      P0 = 0x0f;} else P0=0xf0;} }

      3.下面按照實(shí)驗(yàn)書本的要求做實(shí)驗(yàn),并調(diào)試程序延時(shí)時(shí)間。

      實(shí)驗(yàn)四

      八段數(shù)碼管滾動(dòng)顯示程序設(shè)計(jì)

      1.了解擴(kuò)展電路的基本結(jié)構(gòu)。

      2. 清楚8155各個(gè)寄存器的物理地址是怎么得到的。

      3.弄清楚8155、74LS164、UA2003三塊芯片的各個(gè)引腳的基本功能。

      4.74LS164的串行輸入的程序代碼的編寫

      /* “驗(yàn)證式"?實(shí)驗(yàn)十一

      八段數(shù)碼管顯示

      */ #include #define LEDLen 6 #define mode 0x03;#define CAddr XBYTE[0xe100]/* 控制字地址 */ #define OUTBIT XBYTE[0xe101]/* 位控制口 */ #define CLK164 XBYTE[0xe102]/* 段控制口(接164時(shí)鐘位)*/ #define DAT164 XBYTE[0xe102] /* 段控制口(接164數(shù)據(jù)位)*/ #define IN

      XBYTE[0xe103] /* 鍵盤讀入口 */

      unsigned char LEDBuf[LEDLen];/* 顯示緩沖 */ code unsigned char LEDMAP[] = { /* 八段管顯示碼 */

      0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 };

      void Delay(unsigned char CNT){

      unsigned char i;

      while(CNT--!=0)

      for(i=100;i!=0;i--);}

      void DisplayLED(){

      unsigned char i, j;

      unsigned char Pos;

      unsigned char LED;

      Pos = 0x20;/* 從左邊開始顯示 */

      for(i = 0;i < LEDLen;i++)

      {

      OUTBIT = 0;

      /* 關(guān)所有八段管 */

      LED = LEDBuf[i];

      for(j = 0;j < 8;j++)

      {

      /*送164*/

      if(LED & 0x80)DAT164 = 1;

      else DAT164 = 0;

      CLK164 = CLK164|0x02;

      CLK164 = CLK164&0xfd;

      LED <<= 1;

      }

      OUTBIT = Pos;/* 顯示一位八段管 */

      Delay(1);

      Pos >>= 1;

      /* 顯示下一位 */

      }

      OUTBIT = 0;

      /* 關(guān)所有八段管 */ }

      void main(){

      unsigned char i = 0;

      unsigned char j;

      CAddr = mode;

      while(1){

      LEDBuf[0] = LEDMAP[ i

      & 0x0f];

      LEDBuf[1] = LEDMAP[(i+1)& 0x0f];

      LEDBuf[2] = LEDMAP[(i+2)& 0x0f];

      LEDBuf[3] = LEDMAP[(i+3)& 0x0f];

      LEDBuf[4] = LEDMAP[(i+4)& 0x0f];

      LEDBuf[5] = LEDMAP[(i+5)& 0x0f];

      i++;

      for(j=0;j<30;j++)

      DisplayLED();

      /* 延時(shí) */

      } }

      集成開發(fā)環(huán)境詳細(xì)設(shè)置解說

      在第二章中,我們已經(jīng)簡(jiǎn)介了單片機(jī)軟件Keil C51的開發(fā)過程。即: 1.建立一個(gè)工程項(xiàng)目,選擇芯片,確定選項(xiàng)。2.建立匯編源文件或C源文件。3.用項(xiàng)目管理器生成各種應(yīng)用文件。4.檢查并修改源文件中的錯(cuò)誤。5.編譯連接通過后進(jìn)行軟件模擬仿真。6.編譯連接通過后進(jìn)行硬件模擬仿真。7.編程操作。8.應(yīng)用。

      這里我們介紹工程的較詳細(xì)設(shè)置及常用調(diào)試方法。20.1

      工程項(xiàng)目的建立、源程序文件的建立及加載

      Keil C51軟件UVision打開后,程序窗口的左邊有一個(gè)項(xiàng)目工作區(qū)管理窗口,該窗口有3個(gè)標(biāo)簽,分別是Files、Regs和Books,這3個(gè)標(biāo)簽頁(yè)分別顯示當(dāng)前項(xiàng)目的文件結(jié)構(gòu)、CPU的寄存器及部分特殊功能寄存器的值(調(diào)試時(shí)才出現(xiàn))和所選CPU的附加說明文件,如果是第一次啟動(dòng)Keil C51,那么這3個(gè)標(biāo)簽頁(yè)全是空的(圖20-1)。

      圖20-1

      Keil C51打開后界面

      20.1.1

      建立工程文件

      在單片機(jī)項(xiàng)目開發(fā)中,有時(shí)有多個(gè)的源程序文件,并且還要為項(xiàng)目選擇CPU以確定編譯、匯編、連接的參數(shù),指定調(diào)試的方式等。為便于管理,Keil C51使用工程項(xiàng)目(Project)的方法,將這些參數(shù)設(shè)置和所需的所有文件都放在一個(gè)工程項(xiàng)目中,只能對(duì)工程項(xiàng)目而不能對(duì)單一的源程序進(jìn)行編譯(匯編)和連接等操作。

      先在硬盤上建立一個(gè)需保存工程文件的目錄(例如在“我的文檔” 中建立一個(gè)test的文件夾),為便于管理及使用,目錄名稱可與工程名稱一致。選擇“工程>新工程”菜單(圖20-2)。彈出對(duì)話框,要求給將要建立的工程起一個(gè)名字,可以在編輯框中輸入一個(gè)名字(例如test),擴(kuò)展名不必輸入(默認(rèn)的擴(kuò)展名為.uv2)。點(diǎn)擊“保存”按鈕(圖20-3)。隨后彈出一個(gè)“為目標(biāo)target選擇設(shè)備”(Select Device for Target “Target1”)對(duì)話框,這個(gè)對(duì)話框要求選擇目標(biāo)CPU(即你所用單片機(jī)芯片的型號(hào)),Keil C51支持的CPU很多,我們選擇Atmel公司的AT89C51(或AT89S51)芯片,用鼠標(biāo)單擊Atmel前的“+”號(hào),選擇“AT89C51(或AT89S51)”單片機(jī)后按確定(圖20-4)。隨即系統(tǒng)彈出是否拷貝8051啟動(dòng)代碼到工程項(xiàng)目并添加到當(dāng)前項(xiàng)目組的提示(Copy Standard 8051 Startup Code to Project Folder and Add File to Project ?),我們選否。此時(shí),在工程窗口的文件頁(yè)中,出現(xiàn)了“Target 1”,前面有“+”號(hào),點(diǎn)擊“+”號(hào)展開,可以看到下一層的“Source Group1”。

      圖20-2

      選擇“工程>新工程”菜單界面

      圖20-3

      建立新工程界面

      圖20-4

      選擇單片機(jī)型號(hào)界面

      20.1.2

      源程序文件的建立

      使用菜單“文件>新建”或者點(diǎn)擊工具欄的新建文件按鈕(圖20-5),即在右側(cè)打開一個(gè)新的文本編輯窗口,在該窗口中可以輸入?yún)R編語(yǔ)言源程序或C語(yǔ)言源程序(圖20-6)。程序輸入完成后,選擇“文件”,在下拉菜單中選中“另存為”,將該文件以擴(kuò)展名為.asm格式(匯編語(yǔ)言源程序)或.c格式(C語(yǔ)言源程序)保存在剛才所建立的一個(gè)文件夾中(test),這里假設(shè)源程序文件名為test.asm(圖20-7)。

      圖20-5

      新建源程序文件界面

      圖20-6

      打開新的文本編輯窗口

      圖20-7

      “另存為” 對(duì)話框

      源程序文件也可以使用任意的文本編輯器編寫。20.1.3

      添加文件到當(dāng)前項(xiàng)目組中

      這時(shí)的工程項(xiàng)目還是一個(gè)空的工程,里面什么文件也沒有,把剛才編寫好的源程序test.asm加載進(jìn)工程。單擊工程管理器中“Target 1”前的“+”號(hào),出現(xiàn)“Source Group1”后再單擊,加亮后右擊。在出現(xiàn)的下拉窗口中選擇“Add Files to Group‘Source Group1’”(圖20-8)。注意,該對(duì)話框下面的“文件類型”默認(rèn)為C source file(*.c),也就是以C為擴(kuò)展名的文件,如我們的文件是以asm為擴(kuò)展名的,那么在列表框中找不到test.asm,要將文件類型改掉。點(diǎn)擊對(duì)話框中“文件類型”后的下拉列表,找到并選中“Asm Source File(*.a51,*.asm)”,這樣在列表框中就可以找到test.asm文件了(圖20-9)。我們可以在增加文件窗口中選擇剛才以asm格式(或c格式)編輯的文件,鼠標(biāo)單擊“ADD”按鈕,這時(shí)源程序文件便加入到Source Group1這個(gè)組里了,隨后關(guān)閉此對(duì)話窗口。點(diǎn)擊 “ Source Group1”前的“+”號(hào),可以看到test.asm文件已在其中(圖20-10)。雙擊后,即可打開該源程序。

      圖20-8

      Add Files to Group‘Source Group1’界面

      圖20-9

      Add Files to Group‘Source Group1’對(duì)話框

      圖20-10

      test.asm文件

      20.2

      工程項(xiàng)目的詳細(xì)設(shè)置 工程建立好以后,還要對(duì)工程進(jìn)行進(jìn)一步的設(shè)置,以滿足要求。

      首先點(diǎn)擊左邊窗口的Target1,然后使用菜單“項(xiàng)目>目標(biāo)‘target1’選項(xiàng) ”即出現(xiàn)對(duì)工程設(shè)置的對(duì)話框,共有8個(gè)頁(yè)面,默認(rèn)為對(duì)象頁(yè)面(圖20-11)。絕大部分設(shè)置項(xiàng)通常可以采用默認(rèn)值。

      圖20-11

      對(duì)象頁(yè)面

      20.2.1

      對(duì)象頁(yè)面

      時(shí)鐘(MHz)后面的數(shù)值是晶振頻率值,默認(rèn)值是所選目標(biāo)CPU的最高可用頻率值,對(duì)于AT89C51而言是24MHz,而AT89S51是33MHz。該數(shù)值與最終產(chǎn)生的目標(biāo)代碼無關(guān),僅用于軟件模擬調(diào)試時(shí)顯示程序執(zhí)行時(shí)間。正確設(shè)置該數(shù)值可使顯示時(shí)間與實(shí)際所用時(shí)間一致,一般將其設(shè)置成與你實(shí)際所用的晶振頻率相同。

      儲(chǔ)存器模式用于設(shè)置RAM使用情況,有3個(gè)選擇項(xiàng),Small:是所有變量都在單片機(jī)的內(nèi)部RAM中。Compact:變量存儲(chǔ)在外部RAM里,使用8位間接尋址。Large:變量存儲(chǔ)在外部RAM里,使用16位間接尋址,可以使用全部外部的擴(kuò)展RAM。

      1.Small:一般使用Small來存儲(chǔ)變量,此時(shí)單片機(jī)優(yōu)先將變量存儲(chǔ)在內(nèi)部RAM里,如果內(nèi)部RAM空間不夠,才會(huì)存到外部RAM中。

      2.Compact:Compact的方式要通過程序來指定頁(yè)的高位地址,編程較復(fù)雜,如果外部RAM很少,只有256字節(jié),那么對(duì)該256字節(jié)的讀取就比較快。如果超過256字節(jié),而且需要不斷地進(jìn)行切換,就較麻煩,Compact模式適用于比較少的外部RAM的情況。

      3.Large:Large模式是指變量會(huì)優(yōu)先分配到外部RAM里。需要注意的是,3種存儲(chǔ)方式都支持內(nèi)部256字節(jié)和外部64KB的RAM。因?yàn)樽兞看鎯?chǔ)在內(nèi)部RAM里,運(yùn)算速度比存儲(chǔ)在外部RAM要快得多,大部分的應(yīng)用都是選擇Small模式。

      代碼ROM大小用于設(shè)置ROM空間的使用,也有3個(gè)選擇項(xiàng),Small、Compact及Large。1.Small:只用低于2K的程序空間,適用于AT89C2051這些芯片,2051只有2K的代碼空間,所以跳轉(zhuǎn)地址只有2KB,編譯的時(shí)候會(huì)使用ACALL AJMP這些短跳轉(zhuǎn)指令,而不會(huì)使用LCALL LJMP指令。如果代碼地址跳轉(zhuǎn)超過2K,那么會(huì)出錯(cuò)。

      2.Compact:?jiǎn)蝹€(gè)函數(shù)的代碼量不能超過2K,整個(gè)程序可以使用64K程序空間。3.Large:可用全部64K空間,表示程序或子函數(shù)代碼都可以大到64KB,使用code bank還可以更大。通常都選用該方式。選擇Large方式速度不會(huì)比Small慢很多,所以一般沒有必要選擇Compact和Small方式。

      操作系統(tǒng)選項(xiàng)中,Keil C51提供了兩種操作系統(tǒng):Rtx tiny和Rtx full,通常我們不使用任何操作系統(tǒng),用該項(xiàng)的默認(rèn)值:None(不使用任何操作系統(tǒng))。Use on-chip ROM(0x0-0xFFF)選擇項(xiàng),表示使用片上的ROM(選中該項(xiàng)并不會(huì)影響最終生成的目標(biāo)代碼量),該選項(xiàng)取決于單片機(jī)應(yīng)用系統(tǒng),如果單片機(jī)的EA接高電平,則選中這個(gè)選項(xiàng),表示使用內(nèi)部ROM,如果單片機(jī)的EA接低電平,表示使用外部ROM,則不選中該選項(xiàng)。

      片外代碼(CODE)儲(chǔ)存器:表示片外ROM的開始地址和大小,如果沒有外接程序存儲(chǔ)器,那么不需要填任何數(shù)據(jù)。這里假設(shè)使用一個(gè)片外ROM,地址從0x7000開始,一般填16進(jìn)制的數(shù),Size(尺寸)為片外ROM的大小。假設(shè)外接ROM的大小為0x2000字節(jié),則最多可以外接3塊片外ROM。

      片外數(shù)據(jù)(XDATA)儲(chǔ)存器:用于確定系統(tǒng)擴(kuò)展RAM的地址范圍,可以填上外接Xdata外部數(shù)據(jù)存儲(chǔ)器的起始地址和大小,這些選擇項(xiàng)必須根據(jù)所用硬件來決定。如果僅僅是89C51單片應(yīng)用,未進(jìn)行任何擴(kuò)展,那么無需設(shè)置。

      代碼分段:是使用Code Banking技術(shù)。Keil C51可以支持程序代碼超過64KB的情況,最大可以有2MB的程序代碼。如果代碼超過64KB,那么就要使用Code Banking技術(shù),以支持更多的程序空間。

      20.2.2

      輸出頁(yè)面

      輸出頁(yè)面中(圖20-12),按鈕“選擇目標(biāo)(OBJ)目錄”是用來選擇最終的目標(biāo)文件所在的文件夾,默認(rèn)是與工程文件在同一個(gè)文件夾中。

      圖20-12

      Output頁(yè)面

      “可執(zhí)行文件名”:設(shè)置生成的目標(biāo)文件的名字,缺省情況下和項(xiàng)目的名字一樣。Create Executable:如果要生成OMF以及HEX文件,一般選中“調(diào)試信息”和“瀏覽信息”。選中“調(diào)試信息”將會(huì)產(chǎn)生調(diào)試信息,這些信息用于調(diào)試,如果需要對(duì)程序進(jìn)行調(diào)試,應(yīng)當(dāng)選中該項(xiàng)?!盀g覽信息”是產(chǎn)生各種信息,該信息可以用菜單“查看” 進(jìn)行瀏覽,一般取默認(rèn)值?!吧蒱ex文件”用于生成可執(zhí)行代碼文件,默認(rèn)情況下該項(xiàng)未被選中,如果要燒錄芯片做硬件實(shí)驗(yàn),就必須選中該項(xiàng)。

      Create Library:選中該項(xiàng)時(shí)將生成lib庫(kù)文件,一般的應(yīng)用是不生成庫(kù)文件的。構(gòu)造后操作欄中有以下幾個(gè)設(shè)置。

      完成時(shí)“嘀”一聲提示:編譯完成之后發(fā)出“咚”的聲音。

      開始調(diào)試:馬上啟動(dòng)調(diào)試(軟件仿真或硬件仿真),根據(jù)需要來設(shè)置,一般是不選中。運(yùn)行用戶程序#

      1、運(yùn)行用戶程序#2:這個(gè)選項(xiàng)可以設(shè)置編譯完之后所要運(yùn)行的其他應(yīng)用程序(比如有些用戶自己編寫了燒寫芯片的程序,編譯完便執(zhí)行該程序,將Hex文件寫入芯片),或者調(diào)用外部的仿真程序??筛鶕?jù)自己的需要設(shè)置。

      20.2.3

      列表頁(yè)面

      列表頁(yè)面用于調(diào)整生成的列表文件選項(xiàng)。在匯編或編譯完成后將產(chǎn)生(*.lst)的列表文件,在連接完成后也將產(chǎn)生(*.m51)的列表文件,該頁(yè)用于對(duì)列表文件的內(nèi)容和形式進(jìn)行細(xì)致的調(diào)節(jié),其中比較常用的選項(xiàng)是“C Compile Listing”下的“匯編代碼”項(xiàng),選中該項(xiàng)可以在列表文件中生成C語(yǔ)言源程序所對(duì)應(yīng)的匯編代碼(圖20-13)。

      圖20-13

      Listing頁(yè)面

      20.2.4

      C51頁(yè)面

      C51頁(yè)面用于對(duì)Keil C51軟件的C51編譯器的編譯過程進(jìn)行控制(圖20-14),其中比較常用的是“代碼優(yōu)化選項(xiàng)”組,該組中級(jí)別是優(yōu)化等級(jí),C51在對(duì)源程序進(jìn)行編譯時(shí),可以對(duì)代碼多至9級(jí)優(yōu)化,默認(rèn)使用第8級(jí),一般不必修改,如果在編譯中出現(xiàn)一些問題,可以降低優(yōu)化級(jí)別再試。“側(cè)重”是選擇編譯優(yōu)先方式,第一項(xiàng)是代碼大小優(yōu)化(最終生成的代碼量?。诙?xiàng)是執(zhí)行速度優(yōu)先(最終生成的代碼速度快),第三項(xiàng)缺省。默認(rèn)的是速度優(yōu)先,可根據(jù)需要更改。

      圖20-14

      C51頁(yè)面

      20.2.5

      調(diào)試頁(yè)面

      調(diào)試頁(yè)面中(圖20-15)有兩類仿真形式可選:“使用模擬器”和“Keil Monitor-51 Driver”,前一種是純軟件仿真,后一種是帶有Monitor-51目標(biāo)仿真器的仿真。對(duì)于沒有Monitor-51目標(biāo)仿真器的用戶,只有采用軟件仿真。默認(rèn)方式下的仿真是軟件仿真(使用模擬器)。

      圖20-15

      Debug頁(yè)面 啟動(dòng)時(shí)加載程序:選擇這項(xiàng)之后,Keil C51會(huì)自動(dòng)裝載程序代碼。

      一直運(yùn)行到main():調(diào)試C語(yǔ)言程序時(shí)可以選擇這一項(xiàng),PC會(huì)自動(dòng)運(yùn)行到main程序處。

      工程設(shè)置對(duì)話框中的其他各頁(yè)面與C51編譯選項(xiàng)、A51的匯編選項(xiàng)、BL51連接器的連接選項(xiàng)等用法有關(guān),這里均取默認(rèn)值。

      設(shè)置完成后按確認(rèn)返回主界面,工程文件就建立、設(shè)置完畢了。20.3

      編譯、連接

      在設(shè)置好工程后,即可進(jìn)行編譯、連接。選擇主菜單欄中的“項(xiàng)目”,在下拉菜單中選中“構(gòu)造對(duì)象”(圖20-16),對(duì)當(dāng)前工程進(jìn)行編譯、連接,這時(shí)輸出窗口出現(xiàn)源程序的編譯結(jié)果。如果選擇“重新構(gòu)造所有對(duì)象文件”將會(huì)對(duì)當(dāng)前工程中的所有文件重新進(jìn)行編譯,然后再連接,這樣最終產(chǎn)生的目標(biāo)代碼是最新的。

      圖20-16

      編譯、連接操作

      以上操作也可以通過工具欄按鈕直接進(jìn)行。

      編譯過程中的信息將出現(xiàn)在輸出窗口中的構(gòu)造頁(yè)中,如果源程序中有語(yǔ)法錯(cuò)誤,將提示錯(cuò)誤ERROR(S)的類型和行號(hào),雙擊該行,可以定位到出錯(cuò)的位置。對(duì)源程序進(jìn)行修改沒有語(yǔ)法錯(cuò)誤后,重新進(jìn)行編譯、連接,編譯成功后,最終可得到hex格式的文件(如test.hex),該文件可被編程器讀入并寫到芯片中,同時(shí)還會(huì)產(chǎn)生一些其他相關(guān)的文件,可被用于Keil C51的仿真與調(diào)試。20.4

      Keil C51集成開發(fā)環(huán)境軟件的調(diào)試方法 20.4.1

      常用調(diào)試命令

      在對(duì)工程成功地進(jìn)行編譯(匯編)、連接以后,在主菜單中打開“調(diào)試”欄,點(diǎn)擊“開始/停止調(diào)試模式”,即可進(jìn)入軟件模擬仿真調(diào)試狀態(tài),Keil C51內(nèi)建了一個(gè)仿真CPU用來模擬執(zhí)行程序,該仿真CPU功能非常強(qiáng)大,可以在沒有硬件和仿真器的情況下進(jìn)行程序的調(diào)試,但是在時(shí)序上,軟件模擬仿真是達(dá)不到硬件的時(shí)序的。進(jìn)入調(diào)試狀態(tài)后,“調(diào)試”欄菜單項(xiàng)中原來不能用的命令現(xiàn)在已經(jīng)可以使用了?!罢{(diào)試”欄菜單上的大部分命令可以在調(diào)試界面上找到對(duì)應(yīng)的快捷按鈕,從左到右依次是復(fù)位、運(yùn)行、暫停、單步、單步跳過、執(zhí)行完當(dāng)前子程序、運(yùn)行到當(dāng)前行、下一狀態(tài)、打開跟蹤、觀察跟蹤、反匯編窗口、觀察窗口、代碼作用范圍分析、1#串行窗口、內(nèi)存窗口、性能分析、工具按鈕等命令(圖20-17)。

      圖20-17

      軟件模擬仿真調(diào)試狀態(tài)

      使用菜單“單步到之外”或相應(yīng)命令或功能鍵F10可以用“單步跳過”形式執(zhí)行命令,所謂“單步跳過”,是指將匯編語(yǔ)言中的子程序或高級(jí)語(yǔ)言中的函數(shù)作為一個(gè)語(yǔ)句一步執(zhí)行完。使用菜單“單步”或相應(yīng)的命令按鈕或使用快捷鍵F11可以單步執(zhí)行程序(即一條一條語(yǔ)句執(zhí)行),通過單步執(zhí)行程序,可以找出一些問題的所在,但是僅依靠單步執(zhí)行來查錯(cuò)效率較低。

      20.4.2

      斷點(diǎn)設(shè)置

      程序調(diào)試時(shí),一些程序行必須滿足一定的條件才能被執(zhí)行到(如程序中某變量達(dá)到一定的值、按鍵被按下、串口接收到數(shù)據(jù)、有中斷產(chǎn)生等),這些條件往往是異步發(fā)生或難以預(yù)先設(shè)定的,這類問題使用單步執(zhí)行的方法是很難調(diào)試的,這時(shí)就要使用到程序調(diào)試中的另一種非常重要的方法:斷點(diǎn)設(shè)置。斷點(diǎn)設(shè)置的方法有多種,常用的是在某一程序行設(shè)置斷點(diǎn)(圖20-18),設(shè)置好斷點(diǎn)后可以全速運(yùn)行程序,一旦執(zhí)行到該程序行即停止,可在此時(shí)觀察有關(guān)變量值,以確定問題所在。在程序行設(shè)置/移除斷點(diǎn)的方法是將光標(biāo)定位于需要設(shè)置斷點(diǎn)的程序行,使用菜單:“調(diào)試>設(shè)置/取消斷點(diǎn)”設(shè)置或移除斷點(diǎn),也可以用鼠標(biāo)在該行雙擊實(shí)現(xiàn)同樣的功能;另外“使能/禁止斷點(diǎn)”用來開啟或暫停光標(biāo)所在行的斷點(diǎn)功能;其它還有“禁止所有斷點(diǎn)”、“取消所有斷點(diǎn)”等設(shè)置。這些功能也可以用工具條上的快捷按鈕進(jìn)行設(shè)置。

      圖20-18

      斷點(diǎn)設(shè)置

      20.4.3

      在線匯編

      在進(jìn)入Keil C51的調(diào)試環(huán)境以后,若發(fā)現(xiàn)程序有錯(cuò),可以直接對(duì)源程序進(jìn)行修改,但是要使修改后的代碼起作用,必須先退出調(diào)試環(huán)境,重新進(jìn)行編譯、連接后再次進(jìn)入調(diào)試。如果調(diào)試時(shí)只是需要對(duì)某些程序行進(jìn)行臨時(shí)的試驗(yàn)修改(如修改參數(shù)以得到所需的延時(shí)時(shí)間),那么這樣的重復(fù)過程顯得太麻煩,為此Keil C51軟件提供了在線匯編的能力。將光標(biāo)定位于需要修改的程序行上,用菜單“調(diào)試>在線匯編”即可出現(xiàn)如圖20-19所示的對(duì)話框,在“輸入新指令”后面的編緝框內(nèi)直接輸入需更改的程序語(yǔ)句,輸入完后鍵入回車將自動(dòng)指向下一條語(yǔ)句,可以繼續(xù)修改。如果不再需要修改,可以點(diǎn)擊右上角的關(guān)閉按鈕關(guān)閉窗口。

      圖20-19

      在線匯編對(duì)話框

      20.4.4

      程序調(diào)試時(shí)的常用窗口 Keil C51軟件在調(diào)試程序時(shí)提供了多個(gè)窗口,主要包括輸出窗口(Output Windows)、查看和呼叫堆棧窗口(Watch & Call Statck Windows)、存儲(chǔ)器窗口(Memory Window)、反匯編窗口(Dissambly Window)和串行窗口(Serial Window)等。進(jìn)入調(diào)試模式后,可以通過菜單“查看”(View)下的相應(yīng)命令打開或關(guān)閉這些窗口。圖20-20是輸出窗口、查看和呼叫堆棧觀察窗口和存儲(chǔ)器窗口,各窗口的大小可以使用鼠標(biāo)調(diào)整。進(jìn)入調(diào)試程序后,輸出窗口自動(dòng)切換到Command頁(yè)。

      圖20-20

      輸出窗口、查看和呼叫堆棧窗口和存儲(chǔ)器窗口

      存儲(chǔ)器窗口

      存儲(chǔ)器窗口中可以顯示系統(tǒng)各種內(nèi)存中的值,通過在“地址”(Address)后的編緝框內(nèi)輸入“字母:數(shù)字”即可顯示相應(yīng)內(nèi)存值,其中字母可以是C、D、I、X,分別代表代碼存儲(chǔ)空間、直接尋址的片內(nèi)存儲(chǔ)空間、間接尋址的片內(nèi)存儲(chǔ)空間、擴(kuò)展的外部RAM空間,數(shù)字代表想要查看的地址。例如輸入“D:0x20”即可觀察到地址20H開始的片內(nèi)RAM單元值;鍵入“C:0x100”即可顯示從100H開始的ROM單元中的值,即查看程序的二進(jìn)制代碼。該窗口的顯示值可以以各種形式顯示,如十進(jìn)制、十六進(jìn)制、字符型等,改變顯示方式的方法是點(diǎn)鼠標(biāo)右鍵,在彈出的快捷菜單中選擇,該菜單用分隔條分成三部分,其中第一部分與第二部分的三個(gè)選項(xiàng)為同一級(jí)別,選中第一部分的任一選項(xiàng),內(nèi)容將以整數(shù)形式顯示,而選中第二部分的ASCII項(xiàng)則將以字符型式顯示,選中Float項(xiàng)將以相鄰四字節(jié)組成的浮點(diǎn)數(shù)形式顯示,選中Double項(xiàng)則將相鄰8字節(jié)組成雙精度形式顯示。第一部分又有多個(gè)選擇項(xiàng),其中Decimal項(xiàng)是一個(gè)開關(guān),如果選中該項(xiàng),則窗口中的值將以十進(jìn)制的形式顯示,否則按默認(rèn)的十六進(jìn)制方式顯示。Unsigned和Signed后分別有三個(gè)選項(xiàng):Char、Int、Long分別代表以單字節(jié)方式顯示、將相鄰雙字節(jié)組成整型數(shù)方式顯示、將相鄰四字節(jié)組成長(zhǎng)整型方式顯示,而Unsigned和Signed則分別代表無符號(hào)形式和有符號(hào)形式,究竟從哪一個(gè)單元開始的相鄰單元?jiǎng)t與你的設(shè)置有關(guān)。以整型為例,如果你輸入的是“I:0”,那么00H和01H單元的內(nèi)容將會(huì)組成一個(gè)整型數(shù),而如果你輸入的是“I:1”,01H和02H單元的內(nèi)容會(huì)組成一個(gè)整型數(shù),依此類推。第三部分的Modify Memory at X:xx用于更改鼠標(biāo)處的內(nèi)存單元值,選中該項(xiàng)即出現(xiàn)如圖20-21所示的對(duì)話框,可以在對(duì)話框內(nèi)輸入要修改的內(nèi)容。

      圖20-21

      更改內(nèi)存單元值 工程窗口寄存器頁(yè)

      圖20-22是工程窗口寄存器頁(yè)的內(nèi)容,寄存器頁(yè)包括了當(dāng)前的工作寄存器組和系統(tǒng)寄存器組。系統(tǒng)寄存器組有一些是實(shí)際存在的寄存器,如A、B、DPTR、SP、PSW等,有一些是實(shí)際中并不存在或雖然存在卻不能對(duì)其操作的,如PC、States等。每當(dāng)程序中執(zhí)行到對(duì)其寄存器的操作時(shí),該寄存器會(huì)以反色(藍(lán)底白字)顯示,用鼠標(biāo)單擊然后按下F2鍵,即可修改該值。

      圖20-22

      工程窗口寄存器頁(yè) 查看和呼叫堆棧觀察窗口

      這也是很重要的一個(gè)窗口,工程窗口中不僅可以觀察到工作寄存器和有限的寄存器如A、B、DPTR等,如果需要觀察其他寄存器的值或者在高級(jí)語(yǔ)言編程時(shí)需要直接觀察變量,還要借助于這個(gè)窗口了。

      一般情況下,我們僅在單步執(zhí)行時(shí)才對(duì)變量值的變化感興趣,全速運(yùn)行時(shí),變量的值是不變的,只有在程序停下來之后,才會(huì)將這些值的最新變化反映出來。但是,在一些特殊場(chǎng)合我們也可能需要在全速運(yùn)行時(shí)觀察變量的變化,此時(shí)可以點(diǎn)擊查看>定期窗口更新,確認(rèn)該項(xiàng)處于被選中狀態(tài),即可在全速運(yùn)行時(shí)動(dòng)態(tài)地觀察有關(guān)值的變化。但是,選中該項(xiàng),將會(huì)使程序模擬執(zhí)行的速度變慢。

      Keil C51提供了串行窗口,我們可以直接在串行窗口中鍵入字符,該字符雖不會(huì)被顯示出來,但卻能傳遞到仿真CPU中,如果仿真CPU通過串行口發(fā)送字符,那么這些字符會(huì)在串行窗口顯示出來,用該窗口可以在沒有硬件的情況下用鍵盤模擬串口通信。由于該項(xiàng)涉及到高級(jí)語(yǔ)言編程,這里就不具體介紹了。

      20.5

      外圍接口工具

      為了能夠比較直觀地了解單片機(jī)中定時(shí)器、中斷、并行端口、串行端門等常用外設(shè)的使用情況,Keil C51提供了一些外圍接口對(duì)話框,通過“外圍設(shè)備”菜單選擇?!巴鈬O(shè)備”的下拉菜單內(nèi)容與你建立項(xiàng)目時(shí)所選的CPU有關(guān)。如果是選擇的89C51這一類單片機(jī),那么將會(huì)有Interrupt(中斷)、I/O Ports(并行I/O口)、Serial(串行口)、Timer(定時(shí)/計(jì)數(shù)器)這四個(gè)外圍設(shè)備菜單(圖20-23)。打開這些對(duì)話框,列出了外圍設(shè)備的當(dāng)前使用情況,各標(biāo)志位的情況等,可以在這些對(duì)話框中直觀地觀察和更改各外圍設(shè)備的運(yùn)行情況。

      圖20-23

      外圍設(shè)備菜單 20.5.1

      P1□作為輸入端□

      程序每執(zhí)行一個(gè)循環(huán)之前,修改一次P1端口的值(圖20-24),觀察變量的值是直接觀看屏幕右下角的變量表;另外的方法是將鼠標(biāo)移動(dòng)到源程序的變量處,等待大約1秒鐘左右,屏幕上即可彈出該變量的相關(guān)信息。

      圖20-24

      P1□作為輸入端□ 20.5.2

      P1□作為輸出端□

      執(zhí)行循環(huán)時(shí)觀察P1口的輸出。由于P1口只用于輸出,故無須修改端口值(圖20-25)。

      圖20-25

      P1□作為輸出端□

      20.5.3

      外部中斷INT0 外部中斷INT0對(duì)應(yīng)于P3.2口線,因此,用鼠標(biāo)單擊“外設(shè)>Port3”窗口從右向左數(shù)第三位(P3.2口線對(duì)應(yīng)的位),每單擊一下,即產(chǎn)生一次中斷,原因是外部中斷是下降沿或低電平有效(圖20-26)。

      圖20-26

      外部中斷INT0 另外,也可以點(diǎn)擊“外設(shè)>Interrupt”,在出現(xiàn)圖20-27所示中斷對(duì)話界面后,進(jìn)行設(shè)置。

      圖20-27

      中斷對(duì)話界面 20.5.4

      定時(shí)器/計(jì)數(shù)器0 MCS-51系列單片機(jī)有兩至三個(gè)定時(shí)器/計(jì)數(shù)器,均可以作為定時(shí)器或計(jì)數(shù)器使用。點(diǎn)擊“外設(shè)>Timer0”即出現(xiàn)圖20-28所示定時(shí)/計(jì)數(shù)器0的外圍接口界面,可以直接選擇Mode組中的下拉列表以確定定時(shí)/計(jì)數(shù)工作方式(0~3四種工作方式,設(shè)定定時(shí)初值等),點(diǎn)擊選中TR0,status后的stop(停止)就變成了run(運(yùn)行)。如果全速運(yùn)行程序,此時(shí)TH0、TL0后的值也快速地開始變化(要求“定期窗口更新”處于選中狀態(tài)),直觀地演示了定時(shí)/計(jì)數(shù)器的工作情況。

      圖20-28

      定時(shí)/計(jì)數(shù)器0的外圍接口界面

      第四篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)教案

      單片機(jī)技術(shù)實(shí)驗(yàn)

      實(shí)驗(yàn)一(1)順序結(jié)構(gòu)程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?/p>

      掌握匯編語(yǔ)言設(shè)計(jì)和調(diào)試方法。熟悉KeilC和Protus仿真軟件的使用。

      二、實(shí)驗(yàn)內(nèi)容

      1、電路如圖一所示。將A的內(nèi)容通過P2口送LED發(fā)光二極管顯示。

      2、修改程序,實(shí)現(xiàn)跑馬燈的顯示效果。

      四、實(shí)驗(yàn)步驟

      1、在計(jì)算機(jī)某個(gè)硬盤中建立項(xiàng)目文件夾。例如“shiyan1”或者“ex1”。

      2、啟動(dòng)KEILC程序。

      3、打開主菜單中的“project”下的“new project”建立新的項(xiàng)目。按照要求輸入項(xiàng)目文件名,例如“shiyan1.prj”。注意:項(xiàng)目應(yīng)該建立在第一部的文件夾中。

      4、打開主菜單中的“file”下的“new file”,建立新的匯編語(yǔ)言文件。錄入程序,并將文件命名為“ex1.asm”,存入項(xiàng)目文件夾中。

      5、將第四步建立的文件加入到項(xiàng)目中。

      6、編譯項(xiàng)目文件,查錯(cuò)。

      7、啟動(dòng)protus軟件,將電路圖一輸入計(jì)算機(jī),并存到項(xiàng)目文件夾中。

      8、在protus軟件中,使用鼠標(biāo)左鍵雙擊,將第六步編譯后所產(chǎn)生的“shiyan1.hex”文件寫入到單片機(jī)中。

      9、在protus軟件中運(yùn)行程序。

      10、將A中的內(nèi)容修改為“0AAH”,重新編譯程序,并運(yùn)行,觀察結(jié)果。

      五、思考

      如何用斷點(diǎn)方式調(diào)試本程序。

      ORG 0000H

      LJMP START

      ORG 0030H START: MOV A,#55H

      MOV P1,A

      SJMP $ END

      實(shí)驗(yàn)一(2)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?/p>

      熟悉MCS-51指令系統(tǒng),掌握程序設(shè)計(jì)方法。

      二、實(shí)驗(yàn)內(nèi)容

      編寫并調(diào)試一個(gè)排序子程序,其功能為用冒泡法將內(nèi)容RAM中幾個(gè)單元字節(jié)無符號(hào)的正整數(shù),按從小到大的次序重新排列。

      三、程序框圖

      四、實(shí)驗(yàn)步驟

      1、LED環(huán)境

      ⑴在“P.”狀態(tài)下按“0→EV/UN”,裝載實(shí)驗(yàn)所需的代碼程序。⑵對(duì)片內(nèi)RAM地址50h~5AH進(jìn)行不規(guī)則置數(shù)。

      ⑶在“P.”狀態(tài)下鍵入0000,然后按“STEP”或“EXEC”進(jìn)入實(shí)驗(yàn)項(xiàng)目的調(diào)試與運(yùn)行。

      2、PC環(huán)境

      在與PC聯(lián)機(jī)狀態(tài)下,編譯、連接、下載PH51se05.asm,用連續(xù)或單步方式運(yùn)行程序。

      3、運(yùn)行結(jié)果檢查

      ⑴在單步運(yùn)行時(shí)每走一步可觀察其運(yùn)行結(jié)果。

      ⑵在連續(xù)運(yùn)行狀態(tài)下,應(yīng)按“暫停圖標(biāo)”或?qū)嶒?yàn)箱上的“暫停按鈕”,使系統(tǒng)無條件退出用戶運(yùn)行狀態(tài)返回監(jiān)控,然后再用相應(yīng)的命令鍵觀察與檢查片內(nèi)50~5Ah中內(nèi)容是否按從小到大排列。

      五、思考:修改程序把50~5Ah中內(nèi)容按從小到大排列。

      ORG 0000H LJMP START ORG 0030H

      START:

      MOV R7,#09H MOV R6,#00H;清除標(biāo)志 CLR C MOV A,@R0 INC R0 SUBB A,@R0 JC LOOP1 MOV R6,#01H DEC R0 MOV A,@R0 INC R0 XCH A,@R0 MOV @R0,A DJNZ R7,START1 CJNE R6,#00H,START SJMP $ END

      MOV R0,#50H START1:

      DEC R0

      INC R0 LOOP1:

      實(shí)驗(yàn)一(3)選擇結(jié)構(gòu)程序設(shè)計(jì)

      一、實(shí)驗(yàn)?zāi)康?/p>

      掌握匯編語(yǔ)言的編程。

      二、實(shí)驗(yàn)內(nèi)容

      編寫程序,根據(jù)送入的數(shù)據(jù)轉(zhuǎn)移運(yùn)行。

      三、程序框圖

      四、實(shí)驗(yàn)步驟

      ORG 0000H

      LJMP START

      ORG 0030H START: MOV 20H,#00H MOV A,20H

      MOV B,#03H

      MUL AB

      MOV DPTR,#TAB

      JMP @A+DPTR

      SJMP $ ORG 3000H TAB:

      LOOPA: MOV A,#01H LOOPA1:

      LOOPB: MOV A,#03H LOOPB1:

      LOOPC: MOV A,#07H LOOPC1:

      DELAY1S: DELAY1S3: DELAY1S2: DELAY1S1:

      LJMP LOOPA LJMP LOOPB LJMP LOOPC MOV P1,A LCALL DELAY1S RL A LJMP LOOPA1 MOV P1,A LCALL DELAY1S RL A LJMP LOOPB1 MOV P1,A LCALL DELAY1S RL A LJMP LOOPC1 MOV R7,#5 MOV R6,#200 MOV R5,#250 DJNZ R5,DELAY1S1 DJNZ R6,DELAY1S2 DJNZ R7,DELAY1S3 RET END

      實(shí)驗(yàn)二 中斷實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      熟悉單片機(jī)中斷概念及中斷編程方法。

      二、實(shí)驗(yàn)內(nèi)容

      編寫程序,從P3.3輸入脈沖,記錄輸入脈沖個(gè)數(shù),并用P1口外部鏈接的發(fā)光二極管顯示計(jì)數(shù)結(jié)果。

      二、參考程序

      ORG 0000H

      LJMP START

      ORG 0013H

      LJMP INT1_COUNT

      ORG 0030H START:

      MOV SP,#60H

      MOV A,#00H

      SETB IT1;下降邊沿觸發(fā)方式

      SETB EX1;開啟INT1中斷

      SETB EA

      SJMP $ INT1_COUNT:

      INC A

      MOV P1,A

      RETI

      END

      實(shí)驗(yàn)三 LED顯示實(shí)驗(yàn)

      一、實(shí)驗(yàn)要求

      利用實(shí)驗(yàn)系統(tǒng)提供的顯示設(shè)備,動(dòng)態(tài)顯示一行數(shù)據(jù)。

      二、實(shí)驗(yàn)?zāi)康?/p>

      ⑴了解數(shù)碼管動(dòng)態(tài)顯示的原理; ⑵了解用總線方式控制數(shù)碼管顯示。

      三、實(shí)驗(yàn)說明

      UN2003芯片,是7個(gè)帶驅(qū)動(dòng)的反相器。8個(gè)數(shù)碼管均為共陰極接法。

      四、程序框圖

      匯編語(yǔ)言參考程序:

      ORG 0000H LJMP START ORG 0030H START: MOV SP,#60H MOV 50H,#8CH;顯示字符P.MOV 51H,#40H MOV 52H,#79H MOV 53H,#24H MOV 54H,#30H MOV 55H,#19H MOV 56H,#12H MOV 57H,#02H

      LOOP1: LCALL DISPLAY

      LJMP LOOP1

      DISPLAY: MOV P2,#0FH MOV P0,50H LCALL DELAY20MS

      MOV P2,#1FH MOV P0,51H LCALL DELAY20MS

      MOV P2,#2FH MOV P0,52H LCALL DELAY20MS

      MOV P2,#3FH MOV P0,53H LCALL DELAY20MS

      MOV P2,#4FH MOV P0,54H LCALL DELAY20MS

      MOV P2,#5FH MOV P0,55H LCALL DELAY20MS

      MOV P2,#6FH MOV P0,56H LCALL DELAY20MS

      MOV P2,#7FH MOV P0,57H LCALL DELAY20MS

      LJMP DISPLAY

      DELAY20MS: MOV R7,#20 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET

      TAB: DB 40H,79H,24H,30H,19H,12H,02H;0 1 2 3 4 5 6 DB 78H,00H,10H,08H,03H,46H,21H,06H,0EH;7 8 9 A B C D E F的字符碼

      TAB1: DB 8CH;P.TAB2: DB 7FH;END 的字符碼的字符碼

      空,不顯示的字符

      鍵盤電路實(shí)驗(yàn)

      電路圖:

      程序:

      ;用int1中斷實(shí)現(xiàn)按鍵功能,鍵值存放在4fh單元中;通過P1口輸出按鍵值,用發(fā)光二極管顯示按鍵值;通過P2.4--P2.6和三八譯碼器輸出八列按鍵掃描碼;通過P2.0---P2.3讀入按鍵的行值;行列值組合,就是按鍵的鍵值 ORG 0000H LJMP START ORG 0013H LJMP key_value ORG 0030H START: MOV 4fH,#00h;存放按鍵鍵值單元 MOV P1,#00H MOV P2,#0FFH setb ex1 setb it1 setb ea KEY_SCAN: MOV P2,#0FH LCALL DELAY5MS

      MOV P2,#1FH LCALL DELAY5MS

      MOV P2,#2FH

      LCALL DELAY5MS

      MOV P2,#3FH LCALL DELAY5MS

      MOV P2,#4FH LCALL DELAY5MS

      MOV P2,#5FH LCALL DELAY5MS

      MOV P2,#6FH LCALL DELAY5MS

      MOV P2,#7FH LCALL DELAY5MS

      LJMP KEY_SCAN

      DELAY5MS: MOV R7,#40 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET

      KEY_VALUE: PUSH ACC PUSH PSW MOV A,P2 MOV 4FH,A MOV P1,A POP PSW POP ACC RETI END

      LED和鍵盤綜合實(shí)驗(yàn)

      電路圖:

      參考程序:

      ORG 0000H LJMP START ORG 0013H LJMP KEY_VALUE ORG 0030H START: MOV SP,#60H

      MOV 4fH,#00h;存放按鍵鍵值單元 MOV P2,#0FFH setb ex1 setb it1 setb ea

      MOV 50H,#0CH;顯示字符P.MOV 51H,#0CH MOV 52H,#7FH MOV 53H,#7FH MOV 54H,#7FH MOV 55H,#7FH MOV 56H,#7FH

      MOV 57H,#0CH

      LOOP1: LCALL DISPLAY

      LJMP LOOP1

      DISPLAY: MOV P2,#0FH MOV P0,50H LCALL DELAY20MS

      MOV P2,#1FH MOV P0,51H LCALL DELAY20MS

      MOV P2,#2FH MOV P0,52H LCALL DELAY20MS

      MOV P2,#3FH MOV P0,53H LCALL DELAY20MS

      MOV P2,#4FH MOV P0,54H LCALL DELAY20MS

      MOV P2,#5FH MOV P0,55H LCALL DELAY20MS

      MOV P2,#6FH MOV P0,56H LCALL DELAY20MS

      MOV P2,#7FH MOV P0,57H LCALL DELAY20MS

      LJMP DISPLAY

      DELAY20MS: MOV R7,#20 DELAY1: MOV R6,#100 DELAY2: DJNZ R6,DELAY2 DJNZ R7,DELAY1

      RET

      KEY_VALUE: PUSH ACC PUSH PSW MOV 4FH,P2 LCALL KEY_VALUE_DISP POP PSW POP ACC RETI

      KEY_VALUE_DISP: MOV A,4FH ANL A,#0F0H SWAP A MOV DPTR,#TAB MOVC A,@A+DPTR MOV 56H,A MOV A,4FH ANL A,#0FH MOVC A,@A+DPTR MOV 57H,A RET

      TAB: DB 40H,79H,24H,30H,19H,12H,02H;0 1 2 3 4 5 6的字符碼 DB 78H,00H,10H,08H,03H,46H,21H,06H,0EH;7 8 9 A B C D E F的字符碼

      TAB1: DB 8CH;P.的字符碼

      TAB2: DB 7FH;空,不顯示的字符 END

      實(shí)驗(yàn)四 A/D轉(zhuǎn)換實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      (1)掌握A/D轉(zhuǎn)換與單片機(jī)接口的方法;(2)了解A/D芯片0809轉(zhuǎn)換性能及編程方法;(3)通過實(shí)驗(yàn)了解單片機(jī)如何進(jìn)行數(shù)據(jù)采集。

      二、實(shí)驗(yàn)內(nèi)容

      利用實(shí)驗(yàn)系統(tǒng)上的0809做A/D轉(zhuǎn)換器,實(shí)驗(yàn)系統(tǒng)上的電位器提供模擬量輸入,編制程序,將模擬量轉(zhuǎn)換成數(shù)字,通過數(shù)碼管顯示出來。

      三、程序框圖

      四、實(shí)驗(yàn)電路

      五、實(shí)驗(yàn)步驟

      把0809的零通道INT0用插針接至AINl孔,0809CS位FFE0孔,運(yùn)行程序,數(shù)碼管顯示0809.XX,后二位顯示當(dāng)前采集的電壓轉(zhuǎn)換的數(shù)字量,調(diào)節(jié)W1,該二位將隨著電壓變化而相應(yīng)變化。

      六、思考

      修改程序,用其它通道輪流采樣顯示。

      實(shí)驗(yàn)五 電腦時(shí)鐘(定時(shí)器、中斷綜合實(shí)驗(yàn))

      一、實(shí)驗(yàn)?zāi)康?/p>

      熟悉MCS-51定時(shí)器,串行口和中斷初始化編程方法,了解定時(shí)器的應(yīng)用實(shí)時(shí)程序的設(shè)計(jì)與調(diào)試技巧。

      二、實(shí)驗(yàn)內(nèi)容

      編寫程序,從本實(shí)驗(yàn)系統(tǒng)鍵盤上輸入時(shí)間初值,用定時(shí)器產(chǎn)生0.1S定時(shí)中斷,對(duì)時(shí)鐘計(jì)數(shù)器計(jì)數(shù),并將數(shù)值實(shí)時(shí)地送數(shù)碼管顯示。

      三、程序框圖

      四、實(shí)驗(yàn)步驟

      連續(xù)運(yùn)行程序,在鍵盤上輸入時(shí)間初值,按執(zhí)行鍵EXEC執(zhí)行,數(shù)碼管上實(shí)時(shí)顯示時(shí)間值。

      五、思考

      (1)電子鐘走時(shí)精度和程序中那些常數(shù)有關(guān)?

      (2)修改程序使定時(shí)器工作方式改變,調(diào)節(jié)有關(guān)參數(shù),進(jìn)一步提高精度。

      六、參考程序

      ORG 0000H LJMP START ORG 000BH LJMP T0_INT ORG 0030H START: MOV 50H,#00H;時(shí)的低位字符碼 MOV 51H,#00H;時(shí)的高位字符碼 MOV 52H,#00H;“-”的字符碼 MOV 53H,#00H;分的低位字符碼 MOV 54H,#00H;分的高位字符碼 MOV 55H,#00H;“-”的字符碼 MOV 56H,#00H;秒的低位字符碼 MOV 57H,#00H;秒的高位字符碼 MOV 5FH,#00H;存放小時(shí)的單元 MOV 5EH,#00H;存放分鐘的單元 MOV 5DH,#00H;存放秒的單元 MOV 5CH,#00H;存放T0中斷次數(shù),50次為1秒

      MOV SP,#60H;設(shè)置堆棧棧頂 MOV TH0,#???;設(shè)置T0定時(shí)器初值 MOV TL0,#??? MOV TMOD,#00000001H;T0工作在定時(shí)方式,工作方式0

      SETB ET0;開放T0中斷 SETB EA;開放總中斷 SETB TR0;啟動(dòng)定時(shí)器T0 LOOP: mov P2,#11111110H MOV R0,#50H loop1: MOV R7,#08H LOOP2: MOV A,@R0 MOV P1,A LCALL DELAY INC R0 MOV A,P2 RL A MOV P2,A

      DJNZ R7, LOOP2 LJMP LOOP SJMP $

      DELAY: MOV R6,#2;延時(shí)程序 DELAY1: MOV R5,#10 DELAY2: MOV R4,#100 DELAY3: DJNZ R4,DELAY3 DJNZ R5,DELAY2 DJNZ R6,DELAY1 RET 16

      T0_INT: CLR TR0 PUSH ACC MOV A,5CH CJNE A,#50H,T0_INT1 MOV 5CH,#00H MOV A,5DH CJNE A,#59H,T0_INT2 MOV 5DH,#00H MOV A,5EH CJNE A,#59H,T0_INT3 MOV 5EH,#00H MOV A,5FH CJNE A,#23H,T0_INT4 MOV 5FH,#00H LJMP T0_END T0_INT1: INC 5CH LJMP T0_END T0_INT2: INC 5DH LJMP T0_END T0_INT3: INC 5EH LJMP T0_END T0_INT4: INC 5FH T0_END: MOV A,5FH

      MOV B,#10 DIV AB MOV 51H,A MOV A,B MOV 50H,A MOV A,5EH MOV B,#10 DIV AB MOV 54H,A MOV A,B MOV 53H,A MOV A,5DH MOV B,#10 DIV AB MOV 57H,A MOV A,B MOV 56H,A POP ACC

      MOV TH0,#??? MOV TL0,#??? SETB TR0 RETI

      實(shí)驗(yàn)六 LCD液晶顯示屏實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      ⑴掌握單片機(jī)擴(kuò)展液晶顯示接口的設(shè)計(jì)與編程。⑵利用字符式液晶顯示器顯示字符。

      二、實(shí)驗(yàn)內(nèi)容

      編制程序,在液晶顯示器上顯示:

      學(xué)生所在的院系的漢語(yǔ)拼音字母和學(xué)生的名字。分兩行顯示。

      三、實(shí)驗(yàn)電路

      四、參考程序

      DAT1 EQU 30H;第一參數(shù)單元 DAT2 EQU 31H;第二參數(shù)單元 COM EQU 32H;指令代碼單元 C_ADD EQU 0100H;指令通道地址 D_ADD EQU 0000H;數(shù)據(jù)通道地址

      org 0000h ljmp main org 0030h;主程序

      MAIN: MOV SP,#60H;

      lcall delay;上電延時(shí)

      LCALL INT;初始化

      LCALL CLEAR;清緩沖區(qū)

      TEST: LCALL hgnu_disp;顯示“WELCOM TO HGNU” LCALL PL_XW_ZKB;顯示 “P_L :”

      “X_W :”

      “ZKB:” sjmp test

      ;上電延時(shí)子程序

      delay: MOV R6,#50H;MOV R7,#00H;DELY1: NOP

      DJNZ R7,DELY1;上電延時(shí)

      DJNZ R6,DELY1;ret;讀狀態(tài)字子程序

      R_ST: MOV DPTR,#C_ADD;設(shè)置指令通道

      MOVX A,@DPTR;RET;判斷狀態(tài)位STA1,STA0子程序(讀寫指令和數(shù)據(jù)),在指令的讀,寫

      ;數(shù)據(jù)之前這兩個(gè)標(biāo)志必須同時(shí)為“1” ST01: LCALL R_ST;JNB ACC.0,ST01;JNB ACC.1,ST01;RET;判斷狀位STA2子程序(數(shù)據(jù)自動(dòng)讀狀態(tài)),該位

      ;在數(shù)據(jù)自動(dòng)操作過程中取代STA0和STA1有效。在連續(xù)讀過程中每讀一次;之前都要確認(rèn)STA2=1 ST2: LCALL R_ST;JNB ACC.2,ST2;RET;判斷STA3子程序(數(shù)據(jù)自動(dòng)寫狀態(tài))ST3: LCALL R_ST;JNB ACC.3,ST3;RET;判斷狀態(tài)位STA6子程序(屏讀/屏拷貝狀態(tài))ST6: LCALL R_ST;JB ACC.6,ERR;RET ERR: LJMP ST6;;出錯(cuò)處理

      ;寫指令和寫數(shù)據(jù)子程序..;雙字節(jié)參數(shù)指令寫入入口

      PR1: LCALL ST01;判斷狀態(tài)位STA1,STA0 MOV A,DAT1;取第一參數(shù)單元數(shù)據(jù)

      LCALL PR13;寫入?yún)?shù);單字節(jié)參數(shù)指令寫入入口

      PR11: LCALL ST01;判斷狀態(tài)位STA1,STA0 MOV A,DAT2;取第二參數(shù)單元數(shù)據(jù)

      LCALL PR13;寫入?yún)?shù);無參數(shù)指令寫入入口

      PR12: LCALL ST01;無參數(shù)指令寫入入口

      MOV A,COM;取指令代碼單元數(shù)據(jù)

      MOV DPTR,#c_ADD;設(shè)置指令通道地址/數(shù)據(jù)寫入入口

      LJMP PR14;寫入指令代碼

      PR13: MOV DPTR,#D_ADD;設(shè)置數(shù)據(jù)通道地址/數(shù)據(jù)寫入入口 PR14: MOVX @DPTR,A;寫入操作

      RET;讀數(shù)據(jù)子程序 PR2: LCALL ST01;判斷狀態(tài)位

      MOV DPTR,#D_ADD;設(shè)置數(shù)據(jù)通道地址

      MOVX A,@DPTR;讀數(shù)據(jù)操作

      MOV DAT2,A;數(shù)據(jù)存入第二參數(shù)/數(shù)據(jù)單元

      RET;初始化子程序

      INT:

      ;顯示區(qū)域設(shè)置

      MOV DAT1,#00H;設(shè)置文本顯示區(qū)首地址

      MOV DAT2,#00h;

      MOV COM,#40H;LCALL PR1;雙字節(jié)參數(shù)指令寫入入口

      MOV DAT1,#16;設(shè)置文本顯示區(qū)域?qū)挾?/p>

      MOV DAT2,#00H;即一行顯示所占字節(jié)數(shù)

      MOV COM,#41H;LCALL PR1;雙字節(jié)參數(shù)指令寫入入口

      MOV DAT1,#00H;設(shè)置顯示區(qū)域首地址

      MOV DAT2,#00H;或文本屬性區(qū)域首地址

      MOV COM,#42H;LCALL PR1;雙字節(jié)參數(shù)指令寫入入口

      MOV DAT1,#10H;設(shè)置圖形顯示區(qū)域?qū)挾?/p>

      MOV DAT2,#00H;或?yàn)槲谋緦傩詤^(qū)域狂寬度

      MOV COM,#43H;即一行顯示所占字節(jié)數(shù)

      LCALL PR1;雙字節(jié)參數(shù)指令寫入入口

      ;顯示光標(biāo)設(shè)置

      MOV COM,#0A1H;光標(biāo)形狀設(shè)置

      LCALL PR12;

      ;設(shè)置光標(biāo)初始位置,是字符行和字符列,第0行第15列

      MOV DAT1,#0;光標(biāo)行位置

      MOV DAT2,#0;光標(biāo)列位置

      MOV COM,#21H;LCALL PR1;雙字節(jié)參數(shù)指令寫入入口

      ;顯示方式設(shè)置,使用內(nèi)部字符發(fā)生器

      MOV COM,#80H;顯示方式設(shè)置,邏輯“或”合成LCALL PR12;無參數(shù)指令寫入入口+

      ;顯示開關(guān)方式

      MOV COM,#97H;僅用文本顯示

      LCALL PR12;無參數(shù)指令寫入入口

      RET

      ;寫數(shù)據(jù)子程序,8*8點(diǎn)陣

      ;R6中裝入顯示位置的列數(shù)(字符的個(gè)數(shù)),每行16個(gè)字符,R7中裝入顯示位置距左上角的字符行數(shù)

      ;5FH單元中裝入待顯示的字符碼

      DISP: mov b,r7

      mov a,#16 mul ab mov r7,a CLR C mov a,R6

      ADD A,R7 MOV R6,A;R7*16+R6

      MOV DAT1,R6;設(shè)置顯示RAM首地址,水平方向字符數(shù)

      MOV DAT2,#00H;固定送00H MOV COM,#24H;地址指針指令

      LCALL PR1;MOV

      dat2,5fH;取要顯示的字符

      MOV COM,#0c4H;數(shù)據(jù)寫,地址不變

      LCALL PR11;寫入數(shù)據(jù)

      RET;清顯示緩沖區(qū)(16*8單元)clear: MOV 5FH,#00H

      MOV R5,#0 CLEAR0: MOV R4,#0 CLEAR1: MOV A,R5

      MOV R7,A MOV A,R4 MOV R6,A CLEAR2: LCALL DISP

      INC R4 CJNE R4,#16,CLEAR1

      mov r4,#00h

      INC R5

      CJNE R5,#8,CLEAR0 CLEAR9: RET;顯示頻率、相位、占空比、相位差等字符。(P_L :;PL_XW_ZKB:MOV R7,#3 MOV R6,#0 MOV

      5fh,#30H;“P” LCALL DISP MOV R7,#3 MOV R6,#1 MOV

      5fh,#3FH;“_” LCALL DISP MOV R7,#3 MOV R6,#2 MOV

      5fh,#2CH;“L”

      X_W :

      ZKB:)

      LCALL DISP MOV R7,#3 MOV R6,#3 MOV

      5fh,#1AH;“: ” LCALL DISP

      MOV R7,#5 MOV R6,#0 MOV

      5fh,#38H;“X” LCALL DISP MOV R7,#5 MOV R6,#1 MOV

      5fh,#3FH;“_” LCALL DISP MOV R7,#5 MOV R6,#2 MOV

      5fh,#37H;“W” LCALL DISP MOV R7,#5 MOV R6,#3 MOV

      5fh,#1AH;“: ” LCALL DISP

      MOV R7,#7 MOV R6,#0 MOV

      5fh,#3AH;“Z” LCALL DISP MOV R7,#7 MOV R6,#1 MOV

      5fh,#2BH;“K” LCALL DISP MOV R7,#7 MOV R6,#2 MOV

      5fh,#22H;“B ” LCALL DISP MOV R7,#7 MOV R6,#3 MOV

      5fh,#1AH;“: ” LCALL DISP RET;頂行顯示“黃岡師院物科院“的英文名稱。;”welcome to hgnu!“ hgnu_DISP:

      MOV R7,#0;顯示位置的行列數(shù)

      MOV R6,#0 MOV

      5fh,#37H;”W“ LCALL DISP MOV R7,#0 MOV R6,#1 MOV

      5fh,#25H;”E“ LCALL DISP MOV R7,#0 MOV R6,#2 MOV

      5fh,#2CH;”L“ LCALL DISP MOV R7,#0 MOV R6,#3 MOV

      5fh,#23H;”C“ LCALL DISP MOV R7,#0 MOV R6,#4 MOV

      5fh,#2FH;”0“ LCALL DISP MOV R7,#0 MOV R6,#5 MOV

      5fh,#2DH;”M“ LCALL DISP MOV R7,#0 MOV R6,#6 MOV

      5fh,#25H;”E“ LCALL DISP MOV R7,#0 MOV R6,#7 MOV

      5fh,#00H;” “ LCALL DISP MOV R7,#0 MOV R6,#8 MOV

      5fh,#34H;”T“ LCALL DISP MOV R7,#0 MOV R6,#9 MOV

      5fh,#2FH;”O(jiān)“ LCALL DISP MOV R7,#0 MOV R6,#10 MOV

      5fh,#00H;” “ LCALL DISP MOV R7,#0 MOV R6,#11 MOV

      5fh,#28H;”H“ LCALL DISP

      MOV R7,#0 MOV R6,#12 MOV

      5fh,#27H;”G“ LCALL DISP MOV R7,#0 MOV R6,#13 MOV

      5fh,#2EH;”N“ LCALL DISP MOV R7,#0 MOV R6,#14 MOV

      5fh,#35H;”U“ LCALL DISP RET tab: db 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h;”0-----9“

      db 21h,22h,23h,24h,25h,26h;”A-----F" end

      實(shí)驗(yàn)七 直流電機(jī)轉(zhuǎn)速測(cè)量與控制實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.掌握直流電機(jī)的驅(qū)動(dòng)原理。2.了解直流電機(jī)調(diào)速的方法。

      二、實(shí)驗(yàn)內(nèi)容

      1.用0832 D/A轉(zhuǎn)換電路后的輸出經(jīng)放大后驅(qū)動(dòng)直流電機(jī)。

      2.編制程序改變0832輸出經(jīng)放大后的方波信號(hào)的占空比來控制電機(jī)轉(zhuǎn)速。本實(shí)驗(yàn)中 D/A輸出為雙極性輸出,因此電機(jī)可以正反向旋轉(zhuǎn)。

      三、程序流程

      三、實(shí)驗(yàn)電路

      五、參考程序

      DATA_TH0 EQU 00H DATA_TL0 EQU 00H;信號(hào)周期為130ms DATA_TH1 EQU 20H DATA_TL1 EQU 00H;高電平時(shí)間65ms ORG 0000H LJMP MAIN ORG 0003H LJMP INT_0;啟動(dòng)電機(jī)按鍵

      ORG 000BH LJMP T_0;T0確定輸出信號(hào)的周期(或者頻率)

      ORG 0013H LJMP INT_1;電機(jī)轉(zhuǎn)動(dòng)方向控制按鍵

      ORG 001BH LJMP T_1;T1確定輸出信號(hào)高電平的時(shí)間期

      ORG 0030H MAIN: MOV SP,#60H CLR P1.0 CLR P1.1;關(guān)閉電機(jī)

      setb 20h.0;初始化電機(jī)正轉(zhuǎn)

      clr 20h.1;初始狀態(tài)時(shí),電機(jī)停止轉(zhuǎn)動(dòng)

      MOV TMOD,#11H SETB IT0 SETB EX0 SETB IT1 SETB EX1 SETB ET0 SETB ET1 SETB EA

      SJMP $

      T_0: JNB 20H.1,T_01;

      MOV TH1,#DATA_TH1

      MOV TL1,#DATA_TL1 SETB TR1

      MOV TH0,#DATA_TH0

      MOV TL0,#DATA_TL0

      SETB TR0

      JNB 20H.0,T_02

      setb P1.0

      clr P1.1

      LJMP T_05 T_02: clr P1.0

      setb P1.1

      LJMP T_05

      T_01: CLR P1.0

      CLR P1.1

      CLR TR0

      CLR TR1 T_05: RETI T_1: CLR TR1

      clr p1.0

      clr p1.1

      RETI int_1: CPL 20H.1;電機(jī)啟動(dòng)標(biāo)志求反,開啟電機(jī)或者關(guān)閉電機(jī)

      JNB 20H.1,INT_11;啟動(dòng)標(biāo)志不為1,則停止電機(jī),關(guān)閉定時(shí)器

      MOV TH1,#DATA_TH1;啟動(dòng)標(biāo)志為1,則開啟定時(shí)器1和定時(shí)器2,輸出PWM波

      MOV TL1,#DATA_TL1 SETB TR1

      MOV TH0,#DATA_TH0

      MOV TL0,#DATA_TL0

      SETB TR0

      JNB 20H.0,INT_12;轉(zhuǎn)動(dòng)方向標(biāo)志不為1,則反轉(zhuǎn),否則正轉(zhuǎn)

      setb P1.0

      clr P1.1

      LJMP INT_19 INT_12: clr P1.0

      setb P1.1

      LJMP INT_19 INT_11: CLR P1.0

      CLR P1.1

      CLR TR0

      CLR TR1 INT_19: RETI 26

      INT_0: CPL 20H.0 RETI END

      實(shí)驗(yàn)八 步進(jìn)電機(jī)控制實(shí)驗(yàn)

      一、實(shí)驗(yàn)?zāi)康?/p>

      1.了解步進(jìn)電機(jī)控制的基本原理。2.掌握步進(jìn)電機(jī)轉(zhuǎn)動(dòng)編程方法。

      二、實(shí)驗(yàn)內(nèi)容

      從鍵盤上輸入正、反轉(zhuǎn)命令,轉(zhuǎn)速參數(shù)和轉(zhuǎn)動(dòng)步數(shù)顯示在顯示器上,CPU再讀取顯示器上顯示的正、反轉(zhuǎn)命令,轉(zhuǎn)速級(jí)數(shù)(16級(jí))和轉(zhuǎn)動(dòng)步數(shù)后執(zhí)行。轉(zhuǎn)動(dòng)步數(shù)減為零時(shí)停止轉(zhuǎn)動(dòng)。

      三、實(shí)驗(yàn)電路圖

      四、參考程序

      ORG 0000H

      ljmp main ORG 000BH LJMP COUNT0

      ORG 001BH LJMP COUNT1 ORG 0100H MAIN: MOV P0,#0FFH;輸送脈沖口,SETB P1.2;MOV R0,#1;延時(shí)變化變量 LOOP1: MOV P0,#0FCH LCALL DELAY MOV P0,#0F6H LCALL DELAY MOV P0,#0F3H LCALL DELAY MOV P0,#0F9H LCALL DELAY JNB P1.2,LOOP2 MOV TMOD,#01010101B MOV TH0,#0FFH MOV TL0,#0FFH MOV TH1,#0FFH MOV TL1,#0FFH SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A JMP LOOP1 LOOP2: MOV P0,#0FCH LCALL DELAY MOV P0,#0F9H LCALL DELAY MOV P0,#0F3H LCALL DELAY MOV P0,#0F6H LCALL DELAY JB P1.2,LOOP1 MOV TMOD,#01010101B MOV TH0,#0FFH MOV TL0,#0FFH MOV TH1,#0FFH MOV TL1,#0FFH 28

      SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A JMP LOOP2 SJMP $ COUNT0: MOV TH0,#0FFH;減速中斷 MOV TL0,#0FFH CJNE R0,#9,L4 JMP L5 L4: INC R0

      L5: setb TR0 RETI COUNT1: MOV TH1,#0FFH;加速中斷 MOV TL1,#0FFH CJNE R0,#1,L6 JMP L7 L6: DEC R0 L7: setb TR1 RETI DELAY: MOV A,R0;延時(shí) MOV R1,A L1: MOV R2,#50 L2: MOV R3,#250 L3: DJNZ R3,L3 DJNZ R2,L2 DJNZ R1,L1 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;顯示程序查表,共陰 END

      第五篇:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)

      實(shí)驗(yàn)

      一、MCS51單片機(jī)基本開發(fā)環(huán)境

      1. 實(shí)驗(yàn)?zāi)康模?/p>

      1)熟悉軟件的集成開發(fā)環(huán)境 2)掌握單片機(jī)軟件設(shè)計(jì)流程

      3)掌握單片機(jī)存貯器結(jié)構(gòu)及各窗口之間的聯(lián)系 2. 實(shí)驗(yàn)內(nèi)容:

      1)用三種方法實(shí)現(xiàn)將累加器A內(nèi)容改為20H

      方法1--MOV A,#20H 方法2—MOV R0,#20H MOV A,R0 方法3—MOV R0,#20H XCH A,R0 心得:越往下做實(shí)驗(yàn)時(shí)就越感覺這題根本不能說是題目,但不得不說在沒接觸過編程軟件,剛開始學(xué)的匯編,第一次做的實(shí)驗(yàn)就光這道題都覺得不知道做什么.所以凡是總有開始,不了解情況的多簡(jiǎn)單的都會(huì)覺得難.2)將58H位單元置為1,觀察內(nèi)部RAM中2BH內(nèi)容的變化 代碼:

      SETB 2BH.0 JMP $ END 心得:這是關(guān)于內(nèi)部存儲(chǔ)中對(duì)單元和字節(jié)了解,不理解很容易做錯(cuò).比如開始寫的指令為

      MOV R0,#58H;MOV @R0,#1

      這是錯(cuò)誤的指令。這就需要認(rèn)真去了解單片機(jī)中的字節(jié)地址與位地址的關(guān)系。80C51中有位尋址區(qū)和字節(jié)尋址區(qū)。題目中58H為位地址,2BH為字節(jié)地址,且58H為2B字節(jié)的最低位。由于58H屬于位尋址區(qū),可用位操作指令 SETB 進(jìn)行置位,SETB 2BH.0 執(zhí)行后,2BH中內(nèi)容變?yōu)椋埃?/p>

      3)如果當(dāng)前狀態(tài)為有進(jìn)位、工作寄存器使用區(qū)2,請(qǐng)用3種方法設(shè)置這種狀態(tài)

      代碼:

      ANL PSW,#01H MOV A,PSW

      CJNE A,#01,LAB2 LAB1:JMP LAB1

      LAB2: SETB PSW.4 MOV P0,#01H MOV R0,#18H CLR PSW.3 MOV C,P0.0 MOV PSW,R0 MOV PSW.4,C CPL C MOV PSW.3,C END

      心得:以上LAB2寫了三段代碼,可分別完成題目要求。不過實(shí)驗(yàn)時(shí)只是對(duì)代碼進(jìn)行了錯(cuò)誤調(diào)試,沒有對(duì)結(jié)果進(jìn)行檢驗(yàn)。其中值得注意的是對(duì)于布爾(位)操作指令的用法,比如傳送指令必須經(jīng)累加器C,如第二段中MOV P0,#01H;MOV C,P0.0,以及對(duì)于位尋址的方式(如需用到“.”隔開)的應(yīng)用。4)編一個(gè)小程序?qū)?nèi)部RAM中的20H單元的內(nèi)容送到21H單元并調(diào)試

      代碼:

      MOV R0,#20H MOV @R0,#10H MOV R1,#21H MOV @R1,20H JMP $ END

      5)用程序?qū)⒍褩V羔樦赶?0H,然后在堆棧中依次壓入01,02,03,04,05五個(gè)數(shù),觀察哪些單元內(nèi)容發(fā)生了變化,各變?yōu)槎嗌伲繌哪男┐翱诳梢园l(fā)現(xiàn)這些變化?順序?qū)⒍褩V械奈鍌€(gè)數(shù)放入30H~34H五個(gè)單元中,編程實(shí)現(xiàn)之。

      代碼:

      MOV R1,#60H MOV SP,R1 MOV DPL,#1H LAB1:PUSH DPL INC DPL MOV A,DPL CJNE A,#6,LAB1 POP 34H POP 33H POP 32H POP 31H POP 30H JMP $ END

      6)將外部數(shù)據(jù)存貯器1000H~100FH 16個(gè)單元中存放00H~0FH 代碼:

      MOV DPTR,#1000H MOV R1,#10H LOOP:MOVX @DPTR,#1234H MOVX A,@DPTR MOV @R1,A INC DPTR INC R1 CJNE R1,#40H,LOOP JMP $ END

      心得:此處需要訪問片外存儲(chǔ)空間,需要借助寄存器DPTR,需注意其為16位的寄存器,在使用時(shí)若與八位寄存器進(jìn)行數(shù)據(jù)交換時(shí)需分為高八位DPH與低八位DPL來用。7)若要求程序從0010H單元開始運(yùn)行,可用兩種方法實(shí)現(xiàn)?

      方法一 ORG 0010H 方法二 AJMP 0010H

      3. 選做實(shí)驗(yàn)內(nèi)容:數(shù)據(jù)傳送 目的:

      1)掌握8051單片機(jī)內(nèi)部數(shù)據(jù)存貯器、外部數(shù)據(jù)存貯器的數(shù)據(jù)傳送特點(diǎn)和應(yīng)用 2)掌握MOV,MOVX和MOVC類指令的用法及區(qū)別 內(nèi)容:

      1)將片內(nèi)RAM數(shù)據(jù)區(qū)20H為首地址的十六個(gè)字節(jié)傳送到30H為首地址的數(shù)據(jù)區(qū),即:20H~2FH送30H~3FH

      代碼: ORG 0000H JMP MAIN ORG 0030H MAIN:MOV R0,#20H MOV R1,#30H LOOP:MOV @R0,#1234H MOVA,@R0 MOV @R1,A INC R0 INC R1 CJNE R1,#30H,LOOP JMP $ END

      2)將外部數(shù)據(jù)存儲(chǔ)器2000H~200FH單元的十六個(gè)數(shù)傳送至內(nèi)部數(shù)據(jù)存儲(chǔ)器的30H~3FH 代碼: ORG 0000H JMP MAIN ORG 0030H MAIN: MOV DPTR,#2000H MOV R1,#30H LOOP:MOVX @DPTR,#12H MOVX A,@DPTR MOV @R1,A INC DPTR INC R1 CJNE R1,#40H,LOOP JMP $ END

      總體心得體會(huì):

      第一次做實(shí)驗(yàn)主要是熟悉了解了下單片機(jī)編程軟件的使用,開始接觸時(shí)在對(duì)其軟件不是太了解的情況下實(shí)驗(yàn)編程做的確實(shí)很亂,不清楚該怎樣進(jìn)行,比如不知如何進(jìn)行對(duì)指令的調(diào)試,也不清楚該如何觀察結(jié)果,沒有一個(gè)整體的概念,所以在了解其開發(fā)環(huán)境上花了不少時(shí)間。經(jīng)過一段時(shí)間的摸索后也終于了解了其具體的使用,也能夠順利的對(duì)指令的編程運(yùn)用。運(yùn)行指令時(shí)遇到的一些問題需要注意的也在上面各題中做了說明。還有需要注意的是:進(jìn)入軟件仿真時(shí)需要對(duì)存儲(chǔ)空間進(jìn)行查看的方法是在Address窗口中輸入:d:00h 顯示內(nèi)部數(shù)據(jù)存儲(chǔ)器從00h開始的單元; x:1000h 顯示外部數(shù)據(jù)存儲(chǔ)器從1000h開始的單元; c:0000H 顯示程序存儲(chǔ)器內(nèi)容。還有由于偽指令 END 定義的原因,在程序末需加一條死循環(huán)調(diào)轉(zhuǎn)指令(如 JMP $)使程序不會(huì)進(jìn)入其他未知空間執(zhí)行其他指令。實(shí)驗(yàn)

      二、加、減法實(shí)驗(yàn)

      1. 實(shí)驗(yàn)?zāi)康?/p>

      1)正確使用單片機(jī)的加減運(yùn)算指令

      2)掌握不同指令對(duì)于程序狀態(tài)字的影響及程序狀態(tài)字的意義、用處 3)掌握ADD,ADDC,SUBB和DA A等指令的用法 4)學(xué)習(xí)模塊化程序設(shè)計(jì)方法 2. 實(shí)驗(yàn)內(nèi)容

      1)編寫3字節(jié)二進(jìn)制加法子程序,并用主程序調(diào)用不同的加數(shù)和被加數(shù)來檢測(cè)該子程序的正確性。需考慮有進(jìn)位和無進(jìn)位情況。程序入口為: 加數(shù):22H,21H,20H三字節(jié),22H為最高位

      被加數(shù):32H,31H,30H三字節(jié),32H為最高位

      程序出口為: 23H,22H,21H,20H四字節(jié),23H為最高位 例如:地址:23 22 21 20 32 31 30 執(zhí)行前數(shù)據(jù): 01 23 45 FF 01 01 執(zhí)行后數(shù)據(jù):01 00 24 46

      代碼:

      ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 22H,#01H MOV 21H,#23H MOV 20H,#45H MOV 32H,#0FFH MOV 1H,#01H MOV 30H,#01H ACALL ADDI HERE:JMP HERE ORG 100H ADDI: PUSH PSW MOV R0, #20H;加數(shù)1地址、和的地址 MOV R1, #30H;加數(shù)2地址 CLR C MOV R2, #3;循環(huán)3次 LOOP: MOV A, @R0;取 ADDC A, @R1;加 MOV @R0, A;存 INC R0 INC R1 DJNZ R2, LOOP CLR A ADDC A, #0;得到進(jìn)位 MOV 23H, A;保存 POP PSW RET END

      2)編寫三字節(jié)二進(jìn)制減法子程序 入口:被減數(shù): 52H,51H,50H, 50H為最低位

      減數(shù): 42H,41H,40H, 40H為最低位

      出口:差:外部數(shù)據(jù)存貯器2003H~2000H(2000H為最低位)用主程序調(diào)用多組數(shù)據(jù)來調(diào)試,需考慮無借位和有借位兩種情況。例如:

      執(zhí)行前:地址: 52 51 50 42 41 40

      數(shù)據(jù): 90 80 70 10 10 10

      執(zhí)行后:地址: 2003 2002 2001 2000

      數(shù)據(jù): 00 80 70 60 代碼:

      ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 52H,#90H MOV 51H,#80H MOV 50H,#70H MOV 42H,#10H MOV 41H,#10H MOV 40H,#10H ACALL SUB1 HERE:JMP HERE SUB1: PUSH PSW MOV R0, #50H;被減數(shù)地址 MOV R1, #40H;減數(shù)地址 MOV DPTR, #2000H;差的地址 CLR C MOV R2, #3;循環(huán)3次 LOOP: MOV A, @R0;取 SUBB A, @R1;減 MOVX @DPTR, A;存 INC R0 INC R1 INC DPTR DJNZ R2, LOOP CLR A SUBB A, #0;得到借位 MOVX @DPTR, A;存 POP PSW RET END

      3)編寫10位十進(jìn)制加法子程序(十進(jìn)制數(shù)采用壓縮BCD碼存放)入口: 加數(shù):24H—20H,低地址放低字節(jié)

      被加數(shù):29H—25H,低地址放低字節(jié)

      出口 和:4005H—4000H,低地址放低字節(jié)

      要求調(diào)用多組數(shù)據(jù)調(diào)試,注意觀察PSW的變化,理解DA A指令的含義。例如:

      執(zhí)行前地址:24 23 22 21 20 29 28 27 26 25

      數(shù)據(jù):12 34 56 78 90 88 99 33 12 74

      執(zhí)行后地址:4005 4004 4003 4002 4001 4000

      數(shù)據(jù): 01 01 33 89 91 64

      代碼:

      ORG 0000H AJMP MAIN ORG 30H MAIN: MOV 24H,#12H MOV 23H,#34H MOV 22H,#56H MOV 21H,#78H MOV 20H,#90H MOV 29H,#88H MOV 28H,#99H MOV 27H,#33H MOV 26H,#12H MOV 5H,#74H ACALL ADD2 HERE:JMP HERE ADD2: PUSH PSW MOV R0, #20H;加數(shù)1地址 MOV R1, #25H;加數(shù)2地址 MOV DPTR,#4000H CLR C MOV R2, #5;循環(huán)5次 LOOP: MOV A, @R0;取 ADDC A, @R1;加

      DA A;調(diào)整為BCD碼 MOVX @DPTR, A;存 INC R0 INC R1 INC DPTR DJNZ R2, LOOP POP PSW RET END

      下載2013單片機(jī)實(shí)驗(yàn)教案word格式文檔
      下載2013單片機(jī)實(shí)驗(yàn)教案.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        單片機(jī)實(shí)驗(yàn)

        實(shí)驗(yàn)一清0、移數(shù) 將片內(nèi)20H~2FH及片外0010H~001FH單元清0; 然后將片內(nèi)30H~3FH的數(shù)據(jù)移到片外0000H~000FH中;判斷: 若(30H)≤10,則求其平方存到31H中,并將位00H置1(其它位清0) 若(30H)=1......

        單片機(jī)實(shí)驗(yàn) 2

        單片微型計(jì)算機(jī)原理、應(yīng)用及接口技術(shù) 實(shí)驗(yàn)報(bào)告 得分: 年級(jí)專業(yè): 測(cè)控1303班學(xué)生姓名/學(xué)號(hào):崔振振/201323030325 評(píng)閱教師: 提交時(shí)間:2015—2016學(xué)年第1學(xué)期 單片機(jī)實(shí)驗(yàn)1匯編語(yǔ)......

        單片機(jī)實(shí)驗(yàn)心得體會(huì)

        單片機(jī)實(shí)驗(yàn)心得體會(huì) 單片機(jī)實(shí)驗(yàn)心得體會(huì)一:?jiǎn)纹瑱C(jī)實(shí)驗(yàn)心得體會(huì) 時(shí)間過得真快,不經(jīng)意間,一個(gè)學(xué)期就到了尾聲,進(jìn)入到如火如荼的期末考試階段。在學(xué)習(xí)單片機(jī)這門課程之前,就早早的......

        單片機(jī)液晶顯示實(shí)驗(yàn)

        實(shí)驗(yàn)八 單片機(jī)液晶顯示實(shí)驗(yàn) 一、實(shí)驗(yàn)?zāi)康?1、了解液晶顯示屏的控制原理及方法。 2、了解點(diǎn)陣漢字的顯示原理。 二、實(shí)驗(yàn)說明 1、 利用實(shí)驗(yàn)上的液晶顯示屏電路,編寫程序控制......

        單片機(jī)實(shí)驗(yàn)小結(jié)

        單片機(jī)實(shí)驗(yàn)小結(jié) 這學(xué)期的單片機(jī)實(shí)驗(yàn)課程已經(jīng)結(jié)束了,雖然做的實(shí)驗(yàn)是比較簡(jiǎn)答的,但麻雀雖小五臟俱全,因此自己也通過實(shí)驗(yàn)課學(xué)到了很多知識(shí)。 單片機(jī)實(shí)驗(yàn)課是為了更好的學(xué)習(xí)單片機(jī)......

        單片機(jī)實(shí)驗(yàn)總結(jié)

        單片機(jī)原理及接口技術(shù)實(shí)驗(yàn)總結(jié) 本學(xué)期的單片機(jī)實(shí)驗(yàn)轉(zhuǎn)眼已到尾聲,共做了六項(xiàng)實(shí)驗(yàn),分別是KEIL4、ISP下載軟件的安裝于使用、P1口輸出循環(huán)燈實(shí)驗(yàn)、P1口轉(zhuǎn)彎燈實(shí)驗(yàn)、P3.3口輸入......

        單片機(jī)實(shí)驗(yàn)指導(dǎo)書

        單片機(jī)實(shí)驗(yàn)指導(dǎo)書實(shí)驗(yàn)說明實(shí)驗(yàn)1:定時(shí)控制實(shí)驗(yàn) 要求:電路連接與編程相結(jié)合,控制燈按一定規(guī)律點(diǎn)亮和熄滅。 注意:燈為低電平驅(qū)動(dòng)。 實(shí)驗(yàn)報(bào)告:說明燈亮的方式;畫出實(shí)際電路圖、程序流......

        單片機(jī)實(shí)驗(yàn)三

        實(shí)驗(yàn)三 單片機(jī)I/O口控制程序?qū)嶒?yàn) 一、實(shí)驗(yàn)?zāi)康暮鸵螅?掌握單片機(jī)串行傳輸輸入輸出的應(yīng)用方法。 二、實(shí)驗(yàn)設(shè)備: 安裝了THGY51的計(jì)算機(jī),單片機(jī)實(shí)驗(yàn)箱。 三、實(shí)驗(yàn)內(nèi)容和步驟: 1、......