單片機8×8點陣實例

在8X8 LED點陣上顯示柱形,讓其先從左到右平滑移動三次,其次從右到左平滑移動三次,再次從上到下平滑移動三次,最后從下到上平滑移動三次,如此循環(huán)下去。

分析:此任務是比較簡單的,最基礎的LED點陣顯示應用。只需設置顯示的起始地址(即起始狀態(tài)),列出LED行掃描、列掃描的順序輸出,再設置一個延時即可循環(huán)顯示。

源程序:

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

? ? ? ? ? }

? ? ? }

? ? }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容