51单片机CO2检测显示程序资料

发布者:东土大唐88最新更新时间:2017-09-02 来源: elecfans关键字:51单片机  CO2检测  显示程序 手机看文章 扫描二维码
随时随地手机看文章

这是一款51单片机CO2检测显示程序资料,二氧化碳传感器MH-Z19模块的T(TXD)接单片机的RXD, R(RXD)接单片机的TXD,V+连接单片机5v正极,V-连接单片机的地(串口TTL通信就需要连接这四根线);测量电压选用5V;单片机型号STC89C52,液晶显示屏型号LCD1602,电路连接按照那个测试图的;串口通信波特率9600,注意晶振要是11.0592M,否则会引起通信失败;传感器上电需要预热3分钟。

51单片机CO2检测显示程序资料

51单片机CO2检测显示程序资料

#include"reg52.h"

#include"stdio.h"

#include"intrins.h"

#include"lcd1602.H"

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long 

uchar 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;

   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 int           

sbit RS=P2^5;

sbit RW=P2^6;

sbit EN=P2^7;

uchar LCD1602_Table[]="0123456789";

//LCD1602显示标尺   //0123456789abcdef

uchar 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]);

}


关键字:51单片机  CO2检测  显示程序 引用地址:51单片机CO2检测显示程序资料

上一篇:单片机DTH11温湿度测量仿真
下一篇:51单片机洗衣机控制板及C语言程序

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved