單片機(jī)操作例程_第1頁
單片機(jī)操作例程_第2頁
單片機(jī)操作例程_第3頁
單片機(jī)操作例程_第4頁
單片機(jī)操作例程_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、按 鍵 顯 示一、 控制要求8個(gè)按鈕(SB0SB7),一個(gè)數(shù)碼管顯示。無按鈕按下時(shí)顯示字母“P”,有按鈕按下時(shí)顯示對應(yīng)鍵值(07)二、 參考電路三 參考程序 ORG 0000HLP: JB P2.0,SB1 MOV P1,#3FH ;送0 JNB P2.0,$SB1: JB P2.1,SB2 MOV P1,#06H;送1 JNB P2.1,$SB2: JB P2.2,SB3 MOV P1,#5BH;送2 JNB P2.2,$SB3: JB P2.3,SB4 MOV P1,#4FH;送3 JNB P2.3,$SB4: JB P2.4,SB5 MOV P1,#66H;送4 JNB P2.4,$SB

2、5: JB P2.5,SB6 MOV P1,#6DH;送5 JNB P2.5,$SB6: JB P2.6,SB7 MOV P1,#7DH;送6 JNB P2.6,$SB7: JB P2.7,SBP MOV P1,#07H;送7 JNB P2.7,$SBP: MOV P1, #73H;送P SJMP LP6個(gè)數(shù)碼管顯示移動字符一、 控制要求六個(gè)數(shù)碼管移動顯示一組字符,規(guī)定:若向左移動,則一組字符從最右逐個(gè)移入,向左移出,全部移出后又從最右移入,如此循環(huán)n次。若向右移動則方向相反。要求:具體一組字符內(nèi)容、移動速度、移動方向、循環(huán)次數(shù)具由現(xiàn)場設(shè)定。二、 參考電路P1.0P1.1P1.2P1.3P1.

3、4P1.5P1.6P1.71K*8VCCabcdefghP3.0P3.1P3.2P3.3P3.4P3.5設(shè)數(shù)碼管有n個(gè)(n位),每掃描一個(gè)數(shù)碼管顯示的時(shí)間段為T1,則掃描一遍需時(shí)間為:T2=nT1.根據(jù)人眼的視覺殘留效應(yīng)的時(shí)間,T2應(yīng)小于0.04秒,所以nT1<0.04秒,即T1<0.04/n秒。當(dāng)用6個(gè)數(shù)碼管時(shí),n=6,則可取T1<6ms.若取T1=1 ms即一次點(diǎn)亮一個(gè)數(shù)碼管或在一個(gè)數(shù)碼管上延時(shí)的時(shí)間是1ms,則6個(gè)數(shù)碼管掃描一遍時(shí)間需T2=6 ms此時(shí)掃描一幀畫面的頻率為1/6ms=167赫茲,這個(gè)掃描頻率是不會感到閃爍的。如果持續(xù)循環(huán)這樣掃描下去,看到的是固定的一幅畫

4、面“012345”。要想使看到的畫面從右向左移動設(shè)要隔T3時(shí)間移動一下,則一幅畫面的掃描次數(shù)m= T3/ T2.例如,若要每1秒移動一下,則一幀畫面的掃描次數(shù)m=1s/6ms=167次。在程序中,設(shè)定循環(huán)掃描的次數(shù)為167次,即可使顯示的數(shù)字每1秒移動一下,改變循環(huán)掃描的次數(shù)可改變移動的速度。由于程序中除延時(shí)子程序外還有其它指令要占用時(shí)間循環(huán)掃描的次數(shù)要比167次小三 參考程序:ORG 0000HST: MOV R5,#3LOOP: MOV R7,#12 ; 12組數(shù)據(jù)(每組6個(gè))MOV 20H,#0 ;將顯示數(shù)據(jù)的段碼距段碼表TAB首地址的偏移量初值送20HLP0: MOV R3,#60H

5、;一組數(shù)據(jù)循環(huán)顯示60H遍,此數(shù)據(jù)決定移動速度DL: MOV R0,20H ;每組數(shù)據(jù)的偏移量首值送R0MOV R6,#0FEH ;位碼初值(點(diǎn)亮L1)送R6 LP: MOV P3,#0FFH ; 關(guān)顯示位碼送P3口,否則會模糊不清 MOV DPTR,#TAB ;段碼表首地址送DPTRMOV A,R0 ;偏移量送AMOVC A,A+DPTR;取段碼MOV P1,A ;送字型MOV P3,R6 ;位碼送字位口,顯示該數(shù)字DJNZ R4,$ ;延時(shí)INC R0 ;偏移量加一MOV A,R6 ;位碼RL A ;左移一位指向下一位MOV R6,A ;保存位碼JB ACC.6,LP ; 6位未顯示完轉(zhuǎn)L

6、PDJNZ R3,DL ;一組數(shù)據(jù)顯示遍數(shù)未完轉(zhuǎn)DLINC 20H ;每組偏移量初值加一,形成下一組偏移量初值DJNZ R7,LP0 ;12組數(shù)據(jù)未顯示完轉(zhuǎn)LP0DJNZ R5,LOOP ;循環(huán)3次SJMP $TAB:DB 00H,00H,00H,00H,00H,3FH,06H,5BH,4FHDB 66H,6DH,00H,00H,00H,00H,00HEND 多 臺 設(shè) 備 循 環(huán)一、 控制要求六個(gè)LED燈代替6臺電動機(jī)。兩個(gè)按鈕,一個(gè)啟動,一個(gè)停止。啟動鍵按下后LED燈按照指定順序與時(shí)間循環(huán)點(diǎn)亮和熄滅,并循環(huán)不止。按下停止,則LED燈全滅,停止后再啟動,從頭開始運(yùn)行。要求停止必須使用中斷,且

7、堆棧指針必須設(shè)置為7BH。二、 參考電路P1.0P1.1P1.2P1.3P1.4P1.574LS07*6680*6LED1LED6VCC5.1K5.1KP3.0P3.2INT0SB1(啟)SB2(停)AT89C51三、 參考程序ORG 0000HLJMP MAINORG 0003H ;外部中斷0的矢量地址AJMP ZT ;有中斷產(chǎn)生跳轉(zhuǎn)到ZT處MAIN: MOV SP,#7BH ;設(shè)置堆棧指針為7BHMOV IE,#81H ;開中斷MOV DPTR,#TAB ;送數(shù)碼表首地址MOV P1,#0FFH ;開始時(shí)使所有燈滅 JB P3.0,$ ;等待啟動按鍵按下 QD: MOV R0,#0 ;設(shè)置

8、讀取數(shù)碼表偏移量為0LP: MOV A,R0MOVC A,A+DPTR;讀取數(shù)碼表里的一個(gè)數(shù)CPL AMOV P1,A ;送P1口進(jìn)行顯示DY1: MOV R4,#4 ;延時(shí)1S程序(晶振頻率為6MHZ)D0: DJNZ R6,D0 DJNZ R5,D0 DJNZ R4,D0 INC R0 CJNE R0,#21,LP ;判斷是否將數(shù)據(jù)全部顯示完畢 SJMP QDTAB:DB 01H,02H,02H,04H,04H,04H,08H,08H,08H DB 08H,10H,10H,10H,10H,10H,20H,20H,20HDB 20H,20H,20HZT: MOV P1,#0FFHJB P3.

9、0,$POP 40H ;先彈出高8位地址POP 41H ;再彈出低8位地址MOV 30H,#05H;開始處低8位地址MOV 31H,#00H;開始處高8位地址PUSH 30H;先壓低8位地址PUSH 31H;再壓高8位地址RETI END打 印 機(jī) 接 口 電 路一、 控制要求利用8051控制TpuP-AT微型打印機(jī),打印兩行文字:第一行:U=380.5V,I=58.6mA第二行:XXXX年XX月XX日二、 參考電路原理圖 注:/STB上升沿將DB0DB7的數(shù)據(jù)鎖存至打印機(jī)內(nèi);打印機(jī)繁忙時(shí)BUSY輸出為高電平,否則輸出低電平;打印機(jī)接收到回車符時(shí)開始打印(回車符的ASCII碼是0DH,換行符是

