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

📄 menu03.c

📁 此为本人设计的一个电力仪表
💻 C
📖 第 1 页 / 共 5 页
字号:
// #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 + -