OK, using a 7 segment LED tutorial, I adapted it for my LCD below:
//Test script to display numbers on a Static LCD via I2C
#include <Wire.h> //Include Wire Libarary
byte address = 0x3A; //Address of PCF8577 with A1,A2 to grnd, and A0 as OSC
byte Register = B00000000; // Control byte for first register
byte BankA = B00000000; //
byte BankB = B00000000; // four segment bytes
byte BankC = B00000000; //
byte BankD = B00000000; //
#define BUTTON 11 // Attach Switch to Digital Pin 11 of Arduino
int count = 0; // current display count
int val = 0; // digital input from button
void setup() {
Wire.begin();
pinMode(BUTTON, INPUT);
zero(); // set "0" for default display
}
void loop() {
val = digitalRead(BUTTON);
if (val == HIGH) { // if Switch is pressed
count++;
delay(200);
switch (count) {
case 0:
zero();
break;
case 1:
one();
break;
case 2:
two();
break;
case 3:
three();
break;
case 4:
four();
break;
case 5:
five();
break;
case 6:
six();
break;
case 7:
seven();
break;
case 8:
eight();
break;
case 9: {
nine();
count = -1;
break;
}
}
}
DisplayUpdate(); //Update the LCD with the current info
}
// 0 => ABCDEF
void zero() {
bitSet(BankB,7);
bitSet(BankB,6);
bitSet(BankB,5);
bitSet(BankB,4);
bitSet(BankC,1);
bitSet(BankC,3);
bitClear(BankC,2);
}
// 1 => BC
void one() {
bitClear(BankB,7);
bitClear(BankB,6);
bitClear(BankB,5);
bitClear(BankB,4);
bitSet(BankC,1);
bitSet(BankC,3);
bitClear(BankC,2);
}
// 2 => ABDEG
void two() {
bitSet(BankB,7);
bitClear(BankB,6);
bitSet(BankB,5);
bitSet(BankB,4);
bitClear(BankC,1);
bitSet(BankC,3);
bitSet(BankC,2);
}
// 3 => ABCDG
void three() {
bitSet(BankB,7);
bitClear(BankB,6);
bitClear(BankB,5);
bitSet(BankB,4);
bitSet(BankC,1);
bitSet(BankC,3);
bitSet(BankC,2);
}
// 4 => BCFG
void four() {
bitClear(BankB,7);
bitSet(BankB,6);
bitClear(BankB,5);
bitClear(BankB,4);
bitSet(BankC,1);
bitSet(BankC,3);
bitSet(BankC,2);
}
// 5 => ACDFG
void five() {
bitSet(BankB,7);
bitSet(BankB,6);
bitClear(BankB,5);
bitSet(BankB,4);
bitSet(BankC,1);
bitClear(BankC,3);
bitSet(BankC,2);
}
// 6 => ACDEFG
void six() {
bitSet(BankB,7);
bitSet(BankB,6);
bitSet(BankB,5);
bitSet(BankB,4);
bitSet(BankC,1);
bitClear(BankC,3);
bitSet(BankC,2);
}
// 7 => ABC
void seven() {
bitSet(BankB,7);
bitClear(BankB,6);
bitClear(BankB,5);
bitClear(BankB,4);
bitSet(BankC,1);
bitSet(BankC,3);
bitClear(BankC,2);
}
// 8 => ABCDEFG
void eight() {
bitSet(BankB,7);
bitSet(BankB,6);
bitSet(BankB,5);
bitSet(BankB,4);
bitSet(BankC,1);
bitSet(BankC,3);
bitSet(BankC,2);
}
// 9 => ABCDFG
void nine() {
bitSet(BankB,7);
bitSet(BankB,6);
bitClear(BankB,5);
bitSet(BankB,4);
bitSet(BankC,1);
bitSet(BankC,3);
bitSet(BankC,2);
}
void DisplayUpdate() {
Wire.beginTransmission(address); // send the address and the write cmnd
Wire.send(Register); // choose start register
Wire.send(BankA); //
Wire.send(BankB); // send the four bytes
Wire.send(BankC); //
Wire.send(BankD); //
Wire.endTransmission();
}
As I progress I will post my additions. At any time, If someone sees something I could have coded differently to save space and memory Please offer your opinions/expertise. I am just a novice, so basically I'm just mimicking everyone else's genius.
Thanks PaulS for spoon feeding me earlier to get me started.