📄 ds1302clock.lst
字号:
278 2 address=0x82;
279 2 max=59;
280 2 mini=0;
281 2 } //分钟
282 1 if(sel==5)
283 1 {
284 2 address=0x84;
285 2 max=23;
286 2 mini=0;
287 2 } //小时
288 1 if(sel==3)
289 1 {
290 2 address=0x86;
291 2 max=31;
292 2 mini=1;
293 2 } //日
294 1 if(sel==2)
295 1 {
296 2 address=0x88;
297 2 max=12;mini=1;
298 2 } //月
299 1 if(sel==1)
300 1 {
301 2 address=0x8c;
302 2 max=99;mini=0;
303 2 } //年
C51 COMPILER V8.01 DS1302CLOCK 08/16/2008 15:50:11 PAGE 6
304 1 if(sel==4)
305 1 {
306 2 address=0x8a;
307 2 max=7; mini=1;
308 2 } //星期
309 1
310 1 item=R1302(address+1)/16*10+R1302(address+1)%16;
311 1 if (sel_1==0)
312 1 item++;
313 1 else
314 1 item--;
315 1 if(item>max) item=mini;
316 1 if(item<mini) item=max;
317 1
318 1 W1302(0x8e,0x00);//允许写操作
319 1 W1302(address,item/10*16+item%10);
320 1 W1302(0x8e,0x80);//写保护,禁止写操作
321 1 }
322
323 /******************************************************************************************
324 * 函数名称 :Disp_line1
325 * 功能描述 :屏幕显示第一行 时间和温度
326 * 参数 : 参数名称: 输入/输出? 类型 描述
327 *
328 * 返回值 :
329 * 作者 :
330 * 创建日期 :2006-12-19
331 * 全局变量 :
332 * 全局静态变量:
333 * 局部静态变量:
334 *----------------------------------------修改历史------------------------------------------
335 * 当前版本 : 修改人: 修改日期:
336 * 修改说明 :
337 ******************************************************************************************/
338 void Disp_line1(void)
339 {
340 1 Read_Temperature(10,0); //温度显示
341 1 //冒号闪烁
342 1 if(flag==0)
343 1 {
344 2 DisplayOneChar(3,0,0x3a);
345 2 DisplayOneChar(6,0,0x3a);
346 2 }
347 1 else
348 1 {
349 2 DisplayOneChar(3,0,0x20);
350 2 DisplayOneChar(6,0,0x20);
351 2 }
352 1
353 1 if(sec==1) //秒闪烁标志位
354 1 {
355 2 if(flag==1)
356 2 {
357 3 DisplayOneChar(7,0,R1302(0x81)/16+0x30); //显示秒
358 3 DisplayOneChar(8,0,R1302(0x81)%16+0x30);
359 3 }
360 2 else
361 2 {
362 3 DisplayOneChar(7,0,0x20); //显示秒
363 3 DisplayOneChar(8,0,0x20);
364 3 }
365 2 }
C51 COMPILER V8.01 DS1302CLOCK 08/16/2008 15:50:11 PAGE 7
366 1 else
367 1 {
368 2 DisplayOneChar(7,0,R1302(0x81)/16+0x30); //显示秒
369 2 DisplayOneChar(8,0,R1302(0x81)%16+0x30);
370 2 }
371 1
372 1 if(min==1) //分钟闪烁标志位
373 1 {
374 2 if(flag==1)
375 2 {
376 3 DisplayOneChar(4,0,R1302(0x83)/16+0x30); //显示分钟
377 3 DisplayOneChar(5,0,R1302(0x83)%16+0x30);
378 3 }
379 2 else
380 2 {
381 3 DisplayOneChar(4,0,0x20); //显示分钟
382 3 DisplayOneChar(5,0,0x20);
383 3 }
384 2 }
385 1 else
386 1 {
387 2 DisplayOneChar(4,0,R1302(0x83)/16+0x30); //显示分钟
388 2 DisplayOneChar(5,0,R1302(0x83)%16+0x30);
389 2 }
390 1
391 1 if(hour==1) //小时闪烁标志位
392 1 {
393 2 if(flag==1)
394 2 {
395 3 DisplayOneChar(1,0,R1302(0x85)/16+0x30);//显示小时
396 3 DisplayOneChar(2,0,R1302(0x85)%16+0x30);
397 3 }
398 2 else
399 2 {
400 3 DisplayOneChar(1,0,0x20); //显示小时
401 3 DisplayOneChar(2,0,0x20);
402 3 }
403 2 }
404 1 else
405 1 {
406 2 DisplayOneChar(1,0,R1302(0x85)/16+0x30);//显示小时
407 2 DisplayOneChar(2,0,R1302(0x85)%16+0x30);
408 2 }
409 1 }
410
411 /******************************************************************************************
412 * 函数名称 :Disp_line2
413 * 功能描述 :屏幕显示第二行 日期和星期
414 * 参数 : 参数名称: 输入/输出? 类型 描述
415 *
416 * 返回值 :
417 * 作者 :
418 * 创建日期 :2006-12-19
419 * 全局变量 :
420 * 全局静态变量:
421 * 局部静态变量:
422 *----------------------------------------修改历史------------------------------------------
423 * 当前版本 : 修改人: 修改日期:
424 * 修改说明 :
425 ******************************************************************************************/
426 void Disp_line2(void)
427 {
C51 COMPILER V8.01 DS1302CLOCK 08/16/2008 15:50:11 PAGE 8
428 1 DisplayOneChar(3,1,0x2f); //显示固定字符
429 1 DisplayOneChar(6,1,0x2f);
430 1 DisplayListChar(10,1,week);
431 1
432 1 if(year==1) //年闪烁标志位
433 1 {
434 2 if(flag==1)
435 2 {
436 3 DisplayOneChar(1,1,R1302(0x8d)/16+0x30);//显示年
437 3 DisplayOneChar(2,1,R1302(0x8d)%16+0x30);
438 3 }
439 2 else
440 2 {
441 3 DisplayOneChar(1,1,0x20); //显示年
442 3 DisplayOneChar(2,1,0x20);
443 3 }
444 2 }
445 1 else
446 1 {
447 2 DisplayOneChar(1,1,R1302(0x8d)/16+0x30);//显示年
448 2 DisplayOneChar(2,1,R1302(0x8d)%16+0x30);
449 2 }
450 1
451 1 if(mon==1) //月闪烁标志位
452 1 {
453 2 if(flag==1)
454 2 {
455 3 DisplayOneChar(4,1,R1302(0x89)/16+0x30);//显示月
456 3 DisplayOneChar(5,1,R1302(0x89)%16+0x30);
457 3 }
458 2 else
459 2 {
460 3 DisplayOneChar(4,1,0x20); //显示月
461 3 DisplayOneChar(5,1,0x20);
462 3 }
463 2 }
464 1 else
465 1 {
466 2 DisplayOneChar(4,1,R1302(0x89)/16+0x30);//显示月
467 2 DisplayOneChar(5,1,R1302(0x89)%16+0x30);
468 2 }
469 1
470 1 if(day==1) //日闪烁标志位
471 1 {
472 2 if(flag==1)
473 2 {
474 3 DisplayOneChar(7,1,R1302(0x87)/16+0x30);//显示日
475 3 DisplayOneChar(8,1,R1302(0x87)%16+0x30);
476 3 }
477 2 else
478 2 {
479 3 DisplayOneChar(7,1,0x20); //显示日
480 3 DisplayOneChar(8,1,0x20);
481 3 }
482 2 }
483 1 else
484 1 {
485 2 DisplayOneChar(7,1,R1302(0x87)/16+0x30);//显示日
486 2 DisplayOneChar(8,1,R1302(0x87)%16+0x30);
487 2 }
488 1
489 1 if(weekk==1) //星期闪烁标志位
C51 COMPILER V8.01 DS1302CLOCK 08/16/2008 15:50:11 PAGE 9
490 1 {
491 2 if(flag==1)
492 2 {
493 3 DisplayOneChar(15,1,R1302(0x8b)%16+0x30);//显示星期
494 3 }
495 2 else
496 2 {
497 3 DisplayOneChar(15,1,0x20); //显示星期
498 3 }
499 2 }
500 1 else
501 1 {
502 2 DisplayOneChar(15,1,R1302(0x8b)%16+0x30);//显示星期
503 2 }
504 1 }
505
506 /******************************************************************************************
507 * 函数名称 :WriteDataLCM
508 * 功能描述 :写数据
509 * 参数 : 参数名称: 输入/输出? 类型 描述
510 *
511 * 返回值 :
512 * 作者 :
513 * 创建日期 :2006-12-19
514 * 全局变量 :
515 * 全局静态变量:
516 * 局部静态变量:
517 *----------------------------------------修改历史------------------------------------------
518 * 当前版本 : 修改人: 修改日期:
519 * 修改说明 :
520 ******************************************************************************************/
521 void WriteDataLCM(uchar WDLCM)
522 {
523 1 ReadStatusLCM(); //检测忙
524 1 LCM_Data = WDLCM;
525 1 LCM_RS = 1;
526 1 LCM_RW = 0;
527 1 LCM_E = 0; //若晶振速度太高可以在这后加小的延时
528 1 LCM_E = 0; //延时
529 1 LCM_E = 1;
530 1 }
531
532 /******************************************************************************************
533 * 函数名称 :写指令
534 * 功能描述 :
535 * 参数 : 参数名称: 输入/输出? 类型 描述
536 *
537 * 返回值 :
538 * 作者 :
539 * 创建日期 :2006-12-19
540 * 全局变量 :
541 * 全局静态变量:
542 * 局部静态变量:
543 *----------------------------------------修改历史------------------------------------------
544 * 当前版本 : 修改人: 修改日期:
545 * 修改说明 :
546 ******************************************************************************************/
547 void WriteCommandLCM(uchar WCLCM,BuysC) //BuysC为0时忽略忙检测
548 {
549 1 if(BuysC) ReadStatusLCM(); //根据需要检测忙
550 1 LCM_Data = WCLCM;
551 1 LCM_RS = 0;
C51 COMPILER V8.01 DS1302CLOCK 08/16/2008 15:50:11 PAGE 10
552 1 LCM_RW = 0;
553 1 LCM_E = 0;
554 1 LCM_E = 0;
555 1 LCM_E = 1;
556 1 }
557
558 /******************************************************************************************
559 * 函数名称 :ReadStatusLCM
560 * 功能描述 :读状态
561 * 参数 : 参数名称: 输入/输出? 类型 描述
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -