单片机8×8点阵实例

单片机8×8点阵实例,第1张

在8X8 LED点阵上显示柱形,让其先从左到右平滑移动三次,其次从右到左平滑移动三次,再次从上到下平滑移动三次,最后从下到上平滑移动三次,如此循环下去。

分析:此任务是比较简单的,最基础的LED点阵显示应用。只需设置显示的起始地址(即起始状态),列出LED行扫描、列扫描的顺序输出,再设置一个延时即可循环显示。

源程序:

#include

unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//行扫描显示编码

unsigned char codetabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//列扫描显示编码

void delay(void)//设置延时

{

unsigned char i,j;

for(i=10;i>0;i--)

for(j=248;j>0;j--);

}

void delay1(void)

{

unsigned char i,j,k;

for(k=10;k>0;k--)

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++)//从左向右三次

      {

        for(i=0;i<8;i++)

          {

              P3=taba;

              P1=0xff;

              delay1();

          }

      }

      for(j=0;j<3;j++)//从右向左三次

      {

        for(i=0;i<8;i++)

          {

              P3=taba[7-i];

              P1=0xff;

              delay1();

          }

      }

    for(j=0;j<3;j++)//从上向下三次

      {

        for(i=0;i<8;i++)

          {

              P3=0x00;

              P1=tabb[7-i];

              delay1();

          }

      }

    for(j=0;j<3;j++)//从下向上三次

      {

        for(i=0;i<8;i++)

          {

              P3=0x00;

              P1=tabb;

              delay1();

          }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2578271.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-07
下一篇 2022-08-07

发表评论

登录后才能评论

评论列表(0条)

保存