0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)中LED有哪些作用

Q4MP_gh_c472c21 ? 來源:嵌入式專欄 ? 作者:strongerHuang ? 2021-11-16 15:13 ? 次閱讀

很多初學(xué)者覺得自己學(xué)的東西很基礎(chǔ),擔(dān)心今后實(shí)際工作用不到。有初學(xué)者問了這樣的問題:單片機(jī)真正開發(fā)產(chǎn)品和學(xué)習(xí)的時候有什么差別,平時學(xué)的LED、ADC這些東西,在實(shí)際項(xiàng)目中會用到嗎? 雖然技術(shù)更新迭代很快,但有很多基本的技術(shù),仍然在實(shí)際項(xiàng)目中會用到,今天就拿LED為例來說說吧。

01

LED有哪些作用?

別小看LED,它在實(shí)際生活中應(yīng)用很廣泛的。

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

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

再次是LED作為指示燈,電源指示燈、狀態(tài)指示燈,這種就和接近初學(xué)者的學(xué)習(xí)時的LED燈,但這種卻在項(xiàng)目中很常見。

拿狀態(tài)指示燈來說,一個項(xiàng)目的LED狀態(tài)指示燈可以直觀明了的指示設(shè)備的運(yùn)行狀態(tài),比如:運(yùn)行、故障、待機(jī)、死機(jī)等常見狀態(tài)。通過RGB,或者紅黃綠不同顏色LED組合,可以實(shí)現(xiàn)更多狀態(tài)的指示。

下面針對LED狀態(tài)燈,說幾點(diǎn)細(xì)節(jié)的內(nèi)容。

02

LED狀態(tài)燈的實(shí)現(xiàn)

這里結(jié)合代碼為大家分享一些項(xiàng)目中常見的LED狀態(tài)燈的實(shí)現(xiàn)方法。

單色LED運(yùn)行狀態(tài)指示燈:

通過閃爍(一亮一滅)指示設(shè)備運(yùn)行的狀態(tài)的指示燈,一個關(guān)鍵作用:設(shè)備有沒有死機(jī)

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

裸機(jī)情況下(一般狀態(tài)機(jī)),在某一個狀態(tài)實(shí)現(xiàn)LED閃爍:

