活动介绍
file-type

MATLAB实现24V转12V反激电路设计与占空比调整

版权申诉
5星 · 超过95%的资源 | 28KB | 更新于2024-10-20 | 130 浏览量 | 1 下载量 举报 1 收藏
download 限时特惠:#14.90
在电子工程领域,反激电路是一种常用的开关电源拓扑结构,具有体积小、成本低、效率高等特点。反激变换器在电源设计中应用广泛,尤其适用于输出功率不是很大的场合。MATLAB(Matrix Laboratory的缩写)是美国MathWorks公司出品的数值计算和可视化软件,它集成了一系列用于算法开发、数据可视化、数据分析以及数值计算的高级功能,是电路仿真和分析领域的重要工具之一。 基于MATLAB的反激电路设计通常涉及以下方面的知识点: 1. 反激变换器工作原理:反激变换器的工作原理基于变压器的原理,通过控制开关管的占空比来调节输出电压。输入端和输出端是电气隔离的,因此它具有很好的电气隔离特性。在正激阶段,变压器初级线圈储存能量,而次级线圈无电流流通;在反激阶段,初级线圈电流为零,次级线圈则释放储存的能量。通过这种方式,反激变换器能够实现能量的传递和电压的变换。 2. MATLAB中的Simulink:Simulink是MATLAB的一个附加产品,用于基于模型的设计和多域仿真。它提供了一个交互式图形环境和定制的库,允许工程师直接在图形界面上设计、模拟和分析各种动态系统。在设计反激变换器时,可以利用Simulink中的电力系统工具箱(SimPowerSystems)来建立电路模型,进行仿真和分析。 3. 可调占空比控制:占空比是开关电源设计中的关键参数之一,它是指开关管导通时间占开关周期的比例。通过改变占空比,可以控制输出电压的大小。在MATLAB中,可以通过编程实现占空比的动态调整,从而达到对输出电压的精确控制。 4. 输入24V,输出12V的设计:根据题目描述,该反激电路的输入电压为24V,输出电压为12V。这意味着反激变换器必须通过特定的变压器比和占空比设置来实现1:2的电压降压。设计时需要综合考虑变压器的参数、开关频率、输出滤波器的设计等因素。 5. 反激电路的仿真分析:在设计完成后,需要对反激电路进行仿真分析,以验证电路的性能是否符合预期。Simulink提供了一个可视化的仿真环境,可以模拟电路在各种负载条件下的行为,并观察电压、电流等参数的变化情况。通过仿真结果,可以对电路进行调整优化。 6. 文件“Fback_huang.slx”:这是使用Simulink设计的反激电路模型文件。用户可以利用MATLAB软件打开此文件,查看电路的具体设计和参数设置。通过分析和调整模型中的各个组件和控制逻辑,用户可以对反激电路进行仿真测试,验证其功能和性能。 总结来说,基于MATLAB的反激电路设计涉及对电路原理的深刻理解,以及对Simulink等工具的熟练应用。通过软件仿真,工程师可以在实际制作电路板前预测电路的行为,从而提高设计的准确性和效率。在这个过程中,不仅要关注电路的静态特性,还要关注其动态响应,确保电路在不同的工作状态下都能够稳定运行。

相关推荐

filetype

//******************************************************************************/ //#include "REG51.h" #define MAIN_Fosc 22118400UL //¶¨ÒåÖ÷ʱÖÓ #include "math.h" #include "STC15Fxxxx.H" #include "oled.h" #include "eeprom.h" #include "USER.h" //#define T1MS (65536-FOSC/12/1000) //#define P1n_pure_input(bitn) P1M1 |= (bitn), P1M0 &= ~(bitn) //¶þ½øÖÆ #define _BIN(a,b,c,d,e,f,g,h) ((a<<7)+(b<<6)+(c<<5)+(d<<4)+(e<<3)+(f<<2)+(g<<1)+(h<<0)) #define _bin _BIN // _bin,_BIN¾ù¿É //¶þ½øÖÆ /************* ±¾µØ³£Á¿ÉùÃ÷ **************/ #define Baudrate1 115200UL #define RX1_Lenth 32 //´®¿Ú½ÓÊÕ»º³å³¤¶È #define TX1_Lenth 64 u8 TX1_Cnt; //·¢ËͼÆÊý u8 RX1_Cnt; //½ÓÊÕ¼ÆÊý bit B_TX1_Busy; //·¢ËÍæ±êÖ¾ u8 idata RX1_Buffer[RX1_Lenth]; //½ÓÊÕ»º³å u8 TX_write=0; u8 TX_read =0; u8 idata RX1_Buffer[RX1_Lenth]; //½ÓÊÕ»º³å u8 idata TX1_Buffer[TX1_Lenth]; //·¢ËÍ»º³å void UART1_config(u8 brt); // Ñ¡Ôñ²¨ÌØÂÊ, 2: ʹÓÃTimer2×ö²¨ÌØÂÊ, ÆäËüÖµ: ʹÓÃTimer1×ö²¨ÌØÂÊ. //void PrintString1(u8 *puts); //sbit UART1_485_DE = P2^0; int add_v;//µØÖ· /************* **************/ u8 ir,it; long int jint;// long int jint2;// long int jint1;//µ÷ÕûµçλÆ÷ÊäÈëp1.6 long int jinr;//ÍⲿµçλÆ÷ÊäÈëp1.7 int jinr1;//ÍⲿµçλÆ÷ÊäÈëp1.7 int jinr0; long int jint3;//Ô¶³Ì¿ØÖÆ¿ª¶È char tj_ma0=0,tj_ma1=0,tj_yc1=0,tj_yc2=0,tj_yc3=0; long int openv;//¿ªÎ»Öµ long int closev;//¹ØÎ»Öµ long int j; //long int jst1; int i; long int jrtem1; u8 xdata settmp[20]; int xst,xsr;//xst1,xsr1; signed int j1=0; signed int j2=0; int g1=0; int k1=1,k2=1,k3=1,k10=1,k20=1,k30=1; char X2B=1; char modv=0;modv0=0; char er1=0; char a1=0,a2=0; char bz_dz=0; char bca=0; int tm10=0;tm20=0;tm12=0;tm22=0;tm11=0;tm21=0,tm30=0,tm31=0; char ksjv=0;ksjv2=0;ksjv11=0;ksjv12=0; char x0=0;//³õʼλÖà char x1=0;//¶¨Î»¾«¶È char x2=0;//network char x3=0;//¿ªÖÐ¹Ø //char x4=0;//¿ª¶È char x5=0;//ÐÄÌø°ü¿ØÖÆ char x6=0;//×Ô¶¯±¨ÎÄ¿ØÖÆ char x7=0;//µØÖ·ÏÔʾ char jva2=0;ks=0; int jv1; int jsv,jsv3,jsv10,jsv30; int zjsv,zjsv3; char zdv,zdkzv; int i_tim; u8 xdata settmp1[20]; unsigned long tim0=0; unsigned int tim1=0; char tim_bz=0; char jxvop=1;jxvcl=1; char lcd0=0; char csv=0;csvbz=0; int cstmv=0;gntm1=0;gntm2=0; //char LCD_line0[] = "20220520001"; unsigned int IDV1=0,IDV2=0;//20220--10001 // unsigned long L1T=0;L2T=0;L3T=0; char l1_bz=0;l2_bz=0;l3_bz=0; char tjdz_bz2_b=0,tjdz_bz2_b1=0; int tjsj=0,tjsj_b=0,tjsj1=0,tjsj_b1=0; int jdjs_v=1,jdjs_v1=1,jdjs_v10=1,jdjs_v20=1,cs1=1,cs2=1; char kgsj_jsbz=0; int kgcs_bz1=0,kgcs_bz2=0; char kzmd=0;//0Ë«¶¯1µ¥¶¯ char zmbv=0; char zmbv1=5; char intisetv=0;//³õʼ»¯ÅÐ¶Ï char xxba,xxbb, xxbc=3 ; void tm0_isr() interrupt 1 using 1 { if ( 0==KEY1 ){if (k1>0){k1=k1-1;}}else{k1=20;} if ( 0==KEY2 ){if (k2>0){k2=k2-1;}}else{k2=20;} if ( 0==KEY3 ){if (k3>0){k3=k3-1;}}else{k3=20;} if ( 0==KEY1 ){if (k10>0){k10=k10-1;}}else{k10=1000;} if ( 0==KEY2 ){if (k20>0){k20=k20-1;}}else{k20=1000;} if ( 0==KEY3 ){if (k30>0){k30=k30-1;}}else{k30=1000;} if (jsv10<1500) {jsv10=jsv10+1;}else{jsv10=0;jsv30=1;}//ÐÄÌø°ü¼ÆÊ± if (jsv<1000) {jsv=jsv+1;}else{jsv=0;jsv3=1;}//ÐÄÌø°ü¼ÆÊ± if (zjsv<(i_tim*1000)) {zjsv=zjsv+1;}else{zjsv=0;zjsv3=1;}//×Ô¶¯¿ª¹Ø if (ksjv==1) {tm10++;}//¹ØÊ±¼ä if (ksjv2==1) {tm20++;}//¿ªÊ±¼ä if (ksjv11==1) {tm11++;}else{if (tm11>0){tm12=tm11;tm11=0;}}//¹ØÊ±¼ä if (ksjv12==1) {tm21++;}else{if (tm21>0){tm22=tm21;tm21=0;}}//¿ªÊ±¼ä if (tim1>(59999)){tim0=tim0+1;tim1=0;if (tim0%10==0 && tim1==0){tim_bz=1;}}else{tim1++;} if (csv==1&&cstmv<(500)){cstmv++;csvbz=1;}else{csvbz=0;cstmv=0; } //¹ýŤ±¨¾¯ if ((modv==0 || modv==1)&&X2B==0 && (Y1==0 || Y2==0)) { if ( abs(jint-jinr)>10){gntm1++;} if (gntm1>(tm10*10)){bz_dz=1;} if (bz_dz==1){L1=0;L2=0;L3=0;Y3=0;Y4=0;Y5=0;} if ( abs(jint-jinr)<10){bz_dz=0;gntm1=0;} } //if (abs(jint-jinr)>100){xxba=0;} //if (abs(jint-jinr)<100){xxba=1;} if (jxvcl==0 &&closev>(jinr+80)){xxba=0;} if (jxvcl==0 &&closev<(jinr+80)){xxba=1;} if (jxvop==0 &&closev<(jinr-80)){xxbb=0;} if (jxvop==0 &&closev>(jinr-80)){xxbb=1;} if (xxba==0 || xxbb==0) { if (modv==0){zmbv1=8;} if (modv==1){zmbv1=5;} if (zmbv<zmbv1){zmbv++;}else{zmbv=0;} if (zmbv==0) { kgsj(); if (abs(jint-jinr)>50 ){jdjs_v10=jdjs_v10*3;jdjs_v20=jdjs_v20*3;jdjs_v=1;jdjs_v1=1; } else if(abs(jint-jinr)>100 ){jdjs_v10=jdjs_v10*5;jdjs_v20=jdjs_v20*5;jdjs_v=1;jdjs_v1=1;} else if(abs(jint-jinr)>160 ){jdjs_v10=jdjs_v10*10;jdjs_v20=jdjs_v20*10;jdjs_v=1;jdjs_v1=1;} if (tj_ma0==1 ||tj_ma1==1||tj_yc1==1||tj_yc2==1||tj_yc3==1) { if (tjsj_b<=jdjs_v1){tjsj_b++;if (jint>(jinr-1-x1) && jint<(jinr+1+x1)) {Y1=1;Y2=1;}}else{tjsj_b=0;tjdz_bz2_b=0;if (jint>(jinr-1-x1) && jint<(jinr+1+x1)) {Y1=1;Y2=1;}} if (tjsj<=jdjs_v20 && tjdz_bz2_b==0){tjsj++;if (jint>(jinr-1-x1) && jint<(jinr+1+x1)) {Y1=1;Y2=1;}}else{tjsj=0;tjdz_bz2_b=1;if (jint>(jinr-1-x1) && jint<(jinr+1+x1)) {Y1=1;Y2=1;}}//Y2 if (tjsj_b1<=jdjs_v){tjsj_b1++;if (jint>(jinr-1-x1) && jint<(jinr+1+x1)) {Y1=1;Y2=1;}}else{tjsj_b1=0;tjdz_bz2_b1=0;if (jint>(jinr-1-x1) && jint<(jinr+1+x1)) {Y1=1;Y2=1;}} if (tjsj1<=jdjs_v10 && tjdz_bz2_b1==0){tjsj1++;if (jint>(jinr-1-x1) && jint<(jinr+1+x1)) {Y1=1;Y2=1;}}else{tjsj1=0;tjdz_bz2_b1=1;if (jint>(jinr-1-x1) && jint<(jinr+1+x1)) {Y1=1;Y2=1;}}//Y1 } } } else { if (xxbc>0){xxbc--;tjdz_bz2_b=1;tjdz_bz2_b1=1;}else{tjdz_bz2_b=0;tjdz_bz2_b1=0;xxbc=3;} } } void main(void) { KEY1=1;KEY2=1;KEY3=1; Y1=1; Y2=1; OLED_Init(); //³õʼ»¯OLED OLED_Clear() ; AUXR |= 0x80; //¶¨Ê±Æ÷ʱÖÓ1Tģʽ TMOD &= 0xF0; //ÉèÖö¨Ê±Æ÷ģʽ TL0 = 0x9A; //ÉèÖö¨Ê±³õÖµ TH0 = 0xA9; //ÉèÖö¨Ê±³õÖµ TF0 = 0; //Çå³ýTF0±êÖ¾ TR0 = 1; //¶¨Ê±Æ÷0¿ªÊ¼¼ÆÊ± ET0=1; EA=1; P1ASF = (1<<6) + (1<<7); //P1.6 P1.7×öADC P1ASF=0xc0; P1M1 = (0xc0); P1M0 = (0x00); //P1.6 P1.7ÉèÖóɸß×è ADC_CONTR = 0xE0; //90T, ADC power on /************* **************³õʼ»¯Êý¾Ý/ /* openv=260;//98 closev=530;//650 jint2=395; jint3=jint2; modv=1;modv0=1; g1=2; tm10=300; tm20=300; x0=0; x1=0; add_v=0; x5=0; x6=0; x7=0; zdkzv=0; i_tim=0; write_cs(); */ /************* **************/ EEPROM_read_n(0X0,settmp,21); openv=settmp[0]*256+settmp[1];//98 closev=settmp[2]*256+settmp[3];//650 jint2=settmp[4]*256+settmp[5]; jint3=jint2; modv=settmp[6];modv0=settmp[6]; if (modv>10){modv=0;} g1=settmp[7]; tm10=settmp[8]*256+settmp[9]; tm20=settmp[10]*256+settmp[11]; x0=settmp[12]; x1=settmp[13]; add_v=settmp[14]; x5=settmp[15]; x6=settmp[16]; x7=settmp[17]; zdkzv=settmp[18]; i_tim=settmp[19]; EEPROM_read_n(0X200,settmp1,20); tim0=(settmp1[1]*256+settmp1[2])*256+settmp1[0]; L1T=(settmp1[4]*256+settmp1[5])*256+settmp1[3]; L2T=(settmp1[7]*256+settmp1[8])*256+settmp1[6]; L3T=(settmp1[10]*256+settmp1[11])*256+settmp1[9]; tm22=settmp1[12]*256+settmp1[13]; tm12=settmp1[14]*256+settmp1[15]; IDV1=settmp1[16]*256+settmp1[17]; IDV2=settmp1[18]*256+settmp1[19]; intisetv=settmp1[20]; delay_ms(10); //if (intisetv!=1){INIT_SET();} if (g1>10){g1=0;} if (x0>3){x0=0;} if (x1>10){x1=1;} j1=tm20/50; j2=tm20/50; //PWM P_PWM = 0; P3M1 &= ~(1 << 4); //P3.4 ÉèÖÃÎªÍÆÍìÊä³ö P3M0 |= (1 << 4); TR1 = 0; //Í£Ö¹¼ÆÊý ET1 = 1; //ÔÊÐíÖÐ¶Ï PT1 = 1; //¸ßÓÅÏȼ¶ÖÐ¶Ï TMOD &= ~0x30; //¹¤×÷ģʽ,0: 16λ×Ô¶¯ÖØ×° AUXR |= 0x40; //1T TMOD &= ~0x40; //¶¨Ê± INT_CLKO |= 0x02; //Êä³öʱÖÓ TH1 = 0; TL1 = 0; TR1 = 1; //¿ªÊ¼ÔËÐÐ EA = 1; pwm = PWM_DUTY / 10; //¸øPWMÒ»¸ö³õÖµ£¬ÕâÀïΪ10%Õ¼¿Õ±È LoadPWM(pwm); //¼ÆËãPWM֨װֵ //PWM UART1_config(2); // Ñ¡Ôñ²¨ÌØÂÊ, 2: ʹÓÃTimer2×ö²¨ÌØÂÊ, ÆäËüÖµ: ʹÓÃTimer1×ö²¨ÌØÂÊ. //EA = 1; //ÔÊÐí×ÜÖÐ¶Ï //UART1_485_DE=0; if (x0==1){X1=0;} if (x0==2){X2=0;} if (x0==3){X3=0;} //IDV1=20220;IDV2=10001; /* settmp2[0]=IDV%256; settmp2[1]=(IDV/256)%256; settmp2[2]=((IDV/256)/256)%256; settmp2[3]=(((IDV/256)/256)/256)/256; settmp2[4]=(((IDV/256)/256)/256)%256; EEPROM_SectorErase(0X400);//²Á³ýEEPROM delay_ms(100); EEPROM_write_n(0X400,settmp2,5);//дÈëģʽ delay_ms(100); */ OLED_ShowString(10,2,"SUBITOP",16); Get_ADC10bitResult(7); jinr = Get_ADC10bitResult(7); oled_x(); delay_ms(200); OLED_Clear(); jinr1 = Get_ADC10bitResult(6); tm30=tm10*10; tm31=tm20*10; while(1) { //if (abs(jint-jinr)>65 ){jdjs_v=1;jdjs_v1=1;}else{jdjs_v=jdjs_v0;jdjs_v1=jdjs_v0;} //if (modv==1){delay_ms(2);} //jinr = Get_ADC10bitResult(7); //kgsj();// /* OLED_ShowNum(0,6,jinr,4,16); OLED_ShowNum(50,6,openv,4,16); OLED_ShowNum(90,6,closev,4,16); OLED_ShowNum(90,6,jint2,4,16); OLED_ShowNum(50,6,jint1,4,16); OLED_ShowNum(90,6,Get_ADC10bitResult(6),4,16); */ /**/ //if (modv==0||modv==1){if (bz_dz==1&&g1<9){g1++;}else{g1=settmp[7];}}//¹ýŤµ÷Ϊ×Ô¶¯ if (modv==0||modv==1) { if (bz_dz==1&&tm30<tm10*30){tm30++;kgsj_jsbz=1;}//else{tm30=tm10;} if (bz_dz==1&&tm31<tm20*30){tm31++;kgsj_jsbz=1;}//else{tm31=tm20;} if (kgcs_bz1>5&&tm30>tm10*10/3){tm30--;kgsj_jsbz=1;} if (kgcs_bz2>5&&tm31>tm20*10/3){tm31--;kgsj_jsbz=1;} if (kgsj_jsbz==1){kgsj_jsbz=0;} }//¹ýŤµ÷Ϊ×Ô¶¯ /************* **************/ oled_s1(); if (zdkzv>0&&x2==0) { //zdkzv:1-13,2-12321,3-1231,4-1321 if (zjsv3==1)//×Ô¶¯¿ØÖÆ { if (X1==1){X1=0;X3=1;}else{X1=1;X3=0;} if (zdv<5){zdv++;}else{zdv=1;} switch(zdv) { case 1:X1=0;X2=1;X3=1;break; case 2:if (zdkzv==2||zdkzv==3){X1=1;X2=0;X3=1;}else {zdv++;} break; case 3:X1=1;X2=1;X3=0;break; case 4:if (zdkzv==2||zdkzv==4){X1=1;X2=0;X3=1;}else {X1=0;X2=1;X3=1;zdv=1;}break; } zjsv3=0; } } if (jsv3==1&& (modv==1 || modv==0)) { if (x6==1) {modbus_bw();}//×Ô¶¯±¨ÎÄ jsv3=0; } if (jsv30==1) { if (x5==1) {TX1_write2buff(add_v);}//ÐÄÌø°ü jsv30=0; } if (modbus_ex(1)==1)//дµØÖ· { add_v=RX1_Buffer[5]; write_cs(); if (x7==1)OLED_ShowNum(45,6,add_v,3,16); } if (modbus_ex(2)==1)//ģʽmodv { modv=RX1_Buffer[5]; write_cs(); OLED_Clear(); lcd0=0; } if (modbus_ex(3)==1)//±ê¶¨ { modv=2; ks=1; OLED_Clear(); } if (modbus_ex(16)==1)//Çý¶¯g1 { g1=RX1_Buffer[5]; if (g1<11)write_cs(); } if (modbus_ex(4)==1)//¾«¶Èx1 { x1=RX1_Buffer[5];if (x1<10)write_cs(); OLED_ShowNum(35,6,RX1_Buffer[5],4,16); } if (modbus_ex(5)==1)//³õʼλÖÃx0 { x0=RX1_Buffer[5];if (x0<4)write_cs(); } if (modbus_ex(6)==1)//ÖмäλÖÃxst { xst=RX1_Buffer[5]; jint2=xst*(closev-openv)/100+openv+1; if (jint2>closev){jint2=closev;} if (jint2<openv){jint2=openv;} xst=((abs(jint2-openv)*1000/(closev-openv)))/10; if (((abs(jint2-openv)*1000/(closev-openv)))/10<5){xst=0;} if (((abs(jint2-openv)*1000/(closev-openv)))/10>100){xst=100;} write_cs(); } if (modbus_ex(7)==1)//Ô¶³Ì¿ØÖÆx2 { x2=RX1_Buffer[5]; x3=0; if (x2==0){jint3=jint2;} } if (x2==1) { X1=1;X2=1;X3=1; if (modv==0||modv==1) if (x7==1)OLED_ShowString(100,6,"net",16); } else {if (modv==0||modv==1){if (x7==1)OLED_ShowString(100,6," ",16);}} if (x2==1 && X1==0 && X2==0 && X3==0){x2=0;jint3=jint2;} if (modbus_ex(8)==1)//¿ª¹Ø¿ØÖÆ { x3=RX1_Buffer[5]; } if (modbus_ex(9)==1&&x2==1)//¿ØÖÆ¿ª¶È { //x4=RX1_Buffer[5]; x3=0; xst=RX1_Buffer[5]; jint3=xst*(closev-openv)/100+openv+1; if (jint3>closev)jint3=closev; if (jint3<openv)jint3=openv; xst=((abs(jint3-openv)*1000/(closev-openv)))/10; if (((abs(jint3-openv)*1000/(closev-openv)))/10<5){xst=0;} if (((abs(jint3-openv)*1000/(closev-openv)))/10>100){xst=100;} } if (modbus_ex(10)==1)//ÐÄÌø°ü¿ØÖÆ { x5=RX1_Buffer[5];if (x5<2)write_cs(); } if (modbus_ex(11)==1)//×Ô¶¯±¨ÎÄ¿ØÖÆ { x6=RX1_Buffer[5];if (x6<2)write_cs(); } if (modbus_ex(12)==1)//µØÖ·ÏÔʾ { x7=RX1_Buffer[5];if (x7<2)write_cs(); if (x7==1){OLED_ShowString(1,6," add:",16);} else {OLED_ShowString(1,6," ",16);} if (x7==1){OLED_ShowNum(45,6,add_v,3,16); } else {OLED_ShowString(45,6," ",16); } if (x2==1) {if (modv==0||modv==1) if (x7==1)OLED_ShowString(100,6,"net",16); } else {if (modv==0||modv==1){if (x7==1)OLED_ShowString(100,6," ",16);}} if (modv==0||modv==1){if (x7==0)OLED_ShowString(100,6," ",16);}x3=0; } if (modbus_ex(13)==1)//×Ô¶¯¿ØÖÆzdkzv { zdkzv=RX1_Buffer[5];if (zdkzv<5)write_cs(); } if (modbus_ex(14)==1)//×Ô¶¯¿ØÖƼä¸ôi_tim { i_tim=RX1_Buffer[5];if (i_tim<256)write_cs(); } if (modbus_ex(15)==1)//±£´æÊý¾Ý { write_fzcs(); } if (modbus_ex(17)==1)//¿ª¹Ø¿ØÖÆ { kzmd=RX1_Buffer[5]; } if (modbus_zo()==1)//Çå0ÔËÐÐʱ¼ä¡¢¿ª¹Ø´ÎÊý { tim0=0; L1T=0;L2T=0;L3T=0; write_fzcs(); } if (modbus_id()==1)//id { IDV1=RX1_Buffer[3]*256+RX1_Buffer[4]; IDV2=RX1_Buffer[5]*256+RX1_Buffer[6]; write_fzcs(); } modbusv(); //*********************************************// if (tim_bz==1)//10·ÖÖÓ±£´æ { write_fzcs(); tim_bz=0; } if (modv==0 || modv==1)//01ģʽÏÔʾ { if (lcd0==0) { OLED_ShowString(1,0," Model:",16); OLED_ShowString(1,2," Setup:",16); OLED_ShowString(1,4," Fback:",16); OLED_ShowString(90,2,"%",16); OLED_ShowString(90,4,"%",16); if (modv==0){OLED_ShowString(57,0,"AD ",16);} if (modv==1){OLED_ShowString(57,0,"SW ",16);} if (x7==1)OLED_ShowString(1,6," add:",16); if (x7==1)OLED_ShowNum(45,6,add_v,3,16); lcd0=1; } if (((X1==0&&x2==0)||(x3==1&&x2==1))){xst=0;jint=openv;} if (((X3==0&&x2==0)||(x3==3&&x2==1))){xst=100;jint=closev;} OLED_ShowNum(55,2,xst,4,16); OLED_ShowNum(55,4,xsr,4,16); } //ÐźÅÊäÈë¼ì²â if (modv==0) { if ((jint1<50||jint1>1024)&&er1==0){er1=1;jxvop=1;jxvcl=1;} if (jint1>50&&jint1<1024&&er1==1){jint1 = Get_ADC10bitResult(6);delay_ms(300);er1=0;jxvop=0;jxvcl=0;} //if (jint1>50&&jint1<1024&&er1==1){jint1 = adv1;delay_ms(300);er1=0;jxvop=0;jxvcl=0;} if( er1==1){OLED_ShowString(57,0,"AD ER ",16);}else{OLED_ShowString(57,0,"AD ",16);} } // //Îı¾ÏÔʾ if (modv==2){OLED_ShowString(57,0,"Initial ",16);} //if (modv==3){OLED_ShowString(57,0,"Grade ",16);} if (modv==4){OLED_ShowString(57,0,"Position ",16);} if (modv==5){OLED_ShowString(57,0,"Accuracy ",16);} if (modv==6){OLED_ShowString(57,0,"Median ",16);} if (modv==7){OLED_ShowString(57,0,"A-test ",16);} if (k1>0){a1=0;} if (k3>0){a2=0;} //¿ª¹Ø´ÎÊý if (L1==0 && l1_bz==0){L1T++;l1_bz=1;} if (L1==1){l1_bz=0;} if (L2==0 && l2_bz==0){L2T++;l2_bz=1;} if (L2==1){l2_bz=0;} if (L3==0 && l3_bz==0){L3T++;l3_bz=1;} if (L3==1){l3_bz=0;} //01ģʽѡÔñ if ((k10==0 &&k3>0&&k2>0)&&modv<2&&a1==0) { switch(modv) { case 0:modv=1;jint=jint2;a1=1; OLED_Clear();a1=1;lcd0=0;break; case 1:modv=0;a1=1;OLED_Clear(); a1=1;lcd0=0;break; default:modv=0;a1=1;OLED_Clear();a1=1;lcd0=0;break; } } if ((k30==0 &&k1>0&&k2>0)&&modv<2&&a2==0) { switch(modv) { case 0:modv=1;jint=jint2;a1=1; OLED_Clear();a2=1;lcd0=0;break; case 1:modv=0;a1=1;OLED_Clear(); a2=1;lcd0=0;break; default:modv=0;a1=1;OLED_Clear();a2=1;lcd0=0;break; } } // if ((modv==0 || modv==1)&&(k1==0 && k3==0&&k2>0)){modv=2;OLED_Clear() ;}//½øÈë³õʼ»¯²Ëµ¥ //½øÈë²Ëµ¥ if ((k1==0 && k3==0&&k2>0) ) { if (a1==0){ switch(modv) { case 0:modv=2;a1=1;OLED_Clear();break; case 1:modv=2;a1=1;OLED_Clear();break; //case 2:modv=3;a1=1;OLED_Clear();break; case 2:modv=4;a1=1;OLED_Clear();break; case 4:modv=5;a1=1;OLED_Clear();break; case 5:modv=6;a1=1;OLED_Clear();break; case 6:modv=7;a1=1;OLED_Clear();break; case 7:modv=8;a1=1;OLED_Clear();break; case 8:modv=9;a1=1;OLED_Clear();break; case 9:modv=0;a1=1;OLED_Clear();lcd0=0;break; default:modv=0;a1=1;OLED_Clear();lcd0=0;break; } } } // if (modv==4)//³õʼλÖà { if (k10==0&&k3>0&&k2>0&&a1==0){if (x0>0){x0=x0-1;}a1=1;} if (k30==0&&k1>0&&k2>0&&a2==0){if (x0<3){x0=x0+1;}a2=1;} } if (modv==5)//¾«¶È { if (k10==0&&k3>0&&k2>0&&a1==0){if (x1>0){x1=x1-1;}a1=1;} if (k30==0&&k1>0&&k2>0&&a2==0){if (x1<9){x1=x1+1;}a2=1;} } //*/ if (modv==7) { if (k10==0&&k3>0&&k2>0){if (i_tim>1){i_tim=i_tim-1;}} if (k30==0&&k1>0&&k2>0){if (i_tim<255){i_tim=i_tim+1;}} if (k1==0&&k3>0&&k2==0&&a1==0){if (zdkzv>0){zdkzv=zdkzv-1;}a1=1;} if (k3==0&&k1>0&&k2==0&&a2==0){if (zdkzv<4){zdkzv=zdkzv+1;}a2=1;} } if (modv==2)//³õʼ»¯ { Y1=0;Y2=1; if (k1==0 && k2==0&&k3>0){ks=1;Y1=0;Y2=1;} if ( k3==0 && k2==0&&k1>0){ks=1;Y1=0;Y2=1;} if ( ks==1) { if ( jva2==0) { Y1=1;Y2=0;delay_ms(1500); OLED_ShowString(30,6," Waiting...",16); Y2=1;Y1=0;openv=Get_ADC10bitResult(7)+1;jint2=openv+abs((closev-openv)/2); delay_ms(3000); openv=Get_ADC10bitResult(7)-1;jint2=openv+abs((closev-openv)/2); delay_ms(300); jv1=Get_ADC10bitResult(7); if (abs(openv-jv1)<5){jva2=1;Y1=1;delay_ms(300);Y1=1;} //jva2=1; } if (jva2==1) { Y1=1;Y2=0;delay_ms(300);closev=Get_ADC10bitResult(7)-0;jint2=openv+abs((closev-openv)/2); delay_ms(3000); closev=Get_ADC10bitResult(7)-1;jint2=openv+abs((closev-openv)/2); delay_ms(1000); jv1=Get_ADC10bitResult(7); if (abs(closev-jv1)<5){jva2=2;Y2=1;tm10=0;delay_ms(300);Y2=1;} //jva2=2; } if(jva2==2)//¹ØÊ±¼ä { if (Y2==1){Y1=0;ksjv=1;} if(abs(openv-Get_ADC10bitResult(7))<10){Y1=1;ksjv=0;jva2=3;tm20=0;delay_ms(2000);Y1=1;} //jva2=3; } if(jva2==3)//¿ªÊ±¼ä { Y1=1; if (Y1==1){Y2=0;ksjv2=1;} if(abs(closev-Get_ADC10bitResult(7))<10){ksjv2=0;ks=0;jva2=0;delay_ms(1500);Y2=1; closev=closev+0; write_cs(); tm30=tm10; tm31=tm20; OLED_ShowString(30,6," OK! ",16); delay_ms(500);modv=modv0;OLED_Clear();lcd0=0; } } } } /* if (modv==3)//Çý¶¯µÈ¼¶ { if (k10==0&&k3>0&&k2>0&&a1==0){if (g1>0){g1=g1-1;}a1=1;} if (k30==0&&k1>0&&k2>0&&a2==0){if (g1<10){g1=g1+1;}a2=1;} } */ if (k20==0&&k10>0&&k30>0&&bca==0)//±£´æÉèÖà { bca=1; OLED_ShowString(30,6," Waiting...",16); write_cs(); Y1=1;Y2=1; OLED_ShowString(30,6," OK ",16); } if (k20>0)bca=0; if (modv==6)//ÖмäλÉèÖà { if (jint2<openv){jint2=openv+(closev-openv)/2;} if (jint2>closev){jint2=openv+(closev-openv)/2;} if(k10==0&&k2>0&&k3>0&&jint2>openv){jint2=jint2-1;} if(k30==0&&k2>0&&k1>0&&jint2<closev){jint2=jint2+1;} //xst=((abs(jint2-openv)*1000/(closev-openv)))/10; //if (((abs(jint2-openv)*1000/(closev-openv)))/10<5){xst=0;} //if (((abs(jint2-openv)*1000/(closev-openv)))/10>100){xst=100;} xst=((jint2-openv)*1000/(closev-openv))/10; if (xst<5){xst=0;} if (xst>100){xst=0;} } //³õʼλ if (modv==0 && X2B==1) { if ( abs(jinr1-jinr0)>10) {X2=1;X1=1;X3=1;X2B=0;} if ( (abs(jint3-jinr0)>10) && x2==1) {X2=1;X1=1;X3=1;X2B=0;} if (X1==0 ){X2=1;X3=1;X2B=0;} if (X2==0 ){X1=1;X3=1;X2B=0;} if (X3==0 ){X2=1;X1=1;X2B=0;} if (x3>0&& x2==1){X2B=0;} } if (modv==1 && X2B==1) { if (x3>0&& x2==1){X2B=0;} if (X1==0 ){X2=1;X3=1;X2B=0;} if (X2==0 ){X1=1;X3=1;X2B=0;} if (X3==0 ){X2=1;X1=1;X2B=0;} } // //È«¿ªÈ«¹Ø²Ù×÷X1X3 if (modv==0 || modv==1) { if (modv==0) { jint=(unsigned long)(openv+(((closev-openv)*10000ul/817ul)*abs((jint1-200ul)))/10000ul); if (jint<openv){jint=openv;} if (jint>closev){jint=closev;} if (jint<(openv+5)&& X2==1 && X3==1){X1=0;}else{X1=1;} if (jint>(closev-5)&& X2==1 && X1==1){X3=0;}else{X3=1;} } if ((modv==0 &&(X1==0||X3==0||jxvcl==1||jxvop==1)&&x2==0)||(modv==0 &&(x3==1||x3==3)&&x2==1)||(modv==1 && (X1==0||X3==0)&&x2==0)||(modv==1 && (x3==1||x3==3)&&x2==1)) { tj_yc1=0;tj_yc2=0;tj_yc3=0;tj_ma0=0;tj_ma1=0; if (((X1==0&&x2==0)||(jxvop==1&&x2==0)||(x3==1&&x2==1))&&openv<(jinr-2)){L2=1;Y4=1;Y2=1;if (Y3==1){Y1=0;}jint=openv;} if (((X3==0&&x2==0)||(jxvcl==1&&x2==0)||(x3==3&&x2==1))&&closev>(jinr+2)){L2=1;Y4=1;Y1=1;Y2=0;jint=closev;} oled_s1(); if ((X1==0&&x2==0)||(x3==1&&x2==1)){jxvop=0;} if ((X3==0&&x2==0)||(x3==3&&x2==1)){jxvcl=0;} if (kzmd==0) { if (x2==0) { if (((jinr<=openv)||(jinr<openv+2))&&(X1==0||jxvop==1)){jxvop=0;Y1=1;} if (((jinr>=closev)||(jinr>closev-2))&&(X3==0||jxvcl==1)){jxvcl=0;Y2=1;} } if (x2==1) { if (((jinr<=openv)||(jinr<openv+2))&&x3==1){jxvop=0;Y1=1;} if (((jinr>=closev)||(jinr>closev-2))&&x3==3){jxvcl=0;Y2=1;}//¿ª } } if(bz_dz==0) { if ((jinr<=openv)||(jinr<openv+6)) {L2=1;Y4=1;L3=1;L1=0;Y3=0;xsr=0;jrtem1=1200;csv=1;}else{L1=1;Y3=1;csv=0;} if ((jinr>=closev)||(jinr>closev-6)){L1=1;L2=1;Y4=1;L3=0;Y5=0;xsr=100;jrtem1=6000;csv=1;}else{L3=1;Y5=1;csv=0;} } else{ //¹ýŤ¸´Î» //if ((jinr<=openv)||(jinr<openv+4)) {bz_dz=0;} //if ((jinr>=closev)||(jinr>closev-4)) {bz_dz=0;} if (jinr<openv+4) {bz_dz=0;} if (jinr>closev-4) {bz_dz=0;} } //¹ØÊ±¼ä if ((X3==0)||(x3==3&&x2==1)){ksjv11=0;tm11=0;}//&&x2==0 if ((X1==0)||(x3==1&&x2==1)){ksjv12=0;tm21=0;}//&&x2==0 if (((X1==0) ||(x3==1&&x2==1)) && L1==1&&L3==0){ksjv11=1;}//&&x2==0 if(L1==0){ksjv11=0;} //¿ªÊ±¼ä if (((X3==0)||(x3==3&&x2==1)) && L3==1&&L1==0){ksjv12=1;}//&&x2==0 if(L3==0){ksjv12=0;} LoadPWM(jrtem1); delay_ms(2); //if ((L1==0||L3==0 )&& csvbz==1){jinr0 = Get_ADC10bitResult(6);X2B=1;} //if ((L1==0||L3==0 )&& csvbz==1){jinr0 = adv1();X2B=1;} if ((L1==0||L3==0 )&& csvbz==1){jinr0 =Get_ADC10bitResult(6);X2B=1;} } // //Y1¹ØY2¿ª //4-20MAģʽ //Get_ADC10bitResult(6); jint1 = Get_ADC10bitResult(6); //jint1 = adv1(); jinr = adv(); if (x2==1)//Ô¶³Ì¿ØÖÆÖмäÁ¿ { tj_ma0=0;tj_ma1=0; if (modv==0 && x3==0){jint=jint3;tj_yc1=1;}else{tj_yc1=0;} if (modv==0 && x3==2){jint=jint2;tj_yc2=1;}else{tj_yc2=0;} if (modv==1 && x3==2){jint=jint2;tj_yc3=1;}else{tj_yc3=0;} } else//±¾µØ¿ØÖÆÖмäÁ¿ { tj_yc1=0;tj_yc2=0;tj_yc3=0; if (modv==0 && X2==1&& X1==1&& X3==1&&jxvcl==0&&jxvop==0){jint=(unsigned long)(openv+(((closev-openv)*10000ul/817ul)*abs((jint1-208ul)))/10000ul);}//+3ul;} if ((modv==0 && X2==0&& X1==1&& X3==1)||(modv==1&& X2==0&& X1==1&& X3==1) ){jint=jint2;} if (er1==1 && modv==0){ if (x0==1){jint=openv;} if (x0==2){jint=jint2;;} if (x0==3){jint=closev;} } if (er1==0 && modv==0 ){if (X2==1&& X1==1&& X3==1){jint=(unsigned long)(openv+(((closev-openv)*10000ul/817ul)*abs((jint1-208ul)))/10000ul);}} if ((modv==0 && X2==1&& X1==1&& X3==1&&jxvop==0&&jxvcl==0)||(modv==0 && X2==0&& X1==1&& X3==1)){tj_ma0=1;}else{tj_ma0=0;} if (modv==1 && X2==0&& X1==1&& X3==1){tj_ma1=1;}else{tj_ma1=0;} } if ((tj_ma0==1||tj_ma1==1||tj_yc1==1||tj_yc2==1||tj_yc3==1)) { if ((jint>(closev-1-x1) && jint<(closev+1+x1))){jint=closev;jxvcl=1;}else{jxvcl=0;} if ((jint>(openv-1-x1) && jint<(openv+1+x1))){jint=openv;jxvop=1; }else{jxvop=0;} xst=(abs(jint-openv)*100/(closev-openv)); oled_s1(); if (jint<openv){jint=openv;} if (jint>closev){jint=closev;} if (jint>(jinr-1) && jint<(jinr+1)){Y1=1;Y2=1;kgcs_bz1=0;kgcs_bz2=0;} if (jint<jinr ) { if (jint<(jinr-1-x1) )//¹Ø***********OPENV { jxvcl=0; oled_s1(); if (jint>(jinr-1-x1) && jint<(jinr+1+x1)){Y1=1;Y2=1;kgcs_bz1=0;kgcs_bz2=0;} if (tjdz_bz2_b1==0) {if (Y3==1){Y1=0;Y2=1;}}else{Y1=1;Y2=1;} if (jint>(jinr-1) && jint<(jinr+1)){Y1=1;Y2=1;kgcs_bz1=0;kgcs_bz2=0;} if (jint>(jinr-1-x1) && jint<(jinr+1+x1)){Y1=1;} if (L2==0&&bz_dz==0&&Y1==0){kgcs_bz1++;} } } if (jint>jinr ) { if (jint>(jinr+1+x1) )//¿ª***** { jxvop=0; oled_s1(); if (jint>(jinr-1) && jint<(jinr+1)){Y1=1;Y2=1;kgcs_bz1=0;kgcs_bz2=0;} if (jint>(jinr-1-x1) && jint<(jinr+1+x1)){Y1=1;Y2=1;kgcs_bz1=0;kgcs_bz2=0;} if (tjdz_bz2_b==0) {Y1=1;Y2=0;}else{Y2=1;Y1=1;} if (jint>(jinr-1) && jint<(jinr+1)){Y1=1;Y2=1;kgcs_bz1=0;kgcs_bz2=0;} if (jint>(jinr-1-x1) && jint<(jinr+1+x1)) {Y2=1;} if (L2==0&&bz_dz==0&&Y2==0){kgcs_bz2++;} } } jinr = adv(); if (jint>(jinr-1) && jint<(jinr+1)){Y1=1;Y2=1;kgcs_bz1=0;kgcs_bz2=0;} //ָʾµÆ if(bz_dz==0) { if (jinr>(openv-(4+x1)) && jinr<(openv+(4+x1)) ) {L1=0;Y3=0;xsr=0;jrtem1=1200;csv=1;bz_dz=0;}else{L1=1;Y3=1;csv=0;} if (jinr>(closev-(4+x1)) && jinr<(closev+(4+x1)) ){L3=0;Y5=0;xsr=100;jrtem1=6000;csv=1;bz_dz=0;}else{L3=1;Y5=1;csv=0;} if (jint>(openv-(4+x1)) && jint<(openv+(4+x1)) ) {xst=0;} if (jint>(closev-(4+x1)) && jint<(closev+(4+x1)) ){xst=100;} if (jint>(jinr-(4+x1)) && jint<(jinr+(4+x1)) && L1==1 && L3==1) {L2=0;Y4=0;csv=1;}else{L2=1;Y4=1;csv=0;bz_dz=0;} } else{ //¹ýŤ¸´Î» if (jinr>(openv-(4+x1)) && jinr<(openv+(4+x1)) ) {bz_dz=0;} if (jinr>(closev-(4+x1)) && jinr<(closev+(4+x1))) {bz_dz=0;} if (jint>(jinr-(4+x1)) && jint<(jinr+(4+x1)) ) {bz_dz=0;} } LoadPWM(jrtem1);delay_ms(1); //if ((L1==0||L2==0||L3==0 )&& csvbz==1){Get_ADC10bitResult(6);jinr0 = Get_ADC10bitResult(6);X2B=1;} if ((L1==0||L2==0||L3==0 )&& csvbz==1){jinr0 = Get_ADC10bitResult(6);X2B=1;} //} } } //ģʽÏÔʾ if (modv==3 || modv==4 ||modv==5 ||modv==6) { OLED_ShowString(1,0," DATA :",16); OLED_ShowString(1,4," Setup:",16); } if (modv==6)//Öмäλ { OLED_ShowNum(55,4,xst,4,16); OLED_ShowString(90,4,"%",16); } if (modv==2)//³õʼ»¯ { OLED_ShowString(1,0," DATA :",16); OLED_ShowString(1,2," KEY1+KEY2",16); } if (modv==4)//³õʼλÖà { OLED_ShowNum(55,4,x0,4,16); } if (modv==5)//¾«¶È { OLED_ShowNum(55,4,x1,4,16); } /* if (modv==3)//Çý¶¯µÈ¼¶ { //if (g1==0){OLED_ShowString(57,4,"Auto ",16);}else{OLED_ShowString(57,4,"Fix ",16);} OLED_ShowString(57,4,"Fix ",16); OLED_ShowNum(88,4,g1,2,16); } */ if (modv==7) { OLED_ShowString(1,0," DATA :",16); OLED_ShowString(1,2," Type:",16); OLED_ShowString(1,4," time:",16); OLED_ShowString(1,4," time:",16); OLED_ShowNum(50,2,zdkzv,1,16); //zdkzv:1-13,2-12321,3-1231,4-1321 OLED_ShowNum(50,4,i_tim,3,16); OLED_ShowString(100,4,"s",16); switch(zdkzv) { case 0:OLED_ShowString(70,2," OFF ",16); break; case 1:OLED_ShowString(70,2," 13 ",16); break; case 2:OLED_ShowString(70,2," 12321",16); break; case 3:OLED_ShowString(70,2," 1231 ",16); break; case 4:OLED_ShowString(70,2," 1321 ",16); break; } } if (modv==8) { //OLED_ShowString(1,0," Model:",16); OLED_ShowString(1,0," ID:",16); OLED_ShowString(1,2," T-OP:",16); OLED_ShowString(1,4," T-CL:",16); OLED_ShowNum(34,0,IDV1,5,16);OLED_ShowNum(74,0,IDV2,5,16); //OLED_ShowString(35,0,LCD_line0,16); OLED_ShowNum(50,2,tm22,6,16); OLED_ShowNum(50,4,tm12,6,16); OLED_ShowNum(0,6,tim0/60,6,16);OLED_ShowString(50,6," H ",16); OLED_ShowNum(75,6,tim0%60,2,16);OLED_ShowString(95,6," M ",16); } if (modv==9) { //OLED_ShowString(1,0," Model:",16); OLED_ShowString(1,0,"N-OP:",16); OLED_ShowString(1,2,"N-MD:",16); OLED_ShowString(1,4,"N-CL:",16); OLED_ShowNum(40,0,L1T,8,16); OLED_ShowNum(40,2,L2T,8,16); OLED_ShowNum(40,4,L3T,8,16); //OLED_ShowNum(0,6,tm10,4,16); //OLED_ShowNum(60,6,tm20,4,16); } } } void oled_s1() { //jint1 = Get_ADC10bitResult(6); jint1 =adv1(); jinr = adv(); oled_x(); if ((abs(jint-openv)*100/(closev-openv))<4){xst=0;} if ((abs(jint-openv)*100/(closev-openv))>97){xst=100;} if ((abs(jinr-openv)*100/(closev-openv))<4){xsr=0;} if ((abs(jinr-openv)*100/(closev-openv))>97){xsr=100;} jrtem1=(120000ul+48ul*((abs(jinr-openv)*10000ul/(closev-openv))))/100ul; jrtem1=jrtem1-jrtem1/100ul; if (xst==0){jrtem1=1200;} if (xst==100){jrtem1=6000;} LoadPWM(jrtem1); } void oled_x() { jinr = adv(); xst=(abs(jint-openv)*100/(closev-openv)); xsr=(abs(jinr-openv)*100/(closev-openv)); } void kgsj() { if (tm10>=0 && tm10<100){jdjs_v=20;jdjs_v1=22;jdjs_v10=1;jdjs_v20=1;} if (tm10>=100 && tm10<150){jdjs_v=16;jdjs_v1=15;jdjs_v10=1;jdjs_v20=1;} if (tm10>=150 && tm10<200){jdjs_v=12;jdjs_v1=12;jdjs_v10=1;jdjs_v20=1;} if (tm10>=200 && tm10<280){jdjs_v=11;jdjs_v1=11;jdjs_v10=1;jdjs_v20=1;} if (tm10>=280 && tm10<380){jdjs_v=10;jdjs_v1=10;jdjs_v10=1;jdjs_v20=1;} if (tm10>=380 && tm10<500){jdjs_v=9;jdjs_v1=9;jdjs_v10=2;jdjs_v20=2;} if (tm10>=500 && tm10<650){jdjs_v=8;jdjs_v1=8;jdjs_v10=2;jdjs_v20=2;} if (tm10>=650 && tm10<850){jdjs_v=7;jdjs_v1=7;jdjs_v10=2;jdjs_v20=2;} if (tm10>=850 && tm10<1200){jdjs_v=6;jdjs_v1=6;jdjs_v10=2;jdjs_v20=2;} if (tm10>=1200 && tm10<1500){jdjs_v=5;jdjs_v1=5;jdjs_v10=2;jdjs_v20=3;} if (tm10>=1500 && tm10<2000){jdjs_v=4;jdjs_v1=4;jdjs_v10=3;jdjs_v20=3;} if (tm10>=2000 && tm10<2500){jdjs_v=3;jdjs_v1=3;jdjs_v10=3;jdjs_v20=3;} if (tm10>=2500 && tm10<3000){jdjs_v=2;jdjs_v1=2;jdjs_v10=4;jdjs_v20=4;} if (tm10>=3000 && tm10<4000){jdjs_v=1;jdjs_v1=1;jdjs_v10=5;jdjs_v20=5;} if (tm10>=4000 && tm10<6000){jdjs_v=1;jdjs_v1=1;jdjs_v10=6;jdjs_v20=6;} if (tm10>=6000 && tm10<30000){jdjs_v=1;jdjs_v1=1;jdjs_v10=7;jdjs_v20=7;} jdjs_v=jdjs_v+(11-x1)/3; jdjs_v1=jdjs_v; } long int adv() { Get_ADC10bitResult(7); for(j=0, i=0; i<16; i++) { j += Get_ADC10bitResult(7); } return (j/16); } int adv1() { //Get_ADC10bitResult(6); int jst1=0; int ist1; jst1 = Get_ADC10bitResult(6); for( ist1=0; ist1<64; ist1++) { jst1 = (jst1 +Get_ADC10bitResult(6))/2; } return jst1; } //======================================================================== // º¯Êý: void PrintString1(u8 *puts) // ÃèÊö: ´®¿Ú1·¢ËÍ×Ö·û´®º¯Êý¡£ // ²ÎÊý: puts: ×Ö·û´®Ö¸Õë. // ·µ»Ø: none. // °æ±¾: VER1.0 // ÈÕÆÚ: 2014-11-28 // ±¸×¢: //======================================================================== /*void PrintString1(u8 *puts) //·¢ËÍÒ»¸ö×Ö·û´® { for (; *puts != 0; puts++) //Óöµ½Í£Ö¹·û0½áÊø { SBUF = *puts; B_TX1_Busy = 1; while(B_TX1_Busy); } } */ //======================================================================== // º¯Êý: void UART1_config(u8 brt) // ÃèÊö: UART1³õʼ»¯º¯Êý¡£ // ²ÎÊý: brt: Ñ¡Ôñ²¨ÌØÂÊ, 2: ʹÓÃTimer2×ö²¨ÌØÂÊ, ÆäËüÖµ: ʹÓÃTimer1×ö²¨ÌØÂÊ. // ·µ»Ø: none. // °æ±¾: VER1.0 // ÈÕÆÚ: 2014-11-28 // ±¸×¢: //======================================================================== void UART1_config(u8 brt) // Ñ¡Ôñ²¨ÌØÂÊ, 2: ʹÓÃTimer2×ö²¨ÌØÂÊ, ÆäËüÖµ: ʹÓÃTimer1×ö²¨ÌØÂÊ. { /*********** ²¨ÌØÂÊʹÓö¨Ê±Æ÷2 *****************/ if(brt == 2) { AUXR &= ~(1<<4); //Timer stop ²¨ÌØÂÊʹÓÃTimer2²úÉú AUXR |= 0x01; //S1 BRT Use Timer2; AUXR |= (1<<2); //Timer2 set as 1T mode TH2 = (u8)((65536UL - (MAIN_Fosc / 4) / Baudrate1) / 256); TL2 = (u8)((65536UL - (MAIN_Fosc / 4) / Baudrate1) % 256); AUXR |= (1<<4); //Timer run enable } /*********** ²¨ÌØÂÊʹÓö¨Ê±Æ÷1 *****************/ else { TR1 = 0; AUXR &= ~0x01; //S1 BRT Use Timer1; AUXR |= (1<<6); //Timer1 set as 1T mode TMOD &= ~(1<<6); //Timer1 set As Timer TMOD &= ~0x30; //Timer1_16bitAutoReload; TH1 = (u8)((65536UL - (MAIN_Fosc / 4) / Baudrate1) / 256); TL1 = (u8)((65536UL - (MAIN_Fosc / 4) / Baudrate1) % 256); ET1 = 0; //½ûÖ¹ÖÐ¶Ï INT_CLKO &= ~0x02; //²»Êä³öʱÖÓ TR1 = 1; } /*************************************************/ SCON = (SCON & 0x3f) | 0x40; //UART1ģʽ, 0x00: ͬ²½ÒÆÎ»Êä³ö, 0x40: 8λÊý¾Ý,¿É±ä²¨ÌØÂÊ, 0x80: 9λÊý¾Ý,¹Ì¶¨²¨ÌØÂÊ, 0xc0: 9λÊý¾Ý,¿É±ä²¨ÌØÂÊ PS = 1; //¸ßÓÅÏȼ¶ÖÐ¶Ï ES = 1; //ÔÊÐíÖÐ¶Ï REN = 1; //ÔÊÐí½ÓÊÕ P_SW1 &= 0x3f; P_SW1 |= 0x40; //UART1 switch to, 0x00: P3.0 P3.1, 0x40: P3.6 P3.7, 0x80: P1.6 P1.7 (±ØÐëʹÓÃÄÚ²¿Ê±ÖÓ) //PCON2 |= (1<<4); //ÄÚ²¿¶Ì·RXDÓëTXD, ×öÖмÌ, ENABLE,DISABLE //PCON|=0x80; //´®¿Ú²¨ÌØÂʼӱ¶ B_TX1_Busy = 0; TX1_Cnt = 0; RX1_Cnt = 0; } //======================================================================== // º¯Êý: void UART1_int (void) interrupt UART1_VECTOR // ÃèÊö: UART1ÖжϺ¯Êý¡£ // ²ÎÊý: nine. // ·µ»Ø: none. // °æ±¾: VER1.0 // ÈÕÆÚ: 2014-11-28 // ±¸×¢: //======================================================================== void UART1_int (void) interrupt 4 { if(RI) { RI = 0; if(RX1_Cnt >= RX1_Lenth) RX1_Cnt = 0; //·ÀÒç³ö RX1_Buffer[RX1_Cnt++] = SBUF; if (RX1_Buffer[0]!=add_v) RX1_Cnt = 0;//±¾»úµØÖ·ÅÐ¶Ï } if(TI) { TI = 0; //UART1_485_DE=1; if(TX_read != TX_write) { // UART1_485_DE=1; SBUF = TX1_Buffer[TX_read]; if(++TX_read >= TX1_Lenth) TX_read = 0; } //else {B_TX1_Busy = 0;UART1_485_DE=0;} else {B_TX1_Busy = 0;} } } void TX1_write2buff(u8 dat) //дÈë·¢ËÍ»º³å£¬Ö¸Õë+1 { TX1_Buffer[TX_write] = dat; //×°·¢ËÍ»º³å if(++TX_write >= TX1_Lenth) TX_write = 0; if(B_TX1_Busy == 0) //¿ÕÏÐ { TI = 1; //´¥·¢·¢ËÍÖÐ¶Ï B_TX1_Busy = 1; //±ê־æ } } unsigned int CRC16(unsigned char * puchMsg, unsigned int usDataLen) { unsigned int temp=0xffff,temp1,i,j; for(i=0;i<usDataLen;i++) { temp^=*(puchMsg+i); for(j=0;j<8;j++) { temp1=temp; temp>>=1; if(temp1&0x0001) temp^=0xa001; } } return(temp); } void write_fzcs(void) { settmp1[0]=tim0%256; settmp1[1]=(tim0/256)/256; settmp1[2]=(tim0/256)%256; settmp1[3]=L1T%256; settmp1[4]=(L1T/256)/256; settmp1[5]=(L1T/256)%256; settmp1[6]=L2T%256; settmp1[7]=(L2T/256)/256; settmp1[8]=(L2T/256)%256; settmp1[9]=L3T%256; settmp1[10]=(L3T/256)/256; settmp1[11]=(L3T/256)%256; settmp1[12]=tm22/256; settmp1[13]=tm22%256; settmp1[14]=tm12/256; settmp1[15]=tm12%256; settmp1[16]=IDV1/256; settmp1[17]=IDV1%256; settmp1[18]=IDV2/256; settmp1[19]=IDV2%256; EEPROM_SectorErase(0X200);//²Á³ýEEPROM delay_ms(10); EEPROM_write_n(0X200,settmp1,20);//дÈëģʽ delay_ms(10); } void write_cs(void) { settmp[0]=openv/256; settmp[1]=openv%256; settmp[2]=closev/256; settmp[3]=closev%256; settmp[4]=jint2/256; settmp[5]=jint2%256; if (modv==0||modv==1){settmp[6]=modv;modv0=modv;}else{settmp[6]=modv0;} settmp[7]=g1; settmp[8]=tm10/256; settmp[9]=tm10%256; settmp[10]=tm20/256; settmp[11]=tm20%256; settmp[12]=x0; settmp[13]=x1; settmp[14]=add_v; settmp[15]=x5; settmp[16]=x6; settmp[17]=x7; settmp[18]=zdkzv; settmp[19]=i_tim; EEPROM_SectorErase(0X0);//²Á³ýEEPROM delay_ms(10); EEPROM_write_n(0X0,settmp,20);//дÈëģʽ delay_ms(10); } void modbusv(void)//¶ÁÈ¡ËùÓвÎÊý {//01 01 00 65 00 2E 20 XX XX char e1=0; u16 crc; if(RX1_Cnt>7) { crc=CRC16(RX1_Buffer,RX1_Cnt-2); if (RX1_Buffer[RX1_Cnt-2]!=(crc%256) || RX1_Buffer[RX1_Cnt-1]!=(crc/256)) {RX1_Cnt = 0;e1=1;}//ÅжÏÊý¾ÝÊÇ·ñÕýÈ· if (RX1_Buffer[1]==0X01 &&RX1_Buffer[2]==0X00 &&RX1_Buffer[3]==0X65 &&RX1_Buffer[5]==0X2E &&RX1_Buffer[6]==0X20 && e1==0) { modbus_bw(); RX1_Cnt = 0; } } } void modbus_bw(void)//×Ô¶¯±¨ÎÄ--¶ÁÈ¡ËùÓвÎÊý { u8 i; u8 XV1,XV2; u8 X201=0,X202=0,X203=0; u8 Y101=0,Y102=0,Y103=0,Y104=0,Y105=0; u8 L101=0,L102=0,L103=0; u16 crc1; u8 V3[48]; if (modv==0 || modv==1)//01ģʽÏÔʾ { if (((X1==0&&x2==0)||(x3==1&&x2==1))){xst=0;jint=openv;} if (((X3==0&&x2==0)||(x3==3&&x2==1))){xst=100;jint=closev;} } X201=X1;X202=X2;X203=X3; Y101=Y1;Y102=Y2;Y103=Y3;Y104=Y4;Y105=Y5; L101=L1;L102=L2;L103=L3; XV1=_bin(X201,X202,X203,0,0,0,0,0); XV2=_bin(Y101,Y102,Y103,Y104,Y105,L101,L102,L103); V3[6]=XV1;V3[7]=XV2; V3[0]=add_v;//µØÖ· V3[1]=0X01;//Ö¸Áî V3[2]=0X24;//Êý¾Ý³¤¶È V3[3]=0X00+modv;//ģʽ V3[4]=0X00+g1;//Çý¶¯Ä£Ê½ V3[5]=0X00+x1;//¾«¶È V3[6]=0X00+x0;//³õʼλÖà V3[7]=0X00+xst;//Öмäλ V3[8]=0X00+x5;//ÐÄÌø°ü V3[9]=0X00+x6;//×Ô¶¯±¨ÎÄ V3[10]=0X00+x7;//µØÖ·ÏÔʾ V3[11]=zdkzv;//×Ô¶¯¿ØÖÆÀàÐÍ V3[12]=i_tim;//×Ô¶¯¿ØÖƼä¸ô V3[13]=XV1;//X¶Ë V3[14]=XV2;//Y¶Ë V3[15]=jint/256;//ÊäÈë V3[16]=jint%256; V3[17]=jinr/256;//Êä³ö V3[18]=jinr%256; V3[19]=0X00+xst;//ÊäÈ뿪¶È V3[20]=0X00+xsr;//¿ª¶È V3[21]=tim0%256;//ÔËÐÐʱ¼ä·ÖÖÓtim0=(V3[16]*256+V3[17])*256+V3[15]; V3[22]=(tim0/256)/256; V3[23]=(tim0/256)%256; V3[24]=L1T%256;//¿ª´ÎÊý V3[25]=(L1T/256)/256; V3[26]=(L1T/256)%256; V3[27]=L2T%256;//Öмä´ÎÊý V3[28]=(L2T/256)/256; V3[29]=(L2T/256)%256; V3[30]=L3T%256;//¹Ø´ÎÊý V3[31]=(L3T/256)/256; V3[32]=(L3T/256)%256; V3[33]=tm22/256;//¿ªÊ±¼ä V3[34]=tm22%256; V3[35]=tm12/256;//¹ØÊ±¼ä V3[36]=tm12%256; V3[37]=openv/256;//openv V3[38]=openv%256; V3[39]=closev/256;//closev V3[40]=closev%256; V3[41]=IDV1/256;//idǰ5λ V3[42]=IDV1%256; V3[43]=IDV2/256;//idºó5λ V3[44]=IDV2%256; V3[45]=0X20;//ÉèÖÃÀàÐÍ0X01µç¶¯//0X20Æø¶¯¿ª¹ØºÐ crc1=CRC16(V3,46); V3[46]=crc1%256; V3[47]=crc1/256; for(i=0; i<48; i++) {TX1_write2buff(V3[i]);} //Êý¾Ý·µ»Ø } int modbus_ex(char x)//²ÎÊý±à¼­ {//01 06 01 F5 00 01 20 XX XX u8 i; u8 rx3; u16 crc; char e1=0; switch(x) { case 1:rx3=0XF1;break;//µØÖ·add_v 01 06 01 F1 00 01 20 XX XX case 2:rx3=0XF2;break;//ģʽmodv 01 06 01 F2 00 01 20 XX XX case 3:rx3=0XF3;break;//±ê¶¨ 01 06 01 F3 00 01 20 XX XX case 4:rx3=0XF4;break;//¾«¶Èx1 01 06 01 F4 00 01 20 XX XX case 5:rx3=0XF5;break;//³õʼλÖÃx0 01 06 01 F5 00 01 20 XX XX case 6:rx3=0XF6;break;//ÖмäÖµxst 01 06 01 F6 00 01 20 XX XX case 7:rx3=0XF7;break;//network--x2 01 06 01 F7 00 01 20 XX XX case 8:rx3=0XF8;break;//¿ª¹Ø¿ØÖÆ123--x3 01 06 01 F8 00 01 20 XX XX case 9:rx3=0XF9;break;//¿ª¶È¿ØÖÆ--x4 01 06 01 F9 00 01 20 XX XX case 10:rx3=0XFA;break;//ÐÄÌø°ü--x5 01 06 01 FA 00 01 20 XX XX case 11:rx3=0XFB;break;//×Ô¶¯±¨ÎÄ--x6 01 06 01 FB 00 01 20 XX XX case 12:rx3=0XFC;break;//µØÖ·ÏÔʾ--x7 01 06 01 FC 00 01 20 XX XX case 13:rx3=0XFD;break;//×Ô¶¯¿ØÖÆ--zdkzv 01 06 01 FD 00 01 20 XX XX case 14:rx3=0XFE;break;//ʱ¼ä¼ä¸ô--i_tim 01 06 01 FE 00 01 20 XX XX case 15:rx3=0XFF;break;//Êý¾Ý±£´æ--x8 01 06 01 FF 00 01 20 XX XX case 16:rx3=0XE1;break;//Çý¶¯g1 01 06 01 E1 00 01 20 XX XX case 17:rx3=0XE2;break;//Çý¶¯µ¥Ë«kzmd 01 06 01 E2 00 01 20 XX XX } if(RX1_Cnt > 7) { crc=CRC16(RX1_Buffer,RX1_Cnt-2); if (RX1_Buffer[RX1_Cnt-2]!=(crc%256) || RX1_Buffer[RX1_Cnt-1]!=(crc/256)) {RX1_Cnt = 0;e1=1;}//ÅжÏÊý¾ÝÊÇ·ñÕýÈ· if ( RX1_Buffer[1]==0X06 &&RX1_Buffer[2]==0X01 && RX1_Buffer[3]==rx3 && RX1_Buffer[6]==0X20 && e1==0)//¶ÁÈ¡ÊäÈëÃüÁî { for(i=0; i<RX1_Cnt; i++) {TX1_write2buff(RX1_Buffer[i]);} //ÊÕµ½µÄÊý¾ÝÔ­Ñù·µ»Ø RX1_Cnt = 0; return 1; } } return 0; } int modbus_zo(void)//ÔËÐÐÊý¾ÝÇå0¿ª¹ØÊ±¼äÔËÐÐʱ¼ä {//01 06 FF FF 00 00 20 FF FF---01 06 FF 00 00 20 u8 i; u16 crc; char e1=0; if(RX1_Cnt > 7) { crc=CRC16(RX1_Buffer,RX1_Cnt-2); if (RX1_Buffer[RX1_Cnt-2]!=(crc%256) || RX1_Buffer[RX1_Cnt-1]!=(crc/256)) {RX1_Cnt = 0;e1=1;}//ÅжÏÊý¾ÝÊÇ·ñÕýÈ· // if ( RX1_Buffer[1]==0X06 &&RX1_Buffer[2]==0XFF && RX1_Buffer[3]==0XFF&& RX1_Buffer[4]==0X00&& RX1_Buffer[5]==0X00 && RX1_Buffer[6]==0X20&& RX1_Buffer[7]==0XFF&& RX1_Buffer[8]==0XFF&& e1==0)//¶ÁÈ¡ÊäÈëÃüÁî if ( RX1_Buffer[1]==0X06 &&RX1_Buffer[2]==0XFF && RX1_Buffer[5]==0X20 && e1==0)//¶ÁÈ¡ÊäÈëÃüÁî { for(i=0; i<RX1_Cnt; i++) {TX1_write2buff(RX1_Buffer[i]);} //ÊÕµ½µÄÊý¾ÝÔ­Ñù·µ»Ø RX1_Cnt = 0; return 1; } } return 0; } int modbus_id(void)//IDÐÞ¸Ä {//01 06 EE EE 00 00 00 00 20 EE EE //01 06 EE 00 00 00 00 20 u8 i; u16 crc; char e1=0; if(RX1_Cnt > 7) { crc=CRC16(RX1_Buffer,RX1_Cnt-2); if (RX1_Buffer[RX1_Cnt-2]!=(crc%256) || RX1_Buffer[RX1_Cnt-1]!=(crc/256)) {RX1_Cnt = 0;e1=1;}//ÅжÏÊý¾ÝÊÇ·ñÕýÈ· if ( RX1_Buffer[1]==0X06 &&RX1_Buffer[2]==0XEE && RX1_Buffer[7]==0X20 && e1==0)//¶ÁÈ¡ÊäÈëÃüÁî { for(i=0; i<RX1_Cnt; i++) {TX1_write2buff(RX1_Buffer[i]);} //ÊÕµ½µÄÊý¾ÝÔ­Ñù·µ»Ø RX1_Cnt = 0; return 1; } } return 0; } void INIT_SET(void) { settmp1[0]=0; settmp1[1]=0; settmp1[2]=0; settmp1[3]=0; settmp1[4]=0; settmp1[5]=0; settmp1[6]=0; settmp1[7]=0; settmp1[8]=0; settmp1[9]=0; settmp1[10]=0; settmp1[11]=0; settmp1[12]=0; settmp1[13]=0; settmp1[14]=0; settmp1[15]=0; settmp1[16]=0; settmp1[17]=0; settmp1[18]=0; settmp1[19]=0; EEPROM_SectorErase(0X200);//²Á³ýEEPROM delay_ms(10); EEPROM_write_n(0X200,settmp1,20);//дÈëģʽ delay_ms(10); settmp[0]=0; settmp[1]=0; settmp[2]=0; settmp[3]=0; settmp[4]=0; settmp[5]=0; settmp[6]=0; settmp[7]=0; settmp[8]=0; settmp[9]=0; settmp[10]=0; settmp[11]=0; settmp[12]=0; settmp[13]=0; settmp[14]=0; settmp[15]=0; settmp[16]=0; settmp[17]=0; settmp[18]=0; settmp[19]=0; settmp[20]=1; EEPROM_SectorErase(0X0);//²Á³ýEEPROM delay_ms(10); EEPROM_write_n(0X0,settmp,21);//дÈëģʽ delay_ms(10); }

filetype
内容概要:本文介绍了基于Python实现的SSA-GRU(麻雀搜索算法优化门控循环单元)时间序列预测项目。项目旨在通过结合SSA的全局搜索能力和GRU的时序信息处理能力,提升时间序列预测的精度和效率。文中详细描述了项目的背景、目标、挑战及解决方案,涵盖了从数据预处理到模型训练、优化及评估的全流程。SSA用于优化GRU的超参数,如隐藏层单元数、学习率等,以解决传统方法难以捕捉复杂非线性关系的问题。项目还提供了具体的代码示例,包括GRU模型的定义、训练和验证过程,以及SSA的种群初始化、迭代更新策略和适应度评估函数。; 适合人群:具备一定编程基础,特别是对时间序列预测和深度学习有一定了解的研究人员和技术开发者。; 使用场景及目标:①提高时间序列预测的精度和效率,适用于金融市场分析、气象预报、工业设备故障诊断等领域;②解决传统方法难以捕捉复杂非线性关系的问题;③通过自动化参数优化,减少人工干预,提升模型开发效率;④增强模型在不同数据集和未知环境中的泛化能力。; 阅读建议:由于项目涉及深度学习和智能优化算法的结合,建议读者在阅读过程中结合代码示例进行实践,理解SSA和GRU的工作原理及其在时间序列预测中的具体应用。同时,关注数据预处理、模型训练和优化的每个步骤,以确保对整个流程有全面的理解。
filetype
内容概要:本文详细介绍了如何使用PyQt5创建一个功能全面的桌面备忘录应用程序,涵盖从环境准备、数据库设计、界面设计到主程序结构及高级功能实现的全过程。首先,介绍了所需安装的Python库,包括PyQt5、sqlite3等。接着,详细描述了SQLite数据库的设计,创建任务表和类别表,并插入默认类别。然后,使用Qt Designer设计UI界面,包括主窗口、任务列表、工具栏、过滤器和日历控件等。主程序结构部分,展示了如何初始化UI、加载数据库数据、显示任务列表以及连接信号与槽。任务管理功能方面,实现了添加、编辑、删除、标记完成等操作。高级功能包括类别管理、数据导入导出、优先级视觉标识、到期日提醒、状态管理和智能筛选等。最后,提供了应用启动与主函数的代码,并展望了扩展方向,如多用户支持、云同步、提醒通知等。 适合人群:零基础或初学者,对Python和桌面应用程序开发感兴趣的开发者。 使用场景及目标:①学习PyQt5的基本使用方法,包括界面设计、信号与槽机制;②掌握SQLite数据库的基本操作,如创建表、插入数据、查询等;③实现一个完整的桌面应用程序,具备增删改查和数据持久化功能;④了解如何为应用程序添加高级特性,如类别管理、数据导入导出、到期日提醒等。 阅读建议:此资源不仅适用于零基础的学习者,也适合有一定编程经验的开发者深入理解PyQt5的应用开发。建议读者跟随教程逐步实践,结合实际操作来理解和掌握每个步骤,同时可以尝试实现扩展功能,进一步提升自己的开发技能。
西西nayss
  • 粉丝: 99
上传资源 快速赚钱