t6963c.h


1
#ifndef _T6963C_H_
2
#define _T6963C_h_
3
4
// Global settings
5
#define FONTWIDTH  6
6
#define T6963C_NUMBER_OF_SCREENS  0x02
7
#define T6963C_GRAPHICS_HOME    0x0000
8
#define T6963C_GRAPHICS_AREA    240/FONTWIDTH
9
#define T6963C_GRAPHICS_SIZE    0x0A00
10
#define T6963C_TEXT_HOME    0x0000
11
#define T6963C_TEXT_AREA    240/FONTWIDTH
12
#define T6963C_TEXT_SIZE    0x200
13
14
// Register definitions
15
#define T6963C_CTRL_DDR DDRC
16
#define T6963C_CTRL_PORT PORTC
17
#define T6963C_DATA_DDR DDRL
18
#define T6963C_DATA_PORT PORTL
19
#define T6963C_DATA_PIN PINL
20
#define T6963C_WR      0x01
21
#define T6963C_RD      0x02
22
#define T6963C_CE      0x03
23
#define T6963C_CD      0x04
24
#define T6963C_RST      0x05
25
26
// Controller instruction
27
#define T6963C_CURSOR_POINTER_SET  0x21
28
#define T6963C_OFFSET_REGISTER_SET  0x22
29
#define T6963C_ADDRESS_POINTER_SET  0x24
30
31
#define T6963C_TEXT_HOME_ADDRESS_SET  0x40
32
#define T6963C_TEXT_AREA_SET    0x41
33
#define T6963C_GRAPHIC_HOME_ADDRESS_SET  0x42
34
#define T6963C_GRAPHIC_AREA_SET    0x43
35
36
#define T6963C_CG_ROM_MODE_OR    0x80
37
#define T6963C_CG_ROM_MDOE_EXOR    0x81
38
#define T6963C_CG_ROM_MODE_AND    0x83
39
#define T6963C_CG_ROM_MODE_TEXT    0x84
40
41
#define T6963C_CG_RAM_MODE_OR    0x88
42
#define T6963C_CG_RAM_MODE_EXOR    0x89
43
#define T6963C_CG_RAM_MODE_AND    0x8b
44
#define T6963C_CG_RAM_MODE_TEXT    0x8c
45
46
#define T6963C_DISPLAY_MODES_ALL_OFF    0x90
47
#define T6963C_DISPLAY_MODES_GRAPHICS_ON  0x98
48
#define T6963C_DISPLAY_MODES_TEXT_ON    0x94
49
#define T6963C_DISPLAY_MODES_CURSOR_ON    0x92
50
#define T6963C_DISPLAY_MODES_CURSOR_BLINK  0x91
51
52
#define T6963C_CURSOR_PATTERN_UNDERLINE    0xa0
53
#define T6963C_CURSOR_PATTERN_BLOCK    0xa7
54
55
#define T6963C_DATA_WRITE_INCREMENT  0xc0
56
#define T6963C_DATA_WRITE_NO_INCREMENT  0xc1
57
#define T6963C_DATA_READ_INCREMENT  0xc4
58
#define T6963C_DATA_READ_NO_INCREMENT  0xc5
59
60
#define T6963C_DATA_AUTO_WRITE    0xb0
61
#define T6963C_DATA_AUTO_READ    0xb1
62
#define T6963C_DATA_MODE_RESET    0xb2
63
64
#define T6963C_SCREEN_PEAK    0xe0
65
#define T6963C_SCREEN_COPY    0xe8
66
67
#define T6963C_SET_BIT      0xf8
68
#define T6963C_CLEAR_BIT    0xf0
69
70
//Status register bits
71
#define T6963C_STATUS_BUSY1     0x01
72
#define T6963C_STATUS_BUSY2      0x02
73
#define T6963C_STATUS_DARRDY     0x08
74
#define T6963C_STATUS_DAWRDY     0x04
75
76
#define T6963C_STATUS_CLR        0x20
77
#define T6963C_STATUS_ERR        0x40
78
#define T6963C_STATUS_BLINK      0x80
79
80
// define wait for status routine
81
#define TC6963C_wait    while ( (lcd_read_status() & (LCD_STATUS_BUSY1 | LCD_STATUS_BUSY2)) != (LCD_STATUS_BUSY1 | LCD_STATUS_BUSY2));
82
#define TC6963C_daw_wait  while (lcd_read_status() & (LCD_STATUS_DAWRDY) );
83
84
void t6963c_init(void);
85
void t6963c_write_data(unsigned char data);
86
unsigned char t6963c_read_data(void);
87
void t6963c_write_command(unsigned char data);
88
unsigned char t6963c_read_status(void);
89
uint8_t t6963c_write_text(unsigned char data, unsigned char x, unsigned char y);
90
void t6963c_clear_text(void);
91
92
#endif