單片機小製作,LED小燈瓶

2021-01-07 電子工程師小李

有一天在網上看到一個製作——LED電子螢火蟲,我感覺電路很有特點,於是就想仿製一個。那個LED電子螢火蟲用的是ATtiny13單片機來控制,我也正好有。而且硬體製作比較簡單,成本也不高,10元錢都不到,就能DIY一個。雖然簡單,但是製作卻需要耐心和細心,畢竟需要連接12個LED,焊接的工作量不少,我自己用了一個下午才完成,而程序更是陸陸續續地寫了幾個小時。

估計你會很好奇地問,一共才6個可用I/O引腳的 ATtiny13,怎麼能驅動12個LED呢?其實,我要告訴你,它不僅可以點亮每個LED,而且還能控制每個LED的亮度呢!這才是本次製作的精華。在製作的過程中,發生了一點小小的意外。由於我購買的JST充電線和原來的充電器引腳相反,致使我原本打算使用的小型鋰電池損壞,不能充電。在萬般無奈的情況下,我只好更換體積更大的鋰電池了。

主要材料

圖6.1 製作所需的主要材料

這次的主要元器件就是ATtiny13單片機和12個LED。當然還有雙絞線、洞洞板、電池、空瓶子、電阻等其他輔助材料,如圖6.1所示。

本製作使用的是8個引腳的ATtiny13單片機,這款單片機現在的價格很便宜,4元左右就能買到。ATtiny13 是AVR 單片機,它有1KB 的 Flash、64B 的EEPROM、64B 的SRAM、6 個通用I/O口線、32個通用工作寄存器、1個具有比較模式的8位定時器/計數器、片內/外中斷、4路10位ADC、具有片內振蕩器的可編程看門狗定時器,以及3種可以通過軟體進行選擇的省電模式。12個LED為普通的3mm發黃色光的LED。

製作過程

1 焊接單片機插座。

2 焊接兩個電阻。

3 雙絞線套入熱縮管後,焊接LED。焊接好後,用打火機加熱熱縮管,使其收縮固定。最後,別忘了再扭下熱縮管。

4 焊接好的12個LED。

5 雙絞線焊接到洞洞板上。

6 洞洞板和雙絞線焊接好的效果。

7 焊接JST插頭、鋰電池和開關。

8 在瓶子上開口。

9 用熱熔膠固定。

10 裝入瓶子中。

控制原理

為什麼6個I/O能控制12個LED呢?它們之間會不會相互影響呢?其實,這樣的連接方式不僅能控制每個LED,還能控制其亮度呢!之所以能這樣連接,是因為AVR單片機的每個I/O都是3態輸出。如果用普通51單片機,這樣連接是不行的。

那麼又是如何控制LED的亮度呢?控制亮度的關鍵是ATtiny13的兩路PWM,它們可以分別設置連接到PB0和PB1引腳上。在ATtiny13使用內部振蕩器的情況下,PWM的最高頻率可設置為47.5kHz。而且PWM的極性可以通過設置寄存器而改變,這使得12個LED亮度的控制更加簡單了。

先談談如何控制每個LED單獨的亮和滅。ATtiny13的每個I/O都有4種狀態,即輸出0狀態、輸出1狀態、高阻態(懸空態)、帶上拉電阻的高阻態。要使LED亮,必須要讓LED中流過正向的電流,如果要讓最左邊的LED亮,PB1輸出1、PB2輸出0即可。但是,其他不相關的引腳需要設置成高阻態。否則,如果PB0此時也為1的話,第2個LED也會亮。總之,為了保證其他LED不受到影響,在設置某個燈亮時,必須先把所有I/O設置成不帶上拉的高阻態。

能控制亮和滅有什麼了不起?呵呵,其實還能控制每個LED單獨的漸變,就是漸漸變亮,漸漸變暗。我舉個例子吧,如果要最左邊的LED漸漸變亮,就先設置PB2引腳為0電平,PB1引腳設置為高電平驅動的PWM波。然後,程序逐漸控制PB1的PWM狀態,通過調整PWM高電平的脈寬長度來實現亮度控制。當PWM高電平的時間長時,LED就變亮了。反之,LED就變暗了。

