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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

34LED心形燈全部制作資料-STC15單片機主控 3D文件程序PCB

[復制鏈接]
跳轉到指定樓層
樓主
從電路圖設計,到PCB外形定樣,再3D打印外殼支架。初步寫了幾種變化樣式。

心形燈編程IO口示意圖


Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


3d文件.STL


單片機源程序如下:
  1. #include <STC15F2K60S2.H>
  2. //#include <STC15F.H>
  3. #include <intrins.H>

  4. #define SYS_CLK 11059200L                                        //系統晶振頻率
  5. #define uchar  unsigned char
  6. #define uint unsigned int
  7. /*********PCB引腳分布**********/
  8. //   P54
  9. //P0     P2
  10. // P1   P4
  11. //  P55
  12. #define LEDP1 P0         //把PO控制左上8個
  13. #define LEDP2 P1        //把P1控制左下8個
  14. #define LEDP3 P2         //把P2控制右上8個
  15. #define LEDP4 P4        //把P4控制右下8個
  16. sbit L1=        P5^4;                //上中心點LED
  17. sbit L2=P5^5;        //下中心點LED


  18. //========================================================================
  19. // 描述: 延遲10微秒*tus.
  20. // 參數: none.
  21. // 返回: none.
  22. //========================================================================
  23. void delayus(uchar tus)                //@11.0592
  24. {
  25.         uchar i;
  26.         i = tus;
  27.         do
  28.         {
  29.                 //_nop_();_nop_();_nop_();_nop_();_nop_();
  30.                 //_nop_();_nop_();_nop_();_nop_();_nop_();
  31.                 _nop_();_nop_();_nop_();_nop_();_nop_();
  32.         } while (--i);
  33. }
  34. //========================================================================
  35. // 描述: 延遲1毫秒.
  36. // 參數: none.
  37. // 返回: none.
  38. //========================================================================
  39. void delay1ms()        //1毫秒@sys_clk
  40. {
  41.         uchar ms = 1;
  42.         uint i;
  43.         do{
  44.                         i = SYS_CLK / 13000;
  45.                 while(--i)        ;   //14T per loop
  46.          }while(--ms);
  47. }

  48. //========================================================================
  49. // 描述: 延遲指定毫秒.
  50. // 參數: 延遲時間(1-65535).
  51. // 返回: none.
  52. //========================================================================
  53. void delay(uint time)
  54. {
  55.         if(time < 1)
  56.         {
  57.                 time = 1;
  58.         }        
  59.         do { delay1ms();} while (--time);
  60. }
  61. /*****************************************************************************
  62. 函 數 名  : IO_Init()
  63. 功能描述  : IO口初始化
  64. *****************************************************************************/
  65. void IO_Init()
  66. {
  67.         P0M0 = 0x00;
  68.         P0M1 = 0x00;
  69.         P1M0 = 0x00;        
  70.         P1M1 = 0x00;
  71.         P2M0 = 0xC0;
  72.         P2M1 = 0x00;
  73.         P3M0 = 0x00;
  74.         P3M1 = 0x00;
  75.         P4M0 = 0x00;
  76.         P4M1 = 0x00;
  77.         P5M0 = 0x00;
  78.         P5M1 = 0x00;
  79. }

  80. /*********34LED 控制子函數*********/
  81. //34LED全滅
  82. void LED_ALL_OFF()
  83. {
  84.         L1=1;L2=1;
  85.         LEDP1=0xFF;LEDP2=0xFF;
  86.         LEDP3=0xFF;LEDP4=0xFF;
  87. }
  88. //34LED全亮
  89. void LED_ALL_ON()
  90. {
  91.         L1=0;L2=0;
  92.         LEDP1=0x00;LEDP2=0x00;
  93.         LEDP3=0x00;LEDP4=0x00;
  94. }

  95. //奇數偶數燈交替閃n次
  96. void Flash_odd_even(uchar n)
  97. {
  98.         uchar i;
  99.         for(i=0;i<n;i++)
  100.         {
  101.                 L1=0;L2=0;
  102.                 LEDP1=0x55;
  103.                 LEDP2=0x55;
  104.                 LEDP3=0x55;
  105.                 LEDP4=0x55;
  106.                 delay(100);
  107.                 L1=1;L2=1;
  108.                 LEDP1=0xAA;
  109.                 LEDP2=0xAA;
  110.                 LEDP3=0xAA;
  111.                 LEDP4=0xAA;
  112.                 delay(100);
  113.         }
  114. }
  115. //效果全部燈快閃n次
  116. void Flash_all(uchar n)
  117. {
  118.         uchar i;
  119.         for(i=0;i<n;i++)
  120.         {
  121.                 L1=0;L2=0;
  122.                 LEDP1=0x00;
  123.                 LEDP2=0x00;
  124.                 LEDP3=0x0;
  125.                 LEDP4=0x0;
  126.                 delay(60);
  127.                 L1=1;L2=1;
  128.                 LEDP1=0xFF;
  129.                 LEDP2=0xFF;
  130.                 LEDP3=0xFF;
  131.                 LEDP4=0xFF;
  132.                 delay(40);
  133.         }
  134. }
  135. //四組燈交替閃n次
  136. void Flash_LED_Bus(uchar speed,uchar n)
  137. {
  138.         uchar i;
  139.         for(i=0;i<n;i++)
  140.         {
  141.                 L1=0;L2=1;
  142.                 LEDP1=0x00;
  143.                 LEDP2=0xFF;
  144.                 LEDP3=0xFF;
  145.                 LEDP4=0x00;
  146.                 delay(speed);
  147.                 L2=0;L1=1;
  148.                 LEDP1=0xFF;
  149.                 LEDP2=0x00;
  150.                 LEDP3=0x00;
  151.                 LEDP4=0xFF;
  152.                 delay(speed);
  153.         }
  154.         LED_ALL_OFF();delay(200);
  155.         for(i=0;i<n;i++)
  156.         {
  157.                 L1=1;L2=0;
  158.                 LEDP1=0xFF;
  159.                 LEDP2=0x00;
  160.                 LEDP3=0xFF;
  161.                 LEDP4=0x00;
  162.                 delay(speed);
  163.                 L1=0;L2=1;
  164.                 LEDP1=0x00;
  165.                 LEDP2=0xFF;
  166.                 LEDP3=0x00;
  167.                 LEDP4=0xFF;
  168.                 delay(speed);
  169.         }
  170.         LED_ALL_OFF();delay(200);        
  171.         L1=0;L2=0;
  172.         for(i=0;i<n;i++)
  173.         {        
  174.                 LEDP1=0x00;
  175.                 LEDP2=0x00;
  176.                 LEDP3=0xFF;
  177.                 LEDP4=0xFF;
  178.                 delay(speed);
  179.                
  180.                 LEDP1=0xFF;
  181.                 LEDP2=0xFF;
  182.                 LEDP3=0x00;
  183.                 LEDP4=0x00;
  184.                 delay(speed);
  185.         }
  186.         LED_ALL_OFF();
  187. }

  188. //34LED逐個點亮
  189. void One_by_one(uint speed)
  190. {
  191.         uchar i,temp;
  192.         L1=0;delay(speed);
  193.         L1=1;//delay(speed);
  194.         for(temp=0x01,i=0;i<8;i++)
  195.         {
  196.                 LEDP1=~temp;
  197.                 delay(speed);
  198.                 LEDP1=0xFF;
  199.                 //delay(speed);
  200.                 temp=temp<<1;
  201.         }
  202.         for(temp=0x01,i=0;i<8;i++)
  203.         {
  204.                 LEDP2=~temp;
  205.                 delay(speed);
  206.                 LEDP2=0xFF;
  207.                 //delay(speed);
  208.                 temp=temp<<1;
  209.         }
  210.         L2=0;delay(speed);
  211.         L2=1;//delay(speed);
  212.         for(temp=0x80,i=0;i<8;i++)
  213.         {
  214.                 LEDP4=~temp;
  215.                 delay(speed);
  216.                 LEDP4=0xFF;
  217.                 //delay(speed);
  218.                 temp=temp>>1;
  219.         }
  220.         for(temp=0x80,i=0;i<8;i++)
  221.         {
  222.                 LEDP3=~temp;
  223.                 delay(speed);
  224.                 LEDP3=0xFF;
  225.                 //delay(speed);
  226.                 temp=temp>>1;
  227.         }        
  228. }
  229. //上中點向側逐漸點亮(帶漸亮效果)
  230. void Middle_to_side()
  231. {
  232.         uchar i,j;
  233.         L1=L2=1;
  234.         LEDP1=LEDP2=LEDP3=LEDP4=0xFF;
  235.         for(i=0;i<200;i++)
  236.         {
  237.                 for(j=0;j<20;j++)
  238.                 {
  239.                         L1=1;
  240.                         delayus(200-i);        
  241.                         L1=0;
  242.                         delayus(i+1);                        
  243.                 }
  244.         }delay(10);
  245.         for(i=0;i<8;i++)
  246.         {               
  247.                 LEDP1=LEDP1<<1;LEDP3=LEDP3<<1;
  248.                 delay(200);
  249.         }
  250.         for(i=0;i<8;i++)
  251.         {               
  252.                 LEDP2=LEDP2<<1;LEDP4=LEDP4<<1;
  253.                 delay(200);
  254.         }
  255.         L2=0;
  256.         delay(200);
  257.         
  258.         for(i=0;i<200;i++)
  259.         {
  260.                 for(j=0;j<100;j++)
  261.                 {
  262.                         LED_ALL_ON();
  263.                         delayus(200-i);
  264.                         LED_ALL_OFF();
  265.                         delayus(i+1);                        
  266.                 }
  267.         }
  268. }
  269. //兩側朝中間逐列點亮
  270. void Side_to_middle(uint speed)
  271. {
  272.         uchar i,temp1,temp2;
  273.         
  274.         temp1=0x7F;temp2=0xFE;
  275.         for(i=0;i<8;i++)
  276.         {
  277.                 LEDP1=temp1;LEDP3=temp1;
  278.                 LEDP2=temp2;LEDP4=temp2;
  279.                 delay(speed);
  280.                 temp1>>=1;
  281.                 temp2<<=1;
  282.         }
  283.         L1=0;L2=0;delay(speed);
  284.         LED_ALL_OFF();
  285. }
  286. //        效果:所有LED燈挨個點亮,每次多一顆燈亮,等所有LED全
  287. //              亮后,每組I/O口倒循環熄滅再挨個點亮
  288. void One_ON_one_OFF(uint speed)
  289. {
  290.         uchar i,temp;
  291.         //遞增
  292.         L1=0;delay(speed);
  293.         for(temp=0xFE,i=0;i<8;i++)
  294.         {
  295.                 LEDP1=temp;
  296.                 delay(speed);
  297.                 temp=temp<<1;
  298.         }        
  299.         for(temp=0xFE,i=0;i<8;i++)
  300.         {
  301.                 LEDP2=temp;
  302.                 delay(speed);
  303.                 temp=temp<<1;
  304.         }
  305.         L2=0;delay(speed);
  306.         for(temp=0x7F,i=0;i<8;i++)
  307.         {
  308.                 LEDP4=temp;
  309.                 delay(speed);
  310.                 temp=temp>>1;
  311.         }
  312.         for(temp=0x7F,i=0;i<8;i++)
  313.         {
  314.                 LEDP3=temp;
  315.                 delay(speed);
  316.                 temp=temp>>1;
  317.         }
  318.         //遞減
  319.         L1=1;delay(speed);
  320.         for(temp=0x01,i=0;i<8;i++)
  321.         {
  322.                 LEDP1=temp;
  323.                 delay(speed);
  324.                 temp=temp<<1;
  325.                 temp=temp+1;
  326.         }
  327.         for(temp=0x01,i=0;i<8;i++)
  328.         {
  329.                 LEDP2=temp;
  330.                 delay(speed);
  331.                 temp=temp<<1;
  332.                 temp=temp+1;
  333.         }
  334.         L2=1;delay(speed);
  335.         for(temp=0x80,i=0;i<8;i++)
  336.         {
  337.                 LEDP4=temp;
  338.                 delay(speed);
  339.                 temp=temp>>1;
  340.                 temp=temp+0x80;
  341.         }
  342.         for(temp=0x80,i=0;i<8;i++)
  343.         {
  344.                 LEDP3=temp;
  345.                 delay(speed);
  346.                 temp=temp>>1;
  347.                 temp=temp+0x80;
  348.         }
  349. }

  350. //四組燈一起單燈流水(2)上下至中間往復
  351. void Water_all_1()
  352. {
  353.         uchar i,j,temp1,temp2;
  354.         LED_ALL_OFF();
  355.         for(j=0;j<6;j++)
  356.         {        
  357.                 temp1=0x01;
  358.                 temp2=0x80;
  359.                 L1=0;L2=0;delay(50);L1=1;L2=1;        
  360.                 for(i=0;i<8;i++)
  361.                 {        
  362.                         LEDP1=~temp1;
  363.                         LEDP2=~temp2;
  364.                         LEDP3=~temp1;
  365.                         LEDP4=~temp2;        
  366.                         delay(50);
  367.                         temp1<<=1;
  368.                         temp2>>=1;
  369.                 }
  370.                 temp1=0x80;
  371.                 temp2=0x01;
  372.                 for(i=0;i<8;i++)
  373.                 {        
  374.                         LEDP1=~temp1;
  375.                         LEDP2=~temp2;
  376.                         LEDP3=~temp1;
  377.                         LEDP4=~temp2;        
  378.                         delay(50);
  379.                         temp1>>=1;
  380.                         temp2<<=1;
  381.                 }
  382.                 LEDP1=0xFF;
  383.                 LEDP2=0xFF;
  384.                 LEDP3=0xFF;
  385.                 LEDP4=0xFF;        
  386.         }
  387. }
  388. //四組燈一起單燈流水(3)左右搖晃,先左
  389. void Water_all_2(uchar speed)
  390. ……………………

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

51hei附件下載:
項目1 LED花樣彩燈(全套制作資料).rar (1.45 MB, 下載次數: 33)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美日韩一区 | 真人女人一级毛片免费播放 | 欧美无乱码久久久免费午夜一区 | 久久成人国产 | 国产精品日韩欧美一区二区三区 | 亚洲欧美一区二区三区在线 | 久久精品欧美一区二区三区不卡 | 欧美一区二区在线播放 | 欧美精品成人一区二区三区四区 | 福利视频网站 | 91视频久久 | 欧美性大战久久久久久久蜜臀 | 日韩欧美亚洲 | 91免费观看 | 成人小视频在线 | 一区二区三区影院 | 97久久精品 | 亚洲天堂中文字幕 | 精品久久成人 | 丝袜美腿一区二区三区 | 久久久久国产精品一区二区 | 一区二区在线免费观看 | 亚洲精品一区二区三区 | 草逼网站 | 日韩a视频 | 理论片午午伦夜理片影院 | 久久久av | 91手机精品视频 | 成人小视频在线观看 | 久久久久国产一区二区三区四区 | 中文字幕日韩在线 | 亚洲精品一区二区三区四区高清 | 一级毛片大全免费播放 | 成人在线网址 | 97人人超碰| 中文字幕第一页在线 | 看片网站在线 | 狠狠干天天干 | 久久久久国产精品 | 国产精品一区二区精品 | 8x国产精品视频一区二区 |