搜索
bottom↓
回复: 10

19264液晶屏,列地址自增变成了 21436587.....

[复制链接]

出0入0汤圆

发表于 2017-3-6 17:30:56 | 显示全部楼层 |阅读模式
本帖最后由 weatt123456789 于 2017-3-7 10:25 编辑

设计效果为 0000011110000000    实际显示的效果是0000101101000000   不明白为什么

刚查一行行发数据排查了一下, 数组12345678 实际显示出来是 21436587  为什么

    for(aa=0;aa<1;aa++)                     //全手动改成如下 地址,就可以了,数据两个一组对调过来发送就可以了,为什么
     {                                    
          write_lcd(data,da[1]);                 //
          write_lcd(data,da[0]);
          write_lcd(data,da[3]);
          write_lcd(data,da[2]);
          write_lcd(data,da[5]);
          write_lcd(data,da[4]);
          write_lcd(data,da[7]);
          write_lcd(data,da[6]);
          write_lcd(data,da[9]);
          write_lcd(data,da[8]);
          write_lcd(data,da[11]);
          write_lcd(data,da[10]);
          write_lcd(data,da[13]);
          write_lcd(data,da[12]);
          write_lcd(data,da[15]);
          write_lcd(data,da[14]);
      }

下面这个是自动 计数的,就显示不对
    for(aa=0;aa<16;aa++)                 //XL 循环16次 ,写16列8位数组,也就是8行16列半个字
     {                              
      write_lcd(data,hz11[aa]);         //data=写数据,
     }








底下有图



#define disp_off   0x3e     //00111110 显示关     指令:RW=0  RS=0    ,
#define disp_on    0x3f     //00111111 显示开
#define disp_Y     0xb8     //10111000 页:取值0-7
#define disp_H     0xc0     //11000000 行:取值0-63
#define disp_L     0x40     //01000000 列:取值0-63
#define data_ora   P2    //8位数据
#define data       1
#define comm       0
#define uchar      unsigned char
unsigned char code hz11[]={        
0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//实际显示效果为 0000011110000000  8行的4个竖条。

void main ()
{
   while (1)
    {
      writexy_lcd(0,0,hz11) //在0行0列位置显示hz11数组的数据
    }
}

void writexy_lcd(uchar H,uchar L,uchar da[])    //指定行列写汉字,H=行/L=列/da=文字的数组
{
    uchar aa=0;
    cs1=0,cs2=1,cs3=1;        //选择左半屏
    write_lcd(comm,disp_Y+H); //COMM=写指令, disp_Y=起始行0行,H=指定偏移位置
    write_lcd(comm,disp_L+L); //COMM=写指令,设置列 位置
    for(aa=0;aa<16;aa++)                 //XL 循环16次 ,写16列8位数组,也就是8行16列半个字
     {                              
      write_lcd(data,hz11[aa]);         //data=写数据,
     }
}

/*------------写数据或命令到LCD--------------*/
void write_lcd(uchar data_comm,uchar content)     //data_comm=RS=0时是写指令,data_comm=1时是写数据  //RS=L\RW=L写指令  RS=H\RW=L写数据
{                                                  
  RS=data_comm;              //RS = H:写数据,L:写指令  data_comm为传递值
  RW=0;                  //RW=0,L=写  ,H=读
  data_ora=content;      //数据输入端口data_ora=P2,content是数据,将数据向P2端口送
  E=1;              //E=1>0,下降沿锁存
  delay(14);
  E=0;            
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2017-3-8 09:04:17 | 显示全部楼层
wiser803 发表于 2017-3-8 07:13
似乎类似数据类型的定义问题。如整型(包含两字节),先送低八位字节,再送高八位字节......  ...

变量定义的是unsigned char aa,数组也是

另外,我发现换了一块 同芯片控制的(KS0108) 另一家生产的 19264后,可以按123456789顺序递增,而我之前调试的却是21436587这样的顺序,不知道为什么会这样,总之能用,就不管了。

出0入0汤圆

发表于 2017-3-7 12:12:05 | 显示全部楼层
其实 就是高低位 位置 数据交换 夏 发送就OK了  就是高位在先还是低位在先的问题

出0入0汤圆

发表于 2017-3-7 12:15:35 | 显示全部楼层
顶二楼~~~~

出0入0汤圆

发表于 2017-3-7 13:56:28 | 显示全部楼层
多数是时序问题引起的,把速度调慢些试试。

出0入0汤圆

发表于 2017-3-7 14:03:28 来自手机 | 显示全部楼层
液晶操作要注意,高低头,起始行位置。

出0入0汤圆

 楼主| 发表于 2017-3-7 15:07:01 | 显示全部楼层
本帖最后由 weatt123456789 于 2017-3-7 15:14 编辑
TANK99 发表于 2017-3-7 14:03
液晶操作要注意,高低头,起始行位置。


列总共是63列,显示数据是什么内容先不管(要么全是FF,要么全是0),就是列会自动增位,我一直给他发数据就好了,发一次他进一位。

但是发现,顺序并不是12345一直到64这样进位,而是2 1 4 3 6 5 8 7 10 9  12  11  14  13  。。。。。,也不是63-0倒过来数,这是指令不是显示数据出错

我现在这样写可以正常,就是把每两个数作一组对调一下

         for(aa=0;aa<16;aa++)                 //XL 循环16次 ,
       {
            aa1=aa;
            aa2=aa-1;
            aa++;                           
        write_lcd(data,da[aa1]);         //data=写数据,
        write_lcd(data,da[aa2]);         //data=写数据,
       }


  那应该怎样解决?

出0入0汤圆

 楼主| 发表于 2017-3-7 15:10:14 | 显示全部楼层
ANHOME 发表于 2017-3-7 13:56
多数是时序问题引起的,把速度调慢些试试。

不是速度的问题

出0入0汤圆

发表于 2017-3-8 07:13:07 来自手机 | 显示全部楼层
似乎类似数据类型的定义问题。如整型(包含两字节),先送低八位字节,再送高八位字节......

出0入0汤圆

发表于 2017-3-17 13:14:38 | 显示全部楼层
虽然我不会,但是还要帮楼主顶起来,让大师来解决

出0入0汤圆

 楼主| 发表于 2017-3-20 16:18:24 | 显示全部楼层
wsq0389 发表于 2017-3-17 13:14
虽然我不会,但是还要帮楼主顶起来,让大师来解决

最终我发现了,两块液晶模块不一样,一块是正常的,另一块是地址对调的,不明白原因,有可能是我拆过造成的吧。

新买的               操作比较慢     列地址正确

旧的拆过的        操作非常快, 列地址对调
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 23:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表