10、0AH,年為8CH,月為8DH日為8EH)ORG 0000HSTART: MOV R0,#0 ;設(shè)置讀取表格偏移量為0 MOV DPTR,#TAB;表格首地址送DPTRLP: MOV A,R0 MOVC A,A+DPTR ;讀取表格里的一個(gè)數(shù)據(jù) MOV P1,A ;將數(shù)據(jù)送打印機(jī)數(shù)據(jù)口 CLR P3.1 ; JB P3.2,$ ;繁忙時(shí)等待 SETB P3.1 ;當(dāng)STB上升沿時(shí)數(shù)據(jù)口的數(shù)據(jù)被鎖存 INC R0 ;指向數(shù)據(jù)表格里的下一個(gè)數(shù)據(jù) CJNE A,#0DH,LP;判斷傳送是否完畢 SJMP $TAB:DB U=380.5V,I=58.6A,0AH DB 2008年03月16日,0DHE

11、ND生產(chǎn)線工件自動計(jì)數(shù)器一、 控制要求兩個(gè)數(shù)碼管對紅外對管輸入計(jì)數(shù)值進(jìn)行顯示,兩個(gè)按鈕,一個(gè)啟動,一個(gè)暫停。啟動后從0開始對紅外對管輸入的計(jì)數(shù)值進(jìn)行計(jì)數(shù)顯示,計(jì)數(shù)到目標(biāo)值(0<目標(biāo)值<=99)后LED發(fā)光報(bào)警并停止計(jì)數(shù)但顯示保持,報(bào)警后按下啟動按鈕又從0開始計(jì)數(shù)顯示。在計(jì)數(shù)顯示過程中,暫停按鈕若按下,則停止計(jì)數(shù)顯示,暫停后再啟動則接著暫停前的狀態(tài)繼續(xù)運(yùn)行。三參考程序:ORG 0000HMAIN: MOV DPTR,#TAB ;段碼表首地址送DPTRMOV TMOD,#05H; T0工作在方式1MOV TL0,#0 ; 將計(jì)數(shù)器清零JB P3.3,$ ;等待啟動按扭按下LP0: SE

12、TB TR0 ;啟動計(jì)數(shù)器T0ACALL DP ;調(diào)用顯示子程序,不斷掃描顯示當(dāng)前的計(jì)數(shù)值JB P3.2,LP2;沒按暫停就轉(zhuǎn)LP2CLR P3.5 ;按下暫停使LED燈亮CLR TR0 ;暫停后停止計(jì)數(shù)LP1: ACALL DP;調(diào)用顯示子程序JB P3.3,LP1;等待暫停后的啟動LP2: SETB P3.5;暫停后再啟動將LED燈滅CJNE R0,#18,LP0;判斷計(jì)數(shù)是否達(dá)到目標(biāo)數(shù),沒達(dá)到則轉(zhuǎn)LP0CLR P3.5 ; 如果達(dá)到則使LED燈亮CLR TR0 ;停止計(jì)數(shù)LP3: ACALL DP;調(diào)用顯示子程序JB P3.3,LP3 ;等待再次啟動SJMP MAIN;再次啟動后從0開始

13、計(jì)數(shù)TAB:DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FH;09共陰段碼DP: MOV A,TL0 ;取計(jì)數(shù)值MOV R0,A ;送R0MOV B,#10; DIV AB;用除法指令將A中數(shù)分成個(gè)位,十位MOVC A,A+DPTR ;取顯示十位段碼MOV P1,A ;送P1進(jìn)行顯示CLR P3.0 ;使十位顯示有效SETB P3.0 ;使十位顯示無效MOV A,BMOVC A,A+DPTR ;取顯示個(gè)位段碼MOV P1,A ;送P1進(jìn)行顯示CLR P3.1 ;使個(gè)位顯示有效SETB P3.1 ;使個(gè)位顯示無效RETEND電 梯 轎 廂 指 層 器一、

