電動車控制器C語言源代碼講解_第1頁
電動車控制器C語言源代碼講解_第2頁
電動車控制器C語言源代碼講解_第3頁
電動車控制器C語言源代碼講解_第4頁
電動車控制器C語言源代碼講解_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

#define_E_BIKE_W79E83X_C#includeintrins.h#includeE_BIKE_W79E83X.H#includeW79E834.h/******************************************************************************主函數(shù)****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidmain(void){Init();//初始化Init_IO();//初始化端口H_Sample();//霍爾信號采樣Phase_Change();//相位變換AutoHelpEN(1,0x1AA,200);/*第一個參數(shù)設(shè)定助力功能允許與否,1為允許,0為禁止第二個參數(shù)設(shè)定助力力量(PWM占空比),數(shù)值范圍:0~0x355,數(shù)值越大,力量越大第三個參數(shù)設(shè)定助力時間,數(shù)值越大,時間越長*/Keep_SpeedEN(1,0x20,6);/*第一個參數(shù)設(shè)定定速巡航功能允許與否,1為允許,0為禁止第二個參數(shù)設(shè)定定速巡航最低速設(shè)置第三個參數(shù)設(shè)定在巡航點保持多長時間后才進入巡航*/Current_Lim(0xB48);/*過流保護上限值設(shè)定0xB00對應(yīng)限電流最大大約為2.6A0xB80對應(yīng)限流值最大大約為3.8A*/LowVoltage_Lim(0x9B0);/*欠壓保護下限值設(shè)定電池電壓為47.9V時ADC采樣值為0xB6==>0xB60推算電池電壓為41V時的采樣值為0x9B==>0x9B0推算電池電壓為40V時的采樣值為0x98==>0x980*/EABS_Set(1,1);/*第一個參數(shù)為滑行充電功能使能,1為允許,0為禁止第二個參數(shù)為電剎車功能使能,1為允許,0為禁止*/Speed_LimHW(0,0,0,1);/*硬件控制最大速度參數(shù)只能有一個為1。第一個參數(shù)對應(yīng)15km/h20km/h第二個參數(shù)對應(yīng)第三個參數(shù)對應(yīng)30km/h第四個參數(shù)對應(yīng)40km/h*/Speed_LimSW(0x01);/*軟件控制最大速度參數(shù)數(shù)值由0x00~0x20,數(shù)值越小速度越大,反之則越小while(1){_nop_();//AutoHelpEN(0,0x1AA,100);//Keep_SpeedEN(1,0x20,6);//Current_Lim(0xB50);//LowVoltage_Lim(0x9B0);//EABS_Set(0,0);//Speed_LimHW(0,0,0,1);}}/*******************************************************************************I/O端口初始化****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidInit_IO(void){//------P0端口設(shè)置------//P0M1=0xBE;P0M2=0x01;/*P0M1.YP0M2.Y=00設(shè)置I/O端口為普通雙向模式P0M1.YP0M2.Y=01設(shè)置I/O端口為推拉模式P0M1.YP0M2.Y=10設(shè)置I/O端口為輸入(高阻)模式P0M1.YP0M2.Y=11設(shè)置I/O端口為開漏模式*///P0ID=0x78; //設(shè)置四個AD端口0數(shù)字輸入禁止P0=0xFF;//------P1端口設(shè)置------//P1M1=0x1C;P1M2=0xC0;P1=0xFF;//------P2端口設(shè)置------//P2M1=0x01;P2M2=0x1E;P2=0xFF;EWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW/******************************************************************************* 初始化程序****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidInit(void){unsignedchari;------//設(shè)置 //——PWM.//PWMP>PWMn高電平,反之低電平PWMPH=0X03;PWMPL=0X55;PWM0H=0X00;PWM0L=0X00;PWM1H=0X00;PWM1L=0X00;PWM2H=0X00;PWM2L=0X00;PWMCON1=0XC7;//打開PWM電路,三個PWM口反相輸出PWMCON3=0xF0;//------飛車保護 //EA=1;/*do{ADCCON=1;ADCCON&=0xef;ADCCON|=0x08;ADC_Ready=0;while(ADC_Ready);}while(ADCH>0x60);*///-----相位檢測——//

