CC2530————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=value330;//是为了后面方便处理数据,所以多乘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;
    }

}

}

猜你喜欢

转载自blog.csdn.net/News53231323/article/details/113244565