0,0 → 1,170 |
/* |
DEMO FILE FOR ALCATEL HT1 LCD |
mija 7.1.2008 ver.: 1.0 |
*/ |
|
//************************************************************** |
|
#ifndef LCD_CS |
#define LCD_CS PIN_B0 |
#define LCD_DATA PIN_B1 |
#define LCD_CLK PIN_B2 |
#define LCD_A0 PIN_B3 |
#define LCD_RESET PIN_B4 |
#endif |
|
BYTE const LCD_INIT_STRING[6] = {0x61,0x3D,0x70,0x42,0x57,0x7B}; |
|
//datacheet S1D12305 |
|
//************************************************************** |
|
void LCD_init(void); |
|
void LCD_putc(int8 data); |
void LCD_send_command(int8 data); |
void LCD_send_data(int8 data); |
void LCD_clear(); |
void LCD_gotoxy(int8 x, int8 y); |
void LCD_send(int8 data); |
|
void LCD_corsor_off(void); |
void LCD_cursor_on(void); |
|
void LCD_contrast(int8 contrast); |
void LCD_icon(int8 icon,int8 segment); |
|
//************************************************************** |
|
void LCD_init(void) |
{ |
int8 i; |
|
output_low(LCD_RESET); |
output_high(LCD_CS); |
delay_ms(5); |
output_high(LCD_RESET); |
delay_ms(5); |
for (i=0;i<6;i++) LCD_send_command(LCD_INIT_STRING[i]); |
delay_ms(20); |
LCD_clear(); |
} |
|
void LCD_putc(int8 data) |
{ |
if (data == '\n') {LCD_send_command(0xC0);return;} |
data+=4; |
LCD_send_data(data); |
} |
|
void LCD_send_command(int8 data) |
{ |
output_low(LCD_A0); |
LCD_send(data); |
output_high(LCD_A0); |
} |
|
void LCD_send_data(int8 data) |
{ |
output_high(LCD_A0); |
LCD_send(data); |
} |
|
void LCD_clear() |
{ |
int8 a; |
|
LCD_send_command(0xB0); |
for (a=0;a<=11;a++) LCD_putc(0x20); |
LCD_send_command(0xC0); |
for (a=0;a<=11;a++) LCD_putc(0x20); |
LCD_send_command(0xF0); |
for (a=0;a<=11;a++) LCD_send_data(0x0); |
LCD_gotoxy(1,1); |
} |
|
void LCD_gotoxy(int8 x, int8 y) |
{ |
x--;y--; |
if ( x>11 || y>1 ) return; |
if (y) LCD_send_command(0xC0|x); |
else LCD_send_command(0xB0|x); |
} |
|
void LCD_send(int8 data) |
{ |
int8 a; |
|
output_low(LCD_CS); |
for (a=0;a<=7;a++) |
{ |
output_low(LCD_CLK); |
output_low(LCD_DATA); |
if (data & 0x80) output_high(LCD_DATA); |
output_high(LCD_CLK); |
data<<=1; |
} |
output_high(LCD_CS); |
} |
|
void LCD_cursor_off(void) |
{ |
LCD_send_command(0x31); |
} |
|
void LCD_cursor_on(void) |
{ |
LCD_send_command(0x3D); |
} |
|
void LCD_contrast(int8 contrast) |
{ |
LCD_send_command(0x70|(0x0F & contrast)); |
} |
|
void LCD_icon(int8 znak,int8 segment) |
{ |
LCD_send_command(znak); |
LCD_send_data(segment); |
} |
|
//************************************************************** |
//*** defines for segments icons *** |
|
#define LCD_SEGMENT_OFF 0x0 |
|
#define LCD_BATTERIE 0xF0 |
#define SEG_BAT_EMP 0x4 |
#define SEG_BAT_LOW 0xC |
#define SEG_BAT_FULL 0xE |
#define LCD_PC 0xF2 |
#define SEG_PC 0x10 |
#define LCD_OFF_RING 0xF3 |
#define SEG_RING 0x8 |
#define LCD_CALL_MISSED 0xF4 |
#define SEG_MISSED 0x10 |
#define LCD_CASSETTE 0xF5 |
#define SEG_CASSETTE 0x8 |
#define LCD_MESSAGE 0xF6 |
#define SEG_MESSAGE 0x10 |
#define SEG_MESS_FULL 0x18 |
#define LCD_CALL_DIVERT 0xF8 |
#define SEG_DIVERT 0x4 |
#define LCD_CLOCK 0xF9 |
#define SEG_CLOCK 0x8 |
#define LCD_SIGNALL 0xFB |
#define SEG_SIGNALL1 0x2 |
#define SEG_SIGNALL2 0xA |
#define SEG_SIGNALL3 0xE |
#define SEG_SIGNALL4 0x1E |
|
//************************************************************** |
//*** ASCII char *** |
|
#define ASCII_CLOCK 0xD0 |
#define ASCII_ARROW_UP 0xDA |
#define ASCII_ARROW_DOWN 0xD7 |
#define ASCII_ARROW_R 0xD8 |
#define ASCII_ARROW_L 0xD9 |
#define ASCII_ARROW_UR 0xE7 |
#define ASCII_ARROW_DR 0xE8 |