- Необходими компоненти:
- Графичен LCD:
- Показване на изображение на графичен LCD с помощта на 8051:
- Обяснение на веригата:
- Обяснение на програмирането:
В нашето ежедневие виждаме много видове устройства за показване на текст, изображения и графики. LCD дисплеите са едно от най-популярните дисплейни устройства в електрониката и се използват в почти всички проекти, които показват някаква информация. Има много видове LCD, използвани в електронни проекти. Вече използвахме 16X2 LCD в много от нашите проекти и също използвахме TFT LCD с Arduino. Можете да намерите всички наши проекти, свързани с LCD 16X2, като следвате тази връзка, включително взаимодействие с 8051, AVR, Arduino и много други.
В този урок ще направим графичен LCD интерфейс с 8051 микроконтролер. В този проект ще покажем как да покажем изображение на графичен LCD (GLCD).
Необходими компоненти:
- Графичен LCD
- AT89c52 8051 Микроконтролер
- 7805 регулатор на напрежение
- Кондензатор 1000uf
- 10 uF кондензатор
- 10K резистор
- 10K ПОТ
- Кристален осцилатор 12 MH
- Свързващ проводник
- Дъска за хляб
- Бург ленти мъжки
- Захранване
- LED
- 220 ома резистор
- 1K резистор
Графичен LCD:
Един прост LCD 16x2 има 16 пина, но графичният LCD има 20 пина. Описанието на ПИН е дадено по-долу според неговия лист с данни:
ПИН No. | Име на ПИН | Описание | Функция |
1 | VSS | Земя | 0 волта |
2 | VDD | Захранване | 5 волта |
3 | V0 | Настройка на контраста на LCD | |
4 | RS | Избор на регистър за команди / данни | RS = 0: Избор на команди и RS = 1: Избор на данни |
5 | R / W | Регистър за четене / писане | R / W = 0: Избор на запис и R / W = 1: Избор на четене |
6 | Е. | Активиране на сигнала | |
7 | DB0 | ПИН за въвеждане / извеждане на данни (DB0-DB7) | 8 бита (DB0-DB7) |
8 | DB1 | ||
9 | DB2 | ||
10 | DB3 | ||
11. | DB4 | ||
12 | DB5 | ||
13 | DB6 | ||
14. | DB7 | ||
15 | CS1 | Избор на чип | CS1 = 1, сигнал за избор на чип за IC1 |
16. | CS2 | Избор на чип | CS2 = 1, сигнал за избор на чип за IC2 |
17 | RST | Нулиране | Нулирайте GLCD |
18. | VEE | Отрицателно напрежение за LCD драйвер | |
19. | A | LED за задно осветяване | 5 волта |
20. | К | LED за задно осветяване | Земя |
Показване на изображение на графичен LCD с помощта на 8051:
За да покажем изображение на графичен LCD, първо трябва да преобразуваме това изображение в код за сглобяване, така че микроконтролерът 8051 да може да го разбере и прочете. Затова трябва да следваме стъпките по-долу за конвертиране на изображение в шестнадесетичен код:
Стъпка 1: Първо трябва да изтеглим приложение, което преобразува Image (BMP формат) в Assembly Code. Така че изтеглете приложението за преобразуване на изображения BMP2ASM от тази връзка, просто щракнете с десния бутон върху връзката и след това щракнете върху Запазване на връзката като…
Стъпка 2: След това изберете изображението, което искате да покажете на графичния LCD и го преобразувайте в BMP (ако вече не е във формат BMP), като използвате всяко приложение като MS Paint, Photoshop и т.н. Или можете да намерите много онлайн уебсайтове за преобразуване на формат на изображение. Имаме изображение под BMP, с размер 128x64:
Стъпка 3: Сега извлечете файла BMP2ASM.zip, който сме изтеглили в стъпка 1 и отворете Bmp2asm.exe в него, и изберете BMP изображението.
Стъпка 4: Сега натиснете „Convert“ в прозореца на приложението BMP2ASM.
Стъпка 5: След това копирайте генерирания код и поставете в програмата на 8051 в Keil uVision. Направете някои промени и компилирайте кода.
Сега вашият код е готов за качване в 8051 микроконтролер.
Обяснение на веригата:
Свързващите вериги за свързване на графичен LCD с микроконтролер 8051 са лесни и почти същите като свързването на 16x2 LCD към 8051. Но 16x2 LCD има 16 пина, а GLCD има 20 пина.
10K пот се използва за зададен контраст за GLCD. Контролните щифтове на GLCD RS, R / W и E са директно свързани към 89C52 пинов номер P1.0, P1.1 и P1.2. Пиновете за избор на чип CS1 и CS2 на LCD са свързани съответно към щифтове P1.3 и P1.4. Пиновете за данни DB0-DB7 са директно свързани към PORT P2. Регулатор на напрежение 7805 се използва за редовно захранване от 5 волта. В демонстрационно видео използвах захранване на Arduino.
Обяснение на програмирането:
На първо място, ние включваме необходимите заглавни файлове в програмата и дефинираме битове за ПИН за контрол и данни на GLCD.
#include
След него създадохме функция за забавяне.
void delay (int itime) {int i, j; за (i = 0; i
Функцията void lcd_disp_on () се използва за включване на дисплея.
Функцията void setCursorY (int y) е създадена за задаване на колоната в GLCD и функция void setCursorX (int x) е създадена за настройка на страницата в GLCD. Пълният файл с код е даден в долната част на кода.
След като зададохме Column and Page, написахме функция за изпращане на команда и данни към GLCD.
void lcdprint (char dat, int size) {unsigned int i; за (i = 0; i
Във функцията void main () изчистихме GLCD и след това зададохме Column and Page. След него изпратете данни на LCD, като използвате функцията void lcdprint (char dat, int size) .
void main () {int x, y; P3 = 0xff; докато (1) {lcdclear (); за (y = 0; y <8; y ++) {за (x = 0; x <128; x ++) {lcd_disp_on (); setCursorX (y); setCursorY (x); lcdprint (изображение, x); }}…………………..
Поток на кода:
- Първо, когато включим системата, програмата изчиства GLCD и включва дисплея.
- След това задайте курсора на Column, откъдето искаме да запишем данните.
- След това задайте курсора на Страница, откъдето искаме да запишем Данните.
- Сега програмата изпраща данни до избраното място един по един до 128X8 пъти. Тъй като GLCD има 8 страници и 128 колони.