單片機(jī)驅(qū)動74HC595的c51程序
掃描二維碼
隨時(shí)隨地手機(jī)看文章
#include
#define uchar unsigned char
#define uint unsigned int
sbit clk=P3^5;
sbit dat=P3^6;
sbit shuo_cun=P3^7;
uchar volatile e,f;
uchar code tab[]={ 0x03,/*0*/
0x9F,/*1*/
0x25,/*2*/
0x0D,/*3*/
0x99,/*4*/
0x49,/*5*/
0x41,/*6*/
0x1F,/*7*/
0x01,/*8*/
0x09,/*9*/
};
void fa_shon(uchar k) //
{
uchar i; //定義循環(huán)變量
for(i=0;i<8;i++) //因?yàn)槭?字節(jié)是8位,所以循環(huán)8次
{
dat=k&0x01; //將要發(fā)送的數(shù)據(jù)與上0X01送到數(shù)據(jù)引腳
clk=0; //時(shí)鐘引腳加低電平
clk=1; //時(shí)鐘引腳加高電平
k>>=1; //將發(fā)送的數(shù)據(jù)右移1位
}
}
void main()
{
TMOD=0x01;
TH0=15535/256;
TL0=15535%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
uchar a;
for(a=0;a<3;a++)
{
fa_shon(tab[e%10]);
fa_shon(tab[e%100/10]);
fa_shon(tab[e/100]);
}
shuo_cun=0; //鎖存為低電平
shuo_cun=1; //鎖存為高電平
}
}
void tt()interrupt 1
{
TH0=15535/256;
TL0=15535%256;
f++;
if(f>10)
{
f=0;
e++;
if(e>250)e=0;
}
}