📄 ocm12864.lst
字号:
267 {
268 1 data_port=0xff;
269 1 di=0;
270 1 rw=1;
271 1 ;
272 1 e=1;
273 1 while(bf||res==1);
274 1 e=0;
275 1 }
276
277 void wr_lcd (uchar data_command,uchar content) //写数据或命令到LCD
278 {
279 1 chk_busy ();
280 1 di=data_command;
281 1 rw=0;
282 1 data_port=content;
283 1 e=1;
284 1 ;
285 1 e=0;
286 1 }
287
288
289 void lattice_disp (uchar data1,uchar data2) //写点阵 整屏清
290 {
291 1 uchar i,j;
292 1 cs1=1;cs2=1;
293 1 wr_lcd (command,disp_on); //开显示
294 1 for(j=0;j<8;j++)
295 1 {
296 2 wr_lcd (command,disp_x+j); // X 0~7 表示选择页地址
297 2 wr_lcd (command,disp_z); // Z 0~63 表示行选择地址
298 2 wr_lcd (command,disp_y); // Y 0~63 表示行具体某一位
299 2 for(i=0;i<32;i++) //16X16点阵为32个数据组成
300 2 {
301 3 wr_lcd (data,data1);
302 3 wr_lcd (data,data2);
303 3 }
C51 COMPILER V8.02 OCM12864 12/03/2008 23:43:43 PAGE 6
304 2 }
305 1 }
306
307 void chn_disp (uchar t_f,uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn)
308 { //指定位置(x,y)显示row_xl行(每行row_yl个)汉字(大小8xl*yl)
309 1 uchar i,j,k,l,a;
310 1 wr_lcd (command,disp_on); //开显示
311 1 for(l=0;l<row_xl;l++) //数据行数
312 1 {
313 2 for(k=0;k<row_yl;k++) //每行16位数据
314 2 {
315 3 for(j=0;j<xl;j++)
316 3 {
317 4 wr_lcd (command,disp_x+x+l*xl+j);
318 4 wr_lcd (command,disp_z);
319 4 wr_lcd (command,disp_y+y+k*yl);
320 4 a=l*xl*yl*row_yl+k*xl*yl+j*yl;
321 4 if(t_f==0)
322 4 for(i=0;i<yl;i++)
323 4 wr_lcd (data,chn[a+i]);
324 4 }
325 3 }
326 2 }
327 1 }
328
329 void init_lcd (void) // LCD初始化
330 {
331 1 delay(30);
332 1 rst=0;
333 1 rst=1;
334 1 cs1=1;cs2=1;
335 1 wr_lcd (command,disp_off);
336 1 wr_lcd (command,disp_on);
337 1 }
338
339
340
341 void display (void) // 待机显示
342 {
343 1 lattice_disp(0x00,0x00);
344 1 /**********************************************************/
345 1 cs1=1;cs2=0;
346 1 chn_disp (0,0,0,2,8,1,1,digital1+2*16);
347 1 chn_disp (0,0,8,2,8,1,1,digital1+0*16);
348 1 chn_disp (0,0,16,2,8,1,1,digital1+(year/10)*16);
349 1 chn_disp (0,0,24,2,8,1,1,digital1+(year%10)*16);
350 1 chn_disp (0,0,32,2,16,1,1,timepoint+96); //年
351 1 chn_disp (0,0,48,2,8,1,1,digital1+(month/10)*16);
352 1 chn_disp (0,0,56,2,8,1,1,digital1+(month%10)*16);
353 1
354 1 /*---------------------------------------------------------*/
355 1 cs1=0;cs2=1;
356 1 chn_disp (0,0,0,2,16,1,1,timepoint+128); //月
357 1 chn_disp (0,0,16,2,8,1,1,digital1+(date/10)*16);
358 1 chn_disp (0,0,24,2,8,1,1,digital1+(date%10)*16);
359 1 chn_disp (0,0,32,2,16,1,1,timepoint+160); //日
360 1
361 1 /*---------------------------------------------------------*/
362 1 cs1=1;cs2=0;
363 1
364 1 chn_disp (0,2,16,2,8,1,1,digital1+(hour/10)*16);
365 1 chn_disp (0,2,24,2,8,1,1,digital1+(hour%10)*16);
C51 COMPILER V8.02 OCM12864 12/03/2008 23:43:43 PAGE 7
366 1 chn_disp (0,2,32,2,16,1,1,timepoint); //时
367 1 chn_disp (0,2,48,2,8,1,1,digital1+(minite/10)*16);
368 1 chn_disp (0,2,56,2,8,1,1,digital1+(minite%10)*16);
369 1
370 1 /*---------------------------------------------------------*/
371 1
372 1 cs1=0;cs2=1;
373 1
374 1 chn_disp (0,2,0,2,16,1,1,timepoint+32); //分
375 1 chn_disp (0,2,16,2,8,1,1,digital1+(second/10)*16);
376 1 chn_disp (0,2,24,2,8,1,1,digital1+(second%10)*16);
377 1 chn_disp (0,2,32,2,16,1,1,timepoint+64); //秒
378 1
379 1 /*---------------------------------------------------------*/
380 1
381 1 cs1=1;cs2=0;
382 1
383 1 chn_disp (0,4,8,2,16,1,2,timepoint+192); //星期
384 1 chn_disp (0,4,40,2,16,1,1,digital2+(week*16));
385 1
386 1 /*---------------------------------------------------------*/
387 1
388 1 cs1=0;cs2=1;
389 1
390 1 chn_disp (0,4,0,2,16,1,2,setdisp+128); //温度
391 1 chn_disp (0,4,32,2,8,1,1,digital1+(Temper/10)*16);
392 1 chn_disp (0,4,40,2,8,1,1,digital1+(Temper%10)*16);
393 1 chn_disp (0,4,48,2,16,1,1,setdisp+384);
394 1 /*---------------------------------------------------------*/
395 1
396 1 cs1=1;cs2=0;
397 1
398 1 chn_disp (0,6,0,2,16,1,4,Company);
399 1
400 1 /**********************************************************/
401 1
402 1 cs1=0;cs2=1;
403 1
404 1 chn_disp (0,6,0,2,16,1,3,Company+128);
405 1
406 1 /**********************************************************/
407 1 }
408
409 void display1 (void) //设定显示屏
410 {
411 1 lattice_disp(0x00,0x00);
412 1 cs1=1;cs2=0;
413 1 chn_disp (settimeoff_on,0,0,2,16,1,2,setdisp+0); //时间设定
414 1 chn_disp (settimeoff_on,0,32,2,16,1,2,setdisp+256);
415 1 chn_disp (setdateoff_on,2,0,2,16,1,2,setdisp+64); //日期设定
416 1 chn_disp (setdateoff_on,2,32,2,16,1,2,setdisp+256);
417 1 chn_disp (settempoff_on,4,0,2,16,1,2,setdisp+128); //温度设定
418 1 chn_disp (settempoff_on,4,32,2,16,1,2,setdisp+256);
419 1 chn_disp (setdelayoff_on,6,0,2,16,1,2,setdisp+192); //定时设定
420 1 chn_disp (setdelayoff_on,6,32,2,16,1,2,setdisp+256);
421 1
422 1
423 1 cs1=0;cs2=1;
424 1 chn_disp (0,0,0,2,8,1,1,digital1+(hour/10)*16); //一行 时间设定
425 1 chn_disp (0,0,8,2,8,1,1,digital1+(hour%10)*16);
426 1 chn_disp (0,0,16,2,8,1,1,point);
427 1 chn_disp (0,0,24,2,8,1,1,digital1+(minite/10)*16);
C51 COMPILER V8.02 OCM12864 12/03/2008 23:43:43 PAGE 8
428 1 chn_disp (0,0,32,2,8,1,1,digital1+(minite%10)*16);
429 1 chn_disp (0,0,40,2,8,1,1,point);
430 1 chn_disp (0,0,48,2,8,1,1,digital1+(second/10)*16);
431 1 chn_disp (0,0,56,2,8,1,1,digital1+(second%10)*16);
432 1
433 1
434 1 chn_disp (0,2,0,2,8,1,1,digital1+(year/10)*16); //二行 日期设定
435 1 chn_disp (0,2,8,2,8,1,1,digital1+(year%10)*16);
436 1 chn_disp (0,2,16,2,8,1,1,point+16);
437 1 chn_disp (0,2,24,2,8,1,1,digital1+(month/10)*16);
438 1 chn_disp (0,2,32,2,8,1,1,digital1+(month%10)*16);
439 1 chn_disp (0,2,40,2,8,1,1,point+16);
440 1 chn_disp (0,2,48,2,8,1,1,digital1+(date/10)*16);
441 1 chn_disp (0,2,56,2,8,1,1,digital1+(date%10)*16);
442 1
443 1 chn_disp (0,4,8,2,8,1,1,digital1+(Temper/100)*16); //三行 温度设定
444 1 chn_disp (0,4,16,2,8,1,1,digital1+(Temper/10)*16);
445 1 chn_disp (0,4,24,2,8,1,1,point+32);
446 1 chn_disp (0,4,32,2,8,1,1,digital1+(Temper%10)*16);
447 1 chn_disp (0,4,40,2,16,1,2,setdisp+384);
448 1
449 1 chn_disp (0,6,0,2,8,1,1,digital1+(sethour/10)*16); //四行 定时设定
450 1 chn_disp (0,6,8,2,8,1,1,digital1+(sethour%10)*16);
451 1 chn_disp (0,6,16,2,8,1,1,point);
452 1 chn_disp (0,6,24,2,8,1,1,digital1+(setminite/10)*16);
453 1 chn_disp (0,6,32,2,8,1,1,digital1+(setminite%10)*16);
454 1 chn_disp (0,6,40,2,16,1,1,setdisp+320+(setoff_on*16));
455 1 chn_disp (0,6,56,2,8,1,1,digital1+setnumber*16);
456 1
457 1 }
458
459
460 void main () // 主程序
461 {
462 1
463 1 TMOD=0x11;
464 1 TL0=0xF0;
465 1 TH0=0xD8;
466 1 PT0=1;
467 1 TR0=1;
468 1 ET0=1;
469 1
470 1 TL1=0x00;
471 1 TH1=0x00;
472 1 PT1=0;
473 1 TR1=0;
474 1 ET1=1;
475 1 EA=1;
476 1 delay(65535);
477 1 delay(65535);
478 1 init_lcd ();
479 1 delay(65535);
480 1 while(1)
481 1 {
482 2 delay(50000);
483 2 display();}
484 1 }
485
486
487
488 void t0(void) interrupt 1 using 1
489 {
C51 COMPILER V8.02 OCM12864 12/03/2008 23:43:43 PAGE 9
490 1 TL0=0xF0; //定时器自动装载方式,10ms定时
491 1 TH0=0xD8;
492 1 mir++;
493 1 if(mir==100)
494 1 {
495 2 mir=0;
496 2 second++;
497 2 if(second==59)
498 2 {
499 3 second=0;
500 3 minite++;
501 3 if(minite==59)
502 3 {
503 4 minite=0;
504 4 hour++;
505 4 if(hour==12) hour=1;
506 4 }
507 3 }
508 2
509 2 }
510 1 }
511
512
513 void t1(void) interrupt 3 using 1
514 {
515 1 TL1=0x00; //定时器自动装载方式,65.535ms定时
516 1 TH1=0x00;
517 1 b++;
518 1 if(b==15)
519 1 {
520 2 b=0;
521 2 if(falg==0)
522 2 display();
523 2 if(falg==1)
524 2 display1();
525 2 }
526 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2689 ----
CONSTANT SIZE = 1344 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 19 11
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 + -