📄 mainprog.lst
字号:
814 1 Channel_Votage(ADC_result_intr,2); //单位毫伏
815 1 current=Votage/25; //当前电流
816 1 if ((disp_flag==1) && (flag_1s_1==1) ) {
817 1 flag_1s_1=0;
818 1 Channel_Votage(ADC_result_intr,2); //单位毫伏
819 1 print(" I:");
820 1 disp_float_votage(current,2); //显示当前电流
821 1 ADC_filter(3); //测量电压
822 1 print(" V:");
823 1 Channel_Votage(ADC_result_intr,3); //单位毫伏
824 1 disp_float_votage(Votage,2); //显示当前电压
825 1 }
826 1 }
827 1 ADC_filter(3); //测量电压
828 1 Channel_Votage(ADC_result_intr,3); //单位毫伏
829 1 Curent_Votage=Votage; //当前电压
830 1 //每达到0.1伏打印一次
831 1 if(((Curent_Votage/100)<((Votage_record/100)-1))||(stop_flag==1)){ //打印电压
832 1 printh(0x0d);printh(0x0a);
833 1 print("1.2VF: ");
834 1 print("V:");
835 1 disp_float_votage(Curent_Votage,2); //显示当前电压
836 1 print("I:");
837 1 disp_float_votage(current,2); //显示当前电流
838 1 print("Counter:");
839 1 disp_float_decimal(ADC_counter); //显示累加次数
840 1 print("Q:");
841 1 disp_float_decimal(charge); //显示累加电荷量
842 1 print("ΔQ:");
843 1 disp_float_decimal(charge-charge_record); //显示电荷量差
844 1 print("ΔC:");
845 1 Channel_Votage(charge-charge_record,2); //折合成电压,单位:毫伏
846 1 //disp_float_decimal(Votage);
847 1 Votage=Votage/25000; //折合成电流(以25毫欧为采样电阻)
848 1 //disp_float_decimal(Votage);
849 1 Votage=Votage*10000/(Votage_record-Curent_Votage); //折合成电容
850 1 disp_float_votage(Votage,2); //显示电容量
851 1 print("C:");
852 1 Channel_Votage(charge/1000,2); //折合成电压,单位:毫伏
853 1 //disp_float_decimal(Votage);
854 1 Votage=Votage/25; //折合成电流(以25毫欧为采样电阻)
855 1 //disp_float_decimal(Votage);
856 1 Votage=Votage*10000/(start_votage-Curent_Votage); //总电容
857 1 disp_float_votage(Votage,2); //显示电容量
858 1 printh(0x0d);printh(0x0a);
859 1
860 1 charge_record=charge; //记录本次电荷累计数量
861 1 Votage_record=Curent_Votage; //记录当前电压
C51 COMPILER V8.06 MAINPROG 02/13/2009 09:29:07 PAGE 15
862 1 }
863 1 if (stop_flag==1) {
864 1 stop_flag=0;
865 1 disp_flag=0;
866 1 }
867 1 break;
868 1 //28V电容内阻测量开始(短路放电法)
869 1 case resistance_measure_28V_start:
870 1 if (resistance_measure_1ms==1) {
871 1 resistance_measure_1ms=0;
872 1 //测量起始电压
873 1 ADC_filter(1); //测量电压
874 1 Channel_Votage(ADC_result_intr,1); //单位毫伏
875 1 start_votage=Votage; //充电起始电压
876 1 //清累计电荷量
877 1 charge=0; //充电总电荷
878 1 charge_record=0; //充电电荷记录
879 1 ADC_counter=0; //累加次数
880 1 current=0; //电流
881 1 printh(0x0d);printh(0x0a);
882 1 Mesure_state=resistance_measure_28V_1; //开始测量
883 1 Swich_Ctr=0; //开始放电
884 1 }
885 1 break;
886 1 //28V电容内阻测量_放电10毫秒后测量电流电流
887 1 case resistance_measure_28V_1:
888 1 if (resistance_measure_1ms==1) {
889 1 resistance_measure_1ms=0;
890 1 ADC_filter(2); //测量电流
891 1 current=ADC_result_intr; //停止放电前取样电阻电压AD
892 1 ADC_filter(1); //测量电压
893 1 Votage_record=ADC_result_intr; //停止放电前电压AD
894 1 Swich_Ctr=1; //停止放电
895 1 Mesure_state=resistance_measure_28V_2;
896 1 }
897 1 break;
898 1 //28V电容内阻测量_停止放电10毫秒后测量电压
899 1 case resistance_measure_28V_2:
900 1 if (resistance_measure_1ms==1) {
901 1 resistance_measure_1ms=0;
902 1
903 1 ADC_filter(1); //测量电压
904 1 //计算停止放电后电压
905 1 Channel_Votage(ADC_result_intr,1); //单位毫伏
906 1 Curent_Votage=Votage; //当前电压
907 1 //计算停止放电前电流
908 1 Channel_Votage(current,2); //停止放电时,取样电阻毫伏值,单位:毫伏
909 1 current=1000*Votage/75; //停止放电时,取样电阻电流(毫安)
910 1 //计算停止放电前电压
911 1 Channel_Votage(Votage_record,1);//停止放电时,电容电压,单位毫伏
912 1 Votage_record=Votage; //放电停止前电压
913 1 //计算电阻
914 1 float_temp=1000*(Curent_Votage-Votage_record)/current; //单位:毫欧
915 1 //显示
916 1 print("28VR: ");
917 1 print("Vs:");
918 1 disp_float_votage(start_votage,2); //显示当前电压
919 1 print("V1:");
920 1 disp_float_votage(Votage_record,2); //显示当前电压
921 1 print("V2:");
922 1 disp_float_votage(Curent_Votage,2); //显示当前电压
923 1 print("ΔV:");
C51 COMPILER V8.06 MAINPROG 02/13/2009 09:29:07 PAGE 16
924 1 disp_float_votage(Curent_Votage-Votage_record,2); //显示当前电压
925 1 print("I:");
926 1 disp_float_votage(current,1); //显示当前电流
927 1 print("R:");
928 1 disp_float_votage(float_temp,3); //显示电阻(单位:欧姆)
929 1 printh(0x0d);printh(0x0a);
930 1 Mesure_state=stop_state;
931 1 }
932 1 break;
933 1 //28V电容内阻测量_停止
934 1 case stop_state:
935 1 break;
936 1 case voltage_current_disp_28V_start: //电压电流曲线
937 1 break;
938 1 case voltage_current_disp_28V: //电压电流曲线
939 1 break;
940 1 }
941 1 */
942 1
943 1 }
944
945 //键盘扫描
946 void JP_SM(void)
947 {
948 1 if (UP==0) {
949 2 if (Display_state==adc_display) {
950 3 Display_state=votage_display;
951 3 ClearDisplay();
952 3 }
953 2 }
954 1 if (DOWN==0) {
955 2 if (Display_state==votage_display){
956 3 Display_state=adc_display;
957 3 ClearDisplay();
958 3 }
959 2 if ((Display_state==charge_28V_display) || (Display_state==discharge_28V_display)){
960 3 P2=0; //关闭充放电通道
961 3 DisplayChar(3,0x11); //--表示停止充放电
962 3 DisplayChar(4,0x11);
963 3 }
964 2 }
965 1 if (OPEN==0){ //开始充电
966 2 ClearDisplay();
967 2 DisplayChar(0,0x0c); //CD表示充电
968 2 DisplayChar(1,0x0d);
969 2 P2=0; //关闭充放电通道
970 2 SW7=1; //打开充电通道
971 2 ADC1_open=1; //adc1打开控制
972 2 ADC3_open=1; //adc3打开控制
973 2 Display_state=charge_28V_display;
974 2 }
975 1 if (FEE==0){ //开始放电
976 2 ClearDisplay();
977 2 DisplayChar(0,0x0F); //FD表示放电
978 2 DisplayChar(1,0x0d);
979 2 P2=0; //关闭充放电通道
980 2 //等待20毫秒
981 2 flag_10ms_1=0;
982 2 // while (flag_10ms_1==0) {} //
983 2 flag_1ms_adc=0;
984 2 // while (flag_10ms_1==0) {}
985 2 //读取3通道起始起始电压
C51 COMPILER V8.06 MAINPROG 02/13/2009 09:29:07 PAGE 17
986 2 read_start_votage();
987 2 P2=0; //关闭充放电通道,由-
988 2 //P2=0x03; //打开0、1放电通道
989 2 //P2=0x0; //打开3放电通道
990 2 ADC1_open=1; //adc1打开控制
991 2 ADC3_open=1; //adc3打开控制
992 2 Display_state=discharge_28V_start;
993 2 }
994 1 if (BILL==0){ //开始放电
995 2 Display_state=cap_test_start;
996 2 ADC1_open=1; //adc1打开控制
997 2 ADC3_open=1; //adc3打开控制
998 2 }
999 1 }
1000 //读取中断ADC值
1001 void read_intr_adc(void)
1002 {
1003 1 EA=0; //关闭总中断
1004 1 ADC_result1=ADC_result_intr1;
1005 1 ADC_result2=ADC_result_intr2;
1006 1 ADC_result3=ADC_result_intr3;
1007 1 ADC1_accumulate=ADC1_accumulate_intr; //1通道累加值
1008 1 EA=1; //打开中断
1009 1 }
1010 //读取3通道起始起始电压
1011 void read_start_votage(void)
1012 {
1013 1 read_intr_adc(); //读取中断ADC值
1014 1 start_votage=ADC_result3*ADC3_coefficient; //充电起始电压
10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -