2017-09-10 8 views
1

J'ai acheté un écran LCD Wingstar 144x32 à bas prix, parce que ce serait bien de le brancher sur mon NodeMCU pour montrer quelques informations. Ce que n'était pas attendait, c'était que nulle part sur Internet pourrais-je trouver une bibliothèque de travail pour ce LCD. Alors j'ai pensé que j'écrirais le mien.Bit d'instruction série pas clair

J'ai passé plusieurs heures à lire le datasheet, essayant de comprendre comment les instructions SPI ont été transmises à l'écran LCD. J'ai alors découvert que sur un autre site il y avait un exemple de code pour l'Arduino (qui est faaar trop long pour comprendre correctement) et un pour l'ATMega, qui est court et beaucoup plus facile à comprendre.

J'ai ouvert les fichiers et j'ai vu que l'interfaçage est assez "simple", si je puis dire. Il ressemble à ceci:

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 est pas important de mentionner ici, parce qu'il envoie uniquement la commande via SPI:

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); 
} 

En dépit de ne pas comprendre ce que le &0xF0 ou <<4)&0xF0 faire, je évolué.

J'ai choisi au hasard l'instruction "ensemble de fonctions" et converted it au texte binaire pour voir si c'est ce que je pense.

0x38 = 0000 0000 0011 1000 

Hors les 8 premiers caractères (Il ne serait pas logique avec ceux), je suis parti avec 00111000, ce qui serait logique de le mettre là:

enter image description here

Parce que: DL = 1 (8bit interface sélectionnée, comme le commentaire dans le code pour le ATMega - great) et RE = 0 (Instruction de base, comme dans le commentaire dans le code de l'ATMega - génial!).

Mais maintenant la vraie question: Quels sont ces "X" dans les codes d'instruction? J'ai déjà recherché toute la fiche technique et n'ai rien trouvé à propos de ces "X". Pourquoi sont-ils incompatibles? Que sont-ils censés faire là-bas?

J'espère que je n'ai pas raté trop mauvais.

Toute aide est fortement appréciée.

+1

Ce sont des bits «ne vous souciez pas». En lecture, ils ne contiennent aucune information utile. En écriture, ils ne font rien. –

+0

@MartinJames Cela signifie que je peux définir ces bits 1 ou 0 "de mon goût" car ils sont inutiles dans cette instruction en cours? – Fusseldieb

+0

Oui, et en lecture, ignorez simplement leurs valeurs. –

Répondre

0

Ce sont des bits "ne vous souciez pas". En lecture, ils ne contiennent aucune information utile. En écriture, ils ne font rien.