74hc595芯片數(shù)碼管顯示
74HC595是具有8位移位寄存器和一個存儲器,三態(tài)輸出功能。
移位寄存器和存儲器是分別的時鐘。時鐘線sck在上升沿將數(shù)據(jù)輸入(即由低電平編導高電平),
數(shù)據(jù)在si的上升沿輸入,在si的上升沿進入到存儲寄存器中去。如果兩個時鐘連在一起,則
移位寄存器總是比存儲寄存器早一個脈沖。 移位寄存器有一個串行移位輸入(Ds),
和一個串行輸出(Q7’),和一個異步的低電平復位,存儲寄存器有一個并行8位的,
具備三態(tài)的總線輸出,當使能OE時(為低電平),存儲寄存器的數(shù)據(jù)輸出到總線。
8位串行輸入/輸出或者并行輸出移位寄存器,具有高阻關(guān)斷狀態(tài)。 */
#includereg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rck=P0^0;//對輸出存儲器鎖存時鐘線的位定義
sbit sck=P0^1;//對數(shù)據(jù)輸入時鐘線的位定義
sbit si=P0^2;//對數(shù)據(jù)線的位定義
uchar code num[]={0x80,0xed,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08};//0~9的數(shù)字顯示
void delay(uint time)//延時函數(shù)
{
while(--time);
}
void write_date(uchar temp)//移位寄存器
{
uint i;
for(i=0;i8;i++)
{
temp>>=1;//把輸進來的8位數(shù)據(jù)右移一位,從而最右端的一位溢出
sck=0;//輸入時鐘位低電平
si=CY;//把移位溢出來的數(shù)據(jù)賦給最高位
sck=1;//輸入時鐘位高電平
}
}
void main()//主函數(shù)
{
uint i,j;
for(i=0;i10;i++)
for(j=0;j10;j++)
{
write_date(num[i]);
write_date(num[j]);
rck=0;//數(shù)據(jù)線低電平
rck=1;//數(shù)據(jù)線高電平
delay(100000);//調(diào)用延時函數(shù),使時間變長
}
}
評論