单片机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条回答
jlhgold
1楼-- · 2020-02-05 13:51
这都能干扰!
大呵欠E
2楼-- · 2020-02-05 18:36
jlhgold 发表于 2012-11-5 17:58
这都能干扰!

是啊,我都不敢相信,你说共阴的数码管还会干扰,难道有电流流入。。呵呵
jlhgold
3楼-- · 2020-02-05 19:03
啊,你数码管直接接在io口上面的啊?
大呵欠E
4楼-- · 2020-02-05 19:05
jlhgold 发表于 2012-11-5 19:01
啊,你数码管直接接在io口上面的啊?

嗯。。对啊。。本来我只想做一个温度传感器的 后来觉得太浪费单片机资源了 就又加了1602 和步进电机。。
jlhgold
5楼-- · 2020-02-05 21:08
 精彩回答 2  元偷偷看……
rerainings
6楼-- · 2020-02-06 00:10
数据口的问题  。。。。

一周热门 更多>