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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

全彩WS2812驅(qū)動(dòng)實(shí)驗(yàn)(8腳單片機(jī))STC15F104W

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:248580 發(fā)表于 2018-2-16 07:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
STC15F104W單片機(jī)源程序如下:
  1. ===========================
  2. #include<reg52.h>
  3. #include<intrins.h>
  4. #define uchar unsigned char
  5. #define uint  unsigned  int


  6. /*
  7. ,
  8. 全彩 LED ws2812  燈 驅(qū)動(dòng)程序,受到論壇 zhuls 的啟發(fā),
  9. 實(shí)現(xiàn)了在我的8腳芯片,STC15F104W芯片上的驅(qū)動(dòng),、
  10. 修改內(nèi)部晶振 @ 12MHZ, STC Y5內(nèi)核,一個(gè)  _nop_();  為 0.25 us時(shí)間為基準(zhǔn)來(lái)驅(qū)動(dòng)WS2812
  11. 此程序?qū)嶒?yàn)完美驅(qū)動(dòng)WS2812,無(wú)閃爍,無(wú)跳燈,
  12. ,
  13. 接下來(lái)想用很長(zhǎng)一個(gè)WS2812燈帶,擺成88:88這樣一個(gè)數(shù)碼管形狀,
  14. 然后用單片機(jī)一個(gè)IO口驅(qū)動(dòng),實(shí)現(xiàn)全彩數(shù)字鐘,(多功能),比如說(shuō)重要定時(shí)時(shí)間到了,狂閃+高亮紅色,RR=0xFF;;這樣
  15. 或者睡覺前,以漸色呼吸燈的方式,直到深夜,亮度自動(dòng)變暗,RR=0x01;, GG=0x01; BB=0x01;
  16. ,
  17. */

  18. sfr P3M1  = 0x80;    //  10 000000   全部設(shè)置為雙向IO口,弱上拉25K
  19. sfr P3M0  = 0x80;    //  10 000000

  20. sbit LED1   =  P3^0;         // 5  
  21. sbit LED2   =  P3^1;         // 6         
  22. sbit LED3   =  P3^2;         // 7
  23. sbit sda   =   P3^3;         // 8         
  24. sbit KEY1   =  P3^4;         // 1         
  25. sbit KEY2   =  P3^5;         // 3         


  26. uint US100;
  27. uint MS1;
  28. uint ID;

  29. bit FLAG1;
  30. bit FLAG2;
  31. bit FLAG3;

  32. bit GF;



  33. uchar i;
  34. uchar j;

  35. uchar d;

  36. uchar RR;    //  顏色變量0-255 就是FF以內(nèi)
  37. uchar GG;
  38. uchar BB;


  39. //=============================================

  40. void delayus(uint us)  //     延時(shí)n個(gè)1us    @12M晶振  STC15F104W芯片
  41. {        
  42.         uint us2;            
  43.         for(us2=us;us2>0;us2--)    {  _nop_();  _nop_();   }  
  44.         
  45. }  

  46. //==================================================延時(shí)代碼 12mHZ
  47. void delayms(uint z)      //X  MS延時(shí)==@ 12MHZ
  48. {
  49. uint x,y;  
  50. for(x=z; x>0; x--)
  51.   for(y=920; y>0; y--);
  52. }


  53. //=========================================================================


  54. void bit1()    //H=0.7us.L=0.6us  數(shù)據(jù)1的表示   芯片STC15F104W  @ 12MHZ

  55.                //1US= 4個(gè) _nop_();  進(jìn)程序要用掉2個(gè)_nop_(); 出程序用掉2個(gè)_nop_();
  56. {
  57. sda=1;
  58.   
  59.     _nop_();
  60.     _nop_();
  61.     _nop_();
  62. sda=0;
  63.     _nop_();

  64. }


  65. void bit0()//H=0.35us.L=0.8us  ==數(shù)據(jù)0的表示
  66. {
  67. sda=1;


  68.     _nop_();
  69.     _nop_();
  70. sda=0;
  71.     _nop_();
  72.     _nop_();
  73.    
  74. }



  75. //發(fā)送8位,=1顆燈的一種顏色,WS2812燈數(shù)據(jù)為24一串24位二進(jìn)制數(shù)–每種顏色8位二進(jìn)制數(shù)。先是綠色,然后是紅色,最后是藍(lán)色
  76. void send_sda(uchar dat)        

  77. {
  78.     uchar count1;               //位計(jì)數(shù)器,單字節(jié)為8位
  79.     for (count1=8;count1>0;count1--)
  80.       {   
  81.         if(dat & 0x80)         //取高位先發(fā),則dat & 0x80
  82.           bit1();
  83.           else
  84.           bit0();
  85.             dat<<=1;               //數(shù)據(jù)右移,下一個(gè)位的數(shù)據(jù),若高位先發(fā)則dat<<=1
  86.       }
  87. }




  88. //=============================================
  89. void Init (void)    //中斷初始化
  90. {
  91.     TMOD = 0x01;           //12M    100us
  92.    
  93.     TL0 = (65536-100)%256;    //設(shè)置定時(shí)初值
  94.     TH0 = (65536-100)/256;    //設(shè)置定時(shí)初值
  95.     EA=1;
  96.     ET0=1;
  97.     TR0=1;
  98. }




  99. //=============================================
  100. void timer0(void) interrupt 1 using 1  //---定時(shí)器t0-----
  101. {
  102.      TL0 = (65536-100)%256;    //設(shè)置定時(shí)初值
  103.     TH0 = (65536-100)/256;    //設(shè)置定時(shí)初值

  104.     US100++;        TF0 = 0;   

  105.    
  106.        if(US100>=10 )   { MS1++;   US100=0;    }


  107. if( MS1>=1000)          //定時(shí)器實(shí)現(xiàn)七彩色時(shí)序
  108. {
  109.               RR=0xFF;    //
  110.         GG=0x00;    //
  111.               BB=0x00;    //

  112. }

  113.   if( MS1>=2000)
  114. {
  115.               RR=0x00;    //
  116.         GG=0xFF;    //
  117.               BB=0x00;    //

  118. }

  119.   if( MS1>=3000)
  120. {
  121.               RR=0x00;    //
  122.         GG=0x00;    //
  123.               BB=0xFF;    //

  124. }

  125.   if( MS1>=4000)
  126. {
  127.               RR=0xFF;    //
  128.         GG=0xFF;    //
  129.               BB=0x00;    //

  130. }

  131.   if( MS1>=5000)
  132. {
  133.               RR=0xFF;    //
  134.         GG=0x00;    //
  135.               BB=0xFF;    //

  136. }

  137.   if( MS1>=6000)
  138. {
  139.               RR=0x00;    //
  140.         GG=0xFF;    //
  141.               BB=0xFF;    //

  142. }

  143.   if( MS1>=7000)
  144. {
  145.               RR=0x7C;    //
  146.         GG=0xFC;    //
  147.               BB=0x00;    //

  148. }

  149.   if( MS1>=8000)
  150. {
  151.               RR=0x4B;    //
  152.         GG=0x00;    //
  153.               BB=0x82;    //
  154.      
  155.      MS1=0;

  156. }



  157.    
  158. }



  159. //=========================================================================

  160. //==========================  主程序開始  ==================================

  161. void main()
  162. {
  163.        P3M1=0x80;
  164.        P3M0=0x80;         //   
  165.    
  166.               RR=0x00;    //初始化
  167.         GG=0x00;    //
  168.               BB=0x00;    //
  169.    
  170.    
  171.    
  172.     Init();


  173.     while(1) //主循環(huán)。
  174.     {



  175.                
  176.             
  177. for (i=0;i<5;i++)    //發(fā)送5顆燈
  178.    {
  179.      send_sda(GG);    //綠
  180.          send_sda(RR);    //紅
  181.      send_sda(BB);    //藍(lán)
  182.          

  183.         
  184.    }
  185.   
  186.      sda=0;
  187.     delayus(70);      // 高于50US的低電平信號(hào)=復(fù)位,
  188.      
  189.    
  190.      
  191.          
  192.          
  193.          
  194.    
  195.    

  196.     }
  197. }


  198. //=========================================================================
  199. //=========================      END     ==================================
  200. //=========================================================================
  201. ,
  202. ,

復(fù)制代碼


評(píng)分

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

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:67356 發(fā)表于 2018-2-27 00:25 | 只看該作者
人才,我頂。。!
回復(fù)

使用道具 舉報(bào)

板凳
ID:637324 發(fā)表于 2020-2-15 15:29 | 只看該作者
寫的真好,解決了我的疑惑
謝謝樓主大哥
回復(fù)

使用道具 舉報(bào)

地板
ID:309846 發(fā)表于 2020-4-2 23:47 | 只看該作者
大哥厲害哇,解決了我的疑惑!
回復(fù)

使用道具 舉報(bào)

5#
ID:517794 發(fā)表于 2020-12-18 00:25 | 只看該作者
厲害厲害!。!
回復(fù)

使用道具 舉報(bào)

6#
ID:230374 發(fā)表于 2021-3-29 09:50 | 只看該作者
厲害。收藏備用,謝謝!
回復(fù)

使用道具 舉報(bào)

7#
ID:693367 發(fā)表于 2021-5-17 08:17 來(lái)自手機(jī) | 只看該作者
哪位大佬幫我寫一個(gè)stc15F104w單片機(jī)爆閃燈,p3.2和p3.3接爆閃燈,每個(gè)燈閃3次循環(huán)爆閃用按鍵可以調(diào)節(jié)爆閃頻
回復(fù)

使用道具 舉報(bào)

8#
ID:423238 發(fā)表于 2022-1-2 15:27 來(lái)自手機(jī) | 只看該作者
發(fā)個(gè)接線圖
回復(fù)

使用道具 舉報(bào)

9#
ID:977831 發(fā)表于 2022-3-24 17:29 | 只看該作者
沒效果是為什么
回復(fù)

使用道具 舉報(bào)

10#
ID:399179 發(fā)表于 2023-2-28 20:12 來(lái)自手機(jī) | 只看該作者
已收藏備用,謝謝!
回復(fù)

使用道具 舉報(bào)

11#
ID:433219 發(fā)表于 2023-3-1 16:28 | 只看該作者
ws2812的燈珠,就是塊頭大了點(diǎn),其它都還好
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品欧美 | 天天干天天干 | 国产精品自产av一区二区三区 | 一区二区不卡视频 | 91大片| 天堂成人av| av一级毛片 | 亚洲永久字幕 | 精国产品一区二区三区四季综 | 亚洲九色 | 国产精品特级毛片一区二区三区 | 中文字幕99| 午夜影院视频 | 国产欧美精品区一区二区三区 | 日韩免费一区二区 | 欧美亚洲一区二区三区 | 久久天堂 | 日韩色图视频 | 日韩中文字幕在线视频 | 夜夜草导航 | 91精品国产91综合久久蜜臀 | 国产精品电影在线观看 | a在线视频| 九九综合 | 成人午夜视频在线观看 | 人人九九精 | 精品久久久久久红码专区 | 成人av一区| 夜久久 | 又爽又黄axxx片免费观看 | 中文字幕亚洲区 | 99亚洲视频 | 美女天天干天天操 | 成人在线观看欧美 | 亚洲风情在线观看 | 国产精品亚洲综合 | 亚洲精品在线免费观看视频 | 在线看片国产精品 | 成人免费一区二区三区视频网站 | 国产欧美视频一区二区三区 | 亚洲www啪成人一区二区麻豆 |