PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 16x4 LCD-Modul



Import-Script
12.10.2003, 16:38
Hallo! <BR> <BR>Um mich mit LCD-Modulen vertraut zu machen, habe ich mir ein zweizeiliges LCD-Modul gekauft. Nach einigem erfolglosen Probieren habe ich es dank einer PDF-Datei aus dem Internet im 8-Bit-Modus zum Funktionieren gebracht. <BR>Nun brauche ich in einer Anwendung ein 16x4-Modul - also habe ich mir eines von der Firma PicVue gekauft. Im Datenblatt steht nichts über die Ansteuerung und die Ein- und Ausgänge sind die gleichen wie beim Probiermodul, also habe ich es gleich angesteuert wie das Probiermodul - hat aber nicht funktioniert. Was gibt es da noch zu beachten? Hier das C-Programm für den Mikrocontroller: <BR>An P1 hängen die acht Datenleitungen, an Pin_E die E-Leitung, an Pin_RS die RS-Leitung und an Pin_RW die RW-Leitung. <BR> <BR>#include &#60;AT89x051.H&#62; <BR>#include &#60;intrins.h&#62; <BR> <BR>const char EURO[] = {0x07, 0x08, 0x1E, 0x08, 0x1E, 0x08, 0x07, 0x00}; <BR>const char FIRST_LINE[] = &#34;Gute Pizza&#34;; <BR>const char SECOND_LINE[] = {&#39;1&#39;, &#39;,&#39;, &#39;-&#39;, &#39;-&#39;, &#39; &#39;, 0x00}; <BR> <BR>sbit Pin_E = P3^2; <BR>sbit Pin_RW = P3^3; <BR>sbit Pin_RS = P3^4; <BR> <BR>void CommandByte&#40;void&#41;; <BR>void DataByte&#40;void&#41;; <BR>void BusyDelay&#40;void&#41;; <BR> <BR>unsigned int Counter; <BR>void InitWait&#40;void&#41;; <BR>void Wait&#40;unsigned int Duration&#41;; <BR> <BR>unsigned char i; <BR>void main&#40;void&#41; <BR>{ <BR> InitWait&#40;&#41;; <BR> EA = 1; <BR> <BR> Pin_RS = 0; <BR> Pin_RW = 0; <BR> Pin_E = 1; <BR> <BR> Wait&#40;150&#41;; <BR> P1 = 0x38; <BR> CommandByte&#40;&#41;; <BR> Wait&#40;41&#41;; <BR> P1 = 0x38; <BR> CommandByte&#40;&#41;; <BR> Wait&#40;1&#41;; <BR> P1 = 0x38; <BR> CommandByte&#40;&#41;; <BR> P1 = 0x0C; <BR> CommandByte&#40;&#41;; <BR> P1 = 0x01; <BR> CommandByte&#40;&#41;; <BR> <BR> P1 = 0x40; <BR> CommandByte&#40;&#41;; <BR> for&#40;i = 0; i &#60; 8; i&#43;&#43;&#41; <BR> { <BR> P1 = EURO[i]; <BR> DataByte&#40;&#41;; <BR> } <BR> <BR> P1 = 0x80; <BR> CommandByte&#40;&#41;; <BR> for&#40;i = 0; i &#60; 10; i&#43;&#43;&#41; <BR> { <BR> P1 = FIRST_LINE[i]; <BR> DataByte&#40;&#41;; <BR> } <BR> P1 = 0xC0; <BR> CommandByte&#40;&#41;; <BR> for&#40;i = 0; i &#60; 6; i&#43;&#43;&#41; <BR> { <BR> P1 = SECOND_LINE[i]; <BR> DataByte&#40;&#41;; <BR> } <BR> <BR> while&#40;1&#41;; <BR>} <BR> <BR>void CommandByte&#40;void&#41; <BR>{ <BR> Pin_RS = 0; <BR> _nop_&#40;&#41;; <BR> BusyDelay&#40;&#41;; <BR>} <BR> <BR>void DataByte&#40;void&#41; <BR>{ <BR> Pin_RS = 1; <BR> _nop_&#40;&#41;; <BR> BusyDelay&#40;&#41;; <BR>} <BR> <BR>void BusyDelay&#40;void&#41; <BR>{ <BR> unsigned char Busy; <BR> Pin_RW = 0; <BR> Pin_E = 0; <BR> _nop_&#40;&#41;; <BR> Pin_E = 1; <BR> _nop_&#40;&#41;; <BR> P1 = 0xFF; <BR> Pin_RW = 1; <BR> Pin_RS = 0; <BR> Pin_E = 0; <BR> _nop_&#40;&#41;; <BR> Pin_E = 1; <BR> do <BR> { <BR> do <BR> { <BR> _nop_&#40;&#41;; <BR> Busy = P1 &amp; 0x80; <BR> } while&#40;Busy != 0x00&#41;; <BR> Busy = P1 &amp; 0x80; <BR> } while&#40;Busy != 0x00&#41;; <BR> Pin_RW = 0; <BR>} <BR> <BR>void InitWait&#40;void&#41; <BR>{ <BR> TMOD = 0x02; // autoreload <BR> TH0 = 0x9C; // for 100 µs &#40;at 12 MHz&#41; <BR> TL0 = 0x9C; <BR> ET0 = 0; // enable timer 0 interrupt <BR> TR0 = 0; <BR>} <BR> <BR>void Timer0Interrupt&#40;void&#41; interrupt 1 <BR>{ <BR> Counter&#43;&#43;; <BR>} <BR> <BR>void Wait&#40;unsigned int Duration&#41; <BR>{ <BR> Counter = 0; <BR> TR0 = 1; <BR> ET0 = 1; <BR> while&#40;Counter &#60; Duration&#41;; <BR> ET0 = 0; <BR> TR0 = 0; <BR>} <BR> <BR>Also: Wie bereits erwähnt - das Programm habe ich aus dem Internet und es funktioniert auf dem Probiermodul problemlos. Wieso nicht auf dem 16x4? <BR> <BR>mfg <BR>cndg

Import-Script
12.10.2003, 17:12
Hi Christian, <BR>bevor ich mich durch dein Programm durcharbeite und Fehler suche, kann ich dir folgenden Link empfehlen, mit dem ich kürzlich mein 20x4 Display angesteuert habe. <BR> <BR><a href="http://progshop.com/elektronik/diskussion/messages/6028/5580.html" target=_top>http://progshop.com/elektronik/diskussion/messages/6028/5580.html</a> <BR> <BR> <BR>Gruß, <BR>Heiner

Import-Script
12.10.2003, 17:39
Je nach Displaytyp ist die Pinbelegung unterschiedlich. die Ansteuerung ist aber von der Programmierung immer gleich, wenn die Displays alle Chipkompatibel sind. <BR>Nur so als zweiter Denkanstoss <IMG SRC="http://progshop.com/elektronik/diskussion/clipart/happy.gif" ALT=":-&#41;" BORDER=0>

Import-Script
12.10.2003, 18:44
@Heiner: Ich werde mir den Link einmal genauer ansehen. Danke für den Tipp. <BR>@Hellraiser: Die Pinbelegung unterscheidet sich nicht. Mein Display hat aber leider keinen HD44780, sondern irgendwelche Samsung-Chips, die kein Mensch kennt. <BR> <BR>mfg <BR>cndg

Import-Script
12.10.2003, 19:17
Hi Christian, <BR> <BR>genau das könnte schon der Grund sein, warum es nicht funktioniert. Sieh doch mal nach, welchen Controller du auf deinem Display hast und suche bei Google das passende Datenblatt mit den Timings und der Pinbelegung. <BR> <BR> <BR>Gruß, <BR>Heiner

Import-Script
12.10.2003, 21:22
&#62;&#62;sondern irgendwelche Samsung-Chips, die kein Mensch kennt. <BR> <BR>Sind das vielleicht KA0065 und KA0066 oder so ähnlich? Guckst Du <a href="http://www.google.de" target=_top>www.google.de</a> issa voll krass. <BR> <BR>Gruß Winnie

Import-Script
12.10.2003, 22:32
@Heiner, Winnie: Ein Datenblatt zu dem Controller konnte ich mit Google bis jetzt nicht finden &#40;kein Wunder, bei so einer Bezeichnung: S6A0069X01-Q0&#41;. Die meisten Links, die erscheinen, sind sowieso russisch oder chinesisch. Alles was ich gefunden habe, sind zwei Datenblätter zu LCD-Modulen anderer Hersteller, die ähnliche Controller verwenden &#40;&#34;S6A0069X01-C0CX &#40;KS0066UP-00CC&#41;&#34;&#41;. Da steht aber überhaupt nichts d&#39;rin über die Initialisierung und die Adressierung der einzelnen Zeilen. <BR>Ich schaue übrigens wegen jedem Blödsinn im Google nach &#40;und finde auch immer was dazu&#41;. Nur bei dem seltsamen LCD-Modul hat Google anscheinend nichts zu bieten. <BR> <BR>mfg <BR>Tröter

Import-Script
12.10.2003, 22:39
und kaufst du standard modul mit chip den alle kennen? so wuerde ich das dann irgendwann machen, wenn ich keine datenblaetter mehr finden kann ;&#41;

Import-Script
12.10.2003, 22:56
Viele trennen sich gerne auf Online-Auktionen von Modulen mit unbekanntem Chip drauf. Deswegen kann ich nur raten beim Display Kauf auf ein vorhandenes Datenblatt zu achten bzw. nur Displays mit gängigen Controllern zu kaufen. <BR> <BR>Vielleicht hilft ne Mail an Samsung weiter oder ins Blaue hinein probieren. <BR> <BR>Gruß Gerd

Import-Script
12.10.2003, 23:48
zum thema &#34;ins blaue hinein&#34; kann ich noch nen tip geben: hatte mal ein problem mit ner pinbelegung bei nem aehnlichen textdisplay: <BR>auf die chips achten, wenn man nix auf dem display sieht und die dinger schnell warm werden ist die polung verkehrtherum. die teile gehen nicht so schnell kaputt bei verpolung, aber allzulange sollte man sie nicht heizen lassen, denn silizium stirbt auch irgendwann ab einer bestimmten temperatur &#42;g