6007|12

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

12864显示问题,板子需要连续上电两次才能正常显示 [复制链接]

本人用stm32驱动12864液晶,写完后发现板子需要快速的连续上电两次才能显示。感觉很奇怪。
求路过的大神进来指点下,谢谢!
此帖出自stm32/stm8论坛

最新回复

没看出有问题啊!这样应该可以啊. 要不就是中文字符的高低8位反的那就 LCD_dat(*(Data+1)); LCD_dat(*Data); Data+=2; 不过这样纯英文就可能不对了  详情 回复 发表于 2012-9-21 18:36
点赞 关注
 

回复
举报

4008

帖子

0

TA的资源

版主

沙发
 
上电延时
此帖出自stm32/stm8论坛
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
是要在液晶初始化之前加入延时吗?
此帖出自stm32/stm8论坛
 
 

回复

4008

帖子

0

TA的资源

版主

4
 
是的
此帖出自stm32/stm8论坛

点评

液晶初始化子函数里加入延时没用,我的液晶是用串行方式显示的,是不是主芯片需要加延时?  详情 回复 发表于 2012-9-10 11:02
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 huo_hu 的帖子

液晶初始化子函数里加入延时没用,我的液晶是用串行方式显示的,是不是主芯片需要加延时?
此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

6
 
不知道你CS端怎么处理的
此帖出自stm32/stm8论坛

点评

我最后用连续两次初始化的方式解决了问题,。不过后来发现,可能是因为7805坏了的缘故,输出电压有6v所以才会这样。 不过现在又出现了新问题,就是显示中文字符会乱码,数字和字母就不会  详情 回复 发表于 2012-9-21 13:56
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 6楼 huo_hu 的帖子

我最后用连续两次初始化的方式解决了问题,。不过后来发现,可能是因为7805坏了的缘故,输出电压有6v所以才会这样。
不过现在又出现了新问题,就是显示中文字符会乱码,数字和字母就不会
此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

8
 
一个中文汉字是16位,乱码可能是地址后面的数据没有十六位对齐.一个地址上你只发一个字节肯定乱码
此帖出自stm32/stm8论坛

点评

请问能不能发个例子给我参考下,把高8位跟低8位分开不知道怎么写 以下是我写的发送字符的子函数,void LCD_pos(u8 X,u8 Y) { u8 pos; if(X==0) {X=0X80;} else if(X==1)  详情 回复 发表于 2012-9-21 15:52
感觉你说的非常有道理,好像找到了问题的根源,呵呵  详情 回复 发表于 2012-9-21 14:39
那是不是说,显示中文的 “设置显示位置”的子函数 跟显示数字跟字母的“设置显示位置”的子函数不一样的?  详情 回复 发表于 2012-9-21 14:38
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 8楼 huo_hu 的帖子

那是不是说,显示中文的 “设置显示位置”的子函数 跟显示数字跟字母的“设置显示位置”的子函数不一样的?
此帖出自stm32/stm8论坛

点评

请问能不能发个例子给我参考下,把高8位跟低8位分开不知道怎么写 以下是我写的发送字符的子函数,void LCD_pos(u8 X,u8 Y) { u8 pos; if(X==0) {X=0X80;} else if(X==1) {X=0X90;} else if(X==2)  详情 回复 发表于 2012-9-21 15:47
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

10
 

回复 8楼 huo_hu 的帖子

感觉你说的非常有道理,好像找到了问题的根源,呵呵
此帖出自stm32/stm8论坛
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

11
 

回复 9楼 冷板凳 的帖子

请问能不能发个例子给我参考下,把高8位跟低8位分开不知道怎么写
以下是我写的发送字符的子函数,void LCD_pos(u8 X,u8 Y)
{
        u8 pos;
        if(X==0)
          {X=0X80;}
        else if(X==1)
          {X=0X90;}
        else if(X==2)
          {X=0X88;}
        else if(X==3)
          {X=0X98;}
        pos=X+Y;
        LCD_cmd(pos);
}


void LCD_Display(u8 x, u8 y, u8 *Data)
{
LCD_pos(x,y);
//delay_nms(2);
while(*Data != '\0')
{
  LCD_dat(*Data);
  Data++;
  //delay_nms(1);
}
}
此帖出自stm32/stm8论坛
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

12
 

回复 8楼 huo_hu 的帖子

请问能不能发个例子给我参考下,把高8位跟低8位分开不知道怎么写
以下是我写的发送字符的子函数,void LCD_pos(u8 X,u8 Y)
{
        u8 pos;
        if(X==0)
          {X=0X80;}
        else if(X==1)
          {X=0X90;}
        else if(X==2)
          {X=0X88;}
        else if(X==3)
          {X=0X98;}
        pos=X+Y;
        LCD_cmd(pos);
}


void LCD_Display(u8 x, u8 y, u8 *Data)
{
LCD_pos(x,y);
//delay_nms(2);
while(*Data != '\0')
{
  LCD_dat(*Data);
  Data++;
  //delay_nms(1);
}
}
此帖出自stm32/stm8论坛

点评

没看出有问题啊!这样应该可以啊. 要不就是中文字符的高低8位反的那就 LCD_dat(*(Data+1)); LCD_dat(*Data); Data+=2; 不过这样纯英文就可能不对了  详情 回复 发表于 2012-9-21 18:36
 
 
 

回复

4008

帖子

0

TA的资源

版主

13
 

回复 12楼 冷板凳 的帖子

没看出有问题啊!这样应该可以啊.
要不就是中文字符的高低8位反的那就

LCD_dat(*(Data+1));
LCD_dat(*Data);
Data+=2;
不过这样纯英文就可能不对了
此帖出自stm32/stm8论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表