單片機LED燈花式閃爍電路圖及程序

2021-01-16 暢學單片機

在點亮LED燈的程序中我們知道開發板上的LED燈是接到高電平的,如果單片機引腳輸出電平,LED導通發亮。如果單片機引腳輸出高電平,LED截止熄滅。知道這個原理後我們把單片機的P0埠的8個引腳都按照同樣的方法接上8個LED燈,這樣我們就能玩出更多的花樣啦。

流水燈電路原理圖


1、所有LED燈亮滅閃爍


先來一個簡單的,先全部點亮和全部熄滅,間隔500ms,上次我們點亮LED燈的程序中我們只操作了P0埠的一位P0.0,現在只需要將原來操作一個埠的一位更改為操作操作整個埠即可。


將P0口定義為一個宏定義,方便後續理解。


#define LED P0


將原來的LED操作函數


void LedDisplay(unsigned char num)


{


Led0 = num;


}


更改為:


void LedDisplay(unsigned char num)


{


LED = num;


}


該函數傳入的形參剛好是8bit的無符號整型數據,對應P0口的8個bit,P0.0為最低位。也就是說我們只需要改變LED操作函數傳入的形參,P0口對應的8個LED燈狀態就能對應改變。所以,我們需要實現全部LED燈的亮滅操作,全都LED點亮,形參傳入16進位的0X00,P0口所有引腳置為低電平,延時後熄滅所有的LED燈,LED燈操作函數傳入形參0XFF,P0埠所有引腳置為高電平。需要將主函數中對應做如下修改。


void main()


{


for(;;)


{


LedDisplay(0x00);


delay_ms(500);


LedDisplay(0xFF);


delay_ms(500);


}


}


2、間隔一個LED交替閃爍


根據上面我們實現所有LED亮滅的操作方法,如果要實現間隔一個LED交替閃爍,我們只需要更改傳入的LED形參即可。對應為8bit的二進位數據為1010 1010為奇數的LED燈點亮,對應二進位為0101 0101為偶數的LED點亮。轉化為16進位就是0xAA和0x55。我們對應修改主函數程序如下。編譯下載到單片機,你會神奇地發現這時候已經有流水的效果了。


void main()


{


for(;;)


{


LedDisplay(0xAA);


delay_ms(500);


LedDisplay(0x55);


delay_ms(500);


}


}


3、從低位到高位依次點亮

從上面我們已經知道原理了,一次點亮的話我們需要給P0口依次賦值0xFE、0xFD、0xFB、0xF7、0xEF、0xDF、0xBF、0x7F。那我們有沒有更簡單一下的方法呢,有的,我們發現上面的數據取反後是0x01、0x02、0x04、0x08、0x10、0x20、0x40、0x80。然後0x02等於0x01向左移動一位,也就是說上面所有的數據可以用0x01通過移位和取反兩個操作得到。

我們先定義一個全局變量並且初始值賦值0x01


unsigned char dat = 0x01;


在主函數中循環操作,循環一次移位一次。過更改延時函數的傳入的形參大小可以調節流水的速度


void main()


{


unsigned char i;


for(;;)


{


dat = 0x01;


for(i=0;i<8;i++)


{


LedDisplay(~dat);


delay_ms(500);


dat = dat<<1;


}


}


}


給大家講解了一下LED流水燈的原理和一些基本的操作方法,可以通過更改傳入的數據和延時的時間,實現更多的流水燈樣式。

為了方便大家更好的學習,您還可以關注暢學電子和EDA的公眾號,每天推送相關知識,希望能對你的學習有所幫助!