while(P02==0){H_Sample();Phase_Detect();}//------變量初始化------//for(i=0;i<32;i++){Current_Buffer[i]=0;}for(i=0;i<20;i++){Speed_Buffer[i]=0;}for(i=0;i<16;i++){Voltage_Buffer[i]=0;}Current_P=0;Speed_P=0;Voltage_P=0;;Speed_SUM=0;////PWM_MAX=0;////Current_SUM=0;Voltage_SUM=0;H_State=0;Old_State=0;PWM_Duty=0;PWM_MAX=0;Count_Current=0;Count_Speed=0;Count_Voltage=0;Speed_REQ=0;Current_REQ=0;Voltage_REQ=0;ADC_Ready=0;//PWM_Duty=0;PWM_Duty_min=0;//*********************KeepSpeed_Flag=0;KS_Z1=0;KS_Z2=0;Motor_Speed=0x50;//*********************AutoHelp_Flag=0;Current_Max=0xcffe;Speed_Low=0x0500;//Speed_High=0x1c37;//Speed_MAX=0x1c00;//-----定時器的設(shè)置-----//TH0=0x50;TL0=0x50; //設(shè)定定時器的初值TH1=0xE0;TL1=0xE0; //設(shè)定定時器的初值TMOD=0x22; //T0選為定時器(八位)模式2,TL0自動加載TH0中的初值CKCON&=0X00;//定時器選擇為1/12系統(tǒng)時鐘ET0=1; //允許定時器中斷TR0=1; //啟動定時器ET1=1;TR1=1;//-----外部中斷設(shè)定-----//EX1=1; //允許外部中斷1IT1=0; //電平觸發(fā)中斷1AUXR1|=0x04; //打開ADC電路EADC=1;//允許ADC中斷ADCCON&=0xE7;//SettingsofTimer2capturemodeCKCON=0x60;CAPCON0=0xA8;CAPCON1=0x00;T2MOD=0xF0;IE1|=0x80;//enablecapturemodeinterruptRCAP2L=0x00; //自動重裝載低位RCAP2H=0x00; //自動重裝載高位IE1|=0x40;//EA=1;//enableinterruptT2CON|=0x04;//enabletimer2//sUsUsUsUsUsUsUsUsUsUsUsUsUsUsUsUslzslzslzslzslzslzslzslzslzslzslz////***************************//KS_EN=1;KS_Time=8;//sUsUsUsUsUsUsUsUsUsUsUsUsUsUsUsUslzslzslzslzslzslzslzslzslzslzslz////***************************///******************************************************************************* ADC中斷處理程序****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidADC_ISR(void)interrupt11{//UB=~UB;UB=~UB;//EADC=0;ADC_Ready=1;ADCCON&=0xE7;if(Current_REQ)//電流采樣{Current_REQ=0;if(Current_SUM>Current_Buffer[Current_P])Current_SUM-=Current_Buffer[Current_P];Current_Buffer[Current_P]=ADCH;Current_SUM+=ADCH;Current_P++;if(Current_P>31)Current_P=0;}if(Speed_REQ)//轉(zhuǎn)把電壓采樣{Speed_REQ=0;if(Speed_SUM>Speed_Buffer[Speed_P])Speed_SUM-=Speed_Buffer[Speed_P];Speed_Buffer[Speed_P]=ADCH;Speed_SUM+=ADCH;Speed_P++;if(Speed_P==14)Speed_P=0;}if(Voltage_REQ)//電源電壓采樣{Voltage_REQ=0;if(Voltage_SUM>Voltage_Buffer[Voltage_P])Voltage_SUM-=Voltage_Buffer[Voltage_P];Voltage_Buffer[Voltage_P]=ADCH;Voltage_SUM+=ADCH;Voltage_P++;if(Voltage_P>15)Voltage_P=0;}//PWM_ADJ();//UB=~UB;}/******************************************************************************* 定時器0中斷處理函數(shù)****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**///==========InterruptCycle:100uS===================voidT0M1_ISR(void)interrupt1{//UB=~UB;//UB=~UB;ADC_Ready=0;Current_REQ=1;Speed_REQ=0;Voltage_REQ=0;ADCCON=2;Count_Speed++;KS_CNT++;AH_Count++;if(Count_Speed>5)//17{ADCCON=4;Current_REQ=0;Speed_REQ=1;Count_Speed=0;Count_Voltage++;if(Count_Voltage>5)//50{ADCCON=3;Speed_REQ=0;Voltage_REQ=1;Count_Voltage=0;〃********KeepSpeedSetting******//KS_Finish();}}//***FunctionSet***//if(AH_Count>=100){AutoHelp();//自助力AH_Count=0;}if(KS_CNT>=3000){KS_CNT=0;Keep_Speed();//巡航定速}Volt_Low();//欠壓保護if(P02==0)Brake_Setting();//剎車ADCCON&=0xef;ADCCON|=0x08;EADC=1;PWM_ADJ();}EWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW/******************************************************************************* 定時器1中斷處理函數(shù)****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidT1M1_ISR(void)interrupt3{_nop_();}EWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW/******************************************************************************* 定時器2捕獲模式中斷處理函數(shù)****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidTimer2_ISR()interrupt13using2{//*******MotorSpeed*******//Motor_Speed=TH2;TH2=0;TL2=0;H_Sample();//霍爾信號采集Phase_Change();//相位變換}EWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW/******************************************************************************* 定時器2溢出中斷處理函數(shù)****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidT2_ISR()interrupt8{TF2=0;Motor_Speed=0x50;Block_Detect();//堵轉(zhuǎn)保護/******************************************************************************* 夕卜部中斷處理函數(shù),過流中斷**********************************************************************************************************************************************************/voidINT1_ISR()interrupt2{CurrentOver_Count++;防抖處理 if(CurrentOver_Count>=5) //{PWM_Duty_min=1;CurrentOver_Count=0;}}/******************************************************************************* 定時器3中斷處理函數(shù),采取捕獲模式**********************************************************************************************************************************************************/voidH_Sample(void){CAPCON1&=0xF8;H1=P12;H2=P07;H3=P20;do{State1=H1<<2;State1+=H2<<1;State1+=H3;_nop_();_nop_();State2=H1<<2;State2+=H2<<1;State2+=H3;}while(State1!=State2);//狀態(tài)去抖H_State=State1;/******************************************************************************根據(jù)電機霍爾換向信號給出相應(yīng)控制信號上橋臂:VT,UT,WT下橋臂:VB,UB,WB**********************************************************************************************************************************************************/voidPhase_Change(void){if(EABS_Flag){if(!AutoHelp_Flag){UB=1;VB=1;WB=1;_nop_();UT=1;VT=1;WT=1;}}elseif(PWM_Duty_min){UT=0;VT=0;WT=0;UB=1;VB=1;WB=1; //電機停轉(zhuǎn)}else{switch(H_State){case6: //110,V3,V4VT=0;UT=0;VB=1;WB=1;_nop_();WT=1;UB=0;break;case2: //010,V4,V5case7:UT=0;WB=0;VB=1;WB=1;_nop_();VT=1;UB=0;break;case3: //011,V5,V6UT=0;WT=0;UB=1;VB=1;_nop_();VT=1;WB=0;break;case1: //001,V6,V1WT=0;VT=0;UB=1;VB=1;_nop_();UT=1;WB=0;break;case5: //101,V1,V2case0:WT=0;VT=0;UB=1;WB=1;_nop_();VB=0;UT=1;break;case4: //100,V2,V3UT=0;VT=0;UB=1;WB=1;_nop_();WT=1;VB=0;break;case9:UT=0;VT=0;WT=0;UB=1;VB=1;WB=1;break;default:break;}}/*if(PWM_Duty_min){UT=0;VT=0;WT=0;UB=1;VB=1;WB=1; //電機停轉(zhuǎn)}*/}/******************************************************************************* 相位檢測程序上橋臂:VT,UT,WT*下橋臂:VB,UB,WB**********************************************************************************************************************************************************/voidPhase_Detect(void){WT=0;UT=0;VT=0;switch(H_State){case6: //110,V3,V4UB=0;VB=1;WB=1;break;case2: //010,V4,V5case7:UB=0;VB=1;WB=1;break;case3: //011,V5,V6UB=1;VB=1;WB=0;break;case1: //001,V6,V1UB=1;VB=1;WB=0;break;case5: //101,V1,V2case0:UB=1;VB=0;WB=1;break;case4: //100,V2,V3UB=1;VB=0;WB=1;break;default:break;}}/*******************************************************************************PWM值轉(zhuǎn)換程序* 在限流允許下,將轉(zhuǎn)把電壓ADC值轉(zhuǎn)換為PWMn的值電流超過限流值時,做限流處理*****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不voidPWM_ADJ(void){//=====沒有超過限流最大值的情況====//if(Current_SUM<Current_Max){if(Speed_SUM<Speed_Low){ //---沒有轉(zhuǎn)把電壓,由Speed_Low的值決定轉(zhuǎn)把電壓最小值---//if(!KeepSpeed_Flag){if(!AutoHelp_Flag){ //定速,助力功能下電機正常轉(zhuǎn)動,否則電機停轉(zhuǎn)//PWM_Duty=0;//PWM_Duty_min=1;//停轉(zhuǎn)標(biāo)志//PWM_Duty_Max=0;if(Motor_Speed<0x010){if(P02==1){if(EABS_SlipEN){EABS_Flag=1;if(PWM_Duty_Max<0x55)PWM_Duty_Max=0x055; //滑行充電}else{PWM_Duty_Max=0;PWM_Duty_min=1;//停轉(zhuǎn)標(biāo)志PWM_Duty=0;}}else{PWM_Duty_Max=0;PWM_Duty_min=1;//停轉(zhuǎn)標(biāo)志PWM_Duty=0;}else{PWM_Duty_Max=0;PWM_Duty_min=1;//停轉(zhuǎn)標(biāo)志PWM_Duty=0;}}}Block_Flag=0;}elseif(P02==1){ //---轉(zhuǎn)把電壓有效---//PWM_Duty_Max=Speed_SUM-Speed_Low;//對應(yīng)轉(zhuǎn)把電壓的最大計算值EABS_Flag=0;if(PWM_Duty_min){if(!Block_Flag){PWM_Duty_min=0; //退出無有效轉(zhuǎn)把電壓狀況Phase_Change();//相序?qū)?yīng)}}/*if(LowNoise_Flag){PWM_Duty_Max+=0x200;}*/if(PWM_Duty_Max>0x06F0)PWM_Duty_Max=0x06E8; //最大值限制PWM_Duty_Max=PWM_Duty_Max>>1;//由轉(zhuǎn)把電壓轉(zhuǎn)換為PWMn的值}if(AutoHelp_Flag){PWM_Duty_Max=AH_Duty;//助力下為PWMn賦值EABS_Flag=0;}(jJOFMOd)J!(耳削'覃)晝麻UhiMdWX//^ddOXO盡印CThlMd)=「印CThlMd?8vv4nc]—hlMd=H^nQ-iAiMd缶軟neFMd}3S|3{\[7獨司UhiMd// 仁的ncPhlMd}(ZOXO<印CThlMd)』}asp//============//缶=印eFMd3S|3\[7獨薊箭司UhiMd陽列4X目*可用Q您專// 卜^ncPhlMd(£v^ncPhlMd)』}3S|3{//r++Mna-|AiMd UhiMd叩即薊箭可(叫TdSVP99ds-JO4O|A|)J!}(xeiAi-^nQ-jAiMd>^ncPhlMd)』?廟堊知涔淳炬?度更舌// 句=如izTdQHomv朝gUhiMd實』辛爵更舌//^ncThlMd—S?=x8|aT印eFMd}(如|」卬關(guān)dsd關(guān)》)J!PWM_Duty_min=1; //欠壓保護//PWM_Duty_H=0x01;//PWM_Duty_L=0x20; 〃測試之用PWM_Setting();}/******************************************************************************過流保護上限值設(shè)定0x1600對應(yīng)限電流最大大約為2.6A0x1700對應(yīng)限流值最大大約為3.8A****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidCurrent_Lim(unsignedintCM){Current_Max=CM;}/******************************************************************************* 欠壓保護程序**********************************************************************************************************************************************************/voidVolt_Low(void){if(Voltage_SUM<Voltage_Min){ //欠壓狀態(tài)Voltage_Count++;if(Voltage_Count>200)Power_Off=1;}else{Power_Off=0;Voltage_Count=0;}}/******************************************************************************欠壓保護下限值設(shè)定電池電壓為47.9V時ADC采樣值為0xB6==>0xB60推算電池電壓為41V時的采樣值為0x9B==>0x9B0推算電池電壓為40V時的采樣值為0x98==>0x980****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidLowVoltage_Lim(unsignedintCM){Voltage_Min=CM;}/******************************************************************************* 軟件控制最大速度* 分為四個檔位1,2,3,4分別對應(yīng)15km/h,20km/h,30km/h,40km/h****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidSpeed_LimSW(unsignedcharSG){SP_Lim=SG;}/******************************************************************************* 硬件控制最大速度* 分為四個檔位SG1,SG2,SG3,SG4分別對應(yīng)15km/h,20km/h,30km/h,40km/h****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidSpeed_LimHW(bitSG1,bitSG2,bitSG3,bitSG4){SP_Lim=0x01;if(SG4)SP_Lim=0x01;elseif(SG3)SP_Lim=0x03;elseif(SG2)SP_Lim=0x05;elseif(SG1)SP_Lim=0x08;EWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW/******************************************************************************* 堵轉(zhuǎn)保護程序****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidBlock_Detect(void){if(Current_SUM>Current_Max-0x80){Block_CNT++;}elseBlock_CNT=0;if(Block_CNT>=20){PWM_Duty_min=1;Block_Flag=1;AutoHelp_Flag=0;KeepSpeed_Flag=0;UT=0;VT=0;WT=0;UB=1;VB=1;WB=1; //電機停轉(zhuǎn)}}/******************************************************************************* 剎車功能****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidBrake_Setting(void){unsignedchari;KeepSpeed_Flag=0;AutoHelp_Flag=0;PWM_Duty_min=1;Block_Flag=0;UB=1;VB=1;WB=1;Speed_SUM=0;for(i=0;i<20;i++){Speed_Buffer[i]=0;}if(EABS_BrakeEN)//電子剎車{if(Speed_SUM<Speed_Low){PWM_Duty_H=0x01;PWM_Duty_L=0x00;EABS_Flag=1;UT=1;VT=1;WT=1;}else{UT=0;VT=0;WT=0;}PWM_Setting();}}/*******************************************************************************滑行充電功能****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**//*voidSlip_Setting(void){if(EABS_SlipEN){UB=1;VB=1;WB=1;_nop_();EABS_Flag=1;UT=1;VT=1;WT=1;}}/******************************************************************************電剎車功能使能EBS_EN:滑行充電功能使能EBB_EN:電剎車功能使能****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidEABS_Set(bitEBS_EN,bitEBB_EN){EABS_SlipEN=EBS_EN;EABS_BrakeEN=EBB_EN;}/******************************************************************************* 1:1自動程序助力電動車中軸速度傳感器(單開關(guān)霍爾信號),當(dāng)轉(zhuǎn)動中軸時產(chǎn)生高低電平信號。的方波信號時輸出驅(qū)動信號,50%個占空比大于6當(dāng)芯片連續(xù)接收到*PWM打開為50%**********************************************************************************************************************************************************/voidAutoHelp(void){if(!Block_Flag)PWM_Duty_min=0;//—設(shè)定轉(zhuǎn)把不轉(zhuǎn)時才有助力功能—//if(Speed_SUM<Speed_Low){

