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:
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.
Sie sind "egal" Bits. Beim Lesen enthalten sie keine nützlichen Informationen. Beim Schreiben machen sie nichts. –
@MartinJames Das bedeutet, dass ich diese Bits 1 oder 0 "meines Geschmacks" einstellen kann, da sie in dieser aktuellen Anweisung nutzlos sind? – Fusseldieb
Ja, und beim Lesen ignorieren Sie einfach ihre Werte. –