国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種流水燈的編程方法

      文檔序號:6264884閱讀:1907來源:國知局
      專利名稱:一種流水燈的編程方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及自動化智能控制領(lǐng)域,具體涉及一種流水燈的編程方法。
      背景技術(shù)
      按照單片機系統(tǒng)擴展與系統(tǒng)配置狀況,單片機應(yīng)用系統(tǒng)可分為最小系統(tǒng)、最小功耗系統(tǒng)及典型系統(tǒng)等。AT89C51單片機是美國ATMEL公司生產(chǎn)的低電壓、高性能CMOS 8位單片機,具有豐富的內(nèi)部資源4kB閃存、U8BRAM、32根I/O 口線、2個16位定時/計數(shù)器、 5個向量兩級中斷結(jié)構(gòu)、2個全雙工的串行口,具有4. 25 5. 50V的電壓工作范圍和0 24MHz工作頻率,使用AT89C51單片機時無須外擴存儲器。因此,本流水燈實際上就是一個帶有八個發(fā)光二極管的單片機最小應(yīng)用系統(tǒng),即為由發(fā)光二極管、晶振、復(fù)位、電源等電路和必要的軟件組成的單個單片機。其原理圖已是公知技術(shù),我們不難想象出,如果要讓接在 P1.0 口的LEDl亮起來,那么只要把P1.0 口的電平變?yōu)榈碗娖骄涂梢粤?;相反,如果要接在 Pl. 0 口的LEDl熄滅,就要把P1.0 口的電平變?yōu)楦唠娖?;同理,接在Pl. 1 Pl. 7 口的其他 7個LED的點亮和熄滅的方法同LED1。因此,要實現(xiàn)流水燈功能,我們只要將發(fā)光二極管 LEDl LED8依次點亮、熄滅,8只LED燈便會一亮一暗的做流水燈了。采用順序程序結(jié)構(gòu),用位指令控制Pl 口的每一個位輸出高低電平,從而來控制相應(yīng)LED燈的亮滅。程序如下ORG 0000H;單片機上電后從OOOOH地址執(zhí)行
      AJMP START;跳轉(zhuǎn)到主程序存放地址處
      ORG 0030H;設(shè)置主程序開始地址
      START =MOV SP, #60H ;設(shè)置堆棧起始地址為60H
      CLR Pl. 0;Pl. 0輸出低電平,使LEDl點亮
      ACALL DELAY;調(diào)用延時子程序
      SETB PL 0;Pl. 0輸出高電平,使LEDl熄滅
      CLR PL 1;Pl. 1輸出低電平,使LED2點亮
      ACALL DELAY;調(diào)用延時子程序
      SETB PL 1;Pl. 1輸出高電平,使LED2熄滅
      CLR PL 2;Pl. 2輸出低電平,使LED3點亮
      ACALL DELAY調(diào)用延時子程序
      SETB PL 2Pl. 2輸出高電平,使LED3熄滅
      CLR PL 3Pl. 3輸出低電平,使LED4點亮
      ACALL DELAY調(diào)用延時子程序
      SETB PL 3Pl. 3輸出高電平,使LED4熄滅
      CLR PL 4卩1.4輸出低電平,使1^05點亮
      ACALL DELAY調(diào)用延時子程序
      SETB PL 4Pl. 4輸出高電平,使LED5熄滅
      CLR Pl. 5;Pl. 5輸出低電平,使LED6點亮
      ACALL DELAY;調(diào)用延時子程序
      SETB Pl. 5;Pl. 5輸出高電平,使LED6熄滅
      CLR Pl. 6;卩1.6輸出低電平,使1^07點亮
      ACALL DELAY;調(diào)用延時子程序
      SETB PL 6;Pl. 6輸出高電平,使LED7熄滅
      CLR PL 7;Pl. 7輸出低電平,使LED8點亮
      ACALL DELAY;調(diào)用延時子程序
      SETB PL 7;Pl. 7輸出高電平,使LED8熄滅
      ACALL DELAY;調(diào)用延時子程序
      AJMP START;8個LED流了一遍后返回到標號START處再循環(huán)
      DELAY ;延時子程序
      MOV R0, #255;延時一段時間
      Dl MOVRl, #255
      DJNZ Rl,$
      DJNZ R0, Dl
      RET;子程序返回
      END;程序結(jié)束
      2、循環(huán)移位法
      在上個程序中我們是逐個控制Pl端口的每個位來實現(xiàn)的,因此程序顯得有點復(fù)
      雜,下面我們利用循環(huán)移位指令,采用循環(huán)程序結(jié)構(gòu)進行編程。我們在程序一開始就給Pi 口送一個數(shù),這個數(shù)本身就讓Pi. O先低,其他位為高,然后延時一段時間,再讓這個數(shù)據(jù)向高位移動,然后再輸出至Pl 口,這樣就實現(xiàn)“流水”效果啦。由于8051系列單片機的指令中只有對累加器ACC中數(shù)據(jù)左移或右移的指令,因此實際編程中我們應(yīng)把需移動的數(shù)據(jù)先放到ACC中,讓其移動,然后將ACC移動后的數(shù)據(jù)再轉(zhuǎn)送到Pl 口,這樣同樣可以實現(xiàn)“流水” 效果。具體編程如下所示,程序結(jié)構(gòu)確實簡單了很多。ORG 0000H;單片機上電后從OOOOH地址執(zhí)行
      AJMP START;跳轉(zhuǎn)到主程序存放地址處
      ORG 0030H;設(shè)置主程序開始地址
      START :M0V SP, #60H;設(shè)置堆棧起始地址為60H
      MOV A, #0FEH;ACC中先裝入LEDl亮的數(shù)據(jù)(二進制的11111110)
      MOV PI,A;將ACC的數(shù)據(jù)送Pl 口
      MOV R0, #7;將數(shù)據(jù)再移動7次就完成一個8位流水過程
      LOOP :RL A;將ACC中的數(shù)據(jù)左移一位
      MOV PI,A;把ACC移動過的數(shù)據(jù)送pi 口顯示
      ACALL DELAY;調(diào)用延時子程序
      DJNZ R0, LOOP;沒有移動夠7次繼續(xù)移動
      AJMP START;移動完7次后跳到開始重來,以達到循環(huán)流動效果
      DELAY ;延時子程序
      MOVR0, #255;延時一段時間Dl:MOV Rl, #255DJNZRl, $DJNZR0, DlRET;子程序返回END;程序結(jié)束上面的兩個程序都是比較簡單的流水燈程序,“流水”花樣只能實現(xiàn)單一的“從左 到右”流方式。

      發(fā)明內(nèi)容
      本發(fā)明的目的的提供一種流水燈的編程方法,運用查表法所編寫的流水燈程序, 能夠?qū)崿F(xiàn)任意方式流水,而且流水花樣無限,只要更改流水花樣數(shù)據(jù)表的流水數(shù)據(jù)就可以隨意添加或改變流水花樣,真正實現(xiàn)隨心所欲的流水燈效果。我們首先把要顯示流水花樣的數(shù)據(jù)建在一個以TAB為標號的數(shù)據(jù)表中,然后通過查表指令“MOVC A,@A+DPTR”把數(shù)據(jù)取到累加器A中,然后再送到Pl 口進行顯示。具體源程序如下,TAB標號處的數(shù)據(jù)表可以根據(jù)實現(xiàn)效果的要求任意修改。具體方案如下ORG 0000H;單片機上電后從0000H地址執(zhí)行
      AJMP START;跳轉(zhuǎn)到主程序存放地址處
      ORG 0030H;設(shè)置主程序開始地址
      START :M0V SP, #60H;設(shè)置堆棧起始地址為60H
      MOV DPTR, #TAB;流水花樣表首地址送DPTR
      LOOP :CLR A;累加器清零
      MOVC A, iA+DPTR;取數(shù)據(jù)表中的值
      CJNE A, #0FFH,SHOW;檢查流水結(jié)束標志
      AJMP START;所有花樣流完,則從頭開始重復(fù)流
      SHOW :M0V PI, A;將數(shù)據(jù)送到Pl 口
      ACALL DELAY;調(diào)用延時子程序
      INC DPTR;取數(shù)據(jù)表指針指向下一數(shù)據(jù)
      AJMP LOOP;繼續(xù)查表取數(shù)據(jù)
      DELAY ;延時子程序
      MOV R0, #255;延時一段時間
      Dl: MOV Rl,#255
      DJNZ Rl,$
      DJNZ R0, Dl
      RET;子程序返回
      TAB ;下面是流水花樣數(shù)據(jù)表,
      用戶可據(jù)要求任意編寫
      DB 11111110B;二進制表示的流水花樣數(shù)據(jù),從低到高左移
      DB 11111101B進制表示的流水花樣數(shù)據(jù),從高到低右移

      ......DB OFFH ;流水花樣結(jié)束標志OFFHEND;程序結(jié)束當上述程序編寫好以后,我們需要使用編譯軟件對其編譯,得到單片機所能識別的二進制代碼,然后再用編程器將二進制代碼燒寫到AT89C51單片機中,最后連接好電路通電,我們就看到LEDl LED8的“流水”效果了以下是流水燈的c源程序
      DB11111011BDB11110111BDB11101111BDB11011111BDB10111111BDB01111111BDB01111111B ;二進制DB10111111BDB11011111BDB11101111BDB11110111BDB11111011BDB11111101BDB11111110BDB0FEH,0FDH,0FBH,0F7HDB0EFH,0DFH,0BFH,7FHDB7FH,0BFH,0DFH,OEFHDB0F7H,0FBH,0FDH, OFEH
      ;十六進制表示的流水花樣數(shù)據(jù)




      #include<reg51. h> #include<intrins. h>
      void delayms (unsigned char ms),
      {
      unsigned char i ;
      while(ms—)
      {
      for(i = 0 ;i < 120 ;i++);
      main ()
      {
      unsigned char LED LED = Oxfe ; PO = LED ;
      延時子程序
      while (1){delayms(250);LED = _crol_(LED, 1) -J/ 循環(huán)右移 1 位,點亮下一個 LEDPO = LED;}用本發(fā)明所編寫的流水燈程序,實用性更強,能夠?qū)崿F(xiàn)任意方式流水,而且流水花樣無限,只要更改流水花樣數(shù)據(jù)表的流水數(shù)據(jù)就可以隨意添加或改變流水花樣,真正實現(xiàn)隨心所欲的流水燈效果。
      具體實施例方式如同上述內(nèi)容。
      權(quán)利要求
      1. 一種流水燈的編程方法,其特征在于,首先把要顯示流水花樣的數(shù)據(jù)建在一個以 TAB為標號的數(shù)據(jù)表中,然后通過查表指令“MOVC A,0A+DPTR”把數(shù)據(jù)取到累加器A中,然后再送到Pl 口進行顯示,TAB標號處的數(shù)據(jù)表可以根據(jù)實現(xiàn)效果的要求任意修改。
      全文摘要
      本發(fā)明公開了一種流水燈的編程方法,它克服了應(yīng)用順序程序結(jié)構(gòu)、循環(huán)移位指令的“流水”花樣只能實現(xiàn)單一的“從左到右”流方式。運用此法所編寫的流水燈程序,能夠?qū)崿F(xiàn)任意方式流水,而且流水花樣無限,只要更改流水花樣數(shù)據(jù)表的流水數(shù)據(jù)就可以隨意添加或改變流水花樣,真正實現(xiàn)隨心所欲的流水燈效果。
      文檔編號G05B19/042GK102289213SQ201010204339
      公開日2011年12月21日 申請日期2010年6月21日 優(yōu)先權(quán)日2010年6月21日
      發(fā)明者周法慶 申請人:周法慶
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1