六、流程图及程序编写
1、水塔水位控制程序流程图(如图6-1所示)
图6-1 水塔水位控制程序流程图
2、水塔水位控制程序 #include
sbit P1_0=P1^0;//B点感应位 sbit P1_1=P1^1;//C点感应位
sbit P1_2=P1^2;//电机控制位,低电平电机运转 sbit P1_3=P1^3;//故障灯控制位 sbit P1_4=P1^4;//蜂鸣器控制位 unsigned char i;//状态变量 void delay1s();//延时1秒程序声明 void delay0_2s();//延时0.2秒程序声明 void main()
- 9 -
{
P1_0=0;//B点感应位 P1_1=0;//C点感应位
P1_2=1;//电机控制位,低电平电机运转 TMOD=0x22; while(1)//死循环 {
if(P1_0==0)//判断B点是否为低电平,若为低电平,则水位太低需供水或电
路故障; {
if(P1_1==0)//B点为低电平,此时判断C点是否为低电平,若为低电平,
即水位太低,电机需运转供水; {
P1_2=0;//电机运转
P1_3=P1_4=0;//保持故障电路静默;
delay1s(); }
else//此时B点为低电平,C点为高电平,电路故障; {
P1_2=1;//关闭电机;
P1_3=P1_4=1;//执行故障电路,LED灯亮,蜂鸣器发声; delay0_2s(); } }
else//此时B点为高电平, {
if(P1_1==1)//若C点为高电平,水位已满,电机需停转; {
P1_2=1;//关闭电机;
- 10 -
P1_3=P1_4=0;//保持故障电路静默;
delay1s(); }
else//若C点为低电平,电机维持原状; {
delay1s();//程序状态不变,仅延时1S
P1_3=P1_4=0;//保持故障电路静默;
} } } }
void delay1s()//延时1秒子函数 {
unsigned int i;//延时采用定时器T1,工作方式2; TMOD=0x22; TH1=6; TL1=6;
for(i=0;i<4000;i++) { TR1=1; while(!TF1) TF1=0; } }
void delay0_2s()//延时0.2秒子函数 {
unsigned int j;//延时采用定时器T0,工作方式2; TMOD=0x22; TH0=6; TL0=6;
- 11 -
for(j=0;j<800;j++) { TR0=1; while(!TF0) TF0=0; } }
3、proteus仿真图(如图6-2、图6-3、图6-4所示)
图6-2 水塔水位控制仿真图(未运行)
- 12 -
图6-3 水塔水位控制仿真图(正常运行)
图6-4 水塔水位控制仿真图(故障)
- 13 -
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库《单片机课程设计报告》-水塔水位 - 图文(3)在线全文阅读。
相关推荐: