
单片机点阵移动怎么编
单片机点阵中比如说一个字向右移该怎么编码,不会是一个一个拼吧?还有为什么我一个一个拼出来之后右移过程中左边有阴影?谢谢,下边是程序,该怎么改?#include<reg51...
单片机点阵中比如说一个字向右移该怎么编码,不会是一个一个拼吧?还有为什么我一个一个拼出来之后右移过程中左边有阴影?谢谢,下边是程序,该怎么改?
#include<reg51.h>
unsigned char code tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,}; //列选通控制
unsigned char code digittab[9][8]={
{0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,0x00}, //0 8行,
{0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00},
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},
{0x00,0x00,0x00,0x3e,0x41,0x41,0x41,0x3e},
{0x00,0x00,0x00,0x00,0x3e,0x41,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x3e,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
};
unsigned char tt=0;
void delay()
{int m,n;
for(m=20;m>0;m--)
for(n=15;n>0;n--);}
void delay_50ms()
{
int m;
for(m=50000;m>0;m--);
}
unsigned char i,j=0; //i定义列,j定义行
void main(void)
{
while(1)
{
for(i=0;i<8;i++)
{
P1=0xFF; //绿列选通都关闭掉
P2=tab[i]; // 列线
P0=digittab[j][i]; // 行线
delay(); //扫描时间
}
i=0;
tt++;
delay_50ms();
if(tt==20) //间隔1s变化字符
{
tt=0;
j++;
if(j==9)
j=0;
}
}
}
主要是阴影怎么解决?谢谢 展开
#include<reg51.h>
unsigned char code tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,}; //列选通控制
unsigned char code digittab[9][8]={
{0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,0x00}, //0 8行,
{0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00},
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},
{0x00,0x00,0x00,0x3e,0x41,0x41,0x41,0x3e},
{0x00,0x00,0x00,0x00,0x3e,0x41,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x3e,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
};
unsigned char tt=0;
void delay()
{int m,n;
for(m=20;m>0;m--)
for(n=15;n>0;n--);}
void delay_50ms()
{
int m;
for(m=50000;m>0;m--);
}
unsigned char i,j=0; //i定义列,j定义行
void main(void)
{
while(1)
{
for(i=0;i<8;i++)
{
P1=0xFF; //绿列选通都关闭掉
P2=tab[i]; // 列线
P0=digittab[j][i]; // 行线
delay(); //扫描时间
}
i=0;
tt++;
delay_50ms();
if(tt==20) //间隔1s变化字符
{
tt=0;
j++;
if(j==9)
j=0;
}
}
}
主要是阴影怎么解决?谢谢 展开
3个回答
展开全部
试试如下修改:
#include<reg51.h>
unsigned char code tab[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//列选通控制
unsigned char code digittab[9][8] = {
{0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,0x00}, //0 8行,
{0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00},
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},
{0x00,0x00,0x00,0x3e,0x41,0x41,0x41,0x3e},
{0x00,0x00,0x00,0x00,0x3e,0x41,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x3e,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};
unsigned char tt=0;
void delay()
{
int m, n;
for(m = 20; m > 0; m--) for(n = 15; n > 0; n--);
}
void Disp(unsigned char j)
{
unsigned char i; //i定义列,j定义行
for(i = 0; i < 8; i++) {
P0 = digittab[j][i]; // 行线
P2 = tab[i]; delay(); P2 = 0xff; // 列线, 扫描时间
}
}
void main(void)
{
unsigned char i, j;
while(1) {
for(i = 0; i < 10; i++) Disp(j);
j++;
if(j == 9) j = 0;
}
}
#include<reg51.h>
unsigned char code tab[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//列选通控制
unsigned char code digittab[9][8] = {
{0x3e,0x41,0x41,0x41,0x3e,0x00,0x00,0x00}, //0 8行,
{0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,0x00},
{0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00},
{0x00,0x00,0x00,0x3e,0x41,0x41,0x41,0x3e},
{0x00,0x00,0x00,0x00,0x3e,0x41,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x3e,0x41,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x41},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}};
unsigned char tt=0;
void delay()
{
int m, n;
for(m = 20; m > 0; m--) for(n = 15; n > 0; n--);
}
void Disp(unsigned char j)
{
unsigned char i; //i定义列,j定义行
for(i = 0; i < 8; i++) {
P0 = digittab[j][i]; // 行线
P2 = tab[i]; delay(); P2 = 0xff; // 列线, 扫描时间
}
}
void main(void)
{
unsigned char i, j;
while(1) {
for(i = 0; i < 10; i++) Disp(j);
j++;
if(j == 9) j = 0;
}
}

2020-01-15 广告
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询