74hc595驱动数码管c
时间: 2023-08-26 17:03:32 浏览: 86
74HC595驱动数码管
4星 · 用户满意度95%
74HC595是一个8位移位寄存器,可以用来驱动数码管。以下是一个简单的C代码示例,演示如何使用74HC595驱动4位共阳数码管:
```c
#include <stdio.h>
#include <wiringPi.h>
#include <wiringShift.h>
#define DS 0 // 数据引脚连接到树莓派的GPIO0引脚
#define ST_CP 1 // 存储器时钟引脚连接到树莓派的GPIO1引脚
#define SH_CP 2 // 移位寄存器时钟引脚连接到树莓派的GPIO2引脚
// 数码管显示的数字和对应的位选值
const int num[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
int main(void)
{
wiringPiSetup(); // 初始化wiringPi
pinMode(DS, OUTPUT); // 设置DS引脚为输出模式
pinMode(ST_CP, OUTPUT); // 设置ST_CP引脚为输出模式
pinMode(SH_CP, OUTPUT); // 设置SH_CP引脚为输出模式
while(1)
{
for(int i = 0; i < 10; i++)
{
// 循环显示数字0到9
shiftOut(DS, SH_CP, MSBFIRST, num[i]); // 将数字对应的位选值写入移位寄存器
digitalWrite(ST_CP, HIGH); // 存储器时钟上升沿,将移位寄存器的数据写入存储器
delay(10); // 延时10ms
digitalWrite(ST_CP, LOW); // 存储器时钟下降沿,准备接受新的数据
}
}
return 0;
}
```
这段代码使用wiringPi库来控制树莓派的GPIO引脚。首先定义了DS、ST_CP和SH_CP引脚的编号,然后定义了一个数组num来存储数码管显示的数字和对应的位选值。在主函数中,先初始化wiringPi库,然后将DS、ST_CP和SH_CP引脚设置为输出模式。接着进入一个循环,循环显示数字0到9。在每次循环中,先将数字对应的位选值写入移位寄存器,然后产生上升沿将移位寄存器的数据写入存储器,最后延时10ms并产生下降沿准备接受新的数据。
阅读全文