0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaProgramiranjeIzpis posebnih znakov na Nokia 3310 LCD-ju

    Izpis posebnih znakov na Nokia 3310 LCD-ju

    Svet elektronike colorKot omenjeno v članku on Nokia 3310 LCD modulu, je na tem LCD-ju možno izpisovati posebne znake, ki jih je potrebno izpisovati z malce posebno tehniko. V tem članku si bomo pogledali, kako.

    AX elektronika d.o.o.
    Avtor: Jurij Mikeln
    E-pošta: stik@svet-el.si
    2021-302-50

    Nokia 3310 je cenovno ugoden monokromatski grafični LCD, na katerem lahko prikazujemo marsikaj, kot smo pokazali v članku o LCD modulu. Tokrat se bomo orientirali na prikaz posebnih znakov, kot je prikazano na sliki 1.

    Prikaz posebnih znakov, kot je narisan simbol ključavnice na skrajni desni, zapišemo v subrutini, ki jo kličemo iz glavnega programa.

    Subrutina za simbol zaklenjene ključavnice izgleda takole:

    Lockicon:
    Glcdcmd 32 ‘normalen ukaz
    Glcdcmd 207 ‘x pointer (128+stolpec) kjer
    je stolpec=0-83
    Glcdcmd 69 ‘ypointer (64+vrstica) kjer je
    vrstica=0-5
    Glcddata 126 ‘8-bit vertikalni stolpec
    podatkov za simbol
    Glcddata 121
    Glcddata 73
    Glcddata 121
    Glcddata 126
    Glcddata 0
    Return

    S prvim ukazom nastavimo direktni način izpisa na zaslon. Ker imamo 84 stolpcev po x-osi označenih od 0-83, se številka, kjer bi želeli narisati nek simbol, prišteje številki 128, kot je napisano pri komentarju drugega ukaza.
    Če bi šteli pikice (verjamem, da jih ne boste) od leve proti desni, bi prvi stolpec simbola za zaklenjeno ključavnico bil ravno na 79-tem mestu. Lahko pa preštejete stolpce od desne proti levi, pa boste videli, da se simbol prične ravno na 79. mestu.

    Torej s prvim ukazom določimo X koordinato, kjer bomo pisali na zaslon. Z naslednjimi ukazi bomo določili, kaj naj se izpisuje v 8-bitih na lokacijah od 79 naprej.

    Pojdimo lepo po vrsti. Na prvi lokaciji na sliki vidite, da je prvi kvadratek prazen, nato je 6 kvadratkov počrnjenih in zadnji kvadratek je spet prazen. To tudi lepo ustreza binarni vrednosti številke 126: 0111 1110.

    Če še ni jasno, poglejmo drugi ukaz Glcddata 121: binarna vrednost številke 121= 0111 1001. Vidite, da je prvi kvadratek prazen, nato sledijo štirje polni, dva prazna in en poln. Opazili boste tudi to, da je zadnji – polni kvadratek na vrhu – mogoče je kdo mislil, da je najvišji bit (MSB) tudi na vrhu znaka, pa ni tako.

    Če še ni jasno, kako izpisujemo znak, si poglejmo naslednji ukaz: Glcddata 73

    Tudi tukaj moramo pretvoriti 73 v binarno vrednost: 0100 1001. Vidimo, da je »luknja za ključavnico« v 5. in 6. bitu, ki sta vrednosti 0. Da ne bomo predolgi: skratka MSB bit v Y koordinatni osi se nahaja spodaj, LSB bit pa se nahaja zgoraj v vrstici zaslona.

    Na ta način lahko izrišemo kateri koli simbol, ki je lahko poljubno dolg v desno stran zaslona. Tako boste na sliki 1 videli znak ∆ f. Iz programa vidimo, da znak zavzema kar 12 mest:

    riticon:
    glcdcmd 32 ‘normal command
    glcdcmd 183 ‘x pointer (128+column) where
    column=0-83
    glcdcmd 68 ‘ypointer (64+row) where
    row=0-5
    glcddata 64 ‘8-bit vertical column
    symbol data
    glcddata 112
    glcddata 124
    glcddata 127
    glcddata 124
    glcddata 112
    glcddata 64
    glcddata 8
    glcddata 126
    glcddata 9
    glcddata 2
    glcddata 0
    Return

    Kaj še lahko prikazujemo?
    Glede na povedano, da lahko prikazujemo praktično neomejeno dolg znak v desno (ali levo, kakor gledamo), si poglejmo primer »Bargraf« prikaza. Namreč zamislimo si primer prikaza recimo napetosti. Višja, kot je napetost, daljši bo bargraf prikaz (in seveda obratno). Na našem Nokia 3310 LCD modulu bomo napetost »simulirali« z vrtenjem enkoderja v levo/desno in zmanjševali/večali neko spremenljivko, katere vrednost bomo prikazali v bargraf vrsti prikaza.

    To bomo prikazovali v subrutini Signal:

    Glcdcmd 32 ‘normal command
    Glcdcmd 134 ‘x pointer (128+column) where
    column=0-83
    Glcdcmd 69 ‘ypointer (64+row) where
    row=0-5
    For Temp = 1 To Pulses
    Glcddata 112
    Next

    Na »prvo žogo« je prikaz takšen, kot smo ga prikazali. Spremenljivka z imenom Pulses se spreminja od 0 do 255 (vrste Byte). S prvimi tremi ukazi določimo, od kje do kje se bo prikazoval bargraf. Z ukazom Glcdcmd 134 določimo, da se bo bargraf pričel prikazovati od 6. stolpca naprej. Z ukazom Glcdcmd 69 pa določimo, da se bo bargraf prikazoval v zadnji – 6 vrstici na LCD-ju.

    Če boste za prikaz svojega bragraf prikaza uporabili zgornjih nekaj vrstic programa, boste hitro ugotovili, da nekaj manjka. Bargraf se bo lepo izrisoval, ko bomo povečevali vrednost spremenljivke Pulses, nič pa se ne bo zgodilo, ko bomo spremenljivko pričeli zmanjševati. Opazili boste, da se bargraf ne zmanjšuje, ampak ostaja na istem mestu. Zato je potrebno dodati še nekaj vrstic programa, ki bo ustrezno »brisal« bargraf, ko se vrednost spremenljivke Pulses zmanjšuje. To naredimo z naslednjimi ukazi znotraj iste subrutine:

    If Pulses < 70 Then
    For Temp = Pulses To 70
    Glcddata 0
    Next
    End If

    Zdaj se bo bargraf tudi zmanjševal ob zmanjševanju spremenljivke Pulses. Na sliki 2 vidimo izgled bargraf izpisa spodaj na LCD-ju.

    No seveda pa bi si želeli več od bargraf izpisa – recimo vsaj to, da na deseticah vrednosti spremenljivke narišemo malce višjo črtico, da bomo vedeli, kje je njena vrednost 10, 20, 30 itd.. S tem izpisom se bo potrebno malce »poigrati«, saj potrebno poskrbeti za to, da se prikaže samo ena črtica pri 10, 20 itd, ne pa, da imamo od 10 naprej prikazan debelejši bargraf.

    To naredimo z naslednjim programskim izsekom:

    For Temp = 1 To Pulses
    Glcddata 112
    Select Case Temp ‘prikaz desetic z visjo crtico
    Case 10 : Glcddata 127
    Case 20 : Glcddata 127
    Case 30 : Glcddata 127
    Case 40 : Glcddata 127
    Case 50 : Glcddata 127
    Case 60 : Glcddata 127
    End Select
    Next

    S pomočjo Select Case ukazov zdaj določimo, kje se bo prikazala tanka črta preko cele vrstice. Tam, kjer pa ne želimo visoke črte se pač prikazuje bargraf enake višine, to je 3 piksle, kot to določa ukaz Glcddata 112 (112= 0111 0000).

    Prikaz takega izpisa vidimo na sliki 3.

    Seveda bargraf prikaz s tem še ni popoln. Želeli bi si tudi izpis številk vrednosti, ki se nam izpisujejo. To naredimo z dodatnim ukazom Select Casev Do-Loop zanki, kjer dodamo ta del programa:

    Setfont Font5x5
    Select Case Pulses
    Case 1 To 9 : Lcdat 5 , 1 , “” , C0
    Case 10 To 19 : Lcdat 5 , 1 , ” 10 ” , C0
    Case 20 To 29 : Lcdat 5 , 1 , ” 10 20 ” , C0
    Case 30 To 39 : Lcdat 5 , 1 , ” 10 20 30 ” , C0
    End Select

    Tako, zdaj smo praktično dosegli to, kar smo želeli. Izpis sicer še ima svoje pomanjkljivosti. Na sliki 4 vidite, da so številke 10, 20 preveč zamaknjene; 10 se ne nahaja točno nad črtico, 20 je že bližje nad črtico itd.. Jih pač prikazujemo z ukazom Lcdat, ki nima možnosti premikati prikaza karakterjev poljubno po zaslonu. V tem primeru bi bilo potrebno številke izpisovati kot znake, kot smo to opisovali v tem članku, vendar to presega okvir tega članka. Samo za zgled sem prikazal izpis številke 50, ki ga vidite na sliki 5 zgoraj levo. Tako narejene številke lahko postavimo na točno določeno mesto na zaslonu brez prevelikega razmaka med številkami.

    Primer programa za izpis številk 5 in 0 je spodaj:

    Stev_5:
    Glcdcmd 32 ‘normalen ukaz
    Glcdcmd 130 ‘x pointer (128+stolpec) kjer
    je stolpec=0-83
    Glcdcmd 64 ‘ypointer (64+vrstica) kjer je
    vrstica=0-5
    Glcddata &B01011100
    Glcddata &B01010100
    Glcddata &B01010100
    Glcddata &B01110100
    Return

    Stev_0:
    Glcdcmd 32 ‘normalen ukaz
    Glcdcmd 135 ‘x pointer (128+stolpec) kjer
    je stolpec=0-83
    Glcdcmd 64 ‘ypointer (64+vrstica) kjer je
    vrstica=0-5
    Glcddata &B00111000
    Glcddata &B01000100
    Glcddata &B01000100
    Glcddata &B00111000
    Return

    Kar je še potrebno dodati programu, sta v Do-loop zanki dodana dva klica subrutin 5 in 0:

    Gosub Stev_5
    Gosub Stev_0

    Zaključek
    Tako, izpis na Nokia 3310 LCD-ju je lahko prav zabaven. Lahko izpisujemo različno velike črke, številke, tudi grafiko (kar smo pokazali v preteklih člankih), lahko pa izpisujemo tudi posebne znake, ki jih ni v naboru neke abecede. Lahko si narišemo nek svoj znak za neko našo aplikacijo. Skratka možnosti je veliko. Želim vam uspešno prikazovanje na Nokia 3310 LCD zaslonu.

    https://svet-el.si