Arduino 74HC595驱动数码管0-9循环显示+Proteus仿真

438 篇文章 1603 订阅 ¥19.90 ¥99.00

Arduino 74HC595驱动数码管0-9循环显示+Proteus仿真


  • Proteus仿真
    在这里插入图片描述

实例代码(do{}while();实现方法)

/*74HC595控制1位共阳数码管
 * 
 * 
 * 
 * 
 * 
  */
unsigned   char  table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

const byte Pin_DS = 11;   //data
const byte Pin_ST_CP = 12;  //latch
const byte Pin_SH_CP = 13; //clock
const byte CT = 10; 
char Buff[1];

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  pinMode(Pin_ST_CP, OUTPUT);//ST_CP
  pinMode(Pin_DS, OUTPUT);//DS
  pinMode(Pin_SH_CP, OUTPUT);//SH_CP
  digitalWrite(Pin_DS, LOW);
   pinMode(CT, OUTPUT);
  digitalWrite(CT, HIGH); 
}

void loop() {
    int i=0;
do{
    digitalWrite(CT, HIGH); 
    digitalWrite(Pin_ST_CP, LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
    shiftOut(Pin_DS, Pin_SH_CP, MSBFIRST, table[i]);//串行数据输出,高位在先 MSBFIRST    
    digitalWrite(Pin_ST_CP, HIGH); //将ST_CP这个针脚恢复到高电平
    delay(500);
    digitalWrite(CT, LOW); 
   i++;
  }
  while(i%=10);//当i等于10时,让i等于0
}


实现方法二(for循环)

/*74HC595控制1位共阳数码管
 * 
 * 

  */
unsigned   char  table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
const byte Pin_DS = 11;   //data
const byte Pin_ST_CP = 12;  //latch
const byte Pin_SH_CP = 13; //clock
const byte CT = 10; 
char Buff[1];

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  pinMode(Pin_ST_CP, OUTPUT);//ST_CP
  pinMode(Pin_DS, OUTPUT);//DS
  pinMode(Pin_SH_CP, OUTPUT);//SH_CP
  digitalWrite(Pin_DS, LOW);
   pinMode(CT, OUTPUT);
  digitalWrite(CT, HIGH); 
}

void loop() {
    int i=0;
 for(;i<10;i++){
    digitalWrite(CT, HIGH); 
    digitalWrite(Pin_ST_CP, LOW); //将ST_CP口上面加低电平让芯片准备好接收数据
    shiftOut(Pin_DS, Pin_SH_CP, MSBFIRST, table[i]);//串行数据输出,高位在先 MSBFIRST   
    digitalWrite(Pin_ST_CP, HIGH); //将ST_CP这个针脚恢复到高电平
    delay(500);
    digitalWrite(CT, LOW); 
   i++;
  }

}


函数介绍

  • shiftOut()

描述:将数据在时钟引脚脉冲控制下按位移出写入到数字引脚。
函数原型:

shiftOut(dataPin, clockPin, bitOrder, value)

参数:
dataPin: 数据输入引脚。
clockPin: 时钟引脚。
bitOrder: 移位顺序。MSBFIRST(高位在前)、LSBFIRST(低位在前)。
value: 需要移位的数据。

  • 返回值:没有。
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Arduino可以使用74HC595芯片来驱动数码管74HC595是一个8位移位寄存器,可以通过串行数据输入控制8个输出引脚的状态。通过将数据从Arduino发送到74HC595,可以控制数码管显示。具体的接线和代码实现可以参考相关的教程和资料。 ### 回答2: Arduino 74HC595驱动数码管是一种常用的数字逐位显示器件,它可以将多个74HC595芯片连接在一起,将多个数码管连接到单个Arduino引脚上。这种电路方案可以大大减少连接数和控制电路的复杂度,因此经常用于数字计数,时钟,温度计等场合。 首先需要明确的是,74HC595是一款SIPO (Serial In Parallel Out,串行输入并行输出) 的移位寄存器芯片,在控制数码管时需要把数据先串行输入到移位寄存器芯片中,再并行输出到数码管上。具体实现方法是先在Arduino中将数字转化为相应的二进制数,然后用Serial.write()函数将这些数据依次发送到74HC595寄存器。在发送完毕后,应使用digitalWrite()函数将74HC595芯片的锁存引脚(latch pin)拉低,这样数据才会在数码管显示出来。在每个寄存器上提供了8个输出引脚,它们的状态由寄存器中的数据决定。每个74HC595芯片可以控制8个LED,将其中多个芯片级联在一起,可以控制多个LED。 针对不同显示方式的数码管,对应的Arduino 74HC595驱动方案也不同。下面以共阳极数码管为例进行说明,其它方案类似。共阳极数码管是指数码管在电压作用下,所有数码管的阳极(正极)都是连接在一起的,而且数码管点亮时给它们的共阳极通上高电平。 若要控制4位共阳极数码管显示数字,需要使用4个74HC595芯片。每个芯片的8个引脚控制一个二进制位,在此基础上我们需要编写一个函数,将数字转化为二进制,并输出到相应的74HC595芯片。具体步骤如下: 1.定义数码管引脚对应的74HC595芯片的引脚序号,并使用digitalWrite()函数将寄存器的clk,ser等引脚清零。 2.定义一个字符数组,用来保存数字对应的二进制值。 3.将数字对应的二进制值存储到字符数组中,例如数字7对应的二进制值为11000111。 4.使用for循环依次输出四个寄存器中的数据,根据字符数组中的二进制值决定输出的状态。为此,需用到digitalWrite()函数将寄存器的ser引脚输出高或低电平。 5. digitalWriter()函数将寄存器的clk引脚拉高、再拉低,将数据移位到移位寄存器中。 6.当四个寄存器中的数据全部输出后,使用digitalWrite()函数将寄存器的latch引脚拉高,将数据输出到数码管显示出来。 上述步骤在控制共阳极数码管时比较重要,可根据硬件实际情况和代码格式进行合理修改。 ### 回答3: Arduino是一种开源的电子开发平台,可以帮助我们快速地完成电子产品的开发。而74hc595芯片是一种串行-并行转换器,可以将串行输入的数据转换成并行输出的数据。在arduino开发平台中,我们可以借助74hc595芯片来驱动数码管,以实现数字的显示。 首先,我们需要连接74hc595芯片和数码管74hc595芯片的8个输出引脚需要分别连接到数码管的对应引脚上,同时还需要将74hc595芯片的串行数据输入引脚、时钟输入引脚、锁存器选通引脚分别连接到arduino开发板的对应引脚上,以实现对74hc595芯片的控制。 然后,我们需要编写arduino程序,来控制74hc595芯片输出的数据。在程序中,我们需要定义数码管对应的数字编码,以便向74hc595芯片发送正确的数据。实现控制时,我们可以通过arduino的digitalWrite函数来控制74hc595芯片的串行数据输入引脚和时钟输入引脚输出高低电平,以及通过digitalWrite函数控制锁存器选通引脚实现数据输出。最后,我们需要使用for循环遍历每个数码管位,将对应的数字编码输出到74hc595芯片上,实现数字的显示。 总的来说,利用74hc595芯片可以很方便地实现对数码管驱动,也是arduino开发平台的常见应用之一。在实际开发过程中,需要注意数码管引脚的连接和正确的数字编码,同时还需要合理控制输出时间,以确保数字的显示正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值