1 | #include "s1d13700.h"
|
2 |
|
3 |
|
4 | #define S1D13700_DATA_PORT LATE
|
5 | #define S1D13700_DATA_PORT_IN PORTE
|
6 | #define S1D13700_DATA_DIR TRISE
|
7 |
|
8 | #define S1D13700_CONTROL_DIR TRISH
|
9 |
|
10 | #define S1D13700_A0 LATHbits.LATH0
|
11 | #define S1D13700_WR LATHbits.LATH1
|
12 | #define S1D13700_RD LATHbits.LATH2
|
13 | #define S1D13700_CS LATHbits.LATH3
|
14 | #define S1D13700_RES LATHbits.LATH4
|
15 |
|
16 | void GLCD_Initialize(void);
|
17 | void GLCD_WriteCommand(unsigned char);
|
18 | void GLCD_WriteData(unsigned char);
|
19 | void GLCD_InitPorts(void);
|
20 | void GLCD_SetCursorAddress(unsigned int);
|
21 | void GLCD_SetPixel(unsigned int,unsigned int, int);
|
22 | //-------------------------------------------------------------------------------------------------
|
23 | //-------------------------------------------------------------------------------------------------
|
24 | void GLCD_Initialize(void)
|
25 | {
|
26 | GLCD_InitPorts();
|
27 | S1D13700_RES = 0;
|
28 | Delay10KTCYx( 500 );
|
29 | S1D13700_RES = 1;
|
30 |
|
31 | GLCD_WriteCommand(S1D13700_SYSTEM_SET);
|
32 | GLCD_WriteData(S1D13700_SYS_P1);
|
33 | GLCD_WriteData(S1D13700_SYS_P2);
|
34 | GLCD_WriteData(S1D13700_FY);
|
35 | GLCD_WriteData(S1D13700_CR);
|
36 | GLCD_WriteData(S1D13700_TCR);
|
37 | GLCD_WriteData(S1D13700_LF);
|
38 | GLCD_WriteData(S1D13700_APL);
|
39 | GLCD_WriteData(S1D13700_APH);
|
40 |
|
41 | GLCD_WriteCommand(S1D13700_SCROLL);
|
42 | GLCD_WriteData(S1D13700_SAD1L);
|
43 | GLCD_WriteData(S1D13700_SAD1H);
|
44 | GLCD_WriteData(S1D13700_SL1);
|
45 | GLCD_WriteData(S1D13700_SAD2L);
|
46 | GLCD_WriteData(S1D13700_SAD2H);
|
47 | GLCD_WriteData(S1D13700_SL2);
|
48 | GLCD_WriteData(S1D13700_SAD3L);
|
49 | GLCD_WriteData(S1D13700_SAD3H);
|
50 | GLCD_WriteData(S1D13700_SAD4L);
|
51 | GLCD_WriteData(S1D13700_SAD4H);
|
52 |
|
53 | GLCD_WriteCommand(S1D13700_CSRFORM);
|
54 | GLCD_WriteData(S1D13700_CRX);
|
55 | GLCD_WriteData(S1D13700_CSRF_P2);
|
56 |
|
57 | GLCD_WriteCommand(S1D13700_CGRAM_ADR);
|
58 | GLCD_WriteData(S1D13700_SAGL);
|
59 | GLCD_WriteData(S1D13700_SAGH);
|
60 |
|
61 | GLCD_WriteCommand(S1D13700_CSRDIR_R);
|
62 |
|
63 | GLCD_WriteCommand(S1D13700_HDOT_SCR);
|
64 | GLCD_WriteData(S1D13700_SCRD);
|
65 |
|
66 | GLCD_WriteCommand(S1D13700_OVLAY);
|
67 | GLCD_WriteData(S1D13700_OVLAY_P1);
|
68 |
|
69 | GLCD_WriteCommand(S1D13700_DISP_ON);
|
70 | GLCD_WriteData(S1D13700_FLASH);
|
71 | }
|
72 | //-------------------------------------------------------------------------------------------------
|
73 | //-------------------------------------------------------------------------------------------------
|
74 | void GLCD_InitPorts(void)
|
75 | {
|
76 | S1D13700_DATA_DIR = 0x00;
|
77 | S1D13700_CONTROL_DIR = 0x00;
|
78 | S1D13700_RES = 1;
|
79 | }
|
80 | //-------------------------------------------------------------------------------------------------
|
81 | //-------------------------------------------------------------------------------------------------
|
82 | void GLCD_WriteData(unsigned char dataToWrite)
|
83 | {
|
84 | // M6800 Family
|
85 | S1D13700_CS = 0;
|
86 |
|
87 | S1D13700_DATA_PORT = dataToWrite;
|
88 | S1D13700_DATA_DIR = 0x00;
|
89 |
|
90 | S1D13700_A0 = 0;
|
91 | S1D13700_WR = 0;
|
92 | S1D13700_RD = 1;
|
93 |
|
94 | Delay10TCYx(1);
|
95 | S1D13700_A0 = 0;
|
96 | S1D13700_WR = 0;
|
97 | S1D13700_RD = 0;
|
98 | S1D13700_CS = 1;
|
99 | Delay10TCYx(1);
|
100 | }
|
101 | //-------------------------------------------------------------------------------------------------
|
102 | //-------------------------------------------------------------------------------------------------
|
103 | void GLCD_WriteCommand(unsigned char commandToWrite)
|
104 | {
|
105 | S1D13700_CS = 0;
|
106 | S1D13700_DATA_PORT = commandToWrite;
|
107 | S1D13700_DATA_DIR = 0x00;
|
108 |
|
109 | S1D13700_A0 = 1;
|
110 | S1D13700_WR = 0;
|
111 | S1D13700_RD = 1;
|
112 |
|
113 | Delay10TCYx(1);
|
114 | S1D13700_A0 = 0;
|
115 | S1D13700_WR = 0;
|
116 | S1D13700_RD = 0;
|
117 | S1D13700_CS = 1;
|
118 | Delay10TCYx(1);
|
119 | }
|
120 | //-------------------------------------------------------------------------------------------------
|
121 | //-------------------------------------------------------------------------------------------------
|
122 | unsigned char GLCD_ReadData(void)
|
123 | {
|
124 | unsigned char tmp;
|
125 | S1D13700_CS = 0;
|
126 | S1D13700_A0 = 1;
|
127 | S1D13700_WR = 1;
|
128 | S1D13700_RD = 1;
|
129 |
|
130 | NOP();
|
131 | S1D13700_DATA_DIR = 0xFF;
|
132 | NOP();
|
133 |
|
134 | tmp = S1D13700_DATA_PORT_IN;
|
135 |
|
136 | Delay10TCYx(1);
|
137 | S1D13700_A0 = 0;
|
138 | S1D13700_WR = 0;
|
139 | S1D13700_RD = 0;
|
140 | S1D13700_CS = 1;
|
141 | Delay10TCYx(1);
|
142 |
|
143 | return tmp;
|
144 | }
|
145 | //-------------------------------------------------------------------------------------------------
|
146 | //-------------------------------------------------------------------------------------------------
|
147 | void GLCD_SetPixel(unsigned int x,unsigned int y, int color)
|
148 | {
|
149 | unsigned char tmp = 0;
|
150 | unsigned int address = S1D13700_GRAPHICSTART + (40 * y) + (x/8);
|
151 | GLCD_SetCursorAddress(address);
|
152 |
|
153 | GLCD_WriteCommand(S1D13700_MREAD);
|
154 | tmp = GLCD_ReadData();
|
155 |
|
156 | if(color)
|
157 | tmp |= (1 << (S1D13700_FX - (x % 8)));
|
158 | else
|
159 | tmp &= ~(1 << (S1D13700_FX - (x % 8)));
|
160 |
|
161 | GLCD_SetCursorAddress(address);
|
162 | GLCD_WriteCommand(S1D13700_MWRITE);
|
163 |
|
164 | GLCD_WriteData(tmp);
|
165 | // GLCD_WriteData(0xFF);
|
166 | }
|
167 | //-------------------------------------------------------------------------------------------------
|
168 | //-------------------------------------------------------------------------------------------------
|
169 | void GLCD_SetCursorAddress(unsigned int address)
|
170 | {
|
171 | GLCD_WriteCommand(S1D13700_CSRW);
|
172 | GLCD_WriteData((unsigned char)(address & 0xFF));
|
173 | GLCD_WriteData((unsigned char)(address >> 8));
|
174 | }
|