📄 74ls164.c
字号:
#include<regx51.h>
#define uint unsigned int
#define uchar unsigned char
sbit DAT=P0^6; //模拟串口数据发送端
sbit CLK=P0^7;//模拟时钟控制端
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全灭 (共阳字段表)
void sendbyte(uchar byte)
{
uchar num,c;
num=tab[byte];
for(c=0;c<8;c++)
{
CLK=0;
DAT=num&0x80; //(0x80即十进制的128, 二进制的10000000 按位发送)
CLK=1;
num<<=1;
}
}
void delay()
{unsigned char t;
unsigned int j;
for(t=2;t>0;t--)
for(j=125;j>0;j--);
//{;}
}
main()
{ int h;
unsigned char ge=0,shi=0,bai=0,qian=0,wan=0,shiwan=0;
while(1)
{
for(h=0;h<125;h++)
{delay();
sendbyte(ge); //P0=P0&0XDF;
P0_0=1;
P0_1=1;
P0_2=1;
P0_3=1;
P0_4=1;
P0_5=0;
delay();
sendbyte(shi);
P0_0=1;
P0_1=1;
P0_2=1;
P0_3=1;
P0_4=0;
P0_5=1;
delay();
sendbyte(bai);
P0_0=1;
P0_1=1;
P0_2=1;
P0_3=0;
P0_4=1;
P0_5=1;
delay();
sendbyte(qian);
P0_0=1;
P0_1=1;
P0_2=0;
P0_3=1;
P0_4=1;
P0_5=1;
delay();
sendbyte(wan);
P0_0=1;
P0_1=0;
P0_2=1;
P0_3=1;
P0_4=1;
P0_5=1;
delay();
sendbyte(shiwan);
P0_0=0;
P0_1=1;
P0_2=1;
P0_3=1;
P0_4=1;
P0_5=1;
if(ge==10)
{shi++;
ge=0;
if(shi==10)
{bai++;
shi=0;
if(bai==10)
{qian++;
bai=0;
if(qian==10)
{wan++;
qian=0;
if(wan==10)
{shiwan++;
wan=0;
if(shiwan==10)
shiwan=0;
}
}
}
}
}
}
ge++; }
}
/* for(h=0;h<125;h++)
{
delay();
sendbyte(1);
P0_0=0;
P0_1=1;
P0_2=1;
delay();
sendbyte(2);
P0_0=1;
P0_1=0;
P0_2=1;
delay();
sendbyte(3);
P0_0=1;
P0_1=1;
P0_2=0;
}
}
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -