[UNO]

arduino 2个74hc595级联驱动8位数码管

[复制链接]
13596|5
手机看帖
扫描二维码
随时随地手机跟帖
xiaoqi976633690|  楼主 | 2023-2-14 20:14 | 显示全部楼层 |阅读模式
本帖最后由 xiaoqi976633690 于 2023-2-14 20:41 编辑

arduino 2个74hc595级联驱动8位数码管

C代码:

/*
   Arduino code for Individual control over each pin
   Support for 40+ 74HC595 8 bit shift registers
   http://bildr.org/2011/02/74hc595/
*/

#define DATA_PIN  8  // Pin connected to DS of 74HC595串行数据输入
#define LATCH_PIN 9  // Pin connected to STCP of 74HC595上升沿数据从寄存器输出到引脚
#define CLOCK_PIN 10 // Pin connected to SHCP of 74HC595上升沿串行数据移位存入寄存器

void disp(uint16_t V1,uint16_t V2);
void write_74hc595(uint8_t *data);
//数码管数量
#define NUM_SHIFT_REGS  8
//共阳数码管
unsigned char leddata[]={
                0xC0,  //"0"
                0xF9,  //"1"
                0xA4,  //"2"
                0xB0,  //"3"
                0x99,  //"4"
                0x92,  //"5"
                0x82,  //"6"
                0xF8,  //"7"
                0x80,  //"8"
                0x90,  //"9"
                0x88,  //"A"
                0x83,  //"B"
                0xC6,  //"C"
                0xA1,  //"D"
                0x86,  //"E"
                0x8E,  //"F"
                0x89,  //"H"
                0xC7,  //"L"
                0xC8,  //"n"
                0xC1,  //"u"
                0x8C,  //"P"
                0xA3,  //"o"
                0xBF,  //"-"
                0xFF,  //熄灭
                0xFF  //自定义

                         };
uint8_t x595[NUM_SHIFT_REGS]={0x00,0xff};

void setup() {
  pinMode(DATA_PIN, OUTPUT);
  pinMode(CLOCK_PIN, OUTPUT);
  pinMode(LATCH_PIN, OUTPUT);
  Serial.begin(9600);
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
}

bool toggle = false;
uint16_t  x1=1990,x2=3520;
uint16_t time=0;
uint16_t ADC_vlue1=0,ADC_vlue2=0;
float volt1,volt2;
void loop() {
      ADC_vlue1=analogRead(A0);
      ADC_vlue2=analogRead(A1);
      volt1=ADC_vlue1*0.48828125;
      volt2=ADC_vlue2*0.48828125;
      time++;
      disp(volt1,volt2);
      if(time==100)
      {
        time=0;
        x1++;
        x2++;
        Serial.println(volt1);
      }

}


void write_74hc595(uint8_t *data)
{
  uint8_t m[NUM_SHIFT_REGS];
  digitalWrite(LATCH_PIN, LOW);
  for(int x=0;x<2;x++)
  {
    m[x]=data[x];
    for(int i=0;i<8;i++)
      {
        digitalWrite(CLOCK_PIN, LOW);
        digitalWrite(DATA_PIN,(m[x]&0x80)>1?HIGH:LOW);
        digitalWrite(CLOCK_PIN, HIGH);
        m[x]<<=1;
      }

  }
  digitalWrite(LATCH_PIN, HIGH);//上升沿输出
}

void disp(uint16_t V1,uint16_t V2)
{

  for(int8_t i=0;i<NUM_SHIFT_REGS;i++)
  {
      switch(i)
      {
        case 0:
        if(V1>=1000) x595[0]=leddata[V1/1000%10];   
        else x595[0]=0xff;//小于1000的千位不显示
        x595[1]=1<<i;write_74hc595(x595);break;
        case 1: x595[0]=leddata[V1/100%10];x595[1]=1<<i;write_74hc595(x595);break;
        case 2: x595[0]=leddata[V1/10%10];x595[1]=1<<i;write_74hc595(x595);break;
        case 3: x595[0]=leddata[V1%10];x595[1]=1<<i;write_74hc595(x595);break;

        case 4:
        if(V2>=1000) x595[0]=leddata[V2/1000%10];   
        else x595[0]=0xff;//小于1000的千位不显示
        x595[1]=1<<i;write_74hc595(x595);break;
        case 5: x595[0]=leddata[V2/100%10];x595[1]=1<<i;write_74hc595(x595);break;
        case 6: x595[0]=leddata[V2/10%10];x595[1]=1<<i;write_74hc595(x595);break;
        case 7: x595[0]=leddata[V2%10];x595[1]=1<<i;write_74hc595(x595);break;
      }

  }
        x595[0]=0x7F;x595[1]=1<<1;
        write_74hc595(x595);
        x595[0]=0x7F;x595[1]=1<<5;
        write_74hc595(x595);
}


电路图json:

{
  "version": 1,
  "author": "Anderson Costa",
  "editor": "wokwi",
  "parts": [
    { "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
    { "type": "wokwi-74hc595", "id": "sr1", "top": 255, "left": 200, "attrs": {} },
    { "type": "wokwi-74hc595", "id": "sr2", "top": 255, "left": 360, "attrs": {} },
    {
      "type": "wokwi-resistor",
      "id": "r1",
      "top": 330,
      "left": 140,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r2",
      "top": 330,
      "left": 160,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r3",
      "top": 330,
      "left": 180,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r4",
      "top": 330,
      "left": 200,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r5",
      "top": 330,
      "left": 220,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r6",
      "top": 330,
      "left": 240,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r7",
      "top": 330,
      "left": 260,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r8",
      "top": 330,
      "left": 280,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r9",
      "top": 330,
      "left": 300,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r10",
      "top": 330,
      "left": 320,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r11",
      "top": 330,
      "left": 340,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r12",
      "top": 330,
      "left": 360,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r13",
      "top": 330,
      "left": 380,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r14",
      "top": 330,
      "left": 400,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r15",
      "top": 330,
      "left": 420,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-resistor",
      "id": "r16",
      "top": 330,
      "left": 440,
      "rotate": 90,
      "attrs": { "value": "180" }
    },
    {
      "type": "wokwi-led",
      "id": "led1",
      "top": 380,
      "left": 154,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led2",
      "top": 380,
      "left": 174,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led3",
      "top": 380,
      "left": 194,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led4",
      "top": 380,
      "left": 214,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led5",
      "top": 380,
      "left": 234,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led6",
      "top": 380,
      "left": 254,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led7",
      "top": 380,
      "left": 274,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led8",
      "top": 380,
      "left": 294,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led9",
      "top": 380,
      "left": 314,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led10",
      "top": 380,
      "left": 334,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led11",
      "top": 380,
      "left": 354,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led12",
      "top": 380,
      "left": 374,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led13",
      "top": 380,
      "left": 394,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led14",
      "top": 380,
      "left": 414,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led15",
      "top": 380,
      "left": 434,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-led",
      "id": "led16",
      "top": 380,
      "left": 454,
      "rotate": 180,
      "attrs": { "color": "red" }
    },
    {
      "type": "wokwi-7segment",
      "id": "sevseg3",
      "top": 529.21,
      "left": 225.9,
      "attrs": { "digits": "4" }
    },
    {
      "type": "wokwi-7segment",
      "id": "sevseg1",
      "top": 528.62,
      "left": 436.56,
      "attrs": { "digits": "4" }
    },
    { "type": "wokwi-potentiometer", "id": "pot1", "top": 71.57, "left": 402.18, "attrs": {} },
    { "type": "wokwi-potentiometer", "id": "pot2", "top": 73.12, "left": 519.64, "attrs": {} }
  ],
  "connections": [
    [ "uno:GND.2", "sr1:OE", "black", [ "v50", "h102" ] ],
    [ "uno:GND.2", "sr2:OE", "black", [ "v50", "h102" ] ],
    [ "uno:GND.2", "sr1:GND", "black", [ "v50", "h150", "v50", "h-45" ] ],
    [ "uno:GND.2", "sr2:GND", "black", [ "v50", "h300", "v50", "h-9" ] ],
    [ "uno:GND.2", "led1:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led2:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led3:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led4:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led5:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led6:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led7:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led8:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led9:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led10:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led11:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led12:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led13:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led14:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led15:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:GND.2", "led16:C", "black", [ "v50", "h150", "v137", "h-143" ] ],
    [ "uno:5V", "sr1:VCC", "red", [ "v44", "h61" ] ],
    [ "uno:5V", "sr1:MR", "red", [ "v44", "h61" ] ],
    [ "uno:5V", "sr2:VCC", "red", [ "v44", "h61" ] ],
    [ "uno:5V", "sr2:MR", "red", [ "v44", "h61" ] ],
    [ "uno:8", "sr1:DS", "orange", [ "v-20", "h111", "v222", "h-42" ] ],
    [ "uno:9", "sr1:STCP", "purple", [ "v-27", "h129", "v237", "h-34" ] ],
    [ "uno:10", "sr1:SHCP", "brown", [ "v-34", "h147", "v252", "h-29" ] ],
    [ "uno:9", "sr2:STCP", "purple", [ "v-27", "h129", "v237", "h-34" ] ],
    [ "uno:10", "sr2:SHCP", "brown", [ "v-34", "h147", "v252", "h-29" ] ],
    [ "sr1:Q7S", "sr2:DS", "orange", [ "h0", "v-9", "h112" ] ],
    [ "sr1:Q0", "r1:1", "green", [ "v-7", "h-50" ] ],
    [ "sr1:Q1", "r2:1", "green", [ "v8", "h-15" ] ],
    [ "sr1:Q2", "r3:1", "green", [ "v13", "h-5" ] ],
    [ "sr1:Q3", "r4:1", "green", [ "v24", "h6" ] ],
    [ "sr1:Q4", "r5:1", "green", [ "v21", "h17" ] ],
    [ "sr1:Q5", "r6:1", "green", [ "v17", "h29" ] ],
    [ "sr1:Q6", "r7:1", "green", [ "v13", "h38" ] ],
    [ "sr1:Q7", "r8:1", "green", [ "v9", "h48" ] ],
    [ "sr2:Q0", "r9:1", "green", [ "v-4", "h-41" ] ],
    [ "sr2:Q1", "r10:1", "green", [ "v8", "h-15" ] ],
    [ "sr2:Q2", "r11:1", "green", [ "v13", "h-5" ] ],
    [ "sr2:Q3", "r12:1", "green", [ "v24", "h6" ] ],
    [ "sr2:Q4", "r13:1", "green", [ "v21", "h17" ] ],
    [ "sr2:Q5", "r14:1", "green", [ "v17", "h29" ] ],
    [ "sr2:Q6", "r15:1", "green", [ "v13", "h38" ] ],
    [ "sr2:Q7", "r16:1", "green", [ "v9", "h48" ] ],
    [ "led1:A", "r1:2", "green", [ "v0" ] ],
    [ "led2:A", "r2:2", "green", [ "v0" ] ],
    [ "led3:A", "r3:2", "green", [ "v0" ] ],
    [ "led4:A", "r4:2", "green", [ "v0" ] ],
    [ "led5:A", "r5:2", "green", [ "v0" ] ],
    [ "led6:A", "r6:2", "green", [ "v0" ] ],
    [ "led7:A", "r7:2", "green", [ "v0" ] ],
    [ "led8:A", "r8:2", "green", [ "v0" ] ],
    [ "led9:A", "r9:2", "green", [ "v0" ] ],
    [ "led10:A", "r10:2", "green", [ "v0" ] ],
    [ "led11:A", "r11:2", "green", [ "v0" ] ],
    [ "led12:A", "r12:2", "green", [ "v0" ] ],
    [ "led13:A", "r13:2", "green", [ "v0" ] ],
    [ "led14:A", "r14:2", "green", [ "v0" ] ],
    [ "led15:A", "r15:2", "green", [ "v0" ] ],
    [ "led16:A", "r16:2", "green", [ "v0" ] ],
    [ "sevseg3:DIG1", "r1:1", "green", [ "v-32.82", "h-179.17", "v-217.55" ] ],
    [ "sevseg3:DIG2", "r2:1", "green", [ "v-38.39", "h-200.56", "v-176.05", "h37.06" ] ],
    [ "sevseg3:DIG3", "r3:1", "green", [ "v-44.88", "h-203.68", "v-162.15", "h47.26" ] ],
    [ "sevseg3:DIG4", "r4:1", "green", [ "v27", "h-205.87", "v-294.65", "h44.48" ] ],
    [ "sevseg1:DIG1", "r5:1", "green", [ "v-53.55", "h-362.03", "v-138.99", "h38.92" ] ],
    [ "sevseg1:DIG2", "r6:1", "green", [ "v-59.11", "h-385.28", "v-128.79", "h26.87" ] ],
    [ "sevseg1:DIG3", "r7:1", "green", [ "v-62.82", "h-387.47", "v-119.53", "h27.8" ] ],
    [ "sevseg1:DIG4", "r8:1", "green", [ "v40.56", "h-392.44", "v-285.39", "h44.48" ] ],
    [ "sevseg3:A", "r9:1", "green", [ "v-106.96", "h205.95", "v-80.61", "h-53.74" ] ],
    [ "sevseg3:A", "sevseg1:A", "green", [ "v-106.96", "h142.94" ] ],
    [ "sevseg3:B", "r10:1", "green", [ "v-99.55", "h185.15", "v-93.58", "h-34.28" ] ],
    [ "sevseg1:B", "sevseg3:B", "green", [ "v-98.68", "h-209.9", "v99.27" ] ],
    [ "sevseg3:C", "sevseg1:C", "green", [ "v53.27", "h96.46" ] ],
    [ "sevseg1:C", "r11:1", "green", [ "v53.26", "h122.12", "v-319.91", "h-142.52" ] ],
    [ "sevseg3:D", "sevseg1:D", "green", [ "v64.1", "h61.54" ] ],
    [ "sevseg1:D", "r12:1", "green", [ "v64.09", "h148.54", "v-336.14", "h-197.24" ] ],
    [ "sevseg3:E", "sevseg1:E", "green", [ "v76.13", "h36.26" ] ],
    [ "sevseg1:E", "r13:1", "green", [ "v75.51", "h167.16", "v-353.58", "h-173.78" ] ],
    [ "sevseg3:F", "sevseg1:F", "green", [ "v-88.27", "h210.66" ] ],
    [ "sevseg1:F", "r14:1", "green", [ "v-87.17", "h156.37", "v-128.48", "h-248.86" ] ],
    [ "sevseg3:G", "sevseg1:G", "green", [ "v32.83", "h80.84" ] ],
    [ "sevseg1:G", "r15:1", "green", [ "v31.62", "h144.39", "v-319.47", "h-236.08" ] ],
    [ "sevseg3:DP", "sevseg1:DP", "green", [ "v89.25", "h100.12" ] ],
    [ "sevseg1:DP", "r16:1", "green", [ "v89.84", "h168.66", "v-210.58" ] ],
    [ "pot1:SIG", "uno:A0", "green", [ "v64.43", "h-232.5" ] ],
    [ "pot1:GND", "sr2:GND", "black", [ "v100.96", "h38.4", "v49.86", "h-32.47" ] ],
    [ "pot1:VCC", "sr2:MR", "red", [ "v95.74", "h-26.24" ] ],
    [ "pot2:SIG", "uno:A1", "green", [ "v57.36", "h-335.08" ] ],
    [ "pot1:GND", "pot2:GND", "black", [ "v30.78", "h63.24" ] ],
    [ "pot1:VCC", "pot2:VCC", "red", [ "v41.26", "h86.82" ] ]
  ],
  "dependencies": {}
}



实验现象:
5638463eb8158c00f1.png
在线模拟链接:https://wokwi.com/

使用特权

评论回复

相关帖子

gaochy1126| | 2023-2-18 14:56 | 显示全部楼层
74hc595还需要动态刷新才行,现在有专用的驱动芯片可以使用。  

使用特权

评论回复
gaochy1126| | 2023-2-18 14:56 | 显示全部楼层
数码管驱动芯片有狠毒,TM1650数码管驱动芯片带有矩阵按键扫码功能。

使用特权

评论回复
gaochy1126| | 2023-2-18 14:57 | 显示全部楼层
数码管驱动芯片大多用TM1668,TM1628,SM1668,SM1628。                                

使用特权

评论回复
gaochy1126| | 2023-2-18 14:57 | 显示全部楼层
TM1629与单片机的连接是串行接口,只需要4个引脚,单片机随便用4个I/O脚与TM1629连接就行了。

使用特权

评论回复
闻则123| | 2023-12-8 16:45 | 显示全部楼层
感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

147

帖子

2

粉丝