怎么改变LCD1602里自定义字符的显示位置呢?
比如显示温度标记的C和它左边的那个小圆圈:
MAIN:ACALL INIT_LCD ;初始化 ACALL TEMP_BJ ;显示温标C ACALL STORE_DATA ;将自定义字符存入CGRAM MOV A, #0CBH ;写入显示起始地址 ACALL WR_COMM ;写指令 ACALL WR_DATA ;写数据
TEMP_BJ:MOV A,#0CBH ;设定第二行起始地址 ACALL WR_COMM ;写指令 MOV DPTR,#BJ ;存代码表 MOV R1,#0 ;指到表中第一个码 MOV R0,#2 TP1:MOV A,R1 MOVC A,@A+DPTR ACALL WR_DATA ;写数据 ……
STORE_DATA:MOV A,#40H ;指定CGRAM起始地址 ACALL WR_COMM ;写指令 MOV R2,#08H ;图形数据长度8个字节 MOV DPTR,#TAB ;存代码表 MOV R3,#00H ;使指针指到表中第一个码 S_D:MOV A,R3 MOVC A,@A+DPTR ;取码 ACALL WR_DATA ;写数据 ......
上面有两处出现了MOV A,#0CBH, 我的理解是: 第一个的意思是确定自定义字符(那个小圆圈)的位置; 第二个的意思是确定温标C的位置;
可是: 一.我改了其中一个后,屏上就出现了一个小圆圈,还有小圆圈和C一起的摄氏度的 符号.怎么改变LCD1602里自定义字符的显示位置呢? 二.这个小圆圈的位置我可以改到别处,但是那个C的左边一直有一个小圆圈啊!!! 我没设定小圆圈就在C的左边一格的啊?! 没让它们粘在一起的啊?! 三.而且,程序里没看见说让显示自定义字符啊? 是STORE_DATA子程序么? 四.MOV A,#40H ;指定CGRAM起始地址 这一句是怎么回事啊? 为什么是#40H呢?!
怎么回事啊? 实在是弄不懂了!真的有些晕了!请大家帮忙看一看! 程序是网上下载来的.
谢谢!
|