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