A-D转换应用之实现外部电压测量

简介: A-D转换应用之实现外部电压测量宏定义初始化发送字符串电压转换中断主函数


宏定义


#include<iocc2530.h>
#define uint16 unsigned short
#define uint32 unsigned long
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0
/********************************/
/*功能:获取电压值,
并转换通过一定方式转换并赋值给数组
再发送给PC端*/
/********************************/
uchar count;
uchar s[8];


初始化


/********P1初始化********/
void P1_int(void)
{
  APCFG=0;//p0_0允许使用模拟IO
  P1SEL|=0X01;
  P1DIR&=~0X01;
}
/********T1初始化********/
void T1_int(void)
{
  T1CTL|=0X0E;
  T1CCTL0|=0X04;
  T1CC0L|=50000&0XFF;
  T1CC0H|=((50000&0XFF00)>>8);
  T1STAT&=~0X01;
  T1IF=0;
  TIMIF&=~0X40;
  IEN1|+0X02;
  EA=1;
}
/*******串口通信初始化*********/
void UART_int(void)
{
  CLKCONCMD&=0X80;
  P0SEL|=0X3C;
  U0CSR|=0X80;
  U0GCR|=10;
  U0BAUD|=216;
  UTX0IF=0;
  EA=1;  
}
/************************************************************
* 名称 :ADC_int_
* 功能 :读取ADC通道0电压值
* 入口参数 :无
* 出口参数 :16位电压值,分辨率为10mV
***************获取ADC通道0电压值************************/
 uint16 ADC_int(void)
{
  uint32 value;
  ADCIF=0;
  ADCCON3=(0X80|0X10|0X00);
  //7:6为基准电压AVDD5:3.3V,5:4为128抽取率,3:0为通道0:AIN0
  while(!ADCIF)//中断标志为0
  {
    ;
  }
  /****保存数据****/
  value=ADCH;
  value=value<<8;
  value|=ADCL;
  value=value*330;//是为了后面方便处理数据,所以多乘100
  value=value>>15;
  //电压值为value*3.3v/32768
  return (uint16)value;
   // 返回分辨率为0.01V的电压值
}

##发送单个字符

/*******************************************************
*函数名称:UART_Send_Byte
*功能:发送一个字节
*入口参数:c
*出口参数:无
*返回参数:无
*******************************************************/
void UART_Send_Byte(char c)
{
  U0DBUF=c;
  while(!UTX0IF);
  UTX0IF=0;  
}


发送字符串



/*******************************************************
*函数名称:URAT_Send_String
*功能:发送一个字符串
*入口参数:*Data
*出口参数:无
*返回参数:无
*******************************************************/
void URAT_Send_String(uchar *Data)
{
  while(*Data!='\0')
  {
    UART_Send_Byte(*Data++);
  }
}


电压转换


/******获取电压值*******/
/******处理数据(光感)*******/
void Get_val(void)
{
  uint16 sensor_val;
  sensor_val=ADC_int();
  s[0]=sensor_val/100+'0';
  s[1]='.';
  s[2]=sensor_val/10%10+'0';
  s[3]=sensor_val%10+'0';
  s[4]='V';
  s[5]='\n';
  s[6]='\0';  
}


中断


/*******************************************************
*功能:T1定时器中断服务子程序
*******************************************************/
#pragma vector=T1_VECTOR
__interrupt void T1_ISP(void)
{
  EA=0;
  T1STAT&=~0X01;
  count++;
  EA=1; 
}


主函数


