0

我在 xilinx 中有这个功能,用于将输出提供给七段。

int result;
    XIo_Out32(XPAR_SSG_DECODER_0_BASEADDR,  result);

该函数获取 int 结果并将输出作为十六进制值放入七段。所以基本上,如果我给结果 = 11; 我会在七段中看到 A。要查看 sseg 上的十进制值,一种方法是更改​​其背后的 verilog 代码并更改 sseg 的整个概念。另一种方法是编写一个将十进制值更改为十六进制值的函数。我一直在为此寻找一个好的代码块,但似乎它们中的每一个都使用循环逐位打印值。我需要整个价值作为一个块。不幸的是,我不能使用 C++ 库,所以我有原始的 C 代码。是否有任何已知的转换算法?

4

1 回答 1

0

显然,您希望将符号代码从 ASCII 转换为 7 段显示字符集中的符号代码。如果是这样,您可以创建一个简单的映射,可能是一个由 ASCII 字符 id 索引的代码数组。然后,您将能够像这样调用您的函数:

XIo_Out32(XPAR_SSG_DECODER_0_BASEADDR,  'A');

小心为整个 ASCII 范围实现映射表。

编辑

对不起,我把你的问题搞错了。您必须手动将十六进制数转换为十进制符号数组。您可以通过增加 10 的幂(10^0、10^1、10^2 等)除以您的数字,从而得到一个余数数组,这是您的数字的十进制表示。您可以按照 H2CO3 的建议使用 snprintf,但我建议在一些 RAM 有限的嵌入式应用程序中不要使用它;您甚至可能根本无法使用类似 sprintf 的功能。

于 2012-12-24T13:51:28.320 回答