//~~助力端口為低電平~~//if(P01==0){if(P01==SenBak)//狀態(tài)未變{AH_CNTL++;//低電平計數(shù)if(AH_CNTL>40)//低電平超過一定值后認(rèn)為沒有助力{AH_CNTH=0;//高電平計數(shù)值清零AH_CNTL=0;//低電平計數(shù)值清零AH_CT=0;//占空比大于50%的方波(脈沖)計數(shù)值清零}}else//狀態(tài)改變{if(AH_CNTH>AH_CNTL){的方波(脈沖)計數(shù)值贈加50%的方波(脈沖)計數(shù)值贈加50%占空比大于AH_CT++;//}else{AH_CT=0;//不是連續(xù)大于50%的方波}AH_CNTL=0;SenBak=P01;//保存狀態(tài)if(AH_CT>=6)//連續(xù)3個占空比大于50%的方波(脈沖){AutoHelp_Flag=1; //啟動助力標(biāo)志AH_CT=0;//占空比大于50%的方波(脈沖)計數(shù)值清零AH_CNTL=0;//低電平計數(shù)值清零AH_CNTH=0;//高電平計數(shù)值清零AH_KT=AH_Time;//只有一定的助力時間}}}//~~助力端口為高電平~~//else{if(P01==SenBak){AH_CNTH++;//高電平計數(shù)if(AH_CNTH>60)//持續(xù)高電平時間過長則認(rèn)為同樣沒有助力{AH_CNTH=0;AH_CNTH=0;AH_CT=0;}}else{SenBak=P01;AH_CNTH=0;//高電平計數(shù)值清零}}}//----有轉(zhuǎn)把信號則關(guān)閉助力功能----//else{AH_CNTL=0;AH_CNTH=0;AH_CT=0;AutoHelp_Flag=0;}if(AutoHelp_Flag==1) //有助力存在{AH_KT--;if(AH_KT<2)//助力只持續(xù)一定時間AutoHelp_Flag=0;}if(KeepSpeed_Flag==1) //電動車處在巡航狀態(tài){AH_CT=0;關(guān)閉助力功能 AutoHelp_Flag=0;//}if(!AH_EN){AutoHelp_Flag=0;}}/******************************************************************************自動助力允許函數(shù)A_EN:允許助力功能A_Duty:助力占空比A_Time:助力時間****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不**/voidAutoHelpEN(bitA_EN,unsignedintA_Duty,unsignedcharA_Time){AH_EN=A_EN;AH_Duty=A_Duty;AH_Time=A_Time;}/*******************************************************************************巡航定速功能****************************************************************************不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不不voidKeep_Speed(void){if(!KeepSpeed_Flag){KS_Point=1;if(Speed_SUM>(Spe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論