相關焦點

  • 51單片機入門:LED燈實現不同頻率閃爍
    在上一篇文章中,我們用51單片機實現了單個LED燈的閃爍,但閃爍頻率固定的。下面我們實現LED燈不同頻率的閃爍!
  • 單片機小製作,LED小燈瓶
    有一天在網上看到一個製作——LED電子螢火蟲,我感覺電路很有特點,於是就想仿製一個。那個LED電子螢火蟲用的是ATtiny13單片機來控制,我也正好有。而且硬體製作比較簡單,成本也不高,10元錢都不到,就能DIY一個。雖然簡單,但是製作卻需要耐心和細心,畢竟需要連接12個LED,焊接的工作量不少,我自己用了一個下午才完成,而程序更是陸陸續續地寫了幾個小時。
  • 你用過單片機嗎?不一樣的寫法讓燈閃爍
    什麼是單片機?單片機又稱單片微控制器,它不是完成某一個邏輯功能的晶片,而是把一個計算機系統集成到一個晶片上。相當於一個微型的計算機,和計算機相比,單片機只缺少了I/O設備。單片機是一種集成電路晶片,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調製電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的微型計算機系統,概括的講:一塊晶片就成了一臺計算機。
  • 51單片機系列之2點亮第一個led燈
    點亮led燈簡單的理解就是要求陽極高電平陰極低電平。接下來我們去看看單片機的原理圖,找到led模塊。如圖可以看到led的陽極是連接的VCC(電源高電平)陰極連接的接口是單片機的I/O口P20到P27.要想led點亮只需控制單片機I/O口輸出低電平即可(單片機I/O口默認高電平)。接下來就是如何編寫程序並燒錄到單片機中了。
  • 單片機快速入門實驗:控制LED閃爍發光
    如果說初學計算機編程,最簡單的入門程序是在屏幕上顯示「Hello world!」的話,那麼學習單片機最簡單的入門實驗就是控制發光二極體(LED)閃爍發光。P89LPC900系列單片機是近幾年出現的新一代80C51內核單片機,許多人都想學習,並希望應用到自己的產品設計中。下面我就以控制LED閃爍發光這個最簡單的實驗為例,帶領大家入門。
  • SAM4E單片機之旅——1、LED閃爍之空循環
    最近因為導師要寫一本關於SAME4單片機的書籍,而我也作為一個嵌入式的初學者看了這本書。現在也讓我寫寫幾個小的程序,做做示例。既然寫了文檔之類的,就發到博客上來吧。本文引用地址:http://www.eepw.com.cn/article/201701/342708.htm  目前關於這晶片能參考的書籍大概就只有英文手冊了。用的板子是SAM4E16E。
  • 單片機LED小燈泡
    一、方案以80C52單片機為控制核心,所用8個LED燈,晶振電路和復位電路,採用模塊化的設計方案,運用LED彩燈、彙編程序來實現彩燈的閃爍,當開關開啟後,4個LED燈>為一組,自上而下依次閃爍,系統框圖如下:二、程序設計程序設計(Programming)
  • 單片機控制的密碼鎖設計(含電路圖及源程序)
    中斷服務程序只要實現三個狀態的計時,待機時需要計時5秒,密碼正確需要計時5s,密碼3次輸入錯誤需要計時15秒。當前處於何種計時,由主程序根據密碼判斷結果來決定。(2)選擇單片機型號和所需外圍器件型號,設計單片機硬體電路原理圖採用MCS51系列單片機At89S51作為主控制器,外圍電路器件包括數碼管驅動、蜂鳴器的輸出驅動、獨立式鍵盤以及發光二極體的輸出等。
  • Led燈閃爍是什麼原因 led燈壞了怎麼維修
    led燈開的時候,會發出各種各色的光,非常的漂亮,許多人都忠愛led燈,那led燈閃爍是什麼原因,我們大家應該都會注意到,當我們把led燈關了之後,會發現led燈一閃一閃的,這是怎麼回事呢?led燈閃爍是什麼原因,許多人都對這個問題比較感興趣,led燈壞了怎麼維修,今天小編就為大家講講,一起學習吧!
  • 用一個ne555晶片使5個藍色led燈一起閃爍
    電路圖。原理很簡單,555晶片與左側的電阻、電容構成一個低頻振蕩電路,3腳按一定的頻率交替輸出高低電平,右側的5個藍色led燈就會按一定的節奏閃爍。用熱熔膠將公頭尾部粘接固定在洞洞板左側邊緣中間,尾部最上面的插腳是電源正極,最下面的插腳是電源負極。把晶片4腳和8腳連接在一起,再連接電源正極。把1腳連接電源負極。
  • 電子節能燈是led燈嗎 電子節能燈電路原理圖
    電子節能燈是目前世界上最新的光源,這種燈的使用壽命非常長,使用的電量非常小,所以現在很多業主家中都會安裝電子節能燈,但是這種燈的價格比普通燈的價格要貴一些,那麼到底購買電子節能燈到底值不值得呢,接下來我們就一起來了解一下電子節能燈是led燈嗎,
  • 51單片機玩轉物聯網基礎篇02-點亮LED燈,實現跑馬燈效果
    一、基礎知識1.單片機最小系統一個最小的單片機系統,需要有單片機、電源電路、晶振電路、復位電路組成,這幾部分存在就可以使單片機正常工作,如果需要頻繁的下載程序,還需增加下載電路。(2) 電源電路單片機系統需要5V電壓供電,直接輸入的電壓不太穩定性,需要電路穩壓,同時點亮LED2,可以通過LED2的亮滅初步觀察系統運行情況,正常運行情況,LED2常亮。
  • led燈打開後不停閃爍是什麼原因 led燈如何選擇
    燈,而led燈它佔有很多優勢,也受到人們的喜愛。有很多人在安裝LED燈以後出現燈不停在閃爍,在晚上開啟使會覺得非常嚇人。那麼led燈打開後不停閃爍是什麼原因?led燈如何選擇?接下來我們跟著小編一起來了解吧!
  • 51單片機之計時器與計數器
    LED燈從0-7逐個顯示,然後再從7-0逐個顯示。如果產生外部中斷(即按鈕按下),則8個LED燈全亮,之後又恢復流水燈狀態。創新:顯示效果可以是閃爍;靜止;平移等。任務區分:A——每隔1s閃爍1次B——循環平移,速度自定.單片機源程序如下:#include <reg52.h>sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit KEY   = P3^5;unsigned int cnt,m,stage,sec=1000;unsigned char code
  • 幾種常用的LED閃爍電路分享,最後一個十分經典
    如何設計一個閃爍頻率為2Hz的閃光電路?閃爍頻率為2HZ,則閃爍周期為T=1/f=0.5s,即500ms,也就說要求LED燈500ms閃爍一次,即平均1s閃爍兩次。可實現的方式有很多,下面列舉幾種常用的例子供大家參考。
  • 單片機小製作,紅外遙控版LED球泡燈
    製作所需材料這次製作的主要元器件有:ATtiny13單片機、紅外一體接收頭和NMOS管,見圖4.1。還有一些製作時使用到的輔料,如穩壓晶片、萬用板、插座、絕緣導線等。具體零件清單如表4.1所示。單片機的PB1引腳和紅外一體化接收頭相連接,當遙控器對著接收頭按下按鈕時,PB1就會有一個低電平。一般遙控器發出的紅外調製信號,會讓一體化接收頭產生9ms的低電平(大多數),作為遙控編碼的引導條件。通過計算低電平的持續時間,來判斷是否接收到了正確的紅外信號。電路原理圖如圖4.2所示。
  • 用幾個分立元件使三個LED燈交替閃爍
    先來一張電路圖吧。這是一個典型的多諧振蕩電路,利用三極體本身製造的差異,不可能同一時間導通,有先後順序,這樣就可以產生不斷循環的飽和和截止。材料:三個470Ω電阻、三個10k電阻、三個發光二極體、三個100uF電容、三個1815三極體。
  • 單片機小白學步(4) 模擬電路、傳統數字電路與單片機
    傳統數字電路和單片機數字電路的介紹就到此為止,在原理篇中會有更詳細的介紹。事實上,單片機的本質也是數字電路。下面我們要說的傳統數字電路,指的是除單片機這類可編程器件以外的數字電路。下面我們來看看單片機和傳統數字電路的區別。
  • 想知道led吸頂燈閃爍故障解決方法,應先排查led吸頂燈閃爍的原因
    led吸頂燈憑藉自身亮度高,造價便宜的優點,已經走進很多人的家庭裡面,雖然led吸頂燈已經是所有燈具裡面故障率最低的一種燈具了,但是故障率低不代表沒有故障,所以有時候led吸頂燈也會出現閃爍的問題,有時候還會一直閃不停,那這種問題應該怎麼解決呢,今天我們就來討論一下led吸頂燈閃爍故障解決方法
  • Arduino基礎入門篇06——流動的LED燈
    上一篇介紹了Arduino數字I/O引腳及相關函數,並點亮了板載LED燈。本篇將使用麵包板搭建電路,多個LED燈配合顯示流動效果。1. 實驗材料Uno R3開發板配套USB數據線麵包板及配套連接線6個LED燈6個220Ω電阻2.