本设计$ b, x( Q' i+ T3 J8 `2 V
基于STM32单片机的水位检测系统设计(proteus仿真+程序) 仿真图proteus 8.11 程序编译器:keil 5 编程语言:C语言 设计编号:C0046
: O1 N8 b7 B' M- F
主要功能: 使用滑动变阻器模拟水位监测器,通过改变电压值表示水位的变化。stm32通过ADC检测电压值和设定的阈值比较,低于阈值则驱动电机转动,同时通过led表示水位状态。
: Z9 x# D) e( _# f" r
仿真图(提供源文件): # V! _, ^- m/ y, G0 [3 J
程序(提供源文件源码): % ?) w: _; Z. X7 Y' p% J
以下为部分程序: - int main(void)# w- e' A& o0 ^ C; e$ p7 U
- { 5 s( S% I" U7 u8 D5 h+ I0 E# c$ X
- u16 ADCValue;; N" @5 b* E$ `' @8 [: W& V
- float voltage;
+ C8 }! a0 s2 T* G, T - u8 Mflag=2;
' W: d$ u! O7 a4 _/ ^" Z+ B6 G, n - u8 OPENflag=0; //起初代表水泵关
/ a) G; k. ]3 d; F9 q( t1 P6 c9 Y - delay_init();
7 _8 y; |' H4 R# C - Adc_Init(); 2 L( G8 y4 q+ S, e+ f6 R: q" Q
- GPIO_InitStructReadtempCmd();2 m, @' j1 ?% L
- MotoR_GPIO();
( i1 |- P1 o5 |" w - lcd_system_reset();# E" l6 \# m& w6 y3 {
- LED1=1;
2 q4 X" j5 T! d$ x' U9 b - LED2=0;+ X6 `2 i: k& b$ R- U% U3 J
- MOTOR=1;7 N2 F' g" L) h, J+ Z/ {. F
- while(1)8 P8 Q, p% |6 s6 k+ Y; F
- {
. y' N% O; y; D% R# P/ A" v- | - ADCValue=Get_Adc_Average(ADC_Channel_0,10);$ p/ ]0 `0 @1 F4 r; ?# X3 x
- voltage=((float)ADCValue/4096)*3.3;//计算电压
0 p: p1 U6 j+ d: {1 |7 D4 W - H=(10000*voltage)/33;
. P7 T8 f' p5 w - if(H>400) //40% 阈值& J+ |% x3 S% t, K3 [' {* E" @0 s) E' D
- {, Y0 w- x3 H2 t7 _% z5 R7 w
- display2();. v2 A k; ]1 j$ C K8 m0 {
- Mflag=1; //储水量足够,关闭水泵
$ q: I% f& I# b5 ~7 j2 m3 Z, y - } I. A0 C1 F1 I" @# j2 d
- else
. }8 W0 Q; p# a! ?6 g, I - {
, Y' F2 @. `+ \' U) E - display1();
5 ` q" C; _/ `( m5 v - Mflag=0; //储水量不足够,需要启动水泵
/ ~$ [; y1 `* ]0 A5 l+ ?( o2 } - }
- c3 j! P/ e9 p, @! m - if(Mflag==1&&OPENflag==1)
& A8 f0 e ~, ^( V - {
% A- C' i* ~; X7 Z, Z# i5 I - LED1=1;
- T, n8 _& Z; H. r% w0 I2 M - LED2=0;3 o3 ?+ H+ B. j/ ?3 _
- MOTOR=1;//关闭水泵
) E$ j) g9 q' \& Q' Q - Mflag=2;
- W, c9 w, r* T! V* S# |# [ - OPENflag=0; //已经关好
v$ q, | [3 |! b F7 x - }( t8 t3 B' A$ Y
- else if(Mflag==0&&OPENflag==0)
. F: Q8 u6 F3 T4 d/ Z J - {' U. h9 w+ R1 t/ I# c
- LED1=0;
# k% z2 e$ s- M0 X6 v/ u& O - LED2=1;
, |) F4 k1 Q& y1 \' l - MOTOR=0;//开水泵0 \. U2 c) y( p1 F3 T; H3 A! j& i
- Mflag=2; ' U2 d% [3 N0 p1 w7 E# K7 s* [" h8 h
- OPENflag=1; //已经开好 . \2 u% s' @1 e+ ?
- }
: _( P$ @. W2 W8 k' w - }
) Z, v- G% a2 A# q4 X3 K- } - }
3 H$ J( o( }' a( i7 P& l
复制代码 / L) B6 [+ |( E' p3 l/ N# z" I
|