1个回答
展开全部
滚屏吗?是的话继续回答(会的不多,这个倒是做过)
虽然你用10x10的点阵,编字库要按16(行)x10(列)的编,只是16行里面有6行不进行显示(不接入电路)
需要定义一个显示缓冲区,大小根据你的点阵,(我做8*5的,就用8*5的说明了)比如就一个8*8点阵,unsigned char pre[18];缓冲去要比显示屏大。
void display()
{
unsigned char pre[18];
unsigned char a=0x7f,b,c,d,g,i;
unsigned int h;
g=w[h];
for(i=0;i<5;i++)
for(d=0;d<10;d++)
for(b=0;b<8;b++)//------------------显示一屏-----------------
{
//---------------------------------关led显示-----------------
coe=0;//关138片选
ca=0;
cb=0;
cc=0;//片选1
P0=0xff;//关显示
coe=1;
coe=0;//产生上升脉冲,锁存P0
//-----------------------------------送数据------------------
ca=1;//片选2
P0=pre[b+i];//送数据
coe=1;
coe=0;// 产生上升脉冲,锁存P0
ca=0;//片选1
P0=a;//开显示
coe=1;
coe=0;
a=_cror_(a,1);
//------------------------------------延时-------------------
delay(1);
}
for(c=0;c<13;c++)
pre[c]=pre[c+5];
for(c=0;c<5;c++)
pre[c+13]=words[g*5+c];
if(h<349) h++;
else h=0;
虽然你用10x10的点阵,编字库要按16(行)x10(列)的编,只是16行里面有6行不进行显示(不接入电路)
需要定义一个显示缓冲区,大小根据你的点阵,(我做8*5的,就用8*5的说明了)比如就一个8*8点阵,unsigned char pre[18];缓冲去要比显示屏大。
void display()
{
unsigned char pre[18];
unsigned char a=0x7f,b,c,d,g,i;
unsigned int h;
g=w[h];
for(i=0;i<5;i++)
for(d=0;d<10;d++)
for(b=0;b<8;b++)//------------------显示一屏-----------------
{
//---------------------------------关led显示-----------------
coe=0;//关138片选
ca=0;
cb=0;
cc=0;//片选1
P0=0xff;//关显示
coe=1;
coe=0;//产生上升脉冲,锁存P0
//-----------------------------------送数据------------------
ca=1;//片选2
P0=pre[b+i];//送数据
coe=1;
coe=0;// 产生上升脉冲,锁存P0
ca=0;//片选1
P0=a;//开显示
coe=1;
coe=0;
a=_cror_(a,1);
//------------------------------------延时-------------------
delay(1);
}
for(c=0;c<13;c++)
pre[c]=pre[c+5];
for(c=0;c<5;c++)
pre[c+13]=words[g*5+c];
if(h<349) h++;
else h=0;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询