這是一個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.jpg (57.8 KB, 下載次數: 90)
下載附件
2018-12-23 16:46 上傳
444光立方LED支架焊接1
444光立方LED支架焊接1.jpg (100.61 KB, 下載次數: 75)
下載附件
2018-12-23 16:46 上傳
444光立方LED支架焊接2
444光立方LED支架焊接3.jpg (106.86 KB, 下載次數: 84)
下載附件
2018-12-23 16:46 上傳
444光立方焊接方法2
444光立方焊接方法2.jpg (124.22 KB, 下載次數: 92)
下載附件
2018-12-23 16:47 上傳
器件準備
-301001917.png (1.12 MB, 下載次數: 75)
下載附件
2018-12-23 16:35 上傳
制作過程1
1614011466.png (1.35 MB, 下載次數: 69)
下載附件
2018-12-23 16:35 上傳
制作過程2
1431032521.png (1.05 MB, 下載次數: 84)
下載附件
2018-12-23 16:38 上傳
成品
-760696838.png (834.97 KB, 下載次數: 89)
下載附件
2018-12-23 16:38 上傳
原理圖
QQ截圖20181223162036.png (478.3 KB, 下載次數: 78)
下載附件
2018-12-23 16:39 上傳
QQ截圖20181223164310.png (190.79 KB, 下載次數: 99)
下載附件
2018-12-23 16:43 上傳
程序參考
- #include <stc12c5a60s2.h>
- #include <intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define MAX_Delay 8
- #define MIN_Delay 1
- sbit S_1 = P1 ^ 1;
- sbit S_2 = P1 ^ 2;
- unsigned int pwm;
- unsigned char TimeDelay = 10;
- unsigned char Mode = 1;
- unsigned char code tabP2[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; //掃描
- uchar s=0;
- void DELAY_MS (uchar i){
- // unsigned int i;
- // while( --a != 0){
- // for(i = 0; i < 600; i++);
- // }
- uchar x,j;
- for(j=0;j<i;j++)
- for(x=0;x<=148;x++);
- }
- void Adc_Delay (uint a){
- uint i;
- while( --a != 0){
- for(i = 0; i < 600; i++);
- }
- }
- void Delay(uint z)
- {
- uint x,y;
- for(x=80;x>0;x--)
- for(y=z;y>0;y--);
- }
- void timer1_init()
- {
- TMOD |= 0x10;
- TH1 = 0;
- TL1 = 0;
- ET1 = 1;
- TR1 = 1;
- EA = 1;
- }
- /*******************************************************************************
- ********************** AD轉換函數 **************/
- /******************************************************************************/
- unsigned char Read (unsigned char CHA)
- {
- unsigned char AD_FIN=0; //存儲A/D轉換標志
- CHA &= 0x07; //選擇ADC的8個接口中的一個(0000 0111 清0高5位)
- ADC_CONTR = 0x00; //ADC轉換的速度(0XX0 0000 其中XX控制速度,請根據數據手冊設置)
- _nop_();
- ADC_CONTR |= CHA; //選擇A/D當前通道
- _nop_();
- ADC_CONTR |= 0x80; //啟動A/D電源
- Adc_Delay(1); //使輸入電壓達到穩定(1ms即可)
- ADC_CONTR |= 0x08; //啟動A/D轉換(0000 1000 令ADCS = 1)
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- while (AD_FIN ==0)
- { //等待A/D轉換結束
- AD_FIN = (ADC_CONTR & 0x10); //0001 0000測試A/D轉換結束否
- }
- ADC_CONTR &= 0xE7; //1111 0111 清ADC_FLAG位, 關閉A/D轉換,
- return (ADC_RES); //返回A/D轉換結果(8位)
- }
- /*******************************************************************************
- ************* AD電容式觸摸按鍵檢測程序 ******************/
- /*********************************************************************************************/
- //bit 1表示有感應物,0表示沒有感應物 S1
- /**********************************************************************************************/
- bit S1(void)
- {
- unsigned char R,mm=0,i,j,k;
- bit aa;
- j=0;k=0;
- for(i=0;i<10;i++)
- { //一次采集數據的數量
- Adc_Delay(3);
- R=Read(1); //讀對應的口,觸發對應的觸摸按鍵
- if(R<0x2f)
- { //此參數可調整感應靈敏度值在0x01到0x2F
- k++;
- }
- if(R == 0xFF)
- {
- j++;
- }
- }
- if(k>1 && j>1)
- {
- mm++;
- }
- else
- {
- mm=0;
- }
- if(mm>0)
- {
- aa =1;
- }
- else
- {
- aa=0;
- }
- return(aa);
- }
- /*********************************************************************************************/
- // S2
- /**********************************************************************************************/
- bit S2(void)
- {
- unsigned char R,mm=0,i,j,k;
- bit aa;
- j=0;k=0;
- for(i=0;i<10;i++)
- { //一次采集數據的數量
- Adc_Delay(3);
- R=Read(2);
- if(R<0x2F)
- { //此參數可調整感應靈敏度值在0x01到0x2F
- k++;
- }
- if(R == 0xFF)
- {
- j++;
- }
- }
- if(k>1 && j>1)
- {
- mm++;
- }
- else
- {
- mm=0;
- }
- if(mm>0)
- {
- aa =1;
- }
- else
- {
- aa=0;
- }
- return(aa);
- }
- //結束呼吸燈專用
- uchar code table[]={
- 0,0,1,2,3,4,5,6,7,8,9,10,
- 11,12,13,14,15,16,17,18,
- 19,20,21,22,23,24,25,26,27,
- 28,29,30,31,32,33,34,35,36,
- 37,38,39,40,41,42,43,44,45,
- 46,47,48,49,50,51,52,53,54,
- 55,56,57,58,59,60,61,62,63,
- 64,65,66,67,68,69,70,71,72,
- 73,74,75,76,77,78,79,80,81,82,
- 83,84,85,86,87,88,89,90,91,
- 92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,
- 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,
- };
- void PwmUp(uint a, uchar c)
- {
- uchar i;
- if(c == 1)
- P3 = 0X00;
- else
- P0 = 0X00;
- P2 = 0X00;
- i = table[a];
- Delay(i);
- if(c == 1)
- P3 = 0XFF;
- else
- P0 = 0XFF;
- P2 = 0X00;
- Delay(150-i);
- }
- void PwmDown(uint a,uchar c)
- {
- uchar i;
- if(c == 1)
- P3 = 0XFF;
- else
- P0 = 0XFF;
- P2 = 0X00;
- i = table[a];
- Delay(i);
- if(c == 1)
- P3 = 0X00;
- else
- P0 = 0X00;
- P2 = 0X00;
- Delay(150-i);
- }
- void PwmAllon(uchar c)
- {
- int i;
- for(i = 0; i < 150 ;i++)
- {
- PwmDown(i,c);
- }
- if(c == 1)
- P3 = 0X00;
- else
- P0 = 0X00;
- P2 = 0X00;
- }
- void PwmOff(uchar c)
- {
- int i;
- // P3 = 0XFF;
- // P2 = 0X00;
- // Delay(100);
- for(i = 0; i < 150; i++)
- {
- PwmUp(i,c);
- }
- //P3 = 0X00;
- }
- void Allfalloff(uchar c,uchar time) //由全亮到下落關閉只剩一排
- {
- unsigned char code tabP0[5][8]={
- {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
- {0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF},
- {0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF},
- {0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF},
- {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
- };
- int j,k,i;
- if(c==1)
- P3 = 0X00;
- else if(c==2)
- P0 = 0X00;
- else
- {
- P3 = 0XFF;
- P0 = 0XFF;
- }
- for(j=0;j<5;j++)
- {
- for(k=0;k<15;k++)
- {
- for(i=0;i<8;i++)
- {}
- ............完整程序在附件
復制代碼
全部資料51hei下載地址:
4X4X4光立方資料.rar
(403.38 KB, 下載次數: 27)
2018-12-23 17:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
焊接視頻和制作相關圖片.rar
(1.1 MB, 下載次數: 17)
2018-12-23 16:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|