Reading from HD44780-based LCDs

Orlando:

The LED controller has 80 bytes of DDRAM with each byte corresponding to a specific location on an 80 character (40 x 2 or 20 x4) display. The Controller continuously scans this memory and for each location it reads the information in DDRAM, uses that information (as an address) to access CGROM or CGRAM and uses the CGROM/RAM data it finds at that address to put the corresponding character on the display. If you change the data at one of the DDRAM locations then the character displayed at the coresponding display location will change. Looking at it the other way - the only way to change what is on the display is to change the information in the DDRAM and the only way to change what is in DDRAM is to write information to the LCD controller.

If you pulse the Enable to get the next nibble and the display gets corrupted this means that you are not reading data from the LCD as you intended but you are writing data to the controller instead (which is what I said in reply #5).

In several posts you have stated that you have pulsed the Enable to get the next nibble but you have not mentioned anything about all the other steps that must be taken to read data from the LCD controller. I assume that you know what these steps are since they are also used in the 8-bit implementation which you imply you have done in your original post.

The bottom line is that neither I nor anyone else can help you any further without seeing some code.

(sir) Don