打印

12864液晶最低2位数据无法读出???

[复制链接]
2663|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
499734424|  楼主 | 2011-9-26 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
superbigbaby| | 2011-9-26 22:56 | 只看该作者
串行还是并行?

使用特权

评论回复
板凳
499734424|  楼主 | 2011-9-26 23:00 | 只看该作者
并行的!

串行是不能读出数据的。

使用特权

评论回复
地板
hotpower| | 2011-9-26 23:28 | 只看该作者
并行的!

串行是不能读出数据的。
499734424 发表于 2011-9-26 23:00


???
有并串之分的

使用特权

评论回复
5
ccmc| | 2011-9-27 00:29 | 只看该作者
并行的!

串行是不能读出数据的。
499734424 发表于 2011-9-26 23:00


虽然SPI一般只有MOSI
但是有IIC接口的。。可以读哦。。。。

使用特权

评论回复
6
499734424|  楼主 | 2011-9-27 08:08 | 只看该作者
4# hotpower
回到正题:lol
主要问题是我现在的12864最低2位数据无法读出(读出为0),其他的正常。
用的控制芯片为
SBN0064G
SBN6400G

使用特权

评论回复
7
499734424|  楼主 | 2011-9-27 08:10 | 只看该作者
5# ccmc
最低2位写,液晶能正常显示,就是读数据,最低2位读出来总是零

使用特权

评论回复
8
ccmc| | 2011-9-27 13:17 | 只看该作者
检查下硬件,有条件可以更换液晶

使用特权

评论回复
9
499734424|  楼主 | 2011-9-27 13:32 | 只看该作者
液晶换过(不过还是同一牌子,同一厂家)

硬件虽然我感觉有问题,但是也查不出问题所在,PCB2层板,写都没有问题,唯独读数据最低2位读不出来,要是都不能读可能更好点:lol
那样还有的头绪去查~

使用特权

评论回复
10
499734424|  楼主 | 2011-9-28 07:52 | 只看该作者
/*********************************************************
- 功能描述:读LCD数据
- 隶属模块:公开函数模块
- 函数属性:
- 参数说明:         
- 返回说明:
- 注:      
*********************************************************/
unsigned char LCD_read_data(unsigned char sel_l,unsigned char sel_r)
{      
        unsigned char tmpin;  
        asm("cli");             //关中断以保证一个写操作完整的时序
    if(sel_l==1)//如果sel_l为1,CS1置为高电平,选择LCM的左半屏
    {
        SetCS1;
    }
    else
    {
        ClrCS1;       
    }
    __no_operation();__no_operation();                              
    if(sel_r==1)//如果sel_r为1,CS2置为高电平,选择LCM的右半屏
    {
        SetCS2;
    }
    else
    {
        ClrCS2;
    }       
        SetEN;
        ClrEN;
       
    asm("nop");
    DataPort_DDR = 0XFF;     //先对I/O口写1,保证上拉正确,读正确  
    Lcd_Bus=0XFF;
        asm("nop");
       
        DataPort_DDR = 0x00;        //设置数据口为输入
        Lcd_Bus=0Xff;                        //上拉有效
        asm("nop");

       
        ClrRS;
        ClrRW;
        ClrEN;

        SetRW;
        SetRS;            
        SetEN;

        asm("nop");          //此延时时间不可以更改2011.09.27
        tmpin=In_Bus;
        //asm("nop");
       
        ClrRS;
        ClrRW;       
        ClrEN;
               
        DataPort_DDR  =0xff;
        asm("nop");asm("nop");
       
        asm("sei");
       
        return tmpin;
}

可以用了,还是程序的问题。

使用特权

评论回复
11
499734424|  楼主 | 2011-9-28 07:55 | 只看该作者
以上程序测试过可以用的,不过不能保证对所有厂家的液晶都可以,具体还得对应看厂家的时序图,我这块液晶的时间卡在红色字样延时那里,多一条,少一条也都不行:L

使用特权

评论回复
12
zhaoyu2005| | 2011-9-28 08:53 | 只看该作者
不知道你的单片机时钟是多少HZ,一般来说,液晶屏的读写时序不会要求这么严格,如果有中断的话,岂不是经常出错?

使用特权

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

本版积分规则

个人签名:开始学习中~

5

主题

434

帖子

2

粉丝