📄 dis_xl.c
字号:
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];
}
}
/******************************************************************************************
ASCII字符码转换成数据:
*fix-字符串,value-转换值
*******************************************************************************************/
void asc_fix(unsigned char *fix, unsigned int *val)
{
unsigned char k,ch,length;
unsigned int mid;
length = *fix++;
mid=0;
for(k=0;k<length;k++)
{
if(*fix!='.')
{
ch =*fix - 0x30;
mid = (mid*10 + ch);
}
fix++;
}
*val = mid;
}
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 length)
{
int i,check0;
data_tx[0]=0xeb;
data_tx[1]=0x90;
rsymbol &=(~b0_msk);
check0=0xeb;
for(i=1;i<length-1;i++)
{
check0=check0^data_tx[i];
}
data_tx[length-1]=check0;
for(i=0;i<length;i++)
{
comtx(data_tx[i]);
}
}
void rx_run()
{
unsigned char i;
switch(data_rx[3])
{
case 0x3:
for(i=0;i<19;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[48] & b0_msk)
{
rsymbol |= b1_msk; //召SOE
}
break;
case 0x4:
case 0x5:
data_rx[5] -= 0x10;//信号量soe:0x10~0x1f;保护soe:0x21起始
deal_soe();
break;
case 0x6:
rsymbol &= (~b1_msk);//召SOE停止
break;
case 0xc0:
for(i=0;i<18;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+41]; }
address = data_rx[37];
if(page!=0)
{
rsymbol &=(~b3_msk);
p_x=8;
p_y=0;
page=31;
page_change=1;
}
break;
case 0xd0:
if(data_rx[5]==0x12)
{
tpin = ghcg;
}
else
{
tpin = gherr;
}
page=33;
page_change=1;
rsymbol &=(~b5_msk);
break;
default:
break;
}
rsymbol |= b0_msk;
}
void deal_soe()
{
unsigned char k;
if((w_p==r_p)&&(event==1))
{
r_p++;
r_p &=0xf;
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -