标题: 单片机LCD1602显示地址的问题Write_com(0x80) [打印本页]

作者: 用户21111412    时间: 2020-9-18 19:53
标题: 单片机LCD1602显示地址的问题Write_com(0x80)
LCD1602要显示0~9,从第二行第三列开始显示,需要在while循环开头加Write_com(0x80);,不加的话,就会出现如下图1的现象.液晶初始化函数和主函数如下图。


单片机源程序如下:
void LCD_Init()
{
        Write_com(0x38);
        Write_com(0x0C);
        Write_com(0x04);
        Write_com(0x06);
        Write_com(0x01);
        
}
void main()
{
        LCD_Init();
        
        while(1)
        {
                Write_com(0x80+0x02);
                Write_dat(0x30);
                Write_dat(0x31);        
                Write_dat(0x32);
                Write_dat(0x33);
                Write_dat(0x34);
                Write_dat(0x35);
                Write_dat(0x36);
                Write_dat(0x37);
                Write_dat(0x38);
                Write_dat(0x39);
        }
}


作者: 用户21111412    时间: 2020-9-18 20:10
再请教一下,使LCD某一位闪烁,例如上面图中5,以1S频率闪烁,其他字符不闪烁,怎么去操作
作者: man1234567    时间: 2020-9-19 00:50
0X80、0XC0什么的看说明书,想搞明白必须看看说明书。
闪烁这个东东也看说明书。如果自定义闪烁频率可以自定义频率写擦反复。
作者: wulin    时间: 2020-9-19 08:32
发表于 2020-9-18 20:10
再请教一下,使LCD某一位闪烁,例如上面图中5,以1S频率闪烁,其他字符不闪烁,怎么去操作

//显示0~9,"5"以1S频率闪烁,其他字符不闪烁。
        unsigned char i;
        Write_com(0x80+0x02);
        for(i=0;i<10;i++)
        {
                if(i==4 && flag==1) //flag为0.5s取反位变量
                        Write_dat(0x20); //不显示
                else
                        Write_dat(i+30);
        }

作者: 黄youhui    时间: 2020-9-19 09:06
发表于 2020-9-18 20:10
再请教一下,使LCD某一位闪烁,例如上面图中5,以1S频率闪烁,其他字符不闪烁,怎么去操作

lcd是可以通过函数控制每一个点的亮和灭的,你找到这个函数或者自己构建这个函数
作者: 艰难018jin    时间: 2020-9-20 09:37
0X80、0XC0什么的看说明书,想搞明白必须看看说明书。 闪烁这个东东也看说明书。如果自定义闪烁频率可以自定义频率写擦反复。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1