embedded-systems-labs/prekol-display
2025-12-25 11:09:27 +03:00
..
diagram.json initial commit 2025-12-25 11:09:27 +03:00
keyboard.c initial commit 2025-12-25 11:09:27 +03:00
keyboard.h initial commit 2025-12-25 11:09:27 +03:00
main.c initial commit 2025-12-25 11:09:27 +03:00
main.h initial commit 2025-12-25 11:09:27 +03:00
README.md initial commit 2025-12-25 11:09:27 +03:00
tm1637.c initial commit 2025-12-25 11:09:27 +03:00
tm1637.h initial commit 2025-12-25 11:09:27 +03:00
wokwi-project.txt initial commit 2025-12-25 11:09:27 +03:00

Lab 1 — Display (TM1637 + DIP + Keypad)

1. Цель работы

Считать состояние 8 дискретных входов (DIP-переключатель) и отображать его на 7-сегментном индикаторе TM1637 в трёх режимах:

  • BIN — по битам (канал 0..7 и его состояние)
  • DEC — число 0..255
  • HEX — число 00..FF
    Переключение режимов кнопками B / D / H на матричной клавиатуре.

2. Аппаратная часть и подключения

Платформа: STM32 Nucleo (симуляция Wokwi)
Устройства:

  • TM1637 (PA6 = CLK, PA7 = DIO)
  • DIP switch 8 (входы: PA12, PA11, PB1, PA4, PA1, PA0, PC14, PC13)
  • Keypad (матрица; используются B/D/H)
  • LED-индикаторы режима: BIN (PA15), DEC (PA9), HEX (PC7)
  • UART (USART2) для printf

3. Логика работы

3.1 Считывание входов (DIP)

  • Входы сконфигурированы как input + pull-down, верхние выводы DIP сидят на 3V3.
  • Формируется байт value (bit0..bit7).

3.2 Режимы отображения

  • BIN: каждые ~250 мс показывается канал N и его состояние (h / 0), канал циклически 0..7.
  • DEC: отображается value (0..255).
  • HEX: отображается value как 00..FF.

3.3 Обработка клавиатуры

Нажатия:

  • B → режим BIN
  • D → режим DEC
  • H → режим HEX

3.4 Тайминги (по коду)

  • SysTick: 1 мс (tickCount)
  • Скан DIP: ~каждые 10 мс
  • Обновление дисплея: ~каждые 250 мс
  • Скан клавиатуры: ~каждые 100 мс

4. Стейт-машина (режимы)

stateDiagram-v2
  [*] --> BIN

  BIN --> DEC: key 'D'
  BIN --> HEX: key 'H'

  DEC --> BIN: key 'B'
  DEC --> HEX: key 'H'

  HEX --> BIN: key 'B'
  HEX --> DEC: key 'D'

5. Скриншоты состояний (ОБЯЗАТЕЛЬНО для Lab1)

BIN

BIN mode

DEC

DEC mode

HEX

HEX mode

6. Сборка и запуск

  • открыть проект/схему и запустить симуляцию

7. Выводы

  • Реализовано считывание 8 дискретных входов и вывод на TM1637 в 3 форматах.
  • Переключение режимов сделано через матричную клавиатуру (B/D/H) + индикация светодиодами.
  • Тайминги выполнены на SysTick без RTOS.

8. Ссылки