Fórum témák

» Több friss téma
Fórum » PIC programozás assemblyben
 
Témaindító: sonajkniz, idő: Máj 30, 2015
Témakörök:
Lapozás: OK   32 / 32
(#) nemgyuri válasza nemgyuri hozzászólására (») Márc 23, 2024 /
 
Sikerült megoldani! Találtam valami furcsa utalást a PIC- pdf-ben. Kipróbáltam, szkópon látható az adatkivitel. (baud-rate is jó) Érdemes megnézni a csatolt képen az RA0-s sort, az mutatja az érvényes beállítást. "Logikai Analizátoron" viszont semmi sem jelenik meg.
Ez pedig a működést biztosító kódrészlet:
  1. BANKSEL ANSELA ;
  2.         CLRF ANSELA ;digital I/O
  3. ;UART vezérlés érdekes: (így működik)
  4.         bsf ANSELA,TX   ;most RA0
  5.        
  6.         BANKSEL TRISA ;RA4-et nem hajlandó kimenetnek beállítani!!!!
  7.         MOVLW B'00111111' ;Set RA<5:0> as inputs
  8.         MOVWF TRISA
  9.         bsf     TRISA,FSKbe
  10.         bcf     TRISA,TX   ;itt kimenetnek van beállítva, de ANSEL miatt analóg kimenet
  11.         ;UART így már megy !!!
  12.         bcf     TRISA,PWMki
A hozzászólás módosítva: Márc 23, 2024

PIN1572_2.PNG
    
(#) Pali79 hozzászólása Kedd, 9:44 /
 
Sziasztok!
Szeretnék egy kis segítséget kérni, mert már napok óta szívok és már az agyvérzés kerülget. Eléggé kijöttem a gyakorlatból, úgyhogy bármi előfordulhat.
Adott egy I2C LCD meghajtó, a mindehol kapható kínai csoda, PCF8574AT portbővítőre épülő kis modul. Ezt szeretném használni de az istenért sem akar működni.
Ami eddig biztos: a modul működik, az I2C adat küldés működik, LED-et tudok villogtatni vele, a lábkiosztása az alábbi:
DB7, DB6, DB5, DB4, LED (háttérvilágítás), E, RW, RS.
Jó nagy késleltetéseket tettem a kódba, hogy lássam mi történik. Az látszik, hogy átkapcsol kétsoros módba, tehát a 4 bites beállítás és a kétsoros módba kapcsolás működik de innentől semmi. Próba képpen egyetlen "A" betűt akartam megjeleníteni a kijelzőn, de semmi és nem tudok rájönni, hogy miért. A kódot igyekeztem minél bővebben kommentelni és tagolni, hogy érthető legyen.
  1. Init_LCD
  2.         call    START                   ;Start parancs, visszatéréskor W-ben a modul címe
  3.         call    OUT_BYTE                ;Modul címzés
  4.         movlw   b'00000000'             ;Modul alaphelyzetbe állítása
  5.         call    OUT_BYTE
  6.         movlw   b'00001000'             ;Háttérvilágítás be
  7.         call    Kesleltet255
  8.         call    Kesleltet255
  9.         call    Kesleltet255
  10.         call    Kesleltet255
  11. ;1***********************************************************
  12.         movlw   b'00111000'             ;Functoin set DL=1
  13.         call    OUT_BYTE
  14.         movlw   b'00111100'             ;Functoin set DL=1 + E
  15.         call    OUT_BYTE
  16.         movlw   b'00111000'             ;Functoin set DL=1 - E
  17.         call    OUT_BYTE
  18.         call    Kesleltet255
  19. ;2***********************************************************  
  20.         movlw   b'00111100'             ;Functoin set DL=1 + E
  21.         call    OUT_BYTE
  22.         movlw   b'00111000'             ;Functoin set DL=1 - E
  23.         call    OUT_BYTE
  24.         call    Kesleltet255
  25. ;3***********************************************************
  26.         movlw   b'00111100'             ;Functoin set DL=1 + E
  27.         call    OUT_BYTE
  28.         movlw   b'00111000'             ;Functoin set DL=1 - E
  29.         call    OUT_BYTE
  30.         call    Kesleltet255
  31. ;4***********************************************************
  32.         movlw   b'00101000'             ;Functoin set DL=0, 4 bites módba kapcsolás
  33.         call    OUT_BYTE
  34.         movlw   b'00101100'             ;Functoin set DL=0, 4 bites módba kapcsolás + E
  35.         call    OUT_BYTE
  36.         movlw   b'00101000'             ;Functoin set DL=0, 4 bites módba kapcsolás - E
  37.         call    OUT_BYTE
  38. ;5***********************************************************
  39.         movlw   b'00101000'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, felső félbájt
  40.         call    OUT_BYTE
  41.         movlw   b'00101100'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, felső félbájt + E
  42.         call    OUT_BYTE
  43.         movlw   b'00101000'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, felső félbájt - E
  44.         call    OUT_BYTE
  45.  
  46.         movlw   b'10001000'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, alsó félbájt
  47.         call    OUT_BYTE
  48.         movlw   b'10001100'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, alsó félbájt + E
  49.         call    OUT_BYTE
  50.         movlw   b'10001000'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, alsó félbájt - E
  51.         call    OUT_BYTE
  52. ;6**********************************************************
  53.         movlw   b'00001000'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, felső bájt
  54.         call    OUT_BYTE
  55.         movlw   b'00001100'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, felső bájt + E
  56.         call    OUT_BYTE
  57.         movlw   b'00001000'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, felső bájt - E
  58.         call    OUT_BYTE
  59.  
  60.         movlw   b'10001000'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, alsó bájt
  61.         call    OUT_BYTE
  62.         movlw   b'10001100'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, alsó bájt + E
  63.         call    OUT_BYTE
  64.         movlw   b'10001000'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, alsó bájt - E
  65.         call    OUT_BYTE
  66. ;7**********************************************************
  67.         movlw   b'00001000'             ;Entry mode set I/D=1, S=0  felső bájt
  68.         call    OUT_BYTE
  69.         movlw   b'00001100'             ;Entry mode set I/D=1, S=0  felső bájt + E
  70.         call    OUT_BYTE
  71.         movlw   b'00001000'             ;Entry mode set I/D=1, S=0  felső bájt - E
  72.         call    OUT_BYTE
  73.  
  74.         movlw   b'01101000'             ;Entry mode set I/D=1, S=0  alsó bájt
  75.         call    OUT_BYTE
  76.         movlw   b'01101100'             ;Entry mode set I/D=1, S=0  alsó bájt + E
  77.         call    OUT_BYTE
  78.         movlw   b'01101000'             ;Entry mode set I/D=1, S=0  alsó bájt - E
  79.         call    OUT_BYTE
  80. ;8***********************************************************
  81.         movlw   b'00001000'             ;Clear display, felső bájt
  82.         call    OUT_BYTE
  83.         movlw   b'00001100'             ;Clear display, felső bájt + E
  84.         call    OUT_BYTE
  85.         movlw   b'00001000'             ;Clear display, felső bájt - E
  86.         call    OUT_BYTE
  87.  
  88.         movlw   b'00011000'             ;Clear display, alsó bájt
  89.         call    OUT_BYTE
  90.         movlw   b'00011100'             ;Clear display, alsó bájt + E
  91.         call    OUT_BYTE
  92.         movlw   b'00011000'             ;Clear display, alsó bájt - E
  93. ;9**********************************************************
  94.         call    OUT_BYTE
  95.         movlw   b'00001000'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, felső bájt
  96.         call    OUT_BYTE
  97.         movlw   b'00001100'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, felső bájt + E
  98.         call    OUT_BYTE
  99.         movlw   b'00001000'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, felső bájt - E
  100.         call    OUT_BYTE
  101.  
  102.         movlw   b'11001000'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, alsó bájt
  103.         call    OUT_BYTE
  104.         movlw   b'11001100'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, alsó bájt + E
  105.         call    OUT_BYTE
  106.         movlw   b'11001000'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, alsó bájt - E
  107.         call    OUT_BYTE
  108. ;*********************************************************
  109.         movlw   b'01001001'             ;"A" karakter az 1. sor, 1. helyére, felső bájt + RS
  110.         call    OUT_BYTE
  111.         movlw   b'01001101'             ;"A" karakter az 1. sor, 1. helyére, felső bájt + RS + E
  112.         call    OUT_BYTE
  113.         movlw   b'01001001'             ;"A" karakter az 1. sor, 1. helyére, felső bájt + RS - E
  114.         call    OUT_BYTE
  115.  
  116.         movlw   b'00011001'             ;"A" karakter az 1. sor, 1. helyére, alsó bájt + RS
  117.         call    OUT_BYTE
  118.         movlw   b'00011101'             ;"A" karakter az 1. sor, 1. helyére, alsó bájt + RS + E
  119.         call    OUT_BYTE
  120.         movlw   b'00011001'             ;"A" karakter az 1. sor, 1. helyére, alsó bájt + RS - E
  121.         call    OUT_BYTE
  122.         call    STOP
A hozzászólás módosítva: Kedd, 9:45
(#) nemgyuri válasza Pali79 hozzászólására (») Kedd, 23:35 /
 
Szia! Úgy emlékszem, hogy a 4 bites mód bekapcsolása után csak a fölső 4 bit-et értelmezi (DB4-DB7). Nem tetted fel a rutinokat, így csak sejtéseim lehetnek..
(#) Pali79 válasza nemgyuri hozzászólására (») Sze, 6:58 /
 
Szia.
Mindenképp csak a a DB4-DB7 részeket használja, mert a többi be sincs kötve. A kiküldött 8 bitből mindig csak a felső 4 az adat vagy a parancs kódja az LCD számára, az alsó 4 bit a háttérvilágítás, az E, az RW és az RS vonal. Ezért is van, hogy a 3. bit már az elején mindig 1, mert az a háttérvilágítás, az 1. bit mindig 0, mert az az RW. Ezért is látható a 38. sortól kezdve, hogy az adatok felső félbájtra és alsó félbájtra vannak szedve. Ezeket nem rutinok csinálják, hanem eleve így írtam meg, hogy az adat felső 4 bitje először az adat felső félbájtját tartalmazzák, aztán a következő küldésnél az alsó félbájtot. Szóval nincs olyan rutin ami ebbe beleszólna.
(#) sonajkniz válasza Pali79 hozzászólására (») Sze, 7:38 /
 
Idézet:
„mert a többi be sincs kötve”

Csak egy ötlet.
Nem hagytad a nem használt bemeneteket lebegni?
Mert ha nincsenek 0-án, már az inicializálás félre megy.
(#) Pali79 válasza sonajkniz hozzászólására (») Sze, 17:07 /
 
Ha magam csinálom a panelt, mindig lebegve hagyom, nekem nem volt még vele gondom. De ez egy készen kapható modul, mind a 16 tüske benne van és ebben sincsenek bekötve sehová azok a tüskék, csak úgy vannak.
Az a bajom, hogy ehhez a modulhoz rengeteg arduinos példa van de PIC nagyon kevés. Találtam párat de vagy C-ben vagy basic-ben van írva. A basic még valamennyire átlátható lenne de szerintem hülyeség van benne, mert a E és RS vonalat külön kezeli, amit nem egészen értek, hogy hogyan teszi.
(#) helektro válasza Pali79 hozzászólására (») Sze, 21:14 /
 
Az nem derült ki, hogy PIC milyen órajelen jár, de ez így nem jó.
A specifikáció szerint az LCD utasítások nagy részének a végrehajtása kb. 40us-ig tart, de te az elejét eltekintve egyik utasítás után sem teszel késleltetést.
(#) ktamas66 válasza Pali79 hozzászólására (») Sze, 21:20 /
 
Az Rs beállásnak meg kell előznie E pulzust. A "nagy" időzítésekről nem tudunk semmit. Én az E impulzus generálását betenném az OUT_BYTE rutinba, így nem kell a állandóan címezgetni az eszközt. Itt egy adatlap az időzítésekről, benne van melyik utasítás mennyi idő alatt hajtódik végre.
A hozzászólás módosítva: Sze, 21:21
(#) Pali79 válasza helektro hozzászólására (») Sze, 23:10 /
 
Köszönöm. Ebben az alkalmazásban szoftveres kommunikációt használtam, 4 MHz-es órajel mellett. Elfelejtettem már, de szerintem egy bájt kiküldése biztos tovább tart mint 40usec. De holnap megnézem biztosra.
(#) Pali79 válasza ktamas66 hozzászólására (») Sze, 23:19 /
 
Idézet:
„Az Rs beállásnak meg kell előznie E pulzust.”
Ezzel biztos nincs gond, mert az első bájtban van az RS beállítása és a következőben a E vonal.
Nem tudom mire gondolsz az időzítés kapcsán de egy sima késleltető rutin, a nevében szereplő szám a késleltetés mértéke msec-ben.
(#) ktamas66 válasza Pali79 hozzászólására (») Sze, 23:52 /
 
Az adatlapból látszik, hogy a képernyő törlés végrehajtása 1,7ms, ott nincs berakva késleltetés.
(#) Pali79 válasza ktamas66 hozzászólására (») Csü, 8:44 /
 
Köszönöm, ez valóban elkerülte a figyelmem. Most tettem be minden parancs kiküldése után késleltetést. De nem változott a helyzet.
  1. Init_LCD
  2.         call    START                   ;Start parancs, visszatéréskor W-ben a modul címe
  3.         call    OUT_BYTE                ;Modul címzés
  4.         movlw   b'00000000'             ;Modul alaphelyzetbe állítása
  5.         call    OUT_BYTE
  6.         movlw   b'00001000'             ;Háttérvilágítás be
  7.         call    Kesleltet255
  8.         call    Kesleltet255
  9.         call    Kesleltet255
  10.         call    Kesleltet255
  11. ;1***********************************************************
  12.         movlw   b'00111000'             ;Functoin set DL=1
  13.         call    OUT_BYTE
  14.         movlw   b'00111100'             ;Functoin set DL=1 + E
  15.         call    OUT_BYTE
  16.         movlw   b'00111000'             ;Functoin set DL=1 - E
  17.         call    OUT_BYTE
  18.         call    Kesleltet255
  19. ;2***********************************************************  
  20.         movlw   b'00111100'             ;Functoin set DL=1 + E
  21.         call    OUT_BYTE
  22.         movlw   b'00111000'             ;Functoin set DL=1 - E
  23.         call    OUT_BYTE
  24.         call    Kesleltet255
  25. ;3***********************************************************
  26.         movlw   b'00111100'             ;Functoin set DL=1 + E
  27.         call    OUT_BYTE
  28.         movlw   b'00111000'             ;Functoin set DL=1 - E
  29.         call    OUT_BYTE
  30.         call    Kesleltet255
  31. ;4***********************************************************
  32.         movlw   b'00101000'             ;Functoin set DL=0, 4 bites módba kapcsolás
  33.         call    OUT_BYTE
  34.         movlw   b'00101100'             ;Functoin set DL=0, 4 bites módba kapcsolás + E
  35.         call    OUT_BYTE
  36.         movlw   b'00101000'             ;Functoin set DL=0, 4 bites módba kapcsolás - E
  37.         call    OUT_BYTE
  38.         call    Kesleltet100
  39. ;5***********************************************************
  40.         movlw   b'00101000'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, felső félbájt
  41.         call    OUT_BYTE
  42.         movlw   b'00101100'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, felső félbájt + E
  43.         call    OUT_BYTE
  44.         movlw   b'00101000'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, felső félbájt - E
  45.         call    OUT_BYTE
  46.  
  47.         movlw   b'10001000'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, alsó félbájt
  48.         call    OUT_BYTE
  49.         movlw   b'10001100'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, alsó félbájt + E
  50.         call    OUT_BYTE
  51.         movlw   b'10001000'             ;Functoin set DL=0, N=1, F=0, 4 bites mód, 2 soros kijelzés, 5×7 pixel, alsó félbájt - E
  52.         call    OUT_BYTE
  53.         call    Kesleltet100
  54. ;6**********************************************************
  55.         movlw   b'00001000'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, felső bájt
  56.         call    OUT_BYTE
  57.         movlw   b'00001100'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, felső bájt + E
  58.         call    OUT_BYTE
  59.         movlw   b'00001000'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, felső bájt - E
  60.         call    OUT_BYTE
  61.  
  62.         movlw   b'10001000'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, alsó bájt
  63.         call    OUT_BYTE
  64.         movlw   b'10001100'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, alsó bájt + E
  65.         call    OUT_BYTE
  66.         movlw   b'10001000'             ;Display control D=0, C=0, B=0, kijelző letiltása, kurzor ki, villogás ki, alsó bájt - E
  67.         call    OUT_BYTE
  68.         call    Kesleltet100
  69. ;7**********************************************************
  70.         movlw   b'00001000'             ;Entry mode set I/D=1, S=0  felső bájt
  71.         call    OUT_BYTE
  72.         movlw   b'00001100'             ;Entry mode set I/D=1, S=0  felső bájt + E
  73.         call    OUT_BYTE
  74.         movlw   b'00001000'             ;Entry mode set I/D=1, S=0  felső bájt - E
  75.         call    OUT_BYTE
  76.  
  77.         movlw   b'01101000'             ;Entry mode set I/D=1, S=0  alsó bájt
  78.         call    OUT_BYTE
  79.         movlw   b'01101100'             ;Entry mode set I/D=1, S=0  alsó bájt + E
  80.         call    OUT_BYTE
  81.         movlw   b'01101000'             ;Entry mode set I/D=1, S=0  alsó bájt - E
  82.         call    OUT_BYTE
  83.         call    Kesleltet100
  84. ;8***********************************************************
  85.         movlw   b'00001000'             ;Clear display, felső bájt
  86.         call    OUT_BYTE
  87.         movlw   b'00001100'             ;Clear display, felső bájt + E
  88.         call    OUT_BYTE
  89.         movlw   b'00001000'             ;Clear display, felső bájt - E
  90.         call    OUT_BYTE
  91.  
  92.         movlw   b'00011000'             ;Clear display, alsó bájt
  93.         call    OUT_BYTE
  94.         movlw   b'00011100'             ;Clear display, alsó bájt + E
  95.         call    OUT_BYTE
  96.         movlw   b'00011000'             ;Clear display, alsó bájt - E
  97.         call    Kesleltet100
  98. ;9**********************************************************
  99.         call    OUT_BYTE
  100.         movlw   b'00001000'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, felső bájt
  101.         call    OUT_BYTE
  102.         movlw   b'00001100'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, felső bájt + E
  103.         call    OUT_BYTE
  104.         movlw   b'00001000'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, felső bájt - E
  105.         call    OUT_BYTE
  106.  
  107.         movlw   b'11001000'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, alsó bájt
  108.         call    OUT_BYTE
  109.         movlw   b'11001100'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, alsó bájt + E
  110.         call    OUT_BYTE
  111.         movlw   b'11001000'             ;Display control D=1, C=0, B=0, kijelző engedélyezése, kurzor ki, villogás ki, alsó bájt - E
  112.         call    OUT_BYTE
  113.         call    Kesleltet100
  114. ;*********************************************************
  115.         movlw   b'01001001'             ;"A" karakter az 1. sor, 1. helyére, felső bájt + RS
  116.         call    OUT_BYTE
  117.         movlw   b'01001101'             ;"A" karakter az 1. sor, 1. helyére, felső bájt + RS + E
  118.         call    OUT_BYTE
  119.         movlw   b'01001001'             ;"A" karakter az 1. sor, 1. helyére, felső bájt + RS - E
  120.         call    OUT_BYTE
  121.  
  122.         movlw   b'00011001'             ;"A" karakter az 1. sor, 1. helyére, alsó bájt + RS
  123.         call    OUT_BYTE
  124.         movlw   b'00011101'             ;"A" karakter az 1. sor, 1. helyére, alsó bájt + RS + E
  125.         call    OUT_BYTE
  126.         movlw   b'00011001'             ;"A" karakter az 1. sor, 1. helyére, alsó bájt + RS - E
  127.         call    OUT_BYTE
  128.         call    Kesleltet100
  129.         call    STOP
(#) nemgyuri válasza Pali79 hozzászólására (») Csü, 17:11 /
 
Az én változatomhoz hasonlítottam a programodat, és két helyen látok eltérést: 70-83 és 100-113-as soroknál. 1 bittel el van csúszva!?
Az enyém ilyen:
  1. LCDINIT:
  2.         banksel PORTLCD ;Bank0
  3.         bcf     PORTLCD,LCDRS   ;vezérlés mód          
  4.         call    vár_100
  5.         call    vár_100
  6.         call    vár_100
  7. ; lassú tápfelfutás miatt ajánlott:
  8.         movlw   b'00110000'     ;b'00110100'    ;FUNKCIO 8 bites interface
  9.         call    LCD_nible
  10.         movlw   b'00110000'     ;b'00110100'    ;FUNKCIO 8 bites interface
  11.         call    LCD_nible
  12.         movlw   b'00110000'     ;b'00110100'    ;FUNKCIO 8 bites interface
  13.         call    LCD_nible
  14.         call    vár_100
  15.        
  16.         movlw   b'00100000'     ;b'00100100'    ;FUNKCIO 4 bites interface
  17.         call    LCD_nible
  18.         call    vár_100u
  19. ;
  20.         movlw   b'00111000'     ;2 soros, norm 5x7 pixel
  21.         movwf   LCDVez
  22.         call    LCDVEZ
  23.         call    vár_100u
  24.         movlw   b'00001100'     ;kijelző be, kurzor aláhúzás ki, villogás ki
  25.         movwf   LCDVez
  26.         call    LCDVEZ
  27.         call    vár_100u
  28.         movlw   b'00000001'     ;kijelző törlés
  29.         movwf   LCDVez
  30.         call    LCDVEZ
  31.         call    vár_1
  32.         call    vár_1  
  33.         movlw   b'00000110'     ;Entry(karakterbeviteli) mód: kursor increment, kijelző eltolás ki
  34.         movwf   LCDVez
  35.         call    LCDVEZ
  36.         call    vár_100u
  37.         RETURN

Volt olyan 16x2-es LCD kijelzővel dolgom, ami nem akart működni olyan programmal ami más kijelzőkkel gond nélkül ment. Valamit módosítanom kellett - időzítések növelése? -és jó lett.
(#) Pali79 válasza nemgyuri hozzászólására (») Csü, 18:58 /
 
Az én 70-83 és 100-113-as soraim nálad melyikhez kellene hasonlítani? Már jojózik a szemem a sok számtól...
(#) nemgyuri válasza Pali79 hozzászólására (») Csü, 22:29 /
 
Nálam a 24-es és 33-as sor.
(#) Pali79 válasza nemgyuri hozzászólására (») Pé, 6:56 /
 
Csak a sorrend más egy kicsit, de a parancsok ugyanazok.
(#) nemgyuri válasza Pali79 hozzászólására (») Pé, 13:19 /
 
Sorrend fontos?? (Nálad 40. sor, nálam 20. sorban van eltérés. A PDF-ek szerint a 0010 fölső byte kell, de nálam a 0011 van amivel működik. Meghajtó függő, nem tudom...)

4bit_LCD.PNG
    
(#) Pali79 válasza nemgyuri hozzászólására (») Pé, 17:42 /
 
Ez teljesen más meghajtó, azért leht a különbség. A legtöbb LCD HD44780 meghajtóra vagy azzal kompatipilisre épül. Annak az adatlapja és egy működő közvetlen PIC-LCD összeköttetéssel működő programból indultam ki. De eddig nem értem el jó eredményt.
(#) Pali79 hozzászólása Pé, 18:30 /
 
Betettem minden bájt kiküldése után egy késleltetést, így most működik.
Köszönöm a segítséget mindenkinek!
Következő: »»   32 / 32
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem