单片机8×8点阵实例

控制/MCU

1843人已加入

描述

在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();

          }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分