Lab6LCD

Documente similare
Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Microsoft Word - CarteC.doc

Controlerul LCD

E_d_Informatica_sp_SN_2014_bar_10_LRO

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Limbaje de Programare Curs 8 – Fisiere

SUBPROGRAME

Logică și structuri discrete Limbaje regulate și automate Marius Minea marius/curs/lsd/ 24 noiembrie 2014

Microsoft Word - Laboratorul 3.doc

1. Operatii cu matrici 1 Cerinte: Sa se realizeze functii pentru operatii cu matrici patratice (de dimensiune maxima 10x10). Operatiile cerute sunt: A

Ch

E_d_Informatica_sp_MI_2015_bar_02_LRO

Microsoft Word - MANUAL_APP_ROMPOS_V7.docx

Adresarea memoriei Modurile de adresare constituie un instrument principal pentru reprezentarea în memorie a imaginii datelor, aşa cum este ace

Subiectul 1

Manual de utilizare a Sistemului Informațional al Institutului Național al Justiției (SI INJ) intranet.inj.md Ver.2 Manual de utilizare a Sistemului I

Programarea şi utilizarea calculatoarelor

Microsoft Word - intro_msp430.doc

Procesarea Imaginilor - Laborator 1: Introducere în utilizarea bibliotecii OpenCV 1 1. Introducere în utilizarea bibliotecii OpenCV 1.1. Introducere S

Laborator 3

Microsoft PowerPoint - ImplementareLimbaj [Read-Only] [Compatibility Mode]

tehnologii web

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Generated by Unregistered Batch DOC TO PDF Converter , please register! Platformă de e-learning și curriculă e-content pentru învățămâ

Limbaje de Programare Curs 5 – Siruri de caractere

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

REVISAL Versiunea: Data release: 15 martie 2016 IMPORTANT! Distribuţia curentă (v6.0.4) a aplicaţiei Revisal conţine nomenclatorul COR ISCO 08 î

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Gestionarea I/E

PowerPoint Presentation

Laborator - Configurarea Rutelor IPv4 Statice și Implicite Topologie Tabela de Adresare Echipame nt Interfață Adresă IP Masca de subreţea Default Gate

Declararea variabilelor

Secţiunea 7-8 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA 1 ID 100 puncte Calculatoarele trebuie să se recunoască în rețeau

L7

Slide 1

Minicurs CCS C / Aplicatia1 1.Programul CCS C Compiler. Instalare.Creare proiect. Descarcati ultima versiune a programului de

Lecții de pregă,re la informa,că Admitere 2019 Tema: Discutarea problemelor date la ul,mele sesiuni de admitere Bogdan Alexe

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

Microsoft Word - CarteC.doc

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

Laborator 9: Fire de execuţie Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 20 noiembrie 2011

Laborator 2 Incompatibilităţi/Diferenţe între C şi C++ Completări C++ Supraîncărcarea (redefinirea) numelui de funcţii În C nu este permisă existenţa

LUCRAREA NR

Microsoft Word _POO_Lab_1_Modificari_v01.htm

Slide 1

Nr. 932 din Avizat ISJ Vâlcea, Inspector școlar informatică, Ciochină Luisa EXAMEN DE ATESTARE A COMPETENȚELOR PROFESIONALE A ABSOLVENȚILOR

Programarea şi utilizarea calculatoarelor

GHERCĂ MAGDA CASA CORPULUI DIDACTIC BRĂILA PORTOFOLIU EVALUARE INFORMATICĂ ȘI TIC PENTRU GIMNAZIU CLASA A V-A Neamț SERIA 1 GRUPA 1 CURSANT: GHERCĂ G

Lab3Functii

Înregistraţi produsul achiziţionat şi veţi putea beneficia de suport pe pagina CD250 CD255 SE250 SE255 Ghid de iniţiere rapidă

Object Oriented Programming

TM200 Live Tour guide Sistem audio mobil Sistemul de comunicare audio Tour guide este util in cel putin 3 situatii si vine cu avantaje clare: 1) Cand

BC-2000 Control Acces

Înregistrator de temperatură şi umiditate AX-DT100 Instrucţiuni de utilizare

Lanțul de aprovizionare E.ON Ghidul furnizorului Instrucțiuni pas cu pas

Diapositive 1

Ghid de Referință Explicații sumare ale operațiunilor de rutină HL-L2312D HL-L2357DW HL-L2352DW HL-L2372DN HL-L2375DW Brother recomandă să păstrați ac

Laborator 04: Apeluri de funcții

Gestiunea serviciilor de recuperare a sănătăţii în sanatorii şi preventorii

Microsoft Word - lab1_2007.doc

manual_ARACIS_evaluare_experti_v5

Microsoft Word - PCLP2_Curs_4_2019.doc

Microsoft Word - 4-Interfete paralele.doc

Laborator Depanarea Rutării Inter-VLAN Topologie 2013 Cisco and/or its affiliates. All rights reserved. This document is Cisco Public. Page 1 of 8

Microsoft Word - Algoritmi genetici.docx

Matrici și vectori în VBA În VBA, o matrice este un grup de variabile de același tip. De ce ar trebui să utilizați o matrice? Presupunem că ați vrut s

B

Propunator: Morar Florin Colegiul National Silvania Zalau Discipina: Informatica Nivel liceal, cls. XII 1.Să se scrie în limbajul C/C++ definiţia comp

Slide 1

A

Информационная система персонализации, печати и учета документов об образовании

PHP (II)

BDV-EF1100

Microsoft Visual C++ (abreviat MSVC) is a commercial integrated development environment (IDE) product engineered by Microsoft for the C, C++, and C++/

Lucrarea 10

Advance CAD 2016 SP1 Acest document descrie îmbunătățirile pentru Advance CAD 2016 Service Pack 1. Notă: Advance CAD 2016 Service Pack 1 este compatib

COMISIA EUROPEANĂ DIRECȚIA GENERALĂ INFORMATICĂ Componenta de aplicare a politicii WiFi4EU Ghid de implementare v1.0 Cuprins 1. Introducere Br

manual_ARACIS_evaluare_experti_v4

PROIECT DIDACTIC DATE DE IDENTIFICARE Data: Școala : Școala Gimnazială Grigore Moisil Ploiești Clasa: a VI-a Profesor: Ilie Oana Magdalena Disciplina:

Modulul 1 M1-2.3 Protocoale şi servicii în reţea În acest capitol ne propunem să abordăm următoarele: Protocoalele şi aplicaţiile folosite în reţelele

Secţiunea 5-6 avansaţi PROBLEMA 1 Concurs online de informatică Categoria PROGRAMARE 100 puncte NR Un număr natural nenul V care se plictisea singur,

Laborator 2 - Încapsularea Programare Orientată pe Obiecte Tema 2.1 Să se analizeze programul EX2.C Indicatii 2.1 A nu se uita de fisierul EX2.H Tema

Furnicuţa şi-a construit un depozit pentru grăunţe

HONEYWELL AWARD

Packet Tracer - Configurarea ACL-urilor extinse - Scenariul 1 Topologie Tabela de Adresare R1 Echipament Interfață Adresă IP Masca de subreţea Default

Paradigme de programare

PowerPoint-Präsentation

Secţiunea 5-6 începători Concurs online de informatică Categoria PROGRAMARE PROBLEMA puncte PERIODIC Se citește un număr natural nenul N. Se ump

Slide 1

untitled

Web Social FSEGA, UBB Lect.univ.dr. Daniel Mican LABORATOR 2. Dezvoltarea blogurilor prin intermediul WordPress.com PREZE

proiectarea bazelor de date

Noțiuni de bază ale criptografiei

Instrucţiuni Conectare Internet Banking Prima conectare (logare) la Internet Banking (aplicaţia BankFlex Multychannel) Pentru a accesa serviciile banc

Update firmware aparat foto Mac Mulţumim că aţi ales un produs Nikon. Acest ghid descrie cum să efectuaţi acest update de firmware. Dacă nu aveţi încr

PowerPoint Presentation

PROGRAMARE ORIENTATA PE OBIECTE

Utilizarea îmbinării corespondenței pentru crearea şi imprimarea scrisorilor şi a altor documente Dacă utilizați îmbinarea corespondenței când doriți

Platforma 5. 1 Introducere in MSSQL Introducere Pe parcursul ultimilor ani, se poate observa o cuplare a limbajelor de programare majore cu tipuri de

Facultatea de Științe Politice, Administrative și ale Comunicării Str. Traian Moșoiu nr. 71 Cluj-Napoca, RO Tel.: Fax:

Transcriere:

