Menu

Adskeeper - header widge

728x90

Search This Blog

468x60

Navbar

AdsKeeper - IAB Display Standard Ad Unit

Saturday, October 10, 2026

dsPIC30F2010 4-bit HD44780 LCD in MikroC

Introduction 

The HD44780 character LCD controller still popular among micro-controller programmer today even in small electronic control projects. Currently there are a lot of Chinese equivalent LCD controller that is very low cost and low power.

 

dsPIC30F2010 4-bit HD44780 LCD in MikroC
MikroC LCD Example

It has 8-bit data bus with three control signal - Register Select (RS), Read or Write (R/W) and Enable (E). However it operate is a single 8-bit data transfer mode or 4-bit (two times) data transfer mode. Using its 4-bit data transfer mode is very common today. The 8-bit data is divided into two nibbles, higher nibble is transferred first and then the lower nibble.

 

STM32F103R6 MikroC 4-bit HD44780 LCD Example
A 16x4 HD44780 Character LCD

 

MikroC Programming for HD44780 and dsPIC30F2010 

MikroC for dsPIC has an LCD driver for HD44780 that operates in 4-bit data transfer mode with select-able control pins and data pins (D4:D7). The R/W pin must wires to GND as the master MCU only need to send commands or data.

 

dsPIC30F2010 4-bit HD44780 LCD in MikroC
MikroC LCD Example

It does not need a schematic as we can read and understand the C source codes.

 

dsPIC30F2010 4-bit HD44780 LCD in MikroC
Schematic Diagram

 

I don't need to write my codes due to time constraint. I use the MikroC LCD example in its library manual. There are some major routines in MikroC:

Library Routines

 

MikroC Source Code:


  1. // LCD module connections
  2. sbit LCD_RS at LATE0_bit;
  3. sbit LCD_EN at LATE1_bit;
  4. sbit LCD_D4 at LATE2_bit;
  5. sbit LCD_D5 at LATE3_bit;
  6. sbit LCD_D6 at LATE4_bit;
  7. sbit LCD_D7 at LATE5_bit;

  8. sbit LCD_RS_Direction at TRISE0_bit;
  9. sbit LCD_EN_Direction at TRISE1_bit;
  10. sbit LCD_D4_Direction at TRISE2_bit;
  11. sbit LCD_D5_Direction at TRISE3_bit;
  12. sbit LCD_D6_Direction at TRISE4_bit;
  13. sbit LCD_D7_Direction at TRISE5_bit;
  14. // End LCD module connections

  15. char txt1[] = "mikroElektronika";
  16. char txt2[] = "EasydsPIC4A";
  17. char txt3[] = "Lcd4bit";
  18. char txt4[] = "example";

  19. char i; // Loop variable

  20. void Move_Delay() { // Function used for text moving
  21. Delay_ms(500); // You can change the moving speed here
  22. }

  23. void main(){
  24. ADPCFG = 0xFFFF; // Configure AN pins as digital I/O

  25. Lcd_Init(); // Initialize LCD

  26. Lcd_Cmd(_LCD_CLEAR); // Clear display
  27. Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
  28. Lcd_Out(1,6,txt3); // Write text in first row

  29. Lcd_Out(2,6,txt4); // Write text in second row
  30. Delay_ms(2000);
  31. Lcd_Cmd(_LCD_CLEAR); // Clear display

  32. Lcd_Out(1,1,txt1); // Write text in first row
  33. Lcd_Out(2,5,txt2); // Write text in second row

  34. Delay_ms(2000);

  35. // Moving text
  36. for(i=0; i<4; i++) { // Move text to the right 4 times
  37. Lcd_Cmd(_LCD_SHIFT_RIGHT);
  38. Move_Delay();
  39. }

  40. while(1) { // Endless loop
  41. for(i=0; i<8; i++) { // Move text to the left 7 times
  42. Lcd_Cmd(_LCD_SHIFT_LEFT);
  43. Move_Delay();
  44. }

  45. for(i=0; i<8; i++) { // Move text to the right 7 times
  46. Lcd_Cmd(_LCD_SHIFT_RIGHT);
  47. Move_Delay();
  48. }
  49. }
  50. }


 

 

 

No comments:

Post a Comment

Adskeep- Standard Ads

336x280

DIY Electronic Projects And Instruments

AdsKeeper - 2091654

Labels

23K256 (1) 24C16B (2) 25AA010A (2) 8051 (7) 93AA46B (1) ADC (36) Analog Comparator (1) Arduino (16) ARM (32) AT89C52 (7) ATMega32 (59) ATMega644P (27) AVR (88) AVR PCB (2) Bootloader (1) CCS PICC (31) Change Notify Interrupt (CNI) (2) DAC (2) DHT11 (5) Display (151) Distance Sensor (3) dot matrix (1) ds1307 (10) DS18B20 (6) ds3231 (1) ds3232 (2) dsPIC (7) dsPIC30F1010 (3) dsPIC30F2010 (8) EEPROM (5) Environment Sensor (6) ESP32 (1) esp8266 (1) Graphical LCD (3) HD44780 (7) I2C (38) ILI9341 (1) Input/Output (82) Interrupt (22) IoT PCB (1) Keil (5) Keypad (16) KS0108 (3) LCD (81) LM35 (4) Master/Slave (2) MAX7221 (1) MCP23017 (8) MCP23S17 (7) MCP4921 (1) MCP4922 (2) Meter (3) MikroC (2) MikroC ARM (1) MikroC dsPIC (3) Module PCB (2) Motor (15) MPLABX (73) Nokia 5110 LCD (4) OLED (2) One-Wire (7) Oscillator (8) PCB (13) PCD8544 (3) PCF8574 (10) PIC (111) PIC12F (3) PIC16 (105) PIC16F628A (3) PIC16F630 (2) PIC16F716 (4) PIC16F818 (11) PIC16F818/819 (3) PIC16F84A (16) PIC16F876A (2) PIC16F877A (9) PIC16F88 (2) PIC16F887 (60) PIC18 (19) PIC18F1220 (5) PIC18F2550 (5) PIC18F4550 (12) PICKit2 (1) PICMicro PCB (4) Pin Change Interrupt (1) PWM (12) RTC (12) SBN0064G (1) Sensor (15) SH1106 (3) Shift Register (14) Shift Registers (16) SN74HC595N (4) Software TWI (2) SPI (41) ST7735 (1) STM32 (29) STM32 Black Pill (1) STM32 Blue Pill (12) STM32 HAL (23) STM32CubeIDE (32) STM32F103C8T6 (9) STM32F103R6 (18) STM32F401CCU6 (1) SysTick (7) temperature sensor (15) TFT (1) TG12864A (1) Thermometer (22) Timer/Counter (32) TM1637 (2) twi (10) UART (10) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (96)