打印

求教12864点阵液晶显示闪烁移位问题

[复制链接]
4955|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yjpnew8888|  楼主 | 2008-9-27 22:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
采用深圳瑞特的RT12864-J-3点阵屏做了个程序,MCU是东芝87PH846,仿真调试时出现屏闪烁,且需要用手靠近或压着仿真头的扁平线,显示屏才显示,而且显示不稳定,出现移位,且有时不显示,有时显示,不知是何故,附上程序,请大家帮忙分析下(时钟为8MHZ),采用P6口输出并行数据,P1口输出控制信号,RET接5V.
;-----------------------------------------------------------
;左半屏64列:显示汉字程序(16*16点阵)
;纵向取模,字节倒序
disp_chinese_l:
           ld     (lcd_command),(lcd_addz)       ;设置起始行地址
           call   ww_command_left                
;          ld     e,(lcd_addx)                   ;设置页地址
loop1_la:                                        
           
           ld     d,0                            ;每个汉字占两页
loop1_l:                                         
           ld     c,0                           ;查表指针清零       
           ld     (lcd_command),(lcd_addx)  ;e                ;设置页地址
           call   ww_command_left                
           ld     (lcd_command),(lcd_addy)       ;设置列地址
           call   ww_command_left                
loop2_l:                                         
           ld     a,(hl+)                        ;查表显示汉字的上半部分
           ld     (lcd_data1),a ;0xa5                  ;共16个字节
           call   ww_data_left                   
           inc    c  
           cmp    c,16                            
           j      lt,loop2_l                     
                                                 
           inc    (lcd_addx)  ;e                              ;页地址加1,指向汉字的下半部分
           inc    d  
           cmp    d,2                            
           j      lt,loop1_l                     
           add    (lcd_addy),16                  
           dec    (lcd_addx)  ;e                              
           dec    (lcd_addx)  ;e                              
           dec    (lcd_data2)                    ;显示汉字的个数
           j      nz,loop1_la
           ld     a,(lcd_addy)
           sub    a,0x40
           cmp    a,64
           j      lt,disp_ch_l_ret
           add    (lcd_addx),2
           ld     (lcd_addy),0x40
disp_ch_l_ret:           
           ret

;下面是主程序循环中显示刷新程序
home_picture:
         ld      (lcd_command),0x3e   ;关闭显示命令
         call    ww_command_left      ;关左屏
         call    ww_command_right     ;关右屏
       
         ld      (lcd_addz),0xc0      ;设定起始行,从0行开始
         ld      (lcd_command),(lcd_addz)
         call    ww_command_left
         call    ww_command_right 
          
         ld      (lcd_addx),0xb8      ;设定起始页,从0页开始
         ld      (lcd_command),(lcd_addx)
         call    ww_command_left
         call    ww_command_right  
         
         ld      (lcd_addy),0x40      ;设定起始列,从0列开始
         ld      (lcd_command),(lcd_addy)
         call    ww_command_left
         call    ww_command_right  
         
         ld      (lcd_command),0x3f   ;开启显示命令
         call    ww_command_left      ;开左屏
         call    ww_command_right     ;开右屏 

         ld      hl,ch_tab30            
         ld      (lcd_data2),2        ;显示两个汉字  
         call    disp_chinese_l  

         ld      (lcd_data2),2        ;显示两个汉字
         call    disp_chinese_l                        
         ld      (lcd_data2),2
         call    disp_chinese_l       ;显示两个汉字

         ld      (lcd_data2),2        ;显示两个汉字

         call    disp_chinese_l   

         ld      (lcd_data2),2        ;显示两个汉字  
         call    disp_chinese_l  

         ld      (lcd_data2),2        ;显示两个汉字
         call    disp_chinese_l                        
         ld      (lcd_data2),2        ;显示两个汉字

         call    disp_chinese_l  
         ld      (lcd_data2),2        ;显示两个汉字

         call    disp_chinese_l

         ret

相关帖子

沙发
0x小丑| | 2008-9-27 22:52 | 只看该作者

不看程序,就几点可能性

屏闪烁的事,你能否查一下你的程序,是否在不断的刷新显示了?而每一次刷新是否是全屏的?每一次刷新需要多长时间计算过没?估计你算清楚这些,这个问题就不需要再解释了.
其二,手按才能显示,还不稳定的问题可能有几个原因:1连接不可靠; 2LCD的模块都需要有偏压来调节整屏灰度之类的东西,确认你的设置和实际的LCD模块的连接是正确的,呵呵~~~

使用特权

评论回复
板凳
yjpnew8888|  楼主 | 2008-9-28 07:32 | 只看该作者

回复楼上

刷新率是500ms一次,刷新一次都是从第一行第一列开始,显示也是,刷新一次不到100ms

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

0

粉丝