📄 24m点阵时钟.lst
字号:
666 1
667 1 RST=0; //拉低RST
668 1 SCLK=0; //确保写数居前SCLK被拉低
669 1 RST=1; //启动数据传输
670 1 Write1302(0xbf); //写入命令字
C51 COMPILER V8.05a 24M点阵时钟 09/28/2010 07:26:18 PAGE 12
671 1 Time.Second = Read1302() & 0x7f;
672 1 Time.Minute = Read1302() & 0x7f;
673 1 Time.Hour = Read1302() & 0x7f;
674 1 Time.Day = Read1302() & 0x7f;
675 1 Time.Month = Read1302() & 0x7f;
676 1 Time.Week= Read1302() & 0x7f;
677 1 Time.Year = Read1302() & 0x7f;
678 1 SCLK=1; //将时钟电平置于已知状态
679 1 RST=0; //禁止数据传递
680 1
681 1 /*unsigned char ReadValue; //储存从1302读取的数据
682 1 ReadValue = ReadSet1302(0x81); //从秒寄存器读数据
683 1 Time.Second =ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F);//将读出数据转化
684 1 ReadValue = ReadSet1302(0x83); //从分寄存器读
685 1 Time.Minute = ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
686 1 ReadValue = ReadSet1302(0x85); //从时寄存器读
687 1 Time.Hour = ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
688 1 ReadValue = ReadSet1302(0x87); //从分寄存器读
689 1 Time.Day = ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
690 1 ReadValue = ReadSet1302(0x89); //从分寄存器读
691 1 Time.Month = ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
692 1 ReadValue = ReadSet1302(0x8B); //从时寄存器读
693 1 Time.Week= ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
694 1 ReadValue = ReadSet1302(0x8d); //从分寄存器读
695 1 Time.Year = ReadValue&0x7f;//(ReadValue&0x70) + (ReadValue&0x0F); //将读出数据转化
696 1
697 1 */ }
698
699 void Put_Adispram(uchar a){
700 1 uchar i;
701 1 //第一屏"今天是:"
702 1 disword[a+1] = &NO_WORDS[12][0]; //空格
703 1 for(i=0;i<6;i++)
704 1 disword[a+i+2] = &TIME_WORDS[i][0];
705 1 disword[a+8] = &NO_WORDS[11][0]; //":"
706 1 //第二屏
707 1 //disword[4] = &TIME_WORDS[];
708 1
709 1 }
710
711 //将年份放入到显示缓存
712 //需要参数:缓冲区首地址下标
713 void Put_Ydispram(uchar i){
714 1 disword[i+1] = &NO_WORDS[12][0];
715 1 if(Time.Year < 30 && !HIDE){
716 2 disword[i+2] = &NO_WORDS[2][0];
717 2 disword[i+3] = &NO_WORDS[0][0];
718 2 }
719 1 else if(!HIDE){
720 2 disword[i+2] = &NO_WORDS[1][0];
721 2 disword[i+3] = &NO_WORDS[9][0];
722 2 }
723 1 disword[i+4] = &NO_WORDS[Time.Year>>4][0];
724 1 disword[i+5] = &NO_WORDS[Time.Year&0x0f][0];
725 1 disword[i+6] = &TIME_WORDS[6][0];
726 1 disword[i+7] = &TIME_WORDS[7][0]; //年
727 1 disword[i+8] = &NO_WORDS[12][0];
728 1 }
729 //将星期放入到显示缓存
730 //参数:缓冲区首地址下标
731 void Put_Kdispram(uchar i){
732 1 disword[i+1] = &NO_WORDS[12][0];
C51 COMPILER V8.05a 24M点阵时钟 09/28/2010 07:26:18 PAGE 13
733 1 disword[i+2] = &TIME_WORDS[12][0];
734 1 disword[i+3] = &TIME_WORDS[13][0]; //星期
735 1 disword[i+4] = &TIME_WORDS[14][0];
736 1 disword[i+5] = &TIME_WORDS[15][0];
737 1 if(STATE== STA_CHG &&HIDE){
738 2 disword[i+6] = &NO_WORDS[12][0]; //
739 2 disword[i+7] = &NO_WORDS[12][0]; //
740 2 }
741 1 else{
742 2 disword[i+6] = &WEEK_WORDS[Time.Week*2-2][0]; //
743 2 disword[i+7] = &WEEK_WORDS[Time.Week*2-1][0]; //
744 2 }
745 1 disword[i+8] = &NO_WORDS[12][0];
746 1 }
747
748 //将日期放入到显示缓存
749 //参数:缓冲区首地址下标
750 void Put_Ddispram(uchar i){
751 1 disword[i+1] = &NO_WORDS[Time.Month>>4][0]; //小时高位
752 1 disword[i+2] = &NO_WORDS[ Time.Month&0x0f][0]; //小时地位
753 1 disword[i+3] = &TIME_WORDS[8][0]; //-
754 1 disword[i+4] = &TIME_WORDS[9][0]; //分钟高位
755 1 disword[i+5] = &NO_WORDS[ Time.Day>>4][0]; //分钟地位
756 1 disword[i+6] = &NO_WORDS[Time.Day&0x0f][0]; //-
757 1 disword[i+7] = &TIME_WORDS[10][0]; //秒高位
758 1 disword[i+8] = &TIME_WORDS[11][0]; //秒地位
759 1 }
760
761 //将时间放入到显示缓存
762 //参数:缓冲区首地址下标
763 void Put_Tdispram(uchar i){
764 1 disword[i+1] = &NO_WORDS[Time.Hour>>4][0]; //小时高位
765 1 disword[i+2] = &NO_WORDS[ Time.Hour&0x0f][0]; //小时地位
766 1 disword[i+3] = &NO_WORDS[ 11 ]; //-
767 1 disword[i+4] = &NO_WORDS[Time.Minute>>4][0]; //分钟高位
768 1 disword[i+5] = &NO_WORDS[ Time.Minute&0x0f][0]; //分钟地位
769 1 disword[i+6] = &NO_WORDS[ 11 ]; //-
770 1 disword[i+7] = &NO_WORDS[Time.Second>>4][0]; //秒高位
771 1 disword[i+8] = &NO_WORDS[ Time.Second&0x0f][0]; //秒地位
772 1 }
773 //===================================
774 //*****关于温度检测部分*****
775 void Put_gTEMP(){
776 1 // uchar i;
777 1 // Put_Wdispram(TMP_WORDS,0);
778 1 disword[6] = &NO_WORDS[temp_ram[3]][0]; //百位
779 1 disword[7] = &NO_WORDS[temp_ram[2]][0]; //十位
780 1 disword[8] = &NO_WORDS[temp_ram[1]][0]; //个位
781 1 disword[10] = &NO_WORDS[temp_ram[0]][0]; //小数
782 1 disword[12] = &NO_WORDS[12]; //空格
783 1 disword[13] = &NO_WORDS[12]; //空格
784 1 //
785 1 }
786
787 void Put_sTEMP(uchar i){
788 1 disword[i+1] = &NO_WORDS[12]; //空格
789 1 disword[i+2] = &NO_WORDS[12];//&NO_WORDS[temp_ram[3]][0]; //百位
790 1 disword[i+3] = &NO_WORDS[temp_ram[2]][0]; //十位
791 1 disword[i+4] = &NO_WORDS[temp_ram[1]][0]; //个位
792 1 disword[i+5] = &TMP_WORDS[8][0]; //小数点
793 1 disword[i+6] = &NO_WORDS[temp_ram[0]][0]; //小数
794 1 disword[i+7] = &TMP_WORDS[10][0];
C51 COMPILER V8.05a 24M点阵时钟 09/28/2010 07:26:18 PAGE 14
795 1 disword[i+8] = &NO_WORDS[12]; //空格
796 1 }
797 void Put_Cpyrt(uchar i){
798 1 uchar m;
799 1 for(m=0;m<8;m++)
800 1 disword[i+1+m] = &CPYRT_WORDS[m];
801 1 }
802 void Show_Cpyrt(){
803 1 uchar i;
804 1 for(i=1;i<9;i++)
805 1 disword[i] = &NO_WORDS[12];
806 1 Put_Cpyrt(8);
807 1 Move_Down();
808 1 Put_Cpyrt(0);
809 1 Put_Tdispram(8);
810 1 Move_Down();
811 1 }
812
813 //========================
814 //参数i:放入第几屏缓存
815 //参数j:诗歌第几页
816 //========================
817 void Put_Song(uchar i,uchar j){
818 1 uchar m;
819 1 for(m=0;m<8;m++)
820 1 disword[i+1+m] = &SONG_WORDS[j+m];
821 1 }
822 //显示诗歌
823 void Show_Song(){
824 1 uchar i;
825 1 Put_Song(8,0);
826 1 Move_Up();
827 1 for(i=0;i<3;i++){
828 2 Put_Song(0,i*8);
829 2 Put_Song(8, (i+1)*8);
830 2 Move_Up();
831 2 }
832 1 Put_Song(0, 3*8);
833 1 Put_Tdispram(8);
834 1 Move_Up();
835 1 }
836
837
838 //======================
839 //*滚动显示所有信息*
840 //======================
841 void Show_All_Info(){
842 1 Put_Adispram(8);
843 1 Move_Down(); //切换效果
844 1
845 1 Put_Adispram(0);
846 1 Put_Ydispram(8); //XXXX年
847 1 Show_All_Word();
848 1
849 1 Put_Ydispram(0); //XXXX年
850 1 Put_Ddispram(8);
851 1 Show_All_Word();
852 1
853 1 Put_Ddispram(0);
854 1 Put_Kdispram(8);
855 1 Show_All_Word();
856 1
C51 COMPILER V8.05a 24M点阵时钟 09/28/2010 07:26:18 PAGE 15
857 1
858 1 Read_Temperature();
859 1 Disp_Temperature();
860 1 Put_Kdispram(0);
861 1 Put_Tdispram(8);
862 1 Show_All_Word();
863 1
864 1 Read_Temperature();
865 1 Disp_Temperature();
866 1 Put_Tdispram(0);
867 1 Put_sTEMP(8);
868 1 Show_All_Word();
869 1
870 1 Read_TIME();
871 1 Put_sTEMP(0);
872 1 Put_Tdispram(8);
873 1 Move_Up();
874 1
875 1 }
876
877
878 /*us级延时函数 */
879 /*******************************************************************/
880
881 void Delay(unsigned int num)
882 {
883 1 num = num*2;
884 1 while( --num ) ;
885 1 }
886
887 /*初始化ds1820 */
888 /*******************************************************************/
889 Init_DS18B20(void)
890 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -