| 采用深圳瑞特的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
 
 |