14、控制要求兩個(gè)數(shù)碼管顯示電梯樓層,十位數(shù)碼管的小數(shù)點(diǎn)作為上升指示,個(gè)位數(shù)碼管的小數(shù)點(diǎn)作為下降指示。電梯上升或下降過程中,顯示前方樓層,對應(yīng)上升或下降指示亮。平層后顯示當(dāng)前樓層,上升或下降指示不亮。運(yùn)行時(shí)間以及平層時(shí)間按照考評要求定。樓層數(shù)亦按照考評要求定。以16層顯示為例:010.2020.3030.4040.5050.60.9091.0101.1-151.61615. 1514. 1413. 1312. 12-02. 0201. ORG 0000HSTART: MOV R0,#0 ;設(shè)置偏移量為0 MOV DPTR,#TAB;數(shù)碼表首地址送DPTRLP: MOV A,R0;取偏移量 MOVC

15、A,A+DPTR;取數(shù)碼管數(shù)據(jù) MOV R1,A;送十位段碼 INC R0 MOV A,R0 MOVC A,A+DPTR;讀取下一個(gè)數(shù)據(jù) MOV R2,A;送個(gè)位段碼D1: MOV R4,#2;顯示程序段,顯示程序約為3秒D2: MOV P1,R1;十位數(shù)段碼送P1口CLR P3.0;顯示十位SETB P3.0;關(guān)十位MOV P1,R2;個(gè)位數(shù)段碼送P1口CLR P3.1;顯示個(gè)位SETB P3.1;關(guān)個(gè)位DJNZ R6,D2;0減1為FF,256次DJNZ R5,D2DJNZ R4,D2INC R0CJNE R0,#16,LPSJMP START;循環(huán)TAB:DB 3FH,06H,0BFH,

16、5BH,3FH,5BH,0BFH DB 4FH,3FH,4FH,3FH,0DBH,3FH,5BH DB 3FH,86H END步 進(jìn) 電 機(jī) 自 動 控 制一、 控制要求利用AT89C51控制4相三四拍(步)6線步進(jìn)電機(jī)(型號:25BY48B03,30歐姆,步距角度為7.5度)工作,兩個(gè)按鈕控制,一個(gè)啟動,另外一個(gè)暫停。啟動后步進(jìn)電機(jī)先正轉(zhuǎn)m周,再反轉(zhuǎn)n周,轉(zhuǎn)一周的時(shí)間為t秒,并循環(huán)不止。運(yùn)作過程中暫停按鈕按下步進(jìn)電機(jī)停止運(yùn)轉(zhuǎn),暫停后再啟動,接著暫停前狀態(tài)運(yùn)行。要求暫停必須使用中斷,且堆棧指針SP必須指向7BH。建議m=4, n=3, t=3S或4S。ORG 0000HLJMP MAINORG

17、 0003H ;P3.2(INT0)中斷入口地址AJMP ZT ;運(yùn)行中斷服務(wù)子程序MAIN: MOV SP,#7BH ;設(shè)置堆棧指針為7BHMOV DPTR,#TABMOV IE,#81H ;開P3.2(INT0)中斷JB P3.0,$ ;等待啟動ZZ: MOV 20H,#0;正轉(zhuǎn)數(shù)碼表起始偏移量為0MOV R2,#4 ;正轉(zhuǎn)4圈ACALL QD ;調(diào)轉(zhuǎn)一周啟動子程序FZ: MOV 20H,#4;反轉(zhuǎn)數(shù)碼表起始偏移量為4MOV R2,#3 ;反轉(zhuǎn)3圈ACALL QD ;調(diào)轉(zhuǎn)一周啟動子程序SJMP ZZ ;循環(huán)QD: MOV R3,#12 ;每轉(zhuǎn)一周要取12遍數(shù)碼表數(shù)據(jù)LP0: MOV R0,

