CANBUS 甲烷高低浓度传感器Word格式文档下载.docx

上传人:b****2 文档编号:2987727 上传时间:2023-05-01 格式:DOCX 页数:152 大小:51.68KB
下载 相关 举报
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第1页
第1页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第2页
第2页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第3页
第3页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第4页
第4页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第5页
第5页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第6页
第6页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第7页
第7页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第8页
第8页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第9页
第9页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第10页
第10页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第11页
第11页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第12页
第12页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第13页
第13页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第14页
第14页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第15页
第15页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第16页
第16页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第17页
第17页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第18页
第18页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第19页
第19页 / 共152页
CANBUS 甲烷高低浓度传感器Word格式文档下载.docx_第20页
第20页 / 共152页
亲,该文档总共152页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

CANBUS 甲烷高低浓度传感器Word格式文档下载.docx

《CANBUS 甲烷高低浓度传感器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《CANBUS 甲烷高低浓度传感器Word格式文档下载.docx(152页珍藏版)》请在冰点文库上搜索。

CANBUS 甲烷高低浓度传感器Word格式文档下载.docx

#defineLISTEN0X70//CANBUS监听模式

#defineSELF_CHK0X40//CANBUS自检模式

#defineSHUT_OFF0X20//CANBUS关闭模式

#defineNORMAL0X0//CANBUS正常模式

#definebitset(var,bitno)((var)|=1<

<

(bitno))

#definebitclr(var,bitno)((var)&

=~(1<

(bitno)))

#defineled_offRE1//LED电源开关

#defineled_csRE2//LED驱动芯片14489片选端

#defineir_inRB1//红外接收

#defineds1820_inRA4//DS18B20数据线

#defineds1820_in_ioTRISA4//DS18B20数据线I/O方向设置

#defineb25_1RB4//B25输出1(beeper)

#defineb25_2RB5//B25输出2(常闭)

#defineb25_3RB6//B25输出3(常开)

#defineb25_4RB7//B25输出4(保留)

#definex9c102_cs1RD0//X9C102片选1(FOR低浓CH4)

#definex9c102_ud1RD1//X9C102方向选择1(FOR低浓CH4)

#definex9c102_inc1RD2//X9C102脉冲输入1(FOR低浓CH4)

#definex9c102_cs2RD3//X9C102片选2(FOR高浓CH4)

#definex9c102_ud2RD4//X9C102方向选择2(FOR高浓CH4)

#definex9c102_inc2RD5//X9C102脉冲输入2(FOR高浓CH4)

#definepwr_3v_cs1RD6//3v开关电源使能1(FOR低浓CH4)

#definepwr_3v_cs2RD7//3v开关电源使能2(FOR高浓CH4)

#defineHALF0X0//常数(FORdelay_ir())

#defineFULL0X01

#defineFAN_LOCK_VAL3.0//CH4风机闭锁

#defineFAN_LOCK_VAL_DOWN1.51//CH4风机闭锁下限(解锁!

#definePROTECT_VAL4.0//CH4探头保护值

#defineZERO_AD_UP20//CH4自动调零AD码值上限=20

#defineZERO_AD_DOWN10//CH4自动调零AD码值下限=10

#defineLtoH_SWT_VAL3.8//ch4l-->

ch4h切换点

//#defineWARM_UP_VAL3.5//切换预热点

#defineHtoL_SWT_VAL2.8//ch4h-->

ch4l切换点

//******************************数据表定义(ROM)*************************************

//constucharTAB_MMSR[]={0XC3,0XDC,0XC2,0XEB,0XCA,0XE4,0XC8,0XEB};

//密码输入

//******************************全局变量定义(RAM)*********************************

structchillon

