本人是刚学51的菜鸟, 请教各位高手大哥一个问题,再此先谢过了!
我来点一款12864的液晶屏, 实现最简单的显示 " 间隔横条 " , 主要显示程序段用下边的这一段 的时候,一打开电源, 就可以正常的显示出 间隔横条 来, 可是, 一旦改成后边的那一段, 就绝对不 显示, 只在片1与片2的第一页显示4或8列出来,然后没反应了. 或者用镊子放在AT89C52的第19 脚, 显示屏便逐页逐列的缓慢的一列一列的显示出来, 最终片1显示正常, 片2(右半屏)却有部分乱 码. 始终想不明白:
这是开机即可以正常显示的程序段:
QUAN: MOV R4,#00H ; 页从0开始 QUAN1: MOV A,R4 ; 页数送到A ORL A,#0B8H ; 计算页码值代码 MOV R_1,A ; 页代码送到指令暂存器 CALL WRI1 CALL WRI2 ; 页代码写进LCM的片1与片2 MOV R_1,#40H ; 0列开始,即列代码为40H CALL WRI1 CALL WRI2 ; 起始列写进左右半屏 MOV R3,#00H ; 每一页写64个字节( 64 列) QUAN2: ; MOV R_2,#55H ; 调用"QUAN"的程序已在R_2中送入55H, 这里仅作说明本段程序用 CALL WRDATA1 ; 向片1写入显示数据 55H CALL WRDATA2 ; 向片2写入显示数据 55H INC R3 ; 列计数器加1 CJNE R3,#40H,QUAN2 ; 列如果没有到64, 就返回继续写 INC R4 ; 页计数器加1 CJNE R4,#08H,QUAN1 ; 页如果没有到8, 就返回继续写 RET
这是在上边这段稍加修改但却不能正常显示的程序段:
QUAN: MOV R4,#00H ; 页从0开始 QUAN1: MOV A,R4 ; 页数送到A ORL A,#0B8H ; 计算页码值代码 MOV R_1,A ; 页代码送到指令暂存器 CALL WRI1 ; 写页代码 CALL WRI2 MOV R_1,#40H ; 0列开始,即列代码为40H CALL WRI1 CALL WRI2 MOV R3,#00H ; 每一页写64个字节 ( 64列 ) QUAN2: ; MOV R_2,#55H ; 调用"QUAN"的程序已在R_2中送入55H, 这里仅作说明本段程序用 CALL WRDATA1 ; 将55H写进片1 ( 左半屏 ) INC R3 CJNE R3,#64,QUAN2 ; 将左半屏的一页64列写满 MOV R3,#0 QUAN3: ; MOV R_2,#55H ; 调用"QUAN"的程序已在R_2中送入55H, 这里仅作说明本段程序用 CALL WRDATA2 ; 将55H写进片2 ( 右半屏 ) INC R3 ; 列计数器加1 CJNE R3,#40H,QUAN3 ; 将右半屏的同一页写满64列 INC R4 ; 页计数器加1 CJNE R4,#08H,QUAN1 ; 页如果没有到8, 就返回继续重复 RET |