Go Down

Topic: 3 wire lcd speed up? (Read 1 time) previous topic - next topic

saunj

bperrybap - Thanks for your comprehensive and knowledgeable reply concerning LCD writing times.
I will try to fill in the blanks a well I can.
1. The link is OK - the button linking to my first, and only, Arduino project is at the very bottom, since they are in chronological order.
However I have attached a screen shot showing an inter-character interval of 188 us, plus the class I wrote and the shield circuit diagram I made.
2. "fast' does depend on your expectations and experiences. I have been using Picaxe with the same circuit and it takes milliseconds, it even requires bit-banging!
3. It is a HD44780 character display, so great speed is not needed - there are only 40 characters and the user must read it.
4. You are supposed to monitor the HD44780 busy flag and then wait another 4us. Time after write to end of busy is listed as 37 us.
   I didn't bother, just put in a 45us delay.
5. With an 8-bit shift register, I saw no point in using 4-bit mode. If I wanted to control the backlight I could put another SR in tandem.
6. My SerialLCD class is customized for my display and application, it is not general-purpose.

bperrybap


3. It is a HD44780 character display, so great speed is not needed - there are only 40 characters and the user must read it.


It kind of depends on what is being done in the rest of the code and how it is being done.
There is the refresh rate and then there is the latency.
The refresh rate is the rate at which the LCD is updated or changed.
The latency is the amount of time it takes to get the information to the display
once the display needs to be updated.

In a shift register implementation like these 100% of the latency is processing
time that is robbed from the CPU.
So even though the refresh may not need to very high say as low as a few times a second,
there may be some critical realtime needs that do not allow a particular amount of latency
when updating the LCD.

Normally for such instances, the overall code would use interrupts to yank the CPU away from something like
the LCD library into the more critical code.
But in some cases the code may not be using interrupts, in that case,
as long as the LCD code is fast enough to meet the minimum latency,
all the code could be done in the foreground without having to use interrupts.

---- bill

Go Up