打印

lcd12864(st9720)绘图模式写入和读取不一样

[复制链接]
2508|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qqcaiyin|  楼主 | 2014-2-6 20:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qqcaiyin 于 2014-2-7 18:34 编辑

问题已查到,P06,P07,电路上皆有个灯到电源

我写入0x80,或0x40,液晶上显示是对的,但是读回的值是0xc0.其他点的写入读取都是对的,就这高两位有问题,找不到原因了。


做了个测试 :

流程如下
 //读取  地址  0x80   ,0x80     的值      
    LCD12864Write(command,0x36);
        LCD12864Write(command,0x80);
        LCD12864Write(command,0x80);
        LCD12864Read();
        t1=LCD12864Read();        
        t2=LCD12864Read();
        LCD12864Write(command,0x30);
//串口发送   
        Send(t1);
         Send(t2);  
//点亮   第一行第列一
        Draw_Dot(0,0,1);

//读取  地址  0x80   ,0x80     的值      
        LCD12864Write(command,0x36);
        LCD12864Write(command,0x80);
        LCD12864Write(command,0x80);
        LCD12864Read();                    
        t1=LCD12864Read();        
        t2=LCD12864Read();
        LCD12864Write(command,0x30);
        Send(t1);
         Send(t2);
//灭 掉     第一行第列一

        Draw_Dot(0,0,0);
//读取  地址  0x80   ,0x80     的值      
           LCD12864Write(command,0x36);
        LCD12864Write(command,0x80);
        LCD12864Write(command,0x80);
        LCD12864Read();
        t1=LCD12864Read();        
        t2=LCD12864Read();
        LCD12864Write(command,0x30);
        Send(t1);
         Send(t2);
下面是 Draw_Dot();函数  
/***************************************************
点操作     
***************************************************/
void   Draw_Dot(u8 x,u8 y,u8  color)
{
//        u8 dat;
        u8 x_byte,x_bit;
        u8 y_byte,y_bit;
        u8 th,tl;
        u8 writedate;
         LCD12864Write(command,0x36);
//换算坐标     
        x_byte=x/16;
        x_bit=x&0x0f;
        y_byte=y/32;
        y_bit=y&0x1f;
//读取数值  
        LCD12864Write(command,0x80+y_bit);
        LCD12864Write(command,0x80+x_byte+8*y_byte);
        LCD12864Read();
        th=LCD12864Read();        
        tl=LCD12864Read();

        LCD12864Write(command,0x80+y_bit);
        LCD12864Write(command,0x80+x_byte+8*y_byte);

        if(x_bit<8)
        {
                if(color==1)
                {
                        LCD12864Write(dat,th|(0x01<<(7-x_bit)));        

                }
                else
                {
                        LCD12864Write(dat,th&(~(0x01<<(7-x_bit))));                        
                ;        
                }
                LCD12864Write(dat, tl);

        }
        else
        {
                LCD12864Write(dat,th);
                if(color==1)
                {
                        LCD12864Write(dat,tl|(0x01<<(15-x_bit)));               
                }
                else
                {
                        LCD12864Write(dat,tl&(~(0x01<<(15-x_bit))));        
                }        
        }
        LCD12864Write(command,0x30)        ;
}
代码流程,先读液晶屏值,然后点亮一个点,读液晶屏值,然后灭掉这个点,再读液晶屏值
做了几组实验  :
对点(0,0)操作时,液晶屏现象 :此点不亮 ,(1,0)亮    串口的值为:0x00,0x00  0xC0,0X00   0XC0,0X00
对点(1,0)操作时,液晶屏现象 :此点不亮 , (0,0)亮,串口的值为:0x00,0x00  0xC0,0X00   0XC0,0X00
对点(2,0)操作时,液晶屏现象 :此点灭 ,                       串口的值为:0x00,0x00  0x10,0X00   0X00,0X00


列0,1,8,9,16,17.。。。。一样的问题
找不到原因了 ,指点下







相关帖子

沙发
xyz549040622| | 2014-2-6 20:29 | 只看该作者
你这写的是第几行第几列的点呢

使用特权

评论回复
板凳
1061zou| | 2014-2-6 21:24 | 只看该作者
程序放上来

使用特权

评论回复
地板
qqcaiyin|  楼主 | 2014-2-6 22:00 | 只看该作者
xyz549040622 发表于 2014-2-6 20:29
你这写的是第几行第几列的点呢

行随便,有问题的列0,1 ,8,9,16  ,17类推

使用特权

评论回复
5
xyz549040622| | 2014-2-6 22:13 | 只看该作者
1.要不烧别人成熟的驱动试试?
2.是否可以排除液晶的问题?

使用特权

评论回复
6
qqcaiyin|  楼主 | 2014-2-7 07:43 | 只看该作者
1061zou 发表于 2014-2-6 21:24
程序放上来

手机上的,回去用电脑再上代码

使用特权

评论回复
7
qqcaiyin|  楼主 | 2014-2-7 07:48 | 只看该作者
xyz549040622 发表于 2014-2-6 22:13
1.要不烧别人成熟的驱动试试?
2.是否可以排除液晶的问题?

用的就是网上普遍的程序,就一块液晶,关键是只是每个字节高两位列有问题,太有规律性了

使用特权

评论回复
8
zhimagod| | 2014-2-7 08:26 | 只看该作者
实物还是仿真?仿真的话还需要排除仿真软件的问题

使用特权

评论回复
9
qqcaiyin|  楼主 | 2014-2-7 17:30 | 只看该作者
zhimagod 发表于 2014-2-7 08:26
实物还是仿真?仿真的话还需要排除仿真软件的问题

实物

使用特权

评论回复
10
ZG11211| | 2014-2-7 18:13 | 只看该作者
程序问题,写完地址后是否释放了地址线。

使用特权

评论回复
11
qqcaiyin|  楼主 | 2014-2-7 18:16 | 只看该作者
1061zou 发表于 2014-2-6 21:24
程序放上来

代码放上来了在顶楼

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

148

帖子

1

粉丝