Parece que el comando del conjunto de funciones se repite varias veces, con diferentes retrasos. ¿Por qué no puede ser un solo comando de conjunto de funciones con todos los retrasos combinados? ¿Qué es característicamente especial de cada etapa?
Parece que el comando del conjunto de funciones se repite varias veces, con diferentes retrasos. ¿Por qué no puede ser un solo comando de conjunto de funciones con todos los retrasos combinados? ¿Qué es característicamente especial de cada etapa?
Todo tiene que ver con la conmutación de interfaz de 4 bits / 8 bits. Es realmente muy inteligente cuando lo piensas.
La interfaz de 4 bits utiliza los bits 4-7 e ignora los bits 0-3, divide una instrucción de 8 bits en dos nibbles de 4 bits y los envía en secuencia. Así que, dado que, la secuencia:
0b00110000
0b00110000
0b00110000
en modo de 4 bits dice:
0b00110000 // First nibble of "Set to 8 bit mode"
0b00110000 // Second nibble of "Set to 8 bit mode"
// Is now in 8 bit mode
0b00110000 // Set to 8 bit mode (in 8 bit mode).
Ahora, si sucede que está a mitad de camino a través de un par de nibble cuando se reinicializa (digamos que el MCU se reinicia), la secuencia se interpreta así:
0b00110000 // Second nibble of previous command
0b00110000 // First nibble of "Set to 8 bit mode"
0b00110000 // Second nibble of "Set to 8 bit mode"
// Is now in 8 bit mode
Sin embargo, si está en modo de 8 bits, la secuencia se interpreta como:
0b00110000 // Set to 8 bit mode (in 8 bit mode).
// Is now in 8 bit mode
0b00110000 // Set to 8 bit mode (in 8 bit mode).
// Is now in 8 bit mode
0b00110000 // Set to 8 bit mode (in 8 bit mode).
// Is now in 8 bit mode
Por lo tanto, no importa en qué modo o estado se encuentre la pantalla, recibe correctamente la instrucción "establecer en modo de 8 bits".
Los retrasos son para permitir que las funciones se ejecuten, lo que deja suficiente tiempo para que se ejecute la instrucción más larga posible que pueda quedar antes de la reinicialización.
Lea otras preguntas en las etiquetas lcd