找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2853|回复: 2
打印 上一主题 下一主题
收起左侧

基于51单片机的智能饮水机系统-代码+仿真

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus8.10仿真工程文件可到本帖附件中下载)


单片机源程序如下:
#include <reg52.h>                 //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255
#define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535

sbit SCL=P1^4;                //SCL定义为P1口的第3位脚,连接ADC0832SCL脚
sbit DO=P1^5;                //DO定义为P1口的第4位脚,连接ADC0832DO脚
sbit CS=P1^3;                //CS定义为P1口的第4位脚,连接ADC0832CS脚

sbit beep = P3^3;   //蜂鸣器IO口定义
sbit key= P1^7;                //开关

uchar shuiwei;     //水位
uchar s_high = 90;//水位报警参数

uint flag_250ms ;

/********************************************************************
* 名称 : delay_uint()
* 功能 : 小延时。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void delay_uint(uint q)
{
        while(q--);
}

/***********************1ms延时函数*****************************/
void delay_1ms(uint q)
{
        uint i,j;
        for(i=0;i<q;i++)
                for(j=0;j<120;j++);
}

/***********读数模转换数据********************************************************/        
//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的
                                                //  1  0  0 通道
                                                //  1  1  1 通道
unsigned char ad0832read(bit SGL,bit ODD)
{
        unsigned char i=0,value=0,value1=0;               
                SCL=0;
                DO=1;
                CS=0;                //开始
                SCL=1;                //第一个上升沿        
                SCL=0;
                DO=SGL;
                SCL=1;          //第二个上升沿
                SCL=0;
                DO=ODD;
                SCL=1;            //第三个上升沿
                SCL=0;            //第三个下降沿
                DO=1;
                for(i=0;i<8;i++)
                {
                        SCL=1;
                        SCL=0; //开始从第四个下降沿接收数据
                        value<<=1;
                        if(DO)
                                value++;                                                
                }
                for(i=0;i<8;i++)
                {                        //接收校验数据
                        value1>>=1;
                        if(DO)
                                value1+=0x80;
                        SCL=1;
                        SCL=0;
                }
                CS=1;
                SCL=1;        
                if(value==value1)                                //与校验数据比较,正确就返回数据,否则返回0        
                        return value;
        return 0;
}

/****************报警函数***************/
void clock_h_l()
{
                if(shuiwei<s_high&&key==0)//水位小于设定值且红外探测器触发
                {
                  beep = 0;      //工作
                }
                        else
                {
                        beep = 1;                        //暂停工作
                }
                        
}


/***************主函数*****************/
void main()
{
        while(1)
        {
               
                        shuiwei = ad0832read(1,0);        //读出湿度
                        shuiwei = 99 - shuiwei * 99 / 255;
                        shuiwei *= 1.3;
                        if(shuiwei >= 99)
                                shuiwei = 99;
                        clock_h_l();         //报警函数
                delay_1ms(1);
        }
}

注意仿真必须要用Proteus8.10版本才行,如果没有此版本的就不要下载了: 智能饮水机.7z (149.9 KB, 下载次数: 58)

评分

参与人数 1黑币 +40 收起 理由
admin + 40 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:1082272 发表于 2023-6-5 23:07 来自手机 | 只看该作者
哪位朋友运行了程序 有没有错误啊 我复制过去显示文档没创建
回复

使用道具 举报

板凳
ID:1093552 发表于 2023-9-14 16:10 | 只看该作者
皮皮鸭 发表于 2023-6-5 23:07
哪位朋友运行了程序 有没有错误啊 我复制过去显示文档没创建

首先看一下你的软件是否和这个编程软件等级一样,或者更新最新版本在运行一下试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表