找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机PM2.5温度报警系统proteus仿真+源码

  [复制链接]
跳转到指定楼层
楼主
PM2.5温度报警系统仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序:

  1. 部分代码:
  2. //18b20初始化函数
  3. void init_18b20()
  4. {
  5.         bit q;
  6.         dq = 1;                                //把总线拿高
  7.         delay_uint(1);            //15us
  8.         dq = 0;                                //给复位脉冲
  9.         delay_uint(80);                //750us
  10.         dq = 1;                                //把总线拿高 等待
  11.         delay_uint(10);                //110us
  12.         q = dq;                                //读取18b20初始化信号
  13.         delay_uint(20);                //200us
  14.         dq = 1;                                //把总线拿高 释放总线
  15. }

  16. //写18b20内的数据
  17. void write_18b20(uchar dat)
  18. {
  19.         uchar i;
  20.         for(i=0;i<8;i++)
  21.         {                                         //写数据是低位开始
  22.                 dq = 0;                         //把总线拿低写时间隙开始
  23.                 dq = dat & 0x01; //向18b20总线写数据了
  24.                 delay_uint(5);         // 60us
  25.                 dq = 1;                         //释放总线
  26.                 dat >>= 1;
  27.         }        
  28. }


  29. //读取18b20内的数据
  30. uchar read_18b20()
  31. {
  32.         uchar i,value;
  33.         for(i=0;i<8;i++)
  34.         {
  35.                 dq = 0;                         //把总线拿低读时间隙开始
  36.                 value >>= 1;         //读数据是低位开始
  37.                 dq = 1;                         //释放总线
  38.                 if(dq == 1)                 //开始读写数据
  39.                         value |= 0x80;
  40.                 delay_uint(5);         //60us        读一个时间隙最少要保持60us的时间
  41.         }
  42.         return value;                 //返回数据
  43. }


  44. //读取温度的值 读出来的是小数
  45. uint read_Temp()
  46. {
  47.         uint value;
  48.         uchar low;                           //在读取温度的时候如果中断的太频繁了,就应该把中断给关了,否则会影响到18b20的时序
  49.         init_18b20();                   //初始化18b20

  50.         write_18b20(0xcc);           //跳过64位ROM
  51.         write_18b20(0x44);           //启动一次温度转换命令


  52.         init_18b20();                   //初始化18b20

  53.         write_18b20(0xcc);           //跳过64位ROM
  54.         write_18b20(0xbe);           //发出读取暂存器命令

  55.         low = read_18b20();           //读温度低字节
  56.         value = read_18b20();  //读温度高字节

  57.         value <<= 8;                   //把温度的高位左移8位
  58.         value |= low;                   //把读出的温度低位放到value的低八位中
  59.         value *= 0.625;               //转换到温度值 小数
  60.         return value;                   //返回读出的温度 带小数
  61. }
复制代码

全部资料51hei下载地址:
程序.rar (96.71 KB, 下载次数: 126)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:1 发表于 2018-10-13 16:19 | 只看该作者
好像proteus工程不全?只有备份文件
回复

使用道具 举报

板凳
ID:401656 发表于 2018-12-18 21:05 | 只看该作者
这个是还测了PM2.5是吗?  有去掉这个部分的代码吗?
回复

使用道具 举报

地板
ID:480151 发表于 2019-3-12 09:50 | 只看该作者
有实物图吗
回复

使用道具 举报

5#
ID:511966 发表于 2019-4-17 08:24 | 只看该作者
可以的,对我有些帮助。
回复

使用道具 举报

6#
ID:438171 发表于 2019-4-26 16:53 | 只看该作者
仿真文件不全啊,有没有完整的
回复

使用道具 举报

7#
ID:484435 发表于 2019-4-27 11:01 | 只看该作者
感谢楼主分享
回复

使用道具 举报

8#
ID:375715 发表于 2019-4-27 19:35 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

9#
ID:688984 发表于 2020-4-1 23:18 | 只看该作者
不全不全不全
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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