📄 lcd.lst
字号:
193 {
194 1 checkstate();
195 1 DI=1; RW=0;
196 1 P1=date;
197 1 E=1; E=0;
198 1 }
199 void cleanscreen() //清屏
200 {
201 1 unsigned char page,i;
202 1 for(page=0xb8;page<0xc0;page++)
203 1 {
204 2 writecommand(page);
205 2 writecommand(0x40);
206 2 for(i=0;i<64;i++)
207 2 writedate(0x00);
208 2 }
209 1 }
210 void choosescreen(unsigned char NO) //选择屏幕
211 {
212 1 switch (NO)
213 1 {
214 2 case 0:
215 2 CS1=0;
216 2 CS2=0;
217 2 break;
218 2 case 1:
219 2 CS1=0;
220 2 CS2=1;
221 2 break;
222 2 case 2:
223 2 CS1=1;
224 2 CS2=0;
225 2 break;
226 2 default:
227 2 break;
228 2 }
229 1 }
230 void lce_init(void)
231 {
232 1 writecommand(0xc0);
233 1 writecommand(0x3f);
234 1 }
235 void display(unsigned char count)
236 {
237 1 unsigned int i,m;
238 1 choosescreen(1);
239 1 writecommand(0xb8);
240 1 writecommand(0x40);
241 1 for(i=0;i<count*16;i++)
C51 COMPILER V8.06 LCD 06/21/2007 11:51:41 PAGE 5
242 1 {
243 2 if(i!=0&&i%16==0)
244 2 m++;
245 2 switch (i)
246 2 {
247 3 case 64:
248 3 choosescreen(2);
249 3 writecommand(0xb8);
250 3 writecommand(0x40);
251 3 break;
252 3 case 128:
253 3 choosescreen(1);
254 3 writecommand(0xba);
255 3 writecommand(0x40);
256 3 break;
257 3 case 192:
258 3 choosescreen(2);
259 3 writecommand(0xba);
260 3 writecommand(0x40);
261 3 break;
262 3 case 256:
263 3 choosescreen(1);
264 3 writecommand(0xbc);
265 3 writecommand(0x40);
266 3 break;
267 3 case 320:
268 3 choosescreen(2);
269 3 writecommand(0xbc);
270 3 writecommand(0x40);
271 3 break;
272 3 case 384:
273 3 choosescreen(1);
274 3 writecommand(0xbe);
275 3 writecommand(0x40);
276 3 break;
277 3 case 448:
278 3 choosescreen(2);
279 3 writecommand(0xbe);
280 3 writecommand(0x40);
281 3 break;
282 3 default:
283 3 break;
284 3 }
285 2 writedate(*(ziku+i+m*16));
286 2 }
287 1 choosescreen(1);
288 1 writecommand(0xb9);
289 1 writecommand(0x40);
290 1 m=0;
291 1
292 1 for(i=0;i<count*16;i++)
293 1 {
294 2 if(i!=0&&i%16==0)
295 2 m++;
296 2 switch (i)
297 2 {
298 3 case 64:
299 3 choosescreen(2);
300 3 writecommand(0xb9);
301 3 writecommand(0x40);
302 3 break;
303 3 case 128:
C51 COMPILER V8.06 LCD 06/21/2007 11:51:41 PAGE 6
304 3 choosescreen(1);
305 3 writecommand(0xbb);
306 3 writecommand(0x40);
307 3 break;
308 3
309 3 case 192:
310 3 choosescreen(2);
311 3 writecommand(0xbb);
312 3 writecommand(0x40);
313 3 break;
314 3 case 256:
315 3 choosescreen(1);
316 3 writecommand(0xbd);
317 3 writecommand(0x40);
318 3 break;
319 3 case 320:
320 3 choosescreen(2);
321 3 writecommand(0xbd);
322 3 writecommand(0x40);
323 3 break;
324 3 case 384:
325 3 choosescreen(1);
326 3 writecommand(0xbf);
327 3 writecommand(0x40);
328 3 break;
329 3 case 448:
330 3 choosescreen(2);
331 3 writecommand(0xbf);
332 3 writecommand(0x40);
333 3 break;
334 3 default:
335 3 break;
336 3 }
337 2 writedate(*(ziku+i+m*16+16));
338 2 }
339 1 m=0;
340 1 }
341 void t0(void) interrupt 1 using 0
342 {
343 1 mstcnt++;
344 1 if(mstcnt==2000)
345 1 {
346 2 mstcnt=0;
347 2 number++;
348 2
349 2 }
350 1 }
351 main()
352 {
353 1 TMOD=0x02;
354 1 TH0=0x06;
355 1 TL0=0x06;
356 1 TR0=1;
357 1 ET0=1;
358 1 EA=1;
359 1
360 1 E=1;
361 1 choosescreen(0);
362 1 cleanscreen();
363 1
364 1 lce_init();
365 1
C51 COMPILER V8.06 LCD 06/21/2007 11:51:41 PAGE 7
366 1 while(1)
367 1 {
368 2 display(number);
369 2 if(number==33)
370 2 {
371 3 number=0;
372 3 choosescreen(0);
373 3 cleanscreen();
374 3 }
375 2 }
376 1
377 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 609 ----
CONSTANT SIZE = 1024 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 3
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -