找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10037|回復(fù): 19
收起左側(cè)

51單片機(12MHz@12T)驅(qū)動WS2812B

  [復(fù)制鏈接]
ID:885138 發(fā)表于 2021-2-24 19:42 | 顯示全部樓層 |閱讀模式
本帖最后由 xxd0708 于 2021-2-24 21:43 編輯

本實驗創(chuàng)新點:RC電路產(chǎn)生非uS整數(shù)值的延時,使得單片機可以產(chǎn)生小于脈寬小于1uS的高電平

附件說明:
/*
*程序功能:驗證低速率單片機(51單片機在12MHZ晶振@12T)驅(qū)動WS2812B燈帶的可行性
*
*作者:xxd0708
*發(fā)布網(wǎng)址:www.torrancerestoration.com
*程序版本:V1.00
*編寫時間 20210224
*聲明:本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途
*
*硬件說明
*CPU:AT89S52 16K bytes flash ROM, 256 bytes data RAM
*程序版本:V1.00
*晶振頻率:12MHz @12T
*
*以AT89S52為例
*連接方式:
*     單片機           WS2812B燈帶
*     +5V
*      |         
*     VCC——————|—————————— VCC
*              |
*       1K5電阻*
*              |
*     P00——————|———————————DIN
*              |
*           102電容*
*              |
*     GND——————|———————————GND
*
*原理:單片機與燈帶之間接入RC電路,P00工作在開漏工作方式,
*輸出1即上升沿由RC產(chǎn)生延時,數(shù)值由RC參數(shù)決定,而在輸出0下降沿無延時
*這樣就有可能產(chǎn)生小于1uS的高電位脈沖
*對WS2812而言,高電平時間小于0.45uS為邏輯0,大于時為邏輯1
*多次調(diào)整RC值使延時量符合要求(本程序要求上升沿延時在1.5~1.8us之間)
*
*調(diào)整經(jīng)驗:
*下載本程序后,根據(jù)發(fā)光情況調(diào)整,發(fā)白時說明WS2812識別為全1,延時量過小,需加大R或C;
*反之,不發(fā)光時說明識別為全0,延時量過小,需減小R或C;
*有彩光發(fā)出時再精確調(diào)整至合適值時,直到發(fā)光正常(實測RC值約為1.5uS,供參考)
*調(diào)試要有耐心,祝好運 :-)
*
*/

AT89S52_WS2812.zip

23.55 KB, 下載次數(shù): 207, 下載積分: 黑幣 -5

keil工程文件

評分

參與人數(shù) 1黑幣 +15 收起 理由
lkc8210 + 15 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:885138 發(fā)表于 2021-2-24 21:07 | 顯示全部樓層
第一次上傳附件

AT89S52_WS2812.zip

23.55 KB, 下載次數(shù): 56, 下載積分: 黑幣 -5

keil uv4工程文件

回復(fù)

使用道具 舉報

ID:885138 發(fā)表于 2021-2-25 07:04 來自手機 | 顯示全部樓層
我實驗時RC調(diào)節(jié)過程:
回復(fù)

使用道具 舉報

ID:885138 發(fā)表于 2021-2-25 07:19 | 顯示全部樓層
我實驗時RC調(diào)整用了四次(R是上拉電阻,接在vcc與P00之間,C接在P00與GND之間):
1.R取302(3K),C取102(0.001uF),燈全不亮。說明延時太大,高電平寬度不足,需減小R或C,為方便固定C調(diào)整R;
2.R改102(1K),全亮發(fā)白。說明延時太小,高電平過寬,0被識別成1,需加大R;
3.R取222(2K2),燈不亮。需減R;
4.R取152(1K5),發(fā)光正常。(此值供參考,根據(jù)PCB實際情況調(diào)整)
調(diào)節(jié)后經(jīng)一晚上的運行,顯示正常,小馬拉大車實驗初告成功!

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:885138 發(fā)表于 2021-2-25 10:14 來自手機 | 顯示全部樓層
基本原理:
程序中發(fā)位0時為2uS高電平,發(fā)位1時為3uS高電平。
由于P00是開漏囗,下拉能力強而上拉能力由外部上拉電阻提供。所以對端口實際電壓而言,當P00上拉電阻下拉電容時,由0上升到1為較慢的充電過程,而由1到0為快速放電過程(時間可忽略)。
另一方面,WS2812B輸入帶整形電路,由0轉(zhuǎn)1電壓門限為0.7Vcc,由1轉(zhuǎn)0電壓門限為0.3Vcc。如選擇并調(diào)整好R與C,使C上電壓充至0.7Vcc的時間大于1.55uS,則單片機發(fā)位0時,WS2812B實際收到的高電平時間小于2-1.55=0.45uS,發(fā)送位1時,多1uS必然大于0.45uS,從而滿足了驅(qū)動要求。
原理分析可行后,實際驗證按“先估算、后調(diào)整”的思想進行。
由RC充放電原理知,從0到0.7倍電壓的時間約為1.2倍時間常數(shù),我們需要大于1.55uS并小于2uS,取1.8uS為宜,故RC約為1.8/1.2=1.5uS。我選取了C為0.001uF的電容(102),R應(yīng)選1.5uS/0.001uF=1.5k的電阻(152)。
為實驗驗證,并考慮電器元件的誤差及PCB的附加電容的影響,選2倍及2/3倍為上下限電阻(3k與1k),用二分法逼近,最終運行正常為1.5K,與理論值相符。(應(yīng)實際工作電壓或電路器件不同,允許一定偏差)
附手繪的電平轉(zhuǎn)換原理圖一張:
Screenshot_20210225_094151.jpg

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:69115 發(fā)表于 2021-3-3 23:11 | 顯示全部樓層
樓主,你真聰明.
回復(fù)

