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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM8單片機RGB三基色LED燈帶控制程序測試成功

  [復制鏈接]
跳轉到指定樓層
樓主
正常情況下紅黃藍三原色,用水粉很難調出標準的其他的顏色...
+=橙色
+=紫色
+=綠色
++=黑色.

粉檸檬黃 = 檸檬黃 + 純白色
= 檸檬黃 + 玫瑰紅
= 檸檬黃 + 玫瑰紅
= 檸檬黃 + 純黑色 + 玫瑰紅
= 檸檬黃 + 純黑色 + 玫瑰紅
粉玫瑰紅 = 純白色 + 玫瑰紅
= 檸檬黃 + 玫瑰紅
= 玫瑰紅 + 純黑色
= 純紫色 + 玫瑰紅
= 玫瑰紅 + 檸檬黃 + 純黑色
= 純白色 + 天藍色
= 草綠色 + 天藍色
= 天藍色 + 純黑色
= 天藍色 + 純黑色 + 純紫色
= 純白色 + 草綠色
= 檸檬黃 + 草綠色
= 草綠色 + 純黑色
= 純白色 + 純紫色
= 玫瑰紅 + 純黑色

大紅+檸檬黃+湖藍——熟褐(其實幾乎可以是黑色)
大紅+檸檬黃——桔黃
檸檬黃+湖藍——草綠,加多了湖藍就是粉綠
大紅+湖藍——紫羅蘭,加多了大紅就是玫瑰紅
大紅+桔黃——中黃
大紅+草綠——熟褐
大紅+紫羅蘭——玫瑰紅
檸檬黃+紫羅蘭——熟褐
檸檬黃+草綠——淺綠
湖藍+紫羅蘭——青蓮

要注意調色的比例.很難的。.我畫畫的時候最少要10來種顏色....

顏色的品種變化無盡、絢麗多彩,但各種顏色之間存在一定的內在聯系,每一種
顏色都可用3個參數來確定,即色調、明度和飽和度。色調是彩色彼此相互區別的特
征,決定于光源的色譜組成和物體表面所發射的各波長對人眼產生的感覺,可區別
紅、黃、綠、藍、紫等特征。明度,也稱為亮度,是表示物體表面明暗程度變化的特
征值;通過比較各種顏色的明度,顏色就有了明這和深暗之分。飽和度,也稱為彩
度,是表示物體表面顏色濃淡的特征值,使色彩有了鮮艷與陰晦之別。色調、明度和
飽和度構成了一個立體,用這三者建立標度,我們就能用數字來測量顏色。
自然界的顏色千變萬化,但最基本的是紅、黃、、藍三種,稱為原色。以這三種
原色按不同比例調配混合而成的另一種顏色,稱為復色,從圖4-1中可知顏色的拼色
關系。例如紅+=橙;藍+=綠;橙色和綠色稱為復色。圖4-2顯示了色彩拼色的顏
色圈,三原色拼成的復色,其在顏色圈中與其對應的另一個色為補色。例如,黃與藍
拼成綠色,對應的紅色是綠色的補色。

在配色中,加入白色將原色或復色沖淡,就可得到飽和度不同的顏色;加入
不同分量的黑色,可得到明度不同的各種色彩。補色加入復色中會使顏色變暗、
甚至變為灰色或黑色。調色、成色與補色的關系,見表4-10
4-10 調色、成色與其補色關系
調色 成色補色
紅與黃
藍與黃
黃與紅
紫與綠
綠與橙
橙與紫


橄欖
檸檬
赤褐



紫、紅

