我想让显示一行滚动显示一行静态显示,如果用移动指令去的话,会两行都移动
用点阵移动方式去的话,在移动完数据后后面会全部显示6,比如0是不显示,p=123456
0000000000000001
0000000000000012
。。。。。。
0000123456666666
会出现这样的状况;如何解决;
#include<reg52.h>
#include<intrins.h>
sbit rs=P2^4;
sbit rw=P2^5;
sbit en=P2^6;
#define uchar unsigned char
//uchar code table[]={}
void delus(uchar t)
{
while(--t);
}
void delms(uchar t)
{
while(t--)
{
delus(245);
delus(245);
}
}
void lcd_write_com(uchar com)
{
delms(5);
rs=0;
rw=0;
en=1;
P0=com;
_nop_();
en=0;
}
void lcd_write_dat(uchar dat)
{
delms(5);
rs=1;
rw=0;
en=1;
P0=dat;
_nop_();
en=0;
}
void lcd_clear()
{
lcd_write_com(0x01);
delms(5);
}
void lcd_write_char(uchar x,uchar y,uchar dat)
{
if(y==0)
{
lcd_write_com(0x80+x);
}
else
{
lcd_write_com(0xc0+x);
}
lcd_write_dat(dat);
}
void lcd_write_string(uchar x,uchar y,uchar *s)
{
if(y==0)
{
lcd_write_com(0x80+x);
}
else
{
lcd_write_com(0xc0+x);
}
while(*s)
{
lcd_write_dat(*s);
s++;
}
}
void lcd_init()
{
lcd_write_com(0x38);
delms(5);
lcd_write_com(0x38);
delms(5);
lcd_write_com(0x38);
delms(5);
lcd_write_com(0x38);
lcd_write_com(0x08);
lcd_write_com(0x01);
lcd_write_com(0x06);
delms(5);
lcd_write_com(0x0c);
}
void main()
{
uchar i;
lcd_init();
lcd_clear();
while(1)
{
for(i=16;i>0;i--)
{
lcd_write_string(i,0,"123456");
lcd_write_string(3,1,"i love you");
delms(200);
}
i=16;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>