{ucharcunt;

uintlocal_sid_1st;

//本机SID_1:

(0xxxH,12位HEX)

uintch4_low_alm;

//ch4报警下限值(16位BCD)

uintch4_high_alm;

//ch4报警上限值(16位BCD)

ucharwork_mode;

//工作模式(0=CH4,1=CH4/T)

ucharlocal_type;

//本机TYPE(01H=CH4,13H=CH4/T)

ucharch4l_zero;

//低浓ch4零位值(8位HEX)

uintch4l_k;

//低浓ch4k系数(16位HEX)

uintlocal_sid_2nd;

//本机SID_2:

(保留:

for基带干线!

ucharch4h_zero;

//高浓ch4零位值(8位HEX)

uintch4h_k;

//高浓ch4k系数(16位HEX)

uintctrl_id1;

//控制目标地址1(12位HEX)

uintctrl_id2;

//控制目标地址2(12位HEX)

uintctrl_id3;

//控制目标地址3(12位HEX)

uintctrl_id4;

//控制目标地址4(12位HEX)

uintch4_res_alm;

//ch4复电限(16位BCD)

floatcoeff;

//修正因数(onlyforch4l!

};

unionbrisbane//包含结构体的共用体!

{ucharram_blk[64];

structchillonram_var;

unionbrisbaneram_para;

//flash参数在ram中的映射

uintmaster_sid=0X0101;

//中心站SID

uintrev_sid;

//can_bus:

RXB0接收到的SID

uintrev_did;

RXB0接收到的DID

ucharrev_dat[8];

RXB0接收到的数据域

ucharsimul_test_set=0X0;

//'

模拟断电/报警命令'

设置变量

uintch4l_calib_gas;

//低浓ch4标定气样值(16位BCD)

uintch4h_calib_gas;

//高浓ch4标定气样值(16位BCD)

ucharch4_alarm_flag;

//ch4报警标志:

(D0=1:

报警,D1=1:

断电)

ucharkout_flag;

//开出控制重复确认标志:

(D0=1:

ucharkout_cunt;

//开出控制重复确认计数变量

ucharch4_state_flag;

//ch4状态标志(for横向发送命令)

//ucharprotect_proc=0X0;

//探头保护进程标志变量

//ucharprotect_tmr=0X0;

//探头保护定时计数变量

//ucharwarm_up_cunt;

//ch4切换预热计数

ucharswt_cunt;

//ch4切换计时

ucharch4_switch_state;

//ch4切换状态变量:

00h=低浓测量,01h=低->

高过渡

//02h=高->

低过渡,03h=高浓测量

uintupload_ch4l_data;

//ch4l:

0~4%-->

0~4095

uintupload_ch4h_data;

//ch4h:

0~40%-->

uintupload_ch4;

//FORCAN_BUS上传!

(统一量程ch4:

0~4095)

//uintch4_data;

(ch4:

uintreal_ch4;

//ch4实测值!

uintoriginal_ch4;

//未经修正因数校正的ch4l值!

(0~40%-->

0~4095)

uintvtrk_data;

//Vtrk*(R/4R)分压-->

ADC(0~5v-->

0~1023)

persistentuintmid_fil_cache[5];

//中值滤波缓存

uintrank_cache[5];

//排序缓存

uintpeak_fil_cache;

//峰值滤波缓存

ucharpeak_fil_cunt;

//峰值滤波计数变量

uintepm_cfrm_cache[5][2];

//EEPROM数据校验缓存

ucharir_data;

//红外接收数据

ucharkey_cache[6];

uchar*key_ptr=key_cache;

ucharkey_proc;

uintfun_code;

//功能代码=0xxx(2字节)

ucharkey_comb;

//组合键标志

ucharkey_tmr_cunt;

//键盘超时检测定时计数变量(与定时中断配合!

ucharled_byte[4];

//LED显示缓存

uchardsp_work_cunt;

//LED翻屏显示定时计数变量

uchardsp_work_item;

ucharpara_send_cunt=0X1E;

//参数帧上传定时计数变量(定时=30s)

ucharupload_cunt;

//CAN_BUS数据上传定时计数变量

ucharfout_cunt;

//fout刷新计数变量

//******************************位变量定义**********************************

bitir_ok=0;

//1:

红外接收到有效值(红外中断+查询组合)

bitkey_working=0;

键盘操作进程中

bitkey_tmr_on=0;

键盘超时检测定时启动

bitfix_on=0;

检修状态启动

bitch4l_zero_on=0;

低浓ch4自动调零开始

bitch4h_zero_on=0;

高浓ch4自动调零开始

bitch4l_calib_on=0;

低浓ch4自动标定开始

bitch4h_calib_on=0;

高浓ch4自动标定开始

bitsend_ok_0=0;

//1:

CAN_BUS/TXB0组发送成功

bitpara_send_ok=0;

CAN_BUS/参数帧发送成功

bitmaster_ack_ok=0;

CAN_BUS/正确收到中心站ACK

bitcan_cmd_rev=0;

CAN_BUS接收到新命令帧(CAN/RXB0接收中断+查询组合)

bitalarm_flash=0;

//报警时LED闪烁

//bitpeak_fil_start=0;

峰值滤波开始

//bitir_beeper;

//Ir-->

Beeper控制标志位

bitsend_flip=0;

//横向发送切换标志位

//******************************函数声明************************************

voidport_initial(void);

//I/O口初始化函数

voidad_initial(void);

//ADC模块初始化

voidwdt_initial(void);

//WDT模块初始化

voidtmr0_initial(void);

//TMR0模块初始化

voidspi_initial(void);

//SPI模块初始化

voidpwm_initial(void);

//PWM模块初始化

voidcan_initial(void);

//CAN模块初始化

voidpwm_fout(void);

//频率输出

voidch4_alarm_chk(void);

//报警断电门限检测

voidkout_clr(void);

//开关量输出:

清0

voidkout_control(void);

//开关量输出控制

//voidprotect(void);

//探头保护

voidch4_switch_ctrl(void);

//高低浓切换控制

voidget_flash(void);

//读取flash_para-->

ram_para

voidflash_update(void);

//保存ram_para-->

flash_para

voidflash_wr_cycle(void);

//flash写时序周期

voidflash_erase(ulongflash_add);

//flash擦除操作

voidflash_wr(ulongflash_add,uchar*ram_data);

//flash写操作

ucharflash_rd(ulongflash_add);

//flash读操作

voidled_config(void);

//LED驱动芯片14489配置寄存器设定

voidled_dsp(void);

//LED驱动芯片14489显示寄存器设定

voiddsp_work(void);

//工作画面显示(温度/开入-->

切换显示)

voiddsp_ch4(void);

//ch4测量值显示

voiddsp_ok(void);

//显示:

YYY

voiddsp_nod(void);

ppp

voiddsp_fail(void);

FFF

voidir_rev(void);

//红外接收

voidkey_manage(void);

//键盘逻辑管理

voidkey_sync_execute(void);

//键盘命令处理及显示(同步于键盘操作中断)

uintadc_sample(ucharchannel);

//ADC采集

uintmid_filter(uintm);

//中值滤波

uintpeak_filter(uintn);

//峰值滤波

voidch4l_zero_auto(void);

//低浓ch4自动调零(900)

voidch4l_calib_auto(void);

//低浓ch4自动标定(909)

voidch4h_zero_auto(void);

//高浓ch4自动调零(910)

voidch4h_calib_auto(void);

//高浓ch4自动标定(919)

voidcan_send(ucharn);

//can_bus数据发送

voidsend_to_master_para(void);

//向中心站上传参数帧

voidsend_to_master_dat(void);

//向中心站上传ch4数据

voidsend_to_controller_dat(void);

//向断电控制器发送数据

voidsend_id_set(uintsend_sid,uintsend_did,ucharsend_type,ucharn);

//发送ID寄存器SFR设定

voidcan_send_LOW_ISR(uintsend_sid,uintsend_did,ucharsend_type,ucharn);

//自动标定同时can_bus数据发送(TMR0中断调用!

voidcan_opt_mode(ucharm);

//CAN:

改变CAN模块operationmode

voidcan_cmd_execute(void);

命令帧处理

voidcan_cmd_ack(void);

命令帧应答

ucharcompatible_state_code(ucharm);

//横向命令发送的第3字节兼容代码转换

voiddelay_ms(uintt);

//延时函数(单位:

ms)

voiddelay_us(uchart);

us)

voiddelay_ir_us(uchart);

us,红外接收中断专用)

