微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 求助1602显示屏显示位置乱跑的问题

求助1602显示屏显示位置乱跑的问题

时间:10-02 整理:3721RD 点击:

新人没有积分悬赏, 我就想问问为什么1602显示屏显示内容会乱跑?用的是ARM7的LPC2103.
以下是代码:
#include"iolpc2103.h"
#define uchar unsigned char
#define BUSY 1<<11
#define RS 1<<12
#define RW 1<<13
#define EN 1<<15
uchar hello[]="Hello!";
void Delay10ms(uchar c)   
{
    uchar a, b;
    for (;c>0;c--)
{
  for (b=38;b>0;b--)
  {
   for (a=130;a>0;a--);
  }         
}      
}
void checkbusy()
{
IODIR=0x0000b000;
while(1)
{
  IOCLR|=RS;
  IOSET|=RW;
  IOSET|=EN;
  if(!(IOPIN & BUSY))
  break;
  else
  {  Delay10ms(1);
                  IOCLR|=EN;
                }
}
IODIR=0x0000bff0;
}
void lcd_wcom(uchar com)
{
checkbusy();
IOCLR|=RS;
IOCLR|=RW;
IOCLR|=0x00000ff0;
        Delay10ms(1);
IOSET|=(com<<4);
Delay10ms(1);
IOSET|=EN;
        Delay10ms(1);
IOCLR|=EN;
}
void lcd_wdat(uchar dat)
{
checkbusy();
IOSET|=RS;
IOCLR|=RW;
IOCLR|=0x00000ff0;
        Delay10ms(1);
IOSET|=(dat<<4);
Delay10ms(1);
IOSET|=EN;
        Delay10ms(1);
IOCLR|=EN;
}
void lcd_init()
{
lcd_wcom(0x38);
lcd_wcom(0x0c);
lcd_wcom(0x06);
}
void main()
{
  uchar i=0;
  PINSEL0=0x00000000;
  PINSEL1=0x00000000;
  IODIR=0x0000bff0;
  Delay10ms(220);
  lcd_init();
  Delay10ms(220);
  lcd_wcom(0x80);
  for(;i<6;i++)
  {
    lcd_wdat(hello);
    Delay10ms(220);
  }
  while(1);
}

啊啊啊啊啊啊啊,延时也改了还是乱跑

啊啊啊啊啊啊啊,延时也改了还是乱跑

啊啊啊啊啊啊啊,延时也改了还是乱跑

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top