3748|11

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

液晶屏汉字显示的疑问 [复制链接]

240128点阵
T6963C控制器
直接连接方式
汇编写的说明书上的例子
但是点亮后屏上显示为花屏或者说是乱七八糟的东西。。
后使用间接方式显示也无反应。。。
可能是硬件(屏)的问题或者是写的程序无解。
求助原因及具体解决办法

最新回复

我用过12864,我也有出现过这种问题,你的片选端cs接了吗?还有你所选择的通信方式端口,12864是psb端, 串行,并行传输,psb要接相应高或低电平的  详情 回复 发表于 2008-8-6 00:11
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这儿有个T6963的程序,和T6963差不多。
http://eda51.blog.hexun.com/8658091_d.html

这个程序中有段代码有点问题。


  1. /********************************************************************************
  2. 函数名:Void ShowHZ16x16(unsigned char column,unsigned char lin,unsigned int hzcode)
  3. 函数功能:显示一个汉字(16*16点阵)
  4.           column:汉字起始列(0-30) (240/8=30)
  5.           lin: 汉字起始行(0-7)    (128/16=8)
  6.        hzcode: 汉字代码(自定义的)
  7. 注:超出范围的将直接写到RAM中,可以实现卷屏效果
  8. ********************************************************************************/
  9. void ShowHZ16x16(unsigned char column,unsigned char lin,unsigned int hzcode)
  10. {
  11.     unsigned char temp1,temp2;
  12.     unsigned int StartAddr;
  13.     unsigned char i=0;
  14.     unsigned int * temp;
  15.     [color=#FF0000]temp=&HZK16x16[hzcode][0];
  16.     StartAddr=16*lin*LineChar+ column;       //定位起始行
  17.     for(i=0;i<16;i++)
  18.     {
  19.       WriteCmd3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), AddrSet);
  20.       temp1=HZK16x16[hzcode][i*2+*temp];
  21.       WriteCmd2(temp1, DataWAddrI);             // 左半部 地址加一
  22.        temp2=HZK16x16[hzcode][i*2+1+*temp]; [/color]      
  23.       WriteCmd2(temp2, DataWAddrNV);            // 右半部 显示地址不变
  24.       StartAddr=StartAddr + LineChar;           // 换到下一行
  25.     }
  26. } [code]

  27. 其中的红字部分有点问题,我改后的代码如下:
  28. [code]
  29. void ShowHZ16x16(unsigned char column,unsigned char lin,unsigned int hzcode)
  30. {
  31.     unsigned char temp1,temp2;
  32.     unsigned int StartAddr;
  33.     unsigned char i=0;
  34.     unsigned char * temp;
  35.     unsigned char test1;
  36.     unsigned char test2;

  37.     temp=&HZK16x16[hzcode][0];
  38.     StartAddr=16*lin*LineChar + column;       //定位起始行
  39.     for(i=0;i<16;i++)
  40.     {
  41.       test1 = (unsigned char)(StartAddr);
  42.       test2 = (unsigned char)(StartAddr>>8);
  43.       WriteCmd3( (unsigned char)(StartAddr), (unsigned char)(StartAddr>>8), AddrSet);
  44.       temp1=HZK16x16[hzcode][i];
  45.       WriteCmd2(temp1, DataWAddrI);             // 左半部 地址加一
  46.       temp2=HZK16x16[hzcode][i+1];
  47.       WriteCmd2(temp2, DataWAddrNV);            // 右半部 显示地址不变
  48.       StartAddr=StartAddr + LineChar;           // 换到下一行
  49.     }
  50. }

复制代码


经调试的代码可用。
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
估计是程序的问题
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
To: 楼主

不好意思,我当初给的修改后的程序贴错了。正确的是:



  1. /********************************************************************************
  2. 函数名:Void ShowHZ16x16(unsigned char column,unsigned char lin,unsigned int hzcode)
  3. 函数功能:显示一个汉字(16*16点阵)
  4.           column:汉字起始列(0-30) (240/8=30)
  5.           lin: 汉字起始行(0-7)    (128/16=8)
  6.        hzcode: 汉字代码(自定义的)
  7. 注:超出范围的将直接写到RAM中,可以实现卷屏效果
  8. ********************************************************************************/
  9. void ShowHZ16x16(unsigned char column,unsigned char lin,unsigned int hzcode)
  10. {
  11.     unsigned char temp1,temp2;
  12.     unsigned int StartAddr;
  13.     unsigned char i=0;
  14.     unsigned char * temp;
  15.     unsigned char test1;
  16.     unsigned char test2;

  17.     temp=&HZK16x16[hzcode][0];
  18.     StartAddr=16*lin*LineChar + column;       //定位起始行
  19.     for(i=0;i<16;i++)
  20.     {
  21.       test1 = (unsigned char)(StartAddr);
  22.       test2 = (unsigned char)(StartAddr>>8);
  23.       WriteCmd3(  test1, test2, AddrSet);
  24.       temp1=HZK16x16[hzcode][2*i];
  25.       WriteCmd2(temp1, DataWAddrI);             // 左半部 地址加一
  26.       temp2=HZK16x16[hzcode][2*i+1];
  27.       WriteCmd2(temp2, DataWAddrNV);            // 右半部 显示地址不变
  28.       StartAddr=StartAddr + LineChar;           // 换到下一行
  29.     }
  30. }
复制代码


真是太不好意思了。...
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

5
 
先看看你是否复位正确,液晶正确复位后屏幕一般是稳定的点亮或者暗的,不会花
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

6
 
建议仔细看看文档

看看复位信号, 注意时序, 还有的LCD 是分左右屏,不能只对一边操作...
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

7
 
好贴
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
其一:
由于是直接方式,时序应该不存在问题
单双屏也设置正确的。

其二:
看了2楼帖的代码
没有相应的头文件也不好去实现,
条件有限
但是步骤方式方法是相同的

其三:
复位电路按照说明书做的
我说的花屏现象就是无规律显示区域的西文乱码或者各种形状的跳变
觉得是程序的问题比较大些
假如可以的话贴上完整的汉字显示汇编程序
还有其他的请不吝赐教
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

9
 

先检查硬件比如电压等,后软件比如采用延时等
陕西杨工c8051f单片机博客
手机 13002928013
http://c8051fmcu.blog.sohu.com
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

10
 
硬件电压方面都是正常值
软件延时也加过了。。。。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

11
 
液晶上电后先刷次屏,把图形屏幕字符清除完毕后再开始显示。
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

12
 
我用过12864,我也有出现过这种问题,你的片选端cs接了吗?还有你所选择的通信方式端口,12864是psb端,

串行,并行传输,psb要接相应高或低电平的
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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