隨著(zhù)前面的講解說(shuō)明,緣緣想信你已經(jīng)對LED的控制了如指掌了吧,那么現在就跟緣緣一起,來(lái)玩點(diǎn)動(dòng)感的吧,想念你肯定會(huì )喜歡的!為了方便講解,我們就以P0口為例進(jìn)行說(shuō)明,P0口接8個(gè)LED!
一、制作一個(gè)流水燈:
相信這個(gè)現在對親們都不難了吧,我們只要用總線(xiàn)定義端口,然后加上延時(shí),再弄個(gè)死循環(huán)就OK了:
可以看到,我們的程序沒(méi)有任何問(wèn)題,那還等什么,燒錄看看吧,如果時(shí)間太大或是太短,我們就調節yanshi(200);這句語(yǔ)句中的值就行了,是不是有奇妙的情況發(fā)生了,緣緣看著(zhù)那組燈在一個(gè)個(gè)地閃,心情好激動(dòng)??;
那么,只有這一種方法嗎,答案是否定的,還有一種方法叫做循環(huán)移動(dòng),分為循環(huán)左移和循環(huán)右移,在解釋這兩個(gè)循環(huán)移動(dòng)前,我們先看看位移是怎么回事:
數據位移:
認識數值位移對外部的控制:
首先,明確一個(gè)關(guān)點(diǎn),就是數值在程序中以十六進(jìn)制定義,但在程序中以二進(jìn)制計算的,怎么回事呢,我們看看下圖,對于二進(jìn)制,左右與高低位是怎么判斷的:
好了,我們知道它的左右與高低位了,那么我們以左移為例,看看它們是怎么移動(dòng)的,移動(dòng)后會(huì )是什么樣子:
把這個(gè)程序燒寫(xiě)到單片機執行時(shí),你會(huì )發(fā)現,燈一個(gè)個(gè)地被點(diǎn)亮了,然后除第一個(gè)外,其它的都滅了,又從第1個(gè)開(kāi)始慢慢地點(diǎn)亮,依次循環(huán),通過(guò)這個(gè)例程,你應該明白了左移是怎么回事,在這個(gè)程序中,while和for循環(huán),我們看到,for除了用作延時(shí)外還用于和程序的循環(huán)處理,對于for,我們前一章就講了,不明白的可以看看前面的那一章哦。
循環(huán)位移:
在Keil文件的幫助文件下,有個(gè)叫循環(huán)左移的函數,其基本介紹如下:

相信對于英文很懂的人來(lái)說(shuō),一看就知道是怎么回事,但是對于緣緣這樣不懂英文的來(lái)說(shuō),看懂它是件很吃力的事,緣緣就發(fā)張圖給各位吧:

看了這張圖你是不是明白一些了,那么我們來(lái)說(shuō)說(shuō)這個(gè)程序該怎么寫(xiě),首先,我們得寫(xiě)上#include < intrins.h="">,這是關(guān)于循環(huán)位移專(zhuān)用的頭文件,不寫(xiě)它,咱們的循環(huán)位移函數沒(méi)能執行,下一步,隨便定義個(gè)變量,然后先給這個(gè)變量賦個(gè)值,再讓這個(gè)數進(jìn)行循環(huán)位移,然后把值賦給P0,讓它輸出,下面是循環(huán)左移程序的書(shū)規則:
位移名稱(chēng)(參考變量,位移數),位移名稱(chēng)crol是左移,cror就是右移了,參考變量就是位移是以那個(gè)數為準的,位移數就是一次移動(dòng)幾位,好了,說(shuō)了這么多,我們就寫(xiě)個(gè)程序看看這個(gè)結果吧:

燒寫(xiě)單片機看看效果吧,是不是很神奇呢,那么對于LED控制就算是說(shuō)完了,其實(shí)LED對于單片實(shí)驗是很重要的,主要用于端口檢測,這個(gè)緣緣以后告訴你怎么用吧,我們剛才一直用左移或是循環(huán)左移在做,現在,親們,自己弄成右移的吧,不難的哦!
二、LED終極變換,舞動(dòng)的心,絕對是哄MM的利器,俺也喜歡這個(gè)
教程項目之心形變幻燈:
1、制作過(guò)程,首先準備的東西:
8根針一組的單排針4組,電阻32個(gè)(阻值330歐—1K),LED32個(gè),顏色不限,萬(wàn)用板一個(gè),導線(xiàn)若干。










