📄 x20gdnzh1.c
字号:
//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 + -