空气质量检测仪C程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

空气质量检测仪C程序

程序代码

#include<reg52.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

#define Data P0 //数据端口

/*****1602管脚定义*****/

sbit RS=P2^6;

sbit RW=P2^5;

sbit E=P2^7;

/******AD管脚定义*****/

sbit STA=P3^0;

sbit OE=P3^1;

sbit EOC=P3^2;

sbit CLK=P3^3;

/*****按键管脚定义******/

sbit key_U=P2^0;

sbit key_D=P2^1;

sbit key_L=P2^2;

sbit key_R=P2^3;

sbit key_S=P2^4;

/******报警用管脚******/

sbit beep=P3^4;

sbit led1=P3^5;

sbit led2=P3^6;

unsigned char num=0;//记录设定键按下次数

unsigned char k_flag=0;//记录设置键按下次数(用于调用)

unsigned char wei=0;//光标位置

unsigned char c_num=0;//记录切换键按下次数

unsigned char c_flag=0;//记录切换键按下次数(用于调用)

unsigned char voc_ad;//AD读取数据

unsigned char flag;//DHT11函数用到

/****************************/

sbit DHT=P3^7;

uchar WEN1[]="wen:16.00-28.00";//温度第一行数据uchar WEN2[]=" 00.00 "; //温度第二行数据uchar SHI1[]="shi:30.00-70.00";//湿度第一行数据uchar SHI2[]=" 00.00 "; //湿度第二行数据uchar VOC1[]="voc:0.00-2.70 ";//湿度第一行数据

uchar VOC2[]=" 0.00 "; //湿度第二行数据unsigned char shiZ,shiX,wenZ,wenX,check;

unsigned char tr_shiZ,tr_shiX,tr_wenZ,tr_wenX;

/*********延时*******************************/

void delay_1ms(uint x)

{

uchar i;

while(x--)

for(i=0;i<120;i++);

}

void delay_10us()

{

unsigned char i;

i--;

i--;

i--;

i--;

i--;

i--;

}

void DelayUs(unsigned char us)//--延时函数

{

unsigned char uscnt;

uscnt=us>>1; /*12MHz频率*/

while(--uscnt);

}

/*******1602显示*******************************************/ /**********写命令**********/

void lcd_write_com(uchar c)

{

delay_1ms(5);//操作前短暂延时,保证信号稳定

E=0;

RS=0;

RW=0;

_nop_();

E=1;

Data=c;

E=0;

}

/**********写数据*************/

void lcd_write_dat(uchar c)

{

delay_1ms(5); //操作前短暂延时,保证信号稳定

E=0;

RS=1;

RW=0;

_nop_();

E=1;

Data=c;

E=0;

RS=0;

}

/**********LCD初始化********/

void lcd_init()

{

delay_1ms(15);

lcd_write_com(0x38); //display mode

lcd_write_com(0x38); //display mode

lcd_write_com(0x38); //display mode

lcd_write_com(0x06); //显示光标移动位置

lcd_write_com(0x0c); //显示开及光标设置

lcd_write_com(0x01); //显示清屏

}

/*********显示单个字符**********/

void ShowChar(uchar pos,uchar c)

{

unsigned char p;

if (pos>=0x10)

p=pos+0xb0; //是第二行则命令代码高4位为0xc else

p=pos+0x80; //是第二行则命令代码高4位为0x8 lcd_write_com(p);//写命令

lcd_write_dat(c); //写数据

}

/*********显示字符串**********/

void ShowSt

ring (uchar line,char *ptr) {

unsigned char l,*p;

p=ptr;

l=line<<4;

while((*p)!='\0')

{

ShowChar(l++,*(p));

p++;

相关文档
最新文档