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

📄 define.c

📁 w77e58 双串口 液晶显示源程序 c语言编写
💻 C
字号:
#include <w77e58.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int

sbit RS=P1^0;
sbit RW=P1^1;
sbit E=P1^4;
sbit RST=P1^5;
sbit LED=P1^6;
sbit KEY1=P2^4;
sbit KEY2=P2^5;
sbit KEY3=P2^6;
sbit KEY4=P2^7;
sbit GREEN=P3^2;
sbit YELLOW=P3^3;
sbit RED=P3^4;
sbit DE=P3^5;

void init_cpu(void);          //初始化cpu
void init_lcd(void);          //初始化lcd
void show_log(void);          //显示公式log
void write_command(uchar cmd,uchar i); // 写命令字到lcd
void write_data(uchar cmd);            // 写数据到lcd
void busy_test(void);                  //  判断lcd是否忙
void dis_data(uchar *ptr,uchar hangshu,uchar lieshu,uchar ddram); // 将待显示的数据发送至ddram
void ms_delay(uint t);                 //  ms延迟
void us_delay(uint t);                 //  us延迟
uchar crc(uchar *ptr);                 //  计算crc
void get_tx(void);                     //  将发送的一个字数据存入发送数组中
void get_shuzi(uchar cmd);               //  将待显示的数据转为位lcd显示的代码
void tx_data(uchar zlb,uchar md_add);  //串口0给目标地址md_add发送帧类别zlb数据帧
void tx1_data(uchar zlb,uchar md_add); //串口1给目标地址md_add发送帧类别zlb数据帧
void re_data(void);                    //串口0设置为接收同步字
void re1_data(void);                   //串口1设置为接收同步字
void sci_int(void);                    //串口0中断
void sci1_int(void);                   //串口1中断
void init_data(void);                  //初始化内存变量
void tx_cmd(uchar cmd);               //给多个下位机发送命令
void dis_oper(void);                //显示运行状态
void dis_set(uchar cmd);               //显示设置界面
void time_set(void);
void get_ov(bit bt);
void get_lv(bit bt);
void get_vot(bit bt);
void tx1_data1(uchar zlb,uchar md_add); //非中断调用发送函数
void get_ovbuf(void);
void get_lvbuf(void);
void get_votbuf(void);
void light_led(void);




/********************************************************************
ping为显示数据的屏数(一共有四屏,循环显示)
busy为判断LCD是否忙标志位,dis_flag为显示标志位,当该位置位时,更新显示数据
t_temp为定时器中的暂存器,用来产生更长时间的定时时间
**********************************************************************/
uchar busy,ping=0;
/*p_flag为电池阵列状态标志
b_flag为蓄电池状态标志
c_flag为充电运行状态标志
n_flag为逆变运行状态标志*/
uchar p_flag=1,b_flag=2,c_flag=2,n_flag=2;

uchar ap_flag=1,bp_flag=0,cp_flag=0;
/*************************串口0、1变量***********************************/
uchar xdata re_zlb,re_temp,re_temp1,re_temp2,re_no,re_mudi,re_yuan,re_xinxi;
uchar xdata tx_zlb,tx_temp,tx_temp1,tx_temp2,tx_no,tx_xinxi;
uchar xdata data_no ;
uchar xdata re1_zlb,re1_temp,re1_temp1,re1_temp2,re1_no,re1_mudi,re1_yuan,re1_xinxi;
uchar xdata tx1_zlb,tx1_temp,tx1_temp1,tx1_temp2,tx1_no,tx1_xinxi;
uchar xdata xinxi_no,xinxi1_no,tx_add,tx1_add,tx_mudi;
//uchar xdata mudi_no,mudi_sn,shuju_sn;  //mudi_sn下位机目标地址序号,mudi_no下位机目的地址个数,
                                        //shuju_sn获取下位机数据的设置地址序号
uchar xdata tx_zlb_temp,tx_zlb_end,tx1_zlb_temp,tx1_zlb_end; //tx_zlb_end 最后一次发送的帧类别代码,add-地址
uchar xdata tx_add_temp,tx_add_end,tx1_add_temp,tx1_add_end; //tx_zlb_temp当发送忙时用来暂存待发送的帧类别代码
bit L,S,D,L1,S1,D1,tx_flag=0,tx_fifo=0,tx1_flag=0,tx1_fifo=0;
bit time_flag=0,dis_flag2=0,dis_flag3=0,dis_flag4=0,dis_flag5=0;
bit init_flag=0;
bit key1_temp,key2_temp,key3_temp,key4_temp,sys_time;
uchar sn;
uchar key_flag,key_temp,key_val;
uchar dis_flag=0;
uchar  xdata re_buf[6],tx_buf[6];     //接收、发送一个子的暂存区
uchar  xdata re1_buf[6],tx1_buf[6];     //接收、发送一个子的暂存区
uchar  xdata data_buf[32];           // 待显示的数据暂存区
uchar  xdata shuzi_buf[24];           // 每屏显示数字暂存区
/************************串口0、1变量完毕**********************************/

/*************************键盘控制变量************************************/

uchar dis_temp=0x01,key_data=0,set_flag=0,set_flag2=0,key_data2=0;
char code key_buf[2]={0x10,0x20};
long int  t_temp,t_temp2,t_temp3;                //定时器计数变量
uchar  xdata o_v[2],l_v[2],ov_v[2];           //过压点、欠压暂存区
uchar xdata set_ov[2],set_lv[2],set_ovv[2];
uchar xdata key_err1,key_err2,key_err3;
bit sci_set1,sci_set2,sci_set3,otime_flag=0,led_flag=0;
uchar key_set,led_temp,sys_flag,sys_temp;
uint  lv,ovv,vot,lv_val,ovv_val,vot_val;
char xdata ov_buf[4],lv_buf[4],vot_buf[4],ov_temp[4],lv_temp[4],vot_temp[4]; //过压点,欠压点,输出电压显示值
char code set_unit[6]={" V V V"};
char code set_buf[4][12]={"查看充电状态","查看逆变状态","设置系统参数","循环显示    "};
char code space[16]={"                "};
char code cd_buf[24]={"充电状态电池板  蓄电池  "};
char code nb_buf[12]={"A 相B 相C 相"};
char code nb_buf1[2][4]={"正常","故障"};
//char code cd_buf1[4][4]={"停止","恒压","恒流","浮充"};
char code back[12]={"返回上级菜单"};
char code set_vari[3][8]={"过压点  ","欠压点  ","输出电压"};
float code bili_buf[12]={200,100,100,33.3,100,16.6,100,16.6,100,16.6,41,41};  //数字的比例系数
//char code tx_mudi[3]={0x01,0x02,0x03};
char code dis_buf[4][32]={{"电池阵列电池状态充电运行逆变运行"},{"充电电压充电电流MPPT电压MPPT电流"},
{"A 相电压B 相电压C 相电压输出功率"},{"市电电压市电电流电池电压电池温度"}};
char code dis_buf1[3][8]={" V A VkW"," V V VkW",{0x20,0x56,0x20,0x41,0x20,0x56,0x00,0x00}};
char code dis_buf21[3][6]={"有输出","无输出","MPPT"};
char code dis_buf22[4][4]={"正常","欠压","过充","浮充"};
char code dis_buf23[3][4]={"正常","待机","故障"}; //第三组数据与第四组数据一样,定义一个即可
char code dis_buf3[4]="::::";
char code cd_err[9]={"充电故障:"};
char code cd_err1[10]={"电池板过压"};
char code cd_err2[10]={"电池板欠压"};
char code nb_err[9]={"逆变故障:"};
char code nb_err1[8]={"输入欠压"};
char code nb_err2[8]={"输出过载"};
char code sys_wait[16]={"系统处于待机状态"};
char code crc_table[256]={0x00,0x07,0x0e,0x09,0x1c,0x1b,0x12,0x15,0x38,0x3f,0x36,0x31,0x24,0x23,0x2a,0x2d,
                         0x70,0x77,0x7e,0x79,0x6c,0x6b,0x62,0x65,0x48,0x4f,0x46,0x41,0x54,0x53,0x5a,0x5d,
                         0xe0,0xe7,0xee,0xe9,0xfc,0xfb,0xf2,0xf5,0xd8,0xdf,0xd6,0xd1,0xc4,0xc3,0xca,0xcd,
                         0x90,0x97,0x9e,0x99,0x8c,0x8b,0x82,0x85,0xa8,0xaf,0xa6,0xa1,0xb4,0xb3,0xba,0xbd,
                         0xc7,0xc0,0xc9,0xce,0xdb,0xdc,0xd5,0xd2,0xff,0xf8,0xf1,0xf6,0xe3,0xe4,0xed,0xea,
                         0xb7,0xb0,0xb9,0xbe,0xab,0xac,0xa5,0xa2,0x8f,0x88,0x81,0x86,0x93,0x94,0x9d,0x9a,
                         0x27,0x20,0x29,0x2e,0x3b,0x3c,0x35,0x32,0x1f,0x18,0x11,0x16,0x03,0x04,0x0d,0x0a,
                         0x57,0x50,0x59,0x5e,0x4b,0x4c,0x45,0x42,0x6f,0x68,0x61,0x66,0x73,0x74,0x7d,0x7a,
                         0x89,0x8e,0x87,0x80,0x95,0x92,0x9b,0x9c,0xb1,0xb6,0xbf,0xb8,0xad,0xaa,0xa3,0xa4,
                         0xf9,0xfe,0xf7,0xf0,0xe5,0xe2,0xeb,0xec,0xc1,0xc6,0xcf,0xc8,0xdd,0xda,0xd3,0xd4,
                         0x69,0x6e,0x67,0x60,0x75,0x72,0x7b,0x7c,0x51,0x56,0x5f,0x58,0x4d,0x4a,0x43,0x44,
                         0x19,0x1e,0x17,0x10,0x05,0x02,0x0b,0x0c,0x21,0x26,0x2f,0x28,0x3d,0x3a,0x33,0x34,
                         0x4e,0x49,0x40,0x47,0x52,0x55,0x5c,0x5b,0x76,0x71,0x78,0x7f,0x6a,0x6d,0x64,0x63,
                         0x3e,0x39,0x30,0x37,0x22,0x25,0x2c,0x2b,0x06,0x01,0x08,0x0f,0x1a,0x1d,0x14,0x13,
                         0xae,0xa9,0xa0,0xa7,0xb2,0xb5,0xbc,0xbb,0x96,0x91,0x98,0x9f,0x8a,0x8d,0x84,0x83,
                         0xde,0xd9,0xd0,0xd7,0xc2,0xc5,0xcc,0xcb,0xe6,0xe1,0xe8,0xef,0xfa,0xfd,0xf4,0xf3};