LABORATOR 6 - Interfaţă pentru afişor cu cristale lichide (LCD), partea II-a Scopul lucrării În laboratorul anterior s-au implementat funcţiile rd_lcdreg(char vrs), wr_lcdreg(char vrs, char data), void ckbf() şi void initlcd(), sysinit(). În continuare se vor implementa şi testa următoarele funcţii: void putchlcd(char ch) void putslcd(char *ch) void clrlcd() scrie caracter scrie șir de caractere şterge LCD şi mută cursorul în prima poziţie void gotolc(unsigned char line, unsigned char col) mută cursorul În secţiunea opţională se vor implementa şi alte funcţii. Aceste funcţii se vor scrie în fișierul IOfn.c. Pasul 1: putchlcd(char ch) Scrieți funcția putchlcd în IOfn.c. Pentru ca un caracter să apară pe LCD la poziţia cursorului scrieţi respectivul caracter în registrul DRegWr. Nu uitaţi ca înainte de scriere BF să fie 0. Apoi modificați LCDtest.c. Pentru a scrie un caracter LCDtest.c va avea următoarea structură: putchlcd('h'); Dacă adăugați mai multe apeluri putchlcd puteți scrie Hello Micro. Nu e obligatoriu. Pasul 2: putslcd( ) Folosind putchlcd scrieți funcția putslcd scrie şir de caractere. Primul caracter al mesajului se va scrie la poziţia cursorului. Cu un singur apel putslcd, scrieți mesajul Hello Micro! Informaţie utilă: în C un sir de caractere se termină 0x00 = \0. Pasul 3: clrlcd() Scrieți funcția clrlcd. Folosiți instrucțiunea Clear Display. Pentru a testa funcţionarea acestei comenzi, scriem un mesaj, așteptăm 1-2 secunde cu funcția wait(...) şi apoi ștergem display-ul cu clrlcd. Structura programului de test este:... #define S2 250000UL 1

putslcd("hello Micro!"); Pasul 4: gotolc Funcția putslcd pe care ați scris-o anterior scrie mesajul începând de la poziţia curentă a cursorului. Pentru a putea scrie mesaje pe orice linie, începând cu orice colană, este nevoie de o funcţie care să mute cursorul. Această funcţie se va numi gotolc şi va avea ca parametrii pe line şi pe col: void gotolc(unsigned char line, unsigned char col) unde line este linia pe care se va poziţiona cursorul iar col este coloana. Implementarea funcției se va baza pe comanda Set DDRAM Address. Analizați instrucțiunile LCD din tabelul 3, laboratorul 5. Se observă că pentru fiecare instrucțiune o parte din biții cei mai semnificativi au valoare constantă. De exemplu, pentru instrucțiunea LCD Function set biții 7:5 au întotdeauna valoarea 001. Putem considera că biții constanți ai instrucțiunii LCD sunt opcode-ul instrucțiunii. Identificați opcode-ul instrucțiunii Set DDRAM Address. Toate instrucțiunile Set DDRAM Address trebuie să conțină acest opcode! După opcode în instrucțiunea LCD Set DDRAM Address urmează biții adresei DDRAM. Pentru a afla adresa DDRAM corespunzătoare unei locații LCD analizați următoarele informații din figura 1 de la pagina următoare: Linia 1, Linia 2, Coloana și Adresa DDRAM. Parametrul line poate lua valorile 1 sau 2. Parametrul col ia valori in intervalul [1, 16]. Dacă vreunul din parametrii line şi col sunt invalizi, comanda va fi ignorată. De exemplu gotolc(3,1) este invalidă și nu va produce efecte. În esența trebuie să scrieți codul care calculează adresa DDRAM corespunzătoare unei poziții LCD identificată prin line și col. De exemplu, dacă line =1, col= 10 adresa este 09. Dacă line =2, col= 5 adresa este 0x44. Analizați figura 1! Testaţi funcţia cu secvenţa:... #define S2 250000UL unsigned char k; putslcd("0123456789abcdef"); gotolc(2,1); putslcd("ghijklmnopqrstuv"); for(k=16;k>0;k--){ gotolc(2,k); 2

for(k=16;k>0;k--){ gotolc(1,k); Când funcţionează, chemaţi profesorul pentru validare. Dacă aţi ajuns aici aveți nota 5. Secțiunea opțională Pasul 5: Wrap Funcția putchlcd, scrisă anterior, nu verifică dacă adresa din DDRAM la care se scrie caracterul este afişabilă sau nu. Dacă din prima coloană a primei linii scriem un mesaj mai lung de 16 caractere, vor apare numai primele 16 caractere. Încercaţi! Reamintim că interfaţă LCD are memoria DDRAM alcătuită din 80 de caractere şi poate comanda orice afişaj cu maxim două linii, fiecare linie cu 40 de coloane. Cum afişorul de care dispunem are numai 16 coloane, tot ce se va scrie dincolo de coloana 16 va fi memorat în DDRAM, dar nu se va afişa. De exemplu, dacă scriem pe linia 1, din coloana 16, mesajul 56. Va apare numai caracterul 5 iar cursorul va dispare: Linia 1 Linia 2 Coloana 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Adresa DDRAM 00h 01h 02h 03h 04h 05h 06h 07h 08h 09h 0Ah 0Bh 0Ch 0Dh 0Ef 0Fh 10h 11h 27h Conţinut DDRAM 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 35h 36h 20h 20h Ce se vede 5 6 _ Ce se vede Conţinut DDRAM 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h 20h Adresa DDRAM 40h 41h 42h 43h 44h 45h 46h 47h 48h 49h 4Ah 4Bh 4Ch 4Dh 4Ef 4Fh 50h 51h 67h figura 1 1) Creați un nou proiect, identic cu proiectul LCD. Fie numele acestui proiect LCD2. 2) În noul proiect modificați funcția putchlcd astfel încât: a) După ce s-a scris caracterul din poziția 16 a liniei 1 cursorul să apară pe linia 2 coloana1. b) După ce s-a scris caracterul din poziția 16 a liniei 2 cursorul să apară pe linia 1 coloana1 Atenţie: 1. Nu aveți voie să folosiţi variabile auxiliare pentru a memora poziția cursorului. Poziţia cursorului se află citind SReg. 2. Imediat ce BF a devenit 0 poziţia cursorului nu este cea corectă. Poziţia se va actualiza după cel puțin 6 us. Informaţiile despre acest comportament se găsesc în figura 10 de la pagina 25 din documentul HD44780U.pdf. Pentru a fi siguri că valoarea AC este corectă, aşteptaţi 8 microsecunde. 3. Pentru a aştepta perioade mici de timp, de ordinul microsecundelor, vom utiliza funcţia: void _delay_us(double us) Această funcţie poate fi folosită dacă adăugăm următoarele două linii de cod exact în ordinea de mai jos: 3

#define F_CPU 8000000UL #include <util/delay.h> Prototipul funcţiei este definit în delay.h. Pentru ca _delay_us să funcționeze corect trebuie specificată frecvenţă ceasului procesor. Specificarea se face prin intermediul constantei F_CPU. 4. Cursorul nu trebuie să dispară în nici o situaţie! După ce scrieți un mesaj care are exact lungimea 16, cursorul trebuie să apară în pe linia 2, coloana 1. Pentru testare înlocuiți bucla while(1) cu următoarea secvenţă de cod : putslcd("0123456789abcdef"); // Ce se vede pe LCD //_ putchlcd('g'); //g_ //_ // putslcd("0123456789abcdefg"); putslcd("hijklmnopqrstuv"); putchlcd('w'); //g_ //ghijklmnopqrstuv //w123456789abcdef //ghijklmnopqrstuv Când funcţionează, chemaţi profesorul pentru validare. Dacă aţi ajuns aici între 1 şi 2 puncte, în funcție de calitatea implementării. Pasul 6: Smiley Pentru fiecare caracter se afişează o matrice de puncte. În tabelul 4 de la pagina 18 din documentul HD44780U.pdf se prezintă aceste matrice. Este posibil ca utilizatorul să definească propriile matrice. Dacă dimensiunea matricei de afişare are dimensiunea 5x10, utilizatorul poate defini 4 matrice proprii. Aceste matrice se scriu în memoria grafică de caractere CGRAM. Procesul de definire a acestor matrice este prezentat la pagina 19 din documentul HD44780U.pdf. Corespondentul binar al liniilor care formează o configuraţie se scriu în CGRAM la adresa specificată de AC. Exact acelaşi mecanism este folosit şi pentru scrierea în DDRAM. Destinaţia datelor scrise în DReg (Write), DDRAM sau CGRAM, este decisă de ultima instrucțiune Set address executată. După executarea unei instrucțiuni Set DDRAM address până la executarea altei instrucțiuni Set address toate datele scrise în DR (Write) vor ajunge în DDRAM. Similar, după executarea unei instrucțiuni Set CGRAM address toate datele scrise după aceea în DR (Write) vor ajunge în CGRAM. Se cere ca pentru caracterul cu codul ASCII 0x02 să apară modelul din figura următoare: 4

1 2 3 4 5 6 7 8 Verificați apelând putchlcd(0x02). Trebuie să apară Smiley face din figura de mai sus. putslcd("this "); putchlcd(2); putslcd(" is Smiley!"); Atenţie! Scrierea în CGRAM se face o singura data, după inițializare (initlcd). Toate funcţiile scrise până acum trebuie să funcţioneze şi în continuare. Când funcţionează, chemaţi profesorul pentru validare. Dacă aţi ajuns aici între 1 şi 3 puncte, în funcție de calitatea implementării. Pasul 7: Deconectare La terminare executați următoarele operaţii: 1. Se opreşte execuţia programului cu Break, 2. Se opreşte depanatorul cu Stop 3. Se apasă Con şi apoi se şterge memoria de program din ATmega16 cu Erase 4. Se închide AVR Studio. 5. Se opreşte alimentarea JTAG ICE. 6. Se oprește sursa Hameg 7. Se desface montajul, numai componentele adăugate în acest laborator. 5