久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 33201|回復: 13
打印 上一主題 下一主題
收起左側

教你使用一個單片機IO口控制RGB彩燈,單總線LED燈使用教程

  [復制鏈接]
跳轉到指定樓層
樓主
相信大家學習單片機的第一課就是點亮第一盞LED燈了吧,初次點亮LED的時候的心情肯定是很激動的,可以操控眼前這個小小的芯片完成自己編寫的指令,頓時感覺到很奇妙。初次了解之后便會激發我們的探索精神,當學習了PWM之后,控制RGB彩燈隨意調出千變萬化的顏色肯定不再是難事,用在各種項目上,RGB燈會讓作品更加鮮艷動人。在這美麗的背后,其實隱藏了很多的科學道理,RGB燈的顏色能千變萬化的原因是因為其內部集成了3個獨立的3原色燈珠,然后使用PWM波控制每個燈珠處在不同的亮度,便可以得到不同的色彩。但是一個RGB燈可能會占用多個端口,想控制很多個RGB燈便是有些難度,好在隨著集成工藝的發展,這一切不再是問題,如今的工藝促使了一種新型燈珠的出現,那就是單總線LED。
簡單點來說就是這種類型的燈珠內置了一個驅動電路,它控制著燈珠發出的顏色,并且有一個數據輸入口,意味著我們可以往在這個燈珠里面輸入數據,然后燈珠內部的電路就會驅動的燈珠發出我們想要的顏色。這個電路呢還有一個數據的輸出口,也就是說它可以將接受到的數據再次發送出去,送給下一個燈珠的輸入,所以這使得所有的燈珠都可以連在一起,只需要使用一個IO口控制,這就相比傳統的RGB燈節省了很多的端口。
這種類型的燈珠主要的核心就在它里面集成的那樣一個驅動電路,這種類型的驅動電路有很多種,例如常見的WS2811,2812,SK6812等等,所以用其制作完成的燈珠一般都使用驅動電路的名字來命名。對于燈珠的大小型號呢,則有很多種類,例如5050,3535以及2020等封裝,大家搜索的時候,搜索驅動電路的型號加上封裝型號就可以找到想要的單總線LED了。下面是WS2812采用5050封裝的圖片。

本文會就WS2812這款最常用的驅動芯片來講解其的控制方法以及在最后我會寫一些控制這類單總線LED的方法。



由于是單總線通訊,自然沒有時鐘信號線,所以通訊的時序變得非常重要,我找到一份WS2812的數據手冊,查看到了其中提到的輸入數據時序圖。


可以看到,2812芯片對著時序有著較為嚴格的需要,所以對于0碼和1碼,我們需要嚴格控制單片機延時的時間。并且這款芯片的時序大概都在納秒級的延時,所以對于單片機的要求還是比較高的,我采用的是增強型的51單片機,速度上足夠完成納秒級的延時。


下面看到的數據的輸入方法,可以看到每個數據包都是24bit長,也就是3個字節,發送完第一個24bit數據包之后就是接著發送第二個,可以看到在D2線上,第一個24bit數據包自動被忽略了,這是由于WS2812的轉發機制,在其接受到第一個完整的24bit數據包之后,再接受到的數據包他會自動將其發送給下一個燈珠,這就是為什么可以一根線控制所有LED燈的秘密。并且WS2812芯片還有鎖存的功能,也就是說送一次數據后,在下一回改變顏色之前都不需要再送數據了,內部的鎖存電路會自動記住當前的顏色值,并控制燈珠一直保持著色彩。


對于每一個24bit數據包,其格式如下:每一個字節都表示著顏色的亮度,從高位到低位分別是綠色(G),紅色(R),藍色(B),控制這三個顏色的亮度,我們就可以得到千變萬化的色彩。



了解到了數據包的格式,數據手冊里面還給了一張應用電路的圖片,很好的說明了這種單總線LED的連接方法。


看完了數據手冊,下面就是對單片機編程,使其可以輸出對應的波形了!



首先是對發送0碼和1碼的程序編寫,由于需要用到納秒級的延時,我使用空語句來進行軟件延時,下面是發送0碼和1碼的代碼截圖。我這里是使用的STC15系列單片機,使用內部時鐘11.0592MHZ,如果有使用相同單片機的朋友請直接參考我的代碼,如果你的單片機類型不一樣或者時鐘頻率不一樣,最好使用示波器或者邏輯分析儀來得到精確的延時。


