Съдържание:

3-жичен HD44780 LCD за по-малко от 1 долар: 5 стъпки
3-жичен HD44780 LCD за по-малко от 1 долар: 5 стъпки

Видео: 3-жичен HD44780 LCD за по-малко от 1 долар: 5 стъпки

Видео: 3-жичен HD44780 LCD за по-малко от 1 долар: 5 стъпки
Видео: Текстовые LCD дисплей на контроллере HD44780, Уроки Arduino 2024, Ноември
Anonim
3-жичен HD44780 LCD за по-малко от 1 долар
3-жичен HD44780 LCD за по-малко от 1 долар

В тази инструкция ще научим как можем да свържем LCD, базиран на чипсета HD44780, към SPI шината и да го задвижваме само с 3 проводника за по -малко от $ 1. Въпреки че ще се фокусирам върху буквено -цифровия дисплей HD44780 в този урок, същият принцип ще работи почти еднакво за всеки друг LCD, който използва 8 -битова паралелна шина за данни, и може много лесно да се адаптира, за да отговаря на дисплеи с 16 -битови шини за данни. Буквено -цифровите дисплеи, базирани на HD44780 (и съвместими), обикновено се предлагат в конфигурации 16x2 (2 реда, състоящи се от 16 знака) и 20x4, но могат да бъдат намерени в много повече форми. Най -сложният дисплей би бил 40x4 дисплей, този вид дисплей е специален, тъй като има 2 HD44780 контролера, един за горните два реда и един за долните два реда. Някои графични LCD дисплеи имат и два контролера. LCD дисплеите HD44780 са страхотни, много са евтини, четими и доста лесни за работа. Но те също имат някои недостатъци, тези дисплеи заемат много I/O пинове, когато са свързани с Arduino. В прости проекти това не е проблем, но когато проектите станат големи, с много IO или когато са необходими определени щифтове за неща като аналогово четене или ШИМ, фактът, че тези LCD дисплеи изискват минимум 6 пина, може да стане проблем. Но можем да решим този проблем по евтин и интересен начин.

Стъпка 1: Получаване на компонентите

Използвах TaydaElectronics за повечето компоненти, които използвах в този проект. Можете да получите тези части и в ebay, но за по -лесно използване ще ви свържа с Tayda. Списък за пазаруване2 - 74HC595 пакет DIP161 - Обща мъжка заглавка - 2 пина. Това не се изисква, използвах това като начин за постоянно деактивиране на подсветката.3 - Керамичен кондензатор - капацитет 0.1 μF; напрежение 50V1 - Електролитен кондензатор - капацитет 10µF; напрежение 35V1 - Керамичен кондензатор - капацитет 220pF; напрежение 50V1 - NPN -транзистор - част # PN2222A* 1 - 1k Ω Резистор1 - Тример Потенциометър - максимално съпротивление 5kΩ1 - 470 Ω Резистор* При NPN транзистор подсветката ще остане изключена, докато не бъде включена от софтуера. Ако искате да включите подсветката по подразбиране, използвайте транзистор тип PNP. Ще трябва да се направят промени в кода на предоставената библиотека. Сумата на този списък е $ 0,744. Заглавката на щифта също не се изисква, така че можете да запишете 15 цента точно там и междинната сума ще бъде $ 0,6.

Стъпка 2: Познайте вашия хардуер #1

Знай своя хардуер #1
Знай своя хардуер #1

Ето един стандартен извод от HD44780 LCD, той също е много подобен на някои графични LCD дисплеи. HD44780 може да работи в два режима: 1. 4-битов режим, където всеки байт, изпратен на LCD, се състои от 2 4-битови части. 2. 8-битов режим, върху който ще се спрем. LCD дисплеят има общо 16 пина, 3 контролни пина и 8 пина за данни: RS - Контролира дали искаме да изпратим команда или данни към LCD. Където „високо“означава данни (символ), а „ниско“означава байт за команда. R/W - Контролерът HD44780 ви позволява да четете от неговата RAM. Когато този щифт е „висок“, можем да четем данни от неговите щифтове за данни. Когато е „ниско“, можем да запишем данни на LCD дисплея. Въпреки че опцията за четене от LCD може да бъде полезна в някои случаи, няма да я преглеждаме в този урок и просто ще заземим този щифт, за да гарантираме, че той винаги е в режим на запис. E - E е щифтът „Enable“, този щифт се превключва „високо“, след това „ниско“, за да запише данните в неговата RAM и в крайна сметка да ги покаже на екрана. DB0-7 - Това са пиновете за данни. В 4 -битов режим използваме само 4 -те битови DB4 -DB7, а в 8 -битов режим всички те се използват. VSS - Това е заземителният щифт., ние можем лесно да го захранваме от + 5v пина на Arduino. Vo - Това е щифтът, който ви позволява да зададете нивото на контраст за дисплея, той изисква потенциометър, обикновено се използва 5K Ohm пот. LED + - Това е източник на захранване за подсветката. Някои LCD дисплеи не се предлагат с подсветка и имат само 14 пина. В повечето случаи този щифт също изисква +5v връзка. LED- - Това е почвата за подсветката. ** Важно е да проверите листа с данни на дисплея или да проверите неговата печатна платка, за да проверите за резистор на подсветка, повечето LCD дисплеи ще ги построят -в този случай всичко, което трябва да направите, е да приложите захранване към LED+ и да заземите към LED-. Но в случай, че вашият LCD дисплей няма вграден резистор за подсветката, важно е да добавите такъв, в противен случай подсветката ще консумира много енергия и в крайна сметка ще изгори. В повечето случаи начинът, по който този LCD е свързан към Arduino, е чрез използването му в 4-битов режим и заземяване на R/W щифта. По този начин използваме щифтове RS, E и DB4-DB7. Работата в 4-битов режим има друг малък недостатък, тъй като отнема два пъти повече време за запис на данни на екрана, отколкото би било необходимо при 8-битова конфигурация. LCD дисплеят има време за „утаяване“от 37 микросекунди, което означава, че трябва да изчакате 37 микросекунди, преди да изпратите следващата команда или байт данни към LCD дисплея. Тъй като в 4-битов режим трябва да изпращаме данни два пъти за всеки байт, общото време, необходимо за запис на един байт, достига 74 микросекунди. Това все още е достатъчно бързо, но исках дизайнът ми да даде възможно най -добрите резултати. Решението на нашия проблем с броя на използваните щифтове се крие в сериен към паралелен преобразувател …

Стъпка 3: Познайте вашия хардуер #2

Знай своя хардуер #2
Знай своя хардуер #2

Това, което ще направим, е да изградим адаптер, който приема сериен тип комуникация, идваща от Arduino и преобразува данните в паралелен изход, който може да се подава към нашия LCD. Влиза чипът 74HC595. Това е много евтин и лесен за работа смяна регистър. По същество това, което той прави, е да приема часовник и сигнали за данни, които използва, за да запълни вътрешен 8 -битов буфер с 8 -те последни бита, които са „включени“. След като щифтът „Latch“(ST_CP) е поставен „високо“, той премества тези битове в своите 8 изхода. 595 има много хубава характеристика, има извод за сериен изход на данни (Q7 '), този щифт може да се използва за свързване на последователни 2 или повече 595 заедно, за да се образуват серийни към паралелни адаптери с ширина 16 или повече бита. За този проект ще ни трябват 2 от тези чипове. Схемата може също да бъде променена, за да работи с единична 595 в 4-битов режим, но това няма да бъде обхванато от този урок.

Стъпка 4: Окабеляване на всичко

Окабеляване на всичко
Окабеляване на всичко

Сега, когато знаем как работи хардуерът ни, можем да свържем всичко. В схемата виждаме 2 595 чипа, свързани последователно, за да образуват 16 -битов паралелен изход. Долният чип всъщност е основният, а горният е маргаритка, прикован към него. Това, което виждаме тук, е, че долният 595 управлява щифтовете за данни на LCD в 8-битова конфигурация, горният чип контролира RS сигнала и подсветката, като включва или изключва транзистор. Запомнете *бележката за подсветката на LCD дисплея на страница Знайте вашия хардуер #1, в случай че вашият LCD дисплей няма резистор за подсветка, не забравяйте да добавите такъв във вашата схема. В моя случай LCD дисплеите вече са с вграден резистор, така че пропуснах тази стъпка. Контрастът се прилага чрез 5K Ohm пот, един щифт отива към GND, вторият отива към VCC, а чистачката към Vo пина на LCD. Кондензаторите, използвани на LCD и 595 VCC линии, са разединяващи кондензатори, те са там, за да се отърват от смущенията. Те не са задължителни, ако работите върху макет, но трябва да се използват в случай, че изградите своя собствена версия на тази схема, която да се използва извън „лабораторни условия“. R5 и C9 в този много специфичен ред създават RC забавяне, което гарантира, че данните в изходите на 595 имат време да се стабилизират, преди щифтът Enable на LCD дисплея да е настроен „високо“и да прочете данните. Q7 'на долния 595 влиза в серийния вход на данни на 595 отгоре, това създава верига от маргаритка от 595s и по този начин 16 битов интерфейс. Окабеляването до Arduino е лесно. Използваме 3-жична конфигурация, използвайки SPI щифтовете на Arduino. Това позволява много бърз трансфер на данни, изпращането на 2 байта към LCD обикновено отнема около 8 микросекунди. Това е много бързо и всъщност е много по -бързо от времето, необходимо на LCD дисплея за обработка на данните, като по този начин е необходимо закъснение от 30 микросекунди между всяко записване. Едно много голямо предимство от използването на SPI е, че щифтовете D11 и D13 се споделят с други SPI устройства. Това означава, че ако вече имате друг компонент, който използва SPI, например акселерометър, това решение ще използва само един допълнителен щифт за сигнала за разрешаване. На следващата страница ще видим резултата. Изградих раница на перфорирана дъска и засега ми работи много добре.

Стъпка 5: Резултатът + библиотека

Библиотека Резултат +
Библиотека Резултат +
Библиотеката Резултат +
Библиотеката Резултат +
Библиотека Резултат +
Библиотека Резултат +
Библиотека Резултат +
Библиотека Резултат +

„Една картина струва хиляда думи“, съгласен съм с това твърдение, така че ето няколко изображения на крайния резултат за този проект. Това са изображения на завършения продукт, изгледът на печатната платка Fritzing е перфектното оформление, което използвах за изграждането на раницата си. Може да ви бъде полезно, ако искате да създадете свой собствен. Толкова ми хареса, че проектирах печатна платка с помощта на DipTrace и поръчах партида от 10 печатни платки. Ще ми трябват 2 или 3 единици за себе си, но ще направя останалите на разположение на символична цена, когато ги получа. Така че, ако някой се интересува, моля да ме уведоми. * Редактиране: ПХБ са тук и работят. Ето пълната галерия с картини за този проект, включително действителните печатни платки. https://imgur.com/a/mUkpw#0 Разбира се, не забравих най -важното - библиотека, с която да използвам тази схема. Той е съвместим с библиотеката LiquidCrystal, включена в Arduino IDE, така че можете лесно да замените декларациите в горната част на скицата си и да не се налага да променяте нищо друго в скицата си. Има и примерна скица, която демонстрира как работи всяка функция в библиотеката, затова я проверете.

Препоръчано: