📄 display.lst
字号:
C51 COMPILER V8.08 DISPLAY 04/08/2008 09:22:25 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE DISPLAY
OBJECT MODULE PLACED IN DISPLAY.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DISPLAY.C LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 **===========================================================================
3 ** lcd driver NT7606
4 **===========================================================================
5 */
6
7 /*
8 **---------------------------------------------------------------------------
9 xm contrast menu: (default: level 4)
10 +----------------------------------------------------------------------+
11 | LCD level | contrast value |
12 |----------------------------------------------------------------------|
13 | 1 | 0x1B |
14 | 2 | 0x16 |
15 | 3 | 0x12 |
16 | 4 | 0x0D |
17 | 5 | 0x09 |
18 | 6 | 0x04 |
19 | 7 | 0x00 |
20 +----------------------------------------------------------------------+
21 **---------------------------------------------------------------------------
22 */
23
24 #include <reg51.h>
25
26 sbit LCD_SI = P1^3;//spi data
27 sbit LCD_SCL = P1^2;//spi clk
28 sbit LCD_RS = P1^5;//instruction(0)/data(1) register
29 sbit LCD_CS = P1^4;//chip select(0=active)
30 sbit LCD_RST = P1^1;
31 sbit LCD_BL = P1^6;
32
33 #define LCD_RST_SET() LCD_RST = 1;//reset(0=reset)
34 #define LCD_RST_CLR() LCD_RST = 0;
35 #define LCD_BL_ON() LCD_BL = 1;
36 #define LCD_BL_OFF() LCD_BL = 0;
37
38 //instruction 3:power save set
39 #define powerup 0x0E
40 #define powersave 0x0D
41 //instruction 4:function set
42 #define func2line 0x10
43 #define func3line 0x14
44 //instruction 5:line shift mode
45 #define firlin1 0x18
46 #define firlin2 0x19
47 #define firlin3 0x1A
48 #define firlin4 0x1B
49 //instruction 6:bias control
50 #define bias5 0x1E
51 #define bias4 0x1F
52 //instruction 7:power control set
53 #define poweron1 0x24
54 #define poweron2 0x26
55 #define poweron 0x27
C51 COMPILER V8.08 DISPLAY 04/08/2008 09:22:25 PAGE 2
56 #define poweroff1 0x25
57 #define poweroff2 0x24
58 #define poweroff 0x20
59 //instruction 8:display control
60 #define dispon 0x29
61 #define dispoff 0x28
62 //icon position
63 #define ICON_Antenna 0 //fact address:01
64 #define ICON_LowSignalBar 1 //fact address:02
65 #define ICON_MediumSignalBar 2 //fact address:03
66 #define ICON_HighSignalBar 3 //fact address:04
67 #define ICON_Scan 4 //fact address:05
68 #define ICON_Display1 5 //fact address:21
69 #define ICON_Display2 6 //fact address:22
70 #define ICON_Display3 7 //fact address:23
71 #define ICON_Category 8 //fact address:24
72 #define ICON_BankA 9 //fact address:61
73 #define ICON_BankB 10 //fact address:62
74 #define ICON_BankC 11 //fact address:63
75 #define ICON_Direct 12 //fact address:64
76 //#define ICON_ 13 //reserved
77 //#define ICON_ 14 //reserved
78 //#define ICON_ 15 //reserved
79
80 /*CGRAM*/
81 unsigned char code CGRAM[8][8] =
82 {
83 (0, 0, 0, 0, 0, 0, 0, 0),
84 (0, 0, 0, 0, 0, 0, 0, 0),
85 (0, 0, 0, 0, 0, 0, 0, 0),
86 (0, 0, 0, 0, 0, 0, 0, 0),
87 (0, 0, 0, 0, 0, 0, 0, 0),
88 (0, 0, 0, 0, 0, 0, 0, 0),
89 (0, 0, 0, 0, 0, 0, 0, 0),
90 (0, 0, 0, 0, 0, 0, 0, 0),
91 };
92
93 #define power_on_sequ() LCD_RS = 0;\
94 sendb(poweron1);\
95 delay1_ms(2);\
96 sendb(poweron2);\
97 delay1_ms(2);\
98 sendb(poweron);\
99
100 #define power_off_sequ() LCD_RS = 0;\
101 sendb(poweroff1);\
102 delay1_ms(50);\
103 sendb(poweroff2);\
104 delay1_ms(2);\
105 sendb(poweroff);\
106 delay1_ms(2);
107
108 /*Icon buffer*/
109 //unsigned char pdata IconBuff[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
110 unsigned int IconWord = 0;
111
112 // Contrast level
113 //unsigned char code ContrastTab[7] = {0x18, 0x14, 0x10, 0x0C, 0x08, 0x04, 0x00};
114
115 //void power_on_sequ();
116 //void power_off_sequ();
117 void lcdcontrast_set(unsigned char volume)reentrant;
C51 COMPILER V8.08 DISPLAY 04/08/2008 09:22:25 PAGE 3
118 void doubheight_on(unsigned char line)reentrant;
119 void doubheight_off()reentrant;
120 void fullscr(unsigned char cdata)reentrant;
121
122 void delay_us(unsigned char i) reentrant
123 {
124 1 for(; i>0; i--);
125 1 }
126
127 void delay1_ms(unsigned char count) reentrant
128 {
129 1 unsigned int i;
130 1 for(; count>0; count--)
131 1 {
132 2 for(i=124; i>0; i--);
133 2 }
134 1 }
135
136 void sendb(unsigned char x) reentrant
137 {
138 1 unsigned char i;
139 1
140 1 for (i=0; i<8; i++)
141 1 {
142 2 LCD_SCL = 0;
143 2 x <<= 1;
144 2 LCD_SI = CY;
145 2 LCD_SCL = 1;
146 2 }
147 1 LCD_SCL = 0;
148 1 LCD_SI = 0;
149 1 }
150
151 /*
152 **===========================================================================
153 ** x. Function set
154 **===========================================================================
155 */
156
157 void nt7606_init() reentrant
158 {
159 1 unsigned char i;
160 1 unsigned char code *p;
161 1
162 1 LCD_CS = 1;
163 1
164 1 /*reset*/
165 1 LCD_RST_CLR();
166 1 delay_us(50);
167 1 LCD_RST_SET();
168 1 //delay_us(20);
169 1 delay1_ms(10);
170 1
171 1 LCD_CS = 0;
172 1 LCD_RS = 0;
173 1 /*function set*/
174 1 sendb(func2line);
175 1 sendb(firlin1);
176 1 sendb(bias5);
177 1 /*power up*/
178 1 sendb(powerup);
179 1 //sendb(poweron);
C51 COMPILER V8.08 DISPLAY 04/08/2008 09:22:25 PAGE 4
180 1 power_on_sequ();
181 1 delay1_ms(20);
182 1
183 1 /*clear ICONRAM*/
184 1 sendb(0x40);
185 1 LCD_RS = 1;
186 1 for(i=0; i<16; i++)
187 1 {
188 2 sendb(0);
189 2 }
190 1
191 1 /*clear DDRAM*/
192 1 LCD_RS = 0;
193 1 sendb(0x80);
194 1 LCD_RS = 1;
195 1 for(i=0; i<64; i++)
196 1 {
197 2 sendb(0x20);
198 2 }
199 1
200 1 /*CGRAM ini*/
201 1 p = &CGRAM[0][0];
202 1 for(i=0; i<64; i++, p++)
203 1 {
204 2 sendb(*p);
205 2 }
206 1
207 1 /*display on*/
208 1 LCD_RS = 0;
209 1 sendb(dispon);
210 1
211 1 LCD_CS = 1;
212 1
213 1 /*contrast set*/
214 1 lcdcontrast_set(0x0F);
215 1
216 1 LCD_RS = 0;
217 1 }
218
219 void lcdcontrast_set(unsigned char volume) reentrant
220 {
221 1 LCD_CS = 0;
222 1
223 1 LCD_RS = 0;
224 1 sendb(0x50);//eletronic volume address
225 1 LCD_RS = 1;
226 1 sendb(volume);
227 1
228 1 LCD_CS = 1;
229 1
230 1 LCD_RS = 0;
231 1 }
232
233 /*
234 void doubheight_on(unsigned char line)
235 {
236 line&=0x03;
237 LCD_CS=0;
238 LCD_RS=0;
239 sendb(line|0x08);
240 LCD_CS=1;
241 }
C51 COMPILER V8.08 DISPLAY 04/08/2008 09:22:25 PAGE 5
242 void doubheight_off()
243 {
244 LCD_CS=0;
245 LCD_RS=0;
246 sendb(0x08);
247 LCD_CS=1;
248 }
249 */
250
251 /*
252 **===========================================================================
253 ** x. Power control
254 **===========================================================================
255 */
256
257 /*
258 void power_on_sequ()
259 {
260 LCD_RS=0;
261 sendb(poweron1);
262 delay1_ms(2);
263 sendb(poweron2);
264 delay1_ms(2);
265 sendb(poweron);
266 }
267
268 void power_off_sequ()
269 {
270 LCD_RS=0;
271 sendb(poweroff1);
272 delay1_ms(50);
273 sendb(poweroff2);
274 delay1_ms(2);
275 sendb(poweroff);
276 }
277 */
278
279 void nt7606_power_wake() reentrant
280 {
281 1 unsigned char i;
282 1
283 1 LCD_CS = 0;
284 1
285 1 LCD_RS = 0;
286 1 sendb(powerup);
287 1 //sendb(poweron);
288 1 power_on_sequ();
289 1 for(i=0; i<10; i++)
290 1 {
291 2 delay_us(200);
292 2 }
293 1 sendb(dispon);
294 1
295 1 LCD_CS = 1;
296 1 }
297
298 void nt7606_power_save() reentrant
299 {
300 1 LCD_CS = 0;
301 1
302 1 LCD_RS = 0;
303 1 sendb(dispoff);
C51 COMPILER V8.08 DISPLAY 04/08/2008 09:22:25 PAGE 6
304 1 sendb(powersave);
305 1 //sendb(poweroff);
306 1 power_off_sequ();
307 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -