本節重點:實現一個LED流水燈程序
預備知識:
一、C語言常用到的預處理命令
1、define
define是宏定義,程序在預處理階段將用define定義的內容進行了替換 。因此在程序運行時,常量表中并沒有用define定義的常量,系統不為它分配內存。
使用#define定義的常量也稱為符號常量,可以提高程序的運行效率。
其常見的用法包括兩種,分別是:
1)#define 宏名 宏值
2)#define 宏名(參數列表)表達式
而define命令的用法一般分為兩種:
第一種語法就是定義符號常量
第二種語法常用來定義符號函數。
舉例說明一下:
#define A 3.14
執行這個條件之后,就是能直接將3.14的數值給到A上。
#define AREA(x,y)(x)*(y)
表示用來求長和寬分別是x和y的矩形的面積。
二、函數循環左移/右移
crol (a,b);循環左移函數,a是左移的值,b是左移的位數。包含在intrins.h庫函數里面。
cror (a,b);循環右移函數,a是右移的值,b是右移的位數。包含在intrins.h庫函數里面
編寫程序:
有了上述的知識儲備之后,我們在編寫一個LED流水燈的程序。
流水燈思路:
首先點亮第一個LED燈,然后延時一段時間,再將當前LED熄滅,然后點亮第二個LED燈,這個過程通過一個函數移動的方式去實現,再延時一段時間,熄滅LED燈,如此往復的循環下去,就能實現一個LED燈的流水視覺。
(本此實驗LED燈組采用的是共陰極接法,也就是說需要單片機引腳輸出一個1,才會使得LED燈點亮)
程序編寫:
#include< reg52.h > //頭文件
#include< intrins.h > //頭文件
typedef unsigned char u8; //定義類型
typedef unsigned int u16;
#define led P2 //定義LED燈組使用的是P2的八個引腳
void delay(u16 i) //延時函數delay
{
while(i--);
}
void main()
{
u8 i=0; //定義變量i
led=0x01; //設置LED燈組的初始狀態值(0000 0001,使用的是共陰極)
delay(50000);
while(1)
{
for(i=0;i< 7;i++) //for循環函數,初始值i為0,滿足i< 7的條件,每次循環一次執行i自加1
{
led=_crol_(led,1); //LED左移函數,每次執行for循環執行一次函數移動
delay(50000);
}
for(i=0;i< 7;i++)
{
led=_cror_(led,1); //LED右移函數,每次執行for循環執行一次函數移動
delay(50000);
}
}
}
-
led
+關注
關注
242文章
23295瀏覽量
661268 -
C語言
+關注
關注
180文章
7605瀏覽量
136995 -
流水燈
+關注
關注
21文章
433瀏覽量
59732 -
程序
+關注
關注
117文章
3788瀏覽量
81097 -
命令
+關注
關注
5文章
685瀏覽量
22043
發布評論請先 登錄
相關推薦
評論