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

[复制链接]
 楼主| axia2008 发表于 2007-6-4 16:23 | 显示全部楼层 |阅读模式
液晶屏(240x128,t6963c)和avr单片机(CLKcpu为1MHz)接口时发现个别像素点会不显示,而在两条指令间添加一小段延时就没有问题了。
这是不是和液晶屏指令的执行时间有关系,在液晶屏的指令还没有执行完成就有新的指令执行了。是因为这个原因吗?
maychang 发表于 2007-6-4 16:33 | 显示全部楼层

这种现象常见

与液晶无关,是接口芯片速度跟不上单片机速度。
有时甚至会完全不显示或显示全乱。
AVR本来就比较快,如果用51单片机正常,用AVR出错,多半就是这个原因。
tuwen 发表于 2007-6-4 16:48 | 显示全部楼层

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

 楼主| axia2008 发表于 2007-6-5 07:48 | 显示全部楼层

谢谢

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();

}

lanlhh 发表于 2008-1-14 23:19 | 显示全部楼层

已调通

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

本版积分规则

253

主题

336

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部