📄 modbus.c
字号:
*/
uchar code ChannelData[48]={
0x25,0x21,0x24,
0x20,0x37,0x31,
0x27,0x23,0x22,
0x26,0x35,0x33,
0x32,0x36,0x2f,
0x2b,0x2c,0x2e,
0x34,0x30,0x2d,
0x29,0x2a,0x28,
0x05,0x01,0x04,
0x00,0x17,0x11,
0x07,0x03,0x02,
0x06,0x15,0x13,
0x12,0x16,0x0f,
0x0b,0x0c,0x0e,
0x14,0x10,0x0d,
0x09,0x0a,0x08,
};
uchar code Mainpageface[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0xC0,
0xC0,0xE0,0xE0,0xE0,0xE0,0xE0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xC0,0xE0,
0xE0,0xE0,0xE0,0xF0,0xF0,0xF8,0xFC,0xFC,0xFE,0xFE,0xFF,0xFC,0x70,0x60,0x40,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x60,0xF0,0xF0,0xF8,0xF8,0xFC,0xFE,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x1F,0x9F,0x9F,0x9F,0x1F,0x9F,
0x9F,0x9F,0xDF,0xDE,0xD8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,
0xFC,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,0xFE,0xFF,0xFF,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,
0x1F,0x3F,0x1F,0x1F,0x0F,0x8F,0x07,0x87,0xC3,0xC3,0xC1,0xE0,0xE0,0xF0,0xF0,0xFC,
0xFC,0xF0,0xC0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x03,0x17,0x1F,0x1F,0x0F,0x87,0x83,0xC7,0xE3,0xF1,0xF1,0xF1,0xF8,
0xF8,0xFC,0xFC,0xFE,0xFE,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,
0x7F,0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7D,0x73,0x71,0xF3,0xF1,0xF3,0xF1,0xF3,
0xF1,0xF3,0xF1,0xF1,0xF1,0xF9,0xF1,0xF8,0xF8,0xF8,0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,
0xFE,0xFE,0xFF,0xFF,0x7F,0xFF,0x7F,0x7F,0x3F,0x3F,0x1F,0x1F,0x1F,0x0F,0x0F,0x07,
0x07,0x83,0x81,0xC3,0xC1,0xE0,0xE0,0xA0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x0F,0x1F,0x7F,0x7F,0x7F,0x3F,0x1F,
0x1F,0x0F,0x8F,0x8F,0x87,0xC7,0xC3,0xE3,0xF3,0xF3,0xF1,0xF8,0xF9,0xF8,0xF8,0xFC,
0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFE,0xFC,0xFE,0xFC,0xFE,0xFD,0xFF,0xF7,0xE7,
0xC7,0xC7,0xC7,0xC7,0x87,0xC3,0xC7,0xC3,0xC3,0xC3,0xC3,0xC3,0xC1,0xE1,0xE1,0xE1,
0xE1,0xE1,0xF1,0xF0,0xF0,0xF8,0xF8,0xF8,0xFC,0xFC,0xFC,0xFE,0xFE,0xFE,0xFF,0xFF,
0xFF,0xFF,0x7F,0x3F,0x3F,0x3F,0x1F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x3E,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x3F,0x3F,0x3F,0x1F,0x1F,0x1F,0x0F,
0x0F,0x0F,0x07,0x07,0x07,0x07,0x07,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
0x03,0x03,0x07,0x0F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x0F,0x1F,0x0F,0x1F,0x0F,
0x0F,0x0F,0x07,0x0F,0x07,0x07,0x07,0x07,0x07,0x03,0x01,0x01,0x01,0x01,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x80,0x80,0x80,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,
0xC0,0x82,0xC3,0x83,0xC1,0x80,0xC0,0x80,0xC0,0x80,0x80,0x80,0x80,0xC0,0x80,0x80,
0x00,0x00,0x00,0x80,0x80,0x80,0xC0,0x80,0xC0,0x80,0x80,0x80,0x00,0x00,0x00,0x00,
0x00,0x80,0x80,0xC0,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
0xC0,0x80,0xC0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0xC0,0x80,
0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0x80,0x80,0x80,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xC0,0x80,0xC0,0x80,0xC0,0x00,0x00,0x00,
0x00,0x22,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF2,0xF0,0xF8,0xFC,0xFE,0xFF,0xFF,
0xFF,0xFF,0xCF,0x87,0x07,0x03,0x01,0x01,0x01,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xF7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0x47,0x02,
0x01,0x00,0x00,0x01,0x03,0x07,0x0F,0x3F,0x3F,0xFF,0xFF,0xFF,0xFE,0xFC,0xFC,0xFE,
0xFF,0xFF,0xFF,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00,0x00,0x00,0x00,0xBF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x20,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFE,0xFC,0xF8,0xF0,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
0x00,0x22,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x27,0x07,0x01,0x03,0x0F,0x0F,0x3F,
0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x70,0x60,0x40,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7F,
0x7F,0x7F,0x7F,0x7F,0x7D,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x79,0x78,0x38,
0x00,0x00,0x40,0x60,0x70,0x78,0x7C,0x7E,0x7F,0x7F,0x7F,0x3F,0x1F,0x0F,0x07,0x1F,
0x3F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7C,0x78,0x60,0x40,0x00,0x00,0x00,0x0A,0x1F,0x1F,
0x3F,0x3F,0x7F,0x7F,0x7F,0x7C,0x78,0x78,0x78,0x78,0x7C,0x7F,0x7F,0x3F,0x3F,0x3F,
0x1F,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x28,
0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x00,0x00,0x00,
};
void LCD_C_D(bit flag,uchar xdata ldata) /*flag=1 con flag=0 data*/
{
uchar xdata i;
if(flag)
{
alarm_uart_data |= WRITE_CMD;
HandleEnable = alarm_uart_data;
alarm_uart_data &= ~WRITE_CMD;
}
else
{
alarm_uart_data |= WRITE_DATA;
HandleEnable = alarm_uart_data;
alarm_uart_data &= ~WRITE_DATA;
}
switch (l_cs)
{
case 1 :
Cs1_Enable = ldata;
break;
case 2 :
Cs2_Enable = ldata;
break;
case 3 :
Cs_Enable = ldata;
break;
default:
break;
}
alarm_uart_data |= READ_DATA;
HandleEnable = alarm_uart_data;
alarm_uart_data &= ~READ_DATA;
for ( i = 0; i < 10 ;i++) ;
}
void display_Mainpageface(uchar x_add,uchar y_add,uchar code *ptr)
{
unsigned int i;
unsigned char uRow,uCol;
unsigned int temp;
unsigned char n =0;
uRow = x_add+0xb8;
uCol = (y_add < 4 ? y_add : y_add-4)*16+0x40;
l_cs = (uchar)(y_add < 4)|(1<<(uchar)(!(y_add < 4)));
LCD_C_D(1,uRow);
LCD_C_D(1,uCol);
for( i =0;i<8;i++ )
{
for(temp=0;temp<128;temp++)
{
if ( (temp >= 64) && (n==0) )
{
n =1;
uCol -=0x40;
l_cs = 0x02;
LCD_C_D(1,uRow+i);
LCD_C_D(1,uCol);
}
LCD_C_D(0,*(ptr+(temp+128*i)));
// LCD_C_D(0,*(ptr+temp));
uCol++;
}
l_cs = 0x01;
n =0;
uCol =0x40;
LCD_C_D(1,uRow+1+i);
LCD_C_D(1,uCol);
}
}
//****************************************液晶显示FLASH****************
void display_lcd(uchar x_add,uchar y_add,uchar code *ptr,uchar opt)
{
unsigned char c1,c2;
unsigned char j,k,i=0;
unsigned char n =0;
unsigned char uRow,uCol;
unsigned char temp,uLen=0;
uRow = x_add*2+0xb8;
uCol = (y_add < 4 ? y_add : y_add-4)*16+0x40;
l_cs = (uchar)(y_add < 4)|(1<<(uchar)(!(y_add < 4)));
// L_CS1 = (y_add < 4);
// L_CS2 = !(y_add < 4);
LCD_C_D(1,uRow);
LCD_C_D(1,uCol);
while ( (uchar)ptr[uLen] >= 0x10 ){uLen++;}; //探测字串长度
while(i<uLen)
{
c1 = ptr[i];
c2 = ptr[i+1];
if ( c1 >128 )
{
for(j=0;j<sizeof(Cdotlib)/sizeof(Cdotlib[0]);j++) // 查找定位
{
if((c1 == Cdotlib[j].Index[0]) && (c2 == Cdotlib[j].Index[1]))
break;
}
if ( opt >0 )
{
for(k=0;k<2;k++) // 分16行输出 显示
{
for(temp=0;temp<16;temp++)
{
LCD_C_D(0,Cdotlib[j].Msk[temp + k*16]);
}
LCD_C_D(1,uRow+1);
LCD_C_D(1,uCol);
}
}
else
{
for(k=0;k<2;k++) // 分16行输出 反显
{
for(temp=0;temp<16;temp++)
{
LCD_C_D(0,~(Cdotlib[j].Msk[temp + k*16]));
}
LCD_C_D(1,uRow+1);
LCD_C_D(1,uCol);
}
}
uCol +=16;
i++;
}
else
{
if ( opt > 0 )
{
if (c1 >= 0x10)
{
for (k =0; k <2; k++)
{
for(j=0;j<8;j++)
{
LCD_C_D(0,ASC_MSK[(c1-0x20)*16 +j+(k*8)]);
}
LCD_C_D(1,uRow+1);
LCD_C_D(1,uCol);
}
}
}
else
{
if (c1 >= 0x10)
{
for (k =0; k <2; k++)
{
for(j=0;j<8;j++)
{
LCD_C_D(0,~(ASC_MSK[(c1-0x20)*16 +j+(k*8)]));
}
LCD_C_D(1,uRow+1);
LCD_C_D(1,uCol);
}
}
}
uCol +=8;
}
if ( ((uCol-0x40) >=64) && (n==0) )
{
n =1;
uCol -=0x40;
// L_CS1 = 0;
// L_CS2 = 1;
l_cs = 0x02;
}
LCD_C_D(1,uRow);
LCD_C_D(1,uCol);
i++;
}
}
//****************************************液晶显示RAM****************
void DrawString(uchar x_add,uchar y_add,uchar *str,uchar pra,uchar opt,uchar att)
{
uchar i=0,c1,k;
uchar n =0;
uchar uRow,uCol;
uchar j;
uRow = x_add*2+0xb8;
uCol = (y_add < 4 ? y_add : y_add-4)*16+0x40;
l_cs = (uchar)(y_add < 4)|(1<<(uchar)(!(y_add < 4)));
LCD_C_D(1,uRow);
LCD_C_D(1,uCol);
for( i=0; i<pra; i++ )
{
c1 = str[i];
if ( opt != i )
{
if (c1 >= 0x10)
{
for (k =0; k <2; k++)
{
for(j=0;j<8;j++)
{
LCD_C_D(0,ASC_MSK[(c1-0x20)*16 +j+(k*8)]);
}
LCD_C_D(1,uRow+1);
LCD_C_D(1,uCol);
}
}
}
else
{
if (c1 >= 0x10)
{
for (k =0; k <2; k++)
{
for(j=0;j<8;j++)
{
LCD_C_D(0,~(ASC_MSK[(c1-0x20)*16 +j+(k*8)]));
}
LCD_C_D(1,uRow+1);
LCD_C_D(1,uCol);
}
}
}
if ( (i+1) ==att )
{
uCol +=8;
if ( ((uCol-0x40) >=64) && (n==0) )
{
n =1;
uCol -=0x40;
l_cs = 0x02;
}
LCD_C_D(1,uRow);
LCD_C_D(1,uCol);
c1 = 0x2e;
for (k =0; k <2; k++)
{
for(j=0;j<8;j++)
{
LCD_C_D(0,(ASC_MSK[(c1-0x20)*16 +j+(k*8)]));
}
LCD_C_D(1,uRow+1);
LCD_C_D(1,uCol);
}
}
uCol +=8;
if ( ((uCol-0x40) >=64) && (n==0) )
{
n =1;
uCol -=0x40;
l_cs = 0x02;
}
LCD_C_D(1,uRow);
LCD_C_D(1,uCol);
}
}
//****************************************液晶显示RAM-反显****************
void DrawString_F(uchar x_add,uchar y_add,uchar *str,uchar pra ,uchar att)
{
uchar i=0,c1,k;
uchar n =0;
uchar uRow,uCol;
uchar j;
uRow = x_add*2+0xb8;
uCol = (y_add < 4 ? y_add : y_add-4)*16+0x40;
l_cs = (uchar)(y_add < 4)|(1<<(uchar)(!(y_add < 4)));
LCD_C_D(1,uRow);
LCD_C_D(1,uCol);
for( i=0; i<pra; i++ )
{
c1 = str[i];
if (c1 >= 0x10)
{
for (k =0; k <2; k++)
{
for(j=0;j<8;j++)
{
LCD_C_D(0,~ASC_MSK[(c1-0x20)*16 +j+(k*8)]);
}
LCD_C_D(1,uRow+1);
LCD_C_D(1,uCol);
}
}
if ( (i+1) ==att )
{
uCol +=8;
if ( ((uCol-0x40) >=64) && (n==0) )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -