版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2023/3/41有一句關(guān)于實踐的諺語是這樣說的:“我聽到的會忘掉,我看到的能記住,我做過的才真正明白?!?/p>
與大家共勉2023/3/42單片機實驗2023/3/43實驗系統(tǒng)有二種:
◆超想3000:桌面圖標(biāo)為hkcx
編譯選項或仿真模式:缺省或RAM:用戶
ROM:系統(tǒng)
◆Keil仿真開發(fā)系統(tǒng):桌面圖標(biāo)為Keil實驗程序:C:\HKCX\51asm關(guān)于單片機實驗實驗一2023/3/44◆超想3000:桌面圖標(biāo)為hkcx
連接:打開實驗箱電源,雙擊桌面圖標(biāo)hkcx,選串口1,點確定,工具欄顯示100%為連接成功;否則,關(guān)電腦窗口,再關(guān)實驗箱電源,稍后重試,直至工具欄顯示100%,連接成功。輸入源文件:點工具欄“新建”,在窗口輸入程序,另存為.asm文件,存儲路徑和文件名不能含中文,否則編譯通不過;源程序的編譯、連接、裝載:點擊工具欄“!”,編譯信息無錯則編譯、裝載通過;否則雙擊編譯信息中的出錯行可察看源文件中的出錯位置,修改后重新匯編、裝載,直至成功;(.omf或.hex文件可直接裝載調(diào)試,.lst文件為編譯結(jié)果列表文件)準(zhǔn)備調(diào)試:關(guān)閉編譯信息和源程序窗口,保留帶小手的調(diào)試窗口,再點視圖\寄存器、視圖\存儲空間1、視圖\存儲空間2,依調(diào)試需要察看的內(nèi)容,在存儲空間1或2的窗口點右鍵可選擇顯示程序存儲器、內(nèi)RAM、外RAM或SPF,然后點窗口\豎平鋪各窗口,準(zhǔn)備調(diào)試;調(diào)試:利用調(diào)試工具進行,可單步、設(shè)斷點并從當(dāng)前位置運行到斷點、運行到光標(biāo)、連續(xù)運行、停止、復(fù)位等,結(jié)合存儲器、寄存器等的查詢,判斷程序軟硬件的正誤,直至在相應(yīng)位置獲得相應(yīng)結(jié)果;修改:SPF:在寄存器窗口雙擊名稱,出現(xiàn)窗口,可改其它存儲區(qū):光標(biāo)移至相應(yīng)存儲區(qū)的相應(yīng)地址處直接改,16進制調(diào)試新程序:再打開一個新的源文件,匯編、裝載、調(diào)試即可。2023/3/45◆Keil仿真開發(fā)系統(tǒng):桌面圖標(biāo)為Keil打開實驗箱電源,雙擊圖標(biāo)keil進入仿真環(huán)境后:閃存\配置閃存工具\調(diào)試頁:選使用keilmonitor-51driver,選擊設(shè)置B波特率選38400,ok;項目-新項目-單片機機型:
intel8031AH-ok,出現(xiàn)新窗口,選否
存儲路徑和文件名也最好無中文。新建:輸入源程序.a后綴,保存在項目路徑下。打開目標(biāo)前的+,右鍵單擊源代碼組1,選“添加新建源程序文件到組‘源代碼組1’編譯和加載:點擊工具欄雙箭頭箭頭圖標(biāo),進行編譯連接,編譯信息0錯0報警,生成.lst編譯結(jié)果列表文件、.obj目標(biāo)文件等調(diào)試:調(diào)試\啟動調(diào)試,選單步、斷點、全速運行等,看結(jié)果,停止程序運行可按實驗箱“RST”鍵內(nèi)存窗口:調(diào)試狀態(tài)下,點視圖\存儲器窗口,在地址欄輸入
X:0000回車:為外RAM,右鍵單擊該單元可改,但輸入值為10進制,存儲區(qū)顯示為16進制
D:0000回車:內(nèi)RAM
C:0000回車:PC程序存儲區(qū)調(diào)試新程序:調(diào)試完后,在停止調(diào)試狀態(tài)下,單擊源代碼組刪除調(diào)試好的源文件,然后關(guān)掉調(diào)試好的源文件窗口,再重新輸入一個新.a源文件,添加到源代碼組1中,編譯加載,進入調(diào)試狀態(tài)進行調(diào)試。或項目\關(guān)閉項目,開始建立新項目。2023/3/46
實驗:4,5,7,8,實驗4:利用脈沖源DOWN做計數(shù)信號源見指導(dǎo)書P7之1.1.3實驗5:中斷源也由脈沖源DOWN充當(dāng)可試驗電平觸發(fā)和邊沿觸發(fā)的不同之處。試驗7:開關(guān)量發(fā)生器見指導(dǎo)書P7之1.1.2試驗8:脈沖源為DOWN實驗二2023/3/47實驗?zāi)康模菏煜ら_發(fā)環(huán)境了解調(diào)試步驟學(xué)習(xí)如何看實驗結(jié)果?學(xué)習(xí)如何解釋實驗現(xiàn)象?2023/3/48“驗證式” 實驗4定時/記數(shù)器(試驗4atc.asm)
ORG0000h MOVTMOD,#05h MOVTH0,#00H MOVTL0,#00H SETBTR0 SETBEA SJMP$ END利用脈沖源DOWN做計數(shù)信號源見指導(dǎo)書P7之1.1.3計數(shù)方式中止程序運行,觀察TL0的值是否與輸入脈沖數(shù)一樣。2023/3/49; “驗證式” 實驗5中斷系統(tǒng)(模擬調(diào)試)
ORG0000H
SJMPMAIN
ORG0013H
LJMPINTER1MAIN:
ORLIE,#84H;EA=1,ET1=1,開總中,INT1中
ORLIP,#04H;優(yōu)先級PX1=1
SJMP$INTER1:NOP
NOP
RETI
END復(fù)位時TCON=0,電平方式觸發(fā)若IT1=1則沿觸發(fā)中斷源也由脈沖源DOWN充當(dāng)可試驗電平觸發(fā)和邊沿觸發(fā)的不同之處。該程序:使用外部中斷1,電平觸發(fā)方式。(1)設(shè)INTER1處為斷點,實時運行程序。(2)按DOWN(INT1腳置低電平),響應(yīng)斷點,表明中斷被響應(yīng)。2023/3/410“驗證式” 實驗7P1口輸入輸出實驗
ORG0000H
CLRP1.3DD1:JBP1.3,DD
CLRP1.2;熄滅
DD2:CALLDELY
SJMPDD1DD:SETBP1.2;點亮
SJMPDD2DELY:MOVR6,#00H;延時
DELY1:MOVR7,#00HDELY2:DJNZR7,DELY2
DJNZR6,DELY1
RET
END 開關(guān)量發(fā)生器見指導(dǎo)書P7之1.1.2(1)編寫程序?qū)崿F(xiàn)當(dāng)P1.3為低電平時,發(fā)光管亮;P1.3為高電平時,發(fā)光管滅。(2)修改程序在執(zhí)行讀P1.3之前,先執(zhí)行CLRP1.3,觀察結(jié)果是否正確,分析在第二種情況下程序為什么不能正確執(zhí)行,理解讀引腳和讀鎖存器區(qū)別。2023/3/411;“驗證式”實驗二P3.0口輸入P1口輸出;P3.0口輸入一脈沖,控制P1口按16進制加1方式點亮發(fā)光二極管
ORG0000hMOVA,#00HMOVP1,AL0812:JBP3.0,L0812;判斷P3.0為高嗎?MOVR2,#10HLCALLDELYJBP3.0,L0812;延時后再判斷P3.0為高嗎?L081D:JNBP3.0,L081D;P3.0為低嗎?MOVR2,#10HLCALLDELYJNBP3.0,L081D;延時后再判斷P3.0為低嗎?INCA;累加器加1PUSHACCMOVP1,A;A送P1口
POPACCAJMPL0812DELY:PUSH02H ;延時子程序
……
RET END實驗步驟:P3.0孔用連線連至K0,P1.0-P1.7孔連至L0-L7,K0撥動一次,L0-L7發(fā)光二極管按16進制方式加一閃亮。P3.0口輸入一脈沖,控制P1口按16進制加一方式點亮發(fā)光二極管。2023/3/412;“驗證式”實驗176264RAM擴展實驗
ORG0000HSTART:MOVDPTR,#8000H;往6264的8000H-9FFFH單元送入#55HMOVA,#55HDD:MOVX@DPTR,AINCDPTRmovr0,dphCJNer0,#0A0H,DDMOVDPTR,#8000hDD1:MOVXA,@DPTR;讀出數(shù)據(jù)進行比較
CJNEA,#55H,ERRINCDPTRMOVR0,DPHCJNER0,#0A0H,DD1OK:ERR:END2023/3/413實驗十:鍵盤掃描和顯示實驗
參考程序:A8155.asm實驗三、四2023/3/414實驗十的電路圖見下頁。PA口經(jīng)反向驅(qū)動器輸出位選信號PB的PB0、PB1口經(jīng)74LS164輸出段碼。8155:CE接YC6I/M接P2.0,即當(dāng)P2.0=1時選中8155I/O口。據(jù)實驗指導(dǎo)書P6頁圖知:P2.72.62.52.4,2.32.22.12.0,P0.70.60.50.4,0.30.20.10.01110,×××1,
×
×××,
×
0
0
0E100H命令口
001E101H
A口
010E102H
B口
011
E103H
C口2023/3/4152023/3/416實驗十的電路圖見上頁。PA口經(jīng)反向驅(qū)動器輸出位選信號,PB口經(jīng)74LS164輸出段碼。
PB0:數(shù)據(jù)位PB1:時鐘位
二者地址都是E102H
PA口:同時輸出鍵盤掃描的列掃描信號
PC口:低4位為鍵盤行信號輸入口顯示時:只要向數(shù)據(jù)位地址的PB0輸出數(shù)據(jù),然后向時鐘位PB0輸出一高一低兩個電平就可將PB0上的數(shù)據(jù)置到74LS164中,實現(xiàn)移位。方法:①將段碼送A中,通過RLCA,最高位進入C中,然后再把C送ACC.0,
②然后A與#0FDH,先令A(yù)CC.1=0,將A從PB口送出(這樣就把段碼的最高位送PB0,同時PB1=0);
③再A與#02H,令A(yù)CC.1=1,將A從PB口送出;
④再A與#0FDH,令A(yù)CC.1=0,將A從PB口送出;即移位將段碼最高位移入PB0,然后讓PB1從0→1→0,就完成一位段碼移位至164中重復(fù)左移A及以上命令,就可將8位段碼串入并出到164的輸出端,到達LED段碼端。這時再從PA口送位選碼,就可實現(xiàn)一位LED的顯示。
2023/3/4172023/3/4182列1列3列4列5列6列PA0PA2PA1PA3PA4PA5(0)0
(F)A(B)9
(5)2
(6)5
(7)8
(1)1
(2)4
(3)7(4)FSTEP
(C)D
(8)E
(9)3
(D)C
(E)B
(A)6RSTPC3PC2PC1PC01行2行0行3行V+●C口輸入A口輸出列掃描字鍵值(藍(lán)色)=(列號-1)×4+行號鍵碼(紅色)=由鍵值查鍵碼表獲得。(表首+鍵值)鍵碼表:00H,01H,04H,07H,0FH,02H,05H,08H,0EH,03H,06H,09H,0DH,0CH,0BH,0AH…如按A鍵:鍵值=3×4+3=F對應(yīng)程序A8155.asm中Getkey部分2023/3/419GetKey:movdptr,#OUTBIT;指向PA口
movP2,dph;高8地址送P2movr0,#Low(IN);PC口低8址送R0movr1,#00100000b;列掃描字送R1movr2,#6;列號送R2,從6列掃起KLoop:mova,r1;找出鍵所在列,送PA.5=0cplamovx@dptr,acplarramovr1,a;下一列,掃描字存R1
movxa,@r0;PC口取反留低4送Acplaanla,#0fhjnzGoon1;A≠0該列有鍵入
djnzr2,KLoop
movr2,#0ffh
;無鍵,令鍵值=0ffhsjmpExitKeyTable:;數(shù)字鍵碼定義
db00h,01h,04h,07hdb0fh,02h,05h,08hdb0eh,03h,06h,09hdb0dh,0ch,0bh,0ahdb10H,10H,10H,10H,10Hdb10H,10H,10H,10H,10HGoon1:movr1,a;鍵值=列-1)X4+行
mova,r2;列送R2,行信息送R1decarlarlamovr2,a;r2=(列-1)*4mova,r1;r1中為讀入的行值送Amovr1,#4;共4行送R1存LoopC:rrca;移位找出按鍵所在行
jcExit;PC.0=1,0行有鍵轉(zhuǎn)EXIT
incr2
;r2=r2+行值(行值加1)
djnzr1,LoopC;4行查完否Exit:mova,r2
;查表取出鍵碼
movdptr,#KeyTablemovca,@a+dptrmovr2,aWaitRelease:movdptr,#OUTBIT;等鍵釋放
clramovx@dptr,amovr6,#10callDelaycallTestKeyjnzWaitRelease
mova,r2
;鍵碼在A中
ret2023/3/420Start:movsp,#40hmovdptr,#0e100hmova,#03hmovx@dptr,amovLEDBuf,#0ffh;顯示8.8.8.8.movLEDBuf+1,#0ffhmovLEDBuf+2,#0ffhmovLEDBuf+3,#0ffh
movLEDBuf+4,#0movLEDBuf+5,#0MLoop:callDisplayLED;顯示
callTestKey;有鍵入?jzMLoop;無鍵入,繼續(xù)顯示
callGetKey;讀入鍵碼
anla,#1fh;顯示鍵碼
movdptr,#LEDMapmovca,@a+dptrmovLEDBuf+5,a;段碼送65HljmpMLoopnop
END;"驗證式?實驗二?鍵盤掃描顯示實驗OUTBITequ0e101h;位控制口CLK164equ0e102h;段控制口(接164時鐘位)DAT164equ0e102h;段控制口(接164數(shù)據(jù)位)IN
equ0e103h;鍵盤讀入口LEDBufequ60h;顯示緩沖
ljmpStartLEDMAP:;八段管顯示碼
db3fh,06h,5bh,4fh,66h,6dh,7dh,07hdb7fh,6fh,77h,7ch,39h,5eh,79h,71hdb00HDelay:movr7,#0;延時子程序DelayLoop:djnzr7,DelayLoopdjnzr6,DelayLoopretTestKey:movdptr,#OUTBITmova,#0movx@dptr,a;輸出線置為0movdptr,#INmovxa,@dptr;讀入鍵狀態(tài)
cplaanla,#0fh;高四位不用
ret2023/3/421DisplayLED:movr0,#LEDBuf;顯緩區(qū)首值送R0movr1,#6;共6個八段LED管
movr2,#00100000b;從最左邊開始顯示Loop:movdptr,#OUTBIT;PA口送位選信號
mova,#0movx@dptr,a;關(guān)所有八段管
mova,@r0;取第1個待顯碼
movB,#8;1位LED共八段送164DLP:rlcamovr3,a;左移結(jié)果暫存R3movacc.0,c;待顯碼最高位送acc.0
movdptr,#DAT164
;8155PB口,輸出段碼和時鐘信號(接164數(shù)據(jù)位和時鐘位)
anla,#0fdhmovx@dptr,a;位PB1=0movdptr,#CLK164
orla,#02hmovx@dptr,a;位PB1=0
anla,#0fdhmovx@dptr,a;位PB1=0mova,r3djnzB,DLP;8段需循環(huán)8次送到164movdptr,#OUTBIT;送位選碼
mova,r2movx@dptr,a;顯示一位八段管
movr6,#1;延時去閃爍
callDelaymova,r2;顯示下一位
rramovr2,a;下一位位選碼存R2
incr0;顯緩區(qū)增址
djnzr1,Loop;6位全送一遍顯示了嗎?
ret位PB0=段碼最高位即acc.0位PB1=以上語句將段碼最高位即acc.0位送到1642023/3/422三路A/D輪流轉(zhuǎn)換,結(jié)果分別送片內(nèi)20H,21H,22HORG0000HLJMPSTARTORG0013LJMPINTI
START:SETBIT1
;設(shè)INT1邊沿觸發(fā)
SETBEA;開總中
SETBEX1;開INT1中
MOVR0,#20H;存轉(zhuǎn)換結(jié)果指針
MOVR1,#00H;模擬通道數(shù)初始化
MOVR7,#03H;3路模擬量待轉(zhuǎn)
MOVDPTR,#0FEFFH;0808地址
MOVA,R1;通道號送AMOVX@DPTR,A;啟動轉(zhuǎn)換
HERE:LJMPHERE
INIT:MOVDPTR,#0FEFFH;讀轉(zhuǎn)換結(jié)果
MOVXA,@DPTRMOV@R0,A;存轉(zhuǎn)換結(jié)果
INCR0;存數(shù)指針增1
INCR1;通道號增1
DJNZR7,EXITMOVR0,#20H;3路轉(zhuǎn)換完了,各指針復(fù)原
MOVR1,#00HMOVR7,#03H
EXIT:MOVDPTR,#0FEFFH;0808地址
MOVA,R1;通道號送AMOVX@DPTR,A;啟動轉(zhuǎn)換
RETI5.15
設(shè)8031ADC0808和DAC0832的接口電路,要求有三路模擬量輸入,三路模擬量輸出,并編寫相應(yīng)程序。A/D圖如書上D/A圖:P2.4接0832①CS1P2.5接0832②CS2P2.6接0832③CS3P2.7接0832①②③XFER5.15題程序:2023/3/423有一句關(guān)于實踐的諺語是這樣說的:“我聽到的會忘掉,我看到的能記住,我做過的才真正明白?!?/p>
與大家共勉2023/3/424實驗16:步進電機控制P1.0P1.1P1.2P1.3實驗五2023/3/425■按下圖控制步進電機旋轉(zhuǎn):實現(xiàn)方式:正反轉(zhuǎn):分別作正轉(zhuǎn)和反轉(zhuǎn)的控制字表,通過查表查得控制字,從P1口輸出;
調(diào)速:加速:減少兩次控制字輸出之間的時間間隔
減速:增加兩次控制字輸出之間的時間間隔2023/3/426控制字和轉(zhuǎn)動方向:存放在20H單元20H的最高位(位地址為07H)代表轉(zhuǎn)動方向,=1,正轉(zhuǎn);=0,反轉(zhuǎn)20H的低2位為查表找4相的控制線的依據(jù)42H為延時計數(shù)器,數(shù)大,延時時間長步數(shù)存放單元:R7=100步07H06H05H04H03H02H01H00H20H反轉(zhuǎn)控制字表CTAB:
79H:01111001;
AD相得電7cH:01111100;
DC相得電76H:01110110;
CB相得電73H:01110011;
BA相得電正轉(zhuǎn)控制字表FTAB:
0F3H:11110011;AB相得電0F6H:11110110;BC相得電0FCH:11111100;CD相得電0F9H:11111001;DA相得電2023/3/427換轉(zhuǎn)動方向(42H)-1→42H2023/3/428; “驗證式”實驗七??步進電控制機
ORG0000HSTRT:MOVSP,#6FH;初始化
MOV20H,#0;狀態(tài)寄存器清零
MOVP1,#0F1H;正轉(zhuǎn)A相通電MLP:MOVR7,#64H;R7為步計數(shù)器,正轉(zhuǎn)100步
MOV42H,#0C8H;42H為延時計數(shù)器MLP0:MOVR6,42H;調(diào)用延時200MS子程序MLP9:LCALLDELDJNZR6,MLP9
DEC42H
LCALLSTEPS;調(diào)用步進子程序
DJNZR7,MLP0;以上為加速程序
MOVR7,#64H;以下為恒速程序MLP1:MOVR6,42HMLPX:LCALLDELDJNZR6,MLPXLCALLSTEPSDJNZR7,MLP1MOVR7,#64H;以下為減速程序MLP2:MOVR6,42HMLPY:LCALLDELDJNZR6,MLPYLCALLSTEPS
INC42HDJNZR7,MLP2
CPL7;換方向
LJMPMLP20H單元的最高位取反2023/3/429STEPS:INC20H
;正反轉(zhuǎn)步進子程序
ANL20H,#83H;保留20H單元的最高位(方向位)和最低2位(查表用)
MOVA,20HANL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三維建模技術(shù)-第1篇-洞察與解讀
- 數(shù)字文旅書店建設(shè)-洞察與解讀
- 溫州市法院系統(tǒng)招聘考試真題2025
- 智醫(yī)設(shè)備政策法規(guī)影響-洞察與解讀
- 多部門協(xié)同人才培養(yǎng)-洞察與解讀
- 微波能政策優(yōu)化路徑-洞察與解讀
- 2026年現(xiàn)金流預(yù)測市場調(diào)研合同
- 江蘇省淮安市(2025年)省直機關(guān)公開遴選公務(wù)員筆試題及答案解析(A類)
- 物流配送中心運營效率提升措施
- 幼兒園安全管理月活動策劃案
- GLP培訓(xùn)課件教學(xué)課件
- 2026四川巴中市通江產(chǎn)業(yè)投資集團有限公司及下屬企業(yè)招聘11人備考題庫(含答案詳解)
- 數(shù)據(jù)資產(chǎn)價值評估模型構(gòu)建與分析
- 市政污水管道有限空間作業(yè)方案
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會成熟人才招聘備考題庫及1套參考答案詳解
- 2026年秦皇島煙草機械有限責(zé)任公司招聘(21人)考試參考試題及答案解析
- 職場關(guān)鍵能力課件 4 時間管理
- 記賬實操-廣告?zhèn)髅焦举~務(wù)處理分錄實例
- 2026屆廣東省華南師大附中、省實驗中學(xué)、廣雅中學(xué)、深圳高級中學(xué)四校高三語文第一學(xué)期期末質(zhì)量檢測模擬試題含解析
- 2025中日友好醫(yī)院招聘3人歷年真題匯編附答案解析
- 2025年河北省高考?xì)v史真題卷(含答案與解析)
評論
0/150
提交評論