首页 > 解决方案 > 如何在点阵 74HC595 上打开具有特定地址的 LED?

问题描述

当我想确定点阵 8x8 74HC595 中每个 LED 的地址时,我遇到了问题,我试图只用地址点亮 1 个 LED。我已经尝试了许多教程和文档,但仍然没有运气仅点亮 1 个具有特定位置的 LED。

这是我的电路设计: https ://www.sunfounder.com/learn/Super_Kit_V2_for_RaspberryPi/lesson-12-driving-dot-matrix-by-74hc595-super-kit-for-raspberrypi.html

我的 C 代码:

#include <wiringPi.h>
#include <stdio.h>

#define   SDI   0   //serial data input
#define   RCLK  1   //memory clock input
#define   SRCLK 2   //shift register clock input

unsigned char LED[8] ={0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

void pulse(int pin)
{
    digitalWrite(pin, 0);
    digitalWrite(pin, 1);
}

void ShiftOUT(unsigned char byte)
{
    int i;

    for(i=0;i<8;i++)
    {
        // char a = byte & (0x80 >> i)) > 0;
        digitalWrite(SDI, (( byte & (0x80 >> i)) > 0));
        printf("%d", (( byte >> i > 0)));
        pulse(SRCLK);
    }


    printf("\n","==================");
}

void init(void)
{
    pinMode(SDI, OUTPUT);
    pinMode(RCLK, OUTPUT);
    pinMode(SRCLK, OUTPUT);
    digitalWrite(SDI, 0);
    digitalWrite(RCLK, 0);
    digitalWrite(SRCLK, 0);
}

int main(void)
{
    int i;

    if(wiringPiSetup() == -1)
    {
        printf("setup wiringPi failed !");
        return 1;
    }

    init();

    while(1)
    {
         for(i=0;i<8;i++)
         {

            ShiftOUT(LED[i]);
            pulse(RCLK);
            // printf("=======pull latch========");
            // printf("\n");
            delay(150);
         }


        delay(500);


   }

    return 0;
}

我试过的这段代码会点亮 1 行,我想点亮 1 个具有特定位置的 LED

这是我用于模拟解决 LED 的链接:https ://www.riyas.org/2013/12/online-led-matrix-font-generator-with.html

有什么帮助吗?谢谢

标签: craspberry-piledcircuit

解决方案


推荐阅读