1602字符液晶仿真没显示

2019-07-18 09:18发布

#include<reg51.h>
#include<intrins.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS = P3^3;
sbit RW = P3^4;
sbit E = P3^5;


uchar name1[]={"010340608"} ;
uchar  name2[]={"work in hangzhou"} ;


void delay(unsigned int t)
{  unsigned int i,j;
   for(i=0;i<t;i++)
      for(j=0;j<10;j++)
         ;
}

void busy(void)
{  
   P2=0xff;
   RS=0;
   RW=1;
   E=1;
   while((P2&0x80)==0x80);
  E=0;

   }


void writecom(unsigned char com)
{  RS=0;
   RW=0;
   E=0;
   P2=com;
  E=1;
  _nop_();
  E=0;
}

void lcdwc(unsigned char com)
{
   busy();
   writecom(com);
}

void lcdwd(unsigned char dat)
{
   busy();
   RS=1;
   RW=0;
   E=0;
   P2=dat;
   E=1;
// _nop_();
   E=0;
}



void write_str(uchar addr,uchar *p)
{
   uchar i;
   writecom(addr);
   while(p[i]!='')
   {lcdwd(p[i]);
    i++;
    }
        }


  void lcdint()
{  
   delay(300);
   writecom(0x38);
  delay(200); writecom(0x38);
delay(200); writecom(0x38);
   lcdwc(0x38);        //8位数据 显示2行 5*7字符
   lcdwc(0x08);        //关显示 光标关 闪烁关
   lcdwc(0x01);        //清除
   lcdwc(0x06);        //光标右移 画面不动
   lcdwc(0x0c); //开显示 光标关 闪烁关
}


/*****************************************
主函数
*******************************************/
main()
{

   //E=0;
  lcdint();
while(1)
   {
     write_str(0x80,name1);
}
}
哪位高手帮忙看下 这个1602字符液晶软件部分哪里 有问题  为什么RW信号一直是高电平  仿真没显示,电路图是对的用其他程序可以正常显示

1602仿真图.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。