打印
[AVR单片机]

atmega16断电后再上电1602液晶无显示

[复制链接]
3135|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zage2009|  楼主 | 2011-7-28 15:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zage2009 于 2011-10-9 12:36 编辑

写了个操作1602显示字符的程序,烧写后运行正常,不过断电后,再上电,1602就无显示内容,需要按一下复位键后,液晶才显示,请问哪里没有设置好?程序如下
#include<avr/io.h>
#define uchar unsigned char
#define uint unsigned int

void delay(uint z)
{
        uint i,j;
        for(i=z;i>0;i--)
                for(j=1140;j>0;j--);
}
void write_com(uchar com)
{
        PORTA&=~(1<<4);//lcdrs=0;
        PORTB=com;
        delay(5);
        PORTA|=(1<<6);//lcden=1
        delay(5);
        PORTA&=~(1<<6);//lcden=0;
}
void write_data(uchar data)
{
        PORTA|=(1<<4);//lcdrs=1;
        PORTB=data;
        delay(5);
        PORTA|=(1<<6);//lcden=1;
        delay(5);
        PORTA&=~(1<<6);//lcden=0;
}
void init(void)
{
        DDRA=0xff;
        DDRB=0xff;
        PORTA&=~(1<<5);//lcdwr=0;
        PORTA&=~(1<<6);//        lcden=0;
        write_com(0x38);
        write_com(0x0e);
        write_com(0x06);
        write_com(0x01);
        write_com(0x80);
}
int main(void)
{
        uchar num;
        const  char * p="I like mcu";        
        init();
        while(1)
        {
                while(*p)
                {
                        write_data(*p);
                        delay(30);
                        p++;
                }        
        }        
}

相关帖子

沙发
selfstudy| | 2011-7-28 21:14 | 只看该作者
在   PORTA&=~(1<<6);//lcden=0; 后延时 5ms试试。。

使用特权

评论回复
板凳
zage2009|  楼主 | 2011-7-29 07:56 | 只看该作者
2# selfstudy 改了以后,可以了,看来还是液晶的时序问题。

使用特权

评论回复
地板
lixiaoxu2meng| | 2011-8-1 16:00 | 只看该作者
2# selfstudy
为什么 加延时呢

使用特权

评论回复
5
joing1999| | 2011-8-5 10:21 | 只看该作者
液晶小知识
RST脚,复位脚。
一般上电后,先拉低300MS,再拉高300MS,然后再一直保持高电平进行初始化。
这是标准的液晶复位流程。
如果没有复位脚,也建议客户上电后延时500MS再初始化。
我是做液晶的
欢迎交流
QQ1143946234

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
qin552011373 + 6 很给力!
6
zage2009|  楼主 | 2011-8-7 09:00 | 只看该作者
5# joing1999

很对,只有在初始化之前延时一段时间,实验板上电后液晶才有显示,我只是延时了五六十毫秒也可以显示。

使用特权

评论回复
7
zage2009|  楼主 | 2011-10-9 12:34 | 只看该作者

RE: atmega16断电后再上电1602液晶无显示

液晶小知识
RST脚,复位脚。
一般上电后,先拉低300MS,再拉高300MS,然后再一直保持高电平进行初始化。
这是标准的液晶复位流程。
如果没有复位脚,也建议客户上电后延时500MS再初始化。
我是做液晶的
欢迎交流
QQ1 ...
joing1999 发表于 2011-8-5 10:21


最近在万用板上焊了最小系统,只引出了32个IO(atmega16),又碰到这个问题了。发现确实只有在液晶初始化函数之前延时500ms左右,才能使1602液晶断电后再上电能够显示出数据。在写命令和写数据的PORTA&=~(1<<6);//lcden=0;只延时5ms没有用。

使用特权

评论回复
8
小虾520| | 2013-4-19 16:06 | 只看该作者
恩,我也哟那样的情况

使用特权

评论回复
9
qin552011373| | 2013-4-20 09:31 | 只看该作者
注意看datasheet的时序

使用特权

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

本版积分规则

3

主题

36

帖子

0

粉丝