74HC573具体怎么实现数码管点亮
时间: 2023-03-30 11:04:48 浏览: 91
74HC573是一个8位透明锁存器,可以用来控制数码管的点亮。具体实现方法是将数码管的8个引脚连接到锁存器的8个输出引脚上,将锁存器的输入引脚连接到控制芯片的输出引脚上,通过控制芯片的输出信号来控制锁存器的输入信号,从而实现数码管的点亮。
相关问题
hc32l13x数码管点亮示例
以下是基于HC32L13X芯片的数码管点亮示例程序:
```c
#include "hc32l13x.h"
// 数码管对应的IO口定义
#define SEG_A (GPIO_PIN_0)
#define SEG_B (GPIO_PIN_1)
#define SEG_C (GPIO_PIN_2)
#define SEG_D (GPIO_PIN_3)
#define SEG_E (GPIO_PIN_4)
#define SEG_F (GPIO_PIN_5)
#define SEG_G (GPIO_PIN_6)
#define SEG_DP (GPIO_PIN_7)
// 数码管共阴极接法
#define SEG_ON (0)
#define SEG_OFF (1)
// 数码管显示的数字定义
const uint8_t SEG_NUMS[10] = {
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // 0
SEG_B | SEG_C, // 1
SEG_A | SEG_B | SEG_D | SEG_E | SEG_G, // 2
SEG_A | SEG_B | SEG_C | SEG_D | SEG_G, // 3
SEG_B | SEG_C | SEG_F | SEG_G, // 4
SEG_A | SEG_C | SEG_D | SEG_F | SEG_G, // 5
SEG_A | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G, // 6
SEG_A | SEG_B | SEG_C, // 7
SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G, // 8
SEG_A | SEG_B | SEG_C | SEG_D | SEG_F | SEG_G, // 9
};
int main(void)
{
// 使能GPIO时钟
CLK_EnableModuleClock(Gpio);
// 配置数码管IO口为输出模式
GPIO_SetFunc(GPIO_PORT_0, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7, GPIO_FUNC_0_GPIO);
GPIO_SetOutput(GPIO_PORT_0, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);
while (1) {
// 循环显示0~9的数字
for (uint8_t i = 0; i < 10; i++) {
// 数码管位选控制:共阴极需要将位选端口拉低
GPIO_ResetPins(GPIO_PORT_0, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
// 数码管段选控制:共阴极需要将相应的段选端口拉低
GPIO_WritePins(GPIO_PORT_0, SEG_NUMS[i], SEG_ON);
// 延时一段时间
for (volatile uint32_t j = 0; j < 100000; j++);
// 数码管段选控制:共阴极需要将相应的段选端口拉高
GPIO_WritePins(GPIO_PORT_0, SEG_NUMS[i], SEG_OFF);
// 数码管位选控制:共阴极需要将位选端口拉高
switch (i) {
case 0:
GPIO_SetPins(GPIO_PORT_0, GPIO_PIN_0);
break;
case 1:
GPIO_SetPins(GPIO_PORT_0, GPIO_PIN_1);
break;
case 2:
GPIO_SetPins(GPIO_PORT_0, GPIO_PIN_2);
break;
case 3:
GPIO_SetPins(GPIO_PORT_0, GPIO_PIN_3);
break;
default:
break;
}
}
}
}
```
上述程序中我们定义了数码管对应的IO口、共阴极接法的常量,以及数码管显示的数字数组。程序中的`CLK_EnableModuleClock(Gpio)`函数调用用于使能GPIO时钟,`GPIO_SetFunc()`和`GPIO_SetOutput()`函数则用于配置数码管IO口为输出模式。在`main()`函数中,我们使用一个循环来显示0~9的数字,每次循环中先控制数码管位选端口,再控制数码管段选端口,实现数码管的点亮。
74hc138译码器驱动数码管
74HC138是一种三-八线译码器,常用于驱动数码管。它可以将三个输入线的二进制编码转换为八个输出线中的一个,从而实现对数码管的驱动。
数码管通常有七个或者八个段(a-g或者a-h),分别用来显示数字0-9以及其他一些字母和符号。使用74HC138译码器驱动数码管时,可以通过将三个输入线分别连接到二进制编码的控制信号上,然后将八个输出线连接到相应的数码管段上。
具体的连接方式如下:
- 将74HC138的三个输入线(A, B, C)连接到控制信号上。
- 将74HC138的八个输出线(Y0-Y7)分别连接到数码管的相应段上。
在使用时,通过控制输入线的二进制编码,可以选择要显示的数字或符号,并将其对应的输出线设置为高电平,从而点亮对应的数码管段。
需要注意的是,74HC138是一个主动低电平的器件,即当输入信号满足译码条件时,对应的输出线会被拉低。因此,在驱动数码管时,需要将对应的输出线通过适当的电流限制电阻连接到高电平源上,以确保正确驱动数码管。
希望这个简单的解答能帮到你!如果你还有其他问题,欢迎继续提问。