LZ 迷糊的只是 应该 先 En=1 再 P0=DATA, 还是 先 P0=DATA 再 En=1;
En 是 LCD 使能端,En=1 表示 使能 LCD 操作,En=0 表示 禁止 LCD 操作。
程序前面 已经 对 RS 跟 RW 进行了选择(写指令),如果 这时候 开启 En 使能端,那么 LCD 将 允许 该操作(写指令),同时 将 数据端P0 的数据 读取到 LCD,这个过程的时间 是 ns 级别 的,程序还没来得及 将 DATA 的 数据 送到 P0 ,就已经发生了 数据被读取的操作,也就是说,LCD 读进去的数据,并不是 LZ 想要的 DATA 数据,而是 之前 的数据,很可能是随机的。这将导致LCD 执行了错误 的命令,或是 无法识别命令。
所以 ,要在使能端 En=1 前,先将 数据 DATA 放到 数据口P0,再 使能 En,如此 LCD 就会 读取到 正确 的命令数据了。