那麼電路原理圖(見圖6.2)中第7個反過來接的LED怎麼實現亮度控制呢?原理還是一樣,只是PB2將剛才的0電平設置成1電平,原來PB1為高電平脈衝驅動的PWM波設置成低電平脈衝驅動的PWM波即可。同樣,要控制第7個LED的亮度,就控制PWM低電平的脈寬長度,當低電平的脈寬長度長時,LED就變亮了。反之,LED就變暗了。

圖6.2 控制電路原理圖

那麼能實現所有的LED同時發光嗎?製作過程中,這個功能的實現倒是困擾了我一會兒。後來,我想到了動態掃描。什麼是動態掃描?老式電視機不就是這個原理嗎?電視機通過磁場讓射線高速地掃描屏幕,從而產生一幅畫面。那麼,讓每個燈分別亮1ms左右,然後像電視機一樣不斷地掃描,看上去就都亮了。在此基礎上,再控制每個燈的亮度數值,就能實現整體亮度控制了。如果LED足夠多,單片機引腳也足夠多,還可能顯示一副灰度畫面呢!

3種效果的程序編寫

程序的PWM頻率設置為最高的37.5kHz。之所以選擇這麼高的頻率是為了不影響動態掃描。試想,如果PWM頻率為100Hz,那麼還怎麼動態掃描呢?在程序中,動態掃描實際的頻率為62Hz。這已經足夠騙過人的眼睛,讓我們看不到燈的閃爍。

在單片機的中斷代碼中,程序每過26s就會產生溢出中斷一次,通過變量count計數中斷次數。當中斷的次數達到50次時,就更換下一個LED,顯示它對應的亮度。LED的亮度存儲到led[ ]這個數組中,每個LED通過載入對應的亮度值,即通過改變PWM產生寄存器的OCR0A與OCR0B,來實際控制高低電平脈寬長度,最終實現亮度的控制。當然,每次通過PWM控制亮度,都要先根據LED的驅動電平方式,重新設置PWM的控制模式。在此之前,還要記得設置不相關的引腳為高阻態。

LED的3種效果控制程序能夠實現LED不斷地變換,只要調用就能分別實現如下功能:所有LED的呼吸效果、逐個點亮和熄滅LED、LED流水顯示的效果。從編程的思路上講,led[ ]數組存放了12個元素,每個元素所存內容,即對應每個LED燈亮度值。要改變某個LED燈亮度,都是通過設置led[ ]數組中對應元素的 PWM 緩衝數值來實現自動變換。要讓所有的燈全亮只需設置數組中的每個元素的數值都為255即可。如果要一半的亮度就設置為128。要讓某個燈單獨最亮,只要設置這個LED元素數值為255,其他的元素為0。如果任意LED要產生漸漸變亮的效果,那麼只要對應數組元素中的數值從0逐漸變為255即可。同理,漸漸變暗,數值就從255變成0。要實現什麼樣的效果,大家可以通過改變led[ ]數組來實現。

相關焦點

  • 單片機小製作,紅外遙控版LED球泡燈
    記得1年前我家孩子剛出生那會兒,我給老婆買了個小夜燈插在牆壁上。每當小孩哭的時候就打開那個小燈給孩子餵奶、換尿布。之後的一段時間,每次半夜都還要起床開燈,感覺有點麻煩。於是,下面的這個小製作便產生了——紅外搖控球泡燈,它只需要用自己家裡的搖控器,對著燈的方向,按任意按鈕,即可實現開、關LED燈泡。這樣,老婆自己就可以拿著遙控器開、關燈泡了。
  • 51單片機系列之2點亮第一個led燈
    點亮led燈簡單的理解就是要求陽極高電平陰極低電平。接下來我們去看看單片機的原理圖,找到led模塊。如圖可以看到led的陽極是連接的VCC(電源高電平)陰極連接的接口是單片機的I/O口P20到P27.要想led點亮只需控制單片機I/O口輸出低電平即可(單片機I/O口默認高電平)。接下來就是如何編寫程序並燒錄到單片機中了。
  • 單片機LED小燈泡
    一、方案以80C52單片機為控制核心,所用8個LED燈,晶振電路和復位電路,採用模塊化的設計方案,運用LED彩燈、彙編程序來實現彩燈的閃爍,當開關開啟後,4個LED燈在單片機控制系統中,大體上可以分為數據處理過程控制兩個基本類型數據處理包括數據的採集,數字濾波。標度變換等。
  • 51單片機-最小系統-流水燈-仿真
    打開APP 51單片機-最小系統-流水燈-仿真 Easadon 發表於 2020-05-26 16:00:42 現在開始學習單片機的仿真了,一般用的都是Proteus軟體 第一次使用,先畫了一個單片機最小系統練練手,加上流水燈代碼,做一個簡單的實驗, 在此把流程做一個簡單的介紹 1.建立工程之後,選擇相應的設備,所需要的設備如圖所示,大家自行添加
  • 51單片機入門:LED燈實現不同頻率閃爍
    在上一篇文章中,我們用51單片機實現了單個LED燈的閃爍,但閃爍頻率固定的。下面我們實現LED燈不同頻率的閃爍!
  • 一些LED燈小知識
    led燈是一塊電致發光的半導體材料晶片,用銀膠或白膠固化到支架上,然後用銀線或金線連接晶片和電路板,四周用環氧樹脂密封,起到保護內部芯線的作用,最後安裝外殼,所以 LED 燈的抗震性能好。LED可以直接發出紅、黃、藍、綠、青、橙、紫、白色的光。led燈廠家環保,沒有汞的有害物質。LED燈泡的組裝部件可以非常容易的拆裝,不用廠家回收都可以通過其它人回收。無頻閃。
  • 雙十一廠家直銷輕奢小客廳智能led吸頂燈
    雙十一廠家直銷輕奢小客廳智能led吸頂燈簡化的服務和特徵層次結構。與對象屬性不同,服務和特徵不是由字符串標識的。 每個服務和特性都有一個的UUID,長度為16 位或128位。嚴格的說,16 位 UUID 是為標準保留的,但幾乎沒有人遵循這一規則。 後,每個值都是一個字節數組。 藍牙中沒有樣式繁多的數據類型。讓我們看一個實際的藍牙設備:Mipow Playbulb Sphere。
  • 51單片機玩轉物聯網基礎篇02-點亮LED燈,實現跑馬燈效果
    前言上一節,我們完成了51單片機開發環境的搭建,本節我們正式學習51單片機,程式語言的學習,通常是從第一個&34;開始,而點燈實驗便是單片機學習的開始。一、基礎知識1.單片機最小系統一個最小的單片機系統,需要有單片機、電源電路、晶振電路、復位電路組成,這幾部分存在就可以使單片機正常工作,如果需要頻繁的下載程序,還需增加下載電路。
  • DIY:工程師親自製作LED浪漫小夜燈(圖)
    這裡小編就來給他們平反,工程師們也浪漫,瞧,這一盞LED浪漫的小夜燈,不是給浪漫添了不少分數。工程師們還不趕快動起來,做一個送給心儀的她?  LED浪漫的小夜燈,總是女孩子房間必不可少的迷你電器,誰說工程師們就不懂浪漫呢?這些創意都是工程師親自製作,還不趕快來看看,送一個給心儀的她~!
  • DIY:聲控LED球泡燈製作
    導讀:聲光控延時開關不僅適用於住宅區的樓道,同時也適用於生活小區、工廠、辦公樓、教學樓的樓道等公共場所,它具有體積小、外形美觀、製作容易、工作可靠等優點,適合廣大電子愛好者自製。下面我簡要的介紹一下目前最為簡單實用的LED聲控球泡燈。
  • 單片機LED燈花式閃爍電路圖及程序
    在點亮LED燈的程序中我們知道開發板上的LED燈是接到高電平的,如果單片機引腳輸出電平,LED導通發亮。
  • led燈與平米參照表 如何選購LED燈
    相信大家都知道是led燈,它安裝在每個家庭中的角落中,它不僅小巧精緻,而且光照顏色也非常好。今天小編給大家介紹下led燈與平米參照表,如何選購LED燈?接下來我們跟著小編一起來看看吧!一、led燈與平米參照表1、首先led燈型號,使用功率不同它的價格也有所不同,像led日光燈管它有14瓦,9瓦,led燈泡有3瓦,6瓦,射燈有6瓦,12瓦,16瓦等。而有的廠商生產出來的商品它在使用功率上也不一定。
  • COB小間距LED是什麼
    本文作者:大元智能cob封裝的小間距led顯示屏,點間距輕鬆實現1.0mm以下,是目前點間距最小的led顯示屏系列。、1.2、1.25、1.5、1.8.、2.0....與led小間距相比,輕易實現1.0mm以下點間距,這是led小間距和COB小間距兩者之間封裝方式不一樣導致的,led小間距是SMD封裝,cob小間距是cob封裝。
  • 客廳大燈led燈條怎麼換 led燈的壽命是多長
    led燈具有節能性好、環保安全的優勢,但難免使用久了之後,也會發生一些故障,如led燈條損壞。遇到這種情況應及時檢修,防止影響到led燈的正常使用。那麼,下面小編就來介紹下客廳大燈led燈條怎麼換。客廳大燈led燈條怎麼換隻需要購買一樣瓦數的燈條更換即可,利用幾粒螺絲,將燈條固定好就可以,非常的簡單,但是通常燈條是不易損壞的,應先確定驅動是否有問題再購買燈條,否則更換之後也會燒壞或是沒亮。
  • LED燈的51單片機pwm控制實例
    我們知道 51單片機本身是沒有pwm接口的,這個程序是通過軟體模擬pwm.在一定的頻率的方波中,調整高電平和低電平的佔空比,即可實現LED燈亮度控制
  • 滷素燈和led燈的區別 滷素燈和led燈有什麼區別
    受經濟因素影響,現在的車主對於車的要求從最初的代步,到現在的節能、舒適、安全等一系列高要求,所以現在的廠商也在車上下了大功夫,燈就是其中之一,以前的滷素燈,大都換成了led燈,所以兩種燈有什麼不同呢?下面讓我們來看看滷素燈和led燈的區別吧。
  • 70個貼片LED,MEGA SIZE獨角獸加燈製作
    怎麼說呢,MEGA SIZE尺寸的噴塗一下確實很效果要好很多,但是客戶就想要加燈,那麼就來看看單獨加燈的大獨角效果是什麼樣的吧。,可以充電的,充滿電點亮時常1個小時以上,全身精神骨架+噴口+眼睛+監視器用了超過70個LED燈。
  • Led燈閃爍是什麼原因 led燈壞了怎麼維修
    點擊藍色字免費訂閱,每天收到這樣的好信息商務合作請聯繫QQ:3350579506    小編微信  ha7777110
  • led燈10w夠亮嗎 led燈的原理
    對於燈這方面它的類型比較多,除了有節能燈之外,還有led燈等一些類型,一般的話,我們會根據自己家裡的需求去選擇它的類型,在這裡大家要看一下led燈10w夠亮嗎,購買燈最主要考慮的就是亮度的問題,如果不亮的話安在家裡也沒有用,與此同時,關於led燈的原理是什麼。以下是詳細介紹。
  • DIY LED小燈聖誕樹
    這個更像是一個手工作品,而不是一個電子製作, 即使你沒有電路知識也可以放心製作。 實測點亮一個圖中的LED小燈最少需要1.6V的電壓,承受2.1V電壓時都還能正常發光。新的9V碳性電池輸出電 壓為10V,理論上每個小燈承受2.5V電壓。但實際上在電池上並聯了4組LED之後,新電池的工作電壓下降到了8.6V,所以平攤到每個LED上也就 2.1V左右。