2019-10-15 04:09发布
南有乔木 发表于 2017-2-8 13:30 首先,例程中LCD显示控制器采用的是8080并口方式,需要对8080并行总线有一个了解。 其实各类总线的功能都 ...
邵少少 发表于 2017-2-8 13:38 非常感谢您回复的这么详细。 这些我明白的。现在是我在例程中注意到写寄存器LCD_WR_REG()函数既写命令, ...
南有乔木 发表于 2017-2-8 14:09 就像例程中的 void LCD_DisplayOn(void) {
最多设置5个标签!
非常感谢您回复的这么详细。
这些我明白的。现在是我在例程中注意到写寄存器LCD_WR_REG()函数既写命令,又写寄存器地址,如果寄存器地址和命令一样,LCD怎么来区分,此时两者的时序是一样的,都是在RS低电平下完成,这时候应该理解为写入的是命令。
这个函数写入的是寄存器地址的时候假如和命令是一样的,LCD怎么区分?还是我理解跑偏了?
就像例程中的
void LCD_DisplayOn(void)
{
if(lcddev.id==0X9341||lcddev.id==0X6804||lcddev.id==0X5310||lcddev.id==0X1963)LCD_WR_REG(0X29); //开启显示
else if(lcddev.id==0X5510)LCD_WR_REG(0X2900); //开启显示
else LCD_WriteReg(0X07,0x0173); //开启显示
}
每种芯片对应的指令及相应功能都在datasheet中给出了,一种芯片,开发商不可能在开发的时候给自己制定两个一模一样指令来控制不同的功能啊。。
你贴的例程R7应该就是0x07这个指令吧。。
LCD_WriteReg()函数包含了写寄存器编号和数据两个参数,写寄存器编号也是一种指令吧。。就是写命令,都是一回事。。不可能重复啊
这是我的理解
我一开始也是和你一样的理解,结果看到了这个真的有些不懂了,因为GRAM排序肯定是和命令有重叠的,从00开始就重叠了。所以厂家考虑到这些,在读写GRAM前必须写入读命令0x2E和写命令0x2C,但是例程在读芯片ID时并没有先写入命令,而是直接读出ID,让我不太明白,例如图中我标注的
圈出来的部分应该是读取其他芯片ID的指令,为了兼容原子的所有LCD芯片,具体你可以从datasheet中去找。。根据9341数据手册,读取ID需要指令0xd3 读ID4指令。。在你所标注程序下方有体现
一周热门 更多>