4230|8

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

我想写个点阵屏动态程序,大家请提示扫描程序哪里出错了??? [复制链接]

想写个点阵屏动态程序,大家请提示*********扫描程序***********部份哪里出错了???
指向第4个字行右字节到指向前3个字行右字节
再到指向前2字行右字节,到指向第一个字右字节

每排4字*32=128字
分析由 128-31=97开始定位
       96-31=65
      64-31=33
      32-31=1
程序通过仿真后全灯亮??通过仿真器执行跟踪功能在主程序下到
LCALL  DIS1 后一直全屏亮,往下跟踪一直无反应。到底错在哪里???
           
下面为6页资料连接地址,请大家看完后给我一点见议啦!
http://img016.photo.21cn.com/photos/forum/20080909/m/5BF77FCCF08DE9E989DBAF530DA9BF36.jpg

http://img016.photo.21cn.com/photos/forum/20080909/m/D8A22E8973C88E66E5490C9CC9092FB9.jpg

http://img016.photo.21cn.com/photos/forum/20080909/m/77AFFFAB8EF207A01CA7507644E0A1F4.jpg

http://img016.photo.21cn.com/photos/forum/20080909/m/A7ECC3D7D53302E45F61111B7F322148.jpg

http://img016.photo.21cn.com/photos/forum/20080909/m/5CFBF86873576AA19745730F5810CBD0.jpg

http://img016.photo.21cn.com/photos/forum/20080909/m/DD91350AEAA4547759140612134F1779.jpg


最新回复

对不起考虑不严密,你的电路应当这样操作.           N0一行数据到串-并行模块完毕后,N0行选择器打开,一行LED显示,关闭行选择器           N1一行数据到串-并行模块完毕后,N1行选择器打开,一行LED显示,关闭行选择器           N2一行数据到串-并行模块完毕后,N2行选择器打开,一行LED显示,关闭行选择器 >>>>>>              详情 回复 发表于 2008-10-31 19:44
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
;显示字用查表法,不占内存,用四个16*16共阳LED点阵显示,
;效果:向上滚动显示字,每次四个,重复循环。
;R2:行扫描地址(从00-0FH)。
;R3:滚动显示时控制移动速度,也可控制静止显示的时间。
;************;
;中断入口程序;
;************;
;
ORG    0000H
LJMP    START
ORG    0003H
RETI
ORG    000BH
LJMP    INTT0
ORG    0013H
RETI
ORG    001BH
RETI
ORG    0023H
RETI
ORG    002BH
RETI
;
;************;
; 初始化程序 ;
;************;
;
;
;************;
;  主程序  ;
;************;
;
START:          MOV    20H,#00H            ;清标志,00H为1帧扫描结束标志
                MOV    A,#0FFH              ;端口初始化
                MOV    P1,A
                MOV    P2,A
                MOV    P3,A
                MOV    P0,A
                CLR    P1.6            ;串行寄存器打入输出端控制位
                MOV    TMOD,#01H      ;使用T0作16位定时器,行扫描用。
                MOV    TH0,#0FCH      ;1ms初值(12MHZ)
                MOV    TL0,#18H
                MOV    SCON,#00H      ;串口0方式传送显示字节
                MOV    IE,#82H        ;T0中断允许,总中断允许
                MOV    SP,#70H
                LCALL  DIS1            ;显示准备,黑屏,1.5秒
MAIN:          MOV    DPTR,#TAB
                LCALL  MOVDISP        ;逐排显示,每次四字)
                MOV    DPTR,#TAB
                LCALL  MOVDISP1        ;滚动显示,每排四字)
                AJMP    MAIN
;
;
;********************;
; 四字逐排显示子程序 ;
;********************;
;每次四字移入移出显示方式,入口时定义好DPTR值
;
MOVDISP:        MOV    R1,#6          ;显示6排字,每排四字(R1=排数)
DISLOOP:        MOV    R3,#100        ;每排显示时间1.6*100=1.6S
DISMOV:        MOV    R2,#00H        ;第0行开始
                SETB    TR0            ;开扫描(每次一帧)
