8G1K08驱动TM1650怎么搞?

我现在对于这一行就是初出茅庐,现在要搞一个数码管显示的程序就不知道!在网上找了很多文章还是不太懂!就知道用8G1K08和TM1650两个IC价格便宜点,不知道各位大家有没有更好的推荐!
现在客户要要求三个按键控制数码管每一个独立加减,小数点位置可调!望各位大家帮帮忙,本人的工资就看这个咯!

img

TM1650是一款国产4位共阴数码管驱动芯片,还带有矩阵按键扫码功能,使用的是类IIC接口,只要按照他的时序编写就ok了,和控制单片机关系不大

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    首先,推荐使用8G1K08和TM1650这两个IC来控制数码管显示。这两个IC相对便宜且性能稳定,非常适合你的需求。

    接下来,你需要编写一个程序来控制数码管的显示。你可以按照以下步骤进行:

    1. 初始化:包括设置IO口和数码管显示的地址等。

    例如,对于8G1K08,你可以设置其引脚接口,以便与控制器连接。

    c // 设置引脚接口 // ...

    对于TM1650,你可以设置其地址,以便正确驱动它。

    c // 设置TM1650地址 // ...

    1. 实现数码管显示功能。

    对于8G1K08,你可以使用编程方法来控制其引脚状态,从而显示相应的数字。可以根据你的客户需求,实现数码管的加减操作。同时,你还可以使用按键扫描来实现对数码管的调整。举例来说,你可以使用按键中断来监听按键输入,然后在程序中根据按键的状态来进行相应的操作。

    对于TM1650,你可以使用它的指令来控制显示,例如设置显示的数字、小数点位置等。你可以编写相应的控制指令,然后发送给TM1650来实现显示效果。

    以下是使用C语言编写的伪代码示例:

    ```c // 数码管显示控制函数 void displayNumber(int number) { // 设置数码管显示的引脚状态,根据number来控制显示的数字 // ... }

    // 数码管加1操作 void incrementDisplay() { // 获取当前数码管显示的数字 int currentNumber = getCurrentDisplayNumber(); // 加1 currentNumber++; // 将新的数字显示到数码管 displayNumber(currentNumber); }

    // 数码管减1操作 void decrementDisplay() { // 获取当前数码管显示的数字 int currentNumber = getCurrentDisplayNumber(); // 减1 currentNumber--; // 将新的数字显示到数码管 displayNumber(currentNumber); }

    // 数码管小数点位置调整 void adjustDecimalPoint(int position) { // 设置数码管显示的小数点位置 // ... }

    // 监听按键输入 void listenKeyPress() { // 使用按键中断来监听按键输入 // ... }

    // 主函数 int main() { // 初始化 // ...

       // 监听按键输入
       listenKeyPress();
    
       return 0;
    

    } ```

    1. 根据你的需求进行调试和优化。

    在编写完成代码后,将其加载到目标设备上进行测试。根据测试结果进行调试和优化,确保程序能够正常运行和满足客户需求。

    请注意,以上是一个大致的解决方案,具体的实现细节可能会根据使用的硬件和编程环境而有所不同。如果你遇到了具体的问题,可以提供更多细节,以便我能够帮助你更准确地解决问题。如果你需要进一步的帮助,请随时告诉我。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

可以考虑使用ST7565P或者ST7575P这两个IC,它们都支持独立的加减运算以及小数点位置可调,而且价格也比较实惠。另外,这两个IC还支持多种显示模式,可以用于更多的应用场景。

可考虑使用PICAXE微控制器、arduino、PIC32微控制器等实现。比如,PIC32是一种高性能的32位微控制器,具有强大的处理能力、丰富的外设和广泛的生态系统支持。可以选择与数码管驱动器配合使用的PIC32型号,例如:XLP24F系列或MX23L系列,并通过编程实现按键控制数码管的显示。可以使用内置的LCD驱动器来控制数码管的显示,并使用外部接口来调整小数点的位置。

基于new bing部分指引作答:
8G1K08是一种8位数码管驱动芯片,TM1650是一种数码管显示驱动芯片。这两个芯片可以结合使用来驱动数码管显示。以下是一个简单的搭建过程:

1、连接硬件:将8G1K08和TM1650芯片连接到你的电路板上。确保正确连接芯片的引脚。

2、供电:为芯片提供电源。检查芯片的规格书以确定正确的电源电压和连接方式。

3、控制接口:根据芯片的规格书,连接控制芯片的引脚。这些引脚可以连接到你的微控制器或其他控制器上,以实现对数码管的控制。

4、编程:使用你选择的编程语言和开发平台,编写代码来控制数码管的显示。这涉及到将数字、小数点位置等信息发送给TM1650芯片,然后由TM1650芯片驱动8G1K08芯片显示相应的内容。

以下是一个简单的示例代码,用于控制数码管显示数字以及实现加减功能(使用Arduino平台为例):

#include <Wire.h>
#include <TM1650.h>

TM1650 tm1650;

void setup() {
  tm1650.init();
}

void loop() {
  // 读取按键状态
  // 这里假设你已经接好了按键并将其连接到Arduino的GPIO引脚上
  int button1State = digitalRead(2); // 按键1
  int button2State = digitalRead(3); // 按键2

  // 处理按键状态
  if (button1State == HIGH) {
    // 按键1按下,执行加法操作
    tm1650.increment(); // 数码管数字加一
  } else if (button2State == HIGH) {
    // 按键2按下,执行减法操作
    tm1650.decrement(); // 数码管数字减一
  }

  // 更新数码管显示
  tm1650.display();

  // 延迟一段时间,以便稳定显示
  delay(100);
}

述代码仅为示例,你可能需要根据你的具体硬件和需求进行修改。

另外,如果你对编程和电子设计不熟悉,可能需要更多的学习和实践才能完成你的项目。如果你对数码管驱动方案不太了解,也可以考虑使用其他成熟的开发板或模块,它们通常提供更简单的编程接口和示例代码,适合初学者使用。

如果你想实现一个数码管显示的程序,并且需要三个按键来控制每个数码管的独立加减,以及可调整小数点位置,以下是一些建议:

  1. 数码管驱动芯片:你提到了8G1K08和TM1650,它们都是常见的数码管驱动芯片。这两个芯片都可以满足你的要求,选择其中一个即可。如果你对这些芯片不太熟悉,可以查找它们的数据手册以了解更多信息。

  2. 按键输入:你需要三个按键来控制每个数码管的独立加减。你可以选择使用数字按键、编码器或其他类型的开关来实现按键输入。根据你的需求,选择适合的按键和连接方式。

  3. 控制逻辑:在程序中,你需要编写逻辑来处理按键输入并控制数码管的显示。这包括读取按键状态、增减数值、控制小数点位置等。你可以使用微控制器(如Arduino)来编写程序,并利用其GPIO接口来连接数码管和按键。

  4. 软件库和示例代码:为了简化开发过程,你可以使用数码管驱动芯片的软件库或现有的开源代码库。这些库通常提供了函数和示例代码,可以帮助你快速实现数码管的控制和显示。

总结起来,选择合适的数码管驱动芯片、按键和开发平台,并编写相应的控制逻辑,可以帮助你实现数码管的显示和控制。你可以参考相关的数据手册、软件库和示例代码,以及与其他开发者的交流,来更好地理解和实现你的需求。

以下答案参考newbing,回答由博主波罗歌编写:
对于初学者来说,搞一个数码管显示的程序可能会有一些挑战,但不用担心,我会尽量给出详细解答,并提供一个简单的代码示例。

首先,你提到了8G1K08和TM1650这两个IC,它们都是常见的数码管驱动芯片,可以帮助控制数码管的显示。8G1K08是一个常用的共阳数码管显示驱动芯片,TM1650是一个常用的数码管驱动和键盘扫描芯片,可以帮助控制数码管的显示和按键的扫描。

对于你的需求,需要使用三个按键来控制数码管的加减操作,并且可以调整小数点的位置。以下是一个简单的示例代码,使用Python编写,演示了如何使用TM1650驱动芯片来控制数码管的显示。

# 导入所需的库
import time
import RPi.GPIO as GPIO

# 定义TM1650的引脚连接
TM1650_CLK = 17
TM1650_DIO = 27

# 定义数码管显示的初始值和小数点位置
display_value = 0
decimal_point = 1

# 初始化TM1650的GPIO设置
def tm1650_init():
    GPIO.setwarnings(False)
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(TM1650_CLK, GPIO.OUT)
    GPIO.setup(TM1650_DIO, GPIO.OUT)

# 向TM1650发送数据
def tm1650_send_byte(data):
    GPIO.output(TM1650_CLK, GPIO.LOW)
    GPIO.output(TM1650_DIO, GPIO.LOW)
    time.sleep(0.001)
    for i in range(8):
        GPIO.output(TM1650_CLK, GPIO.LOW)
        if data & 0x01:
            GPIO.output(TM1650_DIO, GPIO.HIGH)
        else:
            GPIO.output(TM1650_DIO, GPIO.LOW)
        time.sleep(0.001)
        GPIO.output(TM1650_CLK, GPIO.HIGH)
        time.sleep(0.001)
        data >>= 1

# 设置数码管显示的内容和小数点位置
def display_number(value, dp):
    global display_value, decimal_point
    display_value = value
    decimal_point = dp

# 刷新数码管显示
def refresh_display():
    tm1650_send_byte(0x48)  # 显示命令
    tm1650_send_byte(display_value)  # 数字显示
    tm1650_send_byte(0x68 + decimal_point)  # 小数点位置

# 清空数码管显示
def clear_display():
    tm1650_send_byte(0x40)  # 清空显示

# 初始化TM1650设置
tm1650_init()

# 主程序循环
while True:
    # 获取按键状态
    # TODO: 这里需要添加按键的代码逻辑

    # 根据按键状态进行相应的操作
    if 加号按键被按下:
        display_value += 1
        refresh_display()
    elif 减号按键被按下:
        display_value -= 1
        refresh_display()
    elif 小数点位置调整按键被按下:
        decimal_point += 1
        if decimal_point > 3:
            decimal_point = 0
        refresh_display()
    elif 清空按键被按下:
        clear_display()
    
    # 等待一段时间
    time.sleep(0.1)

注意,上述代码中的部分逻辑需要根据实际情况进行修改,特别是按键的读取和处理部分,你需要根据你具体的按键连接方式和设置来编写相应的代码逻辑。

此外,我建议你在开始之前仔细阅读8G1K08和TM1650的数据手册,以便更好地了解它们的功能和使用方法,以及它们的引脚连接和工作特性。这对于你更深入地理解和应用这些芯片非常重要。

同时,你也可以考虑使用其他的数码管驱动芯片,例如常见的MAX7219或者I2C总线控制的驱动芯片,这些芯片在市场上也比较常见且易于使用。

最后,希望以上的解答能对你有所帮助!如果你还有任何问题,请随时提问。祝你好运!
如果我的回答解决了您的问题,请采纳!