51單片機(jī)點(diǎn)陣設(shè)計(jì)
學(xué)會(huì)了8*8點(diǎn)陣的應(yīng)用,就可以試著做16*16點(diǎn)陣了。16*16點(diǎn)陣就相當(dāng)于4個(gè)8*8點(diǎn)陣拼起來(lái)。8*8點(diǎn)陣有8行8列,16*16點(diǎn)陣就是16行 16列,如果像上面一樣就需要32個(gè)IO口驅(qū)動(dòng),雖說(shuō)51單片機(jī)有32個(gè)IO口可是在實(shí)際應(yīng)用中這32個(gè)IO口不能全部用來(lái)驅(qū)動(dòng)點(diǎn)陣啊。這時(shí)候我們就需要用到另外兩個(gè)芯片74HC595和74HC138
74HC595使用方法http://www.51hei.com/chip/1799.html
74HC138是一個(gè)3到8的譯碼器,下表中列出了該器件的邏輯功能,從表中可以看出其輸出為低電平有效,使能端G1為高電平有效,/G2,/G3為低電平有效,當(dāng)其中一個(gè)為高電平,輸出端全部為1!在中規(guī)模集成電路中譯碼器有幾種型號(hào),使用最廣泛!
電路圖
源程序
#include
#include
unsigned char code NUM[8]={0x00,0x00,0xe00,0x82,0xff,0x80,0x00,0x00};
#define ROW P3
sbit SI=P2^0;
sbit RCK=P2^2;
sbit SCK=P2^1;
void HC595SendData(unsigned char SendVal)
{
unsigned char i;
for(i=0;i<8;i++)
{
if((SendVal<
else SI=0;
SCK=0;
_nop_();
_nop_();
SCK=1;
}
}
void HC595ShowData()
{
RCK=0;
_nop_();
_nop_();
RCK=1;
}
void main(void)
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
HC595SendData(NUM[i]);
ROW=0x00;
HC595ShowData();
ROW=i|0x80;
}
}
}
評(píng)論