PMS150G+WS2812发红绿蓝白

[复制链接]
 楼主| 34af9uc 发表于 2025-7-6 23:29 | 显示全部楼层 |阅读模式
  1. /******************WS2812**************************/
  2. /**************************************************/
  3. /**************************************************/
  4. /*****************20250705*************************/
  5. //PMS150G    ________   ________
  6. //       5v-|1-vdd   \_/   gnd-8|-gnd
  7. //          |2-pa7         pa0-7|-k1
  8. //          |3-pa6         pa4-6|-k2
  9. //          |4-pa5_________pa3-5|-di→→→→→→→→→
  10. /**************************************************/
  11. //     ________
  12. //0   |  220ns |_____580ns______|
  13. //                      ________
  14. //1   |_____580ns______|  220ns |
  15. //复位|________280us____________|
  16. //R7----R0,G7----G0,B7-----B0;
  17. //   绿       红        蓝
  18. /**************************************************/
  19. #include        "extern.h"
  20. void                fuwei();        //复位;
  21. void                fa0();                //发0;
  22. void                fa1();                //发1;
  23. void                hong();                //红色;
  24. void                lv();                //绿色;
  25. void                lan();                //蓝色;
  26. void                bai();                //白色;
  27. void                hei();                //黑//不亮;
  28. void                qingping();                        //清屏
  29. void                yanshi_500();                //延时500ms;
  30. /**************************************************/
  31. di                        bit                        pa.3;
  32. k1                        bit                        pa.0;
  33. k2                        bit                        pa.4;
  34. /**************************************************/
  35. byte                di_a1;
  36. /**************************************************/
  37. void        FPPA0 (void)
  38. {
  39. /**************************************************/
  40. .ADJUST_IC        SYSCLK=IHRC/2, IHRC=16MHz;
  41. $                        di                low, out;                //输出,低;
  42. $                        k2                in,ph;                        //输入,上拉;
  43. $                        k1                in,ph;                        //输入,上拉;

  44. byte                a1;
  45. /**************************************************/
  46. di                =1;                //释放总线;
  47. fuwei();


  48. while(1)
  49. {
  50. yanshi_500();
  51. if(! k1)
  52. {
  53. fuwei();
  54. a1                =3;
  55. while(a1 --)
  56.         {
  57.         hong();
  58.         lv();
  59.         lan();
  60.         bai();
  61.         hei();
  62.         }
  63. di                =1;
  64. }
  65. yanshi_500();
  66. if(! k2)
  67.         {
  68.         qingping();
  69.         }
  70. di                =1;
  71. }
  72. }

  73. /**************************************************/
  74. void                fuwei()                //复位
  75. {
  76. di                =0;
  77. .delay 100;

  78. }
  79. /**************************************************/
  80. void                fa0()                //发0
  81. {
  82. di                =1;
  83. nop;nop;
  84. di                =0;
  85. nop;nop;nop;nop;
  86. }
  87. /**************************************************/
  88. void                fa1()                //发1
  89. {
  90. di                =1;
  91. nop;nop;nop;nop;
  92. di                =0;
  93. nop;nop;

  94. }
  95. /**************************************************/
  96. void                hong()                //红色
  97. {
  98. di_a1 =8;        while(di_a1 --){fa0();}
  99. di_a1 =7;        while(di_a1 --){fa0();}        fa1();
  100. di_a1 =8;        while(di_a1 --){fa0();}
  101. }
  102. /**************************************************/
  103. void                lv()                //绿色
  104. {
  105. di_a1 =7;        while(di_a1 --){fa0();}        fa1();
  106. di_a1 =8;        while(di_a1 --){fa0();}
  107. di_a1 =8;        while(di_a1 --){fa0();}
  108. }
  109. /**************************************************/
  110. void                lan()                //蓝色
  111. {
  112. di_a1 =8;        while(di_a1 --){fa0();}
  113. di_a1 =8;        while(di_a1 --){fa0();}
  114. di_a1 =7;        while(di_a1 --){fa0();}        fa1();
  115. }
  116. /**************************************************/
  117. void                bai()                //白色
  118. {
  119. di_a1 =7;        while(di_a1 --){fa0();}        fa1();
  120. di_a1 =7;        while(di_a1 --){fa0();}        fa1();
  121. di_a1 =7;        while(di_a1 --){fa0();}        fa1();
  122. }
  123. /**************************************************/
  124. void                hei()                //黑//不亮
  125. {
  126. di_a1 =8;        while(di_a1 --){fa0();}
  127. di_a1 =8;        while(di_a1 --){fa0();}
  128. di_a1 =8;        while(di_a1 --){fa0();}
  129. }
  130. /**************************************************/
  131. void                qingping()                        //清屏
  132. {
  133. di_a1 =240;        while(di_a1 --){fa0();}

  134. }
  135. /**************************************************/
  136. void                yanshi_500()                //延时500ms;
  137. {
  138. .delay 2000000;
  139. }
  140. /**************************************************/


319

主题

487

帖子

63

粉丝
快速回复 在线客服 返回列表 返回顶部

319

主题

487

帖子

63

粉丝
快速回复 在线客服 返回列表 返回顶部