OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8272|回复: 7

谁用关于PM2.5模块程序的大哥们 发一下谢谢

[复制链接]

4

主题

9

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2014-7-22
在线时间
0 小时
发表于 2014-8-6 11:06:20 | 显示全部楼层 |阅读模式
5金钱
PM2.5 模块 的程序谁找到的帮忙发给我一下,都百度不到啊

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165369
金钱
165369
注册时间
2010-12-1
在线时间
2110 小时
发表于 2014-8-6 23:09:43 | 显示全部楼层
回复

使用道具 举报

8

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
216
金钱
216
注册时间
2015-1-28
在线时间
29 小时
发表于 2016-1-28 17:39:11 | 显示全部楼层
同求,大哥,你找到没?
回复

使用道具 举报

2

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2015-10-24
在线时间
15 小时
发表于 2016-2-13 22:13:03 | 显示全部楼层
我有啊,,,,但是,不给你。。。
你艹我,我艹你,都一样。
回复

使用道具 举报

1

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2015-12-30
在线时间
37 小时
发表于 2016-7-8 16:20:41 | 显示全部楼层
[mw_shl_code=applescript,true]#include<stc12c5a60s2.h>
#include<LCD1602.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SCLK=P1^0;           //DS1302始终控制总线
sbit DATA=P1^1;           //DS1302数据传输总线
sbit RESET=P1^2;   //DS1302复位总线
uchar table2[8];
uchar second,minute,hour,day,month,year;     //定义秒分时日月年变量
void delay1ms(void)   //误差 -0.018084490741us
{
    unsigned char a,b;
    for(b=18;b>0;b--)
        for(a=152;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}
void delaynms(uchar m)
{
while(m--)
{
  delay1ms();
}
}
/***********************
延时函数
***********************/
void delay()
{
   _nop_();
   _nop_();
}
/*******************************
单片机小精灵生成的延时1us代码
*******************************/
void delay1us(void)   //误差 -0.005353009259us
{
    unsigned char a;
    for(a=1;a>0;a--);
    _nop_();  //if Keil,require use intrins.h
}
/***********************************
延时nus
***********************************/
void delaynus(uint i)
{
while(i--)
{
  delay1us();
}
}
/************************************
函数功能:串口初始化
波特率:2400
工作方式:工作方式1
************************************/
void UART_Init()
{
TMOD=0x20;                 //定时器1工作方式2 八位自动重装模式
TL1=0xF4;                  //波特率2400
TH1=0xF4;                   //
TR1=1;                        //开启定时器1
SM0=0;
SM1=1;                       //串行口通信方式1 八位uart 波特率可变
REN=1;                         // 允许串行口接收  
ES=0;                        //关闭串行口中断
}
/************************************
ADC 初始化
************************************/
void ADC_Init()
{
P1M0=0x08;                  //P1.3开漏模式0000 1000 P1.3            因为按键用到了P1.4-P1.7  而时钟用到了P10-P12
P1M1=0x08;                  //P1.0开漏
ADC_CONTR&=0xF8;            //设置转换速度最快
ADC_CONTR|=0x03;            //设置P1.3引脚为输入模拟量
delaynms(5);                //等待输入稳定
}
uchar AD_Change()
{
uchar result;
ADC_CONTR|=0x88;               //启动转换
while((ADC_CONTR&0x10)==0);          //等待转换结束
ADC_CONTR&=0xE7;                       //清标志位,停止AD转换
result=ADC_RES;
result<<=2;
result=result+(ADC_RESL&0x03);                 //结果只取高八位
return (result);
}
/*****************************
向DS1302中写入一个字节的函数
*****************************/
void DS1302_WriteByte(uchar dat)
{
    uchar  i;
    for (i=0; i<8; i++)             //8位计数器
    {
        SCLK = 0;                   //时钟线拉低
        delay();                //延时等待
        dat >>= 1;                  //移出数据
        DATA = CY;                    //送出到端口
        SCLK = 1;                   //时钟线拉高
        delay();                //延时等待
    }
}

/**************************************
从DS1302读1字节数据
**************************************/
uchar DS1302_ReadByte()
{
    uchar i;
    uchar dat = 0;

    for (i=0; i<8; i++)             //8位计数器
    {
                SCLK = 0;                   //时钟线拉低
                delay();                //延时等待
        dat >>= 1;                        //数据右移一位
                if (DATA) dat |= 0x80;        //读取数据
                SCLK = 1;                   //时钟线拉高
                delay();                //延时等待
        }

    return dat;
}

/**********************************
向DS1302某个地址写入一个数据
**********************************/
void WriteDat(uchar Addr,uchar Data)   
{
RESET=0;        
SCLK=0;
RESET=1;   
delaynus(2);          //延时2us 使硬件做好准备
DS1302_WriteByte(Addr);     //写入命令字
DS1302_WriteByte(Data);     //写入数据
SCLK=1;
RESET=0;                    //禁止数据传输
}
/************************************
函数功能:从1302某个地址读取一个字节的数据
*************************** C*********/
uchar ReadDat(uchar Addr)
{
unsigned char dat;
  RESET=0;                 //拉低RST
  SCLK=0;                //确保写数居前SCLK被拉低
  RESET=1;                 //启动数据传输
  DS1302_WriteByte(Addr);       //写入命令字
  dat=DS1302_ReadByte();       //读出数据
  SCLK=1;              //将时钟电平置于已知状态
  RESET=0;               //禁止数据传递
  return dat;          //将读出的数据返回
}
[/mw_shl_code]
回复

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2016-8-13
在线时间
9 小时
发表于 2016-9-10 17:31:00 | 显示全部楼层
一定要PM2.5么,要不要试试看用其他含量代替?比如粉尘,co之类的。
回复

使用道具 举报

2

主题

171

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3792
金钱
3792
注册时间
2016-6-26
在线时间
276 小时
发表于 2016-9-11 08:14:59 | 显示全部楼层
不知道有没有用。

r7f0c001_pm2.5_monitor_with_portable_battery_software.zip

136.12 KB, 下载次数: 376

回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-3-29
在线时间
2 小时
发表于 2018-4-3 22:03:11 | 显示全部楼层
starxn 发表于 2016-9-10 17:31
一定要PM2.5么,要不要试试看用其他含量代替?比如粉尘,co之类的。

也可以的,只要是以串口为为输送方式的传感器都可以
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-1 12:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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