




已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實驗一 I/O口輸入輸出實驗一、實驗目的 掌握單片機P1口、P3口的使用方法。 二、實驗內容 以P1 口為輸出口,接八位邏輯電平顯示,LED 顯示跑馬燈效果。以P3 口為輸入口,接八位邏輯電平輸出,用來控制跑馬燈的方向。 三、實驗要求 根據(jù)實驗內容編寫一個程序,并在實驗儀上調試和驗證。四、實驗步驟 1)系統(tǒng)各跳線器處在初始設置狀態(tài)。用導線連接八位邏輯電平輸出模塊的K0 到CPU 模塊的RXD(P3.0 口); 用8 位數(shù)據(jù)線連接八位邏輯電平顯示模塊的JD4B 到CPU 模塊JD8(P1 口)。 2)啟動PC 機,打開THGMW-51 軟件,輸入源程序,并編譯源程序。編譯無誤后,下載程序 運行。 3)觀察發(fā)光二極管顯示跑馬燈效果,撥動K0 可改變跑馬燈的方向。 五、實驗參考程序;/* ;文件名: Port for MCU51 ;功能: I/O口輸入、輸出實驗 ;接線: 用導線連接八位邏輯電平輸出模塊的K0到CPU模塊的RXD(P3.0口); ; 用8位數(shù)據(jù)線連接八位邏輯電平顯示模塊的JD2B到CPU模塊的JD8(P1口)。 ;/* DIR BIT P3.0 ORG 0000H LJMP START ORG 0100H START: OUTPUT1: MOV A, #0FEH MOV R5, #8 LOOP1: CLR C MOV C,DIR JC OUTPUT2 MOV P1, ARL AACALL DELAY DJNZ R5, LOOP1 SJMP OUTPUT1 OUTPUT2: MOV A, #07FH MOV R5, #8 LOOP2: CLR C MOV C,DIR JNC OUTPUT1 MOV P1, A RR A ACALL DELAY DJNZ R5,LOOP2 SJMP OUTPUT2 DELAY: MOV R6,#0 DELAYLOOP1: MOV R7,#0 DELAYLOOP2: NOP NOP DJNZ R7,DELAYLOOP2 DJNZ R6,DELAYLOOP1 RETEND 6、 實驗結果當八位邏輯電平的K0撥到上方,即輸出高電平時,實驗箱B5區(qū)的八個LED燈從左至右循環(huán)點亮,當K0撥到下方,即輸出低電平時,八個LED燈從右至左循環(huán)點亮。7、 結果分析程序通過查詢方式不斷檢測P3.0口的輸入狀態(tài),當P3.0輸入為0時,由P1口通過左移指令RL輪流輸出低電平驅動LED發(fā)光,在左移時通過軟件延時控制LED 亮的時間;當P3.0輸入為1時,由P1口通過右移指令RR輪流輸出低電平驅動LED發(fā)光,在右移時同樣通過軟件延時控制LED 亮的時間,如此循環(huán)掃描查詢,便可實現(xiàn)流水燈的效果。實驗二 外部中斷實驗一、實驗目的 學習外部中斷技術的基本使用方法。 二、實驗內容 INT0 端接單次脈沖發(fā)生器。按一次脈沖產生一次中斷,CPU 使P1.0 狀態(tài)發(fā)生一次反轉,P1.0接LED 燈,以查看信號反轉。 三、實驗要求 根據(jù)實驗內容編寫一個程序,并在實驗儀上調試和驗證。四、實驗步驟 1)系統(tǒng)各跳線器處在初始設置狀態(tài),用導線連接單次脈沖模塊的輸出端到CPU 模塊的P32;CPU 模塊的P10 接八位邏輯電平顯示模塊的燈。 2)啟動PC 機,打開THGMW-51 軟件,輸入源程序,并編譯源程序。編譯無誤后,下載程序運行。 3)連續(xù)按動單次脈沖產生電路的按鍵,發(fā)光二極管L0 每按一次狀態(tài)取反,即隔一次點亮。 五、實驗參考程序 ;/* ;文件名: EXint for MCU51 ;功能: 外部中斷實驗 ;接線: 導線連接單次脈沖模塊的輸出端到CPU模塊的P32, ; CPU模塊的P10接八位邏輯電平顯示模塊的L0燈。 ;/* LED BIT P1.0 LEDBUF BIT 20H ORG 0 LJMP START ORG 3 INTERRUPT0: PUSH PSW ; 保護現(xiàn)場 CPL LEDBUF ; 取反LED MOV C, LEDBUF MOV LED, C POP PSW ; 恢復現(xiàn)場 RETI START: CLR LEDBUF CLR LED MOV TCON, #01H ; 外部中斷0下降沿觸發(fā) MOV IE, #81H ; 打開外部中斷允許位(EX0)及總中斷允許位(EA) OK: LJMP OK END 六、實驗結果每按下E3區(qū)的單次脈沖觸發(fā)按鈕時,B5區(qū)的發(fā)光二極管狀態(tài)取反一次,即原來是亮按下時滅,原來是滅則按下時亮。7、 結果分析 程序由外部中斷0實現(xiàn),外部中斷0由下降沿觸發(fā),外部輸入由單次脈沖觸發(fā)器輸入,每次按下按鈕時會觸發(fā)單次脈沖,產生一個下降沿,從而使程序產生中斷,在中斷服務函數(shù)的程序里面對P1.0取反,由P1.0驅動LED,就可實現(xiàn)本實驗的功能。實驗三 定時/計數(shù)器實驗一、實驗目的學習MCS-51 內部計數(shù)器的使用和編程方法。二、實驗內容使用MCS-51 內部定時/計數(shù)器,定時一秒鐘,CPU 運用定時中斷方式,實現(xiàn)每一秒鐘輸出狀態(tài)發(fā)生一次反轉,即發(fā)光管每隔一秒鐘亮一次。三、實驗要求根據(jù)實驗內容編寫一個程序,并在實驗儀上調試和驗證。4、 實驗步驟1)系統(tǒng)各跳線器處在初始設置狀態(tài),用導線連接CPU 模塊P10 到八位邏輯電平顯示模塊的L0。2)啟動PC 機,打開THGMW-51 軟件,輸入源程序,并編譯源程序。編譯無誤后,下載程序運行。3)運行程序觀察發(fā)光二極管隔一秒點亮一次,點亮時間為一秒。五、實驗參考程序;/*;文件名: TIMER FOR MCU51;功能: 定時/計數(shù)器實驗;接線: 導線連接CPU模塊P10到八位邏輯電平顯示模塊的L0.;/* TICK EQU 10000 ; 10000 X 100US = 1S T100US EQU 156 ; 100US時間常數(shù)(6M) C100US EQU 30H ; 100US記數(shù)單元 LEDBUF BIT 20H ORG 0 LJMP START ORG 000BHT0INT: PUSH PSW MOV A, C100US+1 JNZ GOON DEC C100USGOON: DEC C100US+1 MOV A, C100US ORL A, C100US+1 JNZ EXIT ; 100US 記數(shù)器不為0, 返回 MOV C100US, #27H ; #HIGH(TICK) MOV C100US+1, #10H ; #LOW(TICK) CPL LEDBUF ; 100US 記數(shù)器為0, 重置記數(shù)器 ; 取反LEDEXIT: POP PSW RETISTART: MOV TMOD, #02H ; 方式2, 定時器 MOV TH0, #T100US MOV TL0, #T100US MOV IE, #10000010B ; EA=1, IT0 = 1 SETB TR0 ; 開始定時 CLR LEDBUF CLR P1.0 MOV C100US, #27H ;#HIGH(TICK) MOV C100US+1, #10H ;#LOW(TICK)LOOP: MOV C, LEDBUF MOV P1.0, C LJMP LOOPEND6、 實驗結果運行程序之后,B5區(qū)的發(fā)光二極管L0隔一秒點亮一次,每次點亮時間為一秒。七、結果分析 本實驗通過定時器0的方式2實現(xiàn)精確定時,但定時器的最長定時時間達不到一秒,所以通過一個時間變量實現(xiàn),總的定時時間等于定時器定時時間乘以時間變量初值,這樣就可實現(xiàn)一秒的定時,程序通過掃描不斷檢測時間變量的值,當定時時間一秒到時,對P1.0的狀態(tài)取反,實現(xiàn)L0每隔一秒亮一次。實驗四 交通燈控制實驗一、實驗目的掌握十字路口交通燈控制方法。二、實驗內容利用系統(tǒng)提供的雙色LED 顯示電路,和四位靜態(tài)數(shù)碼管顯示電路模擬十字路口交通信號燈。4 位LED 數(shù)碼管顯示時間,LED 顯示紅綠燈狀態(tài)。三、實驗要求根據(jù)實驗內容編寫一個程序,并在實驗儀上調試和驗證。四、實驗步驟1)系統(tǒng)各跳線器處在初始設置狀態(tài)。P10 同時接G1、G3;P11 同時接R1、R3;P1.2 同時接G2、G4;P1.3 同時接R2、R4;P1.6、P1.7 分別接靜態(tài)數(shù)碼顯示的DIN、CLK。2)啟動PC 機,打開THGMW-51 軟件,輸入源程序,并編譯源程序。編譯無誤后,下載程序運行。3)觀察十字路口交通燈效果。五、實驗參考程序;/*;文件名:交通燈程序 FOR MCU51;功能:雙色LED模擬交通燈信號,并通過調用靜態(tài)數(shù)碼顯示狀態(tài)時間。;接線:P1.0同時接G1、G3,P1.1接R1、R3,P1.2接G2、G4,P1.3同時接R2、R4,;P1.6、P1.7接靜態(tài)數(shù)碼顯示的DIN、CLK。;/* SECOND1 EQU 30H ;東西秒寄存器 SECOND2 EQU 31H ;南北秒寄存器 DBUF EQU 40H ;顯示緩沖1 TEMP EQU 44H ;顯示緩沖2 LED_G1 BIT P1.0 ;東西綠燈 LED_R1 BIT P1.1 ;東西紅燈 LED_G2 BIT P1.2 ;南北綠燈 LED_R2 BIT P1.3 ;南北紅燈 DIN BIT P1.6 ;串行顯示數(shù)據(jù) CLK BIT P1.7 ;串行顯示時鐘 ORG 0000H LJMP START ORG 0100HSTART: LCALL STATE0 ;調用狀態(tài)0 LCALL DELAY ;調用延時 MOV TMOD,#01H ;置T0工作方式1 MOV TH0, #3CH ;置T0定時初值50MS MOV TL0, #0B0H SETB TR0 ;啟動T0 CLR EALOOP: MOV R2,#20 ;置1S計數(shù)初值 50MS*20=1S MOV R3,#20 ;紅燈20S MOV SECOND1,#25 ;東西秒顯示初值25S MOV SECOND2,#25 ;南北秒顯示初值25S LCALL DISPLAY LCALL STATE1 ;調用狀態(tài)1WAIT1: JNB TF0,WAIT1 ;查詢50MS到否 CLR TF0 MOV TH0, #3CH ;恢復T0定時初值50MS MOV TL0, #0B0H SETB TR0 ;啟動T0 DJNZ R2,WAIT1 ;判1S到否?未到繼續(xù)狀態(tài)1 MOV R2,#20 ;置50MS計數(shù)初值 DEC SECOND1 ;東西秒顯示減一 DEC SECOND2 ;南北秒顯示減一 LCALL DISPLAY DJNZ R3,WAIT1 ;狀態(tài)1維持20S MOV R2,#5 ;置50MS計數(shù)初值 5*4=20 MOV R3,#3 ;綠燈閃3S MOV R4,#4 ;閃爍間隔200MS MOV SECOND1,#5 ;東西秒顯示初值5S MOV SECOND2,#5 ;南北秒顯示初值5S LCALL DISPLAYWAIT2: LCALL STATE2 ;調用狀態(tài)2 JNB TF0,WAIT2 ;查詢50MS到否 CLR TF0 MOV TH0, #3CH ;恢復T0定時初值50MS MOV TL0, #0B0H DJNZ R4,WAIT2 ;判200MS到否?未到繼續(xù)狀態(tài)2 CPL LED_G1 ;東西綠燈閃 MOV R4,#4 ;閃爍間隔200MS DJNZ R2,WAIT2 ;判1S到否?未到繼續(xù)狀態(tài)2 MOV R2,#5 ;置50MS計數(shù)初值 DEC SECOND1 ;東西秒顯示減一 DEC SECOND2 ;南北秒顯示減一 LCALL DISPLAY DJNZ R3,WAIT2 ;狀態(tài)2維持3S MOV R2,#20 ;置50MS計數(shù)初值 MOV R3,#2 ;黃燈2S MOV SECOND1,#2 ;東西秒顯示初值2S MOV SECOND2,#2 ;南北秒顯示初值2S LCALL DISPLAYWAIT3: LCALL STATE3 ;調用狀態(tài)3 JNB TF0,WAIT3 ;查詢30MS到否 CLR TF0 MOV TH0, #3CH ;恢復T0定時初值50MS MOV TL0, #0B0H DJNZ R2,WAIT3 ;判1S到否?未到繼續(xù)狀態(tài)3 MOV R2,#20 ;置50MS計數(shù)初值 DEC SECOND1 ;東西秒顯示減一 DEC SECOND2 ;南北秒顯示減一 LCALL DISPLAY DJNZ R3,WAIT3 ;狀態(tài)3維持2S MOV R2,#20 ;置50MS計數(shù)初值 MOV R3,#20 ;紅燈20S MOV SECOND1,#25 ;東西秒顯示初值25S MOV SECOND2,#25 ;南北秒顯示初值25S LCALL DISPLAYWAIT4: LCALL STATE4 ;調用狀態(tài)4 JNB TF0,WAIT4 ;查詢50MS到否 CLR TF0 MOV TH0, #3CH ;恢復T0定時初值50MS MOV TL0, #0B0H DJNZ R2,WAIT4 ;判1S到否?未到繼續(xù)狀態(tài)4 MOV R2,#20 ;置50MS計數(shù)初值 DEC SECOND1 ;東西秒顯示減一 DEC SECOND2 ;南北秒顯示減一 LCALL DISPLAY DJNZ R3,WAIT4 ;狀態(tài)4維持20S MOV R2,#5 ;置50MS計數(shù)初值 5*4=20 MOV R4,#4 ;閃爍間隔200MS MOV R3,#3 ;綠燈閃3S MOV SECOND1,#5 ;東西秒顯示初值5S MOV SECOND2,#5 ;南北秒顯示初值5S LCALL DISPLAYWAIT5: LCALL STATE5 ;調用狀態(tài)5 JNB TF0,WAIT5 ;查詢50MS到否 CLR TF0 MOV TH0, #3CH ;恢復T0定時初值100MS MOV TL0, #0B0H DJNZ R4,WAIT5 ;判200MS到否?未到繼續(xù)狀態(tài)5 CPL LED_G2 ;南北綠燈閃 MOV R4,#4 ;閃爍200MS DJNZ R2,WAIT5 ;判1S到否?未到繼續(xù)狀態(tài)5 MOV R2,#5 ;置100MS計數(shù)初值 DEC SECOND1 ;東西秒顯示減一 DEC SECOND2 ;南北秒顯示減一 LCALL DISPLAY DJNZ R3,WAIT5 ;狀態(tài)5維持3S MOV R2,#20 ;置50MS計數(shù)初值 MOV R3,#2 ;黃燈2S MOV SECOND1,#2 ;東西秒顯示初值2S MOV SECOND2,#2 ;南北秒顯示初值2S LCALL DISPLAYWAIT6: LCALL STATE6 ;調用狀態(tài)6 JNB TF0,WAIT6 ;查詢100MS到否 CLR TF0 MOV TH0, #3CH ;恢復T0定時初值100MS MOV TL0, #0B0H DJNZ R2,WAIT6 ;判1S到否?未到繼續(xù)狀態(tài)6 MOV R2,#20 ;置100MS計數(shù)初值 DEC SECOND1 ;東西秒顯示減一 DEC SECOND2 ;南北秒顯示減一 LCALL DISPLAY DJNZ R3,WAIT6 ;狀態(tài)6維持2S LJMP LOOP ;大循環(huán)STATE0: ;狀態(tài)0 MOV P1,#0 CLR LED_G1 SETB LED_R1 ;東西紅燈亮 CLR LED_G2 SETB LED_R2 ;南北紅燈亮 RETSTATE1: ;狀態(tài)1 SETB LED_G1 ;東西綠燈亮 CLR LED_R1 CLR LED_G2 SETB LED_R2 ;南北紅燈亮 RETSTATE2: ;狀態(tài)2 CLR LED_R1 CLR LED_G2 SETB LED_R2 ;南北紅燈亮 RETSTATE3: ;狀態(tài)3 SETB LED_G1 SETB LED_R1 ;東西黃燈亮 CLR LED_G2 SETB LED_R2 ;南北紅燈亮 RETSTATE4: ;狀態(tài)4 CLR LED_G1 SETB LED_R1 ;東西紅燈亮 SETB LED_G2 ;南北綠燈亮 CLR LED_R2 RETSTATE5: ;狀態(tài)5 CLR LED_G1 SETB LED_R1 ;東西紅燈亮 CLR LED_R2 RETSTATE6: ;狀態(tài)6 CLR LED_G1 SETB LED_R1 ;東西紅燈亮 SETB LED_G2 SETB LED_R2 ;南北黃燈亮 RETDISPLAY: ;數(shù)碼顯示 MOV A, SECOND1 ;東西秒寄存器 MOV B, #10 ;16進制數(shù)拆成兩個10進制數(shù) DIV AB MOV DBUF+1,A MOV A,B MOV DBUF, A MOV A, SECOND2 ;南北秒寄存器 MOV B, #10 ;16進制數(shù)拆成兩個10進制數(shù) DIV AB MOV DBUF+3, A MOV A,B MOV DBUF+2, A MOV R0,#DBUF MOV R1,#TEMP MOV R7,#4DP10:MOV DPTR,#LEDMAP MOV A,R0 MOVC A,A+DPTR MOV R1,A INC R0 INC R1 DJNZ R7,DP10 MOV R0,#TEMP MOV R1,#4DP12:MOV R7,#8 MOV A,R0DP13:RLC A MOV DIN,C CLR CLK SETB CLK DJNZ R7,DP13 INC R0 DJNZ R1,DP12 RETLEDMAP: DB 3FH,6,5BH,4FH,66H,6DH ;0,1,2,3,4,5 DB 7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,B DB 58H,5EH,7BH,71H,0,40H ;C,D,E,F(xiàn), , -DELAY: MOV R5, #5DLOOP0:MOV R6, #0DLOOP1:MOV R7, #0DLOOP2: NOP NOP DJNZ R7, DLOOP2 DJNZ R6, DLOOP1 DJNZ R5, DLOOP0 RETEND六、實驗結果程序開始運行后,B5區(qū)模擬的東西紅燈亮,南北綠燈亮,同時兩個方向的數(shù)碼管分別從25秒開始倒計時,當?shù)褂嫊r到5秒時,南北綠燈閃亮3秒后變黃,再過2秒,即倒計時到0時,變?yōu)闁|西綠燈亮,南北紅燈亮,同時兩個方向的數(shù)碼管分別同時從25秒開始倒計時,但倒計時到5秒時,東西綠燈閃亮3秒后變黃,再過2秒之后又回到初始狀態(tài),繼續(xù)循環(huán)運行。七、結果分析 本實驗通過雙色的LED模擬交通燈的顯示狀態(tài),并用靜態(tài)數(shù)碼管結合定時器實現(xiàn)定時及顯示功能,將交通燈的顯示分為六個不同的狀態(tài),程序運行之后進行計數(shù)顯示,當計時時間到達某一個狀態(tài)之后,跳轉進入相應的狀態(tài)執(zhí)行,執(zhí)行完之后繼續(xù)進入下一個狀態(tài),實驗通過程序模擬了交通燈的顯示。實驗五 串轉并與并轉串實驗一、實驗目的1掌握使用74LS164 擴展輸出的方法。2掌握使用74LS165 擴展輸入的方法。二、實驗內容使用74LS165 擴展輸入數(shù)據(jù),使用74LS164 擴展輸出數(shù)據(jù)。74LS165 的并行口接八位邏輯電平輸出(開關),CPU 使用P1.0、P1.1 和P1.2 串行讀入開關狀態(tài);74LS164 的并行口接一只數(shù)碼管,CPU 使用P1.3 和P1.4 串行輸出剛讀入的開關狀態(tài),使之在數(shù)碼管上顯示出來。三、實驗要求根據(jù)實驗內容編寫一個程序,并在實驗儀上調試和驗證。四、實驗步驟1)系統(tǒng)各跳線器處在初始設置狀態(tài)。用導線對應連接八位邏輯電平輸出模塊的QH165、CLK165、SH/LD 到CPU 模塊的P10、P11、P12。用導線對應連接靜態(tài)數(shù)碼管顯示模塊的DIN、CLK 到CPU 模塊的P13、P14。2)啟動PC 機,打開THGMW-51 軟件,輸入源程序,并編譯源程序。編譯無誤后,下載程序運行。3)觀察數(shù)碼(八段碼)管的亮滅與撥動開關的狀態(tài)是否一致。撥動開關撥下輸出為低電平,段碼點亮。五、實驗參考程序;/*;/*文件名:164165 串轉并,并轉串實驗程序;功能:把開關量通過74*165串行輸入到內存,并通過74*164串行輸出到數(shù);碼管上顯示。;接線:P1.0接QH165,P1.1接CLK165,P1.2接SH_LD,;P1.3、P1.4接靜態(tài)數(shù)碼顯示的DIN、CLK。;/* QH165 BIT P1.0 CLK165 BIT P1.1 SH_LD BIT P1.2 DAT164 BIT P1.3 CLK164 BIT P1.4 MEMORY EQU 30H ORG 0000H AJMP START ORG 00B0H START: SETB CLK165 CLR SH_LD SETB SH_LD MOV R7, #8INPUT: RR A MOV C, QH165 MOV ACC.7, C CLR CLK165 NOP SETB CLK165 DJNZ R7, INPUT MOV MEMORY,A MOV A,MEMORY MOV R6,#8OUTPUT: RRC A MOV DAT164,C CLR CLK164 SETB CLK164 DJNZ R6, OUTPUT ACALL DELAY SJMP STARTDELAY: MOV R0,#5DD2: MOV R1,#0FFH DJNZ R1,$ DJNZ R0,DD2 RET END六、實驗結果當把E4區(qū)的八位邏輯電平的撥碼開關K0K7向上撥時,即邏輯電平輸出高電平時,B4區(qū)的四位數(shù)碼管的段碼AH依次點亮,即K0K7每一段向上撥時,對應的AH數(shù)碼管段碼點亮。7、 結果分析 實驗通過74LS165八位邏輯電平的并行輸出數(shù)據(jù)轉成串行數(shù)據(jù),輸入單片機的P1.0口,再通過P1.3輸出到74LS164的數(shù)據(jù)輸入端,再由164的串轉并輸出口驅動數(shù)碼管的八位段碼,從而實現(xiàn)了并轉串、串轉并的功能。實驗六 8255 控制鍵盤與顯示實驗一、實驗目的1掌握8255 輸入、輸出編程方法。2掌握陣列鍵盤和數(shù)碼管動態(tài)掃描顯示的控制方法。二、實驗內容用8255 可編程并行口做一個鍵盤、顯示掃描實驗,把按鍵輸入的鍵值,顯示在8255 控制的七段數(shù)碼管上。8255 PB 口做鍵盤輸入線,PC 口做顯示掃描線,PA 口做顯示數(shù)據(jù)線。三、實驗要求根據(jù)實驗內容編寫一個程序,并在實驗儀上調試和驗證。四、實驗步驟1)系統(tǒng)各跳線器處在初始設置狀態(tài),S11E 和S12E 紅開關全部打到下方(OFF)。2)用8 位數(shù)據(jù)線對應連接8255 模塊的JD3C(PA 口)、JD4C(PB 口)、JD5C(PC 口)到8279模塊的JD3E、JD2E、JD4E;用導線連接8255 模塊的CS_8255 到地。3)啟動PC 機,打開THGMW-51 軟件,輸入源程序,并編譯源程序。編譯無誤后,下載程序運行。4)在鍵盤上按任一單鍵,觀察數(shù)碼管的顯示,數(shù)碼管低位顯示按鍵值。五、實驗參考程序;/*;文件名: 8255KD FOR MCU51;功能: 8255控制鍵盤顯示實驗;接線: 連接8279鍵盤顯示模塊的JD3E到8255模塊的JD3C(PA口);JD2E到8255模塊的JD4C(PB口);JD4E到8255模塊的JD5C(PC口);用導線連接8255模塊的CS_8255到地。;/*D8255A EQU 8000H ;8255 PA 口地址D8255B EQU 8001H ;8255 PB 口地址D8255C EQU 8002H ;8255 PC 口地址D8255 EQU 8003H ;8255 狀態(tài)/命令口地址LEDBUF EQU 50H ;顯示緩存KEYVAL EQU 60H ;讀到的鍵碼 ORG 0000H LJMP START ORG 0100H START: MOV SP,#80H MOV DPTR,#D8255 MOV A,#90H ;方式0,PB,PC口輸出,PA口輸入 MOVX DPTR,A MOV LEDBUF,#10H MOV LEDBUF+1,#11H MOV LEDBUF+2,#11H MOV LEDBUF+3,#11H MOV LEDBUF+4,#5 MOV LEDBUF+5,#5 MOV LEDBUF+6,#2 MOV LEDBUF+7,#8 KB_DIS: LCALL RD_KB ;讀鍵盤 MOV A,#0FFH CJNE A,KEYVAL,TOSHOW ;判讀到鍵 SJMP SHOW ;沒有則繼續(xù)讀鍵TOSHOW: MOV LEDBUF,KEYVAL SHOW: LCALL DISPLAY SJMP KB_DIS RD_KB: ;鍵盤掃描 MOV A,#02H ;掃描第一行 MOV DPTR,#D8255C MOVX DPTR,A MOV DPTR,#D8255A MOVX A,DPTR MOV R1,#00H CJNE A,#0FFH,KEYCAL ;判鍵是否按下 MOV A,#01H ;掃描第二行 MOV DPTR,#D8255C MOVX DPTR,A MOV DPTR,#D8255A MOVX A,DPTR MOV R1,#08H CJNE A,#0FFH,KEYCAL SJMP NOKEY ;無鍵按下KEYCAL: MOV R0,#08H ;計算鍵碼 SHIFT: RRC A JNC TORET INC R1 DJNZ R0,SHIFT SJMP NOKEY ;無鍵按下TORET: MOV KEYVAL,R1 RET NOKEY: MOV KEYVAL,#0FFH ;返回無鍵標志 RET DISPLAY: MOV R7,#8 ;8個數(shù)碼管 MOV R5,#0 MOV R0,#LEDBUF DLOOP: MOV A,R5 RL A RL A RL A ANL A,#11111011B INC R5 MOV DPTR,#D8255C MOVX DPTR,A ;點亮對應的LED MOV A,R0 MOV DPTR,#LEDSEG MOVC A,A+DPTR INC R0 MOV DPTR,#D8255B MOVX DPTR,A ;顯示數(shù)據(jù) LCALL DELAY DJNZ R7,DLOOP RETDELAY: PUSH R7 MOV R7,#200DELAYLOOP: NOP DJNZ R7,DELAYLOOP POP R7 RETLEDSEG: DB 3FH,06H,5BH,4FH,66H,6DH;0,1,2,3,4,5 DB 7DH,07H,7FH,6FH,77H,7CH;6,7,8,9,A,B DB 39H,5EH,79H,71H,00H,40H;C,D,E,F, ,-END6、 實驗結果程序運行后,E7區(qū)數(shù)碼管的前七位依次顯示“8 2 5 5 - - - 0”,當按下E7區(qū)的按鍵時,數(shù)碼管的前七位不變,依然顯示“8 2 5 5 - - -”,而第八位將顯示按下的鍵碼值,從0F。7、 結果分析 本實驗通過8255I/O擴展芯片以及8279鍵盤/顯示接口芯片為硬件基礎,實現(xiàn)了鍵盤輸入到數(shù)碼管輸出顯示的功能。程序中通過對鍵盤按下與否進行循環(huán)掃描,當有按鍵按下時,通過程序對鍵值進行計算,并將結果送到數(shù)碼管進行顯示。當無按鍵按下時,程序保持上一狀態(tài)繼續(xù)掃描,直到有不同的按鍵按下時狀態(tài)改變。由于矩陣按鍵及數(shù)碼顯示會用到較多的I/O口,而單片機的I/O口數(shù)量有限,所以利用8255對其進行擴展,再利用專門的鍵盤/顯示芯片8279實現(xiàn)鍵盤掃描和鍵值顯示的功能。實驗七 并行A/D 轉換實驗一、實驗目的1掌握ADC0809 模/數(shù)轉換芯片與單片機的連接方法及ADC0809 的典型應用。2掌握用查詢方式、中斷方式完成模/數(shù)轉換程序的編寫方法。二、實驗內容利用系統(tǒng)提供的ADC0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年稅法考試綜合提升試題及答案
- 二級VB考試能力考試試題及答案
- 計算機一級綜合練習試題及答案
- 建筑垃圾綜合利用的可持續(xù)發(fā)展與項目長遠規(guī)劃
- 社會實踐中的漢語考試試題及答案
- 企業(yè)供應鏈管理與優(yōu)化中的數(shù)字孿生技術應用研究
- 計算機一級wps考試學習計劃的設計試題及答案
- Photoshop新手必知試題及答案
- 淘氣堡樂園項目投資規(guī)模及資源配置
- 作品主題分析試題及答案探討
- (高清版)DB11∕T1008-2024建筑光伏系統(tǒng)安裝及驗收規(guī)程
- 天然氣泄露調查報告范文
- 《心臟驟停的急救護理》課件
- 做最勇敢的自己
- 2024年歷年江西農商銀行員工招聘筆試真題
- 電信行業(yè)能力作風建設推進心得體會
- 人工智能賦能科研管理
- GB/T 23694-2024風險管理術語
- 人教版初中八年級數(shù)學下冊《第二十章 數(shù)據(jù)的分析》大單元整體教學設計2022課標
- 金屬非金屬礦山安全作業(yè)實際操作考評標準
- 2024年惠州市博羅縣羅浮山文化旅游投資有限公司招聘筆試真題
評論
0/150
提交評論