微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 用STC90C516RD+单片机做12864显示动画的问题

用STC90C516RD+单片机做12864显示动画的问题

时间:10-02 整理:3721RD 点击:
各位大神们,我做12864显示动画,前几天作的动画效果虽然不太好,但还和预想的图片相同,但在昨天,发现我显示出来的动画整体向右移了一些,有些多显示出了一些东西,有些少显示出了一些东西,而且,我一幅幅图片都试过了,有的和取模时一样,有的就和取模软件显示的不一样,我用的是STC90C516RD+单片机,这是怎么回事?取模软件有问题?还是液晶出问题了?

是不是数据的问题

我仔细看了下,确切的说是,他把有点16个点显示到了左边(整列都是那样),查看了数据是对的,不知道是怎么回事?
程序时这样的: void check_busy()
{
rs=0;
rw=1;
e=1;
DataPort=0xff;
while((DataPort&0x80)==0x80);
e=0;
}
void  write_cmd(uchar cmd)
{
check_busy();
rs=0;
rw=0;
e=1;
DataPort=cmd;
delayUs(5);
e=0;
delayUs(5);
}
void  write_data(uchar dat)
{
check_busy();
rs=1;
rw=0;
e=1;
DataPort=dat;
delayUs(5);
e=0;
delayUs(5);
}
void init()
{
delayMs(40);
psb=1;
delayMs(1);
res=0;
delayMs(5);
res=1;
delayMs(10);
write_cmd(0x30);
delayMs(5);
write_cmd(0x0c);
delayMs(5);
write_cmd(0x01);
delayMs(5);
}
        void clear_gcrom()
{
uchar i,j,k;
lcd_x=0x80;
lcd_y=0x80;
write_cmd(0x34);
for(i=0;i<2;i++)
   {
   for(j=0;j<32;j++)
     {
        write_cmd(lcd_y+j);
        write_cmd(lcd_x);
        for(k=0;k<16;k++)
          {
          write_data(0x00);
          }
     }
   lcd_x=0x88;
   }
   write_cmd(0x36);
   write_cmd(0x30);
}
void write_image(uchar*p)
{
uchar i,j,k;
write_cmd(0x34);
         lcd_y=0x80;
         lcd_x=0x80;
for(i=0;i<2;i++)
   {
   for(j=0;j<32;j++)
     {
        write_cmd(lcd_y+j);
        write_cmd(lcd_x);
        for(k=0;k<16;k++)
          {
          write_data(*p++);
          }
     }
   lcd_x=0x88;
   }
   write_cmd(0x36);
   write_cmd(0x30);
}
求帮忙啊。

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

网站地图

Top