找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2442|回复: 0
打印 上一主题 下一主题
收起左侧

滚动显示程序

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-26 23:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. 显示字用查表法,不占内存,用四个16*16共阳LED点阵显示,

  2. ;效果:向上滚动显示字,每次四个,重复循环。

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

  4. ;R3:滚动显示时控制移动速度,也可控制静止显示的时间。

  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            ;清标志,00H为1帧扫描结束标志

  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位定时器,行扫描用。

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

  42.                 MOV    TL0,#18H

  43.                 MOV    SCON,#00H      ;串口0方式传送显示字节

  44.                 MOV    IE,#82H        ;T0中断允许,总中断允许

  45.                 MOV    SP,#70H

  46.                 LCALL  DIS1            ;显示准备,黑屏,1.5秒

  47. MAIN:          MOV    DPTR,#TAB

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

  49.                 MOV    DPTR,#TAB

  50.                 LCALL  MOVDISP1        ;滚动显示,每排四字)

  51.                 AJMP    MAIN

  52. ;

  53. ;

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

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

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

  57. ;每次四字移入移出显示方式,入口时定义好DPTR值

  58. ;

  59. MOVDISP:        MOV    R1,#6          ;显示6排字,每排四字(R1=排数)

  60. DISLOOP:        MOV    R3,#100        ;每排显示时间1.6*100=1.6S

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

  62.                 SETB    TR0            ;开扫描(每次一帧)

  63. WAITMOV:        JBC    00H,DISMOV1    ;标志为1扫描一帧结束(16毫秒为1帧,每行1毫秒)

  64.                 AJMP    WAITMOV

  65. DISMOV1:        DJNZ    R3,DISMOV      ;1帧重复显示(控制显示时间)

  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                    ;移动显示结束

  77. ;

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

  79. ; 四字滚动显示子程序 ;

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

  81. ;每排四字向上移出显示方式,入口时定义好DPTR值

  82. ;

  83. MOVDISP1:        MOV    R1,#255          ;向上移动显示6排字,每排四字(R1=排数*16)

  84. DISLOOP1:        MOV    R3,#10          ;移动速度1.6*10=0.16S

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

  86.                 SETB    TR0            ;开扫描(每次一帧)

  87. WAITMOV1:        JBC    00H,DISMOV3    ;标志为1扫描一帧结束(16毫秒为1帧,每行1毫秒)

  88.                 AJMP    WAITMOV1

  89. DISMOV3:        DJNZ    R3,DISMOV2      ;1帧重复显示(控制移动速度)

  90.                 INC    DPTR            ;显示字指针移一行(二字节位置)

  91.                 INC    DPTR

  92.                 DEC    R1              ;R1为0,显示完

  93.                 MOV    A,R1

  94.                 JZ      MOVOUT1        ;

  95.                 AJMP    DISLOOP1        ;

  96. MOVOUT1:        RET                    ;移动显示结束

  97. ;

  98. ;

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

  100. ; 四个字显示子程序  ;

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

  102. ;静止显示表中某四个字

  103. DIS1:          MOV    R3,#5AH        ;静止显示时间控制(16MS*#=1.6秒)

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

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

  106.                 SETB    TR0            ;开扫描(每次一帧)

  107. WAIT11:        JBC    00H,DIS111      ;为1,扫描一帧结束

  108.                 AJMP    WAIT11

  109. DIS111:        DJNZ    R3,DIS11

  110.                 RET

  111. ;

  112. ;

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

  114. ;  扫描程序  ;

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

  116. ;1MS传送一行,每行显示1毫秒,一次传送四个字的某行共8个字节.

  117. ;

  118. INTT0:          PUSH    ACC

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

  120.                 MOV    TL0,#18H

  121.                 MOV    A,#97          ;指向第四个字行右字节

  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方式发送

  130. WAIT:          JBC    TI,GO          ;等待发送完毕

  131.                 AJMP    WAIT            ;

  132. GO:            MOV    A,DPL          ;指向第四个字行左字节

  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          ;指向前三个字行右字节

  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方式发送

  154. WAIT2:          JBC    TI,GO2          ;等待发送完毕

  155.                 AJMP    WAIT2            ;

  156. GO2:            MOV    A,DPL          ;指向前三个字行左字节

  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        ;执行三次

  168. ;

  169. ;

  170.                 SETB    P1.7            ;关行显示,准备涮新

  171.                 NOP                    ;串口寄存器数据稳定

  172.                 SETB    P1.6            ;产生上升沿,行数据打入输出端

  173.                 NOP                    ;

  174.                 NOP                    ;

  175.                 CLR    P1.6            ;恢复低电平

  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            ;下一行数据地址

  187.                 MOV    A,R2

  188.                 ANL    A,#0FH

  189.                 JNZ    GO4

  190.                 SETB    00H            ;R2为10H,现为末行扫描,置1帧结束标志

  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            ;一帧扫描完,关扫描

  198. GO4:            POP    ACC

  199.                 RETI                    ;退出

  200. ;

  201. ;

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

  203. ;  扫描文字表  ;

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

  205. ; 共五排字,每排四个字,前后为黑屏

  206. TAB:    DB  ;黑屏

  207.               ;黑屏

  208.               ;黑屏
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表