Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur > Autres architectures
Autres architectures Toutes les autres architectures (PIC, MIPS, ARM, 68K, Z80...) et leurs outils
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/05/2012, 09h19   #1
Need you
Invité régulier
 
Homme
Développeur informatique
Inscription : 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 : 6
Points : 6
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
Need you est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2012, 12h13   #2
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 614
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 614
Points : 11 093
Points : 11 093
Hello,

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

A++
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/05/2012, 21h02   #3
Need you
Invité régulier
 
Homme
Développeur informatique
Inscription : 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 : 6
Points : 6
Hello

Citation:
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
Need you est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2012, 21h38   #4
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 614
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 36
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 614
Points : 11 093
Points : 11 093
Tu peux faire une photo ? Spécialement d'un endroit où il y a des inscriptions ?
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2012, 22h10   #5
edfed
Membre chevronné
 
Avatar de edfed
 
être humain
Inscription : décembre 2007
Messages : 471
Détails du profil
Informations professionnelles :
Activité : être humain

Informations forums :
Inscription : décembre 2007
Messages : 471
Points : 619
Points : 619
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 :
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.
__________________
http://www.pending.me.uk/nmc/bla_1356091200.png
Vivement 21/12/2012
edfed est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 19h41.


 
 
 
 
Partenaires

Hébergement Web