無聊的時候,總要找點事情做,就有了想做個燈的想法,板子是用AD18畫的,,用STC15F104W,實物PCB 下載程序 線畫錯了,上傳的PCB文件改正優化了, 程序呢,由于水平太低, 時間有限,用了最笨的方法,寫的程序有很多可以精簡的,待優化,懶的搞了,運行效果還是挺好的,分享給新手。謝謝。
一個按鍵控制全部燈光效果,長按2秒 關燈
制作出來的實物圖如下:
14d9dfc07d2eadc70b229d99e975e8b.jpg (128.4 KB, 下載次數: 77)
下載附件
亮了之后
2019-10-15 11:23 上傳
d9403dfd83723ac43788c842245fcaf.jpg (137.32 KB, 下載次數: 74)
下載附件
3D圖
2019-10-15 11:23 上傳
8f24f17fd19772c8ed4baff39b0d5fb.jpg (172.26 KB, 下載次數: 86)
下載附件
整體實體樣
2019-10-15 11:23 上傳
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)
0.png (26.33 KB, 下載次數: 94)
下載附件
2019-10-15 16:11 上傳
0.png (18.67 KB, 下載次數: 101)
下載附件
2019-10-15 16:11 上傳
0.png (4.01 KB, 下載次數: 69)
下載附件
2019-10-15 16:11 上傳
單片機源程序如下:
- #include <STC15F2K60S2.H>
- sbit w=P3^3;
- sbit nw=P3^4;
- sbit b=P3^2;
- sbit g=P3^1;
- sbit r=P3^0;
- sbit k=P3^5;
- void ys();
- unsigned char a,c,d,v;
- unsigned int js;
- void yss(unsigned int u);
- void main()
- {
- k=1; r=g=b=w=nw=0; a=b=c=d=0; P3M1=0X00; P3M0=0X1F;//設置P3.0-3.4口為強推模式
- EA=1; // IE 第7位 打開總中斷
- // TF0=0; 清除定時器溢出標志位
- ET0=1; // IE的 第1位 打開定時器中斷
- TR0=0; // TCON的4位 開啟定時0
- TMOD=0X01;//設置定時器方式1,16位定時器。 tmod 是設置定時器工作方式用的定時或計數 ,高4位是定時器1寄存器
- //低4是定時器0 7 GATE,6 C/T,5 M1,4 M0 ,3 GATE,2 C/T ,1,M1 0,M0
- TH0=(65536-922)/256; //裝定時器初值,現在是延時1MS的初值
- TL0=(65536-922)%256;
- // TH0 = 0x0FC;
- // TL0 = 0x66;
- while(1)
- {
- aa: if(k==0){ ys();
- if(k==0&&a==0){a=1;c++;TR0=1;if(c==12){r=0;g=0;b=0;w=0;nw=0;c=0;
-
-
-
-
-
-
-
-
- }
-
-
- switch(c)
-
- { case 0:r=0;g=0;b=0;w=0;nw=0; break;
- case 1: r=0;g=0;b=0;w=1;nw=0;break;
- case 2: r=0;g=0;b=0;w=0;nw=1;break;
- case 3: r=0;g=0;b=0;w=1;nw=1;break;
- case 4: r=1;g=0;b=0;w=0;nw=0;break;
- case 5: r=0;g=1;b=0;w=0;nw=0;break;
- case 6: r=0;g=0;b=1;w=0;nw=0; break;
- case 7: r=1;g=1;b=0;w=0;nw=0; break;
- case 8: r=1;g=0;b=1;w=0;nw=0;break;
- case 9: r=1;g=1;b=1;w=0;nw=0; break;
- case 10: r=1;g=1;b=1;w=1;nw=1 ;break;
-
- }
-
- } }
-
-
- if(c==11&&k==1){
- r=0;g=0;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=1;g=0;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=1;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=1;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=0;w=1;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=0;w=0;nw=1; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=0;w=1;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=1;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=1;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=1;g=0;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=1;g=0;b=0;w=0;nw=0; yss(1500); if(k==0) {c=0; goto aa;}
- r=1;g=1;b=0;w=0;nw=0; yss(1500); if(k==0) {c=0; goto aa;}
- r=1;g=1;b=1;w=0;nw=0; yss(1500); if(k==0) {c=0; goto aa;}
- r=1;g=1;b=1;w=1;nw=0; yss(1500); if(k==0) {c=0; goto aa;}
- r=1;g=1;b=1;w=1;nw=1; yss(1500); if(k==0) {c=0; goto aa;}
-
- r=0;g=0;b=0;w=0;nw=1; yss(1500); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=0;w=1;nw=1; yss(1500); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=1;w=1;nw=1; yss(1500); if(k==0) {c=0; goto aa;}
- r=0;g=1;b=1;w=1;nw=1; yss(1500); if(k==0) {c=0; goto aa;}
- r=1;g=1;b=1;w=1;nw=1; yss(1500); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=1;g=1;b=1;w=1;nw=1; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=1;g=1;b=1;w=1;nw=1; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=1;g=1;b=1;w=1;nw=1; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- r=1;g=1;b=1;w=1;nw=1; yss(1000); if(k==0) {c=0; goto aa;}
- r=0;g=0;b=0;w=0;nw=0; yss(1000); if(k==0) {c=0; goto aa;}
- c=11;
-
- }
- if(a==1&&k==1) {a=0;TR0=0;js=0;v=0;}
- // r=g=b=w=nw=1;
- }
- }
- void ys()
- { unsigned char d,f;
- for(d=0;d<100;d++)
- for(f=0;f<20;f++);
- }
- void dingshi()interrupt 1// 定時器0 優先級是1
- {
-
- TH0=(65536-922)/256; //裝定時器初值,現在是延時1MS的初值
- TL0=(65536-922)%256;
-
- js++; if(js==1000){js=0;v++;if(v==1){r=g=b=w=nw=0;TR0=0;v=0;c=0;}if(v==6){v=0; }
-
-
-
- }
-
- }
- void yss(unsigned int u)
- { unsigned int d,f;
- for(d=0;d<u;d++)
- for(f=0;f<150;f++);
-
- }
復制代碼
所有資料51hei提供下載:
led.rar
(1.03 MB, 下載次數: 30)
2019-10-15 11:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
850ad7c8f94eaa4bc3699e9276356e76.rar
(1.56 MB, 下載次數: 30)
2019-10-15 11:32 上傳
點擊文件名下載附件
視頻顯示效果 下載積分: 黑幣 -5
|