任务名称
2009年_H题:LED点阵书写显示屏【高职高专组】
任务要求
难度

一、任务
设计并制作一个基于 32×32 点阵 LED 模块的书写显示屏,其系统结构如图 1 所示。在控制器的管理下,LED 点阵模块显示屏工作在人眼不易觉察的扫描微亮和人眼可见的显示点亮模式下;当光笔触及 LED 点阵模块表面时,先由光笔检测触及位置处 LED 点的扫描微亮以获取其行列坐标,再依据功能需求决定该坐标处的 LED 是否点亮至人眼可见的显示状态(如图 1 中光笔接触处的深色 LED 点已被点亮),从而在屏上实现“点亮、划亮、反显、整屏擦除、笔画擦除、连写多字、对象拖移”等书写显示功能。

二、要求
1.基本要求
(1)在“点亮”功能下,当光笔接触屏上某点 LED 时,能即时点亮该点 LED,并在控制器上同步显示该点 LED 的行列坐标值(左上角定为行列坐标原点)。
(2)在“划亮”功能下,当光笔在屏上快速划过时,能同步点亮划过的各点 LED,其速度要求 2s 内能划过并点亮 40 点 LED。
(3)在“反显”功能下,能对屏上显示的信息实现反相显示(即:字体笔画处不亮,无笔画处高亮)。
(4)在“整屏擦除”功能下,能实现对屏上所显示信息的整屏擦除。
2.发挥部分
(1)在“笔画擦除”功能下,能用光笔擦除屏上所显汉字的笔画。
(2)在“连写多字”功能下,能结合自选的擦除方式,在 30s 内在屏上以“划亮”方式逐个写出四个汉字(总笔画数不大于 30)且存入机内,写完后再将所存四字在屏上逐个轮流显示。
(3)在“对象拖移”功能下,能用光笔将选定显示内容在屏上进行拖移。先用光笔以“划亮”方式在屏上圈定欲拖移显示对象,再用光笔将该对象拖移到屏上另一位置。
(4)当环境光强改变时,能自动连续调节屏上显示亮度。
(5)当光笔连续未接触屏面的时间超过 1~5min 时(此时间可由控制器设定),能自动关闭屏上显示,并使整个系统进入休眠状态,此时系统工作电流应不大于5mA。
(6)其他。
三、说明
1.设计制作时所用 LED 点阵模块的发光颜色不限。
2.各种功能的切换方式自定,但应力求操作简便。
3.在各种功能的实际操作过程中,必要时可用按键或其他控制方式进行辅助。例如,“连写多字”时,写完一字后用自定义控制方式存入该字并清屏,然后再写下一字。
4.系统应采用 5V 单电源供电。
5.设计制作时应在电路板上留有系统耗电参数的测试点。
6.设计报告正文中应包括系统总体框图、核心电路原理图、主要流程图、主要的测试结果。完整的电路原理图、重要的源程序和完整的测试结果用附件给出。

评审标准

参考答案

GPT-4o给出的设计方案:


一、总体设计

设计一个基于32×32点阵LED的书写显示屏系统,主要包括控制器、32×32 LED点阵屏和光笔。系统可以通过光笔触摸屏幕上的LED来书写和画图,控制器管理显示效果和相关功能。

二、简单论证

系统通过光笔的触碰检测确定发光点所在位置,并点亮对应的LED。用户可以通过拖动光笔在屏幕上进行绘图和书写,控制器可以将图像数据转换成LED矩阵上的显示。考虑到系统的稳定性、响应速度和功耗,设计时需重点考虑电源管理和信号处理。

三、重要指标的理论分析

  1. 分辨率: 32×32点阵分辨率,确保显示效果清晰。
  2. 响应时间: LED点亮时间需小于2ms,保证书写和绘图过程的流畅性。
  3. 功耗: 单个LED最大电流5mA,避免过高的功耗。
  4. 存储和处理能力: 必须能够存储至少32个字母或符号,并支持连续多字画功能。

四、电路原理图设计要点

  1. LED矩阵驱动电路:

    • 使用行列扫描技术,使用74HC595移位寄存器进行列驱动,使用ULN2803进行行扫描。
    • 每个LED单元的驱动需稳定,通过控制莫斯管以确保其开关的精准性。
  2. 光笔检测电路:

    • 使用红外LED和光敏传感器检测光笔的触碰位置。
    • 处理光笔信号,在控制器上进行信号滤波和放大处理。
  3. 控制器电路:

    • 采用STM32系列MCU进行系统控制和信号处理。
    • 负责LED矩阵的扫描控制,存储和管理书写数据,执行算法处理如图像平滑和纠错。

五、核心器件设计要点

  1. 74HC595移位寄存器:

    • 低功耗,支持高速串行输入和并行输出。
    • 确保数据传输的稳定性,驱动LED矩阵每列的显示状态。
  2. ULN2803达林顿阵列:

    • 提供足够大电流,用于电源驱动管理LED矩阵的每行。
    • 保护设计,防止过电流或短路。
  3. STM32系列MCU:

    • 高速处理能力,用于实时控制LED点亮和数据处理。
    • 支持多种外设接口,如ADC、GPIO、串口等,便于实现与光笔检测、数据存储的交互。

六MCU重要功能的C代码及介绍

以下是STM32进行LED矩阵控制和光笔位置检测的C代码示例:

#include "stm32f1xx.h"

#define ROWS 32
#define COLS 32

// 初始化函数
void System_Init(void) {
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_SPI1_Init();
}

// LED矩阵显示函数
void LED_Display(uint8_t matrix[][COLS]) {
    for (int row = 0; row < ROWS; row++) {
        for (int col = 0; col < COLS; col++) {
            // 仅举例,具体逻辑依实现而定
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // 选通信号
            // 通过SPI发送寄存器数据
            HAL_SPI_Transmit(&hspi1, &matrix[row][col], 1, HAL_MAX_DELAY);
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
        }
    }
}

// 光笔位置检测函数
void Pen_Detect(void) {
    // 假设通过ADC检测光敏电阻值,取光笔位置
    HAL_ADC_Start(&hadc1);
    if (HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY) == HAL_OK) {
        uint32_t pinValue = HAL_ADC_GetValue(&hadc1);
        // 处理PIN的取值,根据实际情况实现
    }
}

int main(void) {
    System_Init();
    uint8_t ledMatrix[ROWS][COLS] = {0};

    while (1) {
        Pen_Detect();
        LED_Display(ledMatrix);
        HAL_Delay(100); // 适当的延迟,根据实际情况调整
    }
}

void SystemClock_Config(void) {
    // 系统时钟配置
}

void MX_GPIO_Init(void) {
    // GPIO初始化函数
}

void MX_SPI1_Init(void) {
    // SPI初始化函数
}

void MX_ADC1_Init(void) {
    // ADC初始化函数
}

代码介绍

  • System_Init: 初始化系统,包括时钟、GPIO、SPI和ADC的配置。
  • LED_Display: 扫描LED矩阵显示数据,通过SPI传输数据到移位寄存器。
  • Pen_Detect: 基于ADC读取光笔所在位置。
  • main函数: 系统主循环,调用光笔检测和LED显示函数,定期更新显示内容。

本题考察的主要知识点

  1. LED点阵显示屏设计:了解LED点阵的工作原理与实现方法,包括行列驱动和数据刷新等基础知识。
  2. 光笔触摸检测技术:掌握光笔检测的原理,如光电二极管、电阻变化检测等,能可靠地读取触摸信息。
  3. 单片机控制系统:具备使用MCU实现系统控制的能力,需要编程实现数据采集、处理和控制LED阵列。
  4. 电路设计与调试:熟悉电子元件的选择与使用,能够设计和实现高效、可靠的电子系统,并进行调试和优化。
  5. 图形处理:掌握基本的图形处理算法,包括点亮、绘制矩形、清除等基本操作。
  6. 功耗管理:了解如何实现系统的低功耗设计,特别是在休眠和低功耗模式下的设计和实现。
  7. 用户接口设计:设计友好的用户接口,使系统操作简便易行。
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号