在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

基于51單片機設計的呼吸燈

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-06-10 08:36 ? 次閱讀

一、項目介紹

呼吸燈是一種常見的LED燈光效果,它可以模擬人類呼吸的變化,使燈光看起來更加柔和和自然。51單片機是一種廣泛使用的微控制器,具有體積小、功耗低、成本低等優點,非常適合用于控制LED呼吸燈。本項目的呼吸燈將使用PWM(脈沖寬度調制)技術控制LED亮度,從而實現呼吸燈的效果。

在本項目中,將使用51單片機作為主控制器,通過編程實現呼吸燈的控制。將使用C語言編寫代碼,并使用Keil C51集成開發環境進行編譯和調試。使用Proteus仿真軟件進行電路設計和仿真,確保電路的正確性和穩定性。

image-20230606214353670

二、設計原理

2.1 PWM技術

PWM是脈沖寬度調制(Pulse Width Modulation)的縮寫,是一種通過改變脈沖寬度來控制電路的技術。在數字電路中,PWM是一種非常常見的技術,它可以用來控制電機、LED燈等電子設備的亮度、速度等參數

PWM技術的基本原理是通過控制脈沖的寬度和周期來控制電路的輸出。在一個PWM周期內,電路會以一定的頻率(也就是PWM頻率)產生一系列脈沖,每個脈沖的寬度和高電平時間占整個周期的比例是由控制器根據需要設定的。通過這種方式,可以實現對電路輸出的精確控制。

在LED呼吸燈項目中,使用定時器模擬PWM技術可以實現呼吸燈效果。具體來說,就是通過定時器產生一定頻率的脈沖信號,然后通過改變脈沖的占空比來控制LED燈的亮度。當脈沖的占空比逐漸增大時,LED燈的亮度也會逐漸增強,直到達到最大亮度;當脈沖的占空比逐漸減小時,LED燈的亮度也會逐漸減弱,直到最終熄滅。這樣就可以實現類似于人類呼吸的漸變效果。

2.2 呼吸燈原理

呼吸燈是一種將 LED 燈光做成漸變效果的技術,可以讓 LED 的亮度在一定時間內慢慢地增加和減小,使得 LED 的亮度變化更加自然和柔和,適合用于需要漸變效果的場景,如燈光調節、音響節拍等。

呼吸燈的原理是通過改變 LED 的 PWM 信號的占空比來控制 LED 的亮度。PWM(Pulse Width Modulation,脈寬調制)是一種調節模擬信號幅度的常用技術,它通過改變信號的脈沖寬度來實現對信號幅度的調節。在呼吸燈中,PWM 信號的頻率較高,而占空比則會隨著時間的推移而逐漸變化,從而實現 LED 亮度的漸變效果。

呼吸燈的實現通常需要使用一個定時器和一個 PWM 模塊。定時器用來定時觸發中斷事件,在中斷處理函數中改變 PWM 信號的占空比,從而控制 LED 的亮度。在定時器中斷處理函數中,可以通過數學函數(如正弦、余弦等)或者簡單的數值計算來得到不同的 PWM 占空比,實現不同的呼吸燈效果。

2.3 51單片機

51單片機是一種廣泛使用的微控制器,具有體積小、功耗低、成本低等優點,非常適合用于控制LED呼吸燈。

STC89C52是一種基于MCS-51內核的8位單片機,由中國的STC公司生產。具有高性價比、易于編程、廣泛應用等特點,在工業控制通信、家電控制等領域得到了廣泛應用。

STC89C52單片機的主要特點如下:

  1. 采用MCS-51內核,具有8位數據總線和16位地址總線,可以訪問64KB的程序存儲器和64KB的數據存儲器。
  2. 內置12MHz的晶振,可以通過軟件設置分頻系數來獲得不同的系統時鐘頻率。
  3. 具有多種外設接口,包括UART、SPI、I2C、定時器、中斷等,可以方便地實現各種應用。
  4. 支持ISP(In-System Programming)編程方式,可以通過串口或并口進行在線編程,方便快捷。
  5. 具有低功耗模式,可以通過軟件設置進入不同的睡眠模式,以節省系統能耗。

STC89C52單片機可以使用C語言或匯編語言進行編程,編寫的程序可以通過編譯器生成HEX文件,然后通過編程器燒錄到芯片中。由于STC89C52單片機的廣泛應用和豐富的資料,因此學習和使用它相對來說比較容易。

三、代碼實現

3.1 自動呼吸燈

因為STC89C52單片機沒有PWM輸出功能,只能使用延時函數實現,以下是基于STC89C52單片機實現呼吸燈效果的完整代碼:

#include < reg52.h >
 ?
 #define LED P1
 ?
 void delay(unsigned int xms)
 {
     unsigned int i, j;
     for (i = xms; i > 0; i--)
         for (j = 110; j > 0; j--);
 }
 ?
 void main()
 {
     unsigned char i;
     while (1)
     {
         for (i = 0; i < 255; i++)
         {
             LED = i;
             delay(10);
         }
         for (i = 255; i > 0; i--)
         {
             LED = i;
             delay(10);
         }
     }
 }

在這個代碼中,使用了STC89C52單片機的P1口來控制LED燈的亮度。通過一個循環,讓LED燈的亮度從0到255逐漸增加,再從255到0逐漸減小,這樣就實現了呼吸燈的效果。

在代碼中,使用了一個delay函數來控制循環的速度。這個函數可以讓程序延時一定的時間,從而控制LED燈的亮度變化速度。在這個代碼中,設置了每次延時10毫秒,可以根據需要調整這個值來改變呼吸燈的效果。

3.2 按鍵控制燈光亮度

以下是基于STC89C52單片機的LED燈亮度控制完整代碼,其中使用了兩個按鍵分別控制LED的亮度和滅度。

#include < reg52.h >
 ?
 #define LED P1
 ?
 sbit KEY_UP = P3 ^ 2;
 sbit KEY_DOWN = P3 ^ 3;
 ?
 unsigned char pwm = 0;
 ?
 void delay(unsigned int i) {
     while (i--);
 }
 ?
 void key_scan() {
     if (KEY_UP == 0) {
         delay(1000);
         if (KEY_UP == 0) {
             pwm += 10;
             if (pwm >= 100) {
                 pwm = 100;
             }
         }
     }
     if (KEY_DOWN == 0) {
         delay(1000);
         if (KEY_DOWN == 0) {
             pwm -= 10;
             if (pwm <= 0) {
                 pwm = 0;
             }
         }
     }
 }
 ?
 void main() {
     TMOD = 0x01; // 設置定時器0為模式1
     TH0 = 0xFC; // 定時器初值,用于產生PWM信號的頻率為50Hz
     TL0 = 0x67;
     TR0 = 1; // 啟動定時器0
     ET0 = 1; // 允許定時器0中斷
     EA = 1; // 開啟總中斷
     while (1) {
         key_scan();
     }
 }
 ?
 void timer0() interrupt 1 {
     static unsigned char cnt = 0;
     if (cnt >= 100) {
         cnt = 0;
     }
     if (cnt < pwm) {
         LED = 0;
     } else {
         LED = 1;
     }
     cnt++;
 }

以上代碼中,使用了定時器0來產生PWM信號,控制LED的亮度。使用了兩個按鍵來調整LED的亮度和滅度。其中,KEY_UP按鍵用于增加LED的亮度,KEY_DOWN按鍵用于減小LED的亮度。在每次定時器中斷時,根據pwm的值來控制LED的亮度。當cnt小于pwm時,LED為低電平,LED亮度較高;當cnt大于等于pwm時,LED為高電平,LED亮度較低。

審核編輯:湯梓紅

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

    關注

    242

    文章

    23291

    瀏覽量

    661170
  • 單片機
    +關注

    關注

    6037

    文章

    44562

    瀏覽量

    635768
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5190

    瀏覽量

    214085
  • 51單片機
    +關注

    關注

    274

    文章

    5704

    瀏覽量

    123689
  • 呼吸燈
    +關注

    關注

    10

    文章

    110

    瀏覽量

    42751
收藏 人收藏

    評論

    相關推薦

    51單片機呼吸程序設計

    51單片機呼吸程序設計是基于單片機的原理與接口設計,采用單片機I/O口,加以C語言編程實現LE
    發表于 07-14 07:54

    基于51單片機呼吸怎樣設計

    課程設計報告書題目:基于51單片機呼吸設計信息工程學院課程設計任務書學 號1學生姓名專業(班級)設計題目基于51
    發表于 07-15 08:01

    如何利用51單片機實現呼吸的設計?

    如何利用51單片機實現呼吸的設計?
    發表于 10-19 06:24

    51單片機呼吸的實現源程序

    51單片機呼吸的實現,源程序,hex文件都有,用到的led是共陰極的
    發表于 12-10 16:35 ?169次下載

    使用51單片機做一個簡易呼吸的程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機做一個簡易呼吸的程序免費下載。
    發表于 04-01 08:00 ?1次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>做一個簡易<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>的程序免費下載

    使用單片機設計的呼吸程序免費下載

    本文檔的主要內容詳細介紹的是使用單片機設計的呼吸程序免費下載。
    發表于 08-02 17:34 ?2次下載
    使用<b class='flag-5'>單片機設</b>計的<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>程序免費下載

    使用51單片機設計LED點陣呼吸效果程序免費下載

    本文檔的主要內容詳細介紹的是使用51單片機設計LED點陣呼吸效果程序免費下載。
    發表于 07-04 17:41 ?20次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機設</b>計LED點陣<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>效果程序免費下載

    使用51單片機設計心形LED的原理圖免費下載

    本文檔的主要內容詳細介紹的是使用51單片機設計心形LED的原理圖免費下載。
    發表于 06-28 08:00 ?11次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機設</b>計心形LED<b class='flag-5'>燈</b>的原理圖免費下載

    使用51單片機實現的呼吸工程文件免費下載

    本文檔的主要內容詳細介紹的是使用51單片機實現的呼吸工程文件免費下載。
    發表于 09-03 08:00 ?13次下載
    使用<b class='flag-5'>51</b><b class='flag-5'>單片機</b>實現的<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>工程文件免費下載

    51單片機設計簡易交通

    **51單片機設計簡易交通**單片機好難啊 (好像學啥都難。。。)皮毛也沒學到設計簡陋(尷尬)不過通過自己的學習做出了一點東西 雖然很簡陋 但還是很讓人開心啊使用Proteus設計電
    發表于 11-04 11:21 ?40次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機設</b>計簡易交通<b class='flag-5'>燈</b>

    51單片機 呼吸 七彩呼吸

    呼吸”。(4) 按鍵3按下時,恢復起始亮法。1 先做一個呼吸由易到難,先做一個呼吸呼吸
    發表于 11-12 11:51 ?59次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b> <b class='flag-5'>呼吸</b><b class='flag-5'>燈</b> 七彩<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>

    51單片機基于定時器的精準呼吸

    51單片機基于定時器的精準呼吸設計目的:實現LED小從最暗到最亮再到最暗的循環顯示最暗——最亮——最暗整個周期為2.88秒(符合
    發表于 11-21 09:51 ?50次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>基于定時器的精準<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>

    51單片機心形實現旋轉呼吸流水編程

    51單片機心形實現旋轉呼吸流水編程
    發表于 11-23 16:20 ?23次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>心形<b class='flag-5'>燈</b>實現旋轉<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>流水編程

    基于51單片機呼吸程序編寫

    利用51單片機編寫的呼吸小程序,實驗程序內容截圖分享~
    發表于 11-23 16:36 ?33次下載
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機</b>的<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>程序編寫

    51單片機呼吸頻率怎么調節

    51單片機呼吸頻率的調節方法可以通過改變PWM(脈沖寬度調制)的工作周期和占空比來實現。在下面的文章中,我將詳細介紹如何使用51
    的頭像 發表于 12-19 10:39 ?2640次閱讀
    主站蜘蛛池模板: 丁香花在线观看免费观看| 国产一级片免费| 亚洲欧美经典| 美女牲交视频一级毛片| 成人看片在线观看| 成人永久免费视频网站在线观看| 国产高清一区二区三区四区| 免费看一级大片| 色婷婷亚洲精品综合影院| 天天操天天干天天爱| 高清人人天天夜夜曰狠狠狠狠| 欧美日韩国产成人精品| 亚洲 欧美 丝袜 制服 在线| 日本aaaaa特黄毛片| 欧美熟夫| 国产精品福利在线观看免费不卡| 手机看片福利视频| 午夜大片免费完整在线看| 国产高清在线看| 亚洲午夜久久久精品影院| 97福利| 爆操极品美女| 国产一级特黄高清在线大片| 岛国午夜| 日日干夜夜草| 免费一级在线| 1024久久| 999久久久免费精品国产牛牛| 欧美成人全部费免网站| 天堂中文网| 国产在线观看www鲁啊鲁免费| 视频在线观看高清免费大全| 欧美一级特黄aaaaaa在线看片 | 性色在线播放| 欧美瑟瑟| 美女网色| 久久综合色视频| 久久香蕉国产线看观看精品yw| 青草青视频在线观看| 欧美一级片网站| 成人丁香婷婷|