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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 15232|回復(fù): 16
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)驅(qū)動(dòng)WS2812B燈演示程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
示例采用HC89S003F4單片機(jī)和7燈Ws2812燈帶。HC89S003F4是1T增強(qiáng)型51單片機(jī),如用其他51單片機(jī),需調(diào)整晶振頻率。示例僅進(jìn)行7燈的單次驅(qū)動(dòng),可在聲明和數(shù)組中改變燈珠數(shù)量和數(shù)據(jù),主函數(shù)中修改后可實(shí)現(xiàn)流水燈效果。
/*
*HC89S003F4驅(qū)動(dòng)WS2812彩燈演示(7只Led)
*CPU:HC89S003F4 16K bytes flash ROM, 256+256 bytes data RAM
*HC89S003F4是1T增強(qiáng)型51單片機(jī),如用普通51單片機(jī),晶振頻率需增大
*/

  1. #define ALLOCATE_EXTERN
  2. #include "HC89S003F4.h"
  3. #include <intrins.h>

  4. #define WS2812_IO P2_2   //定義驅(qū)動(dòng)引腳
  5. //xdata unsigned char col[21];
  6. //7只LED,共21個(gè)數(shù)據(jù),每組GRB排列
  7. const unsigned char col[21] = {0x22,0x00,0x00,
  8.                                                            0x00,0x22,0x00,
  9.                                                            0x00,0x00,0x22,
  10.                                                            0x22,0x22,0x00,
  11.                                                            0x00,0x22,0x22,
  12.                                                            0x22,0x00,0x22,
  13.                                                            0x22,0x22,0x22,
  14.                                                            };


  15. void ws2812_rst(void)
  16. {        
  17.         u8 i;         //
  18.         WS2812_IO = 1;
  19.         i = 100; //           如果主頻較高適當(dāng)增加
  20.         while(i--);
  21.         WS2812_IO = 0;
  22.     i = 100; //           如果主頻較高適當(dāng)增加
  23.         while(i--);
  24. }

  25. void ws2812_write_byte( u8 dat)
  26. {        
  27.         u8 i = 8;
  28.         dat <<= 1;         //最高位進(jìn)入CY
  29.         while(i)
  30.         {
  31.                  //高電平時(shí)間小于0.45uS為邏輯0,大于時(shí)為邏輯1
  32.                 WS2812_IO = 1;
  33.                 //如果主頻較高可在此處適當(dāng)增加_nop_();
  34.                 WS2812_IO = CY;
  35.                 //如果主頻較高可在此處適當(dāng)增加_nop_();
  36.                 _nop_();
  37.         WS2812_IO = 0;
  38.                 dat <<= 1;         //最高位進(jìn)入CY
  39.                 i--;                        
  40.         }
  41. }

  42. /**************************************************************************************
  43. void main()
  44. {
  45.         unsigned char i;

  46. /************************************系統(tǒng)初始化****************************************/
  47.         WDTCCR = 0x00;                                                //關(guān)閉看門狗
  48.                                                 //本例程為方便測試關(guān)閉看門狗,實(shí)際使用中,建議客戶打開看門狗,詳見WDT復(fù)位例程
  49.         CLKSWR = 0x53;                                                //選擇內(nèi)部高頻RC為系統(tǒng)時(shí)鐘,內(nèi)部高頻RC 8分頻,F(xiàn)osc=4MHz
  50.         CLKDIV = 0x01;                                                //Fosc 1分頻得到Fcpu,F(xiàn)cpu=4MHz

  51.         P2M1 = P2M1&0xF0|0x08;                                //P22設(shè)置為推挽輸出
  52.         
  53. /****以上為HC89S003F4單片機(jī)專用的SFR,普通單片機(jī)不用設(shè)置,但需提高晶振頻率*****/

  54.         ws2812_rst();
  55.         for( i= 0; i< 21 ;i++)
  56.         {
  57.                 ws2812_write_byte( col[i]);
  58.         }
  59.         while(1){} ;
  60. }
復(fù)制代碼

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏8 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:885138 發(fā)表于 2021-2-20 16:38 來自手機(jī) | 只看該作者
效果圖

JPEG_20210220_163457_.jpg (1.17 MB, 下載次數(shù): 170)

JPEG_20210220_163457_.jpg

JPEG_20210220_163708_.jpg (705.44 KB, 下載次數(shù): 170)

JPEG_20210220_163708_.jpg

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

板凳
ID:885138 發(fā)表于 2021-2-21 18:28 來自手機(jī) | 只看該作者
轉(zhuǎn)發(fā)網(wǎng)友實(shí)驗(yàn)總結(jié)的WS2812B時(shí)序要求,供大家參考。

