收藏 分销(赏)

压力传感器数据采集程序.doc

上传人:仙人****88 文档编号:9451076 上传时间:2025-03-26 格式:DOC 页数:48 大小:269.04KB 下载积分:10 金币
下载 相关 举报
压力传感器数据采集程序.doc_第1页
第1页 / 共48页
压力传感器数据采集程序.doc_第2页
第2页 / 共48页


点击查看更多>>
资源描述
//date:2010/09/04 //VERSION: U2.0 //#include <stdio.h> #include <reg52.h> #include <intrins.h> //nop //#include <absacc.h> //扩展外部 //#include <math.h> //***********EEPROM 地址************ //16位处理 //00H 零点 //01H 放大倍数 //02H 报警点 //03H 解报点 //04H 断电点 //05H 复电点 //06H 0度补偿 //07H 40度补偿 //08H 自检点 //09H //0AH //0BH //0CH //0DH //********************************** //------------------------------------------- //以下管脚定义 #define EECS P3_5 //EEPROM选通 #define ADCS P3_4 //EEPROM,A/D选通 #define SCLK P2_4 //EEPROM,A/D时钟 #define SDAT P2_5 //EEPROM,A/D数据输入 #define DOG P3_2 //看门狗 #define FMQ P0_4 //报警输出 #define BJ P0_5 //报警输出 #define POFF P2_7 //断电输出 #define FOUT P3_7 //频率输出 #define PDT P0_7 //温度 //------------------------------------------- sfr T2MOD = 0xC9; //P0 sbit P0_0=P0^0; sbit P0_1=P0^1; sbit P0_2=P0^2; sbit P0_3=P0^3; sbit P0_4=P0^4; sbit P0_5=P0^5; sbit P0_6=P0^6; sbit P0_7=P0^7; //P1 sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7; //P2 sbit P2_0=P2^0; sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; sbit P2_4=P2^4; sbit P2_5=P2^5; sbit P2_6=P2^6; sbit P2_7=P2^7; //P3 sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_2=P3^2; sbit P3_3=P3^3; sbit P3_4=P3^4; sbit P3_5=P3^5; sbit P3_6=P3^6; sbit P3_7=P3^7; //----------------------------------------------- //位变量 bit led1c;//从右往左第一位数码管显示标志 =0显示 =1不显示 bit led2c;//从右往左第二位数码管显示标志 =0显示 =1不显示 bit led3c;//从右往左第三位数码管显示标志 =0显示 =1不显示 bit led4c;//从右往左第四位数码管显示标志 =0显示 =1不显示 bit led1p;//从右往左第一位数码管小数点显示标志 =1显示 =0不显示 bit led2p;//从右往左第二位数码管小数点显示标志 =1显示 =0不显示 bit led3p;//从右往左第三位数码管小数点显示标志 =1显示 =0不显示 bit led4p;//从右往左第四位数码管小数点显示标志 =1显示 =0不显示 // bit led1f//从右往左第一位数码管显示标志 =1显示结束 =0没有显示结束 // bit led2f//从右往左第二位数码管显示标志 =1显示结束 =0没有显示结束 // bit led3f//从右往左第三位数码管显示标志 =1显示结束 =0没有显示结束 // bit led4f//从右往左第四位数码管显示标志 =1显示结束 =0没有显示结束 bit led1sc;//从右往左第一位数码管允许闪烁显示标志 =1允许闪烁显示 =0不允许闪烁 bit led2sc;//从右往左第二位数码管允许闪烁显示标志 =1允许闪烁显示 =0不允许闪烁 bit led3sc;//从右往左第三位数码管允许闪烁显示标志 =1允许闪烁显示 =0不允许闪烁 bit led4sc;//从右往左第四位数码管允许闪烁显示标志 =1允许闪烁显示 =0不允许闪烁 bit led1s;//从右往左第一位数码管闪烁显示 =1显示 =0不显示 bit led2s;//从右往左第二位数码管闪烁显示 =1显示 =0不显示 bit led3s;//从右往左第三位数码管闪烁显示 =1显示 =0不显示 bit led4s;//从右往左第四位数码管闪烁显示 =1显示 =0不显示 bit flag;//遥控器逻辑标志 bit flag1;//flag1 接收到的not "1" and "0" bit enyk;//enyk=0没有有效遥控,enyk=1有有效遥控按键 bit ykgoon;//遥控继续显示标志 bit gnflag; bit zxflag;//执行码标志 bit alarmflag;//报警有效标志 =1报警 =0不报警 bit second1;//1s到标志 =1到 =0没到 bit second2;//1s到标志 =1到 =0没到 bit second3;//1s到标志 =1到 =0没到 bit second4;//1s到标志 =1到 =0没到 bit minute;//1m到标志 =1到 =0没到 bit flag1820;//读写1820时防止读错标志 bit crcflag;//CRC检验用标志位 bit np;//浓度正负标志 =1负 bit lbflag;//滤波标志 bit zjflag;//自检标志 bit zj;//增加键 =1有效 bit jx;//减小键 =1有效 bit zflag;//零点遥控处理好标志 bit fdflag;//放大遥控处理好标志 bit fd1flag;//复电遥控处理好标志 bit bjflag;//报警遥控处理好标志 bit ddflag;//断电遥控处理好标志 bit jbflag;//解报遥控处理好标志 bit zjflag1;//遥控自检处理好标志 bit temflag1;//发温度转换命令=1发过命令 bit wdflag0;//0度遥控处理好标志 bit wdflag40;//40度遥控处理好标志 //----------------------------------------------- //----------------------------------------------- //全局变量 unsigned long int YK;//遥控处理单元 unsigned char YKCODE;//遥控接收码 unsigned char T0H;//频率输出定时单元高 unsigned char T0L;//频率输出定时单元低 unsigned int alarmsec;//0.5s报警 unsigned int sec;//1秒 unsigned int min;//1分 unsigned char zero;//零点 unsigned char lined;//放大倍数 unsigned int alarm;//报警点 unsigned int jalarm;//解报点 unsigned int pout;//断电点 unsigned int fout;//复电点 unsigned char wd0;//0度补偿 unsigned char wd40;//0度补偿 unsigned int zjd;//自检点 unsigned char temcount;//读温度主程序执行次数 unsigned char dispcount;//=0显示从左往又第一位数码管 //=1显示从左往又第二位数码管 //=2显示从左往又第三位数码管 //=3显示从左往又第四位数码管 unsigned char tbuffer1;//从右往左第一位数码管显示特殊字符缓冲 unsigned char tbuffer2;//从右往左第二位数码管显示特殊字符缓冲 unsigned char tbuffer3;//从右往左第三位数码管显示特殊字符缓冲 unsigned char tbuffer4;//从右往左第四位数码管显示特殊字符缓冲 idata float yl;//本次压力值 idata float yl1;//上次压力值 unsigned int temp;//温度 idata unsigned char a[9];//读温度数组 idata float c[4]; //----------------------------------------------- //----------------------------------------------- //显示字符表 code unsigned char table[]={ 0xC0, // 0 0xF9, // 1 0xA4, // 2 0xB0, // 3 0x99, // 4 0x92, // 5 0x82, // 6 0xF8, // 7 0x80, // 8 0x90, // 9 0x88, // A 10 0x83, // b 11 0xC6, // C 12 0xA1, // d 13 0x86, // E 14 0x8E, // F 15 0x8C, // P 16 0xC1, // U 17 0xF1, // J 18 0xFF, // 全熄灭 19 0xBF, // - 20 0x47, // L 21 0x89, // H 22 0xFE, // - 23 0xF7, // - 24 0xAF, // r 25 0xA3, // o 26 0x9C, // O 27 }; //----------------------------------------------- //----------------------------------------------- //看门狗 void dog(void) { DOG=!DOG; _nop_(); DOG=!DOG; } //----------------------------------------------- //----------------------------------------------- //不显示 void dirb(void) { led2c=1;led3c=1;led4c=1;//显示' ' } //----------------------------------------------- //----------------------------------------------- //延时程序 入口i void delay(unsigned int i) { // unsigned int j; for(;i>1;i--) { _nop_(); } // _nop_(); } //----------------------------------------------- //----------------------------------------------- //显示版本号 void dirver(void) { tbuffer4=17;tbuffer3=2;tbuffer2=0;//'U2.0' 零点处理 led3p=1;//第三位数码管小数点显示 } //----------------------------------------------- //----------------------------------------------- //初始化特殊功能寄存器 void rest(void) { IE=0; IP=0x02; TMOD=0x11; TH0=0; TL0=0; TH1=0; TL1=0; SCON=0; PCON=0; TCON=0x55; RCAP2H=0xf8; RCAP2L=0xcc; TH2=RCAP2H; TL2=RCAP2L; T2MOD=0xfc; T2CON=0x4; ET2=1; BJ=0; FMQ=0; IE=0xa6; T0H=0xf7; T0L=0x05; POFF=1; } //----------------------------------------------- //----------------------------------------------- //定时器0频率输出中断 void TIM0(void) interrupt 1 //TIME0频率输出 { TH0=T0H; TL0=T0L; FOUT=!FOUT; // flag1820 =1; } //----------------------------------------------- //----------------------------------------------- //遥控器输入中断+定时器1 void INTT1(void) interrupt 2 //外部中断处理遥控器输入 { unsigned char countx; //累加记数 union x //公用体处理遥控器 { unsigned long int d; unsigned char a[4]; unsigned int k; }z; z.a[0]=TH1; z.a[1]=TL1; TL1=0;TH1=0; //去定时时间,清定时器 if((z.k>=768)&&(1200>=z.k)) { flag=0; flag1=0; }//"0" else if((z.k>=1536)&&(2400>=z.k)) { flag=1; flag1=0; }//"1" else flag1=1; if(flag1) { TL1=0; TH1=0; }//flag=1 not "1" and "0" else { YK<<=1; if(flag)YK++; flag=0; z.d=YK; for(countx=0;countx<=16;countx++) { z.d<<=1; if(z.a[0]==0xE2) { YKCODE=z.a[1]; enyk=1; }//找到功能码退出 if(enyk) { YK=0; TL1=0; TH1=0; break; } } } flag1820=1; } //----------------------------------------------- //----------------------------------------------- //显示和定时中断 void TIM2(void) interrupt 5 { unsigned char i; if(alarmflag&&(alarmsec++>=500)) { alarmsec=0; BJ=!BJ; FMQ=!FMQ; } if(sec++>=400) { second1=1;//second2=1;second3=1;second4=1; sec=0; }//0.4秒 if(min++>=60000) { minute=1; led1c=0; led1sc=0; tbuffer1=0; }//1分到不允许功能码显示不闪烁 P1=0xFF;//清空显示 switch(dispcount) { case 0: { dispcount++; if(!led1c)i=0xFF; //不显示功能码 else //显示功能码 { if(led1sc) //功能码允许闪烁显示 { if(second1)//0.5s到 { second1=0;//清标志 led1s=!led1s; } else { if(led1s) {i=table[tbuffer1];if(led1p)i&=0x7F;}//第一位小数点显示 //闪烁不显示 else i=0xFF; //功能码单元 P1=i; } } else { P1=table[tbuffer1];//功能码不允许闪烁显示 //P1=i; if(led1p)P1_7=0;//P1&=0x7F;//第一位小数点显示 } } P2_0=0;P2_1=1;P2_2=1;P2_3=1; break; } case 1: { dispcount++; if(led2c)i=0xFF; //不显示功能码 else //显示功能码 { if(led2sc) //功能码允许闪烁显示 { if(second2)//0.5s到 { //second2=0;//清标志 //led2s=!led2s; } else { if(led2s) {i=table[tbuffer2];if(led2p)i&=0x7F;}//第二位小数点显示//闪烁不显示 else i=0xFF; //功能码单元 P1=i; } } else { P1=table[tbuffer2];//功能码不允许闪烁显示 //P1=i; if(led2p)P1_7=0;//P1&=0x7F;//第二位小数点显示 } } P2_0=1;P2_1=0;P2_2=1;P2_3=1; break; } case 2: { dispcount++; if(led3c)P1=0xFF; //不显示功能码 else //显示功能码 { if(led3sc) //功能码允许闪烁显示 { if(second3)//0.5s到 { //second3=0;//清标志 ///led3s=!led3s; } else { if(led3s) {i=table[tbuffer3];if(led3p)i&=0x7F;}//第三位小数点显示 //闪烁不显示 else i=0xFF; //功能码单元 P1=i; } } else { P1=table[tbuffer3];//功能码不允许闪烁显示 //P1=i; if(led3p)P1_7=0;//P1&=0x7F;//第三位小数点显示 } } P2_0=1;P2_1=1;P2_3=1;P2_2=0; break; } case 3: { dispcount=0; if(led4c)i=0xFF; //不显示功能码 else //显示功能码 { if(led4sc) //功能码允许闪烁显示 { if(second4)//0.5s到 { //second4=0;//清标志 //led4s=!led4s; } else { if(led4s) {i=table[tbuffer4];if(led4p)i&=0x7F;}//第四位小数点显示 //
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服