int CLOCK=10; int DATA=11; int LATCH=12; int WE=13; //CDEABFG byte digits[] = { 0b01111101, 0b00000101, 0b01110110, 0b01010111, 0b00001111, 0b01011011, 0b01111011, 0b00010101, 0b01111111, 0b01011111, 0b00111111, 0b01101011, 0b01111000, 0b01100111, 0b01111010, 0b00111010};//0b1110111, 0b1000001, 0b1101110, 0b1101011, 0b1011001, 0b0111011, 0b0111111, 0b1100001, 0b1111111, 0b1111011, 0b1111101, 0b0011111, 0b0110110, 0b1001111, 0b0111110, 0b0111100}; byte digitadress[] = {3,2,1,0}; byte hexoffset=4; byte binary1offset=8; byte binary2offset=12; byte binary1digits[] = {0b00000000, 0b10000000, 0b01000000, 0b11000000}; byte binary2digits[] = {0b00000000, 0b00000101, 0b00101000, 0b00101101}; void writeEEprom(int address, byte data){ byte MSB = (address & 0xFF00) >> 8; byte LSB = address & 0x00FF; //char buf[7]; //sprintf(buf, "%08b %08b %08b", MSB,LSB, data); //char* x=return_byte(LSB); //Serial.println(x); //char* y=return_byte(MSB); //Serial.println(y); //Serial.println(LSB); //char* z=return_byte(data); //Serial.println(z); //Serial.println("."); //shiftOut(DATA,CLOCK,MSBFIRST,data); shiftOut(DATA,CLOCK,LSBFIRST,data); shiftOut(DATA,CLOCK,MSBFIRST,MSB); shiftOut(DATA,CLOCK,MSBFIRST,LSB); digitalWrite(LATCH,LOW); digitalWrite(LATCH,HIGH); digitalWrite(LATCH,LOW); digitalWrite(WE,LOW); delayMicroseconds(1); digitalWrite(WE,HIGH); delay(10); } char *return_byte (byte source) { static unsigned char byte[8]; unsigned char i; for(i = 0; i < 8; i++) { byte[i] = '0' + (source & 1); source >>= 1; } return byte; } void writeNumber(byte number){ Serial.println(number); Serial.println("DEZIMAL"); byte divider=1; for (int digit = 0; digit < 4; digit++) { int address=number+256*digitadress[digit]; if (digit>2){ writeEEprom(address,0); } else{ byte data=(number/divider)%10; Serial.println(data); writeEEprom(address,digits[data]); divider*=10; } } Serial.println("HEX"); divider=1; for (int digit = 0; digit < 4; digit++) { int address=number+256*(digitadress[digit]+hexoffset); if (digit>1){ writeEEprom(address,0); } else{ byte data=(number/divider)%16; writeEEprom(address,digits[data]); divider*=16; } } Serial.println("BINARY 1"); divider=1; for (int digit = 0; digit < 4; digit++) { int address=number+256*(digitadress[digit]+binary1offset); byte data=(number/divider)%4; writeEEprom(address,binary1digits[data]); divider*=4; } Serial.println("BINARY 2"); divider=1; for (int digit = 0; digit < 4; digit++) { int address=number+256*(digitadress[digit]+binary2offset); byte data=(number/divider)%4; writeEEprom(address,binary2digits[data]); divider*=4; } } void writeAllNumbers(){ for (int number = 0; number<256; number++) { writeNumber((byte)number); } } void setup() { // put your setup code here, to run once: Serial.begin(57600); digitalWrite(LATCH,LOW); pinMode(DATA,OUTPUT); pinMode(CLOCK,OUTPUT); pinMode(LATCH,OUTPUT); pinMode(WE,OUTPUT); digitalWrite(WE,HIGH); delay(500); //writeNumber(222); writeAllNumbers(); } void loop() { }