LCD Modul. Ved Power-on skal LCD-displayet initieres, og evt. indstilles til 4-bit kommunikation.

Relaterede dokumenter
LCD Character display Intro

LCD intro. LCD Character display-intro. Redigeret 4/6-2019

Programmeringskursus Kursusaften 3. Programmering for begyndere Brug af Arduino. Display. Kursusaften 3 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Indholdsfortegnelse :

danske karakterer på Lcd

// Definition af porte og funktioner

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

89C4051 opgaver. MSB Opgave 1, Løbelys LSB MSB Opgave 2, Løbelys med 2 Led LSB x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x

Video Projector Controller. Brugermanual

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato:

up/ansi Eksamensspørgsmål

ELCANIC A/S. ENERGY METER Type ENG110. Version Inkl. PC program: ENG110. Version Betjeningsvejledning

GSM SMS Modem MODEL: SA RTU-1 V1.01

2. Delgennemløb af Realisationsfasen Indholdsfortegnelse

Seriel kommunikation RS232 / RS485

1.1 Indledning. Features: Højintensitet LED-display. Fleksibel forsyning (12-45V). Kan placeres op til 100m fra controlleren.

Talsystemer I V X L C D M Hvad betyder halvanden??. Kan man også sige Halvtredie???

89C4051 opgaver. MSB Opgave 1, Løbelys LSB MSB Opgave 2, Løbelys med 2 Led LSB x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x

Programmering i maskinkode på AMIGA

Arduino Programmering

IAI Quick Start Guide

Introduktion til Microcontrollere Version

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...

Microcontroller, Arduino

Spil Master Mind. Indledning.

Brug af digitale ind og udgange

Introduktion til programmering. Af mikroprocessor Atmel ATmega328P i en Arduino Uno

Formål: Indledning: Notationer

Bruger manual for SW 3.06

MCE2040 SERIEL KOMMUNIKATIONSMODUL

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)

Spillebeskrivelse. spillehallen.dk

Advanceret indstillling af VS10/20

Vi starter her med billede som det er, med landskab og kirke samt et helt stille vand. Billedet er lavet i 3:2 format og er 900 pixels i bredden

Introduktion til Microcontrollere Version

Hurtigt i gang med LinMot DeviceNet til Allen Bradley Logix Plc

Fra programmering til mikroprocessor

LCD boost converter C4 C5 C6 Q8 R10 R11 Q1 R12 IC8 R21 IC10 IC8 IC8

Kronback tracers P4+

Arduino Programmering

WEA-Base Brugervejledning til vejetransmitter

tube tube Brugermanual Internet Radio Digital Radio OXX Digital Follow OXX DIGITAL on twitter Follow OXX DIGITAL Scandinavian

Seriel kommunikation

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at beskrive et forløb. Det kan fx være en microcontrollers programafvikling.

Indholdsfortegnelse. Side 3

Modul No Urets programmer. Tidsprogrammet. Stopur

Brugervejledning. Fjernbetjening display MT-5

Fase Forklaring Navigation. Mappen skal indeholde alle elementer til dit site.

Mircobit Kursus Lektion 5 (Du skal her vælge Lets Code og nederst Microsoft Block Editor.)

Mircobit Kursus Lektion 4 (Du skal her vælge Lets Code Og herefter Block Editor.)

DiSEqC-Positioner. Best. nr. HN4892 (Brugsanvisnings nr. 361)

DUNE HD 102 Indhold DUNE HD HDMI WIFI Modtageren Tændt Slukket USB port AV OUT

Manual til Storskærme og Ur

SSI-9001 IP65. Installations vejledning. SSIHuset v/svane Electronic ApS. GSM fjern kontrol og alarm system

Hjælpemenu tasten åbner for forskellige muligheder for redigering, alt afhængig af, hvilket et program der arbejdes med.

Vejledning til CD-ORD 10

Sådan bruger du BK- 9 Performance List. Formatering af USB- Memory. "Performance List" er en liste over dine registreringer.

OVERENSSTEMMELSESERKLÆRING

Mircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)

Detter dokument er kun til intern brug og klassificeret som strengt fortroligt. Forfatteren tager forbehold for alle fejl og mangler.

INSTRUKTIONSMANUAL QHW+

Regal A/S Industrivej Roskilde Tlf: Fax:

Hurtigbrugsanvisning til Dynomet 6.31 for Windows 7

Microcontroller, Arduino

Analoge indgange og A/D konvertering. Analoge udgange

ESLC prøveredskaber: Vejledning for elever (DK)

Specielle tegn. Specielle tegn. Specielle tegn...1 Indhold:...1 Teori og praksis...1 Koder...2 Brug af symboler...5

Start på Arduino og programmering

Vejledning til datatræk i Novax på ICPC-koder

Vejledning til brug af Canon-skanner.

