📄 menu03.c
字号:
// #include "menu03.h"
/*
sbit _WR = P3^7;
sbit _RD = P3^6;
sbit _C_D = P3^4;
sbit _RST = P3^3;
sbit _FS = P3^2;
sbit _CE = P3^1;
*/
#ifndef _menu03_h
#define _menu03_h
#pragma small
#include <reg51.h>
#include <stdio.h>
#include <math.h>
#include <intrins.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define ctrl P3 /*LCD控制口可以改到其它端口,但引脚须遵守文件开始处的顺序*/
#define info P0 /*LCD数据口可以定义到其它端口(8位)*/
sbit T_CLK = P1^2; /*DS1302实时时钟时钟线引脚 */
sbit T_IO = P1^3; /*DS1302实时时钟数据线引脚 */
sbit T_RST = P1^4; /*DS1302实时时钟复位线引脚 */
/********************DS1302串行数据输入中中间变量**************************/
sbit BIT7=ACC^7;
sbit BIT0=ACC^0;
//**********************************定义LCD端口*********************
#define LCD_CMDPORT XBYTE[0x8100]
#define LCD_DATAPORT XBYTE[0x8000]
sbit LCD_RST=P1^7;
//**********************************定义键盘端口*********************
#define KEY_OUTPORT XBYTE[0xC000]
#define KEY_INPORT XBYTE[0x2000]
//**********************************定义打印端口*********************
#define PRINT_ADDR XBYTE[0x4000]
//**********************************定义电压、电流量程****************
float xdata voltage_range=220;
float xdata current_range=6;
/**********************定义GM8123端口***********************/
sbit GM8123_MS=P1^5; //GM8123工作模式控制
sbit GM8123_RESET=P1^6; //GM8123 复位引脚控制
sbit STADD0=P3^3; //GM8123发送通道
sbit STADD1=P3^2;
sbit SRADD0=P3^5; //GM8123接收通道
sbit SRADD1=P3^4;
/**********************定义24c16端口***********************/
sbit SCL =P1^0;
sbit SDA =P1^1;
#define WriteDeviceAddr 0xa0
#define ReadDviceAddr 0xa1
#define pageNum 8 //24c16有8*256个字节
/*************************LCD中一些用到的宏***************************/
#define LCD_MAX_BYTE 8192
#define IS_READY 1 /*测试状态*/
#define IS_BUSY 0
#define OK 1
#define NO 0
#define IS_ERROR 1
#define IS_RIGHT 0
#define READ_WRITE_STATUS 1 /*0 OR 1指令数据读写准备好?*/
#define AUTO_WRITE_STATUS 2 /*数据自动写准备好?*/
#define AUTO_READ_STATUS 3 /*数据自动读准备好?*/
#define CTRL_RUN_STATUS 5 /*控制器能运行?*/
#define SCREEN_COPY_ERROR 6 /*屏拷贝/读出错?*/
#define BLINK_STATUS 7 /*闪烁状态,1显示,0显示关*/
/***************************LCD状态测试中中间变量***********************/
uchar bdata lcdStatus;
sbit _s0= lcdStatus^0;
sbit _s1= lcdStatus^1;
sbit _s2= lcdStatus^2;
sbit _s3= lcdStatus^3;
sbit _s5= lcdStatus^5;
sbit _s6= lcdStatus^6;
sbit _s7= lcdStatus^7;
/***************************************函数原型声明****************************************/
/*****LCD模块中*****/
bit lcdTest(uchar stx);
void rstLcd();//复位
void initLcd();//初始化
void clrLcd();//清屏
void delayNms(uchar ms);//延时
void lcdDatWrite(uchar newDat);//写数据
void lcdCmdWrite(uchar newCmd);//写命令
void lcdDCWrite(uchar dat1,uchar dat2,uchar cmd);//写带参数命令
void lcdXYWrite(uchar xp,uchar yp,uchar dat,uchar sign);//任意位置写一字节数据
void writeNumCharacter(uchar x,uchar y,uchar Num,uchar *p);//任意位置显示某数组中定义的Num个字符
void displayACharacter(uchar x,uchar y,uchar Num);//任意位置显示字库中的第Num个汉字
void displayfullscreen(uchar *p);//显示一屏
void displayentry(uchar *p,uint begin,uint end,uchar sign);//正反显条目
/*****DS1302模块中*****/
void v_Set1302(uchar *pSecDa) ; //设置时间
void v_Get1302(uchar *ucCurtime); //读取当前时间
/*****自定义*****/
void Displaytime(uchar x,uchar y);//任意位置显示时间
void displayinitialmenu(void);//初始化界面显示
void displaymainmenu();//主菜单显示
void displayparameterset();//1.参数设定
void displaysampleparameter();//1.1设定试品参数
void displaysystemparameter();//1.2设定系统参数
void displaytimeparameter();//1.3设定系统时间
void displayactualtest();//2.实际测量
void displayvacancytest();//3.空载试验
void displaybeartest();//4.负载试验
void displaycapacityestimate();//5.容量判断
void displayinquirenote();//6.查询记录
void displaysoftstorage();//7.数据软存
void displaysystemadjust();//8.系统校准
void displayinputvoltage();//8.1输入标准电压值
void displayinputcurrent();//8.2输入标准电流值
void displayinputpower();//8.3输入标准功率值
void displayinputphasic();//8.4输入标准相角值
void parameter_caculate();//参数计算
/****************************************全局变量声明**************************************/
/*****DS1302中*****/
uchar xdata starttime[12];//秒分时日月星期年;时寄存器位7为0,设置为24小时格式;
//秒寄存器位7为0,使时钟震荡器震荡。
uchar xdata ucCurtime[12];
/*****试品参数*****/
uchar xdata parameter1[6][9]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
{0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x23,0x00,0x00,0xff,0xff,0xff},};
uchar xdata parameter2[6][9]={{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},
{0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff},
{0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff},};
/*****系统参数*****/
uchar xdata sys_parameter[10][7]={{0x00,0xff,0xff,0xff,0xff,0xff,0xff},
{0x00,0xff,0xff,0xff,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0x00,0xff,0xff},
{0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0xff,0xff,0xff},
{0x00,0x00,0x00,0x00,0xff,0xff,0xff},};
uchar idata data_parameter[8]={0,0,0,0,0,0,0,0};
uchar idata timeflag=0;
/*****空载及负载参数*****/
float xdata Sn1=0,Io1=0,Pk1=0,Uk1=0,Po=0,Io=0,Pk=0,Uk=0,Pn=0,Un=0,Uh=0,U1=0,Sn=0,Rs=0,Tm=0,Cn=0,K=0,Uv=0,In=0,Fz=0,PHa=0,PHb=0,PHc=0,COSA=0,COSB=0,COSC=0,Ua=0,Ub=0,Uc=0,Ia=0,Ib=0,Ic=0,Uka=0,Ukb=0,Ukc=0,Pa=0,Pb=0,Pc=0;
/*****显示缓冲*****/
uchar xdata display_buffer1[15][8]={{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},
{52,52,52,52,52,52,0xff,0xff},};
uchar xdata savetemp[2][6];
/*****系统校验*****/
uchar xdata parameter_adjust[3][30];
/*******串口通信中******/
uchar xdata ReceiveBuff[108];
float xdata ReceiveData[37];
float *f,t;
/*****浮点运算*****/
union
{
uchar ch[4];
float f1;
}Var;
/*****打印*****/
bit bdata print_flag0,print_flag1,print_flag2,print_flag3;
uchar flag1=0;
//定义要打印的汉字(机内码)
uchar code chinese1[8]={0xC8,0xDD,0xC1,0xBF,0xC5,0xD0,0xB6,0xCF};//容量判断
uchar xdata chinese2[24]={0xC8,0xDD,0xC1,0xBF,0x3A,0x31,0x32,0x33,0x34,0x35,0x20,0x6b,0x56,0x41,0x20, //容量:123456
0xD0,0xCD,0xCA,0xBD,0x3A,0xA3,0xD3,0x31,0x31}; //型式:S11
uchar xdata chinese3[8]={0xCA,0xB5,0xBC,0xCA,0xB2,0xE2,0xC1,0xBF};//实际测量
uchar code chinese4[8]={0xBF,0xD5,0xD4,0xD8,0xCA,0xD4,0xD1,0xE9};//空载试验
uchar code chinese5[8]={0xB8,0xBA,0xD4,0xD8,0xCA,0xD4,0xD1,0xE9};//负载试验
/*****容量判断*****/
uchar capacity=0;
uchar s_num[3];
/*******键盘扫描中******/
bit bdata flag=0; //键盘是否按下标识
uchar keynum=0x1f;
/*******数据保存中******/
bit bdata saveflag=0,save_flag1=0,save_flag2=0;
uchar data flags=0;//显示的是否是保存的数据
uchar test[4];
/**************自定义*************/
uchar code displaytimetest[480]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//0
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//1
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//2
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//3
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//4
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xAF,0xFF,0xC6,0xFF,0x09,0xFF,
0xC7,0xFF,0x31,0xFF,0x57,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//5 请于厂家联系
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -