一、實(shí)驗(yàn)?zāi)繕?biāo)
在大板8*8 LED點(diǎn)陣上顯示“O(哦)”“心形”“U”
二.實(shí)驗(yàn)器材
keil軟件,普中燒錄軟件,單片機(jī)
三.實(shí)驗(yàn)原理
8*8點(diǎn)陣由64個發(fā)光二極管組成,且每個發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,點(diǎn)亮點(diǎn)陣中的一個發(fā)光二極管的條件是:對應(yīng)的行為高電平,對應(yīng)列為低電平。顯示的實(shí)質(zhì)就是控制加到行線和列線上的編碼來控制點(diǎn)亮某些發(fā)光二極管,從而顯示出不同發(fā)光點(diǎn)組成的各種字符。
四.實(shí)驗(yàn)過程及結(jié)果


編碼如下:? # include <reg51.h>
? ? ? ? ? #include typedef unsigned int u16;
typedef unsigned char u8;
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
unsigned char code TAB[8]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE};
unsigned char code char code {3}{8}=
{0x00,0x00,0x7E,0x42,0x42,0x42,0x7E,0x00;//O(哦)
0x00,0x1C,0x22,0x11,0x04,0x12,0x24,0x18;//心形
0x00,0x00,0x00,0x3C,0x02,0x3c,0x00,0x00;//U
}
/*******************************************************************************
*函 數(shù) 名? ? ? ? : delay
*函數(shù)功能 :延時函數(shù),i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
*函數(shù)名? ? ? ? : Hc595SendByte(u8 dat)
*函數(shù)功能 :向74HC595發(fā)送一個字節(jié)的數(shù)據(jù)
*輸入? ? ? ? ? : 無
*輸出? ? ? ? : 無
*******************************************************************************/
void Hc595SendByte(u8 dat)
{
u8 a;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
SER=dat>>7;
dat<<=1;
SRCLK=1;
_nop_();
_nop_();
SRCLK=0;
}
RCLK=1;
_nop_();
_nop_();
RCLK=0;
}
/*******************************************************************************
*函 數(shù) 名? ? ? : main
*函數(shù)功能 :主函數(shù)
*輸? ? 入? ? ? : 無
*輸? ? 出? ? : 無
*******************************************************************************/
void main()
{
u8 i;
while(1)
{
P0=0x7f;
for(i=0;i<8;i++)
{
P0=ledwei[i]; //位選
Hc595SendByte(ledduan[i]); //發(fā)送段選數(shù)據(jù)
delay(100); //延時
Hc595SendByte(0x00);? //消隱
}
}
}
結(jié)果如下: