This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1231H6PM:7段问题

Guru**** 1788580 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/567187/tm4c1231h6pm-7-segment-problem

器件型号:TM4C1231H6PM

1.我想用两个7段的时间计数、但我现在不能打开7段的时间、请帮我检查代码、可能我丢失了一些东西。

2.我有两个7段、如何单独控制它们?

#include 
#include 
include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_uart.h"
#include "driverlib/debug.h"
#include "driverlib/driverlib#driverlib"
#driverlib#driverlib/sinterrdriver.h"







#include "driverlib#driverlib#driverlib#driverlib#driverlib#driverlib.inc"#driverlib/sinter.h"#include"#driverlib#driverlib#driverlib#driverlib#driverlib.inc"driverlib.driverlib#include "driverlib#driverlib#driverlib#driverlib#driverlib#driverlib#driver.h"#include "driverlib#driverlib#driverlib#driverlib#driverlib#driverlib#driverlib#driverlib/#driver.h"#include "#driverlib#driverlib#driverlib#driverlib#driverlib#driverlib#driverlib.








MAP_SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHz);

//
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_UART0);

MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);

//
MAP_GPIOPinConfigure (GPIO_PA0_U0RX);
MAP_GPIOPinConfigure (GPIO_PA1_U0TX);

//
HWREG (GPIO_PORTF_BASE + 0x520)= 0x4C4F434B;
HWREG (GPIO_PORTF_BASE + 0x524)= 0x00FF;
HWREG (GPIO_PORTF_BASE + 0x420)= 0x0000;
HWREG (GPIO_PORTF_BASE + 0x51C)= 0x001F;

//
MAP_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

// 7-Seg_A:PB1 | 7-Seg_B:PD6 | 7-Seg_C:PF0
// 7-Seg_D:PF1 | 7-Seg_E:PF2 | 7-Seg_F:PB0
// 7-Seg_G:PD5
MAP_GPIOPinTypeGPIOOutput (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);
MAP_GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_5 | GPIO_PIN_6);
MAP_GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2);

//
MAP_UARTConfigSetExpClk (UART0_BASE、MAP_SysCtlClockGet ()、115200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));

while (1)
{
MAP_GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_1、GPIO_PIN_1); //a
MAP_GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_6、GPIO_PIN_1); /b
MAP_GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_0、GPIO_PIN_0); //c
MAP_GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_1、GPIO_PIN_1); //d
MAP_GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、GPIO_PIN_2); //e
MAP_GPIOPinWrite (GPIO_PORTB_BASE、GPIO_PIN_0、GPIO_PIN_0); //f
MAP_GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_5、GPIO_PIN_5); //g
}
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Yang

    它是什么类型的 LED 段(共阳极或共阴极)?
    2.代码是否按预期在微控制器上运行? 无总线故障或 IO 未达到高电平
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Amit、您好!
    1.我刚刚解决了我忘记将 Vcc 引脚设置为高电平的问题。 它是共阴极。
    2.是的,唯一的问题是第二个7-seg 没有打开。 我想知道的是如何在不同的数字中同时打开两个7段、如"7"F"、"3"5"。 它们具有不同的 Vcc 端口 PD4和 PF3、但具有相同的 LED 端口 abcdefg。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您有(仅)一个 MCU 端口为两个"总线段"显示屏提供 LED 7段驱动-则您一次无法单独(在一个7段显示屏上)显示、除非您使用"多路复用"。  

    多路复用"交易"降低了硬件的软件复杂性、并且可能会"为每个7段器件提供更高的电流驱动"-因为每个段的时间都不足100%。  

    以下是对此类显示进行多路复用的基本方案:

    • 确保每个(有2个)共阴极显示引脚悬空。  (未接地。)
    • 向最高有效位(MSD)显示数据
    • 现在将 MSD 阴极接地 (您可能需要一个晶体管来为全部7个段提供电流-单个 GPIO 将晶体管关闭/打开)
    • 在这种情况下将显示屏保持~20ms
    • 从阴极驱动晶体管 MSD 上卸下驱动器(~1ms -这是一个消隐时间、以确保每个数字之间没有"图像出血")
    • 将数据呈现到最低有效位(LSD)
    • 现在将 LSD 阴极驱动至接地 (就像您使用 MSD 阴极一样)
    • 在这种情况下将显示屏保持~20ms
    • 从 LSD 阴极驱动晶体管(~1ms)上拆下驱动器
    • 现在循环。

    随着 LED 数字的增加-每7段显示屏的"打开时间"将减少。   要保持显示亮度-您必须按比例增加显示驱动电流。

    重要的是、您对该"多路复用"显示屏的扫描不会停止、因为这可能会使一个数字处于"过流"状态-这可能会证明具有破坏性...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复!
    很不错!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Yang Edison ]]感谢您的回复!
    它起作用![/报价]

    我们希望(设计、制造、交付数千个...)

    感谢您-很高兴为您提供帮助。

    "正常和习惯"是通过您在"应答帖子"中找到的"验证答案"框勾选的正确答案(尤其是如此清晰详细)来奖励正确答案。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次感谢您。

    及时-我们怀疑您将向7段 LED 阵列添加数字。 在每种情况下-每个数字需要一个晶体管。 如果您创建一个"4位"显示、则需要4个 GPIO (每个数字一个)、外加7个用于各个段。 (如果使用小数点、则为8)

    如果您移动"超过" 4位数-您应该考虑使用诸如 HC138的"多路复用芯片"。 (仅启用) 3个 GPIO 来控制8位数)
    请注意-当您添加数字时、每个段的段驱动电流必须增加。 这可能迫使您在 MCU 的段驱动器引脚和 LED 段之间插入"电流提升"芯片。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢您告诉我!
    我只使用了2位数字、但我学到了很多、谢谢。