voiddelay_ir(uchart);

voiddelay_LOW_ISR_ms(uintt);

ms,TMR0中断专用)

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

//主函数

voidmain()

{

uintm,n,t;

ulongp;

ulongtmp1,tmp2;

port_initial();

//I/O口初始化

kout_clr();

//4路开关量输出:

ad_initial();

wdt_initial();

tmr0_initial();

spi_initial();

pwm_initial();

get_flash();

//读取flash预存参数->

RAM变量

can_initial();

//CAN模块初始化

//是上电复位!

if(((RCON&

0X1F)==0X1C)&

&

(STKFUL==0)&

(STKUNF==0))

{asm("

clrwdt"

);

//WDT清0

delay_ms(500);

//延时500ms

asm("

//WDT清0

led_byte[0]=0XFF;

O

led_config();

led_byte[1]=0X80;

led_byte[2]=0X00;

led_byte[3]=0X70;

led_dsp();

led_byte[0]=0XD1;

ch41,2,3...

led_byte[1]=0X0C;

led_byte[2]=0X24;

led_byte[3]=0X00;

t=(uchar)(ram_para.ram_var.local_sid_1st)+60;

for(n=0;

n<

t;

n++)//延时local_sid_1st*500ms-->

开启3v开关电源

//再延时60*500ms-->

等待ch4l探头上电稳定

if((n%2)==0)

{led_byte[3]=led_byte[3]+0X10;

}

//ch4l3v开关电源=开启

if(n>

=(uchar)(ram_para.ram_var.local_sid_1st))

{pwr_3v_cs1=1;

}

}

5;

n++)//中值滤波缓存清0!

{mid_fil_cache[n]=0x0;

RCON=RCON|0X1F;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2