IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres architectures Assembleur Discussion :

[68HC11F1] ecriture d'un texte sur afficheur LCD


Sujet :

Autres architectures Assembleur

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 24
    Points : 21
    Points
    21
    Par défaut [68HC11F1] ecriture d'un texte sur afficheur LCD
    Bonjour,

    Je souhaiterais écrire un texte sur un afficheur LCD 40x4 pour apprendre à l'utiliser par exemple ("hello world" sur les 4 lignes), mais j'ignore totalement comment m'y prendre et je dois avouer que les recherches que j'ai faites sur le web ne m'ont pas trop aidé.

    pouvez-vous m'aider s'il vous plait?
    merci d'avance

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Hello,

    Sans les spécifications techniques de ton afficheur, on ne peut te donner aucune indication valide.

    A++

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 24
    Points : 21
    Points
    21
    Par défaut
    Hello

    Sans les spécifications techniques de ton afficheur, on ne peut te donner aucune indication valide
    Je n'ai aucune documentation sur lui, en l'examinant j'ai pu comprendre qu'il a 4 lignes et chaque ligne peut contenir 40 caractères, il a 16 entrées à gauche et à droite il en a 4 avec deux ou c'est mentionné "K" et "A" je suppose que c'est pour le rétroéclairage mais je ne suis pas sur

    merci d'avance

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 370
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 370
    Points : 23 625
    Points
    23 625
    Par défaut
    Tu peux faire une photo ? Spécialement d'un endroit où il y a des inscriptions ?

  5. #5
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    google => crystalfontz.

    un afficheur LCD mode caractères peut tout aussi bien se brancher sur un port parallèle de PC, crystalfontz fournis un logiciel pour les tester.

    sinon, j'ai aussi un bout de code assembleur X86 qui ecrit sur les 4 lignes, mais mon afficheur ne fait que 16 de large. globalement, c'est pareil.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
     
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            org 100h
            call int9.new
            call int8.new
            mov si,message.2
            call strout
    main:
     
            call lcd.init
            mov si,message
            call lcd.refresh
            cmp byte[key+key.espace],0
            jne @f
            jmp main
    @@:
            call int8.old
            call int9.old
            mov ax,3
            int 10h
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    strout: ;output string on DOS stdout.
            mov cx,32
            mov ah,2
    @@:
            mov dl,[si]
            inc si
            int 21h
            loop @b
            ret
    ;;;;;;;;;;; ;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;
    ;16 apparent chars, 24 virtual chars
    ;frame:  rb 16*4+
     
    message:
    .0:     db 'lcddrv.asm      ' ; xxxxxxxxxxxxxxxx
    .1:     db 'test TEST(){}[]$' ;                                        xxxxxxxxxxxxxxxx
    .2:     db 'hit space bar to' ;                 xxxxxxxxxxxxxxx
    .3:     db ' quit...........' ;                                                        xxxxxxxxxxxxxxxx
    .pad:   db '        '         ;                                xxxxxxxx                                xxxxxxxx
    .end:
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;---------------------------------------------------------------------------------
    ;LPT connection
    ;pin 1 = E = .ctrl bit0, 1 inverted
    ;pin 14 = R/W = .ctrl bit1, 2 inverted
    ;pin 16 = RS = .ctrl bit2, 4
    ;pins 2 to 9 = data = .data
    ;
    ;LCD connection
    ;pin 1 = gnd
    ;pin 2 = +5V
    ;pin 3 = contrast
    ;pin 4 = Register Select
    ;pin 5 = Read /Write
    ;pin 6 = Enable
    ;pins 7 to 14 = data
    ;---------------------------------------------------------------------------------
    macro delay .t
    {
            mov ecx,.t
    local .a
    .a:
            dec ecx
            jne .a
    }
    delaylong:
     
            delay 500'000
            ret
    delayshort:
            delay 7'000
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    lcd:
    .lpt=378h
    .data=.lpt+0
    .stat=.lpt+1
    .ctrl=.lpt+2
    .e=1
    .rw=2
    .rs=4
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .refresh:
            push ax bx si
            xor bx,bx
    @@:
            mov ah,[si+bx]
            call .putc
            inc bx
            cmp bx,10h;message.1
            jne @b
            mov bx,20h;message.2
    @@:
            mov ah,[si+bx]
            call .putc
            inc bx
            cmp bx,30h;message.3
            jne @b
            mov bx,40h;message.pad
    @@:
            mov ah,[si+bx]
            call .putc
            inc bx
            cmp bx,48h;message.end
            jne @b
            mov bx,10h;message.1
    @@:
            mov ah,[si+bx]
            call .putc
            inc bx
            cmp bx,20h;message.2
            jne @b
            mov bx,30h;message.3
    @@:
            mov ah,[si+bx]
            call .putc
            inc bx
            cmp bx,48h;message.end
            jne @b
            pop si bx ax
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .putc:
            push eax ebx ecx edx
            call .writedatacheck
            pop edx ecx ebx eax
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .init:
            mov ah,38h        ;function set
            call .writeinstnocheck
            call delaylong
            mov ah,38h        ;function set
            call .writeinstnocheck
            call delaylong
     
            mov ah,0ch        ;display on
            call .writeinstcheck
            call delaylong
     
            call .clear
     
            mov ah,6          ;entry mode set
            call .writeinstcheck
            call delaylong
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .p1:
            mov dx,.data
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .p2:
            mov dx,.stat
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .p3:
            mov dx,.ctrl
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .clear:
            mov ah,1
            call .writeinstcheck
            call delayshort
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .writedatacheck:
            call .busycheck
    .writedatanocheck:
            call .dr
            call .send
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .writeinstcheck:
            call .busycheck
    .writeinstnocheck:
            call .ir
            call .send
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .send:
            call .wr
            call .en
            call .p1
            mov al,ah
            out dx,al
            call delayshort
            call .dis
            call .p1
            mov al,0ffh
            out dx,al
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .busycheck:
            call .ir
            call .rd
            call .en
            call .busy
            call .dis
            ret
    .busy:
            call .p1
    @@:
            in al,dx
            and al,80h
            je @b
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .dr:
    ;.datareg:
            call .p3
            in al,dx
            or al,.rs
            out dx,al
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .ir:
    ;.instreg:
            call .p3
            in al,dx
            and al,not .rs
            out dx,al
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .dis:
    ;.disable:
            call .p3
            in al,dx
            or al,.e
            out dx,al
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .en:
    ;.enable:
            call .p3
            in al,dx
            and al,not .e
            out dx,al
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .wr:
    ;.write:
            call .p3
            in al,dx
            or al,.rw
            out dx,al
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    .rd:
    ;.read:
            call .p3
            in al,dx
            and al,not .rw
            out dx,al
            ret
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    include 'int9/int9.inc'
    include 'int8/int8.inc'
    et le retroeclairage est effectivement sur AK, ne pas hesiter à ajouter une resistance en serie justement, parce que sinon, la diode chauffe pas mal, et la consommation est pas mal non plus sans cette résistance.

    et maintenant, au boulot.

Discussions similaires

  1. Scroller un texte sur un écran LCD
    Par LDami dans le forum Arduino
    Réponses: 14
    Dernier message: 02/07/2015, 10h01
  2. programmer un afficheur LCD sur PIC
    Par ziko132 dans le forum Autres architectures
    Réponses: 1
    Dernier message: 25/11/2012, 10h15
  3. [68HC11F1] ecriture du programme assembleur sur le microcontroleur
    Par Need you dans le forum Autres architectures
    Réponses: 2
    Dernier message: 18/04/2012, 11h42
  4. clignoter texte sur LCD
    Par nikita_sophie dans le forum Débuter
    Réponses: 12
    Dernier message: 11/09/2008, 18h08
  5. menu sur afficheur LCD
    Par nikita_sophie dans le forum Débuter
    Réponses: 5
    Dernier message: 20/08/2008, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo