一、元器件清单
硬件 | 作用 |
STM32F103C8T6开发板 | 作为主控芯片 |
3个水位传感器 | 检测水位数据 |
0.96寸4针OLED屏幕 | 显示数据 |
ST-LINK烧录器 | 烧录代码、调试 |
杜邦线 | (公对公、公对母、母对母)连接作用 |
面包板 | 方便组装 |
二、硬件实物接线
三、功能实现
1.检测三组水位数据 ,显示在OLED屏幕上
2.三组水位数据发送到串口调试助手
四、串口调试助手打印数据
五、main.c代码
u16 adcx;//ADC
float voltage;//水位
u16 adcx2;//ADC
float voltage2;//水位
u16 adcx3;//ADC
float voltage3;//水位
int main(void)
{
OLED_Init();
Adc_Init();
mfq_Init();
Serial_Init();
OLED_ShowChinese(0, 13, "水位");
OLED_ShowChinese(40, 13, ":");
OLED_ShowString(32,13,"1",OLED_8X16);
OLED_ShowString(80,13,"m",OLED_8X16);
OLED_ShowString(90,13,"m",OLED_8X16);
OLED_ShowChinese(0, 30, "水位");
OLED_ShowChinese(40, 30, ":");
OLED_ShowString(32,30,"2",OLED_8X16);
OLED_ShowString(80,30,"m",OLED_8X16);
OLED_ShowString(90,30,"m",OLED_8X16);
OLED_ShowChinese(0, 47, "水位");
OLED_ShowChinese(40, 47, ":");
OLED_ShowString(32,47,"3",OLED_8X16);
OLED_ShowString(80,47,"m",OLED_8X16);
OLED_ShowString(90,47,"m",OLED_8X16);
OLED_Update();
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_1,10);
voltage = 3300000/4096*adcx/10000;
OLED_ShowNum(50,30,voltage,2,OLED_8X16);
adcx2=Get_Adc_Average(ADC_Channel_0,10);
voltage2 = 3300000/4096*adcx2/10000;
OLED_ShowNum(50,47,voltage2,2,OLED_8X16);
OLED_Update();
adcx3=Get_Adc_Average(ADC_Channel_2,10);
voltage3 = 3300000/4096*adcx3/10000;
OLED_ShowNum(50,13,voltage3,2,OLED_8X16);
//fmq(voltage);
printf("水位1= %.2f mm,水位2= %.2f mm,水位3= %.2f mm \r\n",(float)voltage,(float)voltage2,(float)voltage3);
}
}