Screenshot_20210221-164434.jpg (257.48 KB, 下載次數(shù): 186)

Screenshot_20210221-164434.jpg

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

地板
ID:390416 發(fā)表于 2021-2-22 20:05 | 只看該作者
89C52驅(qū)動(dòng)WS2812 http://www.zg4o1577.cn/bbs/dpj-170855-1.html
回復(fù)

使用道具 舉報(bào)

5#
ID:885879 發(fā)表于 2021-2-23 16:22 | 只看該作者
樓主你好,新手求教,燈帶和單片機(jī)的接口該怎么連接呢?
回復(fù)

使用道具 舉報(bào)

6#
ID:390416 發(fā)表于 2021-2-23 16:55 | 只看該作者
Levent 發(fā)表于 2021-2-23 16:22
樓主你好,新手求教,燈帶和單片機(jī)的接口該怎么連接呢?

普通IO口 串聯(lián)100歐電阻 連過去就行了  必須能夠輸出5V電平。不能3.3V
回復(fù)

使用道具 舉報(bào)

7#
ID:885138 發(fā)表于 2021-2-24 00:07 來自手機(jī) | 只看該作者
Levent 發(fā)表于 2021-2-23 16:22
樓主你好,新手求教,燈帶和單片機(jī)的接口該怎么連接呢?

如圖中實(shí)物連有三條線,兩條是電源VCC GND,另一條是數(shù)據(jù)線。
電源可與單片機(jī)共用,燈珠數(shù)量多時(shí)最好單獨(dú)供電,但要與單片機(jī)共地,電壓5V(USB)至3.7V(鋰電池)都可以,3.3V有點(diǎn)閃。每個(gè)(或每兩個(gè))燈珠的電源處要并一個(gè)小電容(0.1uF)。
單片機(jī)IO上拉輸出或推挽輸出,與燈帶數(shù)據(jù)輸入(DIN)間最好加一個(gè)小電阻(100歐)防沖擊,實(shí)驗(yàn)時(shí)不加也可以。燈帶還有個(gè)輸出線DOUT,可以級聯(lián)下一燈帶的DIN。
單總線方式,驅(qū)動(dòng)較簡單,兩種狀態(tài):復(fù)位(較長時(shí)間的低電平)或位傳送。位0或位1取決于高電平脈寬,低電平寬度要求不高,小于復(fù)位就行。(三樓有具體說明)
應(yīng)用挺方便的,動(dòng)手試試。需要注意的是,因位傳送時(shí)高電平的脈寬均在uS級以下,單片機(jī)頻率要適當(dāng)提高些。

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

8#
ID:885138 發(fā)表于 2021-2-25 08:31 來自手機(jī) | 只看該作者
Levent 發(fā)表于 2021-2-23 16:22
樓主你好,新手求教,燈帶和單片機(jī)的接口該怎么連接呢?

我的另一個(gè)貼子里有普通51單片機(jī)驅(qū)動(dòng)ws2812b的例子,對晶振頻率要求低一些。參看http://www.zg4o1577.cn/bbs/forum.php?mod=viewthread&tid=202899&extra=page%3D1&mobile=no
回復(fù)

使用道具 舉報(bào)

9#
ID:611155 發(fā)表于 2021-3-30 00:40 | 只看該作者
你的CY定義在哪里? 還有ws2812_write_byte 函數(shù)中 data<1逐個(gè)發(fā)送過程中,在while(i)里面怎么區(qū)分data的0,1? 如果是0,那么時(shí)間要小于0.45us,如果是1要大于0.45,這在函數(shù)中沒有體現(xiàn)?
回復(fù)

使用道具 舉報(bào)

10#
ID:885138 發(fā)表于 2021-3-30 09:20 來自手機(jī) | 只看該作者
johnspen 發(fā)表于 2021-3-30 00:40
你的CY定義在哪里? 還有ws2812_write_byte 函數(shù)中 data

1,CY就是進(jìn)位標(biāo)志C,51單片機(jī)頭文件中有定義,在C語言中用CY直接調(diào)用;
2,左移data后,最高位移入CY;
3,函數(shù)中,將CY值寫至引腳的作用,CY=0比CY=1提前拉低,體現(xiàn)為高電平的脈寬變化。
回復(fù)

使用道具 舉報(bào)

11#
ID:611155 發(fā)表于 2021-3-30 14:20 | 只看該作者
xxd0708 發(fā)表于 2021-3-30 09:20
1,CY就是進(jìn)位標(biāo)志C,51單片機(jī)頭文件中有定義,在C語言中用CY直接調(diào)用;
2,左移data后,最高位移入CY; ...

