如何用51單片機的輸入輸出_第1頁
如何用51單片機的輸入輸出_第2頁
如何用51單片機的輸入輸出_第3頁
如何用51單片機的輸入輸出_第4頁
如何用51單片機的輸入輸出_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、如何用51單片機的輸入輸出實現(xiàn)功能 基本條件:為要實現(xiàn)的功呢功能搭建輔助電路要點亮使發(fā)光二極管,必須使單片機的I/O口P1.0輸出低電平。于是我們的任務(wù)就是編程序使P1.0輸出低電平。如果要實現(xiàn)二極管的閃速,我們調(diào)整P1.0的低電平輸出和延時間隔延時的基本原理:累加周期指令v51 單片機的一個機器周期包括12 個時鐘振蕩周期,也就是說如果51 單片機采用12MHz 晶振,那么執(zhí)行一個機器周期就只需要1s;如果采用的是6MHz 的晶振,那么執(zhí)行一個機器周期就需要2 s。v在51 單片機里有單周期指令(執(zhí)行這條指令只需一個機器周期),雙周期指令(執(zhí)行這條指令只需要兩個機器周期),四周期指令(執(zhí)行這

2、條指令需要四個機器周期)。除了乘、除兩條指令是四周期指令,其余均為單周期或雙周期指令。常用指令的時鐘周期v數(shù)據(jù)傳送指令 MOV:數(shù)據(jù)傳送指令功能是將數(shù)據(jù)從一個地方復(fù)制、拷貝到另一個地方。如:MOV R7,#80H ;將數(shù)據(jù)80H 送到寄存器R7,這時寄存器R7 里面存放著80H,執(zhí)行該指令則需要一個機器周期。v空操作指令 NOP:空操作指令功能只是讓單片機執(zhí)行沒有意義的操作,消耗一個機器周期v循環(huán)轉(zhuǎn)移指令 DJNZ:循環(huán)轉(zhuǎn)移指令功能是將第一個數(shù)進行減1 并判斷是否為0,不為0 則轉(zhuǎn)移到指定地點;為0 則往下執(zhí)行。如:DJNZ R7,KK ;將寄存器R7 的內(nèi)容減1 并判斷寄存器R7 里的內(nèi)容減

3、完1 后是否為0,如果不為0 則轉(zhuǎn)移到地址標(biāo)號為KK 的地方;如果為0 則執(zhí)行下一條指令。這條指令需要二個機器周期。v利用以上三條指令的組合就可以比較精確地編寫出所需要的延時程序。延時程序示例解讀v50ms 延時子程序:DEL:MOV R7,#200 ; (第一句:MOV R7,#200 在整個子程序中只 被執(zhí)行一次,且為單周期指令,所以耗時1s )DEL1:MOV R6,#125 ; (MOV R6,#125 從看到只要R7-1不為0,就會返回到 這句,共執(zhí)行了R7次,共耗時200s DEL2:DJNZ R6,DEL2 ; (只要R6-1不為0,就反復(fù)執(zhí)行此句(內(nèi)循環(huán)R6次),又 受外循環(huán)R

4、7控制,所以共執(zhí)行R6*R7次, 因是雙周期指令,所以耗時2*R6*R7s )DJNZ R7,DEL1 ; RET ;v精確延時時間為:1+(1*200)+(2*125*200)+(2*200)+2v=(2*125+3)*200+3 v=50603sv50ms長延時常用策略v注意,要實現(xiàn)較長時間的延時,一般采用多重循環(huán),有時會在程式序里加入NOP指令,以1秒延時為例DEL:MOV R7,#10 1指令周期1DEL1:MOV R6,#0FFH 1指令周期10DEL2:MOV R5,#80H 1指令周期255*10=2550KONG:NOP 1指令周期128*255*10=326400DJNZ R

5、5,$ 2指令周期2*128*255*10=652800DJNZ R6,DEL2 2指令周期2*255*10=5110DJNZ R7,DEL1 2指令周期2*10=20RET 2v延時時間=1+10+2550+326400+652800+5110+20+2 =986893s約為1s整理得:延時時間=(3*第一層循環(huán)+3)*第二層循環(huán)+3*第三層循環(huán)+3延時200ms閃爍燈程序ORG 0 START: CLR P1.0 LCALL DELAY SETB P1.0 LCALL DELAY LJMP START DELAY: MOV R5,#20 延時子程 序,延時0.2秒D1: MOV R6,#2

6、0 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END C語言源程序#include sbit L1=P10; void delay02s(void) /延時0.2秒子程序 unsigned char i,j,k; for(i=20;i0;i-) for(j=20;j0;j-) for(k=248;k0;k-); void main(void) while(1) L1=0; delay02s(); L1=1; delay02s(); 用單片機控制的LED流水燈設(shè)計 從原理圖中可以看出,如果要讓接在P1.0口的LED1亮起來,那么只要把

7、P1.0口的電平變?yōu)榈碗娖骄涂梢粤?;相反?如果要接在P1.0口的LED1熄滅,就要把P1.0口的電平變?yōu)楦唠娖?;同理,接在P1.1P1.7口的其他7個LED的點亮和熄滅的方法同LED1。因此,要實現(xiàn)流水燈功能,我們只要將發(fā)光二極管LED1LED8依次點亮、熄滅,8只LED燈便會一亮一暗的做流水燈了。在此我們還應(yīng)注意一點,由于人眼的視覺暫留效應(yīng)以及單片機執(zhí)行每條指令的時間很短,我們在控制二極管亮滅的時候應(yīng)該延時一段時間 軟件編程 :位控法 ORG 0000H ;單片機上電后從0000H地址執(zhí)行AJMP START ;跳轉(zhuǎn)到主程序存放地址處ORG 0030H ;設(shè)置主程序開始地址START:MO

8、V SP,#60H ;設(shè)置堆棧起始地址為60HCLR P1.0 ;P1.0輸出低電平,使LED1點亮ACALLDELAY ;調(diào)用延時子程序SETBP1.0 ;P1.0輸出高電平,使LED1熄滅CLR P1.1 ;P1.1輸出低電平,使LED2點亮ACALLDELAY ;調(diào)用延時子程序SETBP1.1 ;P1.1輸出高電平,使LED2熄滅CLR P1.2 ;P1.2輸出低電平,使LED3點亮ACALLDELAY ;調(diào)用延時子程序SETBP1.2   ;P1.2輸出高電平,使LED3熄滅CLR P1.3 ;P1.3輸出低電平,使LED4點亮ACALLDELAY ;調(diào)用延時子程序S

9、ETBP1.3 ;P1.3輸出高電平,使LED4熄滅CLR P1.4 ;P1.4輸出低電平,使LED5點亮ACALLDELAY ;調(diào)用延時子程序 SETBP1.4 ;P1.4輸出高電平,使LED5熄滅CLR P1.5 ;P1.5輸出低電平,使LED6點亮ACALLDELAY ;調(diào)用延時子程序SETBP1.5 ;P1.5輸出高電平,使LED6熄滅CLR P1.6 ;P1.6輸出低電平,使LED7點亮ACALLDELAY ;調(diào)用延時子程序SETBP1.6 ;P1.6輸出高電平,使LED7熄滅CLR P1.7 ;P1.7輸出低電平,使LED8點亮ACALLDELAY ;調(diào)用延時子程序SETBP1.7

10、 ;P1.7輸出高電平,使LED8熄滅ACALLDELAY ;調(diào)用延時子程序AJMP START ;8個LED流了一遍后返回到標(biāo)號START處再循環(huán)DELAY: ;延時子程序MOV R0,#255;延時一段時間D1: MOV R1,#255DJNZ R1,$DJNZ R0,D1RET ;子程序返回END ;程序結(jié)束查表法 ORG 0000H ;單片機上電后從0000H地址執(zhí)行AJMP START ;跳轉(zhuǎn)到主程序存放地址處ORG 0030H ;設(shè)置主程序開始地址START:MOV SP,#60H ;設(shè)置堆棧起始地址為60HMOV DPTR,# TAB ;流水花樣表首地址送DPTRLOOP: CLR A ;累加器清零MOVC A,A+DPTR ;取數(shù)據(jù)表中的值CJNE A,#0FFH,SHOW;檢查流水結(jié)束標(biāo)志AJMP START ;所有花樣

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論