一、硬方面 1.LED:CUBE4光立方需要64個(gè)LED,LED的顏色可以自己隨意挑選紅 黃 藍(lán) 綠 白,個(gè)人推薦霧狀藍(lán)色LED,夜晚效果超屌。 2.單片機(jī):單片機(jī)上采用程序空間大的,運(yùn)行速度快的STC12C60S2單片機(jī)。如果你覺得大了,你可以選擇28腳的,能保證有16個(gè)IO口控制LED的亮滅。也能自己擴(kuò)展光立方功能。 3. 一個(gè)12Mhz晶振,兩個(gè)30pF電容,搭建單片機(jī)的最小系統(tǒng) 4.上拉電阻:為了提高LED亮度,選用200歐2/1W的。(可加可不加) 5.電源:5V電源。電腦USB口電源或手機(jī)適配器輸出的即可,不需要太苛刻的要求! 二、電路連接 很多人會在這里糾結(jié),到底該怎么連接電路。不用糾結(jié)了,接下來我給大家詳細(xì)說說怎么連接LED。 本光立方采用的電路與LED點(diǎn)陣屏一樣的。接下來看圖。
0.png (553.01 KB, 下載次數(shù): 87)
下載附件
2016-9-24 18:41 上傳
內(nèi)附有取模 模板,可實(shí)現(xiàn)各種漢字,符號在光立方上切換。
從正面看:紅色是LED的正極,正極接下去,中間兩列相連,外面兩列相連接后面依次如此連接。藍(lán)色是LED負(fù)極相連,已經(jīng)標(biāo)出連接到的IO口號上了。 本光立方負(fù)極接到P2口上,所以按照上面的圖,左邊上面第一個(gè)連接到的應(yīng)該是P2.0口。
0.png (427.73 KB, 下載次數(shù): 78)
下載附件
2016-9-24 18:42 上傳
從上面看:IO口號已標(biāo)出,要注意的是中間兩列相連的,如5和5是相連的。外面兩列相連,如0和0相連的。本光立方在這里連的是P0口,0就連接到P0.0上 5就接到P0.5上 說說上拉電阻:在IO口連接到LED正極的基礎(chǔ)上再把電阻連接到VCC和IO口間。好了,硬件就說到這里。有什么不懂的可以加我QQ1323811540.驗(yàn)證信息填光立方三、軟方面本光立方有專用取模軟件,如果你按上面電路連接,只需要在C語言程序中做一些小修改就可以使用了!C語言程序下面我會打包
你可以不用上面的P0,P2口但是 0.1.2.3.4.5.6.7的順序必須同上如果你改了,那就請看下面,怎么在程序中改。首先你需要頭文件#include <STC12C2052AD.h>,如果沒有不用擔(dān)心我已經(jīng)打包了,下載再放到keil頭文件的文件夾里就OK,如果不會自己百~度。動畫我都是封裝到一個(gè)函數(shù)里,看到這里你應(yīng)該打開C程序來對著看找個(gè)短的說明吧!
- void allfalloff() //由全亮到下落關(guān)閉只剩一排 動畫函數(shù)
- {
- unsigned char code tabP0[4][8]={ 把取模取到的數(shù)組直接復(fù)制粘貼到這里
- {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},
- {0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF}, 要改的是數(shù)組標(biāo)號
- {0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF}, tabP0[4][8]
- {0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF} 這里取了4次 所以填寫4
- };
- int j,k,i;
- for(j=0;j<4;j++) 這里的4改成和上面數(shù)組第一維的數(shù)
- {
- for(k=0;k<15;k++) 15是LED點(diǎn)亮的時(shí)間 加大LED點(diǎn)亮?xí)r間加長
- {
- for(i=0;i<8;i++) 這里不用改
- {
- P0=0; 在看到這里 如果你改了IO組號的話,那這里也需要改 P0改成你接到LED正極上的那個(gè)組號
- P2=tabP2; 這里是接到LED負(fù)極上的組號
- P0=tabP0[j]; 這里是正極上的組號
- ys(10); 這里是LED熄滅的時(shí)間。也就是這個(gè)LED亮滅后間隔多少時(shí)間才到下一個(gè) 加大熄滅時(shí)間加長
- }
- }
- }
- }
- 怎么自己加動畫?
- 看完這個(gè)你在和其他函數(shù)做做對比,相信你會懂的
- 不懂還是加我QQ1323811540 驗(yàn)證消息:光立方
- void 函數(shù)名自己定義() //記得加上動畫注釋說明
- {
- unsigned char code tabP0[4][8]={
- 把取模取到的數(shù)組直接貼到這里 在根據(jù)你取模的次數(shù)修改上面的4
- };
- int j,k,i;
- for(j=0;j<4;j++) 這里的4改成和上面數(shù)組第一維的數(shù)
- {
- for(k=0;k<15;k++) 15是LED點(diǎn)亮的時(shí)間 加大LED點(diǎn)亮?xí)r間加長
- {
- for(i=0;i<8;i++) 這里不用改
- {
- P0=0; 在看到這里 如果你改了IO組號的話,那這里也需要改 P0改成你接到LED正極上的那個(gè)組號
- P2=tabP2; 這里是接到LED負(fù)極上的組號
- P0=tabP0[j]; 這里是正極上的組號
- ys(10); 這里是LED熄滅的時(shí)間。也就是這個(gè)LED亮滅后間隔多少時(shí)間才到下一個(gè) 加大熄滅時(shí)間加長
- }
- }
- }
- }
復(fù)制代碼
0.png (28.71 KB, 下載次數(shù): 62)
下載附件
2016-9-24 18:43 上傳
軟件本身無毒,因?yàn)槭且渍Z言編寫,所有360可能會誤報(bào)。請加入白名單打開軟件 上面就是光立方的LED,灰色表示LED熄滅,淡藍(lán)色表示點(diǎn)亮我們看到的是LED的正面。
0.png (32.96 KB, 下載次數(shù): 101)
下載附件
2016-9-24 18:44 上傳
單擊上面的圓點(diǎn)LED自動亮或滅確定圖形后點(diǎn)擊 給我取!這樣你就取得第一幀了、 這里取得的幀數(shù)也就是在上面那個(gè)數(shù)組4要改成的幀數(shù)如果需要,繼續(xù)取模。 方法同上,相信電子愛好者們都會,如果不會的話,那就別.....那什么了。 取模好后直接復(fù)制到上面就好了。
- MAIN()主函數(shù)
- Void main() 一小部分說明
- {
- while(1)
- {
- begin(); //全滅 呼吸亮
- allfalloff(); //由全亮到下落關(guān)閉只剩一排 直接把動畫函數(shù)粘貼下來就行
- turnR(); //由下面一排轉(zhuǎn)到右面
- righttoleft(); //右面平移到左面
- lefttoright(); //左面平移到右面
- righttoleft(); //右面平移到左面
- lefttoright(); //左面平移到右面
- {
- }
復(fù)制代碼
|