日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 大橙子瘋嵌入式


前言

LED燈操作在單片機(jī)開發(fā)中是最常用的功能,通常通過 GPIO 高低電平控制完成各種各樣的亮滅動(dòng)作。

LED燈控制實(shí)現(xiàn)的方式有很多種,這里介紹一種通過bit位控制LED燈亮滅的實(shí)現(xiàn)方式。

介紹

特點(diǎn)

  • 移植方便,只需要實(shí)現(xiàn)硬件 IO 初始化和 IO 狀態(tài)寫入即可

  • 豐富的接口實(shí)現(xiàn),通過這些接口可以實(shí)現(xiàn)亮滅、閃爍、自定義等多種要求的功能

  • 代碼量少,且代碼注釋豐富,風(fēng)格統(tǒng)一,便于閱讀和使用

實(shí)現(xiàn)方式

通過定義一個(gè)變量,將其每個(gè)bit做為控制LED的亮滅狀態(tài),0-滅,1-亮。

代碼中通過定義uint8_t state[LED_STATE_BYTE_NUM];數(shù)組用來(lái)儲(chǔ)存LED的亮滅狀態(tài),因?yàn)楫?dāng)時(shí)LED亮滅沒有復(fù)雜的要求時(shí),可以修改LED_STATE_BYTE_NUM的值,減少內(nèi)存占用;如果亮滅要求很復(fù)雜,那就可以將LED_STATE_BYTE_NUM的值改大,儲(chǔ)存更多的狀態(tài)信息。

為了盡可能地減少bit位的占用,在設(shè)置LED狀態(tài)時(shí)會(huì)計(jì)算出占用bit位的最小的信息。

比如LED周期控制函數(shù)為100ms,理論上設(shè)置500ms間隔閃爍,則需要占用10個(gè)bit,但是增加一個(gè)bit時(shí)間顆粒度變量,只需要占用兩個(gè)bit即可,bit時(shí)間顆粒度變量為500ms。

當(dāng)多個(gè)LED需要配合亮滅時(shí),如流水燈,只需要觀察每個(gè)LED自身時(shí)的狀態(tài)設(shè)置即可

比如五個(gè)燈1秒中完成一次流水燈操作,那么從同一時(shí)刻起每個(gè)燈的狀態(tài)都是周期變化的,根據(jù)這個(gè)周期變化調(diào)用相關(guān)函數(shù)完成設(shè)置即可。

代碼示例

部分使用接口函數(shù)

/************ 普通模式  ***********/ cotLed_SetState(IO_LED_0, IO_LED_OFF); // 設(shè)置燈滅 cotLed_SetState(IO_LED_0, IO_LED_ON); // 設(shè)置燈亮 // 設(shè)置燈亮持續(xù)一秒后熄滅 cotLed_SetStateWithTime(IO_LED_0, IO_LED_ON, 1000); /************ 閃爍模式  ***********/ // 500毫秒進(jìn)行閃爍(亮滅間隔時(shí)間) cotLed_Twinkle(IO_LED_0, 500); // 500毫秒進(jìn)行閃爍3次(一亮一滅為一次),次數(shù)完成后燈滅 cotLed_TwinkleWithCount(IO_LED_0, 500, 3, IO_LED_OFF); /************ 自定義模式  ***********/ // 2 秒內(nèi) 3 次快閃,總共5次,次數(shù)完成后燈滅 cotLed_Custom(IO_LED_0, 5, IO_LED_OFF, 100, -100, 100, -100, 100, -100, -1400, 0); // 2 秒內(nèi) 1 次快閃,無(wú)限制次數(shù) cotLed_Custom(IO_LED_0, 0, 100, -100, -1800, 0); // 5個(gè)燈完成流水燈操作 cotLed_Custom(IO_LED_0, 200, -800, 0);
cotLed_Custom(IO_LED_1, -200, 200, -600, 0);
cotLed_Custom(IO_LED_2, -400, 200, -400, 0);
cotLed_Custom(IO_LED_3, -600, 200,-200, 0);
cotLed_Custom(IO_LED_4, -800, 200, 0);



本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