新聞中心

        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

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 翼城县| 辉南县| 台南县| 无棣县| 嘉祥县| 河西区| 德清县| 临沂市| 新宾| 怀仁县| 磐安县| 垫江县| 吴旗县| 高雄县| 澄城县| 延长县| 老河口市| 遵义县| 洪湖市| 湖州市| 土默特左旗| 辽宁省| 屯留县| 隆化县| 常德市| 承德市| 翁源县| 图木舒克市| 永登县| 砀山县| 雅江县| 苏尼特左旗| 龙州县| 盖州市| 蒙城县| 宜春市| 揭阳市| 陆丰市| 钟祥市| 临武县| 潢川县|