Wildgame ST042 MMS opsætning.

uprocessorens hardware

Lonbox PCM2001 betjeningsenhed

Oversigts billedet: Statistik siden:

Frederiksen. Brugsvejledning for GM-tæller X Aa X

Internt interrupt - Arduino

const int disponibel_10= 10; const int disponibel_11= 11; const int disponibel_12= 12; const int blinkled = 13; // pin 13 er LED på NANO

Welch Allyn Connex Spot Monitor kort oversigt

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Installations og brugermanual for ios - brugere af Akutudkald.

Programmering C RTG

BETJENINGS- OG MONTERINGSVEJLEDNING FOR HF DIP SWITCH PROGRAMMERINGSENHED

Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9

TK/TBL / v.0.1. DigiMatch. Elektronisk Kamprapport

Livall - Kom godt i gang (BH 60 & Bling Jet Fjernbetjening & Livall Riding App)

DIVISIONSMATCHBEREGNING VERSION 1.07

Kontroller at du har alle delene, der er vist herunder. PhotoPC 650 kamera. strap videokable. fire AA alkalinebatterier

Brugermanual til CLINT Chiller/Varmepumpe enheder

Opgaver. Notater. Opgave 1: Find kursus hjemmeside og bladre lidt rundt på siderne.

på Sterling 10 Brugermanual Bemærk! betjeningspanelet er i manualen angivet som FUNC

Fang Prikkerne. Introduktion. Scratch

Datatransport Import & Eksport af data Generelt Import/eksport Felter i Import og Eksport... 5

STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO

Efter installation af GEM Drive Studio software fra Delta s CD-rom, skal hoved skærmbilledet se således ud: (koden til administrator adgang er: admin)

ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning

Vi starter her med billede som det er, med landskab og kirke samt et helt stille vand. Billedet er lavet i 3:2 format og er 900 pixels i bredden

PCR 40 Door Access Control unit

Ved indkøring påtrykkes en kendt amplitude (HUSK 50 ohms afslutning) og displayet aflæses.

Transkript:

Vejledning til LCD Karakter Modul, 2 x 16 karakter. På min hjemmeside findes en kodegenerator. Den er gaflet fra en tysk side. Generatoren kan generere koder til 8051-kompatible, og heriblandt koder til at styre LCD-modulet. Generatoren har været inspiration til materialet, og subrutinerne er taget herfra! Endvidere har forskellige datablade været grundlag, og kontakt til POWERTIP. Displaymodulerne laves af mange fabrikanter, og er ret kompatible med hinanden. Så det er næsten underordnet, om fabrikanten er fx SHARP eller POWERTIP. Der kan dog fx være forskel på, om der skal en negativ kontrast-spænding til for at få displayet til at vise karakterer. Initiering af LCD displayet!! Ved Power-on skal LCD-displayet initieres, og evt. indstilles til 4-bit kommunikation. Det kan gøres med flg. program! LCD_init: mov a, #50 ; LCD_initpause: Cal LCD_ws ; kald pauserutine, ca. 1,6 ms. Se hjemmeside! djnz acc, LCD_initpause ; 50 gange clr LCD_RS clr LCD_RW clr_lcd_enable ; Clr styresignaler mov a, #1010b ; Load koden for 4-bit kommunikation ; Send ordre, ( Befehl ) setb LCD_ENABLE clr LCD_ENABLE mov a, #1010b ; Do, skal gores 2 gange!! ; Send ordre, ( Befehl ) mov a, #11b ; Load 1DCB, kode til indstilling af display ; D=1: Display on ; C=1: Cursor on ; B= 0: Cursor blinker ikke. call LCD_clear ; Alle karakterer = 20h, cursor pos. 1,1 Side 1 af 7

Oversigt over Styrekoder, der kan sendes til LCD-MODULET. Ved hjælp af forskellige ordrer kan man styre displayet. Her følger en oversigt: Instruktion Clear display ( Skriv 20h i Dataram ) og sætter Dataram adresse pointer DDRAM = h, = Cursor home = 1. linie 1. karakter RS, RW Data og kommentarer 01 Clear all display and return cursor to home position, adress h Eks: mov a, #01h Cursor home, Ram adresse pointer = 0, Display sat til shifted = Scroll hvis man kommer uden for skærmen, Adresse > 15h DataRAM forbliver uændret. Entry mode set Sætter cursorens bevægelsesretning. SH afgør, om displayet skal skuppes, dvs. cursoren står fast, og teksten skuppes ved hver bogstav der skrives til skærmen!! Display controlbit on / off 1* urns cursor to home position. Also returns the display skiftet to original position DD RAM indhold unaffected. 01,I/D,Sh I/D = 0, decrement cursor, mod venstre efter hver skrivning til RAM I/D = 1, increment cursor, mod højre. efter hver skrivning til Ram Sh = 0, specificerer ingen display shift. Sh = 1 display shift. Display scroller I retningen specificeret I bit 0? når cursor er nået til kanten af vinduet. eks: 0111 sætter display til at skifte efter hver data write. Dvs. at cursoren bliver stående, men at teksten rykker 1 mod venstre efter hver data write. 1,D,C,B, D: All Display on/off, 0 = off, 1 = On C: Cursor, 0 = off, 1 = On B: Blinkende solid cursor, 0 = off, 1 = on. eks: Indstil LCD til display On, cursor On, og ikke blinkende cursor Side 2 af 7

Cursor eller Display shift uden ændring af DDRAMindhold Sætter cursor moving og display shift kontrol bit, og retningen, display data RAM Function set. Sætter interface data længde CGRAM = Character Generator Ram Bringer LCD-en til at pege på adresse, hvor der efterfølgende kan gemmes data til at definere selvdefinerbare karakterer. Sætter CGRAM adresse i tæller dataram adr, selvdefinerede tegn. mov a, #1110b 01,S/C,R/L,**, S/C: cursor moving eller scroll display. 0 = move Cursor, 1 = Scroll display. R/L:Direction, Right / Left. 0 = Shift Left, 1 = Right * = don t care 1,DL,N,F,**, DL: 4 bit / 8 bit, 0 = 4 bit, 1 = 8 bit. N: 1 linie, / 2 linier, 0 = 1 linies display F: display font, 5*8 dot / 5*11 dots, 0 = 5*8 dot eks: indstil LCD til 4-bit, 2 linies display, og 5x8 dots. mov a, #1010b 01,AC5,AC4,AC3,AC2,AC1,AC0 CGRAM data sendes efter denne ordre. Adressepointer incrementes efter hver write så succetive bytes ( rows ) kan sendes Se eksempel efter skemaet! 1,AC6,AC5,AC4,AC3,AC2,AC1,AC0 Det første 1-tal = 80h indstiller LCD-en til at Pege på en karakter i displayet som angivet ved de efterfølgende bit. Positioner cursor Sætter DDRAM Adresse. Karaktererne i displayet har adresse h til 0Fh i øverste linie. 2. linie starter i adr. 40h til 4Fh. DDRAM data sendes / modtages efter denne ordre. Adressepointer incrementes automatisk Eks: Positioner cursor i 1. kar, 2. linie Mov a, #0C0h ; 80h + 40h = C0h = 1. kar I 2. linie Side 3 af 7

BF,AC6,AC5,AC4,AC3,AC2,AC1,AC0 Læs Busy flag og adresse 01 Bit BF angiver om LCD er busy. Adressetælleren kan ses i bit AC6 til AC0 BF = 1 => Busy D7 til D0 Skriv i display data til internal LCD RAM, til DDRAM eller CGRAM Læs Data fra RAM, CGRAM eller DDRAM 10 11 Den værdi, der sendes til displayets karakterram, peger på en adresse i displayets ROM. Heri findes en indprogrammeret kode, der tænder respektive mønster af dots i displayets dotmatrix, så fx et a vises. Der anvendes en standard ASCII kode, suppleret med specialtegn, og evt. selvdefinerede tegn. D7 til D0 Det display, vi arbejder med, ( POWERTIP ) har 4*20 karakterer i displayet. Fra fabrikanternes side er det defineret at 1. linie har adressen h og opad. Det vil her sige h til 0fh. 2. linie starter i adresse 40h. Når cursoren er positioneret, og der evt. er indstillet cursor type osv. kan der skrives i displayet. eks: Send værdien 53h som data. Call LCD_send_d. Mov a, #53h call LCD_send_d Sendes værdien 53 vil der i displayet blive skrevet et stort S. Dot-mønsteret, der giver et S, er defineret i LCD`en på adresse 53h. Der er for hver type LCD-karakter-display fra fabrikantens side defineret hvad hver værdi, der sendes til LCD`en vil give af mønster i Dot-matrixen i displayet. For de normale karakterer følges ASCII systemet, der stammer fra teletype og matrix-printernes tid. ASCII står for American Standard Code for Information Interchange. Fabrikanten kan for andre LCD-typer have defineret fx japanske tegn på andre pladser. Definering af selvdefinerbare karakterer I LCD-displayet. Vores LCD-display har ud over de fast indlagte tegn 8 selvdefinerbare karakterer. Dvs. at man selv i ASCII-tabellen kan indlæse et mønster, der skal frem i en karakter i displayet når pågældende karakters ASCII-værdi sendes til displayet. Flg. program kan bruges til at definere selvdefinerbare karakterer. mov a, #64 ; Send 64 Hex, = 01xx xxxx b, hvor xx xxxx angiver ; rækkenummeret, man vil gemme. Der er plads til 8 ; karakterer a` 8 rækker. Her indstilles til række 0, som Side 4 af 7

