我买了一台便宜的Wingstar 144x32液晶显示器,因为将它插入我的NodeMCU以显示一些信息会很不错。
我 期待的是,在互联网上无处可寻找到该液晶显示器的工作库。所以我以为我自己写了。
我花了几个小时阅读datasheet,试图弄清楚SPI指令是如何传递给LCD的。然后我发现在其他一些site上有一个Arduino的示例代码(这个代码很长,无法正确理解)和一个用于ATMega的代码,它简短且易于理解。
我打开文件,看到接口非常简单",如果我可以这样说的话。它看起来像这样:
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
这里没什么重要的,因为它只通过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);
}
尽管不了解&0xF0
或<<4)&0xF0
做了什么,我继续前进。
我随机选择了&#34;功能集&#34;指示和converted it到二进制文本,看看它是否正在做我正在思考的事情。
0x38 = 0000 0000 0011 1000
排除前8个字符(对那些字符没有意义),我留下了00111000
,这有意义将它放在那里:
因为: DL = 1 (选择了8位接口,就像ATMega代码中的注释 - 很棒)和 RE = 0 (基本指令,就像在在ATMega的代码中发表评论 - 太好了!)。
但现在真正的问题是:那些&#34; X&#34;在指令代码?我已经搜索了整个数据表,但没有发现那些&#34; X&#34; -es。为什么他们不一致?他们应该在那里做什么?
我希望我没有把它弄得太糟糕。
非常感谢任何帮助。
答案 0 :(得分:0)
他们'不关心'位。在阅读时,它们不包含有用的信息。在写作时,他们什么都不做。