无功补偿控制器程序:
完整源码下载:
无功补偿控制器源程序.rar
源码预览:
- /***********************************************************************
- * 文 件 名 :main.c
- * 描 述 :智能电容控制器
- *
- * 作 者: 吴建和
- * 程序版本: V1.0
- * 日 期: 2016-11-18
- *
- * IAR开发环境 版本 V2.20.1
- * ST库函数 版本 V2.2.0
- ***********************************************************************/
- #include "pbdata.h"//引入自定义公共头文件
- void BSP_Configuration(void);//硬件初始化函数声明
- /***********************************************************************
- * 函 数 名: main
- * 功能说明: c程序入口
- * 形 参:无
- * 返 回 值: 错误代码(无需处理)
- ***********************************************************************/
- int main(void)
- {
- BSP_Configuration(); // 硬件驱动初始化函数
- W25QXX_Demo();
- RN7302_Init();
- while(1) // 主程序循环,反复执行循环体里的语句
- {
- KeyDispose();
- PCF8563_Demo();
- TempSamplingDemo3();
- UART3_Send_Str();
- RN7302RD(bank0,RN7302_UA,4);
- // delay_ms(500);
- }
- }
- /***********************************************************************
- * 函 数 名: BSP_Configuration
- * 功能说明: 初始化硬件设备。只需要调用一次。该函数配置CPU寄存器和外设的
- 寄存器并初始化一些全局变量。
- * 形 参:无
- * 返 回 值: 无
- ***********************************************************************/
- void BSP_Configuration(void)
- {
- CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//时钟速度为内部16M,1分频,
- I2C_Configuration();
- TempSamplingConfiguration();
- lcd_config();
- FLASH_Write();
- Tim3_Init(); // 调用TIM3初始化程序
- Tim4_Init();
- Tim3_Lcd();
- clear_screen();
- display_zhiming();
- delay_ms(1000);
- clear_screen();
- W25QXX_GPIO();
- RN7302_GPIO();
- UART3_Congfiguration();
- rim(); // 打开总中断
- }
- /*断言函数:它的作用是在编程的过程中为程序提供参数检查*/
- #ifdef USE_FULL_ASSERT
- void assert_failed(u8* file,u32 line)
- {
- while(1)
- {
- }
- }
- #endif
- #include "pbdata.h" //引入自定义公共头文件
- /*********************************************************************************
- * 函 数 名: delay_us
- * 功能说明: 微秒延时程序,注意此函数的运行环境为(16M时钟速度)
- * 形 参:nCount要延时的微秒数,输入nCount=1微妙
- * 返 回 值: 无
- *********************************************************************************/
- void delay_us(u16 nCount) //16M 晶振时 延时 1个微妙
- {
- nCount*=3;//等同于 nCount=nCount*3 相当于把nCount变量扩大3倍
- while(--nCount);//nCount变量数值先减一,再判断nCount的数值是否大于0,大于0循环减一,等于0退出循环。
- }
- /*********************************************************************************
- * 函 数 名: delay_ms
- * 功能说明: 毫秒延时程序,注意此函数的运行环境为(16M时钟速度)
- * 形 参:nCount要延时的毫秒数,输入nCount=1毫秒
- * 返 回 值: 无
- *********************************************************************************/
- void delay_ms(u16 nCount) //16M 晶振时 延时 1个毫秒
- {
- while(nCount--)//先判断while()循环体里的nCount数值是否大于0,大于0循环,减一执行循环体,等于0退出循环。
- {
- delay_us(1000);//调用微妙延时函数,输入1000等译演示1毫秒。
- }
- }
- /************************************************************************************************
- * 函 数 名: Get_decimal
- * 功能说明: 获得数值小数部分
- * 形 参:dt输入数据 deci小数位数,最多保留4位小数
- * 返 回 值: 放大后的小数部分
- *************************************************************************************************/
- u16 Get_decimal(double dt,u8 deci) //获得数值小数部分double
- {
- long x1=0;
- u16 x2=0,x3=0;
- if(deci>4) deci=4;
- if(deci<1) deci=1;
- x3=(u16)pow(10, deci);
- x1=(long)(dt*x3);
- x2=(u16)(x1%x3);
- return x2;
- }
- /************************************************************************************************
- * 函 数 名: FLASH_Write
- * 功能说明: 内部EEPROM的读写
- * 形 参:dt输入数据 deci小数位数,最多保留4位小数
- * 返 回 值: 放大后的小数部分
- *************************************************************************************************/
- void FLASH_Write(void)
- {
- u16 val=0;
- FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
- FLASH_Unlock(FLASH_MEMTYPE_DATA);
- FLASH_ProgramByte(CTL,0);
- FLASH_ProgramByte(CTH,0);
- val=((FLASH_ReadByte(CTH))<<8)|(FLASH_ReadByte(CTL));
- if(!val)
- {
- FLASH_ProgramByte(ZERO,0);
- FLASH_ProgramByte(CTL,100);
- FLASH_ProgramByte(GYH,0);
- FLASH_ProgramByte(GYL,250);
- FLASH_ProgramByte(QYH,0);
- FLASH_ProgramByte(QYL,175);
- FLASH_ProgramByte(GWZ,75);
- FLASH_ProgramByte(TMX,99);
- FLASH_ProgramByte(QMX,93);
- FLASH_ProgramByte(TTS,15);
- FLASH_ProgramByte(QTS,15);
- FLASH_ProgramByte(VHR,1);
- FLASH_ProgramByte(IHR,3);
- FLASH_ProgramByte(SL,0);
- FLASH_ProgramByte(SL+1,0);
- FLASH_ProgramByte(SL+2,0);
- FLASH_ProgramByte(SK,62);
- FLASH_ProgramByte(SK+1,86);
- FLASH_ProgramByte(SK+2,01);
- }
- FLASH_Lock(FLASH_MEMTYPE_PROG);
- // val=FLASH_ReadByte(add_byte);
- // return
- }
- //===============================================================================================//
|
3
|
|
|
|