哦,這個(gè)單片機(jī)沒用過
回復(fù)

使用道具 舉報(bào)

12#
ID:611155 發(fā)表于 2021-3-30 14:28 | 只看該作者
xxd0708 發(fā)表于 2021-3-30 09:20
1,CY就是進(jìn)位標(biāo)志C,51單片機(jī)頭文件中有定義,在C語言中用CY直接調(diào)用;
2,左移data后,最高位移入CY; ...

雖然這個(gè)單片機(jī)沒用過,我就大概猜一下邏輯,也就是說再while(i)里面,就先直接將IO口拉高,這里有一個(gè)時(shí)間,然后把CY(也就是左移后的高位給IO口),如果是1,那么就是高位持續(xù)了2個(gè)時(shí)間,如果是0,那么高位就持續(xù)了1個(gè)時(shí)間,如果WS2812_IO = 1;這個(gè)時(shí)間是0.45us,2個(gè)時(shí)間就是*2 =0.9us, 一個(gè)時(shí)間就是0.45us。
就是CY是1的話,就是高0.9us +_nop_();+WS2812_IO = 0;就是符合了W2812的時(shí)序
回復(fù)

使用道具 舉報(bào)

13#
ID:920224 發(fā)表于 2021-5-12 19:16 | 只看該作者
8M4T的片子有方法驅(qū)動(dòng)嗎?樓主可以提供一下思路嗎謝謝。
回復(fù)

使用道具 舉報(bào)

14#
ID:885138 發(fā)表于 2021-5-13 07:00 來自手機(jī) | 只看該作者
tungkin 發(fā)表于 2021-5-12 19:16
8M4T的片子有方法驅(qū)動(dòng)嗎?樓主可以提供一下思路嗎謝謝。

8M4T每個(gè)指令周期0.5uS,置位或清零引腳為2個(gè)指令周期即1uS,顯然不能直接驅(qū)動(dòng)。但可以用RC電路延時(shí)解決,參看我的另一個(gè)貼子
回復(fù)

使用道具 舉報(bào)

15#
ID:885138 發(fā)表于 2021-5-13 07:01 來自手機(jī) | 只看該作者
xxd0708 發(fā)表于 2021-5-13 07:00
8M4T每個(gè)指令周期0.5uS,置位或清零引腳為2個(gè)指令周期即1uS,顯然不能直接驅(qū)動(dòng)。但可以用RC電路延時(shí)解決 ...

搜索“51單片機(jī)(12MHz@12T)驅(qū)動(dòng)WS2812B”
回復(fù)

使用道具 舉報(bào)

16#
ID:920224 發(fā)表于 2021-5-13 09:15 | 只看該作者
xxd0708 發(fā)表于 2021-5-13 07:01
搜索“51單片機(jī)(12MHz@12T)驅(qū)動(dòng)WS2812B”

好的謝謝作者!
回復(fù)

使用道具 舉報(bào)

17#
ID:991413 發(fā)表于 2021-12-12 21:20 | 只看該作者
xdata那里我用的時(shí)候他總說前面少了個(gè)分號(hào),咋回事
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 美国a级毛片免费视频 | 在线一区 | 午夜看片网站 | 精品欧美在线观看 | 亚洲av毛片 | 欧美精品乱码99久久影院 | 91欧美| 最近中文字幕在线视频1 | 国产小视频精品 | 国产午夜精品一区二区三区在线观看 | 一级做a爰片久久毛片免费看 | 成人av鲁丝片一区二区小说 | 国产一区二区精品自拍 | 成人福利视频 | 性色的免费视频 | 亚洲丝袜天堂 | 中文字幕一区二区三区四区不卡 | 91精品国产91久久久久久 | 日本久久久久久久久 | 中文字幕av网址 | 在线观看深夜视频 | 欧美日韩视频在线播放 | 国产日韩久久 | 成人久草| 欧美 日韩 国产 成人 | 欧美性猛交一区二区三区精品 | 精品一区二区电影 | 超碰欧美 | 丝袜美腿一区二区三区动态图 | 五月天婷婷狠狠 | 一区二区三区国产在线观看 | 女同久久另类99精品国产 | 成人精品一区二区三区中文字幕 | 亚洲国产精品久久久 | 五月天天色| 日韩日韩日韩日韩日韩日韩日韩 | 欧美一级淫片免费视频黄 | 黄色毛片免费看 | 久久午夜视频 | 二区在线观看 | 91在线精品视频 |