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