找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2403|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

滾動(dòng)顯示程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70976 發(fā)表于 2014-12-26 23:31 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. 顯示字用查表法,不占內(nèi)存,用四個(gè)16*16共陽LED點(diǎn)陣顯示,

  2. ;效果:向上滾動(dòng)顯示字,每次四個(gè),重復(fù)循環(huán)。

  3. ;R2:行掃描地址(從00-0FH)。

  4. ;R3:滾動(dòng)顯示時(shí)控制移動(dòng)速度,也可控制靜止顯示的時(shí)間。

  5. ;************;

  6. ;中斷入口程序;

  7. ;************;

  8. ;

  9. ORG    0000H

  10. LJMP    START

  11. ORG    0003H

  12. RETI

  13. ORG    000BH

  14. LJMP    INTT0

  15. ORG    0013H

  16. RETI

  17. ORG    001BH

  18. RETI

  19. ORG    0023H

  20. RETI

  21. ORG    002BH

  22. RETI

  23. ;

  24. ;************;

  25. ; 初始化程序 ;

  26. ;************;

  27. ;

  28. ;

  29. ;************;

  30. ;  主程序  ;

  31. ;************;

  32. ;

  33. START:          MOV    20H,#00H            ;清標(biāo)志,00H為1幀掃描結(jié)束標(biāo)志

  34.                 MOV    A,#0FFH              ;端口初始化

  35.                 MOV    P1,A

  36.                 MOV    P2,A

  37.                 MOV    P3,A

  38.                 MOV    P0,A

  39.                 CLR    P1.6            ;串行寄存器打入輸出端控制位

  40.                 MOV    TMOD,#01H      ;使用T0作16位定時(shí)器,行掃描用。

  41.                 MOV    TH0,#0FCH      ;1ms初值(12MHZ)

  42.                 MOV    TL0,#18H

  43.                 MOV    SCON,#00H      ;串口0方式傳送顯示字節(jié)

  44.                 MOV    IE,#82H        ;T0中斷允許,總中斷允許

  45.                 MOV    SP,#70H

  46.                 LCALL  DIS1            ;顯示準(zhǔn)備,黑屏,1.5秒

  47. MAIN:          MOV    DPTR,#TAB

  48.                 LCALL  MOVDISP        ;逐排顯示,每次四字)

  49.                 MOV    DPTR,#TAB

  50.                 LCALL  MOVDISP1        ;滾動(dòng)顯示,每排四字)

  51.                 AJMP    MAIN

  52. ;

  53. ;

  54. ;********************;

  55. ; 四字逐排顯示子程序 ;

  56. ;********************;

  57. ;每次四字移入移出顯示方式,入口時(shí)定義好DPTR值

  58. ;

  59. MOVDISP:        MOV    R1,#6          ;顯示6排字,每排四字(R1=排數(shù))

  60. DISLOOP:        MOV    R3,#100        ;每排顯示時(shí)間1.6*100=1.6S

  61. DISMOV:        MOV    R2,#00H        ;第0行開始

  62.                 SETB    TR0            ;開掃描(每次一幀)

  63. WAITMOV:        JBC    00H,DISMOV1    ;標(biāo)志為1掃描一幀結(jié)束(16毫秒為1幀,每行1毫秒)

  64.                 AJMP    WAITMOV

  65. DISMOV1:        DJNZ    R3,DISMOV      ;1幀重復(fù)顯示(控制顯示時(shí)間)

  66.                 MOV    A,#128          ;顯示字指針移一排(每排4字*32=128)

  67.                 ADD    A,DPL          ;

  68.                 MOV    DPL,A

  69.                 MOV    A,#0

  70.                 ADDC    A,DPH

  71.                 MOV    DPH,A

  72.                 DEC    R1              ;R1為0,顯示完

  73.                 MOV    A,R1

  74.                 JZ      MOVOUT          ;

  75.                 AJMP    DISLOOP        ;

  76. MOVOUT:        RET                    ;移動(dòng)顯示結(jié)束

  77. ;

  78. ;********************;

  79. ; 四字滾動(dòng)顯示子程序 ;

  80. ;********************;

  81. ;每排四字向上移出顯示方式,入口時(shí)定義好DPTR值

  82. ;

  83. MOVDISP1:        MOV    R1,#255          ;向上移動(dòng)顯示6排字,每排四字(R1=排數(shù)*16)

  84. DISLOOP1:        MOV    R3,#10          ;移動(dòng)速度1.6*10=0.16S

  85. DISMOV2:        MOV    R2,#00H        ;第0行開始

  86.                 SETB    TR0            ;開掃描(每次一幀)

  87. WAITMOV1:        JBC    00H,DISMOV3    ;標(biāo)志為1掃描一幀結(jié)束(16毫秒為1幀,每行1毫秒)

  88.                 AJMP    WAITMOV1

  89. DISMOV3:        DJNZ    R3,DISMOV2      ;1幀重復(fù)顯示(控制移動(dòng)速度)

  90.                 INC    DPTR            ;顯示字指針移一行(二字節(jié)位置)

  91.                 INC    DPTR

  92.                 DEC    R1              ;R1為0,顯示完

  93.                 MOV    A,R1

  94.                 JZ      MOVOUT1        ;

  95.                 AJMP    DISLOOP1        ;

  96. MOVOUT1:        RET                    ;移動(dòng)顯示結(jié)束

  97. ;

  98. ;

  99. ;*****************;

  100. ; 四個(gè)字顯示子程序  ;

  101. ;*****************;

  102. ;靜止顯示表中某四個(gè)字

  103. DIS1:          MOV    R3,#5AH        ;靜止顯示時(shí)間控制(16MS*#=1.6秒)

  104. DIS11:          MOV    R2,#00H        ;一幀掃描初始值(行地址從00-0FH)

  105.                 MOV    DPTR,#TAB      ;取表首址

  106.                 SETB    TR0            ;開掃描(每次一幀)

  107. WAIT11:        JBC    00H,DIS111      ;為1,掃描一幀結(jié)束

  108.                 AJMP    WAIT11

  109. DIS111:        DJNZ    R3,DIS11

  110.                 RET

  111. ;

  112. ;

  113. ;************;

  114. ;  掃描程序  ;

  115. ;************;

  116. ;1MS傳送一行,每行顯示1毫秒,一次傳送四個(gè)字的某行共8個(gè)字節(jié).

  117. ;

  118. INTT0:          PUSH    ACC

  119.                 MOV    TH0,#0FCH      ;1ms初值重裝

  120.                 MOV    TL0,#18H

  121.                 MOV    A,#97          ;指向第四個(gè)字行右字節(jié)

  122.                 ADD    A,DPL

  123.                 MOV    DPL,A

  124.                 MOV    A,#0

  125.                 ADDC    A,DPH

  126.                 MOV    DPH,A

  127.                 MOV    A,#0

  128.                 MOVC    A,@A+DPTR      ;查表

  129.                 MOV    SBUF,A          ;串口0方式發(fā)送

  130. WAIT:          JBC    TI,GO          ;等待發(fā)送完畢

  131.                 AJMP    WAIT            ;

  132. GO:            MOV    A,DPL          ;指向第四個(gè)字行左字節(jié)

  133.                 SUBB    A,#1

  134.                 MOV    DPL,A

  135.                 MOV    A,DPH

  136.                 SUBB    A,#0

  137.                 MOV    DPH,A

  138.                 MOV    A,#0

  139.                 MOVC    A,@A+DPTR

  140.                 MOV    SBUF,A

  141. WAIT1:          JBC    TI,GO1

  142.                 AJMP    WAIT1

  143. ;

  144. GO1:            MOV    R0,#03H

  145. MLOOP:          MOV    A,DPL          ;指向前三個(gè)字行右字節(jié)

  146.                 SUBB    A,#31

  147.                 MOV    DPL,A

  148.                 MOV    A,DPH

  149.                 SUBB    A,#0

  150.                 MOV    DPH,A

  151.                 MOV    A,#0

  152.                 MOVC    A,@A+DPTR      ;查表

  153.                 MOV    SBUF,A          ;串口0方式發(fā)送

  154. WAIT2:          JBC    TI,GO2          ;等待發(fā)送完畢

  155.                 AJMP    WAIT2            ;

  156. GO2:            MOV    A,DPL          ;指向前三個(gè)字行左字節(jié)

  157.                 SUBB    A,#1

  158.                 MOV    DPL,A

  159.                 MOV    A,DPH

  160.                 SUBB    A,#0

  161.                 MOV    DPH,A

  162.                 MOV    A,#0

  163.                 MOVC    A,@A+DPTR

  164.                 MOV    SBUF,A

  165. WAIT3:          JBC    TI,GO3

  166.                 AJMP    WAIT3

  167. GO3:            DJNZ    R0,MLOOP        ;執(zhí)行三次

  168. ;

  169. ;

  170.                 SETB    P1.7            ;關(guān)行顯示,準(zhǔn)備涮新

  171.                 NOP                    ;串口寄存器數(shù)據(jù)穩(wěn)定

  172.                 SETB    P1.6            ;產(chǎn)生上升沿,行數(shù)據(jù)打入輸出端

  173.                 NOP                    ;

  174.                 NOP                    ;

  175.                 CLR    P1.6            ;恢復(fù)低電平

  176.                 MOV    A,R2            ;修改顯示行地址

  177.                 ORL    A,#0F0H        ;修改顯示行地址

  178.                 MOV    R2,A            ;修改顯示行地址

  179.                 MOV    A,P1            ;修改顯示行地址

  180.                 ORL    A,#0FH          ;修改顯示行地址

  181.                 ANL    A,R2            ;修改顯示行地址

  182.                 MOV    P1,A            ;修改完成

  183.                 CLR    P1.7            ;開行顯示

  184.                 INC    R2              ;下一行掃描地址值

  185.                 INC    DPTR            ;

  186.                 INC    DPTR            ;下一行數(shù)據(jù)地址

  187.                 MOV    A,R2

  188.                 ANL    A,#0FH

  189.                 JNZ    GO4

  190.                 SETB    00H            ;R2為10H,現(xiàn)為末行掃描,置1幀結(jié)束標(biāo)志

  191.                 MOV    A,DPL          ;指針修正為原幀初值

  192.                 SUBB    A,#32

  193.                 MOV    DPL,A

  194.                 MOV    A,DPH

  195.                 SUBB    A,#0

  196.                 MOV    DPH,A

  197.                 CLR    TR0            ;一幀掃描完,關(guān)掃描

  198. GO4:            POP    ACC

  199.                 RETI                    ;退出

  200. ;

  201. ;

  202. ;***************;

  203. ;  掃描文字表  ;

  204. ;***************;

  205. ; 共五排字,每排四個(gè)字,前后為黑屏

  206. TAB:    DB  ;黑屏

  207.               ;黑屏

  208.               ;黑屏
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表