overflow86 Inserito: 31 marzo 2012 Segnala Share Inserito: 31 marzo 2012 Buongiorno a tutti, E' un po di tempo che seguo questo forum, ma è la prima volta che vi chiedo aiuto Ho recuperato da un vecchio fax un display LCD 20x2 e sto tentando di interfacciarlo con un PIC16F877. Non avendo esperenzia con i display, sto facendo un po di sperimentazioni, cercando di fargli visualizzare qualche scritta. Il display è un MDLS20265SS-01 / KL SN102 94V-0 e da un datasheet trovato in rete ho letto che è un HD44780 compatibile. Con il simulatore mi stampa correttamente la scritta, mentre dal "vero", montando il circuito su breadboard mi stampa dai caratteri strani, simili al giapponese Cosa sto sbagliando ? Allego programma PROCESSOR 16F877 ;4,00 MHz RADIX HEX INCLUDE "P16F877.INC" ERRORLEVEL -302 __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_ON & _LVP_ON & _DEBUG_OFF & _CPD_OFF ATIME EQU 0x24 ;PORTB,2 = ENABLE ;PORTB,1 = R/W ;PORTB,0 = RS ;PORTD = DATA (DBO-DB7) ;display 20x2 ;2 righe ;8 bit org 0 MOVLW 0x07 ; CONFIGURE ALL PORT A PINS MOVWF ADCON1 ; AS DIGITAL I/O BSF STATUS, RP0 ; SELECT BANK1 MOVLW B'00000000' ; ALL BITS FOR PORT A MOVWF TRISA ; AS O/P, HANDLES KEYPAD V+ MOVLW B'00000000' ; ALL BITS FOR PORT B MOVWF TRISB ; AS O/P MOVLW B'00000111' ; ALL BITS FOR PORT C MOVWF TRISC ; AS I/P, HANDLES KEYPAD OUTPUT AND O/P MOVLW B'00000000' ; ALL BITS FOR PORT D MOVWF TRISD ; AS O/P BCF STATUS,RP0 ; SELECT BANK0 MAIN CLRF PORTD CLRF PORTC CLRF PORTB CLRF PORTA CALL INIZIALIZZA CALL CHR ;RS=1 MOVLW 'S' MOVWF PORTD CALL EXEC MOVLW 'U' MOVWF PORTD CALL EXEC MOVLW 'N' MOVWF PORTD CALL EXEC MOVLW 'P' MOVWF PORTD CALL EXEC MOVLW 'L' MOVWF PORTD CALL EXEC MOVLW 'U' MOVWF PORTD CALL EXEC MOVLW 'S' MOVWF PORTD CALL EXEC CALL FINE loop goto loop FINE CALL CMD ;RS=0 MOVLW B'00000111' ;ENTRY MODE MOVWF PORTD CALL EXEC CALL CMD ;RS=0 MOVLW B'00000010' ;BACK HOME MOVWF PORTD CALL EXEC RETURN INIZIALIZZA CALL CMD ;RS=0 CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME MOVLW B'00111000' MOVWF PORTD CALL EXEC CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME MOVLW B'00111000' MOVWF PORTD CALL EXEC CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME MOVLW B'00111000' MOVWF PORTD CALL EXEC CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME BF_CHECK btfsc PORTD,7 goto BF_CHECK MOVLW B'00001111' MOVWF PORTD CALL EXEC MOVLW B'00000001' MOVWF PORTD CALL EXEC MOVLW B'00000110' MOVWF PORTD CALL EXEC RETURN CLR BCF PORTB,0 BCF PORTB,1 BCF PORTB,2 MOVLW B'00111000' MOVWF PORTD CALL EXEC MOVLW B'00001110' MOVWF PORTD CALL EXEC MOVLW B'00000110' MOVWF PORTD CALL EXEC return CMD BCF PORTB,0 RETURN CHR BSF PORTB,0 RETURN EXEC BCF PORTB,2 ;ENABLE FALSE CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME BSF PORTB,2 ;ENABLE TRUE CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME CALL DLY ;WAIT TIME RETURN DLY MOVLW D'255' MOVWF ATIME SUBT NOP NOP NOP NOP NOP DECFSZ ATIME,1 GOTO SUBT RETURN END Grazie in anticipo Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 31 marzo 2012 Segnala Share Inserita: 31 marzo 2012 è un HD44780 compatibile. Se veramente compatibile non ci devono essere problemi. Io non uso da anni l'assembler, se non in casi particolarissimi quando devo ottimizzare al 100% il codice. Se vuoi possi metterti a disposizione le funzioni "C" (compilate con CCS) che uso normalmente e che ti posso garantire non danno problemi. Link al commento Condividi su altri siti More sharing options...
GiRock Inserita: 31 marzo 2012 Segnala Share Inserita: 31 marzo 2012 (modificato) Solo per vedere se è veramente compatibile, prova a buttargli dentro questo eseguibile, se visualizzi 40 caratteri standard, allora è il tuo codice che non funziona a dovere, altrimenti bisogna indagare più a fondo... La PORTB è settata uguale alla tua, mentre viene utilizzata solo metà della PORTD ovvero, RD4-5-6-7 collegati ai rispettivi pin del display D4-5-6-7... P.S. In effetti la simulazione funziona correttamente, quindi è probabile che ci sia sotto qualcosa d'altro, solo un test completo a questo punto ci potrà togliere eventuali dubbi... :020000000129D4 :10000600103083120313FD00FD0B072800000800C3 :10001600083083120313FC002330FD00FD0B11286A :06002600FC0B112808008C :04002C0000000800C8 :1000300083120313D21B1E2888131F288817521BF4 :100040002328081324280817D21A282888122928B8 :100050008816521A2D2808122E2808164C183228F5 :10006000061433280610061516200611D2193A2850 :1000700088133B28881752193F280813402808176F :10008000D218442888124528881652184928081280 :100090004A2808164C184E2806144F280610061534 :1000A000162006114C1C56280B2057280320080048 :0E00B000831203134B088A004A0882000800DE :1000BE00831203134C105108D20018204C14080060 :1000CE0083160313061106100812881208138813DC :1000DE0083120611061088130813881208120B20BB :1000EE000B200B20881608160615162006110B205D :1000FE000615162006110B200615162006110B20CC :10010E0008120615162006110B20061516200611CC :10011E00881288170615162006110B20881308164C :10012E0006151620061108120615162006110B20AC :10013E0006151620061108160615162006110B2098 :10014E0008120615162006118817081788160816A5 :0C015E000615162006110B204C1408009A :10016A00C728803083120313CD00DA28C030CD00AF :10017A00DA289430CD00DA28D430CD00DA2880305D :10018A00CD00DA28831203134D08013A0319B62861 :10019A004D08023A0319BB284D08033A0319BE2831 :1001AA004D08043A0319C128C4284E03F0004D082B :1001BA00F0077008CD007008D20018204C10D0014A :1001CA0050084F07840000080319F32850084F0706 :1001DA0084000008D1005F20D00AE5284C140800EA :1001EA0058208A110A128000840ACA0A0319CB0A03 :0801FA00F003031DF5280800C5 :100202005E210730831603139F0085018312850147 :100212008316860183128601831687018312870162 :10022200831688018312880183168901831289014A :1002320067200130D20018200C30D2001820013083 :10024200CD000130CE002030CF00B5200230CD00ED :0C0252000130CE003530CF00B5202E2941 :1002BC00203084002A3083120313F0003430CA003B :0802CC000130CB00F520080011 :1002680041344234433444344534463447344834C2 :1002780049344A344B344C344D344E344F34503472 :0A028800513452345334543400341E :10029200553456345734583459345A34303431344E :1002A2003234333434343534363437343834393400 :0A02B2002B342D342A343A34003482 :02400E00713B04 :00000001FF Modificato: 31 marzo 2012 da GiRock Link al commento Condividi su altri siti More sharing options...
overflow86 Inserita: 1 aprile 2012 Autore Segnala Share Inserita: 1 aprile 2012 Grazie mille per l'aiuto, ho caricato il codice di GiRock (anch'esso funzionante in simulazione), ma nulla. Il display rimane spento, e regolando il contrasto con il trimmer, mi annerisce solo la prima riga. A questo punto penso che il problema sia hardware Nei prossimi giorni acquistero' un display nuovo, poi vi faro' sapere. Grazie nuovamente per la disponibilità Link al commento Condividi su altri siti More sharing options...
overflow86 Inserita: 5 aprile 2012 Autore Segnala Share Inserita: 5 aprile 2012 Ciao Confermo che il problema era hardware. Ho acquistato un LCD 16x2 della DisplayTech http://it.rs-online.com/web/p/display-a-led-logica-integrata/5326408/ e il tutto funziona correttamente Continuero' con le sperimentazioni Grazie per l'aiuto Ciao Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 5 aprile 2012 Segnala Share Inserita: 5 aprile 2012 Bene! Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora