微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 1602液晶显示乱码,求助有爱的坛友们。

1602液晶显示乱码,求助有爱的坛友们。

时间:10-02 整理:3721RD 点击:
程序如下:
#include<reg52.h>
sbit rs=P2^6;
sbit rw=P2^5;
sbit en=P2^7;
unsigned char table1[]={"LCD1602 check ok"};
unsigned char table2[]={"study up"};
void inital_lcd();
void lcd_display();
void delay_long(unsigned int uidelaylong);
void lcd_wcom(unsigned char com)
{
        rs=0;
        rw=0;
        P0=com;
        delay_long(5);
        en=1;
        en=0;
}
void lcd_wdat(unsigned char dat)
{
        rs=1;
        rw=0;
        P0=dat;
        delay_long(5);
        en=1;
        en=0;
}
void main()
{
        inital_lcd();
        while(1)
        {
                lcd_display();
                delay_long(100);       
        }
}
void lcd_display()
{
        unsigned char n,m;
        //lcd_wcom(0x80);
        for(m=0;m<16;m++)
        {
                lcd_wdat(table1[m]);
                delay_long(10);
        }
//        lcd_wcom(0x80+0x44);
        for(n=0;n<10;n++)
        {
                lcd_wdat(table2[n]);
                delay_long(10);       
        }
}
void inital_lcd()
{
        lcd_wcom(0x38);
        lcd_wcom(0x0c);
        lcd_wcom(0x06);
        lcd_wcom(0x01);       
}
void delay_long(unsigned int uidelaylong)
{
        unsigned int i;
        unsigned int j;
        for(i=0;i<uidelaylong;i++)
        {
                for(j=0;j<500;j++)
                {
                        ;
                }
        }
}

你选用的液晶是无字库的把,这样直接给字符串不行的,得用字模工具

不是啊,我用别人的程序可以显示的说,也是这样的字符数组,

出现什么样的乱码啊,截个图看看

1

你这程序是复制别人的啊

你这程序是复制别人的啊

看了教学视频,自己写的呢。

你check一下,你写的程序,显示的位置为没有定义。

void lcd_display()
{
        unsigned char n,m;
        //lcd_wcom(0x80);你这句前面//这符号是什么意思
        for(m=0;m<16;m++)
        {
                lcd_wdat(table1[m]);
                delay_long(10);
        }
//        lcd_wcom(0x80+0x44);你这句前面//这符号是什么意思
        for(n=0;n<10;n++)
        {
                lcd_wdat(table2[n]);
                delay_long(10);        
        }
}
void inital_lcd()
{
        lcd_wcom(0x38);
        lcd_wcom(0x0c);
        lcd_wcom(0x06);
        lcd_wcom(0x01);        
}
void delay_long(unsigned int uidelaylong)
{
        unsigned int i;
        unsigned int j;
        for(i=0;i<uidelaylong;i++)
        {
                for(j=0;j<500;j++)
                {
                        ;
                }
        }
}

不好意思,出差了,不知道解决了吗

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top