unsigned char code sunoasis[1024]=
{
/*------------------------------------------------------------------------------
;  源文件 / 文字 : 来自剪贴板!字模
;  宽×高(像素): 128×42
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0xF4,0xE0,0x00,0x3F,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF6,0xFF,0xBC,0x00,0x7F,0xF0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xEC,0x80,0x00,0x0F,0x00,0x7F,0xF0,0x00,
0x00,0x3F,0x60,0x00,0x00,0x00,0x01,0xCF,0xF8,0x00,0x00,0x00,0xE0,0x3F,0xE0,0x00,
0x00,0xFF,0xF0,0x00,0x00,0x00,0x06,0x37,0xFF,0x00,0x00,0x00,0xE0,0x1F,0xC0,0x00,
0x03,0xFF,0xF4,0x00,0x00,0x00,0x3C,0x7F,0xFF,0x80,0x00,0x01,0xE0,0x00,0x00,0x00,
0x03,0xFF,0xFC,0x00,0x00,0x00,0xD0,0x7F,0xFF,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,
0x03,0xF3,0xF8,0x00,0x00,0x03,0xC1,0xFD,0xBF,0x80,0x00,0x00,0xE0,0x00,0x00,0x00,
0x07,0xE3,0xFC,0x00,0x00,0x0F,0x83,0xFD,0x3F,0x80,0x00,0x00,0xA0,0x00,0x00,0x00,
0x0F,0xF1,0xFB,0xF8,0xFF,0xDF,0xD7,0x70,0x1D,0xC3,0xFF,0x05,0xEC,0x7E,0x37,0xE0,
0x0F,0xFE,0x03,0xF0,0xFE,0xBF,0xFF,0xF0,0x0F,0xFF,0xFF,0x1E,0xFE,0x7E,0x3F,0xF0,
0x0F,0xFF,0x83,0xF0,0xFB,0x7F,0xFF,0xC0,0x0F,0xDF,0xFF,0xBD,0xFD,0xFE,0xFF,0xF8,
0x07,0xFF,0xE7,0xF3,0xEF,0xFF,0xFF,0xC0,0x05,0xFF,0xFF,0xFD,0xFF,0xFE,0xFF,0xF0,
0x07,0xFF,0xFF,0xE3,0xAF,0xEF,0xFF,0x80,0x07,0xFE,0x0F,0xFD,0x1A,0xFD,0xF1,0x78,
0x02,0xFF,0xEF,0xE3,0xFF,0xF5,0xFF,0xC0,0x0B,0x6E,0x3F,0xF7,0x00,0xFB,0xFB,0x40,
0x1F,0x07,0xFF,0xC3,0xFF,0xC3,0xEF,0xC0,0x1F,0x3F,0xFF,0x3F,0xFF,0xFD,0xFF,0xE0,
0x3F,0x0F,0xFF,0x87,0xFF,0xC7,0xFE,0x80,0x7F,0xFF,0xFE,0x3F,0xFD,0xFD,0x7F,0xF0,
0x3F,0x8F,0xFF,0xC3,0xFF,0xC7,0xEF,0x80,0x7F,0xFB,0xF9,0x1F,0xFD,0xF0,0xFF,0xF0,
0x3F,0x8F,0xBF,0x87,0xFF,0x4F,0xD7,0xF7,0xFF,0xF8,0x77,0x03,0xFF,0xF8,0x17,0xF0,
0x3F,0xFF,0xDF,0xCF,0xFF,0x0F,0xEF,0xFF,0xFF,0xF8,0x3F,0xFD,0x73,0xFF,0xC7,0xE0,
0x3F,0xFF,0xDF,0xFF,0xFF,0x87,0xCF,0xF7,0x69,0xF8,0xBF,0xFD,0xFF,0xFF,0xFB,0xE0,
0x3F,0xFF,0x1F,0xEF,0xFF,0x0F,0x87,0xFF,0xE1,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xA0,
0x1B,0xFE,0x17,0xDF,0xBF,0x1F,0xC1,0xFF,0x43,0xEF,0xFC,0xFF,0xEF,0xEB,0xFE,0x80,
0x02,0xE0,0x0F,0xA0,0x40,0x0F,0x81,0xFF,0x0F,0xEC,0x7E,0x60,0x8F,0xE3,0xFB,0x00,
0x00,0x00,0x00,0xB0,0x00,0x00,0x00,0x00,0x3F,0xC0,0x00,0x0C,0x00,0x10,0xE0,0x00,
0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1A,0x00,0x00,0x03,0xDF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0E,0x00,0x00,0x0B,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0x7F,0xEC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x6F,0xFE,0x10,0x62,0x20,0x4F,0xE7,0x38,0x25,0x00,0x40,0xF7,0xC1,0x20,0xfF,
0xFD,0x81,0x54,0xFD,0x84,0xA4,0x29,0x05,0x28,0x25,0x0F,0xFE,0x94,0x41,0x20,0x01,
0x49,0x01,0x7C,0x49,0x0F,0xBA,0x0B,0xE5,0x28,0x24,0x80,0x80,0x97,0xC1,0x10,0x09,
0x29,0x0F,0x54,0x29,0x00,0x22,0xAA,0x27,0x4E,0x48,0x81,0xF8,0xA4,0x42,0x10,0xFd,
0xFD,0xE8,0xFE,0xFD,0xE7,0xBE,0x6B,0xE5,0x80,0x50,0x43,0x08,0xA4,0x44,0x48,0x01,
0x11,0x4F,0x00,0x11,0x44,0x80,0x2A,0x25,0x7C,0xCF,0xA5,0x08,0x97,0xC8,0x46,0x7D,
0xFD,0x45,0x7C,0xFD,0x47,0xA4,0x4B,0xE7,0x44,0x44,0x89,0xF8,0x95,0x20,0x80,0x45,
0x59,0x4F,0x54,0x59,0x44,0xB8,0x50,0x85,0x28,0x44,0x81,0x08,0xF5,0x40,0xA0,0x45,
0x55,0x45,0x7C,0x55,0x47,0xA2,0xD2,0xC5,0x10,0x44,0x81,0xF8,0x84,0x81,0x10,0x7D,
0x92,0x49,0x54,0x92,0x44,0xA2,0x64,0xA9,0x28,0x48,0x81,0x08,0x85,0x42,0x38,0x01,
0x34,0x46,0xFE,0x34,0x45,0xBE,0x4B,0xAB,0xC6,0x53,0x81,0x18,0x86,0x27,0xC8,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//char code sn=0x01;
//char code du[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x3A,0x05,0x46,0x07,0x82,0x00,0x80,
 //                 0x00,0x80,0x00,0x80,0x00,0x82,0x00,0x42,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00};
char code du[32]={0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x74,0x0A,0xFC,0x0F,0x84,0x01,0x80,0x01,0x80,
                  0x01,0x80,0x01,0x84,0x00,0xFC,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

⌨️ 快捷键说明

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