- 7-сегментный дисплей
- Необходимые материалы
- Принципиальная электрическая схема
- Программирование ARM7 LPC2148
Дисплей является очень важной частью любого встроенного системного приложения, поскольку он помогает пользователям узнать состояние системы, а также отображает выходные данные или любое предупреждающее сообщение, генерируемое системой. В электронике используется множество типов дисплеев, таких как 7-сегментный дисплей, ЖК-дисплей, сенсорный TFT-дисплей, светодиодный дисплей и т. Д.
Мы уже сопрягали ЖК-дисплей 16x2 с ARM7-LPC2148 в нашем предыдущем руководстве. Сегодня в этом руководстве мы соединим 7-сегментный дисплей с ARM7-LPC2148. Прежде чем вдаваться в подробности, мы увидим, как управлять 7-сегментным модулем для отображения любого количества символов.
7-сегментный дисплей
7-сегментные дисплеи являются одними из самых простых дисплеев для отображения чисел и символов. Обычно он используется для отображения чисел, имеет более яркое освещение и более простую конструкцию, чем матричный дисплей. А из-за более яркого освещения изображение можно увидеть с большего расстояния, чем на ЖК-дисплее. Как показано на приведенном выше изображении 7-сегментного дисплея, он состоит из 8 светодиодов, каждый светодиод используется для освещения одного сегмента устройства, а 8-й светодиод используется для освещения точки на 7-сегментном дисплее. 8thLED используется, когда используются два или более 7-сегментных модуля, например, для отображения (0,1). Один модуль используется для отображения одной цифры или символа. Для отображения более одной цифры или символа используются несколько 7-сегментов.
Контакты 7-сегментного дисплея
Есть 10 контактов, в которых 8 контактов используются для обозначения a, b, c, d, e, f, g и h / dp, два средних контакта являются общим анодом / катодом всех светодиодов. Эти общие анод / катод закорочены внутри, поэтому нам нужно подключить только один контакт COM.
В зависимости от подключения мы подразделяем 7-сегментный на два типа:
Общий катод
В этом случае все отрицательные клеммы (катоды) всех 8 светодиодов соединены вместе (см. Диаграмму ниже) и названы COM. И все положительные клеммы оставлены в покое или подключены к контактам микроконтроллера. Если мы используем микроконтроллер, мы устанавливаем логику HIGH, чтобы осветить конкретный объект, и LOW, чтобы выключить светодиод.
Общий анод
В этом случае все положительные клеммы (аноды) всех 8 светодиодов соединены вместе и называются COM. И все отрицательные термики остаются в покое или подключены к выводам микроконтроллера. Если мы используем микроконтроллер, мы устанавливаем логику LOW, чтобы освещать конкретную, и устанавливаем логику High, чтобы выключить светодиод.
Таким образом, в зависимости от значения булавки, можно включить или выключить определенный сегмент или линию из 7 сегментов для отображения нужного числа или алфавита. Например, чтобы отобразить цифру 0, мы должны установить контакты ABCDEF как HIGH и только G как LOW. Поскольку светодиоды ABCDEF включены, а G выключен, это формирует цифру 0 в 7-сегментном модуле. (Это для общего катода, для общего анода - наоборот).
В таблице ниже показаны значения HEX и соответствующая цифра в соответствии с выводами LPC2148 для общей конфигурации катода.
Цифра |
Значения HEX для LPC2148 |
А |
B |
C |
D |
E |
F |
г |
0 |
0xF3 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0x12 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
2 |
0x163 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
3 |
0x133 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
4 |
0x192 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
5 |
0x1B1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
6 |
0x1F1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
7 |
0x13 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
8 |
0x1F3 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
9 |
0x1B3 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
ВАЖНО: В таблице выше я указал значения HEX в соответствии с выводами, которые я использовал в LPC2148, проверьте схему ниже. Вы можете использовать любые булавки, но измените шестнадцатеричные значения в соответствии с этим.
Чтобы узнать больше о 7-сегментном дисплее, перейдите по ссылке. Также проверьте взаимодействие 7-сегментного дисплея с другими микроконтроллерами:
- 7-сегментный дисплей с интерфейсом Raspberry Pi
- 7-сегментный дисплей, взаимодействующий с микроконтроллером PIC
- 7-сегментный дисплей с интерфейсом Arduino
- 7-сегментный дисплей, взаимодействующий с микроконтроллером 8051
- 0-99 Счетчик с использованием микроконтроллера AVR
Необходимые материалы
Оборудование
- ARM7-LPC2148
- Модуль семисегментного дисплея (однозначный)
- Макетная плата
- Подключение проводов
Программного обеспечения
- Keil uVision5
- Flash Magic
Принципиальная электрическая схема
Для подключения 7-сегментного интерфейса к LPC2148 не требуется никаких внешних компонентов, как показано на принципиальной схеме ниже:
В таблице ниже показаны схемы соединений между 7-сегментным модулем и LPC2148.
Семь выводов модуля сегментов |
LPC2148 контакты |
А |
P0.0 |
B |
P0.1 |
C |
P0.4 |
D |
P0.5 |
E |
P0.6 |
F |
P0.7 |
г |
P0.8 |
Общие |
GND |
Программирование ARM7 LPC2148
Мы узнали, как программировать ARM7-LPC2148 с помощью Keil в нашем предыдущем руководстве. Здесь мы используем тот же Keil uVision 5, чтобы написать код и создать шестнадцатеричный файл, а затем загрузить шестнадцатеричный файл в LPC2148 с помощью инструмента flash magic. Мы используем USB-кабель для питания и загрузки кода на LPC2148.
Полный код с объяснением видео дан в конце этого руководства. Здесь мы объясняем несколько важных частей кода.
Сначала нам нужно включить файл заголовка для микроконтроллера серии LPC214x.
#включают
Затем установите контакты как выход
IO0DIR = IO0DIR-0xffffffff
Это устанавливает контакты P0.0 - P0.31 в качестве выхода, но мы будем использовать только контакты (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 и P0.8)..
Затем установите для определенных контактов значение LOGIC HIGH или LOW в соответствии с отображаемой числовой цифрой. Здесь мы будем отображать значения от (0 до 9). Мы будем использовать массив, содержащий значения HEX для значений от 0 до 9.
беззнаковое int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
Значения будут непрерывно отображаться на дисплее, как код был введен в то время как цикл
while (1) { for (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // устанавливает соответствующие выводы HIGH delay (9000); // Вызов функции задержки IO0CLR = IO0CLR-a; // Устанавливает соответствующие выводы LOW } }
Здесь IOSET и IOCLR используются для установки контактов HIGH и LOW соответственно. Поскольку мы использовали контакты PORT0, у нас есть IO0SET и IO0CLR .
Цикл For используется для увеличения i на каждой итерации, и каждый раз, когда i увеличивается, сегмент 7 также увеличивает цифру, которая отображается на нем.
функция задержки используется для генерации времени задержки между SET и CLR
void delay (int k) // Функция для создания задержки { int i, j; для (i = 0; i
Полный код и описание рабочего видео приведены ниже. Также проверьте здесь все проекты, связанные с 7-сегментным дисплеем.