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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2173|回復: 3
打印 上一主題 下一主題
收起左側

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

[復制鏈接]
跳轉到指定樓層
樓主


單片機源程序如下:
  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)   // 發24位數據,按G,B,R發送
  19. {
  20.         uchar a,b;
  21.         for(a=0;a<8;a++)         //dat1 G
  22.         {
  23.                 if(dat1&0x80)    //從高位端開始發送
  24.                 {
  25.                         DAI=1;                                // CODE "1",發送”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. }
復制代碼


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

使用道具 舉報

沙發
ID:586048 發表于 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++);
復制代碼

是不是少了什么東西?
回復

使用道具 舉報

板凳
ID:586048 發表于 2019-9-2 12:29 | 只看該作者
這是ws2812的參數,按圖上來說應該發送時間最少的也要0.35微秒,可是程序這里是沒有高于0.35微秒的,這是為什么,求大神解答內部晶振一般都設置大于27MHz
  1. void send_2811_24bits(uchar dat1,uchar dat2,uchar dat3)   // 發24位數據,按G,B,R發送
  2. {
  3.         uchar a,b;
  4.         for(a=0;a<8;a++)         //dat1 G
  5.         {
  6.                 if(dat1&0x80)    //從高位端開始發送
  7.                 {
  8.                         DAI=1;                                // CODE "1",發送”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. }
復制代碼


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

51hei截圖_20190902122349.png

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

51hei截圖_20190902122407.png
回復

使用道具 舉報

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

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩av在线不卡 | 欧美片网站免费 | 99久久亚洲 | 国产中文字幕在线观看 | 草久久久 | 午夜精品一区二区三区在线观看 | 亚洲精品456 | 日本久久福利 | 久久亚洲一区二区 | 国产欧美精品一区二区 | 91 在线| 午夜精品 | 国产精品揄拍一区二区久久国内亚洲精 | 精品免费看 | 国产亚韩 | 91在线视频网址 | 欧美1区2区| 亚洲一区毛片 | 国产午夜精品一区二区三区四区 | 日韩欧美三级 | 黄色亚洲网站 | 亚洲精品电影网在线观看 | 亚洲一区国产精品 | 亚洲va中文字幕 | 国产精品1 | 在线观看国产精品一区二区 | 日韩和的一区二区 | 日韩在线视频一区 | 国产婷婷色综合av蜜臀av | 日韩成人一区 | 婷婷99| 亚洲精品福利视频 | 国产精品乱码一二三区的特点 | 伊人精品在线 | 欧美亚洲国产精品 | 四虎影院免费在线 | 天天操夜夜看 | 成人免费视频在线观看 | 日本视频中文字幕 | www.久久.com| 男人天堂网av|