3943.水温控制系统程序附件.doc

上传人:土8路 文档编号:10226791 上传时间:2021-05-01 格式:DOC 页数:9 大小:52KB
返回 下载 相关 举报
3943.水温控制系统程序附件.doc_第1页
第1页 / 共9页
3943.水温控制系统程序附件.doc_第2页
第2页 / 共9页
3943.水温控制系统程序附件.doc_第3页
第3页 / 共9页
3943.水温控制系统程序附件.doc_第4页
第4页 / 共9页
3943.水温控制系统程序附件.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《3943.水温控制系统程序附件.doc》由会员分享,可在线阅读,更多相关《3943.水温控制系统程序附件.doc(9页珍藏版)》请在三一文库上搜索。

1、附:系统程序主函数文件#include LPC23xx.h/* LPC23xx/24xx Peripheral Registers*/#include type.h#include irq.h#include target.h#include timer.h#include rtc.h#include define.h#include Coefficient.h#include KeyLED_Define.h#include LCD_Menu_Resource.h#include math.h #include string.h#include stdio.h#define SampleCyc

2、leNum 5#define Pi 3.14159265#define Sqrt_2 1.41421357#define PointsNumber 64extern _ARMABI float roundf(float /*x*/);double Caculate_Frequency(int piont,double Frequency_0);void Delay_for_AD(void);void ADGPIO_Initial(void);enum System_State SystemState; /系统状态,分为测频阶段和参量计算两个状态int AD0_Value512,AD1_Valu

3、e512; /采样值WORD TotalPointsNumber;DWORD ADC_TimerInterval;BYTE TimesCount_for_Frequency; / 测频状态时记录采集周期数BYTE NewValueCreated_Flag; /新菜了一个周期波形的标志BYTE FrequnecyStateEnter_Flag; /进入频率测试状态的标志BYTE ElseStateEnter_Flag; /点入电参量计算的标志DWORD FILE_DATA_BUF_BYTE_Count=0;BYTE USBConnect_Flag=0; /U盘连接标志,当U盘连接时,标志置1in

4、t UPointsNumber*3+1; int IPointsNumber*3+1;float a_for_U11;float b_for_U11;/傅氏分解的实部、虚部float a_for_I11;float b_for_I11;/傅氏分解的实部、虚部struct Voltage_Coe U_Coe_Temp10,U_Coe_Value, I_Coe_Temp10,I_Coe_Value;/各谐波的有效值,记录十次取平均值float U_Value=0,I_Value=0,PF_Value=0,Power_Value=0,Q_Value=0,S_Value=0; /分别为电压、电流、有功

5、、无功和视在功率float Umax_Value=0,Imax_Value=0,Powermax_Value=0,Qmax_Value=0,Smax_Value=0; /分别为电压、电流、有功、无功和视在功率最大值float Umin_Value=0,Imin_Value=0,Powermin_Value=0,Qmin_Value=0,Smin_Value=0; /分别为电压、电流、有功、无功和视在功率最小值double Frequency_Value; /频率float U_Temp10,I_Temp10,Power_Temp10,Q_Temp10,S_Temp10; /分别为电压、电流、有

6、功、无功和视在功率BYTE ValueTempCount=0;int main(void) WORD i=0;BYTE j;BYTE KeyNumber; WORD temp; SCS|=1; InitKeyLEDRelay_Pin(); LCD_init();/初始化clearscreen(); /清屏Menu_pageID=PageID_MainPage;Key_databuf=0x3f;Enter_flag=1;Esc_flag=0;KeyLCD_Deal(NoKey);BackPara(PageID_VrefAdj);/* RTC时钟初始化 */ SystemTime.RTC_Sec=

7、0; SystemTime.RTC_Min=0; SystemTime.RTC_Hour=0; SystemTime.RTC_Mday=1; SystemTime.RTC_Mon=6; SystemTime.RTC_Year=2008;BackPara(PageID_TimeSet); RTCInit(); /* Initialize timer0,for sample PF */ init_timer ( 0, Fpclk); /起动定时器0,作为测功率因数用 enable_timer(0); ADGPIO_Initial(); USB_Init(); Frequency_Value=50;