/*******************************************************
* 函数名称:main
* 功    能:main函数入口
* 入口参数:无
* 出口参数:无
* 返 回 值:无
*******************************************************/
main()
{
 P1_int();
 T1_int();
 UART_int();
 ADC_int(); 
 while(1)
 {
   if(count>=15)
   {
     count=0;
     LED1=1;
     Get_val();
     URAT_Send_String("光照传感器电压值  ");
     URAT_Send_String(s);
     LED1=0;
   }
 }
}
相关文章
|
5月前
|
存储 算法 异构计算
m基于FPGA的多功能信号发生器verilog实现,包含testbench,可以调整波形类型,幅度,频率,初始相位等
使用Vivado 2019.2仿真的DDS信号发生器展示了正弦、方波、锯齿波和三角波的输出,并能调整幅度和频率。DDS技术基于高速累加器、查找表和DAC,通过频率控制字和初始相位调整产生各种波形。Verilog程序提供了一个TEST模块,包含时钟、复位、信号选择、幅度和频率控制输入,以生成不同波形。
127 18
|
5月前
|
传感器 算法
温度对振弦传感器的影响取决于传感器的类型
**温度影响振弦传感器的精度,尤其是金属材料的传感器因热膨胀导致误差。石英传感器则具较好温度稳定性。补偿措施包括选用温度稳定的材料、实施温度补偿算法和采取隔热安装。**
使用T0,方式2,在P1.0输出周期为400µs,占空比为4:1的矩形脉冲,要求在P1.0引脚接有虚拟示波器,观察P1.0引脚输出的矩形脉冲波形
使用T0,方式2,在P1.0输出周期为400µs,占空比为4:1的矩形脉冲,要求在P1.0引脚接有虚拟示波器,观察P1.0引脚输出的矩形脉冲波形
|
传感器 移动开发
振弦采集模块的频率值与温度值的修正
注意: VM 模块不进行频率、温度修正时,即可以保证频率 0.1Hz、温度 0.5℃ 的绝对精度,多项式修正仅用于微小的调整使用。当出现测量值与预期值相差较大的情况时,应排查造成误差的原因,不应该直接用参数进行修正。 注意:温度修正仅适用于 NTC 热敏电阻类型的温度传感器。
振弦采集模块的频率值与温度值的修正
|
存储 监控
369-HI-0-0-0-0 包含所有电流和电压通道
369-HI-0-0-0-0 包含所有电流和电压通道
83 0
|
传感器 存储
多通道振弦模拟信号VTN采集仪模拟通道值和温度通道值修正
1.模拟通道值修正 模拟通道是指每组端子中的编号为 2 的接线端子(详见“接口定义”) 采集到的信号, 设备出厂时已经在硬件上配置为了电压、 电流、 电阻、 NTC 温度传感器中的任意一种。 若这些通道采集到的数据存在误差,可使用下述指令进行修正。
多通道振弦模拟信号VTN采集仪模拟通道值和温度通道值修正
|
传感器 数据采集 数据处理
振弦传感器读数模块的采样值
振弦传感器读数模块:专指针对振弦传感器的特性而设计的传感器激励、读数模块。具有集成度高、功能模块化、数字接口的一系列特性,能完成振弦 传感器的激励、信号检测、数据处理、质量评估等专用针对性功能,进行传感器频 率和温度物理量模数转换,进而通过数字接口实现数据交互。振弦传感器读数模块 是振弦传感器与数字化、信息化之间的核心转换单元。
|
算法
基于simulink的三相STATCOM实现直流电容的稳压控制,采用IpIq控制方法和电流空间和电压空间的PWM方法控制
基于simulink的三相STATCOM实现直流电容的稳压控制,采用IpIq控制方法和电流空间和电压空间的PWM方法控制
155 0
基于simulink的三相STATCOM实现直流电容的稳压控制,采用IpIq控制方法和电流空间和电压空间的PWM方法控制
|
传感器
振弦采集模块读取传感器频率值的问题
振弦传感器中钢弦的振动频率与钢弦的振动幅度有关,振动幅度越大时频率越高(可能会偏差1~2Hz),所以在传感器使用过程中,应使用相同的激励方法、激励电压才能保证不同时间测读数据的可比性。
振弦采集模块读取传感器频率值的问题