打印

看看大家的眼力看这程序错在哪里 不多说了

[复制链接]
1621|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
雨人浪浪|  楼主 | 2009-12-31 12:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>//1602液晶显示
//#include<intrins.h>
#define uchar unsigned char
#define  uint unsigned int
uchar code table[]={"i like mcu"};
sbit RS=P3^0;//数据/命令端口
sbit RW=P3^1;//读写端口
sbit E=P3^2; //使能端
void init();//初始化
void delay(uint xms)  //xms延时多少就大约多少毫秒
{
  uint i,j;
   for(i=xms;i>0;i--)
      for(j=110;j>0;j--);
}
void write-aa(uchar a);//写数据
void write-bb(uchar b);//写命令
void main()
{
uint m;
init();
  while(1)
  {
    for(m=0;m<=9;m++)
  {
     write-aa(table[m]);
  }
write-bb(0x80);
   }
}
void init()//初始化
{
write-bb(0x01);//显示清屏1:数据指针清0 2:所有显示清0;
write-bb(0x02);//显示回车:数据指针清0;
write-bb(0x38);//
write-bb(0x80);// 数据指针设置;
write-bb(0x0f);
write-bb(0x06);
}
void write-aa(uchar a)//写数据
{
E=0;
RS=1;
RW=0;
P0=a;
delay(1);
E=1;
delay(2);
}
void write-bb(uchar b)//写命令
{
  E=0;
  RS=0;
  RW=0;
  P0=b;
  delay(1);
  E=1;
  delay(2);
}

相关帖子

沙发
hyg1984| | 2009-12-31 13:42 | 只看该作者
不同的液晶有不同的控制程序

1、你的延时控制的准吗,我记得好像只有200us左右啊,记着,要严格按照时序要求来写。
人家时序要你先rs=0,然后rw=0。你就得这样!
2、是不是少了个,检查液晶是否在“忙”的函数?
sbit flag=AC^7;
void busy_flag()
{
   do
   {
     e=0;
     rw=1;
     rs=0;
     e=1;//你的这里好像不对吧,是E=1了才能传数据,然后E=0了再关
     ACC=P0;
     e=0;
    }while(flag==0);
}

void write_com(uchar com)
{
     busy_flag();
     e=0;
     rw=0;
     rs=0;
     e=1;
     P0=com;
     e=0;
     delay();      
}

void write_dat(uchar dat)
{
      busy_flag();
      e=0;
      rw=0;
      rs=1;
      e=1;
      P0=dat;
      e=0;
      delay();
}

使用特权

评论回复
板凳
程序匠人| | 2009-12-31 21:04 | 只看该作者
俺眼神不好………………

使用特权

评论回复
地板
hotpower| | 2009-12-31 23:18 | 只看该作者
-

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

37

帖子

0

粉丝