📄 dis_key.c
字号:
************************************************************************************/
void displ_asc( unsigned char x , unsigned char y , unsigned char *asc , unsigned char face)
{
unsigned char n,length;
length = *asc++;
for( n=0; n<length; n++)
{
if(face) { disp816(x,y,*asc++); }
else { disp816n(x,y,*asc++);}
x+=8;
}
}
/***********************************************************************************
显示汉字程序:
指定坐标显示16*16(字符)
x-(汉字列坐标0=< x <= 7),y-(字符行坐标0=< y <=7),
************************************************************************************/
void disp_chn( unsigned char x , unsigned char y , unsigned char chn )
{
unsigned char ii, k;
unsigned int jj ;
if( x < 64 ) { LCD1 = 1 ; LCD2 = 0 ; } // 左半屏幕
else { LCD1 = 0 ; LCD2 = 1 ; x -= 64 ; } // 右半屏幕
for( k=0; k<2; k++)
{
write_com( PAGE_ADD + y +k) ;
write_com( COL_ADD + x ) ;
jj =( chn ) * 32 + 1 -k ; // 取字库
for( ii = 0x00 ; ii < 0x10 ; ii ++ )
{ write_data ( chn16 [ jj ] ) ;
jj += 0x02 ;
}
}
}
/***********************************************************************************
显示汉字程序:(反显)
指定坐标显示16*16(字符)
x-(汉字列坐标0=< x <= 7),y-(字符行坐标0=< y <=7),
************************************************************************************/
void disp_chnn( unsigned char x , unsigned char y , unsigned char chn )
{
unsigned char ii, k;
unsigned int jj ;
if( x < 64 ) { LCD1 = 1 ; LCD2 = 0 ; } // 左半屏幕
else { LCD1 = 0 ; LCD2 = 1 ; x -= 64 ; } // 右半屏幕
for( k=0; k<2; k++)
{
write_com( PAGE_ADD + y +k) ;
write_com( COL_ADD + x ) ;
jj =( chn ) * 32 + 1 - k ; // 取字库
for( ii = 0x00 ; ii < 0x10 ; ii ++ )
{ write_data ( chn16 [ jj ]^0xff );
jj += 0x02 ;
}
}
}
/******************************************************************************************
显示多字程序:
指定坐标显示16*16(字符),首字坐标(x,y),
x-(字符列坐标0=< x <=7),y-(字符行坐标0=< y <=7),
face为1字符正显, face为0字符反显
*******************************************************************************************/
void displ_chn( unsigned char x , unsigned char y , unsigned char *chn , unsigned char face)
{
unsigned char m,length;
length = *chn++;
for(m=0; m<length; m++)
{
if(face) { disp_chn( x , y ,*chn++ ); }
else { disp_chnn( x , y ,*chn++); }
x +=16;
}
}
/******************************************************************************************
数据转换成ASCII字符码:
length-字符长度,dot-小数点位,*fix-字符串,value-转换值,zero-1为前消零
*******************************************************************************************/
void fix_asc(unsigned char length,unsigned char dot,unsigned char *fix, unsigned int value)
{
unsigned char k;
unsigned int mid;
mid = value;
msec[0] = length;
for(k=length;k>0;k--)
{
if((dot==0) || (k!=(length - dot)))
{
msec[k] = (mid%10 + 0x30);
mid= mid/10;
}
else
{
msec[k] = '.';
}
}
for(k=0;k<=length;k++)
{
*fix++=msec[k];
}
}
unsigned char comtx(unsigned char nData)
{/*函数返回:1:成功 ; 0:不成功*/
unsigned int i=0;
TI = 0;
SBUF = nData;
while ((TI==0)&&(i++<2000));
return TI;
}
void spidout ( unsigned char ch )
{
unsigned char xi ,yi ;
for ( xi=0; xi<8; xi++)
{
if ((ch & 0x80) == 0) { MOSI = 0; }
else { MOSI = 1; }
SCK = 1;
for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
ch = ch << 1;
SCK = 0;
for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
}
}
unsigned char spidin()
{
unsigned char xi,yi,ch;
ch = 0;
for ( xi=0; xi<7; xi++)
{
//MISO = 1;
if (MISO == 1) { ch ++; }
SCK = 1;
ch = ch << 1;
for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
SCK = 0;
for ( yi = 0x00 ; yi < 200 ; yi ++ ) ;
}
MISO = 1;
if (MISO == 1)
ch ++;
return ch;
}
void spiwcmd ( unsigned char cmd )
{
unsigned char xi ;
//SPIEN = 1 ; //允许SPI总线
CSPI = 0 ; // nss = 0
SCK = 0;
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
spidout(cmd);
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
CSPI = 1 ;
//SPIEN = 0 ;
}
void spiwsts ( void )
{
unsigned char xi ;
//SPIEN = 1 ; //允许SPI总线
CSPI = 0 ; // nss = 0
SCK = 0;
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
spidout(SPI_WRSR);
spidout(0x08);
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
CSPI = 1 ;
//SPIEN = 0 ;
}
/*unsigned char spirsts ( void )
{
unsigned char xi ;
unsigned char ch;
//SPIEN = 1 ;
CSPI = 0 ; // nss = 0
SCK = 0;
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
spidout(SPI_RDSR);
ch = spidin();
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
CSPI = 1 ;
return ch ;
}*/
void wrbytespi ( unsigned int address , unsigned char dat )
{
unsigned char xi ;
spiwcmd ( SPI_WREN ) ;
//SPIEN = 1 ; // 允许SPI总线
CSPI = 0 ; // nss = 0
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
//SPIF = 0;
spidout(SPI_WRITE) ;
spidout(address / 0x100) ;
spidout(address % 0x100) ;
spidout(dat) ;
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
CSPI = 1 ;
//SPIEN = 0 ;
//SPIF = 0 ;
}
unsigned char rdbytespi ( unsigned int address )
{
unsigned char xi,dat ;
//SPIEN = 1 ; // 允许SPI总线
CSPI = 0 ; // nss = 0
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
//SPIF = 0;
spidout(SPI_READ) ;
spidout(address / 0x100) ;
spidout(address % 0x100) ;
dat = spidin();
for ( xi = 0x00 ; xi < 200 ; xi ++ ) ;
CSPI = 1 ;
//SPIEN = 0 ;
//SPIF = 0 ;
return dat ;
}
void send(unsigned char l)
{
int i,check0;
data_tx[0]=0xeb; data_tx[1]=0x90;
check0=0xeb;
for(i=1;i<l-1;i++) check0=check0^data_tx[i];
data_tx[l-1]=check0;
for(i=0;i<l;i++) comtx(data_tx[i]);
}
void rx_run()
{
unsigned char i;
switch(data_rx[3])
{
case 0x3:
data_rx[3]=0;
for(i=0;i<12;i++) { dataN[i]=data_rx[2*i+9]+data_rx[2*i+10]*256; }
for(i=0;i<2;i++)
{ bhzt[i]=data_rx[i+5];
kgzt[i]=data_rx[i+7];
}
if(data_rx[32]==1) { rsymbol |= b1_msk; }//召SOE
break;
case 0x4:
data_rx[3]=0;
data_rx[5] += 0x10;//b7_msk置位,保护soe,0x11起始
deal_soe();
break;
case 0x5:
data_rx[3]=0;
deal_soe();
break;
case 0x6:
data_rx[3]=0;
rsymbol &= (~b1_msk);//召SOE停止
break;
case 0xc0:
data_rx[3]=0;
for(i=0;i<14;i++) { dz[i]=data_rx[2*i+5]+data_rx[2*i+6]*256; }
for(i=0;i<4;i++) { kzz[i]=data_rx[i+33]; }
break;
case 0xd0:
data_rx[3]=0;
if(data_rx[5]==0x12)
{ page=36; page_change=1; }
break;
default:
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -