|
Way down the list I seen that someone mentioned HD44780 with some links. This is the link I used to get things going. I found a box of these surplus at $1 or something a bunch of time ago, but all the connectors are reversed like the connector is on the wrong side of the board....but once I got that figured out, I got it going....
And the site that helped me get going with it.[^]
Good luck and enjoy.
|
|
|
|
|
Thanks
Real programmers use butterflies
|
|
|
|
|
Hi
i've only just just been playing with a 16 pin LCD1602 display on my raspberry pi yesterday, and im connecting it via I2C as it only needs 2 wires (+ gnd & 5v) but i do know you need I2C and SPI enabled for it to work. i use an adafruit python library, and it's all is pretty simple. i dont know arduino boards or how to do this on them, but maybe this snippet of info will help - btw i watched a few youtube video's for tutorials. GL
|
|
|
|
|
|
I haven't messed with the hitachi screens. can you give a PN/model to look at the docs?
usually not all pins are used, with the screens I've worked with in the past, based off of memory:
7 pins for the command byte
1 CTS
1 power for lcd cpu
1 power for back light (not usually crossed over as this pin can be PWM for dimming)
1+ grounds
1 reset - can sometimes be ignored, depending on the model. sometimes necessary on boot.
are you using a pre-made driver library? you will ether have to use their pin set up or configure the setup in the header file.
if you are trying to roll your own, it not too difficult, but sometimes finding the documentation in English can be rather difficult. there are usually a sequence of bytes that have to be sent to the LCD at startup to initialize them. then a 10 to 20ms for the LCD to be ready for commands.
some pins may require to switch I/O status to report something back to the driver. not all LCDs are 5v, many of them are the 3.3v on the logic side and would require a level shifter, but the backlight may still be 5v
If I have the choice in the future, I'd rather go with the I2C interface to save a lot of pins
I know of quite a few gotcha's in the back of my head, but it's been a few years since I've messed with LCD's and I haven't had my morning coffee yet.
|
|
|
|
|
Whenever you work with something like this, always look for the "Data Sheet" they are the source of all truth no matter what any user guides you get with the product say.
In your case, this is the one you need:
https://www.sparkfun.com/datasheets/LCD/HD44780.pdf
The HD44780 is the driver chip (Probably under a blob of black rubber) on the back of the display, and 99.9% of all this types of display use that driver chip.
Even the 3 wire I2C ones use that driver chip, they just put a multi port I2C GPOI chip (Such as an MCP23017) in front of the Hitachi one and take care of the pin handling for you.
The wiring you need for the display will look something like this:
(https://hacksterio.s3.amazonaws.com/uploads/attachments/1138784/basic_lcd_control_B4wegmYYMt.png)
That diagram is wired for "4 bit mode", these displays can be wired up to work in either 4 or 8 bit mode (The former is to save some connecting wires) in 4 bit mode you have to make 2 writes to the display to send a full byte, otherwise the programming commands (Values of the bytes sent) are identical between both modes.
Also pay close attention to those pre made boards you get with the kits, they are often wired from right to left, rather than left to right. This means that "Bit 0" of your 4 or 8 data pins is actually right most (Like in the diagram above) and bit 7 is left most.
Once you have your power hooked up, and your data lines, you need to pay close attention tot he 3 lines marked 'RS', 'R/W' and 'E'
The RS line is called register select and is toggled to a 1 or a 0 depending on what your sending to the display. If your sending a command byte (as described in the data sheet) EG: enable display, turn cursor on/off, set 4/8 bit mode etc then you need to be sending 0v on this line BEFORE you write the command byte.
If your sending a byte of data EG: a letter to display on the LCD, then 'RS' MUST be set to +5V
Your R/W line is the "Read NOT write line", pay close attention tot he fact that there is a vertical bar drawn over the top of the letter.
This vertical bar means that the signal is what's called "Active Low", or in laymans terms "it does something when it's held at 0v", in our case when the signal is "High" (+5v logic) then the signal tells the device to be in "Read Mode" for all of the 8 data bus lines, and when it's "NOT write" it's in write mode.
Why does this display have a read mode? Well LCD displays using this chip can read the letters entered from CG ram on the device, so you can actually use them as a single line input text console. The Cobalt RaQ3 Web server for example used this to great effect to allow the user to input things like the IP address of the server when setting it up, using no more than a simple 4 way up-down/left-right d-pad switch.
If your NOT planning on using this display for input and ONLY display (Which is pretty much the most common) then connect this line to your 0v supply ground line, and that will place the device permanently into "Write Mode" and you won't have to worry about syncing that signal.
Lastly we have the 'E' signal, this line is more of a strobe signal than anything else, this signal should be held at 0v for most of the time, the only time it goes to logic 1 (+5v) is once you have the data pins, and R/W + RS lines set up and ready to go.
Once all the other lines are ready, you toggle this to +5V, wait a mill second or two then toggle it back (The delay depends on the speed of your device and a lot of other conditions), some experimentation here will be needed. You will need to toggle this line once for every byte (date or instruction) you send to the LCD, if you do not the driver chip WILL NOT look at your signals and act on them.
The DX (0 to 7) lines are your 8 bit data interface, you send the bit patterns for the bytes you wish to send on these lines.
The power on these devices is quite easy, but you do need to be careful, as others have pointed out it's easy to get them reversed and "pop" a device, although if I'm honest, I've yet to kill one by getting the power wrong, they are quite surprisingly tough little displays most of them.
That said, there are often 2 different power supplies to hook up.
On ALL the ones I have, I have 2 separate +5/0v pins for the back light AND the device operation.
You can power the device just from the two power pins on the right, but without the backlight powered it can often be difficult to see what's on the display, this is where "OLED" versions of these displays are better, because they don't require a separate backlight given that they are self illuminating.
The remaining one that people are saying "needs a variable resistor" doesn't actually NEED one per say, but it does help.
This final pin is your contrast control, and needs a voltage any where between 0v and +5V, the closer to 0v the voltage is, the lighter the display is. What I often do is just hook this line directly to my +5V line, thus giving out maximum contrast/darkness, and ensuring I'm able to see something, then once I have it working and my code works, then I either put a fixed value in, something like 4.7k to get it roughly half way, or I'll put a small 10k trimming pot of some kind in.
Needless to say ALL of this is much easier on a bread board, if your going to do a lot of experimenting like this I highly encourage you to get some decent bread boards and some good quality du-pont hook up wires.
Hope that lot helps
Shawty
PS: I do Arduino, rPI, and Bare back AVR & MCP/PIC Microcontrollers, and the .NET book I'm on writing (when I get it finished) will have a section on .NET IoT using the .NET Core IoT libs (Well if I can get the code stable it will anyway) feel free to hit me up on twitter if you want to ask anything "@shawty_ds"
|
|
|
|
|
Assuming it's protocol compatible with HD44780, hardwiring the command 0b00001111 and then toggling the clock/enable bit should turn the display on, show the cursor, and make the cursor blink. Also, make sure RS & R/W are set to 0/GND, obviously VCC and GND are connected, and the backlight power is connected, if applicable (pins 15/16).
Of course, the assumes it powers on in 8-bit mode. If it powers up in 4-bit mode, it becomes messier. This wikipedia page gives a command sequence that will ensure the mode is consistent: Hitachi HD44780 LCD controller.
Note: I haven't actually tried this, but based on the wiki and datasheet, it should be the minimum needed to wire up (if manually toggling the clock with a button or wire touch, no arduino needed).
|
|
|
|
|
Hi honey the LCDwitch
any progress?
I just happen to be working on a PIC+LCD project; my LCD is working, after some struggle, and here are my recent observations:
1. pin 3 is most relevant; a lot of documentation is misleading, this pin is not "LCD power" or some similar, suggesting 5V would be reasonable. It is a contrast control input, the official approach is using a little potmeter, say 10K, between GND and 5V, and turning it very close to ground, NOT close to 5V. A good alternative seems to be just a diode from pin 3 to GND; that is what I'm using now.
2. The LCD needs a few commands to become alive; one of them is the "function set" command, holding a "display ON" bit; so you need some correct toggling of E, RS, and 4 or 8 data lines.
3. The pulses required on E are a bit special: the leading edge must fall after RS and RW have settled, and the falling edge after the data is presented. This is unlike most other micro-electronic peripherals I have ever seen (normally one edge is used to sample everything, and the other edge doesn't care much).
4. The data bus is either 8 or 4 bits wide; in order to get it in 4-bit mode RELIABLY you need a specific sequence of commands. Without proper initialization the display remains blank, as if no power were applied. And the display may remain confused as long as it is getting power (or a really correct command sequence).What Hitachi HD44780 LCD controller - Wikipedia[^] says is correct and effective, it is better then what a lot of data sheets provide! Some manufacturers that used to provide bad info are now refraining from providing initialization info at all. The mistakes can be blatant or subtle, I also found a github code sample that was wrong... This is what I'm using right now (using a 4-bit interface):
CALL WAIT40msec ; important!
BCF LCD_RS_PP ; set RS low
MOVLW 0x03 ; 8-bit interface
CALL display_write_nibble
CALL WAIT1msec
MOVLW 0x03 ; 8-bit interface
CALL display_write_nibble
CALL WAIT1msec
MOVLW 0x03 ; 8-bit interface
CALL display_write_nibble
CALL WAIT1msec
MOVLW 0x02 ; 4-bit interface
CALL display_write_nibble
CALL WAIT60usec
MOVLW 0x28 ; 4-bit interface, single line, 5*8 font
CALL display_send_fast_command
MOVLW 0x08 ; display off
CALL display_send_fast_command
MOVLW 0x01 ; clear
CALL display_send_fast_command
CALL WAIT2msec
MOVLW 0x0C ; display on, no cursor, no blink
CALL display_send_fast_command
MOVLW 0x06 ; mode: increment, no shift
CALL display_send_fast_command
The display_write_nibble subroutine sets E high, outputs a nibble, and clears E, all without extra delays.
The display_send_fast_command subroutine calls display_write_nibble twice and then waits 60µsec.
I did not compare that to whatever is present in other libraries such as Arduino's. With all I saw on internet, I'm inclined to only trust my own code...
5. LCD commands take some time to execute; a TYPICAL time is listed in the datasheet.
I decided against reading the busy flag (which isn't working anyway during the fist half of the initialization), instead I simply provide ample time for each command to be executed. So my R/W line is at GND permanently; this also eliminates the chance that the driving code is stuck in a wait-for-display-ready loop, keeping the display in an uninitialized state.
So I used fixed timing. It is wise to provide at least double the datasheet values, because (1) the internal microcontroller might run at a different frequency, and (2) HD44780 clones may hold different firmware and hence different timing.
6. Final remark: backlight pins 15 and 16 may or may not be swapped, and may or may not have some resistance in them (some 12 ohm). It all depends on the specifics of the PCB. Anyhow, the backlight is not essential, the display can be seen to be functional without it.
Luc Pattyn [My Articles]
If you can't find it on YouTube try TikTok...
|
|
|
|
|
I've decided to move to displays that are SPI or I2C based. It's just too many wires and i don't like putting pots in my circuits, and all that. it's just a mess and I'd rather go with something cleaner. Thanks though. I do have that display still but it's collecting dust. =)
Real programmers use butterflies
|
|
|
|
|
Hi All,
I suppose Task Manager is not really one those things you see everyday, but in fiddling today I noticed that the icon bar version has changed from a dark grey to a white with a green/red dotty back ground just plain strange don't remember that change...
|
|
|
|
|
No "green or red" for me; just a gray monitor icon with a blue and white performance chart.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
Unchanged for me - still a grey monitor.
Win10 Version 2004 (OS Build 19041.508)
Have you got an odd bit of desktop behind it or something?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Well, mine is 18363 all little behind yours, I haven't change the desktop for a while.
The monitor (bleedin' Flat Panel) is playing up with some resolutions...
|
|
|
|
|
I used to hate facial hair, until it grew on me.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I used to grow a beard, but my wife never liked it. She finally managed to get my goatee.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows.
-- 6079 Smith W.
|
|
|
|
|
Shave on you, Daniel!
"If we don't change direction, we'll end up where we're going"
|
|
|
|
|
funny thing. herself said she didn't like facial hair. I threatened to grow a beard if she cut her hair. after third kid pulling on her hair. She cut it. short. it wasn't the worst. But I still grew the beard. She likes the beard. so I still have beard/goatee depending. And herself has grown her hair back out. I think I won. But I am not sure. One can never be sure with ones spouse.
To err is human to really mess up you need a computer
|
|
|
|
|
Why did you strop shaving, or did you just refuzz to continue?
St Nic, patron saint of straight razors.
Ravings en masse^ |
---|
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein | "If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010 |
|
|
|
|
|
Hi all, how do I change my signature ?
"We can't stop here - this is bat country" - Hunter S Thompson - RIP
|
|
|
|
|
Click your name at the top, click My Settings in the left, choose the Forums and QA tab.
Social Media - A platform that makes it easier for the crazies to find each other.
Everyone is born right handed. Only the strongest overcome it.
Fight for left-handed rights and hand equality.
|
|
|
|
|
"I didn't mention the bats - he'd see them soon enough" - Hunter S Thompson - RIP
|
|
|
|
|
Go to your Settings. Select the Forums and QA tab and the signature is set there.
- I would love to change the world, but they won’t give me the source code.
|
|
|
|
|
"I didn't mention the bats - he'd see them soon enough" - Hunter S Thompson - RIP
|
|
|
|
|
Try it with your other hand.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
I have gotten it, my whole family got it, half the people at work got it, a 70 year old at work got it and was back to work in a week. It wasn't that bad. Does the US have a different version of Covid than Europe?
I know my anecdotal experiences don't prove anything on a grand scale nor am I trying to, but I do find it interesting that my experiences with Covid have been so much easier than others experiences.
Or, based on a thread yesterday about Subway, maybe it's because American's eat so much junk food our immune systems are stronger? Although I don't ever eat fast food.
Schools have been back in session for 2 months and nothing has happened. I know some denser populations had some problems when school opened back up.
Everyone in the world at some point will be exposed to this thing if they haven't already.
Maybe it's the people that got infected early on that are having the worst time? Maybe I had already been exposed and built a little immunity but then was exposed again and again and finally got it but it wasn't that bad?
Or maybe testing just doesn't work?
I find it interesting how varied the experiences with Covid are throughout the world. It's easy to understand those that have been impacted hard are fearful of it and those that haven't don't worry much about it.
Very interesting.
Social Media - A platform that makes it easier for the crazies to find each other.
Everyone is born right handed. Only the strongest overcome it.
Fight for left-handed rights and hand equality.
|
|
|
|
|