創作原由:
大多電子愛好者朋友用的40Pin的51單片機做心形流水燈,需要的led量多,焊接時間長,所以本人想著用20Pin的STC11F02E做一個迷你版的心形流水燈。所需led數量少,易焊接,布線。下面給大家介紹這個小制作。有不足的地方可以提出,還望大神指點。(不喜勿噴)
1.jpg (28.01 KB, 下載次數: 53)
下載附件
2017-12-11 16:00 上傳
2.jpg (119.36 KB, 下載次數: 68)
下載附件
2017-12-11 16:00 上傳
從圖中可以看出所需元器件:
1.STC11F02E單片機一片
2.LED燈14個,顏色隨意。
3.1K電阻14個(上拉電阻,單片機IO口輸出很小)
4.電位器(不要也可以,加了調節電壓能調節燈亮度,但是電壓過小,單片機無法正常工作)
5.USB母口(也可以用DC插座,不過不好焊)
6.自鎖開關
7.USB轉TTL (PL2302或者CH340)
8.洞洞板7×9cm
9.面包板(用來測試燈泡好壞,加了上拉之后電阻調整)
10.杜邦線(圖中沒有)
11.漆包線(后面飛線,也可以用杜邦線飛,就是太粗)
大概就這么點元器件,其他焊接工具就不需要說了吧。
STC11F02E引腳圖:
0.jpg (13.76 KB, 下載次數: 61)
下載附件
2017-12-11 16:00 上傳
LED和引腳對應關系:
使用P1.0-1.7和P3.0-3.5一共14個引腳。P1.0對應上面中間的LED,其他一次逆時針焊接。也就是下面中間為P1.7。下面中間右邊一個為P3.0,繼續逆時針。焊接最外圈為GND,VCC在里面。
- /**********************/
- /******心形流水燈******/
- /**********************/
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code table1[]={
- 0x01,0x02,0x04,0x08,
- 0x10,0x20,0x40,0x80};
- uchar code table2[]={
- 0x01,0x02,0x04,0x08,
- 0x10,0x20};
- uchar code table3[]={
- 0x80,0xc0,0xe0,0xf0,
- 0xf8,0xfc,0xfe,0xff};
- uchar code table4[]={
- 0x00,0x01,0x03,0x07,
- 0x0f,0x1f,0x3f};
- void loudou_0(); //左右流水遞增
- void loudou_1(); //左右流水
- void loudou_2(); //左右流水
- void shanshuo(); //加減速閃爍
- void quanliang(); //全量
- void banshan(); //左右半閃
- void liushui_vleft(); //逆時針加速轉
- void liushui_vright(); //順時針加速轉
- void liushui_left(); //逆時針
- void liushui_right(); //順時針
- void delay(uint z)
- {
- uint i,j;
- for(i=z;i>0;i--)
- for(j=110;j>0;j--);
- }
- void main()
- {
-
- while(1)
- {
- loudou_0();
- loudou_1();
- loudou_2();
- loudou_0();
- banshan();
- quanliang();
- shanshuo();
- liushui_right();
- liushui_vright();
- liushui_left();
- liushui_vleft();
- }
-
- }
- /**********************/
- /*半閃*/
- void banshan()
- {
- uint x;
- for(x=0;x<=3;x++)
- {
- P1=0xff;
- P3=0x00;
- delay(1000);
- P1=0x81;
- P3=0x3f;
- delay(1000);
- }
- }
- /**********************/
- /**********************/
- /*流水左右分往下*/
- void loudou_0()
- {
- uint i,j,z;
- for(z=1;z<=8;z++)
- {
- i=1;
- for(j=6;j>=z;j--)
- {
- P1=(table1[i])|(table3[z-1]);
- P3=(table2[j-1])|(table4[z-1]);
- delay(800);
- i++;
- }
- }
-
- }
-
- /**********************/
- /**********************/
- /*流水左右分往下*/
- void loudou_2()
- {
- uint i,j,z;
- for(z=0;z<=1;z++)
- {
- i=1;
- P1=0x01;
- delay(600);
- for(j=6;j>=1;j--)
- {
- P1=table1[i];
- P3=table2[j-1];
- delay(600);
- i++;
- }
- P3=0x00;
- P1=0x00;
- P1=0x80;
- delay(600);
- }
- }
- /**********************/
- /**********************/
- /*流水左右分往下*/
- void loudou_1()
- {
- uint i,j,z;
- for(z=0;z<=2;z++)
- {
- i=1;
- P1=0xfe;
- delay(600);
- for(j=6;j>=1;j--)
- {
- P1=~table1[i];
- P3=~table2[j-1];
- delay(600);
- i++;
- }
- P3=0xff;
- P1=0xff;
- P1=0x7f;
- delay(600);
- }
- }
-
- /**********************/
- /**********************/
- /*流水右轉*/
- void liushui_right()
- {
- uint i,j;
- // for(x=0;x<=1;x++)
- // {
- for(j=6;j>=1;j--)
- {
- P3=~table2[j-1];
- P1=0xff;
- delay(800);
- }
- P3=0x00;
- for(i=8;i>=1;i--)
- {
- P1=~table1[i-1];
- P3=0xff;
- delay(800);
- }
- P1=0x00;
-
- // }
- }
- /**********************/
- /**********************/
- /*流水左轉*/
- void liushui_left()
- {
- uint i,j;
- // for(x=0;x<=1;x++)
- // {
- for(i=0;i<=7;i++)
- {
- P1=~table1[i];
- P3=0xff;
- delay(800);
- }
- P1=0x00;
- for(j=0;j<=5;j++)
- {
- P3=~table2[j];
- P1=0xff;
- delay(800);
- }
- P3=0x00;
-
- // }
- }
- /**********************/
- /**********************/
- /*流水加速*/
- void liushui_vleft()
- {
- uint i,j,y;
- // for(x=0;x<=1;x++)
- // {
- y=900;
- for(i=0;i<=7;i++)
- {
- P1=~table1[i];
- P3=0xff;
- delay(y);
- y=y-100;
- }
- P1=0x00;
- for(j=0;j<=5;j++)
- {
- P3=~table2[j];
- P1=0xff;
- delay(y);
- y=y+150;
- }
- P3=0x00;
- // }
- }
- /**********************/
- /**********************/
- /*流水加速*/
- void liushui_vright()
- {
- uint i,j,y;
- // for(x=0;x<=1;x++)
- // {
- y=900;
- for(j=6;j>=1;j--)
- {
- P3=~table2[j-1];
- P1=0xff;
- delay(y);
- y=y-100;
- }
- P3=0x00;
- for(i=8;i>=1;i--)
- {
- P1=~table1[i-1];
- P3=0xff;
- delay(y);
- y=y+150;
- }
- P1=0x00;
-
- // }
- }
- /**********************/
- void quanliang()
- {
- P1=0xff;
- P3=0xff;
- delay(1000);
- }
- /**********************/
- void shanshuo()
- {
- uint i,j=1000;
- uchar aa=0xff;
- for(i=20;i>0;i--)
- {
- P1=aa;
- P3=aa;
- delay(j);
- j=j-50;
- aa=~aa;
-
- }
- for(i=20;i>0;i--)
- {
- P1=aa;
- P3=aa;
- delay(j);
- j=j+50;
- aa=~aa;
-
- }
- }
- /**********************/
復制代碼
|