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
|