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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
gniquhs
1楼-- · 2019-07-18 10:47
 精彩回答 2  元偷偷看……
猎国倾城
2楼-- · 2019-07-18 14:15
楼上正解,线接错了
xinyue0528
3楼-- · 2019-07-18 15:51
gniquhs 发表于 2017-9-5 21:26
你的RW在原理图中明明是P3.1
怎么程序中就变成P3^4了

实际仿真时图纸脚位是对的 但还是没有显示不知道怎么回事
1602.jpg
JQ_Lin
4楼-- · 2019-07-18 20:56
sbit RS = P3^3;
sbit RW = P3^4;
sbit E = P3^5;

程序里是 3、4、5
仿真图是 3、1、0

都是网上抄来惹的祸!

xinyue0528
5楼-- · 2019-07-18 23:45
 精彩回答 2  元偷偷看……
gniquhs
6楼-- · 2019-07-19 05:08
你看看你引脚有输出吗?
晶振接错了吧
还有单片机的电源

一周热门 更多>