Hallo Zusammen Ich habe bei ebay ein Display ersteigert; http://www.ebay.de/itm/380801341244?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2648 Die pinbelegung auf der Ebayseite kann man direkt vergessen da sie nicht uebereinstimmt und ich finde kein datenblatt zum display. Ich hab dann aber von einem "Ählichen" display die pinnbelegung genommen und wenn ich einen reset auslöse kann ich einen streifen auf dem display sehen :D Datenblatt: http://www.gaw.ru/pdf/lcd/lcm/Varitronix/graf/MGLS240128TZ-04.pdf Ich weis nun nicht wie ich es ansteuere da ich so viele pins hab wo ich einfach nicht weis was ich damit mache wie zum beispiel WR, CD, CE etc. und vorallem in welcher reihenfolge ich welche Signale wo anlegen muss damit es mir was anzeiigt. muss ich es initialisieren? kann ich da direkt was drauftexten ? mfg Christian
Christian schrieb: > Die pinbelegung auf der Ebayseite kann man direkt vergessen da sie nicht > uebereinstimmt Woher weißt Du das, wenn Du die Pinbelegung des Displays doch gar nicht kennst? > Ich weis nun nicht wie ich es ansteuere da ich so viele pins hab wo ich > einfach nicht weis was ich damit mache Besorg Dir ein Datenblatt des Displaycontrollers. http://www.hantronix.com/files/data/1278473895lc7981.pdf Da steht drin, wie so etwas anzusteuern ist. Das ist übrigens ein komplett anderer Controller als der, der auf dem von Dir gefundenen Display verbaut ist.
Wie kommst du darauf das die Pinbelegung nicht stimmt ? Wieso meinst du das es das Datenblatt ist, welches du verlinkt hast ? Ohne richtigem Datenblatt wird das nix.
Christian schrieb: > Ich habe bei ebay ein Display ersteigert; > Ebay-Artikel Nr. 380801341244 > > Die pinbelegung auf der Ebayseite kann man direkt vergessen da sie nicht > uebereinstimmt und ich finde kein datenblatt zum display. Hast du mal deinen Verkäufer gefragt? Der verhökert das Teil nämlich regelmäßig auf Ebay.
Hallo Die Dokumentation zu dem Display kann man sich von der Varitronix Web Seite herunterladen: http://www.varitronix.com/product/index.php?option=com_content&view=article&id=38&Itemid=62&lang=en Ich hatte mal ein Display aus der Serie zum Laufen gebracht: http://wiki.u8glib.googlecode.com/hg/otherpic/varitronix_240x128_t6963.jpg Den Code habe ich der U8glib hinzugefügt: http://code.google.com/p/u8glib/ Grüße, Oliver
Rufus Τ. Firefly schrieb: > Woher weißt Du das, wenn Du die Pinbelegung des Displays doch gar nicht > kennst? weil das display 18 pins hat. die leitungen für die hintergrund beleuchtung sind an der seite herausgeführt und nicht auf den pins unten ich werde mal auf vatronix nachsehen ob ich was finden kann der verkäufer hat auch ein anderes display angegeben auf dem typenschild des displays steht TZ10 als endung der verkäufer gab Z05 an
also laut vatronix müsste das das datenblatt sein; http://www.varitronix.com/prod_pdf/MGLS240128TZ.pdf jetzt steht bei seite zwei unten bei den vier sternchen ; **** T6963C or equ. ist das jetzt der grafikcontroller ? bei den drei sternchen steht V0 ist NC wenn ein DC DC converter auf dem board ist. woher weis ich das denn jetzt o.O Das datenblatt ist j allgemein für TZxx aber was macht denn jetzt die endung 10 aus ?
Ich bekomme es einfach nicht zum laufen. Ich habe den code aus dem forum benutzt: http://www.mikrocontroller.net/attachment/highlight/70951 und ihn für den ATMEGA16 angepasst / porta für die daten benutzt:
1 | ;=============================================== |
2 | ;= Beschreibung - funktionert - fertig! = |
3 | ;=============================================== |
4 | ; Textmodus: singlemode (kein automatisches increment) |
5 | ; absolut minimierte Version |
6 | ; Steuerleitungen an Port B --> siehe Pinbelegung |
7 | ; Datenleitungen an Port D |
8 | |
9 | ;testprogramm zum ansprechen ein lcd-displays mit t6963c controller |
10 | ; Unterprogramme: |
11 | ; Init_GLCD |
12 | ; WriteCMD |
13 | ; WriteByte |
14 | ; StatusCheck |
15 | ; delay |
16 | |
17 | |
18 | .INCLUDE <m16def.inc> ; Controllertyp |
19 | |
20 | |
21 | .equ TXT_BASE = 0x0000 |
22 | .equ FONT_SIZE = 8 ; änderbar über FS-Pin am Display |
23 | |
24 | .equ SPALTEN = 240/FONT_SIZE |
25 | .equ TXT_ZEILEN = 128/8 |
26 | |
27 | ;=============================================== |
28 | ;= Pinbelegung Display (L = low-active) = |
29 | ;=============================================== |
30 | .equ wr = PB0 ; Data Write (L) |
31 | .equ rd = PB1 ; Read Data (L) |
32 | .equ ce = PB2 ; chip enable (L) |
33 | .equ cd = PB3 ; Command/Data (H/L) |
34 | .equ reset = PB4 ; Reset (L) |
35 | |
36 | ;=============================================== |
37 | ;= Registerverwendung = |
38 | ;=============================================== |
39 | .def temp1 = r16 |
40 | |
41 | .def daten = r21 |
42 | .def command= r22 |
43 | |
44 | |
45 | ;=============================================== |
46 | ;= Display-Kommandos = |
47 | ;=============================================== |
48 | .equ TXTHOME = $40 ; Set Text Home Adresse |
49 | .equ TXTAREA = $41 ; Set Text Area |
50 | .equ ADPSET = $24 ; Set Adress-Zeiger |
51 | .equ WRITEINC = $C0 ; Schreibt Daten und erhöht Adresszeiger um 1 |
52 | |
53 | .equ MODE_ATTR = 0b10000100 ; Display an - Mode TEXT-ATTRIBUT |
54 | .equ D_MODE_TXT = 0b10010111 ; Text an |
55 | .equ crusormode = 0b10100111 |
56 | |
57 | ; einzelne Bits des Statusbytes vom Display |
58 | .equ STA0 = 1 |
59 | .equ STA1 = 0 |
60 | |
61 | |
62 | |
63 | |
64 | .CSEG ; was nun folgt, gehört in den FLASH-Speicher |
65 | |
66 | ;=============================================== |
67 | ;= Start Adresse 0000 /Interruptvektoren = |
68 | ;=============================================== |
69 | .org 0x000 |
70 | rjmp Init ; Interruptvektoren überspringen |
71 | |
72 | ;=============================================== |
73 | ;= INITIALIZE = |
74 | ;=============================================== |
75 | |
76 | INIT: |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | ldi r16, LOW(RAMEND) |
83 | out SPL, r16 |
84 | ldi r16, HIGH(RAMEND) |
85 | out SPH, r16 |
86 | |
87 | |
88 | |
89 | |
90 | ser temp1 |
91 | out DDRB, temp1 ; gesamter (Steuer)Port als Ausgang |
92 | ldi temp1, 0b00011111 ; Steuerleitungen low-active, deshalb im Ruhezustand auf high |
93 | out PortB, temp1 |
94 | |
95 | ser temp1 |
96 | out DDRA, temp1 ; Datenport im Ruhezustand als Ausgang |
97 | out DDRD,temp1 |
98 | |
99 | |
100 | |
101 | |
102 | rcall Init_GLCD |
103 | |
104 | |
105 | ;************ adress pointer set ************** |
106 | ldi daten, 0 |
107 | rcall WriteByte |
108 | ldi daten, 0 |
109 | rcall WriteByte |
110 | ldi command, ADPSET |
111 | rcall WriteCMD |
112 | |
113 | |
114 | ;************ write Text 'FELIX' ************** |
115 | ldi daten, 0x26 ;F |
116 | rcall WriteByte |
117 | ldi command, WRITEINC ;Adresszeiger erhöhen |
118 | rcall WriteCMD |
119 | |
120 | ldi daten, 0x25 ;E |
121 | rcall WriteByte |
122 | ldi command, WRITEINC ;Adresszeiger erhöhen |
123 | rcall WriteCMD |
124 | |
125 | ldi daten, 0x2C ;L |
126 | rcall WriteByte |
127 | ldi command, WRITEINC ;Adresszeiger erhöhen |
128 | rcall WriteCMD |
129 | |
130 | ldi daten, 0x29 ;I |
131 | rcall WriteByte |
132 | ldi command, WRITEINC ;Adresszeiger erhöhen |
133 | rcall WriteCMD |
134 | |
135 | ldi daten, 0x38 ;X |
136 | rcall WriteByte |
137 | ldi command, WRITEINC ;Adresszeiger erhöhen |
138 | rcall WriteCMD |
139 | |
140 | |
141 | ;=============================================== |
142 | ;= Hauptschleife = |
143 | ;=============================================== |
144 | Hauptschleife: |
145 | |
146 | |
147 | |
148 | |
149 | |
150 | rjmp Hauptschleife |
151 | |
152 | |
153 | ;------------------------------------------------------ |
154 | ; Subroutinen / ISRs |
155 | ;------------------------------------------------------ |
156 | Init_GLCD: |
157 | ; Reset |
158 | cbi PortB,reset ; Reset auf L |
159 | rcall delay ; am anfang kurz warten |
160 | sbi PortB,reset ; Reset auf H |
161 | rcall delay |
162 | |
163 | |
164 | |
165 | ; text start adress set |
166 | ldi daten,low (TXT_BASE) |
167 | rcall WriteByte |
168 | ldi daten,high(TXT_BASE) |
169 | rcall WriteByte |
170 | ldi command, (TXTHOME) |
171 | rcall WriteCMD |
172 | |
173 | ; text area adress set |
174 | ldi daten, (SPALTEN) |
175 | rcall WriteByte |
176 | ldi daten, 0x00 |
177 | rcall WriteByte |
178 | ldi command, (TXTAREA) |
179 | rcall WriteCMD |
180 | |
181 | ; Text/Grafik mode set |
182 | ldi command, MODE_ATTR ; Textmodus, internal character gen. mode |
183 | rcall WriteCMD |
184 | |
185 | ; Text/Grafik mode set |
186 | ldi command, crusormode ; Textmodus, internal character gen. mode |
187 | rcall WriteCMD |
188 | |
189 | ; mode set |
190 | ldi command,D_MODE_TXT ; Text ON, Cursor OFF, Blink OFF |
191 | rcall WriteCMD |
192 | |
193 | ; rcall LCD_ClrTxt |
194 | ret |
195 | |
196 | ;******************************************** |
197 | ; Übergibt Befehl an Display (1 Byte) |
198 | ;******************************************** |
199 | WriteCMD: |
200 | rcall StatusCheck |
201 | out PORTA, command ; command ausgeben |
202 | |
203 | cbi PortB, CE ; übernahmeimpuls an steuerleitungen |
204 | cbi PortB, WR |
205 | nop |
206 | nop |
207 | nop |
208 | nop |
209 | sbi PortB, WR ; übernahmeimpuls an steuerleitungen |
210 | sbi PortB, CE |
211 | ret |
212 | |
213 | |
214 | ;********************************************* |
215 | ; Übergibt Daten an Display (1 Byte) |
216 | ;********************************************* |
217 | WriteByte: |
218 | rcall StatusCheck |
219 | out PortA, daten ; lowbyte ausgeben |
220 | |
221 | cbi PortB, CD |
222 | nop |
223 | nop |
224 | nop |
225 | |
226 | cbi PortB, CE ; übernahmeimpuls an steuerleitungen |
227 | cbi PortB, WR |
228 | nop |
229 | nop |
230 | nop |
231 | nop |
232 | sbi PortB, WR ; übernahmeimpuls an steuerleitungen |
233 | sbi PortB, CE |
234 | nop |
235 | nop |
236 | nop |
237 | sbi PortB, CD |
238 | ret |
239 | |
240 | |
241 | ;********************************************* |
242 | ; Liest Status vom Display |
243 | ;********************************************* |
244 | StatusCheck: |
245 | clr temp1 |
246 | out DDRA, temp1 ; Datenport als Eingang für Statusantwort des Displays |
247 | cbi PortB, CE ; Display enable |
248 | |
249 | _status_check_1: |
250 | cbi PortB, RD ; übernahmeimpuls an steuerleitungen |
251 | in temp1, PinA ; Daten vom Display kommend einlesen |
252 | sbi PortB, RD ; übernahmeimpuls an steuerleitungen |
253 | |
254 | sbi portd,2 |
255 | |
256 | |
257 | ; Leseanforderung beenden |
258 | andi temp1,(1<<STA0)+(1<<STA1) |
259 | cpi temp1,(1<<STA0)+(1<<STA1) ; Püfen ob Bits Bits STA0 und STA1 gesetzt sind |
260 | brne _status_check_1 ; warte auf sta0 und sta1 =1 |
261 | |
262 | cbi portd,2 |
263 | |
264 | sbi PortB, CE ; Display disable |
265 | ser temp1 ; Datenport als Ausgang |
266 | out DDRA, temp1 |
267 | ret |
268 | |
269 | |
270 | ;*************************************************************************** |
271 | ; Löscht Textbereich vom Display |
272 | ; Scratch-Reg: - |
273 | ;*************************************************************************** |
274 | LCD_ClrTxt: |
275 | ldi ZL,low (TXT_ZEILEN*SPALTEN) ; Berechnung der zu löschenden Speichergröße |
276 | ldi ZH,high(TXT_ZEILEN*SPALTEN) ; i = TXT_ZEILEN*SPALTEN |
277 | |
278 | ldi daten,low (TXT_BASE) ; Adresszeiger setzen |
279 | rcall WriteByte |
280 | ldi daten,high (TXT_BASE) |
281 | rcall WriteByte |
282 | ldi command, (ADPSET) |
283 | rcall WriteCMD |
284 | |
285 | _lcd_clr_txt_loop: ; löscht Textspeicher |
286 | clr daten |
287 | rcall WriteByte ; Null in Speicherzelle schreiben |
288 | ldi command, WRITEINC ; Adresszeiger erhöhen |
289 | rcall WriteCMD |
290 | subi ZL,1 ; i = i-1 |
291 | sbci ZH,0 |
292 | brcc _lcd_clr_txt_loop ; wenn i = 0 --> Speicher gelöscht |
293 | |
294 | ret |
295 | ;********************************************* |
296 | ; Wartezeit für Reset |
297 | ;********************************************* |
298 | delay: ; Einschaltverzögerung 5ms |
299 | push r16 |
300 | push r17 |
301 | |
302 | ldi r16,255 |
303 | ws1: |
304 | ldi r17,255 |
305 | ws2: |
306 | dec r17 |
307 | brne ws2 |
308 | dec r16 |
309 | brne ws1 |
310 | |
311 | pop r17 |
312 | pop r16 |
313 | ret |
314 | |
315 | ;------------------------------------------------------ |
316 | ; ENDE |
317 | ;------------------------------------------------------ |
318 | Ende: |
319 | rjmp Ende |
V0 habe ich auf masse gelegt. Wenn ich einen RESET auslöse ist ein einzelner 1 pixel breiter Strich auf dem display zu sehen, was für mich heist das das display noch funktioniert und masse an V0 als Displayspannung in ordnung ist. wenn ich V0 an -12V lege wird der strich zwar etwas deutlicher aber das wars auch. Bitte helft mir :( lg Christian
Ok für den nächsten der es braucht: TZ10 hat keinen internen DC/DC wandler Dh: V0 an ca -15 V Controller ist T6963C aus dem Beitrag kann man den code verwenden: Beitrag "LCD mit T6963C in ASM"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.