就是在这个程序上添加独立按键控制LED点阵的不同显示(例如静止、闪烁、平移)
就是可以让它被独立按键控制,我这个程序是向左平移显示0~9,怎么才能让按键控制它让它静止
程序如下:
#include<reg52.h>
void delay();
unsigned char code digittab[88]={ //行选通
0x00,0x00,0x00,0x00,//缓冲下,0从右端出来啦!!!
0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00,//0
0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00,/*1*/
0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00,/*2*/
0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00,/*3*/
0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00,/*4*/
0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00,/*5*/
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*/
0x00,0x00,0x00,0x00//让9继续滚动完
};
unsigned char code tab[]={0x7f,0xbf,0xdf,0xef,
0xf7,0xfb,0xfd,0xfe,}; //列选通
void main()
{
unsigned char i=1,x=0,j=0,tcount=0;
unsigned int ledroll[8];
for(j=0;j<8;j++)
ledroll[j]=digittab[j];
while(1)
{
for(x=0;x<8;x++)//扫描显示出当前字样
{
P1=tab[x];
P0=ledroll[x];
delay();//暂留一下下
}
/*将行选通后移一个*/
if(++tcount>30)//扫描30次
{
tcount=0;
for(j=0;j<8;j++)
ledroll[j]=digittab[j+i];//此处重点
if(++i>=80)//88减8当然等于80啦
i=0;
}
}
}
void delay()//制造视觉暂留效应
{
unsigned int x,y;
for(x=2;x>0;x--)
for(y=123;y>0;y--);
}
|