找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2308|回复: 2
收起左侧

求MH-Z19二氧化碳传感器的程序

[复制链接]
ID:269410 发表于 2017-12-31 10:12 | 显示全部楼层 |阅读模式
求MH-Z19二氧化碳传感器的程序
回复

使用道具 举报

ID:269410 发表于 2017-12-31 10:13 | 显示全部楼层
有没有大神有MH-Z19二氧化碳传感器的程序
回复

使用道具 举报

ID:258566 发表于 2017-12-31 12:55 | 显示全部楼层
#include"reg52.h"#include"stdio.h"#include"intrins.h"#include"lcd1602.H"#define uchar unsigned char#define uint unsigned int#define ulong unsigned longuchar code tab[9] ={ 0xff, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79 };uchar date[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };void delayms(uint xms){    uint x, y;    for (x = xms; x > 0; x--)        for (y = 110; y > 0; y--) ;}void send(uchar dat)    //发送一字节    {    SBUF = dat;    while (!TI) ;    TI = 0;}void main(void){    uint tmp;    uchar i;    TMOD = 0x20;    // T1定时方式2    SCON = 0x40;    //串行工作 方式1    PCON = 0x00;    //不加倍    TH1 = TL1 = 0xfd;   //定时器1赋初值  保证波特率9600    TR1 = 1;    //开定时器1    REN = 1;    //允许串口接收    init_1602();    //液晶初始化    delayms(10);    ES = 1; //打开串口中断    EA = 1; //开总中断    while (1)    {        for (i = 0; i < 9; i++) //向co2传感器发送数据        {            send(tab[i]);        }        delayms(1000);  //延时一秒  刷新测得数据        tmp = date[2] * 256 + date[3];  //计算出co2浓度值        if (tmp > 9999)            tmp = 0;        WRITE_LCD1602_COM(0x80 + 8);        if ((tmp / 1000) > 0)            WRITE_LCD1602_DAT(LCD1602_Table[tmp / 1000]);        else            WRITE_LCD1602_DAT(' ');        WRITE_LCD1602_DAT(LCD1602_Table[tmp00 / 100]);        WRITE_LCD1602_DAT(LCD1602_Table[tmp0 / 10]);        WRITE_LCD1602_DAT(LCD1602_Table[tmp]);    }}void serial() interrupt 4   //串口中断服务函数{    static uchar j=0;    ES = 0; //禁止中断    if (!RI) ;    RI = 0; //清楚接收完毕标志    date[j] = SBUF;    if (date[0] == 0xff)    //判断接收到的第一位为传感器所发数据        j++;    else        j = 0;    if (j == 9) //接收传感器所发数据9字节        j = 0;    ES = 1; //允许串口中断}//////////////////////////////////////////////////////////////////////////////////////////////lcd1602.H:#define uchar unsigned char#define uint unsigned intsbit RS = P2 ^ 5;sbit RW = P2 ^ 6;sbit EN = P2 ^ 7;uchar LCD1602_Table[] = "0123456789";//LCD1602显示标尺   //0123456789abcdefuchar code DIS_TIM[16] = { "    PPM=        " };    //显示温湿度uchar code DIS_STA[16] = { "  Test is   oK! " };    //uchar code DIS[16] = { "alarm       ppm" }; //extern void delayms(uint xms);void WRITE_LCD1602_DAT(uchar date){    EN = 0;    RS = 1;    P0 = date;    EN = 1;    delayms(2);    EN = 0;}void WRITE_LCD1602_COM(uchar date){    EN = 0;    RS = 0;    P0 = date;    EN = 1;    delayms(2);    EN = 0;}void init_1602(){    unsigned char i;    RW = 0;    WRITE_LCD1602_COM(0x38);    WRITE_LCD1602_COM(0x0c);    WRITE_LCD1602_COM(0x06);    WRITE_LCD1602_COM(0x01);    WRITE_LCD1602_COM(0x80);    for (i = 0; i < 8; i++)        WRITE_LCD1602_DAT(DIS_TIM[i]);}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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