18、20H;起始偏移量送R0MOV R1,#0 ;R1為取數(shù)據(jù)個(gè)數(shù)計(jì)數(shù)器(取一遍數(shù)據(jù)是4個(gè))LP: MOV A,R0 ;MOVC A,A+DPTRCPL A ;取反每次一相通電,不取反每次三相通電MOV P1,A ;DELY1: MOV R4,#120;延時(shí)程序此數(shù)據(jù)一周3秒D0: DJNZ R5,D0 DJNZ R4,D0 INC R0 INC R1 CJNE R1,#4,LP;步進(jìn)電機(jī)為4步 DJNZ R3,LP0;一周需360度/7.5度步=48步,每組數(shù)據(jù)4步,需榮R3=12組 DJNZ R2,QD ;轉(zhuǎn)R2周 RET TAB:DB 01H,02H,04H,08H,08H,04H,02H,

19、01H ZT: MOV P1,#0FFH;全滅 JB P3.0,$ RETI END霓 虹 燈 程 序 固 化 與 獨(dú) 立 運(yùn)行ORG 0000HMAIN:MOV DPTR,#TAB ;送數(shù)碼表首地址BT: MOV P1,#00H ;清零JNB P3.2,HYSDSJMP BTHYSD: MOV R0,#0 ;偏移量LP0: MOV A,R0 MOVC A,A+DPTR MOV P1,A ACALL DELY INC R0 JB P3.2,FH CJNE R0,#72,LP0 SJMP HYSD FH: SJMP BT DELY: MOV R4,#5 D0: MOV R5,#125 D1: M

20、OV R6,#200 D2: DJNZ R6,D2 DJNZ R5,D1 DJNZ R4,D0 RETTAB:DB 01H,02H,04H,08H,10H,20H,40H,80H,81H,82H DB 84H,88H,90H,0A0H,0C0H,0C1H DB 0C2H,0C4H,0C8H,0D0H,0E0H,0E1H,0E2H,0E4HDB 0E8H,0F0H,0F1H,0F2H,0F4HDB 0F8H,0F9H,0FAH,0FCH,0FDH,0FEH,0FFH,0FFHDB 0FEH,0FDH,0FCH,0FAH,0F9HDB 0F8H,0F4H,0F2H,0F1H,0F0H,0E8H,0

21、E4H,0E2H DB 0E1H,0E0H,0D0H,0C8H,0C4HDB 0C2H,0C1H,0C0H,0A0H,90H,88H,84H,82H,81HDB 80H,40H,20H,10H,08H,04H,02H,01H END雙機(jī)串行通訊一、 控制要求兩片AT89C51,均固化程序獨(dú)立運(yùn)行。一片作為甲機(jī),另外一片作為乙機(jī)。甲機(jī)檢測8個(gè)按鈕,乙機(jī)控制8個(gè)LED燈,利用甲機(jī)的按鈕分別控制乙機(jī)的燈,某按鈕按下對應(yīng)LED燈亮。fosc*2SMOD32*12*(256-x)bps=甲機(jī)程序:ORG 0000HJS: MOV TMOD,#20H ;設(shè)置T1為自動重裝8位定時(shí)器MOV TH1,#0FAH ;賦T1定時(shí)初值MOV TL1,#0FAHMOV SCON,#50H ;設(shè)置串口為10位異步通信MOV PCON,#00HSETB TR1 ;啟動T1開始定時(shí),波特率開始有效LP: MOV SBUF, P1 ;通過串口向外發(fā)送JNB TI,$ ;等待發(fā)送結(jié)束CLR TI ;將發(fā)送結(jié)束標(biāo)志位清零SJMP LPEND乙機(jī)程序:ORG 0000HJS: MOV TMOD,#20HMOV TH1,#0FAHMOV TL1,#0FAHMOV SCON,#50HMOV PCON,#00HSETB TR1MOV P1,#55HLP: JNB RI,$CLR RIMOV P1,SBUFSJMP

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論