我在xilinx中有这个函数用于向Seven段输出。
int result;
XIo_Out32(XPAR_SSG_DECODER_0_BASEADDR, result);
函数获取int结果并将输出作为十六进制值放入7段。基本上,如果我给出result = 11;我会把A看成是7段的结果。要查看sseg上的十进制值,一种方法是更改其背后的verilog代码并更改sseg的整个概念。另一种方法是编写一个将十进制值转换为十六进制值的函数。我一直在寻找一个很好的代码块,但似乎他们中的每一个,打印值逐位循环。我需要整个值作为一个块。不幸的是,我不能使用c++库,所以我有原始的C代码。有没有已知的转换算法?
显然,您希望将符号代码从ASCII转换为来自7段显示字符集的符号代码。如果是这样,您可以创建一个简单的映射,也许是一个由ASCII字符id索引的代码数组。然后,您将能够像这样调用您的函数:
XIo_Out32(XPAR_SSG_DECODER_0_BASEADDR, 'A');
注意实现整个ASCII范围的映射表
编辑
对不起,我把你的问题答错了。您必须手动将十六进制数转换为十进制符号数组。你可以通过增加10的幂(10^0,10^1,10^2等)来除你的数字,从而得到一个余数数组,这是你的数字的十进制表示。您可以按照H2CO3的建议使用snprintf,但我不建议在一些内存有限的嵌入式应用程序中使用它;您甚至可能根本无法使用类似sprint的函数。