ZigBee-CC2530单片机 - 实现外部电压值的测量

程序源码

/* 包含头文件 */
#include "ioCC2530.h"
#include <string.h>
#define LED1 P1_0     // P1_0定义为P1_0  led灯端口
#define uint16 unsigned short
#define uint32 unsigned long
#define uint unsigned intunsigned int flag,counter=0; //统计溢出次数
unsigned char s[8];//定义一个数组大小为8void InitLED()
{P1SEL&=~0X01;          //P1_0设置为普通的IO口 1111 1110P1DIR |= 0x01;               //配置P1_0的方向为输出LED1=0;
}void adc_Init(void)
{APCFG  |=1;P0SEL  |= 0x01;   P0DIR  &= ~0x01;
}
/************************************************************
* 名称       get_adc
* 功能       读取ADC通道0电压值
* 入口参数   无
* 出口参数   16位电压值,分辨率为10mV
***************获取ADC通道0电压值************************/
uint16 get_adc(void)
{uint32 value;ADCIF = 0;   //清ADC 中断标志//采用基准电压avdd5:3.3V,通道0,启动AD转化ADCCON3 = (0x80 | 0x10 | 0x00);while ( !ADCIF ){;  //等待AD转化结束}value = ADCH;value = value<< 8;value |= ADCL;// AD值转化成电压值// 0 表示 0V ,32768 表示 3.3V// 电压值 = (value*3.3)/32768 (V)value = (value * 330);value = value >> 15;   // 除以32768// 返回分辨率为0.01V的电压值return (uint16)value;
}
/**********串口通信初始化************************/
void initUART0(void)
{PERCFG = 0x00;    P0SEL = 0x3c;  U0CSR |= 0x80;U0BAUD = 216;U0GCR = 10;U0UCR |= 0x80;UTX0IF = 0;  // 清零UART0 TX中断标志EA = 1;   //使能全局中断
}/*************************************************
* 函数名称:inittTimer1
* 功    能:初始化定时器T1控制状态寄存器
******************定时器初始化*****************************/
void inittTimer1()
{CLKCONCMD &= 0x80;   //时钟速度设置为32MHzT1CTL = 0x0E; // 配置128分频,模比较计数工作模式,并开始运行T1CCTL0 |= 0x04;  //设定timer1通道0比较模式T1CC0L =50000 & 0xFF;    // 把50000的低8位写入T1CC0LT1CC0H = ((50000 & 0xFF00) >> 8); //把50000的高8位写入T1CC0HT1IF=0;           //清除timer1中断标志(同IRCON &= ~0x02)T1STAT &= ~0x01;  //清除通道0中断标志TIMIF &= ~0x40;  //不产生定时器1的溢出中断//定时器1的通道0的中断使能T1CCTL0.IM默认使能IEN1 |= 0x02;    //使能定时器1的中断EA = 1;        //使能全局中断
}
/***********************************************************
* 函数名称:UART0SendByte
* 功    能:UART0发送一个字节
* 入口参数:c
* 出口参数:无
* 返 回 值:无
************************************************************/
void UART0SendByte(unsigned char c)
{U0DBUF = c;       // 将要发送的1字节数据写入U0DBUFwhile (!UTX0IF) ;  // 等待TX中断标志,即U0DBUF就绪UTX0IF = 0;       // 清零TX中断标志
}/**************************************************************
* 函数名称:UART0SendString
* 功    能:UART0发送一个字符串
* 入口参数:*str
* 出口参数:无
* 返 回 值:无
**********************************************************/
void UART0SendString(unsigned char *str)
{while(*str != '\0'){UART0SendByte(*str++);   // 发送一字节}
}/**************获取电压值并处理数据******************/
void Get_val()
{uint16 sensor_val;sensor_val=get_adc();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_ISR(void)
{EA = 0;   //禁止全局中断counter++;T1STAT &= ~0x01;  //清除通道0中断标志EA = 1;   //使能全局中断
}
/******************************************
* 函数名称:main
* 功    能:main函数入口
* 入口参数:无
* 出口参数:无
* 返 回 值:无
**************************************************/
void main(void)
{InitLED();inittTimer1();  //初始化Timer1initUART0();  // UART0初始化adc_Init(); // ADC初始化while(1){if(counter>=15)     //定时器每0.2S溢出中断计次{counter=0;       //清标志位LED1 = 1;    //指示灯点亮Get_val();UART0SendString("光照传感器电压值  ");UART0SendString(s); LED1 = 0;    //指示灯熄灭}}
}

ZigBee-CC2530单片机 - 实现外部电压值的测量相关推荐

  1. zigbee协议栈ADC采集外部电压

    ADC 由于最近在做一个项目,其中一个步骤是需要CC2530片内ADC采集外设的电压值,三天反思不得其解,终于解决了这个问题. zigbee协议栈是有错误的,稍后我会写出来 ADC支持14位模数转换, ...

  2. 关于单片机对三极管B值的测量

    三极管的B值的侧量: 首先应该知道三极管的B值是怎么怎么测量 这是重点也是测量的终点. 在学习模拟电路时记得有一个三极管测量实验 ,首先调整静态工作电压使三极管导通之后通过测量Ice.Ibe之后产生的 ...

  3. Zigbee CC2530 单片机存储 IAR查看内存

    广播组网传输数据 平台 协议 TI ZStack-2.5.1a CC2530 存储简介 存储分类 RAM 静态 RAM(SRAM) 动态 RAM(DRAM) ROM PROM EPROM EEPROM ...

  4. 如何利用单片机的ADC模块(或者独立的ADC芯片)得到接入ADC管脚上的实际电压值?

    这个问题,是第一次接触ADC时候,大家都会遇到的问题. 会读到什么值 单片机会读到什么值?需要看一个特性,就是几位的ADC,在手册上就会给出,例如,STM32的ADC是12位的.另外,还有8位,10位 ...

  5. zigbee CC2530 系列教程 5 外部中断实验

    所有课程见此链接: zigbee CC2530 系列教程 0 课程介绍 4.4外部中断实验 4.4.1 实验目的 了解使用外部中断的方法,在中断处理函数中切换LED的状态. 4.4.2 实验讲解 首先 ...

  6. ZigBee无线传感——CC2530单片机定时器1PWM输出

    定时器1(16位) 时器1是一个独立的16位定时器,支持典型的定时/计数功能,比如输入捕获,输出比较和PWM功能. 定时器有五个独立的捕获/比较通道.每个通道定时器使用一个I/O引脚.定时器用于范围广 ...

  7. 物联网之ZIGBEE学习(2) CC2530单片机与ZIGBEE

    我们学习ZIGBEE要绑定使用TI的CC2530单片机,为什么,为什么不用STM32,51,MSP430,Raspberry PI呢? 因此ZIGBEE和蓝牙,WIFI一样,是一种传输协议,如果要理解 ...

  8. [蓝点zigBee] CC2530 实用教程总览

    Zstack 单个模块实验(无数据通信) 1Zstack精简,增加串口数据 Zstack 里面工程较多,整体代码量很大,若入门只需要先之关注其中的一个工程,在这个工程里添添补补逐步学习. 这一节主要是 ...

  9. 基于单片机的八路电压检测系统设计(#0427)

    电压.电流.功率是表征电信号能量大小的三个基本参量.在电子电路中,只要测量出其中一个参量就可以根据电路的阻抗求出其它二个参量.考虑到测量的方便性.安全性.准确性等因素,几乎都用测量电压的方法来测定表征 ...

  10. zigbee CC2530 系列教程 13 烟雾传感器实验

    所有课程见此链接: zigbee CC2530 系列教程 0 课程介绍 4.13烟雾传感器实验 4.13.1 实验目的 学习使用烟雾传感器. 4.13.2 实验讲解 首先根据开发板硬件原理图确定烟雾传 ...

最新文章

  1. WCF学习笔记(基于REST规则方式)
  2. Xcode_9_beta.xip 更新下载
  3. 微信小程序商城demo
  4. 关于hive开窗函数的问题
  5. 自动化用户特定实体的访问控制
  6. gcc -strip编译选项的作用
  7. Find a way BFS
  8. ACM training贪心算法——坐椅子的背包问题
  9. Vue.js05:vue内联样式
  10. 计算机导论学习综合训练及其答案
  11. 怎样用一个鼠标和键盘控制两台电脑
  12. 初用python爬取麦x学院python教学视频
  13. chrome下载速度慢,提高下载速度
  14. SEEDLab DNS_Remote Attack 实验报告
  15. python使用神器_python 神器
  16. 淘宝逛逛ODL模型优化总结
  17. 医院信息科招聘计算机专业试题,医院信息科招收计算机科学与技术专业的笔试试题...
  18. 计算机组成原理1(现代计算机细分组成框图)
  19. 安卓教程:Xposed 框架安装及使用
  20. 基于云计算的软件工程质量- 讨论中ing

热门文章

  1. 每日一书丨尼克新书《人工智能简史》全新升级 全方位解读AI历史和未来
  2. Testbed单元测试
  3. distpicker实现省市级联动
  4. 服务器主板的无线驱动,驱动天空 - 品牌主板 - 服务器主板 SERVER
  5. AIR小应用--北京机动车限行提示
  6. 软件测试主要种类大全
  7. 华为云计算IE面试笔记-Fusionsphere架构及组件介绍(服务器虚拟化解决方案)
  8. 《5分钟商学院》--刘润老师直播
  9. boost库使用总结
  10. 互联网晚报 | 10月22日 星期五 | 火花思维澄清破产传闻;珠海万达商管赴港提交招股书;特斯拉Q3营收净利均创新高...