Дисплеят е много важна част от всяко вградено системно приложение, тъй като помага на потребителите да знаят състоянието на системата, а също така показва изхода или всяко предупредително съобщение, генерирано от системата. В електрониката се използват много видове дисплеи като 7-сегментен дисплей, LCD дисплей, TFT сензорен дисплей, LED дисплей и др.
Вече сме свързали 16x2 LCD с ARM7-LPC2148 в предишния ни урок. Днес в този урок ще свържем 7-сегментен дисплей с ARM7-LPC2148. Преди да влезем в подробности, ще видим как да управляваме 7-сегментния модул за показване на произволен брой знаци.
7-сегментен дисплей
7-сегментните дисплеи са сред най-простите дисплейни единици за показване на числата и символите. Обикновено се използва за показване на числа и има по-ярко осветление и по-проста конструкция от матричния дисплей. И поради по-яркото осветление, изходът може да се гледа от по-голямо разстояние от LCD. Както е показано на горното изображение на 7-сегментен дисплей, той се състои от 8 светодиода, всеки светодиод, използван за осветяване на един сегмент от модула, и 8thLED, използван за осветяване на DOT в 7-сегментен дисплей. 8thLED се използва, когато се използват два или повече 7-сегментни модула, например за показване (0.1). Един модул се използва за показване на едноцифрена цифра или символ. За показване на повече от една цифра или символ се използват множество 7-сегмента.
Щипки на 7-сегментен дисплей
Има 10 щифта, в които 8 пина се използват за обозначаване на a, b, c, d, e, f, g и h / dp, двата средни щифта са общ анод / катод на всички той светодиоди. Тези общи анод / катод са вътрешно къси, така че трябва да свържем само един COM щифт
В зависимост от връзката ние класифицираме 7-сегмента в два типа:
Общ катод
В това всички отрицателни клеми (катод) на всичките 8 светодиода са свързани заедно (вижте диаграмата по-долу), наречени като COM. И всички положителни клеми остават сами или са свързани към щифтовете на микроконтролера. Ако използваме микроконтролер, ние задаваме логика HIGH за осветяване на конкретното и настройваме LOW за изключване на LED.
Общ анод
При това всички положителни клеми (аноди) на всичките 8 светодиода са свързани заедно, наречени COM. И всички отрицателни термици остават сами или са свързани към щифтовете на микроконтролера. Ако използваме микроконтролер, ние задаваме логика LOW, за да осветява конкретното и настройваме логика High, за да изключим светодиода.
Така че в зависимост от стойността на пина, определен сегмент или линия от 7 сегмента може да бъде включен или изключен, за да се покаже желаният номер или азбука. Например, за да покажем 0 цифри, трябва да зададем щифтове ABCDEF като HIGH и само G като LOW. Тъй като светодиодите ABCDEF са включени, а G е изключен, това формира 0 цифрата в 7-сегментен модул. (Това е за общ катод, за общ анод е противоположен).
Под таблицата са показани HEX стойностите и съответната цифра според LPC2148 щифтове за обща конфигурация на катода.
Цифра |
HEX стойности за LPC2148 |
A |
Б. |
° С |
д |
Е. |
F |
G |
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 щифтове |
A |
P0.0 |
Б. |
P0.1 |
° С |
P0.4 |
д |
P0.5 |
Е. |
P0.6 |
F |
P0.7 |
G |
P0.8 |
често срещани |
GND |
Програмиране ARM7 LPC2148
Научихме как да програмираме ARM7-LPC2148 с помощта на Keil в нашия предишен урок. Използваме същия Keil uVision 5 тук, за да напишем кода и да създадем шестнадесетичен файл и след това да го качим в LPC2148 с помощта на флаш магически инструмент. Използваме USB кабел за захранване и качване на код в LPC2148
Пълен код с видео обяснение е даден в края на този урок. Тук обясняваме няколко важни части от кода.
Първо трябва да включим заглавния файл за микроконтролера от серия LPC214x
#include
След това задайте щифтовете като изход
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
while (1) { for (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // задава съответните щифтове HIGH delay (9000); // Функция за забавяне на повикванията IO0CLR = IO0CLR-a; // Задава съответните щифтове НИСКО } }
Тук IOSET и IOCLR се използват за задаване на щифтове HIGH и LOW съответно. Тъй като ние използвахме PORT0 щифтове, така имаме IO0SET & IO0CLR .
Цикълът For се използва за увеличаване на i във всяка итерация и всеки път, когато i нараства, 7 сегмент също увеличава цифрата, която се показва на него.
функцията за забавяне се използва за генериране на време на закъснение между SET & CLR
void delay (int k) // Функция за извършване на забавяне { int i, j; за (i = 0; i
Пълното описание на кода и работещото видео е дадено по-долу. Също така проверете всички проекти, свързани със 7-сегментен дисплей тук.