fork download
  1. #include <xc.h>
  2. #define _XTAL_FREQ 4000000 // Define the crystal frequency for delay
  3.  
  4. // LCD control pins
  5. #define RS RD0
  6. #define EN RD1
  7.  
  8. // LCD data pins
  9. #define D4 RD2
  10. #define D5 RD3
  11. #define D6 RD4
  12. #define D7 RD5
  13.  
  14. // Function prototypes
  15. void LCD_Command(unsigned char);
  16. void LCD_Char(unsigned char);
  17. void LCD_Init(void);
  18. void LCD_String(const char*);
  19.  
  20. void main() {
  21. TRISD = 0x00; // PORTD as output
  22. LCD_Init(); // Initialize the LCD
  23.  
  24. const char name[] = "VEER"; // Name to display
  25.  
  26. for (int i = 0; name[i] != '\0'; i++) {
  27. LCD_Char(name[i]); // Display each character with a for loop
  28. __delay_ms(300); // Delay for visual effect
  29. }
  30.  
  31. while (1); // Infinite loop
  32. }
  33.  
  34. void LCD_Command(unsigned char cmd) {
  35. RS = 0; // Command mode
  36. D4 = (cmd >> 4) & 0x01;
  37. D5 = (cmd >> 5) & 0x01;
  38. D6 = (cmd >> 6) & 0x01;
  39. D7 = (cmd >> 7) & 0x01;
  40. EN = 1;
  41. __delay_ms(2);
  42. EN = 0;
  43.  
  44. D4 = cmd & 0x01;
  45. D5 = (cmd >> 1) & 0x01;
  46. D6 = (cmd >> 2) & 0x01;
  47. D7 = (cmd >> 3) & 0x01;
  48. EN = 1;
  49. __delay_ms(2);
  50. EN = 0;
  51. }
  52.  
  53. void LCD_Char(unsigned char data) {
  54. RS = 1; // Data mode
  55. D4 = (data >> 4) & 0x01;
  56. D5 = (data >> 5) & 0x01;
  57. D6 = (data >> 6) & 0x01;
  58. D7 = (data >> 7) & 0x01;
  59. EN = 1;
  60. __delay_ms(2);
  61. EN = 0;
  62.  
  63. D4 = data & 0x01;
  64. D5 = (data >> 1) & 0x01;
  65. D6 = (data >> 2) & 0x01;
  66. D7 = (data >> 3) & 0x01;
  67. EN = 1;
  68. __delay_ms(2);
  69. EN = 0;
  70. }
  71.  
  72. void LCD_Init(void) {
  73. LCD_Command(0x02); // 4-bit mode initialization
  74. LCD_Command(0x28); // 2 lines, 5x7 matrix
  75. LCD_Command(0x0C); // Display ON, Cursor OFF
  76. LCD_Command(0x06); // Auto-increment cursor
  77. LCD_Command(0x01); // Clear display
  78. }
  79.  
Success #stdin #stdout 0.03s 25312KB
stdin
Standard input is empty
stdout
#include <xc.h>
#define _XTAL_FREQ 4000000 // Define the crystal frequency for delay

// LCD control pins
#define RS RD0  
#define EN RD1  

// LCD data pins
#define D4 RD2
#define D5 RD3
#define D6 RD4
#define D7 RD5

// Function prototypes
void LCD_Command(unsigned char);
void LCD_Char(unsigned char);
void LCD_Init(void);
void LCD_String(const char*);

void main() {
    TRISD = 0x00; // PORTD as output
    LCD_Init();   // Initialize the LCD

    const char name[] = "VEER"; // Name to display

    for (int i = 0; name[i] != '\0'; i++) {
        LCD_Char(name[i]); // Display each character with a for loop
        __delay_ms(300);   // Delay for visual effect
    }

    while (1); // Infinite loop
}

void LCD_Command(unsigned char cmd) {
    RS = 0; // Command mode
    D4 = (cmd >> 4) & 0x01;
    D5 = (cmd >> 5) & 0x01;
    D6 = (cmd >> 6) & 0x01;
    D7 = (cmd >> 7) & 0x01;
    EN = 1;
    __delay_ms(2);
    EN = 0;

    D4 = cmd & 0x01;
    D5 = (cmd >> 1) & 0x01;
    D6 = (cmd >> 2) & 0x01;
    D7 = (cmd >> 3) & 0x01;
    EN = 1;
    __delay_ms(2);
    EN = 0;
}

void LCD_Char(unsigned char data) {
    RS = 1; // Data mode
    D4 = (data >> 4) & 0x01;
    D5 = (data >> 5) & 0x01;
    D6 = (data >> 6) & 0x01;
    D7 = (data >> 7) & 0x01;
    EN = 1;
    __delay_ms(2);
    EN = 0;

    D4 = data & 0x01;
    D5 = (data >> 1) & 0x01;
    D6 = (data >> 2) & 0x01;
    D7 = (data >> 3) & 0x01;
    EN = 1;
    __delay_ms(2);
    EN = 0;
}

void LCD_Init(void) {
    LCD_Command(0x02); // 4-bit mode initialization
    LCD_Command(0x28); // 2 lines, 5x7 matrix
    LCD_Command(0x0C); // Display ON, Cursor OFF
    LCD_Command(0x06); // Auto-increment cursor
    LCD_Command(0x01); // Clear display
}