2
\$\begingroup\$

I'm not asking for a driver specifically, but how exactly it works.

I looked up the 2 chips that were in it. HD44780A00 and HD66100F to be exact. I'm assuming one is a display driver? And the other is a segment driver?

I guess I'm looking to learn how, in this most basic terms, for instance, a pixel or a character is put on the screen.

I know how to use it with libraries and such. That's simple (just follow the instructions). But I want to understand what's going on.

I looked at the instruction set here. But is that just for the HD44780A00 or HD661001F? I guess I'm confused at what this instruction set is or what is it for. I guess what I'm asking is: what exactly is the process for sending a single pixel and how exactly does that work.

It might be too complicated and if it is, that's cool. I'm just trying to figure out how it works at the low level.

\$\endgroup\$
5
\$\begingroup\$

The HD44780 is a character LCD controller, which means you write ASCII codes to the LCD for the text you want to display. If you want to control pixels individually you have to go for a graphic LCD.

The HD44780 does offer the possibility to display some limited text-based graphics, though; you can define 8 custom characters, but at 5 x 7 pixels per graphic that won't allow you to display anything like an picture.

The HD66100F is an 80-segment LCD driver for e.g. a 10 digit 7-segments display.

|improve this answer|||||
\$\endgroup\$
2
\$\begingroup\$

LCD is basically a kind of pixels showing display. HD66100F as said is 80 segment driver. In a very short term HD44780 converts your ASCII code information into "What" & "Where". This information is then passed to HD66100F decides "How" to show that.

|improve this answer|||||
\$\endgroup\$
1
\$\begingroup\$

A typical character LCD controller is designed to control an LCD up to 40 characters wide and two rows high (a matrix of 200x16 dots). Wiring such a controller directly to LCD glass, however, would require that it have 216 pins connected to the glass in addition to the pins needed for power, processor connection, etc. Having that many pins on a single IC package can be a bit tricky. Consequently, what is commonly done is to have the matrix controller operate the 16 row wires and the first 40 column wires, and--for displays bigger than that--have it supply data sequentially to additional segment controller chips each of which will add another 40 (or perhaps 80) column wires.

It's interesting to note that 16x1 is a very common size of display, and 16x1 displays are often wired as an 8x2 display, but with the bottom row physically placed by the right-hand side (thus allowing use of the controller chip without any additional driver). Four-line displays of up to 20 characters across are wired as two-line displays with the right-hand side stacked below the left-hand side. Four-line displays with 24-40 characters per row are usually wired as two independent two-line displays stacked vertically.

|improve this answer|||||
\$\endgroup\$
  • \$\begingroup\$ Ok, so if it's doing the rows/columns...how does it like 'choose' which pixel within each row/column.? \$\endgroup\$ – user3073 Aug 15 '12 at 2:53
  • \$\begingroup\$ The matrix is often arranged differently, so that you need a lot less pins, like 100 x 16 x 2 (100 + 32 pins) or 50 x 16 x 4 (50 + 64 pins, which is the lowest you can go). \$\endgroup\$ – stevenvh Aug 15 '12 at 5:56
  • \$\begingroup\$ @stevenvh: Every display controller I've ever seen which imitated the HD44780 has had precisely 16 row wires, and I would guess that such displays constitute over 99% of the market for text-only displays. While one could reduce the number of column drivers needed for a 20x4 display by using 32:1 or even 50:1 or 64:1 multiplexing, one would have to use something other than a 44780-based display to do so, since that chip has no facility for multiplexing beyond 16:1. \$\endgroup\$ – supercat Aug 15 '12 at 15:23
  • \$\begingroup\$ @Sauron: The intensity of each pixel is a function of the average of the square of the voltage between the row and the column, with a requirement that the average DC voltage on each pixel must be roughly zero (meaning positive and negative voltages must average out). For a 4:1 display, this is best done by driving the rows one at a time to one rail, while inactive rows are driven 1/3 of the way to the other rail. The columns which should be active on that row are driven fully to the other rail, while inactive ones are driven 2/3 of the way. The rails switch polarity every frame... \$\endgroup\$ – supercat Aug 15 '12 at 15:26
  • \$\begingroup\$ ...to avoid any average DC voltage. Driving things in this way, active segments on the active row receive full voltage and thus full activation, while inactive segments on the active row receive 1/3 voltage and thus 1/9 activation. Segments on the inactive row may have +1/3 or -1/3 voltage across them depending upon whether they're energized in the active row, but in either case will be 1/9 activated. Since each segment will be in the active row 1/4 of the time and in an inactive row 3/4 of the time, ... \$\endgroup\$ – supercat Aug 15 '12 at 15:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy