18 #include <avr/pgmspace.h>
19 #include <util/delay.h>
24 static void LCDMix_4Bit(uint8_t data);
27 static void LCDMix_8Bit(uint8_t data);
30 const uint8_t LcdCustomChar[] PROGMEM=
32 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00,
33 0x00, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x00,
34 0x00, 0x1F, 0x18, 0x18, 0x18, 0x18, 0x1F, 0x00,
35 0x00, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x00,
36 0x00, 0x1F, 0x1E, 0x1E, 0x1E, 0x1E, 0x1F, 0x00,
37 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00,
38 0x03, 0x07, 0x0F, 0x1F, 0x0F, 0x07, 0x03, 0x00,
39 0x18, 0x1C, 0x1E, 0x1F, 0x1E, 0x1C, 0x18, 0x00
47 static void LCDMix_4Bit(uint8_t data)
49 if((data)&(0b10000000)) LDPD7 |=1<<
LCD_D7;
51 if((data)&(0b01000000)) LDPD6 |=1<<
LCD_D6;
53 if((data)&(0b00100000)) LDPD5 |=1<<
LCD_D5;
55 if((data)&(0b00010000)) LDPD4 |=1<<
LCD_D4;
60 static void LCDMix_8Bit(uint8_t data)
62 if((data)&(0b10000000)) LDPD7 |=1<<
LCD_D7;
64 if((data)&(0b01000000)) LDPD6 |=1<<
LCD_D6;
66 if((data)&(0b00100000)) LDPD5 |=1<<
LCD_D5;
68 if((data)&(0b00010000)) LDPD4 |=1<<
LCD_D4;
70 if((data)&(0b00001000)) LDPD3 |=1<<
LCD_D3;
72 if((data)&(0b00000100)) LDPD2 |=1<<
LCD_D2;
74 if((data)&(0b00000010)) LDPD1 |=1<<
LCD_D1;
76 if((data)&(0b00000001)) LDPD0 |=1<<
LCD_D0;
169 LCDMix_4Bit(0b00000000);
184 LCDMix_4Bit(0b00110000);
190 LCDMix_4Bit(0b00110000);
196 LCDMix_4Bit(0b00100000);
211 LCDMix_8Bit(0b00000000);
230 LCDMix_8Bit(0b00110000);
267 LDP=(ch & 0b11110000);
274 LDP=((ch & 0b00001111)<<4);
293 LCDMix_4Bit(ch & 0b11110000);
300 LCDMix_4Bit((ch & 0b00001111)<<4);
322 LDP=(cmd & 0b11110000);
327 LDP=((cmd & 0b00001111)<<4);
342 LCDMix_4Bit(cmd & 0b11110000);
347 LCDMix_4Bit((cmd & 0b00001111)<<4);
371 register uint8_t i, nBytes = 0;
375 nBytes = strlen((
char*)data);
377 for(i=0; i<nBytes; i++)
384 register uint8_t DDRAMAddr;
405 for(i=0;(uint8_t)pgm_read_byte(&FlashLoc[i]);i++)
428 a=(char_code<<3)|0x40;
430 pcc=pgm_read_byte(&pc[i]);
438 for (uint8_t i=0;i<n;i++)
445 for (uint8_t i=0;i<n;i++)
472 for (uint8_t i=0;i<n;i++)
479 for (uint8_t i=0;i<n;i++)
488 uint16_t pixelprogress;
502 for(i=0; i<length; i++)
void LCDcursorLeft(uint8_t n)
void LCDstring(uint8_t *data)
void LCDshiftRight(uint8_t n)
void LCDcursorRight(uint8_t n)
void LCDprogressBar(uint8_t progress, uint8_t maxprogress, uint8_t length)
#define LCD_LINE3_DDRAMADDR
void LCDshiftLeft(uint8_t n)
void LCDsendCommand(uint8_t cmd)
#define LCD_LINE2_DDRAMADDR
void LCDcursorOnBlink(void)
#define LCD_LINE1_DDRAMADDR
void CopyStringtoLCD(const uint8_t *FlashLoc, uint8_t x, uint8_t y)
#define LCD_LINE0_DDRAMADDR
void LCDsendChar(uint8_t ch)
void LCDdefinechar(const uint8_t *pc, uint8_t char_code)
#define PROGRESSPIXELS_PER_CHAR
void LCDGotoXY(uint8_t x, uint8_t y)