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