|
/*****************************************************************************************
* *
* LED点阵实验 (左右上下流动显示) *
* 说明 通过P0 P1和 P2 作为点阵接口 *
*要求学员掌握 LED点阵的工作原理和 各点阵脚的定义及接法,具体接线请参考接线说明 *
*我们采用的LED点阵式是低功耗,在做实验时可以用单片机脚直接驱动 *
******************************************************************************************/
#include <REG51.H>
unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //纵条表
unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //衡条表
/*************延时函数*********************/
void delay1(void)
{
unsigned char i,j,k;
for(k=10;k>0;k--) //循环时间是 10*20*248次
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
/*************主函数*****************************/
void main(void)
{
unsigned char i,j;
while(1)
{
for(j=0;j<3;j++) //从左到右3次
{
for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
{
P2=taba[i];
P0=0xff;
delay1();
}
}
for(j=0;j<3;j++) //从右到左3次
{
for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
{
P2=taba[7-i];
P0=0xff;
delay1();
}
}
for(j=0;j<3;j++) //从上到下3次
{
for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
{
P2=0x00;
P0=tabb[7-i];
delay1();
}
}
for(j=0;j<3;j++) //从下到上3次
{
for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
{
P2=0x00;
P0=tabb[i];
delay1();
}
}
}
}
|
|