单片机点阵怎么实现左移右移,谢谢
下面这个程序是点阵程序,依次显示6,7,8,9,我想让他们从左到右移动依次显示,想知道怎么改,或者提供思路,谢谢。#include<reg51.h>unsignedcha...
下面这个程序是点阵程序,依次显示6,7,8,9,我想让他们从左到右移动依次显示,想知道怎么改,或者提供思路,谢谢。
#include<reg51.h>
unsigned char code tab[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,}; //列选通控制,0有效
unsigned char tab1[4][8]=
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00} //9
unsigned char tt=0;
unsigned char i,j; //i定义列,j定义行
/**************************扫描延时********************************/
void delay()
{
int m,n;
for(m=20;m>0;m--)
for(n=15;n>0;n--);
}
/***********************主函数*************************/
void main(void)
{
while(1)
{
for(i=0;i<8;i++)
{
P1=0xFF; //绿列选通都关闭掉
P2=tab[i];
P0=tab1[j][i];
delay(); //扫描时间
}
tt++;
if(tt==20) //间隔2s变化字符
{
tt=0;
j++;
if(j==4)
j=0;
}
}
} 展开
#include<reg51.h>
unsigned char code tab[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,}; //列选通控制,0有效
unsigned char tab1[4][8]=
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00} //9
unsigned char tt=0;
unsigned char i,j; //i定义列,j定义行
/**************************扫描延时********************************/
void delay()
{
int m,n;
for(m=20;m>0;m--)
for(n=15;n>0;n--);
}
/***********************主函数*************************/
void main(void)
{
while(1)
{
for(i=0;i<8;i++)
{
P1=0xFF; //绿列选通都关闭掉
P2=tab[i];
P0=tab1[j][i];
delay(); //扫描时间
}
tt++;
if(tt==20) //间隔2s变化字符
{
tt=0;
j++;
if(j==4)
j=0;
}
}
} 展开
展开全部
#include<reg51.h>
unsigned char code tab[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,}; //列选通控制,0有效
unsigned char tab1[4][8]=
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00} //9
unsigned char tt=0;
unsigned char i,jk; //i定义列,j定义行,k定义移动变量
/**************************扫描延时********************************/
void delay()
{
int m,n;
for(m=20;m>0;m--)
for(n=15;n>0;n--);
}
/***********************主函数*************************/
void main(void)
{
while(1)
{
for(i=0;i<8;i++)
{
P1=0xFF; //绿列选通都关闭掉
P2=tab[i];
P0=tab1[j+k][i];
delay(); //扫描时间
}
tt++;
if(tt==20) //间隔2s变化字符
{
k++;
if(k==4)
{
k=0;
}
tt=0;
j++;
if(j==4)
j=0;
}
}
}
unsigned char code tab[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,}; //列选通控制,0有效
unsigned char tab1[4][8]=
{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6
{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7
{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8
{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00} //9
unsigned char tt=0;
unsigned char i,jk; //i定义列,j定义行,k定义移动变量
/**************************扫描延时********************************/
void delay()
{
int m,n;
for(m=20;m>0;m--)
for(n=15;n>0;n--);
}
/***********************主函数*************************/
void main(void)
{
while(1)
{
for(i=0;i<8;i++)
{
P1=0xFF; //绿列选通都关闭掉
P2=tab[i];
P0=tab1[j+k][i];
delay(); //扫描时间
}
tt++;
if(tt==20) //间隔2s变化字符
{
k++;
if(k==4)
{
k=0;
}
tt=0;
j++;
if(j==4)
j=0;
}
}
}
意法半导体(中国)投资有限公司
2021-01-14 广告
2021-01-14 广告
推荐STC的抗干扰很好。用9块钱的STC89C54RD+,16K的ROM,1K的RAM。我用过的,实现你的功能不成问题。如果环境恶劣,也可以选择工业级的STC89C54RD+,14块钱。而且这个单片机带AD,10位分辨率。可以用来接你的压力...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询