Дисплеј је неопходан део машине било да се ради о кућним апаратима или индустријским машинама. Екран не само да приказује опције управљања за управљање машином, већ приказује и статус и излаз задатка који је та машина извршила. Постоји много типова екрана који се користе у електроници, попут 7-сегментног екрана, ЛЦД екрана, ТФТ екрана осетљивог на додир, ЛЕД екрана итд. ЛЦД дисплеј 16к2 је најосновнији и такође се користи у малој електронској опреми, урадили смо много пројекти који користе ЛЦД 16к2 укључујући основно повезивање са другим микроконтролерима:
- ЛЦД интерфејс са микроконтролером 8051
- Повезивање ЛЦД-а са АТмега32 микроконтролером
- ЛЦД повезивање са ПИЦ микроконтролером
- Повезивање ЛЦД-а од 16к2 са Ардуином
- ЛЦД повезивање 16к2 са Распберри Пи помоћу Питхона
У овом упутству видећемо како повезати ЛЦД 16к2 са микроконтролером АРМ7-ЛПЦ2148 и приказати једноставну поруку добродошлице. Ако сте нови у АРМ7, онда почните са основама АРМ7 ЛПЦ2148 и научите како се то може програмирати помоћу Кеил уВисион
Потребни материјали
Хардвер
- АРМ7-ЛПЦ2148 Плоча микроконтролера
- ЛЦД (16Кс2)
- Потенциометар
- 5В регулатор напона ИЦ
- Бреадбоард
- Повезивање жица
- 9В батерија
- Микро УСБ кабл
Софтвер
- Кеил уВисион 5
- Магиц Фласх Тоол
Пре него што уђемо у пројекат, морамо знати неколико ствари о ЛЦД режимима рада и о шестоугаоним кодовима ЛЦД екрана.
Модул ЛЦД екрана 16Кс2
ЛЦД од 16Кс2 каже да има 16 колона и 2 реда. Овај ЛЦД има 16 пинова. Испод слике и табеле су приказани називи пинова ЛЦД екрана и његове функције.
НАМЕ |
ФУНКЦИЈА |
ВСС |
Гроунд Пин |
ВДД |
+ 5В улазни пин |
ВЕЕ |
Пин за подешавање контраста |
РС |
Регистер Селецт |
Р / В |
Читати / писати пин |
Е. |
Омогући пин |
Д0-Д7 |
Прибадаче (8 пинова) |
ЛЕД А |
Анодни пин (+ 5В) |
ЛЕД К |
Катодна игла (ГНД) |
ЛЦД може радити у два различита режима, наиме у 4-битном и 8-битном режиму. У 4-битном режиму шаљемо грицкање података грицкањем, прво горње, а затим доње грицкање. За оне од вас који не знате шта је грицкање: грицкање је група од четири бита, па доња четири бита (Д0-Д3) бајта чине доњи грицкање, док горња четири бита (Д4-Д7) бајта чине вишу грицкалицу. То нам омогућава слање 8-битних података.
Док у 8-битном режиму можемо да пошаљемо 8-битне податке директно једним потезом, јер користимо свих 8 линија података.
Овде ћемо у овом пројекту користити најчешће коришћени режим који је 4-битни режим. У четворобитном режиму можемо уштедети 4 пина микроконтролера и такође смањити трошкове ожичења.
16к2 такође користи ХЕКС код за преузимање било које наредбе, постоји много хексадецималних команди за ЛЦД попут померања курсора, избора режима, померања контроле у другу линију итд. Да бисте сазнали више о 16Кс2 ЛЦД дисплеју и хекс наредбама, следите везу.
Кружни дијаграм и везе
Испод табеле приказане су везе круга између ЛЦД-а и АРМ7-ЛПЦ2148.
АРМ7-ЛПЦ2148 |
ЛЦД (16к2) |
П0.4 |
РС (Избор регистра) |
П0.6 |
Е (Омогући) |
П0.12 |
Д4 (подаци пин 4) |
П0.13 |
Д5 (подаци пин 5) |
П0.14 |
Д6 (подаци пин 6) |
П0.15 |
Д7 (подаци пин 7) |
Прикључци регулатора напона са ЛЦД и АРМ7 Стицк
Испод табеле приказане су везе између АРМ7 и ЛЦД-а са регулатором напона.
ИЦ регулатор напона |
Пин функција |
ЛЦД и АРМ-7 ЛПЦ2148 |
1.Лефт Пин |
+ Ве од батерије 9В улаза |
НЦ |
2.Центре Пин |
- Ве од батерије |
ВСС, Р / В, К ЛЦД ГНД АРМ7 |
3.десна игла |
Регулирани + 5В излаз |
ВДД, А ЛЦД + 5В АРМ7 |
Потенциометар са ЛЦД екраном
Потенциометар се користи за подешавање контраста ЛЦД екрана. Лонац има три пина, леви пин (1) повезан је на + 5В, а центар (2) на ВЕЕ или В0 ЛЦД модула, а десни пин (3) повезан је на ГНД. Контраст можемо подесити окретањем дугмета.
Јумпер Сеттингс
У АРМ7-Стицк присутан је краткоспојник, тако да код можемо напајати и преносити помоћу УСБ-а или помоћу 5В ДЦ улаза само за напајање. Слике испод можете видети.
Испод слике се види да је краткоспојник у ДЦ положају. То значи да морамо напајати плочу из спољног 5В напајања.
А ова слика показује да је краткоспојник повезан у УСБ режиму. Овде се напајање и код обезбеђују преко микро усб порта.
НАПОМЕНА: Овде у овом упутству смо учитали код помоћу УСБ-а постављањем краткоспојника на УСБ, а затим смо пребацили краткоспојник у ДЦ режим ради напајања ЛПЦ2148 са 5в улаза регулатора. Ово можете погледати у видеу датом на крају.
Коначно коло за повезивање ЛЦД-а 16к2 са АРМ7 микроконтролером изгледаће овако:
Програмирање АРМ7-ЛПЦ2148
За програмирање АРМ7-ЛПЦ2148 потребан нам је алат за уВисион и Фласх Магиц. Користимо УСБ кабл за програмирање АРМ7 Стицк преко микро УСБ порта. Код пишемо помоћу Кеила и креирамо хек датотеку, а затим се ХЕКС датотека флешира на АРМ7 стицк користећи Фласх Магиц. Да бисте сазнали више о инсталирању кеил уВисион и Фласх Магиц, и како их користити, следите везу Први кораци са АРМ7 ЛПЦ2148 микроконтролером и програмирајте га помоћу Кеил уВисион.
Комплетни код за повезивање ЛЦД-а са АРМ 7 дат је на крају овог водича, овде објашњавамо неколико његових делова.
Пре свега морамо да уврстимо потребне датотеке заглавља
#инцлуде
Иницијализација ЛЦД модула је веома важан корак. Овде користимо одређене ХЕКС кодове, који су заправо наредбе, да бисмо ЛЦД-у рекли о начину рада (4-битни), врсти ЛЦД-а (16к2), почетној линији итд.
воид ЛЦД_ИНИТИЛИЗЕ (воид) // Функција за спремање ЛЦД-а { ИО0ДИР = 0к0000ФФФ0; // поставља пин П0.4, П0.6, П0.12, П0.13, П0.14, П0.15 као ИЗЛАЗ делаи_мс (20); ЛЦД_СЕНД (0к02); // Иницијализација лцд-а у 4-битном режиму рада ЛЦД_СЕНД (0к28); // 2 реда ( 16Кс2 ) ЛЦД_СЕНД (0к0Ц); // Приказ на показивачу искључен ЛЦД_СЕНД (0к06); // Курсор за аутоматско повећање ЛЦД_СЕНД (0к01); // прикажи јасан ЛЦД_СЕНД (0к80); // Прва позиција у првом реду }
За 4-битни режим имамо другачију функцију уписивања за пинове, односно коришћењем горњег и доњег грицкања. Да видимо како се то ради
воид ЛЦД_СЕНД (цхар наредба) // Функција за слање хек наредби грицкајући грицкањем { ИО0ПИН = ((ИО0ПИН & 0кФФФФ00ФФ) - ((цомманд & 0кФ0) << 8)); // Пошаљите горњи гутљај наредбе ИО0СЕТ = 0к00000040; // Омогућавање ХИГХ ИО0ЦЛР = 0к00000030; // Израда РС & РВ ЛОВ делаи_мс (5); ИО0ЦЛР = 0к00000040; // Омогућавање ЛОВ делаи_мс (5); ИО0ПИН = ((ИО0ПИН & 0кФФФФ00ФФ) - ((команда & 0к0Ф) << 12)); // Пошаљите доњи грицкање команде ИО0СЕТ = 0к00000040; // Омогући високи ИО0ЦЛР = 0к00000030; // РС & РВ ЛОВ делаи_мс (5); ИО0ЦЛР = 0к00000040; // ОНАБЛЕ ЛОВ делаи_мс (5); }
Грицкање логике слања
ИО0ПИН = ((ИО0ПИН & 0кФФФФ00ФФ) - ((команда & 0к0Ф) << 12)); // Пошаљите доњи грицкање команде ИО0ПИН = ((ИО0ПИН & 0кФФФФ00ФФ) - ((команда & 0кФ0) << 8)); // Пошаљите горњи грицкање команде
Горе наведене две изјаве играју важну улогу у овом програму. Прва наредба шаље доњи грицкање, а друга шаље горњи грицкање. То је без утицаја на остале пинове које радимо. Погледајмо како се то дешава пре него што прво упознамо ову логику
ОРИНГ- (А-0 = А), (А-1 = 1) АНДинг- (А & 0 = 0), (А & 1 = А)
Дакле, користимо концепт маскирања и операцију логичког помака без утицаја на остале пинове. Значи да се користе само пинови (П0.12-П0.15) и да то не утиче на друге пинове попут П0.4, П0.6. То ће се урадити померањем података у четири бита и прављењем горњег грицкања на место доњег грицкања и маскирањем горњег грицкања. А онда правимо доње битове нулу (0КСФ0) и ОРед са подацима о грицкању да бисмо добили горње податке о грицкању на излазу.
Сличан поступак се користи за доње грицкање података, али овде не морамо да померамо податке.
Током писања података на излаз, то јест, у командном режиму РС треба да буде НИСКА, а за извршавање омогућавање мора бити ВИСОКО, а у режиму података РС треба бити ВИСОКО, а за извршавање омогућавање мора бити ВИСОКО.
Сада се за слање стринг података који се штампају на излазу, користи исти принцип грицкање по грицкање. Овде је важан корак РЕГИСТРАЦИЈА ОДАБИРА (РС) мора бити ВИСОКО за режим података.
воид ЛЦД_ДИСПЛАИ (цхар * мсг) // Функција за штампање знакова послатих један по један { уинт8_т и = 0; вхиле (мсг! = 0) { ИО0ПИН = ((ИО0ПИН & 0кФФФФ00ФФ) - ((мсг & 0кФ0) << 8)); // шаље горњи грицкање ИО0СЕТ = 0к00000050; // РС ХИГХ & Омогући ХИГХ за штампање података ИО0ЦЛР = 0к00000020; // РВ ЛОВ кашњење режима писања мс (2); ИО0ЦЛР = 0к00000040; // ЕН = 0, РС и РВ непромењени (тј. РС = 1, РВ = 0) кашњење мс (5); ИО0ПИН = ((ИО0ПИН & 0кФФФФ00ФФ) - ((мсг & 0к0Ф) << 12)); // шаље доњи грицкање ИО0СЕТ = 0к00000050; // РС & ЕН ХИГХ ИО0ЦЛР = 0к00000020; кашњење мс (2); ИО0ЦЛР = 0к00000040; кашњење мс (5); и ++; }
Комплетан видео кодирање и демонстрација дат је у наставку.