- Необходими материали
- Електрическа схема и връзка
- Програмиране на STM32 за LCD с помощта на Arduino
- Качване на програмата на STM32F103C8T6
За всеки проект на микроконтролер, свързването на дисплей с него би направило проекта много по-лесен и привлекателен за потребителя за взаимодействие. Най-често използваният дисплей за микроконтролери е 16 × 2 алфа цифрови дисплеи. Този тип дисплеи са не само полезни за показване на жизненоважна информация на потребителя, но могат да действат и като инструмент за отстраняване на грешки по време на началния етап на развитие на проекта. И така, в този урок ще научим как можем да свържем 16 × 2 LCD дисплей с платката за развитие STM32F103C8T6 STM32 и да го програмираме с помощта на Arduino IDE. За хората, които са запознати с Arduino, този урок ще бъде просто разходка, тъй като и двамата са много сходни. Също така, за да научите повече за STM32 Blue Pill Board, следвайте нашия урок за започване на работа.
Необходими материали
- STM32 Син хапче за разработка
- 16 × 2 LCD дисплей
- Програмист за FTDI
- Свързване на проводници
- LCD
Кратко въведение в матричен LCD дисплей с размери 16 × 2 точки
Както беше казано по-рано, Energia IDE предлага красива библиотека, която прави връзката парче торта и следователно не е задължително да се знае нещо за дисплейния модул. Но не би ли било интересно да покажем какво използваме !!
Името 16 × 2 предполага, че дисплеят има 16 колони и 2 реда, което заедно (16 * 2) образува 32 кутии. Една единична кутия ще изглежда нещо подобно на снимката по-долу
Едно поле има 40 пиксела (точки) с матричен ред от 5 реда и 8 колони, тези 40 пиксела заедно образуват един символ. По същия начин 32 символа могат да бъдат показани с помощта на всички полета. Сега нека да разгледаме щифтовете.
LCD има общо 16 щифта, както е показано по-горе, те могат да бъдат категоризирани в четири групи, както следва
Изходни щифтове (1, 2 и 3): Тези щифтове осигуряват ниво на мощност и контраст за дисплея
Контролни щифтове (4, 5 и 6): Тези щифтове задават / контролират регистрите в интегралната интегрална схема на LCD (повече това можете да намерите в линка по-долу)
Данни / командни щифтове (7 до 14): Тези щифтове предоставят данни за това каква информация трябва да се показва на LCD дисплея.
LED щифтове (15 и 16): Тези щифтове се използват за осветяване на подсветката на LCD, ако е необходимо (по избор).
От всички тези 16 пина, само 10 пина трябва да се използват задължително за правилната работа на LCD, ако искате да научите повече за тези LCD дисплеи, преминете към тази статия с 16x2 LCD.
Електрическа схема и връзка
Схемата за свързване на 16 * 2-матричен LCD матрица със STM32F103C8T6 STM32 Blue Pill board е показана по-долу. Изработва се с помощта на софтуера Fritzing.
Както можете да видите пълната връзка е направена през макет. Нуждаем се от FTDI платка, за да програмираме микроконтролера STM32. Подобно на нашия предишен урок, ние свързахме FTDI платката към STM32, Vcc и заземяващият щифт на програмиста FDTI е свързан съответно с 5V пинов и заземен щифт на STM32. Това се използва за захранване на платката STM32 и LCD, тъй като и двете могат да приемат консерва + 5V. Rx и Tx щифтът на платката FTDI е свързан с щифтовете A9 и A10 на STM32, така че да можем да програмираме платката директно без зареждащото устройство.
След това LCD трябва да бъде свързан към платката STM32. Ще използваме LCD в 4-битов режим, така че трябва да свържем 4-те битови щифта за данни (DB4 към DB7) и двата контролни щифта (RS и EN) към платката STM32, както е показано в схемата за свързване на LCD STM32F103C8T6 диаграма по-горе. Освен това таблицата по-долу ще ви помогне при осъществяването на връзката.
Номер на LCD щифт |
Име на LCD щифт |
Име на щифта STM32 |
1 |
Земя (Gnd) |
Земя (G) |
2 |
VCC |
5V |
3 |
VEE |
Земя (G) |
4 |
Избор на регистър (RS) |
PB11 |
5 |
Четене / запис (RW) |
Земя (G) |
6 |
Активиране (EN) |
PB10 |
7 |
Бит за данни 0 (DB0) |
Без връзка (NC) |
8 |
Бит за данни 1 (DB1) |
Без връзка (NC) |
9 |
Бит за данни 2 (DB2) |
Без връзка (NC) |
10 |
Бит за данни 3 (DB3) |
Без връзка (NC) |
11. |
Бит за данни 4 (DB4) |
PB0 |
12 |
Бит за данни 5 (DB5) |
PB1 |
13 |
Бит за данни 6 (DB6) |
PC13 |
14. |
Бит за данни 7 (DB7) |
PC14 |
15 |
LED Положителен |
5V |
16. |
LED отрицателен |
Земя (G) |
След като свързването свърши, можем да отворим IDE на Arduino и да започнем да го програмираме.
Програмиране на STM32 за LCD с помощта на Arduino
Както е казано в този урок, ще използваме Arduino IDE за програмиране на нашия микроконтролер STM32. Но Arduino IDE по подразбиране няма да има инсталирана платка STM32, поради което трябва да изтеглим пакет и да подготвим Arduino IDE за същото. Точно това направихме в предишния ни урок, като започнахме със STM32F103C8T6, използвайки Arduino IDE. Така че, ако не сте инсталирали необходимите пакети, върнете се към този урок и го следвайте, преди да продължите тук.
След като платката STM32 бъде инсталирана в IDE на Arduino, можем да започнем програмирането. Програмата е много подобна на тази на Arduino платка, единственото нещо, което ще се промени, са имената на пиновете, тъй като нотациите са различни за STM32 и Arduino. Цялата програма е дадена в края на тази страница, но за да обясня програмата, я разделих на малки смислени фрагменти, както е показано по-долу.
Едно забележимо предимство от използването на Arduino за програмиране на нашите микроконтролери е, че Arduino има готови библиотеки за почти всички известни сензори и изпълнителни механизми. И така, тук започваме нашата програма, като включваме LCD библиотеката, което улеснява програмирането.
#include
В следващия ред трябва да посочим към кои GPIO щифтове на STM32 сме свързали контролите на LCD дисплея и линии за данни. За да направим това, ние трябва да проверим нашия хардуер, за по-лесно можете да се обърнете и към таблицата, дадена в горната част, която изброява имената на щифтове на LCD срещу GPIO щифта на STM32. След споменаването на щифтовете можем да инициализираме LCD с помощта на функцията LiquidCrystal . Ние също така наричаме своя LCD като „ lcd “, както е показано по-долу.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // споменаваме имената на щифтовете с, когато LCD е свързан с LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Инициализиране на LCD
След това стъпваме във функцията за настройка . Тук първо споменахме какъв тип LCD използваме. Тъй като това е 16 * 2 LCD, ние използваме линията lcd.begin (16,2). Кодът във функцията за настройка на void се изпълнява само веднъж. Затова го използваме за показване на въвеждащ текст, който се появява на екрана за 2 секунди и след това се изчиства. За да споменем позицията, където трябва да се появи текстът, използваме функцията lcd.setcursor, а за отпечатване на текста използваме функцията lcd.print . Например lcd.setCursor (0,0) ще зададе курсора на първия ред и първата колона, където отпечатваме „ Interfacing LCD “ и функцията lcd.setCursor (0,1) премества курсора на втория ред в първата колона, където отпечатваме реда „ CircuitDigest ”.
void setup () {lcd.begin (16, 2); // Използваме 16 * 2 LCD lcd.setCursor (0, 0); // В първия ред първа колона lcd.print ("Интерфейсен LCD"); // Отпечатваме този lcd.setCursor (0, 1); // В първа колона на втория ред lcd.print ("- CircuitDigest"); // Отпечатайте това забавяне (2000); // чакаме две секунди lcd.clear (); // изчистване на екрана}
След показване на въвеждащия текст ние държим програмата за 2 секунди, като създаваме забавяне, така че потребителят да може да прочете въвеждащото съобщение. Това закъснение се създава от закъснението на линията (2000), където 2000 е стойността на закъснението в милионни секунди. След закъснението изчистваме LCD с помощта на функцията lcd.clear (), която изчиства LCD, като премахва целия текст на LCD.
Накрая вътре в невалидни линия, ние се покаже "STM32 -Blue Pill" на първа линия, а стойността на секунди на втора линия. Стойността на секундата може да бъде получена от функцията millis () . На милисекунди () е таймер, който получава увеличаване още от момента, в който се захранва MCU. Стойността е под формата на мили секунди, така че я разделяме на 1000, преди да я покажем на нашия LCD.
цикъл void () { lcd.setCursor (0, 0); // На първия ред първа колона lcd.print ("STM32 -Синьо хапче"); // Отпечатваме този lcd.setCursor (0, 1); // В първа колона на втория ред lcd.print (millis () / 1000); // Отпечатваме стойността на secounds }
Качване на програмата на STM32F103C8T6
Както беше обсъдено в горния параграф, трябва да можете да забележите изхода веднага след като кодът бъде качен. Но тази програма няма да работи следващия път, когато включите платката, тъй като платката все още е в режим на програмиране. Така че, след като програмата бъде качена, джъмперът при стартиране 0 трябва да бъде върнат на 0 позиции, както е показано по-долу. Също така сега, тъй като програмата е качена на платката STM32, вече не се нуждаем от платката FTDI и цялата настройка може да се захранва от micro-USB порта на платката STM32, както е показано по-долу.
Това е просто прост проект за взаимодействие, който помага да се използва LCD дисплеят със STM32 платка, но освен това можете да го използвате за изграждане на страхотни проекти. Надявам се, че сте разбрали урока и сте научили нещо полезно от него. Ако сте се сблъскали с някакъв проблем при задействането му, моля, използвайте раздела за коментари, за да публикувате проблема или използвайте форумите за други технически въпроси. Най- пълен вид обработка на LCD дисплей с STM32 може да се намери като видео по-долу.