#define RS 13
#define RW 12
#define E 8
#define CS1 A3
#define CS2 A2
#define RST 9
#define DB0 A0
#define DB1 A1
#define DB2 7
#define DB3 6
#define DB4 5
#define DB5 4
#define DB6 3
#define DB7 2
unsigned char nhd[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x38, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x18, 0x18, 0x98, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
0xD8, 0xD8, 0x00, 0xF8, 0xF8, 0xE0, 0x80, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0x98,
0xD8, 0xD8, 0x40, 0x00, 0x00, 0x18, 0x78, 0xE0, 0x80, 0xC0, 0x78, 0xF8, 0xC0, 0x80, 0xF0, 0xF8,
0x18, 0x00, 0x00, 0xF8, 0xF8, 0xC0, 0xC0, 0xC0, 0xF8, 0xF8, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x78,
0x38, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x38, 0xF0, 0xC0, 0x00, 0xC0, 0xE0, 0x78, 0x18, 0x00, 0x80,
0xE0, 0xF0, 0xD8, 0xD8, 0xD8, 0xD8, 0x00, 0x00, 0x00, 0xF8, 0xF8, 0x70, 0xE0, 0x80, 0xF8, 0xF8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x88, 0x1E, 0x3F, 0x3F, 0x3F, 0x3F, 0x1E, 0x0C,
0x0C, 0x0C, 0x0C, 0x0C, 0x8C, 0xCE, 0xC6, 0x73, 0x7B, 0x19, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x80, 0x87, 0x87, 0x80, 0x83, 0x87, 0x07, 0x00, 0x00, 0x00, 0x80, 0x83, 0x06, 0x06,
0x06, 0x06, 0x86, 0x80, 0x80, 0x80, 0x80, 0x83, 0x87, 0x07, 0x00, 0x00, 0x87, 0x87, 0x83, 0x80,
0x80, 0x80, 0x00, 0x07, 0x07, 0x00, 0x80, 0x80, 0x07, 0x07, 0x00, 0x00, 0x06, 0x07, 0x03, 0x01,
0x81, 0x83, 0x07, 0x06, 0x04, 0x00, 0x80, 0x80, 0x03, 0x07, 0x07, 0x81, 0x80, 0x00, 0x00, 0x00,
0x01, 0x03, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x03, 0x07, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3F, 0x3F, 0x31, 0x31, 0x31, 0x33, 0x3F, 0x0E, 0x00, 0x00, 0x3F, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x37, 0x37, 0x35, 0x35, 0x3D, 0x3D, 0x19, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x0C, 0x08,
0x0D, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x3F, 0x3F, 0x20, 0x20, 0x20, 0x00, 0x00, 0x30, 0x3C, 0x1F,
0x19, 0x1B, 0x1E, 0x38, 0x20, 0x00, 0x01, 0x01, 0x07, 0x3E, 0x3E, 0x03, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E,
0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x06, 0x0C, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x1E, 0x1E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1E, 0x16, 0x12, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1E, 0x0A, 0x1E, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0C, 0x18, 0x1E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x18, 0x0E, 0x0E, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1E, 0x1E, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x12, 0x12, 0x1E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x06, 0x0C, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0E,
0x0E, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
void cmd(byte c, bool isLeft) {
digitalWrite(DB7, (c & 0b10000000) > 0 ? HIGH : LOW);
digitalWrite(DB6, (c & 0b01000000) > 0 ? HIGH : LOW);
digitalWrite(DB5, (c & 0b00100000) > 0 ? HIGH : LOW);
digitalWrite(DB4, (c & 0b00010000) > 0 ? HIGH : LOW);
digitalWrite(DB3, (c & 0b00001000) > 0 ? HIGH : LOW);
digitalWrite(DB2, (c & 0b00000100) > 0 ? HIGH : LOW);
digitalWrite(DB1, (c & 0b00000010) > 0 ? HIGH : LOW);
digitalWrite(DB0, (c & 0b00000001) > 0 ? HIGH : LOW);
digitalWrite(isLeft ? CS1 : CS2, HIGH);
digitalWrite(RW, LOW);
digitalWrite(RS, LOW);
digitalWrite(E, LOW);
//delay(4);
digitalWrite(E, HIGH);
digitalWrite(isLeft ? CS1 : CS2, LOW);
//delay(10);
}
void snd(byte d, bool isLeft) {
digitalWrite(DB7, (d & 0b10000000) > 0 ? HIGH : LOW);
digitalWrite(DB6, (d & 0b01000000) > 0 ? HIGH : LOW);
digitalWrite(DB5, (d & 0b00100000) > 0 ? HIGH : LOW);
digitalWrite(DB4, (d & 0b00010000) > 0 ? HIGH : LOW);
digitalWrite(DB3, (d & 0b00001000) > 0 ? HIGH : LOW);
digitalWrite(DB2, (d & 0b00000100) > 0 ? HIGH : LOW);
digitalWrite(DB1, (d & 0b00000010) > 0 ? HIGH : LOW);
digitalWrite(DB0, (d & 0b00000001) > 0 ? HIGH : LOW);
digitalWrite(isLeft ? CS1 : CS2, HIGH);
digitalWrite(RW, LOW);
digitalWrite(RS, HIGH);
digitalWrite(E, LOW);
// delay(4);
digitalWrite(E, HIGH);
digitalWrite(isLeft ? CS1 : CS2, LOW);
//delay(1);
}
void disp(const unsigned char *pic) //show Newhaven Display Logo
{
int page;
//page = 0xB8;
for (int page = 0xB8; page < ((0xB8) + 8); page++) {
cmd(page, true);
cmd(0x41, true);
for (int i = 0; i < 64; i++) {
snd(*pic, true);
pic++;
}
delay(1);
cmd(page + 1, false);
cmd(0x41, false);
for (int i = 0; i < 64; i++) {
snd(*pic, false);
pic++;
}
}
}
void setup() {
Serial.begin(9600);
pinMode(E, OUTPUT);
pinMode(RW, OUTPUT);
pinMode(RS, OUTPUT);
pinMode(RST, OUTPUT);
pinMode(DB7, OUTPUT);
pinMode(DB6, OUTPUT);
pinMode(DB5, OUTPUT);
pinMode(DB4, OUTPUT);
pinMode(DB3, OUTPUT);
pinMode(DB2, OUTPUT);
pinMode(DB1, OUTPUT);
pinMode(DB0, OUTPUT);
pinMode(CS1, OUTPUT);
pinMode(CS2, OUTPUT);
digitalWrite(RST, LOW);
delay(10);
digitalWrite(RST, HIGH);
digitalWrite(E, LOW);
digitalWrite(RS, LOW);
digitalWrite(RW, LOW);
cmd(0x3F, false); //Display On
cmd(0x3F, true); //Display On
disp(nhd);
}
void loop() {
}