单片机lcd1602问题 求高人指教 好人一定好报

2020-02-02 09:31发布

做了个单片机最小系统温度传感器加各种扩展电路,解决了这个又遇到那个问题,这次是1602的液晶不能正常显示,程序我觉得没问题,别人的程序我也烧写了,不过,还是不能正常显示,这是为什么呢??液晶应该是好的,我去借别人的1602也不能显示,电路这么简单我觉得也应该没问题啊,液晶应该不用加上拉电阻吧,反正我没加。。我是学生刚接触单片机,菜鸟级别,本来不想劳烦各位大神的,可自己捣鼓半天还是这样,实属无奈啊,望各位大神不吝赐教。。。送上电路图,pcb文件和程序代码。。急!!!好人好报,好人好运。。

#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit rs=P1^1;
sbit rw=P1^2;
sbit  e=P1^3;
uchar table1[]={"i.love.you"};
uchar table2[]={"you.are.great!"};
void delay_50us(uint t)           //50us延时函数
{
         uchar j;
         for(;t>0;t--)
         for(j=19;j>0;j--);

}

void delay_50ms(uint t)          //延时50ms函数
{

  uchar j;
  for(;t>0;t--)
  for(j=6245;j>0;j--);
}
void write_com(uchar com )
{
  rs=0;
  rw=0;
  e=0;
  P0=com;
  delay_50us(10);
  e=1;
  delay_50us(10);
  e=0;


}
void write_date(uchar dat)
{
  rs=1;
  rw=0;
  e=0;
  P0=dat;
  delay_50us(10);
  e=1;
  delay_50us(10);
  e=0;



}
void init(void)
{
delay_50us(300);
write_com(0x38);
delay_50us(100);
write_com(0x38);
delay_50us(100);
write_com(0x38);
write_com(0x38);
write_com(0x08);
write_com(0x01);
write_com(0x06);
write_com(0x0c);


}


void main()
{
  uchar j;
  init();
  write_com(0x80);
  for(j=0;j<16;j--)
  {
    write_date(table1[j]);
        delay_50us(20);


  }
  write_com(0x80+0x40);
  for(j=0;j<16;j--)
  {
    write_date(table2[j]);
        delay_50us(20);

        }

   while(1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
mcu_lover
1楼-- · 2020-02-02 14:04
加大延时试一试。
xtxtt
2楼-- · 2020-02-02 16:36
黑方块有显示吗?
jlhgold
3楼-- · 2020-02-02 20:37
P0必须加上拉电阻!!!除非你不当IO用
大呵欠E
4楼-- · 2020-02-03 01:18
 精彩回答 2  元偷偷看……
大呵欠E
5楼-- · 2020-02-03 04:11
mcu_lover 发表于 2012-11-1 21:48
加大延时试一试。

总觉得不是这个问题,好吧我试试。。
大呵欠E
6楼-- · 2020-02-03 09:12
xtxtt 发表于 2012-11-1 21:54
黑方块有显示吗?

反正他都是亮的,有些乱码  附上实物图

一周热门 更多>