使用单片机应用在数码管上显示出HELLO-(座位号),例如33号,则结果显示HELLO-33请编写程序、绘制电路图、编译和仿真运行。

2023-04-07by@1978054988-sOjH9&@ChatGPT.Model: gpt-3.5
1978054988-sOjH9

使用单片机应用在数码管上显示出HELLO-(座位号),例如33号,则结果显示HELLO-33请编写程序、绘制电路图、编译和仿真运行。

Avatar
Avatar

这道题需要使用单片机控制数码管显示指定的字符串和数字。以下是一种可能的解决方案:

步骤1:准备材料

  1. 单片机:我们可以使用常见的51单片机或者STM32等。

  2. 数码管:这里我们使用常见的共阴数码管。

  3. 驱动芯片:这里我们使用常见的74HC595芯片。

  4. 电阻:这里我们使用220欧姆电阻。

  5. 电容:这里我们使用10微法电容。

  6. 杜邦线:用于连接各个元件。

步骤2:设计电路图

以下是我们的电路图,其中包含一个单片机、一个74HC595芯片、一个共阴数码管以及一些电阻和电容:

image-20211101150444494

步骤3:编写程序

以下是我们的C语言程序,它将HELLO-和座位号合并成一个字符串,并将它们显示在数码管上:

#include <reg51.h>

#define uchar unsigned char
#define uint unsigned int

// 数码管显示的字符和数字表
// 0 ~ 9
uchar code tab[] = {
    0x3F, 0x06, 0x5B, 0x4F, 0x66,
    0x6D, 0x7D, 0x07, 0x7F, 0x6F
};

// A ~ F
uchar code tab2[] = {
    0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71
};

// HELLO
uchar code hello[] = {
    0x3F, 0x06, 0x5B, 0x4F, 0x66
};

// 显示座位号
void display_seat(uint seat) {
    uchar i;
    uchar j = 4; // 数码管显示的位数
    uchar code seat_str[] = "XX"; // 座位号字符串

    // 将座位号转换成字符串
    seat_str[0] = seat / 10 + '0';
    seat_str[1] = seat % 10 + '0';

    // 显示HELLO
    for (i = 0; i < 5; i++) {
        P2 = 0xFE; // 选择第一位数码管
        P0 = hello[i]; // 显示HELLO的第i个字符
        P2 = 0xFF; // 关闭数码管
        P0 = 0xFF; // 清空P0口
        delay(1); // 延时1ms
    }

    // 显示座位号
    for (i = 0; i < 2; i++) {
        P2 = 0xFD; // 选择第二位数码管
        P0 = tab[seat_str[i] - '0']; // 显示座位号的第i个字符
        P2 = 0xFF; // 关闭数码管
        P0 = 0xFF; // 清空P0口
        delay(1); // 延时1ms
    }

    // 显示-
    P2 = 0xFB; // 选择第三位数码管
    P0 = 0xBF; // 显示-
    P2 = 0xFF; // 关闭数码管
    P0 = 0xFF; // 清空P0口
    delay(1); // 延时1ms

    // 显示座位号
    for (i = 0; i < 2; i++) {
        P2 = 0xF7; // 选择第四位数码管
        P0 = tab[seat_str[i] - '0']; // 显示座位号的第i个字符
        P2 = 0xFF; // 关闭数码管
        P0 = 0xFF; // 清空P0口
        delay(1); //