Дисплей є дуже важливою частиною будь-якої вбудованої системної програми, оскільки допомагає користувачам дізнатися стан системи, а також відображає вихідні дані або будь-яке попереджувальне повідомлення, генероване системою. У електроніці існує багато типів дисплеїв, таких як 7-сегментний дисплей, РК-дисплей, сенсорний TFT-дисплей, світлодіодний дисплей тощо.
Ми вже зв’язали РК-дисплей 16x2 з ARM7-LPC2148 у нашому попередньому уроці. Сьогодні в цьому посібнику ми будемо взаємодіяти 7-сегментний дисплей з ARM7-LPC2148. Перш ніж вдаватися до деталей, ми побачимо, як керувати 7-сегментним модулем для відображення будь-якої кількості символів.
7-сегментний дисплей
7-сегментні дисплеї є одними з найпростіших блоків відображення цифр і символів. Зазвичай він використовується для відображення цифр, має яскравіше освітлення та простішу конструкцію, ніж матричний дисплей. І завдяки яскравішому освітленню, вихід можна переглядати з більшої відстані, ніж РК-дисплей. Як показано на наведеному вище зображенні 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. І всі позитивні клеми залишаються самі або підключені до контактів мікроконтролера. Якщо ми використовуємо мікроконтролер, ми встановлюємо логіку ВИСОКО, щоб підсвічувати конкретне, і встановлюємо LOW, щоб вимкнути світлодіод.
Загальний анод
При цьому всі позитивні клеми (аноди) усіх 8 світлодіодів з'єднані між собою, іменовані як COM. І всі негативні терміки залишаються в спокої або підключаються до контактів мікроконтролера. Якщо ми використовуємо мікроконтролер, ми встановлюємо логіку LOW, щоб підсвічувати конкретне, і встановлюємо логіку High, щоб вимкнути світлодіод.
Отже, залежно від значення виводу, певний відрізок або рядок із 7 відрізків можна ввімкнути або вимкнути для відображення потрібного числа або алфавіту. Наприклад, щоб відобразити 0 цифр, ми повинні встановити шпильки ABCDEF як ВИСОКІ і лише G як НИЗЬКІ. Оскільки світлодіоди ABCDEF світяться, а G вимикається, це утворює 0-значну цифру в 7-сегментному модулі. (Це для загального катода, для загального анода - навпаки).
Нижче в таблиці наведено значення HEX та відповідну цифру відповідно до штифтів LPC2148 для загальної конфігурації катода.
Цифра |
Значення HEX для LPC2148 |
A |
B |
C. |
D |
Е |
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 |
B |
P0.1 |
C. |
Р0.4 |
D |
P0.5 |
Е |
P0.6 |
F |
P0.7 |
G |
P0.8 |
Поширені |
GND |
Програмування ARM7 LPC2148
Ми дізналися, як програмувати ARM7-LPC2148 за допомогою Keil, у нашому попередньому уроці. Тут ми використовуємо той самий Keil uVision 5, щоб написати код і створити шістнадцятковий файл, а потім завантажити шістнадцятковий файл у LPC2148 за допомогою флеш-магічного інструменту. Ми використовуємо кабель 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). Ми будемо використовувати масив, що складається з шестигранних значень для значень від 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 затримки (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-сегментним дисплеєм.