打印
[AVR单片机]

AVR单片机和液晶屏接口中遇到的一个问题,想请大家看看

[复制链接]
1494|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
axia2008|  楼主 | 2007-6-4 16:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
maychang| | 2007-6-4 16:33 | 只看该作者

这种现象常见

与液晶无关,是接口芯片速度跟不上单片机速度。
有时甚至会完全不显示或显示全乱。
AVR本来就比较快,如果用51单片机正常,用AVR出错,多半就是这个原因。

使用特权

评论回复
板凳
tuwen| | 2007-6-4 16:48 | 只看该作者

写入LCM前应该先读状态字。

使用特权

评论回复
地板
axia2008|  楼主 | 2007-6-5 07:48 | 只看该作者

谢谢

使用特权

评论回复
5
lanlhh| | 2008-1-11 18:58 | 只看该作者

如下

请教axia2008 ,你的数据读写时序是怎么样的。我在做M128与t6963c的实验,程序是从51移值过来的(在51上用的是总线方式,是可以正常显示),在M128中我用PE口作为数据输出口,PB口用来控制CD,WR,RD,晶振8M。时序上完全参考了T6963C资料上的时序,可死活都不能正常工作,考虑到是否M128速度太快,给每条指令间隔了0.1ms间隔,可还是不行,数据读写时序如下:请大家指点指点,谢谢啦!

/*连线:
/*PE0-D0,PE1-D1,PE2-D2,PE3-D3,PE4-D4,PE5-D5,PE6-D6,PE7-D7,PB0-CD,PB1- RD,PB4-WR   */

void Command_Lcd (unsigned char PARA0, unsigned char PARA1, unsigned char PARA2, unsigned char PARA3)
{
     
               
    if (PARA0 == 0)
    {
        goto Exec_no_para;                                             /* 无参数指令 */
    }
        
    
    if (PARA0 == 1)
    {
        goto Exec_one_para;                                            /* 单参数指令 */
    }
//PB0----CD

                                    /* 双参数指令 */
    PORTB=PORTB & 0xFE;  //CD=0
    delay100us();
    PORTB=PORTB & 0xEF;     //WR=0     PB4(P14)----WR    
    delay100us();            

    PORTE = PARA1;
    delay100us();
    PORTB=PORTB | 0x10;     //WR=1     PB4(P14)----WR    
    delay100us();
    PORTB=PORTB|0x01;   //CD=1
    delay100us();
Exec_one_para:
                                

    PORTB=PORTB & 0xFE;  //CD=0
    delay100us();
    PORTB=PORTB & 0xEF;     //WR=0     PB4(P14)----WR    
    delay100us();

    PORTE = PARA2;    
    delay100us();
    PORTB=PORTB | 0x10;     //WR=1     PB4(P14)----WR    
    delay100us();
    PORTB=PORTB|0x01;   //CD=1
    delay100us();
        
Exec_no_para:

    PORTB=PORTB|0x01;   //CD=1
    delay100us();
         PORTB=PORTB & 0xEF;     //WR=0     PB4(P14)----WR    
    delay100us();
    PORTE = PARA3;
    delay100us();
    PORTB=PORTB | 0x10;     //WR=1     PB4(P14)----WR    
    delay100us();

}

使用特权

评论回复
6
lanlhh| | 2008-1-14 23:19 | 只看该作者

已调通

是对液晶的复位没处理好,之前是硬件上电复位(电阻加电容),程序延时等待液晶复位.后来改为由单片机控制复位,即可正常显示了(估计之前的时序也没弄对).去掉指令间的延时,在8M,16M 都能正常显示.

使用特权

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

本版积分规则

253

主题

336

帖子

0

粉丝