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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6832|回復: 8
收起左側

制作分享:stc11F04單片機制作RGB漸變彩燈 附源程序

  [復制鏈接]
ID:577329 發表于 2020-2-27 16:15 | 顯示全部樓層 |閱讀模式
閑著無聊也用單片機做一個RGB漸變彩燈玩一玩。                                                                                                                                                                                           源程序和heⅹ文件放在2樓,有需要的自己下載。

電池供電

電池供電
IMG20200227155313.jpg

自己用覆銅板做的stc11F04最小系統

自己用覆銅板做的stc11F04最小系統

下面是實驗效果圖

下面是實驗效果圖
IMG20200227155519.jpg
IMG20200227155308.jpg
IMG20200227155235_1.jpg
IMG20200227155235.jpg
IMG20200227155232.jpg
IMG20200227155231.jpg
IMG20200227155229.jpg
IMG20200227155219.jpg

評分

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

查看全部評分

回復

使用道具 舉報

ID:577329 發表于 2020-2-27 16:26 | 顯示全部樓層
單片機源程序
  1. /*原理:先亮紅燈(保持一會兒)----紅綠過度(綠加1、紅減1循環240次)------
  2. 綠燈亮起(保持一會兒)----綠蘭過度(蘭加1、綠減1循環240次)-----蘭燈亮起
  3. (保持)-----蘭白過度(綠加1、紅加1循環240次、蘭不變?---白紅過度*/
  4. #include<reg52.h>//MCU頭文件
  5. #define uchar unsigned char//字浮型宏定義
  6. #define uint unsigned int//整型宏定義
  7. #define shudu 30//LED漸變速度調整
  8. #define dengji 1//LED變化等級調整
  9. sbit B1=P1^0;//紅色燈控制IO口
  10. sbit G1=P1^1;//綠色燈控制IO口
  11. sbit R1=P1^2;//蘭色燈控制IO口
  12. uchar Rout,Bout,Gout;//紅綠蘭3個變量
  13. /***************************************************/
  14. /**********************延時子程序*******************/
  15. /***************************************************/
  16. void delay(uint z)
  17. {
  18. uint x,y;//局部變量定義
  19. for(x=0;x<5;x++)//延時外循環
  20. for(y=0;y<z;y++);//延時內循環
  21. }
  22. /**********************************************/
  23. /**********PWM控制紅綠蘭3種燈亮滅時間**********/
  24. /**********************************************/
  25. void RGBpwm(uchar Rou,uchar Gou,uchar Bou)//3個局部變量,些部分為帶參數函數
  26. {
  27. if(Rou!=0)//如果紅燈變量不等于0就亮紅燈
  28. {
  29.   R1=1;//紅燈亮
  30.   delay(Rou);//紅燈亮起時間
  31.   R1=0;//紅燈滅
  32. }
  33. if(Gou!=0)//如果紅燈變量不等于0就亮紅燈
  34. {
  35.   G1=1;//綠燈亮
  36.   delay(Gou);//綠燈亮起的時間 
  37.   G1=0;//綠燈滅
  38. }
  39. if(Bou!=0)//如果紅燈變量不等于0就亮紅燈
  40. {
  41.   B1=1;//蘭燈亮
  42.   delay(Bou);//蘭燈亮起的時間
  43.   B1=0;//蘭燈滅
  44. }
  45. }
  46.   
  47. /***********************************************/
  48. /********************主程序*********************/
  49. /***********************************************/
  50. void main()
  51. {
  52. TMOD=0x01;//選擇定時器在方式1下工作
  53. EA=1;//打開總中斷
  54. ET0=1;//打開定時器中斷
  55. TR0=1;//打開定時器
  56. R1=0;//開機將紅燈關閉
  57. G1=0;//開機將綠燈關閉
  58. B1=0;//開機將蘭燈關閉
  59. TH0=(65536-256)/256;//給定時器高8位賦值
  60. TL0=(65536-256)%256;//給定時器低8位賦值
  61. while(1)//程序主循環
  62. {
  63.   RGBpwm(Rout,Gout,Bout);//調用RGBpwm子程序
  64. }
  65. }
  66. /*************************************************/
  67. /*中斷服務子程序(控制LED紅綠蘭亮滅時間占空比例)*/
  68. /*************************************************/
  69. void zhong() interrupt 1//中斷向量位為1
  70. {
  71. uint num;//定時器計數變量
  72. uint ji;//亮度等級控制變量
  73. TH0=(65536-256)/256;//給定時器高8位賦值
  74. TL0=(65536-256)%256;//給定時器低8位賦值
  75. num++;//將定時計數變自動增加1
  76. if(num==shudu)//如果速度變量等于定時計數器變量就執行下面大括號語句
  77. {
  78.   num=0;//將計數器清0
  79.   ji++;//將亮度等級控制變量加1
  80.   if((ji>0)&&(ji<100))//如果亮度等級控制變量ji小于100,紅燈亮起時間變量為240
  81.   {
  82.    Rout=240;//紅燈亮起變量為240
  83.    Gout=0;//綠燈亮起變量為0
  84.    Bout=0;//蘭燈亮起變量為0
  85.   }
  86.   if((ji>100)&&(ji<340))/*如果亮度等級控制變量ji大于100小于340(剛好240個等級),
  87.   紅燈亮起時間變量由原來的240,慢慢減小到0,同時綠燈由原來的0慢慢增到240,形成
  88.   紅燈到綠燈的漸變過程*/
  89.   {
  90.    Rout-=dengji;//將紅燈變量減1。因為dengji為亮度變化等級(本程序變化等級為1),
  91.    Gout+=dengji;//將綠燈變量加1
  92.    Bout=0;//蘭燈不變
  93.   }
  94.   if((ji>340)&&(ji<440))/*亮度等級控制變量ji大于340小于440時,讓綠燈變量停一段時間
  95.   這樣就形成了當紅燈過度到綠燈時,綠燈會停一會兒的效果。*/
  96.   {
  97.    Rout=0;//紅燈滅
  98.    Gout=240;//綠燈亮
  99.    Bout=0;//蘭燈滅
  100.   }
  101.   if((ji>440)&&(ji<680))//同理:亮度等級控制變量ji大于440小于680時,由綠燈到蘭燈過度
  102.   {
  103.    Rout=0;//紅燈變量不變
  104.    Gout-=dengji;//將綠燈變量減1
  105.    Bout+=dengji;//將蘭燈變量加1
  106.   }
  107.   if((ji>680)&&(ji<780))//亮度等級控制變量ji大于680小于780時,讓蘭燈變量停一段時間
  108.   {
  109.    Rout=0;//紅燈滅
  110.    Gout=0;//綠燈滅
  111.    Bout=240;//蘭燈亮一會兒
  112.   }
  113.   if((ji>780)&&(ji<1020))//亮度等級控制變量ji大于780小于1020時,由蘭燈到白燈過度
  114.   {
  115.    Rout+=dengji;//將紅燈變量加1
  116.    Gout+=dengji;//綠燈變量加1
  117.    Bout=240;//蘭燈不變
  118.   }
  119.   if((ji>1020)&&(ji<1025))//亮度等級控制變量ji大于1020小于1025時,由蘭燈到白燈過度
  120.   {
  121.    Rout=240;//將紅燈變量加1
  122.    Gout=240;//綠燈變量加1
  123.    Bout=240;//蘭燈不變
  124.   }
  125.   if((ji>1025)&&(ji<1265))//亮度等級控制變量ji大于1025小于1265時,由白光到紅光過度
  126.   {
  127.    Rout=240;//紅燈變量不變
  128.    Gout-=dengji;//綠燈變量自動減1
  129.    Bout-=dengji;//蘭燈變量自動減1
  130.   }
  131.   if(ji>1265)//當亮度等級控制變量ji大于1210時,就將它清0
  132.   ji=0;//將亮度控制等級清0
  133. }
  134. }
復制代碼


全部資料51hei下載地址:
rgb彩燈 stc11fxx.rar (20.13 KB, 下載次數: 127)
回復

使用道具 舉報

ID:46065 發表于 2020-2-27 22:16 | 顯示全部樓層
再玩一段時間你會發現這個程序可以非常簡單,加油!!
回復

使用道具 舉報

ID:243394 發表于 2020-4-4 20:23 | 顯示全部樓層
樓主,為什么亮白燈的時候,燈閃爍的很厲害?我把for(x=0;x<5;x++)中的x<5,改為x<2,就不會閃爍,但是白燈的顏色就不是很白了
回復

使用道具 舉報

ID:377382 發表于 2020-4-22 10:44 | 顯示全部樓層
非常不錯
回復

使用道具 舉報

ID:704585 發表于 2020-4-23 14:20 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:1001248 發表于 2022-1-11 09:51 | 顯示全部樓層
程序寫的有些複雜
回復

使用道具 舉報

ID:628588 發表于 2023-10-6 19:26 | 顯示全部樓層
主程序使用延時函數差評
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片视频免费观看 | 国产又粗又猛视频免费 | 成人在线一区二区 | 18精品爽国产白嫩精品 | 黄色a毛片 | 免费黄色网址在线观看 | 中文字幕一区二区三区四区视频 | 九九精品在线视频 | 青青草手机在线视频 | 福利视频网址 | 在线观看的av网站 | 九九在线视频 | 中文字幕欧美激情 | 日韩午夜在线观看 | 亚洲一区二区三区四区在线 | 国产1区2区3区 | 青青视频网 | 国产成人午夜 | 国产一级特黄 | 中文字幕激情 | 国产精品麻豆视频 | 成人免费视频国产免费 | 国产在线色| 国产精品伦 | 成人b站 | 日韩一区二区在线观看视频 | 91精品久久久久久久久久 | 日日日干干干 | 午夜两性 | 久久99精品久久久久久国产越南 | 三级av片| 亚色视频| 免费国产精品视频 | 国产高清视频在线播放 | 久草网站 | 一级特黄妇女高潮 | 国产成人97精品免费看片 | 精品国产乱码久久久久久影片 | 特级丰满少妇一级aaaa爱毛片 | 狠狠操天天干 | 日韩一级av毛片 |