I2C kontrollerade 7 Segment LED Display (5 / 7 steg)
Steg 5: kod
Det finns ingen väg runt att mappa varje pin av I/O expander och LED-display till en faktisk Numerisk siffra är långtråkigt arbete. Detta ses överst i filen i2c_2dig_7seg.c i den bifogade uppförandekoden. Jag kopplade koden till min digital termometer som driver den I2C sju segment displayen som referens.
I/O enheten är Microchip Technology MCP23017-E/SP eller Digikey artikelnummer MCP23017-E/SP-ND.
I2C grundläggande kommandot för att göra alla stift utgångarna
{adress, IODIR, 0, 0}, eller {0x40, 0, 0, 0}
eller mer specifikt:
messageBuf [0] = 0x40;
messageBuf [1] = 0;
messageBuf [2] = 0;
messageBuf [3] = 0;
USI_TWI_Start_Read_Write (messageBuf, 4)
I2C grundläggande kommandot för att skriva utdata stiften är {adress, GPIO reg, port en val, port B val}. För exempel om du ville skriva värdena 0x45 och 0x67 till A och B port stiften det vore {0x40, 0x12, 0x45, 0x67}
eller mer specifikt:
messageBuf [0] = 0x40;
messageBuf [1] = 0x12;
messageBuf [2] = 0x45;
messageBuf [3] = 0x67;
USI_TWI_Start_Read_Write (messageBuf, 4)
Observera att I2C adressen för den här särskilda enheten är 0x20 men du har till vänster-SKIFT det en bit eftersom den minst signifikanta biten i den första byten är den läsa/skriva lite. Se I2C buss för ATtiny och ATmega för detaljer.