使用道具 舉報

ID:654946 發(fā)表于 2021-12-11 15:08 | 顯示全部樓層
xxd0708 發(fā)表于 2021-2-25 07:19
我實驗時RC調(diào)整用了四次(R是上拉電阻,接在vcc與P00之間,C接在P00與GND之間):
1.R取302(3K),C取102 ...

能提供一下電路圖嗎
回復(fù)

使用道具 舉報

ID:998804 發(fā)表于 2022-1-2 17:21 | 顯示全部樓層
第一次看到樓主這個方法,真是聰明!
我用1T單片機,再加上你的電路,沒有用你的程序,可以成功驅(qū)動。
但用A89S52的單片機無法成功,晶振是11.0592Mhz的。
回復(fù)

使用道具 舉報

ID:290373 發(fā)表于 2022-1-4 13:18 | 顯示全部樓層
很巧妙的方法2812真的要被玩壞了
回復(fù)

使用道具 舉報

ID:71233 發(fā)表于 2022-5-1 19:41 | 顯示全部樓層
太厲害了,電子玩得太嫻熟了,居然想到用RC充電原理來實現(xiàn)對2812的驅(qū)動。
回復(fù)

使用道具 舉報

ID:514317 發(fā)表于 2022-5-3 00:16 | 顯示全部樓層
厲害   技術(shù)強貼    我遇到這個問題   直接換1T 40M的單片機
回復(fù)

使用道具 舉報

ID:832644 發(fā)表于 2022-7-15 17:36 | 顯示全部樓層

樓主,你真聰明.
回復(fù)

使用道具 舉報

ID:825397 發(fā)表于 2022-7-22 14:14 | 顯示全部樓層
在stc89c52上成功,比較創(chuàng)新的方法,感謝樓主分享
回復(fù)

使用道具 舉報

ID:482083 發(fā)表于 2022-7-27 18:26 | 顯示全部樓層
lzzasd 發(fā)表于 2022-5-3 00:16
厲害   技術(shù)強貼    我遇到這個問題   直接換1T 40M的單片機

哈哈哈,我也是
回復(fù)

使用道具 舉報

ID:603024 發(fā)表于 2022-8-17 14:15 | 顯示全部樓層
牛人,感謝分享
回復(fù)

使用道具 舉報

ID:46750 發(fā)表于 2023-5-10 10:41 | 顯示全部樓層
厲害,技術(shù)好貼,可以用3毛錢的單片機控制了
回復(fù)

使用道具 舉報

ID:324780 發(fā)表于 2023-12-1 21:26 | 顯示全部樓層
厲害,這就是所謂的突破與創(chuàng)新�。。。。�
回復(fù)

使用道具 舉報

ID:85743 發(fā)表于 2024-2-2 11:22 | 顯示全部樓層
xxd0708 發(fā)表于 2021-2-25 10:14
基本原理:
程序中發(fā)位0時為2uS高電平,發(fā)位1時為3uS高電平。
由于P00是開漏囗,下拉能力強而上拉能力由外 ...

意思就是:用了這個RC,程序里面的I/O就是一般的高\低電平了?
回復(fù)

使用道具 舉報

ID:433219 發(fā)表于 2024-2-2 19:44 | 顯示全部樓層
d^_^b  低速mcu上ws2812高速玩的思路???
回復(fù)

使用道具 舉報

ID:253767 發(fā)表于 2024-2-3 07:52 | 顯示全部樓層
厲害,突破創(chuàng)新!
謝謝分享!!!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表