Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

MEGA8 + LCD 16*1 + BASCOM

macios 18 Kwi 2006 09:04 2470 9
  • #1 18 Kwi 2006 09:04
    macios
    Poziom 10  

    Uprzedzając komentarze - uzyłem "szukaj" i nie znalazlem odpowiedzi...

    Sytuacja jest następująca:
    MEGA8 steruje wyświetlaczem LCD (w założeniu ma być 16*1).
    Próbowałem na dwu różnych - ale efekt jest taki sam.
    Użyte modele: WC1601A i HY1601E

    Program wygląda tak:

    Cytat:

    $regfile = "m8def.dat"
    $crystal = 4000000

    Config Lcdmode = Port
    Config Lcdbus = 4
    Config Lcd = 16 * 2

    Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portc.4 , Rs = Portc.5

    Initlcd
    Waitms 500
    Cls
    Waitms 200
    Lcd "12345678"
    Do
    Cls
    Waitms 500
    Display Off
    Waitms 500
    Display On
    Waitms 500
    Shiftlcd Left
    Waitms 500
    Shiftlcd Right
    Waitms 500
    Shiftlcd Right
    Waitms 500
    Shiftlcd Left
    Waitms 500
    Loop


    Sprawa prosta jak drut i działa...ale jednak nie do końca...
    Nie to ma być robione...
    W założeniu ma być zegar i termometr na DS1820 oraz sterowanie
    jasnością podświetlenia za pomocą PWM w zależności od napięcia na ADC0.

    Pełny program wydaje się działac - tj. komunikacja do DS'a jest,
    PWM działa... Tylko nic się nie wyświetla...

    Gdy próbuję wyświetlić tekst dłuższy niż 8 znaków - zamiast znaków na pierwszych 8 pozycjach LCD są czarne prostokąty, na drugich pusto.
    Gdy próbuję wyświetlić jakikowiek inny tekst (np. w pętli do..loop inkrementowaną wartośc0 - efekt j.w.

    Próbowałem definiować LCD jako 16*1a, 16*1, 16*2, 16*4 - efekt zawsze ten sam.

    Siedzę nad tym już 2 tygodnie (wieczorami, po pracy...) i nic....

    Może ktoś ma jakiś pomysł....

    0 9
  • #2 19 Kwi 2006 04:40
    LordBlick
    VIP Zasłużony dla elektroda

    A na pewno procesorek jest taktowany 4 MHz ?

    0
  • #3 19 Kwi 2006 08:41
    macios
    Poziom 10  

    Próbowałem na różnych częstotliwościach: 1MHz, 2MHz, 4MHz i 8MHz z wewnętrznego oscylatora - kwarc ma być zegarkowy 32kHz.
    Ustawiałem i w programie ($crystal) i fusebity.
    Zawsze efekt taki sam....to znaczy żaden...

    0
  • #4 19 Kwi 2006 09:46
    hunterhouse
    Poziom 26  

    ustaw wieksze stosy. Options > Compiler > Chip
    i tam masz HW Stack, Soft stack i frame.
    jak masz atmega8 to możesz spokjnie dać 128 na każde.
    pewnie bedzie za duzo ale atmega ma 1024 ramu to i tak będziesz miał za duzo.

    0
  • #5 19 Kwi 2006 17:48
    macios
    Poziom 10  

    no niestety, nie pomogło...

    zrobiłem testy:

    polecenie "cls" czyści ekran z tego co na nim jest, czyli kwaratów...
    polecenie "cursor on blink" powoduje wyswietlenie migającego kursora wraz z kwadratem
    polecenie "locate x , y" przesuwa kursor

    tylko czemu zamiast znaków są kwadraty....

    0
  • #6 21 Kwi 2006 22:42
    macios
    Poziom 10  

    ale pomogło coś innego....

    podłączyłem wyświetlacz 16*2...

    i poszlo od 1go strzału....

    0
  • #7 22 Kwi 2006 15:29
    Dawidos20
    Poziom 16  

    bo masz kofiuracje w programie na 16*2 a nie na 16*1 zmienyć i powino być ok

    0
  • #8 22 Kwi 2006 23:55
    LordBlick
    VIP Zasłużony dla elektroda

    Niektóre mają też 16*1a, z tego co pamiętam z Helpa...

    0
  • #9 23 Kwi 2006 15:44
    macios
    Poziom 10  

    jak pisałem wcześniej - próbowałem WSZYSTKICH dostępnych ustawień....

    0
  • #10 23 Kwi 2006 18:44
    LordBlick
    VIP Zasłużony dla elektroda

    No to można sobie go pozostawić w szufladzie do momentu osiągnięcia wprawy w asm, gdzie nie ma takich ograniczeń, ale tylko dla wnikliwych i cierpliwych... :>

    0
  Szukaj w 5mln produktów