#include <stdio.h>
#include <string.h>
#define rs 22
#define en 23
#define D7 2
#define D6 4
#define D5 5
#define D4 18
void sendDataUpper(unsigned char value){
digitalWrite(D4,(value >> 0) & 1);
digitalWrite(D5,(value >> 1) & 1);
digitalWrite(D6,(value >> 2) & 1);
digitalWrite(D7,(value >> 3) & 1);
}
void sendDataLower(unsigned char value){
digitalWrite(D4,(value >> 4) & 1);
digitalWrite(D5,(value >> 5) & 1);
digitalWrite(D6,(value >> 6) & 1);
digitalWrite(D7,(value >> 7) & 1);
}
void cmd(unsigned char value){
sendDataUpper(value);
digitalWrite(rs, LOW);
digitalWrite(en, HIGH);
delay(10);
digitalWrite(rs, LOW);
digitalWrite(en, LOW);
delay(200);
sendDataLower(value);
digitalWrite(en, HIGH);
delay(1);
digitalWrite(en, LOW);
delay(2);
}
void dat(unsigned char value){
sendDataUpper(value);
digitalWrite(rs, HIGH);
digitalWrite(en, HIGH);
delay(10);
digitalWrite(rs, HIGH);
digitalWrite(en, LOW);
delay(200);
sendDataLower(value);
digitalWrite(en, HIGH);
delay(1);
digitalWrite(en, LOW);
delay(2);
}
void lcd_init(){
delay(20);
cmd(0x33);
cmd(0x32); // send 4 bit
cmd(0x28); /* 2 line, 5*7 matrix in 4-bit mode */
cmd(0x0c); /* Display on cursor off*/
cmd(0x06); /* Increment cursor (shift cursor to right)*/
cmd(0x01); /* Clear display screen*/
delay(2);
}
void str(char *disp){
int i;
for (i = 0; disp[i] != '\0'; i++) /* Send each char of string till the NULL */
{
dat (disp[i]);
delay(30);
}
}
void setup() {
// put your setup code here, to run once:
pinMode(rs, OUTPUT);
pinMode(en, OUTPUT);
pinMode(D7, OUTPUT);
pinMode(D6, OUTPUT);
pinMode(D5,OUTPUT);
pinMode(D4, OUTPUT);
lcd_init();
}
void loop() {
char data[16];
while(true){
for(int j = 0; j < 5; j++){
delay(1000);
cmd(0x80);
sprintf(data,"Jack %d",j);
str(data);
}
}
}