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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

請問一下大神,ws2812單片機代碼這里是什么意思?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:586048 發(fā)表于 2019-9-2 12:19 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


單片機源程序如下:
  1. 這里是ws2812的時序代碼
  2. #include "IAP15F105W.h"
  3. #include "intrins.h"

  4. typedef unsigned char uchar;
  5. typedef unsigned int  uint;

  6. #define  Number 20

  7. sbit DAI=P3^2;

  8. void Delay (uint x)  // 1ms Delay
  9. {
  10.     uint t;
  11.     t = 0;
  12.     while (x--)
  13.     {
  14.       WDT_CONTR|=0x10;         
  15.       for (t = 0; t < 175; t++);
  16.     }
  17. }

  18. void send_2811_24bits(uchar dat1,uchar dat2,uchar dat3)   // 發(fā)24位數(shù)據(jù),按G,B,R發(fā)送
  19. {
  20.         uchar a,b;
  21.         for(a=0;a<8;a++)         //dat1 G
  22.         {
  23.                 if(dat1&0x80)    //從高位端開始發(fā)送
  24.                 {
  25.                         DAI=1;                                // CODE "1",發(fā)送”1“碼
  26.                         for(b=0;b<2;b++)
  27.                         {
  28.                                 _nop_(); _nop_();
  29.                         }
  30.                         DAI=0;        
  31.                 }
  32.                 else
  33.                 {               
  34.                         DAI=1;                                //CODE "0"
  35.                         for(b=0;b<1;b++);//這里是什么意思下面是不是省略了什么
  36.                         DAI=0;         
  37.                         for(b=0;b<1;b++);
  38.                 }
  39.                 dat1=dat1<<1;               
  40.         }
  41.         for(a=0;a<8;a++)                       //dat2 B
  42.         {        
  43.                 if(dat2&0x80)
  44.                 {                  
  45.                         DAI=1;                                              // CODE "1"
  46.                         for(b=0;b<2;b++)
  47.                         {
  48.                         _nop_(); _nop_();
  49.                         }
  50.                         DAI=0;                        
  51.                 }
  52.                 else
  53.                 {               
  54.                         DAI=1;                                //CODE "0"
  55.                         for(b=0;b<1;b++);
  56.                         DAI=0;         
  57.                   for(b=0;b<1;b++);
  58.                 }
  59.                 dat2=dat2<<1;        
  60.         }                                                
  61.         for(a=0;a<8;a++)                      //dat3 R
  62.         {        
  63.                 if(dat3&0x80)
  64.                 {               
  65.                         DAI=1;                                              // CODE "1"
  66.                         for(b=0;b<2;b++)
  67.                         {
  68.                                 _nop_();  _nop_();
  69.                         }
  70.                         DAI=0;
  71.                 }
  72.                 else
  73.                 {        
  74.                         DAI=1;                                //CODE "0"
  75.                         for(b=0;b<1;b++);
  76.                         DAI=0;         
  77.                         for(b=0;b<1;b++);
  78.                 }
  79.                 dat3=dat3<<1;               
  80.         }
  81. }

  82. void rst()
  83. {
  84.         uchar s;
  85.         DAI=0;
  86.         WDT_CONTR|=0x10;     
  87.         for(s=0;s<50;s++);  
  88. }
  89. void Flowing()
  90. {
  91.         uint i;
  92.         uint Stack;
  93.         Stack=0;
  94.         while(1)
  95.         {
  96.                 for(i=0;i<Stack;i++)
  97.                 {
  98.                         send_2811_24bits(255,255,255);
  99.                 }
  100.                 for(i=0;i<Number-Stack;i++)
  101.                 {
  102.                         send_2811_24bits(0,0,0);
  103.                 }
  104.                 rst();
  105.                 Delay(1000);
  106.                 Stack++;
  107.                 if(Stack>Number)
  108.                 {
  109.                         break;
  110.                 }
  111.         }
  112. }
  113. void main()
  114. {
  115.         P3M0=0x04;                 
  116.         P3M1=0x00;
  117.         P32=0;
  118.         WDT_CONTR=0x3F;         
  119.         while(1)
  120.         {
  121.                 Flowing();
  122.         }
  123. }
復(fù)制代碼


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

使用道具 舉報

沙發(fā)
ID:586048 發(fā)表于 2019-9-2 12:20 | 只看該作者
圖片上的
  1. DAI=1;                                //CODE "0"
  2.                         for(b=0;b<1;b++);
  3.                         DAI=0;         
  4.                         for(b=0;b<1;b++);
復(fù)制代碼