WAITMOV:        JBC    00H,DISMOV1    ;标志为1扫描一帧结束(16毫秒为1帧,每行1毫秒)
                AJMP    WAITMOV
DISMOV1:        DJNZ    R3,DISMOV      ;1帧重复显示(控制显示时间)
                MOV    A,#128          ;显示字指针移一排(每排4字*32=128)
                ADD    A,DPL          ;
                MOV    DPL,A
                MOV    A,#0
                ADDC    A,DPH
                MOV    DPH,A
                DEC    R1              ;R1为0,显示完
                MOV    A,R1
                JZ      MOVOUT          ;
                AJMP    DISLOOP        ;
MOVOUT:        RET                    ;移动显示结束
;
;********************;
; 四字滚动显示子程序 ;
;********************;
;每排四字向上移出显示方式,入口时定义好DPTR值
;
MOVDISP1:        MOV    R1,#255          ;向上移动显示6排字,每排四字(R1=排数*16)
DISLOOP1:        MOV    R3,#10          ;移动速度1.6*10=0.16S
DISMOV2:        MOV    R2,#00H        ;第0行开始
                SETB    TR0            ;开扫描(每次一帧)
WAITMOV1:        JBC    00H,DISMOV3    ;标志为1扫描一帧结束(16毫秒为1帧,每行1毫秒)
                AJMP    WAITMOV1
DISMOV3:        DJNZ    R3,DISMOV2      ;1帧重复显示(控制移动速度)
                INC    DPTR            ;显示字指针移一行(二字节位置)
                INC    DPTR
                DEC    R1              ;R1为0,显示完
                MOV    A,R1
                JZ      MOVOUT1        ;
                AJMP    DISLOOP1        ;
MOVOUT1:        RET                    ;移动显示结束
;
;
;*****************;
; 四个字显示子程序  ;
;*****************;
;静止显示表中某四个字
DIS1:          MOV    R3,#5AH        ;静止显示时间控制(16MS*#=1.6秒)
DIS11:          MOV    R2,#00H        ;一帧扫描初始值(行地址从00-0FH)
                MOV    DPTR,#TAB      ;取表首址
                SETB    TR0            ;开扫描(每次一帧)
WAIT11:        JBC    00H,DIS111      ;为1,扫描一帧结束
                AJMP    WAIT11
DIS111:        DJNZ    R3,DIS11
                RET
;
;
;************;
;  扫描程序  ;
;************;
;1MS传送一行,每行显示1毫秒,一次传送四个字的某行共8个字节.
;
INTT0:          PUSH    ACC
                MOV    TH0,#0FCH      ;1ms初值重装
                MOV    TL0,#18H
                MOV    A,#97          ;指向第四个字行右字节
                ADD    A,DPL
                MOV    DPL,A
                MOV    A,#0
                ADDC    A,DPH
                MOV    DPH,A
                MOV    A,#0
                MOVC    A,@A+DPTR      ;查表
                MOV    SBUF,A          ;串口0方式发送
WAIT:          JBC    TI,GO          ;等待发送完毕
                AJMP    WAIT            ;
GO:            MOV    A,DPL          ;指向第四个字行左字节
                SUBB    A,#1
                MOV    DPL,A
                MOV    A,DPH
                SUBB    A,#0
                MOV    DPH,A
                MOV    A,#0
                MOVC    A,@A+DPTR
                MOV    SBUF,A
WAIT1:          JBC    TI,GO1
                AJMP    WAIT1
;
GO1:            MOV    R0,#03H
MLOOP:          MOV    A,DPL          ;指向前三个字行右字节
                SUBB    A,#31
                MOV    DPL,A
                MOV    A,DPH
                SUBB    A,#0
                MOV    DPH,A
                MOV    A,#0
                MOVC    A,@A+DPTR      ;查表
                MOV    SBUF,A          ;串口0方式发送
