色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

單片機項目中LED的重要性

jf_pJlTbmA9 ? 來源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-09-18 16:19 ? 次閱讀

很多初學者覺得自己學的東西很基礎,擔心今后實際工作用不到。有初學者問了這樣的問題:單片機真正開發產品和學習的時候有什么差別,平時學的LEDADC這些東西,在實際項目中會用到嗎?

雖然技術更新迭代很快,但有很多基本的技術,仍然在實際項目中會用到,今天就拿LED為例來說說吧。

LED有哪些作用?

別小看LED,它在實際生活中應用很廣泛的。

首先就是以LED為光源的項目,比如呼吸燈、廣告燈、LED顯示屏等,這類控制LED亮滅(閃爍),或者亮度漸變。

再次就是LED背光燈,像液晶背光燈、按鍵背光燈等,這種也是需要控制LED變化的。我之前做過有按鍵的項目,按鍵背光燈需要漸變、配合音效控制LED不同頻率閃爍,目的就是為了達到更好的體驗效果。

再再次,LED作為指示燈,電源指示燈、狀態指示燈,這種就和接近初學者的學習時的LED燈,但這種卻在項目中很常見。

拿狀態指示燈來說,一個項目的LED狀態指示燈可以直觀明了的指示設備的運行狀態,比如:運行、故障、待機、死機等常見狀態。通過RGB,或者紅黃綠不同顏色LED組合,可以實現更多狀態的指示。

下面針對LED狀態燈,說幾點細節的內容。

LED狀態燈實現

這里結合代碼為大家分享一些項目中常見的LED狀態燈的實現方法。

1、單色LED運行狀態指示燈

通過閃爍(一亮一滅)指示設備運行的狀態的指示燈,一個關鍵作用:設備有沒有死機。

很多產品中都會用到,你買一個開發板,提供的綜合例程也基本都有。

裸機情況下(一般狀態機),在某一個狀態實現LED閃爍:

int main(void) { //系統初始化 while(1) { //do something switch(State) { case 狀態1: //do something break; case 狀態2: //do something break; · · · case 狀態燈: ED_TOGGLE(); //LED閃爍 break; } } }

RTOS情況下,新建一個狀態燈線程,在線程里面直接控制即可:

void StatusLight_Task(void *pvParameters) { static TickType_t xLastWakeTime; //初始化 xLastWakeTime = xTaskGetTickCount(); for(;;) { //do something LED_TOGGLE(); //LED閃爍 vTaskDelayUntil( xLastWakeTime, 500); } }

2、單色LED漸變

LED漸變在生活中其實也有一些場景在用,呼吸燈、鍵盤等,其實原來也很簡單,就是控制LED亮度。

控制方法有很多,電壓、PWM都能達到控制LED亮度的效果。當然,現在還有控制LED漸變的專有芯片

但是,對于單片機項目來說,單片機自身就能實現,如果單獨用一個芯片,就顯得有點多余。

使用DAC輸出模擬量可以實現,但如果多路就不現實,因此這種方法不常見。

常見的是PWM控制IO高低電平(從而控制電壓),這種對于單片機來說有兩種方法:

定時器硬件PWM

控制GPIO口高低電平

a、定時器硬件PWM

一個定時器輸出PWM波形的同時,還需要一個定時器定時更新PWM輸出占空比(修改亮度)。

b、控制GPIO口高低電平

這個方法就比較簡單,控制IO口高低電平時間,只是這個時間需要結合整個項目業務邏輯(特別是裸機情況下),不能出現“卡機”情況。

當然,在RTOS情況下,業務邏輯就比較簡單,單獨一個線程:

LED_ON(); vTaskDelay(TimesON); LED_OFF(); vTaskDelay(TimesOFF);

這里TimesON 和 TimesOFF是需要結合項目情況修改的變量(比如漸變時間)。

3、多色LED,多種運行狀態

一個設備在沒有顯示屏指示狀態的時候,通過LED指示狀態也是一種方法,比如:紅、黃、綠三色,分別常滅、常亮、閃爍三種狀態。

這種相對第一種單色固定狀態要復雜一點,但實現起來也不難,方法也有很多。

這里分享一些思路:創建一個線程,一個結構體,輪詢各種LED狀態,根據應用修改其各種狀態,以及閃爍時間等。

LED狀態結構體:

typedef struct { uint8_t Mode; //模式 uint8_t Status; //當前狀態 uint16_t OffTimes; //滅時間 uint16_t OnTimes; //亮時間(ms) uint16_t Counter; //計數(計時) void (*OffFun)(void); //滅函數接口 void (*OnFun)(void); //亮函數接口 }SL_TypeDef; /* 狀態燈 */

LED狀態主線程:

void StatusLight_Task(void *pvParameters) { static TickType_t xLastWakeTime; xLastWakeTime = xTaskGetTickCount(); for(;;) { SL_Scan( sSLG_Structure); //紅燈 SL_Scan( sSLY_Structure); //黃燈 SL_Scan( sSLR_Structure); //綠燈 vTaskDelayUntil( xLastWakeTime, SL_TASK_PERIOD); } }

這里結構體也是方便統一管理,其中SL_Scan瀏覽(掃描)函數的參數通過傳遞結構體指針,是為了方便讀取并修改其中變量。

當然,SL_Scan瀏覽函數具體實現,就與你應用有關:

static void SL_Scan(SL_TypeDef *SL_Struct) { /* 常滅模式 */ if(SL_MODE_OFF == SL_Struct->Mode) { SL_Struct->Status = SL_STATUS_OFF; //狀態置為"滅" SL_Struct->OffFun(); //滅燈 } /* 常亮模式 */ else if(SL_MODE_ON == SL_Struct->Mode) { SL_Struct->Status = SL_STATUS_ON; //狀態置為"亮" SL_Struct->OnFun(); //亮燈 } /* 閃爍模式 */ else if(SL_MODE_FLICKER == SL_Struct->Mode) { /* 在滅狀態 */ if(SL_STATUS_OFF == SL_Struct->Status) { SL_Struct->Counter++; if(SL_Struct->Counter >= SL_Struct->OffTimes) { SL_Struct->Counter = 0; SL_Struct->OnFun(); //亮燈 SL_Struct->Status = SL_STATUS_ON; //狀態置為"亮" } } /* 在亮狀態 */ else if(SL_STATUS_ON == SL_Struct->Status) { SL_Struct->Counter++; if(SL_Struct->Counter >= SL_Struct->OnTimes) { SL_Struct->Counter = 0; SL_Struct->OffFun(); //滅燈 SL_Struct->Status = SL_STATUS_OFF; //狀態置為"滅" } } else { SL_Struct->Status = SL_STATUS_OFF; //狀態置為"滅" } } /* 未知模式 */ else { SL_Struct->Status = SL_STATUS_OFF; //狀態置為"滅" SL_Struct->OffFun(); //滅燈 } }

最后

以上的控制LED的狀態,其實是一個項目中很小的一個模塊,還有更復雜的LED實現和控制方法,相信做過這一塊的同學就比較了解。

當然,LED在項目中是微不足道的一個模塊,但是,如果針對莫個人設計一塊LED的產品,那就意義非凡了。

wKgaomUD9YOAZHufAAQgzNBWJLU314.png

上面這種,相信很多暖(zhi)男都做過,就是不知道,最終那個女孩子感動了沒有?如果感動了,那這個LED項目就是一生中非常重要的項目。

審核編輯:彭菁

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23252

    瀏覽量

    660573
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634642
  • 顯示屏
    +關注

    關注

    28

    文章

    4483

    瀏覽量

    74241
  • adc
    adc
    +關注

    關注

    98

    文章

    6495

    瀏覽量

    544466
收藏 人收藏

    評論

    相關推薦

    Syncer模塊的重要性是什么?

    我在我的項目中使用25G以太網IP。通過打開此IP的示例設計,我們可以看到許多SYNCER模塊,一個FSM模塊和一個流量生成器模塊。我想問一下這些Syncer模塊的重要性是什么,我是否需要在我的最終設計中使用所有syncer模塊。
    發表于 05-18 09:25

    代碼規范的重要性是什么

    論代碼規范的重要性
    發表于 05-19 13:07

    STM32F4時鐘樹的重要性

    STM32F4時鐘樹時鐘是單片機的心臟,重要性不言而喻,STM32F4的時鐘樹是比較復雜的,所以不是一言兩語能寫清楚的,我只簡單的描述下時鐘來源,詳細知識需要去看正點原子的視頻講解。整個時鐘來源有五
    發表于 08-11 07:40

    時鐘對于單片機重要性

    時鐘對于單片機來說是非常重要的,它為單片機工作提供一個穩定的機器周期從而使系統能夠正常運行。時鐘系統猶如人的心臟,一旦有問題整個系統就崩潰。我們知道STM32屬于高級單片機,其內部有很
    發表于 08-12 06:18

    時鐘的重要性

    什么是時鐘?時鐘是單片機運行的基礎,時鐘信號推動單片機內各個部分執行相應的指令。時鐘系統就是CPU的脈搏,決定cpu速率,像人的心跳一樣 只有有了心跳,人才能做其他的事情,而單片機有了時鐘,才能夠
    發表于 08-13 07:31

    Keil5創建51單片機項目中CPU顯示為空怎么解決?

    Keil5創建51單片機項目中CPU顯示為空怎么解決?
    發表于 10-09 08:38

    單片機中斷的重要性

    單片機中斷有什么作用打個比方,你在房間看書,看書這個事是持久的,拖延幾分鐘也沒事。突然淘寶買的衣服送到了,鏢局的人敲門,你用書簽做好標記去開門。拿回衣服,回去繼續看書。這個事的發生過程很正常。同樣
    發表于 11-26 07:34

    arm匯編的重要性是什么?

    arm匯編的重要性是什么?
    發表于 11-30 08:03

    單片機精確計時的重要性

    的。小到手機,大到汽車飛機,現在幾乎只要是電子器件,就有單片機的身影。精確計時的重要性傳感器能夠感知外界環境,可以說是一切智能機器的基礎。實際工程中,常常使用單片機或者控制傳感器工作,或者采集傳感器的...
    發表于 12-07 13:18

    led單片機應用中的重要性

    很多初學者覺得自己學的東西很基礎,擔心今后實際工作用不到。有初學者問了這樣的問題:單片機真正開發產品和學習的時候有什么差別,平時學的LED、ADC這些東西,在實際項目中會用到嗎?雖然技術更...
    發表于 02-23 07:09

    單片機程序架構之時間輪片法程序架構重要性解析

    單片機程序架構—時間輪片法程序架構重要性很多人尤其是初學者在寫代碼的時候往往都是想一點寫一點,最開始沒有一個整體的規劃,導致后面代碼越寫越亂,bug不斷。最終代碼跑起來看似沒有問題(有可能也真的
    發表于 02-24 06:52

    單片機LED有哪些作用

    ? ? 很多初學者覺得自己學的東西很基礎,擔心今后實際工作用不到。有初學者問了這樣的問題: 單片機真正開發產品和學習的時候有什么差別,平時學的LED、ADC這些東西,在實際項目中會用到嗎? ? 雖然
    的頭像 發表于 11-16 15:13 ?5621次閱讀

    Keil5創建51單片機項目中CPU顯示為空

    Keil5創建51單片機項目中CPU顯示為空
    發表于 11-23 16:36 ?12次下載
    Keil5創建51<b class='flag-5'>單片機</b><b class='flag-5'>項目中</b>CPU顯示為空

    單片機項目中LED重要性~

    很多初學者覺得自己學的東西很基礎,擔心今后實際工作用不到。有初學者問了這樣的問題:單片機真正開發產品和學習的時候有什么差別,平時學的LED、ADC這些東西,在實際項目中會用到嗎?雖然技術更...
    發表于 12-29 19:28 ?2次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>項目中</b><b class='flag-5'>LED</b>的<b class='flag-5'>重要性</b>~

    串口在單片機中的重要性

    剛開始學單片機的你,是不是會因用程序把LED點亮而感到高興,會因用程序把數碼管點亮而感到高興。這是好事,這也是想繼續學習下去的動力。
    的頭像 發表于 07-14 16:14 ?1999次閱讀
    主站蜘蛛池模板: 国产成人mv 在线播放| 国产精品嫩草影视在线观看| 国产99热在线观看| 精品国产成人a区在线观看| 美女扒开尿口让男生添动态图| 日本xxxx19| 亚洲色欲色欲WWW在线丝| jiz中国zz| 狠狠色狠狠色狠狠五月ady | 国产亚洲精品久久综合阿香| 麻豆第一区MV免费观看网站 | 97久久超碰中文字幕| 国产白色视频在线观看w| 久久久久久久尹人综合网亚洲| 日韩无码在线| 制服的微热| 国产精品久久久久久无码专区 | 香蕉精品国产高清自在自线| 2019在秋霞理论| 国产亚洲精品线观看不卡| 欧美MV日韩MV国产网站| 亚洲欧美日韩国产另类电影| www黄色com| 久久视频这里只精品99re8久| 桃色园社区| 99免费观看视频| 精品一区二区三区在线成人 | 婷婷久久无码欧美人妻| 777精品久无码人妻蜜桃| 国产真实露脸乱子伦| 强行撕开衣服捏胸黄文| 伊人网伊人网| 国产精品系列在线一区| 欧美人与禽zoz0性伦交app| 一本道高清不卡v免费费| 国产成人ae在线观看网站站 | 国产老头与老太hd| 日本50人群体交乱| 中文字幕网站在线观看| 国产又爽又黄又不遮挡视频| 肉欲横流(NP高H)|