9、當固定好位置,再不更改時(shí),我們把LED的正極全部接到一起,然后引一根線(xiàn)與單片機的電源正極相連,所有的負極都與電阻相連,然后用導線(xiàn)把電阻按標記的P口分類(lèi)地接在下面的排針上,這樣,我們就完了心型LED的硬件制作,緣緣建議為了好看點(diǎn),把導線(xiàn)、電阻放在板子的下面,焊接完成后,四個(gè)P口插在單片機小系統對應的四個(gè)P口,這時(shí),我們就用下面的程序編譯燒寫(xiě),看看那動(dòng)感的效果吧!對于程序,相信你已經(jīng)能夠看出明白了。
程序1:
#include< reg52.h="">
#include< intrins.h="">//這個(gè)頭文件對左移或是右移函數有用,本程序無(wú)用
unsigned int x,y;
void delayms(unsigned int z)
{
unsigned int i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void offall();//函數聲明
void onall();
void ls();
void fxls();
void bsb();
void fbsb();
void ss(y);
void zxsz();
void fxsz();
void main()//這是主函數,一個(gè)程序中一定要有個(gè)主函數,
//主函數之后的為分函數,一定要在主函數前面聲明,也可以寫(xiě)在主函數之前不聲明
{
offall();
delayms(50);
onall();
delayms(50);
while(1)
{
ls();//等時(shí)流水燈【這里對聲明的函數進(jìn)行引用】
fxls();//反向等時(shí)流水燈
bsb();//半雙邊流水 由上至下
fbsb();//半雙邊流水 由下至上
ss(200);//這是你說(shuō)的顯示的時(shí)間,按自己的需要改里面的數值【閃爍(y為閃爍間隔時(shí)間)】
zxsz();//正向生長(cháng)
fxsz();//反向生長(cháng)
}
}
void offall()//開(kāi)啟所有燈
{
P0=0xff;P1=0x00;P2=0x00;P3=0x00;
}
void onall()//關(guān)閉所有燈
{P0=0x00;P1=0xff;P2=0xff;P3=0xff;}
void ls()//等時(shí)流水燈
{
P0=0xff;
P0=0xfe;delayms(50);
P0=0xfd;delayms(50);
P0=0xfb;delayms(50);
P0=0xf7;delayms(50);
P0=0xef;delayms(50);
P0=0xdf;delayms(50);
P0=0xbf;delayms(50);
P0=0x7f;delayms(50);
P0=0xff;
P2=0x00;
P2=0x80;delayms(50);
P2=0x40;delayms(50);
P2=0x20;delayms(50);
P2=0x10;delayms(50);
P2=0x08;delayms(50);
P2=0x04;delayms(50);
P2=0x02;delayms(50);
P2=0x01;delayms(50);
P2=0x00;
P3=0x00;
P3=0x80;delayms(50);
P3=0x40;delayms(50);
P3=0x20;delayms(50);
P3=0x10;delayms(50);
P3=0x08;delayms(50);
P3=0x04;delayms(50);
P3=0x02;delayms(50);
P3=0x01;delayms(50);
P3=0x00;
P1=0x00;
P1=0x80;delayms(50);
P1=0x40;delayms(50);
P1=0x20;delayms(50);
P1=0x10;delayms(50);
P1=0x08;delayms(50);
P1=0x04;delayms(50);
P1=0x02;delayms(50);
P1=0x01;delayms(50);
P1=0x00;
P0=0xfe;delayms(50);
P0=0xff;
}
void fxls()//反向等時(shí)流水燈
{
P0=0xff;
P0=0xfe;delayms(50);
P0=0xff;
P1=0x00;
P1=0x01;delayms(50);
P1=0x02;delayms(50);
P1=0x04;delayms(50);
P1=0x08;delayms(50);
P1=0x10;delayms(50);
P1=0x20;delayms(50);
P1=0x40;delayms(50);
P1=0x80;delayms(50);
P1=0x00;
P3=0x00;
P3=0x01;delayms(50);
P3=0x02;delayms(50);
P3=0x04;delayms(50);
P3=0x08;delayms(50);
P3=0x10;delayms(50);
P3=0x20;delayms(50);
P3=0x40;delayms(50);
P3=0x80;delayms(50);
P3=0x00;
P2=0x00;
P2=0x01;delayms(50);
P2=0x02;delayms(50);
P2=0x04;delayms(50);
P2=0x08;delayms(50);
P2=0x10;delayms(50);
P2=0x20;delayms(50);
P2=0x40;delayms(50);
P2=0x80;delayms(50);
P2=0x00;
P0=0xff;
P0=0x7f;delayms(50);
P0=0xbf;delayms(50);
P0=0xdf;delayms(50);
P0=0xef;delayms(50);
P0=0xf7;delayms(50);
P0=0xfb;delayms(50);
P0=0xfd;delayms(50);
P0=0xfe;delayms(50);
P0=0xff;
}
void bsb()//半雙邊流水 由上至下
{
offall();
P0=0xfe;delayms(50);
P0=0xfd;P1=0x01;delayms(50);
P0=0xfb;P1=0x02;delayms(50);
P0=0xf7;P1=0x04;delayms(50);
P0=0xef;P1=0x08;delayms(50);
P0=0xdf;P1=0x10;delayms(50);
P0=0xbf;P1=0x20;delayms(50);
P0=0x7f;P1=0x40;delayms(50);
P0=0xff;
P2=0x80;P1=0x80;delayms(50);P1=0x00;
P2=0x40;P3=0x01;delayms(50);
P2=0x20;P3=0x02;delayms(50);
P2=0x10;P3=0x04;delayms(50);
P2=0x08;P3=0x08;delayms(50);
P2=0x04;P3=0x10;delayms(50);
P2=0x02;P3=0x20;delayms(50);
P2=0x01;P3=0x40;delayms(50);
P2=0x80;delayms(50);
offall();
}
void fbsb()//半雙邊流水 由下至上
{
offall();
P3=0x80;delayms(50);
P2=0x01;P3=0x40;delayms(50);
P2=0x02;P3=0x20;delayms(50);
P2=0x04;P3=0x10;delayms(50);
P2=0x08;P3=0x08;delayms(50);
P2=0x10;P3=0x04;delayms(50);
P2=0x20;P3=0x02;delayms(50);
P2=0x40;P3=0x01;delayms(50);
offall();
P2=0x80;P1=0x80;delayms(50);
offall();
P0=0x7f;P1=0x40;delayms(50);
P0=0xbf;P1=0x20;delayms(50);
P0=0xdf;P1=0x10;delayms(50);
P0=0xef;P1=0x08;delayms(50);
P0=0xf7;P1=0x04;delayms(50);
P0=0xfb;P1=0x02;delayms(50);
P0=0xfd;P1=0x01;delayms(50);
offall();
P0=0xfe;
offall();
}
void ss(y)//閃爍(y為閃爍間隔時(shí)間)
{
offall();
delayms(y);
onall();
delayms(y);
}
void zxsz()//正向生長(cháng)
{
offall();
P0=0xfe;delayms(50);
P0=0xfc;delayms(50);
P0=0xf8;delayms(50);
P0=0xf0;delayms(50);
P0=0xe0;delayms(50);
P0=0xc0;delayms(50);
P0=0x80;delayms(50);
P0=0x00;delayms(50);
P2=0x80;delayms(50);
P2=0xc0;delayms(50);
P2=0xe0;delayms(50);
P2=0xf0;delayms(50);
P2=0xf8;delayms(50);
P2=0xfc;delayms(50);
P2=0xfe;delayms(50);
P2=0xff;delayms(50);
P3=0x80;delayms(50);
P3=0xc0;delayms(50);
P3=0xe0;delayms(50);
P3=0xf0;delayms(50);
P3=0xf8;delayms(50);
P3=0xfc;delayms(50);
P3=0xfe;delayms(50);
P3=0xff;delayms(50);
P1=0x80;delayms(50);
P1=0xc0;delayms(50);
P1=0xe0;delayms(50);
P1=0xf0;delayms(50);
P1=0xf8;delayms(50);
P1=0xfc;delayms(50);
P1=0xfe;delayms(50);
P1=0xff;delayms(50);
}
void fxsz() //反向生長(cháng)
{
offall();
P0=0xfe;delayms(50);
P1=0x01;delayms(50);
P1=0x03;delayms(50);
P1=0x07;delayms(50);
P1=0x0f;delayms(50);
P1=0x1f;delayms(50);
P1=0x3f;delayms(50);
P1=0x7f;delayms(50);
P1=0xff;delayms(50);
P3=0x01;delayms(50);
P3=0x03;delayms(50);
P3=0x07;delayms(50);
P3=0x0f;delayms(50);
P3=0x1f;delayms(50);
P3=0x3f;delayms(50);
P3=0x7f;delayms(50);
P3=0xff;delayms(50);
P2=0x01;delayms(50);
P2=0x03;delayms(50);
P2=0x07;delayms(50);
P2=0x0f;delayms(50);
P2=0x1f;delayms(50);
P2=0x3f;delayms(50);
P2=0x7f;delayms(50);
P2=0xff;delayms(50);
P0=0x7e;delayms(50);
P0=0x3e;delayms(50);
P0=0x1e;delayms(50);
P0=0x0e;delayms(50);
P0=0x06;delayms(50);
P0=0x02;delayms(50);
P0=0x00;delayms(50);
}
程序2:
使用4組I/O控制心形流水燈,花樣多種。已經(jīng)通過(guò)硬件測試,效果不錯。
(硬件:用32個(gè)led做成一個(gè) 愛(ài)心 ,直接用4組I/O控制)
#include< reg51.h="">
#include < intrins.h="">//包含單片機寄存器的頭文件
char code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,};//P0123向下合攏
char code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,};//P0123向下合攏
char code table2[]={0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,};//P0123向上收回
char code table3[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,};//P0123向上收回
char code table4[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,};//P0123 一個(gè)燈走動(dòng)
char code table5[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,};//P0123 兩個(gè)燈走動(dòng)
char code table6[]={0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,};//P0123 三個(gè)燈走動(dòng)
char code table7[]={0xf0,0xe1,0xc3,0x87,0x0f,};//P0123 四個(gè)燈走動(dòng)
char code table8[]={0xe0,0xc1,0x83,0x07,};//P0123 五個(gè)燈走動(dòng)
char code table9[]={0xc0,0x81,0x03,};//P0123 六個(gè)燈走動(dòng)
char code table10[]={0x80,0x01,};//P0123 七個(gè)燈走動(dòng)
/***************************** 函數功能:延時(shí)一段時(shí)間 *****************************/
void delay(unsigned int z)
{
unsigned int n,k;
for(n=0;n<>
for(k=0;k ;
}
/***************************** 函數功能:主函數 *****************************/
void main(void)
{
char i,j,k;
while(1)
{
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(i=0;i<8;i++)>8;i++)>
{ P0=P0>>1;
P1=P1>>1;
P2=P2>>1;
P3=P3>>1;
delay(5);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(k=0;k<8;k++)>8;k++)>
{ P0=P0<>
P1=P1<>
P2=P2<>
P3=P3<>
delay(5);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<8;j++)>8;j++)>
{ P0=table[j];
P1=table1[j];
delay(5);
}
for(j=0;j<8;j++)>8;j++)>
{ P2=table[j];
P3=table1[j];
delay(5);
}
for(j=0;j<8;j++)>8;j++)>
{ P2=table2[j];
P3=table3[j];
delay(5);
}
P2=0xff;P3=0xff;
for(j=0;j<8;j++)>8;j++)>
{ P0=table2[j];
P1=table3[j];
delay(5);
}
for(j=0;j<10;j++)>10;j++)>
{ P0=0xaa;
P1=0xaa;
P2=0xaa;
P3=0xaa;
delay(10);
P0=0x55;
P1=0x55;
P2=0x55;
P3=0x55;
delay(10);
}
for(j=0;j<3;j++) p0123="">3;j++)>
{ P0=0x00;
P1=0xff;
P2=0xff;
P3=0x00;
delay(10);
P0=0xff;
P1=0x00;
P2=0x00;
P3=0xff;
delay(10);
}
for(j=0;j<3;j++)>3;j++)>
{ P0=0x00;
P1=0x00;
P2=0xff;
P3=0xff;
delay(10);
P0=0xff;
P1=0xff;
P2=0x00;
P3=0x00;
delay(10);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(i=0;i<8;i++)>8;i++)>
{ P0=P0<>
delay(5);
}P0=0x00;
for(i=0;i<8;i++)>8;i++)>
{ P2=P2<>
delay(5);
}P2=0x00;
for(i=0;i<8;i++)>8;i++)>
{ P3=P3<>
delay(5);
}P3=0x00;
for(i=0;i<8;i++)>8;i++)>
{ P1=P1<>
delay(5);
}P1=0x00;
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(i=0;i<8;i++)>8;i++)>
{ P1=P1>>1;
delay(5);
}P1=0x00;
for(i=0;i<8;i++)>8;i++)>
{ P3=P3>>1;
delay(5);
}P3=0x00;
for(i=0;i<8;i++)>8;i++)>
{ P2=P2>>1;
delay(5);
}P2=0x00;
for(i=0;i<8;i++)>8;i++)>
{ P0=P0>>1;
delay(5);
}P0=0x00;
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<8;j++) p0123="">8;j++)>
{ P0=table4[j];
P1=table4[j];
P2=table4[j];
P3=table4[j];
delay(5);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<7;j++) p0123="">7;j++)>
{ P0=table5[j];
P1=table5[j];
P2=table5[j];
P3=table5[j];
delay(5);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<6;j++) p0123="">6;j++)>
{ P0=table6[j];
P1=table6[j];
P2=table6[j];
P3=table6[j];
delay(5);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<5;j++) p0123="">5;j++)>
{ P0=table7[j];
P1=table7[j];
P2=table7[j];
P3=table7[j];
delay(5);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<4;j++) p0123="">4;j++)>
{ P0=table8[j];
P1=table8[j];
P2=table8[j];
P3=table8[j];
delay(5);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<3;j++) p0123="">3;j++)>
{ P0=table9[j];
P1=table9[j];
P2=table9[j];
P3=table9[j];
delay(5);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<2;j++) p0123="">2;j++)>
{ P0=table10[j];
P1=table10[j];
P2=table10[j];
P3=table10[j];
delay(5);
} P0=0x00;P1=0x00;P2=0x00;P3=0x00;delay(5);
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(j=0;j<8;j++) p0123="">8;j++)>
{ P0=table4[j];
delay(5);
} P0=0xff;
for(j=0;j<8;j++) p0123="">8;j++)>
{ P2=table4[j];
delay(5);
} P2=0xff;
for(j=0;j<8;j++) p0123="">8;j++)>
{ P3=table4[j];
delay(5);
} P3=0xff;
for(j=0;j<8;j++) p0123="">8;j++)>
{ P1=table4[j];
delay(5);
} P1=0xff;
for(j=0;j<7;j++) p0123="">7;j++)>
{ P0=table5[j];
delay(5);
} P0=0x7f;P2=0xfe;delay(5);P0=0xff;
for(j=1;j<7;j++) p0123="">7;j++)>
{ P2=table5[j];
delay(5);
} P2=0x7f;P3=0xfe;delay(5);P2=0xff;
for(j=1;j<7;j++) p0123="">7;j++)>
{ P3=table5[j];
delay(5);
} P3=0x7f;P1=0xfe;delay(5);P3=0xff;
for(j=1;j<7;j++) p0123="">7;j++)>
{ P1=table5[j];
delay(5);
} P1=0xff;
for(j=0;j<6;j++) p0123="">6;j++)>
{ P0=table6[j];
delay(5);
} P0=0x3f;P2=0xfe;delay(5);P0=0x7f;P2=0xfc;delay(5);P0=0xff;
for(j=0;j<6;j++) p0123="">6;j++)>
{ P2=table6[j];
delay(5);
}P2=0x3f;P3=0xfe;delay(5);P2=0x7f;P3=0xfc;delay(5);P2=0xff;
for(j=0;j<6;j++) p0123="">6;j++)>
{ P3=table6[j];
delay(5);
} P3=0x3f;P1=0xfe;delay(5);P3=0x7f;P1=0xfc;delay(5);P3=0xff;
for(j=0;j<6;j++) p0123="">6;j++)>
{ P1=table6[j];
delay(5);
}P1=0x3f;P0=0xfe;delay(5);P1=0x7f;P0=0xfc;delay(5);P1=0xff;
P0=0xf8;delay(5);
for(j=0;j<5;j++) p0123="">5;j++)>
{ P0=table7[j];
delay(5);
} P0=0x1f;P2=0xfe;delay(5);P0=0x3f;P2=0xfc;delay(5);P0=0x7f;
P2=0xf8;delay(5);P0=0xff;
for(j=0;j<5;j++) p0123="">5;j++)>
{ P2=table7[j];
delay(5);
} P2=0x1f;P3=0xfe;delay(5);P2=0x3f;P3=0xfc;delay(5);P2=0x7f;
P3=0xf8;delay(5);P2=0xff;
for(j=0;j<5;j++) p0123="">5;j++)>
{ P3=table7[j];
delay(5);
} P3=0x1f;P1=0xfe;delay(5);P3=0x3f;P1=0xfc;delay(5);P3=0x7f;
P1=0xf8;delay(5);P3=0xff;
for(j=0;j<5;j++) p0123="">5;j++)>
{ P1=table7[j];
delay(5);
}P1=0x1f;P0=0xfe;delay(5);P1=0x3f;P0=0xfc;delay(5);P1=0x7f;
P0=0xf8;delay(5);P1=0xff;P0=0xf0;delay(5);
for(j=0;j<4;j++) p0123="">4;j++)>
{ P0=table8[j];
delay(5);
} P0=0x0f;P2=0xfe;delay(5);P0=0x1f;P2=0xfc;delay(5);P0=0x3f;
P2=0xf8;delay(5);P0=0x7f;P2=0xf0;delay(5);P0=0xff;
for(j=0;j<4;j++) p0123="">4;j++)>
{ P2=table8[j];
delay(5);
} P2=0x0f;P3=0xfe;delay(5);P2=0x1f;P3=0xfc;delay(5);P2=0x3f;
P3=0xf8;delay(5);P2=0x7f;P3=0xf0;delay(5);P2=0xff;
for(j=0;j<4;j++) p0123="">4;j++)>
{ P3=table8[j];
delay(5);
} P3=0x0f;P1=0xfe;delay(5);P3=0x1f;P1=0xfc;delay(5);P3=0x3f;
P1=0xf8;delay(5);P3=0x7f;P1=0xf0;delay(5);P3=0xff;
for(j=0;j<4;j++) p0123="">4;j++)>
{ P1=table8[j];
delay(5);
} P1=0x0f;P0=0xfe;delay(5);P1=0x1f;P0=0xfc;delay(5);P1=0x3f;
P0=0xf8;delay(5);P1=0x7f;P0=0xf0;delay(5);P1=0xff;
for(j=0;j<3;j++) p0123="">3;j++)>
{ P0=table9[j];
delay(5);
}P0=0x07;P2=0xfe;delay(5);P0=0x0f;P2=0xfc;delay(5);P0=0x1f;P2=0xf8;delay(5);
P0=0x3f;P2=0xf0;delay(5);P0=0x7f;P2=0xe0;delay(5);P0=0xff;
for(j=0;j<3;j++) p0123="">3;j++)>
{ P2=table9[j];
delay(5);
} P2=0x07;P3=0xfe;delay(5);P2=0x0f;P3=0xfc;delay(5);P2=0x1f;P3=0xf8;delay(5);
P2=0x3f;P3=0xf0;delay(5);P2=0x7f;P3=0xe0;delay(5);P2=0xff;
for(j=0;j<3;j++) p0123="">3;j++)>
{ P3=table9[j];
delay(5);
} P3=0x07;P1=0xfe;delay(5);P3=0x0f;P1=0xfc;delay(5);P3=0x1f;P1=0xf8;delay(5);
P3=0x3f;P1=0xf0;delay(5);P3=0x7f;P1=0xe0;delay(5);P3=0xff;
for(j=0;j<3;j++) p0123="">3;j++)>
{ P1=table9[j];
delay(5);
} P1=0x07;P0=0xfe;delay(5);P1=0x0f;P0=0xfc;delay(5);P1=0x1f;P0=0xf8;delay(5);
P1=0x3f;P0=0xf0;delay(5);P1=0x7f;P0=0xe0;delay(5);P1=0xff;
for(j=0;j<2;j++) p0123="">2;j++)>
{ P0=table10[j];
delay(5);
} P0=0x03;P2=0xfe;delay(5); P0=0x07;P2=0xfc;delay(5);
P0=0x0f;P2=0xf8;delay(5);P0=0x1f;P2=0xf0;delay(5);
P0=0x3f;P2=0xe0;delay(5);P0=0x7f;P2=0xc0;delay(5);P0=0xff;
for(j=0;j<2;j++) p0123="">2;j++)>
{ P2=table10[j];
delay(5);
} P2=0x03;P3=0xfe;delay(5); P2=0x07;P3=0xfc;delay(5);
P2=0x0f;P3=0xf8;delay(5);P2=0x1f;P3=0xf0;delay(5);
P2=0x3f;P3=0xe0;delay(5);P2=0x7f;P3=0xc0;delay(5);P2=0xff;
for(j=0;j<2;j++) p0123="">2;j++)>
{ P3=table10[j];
delay(5);
} P3=0x03;P1=0xfe;delay(5); P3=0x07;P1=0xfc;delay(5);
P3=0x0f;P1=0xf8;delay(5);P3=0x1f;P1=0xf0;delay(5);
P3=0x3f;P1=0xe0;delay(5);P3=0x7f;P1=0xc0;delay(5);P3=0xff;
for(j=0;j<2;j++) p0123="">2;j++)>
{ P1=table10[j];
delay(5);
} P1=0xff;
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(i=0;i<8;i++)>8;i++)>
{ P0=P0<>
P1=P1>>1;
P2=P2>>1;
P3=P3<>
delay(5);
}
P0=0xff;P1=0xff;P2=0xff;P3=0xff;
for(k=0;k<8;k++)>8;k++)>
{ P0=P0>>1;
P1=P1<>
P2=P2<>
P3=P3>>1;
delay(5);
}
}
}
關(guān)于LED,緣緣就說(shuō)完了,對于上面兩個(gè)程序,通過(guò)前面的內容我們已經(jīng)不難理解了,只不過(guò)是多用了幾個(gè)延時(shí),for循環(huán),總線(xiàn)法控制LED等這些程序,所以看這個(gè)程序時(shí),我們要分開(kāi)來(lái)一條條地看,去看看它們都代表著(zhù)啥意思,緣緣祝大家學(xué)得愉快,下節我們將進(jìn)軍數碼管,這個(gè)可與LED也有關(guān)系哦!
補充內容:
關(guān)于code table的問(wèn)題:這就是無(wú)符號字符型表,存儲在程序存儲器(rom)中,不占用隨機存儲器(ram),這樣用是因為令一些不用修改的常值不占用寶貴的ram。若將第一個(gè)值賦給i,就寫(xiě)i=table[0];,和普通的表的用法是一樣的。所以我們要看的就是table[0]{}后面括號中的數值是多少,中括號里面的數字表示后面布大括號中的第幾個(gè)數值,打個(gè)比方:i=table[2]{5,7,9,11,15};那么通過(guò)分析,我們得知,這時(shí)的i就是table大括號中的第三個(gè)數值,因為在C語(yǔ)言中,0表示第一位,所以2就是第三位了,那么我們可以看到,第三位是9,所以i=table[2]{5,7,9,11,15}這條語(yǔ)句的最后含義就是i=9.
了解更多緣緣系列教程請關(guān)注“云漢電子社區”微信公眾號平臺ickeybbs,或者登錄云漢電子社區官網(wǎng)(bbs.ickey.cn)
聯(lián)系客服