【一】 看懂電路圖
每一個電子制作都必須有電路才能算是一個完整的系統,電路就好比四通八達的道路,連接著各地。下面就以51的最小系統為例,向大家介紹一下這個電路
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg
圖中的黃色部分便是STC89C52芯片,芯片上有32個帶字母P的引腳,分為4組,每組8個引腳,這些引腳是可以作為數據輸入輸出的接口。
40號引腳,即帶有VCC的那個是系統的正極,接電源的正極(VCC表示直流正極);
20號引腳,即帶有GND的那個是系統的共地端,接電源的負極(GND可以理解為負極)。
C1、C2是兩個瓷片電容,電容值在20-30pf都可以;
C3是一個電解電容,有正負極之分,電容值在10-22uf都可以
XTAL表示晶振,51單片機一般可以使用頻率為8-24MHZ的晶振;
R1是一個阻值為10千歐的電阻;
RST是一個按鍵,用來實現系統的手動復位(類似于重啟系統);
值得注意的是,單片機的P0口,即32-39號引腳在使用中需要上拉電阻,如下圖。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image003.png
可以選擇用8個10K的電阻逐個鏈接,也可以采用現成的9腳排阻。排阻外觀如下,
排阻就是連在一起的電阻,使用起來更加方便。
以上便是我認為能做出來這個搖搖棒的基礎知識。
下面我們開始制作好玩又有趣的搖搖棒吧。
一、 材料準備
1.發光二級管16個,推薦使用藍色霧狀LED,顯示效果好。也可以選用自己喜歡的顏色,但是電壓范圍最好在2.7-3.3V之間,若是其他范圍則需在電路中做相應調整。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.png
2. 洞洞板,125px*175px一個,當然不局限于這個面積,主要是焊接電路用的。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpg
3.51最小系統板,一個。新手建議還是去淘寶上買現成的51板吧,30-50元,不會再貴的。如果沒有臺式機的9針串口,那就買可以實現USB下載的系統板。如果了解51系統,可以自己焊一個,成本不會超過10元的。
4.IN4007二極管一個。
5.10K電阻一個。
6.開關一個,用來切換畫面。
7.飛線若干,飛線就是連接電路的導線,手里廢棄的充電器的電線都可以使用。
三、電路原理
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg Gary_zhang5: 回復 ST丶爵士艸震 :怎么會呢?兩個端口還需要加一個三腳的排阻嗎?排阻可是一排電阻 2015-5-18 13:34回復
下面為大家詳細介紹一下。
中間的那部分便是51最小系統,下面的ISP是一個下載端口,買現成的51板的話可以忽略這部分。
右邊便是最主要的制作部分。首先用萬用表逐個測量二極管是否能正常工作,可以使用萬用表的通斷路檔,分別將萬用表的黑線和紅線接在LED的兩個引腳上,注意正負極,如果LED能正常發光,說明二極管沒有問題。十六個LED整齊地排成一排,盡量保持間距相等。將所有LED的正極接在一起,這里要說明的是,LED有兩個引腳,長正短負,也就是說把所有的長腳接在一起,通過4007二極管連接在電路的正極。一定要注意二極管和LED的電流方向,4007二極管有銀色圈的那一端是負極。
焊接的時候可以直接將LED焊在洞洞板上,洞洞板可以做適當的裁剪。下面是網上比較流行的效果圖。(無意盜用,若涉及侵權請聯系本人)在此保留原圖水印。
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg
將LED焊接在洞洞板之后,可以用剪刀剪去多余的引腳,看起來更加美觀。
接IN4007的正極和51板的正極是連在一起的,這里電源用3接5號電池就可以。
在P3_0出接一個按鍵開關,用來切換畫面。我們采用的開關有四個腳,其中兩兩相通,我們先用萬用表的通路檔檢查可作為開關的那一組腳,然后再進行焊接。這里最好像電路圖中那樣加上一個10K的電阻。
現在只剩下LED的負極了,按照先后順序,從第一個燈開始,依次和單片機的P0_0一直到P2_7鏈接起來,這里要注意鏈接順序。
因為單片機上是按照P0_0到P0_7,P2_7到P2_0的順序來排列的,而我們焊接的時候要按照P0_0到P0_7,P2_0到P2_7的順序來焊接,因為這樣的順序方便編寫程序。
到這里,所有的硬件工作就完成了,下面我加上網上流行的一個程序,是用C語言編寫的。
#include<reg52.h>
int i,j;
sbit key=P3^0;
int k;
void delay(unsigned char t) //**
{ //延
unsignedchar m,n; //時
for(m=0;m<t;m++) //函
for(n=0;n<180;n++); //數
} //**
void key() //**
{ //**
if(key==0) //**
{ //**
delay(10); //**
if(key==0) //按
{ //鍵
k++; //檢
while(!key); //測
if(k>5) //**
k=0; //**
} //**
} //**
} //**
unsigned char code tuan_1[]={
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xd7,0xfb,0xdb,0xf7,0xdd,0xcd,0xde,0x3d,
0xd9,0x3d,0xc7,0xcb,0xfb,0xfb,0xe7,0xf7,
0x0f,0xcf,0xe8,0x3f,0xef,0x9f,0xef,0xe7,
0xeb,0xf3,0xe7,0xf9,0xef,0xfb,0xff,0xff,
0xfd,0xfd,0x7d,0xfb,0x8c,0x07,0xdf,0xfb,
0xff,0xfd,0xc0,0x1d,0xdf,0xbd,0xbf,0x7d,
0xbf,0xfd,0xc0,0x05,0xdf,0xfd,0xdf,0xbd,
0xdf,0xdd,0xc0,0x3d,0xff,0xfd,0xff,0xff,
0xfe,0xff,0xfd,0xff,0xf0,0x01,0xcb,0xff,
0x3d,0xf7,0xfb,0xcf,0xe6,0x3f,0x0f,0x7b,
0xaf,0xfd,0xe8,0x03,0xef,0xff,0xee,0xff,
0xeb,0x3f,0xc7,0xc7,0xef,0xef,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; //歡迎你
unsigned char code tuan_2[]={
0xff,0xff,0xfd,0xfe,0xbd,0xfd,0xbd,0xfb,
0xbd,0xf7,0xbd,0xef,0xbd,0x9f,0x80,0x7f,
0xbd,0xbf,0xbd,0xdf,0xbd,0xef,0xbd,0xf7,
0xbd,0xf3,0xbd,0xf9,0xfd,0xfb,0xff,0xff,
0xff,0xff,0xfd,0xfe,0xbd,0xfd,0xbd,0xfb,
0xbd,0xf7,0xbd,0xef,0xbd,0x9f,0x80,0x7f,
0xbd,0xbf,0xbd,0xdf,0xbd,0xef,0xbd,0xf7,
0xbd,0xf3,0xbd,0xf9,0xfd,0xfb,0xff,0xff,
0xf1,0xff,0xff,0xff,0x00,0x00,0xef,0xff,
0xf2,0xfe,0xee,0xfd,0xee,0xf3,0xee,0x8f,
0x00,0x7f,0xee,0x9f,0xee,0xef,0xee,0xf3,
0xe0,0xf9,0xfe,0xfc,0xfe,0xfd,0xff,0xff,
0xff,0xff,0xff,0xfb,0xfd,0xe7,0xc0,0xcf,
0xdd,0x1f,0xdd,0xb7,0xdd,0xfb,0x9d,0xfd,
0xa0,0x03,0xbd,0xff,0x3d,0xff,0x3d,0xbf,
0xbd,0xcf,0xfd,0xe3,0xff,0xf7,0xff,0xff}; //天天快樂
unsigned char code tuan_3[]={
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0x7f,0xfe,0x7f,0xfe,0x00,0x00,
0x00,0x00,0x7f,0xfe,0x7f,0xfe,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xf1,0xff,0xe0,0xff,
0xc0,0x7f,0x80,0x3f,0x00,0x1f,0x00,0x0f,
0x00,0x07,0x80,0x03,0xc0,0x01,0xf0,0x00,
0xc0,0x01,0x80,0x03,0x00,0x07,0x00,0x0f,
0x00,0x1f,0x80,0x3f,0xc0,0x7f,0xe0,0xff,
0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0x00,0x03,0x00,0x01,
0x00,0x01,0xff,0xf8,0xff,0xf8,0xff,0xf8,
0xff,0xf8,0xff,0xf8,0xff,0xf8,0xff,0xf8,
0xff,0xf8,0x00,0x00,0x00,0x01,0x00,0x03,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//I? U
unsigned char code tuan_0[]={
0xff,0xff,0xff,0xff,0xe0,0x0f,0xed,0xdf,
0xed,0xdf,0xed,0xdf,0xed,0xdf,0x00,0x03,
0xed,0xdd,0xed,0xdd,0xed,0xdd,0xed,0xdd,
0xe0,0x0d,0xff,0xfd,0xff,0xf1,0xff,0xff,
0xff,0x7f,0xff,0x7f,0xbf,0x7f,0xbf,0x7f,
0xbf,0x7f,0xbf,0x7d,0xbf,0x7e,0xb8,0x01,
0xb7,0x7f,0xaf,0x7f,0x9f,0x7f,0xbf,0x7f,
0xff,0x7f,0xfe,0x7f,0xff,0x7f,0xff,0xff,
0xef,0x7f,0xef,0x7d,0xee,0xfe,0x00,0x01,
0xed,0xff,0xeb,0xfd,0xff,0xfd,0xec,0xfb,
0xed,0x37,0xed,0xcf,0x01,0xcf,0xed,0xb7,
0xec,0x7b,0xed,0xf9,0xef,0xfb,0xff,0xff,
0xf7,0xf7,0xf7,0xf7,0xf7,0xef,0xf7,0xdf,
0xf7,0xbf,0xf6,0x7f,0xf5,0xff,0x00,0x01,
0xf5,0xff,0xf6,0xff,0xb7,0x7f,0xd7,0x9f,
0xf7,0xcf,0xf7,0xe7,0xf7,0xef,0xff,0xff};//電子技術
unsigned char code tuan_4[]={
0xff,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff,
0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff,
0xfe,0xff,0xfe,0xff,0xfe,0xff,0xfe,0xff,
0xfe,0xff,0xfc,0xff,0xfe,0xff,0xff,0xff,
0xff,0x7f,0xfe,0xfd,0xf9,0xfd,0x87,0x7d,
0xf7,0x7d,0xf7,0x7d,0xf7,0x7d,0xf7,0x7d,
0x00,0x01,0xb7,0x7d,0xf7,0x7d,0xf7,0x7d,
0xe6,0x7d,0xf7,0x79,0xff,0xfd,0xff,0xff,
0xff,0xbf,0xdf,0x7f,0xde,0xff,0xdd,0xff,
0xd8,0x00,0xd3,0x6f,0xcb,0x6f,0x1b,0x6f,
0xdb,0x6b,0xdb,0x6d,0xdb,0x6c,0xd8,0x01,
0xdf,0xff,0xdf,0xff,0xdf,0xff,0xff,0xff,
0xfe,0xff,0xfd,0xff,0xf0,0x01,0xcb,0xff,
0x3d,0xf7,0xfb,0xcf,0xe6,0x3f,0x0f,0x7b,
0xaf,0xfd,0xe8,0x03,0xef,0xff,0xee,0xff,
0xeb,0x3f,0xc7,0xc7,0xef,0xef,0xff,0xff};//一生有你
unsigned char code tuan_5[]={
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xf8,0x1f,0xe7,0xe7,0xdf,0xfb,
0xbf,0xfd,0x7f,0xfe,0x7f,0xfe,0xff,0xff,
0xff,0xef,0xc1,0xdf,0xbf,0xaf,0x7f,0xe7,
0xbf,0xf3,0xc1,0xf1,0xff,0xf1,0xff,0xf1,
0xff,0xf1,0xff,0xf1,0xff,0xf1,0xc1,0xf1,
0xbf,0xf3,0x7f,0xe7,0xbf,0xaf,0xc1,0xdf,
0xff,0xef,0xff,0xff,0x7f,0xfe,0x7f,0xfe,
0xbf,0xfd,0xdf,0xfb,0xe7,0xe7,0xf8,0x1f,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//(^-^)
void LED() //LED顯示
{
for(i=0,j=1;i<=127,j<=128;i=i+2,j=j+2)
{
if(k==0)
{
P1=tuan_0,P3=tuan_0[j];
delay(1);
}
elseif(k==1)
{
P1=tuan_1,P3=tuan_1[j];
delay(1);
}
elseif(k==2)
{
P1=tuan_2,P3=tuan_2[j];
delay(1);
}
elseif(k==3)
{
P1=tuan_3,P3=tuan_3[j];
delay(1);
}
elseif(k==4)
{
P1=tuan_4,P3=tuan_4[j];
delay(1);
}
elseif(k==5)
{
P1=tuan_5,P3=tuan_5[j];
delay(1);
}
}
}
void main(void) //主函數
{
while(1)
{
key();
LED();
}
}
把程序下載進你的單片機,享受你自己制作的搖搖棒吧!
|