标题:
单片机谷物干燥系统设计 附程序+Proteus仿真图
[打印本页]
作者:
的性格和v
时间:
2019-9-4 21:19
标题:
单片机谷物干燥系统设计 附程序+Proteus仿真图
自己制作的设计,自己做的一个谷物干燥,里面一些是模拟温湿度的上升和下降,仅供参考。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(24.65 KB, 下载次数: 33)
下载附件
2019-9-5 20:17 上传
单片机源程序如下:
#include<reg52.h>
#include <intrins.h>
#include <math.h>
#include <stdio.h>
#include <1602.h>
#include <sht11.h>
#define uchar unsigned char
#define uint unsigned int
uint temp,humi;
value humi_val,temp_val; //定义两个共同体,一个用于湿度,一个用于温度
uchar error; //用于检验是否出现错误
uchar date;
uchar checksum; //CRC
uchar TEMP_data[7]; //用于显示温度
uchar HUMI_data[6]; //用于记显示湿度
uchar presskeynum; //按键次数变量
uchar code word1[]={" Put in grain:"};
uchar code word2[]={"..........100%"};
uchar code word3[]={" take out grain"};
uchar code word4[]={" Grain drying"};
sbit k1=P2^0; //放入谷物按键
sbit k2=P2^1; //开始干燥按键
sbit k3=P2^2; //暂停干燥按键
sbit k4=P2^3;// 取出谷物按键
sbit led1=P1^4; //热风机工作指示灯
sbit led2=P1^5; //冷风机工作指示灯
sbit motor1=P1^0; //热风机
sbit motor2=P1^1; //冷风机
sbit P2_6=P2^6;
//********延时函数*********
void delay(uint z) //z为毫秒数
{
int a,b;
for(a=z;a>0;a--)
for(b=120;b>0;b--);
}
void temp_humi() //z为毫秒数
{
GotoXY(0,0); //选择温度显示位置
Print("Temp: C"); //5格空格
GotoXY(0,1); //选择湿度显示位置
Print("Humi: %"); //5格空格
GotoXY(5,0); //设置温度显示位置
TEMP_data[0]=temp/1000+'0'; //温度百位
if (TEMP_data[0]==0x30)
TEMP_data[0]=0x20;
TEMP_data[1]=temp%1000/100+'0'; //温度十位
if (TEMP_data[1]==0x30 && TEMP_data[0]!=0x30)
TEMP_data[1]=0x20;
TEMP_data[2]=temp%100/10+'0'; //温度个位
TEMP_data[3]=0x2e; //小数点
TEMP_data[4]=temp%10+'0'; //温度小数点后第一位
TEMP_data[5]=0xdf; //显示温度符号℃
TEMP_data[6]='\0';
Print(TEMP_data); //输出温度
GotoXY(5,1); //设置湿度显示位置
HUMI_data[0]=humi/1000+'0'; //湿度百位
if (HUMI_data[0]==0x30)
HUMI_data[0]=0x20;
HUMI_data[1]=humi%1000/100+'0'; //湿度十位
HUMI_data[2]=humi%100/10+'0'; //湿度个位
HUMI_data[3]='.' ; //小数点
HUMI_data[4]=humi%10+'0'; //湿度小数点后第一位
HUMI_data[5]='\0';
Print(HUMI_data); //输出湿度
}
void key()
{
if(presskeynum==2)//开始干燥
{
if(k3==0) // 按下暂停按键
{
delay(5);
while(k3==0); //加上此句必须松按键才处理
while(1)
{
led1=led2=1;
motor1=motor2=0;
delay(300);
if(k3==0) {while(k3==0); break;}
}
}
}
else
{
if(k1==0)//放入谷物
{
delay(5);
presskeynum=1;
while(k1==0); //加上此句必须松按键才处理
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
}
if(presskeynum==4)//温湿度检测
{
if (k2==0) //调整按键检测
{
delay(5);
presskeynum=2;
while(k2==0); //若一直按下,循环
}
}
if(k4==0)// 取出谷物按键
{
delay(5);
presskeynum=3;
while(k3==0); //加上此句必须松按键才处理
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
}
}
}
void main()
{
k1=k2=k3=k4=1;
motor1=motor2=0;
P2_6=0;
LCD_Initial(); //液晶初始化
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
while(1)
{
key();
if(presskeynum==0) //初始界面
{
GotoXY (0,0);
Print(word4);
}
if(presskeynum==1) //放入谷物时显示的内容
{
GotoXY (0,0);
Print(word1);
delay(5);
GotoXY(2,1);
Print_slow(word2);
presskeynum=4;
delay(200);
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
}
//*****************************************************************************************************
//此处为proteus模拟显示热冷风机工作时温湿度的变化,现实中仅需对温湿度测量即可
//****************************************************************************************************
if(presskeynum==2) //开始干燥时显示的内容
{
while(temp<820) //温度上限设为82℃
{
key();
led1=0;
motor1=1;
delay(300);
temp_humi();
temp+=35; //步进单位为3.5℃
humi-=12; //步进单位为1.2%
}
if(temp>820) //冷风机开始工作
{
while(humi>200) //湿度下限设为20%
{
delay(500);
key();
motor1=0;
motor2=1;
led1=1;
led2=0;
temp-=35;
humi-=12;
temp_humi();
}
}
motor2=0;
led2=1;
presskeynum=5; //跳入空集,加快按键按下效果
}
if(presskeynum==3) //取出谷物时显示的内容
{
delay(100);
GotoXY (0,0);
Print(word3);
delay(5);
GotoXY (1,1);
Print_slow(word2);
delay(1000);
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
presskeynum=0; //跳转至初始界面
}
if(presskeynum==4) //测量温湿度
{
error=0; //初始化error=0,即没有错误
error+=s_measure((unsigned char*)&temp_val.i,&checksum,TEMP); //温度测量
error+=s_measure((unsigned char*)&humi_val.i,&checksum,HUMI); //湿度测量
if(error!=0)
s_connectionreset(); //如果发生错误,系统复位
else
{
humi_val.f=(float)humi_val.i; //转换为浮点数
temp_val.f=(float)temp_val.i; //转换为浮点数
calc_sth10(&humi_val.f,&temp_val.f); //修正相对湿度及温度
temp=temp_val.f*10;
humi=humi_val.f*10;
temp_humi(); //显示温湿度
} //else
} //if
}//while
} //mian
复制代码
0.png
(6.08 KB, 下载次数: 24)
下载附件
2019-9-5 20:17 上传
所有资料51hei提供下载:
谷物干燥.rar
(104.32 KB, 下载次数: 29)
2019-9-4 21:18 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
我不会数学
时间:
2020-4-25 13:21
有些文档吗?想参考一下?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1