专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
OCMJ4X8C-8 12864反白显示命令
2019-03-24 13:25
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
7125
2
1296
最近用了OCMJ4X8C-8 12864的液晶,有几个问题请教:
1.单行的反白显示命令是怎样的?我看了说明书上有写04H-07H的,但是我试了不行!
2.它可以中文显示,游标显示的位置是一个汉字的,但是如果我显示的英文或数字,怎么让游标只显示在一个字符上
有知道的教我下吧,谢谢!
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
zhzhchang
1楼-- · 2019-03-24 21:28
< 我用过OCMJ2X8C,对于单行反白:
如果你使用系统自带的反白命令,你会看到在液晶上反白了两行,这是因为液晶控制器控制跟液晶实际显示是有区别的,你看一下这个液晶显示的控制器资料就能明白,液晶上面的第一、三行在液晶控制器看来只是一行。
可以使用绘图命令来单独实现液晶显示层面上的单行反白,给你个例子:
/**
* 简介:任意行反白/取消反白
*
* @param line 行号(0,1,2,3)
* @param enable为1使能反白,为0取消反白
* @return 无
*/
void con_disp (uint32 _line,uint32 enable)
{
uint8 i,j;
for(j=0;j<16;j++) //每个中文字符占16个点
{
for(i=0;i<8;i++) //8个中文字符宽度,即LCD的一行
{
write_com(0x36); //扩充指令集
write_com(Lcd_Con_X_Y[_line][1]+j);
write_com(Lcd_Con_X_Y[_line][0]+i);
write_com(0x30);
if(enable==1) //使能指定行反白
{
write_data(0xff);
write_data(0xff);
}
else //还原指定反白行
{
write_data(0x00);
write_data(0x00);
}
}
}
write_com(0x36);
write_com(0x30);
}
其中,
uint8 const Lcd_Con_X_Y[4][2]={{0x80,0x80},{0x80,0x90},{0x88,0x80},{0x88,0x90}}; //LCD行反白显示坐标
第二个问题,这个液晶控制器自带的游标只能显示一个中文汉字大小,如果你是16*8的英文字符,要自己设计游标的,也是用绘图命令。
对于英文和数字的显示,我都是用反白来做的
给你个参考代码:
/**
* 简介:任意位置反白/取消反白
*
* 描述:此函数反白/取消反白一块区域(16*8大小),由于lm3033B液晶的控制芯片最小操作对象是16*16区域,所以,对这个最小区域分成左右两半。
* @param x为横坐标, x的取值为(第一行和第二行为0x80~0x87;第三行和第四行为0x88~0x8F)
* @param y为纵坐标, y的取值为(第一行和第三行:0x80;第二行和第四行:0x8F)
* @param direction=1为16*16的右半部,=0为16*16的左半部
* @return 无
*
*/
void con_disp8(uint32 x,uint32 y,uint32 direction)
{
uint8 j;
for(j=0;j<16;j++) //每个中文字符占16个点
{
write_com(0x36); //扩充指令集
write_com(y+j);
write_com(x);
write_com(0x30);
if(direction==1) //16*16区域的右半部反白
{
write_data(0x00);
write_data(0xFF);
}
else // 16*16区域的左半部反白
{
write_data(0xFF);
write_data(0x00);
}
}
write_com(0x36);
write_com(0x30);
}
加载中...
amy_shen
2楼-- · 2019-03-24 23:04
< :TI_MSP430_内容页_SA7 --> 谢谢,我试试看!
加载中...
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
如果你使用系统自带的反白命令,你会看到在液晶上反白了两行,这是因为液晶控制器控制跟液晶实际显示是有区别的,你看一下这个液晶显示的控制器资料就能明白,液晶上面的第一、三行在液晶控制器看来只是一行。
可以使用绘图命令来单独实现液晶显示层面上的单行反白,给你个例子:
/**
* 简介:任意行反白/取消反白
*
* @param line 行号(0,1,2,3)
* @param enable为1使能反白,为0取消反白
* @return 无
*/
void con_disp (uint32 _line,uint32 enable)
{
uint8 i,j;
for(j=0;j<16;j++) //每个中文字符占16个点
{
for(i=0;i<8;i++) //8个中文字符宽度,即LCD的一行
{
write_com(0x36); //扩充指令集
write_com(Lcd_Con_X_Y[_line][1]+j);
write_com(Lcd_Con_X_Y[_line][0]+i);
write_com(0x30);
if(enable==1) //使能指定行反白
{
write_data(0xff);
write_data(0xff);
}
else //还原指定反白行
{
write_data(0x00);
write_data(0x00);
}
}
}
write_com(0x36);
write_com(0x30);
}
其中,
uint8 const Lcd_Con_X_Y[4][2]={{0x80,0x80},{0x80,0x90},{0x88,0x80},{0x88,0x90}}; //LCD行反白显示坐标
第二个问题,这个液晶控制器自带的游标只能显示一个中文汉字大小,如果你是16*8的英文字符,要自己设计游标的,也是用绘图命令。
对于英文和数字的显示,我都是用反白来做的
给你个参考代码:
/**
* 简介:任意位置反白/取消反白
*
* 描述:此函数反白/取消反白一块区域(16*8大小),由于lm3033B液晶的控制芯片最小操作对象是16*16区域,所以,对这个最小区域分成左右两半。
* @param x为横坐标, x的取值为(第一行和第二行为0x80~0x87;第三行和第四行为0x88~0x8F)
* @param y为纵坐标, y的取值为(第一行和第三行:0x80;第二行和第四行:0x8F)
* @param direction=1为16*16的右半部,=0为16*16的左半部
* @return 无
*
*/
void con_disp8(uint32 x,uint32 y,uint32 direction)
{
uint8 j;
for(j=0;j<16;j++) //每个中文字符占16个点
{
write_com(0x36); //扩充指令集
write_com(y+j);
write_com(x);
write_com(0x30);
if(direction==1) //16*16区域的右半部反白
{
write_data(0x00);
write_data(0xFF);
}
else // 16*16区域的左半部反白
{
write_data(0xFF);
write_data(0x00);
}
}
write_com(0x36);
write_com(0x30);
}
一周热门 更多>