2017-09-10 6 views
1

Ich habe ein günstiges Wingstar 144x32 LCD gekauft, weil es schön wäre, es an meiner NodeMCU angeschlossen zu haben, um einige Informationen anzuzeigen.Serial Instruction Bit nicht klar

Was ich war nicht erwartet, war, dass nirgendwo im Internet könnte ich eine funktionierende Bibliothek für das LCD finden. Also dachte ich, ich würde mein eigenes schreiben.

Ich verbrachte mehrere Stunden damit, die datasheet zu lesen und herauszufinden, wie die SPI-Anweisungen an das LCD weitergeleitet wurden. Ich entdeckte dann, dass auf einem anderen site gab es einen Beispielcode für das Arduino (das ist zu lang, um richtig zu verstehen) und eine für die ATMega, die kurz und viel einfacher zu verstehen ist.

Ich öffnete die Dateien und sah, dass die Schnittstelle ziemlich "einfach" ist, wenn ich das sagen kann. Es sieht wie folgt aus:

write_command(0x38); // function set -- 8 bit mode, basic instruction set 
write_command(0x0F); // display control -- cursor on, blinking 
write_command(0x01); // display clear 
write_command(0x06); // entry mode -- cursor moves right, address counter increased by 1 

write_command ist nicht so wichtig, hier zu erwähnen, weil es nur den Befehl durch SPI sendet:

void write_command(unsigned char command) { 
    SPI_WriteByte(0xF8); // send command header 
    SPI_WriteByte(command&0xF0); // send high nibble 
    _delay_us(250); 
    SPI_WriteByte((command<<4)&0xF0); // send low nibble 
    _delay_us(750); 
} 

Trotz nicht zu verstehen, was die &0xF0 oder die <<4)&0xF0 tun, ich ging weiter.

Ich wählte zufällig die "Funktionssatz" Anweisung und converted it zu binärem Text, um zu sehen, ob es das tut, was ich denke.

0x38 = 0000 0000 0011 1000 

die ersten 8 Zeichen Ohne (Es wäre nicht sinnvoll, mit denen machen), ich bin mit 00111000 links, was Sinn es dort setzen würde:

enter image description here

Denn: DL = 1 (8bit Schnittstelle ausgewählt, wie der Kommentar im Code für den ATMega - super) und RE = 0 (Grundlegende Anweisung, wie im Kommentar im Code für den ATMega - klasse!).

Aber jetzt die eigentliche Frage: Was sind diese "X" in den Befehlscodes? Ich habe bereits das gesamte Datenblatt durchsucht und nichts über diese "X" -es gefunden. Warum sind sie inkonsistent? Was sollen sie dort machen?

Ich hoffe, ich habe es nicht zu schlecht gemacht.

Jede Hilfe wird sehr geschätzt.

+1

Sie sind "egal" Bits. Beim Lesen enthalten sie keine nützlichen Informationen. Beim Schreiben machen sie nichts. –

+0

@MartinJames Das bedeutet, dass ich diese Bits 1 oder 0 "meines Geschmacks" einstellen kann, da sie in dieser aktuellen Anweisung nutzlos sind? – Fusseldieb

+0

Ja, und beim Lesen ignorieren Sie einfach ihre Werte. –

Antwort

0

Sie sind "egal" Bits. Beim Lesen enthalten sie keine nützlichen Informationen. Beim Schreiben machen sie nichts.