??? 12/21/06 18:32 Read: times |
#129937 - Use the datasheet, Luke ... Responding to: ???'s previous message |
Anyone who reads the datasheet in the context of a typical peripheral, knows that the 'E' signal is simply a bus-interface control, having nothing at all to do with the operation of the LCD. The controller (HD44780) has a bus interface for the purpose of communicating with the host controller. The bus interface timing is controlled by the 'E' strobe, which is just that, namely a STROBE. Without respect for other considerations, e.g. how to set the other controls and data, the 'E' signal is intended to be the decoded select strobe, telling the HD44780 that it should sample what's on its host interface port NOW.
The datasheet (my dog's sleeping on the pile of datasheets on the floor next to my right foot, so I won't dig it out, but IIRC ...) says that that strobe has to be high for about 400 ns or longer. That has ABSOLUTELY NOTHING to do with the busy flag. The way in which I interpret the busy flag description is that it is the MSB of a status byte that can be read and tested repeatedly until, finally, it goes to 0. The 'E' strobe is raised and lowered as quickly as possible, so long as its duration meets or exceeds the datasheet minimum. Each time it is raised, one can read the current value of the status byte. The rate and duty cycle of the LCD determines how long each command takes. It does NOT have any effect on the bus interface timing. If you know the rate and duty cycle used in YOUR particular LCD, you can operate open loop, i.e. you can simply time out the command duration. If you don't initialize the LCD correctly, however, you can wait an awfully long time for the busy flag to become a valid parameter. The first initialization command has to be sent twice in succession, and timed out open-loop for the specified time. If you fail to do that, you're on your own and will probably be disappointed. Note that on 12-clockers operating at 16 MHz or slower, one can attach the LCD to the MCU as a memory-mapped peripheral and achieve useable timing. Simply NAND (negative logic OR) nRD, nWR, and the negative-going address decoder output to form 'E', use nWR as R/w and use A0 as RS. RE |
Topic | Author | Date |
44780 LCD | 01/01/70 00:00 | |
have a look at the datasheet, maybe? | 01/01/70 00:00 | |
I Did | 01/01/70 00:00 | |
some clarification | 01/01/70 00:00 | |
Dont check BUSY flag. | 01/01/70 00:00 | |
Use the datasheet, Luke ... | 01/01/70 00:00 | |
Got It! | 01/01/70 00:00 | |
Lazy dog! | 01/01/70 00:00 | |
Can yours train mine ? | 01/01/70 00:00 | |
My dogs like cats ... | 01/01/70 00:00 | |
LCD | 01/01/70 00:00 | |
The "gotcha" is that it has to be initialized![]() | 01/01/70 00:00 |