; svarer til karakter 0, øverste række. ; 01 01 ville pege på 1, karakter 2. række fra ; oven. mov DPTR, #LCD_CGRAM ; adressen på de data, der ønskes lagt ned som ; brugerdefinerbare karakterer kan være defineret ; i en tabel. mov R0, #64 ; antal rækker, 8x8! L1: clr a movc a, @A+DTPR inc DTPR call LCD_send_d djnz R0, L1 call LCD_returnhome ret ; hent tabelværdi ; efter sending til en adresse incrementes en tæller ; automatisk, så næste værdi gemmes i næste ; ram-lokation. ; positioner cursor i 1. linie 1. plads. LCD_CGRAM: db 0,1,5,6,2,5,6,0 ; Her defineres de 8 rækker i første karakter, = kar 0! db 0,1,5,6,4,5,6,0 ; Og de 8 rækker i karakter 1! db 0,1,5,6,8,5,6,0 ; Værdierne angiver værdien af 5 bit. Se nedenfor! db 0,1,5,6,2,5,6,0 db 0,1,5,6,16,5,6,0 db 0,1,5,6,2,24,6,0 db 0,1,5,6,2,5,6,0 db 0,1,5,6,2,5,6,0 Karaktererne består af en matrix med 8 rækker a` 5 punkter. Hver af disse er repræsenteret af en bit. Derfor kan værdierne ovenfor være fra 0 til 31! Følgende bit-kombination sendt til LCD`ens ram ville kunne skrive et 8-tal. Et 1-tal vil tænde pågældende dot. 11111 101 101 11111 101 101 11111 0 = 31 = 31 = 31 = 0 Side 5 af 7

Nederste række bruges normalt ikke, hvis der bruges cursor, og skal så være 0! De definerbarre karakterer ligger i LCD-en i RAM på adresse h til 07h Eks. på selvdefineret tegn: 1 0 0 0 1 = 11h 0 1 0 1 0 = 0Ah 1 1 1 1 1 = 1Fh 0 0 1 0 0 = 04h 0 1 1 1 0 = 0Eh 0 0 1 0 0 = 04h 0 0 1 0 0 = 04h 0 0 0 0 0 = h Række 8 ( 7 ) bør være = h pga. cursor. Ønsker man at adressere en bestemt karakter, og ikke alle 8 fra begyndelsen, kan flg. måske være til hjælp. Med de første 3 nuller vælges karakter 0 til 7. Med de sidste 3 vælges række 0 til 7 i karaktermønsteret. ** 0 0 karakter 0-7 række 0-7 De respektive definerede karakterer vises på skærmen ved at vælge placering, og sende ASCII h til 08h På følgende side er vist nogle flovcharts, der viser forløbet af kommunikationen med et LCD-modul, med koden fra kodegeneratoren : Side 6 af 7

Flowchart over LCD-displayet LCD_Init LCD_Send_b Sender Byte i Acc til LCD Start Hovedprogram Vent til display har initialiceret Start Hop over interrupt adresser 20h ind i Stack Pointer Kald initieringsrutine LCD_INIT Send styrebit Gør Registerselect RS lav, IR-reg! Gør RW lav, Write! Gør LCD_enable lav Kald LCD_Send_b Byte / 1010b Gør LCD_enable høj Gør LCD_enable lav Igen?? Kald LCD_Send_b / 1010 Kald LCD_Send_b Byte / 11b Kald LCD_Clear Clr RS CLR RW LCD_send Clear RW ( write ) Set RS, Registerselect, 1= Datareg. Send High Nibble i ACC ud på port Indstil DataPointer på tabeladresse Set Enable ( Strobe ) Call Pause Clear enable ( Strobe ) Aktiv på faldende flanke! Pause Send Low Nibble i ACC ud på port Kald LCD-Prints ( Print string) Pause i 1,6 ms Set Enable Call Pause clr Enable Hovedprogram Printc Send karakter i ACC ud! LCD urn Home LCD_Prints Send en string termineret med 0 Fra DTPR Inc LCD_RAM ( Antal karakterer pr række ) Gem ACC PUSH Acc Call LCD_Send_b # 128 Læg 0 i LCD-RAM ( Cursor?? ) POP ACC PUSH ACC Karakternr? Nej RET 0 til ACC Hent data fra @Acc+Pointer Ja Ja 168 d til ACC ( Ny linie?? ) kald LCD_Send_b LCD-Clear = 0? Nej Incr Dtpr Call LCD_PrintC ( Karakter ) Hent ACC kald LCD_Sene_d PUSH ACC Send_b #1 0 i LCD_RAM ( Cursor?? ) POP ACC RET Pop ACC RET Side 7 af 7