完成了發送0碼和1碼之后,接著就是發送一個字節了,核心思路就是每次判斷字節高位的值來決定發送0還是1


經過簡單的編程,所有代碼就完成了,簡單的寫了一個程序,讓前三個燈亮起,呈紅色:


其實WS2812的編程較為容易,下面就來說一些我的改進地方。
我編寫了一個使用串口控制RGB燈的程序,就是我可以在串口上發送數據,實時的控制每個LED燈的顏色,這樣會方便后期一些動畫效果的控制。我定義了一個數據格式,一個數據包含有5個字節,分別是幀頭,LED燈的編號,紅色(R)亮度值,綠色(G)亮度值以及藍色(B)亮度值。例如我想要控制第五個燈變成最亮的白色,我就發送
FFH 05H FFH FFH FFH 就可以了,下面是使用這個程序調出來的顏色:


其思路就是當串口收到幀頭之后,就開始讀取燈的編號以及各個顏色的亮度值,然后再發送給LED燈珠即可。

這些就是單總線LED燈珠的使用方法了,其實編寫程序較為簡單,主要難點就是大家的時序一定要準確,這樣才可以確保燈珠正常的點亮。



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏26 分享淘帖 頂4 踩1
回復

使用道具 舉報

沙發
ID:357396 發表于 2019-9-15 15:50 | 只看該作者
多謝樓主,學習了
回復

使用道具 舉報

板凳
ID:470939 發表于 2019-9-24 20:42 | 只看該作者
很有用
回復

使用道具 舉報

地板
ID:385637 發表于 2019-9-25 09:00 | 只看該作者
非常實用,請問有后面控制多個燈的原代碼嗎?
回復

使用道具 舉報

5#
ID:190075 發表于 2019-11-11 19:56 | 只看該作者
樓主,有資料程序可以下載嗎
回復

使用道具 舉報

6#
ID:156220 發表于 2019-11-12 09:19 | 只看該作者
謝謝樓主的講解,學習了
回復

使用道具 舉報

7#
ID:243394 發表于 2019-11-12 18:30 | 只看該作者
謝謝樓主的講解
回復

使用道具 舉報

8#
ID:475845 發表于 2020-4-1 16:40 | 只看該作者
51黑,有你更精彩
回復

使用道具 舉報

9#
ID:344220 發表于 2020-5-12 10:19 來自手機 | 只看該作者
很方便,感謝樓主
回復

使用道具 舉報

10#
ID:369321 發表于 2020-5-12 22:49 | 只看該作者
很有用
回復

使用道具 舉報

11#
ID:86450 發表于 2020-9-22 16:21 | 只看該作者

謝謝樓主的講解,學習了
回復

使用道具 舉報

12#
ID:15745 發表于 2022-12-14 15:46 | 只看該作者
剛好要用到這種單總線的燈,學習了
回復

使用道具 舉報

13#
ID:727062 發表于 2024-2-23 20:10 | 只看該作者
厲害
回復

使用道具 舉報

14#
ID:433219 發表于 2024-3-8 08:42 | 只看該作者
初學詳解系列   d^_^b
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产乱码久久久久久牛牛 | 日韩久久久久久久久久久 | 国产精品无码专区在线观看 | 亚洲欧洲综合av | 黄色一级视频免费 | 亚洲电影成人 | 亚洲精品一区国产精品 | 色影视| 亚洲精品久久久蜜桃网站 | 亚洲欧美在线一区 | 成人av电影免费在线观看 | 91丨国产 | 精品国产第一区二区三区 | 国产女人精品视频 | 九九亚洲| 久久婷婷香蕉热狠狠综合 | 激情五月激情综合网 | 欧美日韩理论 | 久草新在线 | 中文字幕一区二区三区在线乱码 | 久久成人国产 | 色av一区| 东京久久| 九九热热九九 | 欧美国产日韩在线观看成人 | 一级欧美一级日韩片 | 全免费a级毛片免费看视频免费下 | 日本高清视频在线播放 | 草久久免费视频 | 国产精品国产成人国产三级 | 日韩在线一区二区三区 | 欧美片网站免费 | 午夜精品久久久久久久久久久久久 | 精品欧美一区二区精品久久久 | 国产精品亚洲第一区在线暖暖韩国 | 久久久av| 天天躁人人躁人人躁狂躁 | 亚洲精选一区二区 | 草草影院ccyy | 老牛嫩草一区二区三区av | 欧美a在线|