求一个C语言程序,5个74hc595级联驱动40个LED跑马灯的简易程序
2个回答
推荐于2018-03-03 · 知道合伙人教育行家
关注
展开全部
40个LED其实可以把LED做成矩阵方式连接,就没必要用5片595驱动了啊,你这样感觉硬件电路有点累赘。不过呢你这样做呢程序简单点,是吧。
手上只有2片联级使用的,给你个参考吧,有问题再说
//**********************************
//写595两个字节 行数据
//*****data_A为高字节,data_B是低字节
void WRITER_595A(data_A,data_B)
{
uint i,n;
// data1=datt; //赋值显示数据
for(i=0;i<8;i++) //写入第一字节
{
n=data_A & 0x80;
if(n==0x80)
LS595_DATA_A=1;
else
LS595_DATA_A=0;
LS595_CLOK_A=0;
LS595_CLOK_A=1;
data_A=data_A<<1;
}
for(i=0;i<8;i++) //写入第二字节
{
n=data_B & 0x80;
if(n==0x80)
LS595_DATA_A=1;
else
LS595_DATA_A=0;
LS595_CLOK_A=0;
LS595_CLOK_A=1;
data_B=data_B<<1;
}
LS595_SCLK_A=0;
LS595_SCLK_A=1;
LS595_SCLK_A=0;
}
手上只有2片联级使用的,给你个参考吧,有问题再说
//**********************************
//写595两个字节 行数据
//*****data_A为高字节,data_B是低字节
void WRITER_595A(data_A,data_B)
{
uint i,n;
// data1=datt; //赋值显示数据
for(i=0;i<8;i++) //写入第一字节
{
n=data_A & 0x80;
if(n==0x80)
LS595_DATA_A=1;
else
LS595_DATA_A=0;
LS595_CLOK_A=0;
LS595_CLOK_A=1;
data_A=data_A<<1;
}
for(i=0;i<8;i++) //写入第二字节
{
n=data_B & 0x80;
if(n==0x80)
LS595_DATA_A=1;
else
LS595_DATA_A=0;
LS595_CLOK_A=0;
LS595_CLOK_A=1;
data_B=data_B<<1;
}
LS595_SCLK_A=0;
LS595_SCLK_A=1;
LS595_SCLK_A=0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询