8、 TimesCount_for_Frequency=0; SystemState=Undetect_State; /初始设置为非检测状态 / FrequnecyStateEnter_Flag=1; ElseStateEnter_Flag=1; while(1) if(ElseStateEnter_Flag=1) ElseStateEnter_Flag=0; timer1_counter_for_Points=0; ADC_TimerInterval= ( Fpclk/(TotalPointsNumber_For_Else*Frequency_Value)-1); init_timer ( 1,

9、 ADC_TimerInterval ); /将在Tmer.c文件的Timer0Handler (void) _irq 函数中处理ADC 的采样 enable_timer(1); TotalPointsNumber=TotalPointsNumber_For_Else; KeyNumber=KeyScan(); /扫描按键 if(KeyNumber!=NoKey) KeyLCD_Deal(KeyNumber); if(NewValueCreated_Flag=1) NewValueCreated_Flag=0; TimesCount_for_Frequency+; if(TimesCount_

10、for_Frequency=3) TimesCount_for_Frequency=0; timer1_counter_for_Points=0; Caculate_Value(); KeyLCD_Deal(NoKey); /存储记录数据FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=SystemTime.RTC_Mon;FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=SystemTime.RTC_Mday;FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=SystemTime.RTC_Hour;FILE_

11、DATA_BUFFILE_DATA_BUF_BYTE_Count+=SystemTime.RTC_Min;FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(U_Value*10)8;FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(U_Value*10)&0xff);FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(U_Value*10)8;FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(I_Value*100)&0xff);FILE

12、_DATA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(I_Value*100)8;FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(Power_Value)&0xff);FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(Power_Value)8;FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(Q_Value)&0xff);FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(Q_Value)8;FILE_DA

13、TA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(S_Value)&0xff);FILE_DATA_BUFFILE_DATA_BUF_BYTE_Count+=(int)(S_Value)8; if(FILE_DATA_BUF_BYTE_Count=FILE_DATA_BUF_LEN)FILE_DATA_BUF_BYTE_Count=0; if(USBConnect_Flag =1 ) /检测到U盘插入,对U盘进行处理 USBConnect_Flag=0; if(ParaChanged_Flag=1) /如果正在修改参数,先将其参数撤销,在更改到USB通讯界面 KeyL

14、CD_Deal(Key_ESC); clearscreen(); disp_string(0,2,16,Menu_USBConnect); USB_Deal(); KeyLCD_Deal(NoKey); ADC_TimerInterval= ( Fpclk/(TotalPointsNumber_For_Else*Frequency_Value)-1); init_timer ( 1, ADC_TimerInterval ); /将在Tmer.c文件的Timer0Handler (void) _irq 函数中处理ADC 的采样 enable_timer(1); / ElseStateEnter_

15、Flag=1; else reset_timer(1); enable_timer(1); void Caculate_Value(void)WORD i,j;float temp;double Ratio; U_TempValueTempCount=0;I_TempValueTempCount=0; for(j=0;j10;j+) a_for_Uj=0; b_for_Uj=0; a_for_Ij=0; b_for_Ij=0; Power_TempValueTempCount=0;Q_TempValueTempCount=0;S_TempValueTempCount=0; for(i=0;i(

16、PointsNumber*3+1);i+) U_TempValueTempCount=U_TempValueTempCount+AD0_Valuei*AD0_Valuei*Coefficienti;I_TempValueTempCount=I_TempValueTempCount+AD1_Valuei*AD1_Valuei*Coefficienti; for(j=0;j10;j+) a_for_Uj=a_for_Uj+Sqrt_2*AD0_Valuei*cos(j*i*2*Pi/PointsNumber)*Coefficienti;b_for_Uj=b_for_Uj+Sqrt_2*AD0_Va

17、luei*sin(j*i*2*Pi/PointsNumber)*Coefficienti; a_for_Ij=a_for_Ij+Sqrt_2*AD1_Valuei*cos(j*i*2*Pi/PointsNumber)*Coefficienti;b_for_Ij=b_for_Ij+Sqrt_2*AD1_Valuei*sin(j*i*2*Pi/PointsNumber)*Coefficienti; Power_TempValueTempCount=Power_TempValueTempCount+AD0_Valuei*AD1_Valuei*Coefficienti; if(i(SampleCycl

18、eNum-2) /采集完十次,进行求平均值 ValueTempCount=0; U_Value=0;I_Value=0; /各数据在求平均值之前清0 Power_Value=0;Q_Value=0; S_Value=0; U_Coe_Value.degree1=0;U_Coe_Value.degree2=0;U_Coe_Value.degree3=0;U_Coe_Value.degree4=0;U_Coe_Value.degree5=0;U_Coe_Value.degree6=0;U_Coe_Value.degree7=0;U_Coe_Value.degree8=0;U_Coe_Value.d

19、egree9=0;U_Coe_Value.degree10=0; I_Coe_Value.degree1=0;I_Coe_Value.degree2=0;I_Coe_Value.degree3=0;I_Coe_Value.degree4=0;I_Coe_Value.degree5=0;I_Coe_Value.degree6=0;I_Coe_Value.degree7=0;I_Coe_Value.degree8=0;I_Coe_Value.degree9=0;I_Coe_Value.degree10=0; for(i=0;iSampleCycleNum;i+) U_Value=U_Value+U

20、_Tempi; I_Value=I_Value+I_Tempi; Power_Value=Power_Value+Power_Tempi; Q_Value=Q_Value+Q_Tempi; S_Value=S_Value+S_Tempi; U_Coe_Value.degree1=U_Coe_Value.degree1+U_Coe_Tempi.degree1; U_Coe_Value.degree2=U_Coe_Value.degree2+U_Coe_Tempi.degree2; U_Coe_Value.degree3=U_Coe_Value.degree3+U_Coe_Tempi.degree

21、3; U_Coe_Value.degree4=U_Coe_Value.degree4+U_Coe_Tempi.degree4; U_Coe_Value.degree5=U_Coe_Value.degree5+U_Coe_Tempi.degree5; U_Coe_Value.degree6=U_Coe_Value.degree6+U_Coe_Tempi.degree6; U_Coe_Value.degree7=U_Coe_Value.degree7+U_Coe_Tempi.degree7; U_Coe_Value.degree8=U_Coe_Value.degree8+U_Coe_Tempi.d

22、egree8; U_Coe_Value.degree9=U_Coe_Value.degree9+U_Coe_Tempi.degree9; U_Coe_Value.degree10=U_Coe_Value.degree10+U_Coe_Tempi.degree10; I_Coe_Value.degree1=I_Coe_Value.degree1+I_Coe_Tempi.degree1; I_Coe_Value.degree2=I_Coe_Value.degree2+I_Coe_Tempi.degree2; I_Coe_Value.degree3=I_Coe_Value.degree3+I_Coe

23、_Tempi.degree3; I_Coe_Value.degree4=I_Coe_Value.degree4+I_Coe_Tempi.degree4; I_Coe_Value.degree5=I_Coe_Value.degree5+I_Coe_Tempi.degree5; I_Coe_Value.degree6=I_Coe_Value.degree6+I_Coe_Tempi.degree6; I_Coe_Value.degree7=I_Coe_Value.degree7+I_Coe_Tempi.degree7; I_Coe_Value.degree8=I_Coe_Value.degree8+

24、I_Coe_Tempi.degree8; I_Coe_Value.degree9=I_Coe_Value.degree9+I_Coe_Tempi.degree9; I_Coe_Value.degree10=I_Coe_Value.degree10+I_Coe_Tempi.degree10; U_Value=(U_Value/SampleCycleNum)*100; /得到平局值并乘以PT CT变比 I_Value=(I_Value/SampleCycleNum)*10; Power_Value=(Power_Value/SampleCycleNum)*100*10; Q_Value=(Q_Va

25、lue/SampleCycleNum)*100*10; S_Value=U_Value*I_Value; PF_Value=Power_Value/S_Value; U_Coe_Value.degree1=(U_Coe_Value.degree1/SampleCycleNum)*100; U_Coe_Value.degree2=(U_Coe_Value.degree2/SampleCycleNum)*100; U_Coe_Value.degree3=(U_Coe_Value.degree3/SampleCycleNum)*100; U_Coe_Value.degree4=(U_Coe_Valu

26、e.degree4/SampleCycleNum)*100; U_Coe_Value.degree5=(U_Coe_Value.degree5/SampleCycleNum)*100; U_Coe_Value.degree6=(U_Coe_Value.degree6/SampleCycleNum)*100; U_Coe_Value.degree7=(U_Coe_Value.degree7/SampleCycleNum)*100; U_Coe_Value.degree8=(U_Coe_Value.degree8/SampleCycleNum)*100; U_Coe_Value.degree9=(

27、U_Coe_Value.degree9/SampleCycleNum)*100; U_Coe_Value.degree10=(U_Coe_Value.degree10/SampleCycleNum)*100; I_Coe_Value.degree1=(I_Coe_Value.degree1/SampleCycleNum)*10; I_Coe_Value.degree2=(I_Coe_Value.degree2/SampleCycleNum)*10; I_Coe_Value.degree3=(I_Coe_Value.degree3/SampleCycleNum)*10; I_Coe_Value.

28、degree4=(I_Coe_Value.degree4/SampleCycleNum)*10; I_Coe_Value.degree5=(I_Coe_Value.degree5/SampleCycleNum)*10; I_Coe_Value.degree6=(I_Coe_Value.degree6/SampleCycleNum)*10; I_Coe_Value.degree7=(I_Coe_Value.degree7/SampleCycleNum)*10; I_Coe_Value.degree8=(I_Coe_Value.degree8/SampleCycleNum)*10; I_Coe_Value.degree9=(I_Coe_Value.degree9/SampleCycleNum)*10; I_Coe_Value.degree10=(I_Coe_Value.degree10/SampleCycleNum)*10; if(SystemState=Detect_State) /检测状态下记录更新最大最小值 if(Umax_Value U_Value) Umin_Valu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1