|
#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
}
}
|
評分
-
查看全部評分
|