⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x20gdnzh1.c

📁 51的典型应用于传感器程序编程架构
💻 C
📖 第 1 页 / 共 5 页
字号:
//date:2007/06/29所有参数由调试程序写入,这个程序只管从eeprom读出,在遥控操作中比较
//VERSION: U6.0
#include <stdio.h>
#include <reg52.h>
#include <intrins.h>  //nop
#include <math.h>
//x号功能为调整输出频率
//高低浓
//x00  0 - 4 - 100  (200 - 1000 1200 - 2000)Hz
//x01  0 - 4 - 100  (200 - 1000)Hz
//x02  0 - 4 - 100  (0 - 200 - 1000)Hz
//x03  0 - 4 - 100  (200 - 1000 1280 - 3200)Hz
//x04  0 - 4 - 100  (0 - 5000)Hz

//x05  0 - 4 - 40  (200 - 1000)Hz
//x06  0 - 4 - 40  (200 - 600 - 960)Hz
//x07  0 - 4 - 40  (200 - 600 - 1000)Hz
//x08  0 - 4 - 40  (200 - 1000 - 1360)Hz
//x09  0 - 4 - 40  (200 - 1000 1200 - 2000)Hz
//x10  0 - 4 - 40  (5 - 15 - 105)Hz
//x11  0 - 4 - 40  (0 - 2000)Hz
//x12  0 - 4 - 40  (0 - 4000)Hz
//x13  0 - 4 - 10  (200 - 1000)Hz
//x14   0 - 4 - 40  (0 - 500)Hz
//高浓
//x15  0 - 100  (200 - 1000)Hz
//x16  0 - 100  (0 - 200)Hz
//x17  0 - 100  (5 - 15)Hz
//x18  0 - 100  (0 - 500)Hz
//x19  0 - 4 - 100  (200 - 600 - 1000)Hz
//***********EEPROM 地址************
//01H.00H 低浓零点
//03H.02H 低浓放大倍数
//05H.04H 低浓非线性
//07H.06H 报警点
//09H.08H 断电点
//0BH.0AH 高浓零点
//0DH.0CH 高浓放大倍数
//0FH.0EH 高浓非线型1 当浓度<25%时
//11H.10H 高浓非线型2 当25%<浓度<50%时
//13H.12H 高浓非线型3 当浓度>50%时
//15H.14H 版本号 U6.1零点处理,U6.0零点不处理
//17H.16H 频率输出选择
//19H.18H 自检(0-99)
//1BH.1AH 复电点
//**********************************************
#define  ZOAH   0x028f  //028FH = 60mv
#define  ZOAM   0x0222  //0222H = 50mv
#define  ZOAL   0x01b4  //01b4H = 40mv
#define  GOAH   0x04b1  //04b1H = 110mv
#define  GOAM   0x0444  //0444H = 100mv
#define  GOAL   0x03d6  //03d6H = 90mv
//**********************************************
#define  EECS   P3_5
#define  ADCS   P3_4
#define  SCLK   P3_0
#define  SDI    P3_1
#define  SDO    P2_4
#define  GN     P0_1
#define  DN     P0_0
#define  BJ     P2_7
#define  DD     P3_2
//**********************************************
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  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  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  minute6;//6m到标志 =1到 =0没到
 bit  flag;//遥控器逻辑标志
 bit  flag1;//flag1 接收到的not "1" and "0"
 bit  enyk;//enyk=0没有有效遥控,enyk=1有有效遥控按键
 bit  adchange;//A/D通道 =0通道0 =1通道1
 bit  linezp;//非线性正负标志 =1负 =0正
 bit  gdzh;//高低浓工作标志 =0低浓工作 =1高浓工作
 bit  adfrist1;//低浓第一次进行A/D校准
 //bit  adfrist2;//高浓第一次进行A/D校准
 bit  ykgoon;//遥控继续显示标志 =1继续显示 =0不显示
 bit  dnegpos;//低浓瓦斯正负标志 =1浓度为负 =0浓度正
 bit  gnegpos;//高浓瓦斯正负标志 =1浓度为负 =0浓度正
 bit  dzjflag;//自检标志 =1自检
 // bit  gzjflag;//自检标志 =1自检
 bit  dlbflag;//低浓滤波标志 =0不进行滤波 =1进行滤波
 bit  alarmflag;//报警有效标志 =1报警 =0不报警
 bit  gnflag;//功能已按下标志
 bit  zxflag;//执行码标志
 bit  dlflag;//低浓零点处理好标志
 bit  dfdflag;//低浓放大处理好标志
 bit  dfxflag;//低浓非线性处理好标志
 bit  bjflag;//报警点处理好标志
 bit  ddflag;//断电处理好标志
 bit  fdflag;//复电处理好标志
 bit  glflag;//高浓零点处理好标志
 bit  gfdflag;////低浓放大处理好标志
 bit  gfx1flag;//高浓非线性1处理好标志
 bit  gfx2flag;//高浓非线性2处理好标志
 bit  gfx3flag;//高浓非线性3处理好标志
 bit  outflag;//输出选择遥控处理标志
 bit  dnts;//低浓调试状态 =1进行低浓调试 =0高低浓自动转换
 bit  zj;//增加键 =1有效
 bit  jx;//减小键 =1有效
 bit  gnts;//遥控高浓调试状态=1有效
 bit  zjoutflag;//自检遥控处理好标志
 bit  gdn;//高浓瓦斯和高低浓瓦斯 =1高浓瓦斯
 bit  onetwo;//频率输出一段,两段 =0一段 =1两段
 bit  fp;//=1需要分频 =0不需要分频
 unsigned char dispcount;//=0显示从左往又第一位数码管
                         //=1显示从左往又第二位数码管
                         //=2显示从左往又第三位数码管
                         //=3显示从左往又第四位数码管
 unsigned char tbuffer1;//从右往左第一位数码管显示特殊字符缓冲
 unsigned char tbuffer2;//从右往左第二位数码管显示特殊字符缓冲
 unsigned char tbuffer3;//从右往左第三位数码管显示特殊字符缓冲
 unsigned char tbuffer4;//从右往左第四位数码管显示特殊字符缓冲
 unsigned int sec;//1秒
 unsigned int min;//1分
 unsigned long int min6;//6分
 unsigned int alarmsec;//0.5s报警
 unsigned char YKCODE;//遥控玛
 unsigned long int YK;//遥控接收处理单元
 unsigned int zerod;//低浓零点
 unsigned int zerog;//高浓零点
 unsigned char lined;//低浓放大倍数
 unsigned char uline;//非线性
 unsigned int alarm;//报警点
 unsigned int pout;//断电点
 unsigned int fout;//复电点
 unsigned char lineg;//高浓放大倍数
 unsigned char ulineg1;//高浓非线性1
 unsigned char ulineg2;//高浓非线性2
 unsigned char ulineg3;//高浓非线性3
 unsigned char out;//频率输出
 unsigned int  zjout;//自检输出值
 float fd;//低浓对应频率值
 float fj1;//低浓频率基值
 idata float fg;//高浓对应频率值
 idata float fj2;//高浓频率基值
 unsigned char timerh;//频率输出定时时间H
 unsigned char timerl;//                L
 unsigned char fpb;//分频超过20Hz单元 0.4%,0.2%,10%
 unsigned char countt;//分频单元
 unsigned char timebc;//定时器补偿
 unsigned char timebc1;//低浓
 unsigned char timebc2;//高浓
 //显示字符表
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
                             };
code unsigned char a[]={//查表后显示   序号   查表前的值
                         0,      //1       //0   0.00
                         1,      //2       //15  0.015
                         1,      //3      //20  0.02
                         1,      //4      //25  0.025
                         1,      //5      //30
                         2,      //6      //35
                         2,      //7      //40
                         3,      //8      //45
                         3,      //9      //50
                         3,      //10     //55
                         4,      //11     //60
                         5,      //12     //65
                         6,      //13     //70
                         7,      //14     //75
                         8,     //15     //80
                         9,     //16     //85
                         9,     //17     //90
                         10,     //18     //95

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -