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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10417|回復: 10
收起左側

單片機+WS2812燈帶驅動程序源碼

  [復制鏈接]
ID:293743 發表于 2019-4-17 17:13 | 顯示全部樓層 |閱讀模式
注意:采用1T 51單片機 晶振采用24M
內部有注釋,WS2812燈帶采用單IO口驅動 此處不附帶原理圖

單片機源程序如下:
  1. /********************************************************/
  2. /*作 者:Dyingstraw
  3. /*版    本:V1.0
  4. /*程序功能:用51單片機控制ws2812 RGB輸出,顯示全色彩
  5. /*備        注:51單片機晶振24M
  6. /********************************************************/

  7. #include<STC12C5A60S2.h>
  8. #include<intrins.h>             //寫入頭文件
  9. #define uchar unsigned char
  10. sbit Send_Dat=P3^7;               //數據輸出,接IN腳
  11. sbit key3=P2^1;
  12. sbit key2=P2^4;
  13. sbit key1=P2^7;
  14. uchar show[720]; // 8*3*30
  15. uchar  color[30][3]={
  16.         0xff,0x01,0x00,    //0
  17.         0xff,0x01,0x00,
  18.         0xff,0x01,0x00,
  19.         0xff,0x01,0x00,
  20.         0xff,0x01,0x00,
  21.         0xff,0x01,0x00,
  22.         0xff,0x01,0x00,
  23.         0xff,0x01,0x00,
  24.         0xff,0x01,0x00,
  25.         0xff,0x01,0x00,
  26.         0xff,0x01,0x00,   //10
  27.         0xff,0x01,0x00,
  28.         0xff,0x01,0x00,
  29.         0xff,0x01,0x00,
  30.         0xff,0x01,0x00,
  31.         0xff,0x01,0x00,
  32.         0xff,0x01,0x00,
  33.         0xff,0x01,0x00,
  34.         0xff,0x01,0x00,
  35.         0xff,0x01,0x00,
  36.         0xff,0x01,0x00,  //20
  37.         0xff,0x01,0x00,
  38.         0xff,0x01,0x00,
  39.         0xff,0x01,0x00,
  40.         0xff,0x01,0x00,
  41.         0xff,0x01,0x00,
  42.         0xff,0x01,0x00,
  43.         0xff,0x01,0x00,
  44.         0xff,0x01,0x00,
  45.         0xff,0x01,0x00,  //29
  46.        
  47. };  //G   R   B
  48. uchar code GRB[7][3]={
  49.         0XFF,0X00,0X00,//綠
  50.         0XFF,0XFF,0X00,//黃
  51.         0X00,0XFF,0X00,//紅
  52.         0X00,0XFF,0XFF,//品紅
  53.         0X00,0X00,0XFF,//藍
  54.         0XFF,0X00,0XFF,//青  
  55.         0XFF,0XFF,0XFF,//白
  56. };
  57. void delay();
  58. void delays();      

  59. /*寫入數據時序*/
  60. void Send_A_bit(uchar VAL)
  61. {
  62.        if (VAL==1)
  63.        {
  64.       
  65.               Send_Dat=1;
  66.               _nop_();_nop_();_nop_();_nop_();_nop_();
  67.                                                         _nop_();_nop_();_nop_();_nop_();_nop_();
  68.                                                         _nop_();_nop_();_nop_();_nop_();_nop_();
  69.                                                         _nop_();_nop_();
  70.          
  71.               Send_Dat=0;         
  72.                                                         _nop_();_nop_();
  73.        }
  74.        else
  75.        {  
  76.               Send_Dat=1;
  77.                                                         _nop_();_nop_();_nop_();_nop_();
  78.          
  79.               Send_Dat=0;           
  80.               _nop_();_nop_();_nop_();_nop_();_nop_();
  81.                                                         _nop_();_nop_();_nop_();_nop_();
  82.        }           
  83.       
  84. }
  85. void SendAllData()
  86. {
  87.         unsigned int i;
  88.         for(i=0;i<720;i++)
  89.                 Send_A_bit(show[i]);
  90.        
  91. }
  92. void WriteData()
  93. {
  94.         unsigned char i,j;
  95.         for(i=0;i<30;i++)
  96.         {
  97.                 for(j=0;j<3;j++)
  98.                 {
  99.                 show[24*i+8*j+0]=color[i][j]/128%2;
  100.                 show[24*i+8*j+1]=color[i][j]/64%2;
  101.                 show[24*i+8*j+2]=color[i][j]/32%2;
  102.                 show[24*i+8*j+3]=color[i][j]/16%2;
  103.                 show[24*i+8*j+4]=color[i][j]/8%2;
  104.                 show[24*i+8*j+5]=color[i][j]/4%2;
  105.                 show[24*i+8*j+6]=color[i][j]/2%2;
  106.                 show[24*i+8*j+7]=color[i][j]%2;
  107.                 }       
  108.         }
  109. }

  110. void change1(unsigned char k)
  111. {
  112.                 unsigned char i,j;
  113.                 for(i=0;i<30;i++)
  114.         {
  115.                 for(j=0;j<3;j++)
  116.                 color[i][j]=GRB[k][j];
  117.                
  118.         }
  119.                
  120. }
  121.        
  122. void change2()
  123. {
  124.         unsigned char i;
  125.                 for(i=0;i<30;i++)
  126.         {
  127.                 if(color[i][0]>0&&color[i][2]==0)
  128.                 {
  129.                                 color[i][0]--;color[i][1]++;
  130.                 }
  131.                 if(color[i][1]>0&&color[i][0]==0)
  132.                 {
  133.                                 color[i][1]--;color[i][2]++;
  134.                 }
  135.                 if(color[i][2]>0&&color[i][1]==0)
  136.                 {
  137.                                 color[i][2]--;color[i][0]++;
  138.                 }
  139.         }
  140. }

  141. /*主函數*/
  142. unsigned char main()
  143. {

  144.        uchar k=0;
  145.              P2=0XFF;
  146.                          change1(0);
  147.        while(1)
  148.        {
  149.                                         change1(k);
  150.                                         Send_Dat=0;
  151.                                         WriteData();SendAllData();
  152.                                         Send_Dat=0;   
  153.                                         delays();
  154.                                         k++;if(k>=7)k=0;
  155.                                         if(key1==0) return 0;
  156.                                         if(key2==0)
  157.                                         {
  158.                                                 change1(0);
  159.                                                 while(key3==1)
  160.                                                 {
  161.                                                         change2();
  162.                                                        
  163.                                                        
  164.                                                         Send_Dat=0;
  165.                                                         WriteData();SendAllData();
  166.                                                         Send_Dat=0; //發送數據
  167.                                        

  168.                                                        
  169.                                                 }
  170.                                         }
  171.        }
  172. }






  173. /*小延時函數*/
  174. /*大概1S吧,隨便寫的*/
  175. void delay()  //100ms
  176. {


  177.         unsigned char i, j, k;

  178.         i = 10;
  179.         j = 31;
  180. //        k = 147;
  181.         k=14;
  182.         do
  183.         {
  184.                 do
  185.                 {
  186.                         while (--k);
  187.                 } while (--j);
  188.         } while (--i);
  189. }


  190. /*大延時函數*/
  191. /*十幾秒*/
  192. void delays()
  193. {
  194.   delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay();
  195.         delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay();
  196.         delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay(); delay();
  197. }
復制代碼

所有資料51hei提供下載:
跑馬燈.zip (42.81 KB, 下載次數: 253)


回復

使用道具 舉報

ID:562991 發表于 2019-6-15 11:32 | 顯示全部樓層
支持謝謝啊
回復

使用道具 舉報

ID:717943 發表于 2020-3-29 09:15 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:299054 發表于 2020-5-9 10:37 | 顯示全部樓層
謝謝分享!
回復

使用道具 舉報

ID:64089 發表于 2020-7-16 23:34 | 顯示全部樓層
親測可用,謝謝分享
回復

使用道具 舉報

ID:56960 發表于 2020-7-17 08:42 | 顯示全部樓層
多謝樓主分享,要是上一張實物圖就更完美了
回復

使用道具 舉報

7#
無效樓層,該帖已經被刪除
8#
無效樓層,該帖已經被刪除
ID:735961 發表于 2020-9-27 20:58 | 顯示全部樓層
請問,這個程序文件,我編譯了,怎么不能用
回復

使用道具 舉報

10#
無效樓層,該帖已經被刪除
11#
無效樓層,該帖已經被刪除
12#
無效樓層,該帖已經被刪除
ID:242298 發表于 2021-11-23 00:46 | 顯示全部樓層
3個KEY按鍵控制什么呢
回復

使用道具 舉報

ID:991413 發表于 2021-12-12 21:31 | 顯示全部樓層
3個KEY按鍵控制什么呢
回復

使用道具 舉報

ID:399179 發表于 2021-12-21 18:30 來自觸屏版 | 顯示全部樓層
按鍵沒用上嗎?
回復

使用道具 舉報

16#
無效樓層,該帖已經被刪除
17#
無效樓層,該帖已經被刪除
ID:998804 發表于 2022-1-2 17:17 | 顯示全部樓層
程序中用數組來定義顏色真是個好辦法
回復

使用道具 舉報

19#
無效樓層,該帖已經被刪除
20#
無效樓層,該帖已經被刪除
21#
無效樓層,該帖已經被刪除
22#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: caoporn免费在线视频 | 午夜精品久久 | 中文字幕在线观看一区二区 | 欧美日韩视频在线第一区 | 99久久99久久精品国产片果冰 | 久久久精品网 | 亚洲成av片人久久久 | 国产一区二区 | 国产精品久久久久久影院8一贰佰 | 国产精华一区 | 青青草av在线播放 | 精品国产一区二区三区av片 | 国产日韩欧美二区 | 国产成人精品一区二区三区四区 | 亚洲一区二区三区四区五区午夜 | 91国内精精品久久久久久婷婷 | h视频免费在线观看 | 亚洲精品无 | 一区二区三区精品视频 | 亚洲日韩欧美一区二区在线 | 男人久久天堂 | 久久99这里只有精品 | 日韩三区在线观看 | 99精品电影 | 精品久久久久久久久久久 | 在线观看中文字幕 | 欧美黄色片 | 91精品久久久久久久 | 亚洲经典一区 | 亚洲精品视频导航 | 欧美一区二区视频 | 日韩欧美一区二区三区 | 亚洲成人av一区二区 | 国产专区免费 | 中文在线а√在线8 | 成人欧美一区二区三区在线观看 | 老牛影视av一区二区在线观看 | 中文字幕国产日韩 | 夜久久| 亚洲精品久久久久久久久久久 | www.亚洲.com|