我是靠谱客的博主 多情滑板,最近开发中收集的这篇文章主要介绍CC2530————A-D转换应用之实现外部电压测量宏定义初始化发送字符串电压转换中断主函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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=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!='')
  {
    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]='';  
}

中断

/*******************************************************
*功能: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;
   }
   
 }
  
}

最后

以上就是多情滑板为你收集整理的CC2530————A-D转换应用之实现外部电压测量宏定义初始化发送字符串电压转换中断主函数的全部内容,希望文章能够帮你解决CC2530————A-D转换应用之实现外部电压测量宏定义初始化发送字符串电压转换中断主函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部