51单片机驱动lcd1602,显示屏不显示

2019-07-15 16:32发布

#include <REGX52.H>
#define LCD_DB P0
sbit LCD_RS=P2^6;
sbit LCD_RW=P2^7;
sbit LCD_E=P2^6;

unsigned char PuZh[]="Prechin  Science";

void delay1ms(unsigned int c)   //误差 0us
{
    unsigned char a,b;
        for (; c>0; c--)
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }
           
}

void delay(unsigned int t)
{
   unsigned int a;
   a=t;
   while(a--);
}

void LCDWriteCom(unsigned int com)
{
  LCD_E=0;
  LCD_RS=0;
  LCD_RW=0;

  LCD_DB=com;
  delay1ms(10);

  LCD_E=1;
  delay1ms(10);
  LCD_E=0;
}

void LCDWriteData(unsigned int dat)
{
  LCD_E=0;
  LCD_RS=1;
  LCD_RW=0;

  LCD_DB=dat;
  delay1ms(10);

  LCD_E=1;
  delay1ms(10);
  LCD_E=0;
}

void LCDInit()
{
   LCDWriteCom(0x38);  //设置显示模式
   delay1ms(1);
   LCDWriteCom(0x0c);  //开显示,不显示光标,光标不闪烁
   delay1ms(1);
   LCDWriteCom(0x06);  //写一个指针加1
   delay1ms(1);
   LCDWriteCom(0x01);  //清屏
   delay1ms(1);
   LCDWriteCom(0x80);  //设置数据指针起点
   delay1ms(1);
}

void main ()
{
          unsigned char i;
        LCDInit();
        for(i=0;i<16;i++)
        {
                LCDWriteData(PuZh[i]);
                delay1ms(1);       
        }
        while(1)
        {
        }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
china
1楼-- · 2019-07-15 19:02
望着你发槑
2楼-- · 2019-07-15 19:34
china 发表于 2015-7-22 10:02
http://bbs.elecfans.com/forum.php?mod=viewthread&tid=497965

请对照查好看

查看了lcd相关部分。两个的不同是有一篇先给使能再给数据,另一篇先给数据再给使能。我都试过,但是lcd依然不显示
望着你发槑
3楼-- · 2019-07-16 01:02
 精彩回答 2  元偷偷看……
望着你发槑
4楼-- · 2019-07-16 04:12
程序没有问题,谢谢大家!!!
恬碎
5楼-- · 2019-07-16 06:55
加忙检测试试
bit LCD_busy()
{
        bit result;
        LCD_RS=0;
        LCD_RW=1;
        LCD_E=1;
        delay(1);
        result=(bit)(P0&0x80);
        LCD_E=0;
        return result;
}
然后在写指令和写数据函数中调用忙检测函数while(bit LCD_busy());
过眼烟云1010
6楼-- · 2019-07-16 11:49
有没有可能是硬件问题

一周热门 更多>