1 檸檬黃-檸檬黃-淡黃-中黃-土黃-桔黃-桔紅-赭石-熟褐
-肉色-朱紅玫瑰紅-大紅--深紅-紫羅蘭-青蓮
-粉綠-淡綠-淺綠-草綠-翠綠-橄欖綠-墨綠
-天藍-鈷藍-群青-藍蓮-湖藍-普藍-
按調色盒相近的顏色排列(可以減輕顏色相混時對色純度的影響)
2 白、檸檬黃(冷調黃)
淡黃(暖調黃)、中黃(暖調黃)、土黃(暗調黃)
桔黃(或桔紅)、朱紅(暖調紅)、曙紅(冷調紅)
深紅(用來壓暗紅系的重色)、褚石(很常用的哦)、熟褐(臟臟的重色,不敢多用,但很好用)
玫瑰紅(美麗透明的顏色,爆炸力強,干后反色,少用效果極好)、紫羅蘭(美麗的冷調色)、群青(偏暖的藍)
鈷藍(挺正的藍)、湖藍(冷艷的藍)、普藍(除黑之外最重的色,用來加重畫面的重色)
淡綠(偏暖的綠)、中綠(用得較多的綠,比較正)、深綠(或橄欖綠,用來壓暗綠色系)
粉綠(偏冷,畫蘋果的時候挺好用的)、草綠(不用說了,畫草的時候得勁)、黑(很少用到,但需要備著點)
3 藍色+黃色=白色(其實是帶有點肉色的顏色,因為調色調的很淡,所以說是白色)
其實純白色是調不出來的
藍色+黃色=看是什么黃
如果是檸檬黃那就是草綠
土黃是深綠
淡黃或中黃是淺綠
看自己加藍多還是黃多
美術有3原色:
+=
+=
+=
朱紅+譜藍=黑色
不想要黑色太黑,可以多加點藍或紅。當然在畫大面積的空間時比如大快布,背景等可以添加其他顏色,使黑色變的亮些,透出其色彩豐富
紅色+綠色=黃色
綠色+藍色=青色
紅色+藍色=品紅
4 原色 原色是指不能用其他色混合而成的顏色。而原色則可以混合出許許多多其他的色彩。在依頓色相環中紅、黃、藍為三原色,他把這三種原色的標準定為:
紅:不帶藍也不帶黃味的紅色。
黃:不帶綠也不帶紅味的黃色。
藍:不帶綠也不帶紅味的藍色。
間色 由任意兩個原色混合后的色被稱為間色。那么,三原色就可以調出三個間色來。它們的配合如下:
+=
+=
+=
以上原色色像混合所得的橙、綠、紫既是我們所說的間色。
復色 由一種間色和另一種原色混合而成的色,被稱為復色。復色的配合如下:
+=黃橙
+=紅橙
+=紅紫
+=藍紫
+=藍綠
+=黃綠
所得得六種復色為:黃橙、紅橙、紅紫、藍紫、藍綠、黃綠


玫紅色 + 黃色 = 大紅 ( 朱紅、桔黃、藤黃)  
朱紅色 + 黑色少量 = 啡色
天藍色 + 黃色 = 草綠、嫩綠  
天藍色 + 黑色 + = 淺藍紫
草綠色 + 少量黑色 = 墨綠
天藍色 + 黑色 = 淺灰藍
天藍色 + 草綠色 = 藍綠  
白色 + 紅色 + 黑色少量 = 禇石紅
天藍色 + 黑色(少量) = 墨藍
白色 + 黃色 + 黑色 = 熟褐
玫紅色 + 黑色(少量) = 暗紅
紅色 + + = 人物的皮膚顏色
玫紅色 + 白色 = 粉玫紅   
藍色 + 白色 = 粉藍
黃色 + 白色 = 米黃
玫紅色 + 黃色 = 大紅 ( 朱紅、桔黃、藤黃 )
朱紅色 + 黑色少量 = 啡色
天藍色 + 黃色 = 草綠、嫩綠
天藍色 + 黑色 + = 淺藍紫
草綠色 + 少量黑色 = 墨綠
天藍色 + 黑色 = 淺灰藍
天藍色 + 草綠色 = 藍綠
白色 + 紅色 + 黑色少量 = 禇石紅
天藍色 + 黑色(少量) = 墨藍
白色 + 黃色 + 黑色 = 熟褐
玫紅色 + 黑色(少量) = 暗紅
紅色 + + = 人物的皮膚顏色
玫紅色 + 白色 = 粉玫紅
藍色 + 白色 = 粉藍
黃色 + 白色 = 米黃
粉檸檬黃 = 檸檬黃 + 純白色
= 檸檬黃 + 玫瑰紅
= 檸檬黃 + 玫瑰紅
= 檸檬黃 + 純黑色 + 玫瑰紅
= 檸檬黃 + 純黑色 + 玫瑰紅
粉玫瑰紅 = 純白色 + 玫瑰紅
= 檸檬黃 + 玫瑰紅
= 玫瑰紅 + 純黑色
= 純紫色 + 玫瑰紅
= 玫瑰紅 + 檸檬黃 + 純黑色
= 純白色 + 天藍色
= 草綠色 + 天藍色
= 天藍色 + 純黑色
= 天藍色 + 純黑色 + 純紫色
= 純白色 + 草綠色
= 檸檬黃 + 草綠色
= 草綠色 + 純黑色
= 純白色 + 純紫色
    = 玫瑰紅 + 純黑色

單片機源程序如下:
  1. /***********************************************/
  2. /*************電摩LED燈帶控制,三基色5050LED燈帶********/
  3. #include "reg52.h"
  4. /*************三個NMOS增強型,對地開關控制燈帶RGB三根線********/
  5. /***********************************************/
  6. #define uchar unsigned char
  7. #define uint  unsigned int

  8. /***********************************************/
  9. sbit RedLed=P3^5;
  10. sbit GreenLed=P3^7;
  11. sbit BlueLed=P3^4;           
  12. /***********************************************/
  13. uint RedLedDuty;   //最大10000
  14. uint GreenLedDuty; //最大10ms
  15. uint BlueLedDuty;  //最大10ms
  16. uint T0InterCnt;  //定時器中斷計數
  17. uint T0flag;
  18. bit  ShaCheFlag;
  19. uint ShaCheCnt;
  20. /***********************************************/
  21. void LiuShuiDeng();
  22. void DanSeJianAn();
  23. void DanSeJianLiang();
  24. void ShanShuo(uint R,uint G,uint B,uint DelayTime,uint Count);
  25. void LiangDuPeiZhi(uint R,uint G,uint B);
  26. void LedInit();
  27. void delayms(uint k);
  28. void delays(uint k);
  29. /***********************************************/
  30. void main()
  31. {
  32.         ShaCheCnt=0;
  33.         ShaCheFlag=0;
  34.         delayms(1000);
  35.         T0InterCnt=0;
  36.         RedLed=1;
  37.         GreenLed=1;
  38.         BlueLed=1;
  39.         delays(3);
  40.         T0InterCnt=0;
  41.         RedLed=0;
  42.         GreenLed=0;
  43.         BlueLed=0;
  44.         delays(3);
  45.         LedInit();
  46.         while(1)
  47.         {
  48.                 //外部中斷里用了閃爍函數,函數里有延時函數,測試發現,會出現外部中斷幾次后,程序卡死。加入初始化后解決。
  49.                 LedInit();        //一個整循環完畢后,下次循環之前最好重新初始化一下,防止某些地方關閉中斷后,不再開啟,陷入死循環
  50.                 if(ShaCheCnt<3)
  51.                 LiuShuiDeng();
  52.                 if(ShaCheCnt<3)
  53.                 DanSeJianAn();        
  54.                 if(ShaCheCnt<3)        
  55.                 ShanShuo(1,0,0,100,30);
  56.                 if(ShaCheCnt<3)
  57.                 ShanShuo(0,1,0,100,30);
  58.                 if(ShaCheCnt<3)
  59.                 ShanShuo(0,0,1,100,30);
  60.                 if(ShaCheCnt<3)
  61.                 DanSeJianLiang();
  62.                 if(ShaCheCnt<3)
  63.                 {
  64.                         RedLed=1;
  65.                         GreenLed=1;
  66.                         BlueLed=1;
  67.                         delays(3);
  68.                 }
  69.                 if(ShaCheCnt<3)
  70.                 ShanShuo(1,1,1,100,50);
  71.                 delays(2);
  72.         }

  73. }

  74. /***********************************************/
  75. void LedInit()
  76. {
  77.         EA=0;                 //關閉EA
  78.         T0flag=0;
  79.         T0InterCnt=0;
  80.         TMOD=0x02;//T0方式2
  81.         TH0=100%256;
  82.         TL0=100%256;        
  83.         EX1=1;
  84.         IT1=0; //外部中斷邊沿觸發
  85.         ET0=1; //開T0中斷
  86.         TR0=1;
  87.         EA=1;
  88. }
  89. /***********************************************/
  90. // 外部按鍵中斷 1
  91. void ExInt1()  interrupt 2 using 2        //外部中斷1                  
  92. {
  93.         TR0=0; //關閉定時器,出了外部中斷再繼續計數。防止某些卡死現象
  94.         EA=0;
  95.         ShaCheFlag=!ShaCheFlag;
  96.         ShaCheCnt++;
  97.         if(ShaCheCnt>6)
  98.         ShaCheCnt=0;
  99.         if(ShaCheCnt==1)
  100.     ShanShuo(0,0,1,100,6);
  101.         if(ShaCheCnt==2)
  102.     ShanShuo(1,0,1,100,6);
  103.         if(ShaCheCnt==3)
  104.     ShanShuo(0,1,1,100,6);
  105.         if(ShaCheCnt==4)
  106.         ShanShuo(1,0,0,100,6);
  107.         if(ShaCheCnt==5)
  108.     ShanShuo(1,1,0,100,6);
  109.         TR0=1;
  110.         EA=1;
  111. }


  112. /***********************************************/
  113. void time0() interrupt 1 using 2//定時器0中斷
  114. {   
  115.         T0InterCnt++;
  116.         if(T0InterCnt*100>=RedLedDuty)
  117.         {
  118.           RedLed=0;
  119.         }
  120.     if(T0InterCnt*100>=GreenLedDuty)
  121.         {
  122.           GreenLed=0;
  123.         }
  124.     if(T0InterCnt*100>=BlueLedDuty)
  125.         {
  126.           BlueLed=0;
  127.         }
  128.         if(T0InterCnt*100>10001)
  129.         {
  130.                 T0InterCnt=0;
  131.                 T0flag=1;
  132.                 EA=0;
  133.                 TR0=0;
  134.                 TF0=0;
  135.         }
  136. }

  137. /**************七彩流水燈***********************/
  138. void LiuShuiDeng()
  139. {
  140.         uint WaitCnt;
  141.         T0InterCnt=0;
  142.         RedLed=0;
  143.         GreenLed=0;
  144.         BlueLed=0;
  145.         WaitCnt=200;
  146.         while(WaitCnt--)
  147.         {
  148.                 LiangDuPeiZhi(10000,0,0);          //紅
  149.                 while(!T0flag);
  150.         }
  151.         WaitCnt=200;
  152.         while(WaitCnt--)
  153.         {
  154.                 LiangDuPeiZhi(10000,1000,0); //橙
  155.                 while(!T0flag);
  156.         }
  157.         WaitCnt=200;
  158.         while(WaitCnt--)
  159.         {
  160.                 LiangDuPeiZhi(10000,3000,0); //黃
  161.                 while(!T0flag);
  162.         }
  163.         WaitCnt=200;
  164.         while(WaitCnt--)
  165.         {
  166.                 LiangDuPeiZhi(0,10000,0);          //綠
  167.                 while(!T0flag);
  168.         }
  169.         WaitCnt=200;
  170.         while(WaitCnt--)
  171.         {
  172.                 LiangDuPeiZhi(0,10000,5000);        //青
  173.                 while(!T0flag);
  174.         }
  175.         WaitCnt=200;
  176.         while(WaitCnt--)
  177.         {
  178.                 LiangDuPeiZhi(0,0,10000);          //藍
  179.                 while(!T0flag);
  180.         }
  181.         WaitCnt=200;
  182.         while(WaitCnt--)
  183.         {
  184.                 LiangDuPeiZhi(10000,0,10000);  //紫
  185.                 while(!T0flag);
  186.         }

  187. }

  188. /***************單色漸暗***************************/
  189. void DanSeJianAn()
  190. {
  191.         uint DecTime,WaitTime,j;
  192.         T0InterCnt=0;
  193.         RedLed=0;
  194.         GreenLed=0;
  195.         BlueLed=0;
  196.         delays(2);
  197.         DecTime=10000;
  198.         WaitTime=100;
  199.         while(WaitTime)
  200.         {
  201.           for(j=0;j<15;j++)
  202.           {
  203.                 LiangDuPeiZhi(DecTime,0,0);          //紅
  204.                 while(!T0flag);
  205.                 T0flag=0;
  206.           }
  207.           DecTime-=100;
  208.           WaitTime--;         
  209.         }

  210.         delays(2);
  211.         DecTime=10000;
  212.         WaitTime=100;
  213.         while(WaitTime)
  214.         {
  215.           for(j=0;j<15;j++)
  216.           {
  217.                 LiangDuPeiZhi(0,DecTime,0);          //綠
  218.                 while(!T0flag);
  219.                 T0flag=0;
  220.           }
  221.           DecTime-=100;
  222.           WaitTime--;  
  223.         }
  224.         delays(2);
  225.         DecTime=10000;
  226.         WaitTime=100;
  227.         while(WaitTime)
  228.         {
  229.           for(j=0;j<15;j++)
  230.           {
  231.                 LiangDuPeiZhi(0,0,DecTime);          //藍
  232.                 while(!T0flag);
  233.                 T0flag=0;
  234.           }
  235.           DecTime-=100;
  236.           WaitTime--;
  237.         }

  238. }

  239. /**************單色漸亮*****************************/
  240. void DanSeJianLiang()
  241. {
  242.         uint AddTime,WaitTime,j;
  243.         T0InterCnt=0;
  244.         RedLed=0;
  245.         GreenLed=0;
  246.         BlueLed=0;
  247.         AddTime=0;
  248.         WaitTime=100;
  249.         while(WaitTime)
  250.         {
  251.           for(j=0;j<15;j++)
  252.           {
  253.                   LiangDuPeiZhi(AddTime,0,0);          //紅
  254.                 while(!T0flag);
  255.                 T0flag=0;
  256.           }
  257.           AddTime+=100;
  258.           WaitTime--;
  259.         }
  260.         delays(2);
  261.         AddTime=0;
  262.         WaitTime=100;
  263.         while(WaitTime)
  264.         {
  265.           for(j=0;j<15;j++)
  266.           {
  267.                   LiangDuPeiZhi(0,AddTime,0);          //綠
  268.                 while(!T0flag);
  269.                 T0flag=0;
  270.           }
  271.           AddTime+=100;
  272.           WaitTime--;
  273.         }
  274.         delays(2);
  275.         AddTime=0;
  276.         WaitTime=100;
  277.         while(WaitTime)
  278.         {
  279.           for(j=0;j<15;j++)
  280.           {
  281.                   LiangDuPeiZhi(0,0,AddTime);          //藍
  282.             while(!T0flag);
  283.                 T0flag=0;
  284.           }
  285.           AddTime+=100;
  286.           WaitTime--;
  287.         }

  288. }

  289. /***************單燈閃爍*****************************/
  290. void ShanShuo(uint R,uint G,uint B,uint DelayTime,uint Count)
  291. {
  292.         T0InterCnt=0;
  293.         RedLed=R;
  294.         GreenLed=G;
  295.         BlueLed=B;
  296.         
  297.         while(Count--)
  298.         {
  299.                 RedLed=R;
  300.                 GreenLed=G;
  301.                 BlueLed=B;
  302.                 delayms(DelayTime);
  303.                 if(R)
  304.                 {
  305.                         RedLed=!RedLed;                   //紅        
  306.                 }
  307.                 if(G)
  308.                 {
  309.                         GreenLed=!GreenLed;          //綠        
  310.                 }
  311.             if(B)
  312.                 {
  313.                         BlueLed=!BlueLed;          //藍        
  314.                 }
  315.                 delayms(DelayTime);
  316.         }

  317. }
  318. /***********************************************/

  319. void LiangDuPeiZhi(uint R,uint G,uint B)
  320. {
  321.         EA=0;                 //關閉EA
  322.         RedLed=0;
  323.         GreenLed=0;
  324.         BlueLed=0;
  325.         T0InterCnt=0;
  326.         RedLedDuty=R;//
  327.         if(RedLedDuty<1)
  328.         {
  329.                 RedLed=0;
  330.         }
  331.         else
  332.          RedLed=1;
  333.         
  334.         GreenLedDuty=G;
  335.         if(GreenLedDuty<1)
  336.         {
  337.                 GreenLed=0;
  338.         }
  339. ……………………

  340. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
RGB-三基色LED燈帶控制-測試成功.rar (3.81 MB, 下載次數: 205)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:345562 發表于 2019-3-1 08:12 | 只看該作者
好平臺,好資源。
回復

使用道具 舉報

板凳
ID:285069 發表于 2019-3-1 11:08 | 只看該作者
看來樓主把色系攪混在一起了;發射光譜用的是RGB;吸收光譜用的是CMYK.
畫畫調水彩或油彩的顏料,本身不發光,是吸收掉其他光,再反射出剩餘光,才表現顏色;是吸收光譜所以用CMYK.
(洋紅,靛藍,黃,黑)看看噴墨印表機的墨色就知道了.特點是加越多色越黑.所以必須用純白底色紙.
至於會發光的發射光譜用的是RGB;如電腦採色螢幕LCD,用紅/黃/綠三種色光混色,特點是加越多色越白.
所以不發光時必須是純黑背景
回復

使用道具 舉報

地板
ID:116773 發表于 2019-3-1 12:19 | 只看該作者
樓主及樓上的科普知識受教了,謝謝!
回復

使用道具 舉報

5#
ID:303586 發表于 2019-4-16 10:46 | 只看該作者
正在研究這個,學習了。
回復

使用道具 舉報

6#
ID:612579 發表于 2020-2-26 13:37 | 只看該作者
想做控制4020 串聯燈。找不到例子。
回復

使用道具 舉報

7#
ID:723587 發表于 2020-4-6 20:23 來自手機 | 只看該作者
怎么扣了15個黑幣都沒下載到程序
回復

使用道具 舉報

8#
ID:335173 發表于 2020-7-2 16:29 | 只看該作者

好平臺,好資源,謝謝
回復

使用道具 舉報

9#
ID:803374 發表于 2020-7-18 14:14 | 只看該作者
找到了有參考意義的資料,請問大矩陣,比如RGB鍵盤怎么控制
回復

使用道具 舉報

10#
ID:229641 發表于 2020-7-18 23:16 來自手機 | 只看該作者
stm8的頭文件是Reg52?
回復

使用道具 舉報

11#
ID:652804 發表于 2020-12-8 10:13 | 只看該作者
正在研究這個,學習了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 视频一二区 | 国产精品久久久久久高潮 | 亚洲九九精品 | 日韩在线电影 | 欧美一级黄带 | 作爱视频免费观看 | 成人激情免费视频 | 殴美黄色录像 | 中文字幕av网 | 亚洲欧美日韩精品久久亚洲区 | 日本视频在线播放 | 成人在线免费电影 | 国产精品久久一区二区三区 | 久久最新精品视频 | 欧美精品在线一区二区三区 | 精品免费视频 | 成人国产午夜在线观看 | 久久99精品久久久久子伦 | 久久久亚洲一区 | 欧美日韩一区二区三区四区 | 精品一区在线免费观看 | 午夜黄色| 狠狠爱免费视频 | 天堂免费看片 | 亚洲九色 | 成人高清视频在线观看 | 一区二区三区欧美在线观看 | 国产三级日本三级 | 色久五月| 97色在线视频 | 中文字幕一区在线观看视频 | 视频在线观看一区二区 | 91视频一区二区三区 | www.久久影视 | 中文字幕av网站 | 亚洲精品在线看 | 91精品入口蜜桃 | 精品日韩一区二区 | 日韩精品在线一区 | 在线看亚洲 | 国产999精品久久久久久绿帽 |