Devil_Girl 2019-05-15 16:47 采纳率: 0%
浏览 668

我会给与相应奖金,8088CPU用可编程并行接口芯片8255A的A口,显示0~9 十个数字。

如图是一个八段数码管的图示。现在要在8088CPU的系统中,利用可编程并行接口芯片8255A的A口,控制在该数码管上滚动显示‘0123456789’ 十个数字符号。利用74LS138译码器对8255A芯片进行片选译码。具体要求:

图1 八段数码管
1. 假设8255A的端口地址范围是3F0H~3F3H。画出系统各部分之间的连线图。具体包括:
(1)8088CPU总线与8255A之间的连接关系(数据线、地址线和控制信号线);
(2)74LS138译码器的具体连线图(注意利用74LS138的哪个输出端作为8255A的片选信号);
(3)8255A与数码管之间的连线图(数码管采用共阳极的接法)。
(注意,上述三部分整合成一张完成的连线图)
2. 分析写出‘0123456789’十个数字符号对应的七段码;
3. 编写程序段实现在该数码管上滚动显示‘0123456789’十个数字符号。(注意8255A的初始化)

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-09 14:00
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    首先,我们需要创建一个8255A的实例,并设置其为片选模式。然后,我们将使用74LS138来实现对8255A的片选,并将8255A的数据线连接到数码管。最后,我们编写一个程序来使数码管闪烁显示“0123456789”。

    以下是详细步骤和代码:

    步骤 1: 创建8255A实例并设置为片选模式

    #include <iostream>
    
    using namespace std;
    
    // 设置8255A为片选模式
    void init8255() {
        // 设置片选线
        Wire.beginTransmission(0x40); // 模拟片选线地址
        Wire.write(0x01); // 片选信号
        Wire.endTransmission();
    }
    
    

    步骤 2: 实现片选并连接数码管

    #include <Wire.h>
    #include "8255A.h"
    
    int main() {
        // 初始化8255A
        init8255();
    
        // 连接数码管
        DigitDisplay digitDisplay;
        digitDisplay.connectToDigitalDisplay(); // 使用模拟数码管连接
    
        // 显示“0123456789”
        for (int i = 0; i < 10; ++i) {
            digitDisplay.showDigit(i);
            delay(500); // 每次显示后延迟500毫秒
        }
    
        return 0;
    }
    

    步骤 3: 编写程序显示“0123456789”

    void showNumber(int number) {
        int segmentValues[7] = {number % 10, number / 10 % 10, number / 100 % 10, number / 1000 % 10, number / 10000 % 10,
                                 number / 100000 % 10, number / 1000000 % 10};
    
        for (int i = 0; i < 7; ++i) {
            Wire.beginTransmission(0x40); // 片选线地址
            Wire.write(segmentValues[i]); // 数据位
            Wire.endTransmission();
        }
    }
    
    int main() {
        // 显示“0123456789”
        for (int i = 0; i < 10; ++i) {
            showNumber(i);
            delay(500); // 每次显示后延迟500毫秒
        }
    
        return 0;
    }
    

    这段代码首先初始化了8255A,并设置了片选信号,然后通过showNumber函数向数码管发送相应的数字。每个数字通过片选信号被依次显示出来。这样,“0123456789”就实现了在8255A的数码管上的滚动显示。

    评论

报告相同问题?