📄 water.lst
字号:
580 4 {
581 5 DataChflag=0;
582 5 }
583 4 else
584 4 {
585 5 DataChflag++;
586 5 }
587 4 if(DataChflag==0)
588 4 {
589 5 // DataChflag = 0;//退出更改数据模式
590 5 StoreData2();
591 5 write7279(SEGOFF, LED_Enter);
592 5 //刷新页面
593 5 DispPage(Page);
594 5 }
595 4 if(DataChflag==1)
596 4 {
597 5 Option=0;
598 5 Page=0;
599 5 write7279(SEGON, LED_Enter);
600 5 DispPage(Page);
601 5 lcd_LineChoose(2);
602 5 }
603 4 /*
604 4 if(DataChflag==2)
605 4 {
606 4 // DataChflag = 1; //进入更改数据模式
607 4 Option=1;
608 4 Page=1;
609 4 write7279(SEGON, LED_Enter);
610 4 DispPage(Page);
611 4 lcd_LineChoose(2);
612 4 }*/
613 4 }
C51 COMPILER V7.06 WATER 10/28/2007 09:52:35 PAGE 11
614 3 else
615 3 {
616 4 nop();
617 4 }
618 3 }break;
619 2 case KEY_MODE:
620 2 {
621 3 Moder++;
622 3 if(Moder >= 2)
623 3 {
624 4 Moder = 0;
625 4 }
626 3 DispPage(Page);
627 3 if(Moder==0)
628 3 {
629 4 DataChflag=0;
630 4 begin=0;
631 4 write7279(SEGOFF, LED_Standby);
632 4 write7279(SEGOFF, LED_Enter);
633 4 write7279(SEGOFF, LED_Internal);
634 4 write7279(SEGON, LED_External);
635 4 ExTempSet();
636 4 delay(1000);
637 4 }
638 3 if(Moder==1)
639 3 {
640 4 write7279(SEGON, LED_Internal);
641 4 write7279(SEGOFF, LED_External);
642 4 StoreData2();
643 4 }
644 3 }
645 2 default : break;
646 2 }
647 1 }
648
649 void key_detect()
650 {
651 1 int key_number;
652 1 uint i = 0;
653 1 longflag = 0;
654 1 KEY = 1;
655 1 if(!KEY)
656 1 {
657 2 delay(6000);
658 2 key_number = read7279(CMD_READ);
659 2 key_process(key_number);
660 2 delay(65000);
661 2 delay(64000);
662 2 delay(63000);
663 2 delay(62000);
664 2 delay(61000);
665 2 delay(60000);
666 2 KEY = 1;
667 2 while(!KEY) //加减键长按连续调整
668 2 {
669 3 i++;
670 3 delay(200);
671 3 if(i >= 1000)
672 3 {
673 4 i = 0;
674 4 key_number = read7279(CMD_READ);
675 4 if(key_number == KEY_SUB || key_number == KEY_ADD)
C51 COMPILER V7.06 WATER 10/28/2007 09:52:35 PAGE 12
676 4 {
677 5 longflag = 1;
678 5 key_process(key_number);
679 5 }
680 4 }
681 3 }
682 2 }
683 1 }
684 void Lcd_Start()
685 {
686 1 uint i=0;
687 1 LCD_init();
688 1 lcd_Clear();
689 1
690 1 lcd_DispString(0, 0, " E0-WC150 ");
691 1 lcd_DispString(1, 0, " Water Chiller ");
692 1 lcd_DispString(2, 0, " NO.: 01 ");
693 1 lcd_DispString(3, 0, " Warming Up... ");
694 1
695 1
696 1 lcd_DelayMs(6510);
697 1 lcd_DelayMs(6430);
698 1 lcd_DelayMs(6550);
699 1 Page=0;
700 1
701 1 send_byte(CMD_RESET); //7279 reset
702 1 delay(50000);
703 1 send_byte(CMD_RESET);
704 1 write7279(SEGON, LED_Power);
705 1 write7279(SEGON, LED_External);
706 1 EA = 1;
707 1 lcd_DelayMs(500);
708 1 delay(1);
709 1 }
710
711 /*******************************************测温测流量***********************************/
712 uint GetADCData(uchar channel)
713 {
714 1 uchar xdata dth,dtl;
715 1 uint xdata sump = 0;
716 1 uint xdata i;
717 1 for(i=0; i<20; i++)
718 1 {
719 2 ADCCON2 = channel; //select channel to convert
720 2 SCONV = 1;
721 2 while(SCONV);
722 2 dth = ADCDATAH;
723 2 dtl = ADCDATAL;
724 2 dth = dth&0x0f;
725 2 sump += dtl+dth*256;
726 2 delay(50);
727 2 }
728 1 return sump / 20;
729 1 }
730
731 uint filter(uchar channel) //递推平均滤波法
732 {
733 1 char count;
734 1 uint sum = 0;
735 1 if(channel == 0)
736 1 {
737 2 filter0_buf[array0++] = GetADCData(0);
C51 COMPILER V7.06 WATER 10/28/2007 09:52:35 PAGE 13
738 2 if (array0 == N0) array0 = 0;
739 2 for (count=0;count<N0;count++)
740 2 {
741 3 sum += filter0_buf[count]/10.0;
742 3 }
743 2 return (uint)(sum/N0*10.0);
744 2 }
745 1 else if(channel == 2)
746 1 {
747 2 filter2_buf[array2++] = GetADCData(2);
748 2 if (array2 == N2) array2 = 0;
749 2 for (count=0;count<N2;count++)
750 2 {
751 3 sum += filter2_buf[count];
752 3 }
753 2 return (uint)(sum/N2);
754 2 }
755 1 else if(channel == 3)
756 1 {
757 2 filter3_buf[array3++] = GetADCData(3);
758 2 if (array3 == N3) array3 = 0;
759 2 for (count=0;count<N3;count++)
760 2 {
761 3 sum += filter3_buf[count];
762 3 }
763 2 return (uint)(sum/N3);
764 2 }
765 1 else if(channel == 4)
766 1 {
767 2 filter4_buf[array4++] = GetADCData(4);
768 2 if (array4 == N4) array4 = 0;
769 2 for (count=0;count<N4;count++)
770 2 {
771 3 sum += filter4_buf[count];
772 3 }
773 2 return (uint)(sum/N4);
774 2 }
775 1 else if(channel == 5)
776 1 {
777 2 filter5_buf[array5++] = GetADCData(5);
778 2 if (array5 == N5) array5 = 0;
779 2 for (count=0;count<N5;count++)
780 2 {
781 3 sum += filter5_buf[count];
782 3 }
783 2 return (uint)(sum/N5);
784 2 }
785 1 else if (channel == 6)
786 1 {
787 2 filter6_buf[array6++] = GetADCData(6);
788 2 if (array6 == N6) array6 = 0;
789 2 for (count=0;count<N6;count++)
790 2 {
791 3 sum += filter6_buf[count];
792 3 }
793 2 return (uint)(sum/N6);
794 2 }
795 1 else if (channel == 7)
796 1 {
797 2 filter7_buf[array7++] = GetADCData(7);
798 2 if (array7 == N7) array7 = 0;
799 2 for (count=0;count<N7;count++)
C51 COMPILER V7.06 WATER 10/28/2007 09:52:35 PAGE 14
800 2 {
801 3 sum += filter7_buf[count];
802 3 }
803 2 return (uint)(sum/N7);
804 2 }
805 1 }
806
807
808 void GetTemTout() //测出水温度
809 {
810 1 uint adresult;
811 1 float v,tem,logval;
812 1 float m,n,z;
813 1
814 1 adresult = filter(3);
815 1 v = adresult*5.0/4095.0;
816 1 logval = log(v/CUR);
817 1 m = 1.120332914398244e-003 ;
818 1 n = 2.354891980894096e-004*logval;
819 1 z = 8.289547029771934e-008*logval*logval*logval;
820 1 tem = 1.0/(m + n + z) - 273.15+0.11;
821 1 nop();
822 1 Tout= tem*100;
823 1 }
824
825
826 void GetTemTin() //测入水温度
827 {
828 1 uint adresult;
829 1 float v,tem,logval;
830 1 float m,n,z;
831 1
832 1 adresult = filter(2);
833 1 v = adresult*5.0/4095.0;
834 1 logval = log(v/CUR);
835 1 m = 1.120332914398244e-003 ;
836 1 n = 2.354891980894096e-004*logval;
837 1 z = 8.289547029771934e-008*logval*logval*logval;
838 1 tem = 1.0/(m + n + z) - 273.15+0.11;
839 1 nop();
840 1 Tin= tem*100;
841 1 }
842
843 void GetTemset() //测量外控时的设定温度
844 {
845 1 uint idata adresult;
846 1 float idata v;
847 1 adresult = filter(4);
848 1 v = adresult*5.0/4095.0;
849 1 nop();
850 1 TsetB= v*1000; //温控1实际温度
851 1 }
852 /**************************************DA转换****************************************/
853 void SendTout() //电流设定,DAC0,
854 {
855 1 int DAcode; //5v--6A需确认
856 1 float v;
857 1 v = Tout/1000.0;
858 1 DAcode = (int)(4095/5.0*v);
859 1 if(DAcode>4095)
860 1 {
861 2 DAcode = 4095;
C51 COMPILER V7.06 WATER 10/28/2007 09:52:35 PAGE 15
862 2 }
863 1 else if(DAcode<0)
864 1 {
865 2 DAcode = 0;
866 2 }
867 1 DAC1H = DAcode/256;
868 1 DAC1L = DAcode%256;
869 1 }
870 void SendLim() //电流设定,DAC0,
871 {
872 1 int DAcode; //5v--6A需确认
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -