- Componente necesare:
- LCD grafic:
- Afișarea unei imagini pe ecranul grafic LCD folosind 8051:
- Explicația circuitului:
- Explicație de programare:
În viața noastră de zi cu zi, vedem multe tipuri de dispozitive pentru afișarea textului, imaginilor și graficelor. LCD-urile sunt unul dintre cele mai populare dispozitive de afișare din electronică și utilizate în majoritatea proiectelor care afișează un fel de informații. Există multe tipuri de LCD-uri utilizate în proiecte electronice. Am folosit deja 16X2 LCD în multe dintre proiectele noastre și am folosit și TFT LCD cu Arduino. Puteți găsi toate proiectele noastre LCD 16X2 urmând acest link, inclusiv interfața cu 8051, AVR, Arduino și multe altele.
În acest tutorial vom face interfață grafică LCD cu microcontroler 8051. În acest proiect, vom arăta cum să afișați o imagine pe LCD grafic (GLCD).
Componente necesare:
- LCD grafic
- AT89c52 8051 Microcontroler
- 7805 regulator de tensiune
- Condensator 1000uf
- 10 uF condensator
- Rezistor de 10K
- GHID 10K
- Oscilator de cristal 12 MH
- Sârmă de conectare
- Pâine
- Burg benzi mascul
- Alimentare electrică
- LED
- Rezistor de 220 Ohm
- Rezistor 1K
LCD grafic:
Un LCD simplu de 16x2 are 16 pini, dar ecranul grafic are 20 de pini. Descrierea pinului este dată mai jos conform fișei sale tehnice:
Pin nr. | Nume PIN | Descriere | Funcţie |
1 | VSS | Sol | 0 Volt |
2 | VDD | Alimentare electrică | 5 Volți |
3 | V0 | Reglare contrast LCD | |
4 | RS | Selectarea comenzilor / datelor | RS = 0: Selectarea comenzilor și RS = 1: Selectarea datelor |
5 | R / W | Citire / Scriere Registr | R / W = 0: Scrieți selecția și R / W = 1: Citiți selecția |
6 | E | Activați semnalul | |
7 | DB0 | Pin de intrare / ieșire date (DB0-DB7) | 8 biți (DB0-DB7) |
8 | DB1 | ||
9 | DB2 | ||
10 | DB3 | ||
11 | DB4 | ||
12 | DB5 | ||
13 | DB6 | ||
14 | DB7 | ||
15 | CS1 | Chip Select | CS1 = 1, semnal de selectare a cipului pentru IC1 |
16 | CS2 | Chip Select | CS2 = 1, semnal de selectare a cipului pentru IC2 |
17 | RST | Resetați | Resetați GLCD |
18 | VEE | Tensiune negativă pentru driverul LCD | |
19 | A | LED de lumină din spate | 5 Volți |
20 | K | LED de lumină din spate | Sol |
Afișarea unei imagini pe ecranul grafic LCD folosind 8051:
Pentru a afișa o imagine pe ecranul grafic, trebuie mai întâi să convertim imaginea respectivă în codul de asamblare, astfel încât microcontrolerul 8051 să o poată înțelege și citi. Deci, trebuie să urmăm pașii de mai jos pentru conversia imaginii în cod HEX:
Pasul 1: Mai întâi trebuie să descărcăm o aplicație care să convertească imaginea (format BMP) în cod de asamblare. Deci, descărcați aplicația de conversie a imaginii BMP2ASM din acest link, faceți clic dreapta pe link și apoi faceți clic pe Salvare link ca…
Pasul 2: Apoi, selectați imaginea pe care doriți să o afișați pe ecranul grafic LCD și convertiți-o în BMP (dacă nu este deja în format BMP) utilizând orice aplicație precum MS Paint, Photoshop etc. pentru conversia formatului de imagine. Avem mai jos imaginea BMP, cu dimensiunea 128x64:
Pasul 3: Acum extrageți fișierul BMP2ASM.zip, pe care l-am descărcat la pasul 1 și deschideți Bmp2asm.exe în interiorul acestuia și selectați imaginea BMP.
Pasul 4: Apăsați acum „Convert” în fereastra aplicației BMP2ASM.
Pasul 5: Apoi copiați codul generat și lipiți în programul 8051 în Keil uVision. Faceți câteva modificări și compilați codul.
Acum, codul dvs. este gata pentru încărcare în microcontroler 8051.
Explicația circuitului:
Conexiunile de circuit, pentru interfațarea graficului LCD la microcontrolerul 8051, sunt ușoare și aproape la fel ca și conectarea 16x2 LCD la 8051. Dar 16x2 LCD are 16 pini și GLCD are 20 pini.
Un pot de 10K este utilizat pentru contrastul stabilit pentru GLCD. Pinii de control ai GLCD RS, R / W și E sunt conectați direct la pinul 89C52 numărul P1.0, P1.1 și P1.2. Pinii de selectare a cipurilor CS1 și CS2 de pe LCD sunt conectați la pinii P1.3 și respectiv P1.4. Pinii de date DB0-DB7 sunt conectați direct la PORT P2. Un regulator de tensiune 7805 este utilizat pentru alimentarea obișnuită de 5 volți. În video demonstrativ, am folosit sursa de alimentare Arduino.
Explicație de programare:
În primul rând, includem fișierele antet necesare în program și definim biții pentru Control și Pinii de date ai GLCD.
#include
După aceasta, am creat o funcție de întârziere.
void delay (int itime) {int i, j; pentru (i = 0; i
Funcția void lcd_disp_on () este utilizată pentru pornirea afișajului.
Function void setCursorY (int y) este creat pentru setarea coloanei în GLCD și Function void setCursorX (int x) este creat pentru setarea paginii pe GLCD. Fișierul de cod complet este prezentat în secțiunea de cod de mai jos.
După setarea Coloană și Pagină, am scris o funcție pentru trimiterea comenzilor și a datelor către GLCD.
void lcdprint (char dat, int size) {unsigned int i; pentru (i = 0; i
În funcția void main () , am șters GLCD și apoi am setat Coloană și Pagină. După aceasta, trimiteți date pe LCD utilizând funcția void lcdprint (char dat, int size) .
void main () {int x, y; P3 = 0xff; while (1) {lcdclear (); for (y = 0; y <8; y ++) {for (x = 0; x <128; x ++) {lcd_disp_on (); setCursorX (y); setCursorY (x); lcdprint (imagine, x); }}…………………..
Fluxul de cod:
- Mai întâi când pornim sistemul, programul șterge GLCD și pornește afișajul.
- Apoi setați cursorul la Coloană, de unde dorim să scriem datele.
- Apoi setați cursorul la Pagină, de unde dorim să scriem datele.
- Acum programul trimite date la locația selectată unul câte unul până la 128X8 ori. Deoarece un GLCD are 8 pagini și 128 de coloane.