是不是少了什么東西?
回復(fù)

使用道具 舉報

板凳
ID:586048 發(fā)表于 2019-9-2 12:29 | 只看該作者
這是ws2812的參數(shù),按圖上來說應(yīng)該發(fā)送時間最少的也要0.35微秒,可是程序這里是沒有高于0.35微秒的,這是為什么,求大神解答內(nèi)部晶振一般都設(shè)置大于27MHz
  1. void send_2811_24bits(uchar dat1,uchar dat2,uchar dat3)   // 發(fā)24位數(shù)據(jù),按G,B,R發(fā)送
  2. {
  3.         uchar a,b;
  4.         for(a=0;a<8;a++)         //dat1 G
  5.         {
  6.                 if(dat1&0x80)    //從高位端開始發(fā)送
  7.                 {
  8.                         DAI=1;                                // CODE "1",發(fā)送”1“碼
  9.                         for(b=0;b<2;b++)
  10.                         {
  11.                                 _nop_(); _nop_();
  12.                         }
  13.                         DAI=0;        
  14.                 }
  15.                 else
  16.                 {               
  17.                         DAI=1;                                //CODE "0"
  18.                         for(b=0;b<1;b++);
  19.                         DAI=0;         
  20.                         for(b=0;b<1;b++);
  21.                 }
  22.                 dat1=dat1<<1;               
  23.         }
  24.         for(a=0;a<8;a++)                       //dat2 B
  25.         {        
  26.                 if(dat2&0x80)
  27.                 {                  
  28.                         DAI=1;                                              // CODE "1"
  29.                         for(b=0;b<2;b++)
  30.                         {
  31.                         _nop_(); _nop_();
  32.                         }
  33.                         DAI=0;                        
  34.                 }
  35.                 else
  36.                 {               
  37.                         DAI=1;                                //CODE "0"
  38.                         for(b=0;b<1;b++);
  39.                         DAI=0;         
  40.                   for(b=0;b<1;b++);
  41.                 }
  42.                 dat2=dat2<<1;        
  43.         }                                                
  44.         for(a=0;a<8;a++)                      //dat3 R
  45.         {        
  46.                 if(dat3&0x80)
  47.                 {               
  48.                         DAI=1;                                              // CODE "1"
  49.                         for(b=0;b<2;b++)
  50.                         {
  51.                                 _nop_();  _nop_();
  52.                         }
  53.                         DAI=0;
  54.                 }
  55.                 else
  56.                 {        
  57.                         DAI=1;                                //CODE "0"
  58.                         for(b=0;b<1;b++);
  59.                         DAI=0;         
  60.                         for(b=0;b<1;b++);
  61.                 }
  62.                 dat3=dat3<<1;               
  63.         }
  64. }
復(fù)制代碼


51hei截圖_20190902122349.png (316.17 KB, 下載次數(shù): 44)

51hei截圖_20190902122349.png

51hei截圖_20190902122407.png (229.69 KB, 下載次數(shù): 51)

51hei截圖_20190902122407.png
回復(fù)

使用道具 舉報

地板
ID:586048 發(fā)表于 2019-9-2 18:23 | 只看該作者
hzw854025403 發(fā)表于 2019-9-2 12:20
圖片上的
是不是少了什么東西?

這里我懂了,后面的“;”是空語句,是延時作用吧
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 老司机狠狠爱 | 欧美综合久久 | 精品av久久久久电影 | 特黄一级 | 久久精品亚洲 | 欧美在线亚洲 | 国产伦一区二区三区 | 国产高清在线精品 | 国产精品福利在线观看 | 在线观看国产www | 成人免费网站视频 | 日韩看片 | 国产午夜精品一区二区 | 黑人精品 | 精品国产精品国产偷麻豆 | 欧美性大战久久久久久久蜜臀 | 亚洲天堂二区 | 亚洲看片网站 | av色噜噜 | 久久久国产视频 | 国产一区二区三区视频在线观看 | 国产精品久久久久久久久免费高清 | 久久精品青青大伊人av | 日韩一区二区三区视频 | 91欧美精品成人综合在线观看 | 国产精品久久久久久婷婷天堂 | 91精品一区二区三区久久久久久 | 免费毛片网站 | 精品久久精品 | 性做久久久久久免费观看欧美 | 精品国产91乱码一区二区三区 | 久久久天天 | 一级片免费视频 | 视频在线一区二区 | 97精品久久 | 亚洲高清在线观看 | 欧美日韩在线成人 | 可以免费观看的av | 久久久无码精品亚洲日韩按摩 | av大片在线| 国产精品日韩一区二区 |