Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Afficheur lcd
JMarc
Passioné
Passioné
Messages : 486
Enregistré en : août 2016
Localisation : Dans le Sud...

#1 Message par JMarc » dim. 9 juil. 2017 15:28

Bonjour à tous

Suite à l'achat d'un afficheur lcd Ecran LCD Anag Vision AV1640BNBW-WJ dont voici la doc http://www.produktinfo.conrad.com/datenblaetter/175000-199999/181656-da-01-en-LCD_MOD_STN_BLAU_NEG_LED_WEISS_16X4.pdf , j'ai quelques menu problèmes avec la doc en anglais

Le principe d'initialisation avant d'attaquer le code Sam est elle correcte ?


Image

Afficheur lcd
JMarc
Passioné
Passioné
Messages : 486
Enregistré en : août 2016
Localisation : Dans le Sud...

#2 Message par JMarc » dim. 9 juil. 2017 18:15

si cela est bon j'ai pensé a cela comme code :sifflotte:


Code : Tout sélectionner


LCD_INIT
    rcall   Wait15ms
    rcall   Wait15ms
    
    MOVLW    B
'00110000'    
    movwf   PORTD       
; data du LCD 8 bits
    rcall   Wait5µs
    bsf        PORTC
,0     ; bit Enable signal
    rcall   Wait5µs
    bcf        PORTC
,0
    nop
    
    MOVLW    B
'00110000'    
    movwf   PORTD
    rcall   Wait100µs
    nop
    bsf        PORTC
,0
    rcall   Wait5µs
    bcf        PORTC
,0
    nop
     
    MOVLW    B
'00110000'    
    movwf   PORTD
    rcall   Wait50µs
    nop
    bsf        PORTC
,0
    rcall   Wait5µs
    bcf        PORTC
,0
    nop  
 
;******************************
    MOVLW    B'00110000'    
    movwf   PORTD
    rcall   Wait50µs
    nop
    bsf        PORTC
,0
    rcall   Wait5µs
    bcf        PORTC
,0
    nop
    
    MOVLW    B
'00001000'    ;    display off
    movwf   PORTD
    rcall   Wait50µs
    nop
    bsf        PORTC
,0
    rcall   Wait5µs
    bcf        PORTC
,0
    nop  
    
    MOVLW    B
'00000001'    ; display clear
    movwf   PORTD
    rcall   Wait50µs
    nop
    bsf        PORTC
,0
    rcall   Wait5µs
    bcf        PORTC
,0
    nop
    
    
    MOVLW    B
'00000100'    ; entry mode set
    movwf   PORTD
    rcall   Wait50µs
    nop
    bsf        PORTC
,0
    rcall   Wait5µs
    bcf        PORTC
,0
    nop 
    
 
    MOVLW    B
'00001111'    ;    display on
    movwf   PORTD
    rcall   Wait50µs
    nop
    bsf        PORTC
,0
    rcall   Wait5µs
    bcf        PORTC
,0
    nop 
    
    RETURN

Afficheur lcd
Temps-x
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 813
Enregistré en : juillet 2016
Localisation : Terre

#3 Message par Temps-x » dim. 9 juil. 2017 18:54

Bonjour JMarc, et bonjour à tous,

Bonne résolution d'avoir ouvert se post, déja plusieurs chose à te dire :

Code : Tout sélectionner



;*************************************** Assignations ***************************************** 
; ------------------ a changer en fonction des ports utilisés ----------------------------- 

#DEFINE        lcd_rs                 PORTB,4             ; RB4  ==>  RS  
#DEFINE        lcd_e                  PORTB,5             ; RB5  ==>  E
#DEFINE        lcd_port               PORTA               ; RA0 à RA7   

; Les assignations, ça permets pour tous le monde de prendre les ports qu'ils veulent
: et évite de réécrire un programme.

    bsf        PORTC,0
    rcall   Wait5µs
    bcf        PORTC,0
    rcall   Wait5µs

;----------------------- tu crois pas que c'
est mieux comme cela -------------------------- 

;--------------------- toutes les sorties à zéro -------------------------
      clrf lcd_port                    
      clrf lcd_e 
      clrf lcd_r
;------------------------ pour un quartz à 4 Mhz ------------------------

    rcall  _200mS                                  ; paulfjujo nous conseille d'augmenter la pause, on l'écoute, car il à plus 
                                                   
; d'expérience que toi et moi   
    MOVLW    B'
00110000'    
    movwf   PORTD       ; data du LCD 8 bits

    rcall e_pulse

re
    goto re

;************************** envoie une fin d’émission sur le lcd ***************************** 
e_pulse
      nop
      nop
      nop
      bsf lcd_e
      nop
      nop
      nop
      bcf lcd_e

      return

;********************************** pause de 200 millisecondes ******************************** 
_200mS 
      movlw D'
63'
      movwf loop1

      movlw D'
157'
      movwf loop2

      decfsz loop1,F
      goto $+D'
2'
      decfsz loop2,F
      goto $-D'
3'

      return

Modifié en dernier par Temps-x le lun. 10 juil. 2017 01:08, modifié 2 fois.
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

Afficheur lcd
JMarc
Passioné
Passioné
Messages : 486
Enregistré en : août 2016
Localisation : Dans le Sud...

#4 Message par JMarc » dim. 9 juil. 2017 19:41

