ADC单通道外部电压采集

需要设置一个上机位命令控制字符。

系统时钟初始化——32MHZ晶振

串口0函数初始化——设置串口对应引脚,波特率,清楚中断标志

串口0接收中断响应函数——U0DBUF将控制命令字从缓冲区取出

串口0单字节发送函数——将要发送的1字节数据写入U0DBUF

ADC函数初始化——设置模拟IO口的使用

ADC电压采集函数——设置电压选择AVDD5引脚,256抽取率,通道0

 #include "ioCC2530.h"

 #define D3  P1_0
#define D4 P1_1
#define D5 P1_3
#define D6 P1_4 unsigned char UR0_Command; //上位机命令控制字 /*====================初始化系统时钟函数======================*/
void Init_Clock_32MHz()
{
CLKCONCMD &= ~0x40; //选择系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ
} /*======================初始化串口0函数=======================*/
void Init_Uart0()
{
//端口相关的配置
PERCFG = 0x00; //串口0的引脚映射到位置1,即P0_2和P0_3
P0SEL = 0x0C; //将P0_2和P0_3端口设置成外设功能
//波特率相关的配置
U0BAUD = ; //32MHz的系统时钟产生9600BPS的波特率
U0GCR = ; //16MHz---9; 32MHz---8
//串口属性相关的配置
U0UCR |= 0x80; //禁止流控,8位数据,清除缓冲器
U0CSR |= 0xC0; //选择UART模式,使能接收器
//串口中断相关的配置
UTX0IF = ; //清除TX发送中断标志
URX0IF = ; //清除RX接收中断标志
URX0IE = ; //使能URAT0的接收中断
EA = ; //使能总中断
} /*===================串口0接收中断服务函数=====================*/
#pragma vector = URX0_VECTOR
__interrupt void UR0_RecvInt()
{
UR0_Command = U0DBUF; //将控制命令字从缓冲区取出
} /*=====================串口0单字节发送函数=====================*/
void UR0_Send_Byte(unsigned char dat)
{
U0DBUF = dat; //将要发送的1字节数据写入U0DBUF
while(!UTX0IF); //等待TX中断标志,即数据发送完成
UTX0IF = ; //清除TX中断标志,准备下一次发送
} /*=======================ADC初始化函数========================*/
void Init_ADC1()
{
APCFG |= 0x01; //P0_0作为模拟I/O使用
} /*====================ADC电压采样函数========================*/
void Get_ADC1_Data()
{
D6 = ;
ADCIF = ;
//参考电压选择AVDD5引脚,256抽取率,通道0
ADCCON3 = (0x80 | 0x20 | 0x00);
while(!ADCIF); //等待ADC转换完成,
UR0_Send_Byte(ADCH);
UR0_Send_Byte(ADCL);
D6 = ;
} /*======================端口初始化函数========================*/
void Init_Port()
{
//初始化LED灯的I/O端口
P1SEL &= ~0x1b; //P1_0、P1_1、P1_3和P1_4作为通用I/O端口
P1DIR |= 0x1b; //P1_0、P1_1、P1_3和P1_4端口输出
//关闭所有的LED灯
D3 = ;
D4 = ;
D5 = ;
D6 = ;
} /*==========================主函数============================*/
void main()
{
Init_Clock_32MHz();
Init_Uart0();
Init_ADC1();
Init_Port();
while()
{
if(UR0_Command == 0xa6)
{
UR0_Command = 0x00;
Get_ADC1_Data();
}
}
}

电压值换算函数

 void Data_to_Volt()
{
unsigned char buf[]; Result_adc = ADCH;
Result_adc = Result_adc << ;
Result_adc |= ADCL;
Result_adc = Result_adc >> ; //将ADC采样结果的21位取出
//对于12位的ADC采样结果,去除一个符号位,分辨率为:3300 / 2048 = 1.6mv
Result_volt = Result_adc * 1.6; //计算实际的电压值,结果为整数
//将电压值转换结果组合成字符串形式
sprintf(buf, "电压值是: %d.%dV\r\n", Result_volt/, Result_volt%);
UR0_Send_String(buf); }

可利用电压值换算函数实现光照亮度自动控制灯光

 void Auto_Control_LED()
{
Get_ADC1_Data();
Data_to_Volt();
if(Result_volt > )
{
D6 = ;
D5 = ;
D4 = ;
}
else if(Result_volt > )
{
D6 = ;
D5 = ;
D4 = ;
}
else if(Result_volt > )
{
D6 = ;
D5 = ;
D4 = ;
}
else
{
D6 = ;
D5 = ;
D4 = ;
}
}

利用光敏传感器,利用ADC采集数据,再将采集到的数据通过if条件实现不同的灯光变化。

CC2530ADC应用的更多相关文章

  1. CC2530ADC转换

    一.ADC简介 ADC支持 14 位的模拟数字转换,具有多达12 位的 ENOB(有效数字位).它包括一个模拟多路转换器,具有多达8 个各自可配置的通道,以及一个参考电压发生器.转换结果通过DMA写入 ...

随机推荐

  1. [Abp vNext 入坑分享] - 1.创建初始的项目

    一.简要说明 本篇文章主要是跟着官方的文档把项目安装好先,同时了解一下大概的项目结构. 二.具体步骤 2.1全局安装ABP CLI,直接在cmd中安装即可.如果你之前安装过,这里可以略过: dotne ...

  2. Flask基础-01.Flask简介

    Flask简介 Web应用程序作用 Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档. 关于Web框架 1. 什么是Web框架? 1. 已经封装好了一段代码,协助程序 ...

  3. 1. esc 安装 jenkins

    $ yum install yum-fastestmirror -y #安装自动选择最快源的插件 #添加jenkins源: $ sudo wget -O /etc/yum.repos.d/jenkin ...

  4. [PHP][mysql] 需要知道的那些事

    就是想总结一下自己不会的! sql: 1.在SQL语句中出现AS,是起别名的意思! 例子:select a.* from table_1 as a就是给table_1起个别名叫a,因此前面就可以使用a ...

  5. 杂记三 &#183; CSP-2019-The first step

    update:我终于懂得衰亡的民族之所以沉默的缘由了. 初赛Day -7 虽然我是第一次参加初赛而且到现在为止我还没见过初赛题但我一点也不慌! 真的!一点!也不慌! 初赛Day 1 早上和可s爱b j ...

  6. Linux 日常操作

    Linux 日常操作 */--> Linux 日常操作 Table of Contents 1. 查看硬件信息 1.1. 服务器型号序列号 1.2. 主板型号 1.3. 查看BIOS信息 1.4 ...

  7. 关于宝塔下的项目中的php不能访问的问题

    遇到的问题是访问项目根目录的所有php文件都是报404错,而其他文件则可以,比如txt,最后查资料发现 在宝塔运行网站的时候会在项目的根目录自动生成一个.user.ini文件,这个文件主要是防止对指定 ...

  8. redis实现排行榜思路

    用redis的排序集合类型  sortset()实现排行榜 zadd();添加 ZREVRANGE();查看

  9. 2019-2020-1 20199310《Linux内核原理与分析》第二周作业

    1.问题描述 众所周知,计算机是20世纪最伟大的发明之一,计算机是如何工作的呢?本文主要通过计算机的组成结构和工作原理,以及汇编代码工作过程来进行详细叙述. 2.解决过程 2.1 冯·诺依曼体系结构 ...

  10. 基于jenkins自动打包并部署docker环境

    一.实验环境 git                      192.168.200.71 jenkins    192.168.200.72 docker               192.16 ...