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

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

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

3天內不再提示

單片機中LED有哪些作用

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

很多初學者覺得自己學的東西很基礎,擔心今后實際工作用不到。有初學者問了這樣的問題:單片機真正開發產品和學習的時候有什么差別,平時學的LEDADC這些東西,在實際項目中會用到嗎? 雖然技術更新迭代很快,但有很多基本的技術,仍然在實際項目中會用到,今天就拿LED為例來說說吧。

01

LED有哪些作用?

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

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

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

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

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

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

02

LED狀態燈的實現

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

單色LED運行狀態指示燈:

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

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

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

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

?

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

03

單色LED漸變

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

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

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

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

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

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

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

04

多色LED,多種運行狀態

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

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

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

LED狀態結構體:

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

LED狀態主線程:

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);  }}

這里結構體也是方便統一管理,其中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();                         //滅燈  }}

05

最后

以上的控制LED的狀態,其實是一個項目中很小的一個模塊,還有更復雜的LED實現和控制方法,相信做過這一塊的同學就比較了解。 當然,LED在項目中是微不足道的一個模塊,但是,如果針對莫個人設計一塊LED的產品,那就意義非凡了。

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

責任編輯:haq


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

    關注

    242

    文章

    23252

    瀏覽量

    660580
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634653
  • 光源
    +關注

    關注

    3

    文章

    703

    瀏覽量

    67767

原文標題:只會用單片機點燈,很丟人嗎?

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

收藏 人收藏

    評論

    相關推薦

    單片機在物聯網作用

    隨著技術的飛速發展,物聯網已經成為連接物理世界與數字世界的橋梁。物聯網設備通過互聯網相互連接,實現數據的收集、處理和傳輸,從而提高效率、降低成本并增強用戶體驗。在這一過程單片機作為物聯網設備
    的頭像 發表于 11-01 14:27 ?541次閱讀

    單片機編程語言哪些選擇

    單片機(Microcontroller Unit,MCU)編程是指為單片機編寫程序的過程,這些程序控制單片機的行為和功能。單片機廣泛應用于嵌入式系統,如家用電器、汽車電子、工業控制等領
    的頭像 發表于 11-01 14:13 ?500次閱讀

    十天學會單片機可能嗎?單片機入門需要多久?

    一下,單片機的入門其實并沒有想象那么難。對于那些一定編程基礎,尤其是C語言基礎的學習者來說,入門的過程可能僅需幾天。例如,有人可能在三天內就掌握了
    的頭像 發表于 09-05 08:00 ?1001次閱讀
    十天學會<b class='flag-5'>單片機</b>可能嗎?<b class='flag-5'>單片機</b>入門需要多久?

    單片機燒錄程序的線比單片機上的少還能燒錄嗎

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

    單片機復位電路的電容是什么電容?

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

    單片機POV LED流水燈制作

    電子發燒友網站提供《單片機POV LED流水燈制作.docx》資料免費下載
    發表于 05-28 14:34 ?3次下載

    單片機抗干擾措施哪些?

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

    單片機編程和plc編程什么區別

    單片機編程和PLC編程是兩種不同的嵌入式系統開發領域。在這篇文章,我們將詳細探討這兩種編程方式的區別。首先,我們將簡要介紹單片機和PLC的基本概念,然后分析它們的不同特點和使用場景。 一、
    的頭像 發表于 02-22 10:23 ?2705次閱讀

    單片機的最小系統由什么組成 單片機的最小系統包括哪些

    Unit,CPU)、存儲器、輸入輸出接口電路等核心功能,常見的單片機以8051為代表的8位單片機、PIC系列單片機和AVR系列單片機等。
    的頭像 發表于 02-02 11:27 ?1.1w次閱讀

    在PIC單片機振蕩電路如何選擇晶體?

    需要了解晶體在振蕩電路作用。晶體是一種能夠產生穩定頻率的諧振器裝置,它通過在晶體傳播的機械振動產生電壓信號,并將其轉換為穩定的電壓波形。在PIC單片機振蕩電路
    的頭像 發表于 01-31 09:28 ?621次閱讀

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

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

    單片機最小系統包含哪幾部分 單片機最小系統的作用

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

    單片機最小系統的作用 單片機最小系統包含哪幾部分

    單片機最小系統是指能夠獨立工作的最基本的硬件組成,也是單片機的必備基礎。它的作用是為單片機提供工作所需的最基本的資源和功能,使單片機能夠正常
    的頭像 發表于 01-18 13:54 ?4019次閱讀

    單片機為何需要Flash和EEPROM?它們作用

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

    單片機編程實例介紹

    單片機(Microcontroller)是指內部集成了處理器核心、存儲器、輸入輸出接口和外圍設備接口等功能模塊的集成電路芯片。它具有體積小、功耗低、性能高等優點,被廣泛應用于嵌入式系統單片機編程
    的頭像 發表于 01-16 09:37 ?2613次閱讀
    主站蜘蛛池模板: 欧美xxxxb| 中文字幕在线永久| 国产成人精品综合在线| 强伦姧久久久久久久久久| 中文字幕乱码一区AV久久| 国产在线精品一区二区在线看| 失禁 调教 刺激 哭喊男男| xx顶级欧美熟妞xxhd| 美女动态图真人后进式| 孕妇泬出白浆18P| 久久人人玩人妻潮喷内射人人| 亚洲综合国产精品| 黄色a一级视频| 性欧美金发洋妞xxxxbbbb| 国产免费麻传媒精品国产AV| 性饥渴姓交HDSEX| 婚后被调教当众高潮H喷水| 亚洲国产欧美日韩在线一区| 好色女博士| 一二三四视频免费社区5| 麻豆高清免费国产一区| 99久久re6热精品首页| 嗯啊快停下我是你老师啊H| 97人妻中文字幕免费视频| 日韩欧无码一区二区三区免费不卡 | 国产剧情麻豆mv| 亚洲视频免费| 内射人妻无码色AV麻豆去百度搜| 拔萝卜电视剧高清免费| 亚洲 日韩 色 图网站| 麻豆人妻换人妻X99| 国产360激情盗摄全集| 在线播放av欧美无码碰| 青青草原伊人| 国产热久久精| www在线小视频免费| 亚洲区偷拍自拍29P| 日本精油按摩| 精品高潮呻吟99AV无码| yellow日本动漫免费观看| 啪啪啪社区|