Skip to content

Instantly share code, notes, and snippets.

@halfbyte
Created August 8, 2008 19:26
Show Gist options
  • Save halfbyte/4616 to your computer and use it in GitHub Desktop.
Save halfbyte/4616 to your computer and use it in GitHub Desktop.
#define DATAOUT 11//MOSI
#define DATAIN 12//MISO
#define SPICLOCK 13//sck
#define SLAVESELECT 10//ss
#define REGISTERSET 9
// opcodes
#define CLR 1
#define HOME 2
#define ON 0x0F
#define FUN_INIT 57
#define BIAS_SET 28
#define POWER_CTL 82
#define FOLLOWER_CTL 105
#define CONTRAST_SET 116
#define ENTRY_MODE_SET 6
byte clr;
char spi_transfer(volatile char data)
{
SPDR = data; // Start the transmission
while (!(SPSR & (1<<SPIF))) // Wait for the end of the transmission
{
};
return SPDR; // return the received byte
}
void lcd_print(char *data) {
int i=0;
while(data[i]!=0) {
digitalWrite(REGISTERSET, HIGH);
spi_transfer(data[i]);
digitalWrite(REGISTERSET, LOW);
delay(1);
i++;
}
}
void setup(void) {
pinMode(DATAOUT, OUTPUT);
pinMode(DATAIN, INPUT);
pinMode(SPICLOCK,OUTPUT);
pinMode(SLAVESELECT,OUTPUT);
pinMode(REGISTERSET,OUTPUT);
digitalWrite(SLAVESELECT,HIGH);
SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);
clr=SPSR;
clr=SPDR;
delay(10);
digitalWrite(SLAVESELECT,LOW);
spi_transfer(FUN_INIT); //function set
delay(30);
spi_transfer(BIAS_SET);
delay(30);
spi_transfer(POWER_CTL);
delay(30);
spi_transfer(FOLLOWER_CTL);
delay(30);
spi_transfer(CONTRAST_SET);
delay(30);
spi_transfer(ON); //write enable
delay(30);
spi_transfer(CLR); //write enable
delay(30);
spi_transfer(ENTRY_MODE_SET);
delay(30);
lcd_print("I rawk like hell");
}
void loop() {
delay(500);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment