STC系列AD采集-P14端口模拟量以及转换电压值发送到串口
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STC系列AD采集-P14端口模拟量以及转换电压值发送到串口相关的知识,希望对你有一定的参考价值。
【STC系列】AD采集-P14端口模拟量以及转换电压值发送到串口
相关的知识点
- Keil C51重定向printf到串口。
将串口打印实现函数进行再封装
//重写putchar函数
char putchar(char c)
SendByte(c);
return c;
- 数据转换
将模拟量转换为电压值,换算公式:
Voltage =(res/1023.0)*5;
主程序
/*-----------------------------------------------------------------------
* 项目名称:
STC15F2K60S2 AD采集程序
* 配置说明:
MCU: STC15F2K60S2
开发板: STC15W408AS开发板
晶振: 外部时钟:11.0592MHz
扩展模块: -10K可调定位器
* 备注:
- 将开发板的串口与电脑串口连接
----------------------------------------------------------------------*/
/************************包含头文件***************************************************/
#include "stdio.h"
#include<STC15W.h>
#include<USART.h>
#include<ADC.h>
//定义要采集AD通道
#define ch 4 //即P1.4端口
//sfr P1M1 = 0x91; //PxM1.n,PxM0.n =00--->Standard, 01--->push-pull
//sfr P1M0 = 0x92; // =10--->pure input, 11--->open drain
/************************主函数******************************************************/
void main()
unsigned int res=0;
unsigned char result[4] = 0;
unsigned char Volbuf[4] = 0;
float Voltage =0.0;
//将P1.x口设置为高阻输入模式
P1M1 |= (1<<ch); // 把ADC口设置为高阻输入
P1M0 &= ~(1<<ch);
P1ASF = (1<<ch); //P1.x做ADC
InitSerialPort(); //初始化串口,波特率9600,8bit数据位,1停止位,无校验
OpenADC_CHx(ch);
while(1)
//发送数据采集结果
SendByte('\\t');
SendString("AD_Value = ");
GetADCResult_Char(ch,result);
SendString(result);
res = GetADCResult(ch);
Voltage =(res/1023.0)*5;
// sprintf(Volbuf, "%3.2f",Voltage);
printf("\\t Voltage:%3.2fV \\r\\n",Voltage);
// printf("电压: %d.%d%d V\\r\\n",Volbuf[0],Volbuf[1],Volbuf[2],Volbuf[3]);
//SendByte(GetADCResult_High(ch));
//SendByte(GetADCResult_Low(ch));
//换行
SendByte('\\r');
//延时
Delay(30);
/*********************************The End****************************************/
程序源码
链接:https://pan.baidu.com/s/17LcWOepmg9lMv0B_F1_kXA
提取码:3ufo
以上是关于STC系列AD采集-P14端口模拟量以及转换电压值发送到串口的主要内容,如果未能解决你的问题,请参考以下文章
STM32 ADC转换的问题。adcout=(((double)adc)/0xfff)*2500*2;adcout为转换所得电压。这个算式啥意思