微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请问为什么我的这个关于 LCD1602的程序 不能显示呀

请问为什么我的这个关于 LCD1602的程序 不能显示呀

时间:10-02 整理:3721RD 点击:
请问为什么我的这个关于 LCD1602的程序 不能显示呀
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define GPIO_LCD P0
sbit LCDE=P2^7;
sbit RW=P2^5;
sbit RS=P2^6;
unsigned char Puzh[]=" pechin science";
void lcdwritecom(unsigned char);
void lcdwritedata(unsigned char);
void lcdinit();
void delay1ms(uint);


                                                             
void lcdwritdata(uchar dat)
{
RS=1;
RW=0;
GPIO_LCD=dat;
delay1ms(10);
LCDE=1;
delay1ms(10);
LCDE=0;
}

void lcdwritecom(uchar com)
{
        RS=0;
        RW=0;
        GPIO_LCD=com;
        delay1ms(10);
        LCDE=1;
        delay1ms(10);
        LCDE=0;
}



void lcdinit()
{
        lcdwritecom(0x38);
        lcdwritecom(0x0c);
        lcdwritecom(0x06);
        lcdwritecom(0x01);
        lcdwritecom(0x80);
}


void delay1ms(uint c)
{
    int a,b;
        for (; c>0; c--)
        {
                 for (b=2;b>0;b--)
                 {
                          for(a=10;a>0;a--)
                        {
                        };
                 };      
        };         
}


void main(void)
{
                unsigned char i;
        lcdinit();
        for(i=0;i<16;i++)
        {
         lcdwritedata('A');
        }
        while(1);
}

初始化有问题。。,建议你找下1602的资料看看,38要写几次,而且你一个延时都没,晕

。。

两个命令之间要有延时的,初始化最好写两次0x38,不然可能只会显示一行

你的命令好像也没放在主函数啊

是不是初始化中没有写归位命令,初始化函数中写上 lcdwritecom(0x02); 试试。
我也是初学者,昨天才看的1602液晶屏

经过我的仔细对比,发现你第一个函数写错了 lcdwritedata  你把e写掉了 写成了 lcdwritdata

和那个没有关系

问题出在初始化的时候,命令之间没有延时程序。、

可是我把他的程序烧在我的单片机上面。只改了那个错误,就可以显示了呀。
这命令之间的延时程序,在命令函数里面不是写了吗。

延时要多用呀                              

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

网站地图

Top