?? lcd128x64.lst
字號:
490 }
491 }
492 }
493 /*---------------------指定位置顯示數(shù)字8*16-----------------------*/
494
495 void sz_disp16(unsigned char pag,unsigned char col, unsigned char code *szk)
496 {
497 1 unsigned char j=0,i=0;
498 1 for(j=0;j<2;j++)
499 1 {
500 2 write_command(Page_Add+pag+j);
501 2 write_command(Col_Add+col);
502 2 for(i=0;i<8;i++)
503 2 write_data(szk[8*j+i]);
504 2 }
505 1 }
506
507 /*---------------------指定位置顯示漢字16*16-----------------------*/
508
509 void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk)
510 {
511 1 unsigned char j=0,i=0;
512 1 for(j=0;j<2;j++)
513 1 {
514 2 write_command(Page_Add+pag+j);
515 2 write_command(Col_Add+col);
516 2 for(i=0;i<16;i++)
517 2 write_data(hzk[16*j+i]);
518 2 }
519 1 }
520
521
522 /*------------------初始化LCD屏--------------------------*/
523 void init_lcd()
524 {
525 1 RST=0;
526 1 delay(100);
527 1 RST=1;
528 1 delay(100);
529 1
530 1 CS2=1;
531 1 CS1=1;
532 1
533 1 delay(100);
534 1 write_command(Disp_Off);
535 1 write_command(Page_Add+0);
536 1 write_command(Start_Line+0);
537 1 write_command(Col_Add+0);
538 1 write_command(Disp_On);
539 1 }
540
541
542 /*-------------------------- 開機信息顯示------------------------*/
543 void StartMsg(void)
544 {
545 1 Clr_Scr(); // 先清屏 //
546 1 CS2=1;CS1=0;
547 1 hz_disp16(0,32,huan); // 歡
548 1 delay(2000);
549 1 hz_disp16(0,48,ying); // 迎
550 1 delay(2000);
551 1 CS2=0;CS1=1;
C51 COMPILER V6.23a LCD128X64 04/07/2008 20:12:29 PAGE 10
552 1 hz_disp16(0,0,shi1); // 使
553 1 delay(2000);
554 1 hz_disp16(0,16,yong); // 用
555 1 delay(2000);
556 1 CS2=1;CS1=0;
557 1 hz_disp16(2,32,shu); // 數(shù)
558 1 delay(2000);
559 1 hz_disp16(2,48,ma); // 碼
560 1 delay(2000);
561 1 CS2=0;CS1=1;
562 1 hz_disp16(2,0,shi); // 時
563 1 delay(2000);
564 1 hz_disp16(2,16,zhong); // 鐘
565 1 delay(2000);
566 1
567 1 CS2=1;CS1=0;
568 1 hz_disp16(5,16,zhi); // 制
569 1 delay(2000);
570 1 hz_disp16(5,32,zuo); // 作
571 1 delay(2000);
572 1 hz_disp16(5,48,maohao); // :
573 1 delay(2000);
574 1 CS2=0;CS1=1;
575 1 hz_disp16(5,0,guo); // 劉
576 1 delay(2000);
577 1 hz_disp16(5,16,bing); // 兵
578 1 delay(2000);
579 1 hz_disp16(5,32,gantanhao); // !
580 1 delay(2000);
581 1 }
582 /*------------------------時鐘固定漢字顯示-----------------------*/
583 void ClockMsg(void)
584 {
585 1 Clr_Scr(); // 先清屏 //
586 1
587 1 CS2=1;CS1=0; // 左屏
588 1 hz_disp16(1,32,xing); // 星
589 1 hz_disp16(1,48,qi); // 期
590 1 sz_disp16(3,0,shuzi[2]); // 2
591 1 sz_disp16(3,8,shuzi[0]); // 0
592 1 hz_disp16(3,32,nian); // 年
593 1 hz_disp16(5,48,shi2); // 時
594 1
595 1 CS2=0;CS1=1; // 右屏
596 1 hz_disp16(3,0,yue); // 月
597 1 hz_disp16(3,32,ri); // 日
598 1 hz_disp16(5,16,fen); // 分
599 1 hz_disp16(5,48,miao); // 秒
600 1 }
601
602
603 /*-----------------------時鐘部分---------------------------*/
604
605 ///////////////////////////////////////////////
606 ///// 函數(shù)名: 寫入字節(jié)子函數(shù) //////
607 ///// 函數(shù)功能: 寫入一個字節(jié)到對應地址 //////
608 ///// 函數(shù)參數(shù): 有(寫入的字節(jié)內(nèi)容) //////
609 ///// 返回值: 無 //////
610 ///////////////////////////////////////////////
611
612 void InputByte(unsigned char dat)
613 {
C51 COMPILER V6.23a LCD128X64 04/07/2008 20:12:29 PAGE 11
614 1 unsigned char i;
615 1 ACC = dat;
616 1 for(i=8; i>0; i--)
617 1 {
618 2 IO = ACC0;
619 2 CLK = 1; //下降沿寫入數(shù)據(jù)//
620 2 CLK = 0;
621 2 ACC = ACC >> 1;
622 2 }
623 1 }
624
625 /************************************************************************************///*時鐘部分*/↓
626 ///////////////////////////////////////////////
627 ///// 函數(shù)名: 讀出字節(jié)子函數(shù) //////
628 ///// 函數(shù)功能: 從對應地址讀出一個字節(jié) //////
629 ///// 函數(shù)參數(shù): 無 //////
630 ///// 返回值: 有(讀出的字節(jié)內(nèi)容) //////
631 ///////////////////////////////////////////////
632
633 OutputByte(void)
634 {
635 1 unsigned char i;
636 1 for(i=8; i>0; i--)
637 1 {
638 2 ACC = ACC >>1;
639 2 ACC7 = IO;
640 2 CLK = 1; //上升沿讀出數(shù)據(jù)//
641 2 CLK = 0;
642 2 }
643 1 return(ACC);
644 1 }
645 /*************************************************************************************************/
646 /////////////////////////////////////////////
647 ///// 函數(shù)名: 寫入字節(jié)完整子函數(shù) //////
648 ///// 函數(shù)功能: 寫入一個字節(jié)到DS1302 //////
649 ///// 調(diào)用: InputByte() //////
650 ///// 函數(shù)參數(shù): 有(寫入的地址和數(shù)據(jù)) //////
651 ///// 返回值: 無 //////
652 /////////////////////////////////////////////
653
654 void WriteTo1302(unsigned char Addr,unsigned char Date)
655 {
656 1 RST2 = 0;
657 1 CLK = 0;
658 1 RST2 = 1;
659 1 InputByte(Addr); // 先給地址,命令 //
660 1 InputByte(Date); // 再寫入一字節(jié)數(shù)據(jù) //
661 1 CLK = 1;
662 1 RST2 =0;
663 1 }
664 /*************************************************************************************************/
665 /////////////////////////////////////////////
666 ///// 函數(shù)名: 讀出字節(jié)完整子函數(shù) //////
667 ///// 函數(shù)功能: 從DS1302讀出一個字節(jié) //////
668 ///// 調(diào)用: InputByte(); OutputByte() //////
669 ///// 函數(shù)參數(shù): 無 //////
670 ///// 返回值: 有(讀出的字節(jié)內(nèi)容) //////
671 /////////////////////////////////////////////
672
673 ReadFrom1302(unsigned char Add)
674 {
675 1 unsigned char Date;
C51 COMPILER V6.23a LCD128X64 04/07/2008 20:12:29 PAGE 12
676 1 RST2 = 0;
677 1 CLK = 0;
678 1 RST2 = 1;
679 1 InputByte(Add); // 先給地址,命令 //
680 1 Date = OutputByte(); // 再讀一字節(jié)數(shù)據(jù) //
681 1 CLK = 1;
682 1 RST2 =0;
683 1 return(Date);
684 1 }
685 /*************************************************************************************************/
686 /////////////////////////////////////////////////////////////////////////////////
687 ///// 函數(shù)名稱: SetTime /////
- /////
688 ///// 功能: 設置初始時間 /////
689 ///// 調(diào)用: WriteTo1302() /////
690 ///// 輸入: pSecDa: 初始時間地址。初始時間格式為: 秒 分 時 日 月 星期 年 /////
691 ///// 返回值: 無 /////
692 /////////////////////////////////////////////////////////////////////////////////
693
694 void SetTime(unsigned char *pSecDa)
695 {
696 1 unsigned char i;
697 1 unsigned char Addr = 0x80;
698 1 WriteTo1302(0x8e,0x00); // 控制命令,WP=0,寫操作 //
699 1 for(i =7;i>0;i--)
700 1 {
701 2 WriteTo1302(Addr,*pSecDa); // 秒 分 時 日 月 星期 年 //
702 2 pSecDa++;
703 2 Addr +=2;
704 2 }
705 1 WriteTo1302(0x8e,0x80); // 控制命令,WP=1,寫保護 //
706 1 }
707 /**************************************************************************************************/
708 //////////////////////////////////////////////////////////////////////////////////////
709 ///// 名稱: GetTime /////
710 ///// 說明: /////
711 ///// 功能: 讀取DS1302當前時間 /////
712 ///// 調(diào)用: uc_R1302() /////
713 ///// 輸入: ucCurtime: 保存當前時間地址。當前時間格式為: 秒 分 時 日 月 星期 年 /////
714 ///// 7Byte (BCD碼) 1B 1B 1B 1B 1B 1B 1B /////
715 ///// 返回值: 無 /////
716 //////////////////////////////////////////////////////////////////////////////////////
717
718 void GetTime(void)
719 {
720 1 unsigned char i;
721 1 unsigned char Addr = 0x81;
722 1 for (i=0;i<7;i++)
723 1 {
724 2 Curtime[i] = ReadFrom1302(Addr); // 格式為: 秒 分 時 日 月 星期 年 //
725 2 Addr += 2;
726 2 }
727 1 sec = Curtime[0];
728 1 min = Curtime[1];
729 1 hour = Curtime[2];
730 1 day = Curtime[5];
731 1 date = Curtime[3];
732 1 month = Curtime[4];
733 1 year = Curtime[6];
734 1 }
735 /**************************************************************************************************/
736 ////////////////////////////////////////////////////
C51 COMPILER V6.23a LCD128X64 04/07/2008 20:12:29 PAGE 13
737 ///// 函數(shù)名: 定時器T0初始化子函數(shù) //////
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -