Monday, August 31, 2020

ATMega32 interfaces to HD44780 Character LCD in 4-bit mode

Overview

In the previous post, I showed a 8-bit parallel port LCD interfacing with ATMega32 digital ports. However, as it's stated in the datasheet of HD44780, this controller could interface using only its four upper data bits (D4 to D7). 

ATMega32 interfaces to HD44780 Character LCD in 4-bit mode
An example of using the LCD in 4-bit data lines.

In 4-bit data transfer mode, however the controller requires its full 8-bit instruction or LCD data. To send the 8-bit instruction or data, the connected MCU needs to send it twice. 
  1. The MCU sends the high nibble first
  2. Finally the lower nibble shift left for four times and send it to the LCD D7:4 pins.
ATMega32 interfaces to HD44780 Character LCD in 4-bit mode
Timing diagram for 4-bit interfacing mode

By following, the JHD162A the step-by-step 4-bit LCD interfacing configuration shown below.


Both data and instruction bytes send the controller is the same to one's in the 8-bit mode. But they are separated to send twice as described above.

LCD Interfacing And Programming In 4-bit Mode

Using Two Distinct Ports  

At this beginning example, I use two distinct port for LCD control pins and LCD data/instruction pins, respectively.

ATMega32 interfaces to HD44780 Character LCD in 4-bit mode
Schematic diagram for 4-bit LCD interfacing

The program display the time in days and HH:MM:SS since the MCU powered up. I fetch the source code from my GitHub gist respiratory below.




ATMega32 interfaces to HD44780 Character LCD in 4-bit mode
The simulation shows 1 minute and 38 seconds since the MCU powered up.

Click here to download this example archive. 

Using A Single Port

We can use a single port for LCD interfacing in some situations. The overall process is the same. But we must select any control pins in the same port.

ATMega32 interfaces to HD44780 Character LCD in 4-bit mode
Using A Single Port - Here I use a 20x4 LCD.

Source code fetched from gist.


ATMega32 interfaces to HD44780 Character LCD in 4-bit mode
Schematic Diagram For A Single Port Interfacing

Click here to download example archive. This character LCD can be driven by a serial to parallel shift registers. We can use these two chips - the SN74HC595 and the SN74HC164.


No comments:

Post a Comment

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (54) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (46) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (66) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (2) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (30) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)