?流水燈是學習51單片機的一個基本項目,是我們對單片機IO口輸出認識的基本項目。當然學會了花樣流水燈也很好玩。
下面就分享一種51單片機流水燈制作的方法。
一、流水燈原理圖
二、相關知識
1、while語句
書寫格式:while(表達式) { 語句; //循環(huán)體 。。。 }
備注:當while語句中的()里的值為非零值是,while所帶的語句就會執(zhí)行,為0時程序不執(zhí)行(只有為0值時不執(zhí)行),括號里可以是常量,可以是變量,也可以是一個公式。
我們常用寫法:
(1)while(1){ 語句; } //這樣寫代表了這是一個死循環(huán),{ }中的程序會一直循環(huán)執(zhí)行
(2)while(a--){ 語句; } //這樣寫就是當a每執(zhí)行一次循環(huán)會自減一個數(shù),當a的值減到0了,就不執(zhí)行了。
2、for循環(huán)語句
除了while語句語句之外,c語言還有一個for循環(huán)語句。
書寫格式:for(初始化表達式;條件表達式;增量表達式) { 語句; 。。。 }
常用寫法:
for(i=0;i<8;i++) ?{ ? ? 語句:。。。 ?}
//這樣寫代表了,for語句的{}中的程序循環(huán)執(zhí)行,循環(huán)的次數(shù)由()的內(nèi)容決定,()中的意思是i變量從0開始,到8結(jié)束(不含8),i每次自加1,加到8 了跳出循環(huán)。
3、左移右移指令
運算符 | 意義 | 示例(設j=0x10) | |
<< | 左移(各位同時左移若干位,高位舍棄,低位補零) | k=j<<1;//k=0x20 |
![]() |
>> | 右移(各位同時右移若干位,低位舍棄,高位補零) | k=j>>1;//k=0x08 |
![]() |
4、位取反指令
運算符 | 意義 | 示例(設a=0x25) | |
~ | 按位取反 | c=~a; //c=0xda |
![]() |
5、延時函數(shù)
/*--------微秒延時--------*/
void delay_us(uint z)
{
uint x;
for(x=z;x>0;x--);
}
第一個延時函數(shù)是微秒級延時,程序原理是for語句每循環(huán)一次,單片機執(zhí)行一次空語句,51單片機(接12M晶振)執(zhí)行每次空語句實際不止1us,一般會是幾微秒。
/*--------毫秒延時--------*/
void delay_ms(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
第二個延時函數(shù)是毫秒級延時,其中的兩個for語句成為嵌套訓話語句,下面的for嵌套在上面的for里面執(zhí)行。下面的for代表了循環(huán)執(zhí)行110次空語句,得到一個1ms延時,此時上面的for循環(huán)多少次就延時多少毫秒,而延時多少毫秒由,變量z決定。
三、例程
/*--------------------------- 流水燈接口:P1 ------------------------------*/ #include #define uint unsigned int #define uchar unsigned char /*--------微妙延時--------*/ void delay_us(uint z) { uint x; for(x=z;x>0;x--); } /*--------毫秒延時--------*/ void delay_ms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /*----------主函數(shù)-----------*/ void main() { P0=0x00;P1=0xff;P2=0x00;P3=0x00;//端口初始化,熄滅所有LED燈 uchar i,j; while(1) { j=0x01; for(i=0;i8;i++) //for循環(huán)8次 { P1=~j; //P1等于j位取反 j=j<1; //j左移1位 delay_ms(1000); //等待1秒 } } }
審核編輯 黃宇
?
-
51單片機
+關注
關注
277文章
5711瀏覽量
127451 -
C語言
+關注
關注
180文章
7632瀏覽量
141865 -
流水燈
+關注
關注
21文章
433瀏覽量
60530
發(fā)布評論請先 登錄
新概念51單片機C語言教程入門、提高、開發(fā)、拓展全攻略
低成本單片機方案——觸摸流水燈開關控制

51單片機中為什么很少出現(xiàn)printf的身影

基于51單片機的手動數(shù)字時鐘

基于51單片機的遙控開關仿真(雙機通信)

基于51單片機的跑馬燈/流水燈系統(tǒng)

評論