int main(void){//系統(tǒng)初始化  while(1)  {//dosomething    switch(State)    {      case 狀態(tài)1:        //do something      break;
      case 狀態(tài)2:        //do somethingbreak;      ·      ··      case 狀態(tài)燈:        ED_TOGGLE();  //LED閃爍      break;    }  }}
RTOS情況下,新建一個狀態(tài)燈線程,在線程里面直接控制即可:

?

void StatusLight_Task(void *pvParameters){staticTickType_txLastWakeTime;//初始化xLastWakeTime=xTaskGetTickCount();  for(;;){//dosomething    LED_TOGGLE();   //LED閃爍    vTaskDelayUntil(&xLastWakeTime, 500);  }}

03

單色LED漸變

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

控制方法有很多,電壓、PWM都能達(dá)到控制LED亮度的效果。當(dāng)然,現(xiàn)在還有控制LED漸變的專有芯片

但是,對于單片機(jī)項(xiàng)目來說,單片機(jī)自身就能實(shí)現(xiàn),如果單獨(dú)用一個芯片,就顯得有點(diǎn)多余。 使用DAC輸出模擬量可以實(shí)現(xiàn),但如果多路就不現(xiàn)實(shí),因此這種方法不常見。 常見的是PWM控制IO高低電平(從而控制電壓),這種對于單片機(jī)來說有兩種方法:

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

b. 控制GPIO口高低電平:這個方法就比較簡單,控制IO口高低電平時間,只是這個時間需要結(jié)合整個項(xiàng)目業(yè)務(wù)邏輯(特別是裸機(jī)情況下),不能出現(xiàn)“卡機(jī)”情況。

當(dāng)然,在RTOS情況下,業(yè)務(wù)邏輯就比較簡單,單獨(dú)一個線程:

LED_ON();vTaskDelay(TimesON);LED_OFF();vTaskDelay(TimesOFF);
這里TimesONTimesOFF是需要結(jié)合項(xiàng)目情況修改的變量(比如漸變時間)。

04

多色LED,多種運(yùn)行狀態(tài)

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

這種相對第一種單色固定狀態(tài)要復(fù)雜一點(diǎn),但實(shí)現(xiàn)起來也不難,方法也有很多。

這里分享一些思路:創(chuàng)建一個線程,一個結(jié)構(gòu)體,輪詢各種LED狀態(tài),根據(jù)應(yīng)用修改其各種狀態(tài),以及閃爍時間等。

LED狀態(tài)結(jié)構(gòu)體:

typedef struct{uint8_tMode;//模式  uint8_t  Status;                //當(dāng)前狀態(tài)  uint16_t OffTimes;              //滅時間  uint16_t OnTimes;               //亮?xí)r間(ms)uint16_tCounter;//計(jì)數(shù)(計(jì)時)  void (*OffFun)(void);           //滅函數(shù)接口  void (*OnFun)(void);            //亮函數(shù)接口}SL_TypeDef;/* 狀態(tài)燈 */

LED狀態(tài)主線程:

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

這里結(jié)構(gòu)體也是方便統(tǒng)一管理,其中SL_Scan瀏覽(掃描)函數(shù)的參數(shù)通過傳遞結(jié)構(gòu)體指針,是為了方便讀取并修改其中變量。 當(dāng)然,SL_Scan 瀏覽函數(shù)具體實(shí)現(xiàn),就與你應(yīng)用有關(guān):
static void SL_Scan(SL_TypeDef *SL_Struct){  /* 常滅模式 */  if(SL_MODE_OFF == SL_Struct->Mode)  {    SL_Struct->Status = SL_STATUS_OFF;           //狀態(tài)置為"滅"    SL_Struct->OffFun();                         //滅燈  }  /* 常亮模式 */  else if(SL_MODE_ON == SL_Struct->Mode)  {    SL_Struct->Status = SL_STATUS_ON;            //狀態(tài)置為"亮"    SL_Struct->OnFun();                          //亮燈  }  /* 閃爍模式 */  else if(SL_MODE_FLICKER == SL_Struct->Mode)  {    /* 在滅狀態(tài) */    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;        //狀態(tài)置為"亮"      }    }    /* 在亮狀態(tài) */    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;       //狀態(tài)置為"滅"      }    }    else    {      SL_Struct->Status = SL_STATUS_OFF;         //狀態(tài)置為"滅"    }  }  /* 未知模式 */  else  {    SL_Struct->Status = SL_STATUS_OFF;           //狀態(tài)置為"滅"    SL_Struct->OffFun();                         //滅燈  }}

05

最后

以上的控制LED的狀態(tài),其實(shí)是一個項(xiàng)目中很小的一個模塊,還有更復(fù)雜的LED實(shí)現(xiàn)和控制方法,相信做過這一塊的同學(xué)就比較了解。 當(dāng)然,LED在項(xiàng)目中是微不足道的一個模塊,但是,如果針對莫個人設(shè)計(jì)一塊LED的產(chǎn)品,那就意義非凡了。

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

責(zé)任編輯:haq


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    23004

    瀏覽量

    655215
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6026

    文章

    44459

    瀏覽量

    631233
  • 光源
    +關(guān)注

    關(guān)注

    3

    文章

    687

    瀏覽量

    67686

原文標(biāo)題:只會用單片機(jī)點(diǎn)燈,很丟人嗎?

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)燒錄程序的線比單片機(jī)上的少還能燒錄嗎

    的存儲器通常分為兩類:ROM(只讀存儲器)和RAM(隨機(jī)存取存儲器)。ROM用于存儲程序代碼,而RAM用于存儲程序運(yùn)行過程的數(shù)據(jù)。燒錄過程就是將程序代碼寫入ROM。 單片機(jī)燒錄方法 單片機(jī)
    的頭像 發(fā)表于 09-02 09:54 ?302次閱讀

    單片機(jī)復(fù)位電路的電容是什么電容?

    單片機(jī)復(fù)位電路的電容是一種特殊類型的電容,通常被稱為“去耦電容”或“旁路電容”。這種電容的主要作用是在單片機(jī)的電源線路中提供一個低阻抗的路徑,以便在電源電壓發(fā)生瞬變時,能夠迅速地吸收
    的頭像 發(fā)表于 08-06 10:31 ?497次閱讀

    單片機(jī)POV LED流水燈制作

    電子發(fā)燒友網(wǎng)站提供《單片機(jī)POV LED流水燈制作.docx》資料免費(fèi)下載
    發(fā)表于 05-28 14:34 ?3次下載

    單片機(jī)抗干擾措施哪些?

    電磁干擾(EMI)問題日益成為影響單片機(jī)穩(wěn)定性與可靠性的主要障礙。因此,探討和實(shí)施有效的抗干擾措施對于提高單片機(jī)系統(tǒng)的性能至關(guān)重要。下面為大家簡單介紹一種單片機(jī)抗干擾措施
    的頭像 發(fā)表于 03-15 16:36 ?1865次閱讀
    <b class='flag-5'>單片機(jī)</b>抗干擾措施<b class='flag-5'>有</b>哪些?

    單片機(jī)晶振電路原理及作用 51單片機(jī)晶振怎么接

    單片機(jī)是一種集成電路芯片,內(nèi)部包含了微處理器核心、存儲器和各種周邊接口電路。晶振是單片機(jī)工作的時鐘源,為單片機(jī)提供穩(wěn)定的時鐘信號。在單片機(jī)的設(shè)計(jì)
    的頭像 發(fā)表于 01-24 15:14 ?6763次閱讀

    單片機(jī)最小系統(tǒng)包含哪幾部分 單片機(jī)最小系統(tǒng)的作用

    單片機(jī)最小系統(tǒng)包含以下幾部分:單片機(jī)芯片、時鐘電路、復(fù)位電路、電源電路、外圍電路和連接接口等。 單片機(jī)芯片:單片機(jī)是整個系統(tǒng)的核心部分,負(fù)責(zé)數(shù)據(jù)處理和控制任務(wù)。常見的
    的頭像 發(fā)表于 01-24 10:40 ?1.4w次閱讀

    單片機(jī)最小系統(tǒng)的作用 單片機(jī)最小系統(tǒng)包含哪幾部分

    單片機(jī)最小系統(tǒng)是指能夠獨(dú)立工作的最基本的硬件組成,也是單片機(jī)的必備基礎(chǔ)。它的作用是為單片機(jī)提供工作所需的最基本的資源和功能,使單片機(jī)能夠正常
    的頭像 發(fā)表于 01-18 13:54 ?3666次閱讀

    單片機(jī)為何需要Flash和EEPROM?它們作用

    單片機(jī)為何需要Flash和EEPROM?它們作用單片機(jī)是一種集成電路,具有處理器核心、內(nèi)存和外設(shè)等功能,通常用于嵌入式系統(tǒng)。Fla
    的頭像 發(fā)表于 01-18 11:43 ?3166次閱讀

    單片機(jī)編程實(shí)例介紹

    單片機(jī)(Microcontroller)是指內(nèi)部集成了處理器核心、存儲器、輸入輸出接口和外圍設(shè)備接口等功能模塊的集成電路芯片。它具有體積小、功耗低、性能高等優(yōu)點(diǎn),被廣泛應(yīng)用于嵌入式系統(tǒng)。單片機(jī)編程
    的頭像 發(fā)表于 01-16 09:37 ?2508次閱讀

    sbit在單片機(jī)作用和用法

    sbit在單片機(jī)作用和用法。 一、sbit的作用和意義 在單片機(jī),每個IO引腳都有特定的寄
    的頭像 發(fā)表于 12-20 09:35 ?1.5w次閱讀

    單片機(jī)并行是什么意思

    單片機(jī)的并行是指能夠同時執(zhí)行多個操作或指令的能力。傳統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu),處理器通常是按照順序執(zhí)行指令,即一條指令執(zhí)行完畢后再執(zhí)行下一條指令。而在單片機(jī)
    的頭像 發(fā)表于 12-20 09:33 ?1081次閱讀

    單片機(jī)boot腳干嘛的

    單片機(jī)boot腳是單片機(jī)的引導(dǎo)腳,用于控制單片機(jī)的啟動和引導(dǎo)過程。在單片機(jī)系統(tǒng),boot腳的作用
    的頭像 發(fā)表于 12-19 09:47 ?8777次閱讀

    pic單片機(jī)匯編程序?qū)嵗?/a>

    。 以下是一個簡單的PIC單片機(jī)匯編程序示例,這個程序?qū)?shí)現(xiàn)一個LED閃爍的功能。 配置PIC單片機(jī)的引腳 在PIC單片機(jī),每個引腳都可以
    的頭像 發(fā)表于 12-14 11:01 ?1620次閱讀

    單片機(jī)系統(tǒng)控制器的組成和作用?

    單片機(jī)系統(tǒng)控制器的組成和作用
    發(fā)表于 11-03 07:03

    如何實(shí)現(xiàn)基于單片機(jī)的鍵盤檢測

    鍵盤是單片機(jī)與用戶交互設(shè)備之一,用戶通過鍵盤輸入數(shù)據(jù)或命令到單片機(jī)。最簡單的鍵盤僅有一個按鍵,復(fù)雜一些的鍵盤多個按鍵。在單片機(jī)的外圍電路
    的頭像 發(fā)表于 10-31 14:39 ?1633次閱讀
    如何實(shí)現(xiàn)基于<b class='flag-5'>單片機(jī)</b>的鍵盤檢測