8959|44

25

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

液晶12864如何实现逐行显示? [复制链接]

新手求教液晶12864如何实现逐行显示,感谢高手指导
此帖出自51单片机论坛

最新回复

你试试 wr_com(0x80); wr_dat('A'); wr_dat('B'); wr_dat(0x04); wr_dat(0x10); wr_dat(0x04); wr_dat(0x12); 就明白了。   详情 回复 发表于 2014-4-22 22:11
点赞 关注
 

回复
举报

1298

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
楼主的意思是:第一行从左到右,然后第二行从左到右,然后依次往下?
此帖出自51单片机论坛
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

板凳
 
如果是这样的话,那只需设定好每一行的起始地址,然后写入需要显示的数据,地址指针似自动加1,但是不要超过一行的最大显示字符和汉字数,比如:
第一行起始地址:80H  然后写入显示数据
第二行起始地址:90H  然后写入显示数据
第三行起始地址:88H  然后写入显示数据
第四行起始地址:98H  然后写入显示数据
此帖出自51单片机论坛

点评

谢谢啊!我是按键显示的, 不知道你说的能不能实现我试试  详情 回复 发表于 2014-4-21 16:13
 
 
 

回复

977

帖子

4

TA的资源

纯净的硅(中级)

4
 
没看懂楼主说的什么意思,你指的逐行是沙发说的那样吗???你先别管逐行显示,你现在能控制液晶显示出字符吗?如果能,下面该怎么显示就是显示地址的问题了,把要显示的字符放到对应的显示地址。如果你还不能控制液晶显示字符,那就再看看资料吧
此帖出自51单片机论坛

点评

是二楼说的那个意思,但是我是通过按键显示的,比如我按了16次后,再按一次如何显示在第二行  详情 回复 发表于 2014-4-21 16:09
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

5
 
MrKingMCU 发表于 2014-4-21 16:04
没看懂楼主说的什么意思,你指的逐行是沙发说的那样吗???你先别管逐行显示,你现在能控制液晶显示出字符 ...

是二楼说的那个意思,但是我是通过按键显示的,比如我按了16次后,再按一次如何显示在第二行
此帖出自51单片机论坛

点评

