⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calvol.c

📁 采用PICC18编写的单片机源代码
💻 C
字号:
#include "calVol.h"


/*************************************求采样电压初始化函数****************************************
**入口:无
**出口:无
**读取E2PROM中的基准电压值,放大倍数,终止电压
********************************************************************************************/
void CalVolt_initial(void)
{
   uint8 tmpCtr,tmpCtr2;   //循环控制
   baseVolt=eeprom_read(AddrL_BaseVolt)+eeprom_read(AddrH_BaseVolt)*255;  //基准电压
   Amp=eeprom_read(AddrE2Amp);   //放大倍数
   //读取终止电压
   for(tmpCtr=0;tmpCtr<EmerChnNum;tmpCtr++)
   {
       EmerVolt[tmpCtr][0]=eeprom_read(TableAddrE2EachEmerVolt[tmpCtr][0])+eeprom_read(TableAddrE2EachEmerVolt[tmpCtr][1])*255;      
   }
}   
/*************************************求取采样电压函数**********************************
入口:SapDigitial-采样电压的数字量,Amp-放大器的放大倍数(1或者4)
**出口:采样电压的实际值放大100倍后的值
**返回值=baseVolt*SapDigitial*Amp/1023
**AD采样精度为10位
********************************************************************************************/
uint16 CalSapVolt(uint16 SapDigitial)
{
   return (baseVolt*SapDigitial*Amp/1023);
}
/******************************存储终止电压******************************
**入口:chnNo-通道号(0-3),SapDigtial-采样电压数字量
**出口:无
**将终止电压转换成实际值放大100倍后的值存入EmerVolt[EmerChnNum][1]
************************************************************************/
void SaveEmerVolt(uint8 chnNo,uint16 SapDigitial)
{
   EmerVolt[chnNo][0]=CalSapVolt(SapDigitial);
   eeprom_write(TableAddrE2EachEmerVolt[chnNo][0],lobyte(EmerVolt[chnNo][0]));
   eeprom_write(TableAddrE2EachEmerVolt[chnNo][1],hibyte(EmerVolt[chnNo][0]));
}

/**********************存储基准电压************************
**入口: 基准电压放大100倍的值
**出口:无
** 改变基准电压,并将改变后的值存入E2PROM
**********************************************************/
void SaveBaseVolt(uint16 newBaseVolt)
{
   baseVolt=newBaseVolt;
   eeprom_write(AddrL_BaseVolt,lobyte(baseVolt));
   eeprom_write(AddrH_BaseVolt,hibyte(baseVolt));
}
/**********************存储放大倍数************************
**入口: 放大倍数
**出口:无
** 改变放大倍数,并将改变后的值存入E2PROM
**********************************************************/
void ChangeAmp(void)
{
   if(Amp==conAmp1)
   {
      Amp=conAmp2;
   }
   else if(Amp==conAmp2)
   {
      Amp=conAmp1;
   }
   eeprom_write(AddrE2Amp,Amp);
}
/**********************改变基准电压***************************
**入口:基准电压的某一位
**出口:无
**digit      INT1           POINT1           POINT2
**       baseVolt+100      baseVolt+10      baseVolt+1
*************************************************************/
void ChangeBaseVolt(uint8 digit)   
{
   if(digit==INT1)
   {
      baseVolt=baseVolt+100;
   }
   else if(digit==POINT1) 
   {
      baseVolt=baseVolt+10;
   }
   else if(digit==POINT2) 
   {
      baseVolt=baseVolt+1;
   }
   if(baseVolt>conBaseMax)
   {
      baseVolt=conBaseMin;
   }
   SaveBaseVolt(baseVolt);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -