新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機利用LED宏,控制LED等的亮度

        51單片機利用LED宏,控制LED等的亮度

        作者: 時間:2018-08-01 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201808/384871.htm

        經常用led燈來觀察現象,甚至調試代碼,修改代碼時用0和1很不方便,而且閱讀性也不好,利用個宏,用起來方便些。

        今天嘗試控制燈的亮度. 先試試for循環控制,占空比調節...

        c代碼

        //#include my51.h

        #include

        typedef unsigned char u8;

        typedef unsigned short int u16;

        #ifndef _51_

        #define _51_

        #define led P1 //P1總線連8個led燈,燈連573鎖存器,P1置低電平點亮

        #define led

        #define ON(x) P1(~(1(x))) //打開某個燈,開多個燈用 ON(m) ON(n)

        #define OFF(x) P1|(1(x)) //關閉某個燈,關多個燈用 OFF(m)| OFF(n)

        #define on(x) ON(x) //包含大小寫

        #define off(x) OFF(x)

        #define ledon 0 //某個燈,打開

        #define ledoff 1 //某個燈,關閉

        sbit led0=P1^0;

        sbit led1=P1^1;

        sbit led2=P1^2;

        sbit led3=P1^3;

        sbit led4=P1^4;

        sbit led5=P1^5;

        sbit led6=P1^6;

        sbit led7=P1^7;

        sbit ledLock=P2^5; //鎖定當前8個led的狀態,0鎖定 ,1不鎖定

        #endif

        void ledCtr(u8 ledX,u8 per) //參數1是某個燈,參數2是亮度

        {

        u8 i=1;

        for(i=1;i=100;i++)

        {

        if(i

        {

        led=on(ledX) ; //打開燈

        }

        else

        {

        led=off(ledX); //關閉燈

        }

        }

        }

        void delayms(u16 ms) //毫秒級軟延時函數

        {

        u16 i,j;

        for(i=ms;i>0;i--)

        {

        for(j=113;j>0;j--)

        {}

        }

        }

        void main() //測試

        {

        led6=ledon; //打開6號燈,亮度100%

        led=on(0); //打開0號燈,亮度100%

        led=on(1) on(5); //打開1號和5號燈,亮度100%

        delayms(2000);

        led0=ledoff; //關閉0號燈

        led=off(6)|off(1)|off(5);//關閉1,5,6號燈

        while(1)

        {

        ledCtr(2,5); //僅打開2號燈,亮度5%, 省電...

        }

        }



        關鍵詞: 51單片機 LED

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 七台河市| 靖州| 罗定市| 喀什市| 洱源县| 延寿县| 阳春市| 班戈县| 神池县| 云梦县| 钦州市| 日喀则市| 哈巴河县| 宽甸| 尼勒克县| 湟中县| 嘉义县| 昌平区| 司法| 武邑县| 三穗县| 威信县| 凌云县| 武义县| 北票市| 庄浪县| 东莞市| 铜山县| 南郑县| 上思县| 洮南市| 郁南县| 吉木乃县| 保康县| 边坝县| 徐州市| 利津县| 青神县| 新乐市| 吉林市| 连城县|