mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik KS0066 mit 4Bit ansteuerung?


Autor: Markus M. (yankee007)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hey leute,

ich habe das problem das ich in Bascom-AVR ein programm geschrieben 
habe, leider komme ich mit der initialisierung des LCD nicht klar. habe 
mir hier ein paar sachen angesehen aber irgentwie funktioniert nichts.

Benutze folgende sachen:

MC: ATMEGE32-16PU
LCD: conrad lcd best NR. 184748 - 62

Kann mir da jemand ein code geben um das lcd im 4-Bitmodus mithilfe von 
Bascom anzusteuern. mit dem Standartbefehl des Bascom geht es irgentwie 
nicht.

Im anhang mal mein Code. ich weiß ist nicht sehr professionell, möchte 
es aber genau so haben.

danke für eure hilfe.

Autor: Markus M. (yankee007)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat wirklich keiner eine idee wie ich das umsetzten kann??? was ist mit 
den 5 leuten die die datei schon angeschaut haben????

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>leider komme ich mit der initialisierung des LCD nicht klar

Kunststück! Ich sehe nirgendwo den Befehl "LCDINIT"  ;-)

MfG Paul

Autor: Markus M. (yankee007)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhhh den gibt es garnicht in der datenbank??? wie muss ich das jetzt 
machen????

Autor: Peng (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ist Bascom elend und gemein.
Mit den großen Hunden pissen gehen wollen, aber das Bein nicht 
hochbekommen.
Aber ihr wollt es ja so.
Steig um auf C da gibt es solche Probleme nicht.

Autor: Markus M. (yankee007)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich werde jetzt nicht auf c umsteigen. ich habe ja oben schon 
geschrieben das ich es gerne auch weiter in bascom haben möchte.

Autor: Peng (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, da kann mann leider nicht helfen wenn Du beratungsresistent bist.
Dann quäl Dich weiter mit Bascom ab, und versau Dir dein logisches 
Denken
auf alle Zeiten.

Autor: bas_ratte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Config Lcd = 20 * 4a , Chipset = Ks077
Initlcd

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...den gibt es nicht in der "Datenbank"??
Willst Du mich zum Narren halten?
Es macht den Eindruck, daß Du das Programm nicht geschrieben hast.

Staun! :-o

@Bas_ratte
Das Display ist laut  Datenblatte ein 20*2 mit KS0066.

Warum dann das: >Config Lcd = 20 * 4a , Chipset = Ks077 ?


@Peng
Bascom ist nicht für den Programmierer verantwortlich.
Denn: Was kann der Teich dafür, daß die Ente nicht schwimmen kann?

;-)
Paul

Autor: Dummy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>ich habe das problem das ich in Bascom-AVR ein programm geschrieben
>habe

Das alleine spricht doch für sich ;)
Duck und wech.

Autor: bas_ratte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiss  garnicht warum sich C-Fetischisten
sich in Bascom angelegenheiten einmischen,
seht lieber zu das ihr euren C -Schrott zum Laufen bekommt
und last uns in Ruhe.

Autor: Markus M. (yankee007)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich finde es recht scheiße das man hier so runter gemacht wird.

Ich habe lediglich ein problem und habe um hilfe gebeten. Mir ist 
vollkommen klar das ein besserer programmierer das alles anders gemacht 
habe. aber ich habe das programm so eschrieben verstehe es und bin auch 
stolz darauf das es funktioniert.

Ich benutze bascom aus diesem grund weil wir es in der schule hatten und 
die sprache recht einfach gehandhabt ist.

ich danke allen die mir hilfe angeboten haben und sich auch gedanken zu 
problemen eines anfängers gemacht haben. All die jenigen die gerne in c 
programmieren macht auch weiter. alle die mich nur angemault haben pech 
für euch haltet euch halt einfach hier raus.


MFG

Autor: Markus M. (yankee007)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mhh habe die möglichkeit von PAul mal ausprobiert leider funktioniert 
die so nicht.

hat vieleicht noch jemand eine idee???

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Möglicherweise musst du dir das Datenblatt vom KS0066U (*) schnappen und 
die Funktionen zur Ansteuerung selbst schreiben.

Die bequemen LCD Funktionen von Bascom setzen bestimmte Controller 
voraus und deren Befehlssatz und Timing wird dann eingehalten.

Bei anderen sog. "kompatiblen" Controllern wie dem KS0066U können 
Abweichungen insbesondere bei der Initialisierung des Displays notwendig 
sein.

In bestimmten Fällen sind die Abweichungen einstellbar (CHIPSET 
Parameter beim CONFIG LCD Befehl für "gängige" Displays), bei anderen 
nicht.

Ein Ansatzpunkt, um die LCD Ansteuerung selbst zu schreiben kann diese 
Diskussion sein:
Beitrag "LCD EA DOG-M und Bascom"

Diese Quellcodes (für ein anderes Display!) von Robert Mayr und Holger 
Bruns zeigen, wie eine hardwarenähere Ansteuerung mit eigenen Routinen 
statt mit den LCD Befehlen aussehen kann. Wenn du Glück hast, brauchst 
du nur eine andere Initialisierung und kannst die normalen 
LCD-Ausgabebefehle weiter benutzen. Wenn du Pech hast, musst du alles 
selbst machen.

Ein Timing für den KS0066U, allerdings in Assembler, findet sich bei
Beitrag "KS0066U oder Ähnliche --- LCD Treiber"

(*) http://www.mikrocontroller.net/articles/LCD#Weblinks
=> Pacific Display Devices Seite

Autor: Joachim B. (jojo84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Forum!

Ich habe mich die letzten Tage auch mit einem LCD mit einem KS0066 drauf 
beschäftigt. Ich hab auch fast nen Anfall gekriegt, bis ich festgestellt 
hab, daß nicht meine Initialisierung falsch ist, sondern meine 
Verdrahtung :( ...
Naja, aber weil scheinbar einige Leute Probs mit der Initialisierung 
haben möchte ich meinen Code mal zeigen, mit dem es funktioniert.
Zur Hardware: Atmega8 @ 8 MHz, LCD von Pollin, SC1604A.
ein GUTES Datenblatt für das LCD gibts hier: 
http://www.sun-tai.com.tw/cw/DownloadAttachment?at.... Das 
Datenblatt zum KS0066 ist das gängige von Samsung, da steht auch der 
Ablauf der Init drin.

ACHTUNG: ich habe DB4-DB7 vom LCD an Px4-Px7 angeschlossen, weil ich das 
angenehmer fand. EN, RS & RW liegen auf Px0-Px2. Die defines sehen dann 
wie folgt aus:
// Pinbelegung für das LCD, an verwendete Pins anpassen
#define LCD_PORT      PORTD
#define LCD_DDR       DDRD
#define LCD_RW        PD2
#define LCD_RS        PD1
#define LCD_EN        PD0
#define LCD_DB4      PD4
#define LCD_DB5      PD5
#define LCD_DB6      PD6
#define LCD_DB7      PD7

Auch die Initialisierungsroutine, die hier im Tutorium zu finden ist, 
hab ich für diese Pinbelegung angepasst (die Shifts und die 
Maskierungen). Die funktionierende Initialisierung mit der obigen 
Pinbelegung, sieht dann so aus:
void lcd_init(void)
{
  LCD_DDR = 0xF7;
 
  LCD_PORT &= ~(1<<LCD_RS);      // RS auf 0, "Befehl"
  LCD_PORT &= ~(1<<LCD_RW);      // RW auf 0, "schreiben"


// Function set
  LCD_PORT |= ((1<<LCD_DB5) | (1<<LCD_DB4));
  lcd_enable();
  LCD_PORT |= ((1<<LCD_DB5) | (1<<LCD_DB4));
  lcd_enable();
   LCD_PORT |= ((1<<LCD_DB7) | (1<<LCD_DB6));
   lcd_enable();
   _delay_ms(1);
 
 // Display on/off control 
   LCD_PORT = 0x00;
   lcd_enable();
   LCD_PORT |= 0xF0;
   lcd_enable();
   _delay_ms(1);

// entry mode
  LCD_PORT = 0x00;
   lcd_enable();
   LCD_PORT |= 0x10;
   lcd_enable();
   _delay_ms(1);

// entry mode
  LCD_PORT = 0x00;
   lcd_enable();
   LCD_PORT |= 0x70;
   lcd_enable();
   _delay_ms(1); 
 

   lcd_clear();
   lcd_home();
}
Das wars auch schon :) ... Der Code ist sicher heir und da noch zu 
optimieren, aber das lasse ich, weil es so ja funktioniert, ne?
Hoffe das kann jemandem helfen.

VG,
Joachim

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.