
#ifndef LCD_H_
#define LCD_H_

#include <avr/pgmspace.h> //v3.0.2++
#include <avr/io.h>
#include "iso.h"

#define TIME_100us	us2cnt(100)

#define TIME_1ms	ms2cnt(1)
#define TIME_2ms	ms2cnt(2) //v3.0.2++
#define TIME_5ms	ms2cnt(5)
#define TIME_15ms	ms2cnt(15)
#define TIME_200ms	ms2cnt(200)
#define TIME_500ms	ms2cnt(500) //v3.0.2++

#define TIME_1s		ms2cnt(1000)
#define TIME_3s		ms2cnt(3000)

#define RS_PIN	5
#define E_PIN	4

#define RS_HI	PORTC |= _BV(RS_PIN)
#define RS_LOW	PORTC &= ~_BV(RS_PIN)

#define E_HI	PORTC |= _BV(E_PIN)
#define E_LOW	PORTC &= ~_BV(E_PIN)

#define LCD_CLEAR	0x02

void lcd_low(unsigned char data);
void lcd_hi(unsigned char data);
void lcd_pulse_e();
void lcd_cmd(unsigned char cmd);
void lcd_char(unsigned char data);
void lcd_string(char *data);
void lcd_xy(unsigned char x, unsigned char y);
void lcd_init(void);
void lcd_clear(void);

//v3.0.2++>>
void set_cg_ram_address(unsigned char address);
void load_cg_ram_data(void);

static const unsigned char cg_ram_data[64] PROGMEM =
//static const unsigned char cg_ram_data[8]  =
	{
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,
	0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x1f,
	0x00,0x00,0x00,0x00,0x00,0x1f,0x1f,0x1f,
	0x00,0x00,0x00,0x00,0x1f,0x1f,0x1f,0x1f,
	0x00,0x00,0x00,0x1f,0x1f,0x1f,0x1f,0x1f,
	0x00,0x00,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
	0x00,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,
	0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f,0x1f
	
	};

#define BAR_1	0x00
#define BAR_2	0x01
#define BAR_3	0x02
#define BAR_4	0x03
#define BAR_5	0x04
#define BAR_6	0x05
#define BAR_7	0x06
#define BAR_8	0x07
//v3.0.2++<<





#endif /* LCD_H_ */