新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機系列連載2—美麗的發(fā)光二極管

51單片機系列連載2—美麗的發(fā)光二極管

作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/201611/322434.htm

法二:使用數(shù)組

#include

unsignedchartable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

voidyanshi();

voidmain()

{unsignedinti;

while(1)

{

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

{P1=table[i];(注意,在這里的大括號是一定要加的,否則你就out了)

yanshi();

}}}

voidyanshi()

{unsignedinti;

for(i=0;i<10000;i++);}

法三:左移右移

#include

unsignedchartable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

unsignedinti;

voidyanshi();

voidmain()

{P1=0xfe;

while(1)

{P1=P1<<1;

P1=P1|0x01;(因為是左移而不是循環(huán)左移,所以要末位置一,這樣的結(jié)果也會導(dǎo)致最后只挨個量一次)

yanshi();}

}

voidyanshi()

{unsignedinti;

for(i=0;i<10000;i++);}

其實想想并不是很難,就是賦值控制亮滅,主要是記住延時那個函數(shù),最后調(diào)用就可以了,在這個基礎(chǔ)上再拓展一下,雙燈左移右移閃爍,也就是雙燈左移7次,右移7次,然后全閃7次,程序如下:

#include

voidDelay(unsignedinti);

voidmain()

{unsignedchari;

unsignedchartemp;

while(1)

{temp=0xfc;

P1=temp;

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

Delay(50000);

{temp<<=1;

temp=temp|0x01;

P1=temp;}之所以加入temp做中間變量,防止直接操作端口造成的短暫閃爍

Temp=0x3f;

P1=temp;

For(i=0;i<7;i++)

{Delay(50000);

Temp>>=1;

Temp|=0x80;

P1=temp;}

For(i=0;i<3;i++)

P1=0xff;

Delay(50000);

P1=0x00;

Delay(50000);}

}}

voidDelay(unsignedinti)

{

while(--i);

}

這么一分析,發(fā)光二極管真的很簡單,賦值端口,控制亮滅,延時,調(diào)用函數(shù),基本上就可以了,最重要的是c語言簡單知識的一些規(guī)范,這都是入門的,不難理解,細心一些就好了,個人覺得比較好的還是自己寫程序去調(diào)試,調(diào)試次數(shù)多了,自然而然就熟悉了,孰能生巧,對很多事情都是亙古不變的真理,學(xué)習(xí)更是如此。


上一頁 1 2 下一頁

關(guān)鍵詞: 51單片機發(fā)光二極

評論


技術(shù)專區(qū)

關(guān)閉