Bonjour Temps-x

Assignation changé, pause augmenté, tempo e_pulse modifié car je suis a 20 mhz

Code : Tout sélectionner

e_pulse
      nop
      rcall Wait50µs
      bsf   lcd_e
      rcall Wait5µs
      bcf   lcd_e
      return


mais toujours eteint :cry:

Car nous avons la que l'initialisation.

Je pense qu'après il faut écrire la donné dans write data en mettant RS a 1, faire la tempo mais après je ne sais pas :cry:

Fallait il aussi entrer une adresse ?

J'ai essayé plein de façon mais rien. L'allumage de l'écran avec le bit a 0 ou bien à 1?

Dans la doc ils parlent du fosc 270 khz. C'est en rapport avec mon Quartz de 20 mhz ?

Afficheur lcd
Temps-x
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 813
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » lun. 10 juil. 2017 01:04

Bonsoir Jmarc,

Ben tu vois, quand on prends des choses toutes faites, après on sait pu comment faire, tu as eu de la chance
d'avoir un exemple tous fait, quand tu avais essayé avec ton écran LCD 16 * 2.

Pour le quartz tu as pris un 20 Mhz, Ok, mais pour le pic (la pic) :lol: tu travailles avec un 16F ou 18F, car la façon de faire
les temps sont différent entre un 16F est un 18F.

D'autre par, je voudrais savoir comment tu as branché ton LCD, car un mauvais réglage du contraste, et tes lettres
n'apparaisse pas.

:+1: pour l'organigramme
Quand la souris nargue le chat, c'est que son trou n'est pas loin.

Afficheur lcd
JMarc
Passioné
Passioné
Messages : 486
Enregistré en : août 2016
Localisation : Dans le Sud...

#6 Message par JMarc » lun. 10 juil. 2017 07:05

Bonjour temps-x


C'est bien vrai que j'ai eu de la chance avec le premier lcd mais je ne comprend pas leurs doc en anglais alors que c'est si simple avec un exemple :mur:

Branchement du contraste avec un potar de 10khoms sur le +5 volt et gnd. Vr étant relié à v0.
Si j'agis sur le potar, il y a réaction du lcd

Les 8 bits de portD reliés à lcd 7 à 14

Bit 0 de port C sur E (6) du lcd
Bit 1 de portC sur rs (4) du lcd

15 et 16 du lcd ne sont pas branchés

Les trisC et trisD déclarés en sorties

Quelle est la différence entre le 16f et le 18f pour notre afficheur ?

Pour le fosc, dois-je faire 20 000/270 = 74
40x74= 2962 soit 3 ms ?

Ou 250/20 000 = 0,0125
40x0,0125=0,5 soit 0,5 us ?

Afficheur lcd
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1011
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#7 Message par paulfjujo » lun. 10 juil. 2017 16:00

bonsoir
.. mais pour le pic (la pic) :lol: tu travailles avec un 16F ou 18F, car la façon de faire
les temps sont différent entre un 16F est un 18F.


Oui, en particulier utiliser LATx au lieu de PORTx si c'est un 18F
Ne pas megoter sur les tempos mettre 100µS ou plus ...entre les phases de l'init .

Question:
Si tu utilise le LCD en 8 bits , cela suppose que tu vas gerer le bit BUSY du LCD ?

sinon , passe en mode 4 bits ... et R/W du LCD toujours relié au Gnd.

Afficheur lcd
JMarc
Passioné
Passioné
Messages : 486
Enregistré en : août 2016
Localisation : Dans le Sud...

#8 Message par JMarc » lun. 10 juil. 2017 18:34

Bonjour Paulfjujo

Voilà j'ai changé portx en latx mais c'est pareil

R/w est direct au gnd, j'ai choisi 8 bits pour faire au plus facile pour le début

J'ai augmenté les tempos lors des essais pour atteindre jusqu'à 1 seconde

J'ai changé plusieurs fois display on off control

Mis à 1 enable et envoie de B'01010000' qui devrait correspondre à la lettre P

J'ai de l'activité sur les pins mais l'afficheur reste éteint

J'ai trouvé cette doc un peu différente http://www.dst-gmbh.de/anagvision-pictures/install-avm.pdf

Afficheur lcd
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 1011
Âge : 67
Enregistré en : juillet 2015
Localisation : 01120
Contact :

#9 Message par paulfjujo » lun. 10 juil. 2017 19:34

si on regarde le chronogramme

la pulse Enable doit encadrer l'envoi de data
E=1
Envoi Data sur le port D
E=0


attention
FUNCTION SET [INTERFACE IS 8 BITS LONG. 0011NF**
il faut renseigner les bits N et F !

le mode 8 bits suppose que tu DOIS gerer et tester le bit BUSY , et donc gerer la commande R/W !
ce qui n'est pas le cas en mode 4 bits

un peu d'inspiration ICI

Afficheur lcd
JMarc
Passioné
Passioné
Messages : 486
Enregistré en : août 2016
Localisation : Dans le Sud...

#10 Message par JMarc » lun. 10 juil. 2017 21:50

Merci Paulfjujo et temps-x

Passage en 4 bits et cela fonctionne :bravo: Merci !


Bien le lien sur les lcd, je regarde demain

Je met de l'ordre dans le code et je le poste sur le forum


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités