Hallo L2F50 user, es gibt ein update für das L2F50 Display auf der Web Seite. Ein byte in der init-sequence war falsch....
Hallo Mark de Jong, was machen eigentlich deine Platinen? Deine Homepage http://www.mdejong.de/ ist für mich leider nicht mehr nutzbar dar man einen flash-plugin benötigt :-(
Hallo! Habe meine Platine ist auch schon fertig! Wenn Ihr wollt veröffentliche ich das brd file. Bild gibt im anhang. KennyOswald
Hallo KennyOswald Schaut ja super toll aus. Wirst Du die professionell anfertigen lassen? Wenn möglich würde ich gerne 1 bis 2 Stück mitbestellen. LG Michael
Hallo Michael! Zur Zeit noch nicht, aber ist geplannt. Vorerst werde ich mir eine Platine zum testen fertigen lassen. Man weiss nie, ob ich nicht irgendwo noch einen fehler habe. Sammelbestellungen mach ich sehr ungern, da tauchen immer probleme auf. Die kosten nur für die Platine betragen nur 5 (www.olimex.com). Der Rest ca. 10. KennyOswald
Hallo KennyOswald Ich würde mir gerne 2 mitbestellen. Wenn Du möchtest überweise ich Dir den Betrag gerne vor der Bestellung bei Olimex. LG Michael rubitschka at hotmail dot com
Hallo Michael! Meinen Auftrag habe ich schon letzte Woche losgeschickt. Das einzige was ich Dir schicken kann, sind die brd files. mfg KennyOswald
Hallo Kenny, super! Das ist ja toll :). Die 3D-Ansicht gibt schon war her, und der PIC sowieso :). Soweit ich weiß bietet Olimex Nachbestellungen an. Dazu ist dann nicht mal das File zu schicken, die brauchen nur die original Auftragnummer oder Layout-nummer - und ich denke mit Einverständnis des Urhebers - kann dann jeder der will dort bestellen und direkt mit OLIMEX das abwickeln. Ich würde beispielsweise gleich das LPC2148 Board dazunehmen :). Und ja, bitte kannst Du die Files online stellen, danke! Mario
Sorry für die Verspätung! War im Urlaub. mfg KennyOswald
Hallo Kenny, die 5V Block-Kondensatoren (10µF/2.2µF) scheinen mir ein wenig schwach zu sein. Da brauchst du eine niederohmige 5V Versorgung. Ausserdem ist der ESR üblicher ALU-Kaps (die hast du zumindest eingezeichntet im 3D) grottenschlecht. Können bei 10µF locker 3 Ohm sein. Beim LED Backlight können immerhin Ströme deutlich grösser als 100mA getacktet mit 60kHz fliessen. (z.B. 3 Ohm ESR, 150mA -> 450mV Störspannung auf der Versorgung) Ich würde den Praxis-Test abwarten, und mir die Versorgung genau angucken. Für grössere Stückzahlen bzw. nachbausicher würde ich das ändern und/oder Kap's mit niedrigeren ESR wählen.
Hallo SuperUser! Quote: Ich würde den Praxis-Test abwarten, und mir die Versorgung genau angucken. Gut werde ich machen. Bei dem IRU1205-30 habe ich mich erst mal am Referenz Design vom Datenblatt gehalten. Später wenn ich die Boards von Olimex bekomme, werde ich das noch mal überprüfen. In meiner Schaltung ist noch noch eine +5V Spannungsregler drin. ~9V || 2200µF || 330nF < 7805 > 10µF || 100nF || +5V Für die Verbesserungsvorschläge bin ich dankbar! Hint: Mein Design basiert auf einem CoreBoard (www.ucapps.de) und 8 Companion Boards, für jeweils ein S65. Die Kommunication zwischen den Boards erfolgt 400kHz Soft IIC Bus, später mit 1Mhz. USB wird später für Standalone am PC benutzt. mfg KennyOswald
Hallo ThJoedi, wie schauts aus mit den PDFs hast du schon etwas rausgefunden, welcher Controller es ist?
oops es geht natuerlich um das Sharp Display
Hab das PDF wiedermal auf den neusten Stand gebracht. Gruß Lightning
Ich bin grad nicht auf den neusten Stand: Was genau kann man denn mit dieser tollen platine machen? Bzw, was vereinfacht die?
Hi Leute! Tolle Arbeit! Bin gerade dabei mich auch mit dem Display zu beschäftigen. Habe ein L2F50 und es funktioniert super. @Spider84: Could you please post your code? I would like to see how you did get the text to be displayed in 90° orientation. I also use the L2F50 but I didn't get this to work. How'S your library doing? Are you making any progress? @all: Ich frage jetzt nach einem Monat nochmal nach ob schon irgendwer die Library für L2F50 umgeschrieben hat? Wenn ich in Assembler mehr Durchblick hätte würde ich es selbst versuchen. mfg Fasti
@Christian: At first thx for English :) I'll find and release all my code. void put_char_90(uint8_t x, uint8_t y, char c) { uint8_t h,ch,p,mask,he; LCD_Enable(); // select display lcd_cmd(SD_CSET); lcd_dat0(0x08+y); // start is 8, not 0 lcd_dat0(0x01); lcd_dat0(0x08+y+CHAR_H-1); // end is 00x8B = 0x83+8 lcd_dat0(0x01); lcd_cmd(SD_PSET); lcd_dat0(x); if (x < DISP_H-CHAR_W) { he=CHAR_W; lcd_dat0(x+CHAR_W-1); } else { he=DISP_H-x; lcd_dat0(DISP_H-1); } lcd_cmd(RAMWR); mask=0x80; for (h=0; h<he; h++){ for (p=0; p<CHAR_H; p++){ ch=pgm_read_byte(&ascii_tab[ c-32 ][p]); if (ch&mask){ lcd_dat16(textcolor); } else { lcd_dat16(backcolor); } } mask=mask>>1; } LCD_Disable(); } Now I work on Siemens x70 displays. This LCD look like c65's display.
Did anybody tried to connect LS020 display to 3.3V instead of 2.9V?
Yes, it runs on 3.3V without Problems have anyone find the datasheet of the LS020 display??
Some body know how to cncrement LCD contrast? I tried to use Sharp LCD, but picture very light. :(
Hi! Sorry I can't help you with your contrast problem but I have another question for you. Are the displays from the newer x75 series the same displays as the old ones or are they compatible? If the x65 Displays get outdated and its then hard to get them, the x75 displays should be still available. When there isn't a great difference, could you post how to communicate with them? Does anybody try to get the library working for the other Displaytypes? I tried but till now with no success. greetings Fasti
Hi Spider84, it think that the displays have an automatic contrast control. I had once a light contrast also, but found that the supply voltage was much too high. After correcting the voltage to the nominal level contrast was o.k. again.... I've no other idea how to control the contrast
My friend works in the GSM warranty center. And he has many various phones. I have taken from it devices with different displays and make diferent combinations of pone+lcd. ALL WORK! ALL Displays has ONE cmd line! I'll say more. All Siemes x65 phones can control display contrast (by service tool) from 0 to 255. I make LCD Emulator based on PIC18F252 and connect it to phone. I has tried to record commands prom phone to LCD. And I make it! Now it look like all commands to LCD has 16bit. For Eample: CS = 0; RS = 1; PutWord(CMD); RS = 0; PutData(....); CS = 1; Phone work with LCD on 10Mhz and I can't monitor all data from phone :( My PIC has only 1500 bytes of RAM and it is to small. I tried to put out data to PC by UART on 115200 (my PC can't more) but it is to slow VS 10Mhz on SPI. And now i monitor only COMMANDS (when RS = 1). And 10Mhz to high speed and PIC make many errors when recive data (3 measurmen and 3 diferent data packet :) ) Now I get IDA and FullFlash from cx65 phone and disassm it. I try to find code work with display. Some body know ARM? Sorry fo my English. (I native lang is Russian)
@Spider84: The good news are not shadowed by language mistakes ! don't worry. All no native speakers make more or less some mistakes with english or with german (me !). Have you tried to connect an external SRAM to that PIC so you have more space ? Which phones and LCD combinations have you tried ? (Model and/or Part numbers) The commands to turn-off the display or to put them in stand-by and not known, that method is excellent to get them, may be you can capture them. What you refer to when you say that the PIC make errors ? in the SPI communication ? or via RS-232 with the PC ? (Sorry but my russian is even worst than my german :-((( ) By the way, very good work ! Ale
I have't external SRAM :( But I'll think about this... I tried "play" with cx65, m65, s65 and with LCD from Sharp and Epson (orange back). In all combinations. All work fine. (but different contrast). I think that errors makes in SPI bus. But wires length beetwen PIC and phone not more then 3 cm.
@Spider84: The errors seem to come from the "low" frequency at which the PIC SPI can work. I read that the phones communicate at 13 MHz with the display. Have you measured 10 MHz on that bus ?, that part you are using (PIC18F252) when clocked at 40 MHz, allows a maximum reception frequency (SPI SLAVE) of 10 MHz, may be can be overclocked !? (At 50/55MHz for instance ?). Can you post some of the commands you found ? Have you checked this page (is in english) http://www.superkranz.de/christian/S65_Display/DisplayProgramming.html
I measured 10MHz by "oscilograph" (I don't know how this device called on English) on CKL wire. ALL Phones work with LCD on 10Mhz. I don't know where author get info about 13 MHz, but it is wrong. I will try to owerclock. any way I have ATMega8/16 and I can try to make LCD Emulator on this MCs. All of my research on work. I'll post all codes when come to work, no I'am at home. Yes. A I read this page many times. All information on this pages are diferent with my research.
Hi Spider, perhaps you should calibrate your oscilloscope. 13MHz is for sure the clock frequency in the S65 phone.
@Spider84: The clock frequency can be easily measured. You can use the PIC to generate a 10MHz signal to use as a reference to check the clock freq. Can you try to reproduce the commands you capture, I mean you turn on the phone and some commands are sent. You turn off the phone you turn on the phone again and the some commands should be sent. If that match, quite probably the commands are right. I will get this week per post my own display, so I'll test them all ! Regards, Ale
Hi! Habe versucht das Programm von Fabian Thiele zu compilieren (AVR-GCC 3.4.5) bekomme jedoch immer die Fehlermeldung: s65LcdTest.c:47: warning: passing arg 1 of `fdevopen' from incompatible pointer type Weiss einer Rat? Woran liegt das. Vielen Dank im Voraus ciao Fasti
Du kannst es ignorieren. Es ist kein Fehler, es ist nur ein Warnung. Das proto von put und get sind nicht gleich wie fdevopen erwartet. Wenn die beide Pointer haben die gleiche Lange (z.B. 2 byte), du kannst es ignorieren. Aber das gute es was ich habe gesagt.
Hello LUPIN, Sorry but I don´t speak german :-( I have the PCB ARM LPC2106 and I´ll try work my LCD Hitachi HD66766. I can use the 3V3 in VCC? In your rotine DISP.C have #include "disp.h" can you send it? I used MSP430F1232 and 8051 with nokia 6110 and 3110 http://tuta.sites.uol.com.br Sorry my English, Regards.
Hallo! Ich wollte mich auf diesem Wege nochmals bei Christian Kranz bedanken für die großartige Arbeit. Ein L2F50 verziert zur Zeit gerade ein Projekt von mir und das Display hat vieles erleichtert. Werde demnächst mal ein LS020 probieren wegen der Library :-) Also nochmal besten Dank ciao Fasi PS: In English: Is there a big difference between the S65 and S75 Display in means of programming? spider84 did you succeed in controlling a x75 Display?
wegen der library: Wie Hagen schon (ganz) weit oben angemerkt hat, funktioniert das Linien-Zeichnen nicht mit allen Winkeln. Denn dafür wurden im Original Addressierungsmodi genutzt, die das LS020 nicht bietet. Im Moment habe ich keine Zeit/Lust das zu reparieren (in meiner Anwendung stört es nämlich auch nicht). Vielleicht hat ja jemand Zeit/Lust sich das mal vorzunehmen...
Moin moin, ich spiele gerade mal ein bissl mit dem LS020 rum. Dabei ist mir aufgefallen, dass die Beschreibung von Superkranz nicht ganz korrekt bzw. unvollständig ist. Ich würde die Komandos anders beschreiben. Wie es aussieht dient das Komando 0xef90 immer zum einleiten einer Parameterübergabe (funtioniert aber auch ohne). Darauf folgt die Parameternummer (oberen 8Bit) und der Parameterwert (unteren 8Bit). Parameternr. 0x05 - Orientierung 0x06 - Pixel Schreibposition X 0x07 - Pixel Schreibposition Y 0x08 - Arbeitsbereich Start X 0x09 - Arbeitsbereich End X 0x0a - Arbeitsbereich Start Y 0x0b - Arbeitsbereich End Y - Dabei setzt der Parameter 0x08 auch den Parameter 0x06 und der Parameter 0x09 den Parameter 0x07. Diese Parameter müssen nicht alle zusammen gesetzt werden, z.B. brauch der Parameter 0x05 nicht immer gesetzt werden. - Ich ändere den Status der CS-Leitung nicht vor bzw. nach jedem zu sendenden Byte. Dabei Komandos bzw. Parameter können nicht abwechselnd mit Daten gesendet werden. Komandos können nur nach der H->L Flanke der CS Leitung gesendet werden. Wird dananch RS auf Daten gesetzt werden vom Display anschließend keine Komandos mehr angenommen. Daraus folgt, das die "clrscr" Routine (im Semplecode für das LS020 Display) von Christian nicht ohne Einschränkungen funktioniert. Es sollten in dieser Routine auch die Parameter 0x08 bis 0x0b gesetzt werden, da sonst unter Umständen nur ein Teil des Displays gelöscht wird. Kann dieses jemand bestätigen oder widerlegen? Hat schon jemand herausgefunden, wie man die Kontrast einstellt?
Hallo, hab mir vor kurzem bei pid handy fit ebay ein ls020 besorgt und über spi an einen mega8 mit 8mhz takt rangehängt. Ich habe das display mit der auf christian k's page (großes lob für das tolle reverse-engineering) beschriebenen init zum laufen gebracht, habe aber folgende probleme: Display lässt sich wie angegeben schreiben, nimmt die pixeldaten jedoch statt im rgb 5,6,5 nur im rgb 2,4,2 format. der kontrast ist sehr schlecht, je mehr aktive pixel, desto schlechter. d.h. ein drittel schwarz und der rest weiß sieht gut aus, füllt man das ganze display mit schwarz entsteht hellgrau. (muss wohl am voltage-generator fürs lcd oder dessen einstellung liegen) vielleicht hat jemand eine ähnliche erfahrung gemacht oder weiß wie man die init modifizieren muss um vor allem den kontrast in den griff zu bekommen.
@Stefan: Wenn du den Example-Code für den Atmega8 nutzt, musst du beachten, dass dort die ASCII-Tabelle nicht ins RAM passt. D.h. du musst sie ins PROGMEM auslagern. Ansonsten hatte ich solche Probleme noch nicht mit dem LS020 (habe fünf Stück im Betrieb, alle mit sehr gutem Kontrast). Überprüf auch mal die Versorgungsspannung. Ich hatte mal versehentlich >4V angeschlossen, da wurde der Kontrast auch schlecht.
@superuser hab die betriebsspannung leicht nach oben und unten variiert (ca 0,3V) hat aber keinen erfolg gebracht. Vielleicht liegts auch am display obwohl ich mir das nicht vorstellen kann. Wo hast du deine displays bestellt un wieviel hast du gezahlt ?
Hallo Stefan, alle über ebay bei verschiedenen Anbietern. Ist aber schon etwas länger her, habe mal kurz in alten emails gegraben und die folgenden drei gefunden... auktion.speedy pid-handy-fit akku-power Keine Ahnung ob es die heute noch gibt...
@superuser Hab meins auch von pid handy fit. Verwendest du die init-sequenzen von christian k's page oder vielleicht andere ? das größte problem ist immer noch das falsche farbformat.
Ich habe meine auch von PHF. Die Displays gibt es Heute noch, habe zwei letzte Woche dort gekauft. Das mit dem Init von Christian funktioniert bei mir 100%ig.
@superuser Habs endlich rausgefunden: als ich die init-tables beim portieren in den assembler kopiert hab hatte ich sie aus dem simple display example code genommen, da fehlen ein paar bytes. Danke für den tipp dass du die glcd verwendest. Dort stehts richtig. ;)
Hi @Stefan, eigentlich machen beide init's das gleiche (simple und glcd). Zwar gibt es bei der glcd zusätzlich zur 40-byte INIT2-Table eine weitere INIT3 table, die wird aber gar nicht benutzt. @Martin S. ja, die clearscr Funktion funktioniert nur richtig, wenn man die Arbeitsbereiche nach der init nicht geändert hat bzw. wieder zurück gesetzt hat. Auch das 0x05 muss man nicht immer wiederholen. Ein Performance Gewinn wird sich wohl nur bemerkbar machen, wenn man dauernd sehr kleine Daten schickt.
Hello Cristian Kranz, I need your help, I will try to work the LCD HD66773 with arm LPC2106, and I got here the file "lcd.c". Inside the "lcd.c", I don´t find the functions InitSPI() and SPI_WRITE(). Where I find this functions or the "lcd.h", can you send me it?
Hi Ronaldo, i think you are wrong here. a) the provided code is not for ARM-7 b) the display is not a HD66773 BR SU
O.k. i was wrong, there is a HD66773 display :-) This is the code on the net for init the SPI and write to the SPI on Atmega AVR (copied from the code at http://www.superkranz.de/christian/S65_Display/DisplayIndex.html) void port_init() { uint8_t tmp; PORTB &= ~_BV(LCD_RESET); DDRB |= _BV(LCD_RESET); PORTB |= _BV(LCD_MOSI); DDRB |= _BV(LCD_MOSI); PORTB &= ~_BV(LCD_CS); DDRB |= _BV(LCD_CS); PORTB &= ~_BV(LCD_SCK); DDRB |= _BV(LCD_SCK); PORTB |= _BV(LCD_MISO); PORTB |= _BV(LCD_RS); // not used from LPH display DDRB |= _BV(LCD_RS); // setup SPI Interface SPCR = _BV(MSTR) | _BV(SPE) | _BV(SPR0); SPSR = 1; // double speed bit tmp=SPSR; } void lcd_write(uint8_t dat) { SPDR= dat; while (!(SPSR & _BV(SPIF))); }
Super user, Thanks for answer and help. The correct name the file is "disp.c" posted here by lupin. I need only the SPI_WRITE(). I finished the function to nokia_6100 64K to ARM LPC2106
Hello! I have some questions about LCD S65! 1. On your circuit two different power supplies (2,9 V and 1,8 V) connected to 2,9 V. Is it realy safely? 2. Your library for AVR is for WinAvr. Have you library for CodeVision? 3. Can I replace IRU1205CLTR by lm317? 4. Can I replace resistors 610 Om by 560 Om? Thanks. Eugeny.
So, why on display two different power supplies?
For led power supply used PWM output of AVR. I can't find BAT54 and BSS123, placed on circuit. Please tell me analog of these parts, or another circuit for PWM 10V-generator. Sorry for my bad English )))
Eugene, If you user the LM317, use the equation the datasheet: V=1.25*(1+R2/R1) V=2,91 R1=120r R2=160r
Use a approx. 1A Shottky Diode (1A because of the lower forward voltage, LED current should not be higher than 30mA) Usa a n-channel (small power) FET with a threshold voltage compatible to the output voltage of your uC I/O. A low Rdson of the FET reduces the losses. Switched Current is approx. 100mA. but i propose at least a 1A type.
You wrote : 1A because of the lower forward voltage... Sorry, my English is bad... tell about this simply
I meant: Use a shottky diode with at least 1A current capability because such diodes have usually a lower forward voltage, compared to schottky diodes with less current capability. Nevertheless the current through the display backlight LED's itself - and therefore the true current through the schottky diode - is only max. 30mA. A smaller diode would do the job but because of efficiency use a stronger. Same for the FET.
I look for proteus model for S65 display. Please, give me a link or send to asta-la-vista@mail.ru
I want to use ATMega32. Is it enougth flash memory on it?
ебаный в рот....
you ask weird questions, that is why no one responses (besides everyone is german here) The mega32 is okay, just do the math yourself... you can interface it with virtually every microcontroller, but with less memory you can only store low resolution images. I guess no one has a proteus model of the display. For the LED step up i would just try to build the circuit of the schematic on the site. It will work with other diodes too, but maybe not at such a high efficiency.
full ack. to Lupin. By the way, no idea what is ment with "proteus model" of the display
You wrote "I guess no one has a proteus model of the display.", "no idea what is ment with "proteus model" of the display"... So, looking this page press CTRL+F - and type proteus in search field. You shell find link to proteus.jpg - screenshot of project with s65 display. Lupin. May be I not understand you because of my bad english... But tell me, if I shall use ATMega32 with library only, without long body of main program? only library functions - how much kbytes it will be? Oh... I have to rebuild this code for CodeVision... It will be difficult?
Hello! I have download http://www.superkranz.de/christian/S65_Display/data/s65_glcd_V01.zip In install.txt I found string: "- open \lib\makefile. and change MCU_TARGET and -DXTAL=16000000 to your Device - open \lib\glcd.inc and change the PORT definitions to your hardware connection of the GLCD - run \lib\compile.bat " But There is no folder "lib" in s65_glcd_V01.zip . Why?
the lib folder is renamed to glcd. You find all files in the glcd folder. For compilation use make instead of compile.bat
Hello! Look at code: #elif defined (_AVR_ATmega32_) #define LCD_PORT _SFR_IO_ADDR(PORTB) #define LCD_PIN _SFR_IO_ADDR(PINB) #define LCD_DDR _SFR_IO_ADDR(DDRB) #define LCD_CS PB0 #define LCD_RESET PB6 #define LCD_RS PB7 #define LCD_MOSI PB2 #define LCD_MISO PB3 #define LCD_SCK PB1 You can see PB2 with MOSI and PB3 with MISO. But on scheme - only "DAT" with PB2. How to connect. It's not all troubles. Compiler WinAVR put warnings: test.c:10: warning no previous prototype for 'testLines' and same warnings for other functions on test.c I change XTAL in two places in library. May be I do error while edit make file? Please, compile for me test.c for ATMega32 with 8Mhz internal RC Oscillator. I want to know - is the program error, or LCD error. I connect AVR outputs with LCD inputs without resistors. Do LCD will not work whithout resistor? or LCD will be work, but with instability? Do this damage LCD?
Hi! You don't have to connect the PB3 Pin to anything on the Display, because communication is only in one direction, MCU -> LCD. So you connect DAT on the LCD to MOSI on the MCU. You didn't say at which voltage your MCU runs. If its 3,3V your ok but if it's 5V you may have ruined your display if you didn't use a voltage divider. Use the resistor combination proposed from Mister Kranz and it will work fine. If Powerconsumption is an important concern for you you might use an active Levelshifter (e.g: Max3002) instead of the resistors. This will reduce current-consumption. I can't say anything about the warnings from the compiler by now because I'm not at home where I can try and compile the lib. greetings Fasti
Thanks, Fasti! You wrote: "You don't have to connect the PB3 Pin to anything on the Display". Ok, but my debug board has leds on each pin of each port. When MCU is start's - PB3 led is lighting. Why? And if PB3 is not used, why PB3 defined in library? You wrote: "5V you may have ruined your display if you didn't use a voltage divider". Hmm.. MCU voltage - 5 V, LCD - 3 V. SPI without resistors voltage is 4.5 V. LCD not works, but I think, that LCD still not damaged, because combination of lighting leds with connected LCD, and without connected LCD is different. You wrote: "I can't say anything about the warnings from the compiler " Why "can't say"? Look my previous messages...
Hm... I have display LPH8836. On Mr.Kranz's site I have read "LCD Grafic Library (GLCD) for ATMEL AVR processor (currently LS020 only)" Where I can get library, or how can I edit library for using with LPH8836?
Hi! It depends on how the LEDs on your port are connected. If the Leds are connected from Vcc to the Pin, the LED will light when the Pin is low. If it is connected from the Pin to Ground, the LED will light when the Pin is high. I don't know if the Port is set high or low by the software but anyhow it's not relevant for the display. It will work without this Pin simply because there is no Pin left on the Display to be connected. I also don't know what the LEDs on your Board tell you about the functionality of the display. I don' think you can say anything from a few LEDs or I didn't get what you wanted to say. If you don't get the Voltage from the Digital lines to 3V your display will surely be damaged. I've read all your messages so I don't know what you want..... I said: I can't say anything about the warnings because I simply don't have the library here to try out and compile it with your settings. Another point is that the library won't work with the LPH88.... and I don't know anybody who modified the library for the LPH Display. Maybay you want to do it and you're capable of doing it. It would be nice if you would Post it here when you're finished. For a start you must analyse the code from the existing Files for the LPH88. As far as I know, the LPH Display is the one which is the least known display of all three types. Christian has done a lot of work to get this information reengineered from a working handy and I understand him that he can't do all the work to get every kind of Display working for everyone. I appreciate his efforts of getting the library ready for the LS020. My coding skills aren't good enough to write a library for the LPH or in my case the L2F50 so I hope you will be doing it :-) greets Fasti
Hm... If I make MCU power 3.3V, LCD power - 3,3 V, connection between LCD and MCU without resistors. It's more simply, isn't it? Are somebody tryed this method?
When you've got the possibility to drive your MCU with 3,3V do it, it will work fine without resistors then.
You wrote: "When you've got the possibility to drive your MCU with 3,3V do it" Hm.. Strange words.. It is not difficultly.
Hi! Definitly not strange words: for example: In my application the MCU can't be driven with 3,3V because the other peripherals need 5V and only the Display needs 3V so I haven't got the possibility to drive my MCU with 3V with a reasonable effort concerning the rest of the circuit. For me the easiest way is to get the signals for the Display to 3V and not converting 15 other Signals to 5V.
Ok, Christian, thanks. All my peripherals can work with 3.3V. P.S. Have you a library for LPHxxx display?
Eugene, Search in the google by "HD66773". I have the HD66773 and HD66766.
I understand. I have HD66773 PDF file. But I want finished library for avr. My programming skill not so good to write library from HD66773 datashit.
What the fuck??? I can't understand!!! On this topic I found string: "Im Moment ist das LPH88 und LS020 supported. Das L2F50 hoffentlich bald." On http://www.superkranz.de/christian/S65_Display/DisplayIndex.html I found "LS02" only... Whereis the true? Is the LPH88 supported by mr Kranz's library?
Hi! The stated sentence says nothing about the library only that the two Display types work with the code posted at www.superkranz.de At the time of the posting Mister Kranz didn't hav a working code for the L2F display. In the sentence beneath the stated, he says, that the library only support the LS020 display by now. So in the same posting you get the answer about the truth.
I asked about LPH. Why all people write, that LPH is not supported, but I found this link http://www.mikrocontroller.net/attachment.php/252187/LPH_display4_V02.zip, there written, that LPH is supported... There is the truth?
Hi Eugene, the provided LPH display code can be used for: -> initialising the display -> writing bitmaps to the display -> writing text with the given ASCII bitmap table to the display -> switching off the display (not sure) The GLCD library (drawing lines/circles/different fonts/frames etc) is only available for the LS display. You are invited to make the port for the LPH display.
Heh.. I use Atmega16 Internal oscillator 8MHz VCC - 3.2 V ( on both - 2,9V and 1,8 V) 0 = 0.00 V 1 = +3.1 V connected as: #define LCD_CS PB2 #define LCD_RESET PB3 #define LCD_RS PB4 #define LCD_MOSI PB5 #define LCD_MISO PB6 //Not Connected #define LCD_SCK PB7 I use HelloWorldMega16.zip Data wires length 9 cm. I tried to on|off double speed bit, tried to set SPI speed to CPU/128 I have two displays LS020 - DON'T WORKS!!! Help!
Yes!!!!! It Works!!!! I use 16 MHz with 3,3V (!!! MCU works stable), double_bit=0, CPU/16 My mistake was - I tried to set CPU/128 as Spider84 wrote. Now I try to use full library mr Kranz's. Heh - dont work. I have leds on each pin of PORTB - while working - only PB6 (MOSI) is lighting. It is wrong, isn't it? There is the string in library : #elif defined (_AVR_ATmega16_) But I cant find string #define _AVR_ATmega16_ in code. Where it have to be placed?
Eugene, You used 3V3 in 2,9V and 1,8V? What full library was used? thanks
YYYYYAAAAAHOOOOOOOO!!!!!!!!!!!!!!!!!!!!!11 ALLL WORKS!!! Full library WORKS!!!! Thanks to all!!!
Eugene, Haved you used the 3V3 in 2,9V and 1,8V or not?
Yes. I used equal voltage on both supplies - 2.9 V and 1.8 V - I put 3,3 V. And I think, that it is not dangerous, because LCD controller chip temperature not grow. Now, I trying to make CodeVision library for this display.
Eugene, If you used the 3V3 to 2,8V and 1,8V, don´t used resistor, right!. When you finished the Codevision library, please post here, because I use the codevision and now I´ll try test the Hitachi HD66773 controller.
Für alle die des Löten's und Programmieren nicht so mächtig sind, hier gibt es jetzt eine fertige Lösung zu kaufen: www.display3000.com/d073x.pdf Sieht auf dem ersten Blick ganz ordentlich aus. Das einzige was mich stört, ist der fehlende Hinweis auf die Quellen... Grüße SU P.S: Ich habe mit Peter Küsters und seinem Shop nichts zu tun
Der typ bereichert sich an anderer Leute Nachforschungsarbeit die zur freien Nutzung bereit gestellt wurde - finde ich nicht so gut: nix von dem kaufen!
Mal ganz abgesehen vom offensichtlichen Klau, finde ich die Idee, ein ready-to-use Modul anzubieten, gut. Dieses Gefrickel mit dem Folienstecker ist ja noch ok fuer nen Prototyp, aber wenn jamand fuer wenig Geld sowas als fertiges Paket anboete, waehre ich einer der ersten Kunden. Das display3000 Teil ist aber zu teuer fuer meinen Geschmack.
Ich kann nur fuer mich sprechen, aber wegen der software wuerde ich dieses Modul nicht kaufen, sondern wegen der hardware. Wenn dann der Preis stimmt, ist mir egal, ob da irgendwelche CDs beiliegen. Bei PC-Hardware ist das genauso.
Weiß einer, um welches Display es sich handelt? Auf seiner Homepage ist noch nichts von dem Angebot zu sehen.
Das wird er wahrscheinlich nicht sagen, ich hatte ihn mal gefragt wegen das kleine Display, da wollte er nichts rausgeben ohne das ich einen display mit µC kaufen würde. Ein Datenblatt von Controller hatte er nicht. @Christian: Kannst Du mir bitte deine Postadresse schicken, damit ich dir denn ersten Bausatz von meine Adapterplatine für das S65 Display schicken kann? Ich würde mich freuen wenn Du denn Bausatz testen könntest. Grüße Mark,
Oh... all it is slowly.. It is better to draw picture in memory on first stage, and one-moment outputing picture to screen on second stage. How to do it? P.S. Have anybody functions to work with images?
Hallo Forum, ich interessiere mich dafür, das S65 in einem Projekt für meine Uni zu verwenden. Die Displays von ebay kann man doch in jedem S65 einsetzen und das Handy selbst kann nicht herausfinden, welches Display eingebaut ist (lt. Aussage von Christian Kranz findet keine Rückkommunikation statt). Folglich müssten alle verbauten Controller doch initialisierungs- und Befehlskompatibel sein, oder? Ich hab ein Datenblatt für den HD66773R vorliegen. Ich habe das Gefühl, dass bis jetzt noch keiner in ein Datenblatt geschaut hat und die Entwicklung nur auf Reverse-Engineering basierte. Mit dem Datenblatt müsste es doch möglich sein, eine spezifikationskonforme Software zu implementieren, die für alle Displays passt. Das Datasheet habe ich ganz einfach über Google gefunden - so einfach kann das doch nicht sein, oder???? Gruß Klaus
> so einfach kann das doch nicht sein, oder????
Genau,
die Displays werden anhand interner Pull-Up's/Pull-Down's
identifiziert.
Du kannst dir ja mal die drei Ansteuer-Codes herunterladen und
vergleichen. Sofort sollte dir klar werden, dass die Displays
unterschiedliche Controller haben und unterschiedlich angesteuert
werden müssen.
Woher weisst du das ein HD66773R benutzt wird? Das einzige was bekannt
ist ist, dass die Befehlssequenzen eines Displays den des HD667xx
ziemlich ähnlich sind.
Danke SuperUser, der Thread ist mittlerweile so umfangreich, dass man nicht mehr alles lesen kann, sorry. Ich habe die Typenbezeichnung des Controllers von Christian Kranz' Seite, aber das scheint dann wohl nicht 100%ig sicher zu sein Gruß Klaus
Hallo Leute, Ich habe mir jetzt auch mal ein S65 Display geholt und wollte es ansteuern. Dafür habe ich mir eine kleine Platine gebaut mit einem Atmel ATMega16 und 470Ohm/470Ohm Spannungsteiler. Die Spannung am AVR beträgt etwa 5,2Volt, sodass ich auf etwa 2,6V Highlevel komme hinterm Spannungsteiler. Die Flanken sehen auf meinem Oszi absolut in Ordnung aus. Zum Display: Die 5 Datenleitungen habe ich an die Spannungsteiler angeschlossen. LED GND und GND habe ich miteinander verbunden und auf meine gemeinsame Masse hier gelegt (Labornetzteil). Nun das Problem: Sobald ich auv den 1V8 pin auch 2,9V drauf gebe, zieht der Pin mal locker 150mA und der Controller an der Oberkante des Display wird ganz gut heiß. Das Display ist des Typs L2F50. Dazu habe ich den Code von Christian Kranz auf der Homepage verwendet, der ja von den ATM128-Registernamen her zu den ATM16 Registernamen kompatibel sein sollte. Der Code kompiliert auch ohne Fehler. Wenn ich nun den 1V8 Pin unbeschaltet lasse, gibts manchmal nur bunte Streifen nach dem Einschalten zusehen. Manchmal gibts aber auch einen komplett schwarzen Hintergrundd mit einem weißen Streifen zu sehen, der aber nach ein paar Sekunden sich zu bunten Streifen verwandelt. Ich könnte mir vorstellen, dass das daran liegt, dass ich die 1V8 nicht beschaltet habe. Wenn ich aber hier 1,8V mal anlege, zieht er auch immernoch 30mA.. Das kanns ja nicht sein, oder? Hat das L2F50 ne andere Belegung als die auf Christians toller Seite? :-( Ich bedanke mich für jeden Tipp!
Hatte keiner das Problem? Oder soll ich lieber noch auf ne Antwort warten? ;)
Also 150mA ist definitiv zuviel... soviel zieht das Display nicht mit der Hintergrundbeleuchtung
Allerdings, aber mich wundert sowieso, warum der Pin 1V8 dauernd genannt wird, wenn man doch 2,9V draufhaut..
Es kann sein, dass dieser PIN eine Art IO Spannung darstellt k/a
Dann kann man ihn doch auch Vcc nennen oder sowas..
Koennte man. Denke mal, Christian hat die Spannung gemessen, und dann so benannt. Einige Controller (zB. der SAM7 laeuft mit einer Core Spannung von 1,8V hat aber noch fuer die IOs 3,3V. Denke bei dem Display ist das ähmlich, nur dass die IO Spannung kleiner ist, als die VCC weil der Handy Controller evtl eine 1,9V IO Spannung hat
I want to suppose to put in this topic your projects with LCD s65. Anybody know, how increase speed of working? Simple rectangle 0,0,132,176 library of mr Krans drawing during 0,5 seconds. How to write to LCD memory, and then - output to LCD?
Eugene, 0.5 seconds seems to be a bit long to me to fill the display. Even without setting the double speed bit you should be able to achive about 10 fps (= 100msec). I don't know the details of the library you're using but you should check your SPI speed setting. Depending on the display type (I'm using an LS020) there are ways to improve the performance of the code. I wrote my own optimized fill function in assembler and got close to the max. speed of about 20 fps with an ATMega16 running at 16MHz. So far nobody said the LCD is working with a background buffer allowing you to write to that buffer and let it display with a single command.
@Eugene I just read your posting dated 1.7.2006. You're using the AVR @ 8Mhz and SPI setup at CLK/16, correct ? Well, that explains why you think the LCD is so damn slow. It's your lame setup. First of all I would try to use the AVR at its max. clock frequency (which is 16MHz), then I'd setup the SPI to work at CLK/2. These two modifications would speed up your setup by a factor of 16. Remember, to fill the LCD it requires to send about 46k of data via the SPI to the LCD. Your setup is capable of x-fering about 62.500 bytes / second. Using the suggested setup you could achieve about 1.000.000 bytes / second. Of course this requires short cable lengths and a good signal quality.
Hello, is anybody had implemented the communication between x65 display and PIC 18fxx5x? I'm very interested in correct schematic, because currently I still having problems connecting ones. 2Mario: can You, please, send me the Your schematic (with pic16)? Thank You. (sorry my English, my native languages are Ukrainian and Russian, and I very little bit understand Deutsche and little bit better speak English).
Daz No! It was first step settings. Now my settings is 16 MHz SPI speed is CPU/2. I use Mr Kranz's library function glcdFillRect (0,0,132,176). I'm not sure, that screen fills in 0,5 seconds, but I sure, that is not 10 fps. Please send me you sample code to try on my project.
Oh.. Sorry, Daz? you are right! I setup SPI with CPU/2 and it work faster. But if I want quickly change background from black to white - I see bad visual effect of filling display from up to down screen border. Ok... On s65 phone this display controlled by fast ARM processor. But LCD clock is maximum 13 MHZ. How video clips are showing on this display?
Uhm yes... simple, the ARM has a buffer in memory and then sends the memory to the display with max. clock.... Or the display has enough internal memory to hold 2 screens and it is possible to set one active screen and one as a backbuffer. But I think that's not possible... I am not sure. Having two screen buffers is the only way to reduce shearing. You could also try to just update portions of the screen... most times you won't need to redraw the screen as a whole. Another method is to update even lines first, then update all uneven lines in the next frame - this way you get twice the framerate (theoretically, but at such a low FPS it will be visible to the user).
@Simon Küppers: Ich habe wohl das gleich Problem, und ich habe schon in einem anderen Thread meinen LM317 beschuldigt an dem Display eine zu hohe Spannung erzeugt zu haben. Ich weiß aber momentan auch nichts. Ich denke ich werde erstmal in ein oder zwei Wochen zwei neue Displays von einer anderen Sorte ersteigern. Und wenn sich in der Sache L2F50 wieder was tut hoffnungsfroh meine beiden Displays nochmal testen, und hoffen, dass sie bei dieser Aktion nicht durchgebrannt sind. ciao Dirk
@Dirk Schlage: Hmmm, vielleicht hat das L2F50 ja eine andere Belegung?
Hi! Also bei mir läuft das L2F50 Problemlos auch mit einer LM317 Schaltung für die 3V. Habe die Schaltung aus dem Datenblatt genommen und hat auf anhieb funktioniert. Der LM 317 braucht mindestens 3mA - 10 mA (worst case) Belastung um gut zu regeln und die Eingangsspannungsdifferenz sollte mindestens 2V betragen. Auf Grund dieser Tatsache sollte der Widerstand von VOut zu Adj zwischen 120 und 240 Ohm betragen und die Spannung auf etwa 3V eingestellt werden bei 5 V Eingang. Wichtig sind noch am Ein- und Ausgang einen Kondensator zu platzieren und dann sollte das problemlos funktionieren. Ich habe noch bei meinem Display eine Diode vor den 1,8V Eingang gehängt, sodaß dort eine etwas kleiner Spannung als die 3V anliegen. Funktioniert tadellos und das Display wird auch nicht heiß. ciao Fasti
Hallo Fasti, Die Diode doch einfach in Durchlassrichtung in Serie vor den Eingang, oder? Der Spannunsabfall sind dann diese 0,7V, oder? Kann ich da auch eine Feldwaldundwiesenschaltdiode nehmen, wie eine 1N4148, oder eine die einfach nur so auschaut, ist eh wurst? (mit der begründung, dass weniger als 20mA Strom fliessen werden?) Oder muss es eine 1N4001 sein, die zur Stromgleichrichtung gedacht ist? Ich kenn mich mit Dioden überhaupt nicht aus (mit dem Rest eigentlich auch nicht). Ich habe zwar hunderte (34 verschiedene) hier rumliegen, aber vieleicht bis jetzt nur 3 verbaut. Ich habe das Warmwerden zwar bei mir nicht beobachtet, aber wenn Logik heutzutage warm wird, ausser es ist Leistungselektronik, heisst das dann nicht, dass sie schon tot ist? Dirk
Hi! Also eine stinknormale Kleinleistungsdiode sollte genügen, ich glaube nicht, dass in den Pin mächtig große Ströme fließen. Es sollte halt eine normale Siliziumdiode und keine Shottkydiode sein, wegen dem Spannungsabfall. Nicht unbedingt, wenn Logik heiß wird kann es auch einfach nur sein, dass der Lastwiderstand einfach zu klein ist. Wenn die Ausgänge nicht grad kurzgeschlossen werden und das ganze nicht zu lange dauert sollte es der Chip überleben. Fasti
Hallo, Auch mit Diode, kein Bild, kein Ton. Der Spannungsabfall an der Diode beträgt etwa 0,4 V. Da bräuchte ich jetzt etwas mehr Erfahrung. Ich werde mir auf jeden Fall nochmal andere Displays besorgen. Gibt es schon Erfahrungsberichte, von Leuten, die andere AVRs als den Mega128 benutzen? Dirk
Habs auch mit nem Mega32 am laufen, funktioniert problemlos
Laufen eure mit 16MHz? Sollte es auch 3.6864MHz, bzw. mit internem 8MHz-Oszillator gehen? Ich glaube ich löte heute abend mal einen 16MHz-Quartz ein. ciao Dirk
Hatte mein LS020 - am ATMega 16 hängen mit 8MHz internen Takt, hat auch funktioniert.
Hi, Thanks all, special to Christian Kranz , my LCD LPH8836 works... I finished to codevision_avr and used the other interface to ATMEGA323L 5V. I need to know the command lines the function below. Sorry my english.. Regards, lcd_comtype(0x05); // what this command lcd_comdat(0x00,0x38); // what this command lcd_comtype(0x17); // what this command lcd_comdat(x+CHAR_W-1, x); // what this command lcd_comtype(0x16); // what this command lcd_comdat(y+CHAR_H-1, y); // what this command lcd_comtype(0x21); // what this command lcd_comdat(x,y); // what this command lcd_comtype(0x22); // what this command
Soo ich hab jetzt auch mein S65 Display bekommen ... erst mal angeschlossen (hab das ganze am STK500 auf 2,9V laufen ... der controller funktioniert auch noch bei der Spannung. Ich hab das ding mit der grünen Platine. Und wie soll es auch anders sein? Das ding läuft nicht ^^ Jetzt steht aber hinten drauf: LP-8836-B Denkt ihr das macht einen Unterschied?
Ach und wenn ich das Ganze Simuliere bleigt er bei PORTB &= ~_BV(LCD_CS); // select display hängen. Das ist in Zeile 221 der disp.c Ich hab eigentlich mit C sehr wenig am Hut und versteh jetzt auch nicht genau was die Operatoren jetzt genau machen aber laut kommentar wird das Display ausgewählt ... an sich keine große aktion nen portpin zu toggeln. Testweise habe ich mal noch weitere PORTB &= ~_BV(LCD_CS); // select display hintereinander an der stelle eingefügt und er bleibt immer beim letzten davon hängen ... sehr merkwürdig. Ich wollte das Display nur erst mal zum laufen bringen um es dann in Assembler neu zu schreiben, wollte nur erst mal testen obs überhaupt geht. Achja: Ich benutze dem Mega16.
Was für eine Softwaer verwendest du? Die Lib oder SimpleDisplay? Denn die Lib läuft soweit ich das bisher gelesen hab nur bei den LCD´s mit brauner Folie
Nene ich benutz nur Simple Display (LPH_display4_V02.zip) Ich kenn mich halt mit C sehr wenig aus aber ich hab in den Optionen als controller den Mega16 ausgewählt und die frequenz auf 16 MHz gestellt (ja mein Mega läuft auch bei 2,9V und 16 MHz noch korrekt)
Naja n bisschen blöd bin ich auch ... hab vergessen die Pin konfiguration an den mega16 anzupassen ... hatte mich auch ab dem zeitpunkt gewundert, als ich mit dem oszi gesehen habe, dass auf der RS leitung das clock signal lag ... Das blöde nur ist, dass es immer noch nicht geht -.-
Soooo ... jetzt sollte man noch die wirklich sehr sehr schwierig zu erlernende Fähigkeit besitzen von 0 bis 7 zu zählen ... Wenn man alle Kabel da ansteckt wo sie hingehören funktioniert das ganze natürlich auch ... :>
Ich versuche ein Bild anzeigen zu lassen aber irgendwie will es nicht wie ich will :-( Hab das Bild in RAW hab es dann mit WinBin umgewandelt Soweit so gut jetzt sag ich r=bild[x]; g=bild[x++]; b=bild[x++]; x++; glcdSetPixel(i,j,RGB(r,g,b)); das ganze ist in zwei schleifen um i und j hochzuzählen und wieder auf 0 zurückzusetzten wenn das ende der zeile erreicht ist Das Bild das dabei rauskommt ist nur wirres Bildrauschen :-( Die gewandelte grafik hat 132x176px also das würde schon passen Hoffe mir kann jemand helfen
benutzt du einen AVR? Ist das bild im ROM? benutzt du PROGMEM? Benutzt du auch die entsprechende read funktion? Ist das Bild wirklich mit 24 Bit Farbtiefe gespeichert? Oder sogar 32 bit? Dann müsstest du ein byte weg lassen.
Was ist das für ein Type? http://cgi.ebay.de/LCD-DISPLAY-SIEMENS-S65-M65-CX65-SK65-100-ORIGINAL_W0QQitemZ290014937613QQihZ019QQcategoryZ40579QQrdZ1QQcmdZViewItem Hat es einer schon ausprobiert mit welchen Quellen das läuft?
Das ist das L2F50xxx das läuft mit dem Simple Display Source also nicht die Lib Hier ist alles beschrieben: http://www.superkranz.de/christian/S65_Display/DisplaySoftware.html
Bin mal gespannt, ob du es zum laufen bringst. Mein L2F50 hat irgndwo einen kurzen drin.
Ich hab das gleiche bestellt war aber ein LPH display ... aber meins läuft xD ich werde dafür jetzt erst mal ne assembler ansteuerung basteln weil ich kein c kann ^^
Ich hab mal n bisschen rumgetestet ... je höher die Spannung umso schlechter das Bild (besonders im dunkleren bereich gibt es keine Abstufung mehr). Bei mir hat das Display bei 2,8V das beste bild.
Hallo wo kauft ihr eure IRU1205CLTR. Habe sie bei RS und Farnell gefunden. Farnell +20 pro Auftrag ;-(( RS brauche ich sonst nichts. Gruß
Hallo OK. Ich habe sie auch noch beim Großen C gefunden. Gruß
Hi, ich habe auch L2F50 zuhause liegen, und mir den passenden Softwarestand von: http://www.superkranz.de/christian/S65_Display/DisplaySoftware.html herunter geladen. Leider werde ich keinen atmel controller verwenden können. Ich habe mir mal die Initsequenz durchgesehen, und ihr wisst ja wie das ist, quellcode von anderen ist immer ein hartes brot. ich suche timing diagramme der displaybedienung und registerbeschreibungen... hat da jemand etwas ausgearbeitet, sodas man es einigermaßen gut portieren kann!? danke euch, Maddin
...ich habe natürlich auch das 13 seitige pdf hier, aber so 100%ig hilft mir das bei der implementierung auh nicht weiter. wie sind z.B die basiseinstellungen der einzelnen Leitungen!? so wie ich das erkennen konnte wir der spi bereich des controllers genutzt um ich schäte mal, ein byte zu übermitteln,oder!? g.h. es muss nirgens ein takt per software erzeugt werden oder so!? ich brauche nur ein wenig überganghilfe, von hard zur software, so das ich vielleicht einen teil der routinen usw.. dann doch nutzen kann.. wäre klasse wenns was gibt, maddin
die funktionen dat cmd write machen für mich schon sinn! bei dat frage ich mich zwar warum da noch eine 0x00 hinterher gesendet wird, obwohl diese funktion scheinbar dazu dient 8bits zu senden, aber dat16 macht sinn. in write sieht es so aus als würde etwas über die spi schnittstelle gesendet, und anschließend auf absendung gewartet.... PORTB |= _BV(LCD_CS); diese art einen portpin zu setzten oder zu toggeln kenne ich zwar noch nicht, aber gut, wenn es denn das ist, soll es mir recht sein. ich hätte zumindest hinter dem LCD_CS ein hex define erwartet, aber ichdenke das versteckt sich dann wiederum hinter PB6 - macht sinn... trotzdem wäre ein wenig unterstützung in dem bereich wirklich gut:-) maddin
>>PORTB |= _BV(LCD_CS);
diese art einen portpin zu setzten oder zu toggeln kenne ich zwar noch
nicht, aber gut, wenn es denn das ist, soll es mir recht sein.
ich hätte zumindest hinter dem LCD_CS ein hex define erwartet, aber
ichdenke das versteckt sich dann wiederum hinter PB6 - macht sinn...
Nunja, diese Methode soll eigentlich auch nicht mehr verwendet werden,
habe ich mal gelesen.
Mach es lieber mit einer Schiebeoperation (PORTB |= (1<<LCD_CS);)
Und ja, LCD_CS ist ein define, dass auf PB6 (Oder was auch immer
definiert ist). PB6 wiederum ist auch ein define dass in der
controllerspezifischen IO-Definitionsdatei festgelegt ist.
@Simon Küppers, danke, soweit war ich jetzt auch:-) warum sollte ich da schieben!? oder ist das jetzt ein scherz!? wird denn jetzt der eine art spi hardware zur emulation des clk und data signals genutzt!? kenne die atmels nicht! gibt es timing und init sequenzen auch in nicht atmel spezifischen c-quellcode!? maddin
...welcher controller ist auf dem L2F50xxx display, habe ja alle dbs hier... oder verhalte ich mich jetzt nicht forum konform!? ich will doch nur versuchen möglichst schnell dieses display an den controller zu bringen... würde mich über fachliche unterstützung sehr freuen, maddin
ohh bei dem port pin: wofür steht denn das _BV?? ist das eine Funktion!? maddin
_BV ist ein Makro. Es ist definiert als
1 | #define _BV(x) (1<<x)
|
Das mit dem Schieben ist hier schon völlig korrekt. Denn hinter der Angabe "LCD_CS" verbirgt sich (nach "vielen" verschachtelten defines) eine 6 (oder jenachdem). Sprich, der Ausdruck wird zu folgenden Ausdruck aufgelöst. PORTB |= (1<<6); Wörtlich gesprochen macht der Compiler hier folgendes: Schiebe eine dezimale 1 um 6 stellen nach links. Dieser Wert soll PORTB zugewiesen werden. Nun ist der Compiler schon schlau und sieht, dass er das schon während der Compilezeit ausrechnen kann. Aus (1<<6) würde also 0b01000000 sprich 64 dezimal werden.
hei die witzga....au man, bei c sind so viele schweinerein möglich... aber trotzdem hilft mir das noch nicht viel weiter... vielleicht gibt es ja noch antworten auf die fragen meines letzten posts :-) maddin ps.: ich löse das immer folglich: #define PORTX LCD_PORT #define PORTX_XX LCD_RS #define LCD_RS=1 LCD_SET_RS #define LCD_RS=0 LCD_RES_RS #define PORTX_XY LCD_RW #define LCD_RW=1 LCD_SET_RW #define LCD_RW=0 LCD_RES_RW usw...
Hallo Martin, im Anhang ein paar Bilder wie die Datenübertragung zum Display aussieht: Ch0: RS Ch1: CS Ch2: Clock (13MHz) Ch3: Data > ...welcher controller ist auf dem L2F50xxx display, habe ja alle dbs > hier... Leider ist der Controller nicht bekannt. Wenn du alle Datenblätter hast, vergleich doch mal bei passenden Controllern (132x176, so viele dürfte es nicht geben) die Befehlssequenzen. An dem Datenblatt bin ich sehr interessiert. (cnkz - at - yahoo.com)
@ SuperUser das ist schon so wie ich mir das vorgestellt habe. mit den informationen aus diesem thread und den datenblättern und diesen bilder fehlen nicht mehr viele infos um es portierbar zu machen... also deinen bildern entnehme ich folgendes: -clock ist standardmäßig High -die daten werden bei steigender clock flanke übernommen -Cs = low -> chip is selected..! du hast leider etwas vergessen, das sind jetzt 53bilder, aber auf welchem ist was dargestellt.beinhalten sie die gesamte initsequenz in folge, oder sind es einfach mitschnitte aus neugier!? mein ziel ist als allererstes die write timing diagramme für command data und raw data (RS) zu erstellen, anschließend eine beschreibung wie die init seqenz auszusehen hat, wie in einem datenblatt der bekannten lcds.. Maddin
..ach ja: es sind eine ganze menge 16bit anweisungen in allen unterlagen hier zu finden, auch bei www.superkranz.de usw... es ist nicht leicht da durch zu steigen - ich meine es ist klar, das solls auch nicht sein, aber trotzdem... vor allem, warum immer 16 bit??? folgend mal die beispiele die hier überall zu finden sind, es stehen befehle untereinander und nebeneinander !?...und der sinn!? Sequence 1: (time 0ms) 0xFDFD, 0xFDFD Sequence 2: (time 68ms after start) 0xEF00, 0xEE04, 0x1B04, 0xFEFE, 0xFEFE 0xEF90, 0x4A04, 0x7F3F, 0xEE04, 0x4306 Sequence 3: (time 75ms after start) 0xEF90, 0x0983, 0x0800, 0x0BAF, 0x0A00, 0x0500, 0x0600, 0x0700 0xEF00 0xEE0C 0xEF90, 0x0080, 0xEFB0, 0x4902 0xEF00 0x7F01, 0xE181 Sequence 4: (time 182ms after start) 0xE202 Sequence 5: (time 297ms after start) 0xE276 Sequence 6: (time 401ms after start) 0xE183 Sequence 7: (time 460ms after start) 0x8001 maddin
Bitte nicht die verschiedenen Display's durcheinander werfen. Die Init-Sequence die du gerade gepostet hast, ist nicht vom L2F50.. sondern vom Sharp Display. Wenn du dir die L2F0 Init-Sequence ansiehst, da steht dann: static const uint8_t disctl[9] PROGMEM = {0x4C, 0x01, 0x53, 0x00, 0x02, 0xB4, 0xB0, 0x02, 0x00}; Das ist ein Daten-Array in C, gespeichert im Flash des AVR. Während des init wird dann die Sequence in einer for-schleife an das Display geschickt: lcd_cmd(DISCTL); for (i=0; i<9; i++) { lcd_dat0(pgm_read_byte(&disctl[i])); } das pgm_read_byte heisst einfach lese aus dem Flash Speicher, die lcd_dat0 funktion schickt ein Byte zum display und hängt ein 0-Byte an. An die 16-bit musst du dich einfach gewöhnen, 8-bit controller gibt es in Mobiltelefonen nun mal nicht. --------- Die genaue Bedeutung der Bilder weiss ich gerade nicht. Ich glaube es ist die erste Init-Sequence. Mir ging es darum, dass du die Polaritäten bzw. Flankenzugehörigkeit siehst.
Hallo, dank sir, ich habe nochmal ein wenig auf der site www.superkranz.de gestöbert und die sequenzen zufällig gefunden, allerdings sind es nur 49 mit zugehöriger txt datei in der sie erklärt sind.. :-)schaue sie mir mal an... 13Mhz ist für einen seriellen bus ja eine ganz ordentliche rate, und wenn ichs recht verstanden habe, dann muss das gesamte diplay immer neu beschrieben werden, es lässt sich also kein bereich auswählen, oder 2 geziehlte bytes schreiben. 16bit zu akzeptieren ist kein problem, der controller mit dem ich arbeite ist auch ein 16 bitter. deinen c quellcode ist leicht nach zu vollziehen, dennoch sieht diese init sequenz sehr kurz aus, im gegensatz zu den anderen... hinter dem label disctrl verbirgt sich ja sicher auch wieder ein spezieller wert... das ganze ist sicher eine never ending story, nicht um sonst gibts bibliotheken, aber trotzdem muss sich das ganze doch allegemein für die 3 displays in form einer art datenblatt eines lcds zusammen fassen lassen... und ich verstehe immer noch nicht die struktur der 16bit sequenzen, warum sind manche nebeneinander angebeben und andere wiederum untereinandenr?? maddin
> 13Mhz ist für einen seriellen bus ja eine ganz ordentliche rate
Reicht gerade so aus um den Bildschirminhalt mit einer einigermaßen
hohen Framerate zu übertragen...
Du kannst auch einzelne Bereiche zeichnen... musst nur überlegen ob es
sich für 2 pixel lohnt überhaupt die Command-sequence zu übertragen
Das hat nur was damit zu tun das (wahrscheinlich) die Hintereinander geschriebenen Sequenzen nur zusammen einen Sinn ergeben (befehl und daten z.b.) Und die Anderen Befehle die einzeln stehen keine weiteren daten oder weitere befehle benötigen. Das ganze ist also nur der "Übersicht" halber. Du kannst die befehle jeder Sequenz direkt hintereinander senden.
Martin, dein erster Post: > ich habe auch L2F50 zuhause liegen, und mir den passenden > Softwarestand ... runtergeladen Der C-Code ist ein Ausschnitt aus der L2F0 init die du dir runtergeladen hast. Wenn du die verstehst - und mit den Timing-Bildern, sollte es doch jetzt nicht mehr so schwer sein, dass auf einem anderen Controller zum laufen zu kriegen. Du musst doch einfach nur die Daten rüberschicken. Wie man Teile des Display-Speichers beschreibt ist in der Textausgabe leicht zu sehen. Der Font wird dort als bitmap ins Display-RAM geschrieben. Wie sieht es mit dem Datenblatt aus? Hast du ein passendes?
Ich wollte mal fragen ob dir das gleiche wie ich beobachtet: Je höher die Spannung desdo schlechter sind die farben im dunklen berech. D.h. bei 3.3V sind bei einem farbverlauf die untersten ich sag mal 5 abstufungen gleich (und auch nicht ganz schwarz sondern bei jeder Farbe etwas anders) Erst bei 2.8V ist das Bild meiner meinung nach erst richtig (es wird erst am unteren ende des farbverlaufs schwarz) Damit ihr wisst was ich meine hier noch ein Bild vom display (an 2,8V) http://lcdhype.de/uploads/post-8-11546958430.jpg Ich mach auch noch mal eins bei 3.3V damit man den unterschied besser sehen kann.
Hauke, das sieht aber auch bei 2.8V nicht so gut aus... Dem Bild nach zu urteilen ist das ein L2F0 oder? (Wegen Anschluss in der Mitte) Dort habe ich vor ein paar Wochen noch einen Fehler in der Init-Sequenz beseitigt. Hast du den neusten Code von http://www.superkranz.de/christian/S65_Display/DisplaySoftware.html ? Bzgl. Spannung, optimale Spannung ist meiner Meinung nach 2.9V.
Auf dem Foto ist das etwas schlecht dargestellt ... wenn man draufguckt ist es eine richtige gute abstufung. Und: nein es ist ein LP(H) Display
Ich frag emich, warum bei jeder Farbe oben nen ganz dicker Balken weiß ist.... Idealerweise sollte der doch nciht so dick sein, oder?
Ähm ja das liegt daran, dass der farbverlauf nicht übers ganze display gestreckt ist ... (weil ich zu faul war das so zu programmieren) sondern schon ein ganzes stück vorher aufhört. Normalerweise würde der Farbverlauf dann wieder von neuem beginnen nur fand ich dass das blöd aussah und hab einfach den überlauf verhindert.
Hat jemand schon damit ein Projekt verwirklicht? Was macht es und wie siehts den aus und wie wurde das gebaut( Schaltung )? Programmiert?
Hallo, habe folgendes Problem: Versuche gerade diesen LCD an einen mega8 anzuschließen. Nach langen hin und her habe ich leichte fortschritte gemacht. Wie aussieht habe ich den LS020 Display. Die ansteuerung klappt auch mehr oder weniger. Hintergrund färbt sich rot, aber es ist am anfang keine Schrift erschienen. Dann habe ich die Zeile in simple.c einfach so verändert char txt[]= {'H','e','l','l','o',0}; dann kamen auch Zeichen, nur komische :) siehe anhang. Woran kann das liegen. Bitte um weitere hilfe.
Ich würde sagen in Zeile 25 steckt ein Fehler.
:) also ich konnte immer noch nicht eins finden
also ich verwende eigentlich den original code vom Christian Kranz, kann man sich unter: http://www.superkranz.de/christian/S65_Display/data/simple_display3.zip runter laden. Hab dann nur die ports für den mega8 angepasst, in lcd.h. also folgender massen: LCD_CS PB2 LCD_RESET PB1 LCD_RS PB0 LCD_MOSI PB3 LCD_MISO PB4 LCD_SCK PB5 Danach habe ich in simple.c die original Zeile char txt[]= {'H','e','l','l','o',' ','W','o','r','l','d',0}; so verändert: char txt[]= {'H','e','l','l','o',0}; somit habe ich wenigstens schon erstmal erste zeichen auf den display gekriegt. mehr hab ich nicht verändert....
Verschieb den Zeichensatz mal ins Flash (PROGMEM). Hatte aehnliche Probleme mit nem Mega16.
noXe, der ATmega 8 hat zu wenig RAM für die ASCII Tabelle. Entweder ins Flash damit, oder nur einige wenige Zeichen nutzen und den Rest löschen!
ich befürchte das Flash reich auch nicht aus. Wie kann ich den die ASCII Tabelle deuten? Also welche hex-code, welches zeichen darstellt und wie ist sie überhaupt aufgebaut....
Die ASCII Tabelle steht im file disp.c, und passt sicherlich ins Flash des Atmega8. uint8_t ascii_tab[96][14]={ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // space (32) Das Zeichenformat ist 8x14, d.h. ein Zeichen ist 14-pixel hoch und 8-pixel breit. Die Tabelle beginnt mit Space (ASCII-Wert 32) Die put_char funktion kopiert jetzt einfach die Daten aus der Matrix and die entsprechende Stelle im Display-RAM. Dort wo ein Pixel gesetzt werden muss, wird das Pixel auf textcolor gesetzt, dort wo es nicht gesetzt werden soll wird es auf backcolor gesetzt. Vom ASCII Wert der ausgegeben werden soll, wird 32 subtrahiert um an den Tabellenindex zu kommen... for (h=0; h<CHAR_H; h++) // every column of the character ch=ascii_tab[ c-32 ][h]; ------------------------- So kriegt man sie ins Flash: #include <avr/pgmspace.h> // AVR specific functions to access the program memory // ascii table, starting with character blank (32) // size is 8x14 const uint8_t ascii_tab[96][14] PROGMEM = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // space (32) Und so liest man sie dann aus: ch=pgm_read_byte(&ascii_tab[ c-32 ][h]);
@Super User: danke, habe es genau nach deiner Anweißung gemacht. Funktioniert alles wunderbar. heul
Did anybody use display LQ020...? It looks like LS020... but I don't know if it will work with LS020 software.
My display is a LP-8836. It works with the LPH dispay code. So just try the LS020 code.
Can you send pictures from the displays (LP-8836, LQ020)? Just for interest...
Hallo zusammen, habe ein L2F50 an einem Mega32 (16MHz) angeschlossen. Der AVR wird mit 5V versorgt, das Display über 3,3V. Die Pegelwandlung (da erst zu Testzwecken) über Spannungsteiler. Jetzt habe ich das Problem, dass das Display zwar was anzeigt, jedoch die Schrift nur sehr schwach zu sehen ist. Wenn man senkrecht aufs Display schaut, erkennt man gar nichts. Habt ihr ne Vermutung, woran das liegen könnte? MfG, Michael P.S.: Ich verwende die Testsoftware von Christian.
Versuche es mal mit 2,8-2,9 V an den Eingängen zum Display , vielleicht ist die Spannung zu hoch.
Wenn du die Datenleitungen meinst, die sind bei 2,9V. Aber es wurde doch weiter oben irgentwo geschrieben, dass die auch zuverlässig unter 3,3V laufen, oder?
Also wenn du die gleichen Spannungsteiler wie Schaltplan hast , sollte es klappen. Ich habe es nur mit dem LS020.... ausprobiert.
Nicht exakt die gleichen. Die Werte hatte ich nicht da. Habe 2,3k und 3,3k genommen, sollte aber doch auch gehen, oder?
Da du ja Zeichen auf dein Display hast, liegt die vermudung nahe das vielleicht die Widerstände ein zu geringer Strom fliessen tut.
Hallo Michael, mess doch mal die Display Versorgungsspannung. Ich vermute das die höher als 3.3V ist - weil irgendwo doch ein Fehler in der Verdrahtung mit den Spannungsteilern. Ein sehr schwacher Kontrast ist ein typ. Zeichen für zu hohe Versorgungsspannung.
Hallo SuperUser, obwohl ich zur Spannungsversorgung nen Festspannungsregler verwende, habe ich nochmal nachgemessen. Die Versorgungsspannung lieg bei exakt 3,3V. Die Datenleitungen haben 2,9V bei High-Pegel.
Ich hab ein Display am STK500 laufen. So konnte ich natürlich bequem die ganzen Spannungseinstellungen machen und bin zu dem schluss gekommen, dass das display bei 3.3V zwar läuft aber das Bild schlecht wird. D.h. schlechte Kontraste und Farben. Wenn du die möglichkeit hast: probier es mit 2.8V da hatte ich das beste Erbegnis. Das Display läuft aber auch bis runter auf 2,1V, danach wollte mein Mega16 nich mehr. Zwar ist hier der Kontrast auch wieder schlecht aber es läuft.
Ok, danke für die Antworten. Werde gleich mal einen einstellbaren Spannungsregeler einlöten und das versuchen.
So, ich versorge das Display jetzt mit 2,9V. Doch es gab den den gleichen Effekt. Dann ist mir aufgefallen, dass ich vergessen hatte, den Pufferelko anzulöten. Nachdem ich dies getan habe, zeigt das Display erst alles (ich würd sagen) normal an, dimmt dann aber quasi innerhalb einer bis 1,5 Sekunden runter, bis man nichts mehr sehen kann. Wie ist das zu erklären. Die Spannung am Regler bricht auf jeden Fall nicht zusammen. Habt ihr ne Idee?
Kann es sein, dass du das Display resetest? Das das Bild langsam wegdimmt ist der typische Effekt wenn man es ausschaltet...
Ich hoffe nicht, aber ich habe nur ein Multimeter, das zu träge ist um kurze Impulse zu messen. Ein Phänomen, das damit wahrscheinlich zu tun hat, was ich mir aber im Moment nicht erklären kann, ist, dass das Diplay nur bei einem von fünf Versuchen was anzeigt, wenn ich Spannung an die Schaltung anlege. Dann zeigt es einige Sekunden was an, wobei die Schriftfarbe zwischen Blau und Schwarz wechselt. Dann dimmt es innerhalb von ca. 2 Sekunden runter und ist dann abrupt weg.
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.