gpt4 book ai didi

计算 MDA-8086 上 7 段 LED 的十六进制值

转载 作者:行者123 更新时间:2023-12-03 15:54:07 26 4
gpt4 key购买 nike

我试图在 MDA-8086 套件上显示 7 段 LED,但我一直在计算各个数字的十六进制值。我有代码,但我不明白它实际上是如何工作的。
例如, 0 用十六进制值 表示 0xc0 [我猜]。
我想知道,这里的值是如何计算的?
7 段 LED 显示的 C 代码:

#include"mde8086.h"

int data[11] = { 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x00 };

void wait(long del)
{
while( del-- );
}

void main(void)
{
int *data1;

/* 8255 -1 Initialization */
outportb( PPI1_CR, 0x80 );
outportb( PPI1_B, 0xf0 );
outportb( PPI1_C, 0x00 );

//main loop
do {
data1 = data;
while( *data1 != 0x00 )
{
outportb( PPI1_A, *data1 );
wait(30000);
data1++;
}
} while(1);
}
输出是从这里生成的:
7-Segment display

最佳答案

这是关于您的硬件连接方式,即显示器的引脚如何连接到端口以及是否需要端口上的 0 或 1 来打开一个段。
从你的数字看来:

  • 端口如g、f、e、d、c、b、a连接即:a为LSB。
  • “缺失”的第 8 位应始终编程为 1,即作为 8 位,它将是 port = 1gfedcba
  • 打开显示器中的一个段需要一个 0。

  • 所以
    0xc0 -> 1100.000 -> 1    1    0    0    0    0    0    0
    ^ ^ ^ ^ ^ ^ ^ ^
    | | | | | | | |
    unused g f e d c b a
    off on on on on on on
    这导致显示屏上为零。
    现在为 0xf9
    0xf9 -> 1111.1001
    所以只有段 b 和 c 会打开,显示器将显示 1
    其余的自己检查。
    编辑 查看 sigment 图片,可能是第 8 位(我称之为“未使用”)实际上控制了该段的“DP”部分。这只是一个猜测,但也许如果您将 0x40 写入端口,您会看到 0.在显示器上。
    当您只显示数字时,有许多未使用的组合。其中一些看起来像字母,例如 H .因此,为了好玩(又名练习),您可以让显示拼写单词,如“HELLO”、“CACAO”、“BEEF”等等。

    关于计算 MDA-8086 上 7 段 LED 的十六进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63590772/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com