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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機驅動TM1809源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:1077009 發表于 2023-6-3 12:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. //========================================================================//
  2. //-----------MCU型號為STC15F104E(程序下載時輸入內置30MHz振蕩)-----------//
  3. //  程序功能:向TM1809低速模式發送3個像素點數據并檢測交流過零信號以實現          //
  4. //  七彩同步漸變循環。          ISP程序下載:P3.0(RXD) P3.1(TXD)      //
  5. //        交流過零檢測輸入:P3.2(采用外部0中斷)      數據輸出:P3.3           //
  6. //========================================================================//

  7. #include<reg52.h>                                 //MCU資源頭文件
  8. #include<intrins.h>                                 //移位函數
  9. #define nop _nop_();
  10. #define uchar unsigned char                 //宏替換,方便書寫
  11. #define uint  unsigned int                 //宏替換,方便書寫

  12. sbit DIO=P3^3;                                  //數據輸出引腳聲明

  13. uchar bdata LED_DAT;                         //可位操作的數據發送暫存變量聲明
  14. sbit bit0=LED_DAT^0;                         //被發送的數據各位定義
  15. sbit bit1=LED_DAT^1;
  16. sbit bit2=LED_DAT^2;
  17. sbit bit3=LED_DAT^3;
  18. sbit bit4=LED_DAT^4;
  19. sbit bit5=LED_DAT^5;
  20. sbit bit6=LED_DAT^6;
  21. sbit bit7=LED_DAT^7;


  22. uint j;                                                         //時間控制全局變量聲明
  23. uchar RR,GG,BB;                                         //RGB灰度值全局變量聲明

  24. void h_dat0();                                         //數碼BIT0
  25. void h_dat1();                                         //數碼BIT1
  26. void fs_rgbdat();                                 //發送RGB灰度數據

  27. void red_jl();                                         //紅色漸亮
  28. void red_jm();                                         //紅色漸滅
  29. void green_jl();                                 //綠色漸亮
  30. void green_jm();                                 //綠色漸滅
  31. void blue_jl();                                         //藍色漸亮
  32. void blue_jm();                                         //藍色漸滅
  33. void white_jl();                                 //白色漸亮
  34. void white_jm();                                 //白色漸滅
  35. void delay_1ms(uint z);                         //延時函數聲明
  36. //*****************************主程序開始*****************************//
  37. void main()
  38. {
  39.     while(1)
  40.     {
  41.         RR=0; GG=0; BB=0;
  42.         fs_rgbdat();                                 //發送RGB灰度數據
  43.         DIO=0;                                                  //數據IO口置0
  44.         delay_1ms(50);                                  //延時100毫秒等待所有MCU復位

  45.         red_jl();                                         //紅色漸亮
  46.         red_jm();                                         //紅色漸滅
  47.         green_jl();                                         //綠色漸亮
  48.         green_jm();                                          //綠色漸滅
  49.         blue_jl();                                         //藍色漸亮
  50.         blue_jm();                                         //藍色漸滅
  51.         white_jl();                                         //白色漸亮
  52.         white_jm();                                         //白色漸滅
  53.     }

  54. }
  55. //*****************************主程序結束*****************************//




  56. //*****************************子程序開始*****************************//
  57. //=======================紅色漸亮=======================//
  58. void red_jl()
  59. {
  60.     uint i;
  61.     RR=0; GG=0; BB=0;
  62.     for(i=0; i<256; i++)                 //白色漸滅
  63.     {
  64.         fs_rgbdat();                                 //發送RGB灰度數據
  65.         DIO=0;                                         //數據IO口置0
  66.         delay_1ms(5);
  67.         RR++;
  68.     }
  69.     RR=255; GG=0; BB=0;
  70. }

  71. //=======================紅色漸滅=======================//
  72. void red_jm()
  73. {
  74.     uint i;
  75.     RR=255; GG=0; BB=0;
  76.     for(i=0; i<256; i++)                 //白色漸滅
  77.     {
  78.         fs_rgbdat();                                 //發送RGB灰度數據
  79.         DIO=0;                                         //數據IO口置0
  80.         delay_1ms(5);
  81.         RR--;
  82.     }
  83.     RR=0; GG=0; BB=0;
  84. }
  85. //=======================綠色漸亮=======================//
  86. void green_jl()
  87. {
  88.     uint i;
  89.     RR=0; GG=0; BB=0;
  90.     for(i=0; i<256; i++)                 //白色漸滅
  91.     {
  92.         fs_rgbdat();                                 //發送RGB灰度數據
  93.         DIO=0;                                         //數據IO口置0
  94.         delay_1ms(5);
  95.         GG++;
  96.     }
  97.     RR=0; GG=255; BB=0;
  98. }

  99. //=======================綠色漸滅=======================//
  100. void green_jm()
  101. {
  102.     uint i;
  103.     RR=0; GG=255; BB=0;
  104.     for(i=0; i<256; i++)                 //白色漸滅
  105.     {
  106.         fs_rgbdat();                                 //發送RGB灰度數據
  107.         DIO=0;                                         //數據IO口置0
  108.         delay_1ms(5);
  109.         GG--;
  110.     }
  111.     RR=0; GG=0; BB=0;
  112. }
  113. //=======================藍色漸亮=======================//
  114. void blue_jl()
  115. {
  116.     uint i;
  117.     RR=0; GG=0; BB=0;
  118.     for(i=0; i<256; i++)                 //白色漸滅
  119.     {
  120.         fs_rgbdat();                                 //發送RGB灰度數據
  121.         DIO=0;                                         //數據IO口置0
  122.         delay_1ms(5);
  123.         BB++;
  124.     }
  125.     RR=0; GG=0; BB=255;
  126. }
  127. //=======================藍色漸滅=======================//
  128. void blue_jm()
  129. {
  130.     uint i;
  131.     RR=0; GG=0; BB=255;
  132.     for(i=0; i<256; i++)                 //白色漸滅
  133.     {
  134.         fs_rgbdat();                                 //發送RGB灰度數據
  135.         DIO=0;                                         //數據IO口置0
  136.         delay_1ms(5);
  137.         BB--;
  138.     }
  139.     RR=0; GG=0; BB=0;
  140. }
  141. //=======================白色漸亮=======================//
  142. void white_jl()
  143. {
  144.     uint i;
  145.     RR=0; GG=0; BB=0;
  146.     for(i=0; i<256; i++)                 //白色漸滅
  147.     {
  148.         fs_rgbdat();                                 //發送RGB灰度數據
  149.         DIO=0;                                         //數據IO口置0
  150.         delay_1ms(5);
  151.         RR++;
  152.         GG++;
  153.         BB++;
  154.     }
  155.     RR=255; GG=255; BB=255;
  156. }
  157. //=======================白色漸滅=======================//
  158. void white_jm()
  159. {
  160.     uint i;
  161.     RR=255; GG=255; BB=255;
  162.     for(i=0; i<256; i++)                 //白色漸滅
  163.     {
  164.         fs_rgbdat();                                 //發送RGB灰度數據
  165.         DIO=0;                                         //數據IO口置0
  166.         delay_1ms(5);
  167.         RR--;
  168.         GG--;
  169.         BB--;
  170.     }
  171.     RR=0; GG=0; BB=0;
  172. }

  173. //=============低速模式數碼BIT0(高電平時間:600ns 低電平時間:1940ns 周期T=2.54US)=============//
  174. void h_dat0()
  175. {
  176.   DIO=1;
  177.   nop; nop; nop; nop; nop;
  178.   nop; nop; nop;
  179.   DIO=0;
  180.   nop; nop; nop; nop; nop;
  181.   nop; nop; nop; nop; nop;
  182.   nop; nop; nop; nop; nop;
  183.   nop; nop; nop; nop; nop;
  184.   nop; nop; nop; nop; nop;
  185.   nop; nop;
  186. }
  187. //=============低速模式數碼BIT1(高電平時間:1840ns 低電平時間:700ns 周期T=2.54US)=============//
  188. void h_dat1()
  189. {
  190.   DIO=1;
  191.   nop; nop; nop; nop; nop;
  192.   nop; nop; nop; nop; nop;
  193.   nop; nop; nop; nop; nop;
  194.   nop; nop; nop; nop; nop;
  195.   nop; nop; nop; nop; nop;
  196.   nop; nop; nop; nop; nop;
  197.   nop; nop; nop; nop; nop;
  198.   DIO=0;
  199. }

  200. //===================發送RGB灰度數據===================//
  201. void fs_rgbdat()                                          //發送RGB灰度數據
  202. {
  203.     uint k;
  204.     for(k=0; k<1024; k++)                         //發送1024個像素點的數據 (燈的封裝與PCB封裝不一致,須按RBG的順序發送數據。。。
  205.     {
  206.         LED_DAT=RR;                                         //紅燈數據賦值給LED_DAT
  207.         if(bit7==1) h_dat1(); else h_dat0();
  208.         if(bit6==1) h_dat1(); else h_dat0();
  209.         if(bit5==1) h_dat1(); else h_dat0();
  210.         if(bit4==1) h_dat1(); else h_dat0();
  211.         if(bit3==1) h_dat1(); else h_dat0();
  212.         if(bit2==1) h_dat1(); else h_dat0();
  213.         if(bit1==1) h_dat1(); else h_dat0();
  214.         if(bit0==1) h_dat1(); else h_dat0();
  215.         LED_DAT=BB;                                         //藍燈數據賦值給LED_DAT
  216.         if(bit7==1) h_dat1(); else h_dat0();
  217.         if(bit6==1) h_dat1(); else h_dat0();
  218.         if(bit5==1) h_dat1(); else h_dat0();
  219.         if(bit4==1) h_dat1(); else h_dat0();
  220.         if(bit3==1) h_dat1(); else h_dat0();
  221.         if(bit2==1) h_dat1(); else h_dat0();
  222.         if(bit1==1) h_dat1(); else h_dat0();
  223.         if(bit0==1) h_dat1(); else h_dat0();
  224.         LED_DAT=GG;                                         //綠燈數據賦值給LED_DAT
  225.         if(bit7==1) h_dat1(); else h_dat0();
  226.         if(bit6==1) h_dat1(); else h_dat0();
  227.         if(bit5==1) h_dat1(); else h_dat0();
  228.         if(bit4==1) h_dat1(); else h_dat0();
  229.         if(bit3==1) h_dat1(); else h_dat0();
  230.         if(bit2==1) h_dat1(); else h_dat0();
  231.         if(bit1==1) h_dat1(); else h_dat0();
  232.         if(bit0==1) h_dat1(); else h_dat0();
  233.     }
  234. }

  235. //========================延時1MS======================//
  236. void delay_1ms(uint z)
  237. {
  238.     uint x,y;
  239.     for(x=z; x>0; x--)
  240.         for(y=2800; y>0; y--);
  241. }
  242. //*****************************程序結束*****************************//
復制代碼


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品欧美一区二区三区不卡 | 日韩免费一区二区 | 久久的色 | 91黄色免费看 | 国产亚洲一区二区三区 | 91精品国产一区二区三区香蕉 | 人人干人人干人人 | 草草草久久久 | 黑人巨大精品欧美一区二区免费 | 在线观看www高清视频 | 91麻豆精品国产91久久久久久久久 | 欧美亚洲日本 | 亚洲成人免费视频在线观看 | 999免费网站| 国产成人精品免费视频大全最热 | 激情av网站| 日韩在线综合 | www久久久| 亚洲高清网 | www国产成人免费观看视频,深夜成人网 | 欧美xxxⅹ性欧美大片 | 免费亚洲网站 | 国产精品精品视频一区二区三区 | 亚洲国产成人在线视频 | 亚洲高清在线视频 | 欧美日本亚洲 | 亚洲免费网址 | 国产精品一区一区三区 | 亚洲欧美精品国产一级在线 | 毛片网站在线观看 | 成人精品在线观看 | 久久综合久色欧美综合狠狠 | 91在线第一页 | 国产99久久 | 欧美激情一区二区三区 | 中文字幕日韩三级 | 高清一区二区视频 | 天天影视亚洲综合网 | 日本三级电影在线观看视频 | 欧洲精品久久久久毛片完整版 | 乳色吐息在线观看 |