如果是带字库液晶的话,初始化完成之后 /****************************************************************************** *函 数 名:LcdWriteStr *参 数:uint8 add,uint8 *pstr;显示的初始地址  详情 回复 发表于 2014-4-21 18:59
如果显示第二行,就要改变为第二行的起始地址了  详情 回复 发表于 2014-4-21 16:13
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

6
 
接上面的,楼主如果想看从左到右逐行效果显示明显的话,可以在中间加上延时,当然,楼主如果会显示字符和数字,这些都不是问题
此帖出自51单片机论坛
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

7
 
hailei41 发表于 2014-4-21 16:09
是二楼说的那个意思,但是我是通过按键显示的,比如我按了16次后,再按一次如何显示在第二行

如果显示第二行,就要改变为第二行的起始地址了
此帖出自51单片机论坛

点评

就是不知道在哪里改变地址啊,我是半路出家的对12864不熟,求指导啊  详情 回复 发表于 2014-4-21 16:16
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

8
 
gh131413 发表于 2014-4-21 16:03
如果是这样的话,那只需设定好每一行的起始地址,然后写入需要显示的数据,地址指针似自动加1,但是不要超过 ...

谢谢啊!我是按键显示的, 不知道你说的能不能实现我试试
此帖出自51单片机论坛
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

9
 
gh131413 发表于 2014-4-21 16:13
如果显示第二行,就要改变为第二行的起始地址了

就是不知道在哪里改变地址啊,我是半路出家的对12864不熟,求指导啊

此帖出自51单片机论坛

点评

那你第一行是怎么显示的?  详情 回复 发表于 2014-4-21 16:18
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

10
 
hailei41 发表于 2014-4-21 16:16
就是不知道在哪里改变地址啊,我是半路出家的对12864不熟,求指导啊

那你第一行是怎么显示的?
此帖出自51单片机论坛

点评

void Wr_Char(uchar x,uchar y,uchar date) { while(lcd_busy()); if (y == 0) { wr_com(0x80 + x); } if(y==1) { wr_com(0x90 + x); } if  详情 回复 发表于 2014-4-21 16:22
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

11
 
最好把程序帖上来
此帖出自51单片机论坛
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

12
 
gh131413 发表于 2014-4-21 16:18
那你第一行是怎么显示的?

void Wr_Char(uchar x,uchar y,uchar  date)
{
         while(lcd_busy());   
        if (y == 0)
                {     
                wr_com(0x80 + x);     
                }   
        if(y==1)
                {     
                wr_com(0x90 + x);     
                }
        if(y==2)
                {
                 wr_com(0x88 + x);
                }
                if(y==3)
                {
                  wr_com(0x98 + x);
                }
                wr_date(date);                        

}让y=0,x=i,显示

此帖出自51单片机论坛

点评

更改地址就成  详情 回复 发表于 2014-4-22 17:45
你这段程序是有问题的,12864一个地址上存放一个u16的数据也就是一个汉字编码,你这个写不进后半截,所以汉字肯定乱码  详情 回复 发表于 2014-4-21 16:47
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

13
 
本帖最后由 gh131413 于 2014-4-21 16:26 编辑

你的y应该一直为0所以显示第一行,变量y是按键还是什么,如果y为1就显示第二行,y为2就显示第三行,y为3变显示第四行,这样就很清楚了,主要是取决于变量y
此帖出自51单片机论坛
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

14
 
我有想过是通过地址来改变比如地址为87的时候,y=1;但是不知道怎么实现也不知道能不能实现
此帖出自51单片机论坛

点评

为87的时候,为什么y=1?  详情 回复 发表于 2014-4-21 16:31
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

15
 
gh131413 发表于 2014-4-21 16:25
你的y应该一直为0所以显示第一行,变量y是按键还是什么,如果y为1就显示第二行,y为2就显示第三行,y为3变 ...

我有想过是通过地址来改变比如地址为87的时候,y=1;但是不知道怎么实现也不知道能不能实现

此帖出自51单片机论坛
 
 
 

回复

1298

帖子

0

TA的资源

纯净的硅(高级)

16
 
hailei41 发表于 2014-4-21 16:28
我有想过是通过地址来改变比如地址为87的时候,y=1;但是不知道怎么实现也不知道能不能实现

为87的时候,为什么y=1?
此帖出自51单片机论坛

点评

这个想法可以吗  详情 回复 发表于 2014-4-21 16:44
额!错了是地址为88的时候,y=1;因为第一行的最后一个地址是87,再加一个就该是第二行了!改变y的数值的时候也要改变地址的数值!想是这样想但是程序不知道怎么写  详情 回复 发表于 2014-4-21 16:36
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

17
 
gh131413 发表于 2014-4-21 16:31
为87的时候,为什么y=1?

额!错了是地址为88的时候,y=1;因为第一行的最后一个地址是87,再加一个就该是第二行了!改变y的数值的时候也要改变地址的数值!想是这样想但是程序不知道怎么写
此帖出自51单片机论坛
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

18
 
gh131413 发表于 2014-4-21 16:31
为87的时候,为什么y=1?

这个想法可以吗

此帖出自51单片机论坛

点评

12864按照地址顺序是:第一行接着第三行,然后第二行接着第四行,建议你想显示哪一行就把哪一行的起始地址还是写一下吧  详情 回复 发表于 2014-4-21 16:54
 
 
 

回复

4008

帖子

0

TA的资源

版主

19
 
hailei41 发表于 2014-4-21 16:22
void Wr_Char(uchar x,uchar y,uchar  date)
{
         while(lcd_busy());   

你这段程序是有问题的,12864一个地址上存放一个u16的数据也就是一个汉字编码,你这个写不进后半截,所以汉字肯定乱码
此帖出自51单片机论坛

点评

要怎么改啊!改成16个地址吗?我看说明书上是这样 的地址,但是只能显示6个字符, 我也觉得奇怪  详情 回复 发表于 2014-4-21 16:50
 
 
 

回复

25

帖子

0

TA的资源

一粒金砂(中级)

20
 
huo_hu 发表于 2014-4-21 16:47
你这段程序是有问题的,12864一个地址上存放一个u16的数据也就是一个汉字编码,你这个写不进后半截,所以汉 ...

要怎么改啊!改成16个地址吗?我看说明书上是这样 的地址,但是只能显示6个字符, 我也觉得奇怪
此帖出自51单片机论坛

点评

什么液晶?带字库的吗? 写了半角就写不了全角.  详情 回复 发表于 2014-4-21 17:57
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表