Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Scritta su Display LCD 20X4 pilotato da un microcontrollore

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

-1
voti

[1] Scritta su Display LCD 20X4 pilotato da un microcontrollore

Messaggioda Foto UtenteMGtech » 25 feb 2013, 13:50

Scritta "HELLO WORLD" su Display 20X4 pilotato da un microcontrollore AT90S4433 programmato in assembly.

Sono nuovo di questo forum!

Uso un display LCD 20X4 con il driver SPLC780D compatibile con lo standard Hitachi HD44780.

Voglio controllarlo con un AVR AT90S4433, per il microcontrollore uso un oscillatore a 2 MHz.
Ho più volte programmato e riprogrammato l'AVR cercando di correggere ogni volta gli eventuali errori, ma niente da fare il display si accende ma non si vede nulla.

Premetto che la parte Hardware va bene e il contrasto del LCD anche.

Vorrei che qualcuno gentilmente, che conosce un po' questo micro e il linguaggio di programmazione Assembly, mi scriva un semplice programma che mi faccia comparire la scritta "HELLO WORLD" così da confrontarlo con il mio. Spero riuscirete a darmi una mano perché, è più di un mese che sono fermo con questo progetto XD


Inserisco qui due link:

- quello del microcontrollore AT90S4433

http://www.atmel.com/Images/doc1042.pdf

- quello del display LCD (SPLC780D)

http://www.hebeiltd.com.cn/lcm.datashee ... 80D_DS.pdf


Grazie mille in anticipo.


inserisco anche i collegamenti delle porte che ho effettuato:

- TUTTA LA PORTA D da D0-----D7 del micro l'ho collegata appunto a D0----D7 del LCD (quindi modalità a 8 bit)
- PORTB 2 del micro l'ho collegato all' ENABLE del LCD
- PORTB 4 del micro l'ho collegato all' RS del LCD
- PORTB 5 del micro l'ho collegato all' R/W del LCD

Grazie davvero !
Avatar utente
Foto UtenteMGtech
93 1 5
 
Messaggi: 44
Iscritto il: 25 feb 2013, 12:25

0
voti

[2] Re: Scritta su Display LCD 20X4 pilotato da un microcontroll

Messaggioda Foto Utentemrc » 2 mar 2013, 11:03

Ciao Foto UtenteMGtech benvenuto.

MGtech ha scritto:Vorrei che qualcuno gentilmente, che conosce un po' questo micro e il linguaggio di programmazione Assembly, mi scriva un semplice programma che mi faccia comparire la scritta "HELLO WORLD" così da confrontarlo con il mio.

Posta il tuo di programma ( usa i tag "code" in alto nella barra strumenti ), in questo modo qualcuno ti può dire quali errori presenta.
Facendo in questo modo faciliti le eventuali risposte. ;-)
Avatar utente
Foto Utentemrc
10,5k 6 11 13
Expert EY
Expert EY
 
Messaggi: 4023
Iscritto il: 16 apr 2009, 9:32

1
voti

[3] Re: Scritta su Display LCD 20X4 pilotato da un microcontroll

Messaggioda Foto UtentePaolino » 2 mar 2013, 14:19

Ho scritto un paio di articoli (prima parte e seconda parte) sul pilotaggio dei display alfanumerici. Benché siano per i PICMicro potresti magari prendere spunto.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[4] Re: Scritta su Display LCD 20X4 pilotato da un microcontroll

Messaggioda Foto Utentecyclone » 3 mar 2013, 13:38

MGtech,
ti allego il semplice codice ASM che ti ho scritto per pilotare il display e scrivere "Hello world" sul display 20x4.
Penso dovrebbe funzionare, purtroppo non mi ritrovo at90s4433....
Il display è connesso nella modalità 4 bit come potrai vedere nella parte inizializzazione LCD.
Il clock è settato a 2Mhz e i valori di ritardo sono calcolati tenendo conto di questo clock.

Mi sarebbe piaciuto vedere quello che avevi scritto tu :-P di sicuro .... ehm. comunque per sta volta
va bene così, ma chiarmente non è questa la strada per imparare a programmare ... eh?
La prossima volta prima di chiedere mostra quello che tu hai scritto e poi chiedi .... a buon intenditore poche parole :-) . Qui siamo disponibili ma non stupidi.

Codice: Seleziona tutto
;
.include   "C:\Cyclone\AVR\inc\4433DEF.INC"
;
      .DSEG      
      .CSEG
.ORG   0

_Reset:
      ldi      yl,Low(RAMEND)
      out      SPL,yl
      sbiw   yl,32
      rcall   LcdIni
      
;-------Posiziona il cursore su 1,1
      ldi      r24,0x7F
      push   r24
      ldi      zl,Low(1)
      pop      r24
      add      r24,zl
      rcall   _LCtr

;-------Punta a "Hello world"
      ldi      zl,Low(S000*2)
      ldi      zh,high(S000*2)
      rcall   _LSc

;-------End
L0000:
      rjmp   L0000

;-------Stringa puntata
S000:   .db   "Hello world", 0

;-------Inizializza Lcd
LcdIni:   in      zl,DDRD
      ori      zl,0xf0
      out      DDRD,zl
      sbi      DDRB,4
      sbi      DDRB,2
      cbi      PORTB,4
      cbi      PORTB,2
      ldi      zl,0x10
      rcall   _Wms
      ldi      r24,0x03
      rcall   _LOut
      ldi      zl,0x05
      rcall   _Wms
      rcall   _LEN
      ldi      zl,0x06
      rcall   _Wus
      rcall   _LEN
      cbi      PORTD,4
      rcall   _LEN
      ldi      r24,0x28
      rcall   _LCtr
      ldi      r24,0x06
      rcall   _LCtr
      ldi      r24,0x0c
      rcall   _LCtr
      ldi      r24,0x01
      rcall   _LCtr
      ldi      zl,0x03
      rcall   _Wms
      ret

_Lch:   sbi      PORTB,4
      rjmp   _LNib
_LCtr:   cbi      PORTB,4
_LNib:   mov      r21,r24
      Swap   r24
      rcall   _LOut
      mov      r24,r21
_LOut:   in      r23,PORTD
      andi   r23,0x0f
      Swap   r24
      andi   r24,0xf0
      Or      r24,r23
      out      PORTD,r24
      rcall   _LEN
      ret

;-------Lcd Enable
_LEN:   sbi      PORTB,2
      Nop
      Nop
      cbi      PORTB,2
      push   zl
      ldi      zl,0x04
      rcall   _Wus
      pop      zl
      ret

;-------Lcd constante stringa
_LSc:   lpm
      tst      r0
      breq   _LSc1
      mov      r24,r0
      rcall   _Lch
      adiw   zl,1
      rjmp   _LSc
_Lsc1:   ret

;-------Wait msec
_Wms:   ldi      r20,0x14
_Wms1:   ldi      r21,0x42
_Wms2:   dec      r21
      brne   _Wms2
      dec      r20
      brne   _Wms1
      dec      zl
      brne   _Wms
      ret

;-------Wait usec
_wus:   ldi      r22,12
_wus1:   dec      r22
      brne   _wus1
      dec      zl
      brne   _wus
      ret


Avatar utente
Foto Utentecyclone
86 2
New entry
New entry
 
Messaggi: 64
Iscritto il: 6 feb 2012, 11:38


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti