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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

4X4X4光立方制作(含全套設計資料)有焊接視頻 單片機代碼

[復制鏈接]
跳轉到指定樓層
樓主
這是一個4x4x4的光立方,附件內有源程序和原理圖,制作較為簡單。

元件名稱               數量
萬用板                   1
紅藍雙色超高亮長腳LED        70
40P圓排母               2
5MMLED 間隔柱              5
5MM七彩LED                4
15MM銅柱                  4
DC005線                   1
DC005座                  1
25V470UF電解電容           1
1K電阻                  4
40P芯片底座              1
STC12C5A60S              1
22P 瓷片電容              3
11.0592M晶振              1
單芯導線               1

整形LED ,每個LED都整形如下圖:

444光立方LED支架焊接1

444光立方LED支架焊接2

444光立方焊接方法2

器件準備


制作過程1

制作過程2

成品

原理圖

程序參考

  1. #include <stc12c5a60s2.h>
  2. #include <intrins.h>

  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. #define MAX_Delay  8
  6. #define MIN_Delay  1

  7. sbit S_1 = P1 ^ 1;
  8. sbit S_2 = P1 ^ 2;
  9. unsigned int pwm;
  10. unsigned char TimeDelay = 10;
  11. unsigned char Mode = 1;
  12. unsigned char code tabP2[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};  //掃描
  13. uchar  s=0;

  14. void DELAY_MS (uchar i){
  15. //        unsigned int i;
  16. //        while( --a != 0){
  17. //                for(i = 0; i < 600; i++);
  18. //        }
  19.         uchar x,j;
  20.         for(j=0;j<i;j++)
  21.         for(x=0;x<=148;x++);        
  22. }

  23. void Adc_Delay (uint a){  
  24.         uint i;                                      
  25.         while( --a != 0){
  26.                 for(i = 0; i < 600; i++);
  27.                 }
  28. }

  29. void Delay(uint z)
  30. {
  31.         uint x,y;
  32.         for(x=80;x>0;x--)
  33.         for(y=z;y>0;y--);
  34. }

  35. void timer1_init()
  36. {
  37.         TMOD |= 0x10;
  38.         TH1 = 0;
  39.         TL1 = 0;
  40.         ET1 = 1;
  41.         TR1 = 1;
  42.         EA = 1;
  43. }

  44. /*******************************************************************************
  45. **********************         AD轉換函數               **************/
  46. /******************************************************************************/
  47. unsigned char Read (unsigned char CHA)
  48. {
  49.         unsigned char AD_FIN=0; //存儲A/D轉換標志
  50.     CHA &= 0x07;            //選擇ADC的8個接口中的一個(0000 0111 清0高5位)
  51.     ADC_CONTR = 0x00;                //ADC轉換的速度(0XX0 0000 其中XX控制速度,請根據數據手冊設置)
  52.     _nop_();
  53.     ADC_CONTR |= CHA;       //選擇A/D當前通道
  54.     _nop_();
  55.     ADC_CONTR |= 0x80;      //啟動A/D電源
  56.     Adc_Delay(1);            //使輸入電壓達到穩定(1ms即可)
  57.     ADC_CONTR |= 0x08;      //啟動A/D轉換(0000 1000 令ADCS = 1)
  58.         _nop_();
  59.         _nop_();
  60.         _nop_();
  61.         _nop_();
  62.     while (AD_FIN ==0)
  63.         {                                                                     //等待A/D轉換結束
  64.         AD_FIN = (ADC_CONTR & 0x10); //0001 0000測試A/D轉換結束否
  65.     }
  66.     ADC_CONTR &= 0xE7;      //1111 0111 清ADC_FLAG位, 關閉A/D轉換,
  67. return (ADC_RES);          //返回A/D轉換結果(8位)
  68. }

  69. /*******************************************************************************
  70. *************     AD電容式觸摸按鍵檢測程序        ******************/
  71. /*********************************************************************************************/

  72. //bit 1表示有感應物,0表示沒有感應物 S1
  73. /**********************************************************************************************/
  74. bit S1(void)
  75. {
  76.         unsigned char R,mm=0,i,j,k;
  77.         bit aa;
  78.                 j=0;k=0;
  79.                 for(i=0;i<10;i++)
  80.                 {               //一次采集數據的數量
  81.                           Adc_Delay(3);
  82.                         R=Read(1);  //讀對應的口,觸發對應的觸摸按鍵

  83.                         if(R<0x2f)
  84.                         {                         //此參數可調整感應靈敏度值在0x01到0x2F
  85.                                 k++;               
  86.                         }
  87.                         if(R == 0xFF)
  88.                         {
  89.                                 j++;        
  90.                         }
  91.                 }
  92.                 if(k>1 && j>1)
  93.                 {
  94.                         mm++;
  95.                 }
  96.                 else
  97.                 {
  98.                         mm=0;
  99.                 }

  100.         if(mm>0)
  101.         {
  102.                 aa =1;
  103.         }
  104.         else
  105.         {
  106.                 aa=0;
  107.         }
  108. return(aa);
  109. }

  110. /*********************************************************************************************/
  111.                         //                  S2
  112. /**********************************************************************************************/
  113. bit S2(void)
  114. {
  115.         unsigned char R,mm=0,i,j,k;
  116.         bit aa;
  117.                 j=0;k=0;
  118.                 for(i=0;i<10;i++)
  119.                 { //一次采集數據的數量
  120.                         Adc_Delay(3);
  121.                         R=Read(2);

  122.                         if(R<0x2F)
  123.                         { //此參數可調整感應靈敏度值在0x01到0x2F
  124.                                 k++;               
  125.                         }
  126.                         if(R == 0xFF)
  127.                         {
  128.                                 j++;        
  129.                         }
  130.                 }
  131.                 if(k>1 && j>1)
  132.                 {
  133.                         mm++;
  134.                 }
  135.                 else
  136.                 {
  137.                         mm=0;
  138.                 }        

  139.         if(mm>0)
  140.         {
  141.                 aa =1;
  142.         }
  143.         else
  144.         {
  145.                 aa=0;
  146.         }
  147. return(aa);                                                                                                                        

  148. }

  149. //結束呼吸燈專用
  150. uchar code table[]={
  151. 0,0,1,2,3,4,5,6,7,8,9,10,
  152. 11,12,13,14,15,16,17,18,
  153. 19,20,21,22,23,24,25,26,27,
  154. 28,29,30,31,32,33,34,35,36,
  155. 37,38,39,40,41,42,43,44,45,
  156. 46,47,48,49,50,51,52,53,54,
  157. 55,56,57,58,59,60,61,62,63,
  158. 64,65,66,67,68,69,70,71,72,
  159. 73,74,75,76,77,78,79,80,81,82,
  160. 83,84,85,86,87,88,89,90,91,
  161. 92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,
  162. 110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,
  163. };

  164. void PwmUp(uint a, uchar c)
  165. {
  166.         uchar i;
  167.         if(c == 1)
  168.                 P3 = 0X00;
  169.         else
  170.                 P0 = 0X00;
  171.         P2 = 0X00;
  172.         i = table[a];
  173.         Delay(i);
  174.         if(c == 1)
  175.                 P3 = 0XFF;
  176.         else
  177.                 P0 = 0XFF;
  178.         P2 = 0X00;
  179.         Delay(150-i);
  180. }

  181. void PwmDown(uint a,uchar c)
  182. {
  183.         uchar i;
  184.         if(c == 1)
  185.                 P3 = 0XFF;
  186.         else
  187.                 P0 = 0XFF;
  188.         P2 = 0X00;
  189.         i = table[a];
  190.         Delay(i);
  191.         if(c == 1)
  192.                 P3 = 0X00;
  193.         else
  194.                 P0 = 0X00;
  195.         P2 = 0X00;
  196.         Delay(150-i);        
  197. }


  198. void PwmAllon(uchar c)
  199. {
  200.         int i;
  201.         for(i = 0; i < 150 ;i++)
  202.         {
  203.                 PwmDown(i,c);        
  204.         }
  205.         if(c == 1)
  206.                 P3 = 0X00;
  207.         else
  208.                 P0 = 0X00;
  209.         P2 = 0X00;
  210. }

  211. void PwmOff(uchar c)
  212. {
  213.         int i;
  214. //        P3 = 0XFF;
  215. //        P2 = 0X00;
  216. //        Delay(100);

  217.         for(i = 0; i < 150; i++)
  218.         {
  219.                  PwmUp(i,c);        
  220.         }

  221.         //P3 = 0X00;
  222. }

  223. void Allfalloff(uchar c,uchar time)  //由全亮到下落關閉只剩一排
  224. {
  225.         unsigned char code tabP0[5][8]={
  226.         {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
  227.         {0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF},
  228.         {0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF},
  229.         {0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF},
  230.         {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  231.         };
  232.         int j,k,i;
  233.         if(c==1)
  234.                 P3 = 0X00;
  235.         else if(c==2)
  236.                 P0 = 0X00;
  237.         else
  238.                 {
  239.                         P3 = 0XFF;
  240.                         P0 = 0XFF;
  241.                 }
  242.         for(j=0;j<5;j++)
  243.         {
  244.                 for(k=0;k<15;k++)
  245.                 {
  246.                         for(i=0;i<8;i++)
  247.                         {}
  248. ............完整程序在附件
復制代碼

全部資料51hei下載地址:
4X4X4光立方資料.rar (403.38 KB, 下載次數: 27)
焊接視頻和制作相關圖片.rar (1.1 MB, 下載次數: 17)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:1061818 發表于 2023-1-30 20:16 | 只看該作者
工程量浩大呀!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕一区二区三区 | 成人精品视频免费 | 国产一区二区在线91 | 日本三级电影免费观看 | 一区二区在线 | 亚洲黄色视屏 | 精品欧美一区二区三区久久久 | 欧美视频三区 | 在线看日韩av | 亚洲一区二区三区久久 | 日韩欧美视频在线 | 久久久久久91 | 中文字幕在线第一页 | 欧美舔穴| 久久精品视频亚洲 | 韩国av一区二区 | 一级黄色片在线免费观看 | 91精品在线观看入口 | 成人一区二区三区视频 | 亚洲欧美日韩成人在线 | 欧美一级在线 | 亚洲国产精品一区二区久久 | 久久精品国产a三级三级三级 | 亚洲交性 | 国产精品欧美精品 | 国产一区二区三区 | 精品免费国产 | 韩国精品一区 | 久久99精品久久久 | 福利视频大全 | 国产精品福利在线观看 | 亚洲欧洲成人av每日更新 | 亚洲一区二区三区 | 日韩一区二区在线看 | 成人性视频免费网站 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 精品欧美一区二区中文字幕视频 | 国产免费va| 麻豆va| 999久久久 | 久久精品黄色 |