云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 煤矿瓦斯远程监测系统 - 图文

煤矿瓦斯远程监测系统 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/6/2 9:05:30

switch(AD_CHANNEL) { case 0: ISendByte(PCF8591,0x41); D[0]=IRcvByte(PCF8591); //ADC0 break; case 1: ISendByte(PCF8591,0x42); D[1]=IRcvByte(PCF8591); //ADC1 break; case 2: ISendByte(PCF8591,0x43); D[2]=IRcvByte(PCF8591); //ADC2 break; case 3: ISendByte(PCF8591,0x40); D[3]=IRcvByte(PCF8591); //ADC3 break; case 4: DACconversion(PCF8591,0x40, D[4]); //DAC break; }

if(++AD_CHANNEL>4) AD_CHANNEL=0; //将AD返回的数据转换为实际的电压值 voltage1 = (float)D[0]*5/256; voltage2 = (float)D[1]*5/256;

//如果传感器的电压值大于我们设置的报警阈值,控制蜂鸣器发出警报,否则关闭蜂鸣器 if(voltage1 >= MAX_VOLTAGE || voltage2>= MAX_VOLTAGE) { //开启声光报警 BEEP = 1; } else { }

//关闭声光报警 BEEP = 0;

//将采集到的传感器数据格式化输出到一个数组中

39

sprintf(outStr1,\//格式化完的字符串发送到上位机 sendStr(outStr1);

//将采集到的传感器电压值和气体浓度格式化到数组中 sprintf(outStr2,\ sprintf(outStr3,\P2=d \int)(voltage1*1000*PPM_PER_MV),(unsigned int)(voltage2*1000*PPM_PER_MV)); //将采集到的电压值和气体浓度显示在液晶屏幕上 LCD_Write_String(0,0,outStr2); LCD_Write_String(0,1,outStr3); //延时程序 delay(250); } }

40

附录II 部分子程序清单

#include #include \

#define uchar unsigned char

void delay(unsigned char i) {

unsigned char j,k; for(j=i;j>0;j--)

for(k=125;k>0;k--); }

/******************************************************************* DAC

*******************************************************************/ bit DACconversion(unsigned char sla,unsigned char c, unsigned char Val) {

Start_I2c(); SendByte(sla);

if(ack==0)return(0); SendByte(c);

if(ack==0)return(0); SendByte(Val); if(ack==0)return(0); Stop_I2c(); return(1); }

/******************************************************************* ADC

*******************************************************************/ bit ISendByte(unsigned char sla,unsigned char c) {

Start_I2c(); //???? SendByte(sla); //?????? if(ack==0)return(0);

SendByte(c); //???? if(ack==0)return(0);

Stop_I2c(); //???? return(1);

41

}

/******************************************************************* ADC

*******************************************************************/ unsigned char IRcvByte(unsigned char sla) { unsigned char c;

Start_I2c(); //???? SendByte(sla+1); //?????? if(ack==0)return(0);

c=RcvByte(); //????0

Ack_I2c(1); //?????? Stop_I2c(); //???? return(c); }

此部分为I2C总线的驱动程序

#include #include #include

#define NOP() _nop_() /* 定义空指令 */ #define _Nop() _nop_() /*定义空指令*/

sbit SCL=P1^0; //I2C 时钟 sbit SDA=P1^1; //I2C 数据 bit ack; /*应答标志位*/

/******************************************************************* 起动总线函数 函数原型: void Start_I2c();

功能: 启动I2C总线,即发送I2C起始条件.

********************************************************************/ void Start_I2c() {

SDA=1; /*发送起始条件的数据信号*/

42

搜索更多关于: 煤矿瓦斯远程监测系统 - 图文 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

switch(AD_CHANNEL) { case 0: ISendByte(PCF8591,0x41); D[0]=IRcvByte(PCF8591); //ADC0 break; case 1: ISendByte(PCF8591,0x42); D[1]=IRcvByte(PCF8591); //ADC1 break; case 2: ISendByte(PCF8591,0x43); D[2]=IRcvByte(PCF8591); //ADC2 break; case 3: ISendByte(PCF8591,0x40);

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com