|
本设计# ?1 o7 _1 T3 j5 R& A: n0 x6 T$ L
基于STM32单片机的水位检测系统设计(proteus仿真+程序) 仿真图proteus 8.11 程序编译器:keil 5 编程语言:C语言 设计编号:C0046
0 g( t; a# i ?
主要功能: 使用滑动变阻器模拟水位监测器,通过改变电压值表示水位的变化。stm32通过ADC检测电压值和设定的阈值比较,低于阈值则驱动电机转动,同时通过led表示水位状态。
$ J% G4 r D1 Z7 f1 N8 U
仿真图(提供源文件):
: L8 H; w, M4 M- |, ?! B" b3 s ^
程序(提供源文件源码):
6 G* D" s; C7 k. T) ^' w
以下为部分程序: - int main(void)
7 R" v& q3 m$ S) M8 Z2 Z - { $ ]& w$ E6 ^; D
- u16 ADCValue;1 `7 G5 a3 P" y" F6 M, v
- float voltage;
0 W) r9 p$ o5 C2 c/ b" I% V9 e | - u8 Mflag=2;
0 U2 k% l$ ]5 H7 }$ H# z - u8 OPENflag=0; //起初代表水泵关4 |) u; U, f6 r" w
- delay_init(); ! u O g: v! Q( F7 \
- Adc_Init(); . R' v6 U! R/ u# q# G0 }
- GPIO_InitStructReadtempCmd();
& G/ p# K5 S$ y1 x - MotoR_GPIO();. V8 D. [9 z! L. b" o+ @
- lcd_system_reset();4 C. o; H8 F3 U2 u. T- }3 S3 `
- LED1=1;
# F2 L! w5 h% r+ s6 O' I9 o - LED2=0;
3 U+ W0 Z0 O" f - MOTOR=1; ~0 I5 K- e; U/ w
- while(1)7 S+ O, {; V p; j. m8 ^- q4 s
- {4 I9 X: x# h; R+ K, C0 i: L9 U L
- ADCValue=Get_Adc_Average(ADC_Channel_0,10);
. X8 O- o! P: n - voltage=((float)ADCValue/4096)*3.3;//计算电压* o" x0 q; \. v$ k% |; G! }5 N0 \
- H=(10000*voltage)/33;
& S6 @! L: h9 ^. G* t4 C - if(H>400) //40% 阈值
) D+ M- [$ j7 Q5 T - {3 o# j( N; |2 A7 {9 X2 g8 i
- display2();9 j5 _/ M, p4 R
- Mflag=1; //储水量足够,关闭水泵" l* f# c+ N0 _# Q8 h4 C; W
- }, R# _# F! c. _: V/ j
- else
; A$ S; B+ Z) E& A+ D E% g; N - {
0 r" H& y& |$ M* |5 { L8 f8 Y. r, ? - display1();
* }% }$ Y) x p( D4 z+ R - Mflag=0; //储水量不足够,需要启动水泵
5 v& Y3 P7 U' o; \, F - }
5 V" P& D% O; y: n - if(Mflag==1&&OPENflag==1)
( B' e0 c% q* F* R% t - {
) v1 D9 y, v! s# Z* N6 p - LED1=1;
5 ]9 q# [* r8 P3 r1 K) y - LED2=0;: b5 v+ Y' r# `7 O
- MOTOR=1;//关闭水泵
: W& N& |+ B" d - Mflag=2;
% W+ q4 R& c" _ - OPENflag=0; //已经关好
1 Y& g; r7 }+ t, Y5 y$ O - }1 K- O4 _" R3 O4 v% U! U! c8 L
- else if(Mflag==0&&OPENflag==0)
/ s+ G. l6 K7 Y2 @9 l3 x - {
$ B4 {, J- Z; j. l - LED1=0;* v( w* ]" s7 m
- LED2=1;
) b1 ?: m/ t2 }6 \" s7 _7 } - MOTOR=0;//开水泵
5 W4 v- A+ x# f1 Q* B - Mflag=2;
1 t6 ~9 s5 |( N - OPENflag=1; //已经开好 8 h( x3 H( {( |$ g* G
- }$ p% Z0 B0 R9 d6 a+ Y( [! T
- }
! R4 j( ^7 M, [ Q - }
) M! v) G4 O% ]( V v3 G
复制代码 ' `2 R5 J& c! M! S; I" u
|