注册 登录
编程论坛 单片机编程

51LCD1602液晶程序问题错哪了?

humin_qin 发布于 2010-11-21 20:37, 4146 次点击
我编写的51显示LCD1602的程序在PROTEUS上仿真不能显示,各位大虾们帮忙看看,指教下。
#include<reg51.h>
#define uchar unsigned char
#define uint  unsigned int
sbit RS=P2^5;
sbit RW=P2^6;
sbit E=P2^7;
uchar count;
uchar table[]="humin" ;
void delay(uchar del)//延期时
{
    int i,j;
    for(i=0; i<=del; i++)
    for(j=0; j<=2; j++)               
;
}
void write_com(uchar com)    //液晶写命令
{
     RS=0;
     P0=com;
     delay(100);
     E=1;
     delay(100);
     E=0;
}
void write_date(uchar date)     //液晶写数据
{
    RS=1;
    P0=date;
    delay(100);
    E=1;
    delay(100);
    E=0;
}
void init()   
{
    RW=0;
    E=0;
    write_com(0x38);
    write_com(0x0c);
    write_com(0x06);
    write_com(0x01);
 }
void disp(uchar x,uchar *p)
{  unsigned char y=0;      
  write_com(x);
  while(p[y]!=0x00)
  {
    write_date(p[y]);  
    y++;
    delay(100);
  }
 }
void main()
{
    init();
    delay(100);
    disp(0x80+0x00,table);
}
6 回复
#2
humin_qin2010-12-07 14:29
没人回答……
#3
喜子2010-12-09 17:45
问题解决了吗???
#4
喜子2010-12-09 17:46
在程序最后加一个while(1);把程序停下来就可以了
#5
humin_qin2010-12-12 21:22
不是那个问题,程序没错,是硬件搭建有问题,忘了在输出数据口接上上啦电阻了,不接就成3组态,就输出不了数据额。
#6
humin_qin2011-03-28 10:20
更正下还得加上4楼说的while(1).
#7
liqi20092013-09-21 12:09
    可以尝试一下这个工具---Da Vinci LCD,专门设计嵌入式显示画面的(含字库,适用于点阵LCD屏),汽车级的,不再用LCD模块(可省一个MCU),下载地址:http://www.
1