WAIT2:          JBC    TI,GO2          ;等待发送完毕
                AJMP    WAIT2            ;
GO2:            MOV    A,DPL          ;指向前三个字行左字节
                SUBB    A,#1
                MOV    DPL,A
                MOV    A,DPH
                SUBB    A,#0
                MOV    DPH,A
                MOV    A,#0
                MOVC    A,@A+DPTR
                MOV    SBUF,A
WAIT3:          JBC    TI,GO3
                AJMP    WAIT3
GO3:            DJNZ    R0,MLOOP        ;执行三次
;
;
                SETB    P1.7            ;关行显示,准备涮新
                NOP                    ;串口寄存器数据稳定
                SETB    P1.6            ;产生上升沿,行数据打入输出端
                NOP                    ;
                NOP                    ;
                CLR    P1.6            ;恢复低电平
                MOV    A,R2            ;修改显示行地址
                ORL    A,#0F0H        ;修改显示行地址
                MOV    R2,A            ;修改显示行地址
                MOV    A,P1            ;修改显示行地址
                ORL    A,#0FH          ;修改显示行地址
                ANL    A,R2            ;修改显示行地址
                MOV    P1,A            ;修改完成
                CLR    P1.7            ;开行显示
                INC    R2              ;下一行扫描地址值
                INC    DPTR            ;
                INC    DPTR            ;下一行数据地址
                MOV    A,R2
                ANL    A,#0FH
                JNZ    GO4
                SETB    00H            ;R2为10H,现为末行扫描,置1帧结束标志
                MOV    A,DPL          ;指针修正为原帧初值
                SUBB    A,#32
                MOV    DPL,A
                MOV    A,DPH
                SUBB    A,#0
                MOV    DPH,A
                CLR    TR0            ;一帧扫描完,关扫描
GO4:            POP    ACC
                RETI                    ;退出
;
;
;***************;
;  扫描文字表  ;
;***************;
; 共五排字,每排四个字,前后为黑屏
TAB:    DB  ;黑屏
              ;黑屏
              ;黑屏
              ;单
              ;片
              ;机
              ;是
              ;工
              ;业
              ;中
              ;最
              ;基
              ;本
              ;的
              ;应
              ;用
              ;方
              ;式
              ;我
              ;爱
              ;单
              ;片
              ;机
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
大哥你用C呀
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
最近我也在钻液晶

还好,没郁闷死

呵呵
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

5
 
请版主指点指点啦!现在的我在这个产品开发中走不出来
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

6
 
汇编看得还不错~
其实液晶显示都大同小异
用大用小的问题
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
呵呵,楼主问LED ,怎么大家都回答LCD呢?这个我以前也做过,不过是PIC 的汇编。慢慢分析吧,会找到问题的
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

8
 
我看了硬件一般没有什么,软件是一团面条,对查错不利,如果分步分块操作就可知道那一步出错
这样是不是可能,
输入要显示的字符,取得字模,把字模送入显示缓冲区,显示,
我没有看你的程序,你出现的问题可能是在几个字的X一行输出到串-并行模块LED一直是显示的也就是时序不对
可以这样发送N0一行数据到串-并行模块完毕后,N0行选择器打开,一行LED显示,
          N1一行数据到串-并行模块完毕后,N1行选择器打开,一行LED显示,
          N2一行数据到串-并行模块完毕后,N2行选择器打开,一行LED显示,
          >>>>>>>>>>>>
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
对不起考虑不严密,你的电路应当这样操作.
          N0一行数据到串-并行模块完毕后,N0行选择器打开,一行LED显示,关闭行选择器
          N1一行数据到串-并行模块完毕后,N1行选择器打开,一行LED显示,关闭行选择器
          N2一行数据到串-并行模块完毕后,N2行选择器打开,一行LED显示,关闭行选择器

>>>>>>
        
  
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表