打印

急求解!!!

[复制链接]
2080|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyh123456|  楼主 | 2011-3-9 19:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lyh123456 于 2011-3-9 19:20 编辑

写了一个基于LPC2132的1602液晶驱动程序,但是在proteus仿真里总是不显示,请高手帮忙看看啊!
程序如下:
#include <LPC213X.H>
void delay1us()
{
  unsigned long i;
  i=80;
  while(i--);
}
void delay1ms(unsigned char z)
{
   unsigned int x,y;
   for(x=z;x>0;x--)
     for(y=1500;y>0;y--);
}
#define Rs (1<<0)
#define Rw (1<<1)
#define En  (1<<2)
#define lcddate  (0xff<<8)    //液晶数据位
unsigned char num;
const unsigned char table1[]={"PICE:0000.0   "};   //显示初始内容
const unsigned char table2[]={"FP:00.0DI:000.0"};
void write_com(unsigned char com)   //写命令
{
   delay1ms(40);
   IO0SET|=Rs;
   delay1us();
   IO0SET|=Rw;
   delay1us();
   IO0CLR|=lcddate;
   delay1us();
   IO0SET|=com;
   delay1us();
   IO0SET|=En;
   delay1us();
   IO0CLR|=En;
   delay1us();
   
}
void write_date(unsigned char dat)     //写数据
{
   delay1ms(40);
   IO0SET|=Rs;
   delay1us();
   IO0SET|=Rw;
   delay1us();
   IO0CLR|=lcddate;
   IO0SET|=dat;
   delay1us();
   IO0SET|=En;
   delay1us();
   IO0CLR|=En;
   delay1us();
   
}
void lcddisplay(unsigned char x,unsigned char y,const unsigned char *str)
{
  switch(x)
  {
   case 0:
write_com(0x80+y);break;
case 1:
write_com(0xc0+y);break;
  }
  while(*str)
  {
    write_date(*str);
str++;
  }
}
void GPIO_Init(void)               //IO初始化
{
  PINSEL0=0x00000000;
  PINSEL1=0x00000000;
  IO0DIR|=0xffff;
  IO0SET|=0xffff;
  write_com(0x38);
  write_com(0x0c);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80);
   for(num=0;num<15;num++)
    {
      write_date(table1[num]);
      delay1ms(5);
    }
   write_com(0x80+0x40);
   for(num=0;num<16;num++)
    {
      write_date(table2[num]);
      delay1ms(5);
    }
}
int main(void)
{
GPIO_Init();
while(1);
}
沙发
Go_PSoC| | 2011-3-9 22:04 | 只看该作者
PSoC做LCD驱动不错,你可以了解一下
有几个相关的帖子,需要的话可以看看
lcd1602 https://bbs.21ic.com/viewthread.php?tid=143085
PSOC下这个液晶比1602好多了,128X64点阵带中文字库才40大洋 https://bbs.21ic.com/viewthread.php?tid=119009
驱动代码:“PSOC下这个液晶比1602好多了,128X64点阵带中文...” https://bbs.21ic.com/viewthread.php?tid=119014

使用特权

评论回复
板凳
ycz9999| | 2011-3-9 23:43 | 只看该作者
proteus里面仿真时时序很纠结的   以前仿真51驱动个1602就遇到过

使用特权

评论回复
地板
lyh123456|  楼主 | 2011-3-11 10:28 | 只看该作者
谢谢啊!我在proteus仿真里用51仿真可以,但是一转到LPC2132里就不行了

使用特权

评论回复
5
lixiaoxu2meng| | 2011-3-11 14:27 | 只看该作者
1# lyh123456
我昨天看到你的帖子
今天仿了一下 可以
你程序不太对
1.时序不对
2.就是你数据口用的是P0.8~P0.15,而你给赋值的是低八位
下面是我改过并且通过仿真的程序
你参考下:)

test.rar

109.38 KB

使用特权

评论回复
6
lyh123456|  楼主 | 2011-3-14 21:35 | 只看该作者
嗯,十分感谢啊!呵呵

使用特权

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

本版积分规则

5

主题

29

帖子

1

粉丝