163 lines
3.0 KiB
C
163 lines
3.0 KiB
C
|
|
char customCharArray[64] = {
|
|
0b00000,0b01000,0b11111,0b01000,0b00010,0b11111,0b00010,0b00000, //Web sync true
|
|
0b00000,0b00100,0b01110,0b00000,0b00000,0b01110,0b00100,0b00000, //Up Down
|
|
0b00100,0b01110,0b01110,0b01110,0b11111,0b00000,0b00100,0b00000, //Alarm Clock
|
|
0b00000,0b00100,0b01101,0b11101,0b01101,0b00100,0b00000,0b00000, //Volume ON
|
|
0b00000,0b00100,0b01100,0b11100,0b01100,0b00100,0b00000,0b00000, //Volume OFF
|
|
0b00000,0b00001,0b00011,0b00111,0b01111,0b11111,0b00000,0b00000, //Network TRUE
|
|
0b00000,0b01000,0b01100,0b01110,0b01100,0b01000,0b00000,0b00000, //PLAY
|
|
0b00000,0b01110,0b10101,0b10111,0b10001,0b01110,0b00000,0b00000 //Time Sync TRUE
|
|
};
|
|
|
|
|
|
void LcdClear()
|
|
{
|
|
LcdWriteByte(WRITE_COMMAND, 0x01); // display clear
|
|
NutDelay(5);
|
|
LcdWriteByte(WRITE_COMMAND, 0x80); // DD-RAM address counter (cursor pos) to '0'
|
|
}
|
|
|
|
void LcdLine(u_char line, char text[])
|
|
{
|
|
int i;
|
|
|
|
if(line == 0) //Top line
|
|
{
|
|
LcdWriteByte(WRITE_COMMAND, 0x80); // command to write to line 1
|
|
for(i = 0; i< 16; i++)
|
|
{
|
|
LcdChar(32); //Clear the line
|
|
}
|
|
LcdWriteByte(WRITE_COMMAND, 0x80); // command to write to line 1
|
|
}
|
|
else if(line == 1) //Bottom line
|
|
{
|
|
LcdWriteByte(WRITE_COMMAND, 0xC0); // command to write to line 2
|
|
for(i = 0; i< 16; i++)
|
|
{
|
|
LcdChar(32); //Clear the line
|
|
}
|
|
LcdWriteByte(WRITE_COMMAND, 0xC0); // command to write to line 1
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
|
|
int count = 0;
|
|
|
|
while(text[count] != '\0')
|
|
{
|
|
//Replace ~n with the decimal n
|
|
//This displays the custom character
|
|
if(text[count] == '~')
|
|
{
|
|
count++;
|
|
char num = text[count];
|
|
|
|
int number = num - '0';
|
|
|
|
LcdWriteByte(WRITE_DATA, number);
|
|
}
|
|
else
|
|
{
|
|
//Write char to display
|
|
LcdChar(text[count]);
|
|
}
|
|
|
|
count++;
|
|
|
|
if(count > 24)
|
|
break;
|
|
|
|
NutSleep(1);
|
|
}
|
|
}
|
|
|
|
void LcdScrollLine(u_char line, int pos, char text[])
|
|
{
|
|
int i;
|
|
|
|
if(line == 0)
|
|
{
|
|
LcdWriteByte(WRITE_COMMAND, 0x80); // command to write to line 1
|
|
for(i = 0; i< 16; i++)
|
|
{
|
|
LcdChar(32);
|
|
}
|
|
LcdWriteByte(WRITE_COMMAND, 0x80); // command to write to line 1
|
|
}
|
|
else if(line == 1)
|
|
{
|
|
LcdWriteByte(WRITE_COMMAND, 0xC0); // command to write to line 2
|
|
for(i = 0; i< 16; i++)
|
|
{
|
|
LcdChar(32);
|
|
}
|
|
LcdWriteByte(WRITE_COMMAND, 0xC0); // command to write to line 1
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
|
|
//Start at scroll location
|
|
int count = pos;
|
|
|
|
while(text[count] != '\0')
|
|
{
|
|
if(text[count] == '~')
|
|
{
|
|
count++;
|
|
char num = text[count];
|
|
|
|
int number = num - '0';
|
|
|
|
LcdWriteByte(WRITE_DATA, number);
|
|
}
|
|
else
|
|
{
|
|
LcdChar(text[count]);
|
|
}
|
|
|
|
count++;
|
|
|
|
if(count > 24 + pos)
|
|
break;
|
|
|
|
NutSleep(1);
|
|
}
|
|
}
|
|
|
|
//Write data to the Custom Character RAM
|
|
void LcdCGRAM(char *icon, int length)
|
|
{
|
|
//SELECT CGRAM
|
|
LcdWriteByte(WRITE_COMMAND, 0x40);
|
|
|
|
int count;
|
|
|
|
//Write the array with custom icons
|
|
for(count = 0; count < length; count++)
|
|
{
|
|
LcdChar(icon[count]);
|
|
NutSleep(1);
|
|
}
|
|
|
|
//Select the display RAM
|
|
LcdWriteByte(WRITE_COMMAND, 0x80);
|
|
}
|
|
|
|
void LcdSetPosition(int line)
|
|
{
|
|
if(line)
|
|
{
|
|
LcdWriteByte(WRITE_COMMAND, 0xC0);
|
|
}
|
|
else
|
|
{
|
|
LcdWriteByte(WRITE_COMMAND, 0x80);
|
|
}
|
|
}
|