📄 ds1302clock.lst
字号:
558 * 全局变量 :
559 * 全局静态变量:
560 * 局部静态变量:
561 *----------------------------------------修改历史------------------------------------------
562 * 当前版本 : 修改人: 修改日期:
563 * 修改说明 :
564 ******************************************************************************************/
565 uchar ReadStatusLCM(void)
566 {
567 1 LCM_Data = 0xFF;
568 1 LCM_RS = 0;
569 1 LCM_RW = 1;
570 1 LCM_E = 0;
571 1 LCM_E = 0;
572 1 LCM_E = 1;
573 1 while (LCM_Data & Busy); //检测忙信号
574 1 return(LCM_Data);
575 1 }
576
577 /******************************************************************************************
578 * 函数名称 :LCMInit
579 * 功能描述 :LCM初始化
580 * 参数 : 参数名称: 输入/输出? 类型 描述
581 *
582 * 返回值 :
583 * 作者 :
584 * 创建日期 :2006-12-19
585 * 全局变量 :
586 * 全局静态变量:
587 * 局部静态变量:
588 *----------------------------------------修改历史------------------------------------------
589 * 当前版本 : 修改人: 修改日期:
590 * 修改说明 :
591 ******************************************************************************************/
592 void LCMInit(void)
593 {
594 1 LCM_Data = 0;
595 1 WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号
596 1 Delay5Ms();
597 1 WriteCommandLCM(0x38,0);
598 1 Delay5Ms();
599 1 WriteCommandLCM(0x38,0);
600 1 Delay5Ms();
601 1 WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号
602 1 WriteCommandLCM(0x08,1); //关闭显示
603 1 WriteCommandLCM(0x01,1); //显示清屏
604 1 WriteCommandLCM(0x06,1); // 显示光标移动设置
605 1 WriteCommandLCM(0x0C,1); // 显示开及光标设置
606 1 }
607
608 /******************************************************************************************
609 * 函数名称 :DisplayOneChar
610 * 功能描述 :按指定位置显示一个字符
611 * 参数 : 参数名称: 输入/输出? 类型 描述
612 *
613 * 返回值 :
C51 COMPILER V7.10 DS1302CLOCK 11/08/2008 19:50:12 PAGE 11
614 * 作者 :
615 * 创建日期 :2006-12-19
616 * 全局变量 :
617 * 全局静态变量:
618 * 局部静态变量:
619 *----------------------------------------修改历史------------------------------------------
620 * 当前版本 : 修改人: 修改日期:
621 * 修改说明 :
622 ******************************************************************************************/
623 void DisplayOneChar(uchar X, uchar Y, uchar DData)
624 {
625 1 Y &= 0x1;
626 1 X &= 0xF; //限制X不能大于15,Y不能大于1
627 1 if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
628 1 X |= 0x80; //算出指令码
629 1 WriteCommandLCM(X, 0); //这里不检测忙信号,发送地址码
630 1 WriteDataLCM(DData);
631 1 }
632
633 /******************************************************************************************
634 * 函数名称 :DisplayListChar
635 * 功能描述 :按指定位置显示一串字符 ***原来的遇到空格0x20就不显示***
636 * 参数 : 参数名称: 输入/输出? 类型 描述
637 *
638 * 返回值 :
639 * 作者 :
640 * 创建日期 :2006-12-19
641 * 全局变量 :
642 * 全局静态变量:
643 * 局部静态变量:
644 *----------------------------------------修改历史------------------------------------------
645 * 当前版本 : 修改人: 修改日期:
646 * 修改说明 :
647 ******************************************************************************************/
648 void DisplayListChar(uchar X, uchar Y, uchar code *DData)
649 {
650 1 uchar ListLength,j;
651 1 ListLength = strlen(DData);
652 1 Y &= 0x1;
653 1 X &= 0xF; //限制X不能大于15,Y不能大于1
654 1 if (X <= 0xF) //X坐标应小于0xF
655 1 {
656 2 for(j=0;j<ListLength;j++)
657 2 {
658 3 DisplayOneChar(X, Y, DData[j]); //显示单个字符
659 3 X++;
660 3 }
661 2 }
662 1 }
663
664 /******************************************************************************************
665 * 函数名称 :
666 * 功能描述 :
667 * 参数 : 参数名称: 输入/输出? 类型 描述
668 *
669 * 返回值 :
670 * 作者 :
671 * 创建日期 :2006-12-19
672 * 全局变量 :
673 * 全局静态变量:
674 * 局部静态变量:
675 *----------------------------------------修改历史------------------------------------------
C51 COMPILER V7.10 DS1302CLOCK 11/08/2008 19:50:12 PAGE 12
676 * 当前版本 : 修改人: 修改日期:
677 * 修改说明 :
678 ******************************************************************************************/
679 void Delay5Ms(void)
680 {
681 1 uint TempCyc = 5552;
682 1 while(TempCyc--);
683 1 }
684 //400ms延时
685 /******************************************************************************************
686 * 函数名称 :
687 * 功能描述 :
688 * 参数 : 参数名称: 输入/输出? 类型 描述
689 *
690 * 返回值 :
691 * 作者 :
692 * 创建日期 :2006-12-19
693 * 全局变量 :
694 * 全局静态变量:
695 * 局部静态变量:
696 *----------------------------------------修改历史------------------------------------------
697 * 当前版本 : 修改人: 修改日期:
698 * 修改说明 :
699 ******************************************************************************************/
700 void Delay400Ms(void)
701 {
702 1 uchar TempCycA = 5;
703 1 uint TempCycB;
704 1 while(TempCycA--)
705 1 {
706 2 TempCycB=7269;
707 2 while(TempCycB--);
708 2 };
709 1 }
710
711 /******************************************************************************************
712 * 函数名称 :RTInputByte
713 * 功能描述 :
714 * 参数 : 参数名称: 输入/输出? 类型 描述
715 *
716 * 返回值 :
717 * 作者 :
718 * 创建日期 :2006-12-19
719 * 全局变量 :
720 * 全局静态变量:
721 * 局部静态变量:
722 *----------------------------------------修改历史------------------------------------------
723 * 当前版本 : 修改人: 修改日期:
724 * 修改说明 :
725 ******************************************************************************************/
726 void RTInputByte(uchar d)
727 {
728 1 uchar i;
729 1 ACC = d;
730 1 for(i=8; i>0; i--)
731 1 {
732 2 T_IO = ACC0; /*相当于汇编中的 RRC */
733 2 T_CLK = 1;
734 2 T_CLK = 0;
735 2 ACC = ACC >> 1;
736 2 }
737 1 }
C51 COMPILER V7.10 DS1302CLOCK 11/08/2008 19:50:12 PAGE 13
738 /******************************************************************************************
739 * 函数名称 :RTOutputByte
740 * 功能描述 :
741 * 参数 : 参数名称: 输入/输出? 类型 描述
742 *
743 * 返回值 :
744 * 作者 :
745 * 创建日期 :2006-12-19
746 * 全局变量 :
747 * 全局静态变量:
748 * 局部静态变量:
749 *----------------------------------------修改历史------------------------------------------
750 * 当前版本 : 修改人: 修改日期:
751 * 修改说明 :
752 ******************************************************************************************/
753 uchar RTOutputByte(void)
754 {
755 1 uchar i;
756 1 for(i=8; i>0; i--)
757 1 {
758 2 ACC = ACC >>1; /*相当于汇编中的 RRC */
759 2 ACC7 = T_IO;
760 2 T_CLK = 1;
761 2 T_CLK = 0;
762 2 }
763 1 return(ACC);
764 1 }
765 /******************************************************************************************
766 * 函数名称 :W1302
767 * 功能描述 :
768 * 参数 : 参数名称: 输入/输出? 类型 描述
769 *
770 * 返回值 :
771 * 作者 :
772 * 创建日期 :2006-12-19
773 * 全局变量 :
774 * 全局静态变量:
775 * 局部静态变量:
776 *----------------------------------------修改历史------------------------------------------
777 * 当前版本 : 修改人: 修改日期:
778 * 修改说明 :
779 ******************************************************************************************/
780 void W1302(uchar ucAddr, uchar ucDa)
781 {
782 1 T_RST = 0;
783 1 T_CLK = 0;
784 1 T_RST = 1;
785 1 RTInputByte(ucAddr); /* 地址,命令 */
786 1 RTInputByte(ucDa); /* 写1Byte数据*/
787 1 T_CLK = 1;
788 1 T_RST = 0;
789 1 }
790 /******************************************************************************************
791 * 函数名称 :R1302
792 * 功能描述 :
793 * 参数 : 参数名称: 输入/输出? 类型 描述
794 *
795 * 返回值 :
796 * 作者 :
797 * 创建日期 :2006-12-19
798 * 全局变量 :
799 * 全局静态变量:
C51 COMPILER V7.10 DS1302CLOCK 11/08/2008 19:50:12 PAGE 14
800 * 局部静态变量:
801 *----------------------------------------修改历史------------------------------------------
802 * 当前版本 : 修改人: 修改日期:
803 * 修改说明 :
804 ******************************************************************************************/
805 uchar R1302(uchar ucAddr)
806 {
807 1 uchar ucData;
808 1 T_RST = 0;
809 1 T_CLK = 0;
810 1 T_RST = 1;
811 1 RTInputByte(ucAddr); /* 地址,命令 */
812 1 ucData = RTOutputByte(); /* 读1Byte数据 */
813 1 T_CLK = 1;
814 1 T_RST = 0;
815 1 return(ucData);
816 1 }
817
818 /******************************************************************************************
819 * 函数名称 :Set1302
820 * 功能描述 :
821 * 参数 : 参数名称: 输入/输出? 类型 描述
822 *
823 * 返回值 :
824 * 作者 :
825 * 创建日期 :2006-12-19
826 * 全局变量 :
827 * 全局静态变量:
828 * 局部静态变量:
829 *----------------------------------------修改历史------------------------------------------
830 * 当前版本 : 修改人: 修改日期:
831 * 修改说明 :
832 ******************************************************************************************/
833 void Set1302(uchar *pClock)
834 {
835 1 uchar i;
836 1 uchar ucAddr = 0x80;
837 1 W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
838 1 for(i =7; i>0; i--)
839 1 {
840 2 W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */
841 2 pClock++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -