97.基于51单片机的焊机气体监测【ADC0832,12864】(仿真)
97.基于51单片机的焊机气体监测【ADC0832,12864】(仿真)
监控焊接过程中气体的状态,并对其作出特定的动作
1、气源余量正常,气体供应正常
焊机正常工作
2气源余量不足。,气体供应正常
系统进入保护挂起模式,如果焊接过程未完成,系统给予焊工声音提示并在
运行状态显示器上显示异常状态,此时焊工可继续完成本次焊接过程,本次焊接
过程结束后焊机进入锁定状态,必须更换新气源才可解除锁定
3、气源余量正常减压阀减压失效
系统进入保护挂起模式,如果焊接过程未完成,系统给予焊工声音提示并在
运行状态显示器上显示异常状态,此时焊工可继续完成本次焊接过程,本次焊接
过程结束后焊机进入锁定状态,待焊工检查焊机后
4、气源余量正常,管路破损或断开
焊机直接进入锁机状态,必须修复管路后才可以解除锁定气源余量耗尽
焊机直接进入锁机状态,必须更换新的气源才可以解除锁定
资料包括:
原理图:
仿真图:
程序运行图:
#include "ADC0832.h"
#include "intrins.h"
//读取AD值
unsigned int ADC0832(unsigned char dat1) //AD转换,返回结果
{
unsigned char i = 0;
unsigned char j;
unsigned int dat = 0;
unsigned char ndat = 0;
unsigned char channel=2;
//if (channel == 0) channel = 2;//通道1
//if (channel == 1) channel = 3;//通道2
ADDI = 1;//输入引脚拉高
_nop_();//延时1us
_nop_();//延时1us
if(dat1==0)
ADCS1 = 0;//片选
if(dat1==1)
ADCS2 = 0;//片选
if(dat1==2)
ADCS3 = 0;//片选
_nop_();//延时1us
_nop_();//延时1us
ADCLK = 1;//拉高时钟
_nop_();//延时1us
_nop_();//延时1us
ADCLK = 0;//拉低时钟
_nop_();//延时1us
_nop_();//延时1us
ADCLK = 1;//拉高时钟
ADDI = channel & 0x1;
_nop_();//延时1us
_nop_();//延时1us
ADCLK = 0;//拉低时钟
_nop_();//延时1us
_nop_();//延时1us
ADCLK = 1;//拉高时钟
ADDI = (channel >> 1) & 0x1;
_nop_();//延时1us
_nop_();//延时1us
ADCLK = 0;//拉低时钟
ADDI = 1;//输出1
_nop_();//延时1us
_nop_();//延时1us
dat = 0; //存储清零
ADDI =1;
for (i = 0; i < 8; i++) //循环8次
{
dat |= ADDI;//读取引脚
ADCLK = 1; //拉高时钟
_nop_();//延时1us
_nop_();//延时1us
ADCLK = 0;//拉低时钟
_nop_();//延时1us
_nop_();//延时1us
dat <<= 1;//左移
if (i == 7) dat |= ADDI;//读取引脚
}
for (i = 0; i < 8; i++)//循环8次
{
j = 0;
j = j | ADDI; //读取引脚
ADCLK = 1; //拉高时钟
_nop_();//延时1us
_nop_();//延时1us
ADCLK = 0; //拉低时钟
_nop_();//延时1us
_nop_();//延时1us
j = j << 7; //左移7位
ndat = ndat | j; //合并数据
if (i < 7) ndat >>= 1;//去掉符号
}
if(dat1==0)
ADCS1 = 1;//片选
if(dat1==1)
ADCS2 = 1;//片选
if(dat1==2)
ADCS3 = 1;//片选
ADCLK = 0;//拉低时钟
ADDI=1;
dat <<= 8;//数据移位
dat |= ndat;//合并数据
return(ndat);
}