这是74hc164d与数码管接的原理图
其中的D11和D10可以随便接arduino的两个数字引脚
//*******************************************第一层:接入层**********************************//
//第一步:设置红绿灯模块连接引脚
//第二步:定义数码管数组字段0-9码
//共阴数码管把com端接地,其他要点亮的某段就接高电平;共阳数码管把com接高电平,其他需要点亮的某段就接地
//若数码管共阳,则低电平有效,所对应的16进制表示方式,为:0-0xc0,1-0xf9,2-0xa4,3-0xb0,4-0x99,5-0x92,6-0x82,7-0xf8,8-0x80,9-0x90
//若数码管共阴则高电平有效,所对应的16进制表示方式为 0-0x7f,1-0x06,2-0x5b,3-0x4f,4-0x66,5-0x6d,6-0x7d,7-0x07,8-7f,9-0x6f
int num[10]={0x7f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//十六进制数组表示1~9的数码管字段码
//1100 0000
//hgfe dcba
//0111 1111
//hgfe dcba
//第三步:设置传感器引脚输入输出状态
void setup()
{
pinMode (A0, OUTPUT);//将5号引脚设置为数码管输出
pinMode (A1, OUTPUT);//将6号引脚设置为数码管输出
}
//*******************************************第二层:中间层**********************************//
/**************************************************************************************
红灯函数
**************************************************************************************/
void redled(void)//红灯一直亮 9倒数计时至1
{
int k=10;//循环次数
while(k--)
{
shiftOut(A1,A0, MSBFIRST, num[k]);//大端传输数组的字段码给数码管显示数字
delay(1000);//延时1秒
}
}
//第三层:业务层(按实现的业务流程调用功能模块,按照每一个要实现的业务功能定义为一步)
void loop()
{
// shiftOut(5, 6, MSBFIRST, num[0]);
//delay(1000);
// shiftOut(5, 6, MSBFIRST, num[1]);
// delay(1000);
// shiftOut(5, 6, MSBFIRST, num[2]);
// delay(1000);
redled();
}
这个是ardunio的代码,我们用的数码管是共阴数码管,具体型号看原理图