logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak sterować 2 x LCD na atmega i Bascom

IMEX 28 Lut 2011 00:23 4993 11
REKLAMA
  • REKLAMA
  • #2 9214413
    tadzik85
    Poziom 38  
    Na szybko to przekonałbym się jak się obsługuje wyświetlacz 4*40 bo on ma 2 linie E.

    Nic więcej nie poradzę bo z Bascomem nie mam do czynienia.
  • REKLAMA
  • #3 9214624
    piotrva
    VIP Zasłużony dla elektroda
    Jak kolega mówi sprawdź w helpie bibliotekę lcd4e2.lib/.lbx
    A na serio zastanów się nad przesiadką na C bo tam to się robi prościej.
  • #4 9215640
    tadzik85
    Poziom 38  
    Można by przełączać bramkami linie E, ale to wymaga modyfikacji schematu.
  • #5 9215749
    piotrva
    VIP Zasłużony dla elektroda
    ależ po co zwiększać hardware, skoro można to załatwić tą biblioteką, a w C to wogóle nie stwarza żadnego problemu
  • REKLAMA
  • #6 9215765
    tadzik85
    Poziom 38  
    Trzeba nie trzeba rozwiązanie jest. Mało optymalne ale jest.
  • #7 9215892
    IMEX
    Poziom 20  
    Ciesze się że jest takie zainteresowanie moim problemem

    Czyli jak ma wyglądać config ? dla LCD - standardowo

    tylko przykłąd poglądowy nie ze schematu
    Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.1 , Rs = Porta.0
    Config Lcd = 16 * 2
    Cls
    Cursor Off Noblink


    a może cos takiego ale wg. helpa dotyczy tylko asemblera
    $lib "LCD4E2.LBX"
    
    '===========================
    
    RS	PortB.0	
    R/W	PortB.1	w tej wersji nie jest używana końcówka R/W wyświetlacza, należy ją dołączyć do masy
    E	PortB.2	linia aktywująca pierwszy kontroler
    E2	PortB.3	linia aktywująca drugi kontroler
    DB4	PortB.4	szyna danych musi pracować w trybie 4 bitowym
    DB5	PortB.5	
    DB6	PortB.6	
    DB7	PortB.7
    
  • #8 9216022
    piotrva
    VIP Zasłużony dla elektroda
    biblioteka lcd4e2 jest konfigurowana z poziomu biblioteki pisanej w assemblerze. Z tego co wiem nieskompilowana wersja tych bibliotek (z możliwością zmian) jest dostępna tylko w wersji płatnej basoma
    Oto przykład zastosowania, połączenia powinny być tak:
    
    $lib "LCD4E2.LBX"
    
    '===========================
    
    RS   PortB.0   
    R/W   PortB.1   w tej wersji nie jest używana końcówka R/W wyświetlacza, należy ją dołączyć do masy
    E   PortB.2   linia aktywująca pierwszy kontroler
    E2   PortB.3   linia aktywująca drugi kontroler
    DB4   PortB.4   szyna danych musi pracować w trybie 4 bitowym
    DB5   PortB.5   
    DB6   PortB.6   
    DB7   PortB.7 
    

    
    '------------------------------------------------------------------
    '                          LCDCUSTOM4BITE2.BAS
    '                 demo shows 4 bit LCD mode with 2 E lines
    '------------------------------------------------------------------
    $regfile = "2313def.dat"
    
    ' this is the custom LCD lib
    $lib "Lcd4e2.lib"
    
    $crystal = 4000000
    
    'to use 2 E lines we need a way to make a distinct between them
    Dim ___lcde As Byte
    '___LCDE set to 0 will use E1, set to any other value will use E2
    
    Dim S As String * 10
    S = "Hello"
    
    ' write to the 2 first lines
    ___lcde = 0
    
    Cls
    
    Lcd "test"
    Lcd S
    
    ___lcde = 1
    'write to the 2 last lines
    Lcd "test"
    Lcd S
    
    End
    
  • #9 9224583
    rzuczek
    Poziom 17  
    A ja proponuje wziąć drugi AVR do drugiego wyświetlacza. Wiem jest to toporne rozwiązanie, ale najszybsze do realizacji i będzie działać!
  • REKLAMA
  • #10 9224610
    piotrva
    VIP Zasłużony dla elektroda
    rzuczek napisał:
    A ja proponuje wziąć drugi AVR do drugiego wyświetlacza. Wiem jest to toporne rozwiązanie, ale najszybsze do realizacji i będzie działać!

    nie tędy droga, po co brać kolejny procesor, skoro można to rozwiązać programowo?
    to tak jakbym do każdego termometru 1wire dawał osobny avr, bo nie umiem korzystać z funkcji rom match...
    a poza tym chyba nie najszybsze, bo trzeba dać cały drugi procesor i go odpowiednio oprogramować, ustalić język porozumiewania się (i2c, uart), komendy sterujące... to gorsza dłubanina niż napisanie w bascomie od zera bibliotek niskopoziomowych dla tych wyświetlaczy
    a poza tym autor tematu nie wypowiada się bo albo nie przetestował wszystkiego, albo już rozwiązał problem
  • #11 9235990
    adambehnke
    Poziom 24  
    No proszę.Widzę że autor wykopał skądś mój stary projekcik :D.

    Oczywiście że w prosty sposób można sterować dwoma LCD, używając do tego Linii E i E2.
    Potrzebna jest do tego oczywiście biblioteka (mogę udostępnić) .Sterowanie jest proste i nie nastręcza żadnych programowych niedogodności.
    Po prostu przed wpisaniem danych do LCD trzeba wskazać na odpowiedni lcd i po sprawie.
    Można nawet definiować własne osiem znaków dla każdego lcd.


    Fragment kodu:

    $regfile = "m32def.dat"
    $crystal = 8000000
    $baud = 19200                                                                                                                                           ' use baud rate
    $hwstack = 32                                                                                                                                           ' default use 32 for the hardware stack
    $swstack = 32                                                                                                                                           ' default use 10 for the SW stack
    $framesize = 32                                                                                                                                         ' default use 40 for the frame space
    
    $lib "lcd4e2.lbx"
    Dim ___lcde As Byte
    Const En1 = 0
    Const En2 = 1
    En Alias ___lcde
    
    Config Lcdpin = Pin , Db4 = Pa.4 , Db5 = Pa.5 , Db6 = Pa.6 , Db7 = Pa.7 , E = Pa.3 , Rs = Pa.2 , E2 = Pa.1
    
    
    
    
    
    
    Enable Interrupts
    
    'czyszczenie LCD1
    En = En1
    Cls
    
    'czyszczenie LCD1
    En = En2
    Cls
    
    'Powitenie
    
    'lcd1
    En = En1
    Cursor Off
    Locate 1 , 1 : Lcd "Sterownik"
    Locate 2 , 1 : Lcd "Kominka"
    
    'lcd2
    En = En2
    Cursor Off
    Locate 1 , 1 : Lcd "Uaktualnianie"
    Locate 2 , 1 : Lcd "Oprogramowania...."
    
    
    


    Oczywiście użyta przeze mnie biblioteka została odpowiednio przerobiona do współpracy z pinami pod jakie podpięte są LCD. Ale w samplach bascoma jest odpowiedni przykład wraz z działającą biblioteką ,tyle że trzeba używać zadeklarowanych tam pinów.
  • #12 12058963
    FastProject
    Poziom 28  
    Zmodyfikowałem ją pod PORTC ale niestety nie działa mi. Największe wątpliwości mam z tym fragmentem:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Gdy pozmieniałem dane (40, 14, 6 na 136, 11, 3) zapisywane w rejestrach to wyświetlają się krzaczki na lcd w losowych miejscach.

    Moja zmodyfikowana biblioteka:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Już opisane są tam piny portu C. Jak widać nie ma kolejności pinów PORTC4-7 z pinami LCD DB4-7..może to jest powodem? Używam kwarcu 11.0592MHz.
REKLAMA