找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求大神指导学习 基于单片机的窗户自动控制系统设计

[复制链接]
跳转到指定楼层
楼主
ID:843765 发表于 2021-3-31 11:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
243黑币
由于本论坛禁止直接求程序,禁止伸手党,所以向大家请教一下大致的实现方法与思路,理清头绪后我自己来写程序去实现,谢谢大家

我尝试做了,但是仿真一直失败,不知道是软件问题还是我设计的有问题
程序我是参考的论坛大佬修改的
这是系统框图,只要求做出电路原理图和仿真结果图片,不要很复杂很复杂我也不懂,我只是一个真心想学单片机技术的小白
有没有大佬来指导一下

3.png (16.92 KB, 下载次数: 42)

3.png

最佳答案

查看完整内容

这个程序你可以参考学习一下,坛子里面还有很多http://www.51hei.com/bbs/dpj-179272-1.html你把可以把你写的代码贴上来,大家一起研究一下问题出在哪里.一起学习技术 Proteus7.5版本仿真结果如下:
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:328014 发表于 2021-3-31 11:49 | 只看该作者
这个程序你可以参考学习一下,坛子里面还有很多http://www.51hei.com/bbs/dpj-179272-1.html你把可以把你写的代码贴上来,大家一起研究一下问题出在哪里.一起学习技术
Proteus7.5版本仿真结果如下:

回复

使用道具 举报

板凳
ID:584814 发表于 2021-3-31 22:52 | 只看该作者
如果把赏金单位换成米刀结果就不一样了,全套的都有呵呵
回复

使用道具 举报

地板
ID:843765 发表于 2021-3-31 23:13 | 只看该作者
51hei团团 发表于 2021-3-31 23:05
这个程序你可以参考学习一下,坛子里面还有很多http://www.51hei.com/bbs/dpj-179272-1.html你把可以把你写 ...

我就是参考的那个人的,他的太复杂了  程序多的放不下。
回复

使用道具 举报

5#
ID:843765 发表于 2021-4-1 20:26 | 只看该作者
51hei团团 发表于 2021-3-31 11:49
这个程序你可以参考学习一下,坛子里面还有很多http://www.51hei.com/bbs/dpj-179272-1.html你把可以把你写 ...

unsigned char flage=0;             //0为智能模式(默认模式),1为手动模式
unsigned int status=0;             //默认窗户为关,1为开
以下是循环判断执行程序的分析:
while(1)
{
if(anjian==1)      //进行按键的判断,执行相关模式
{
Delay10ms();              //延时消抖判断
if(anjian==1)
{
led1 = !led1; led2 = !led2;     //进行相关指示灯的亮灭控制,反转
         flage = !flage;
         Delay300ms();//延时避免程序多次执行
}
}

if(flage==0)              //窗户开关状态判断,通过flag标志位
{

value = rain_read();             //进行雨水量的读取,采取模拟量
    DHT11_ReadTempAndHumi();            //调用温湿度传感器,进行相关数据的获取
    uart_1_println(temp_value);
  uart_1_println(value);

if(status==0)    //窗户为关闭状态
{
if((value>3800)&&(temp_value>250))      关窗条件的设定
{
Motor_run(1)   //电机动作程序调用
}
}
else
{
if(value<3800||temp_value<200)
{
Motor_run(2)   //电机动作程序调用,与上文调用,相比,电机反向
}
}
}
else
{    }  }
回复

使用道具 举报

6#
ID:843765 发表于 2021-4-1 20:26 | 只看该作者
51hei团团 发表于 2021-3-31 11:49
这个程序你可以参考学习一下,坛子里面还有很多http://www.51hei.com/bbs/dpj-179272-1.html你把可以把你写 ...
  1. extern unsigned char DHT11_ReadTempAndHumi(void)
  2. {
  3.    unsigned char i = 0, check_value = 0, count = 0;
  4.    EA = 0;
  5.    dht11 = 0;     //拉低数据线大于 18ms 发送开始信号
  6.    Delay_1ms(20); //需大于 18 毫秒
  7.    dht11 = 1;     //释放数据线,用于检测低电平的应答信号
  8.    //延时 20-40us,等待一段时间后检测应答信号,应答信号是从机拉低数据线 80us
  9.    DHT11_Delay_10us();
  10.    DHT11_Delay_10us();
  11.    DHT11_Delay_10us();
  12.    DHT11_Delay_10us();
  13.    if (dht11 != 0) //检测应答信号,应答信号是低电平
  14.    {
  15.        //没应答信号
  16.        EA = 1;
  17.        return ERROR;
  18.    }
  19.    else
  20.    {
  21.        //有应答信号
  22.        while (dht11 == 0 && count++ < NUMBER)
  23.            ;                //等待应答信号结束
  24.        if (count >= NUMBER) //检测计数器是否超过了设定的范围
  25.        {
  26.            dht11 = 1;
  27.            EA = 1;
  28.            return ERROR; //读数据出错,退出函数
  29.        }
  30.        count = 0;
  31.        dht11 = 1; //释放数据线
  32.        //应答信号后会有一个 80us 的高电平,等待高电平结束
  33.        while (dht11 != 0 && count++ < NUMBER)
  34.            ;
  35.        if (count >= NUMBER)
  36.        {
  37.            dht11 = 1;
  38.            EA = 1;
  39.            return ERROR; //退出函数
  40.        }
  41.        //读出湿.温度值
  42.        for (i = 0; i < SIZE; i++)
  43.        {
  44.            value_array[i] = DHT11_ReadValue();
  45.            if (status == ERROR) //调用 ReadValue()读数据出错会设定 status 为 ERROR
  46.            {
  47.                dht11 = 1;
  48.                EA = 1;
  49.                return ERROR;
  50.            }
  51.            //读出的最后一个值是校验值不需加上去
  52.            if (i != SIZE - 1)
  53.            {
  54.                //读出的五字节数据中的前四字节数据和等于第五字节数据表示成功
  55.                check_value += value_array[i];
  56.            }
  57.        } //end for
  58.        //在没用发生函数调用失败时进行校验
  59.        if (check_value == value_array[SIZE - 1])
  60.        {
  61.            //将温湿度扩大 10 倍方便分离出每一位
  62.            humi_value = value_array[0] * 10;
  63.            temp_value = value_array[2] * 10;
  64.            dht11 = 1;
  65.            EA = 1;
  66.            return OK; //正确的读出 dht11 输出的数据
  67.        }
  68.        else
  69.        {
  70.            //校验数据出错
  71.           EA = 1;
  72.            return ERROR;
  73.        }
  74.    }
  75. }
复制代码

上述程序就是DHT11的驱动程序。
回复

使用道具 举报

7#
ID:843765 发表于 2021-4-1 20:29 | 只看该作者
51hei团团 发表于 2021-3-31 11:49
这个程序你可以参考学习一下,坛子里面还有很多http://www.51hei.com/bbs/dpj-179272-1.html你把可以把你写 ...

我没直接求程序   我只是没有仿真图  电脑打不开而已  至于程序对错我看不出来   因为都是参考别人的
我本身不是干这个的
回复

使用道具 举报

8#
ID:843765 发表于 2021-4-1 20:32 | 只看该作者
51hei团团 发表于 2021-3-31 11:49
这个程序你可以参考学习一下,坛子里面还有很多http://www.51hei.com/bbs/dpj-179272-1.html你把可以把你写 ...

原理图不清晰  而且我没电脑就弄不好了  每次都在网吧做的
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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