|
#include "stm32f10x.h"
#include "delay.h"
#include "usart.h"
#include "adc.h"
#include "DMA.h"
void Display_Adc_Val(u16 Adc_Val) //显示12位ADC值
{
u8 qian,bai,shi,ge;
qian=Adc_Val/1000;
bai =Adc_Val/100%10;
shi =Adc_Val/10%10;
ge = Adc_Val%10;
UART1_SendByte(qian+'0');
UART1_SendByte(bai +'0');
UART1_SendByte(shi +'0');
UART1_SendByte(ge +'0');
}
void Display_Adc_Vol(u16 Adc_Vol) //显示AD采样电压值
{
u16 decimal1,decimal2,decimal3; //定义三位小数
float temp;
u16 temp1;
temp=(float)Adc_Vol*(3.3/4096); //AD采样电压值
temp1=temp; //取得电压值整数部分
UART1_SendByte(temp1+'0'); //串口显示整数部分
temp-=temp1; //取得电压值小数部分
temp*=1000; //将电压值放大1000倍,方便求小数
decimal1=(u16)temp/100; //小数点后第一位
decimal2=(u16)temp%100/10; //小数点后第二位
decimal3=(u16)temp%10; //小数点后第三位
UART1_SendByte('.'); //串口显示小数点
UART1_SendByte(decimal1+'0'); //串口显示小数点后第一位
UART1_SendByte(decimal2+'0'); //串口显示小数点后第二位
UART1_SendByte(decimal3+'0'); //串口显示小数点后第三位
}
void Display_ADC(void) //显示12位ADC值和电压值
{
UART1_SendString("CH0:"); //通道0,显示"CH0:"
Display_Adc_Val(ReadADCAverageValue(0)); //显示通道ADC1通道0的12位ADC值
UART1_SendByte('\t'); //制表字符,ADC值和电压值显示分开
Display_Adc_Vol(ReadADCAverageValue(0)); //显示通道ADC1通道0的电压值,保留三位小数
UART1_SendByte('V'); //显示"V"
UART1_SendString("\r\n"); //回车换行 以下依次类推
UART1_SendString("CH1:"); //通道1
Display_Adc_Val(ReadADCAverageValue(1));
UART1_SendByte('\t');
Display_Adc_Vol(ReadADCAverageValue(1));
UART1_SendByte('V');
UART1_SendString("\r\n");
UART1_SendString("CH2:"); //通道2
Display_Adc_Val(ReadADCAverageValue(2));
UART1_SendByte('\t');
Display_Adc_Vol(ReadADCAverageValue(2));
UART1_SendByte('V');
UART1_SendString("\r\n");
UART1_SendString("CH3:"); //通道3
Display_Adc_Val(ReadADCAverageValue(3));
UART1_SendByte('\t');
Display_Adc_Vol(ReadADCAverageValue(3));
UART1_SendByte('V');
UART1_SendString("\r\n");
UART1_SendString("CH4:"); //通道4
Display_Adc_Val(ReadADCAverageValue(4));
UART1_SendByte('\t');
Display_Adc_Vol(ReadADCAverageValue(4));
UART1_SendByte('V');
UART1_SendString("\r\n");
UART1_SendString("CH5:"); //通道5
Display_Adc_Val(ReadADCAverageValue(5));
UART1_SendByte('\t');
Display_Adc_Vol(ReadADCAverageValue(5));
UART1_SendByte('V');
UART1_SendString("\r\n");
UART1_SendString("CH6:"); //通道6
Display_Adc_Val(ReadADCAverageValue(6));
UART1_SendByte('\t');
Display_Adc_Vol(ReadADCAverageValue(6));
UART1_SendByte('V');
UART1_SendString("\r\n");
UART1_SendString("CH7:"); //通道7
Display_Adc_Val(ReadADCAverageValue(7));
UART1_SendByte('\t');
Display_Adc_Vol(ReadADCAverageValue(7));
UART1_SendByte('V');
UART1_SendString("\r\n");
UART1_SendString("CH8:"); //通道8
Display_Adc_Val(ReadADCAverageValue(8));
UART1_SendByte('\t');
Display_Adc_Vol(ReadADCAverageValue(8));
UART1_SendByte('V');
UART1_SendString("\r\n");
UART1_SendString("CH9:"); //通道9
Display_Adc_Val(ReadADCAverageValue(9));
UART1_SendByte('\t');
Display_Adc_Vol(ReadADCAverageValue(9));
UART1_SendByte('V');
UART1_SendString("\r\n");
}
int main(void)
{
SystemInit(); //系统初始化
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化,波特率115200
Adc_Init(); //ADC和DMA初始化
while(1)
{
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//等待传输完成否则第一位数据容易丢
Display_ADC(); //显示12位ADC值和电压值
UART1_SendString("\r\n"); //回车换行
delay_ms(500); //延时500ms
}
}
|
评分
-
查看全部评分
|