arduino uno与74hc164d驱动数码管

 这是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的代码,我们用的数码管是共阴数码管,具体型号看原理图

猜你喜欢

转载自blog.csdn.net/m0_61181020/article/details/130395206