📄 19264cv0_1.c.bak
字号:
LCDDIIO=1;
p1tune(mcs138=RAMCS);
temphi = *(discodeprt+j+i*24);
if(temphi==0x0a)
{
for(;i<4;i++)
{ for(;j<24;j++)
Dispchar(i*2,j,0x20,0);
j=0;
}
break;
}
if(temphi<0x7f)
Dispchar(i*2,j,temphi,0);
else
{if(j==23)
{Dispchar(i*2,j,0x20,0);continue;}
templow=*(discodeprt+(++j)+i*24);
disromdata(temphi,templow);
disdatatune();
Dispchin(i*2,(j-1),0);
//Dispchin(i*2,(j-1),temphi,templow,0);
}
}
Feedingdog();
LCDRWIO=1;
LCDDIIO=1;
p1tune(mcs138=RAMCS);
for(j=0,temphi=0;j<24;j++)
{ // 检测此行有多少个单字节数
templow=*(discodeprt+j+i*24);
if(templow<0x7f) temphi++;
}
templow = temphi%2; //根据单字节数 调整指针是否减1
if(templow==1)discodeprt--;
}
}
*/
/*void disnonews(void)
{ // 显示"无 数 据 " 信息
//extern uchar code eaxmine2;
uchar data i=0,j=0,temp=0;
displaynop(); lcdclose(); lcdiniton();//开显示
disromdata(0xce,0xde);
disdatatune();
Dispchin(2,6,0);
// Dispchin(2,6,0xce,0xde,0);
disromdata(0xca,0xfd);
disdatatune();
Dispchin(2,10,0);
// Dispchin(2,10,0xca,0xfd,0);
disromdata(0xbe,0xdd);
disdatatune();
Dispchin(2,14,0);
// Dispchin(2,14,0xbe,0xdd,0);
for(i=0,j=4;i<16;i++)
{ temp = eaxmine2[i++];
disromdata(temp,eaxmine2[i]);
disdatatune();
Dispchin(5,j,0); j +=2;
}
}
*/
void dispnewsnumb(void)
{ // 显示接收信息的条数、以及未读信息的条数。
uchar data temp=0;
uchar * discodeprt;
extern uchar code screen1[24];
discodeprt=screen1;
displayline(6,discodeprt,0);
temp=InforTotal; //总的信息计数器
Dispchar(6,4,(((temp/10)|0x30)),0);
Dispchar(6,5,((temp%10)|0x30),0);
temp=NoReadInfoCnt;//未读信息计数器
Dispchar(6,14,((((temp/10)&0x0f)|0x30)),0);
Dispchar(6,15,(((temp%10)&0x0f)|0x30),0);
}
void dispdate(void)
{ // 显示 “年 月 日”
uchar data i,j,temp;
Feedingdog();
for (i=0,j=2;i<9;i++)
{
if((i==2)||(i==6)||(i==8))
{ if(i==8)
Dispchar(0,i+7,0x20,0);
if(i==2)
{ //Dispchar(0,i+7,0x2f,0); // 显示“/”
disromdata(0xd4,0xc2); // 显示“月”
disdatatune();
Dispchin(0,i+7,0);i++;
}
if(i==6)
{ //Dispchar(0,i+7,0x2f,0); // 显示“/”
disromdata(0xc8,0xd5); // 显示“月”
disdatatune();
Dispchin(0,i+7,0);i++;
}
}
else
{
LCDRWIO = 1;
LCDDIIO = 1;
p1tune(mcs138=RAMCS);
temp = yymmtt[j++];
if((j==3)&(temp==0x30))
temp=0x20;
Dispchar(0,(++i)+6,temp,0);
LCDRWIO = 1;
LCDDIIO = 1;
p1tune(mcs138=RAMCS);
temp = yymmtt[j++];
Dispchar(0,i+7,temp,0);
}
}
}
void disptime(void)
{ // 显示时间
uchar data i,j,temp;
Feedingdog();
for (i=9,j=6;i<17;i++)
{ if((i==11)||(i==14))
Dispchar(0,i+7,0x3a,0); //显示“:"
else
{
LCDRWIO=1;
LCDDIIO=1;
p1tune(mcs138=RAMCS);
temp = yymmtt[j++];
Dispchar(0,(i++)+7,temp,0);
LCDRWIO=1;
LCDDIIO=1;
p1tune(mcs138=RAMCS);
temp = yymmtt[j++];
Dispchar(0,i+7,temp,0);
}
} // 以上是时间显示
}
//-----------------------------------------------
/*void dispscreenchin(void)
//功能-------问候语位置显示。如果有来电显示来电号码//
//-------如果无来电显示“伊爱车载显示终端”字样//
{
extern uchar code jian1nemu[4][24];
//uchar data i,j;
//if(!comeingtelep) // 显示“伊爱车载显示终端”字样
displayline(3,&jian1nemu[jiannumb][0],0);
} */
//---------------------------------------
void display( uchar * dataprt,uchar number)
{
uchar data i,j,k,temphi,templow,temp;
bit tempsign=1;
uchar * discodeprt= dataprt;
LCDRWIO=1;
LCDDIIO=1;
p1tune(mcs138=RAMCS);
for(i=0;i<4;i++)
{ Feedingdog();
for(j=0;j<24;j++)
{
temphi=*(discodeprt++);
if (temphi<=0x7f)
{
temp=(i<<1);
Dispchar(temp,j,temphi,0);
}
else
{
templow=*(discodeprt++);
if(j!=23)
{
j++;
disromdata(temphi,templow);
disdatatune();
Dispchin(i*2,j-1,0);
//Dispchin(i*2,j-1,temphi,templow,0);
LCDDIIO=1;
LCDRWIO=1;
p1tune(mcs138=RAMCS);
}
else
{
discodeprt--;discodeprt--;
k=0x20;
Dispchar(i<<1,j,k,0);
}
}
}
if(i==number)
{ for(i=i+1;i<4;i++)
{displayline3(i*2);}
}
}
}
//---------------------------------------
void displayline(uchar xpost,uchar * discodeprt,bit tempsign)
{ // 显示一整行信息
uchar data i,temphi,templow;
for(i=0;i<24;i++)
{ LCDDIIO=1;
LCDRWIO=1;
p1tune(mcs138=RAMCS); //mcs138
temphi = *(discodeprt++);
if(temphi<=0x7f)
Dispchar(xpost,i,temphi,tempsign);
else
{
templow = *(discodeprt++);
disromdata(temphi,templow);
disdatatune();
Dispchin(xpost,i++,tempsign);
}
}
}
/*void displayline5(uchar xpost,uchar * discodeprt,bit tempsign)//显示XDATA的数据
{ // 显示一整行信息
uchar data i,temphi,templow;
for(i=0;i<24;i++)
{ LCDDIIO=1;
LCDRWIO=1;
p1tune(mcs138=RAMCS);
temphi = *(discodeprt++);
if(temphi<=0x7f)
Dispchar(xpost,i,temphi,tempsign);
else
{
templow = *(discodeprt++);
disromdata(temphi,templow);
disdatatune();
Dispchin(xpost,i++,tempsign);
}
}
}
*/
////-------显示左半行--------------------
void disp_halfline(uchar xpost,uchar * discodeprt,bit tempsign)
{
uchar data i,temphi,templow;
for(i=0;i<12;i++)
{ LCDDIIO=1;
LCDRWIO=1;
p1tune(mcs138=RAMCS);
temphi = *(discodeprt++);
if(temphi<=0x7f)
Dispchar(xpost,i,temphi,tempsign);
else
{
templow = *(discodeprt++);
disromdata(temphi,templow);
disdatatune();
Dispchin(xpost,i++,tempsign);
}
}
}
////---------------显示右半行--------------------------------
void disp_halfline1(uchar xpost,uchar * discodeprt,bit tempsign)
{
uchar data i,temphi,templow;
for(i=12;i<24;i++)
{ LCDDIIO=1;
LCDRWIO=1;
p1tune(mcs138=RAMCS);
temphi = *(discodeprt++);
if(temphi<=0x7f)
Dispchar(xpost,i,temphi,tempsign);
else
{
templow = *(discodeprt++);
disromdata(temphi,templow);
disdatatune();
Dispchin(xpost,i++,tempsign);
}
}
}
//---------------------------------------
void dispzi(uchar xpost,uchar ypost,uchar *discodeprt)
{
uchar data temphi,templow;
LCDDIIO=1;
LCDRWIO=1;
p1tune(mcs138=RAMCS);
temphi=*(discodeprt++);
templow=*(discodeprt);
disromdata(temphi,templow);
disdatatune();
Dispchin(xpost,ypost,0);
}
bit lcdstate(void)
{
uchar data temp;
LCDE=1;
LCDRWIO=1;
LCDDIIO=0;
time_10ms = 0; //时间监测 1S内
time1ssign = 0;
temp = P0;
temp &= 0x80;
while(temp!=0)
{
temp=P0;
temp &= 0x80;
if(time1ssign==1)
{CY=1;break;}
}
CY=0;
return(CY);
}
//-----------------------
bit lcdwcommd(uchar i)
{
//C LCDWR=0 DI=0 LCDE下降沿作用写入指令IR
p1tune(mcs138);
P0=0xff;
CY=lcdstate();
while(CY) CY=lcdstate();
//return(CY); //状态检测是否忙?
LCDE=1;
LCDDIIO=0;
LCDRWIO=0;
P0=i;
LCDE=0;
LCDDIIO=1;
CY=0;
return(CY);
}
//-----------------------
bit lcdwdata(uchar i)
{
// LCDWR=0 DI=1 LCDE下降沿作用写入数据IR
// ES=0; //TEST**
// TI=0;
// SBUF=A
// while(TI==0);
// return; //TEST**
LCDE=1;
LCDRWIO=0;
LCDDIIO=1;
P0=i;
LCDE=0;
LCDRWIO=1;
return(0);
}
//-----------------------
void lcdiniton(void)//开启显示功能
{
mcs138 = LCDCS1;
CY = lcdwcommd(0x3f);
mcs138 = LCDCS2;
CY = lcdwcommd(0x3f);
mcs138 = LCDCS3;
CY = lcdwcommd(0x3f);
}
void lcdclose(void)//关显示
{
mcs138 = LCDCS1;
CY = lcdwcommd(0x3e);
mcs138 = LCDCS2;
CY = lcdwcommd(0x3e);
mcs138 = LCDCS3;
CY = lcdwcommd(0x3e);
}
void lcdinitz(void) //设置显示初始行为0行。
{
mcs138 = LCDCS1;
CY = lcdwcommd(0xc0);
mcs138 = LCDCS2;
CY = lcdwcommd(0xc0);
mcs138 = LCDCS3;
CY = lcdwcommd(0xc0);
}
/***************************************************************
Disp assic char:在指定位置显示1个西文字符,8*16
xpost:离左上角的横向字符数(0-3 4行)
ypost:离左上角的众向字符数(0-23 24个assic字符)
tempsign:反显标志,1:反显;0:正显。 2004.06.10 HUJIE ADD
locode:ASCII码
****************************************************************/
void Dispchar(uchar xpost,uchar ypost,uchar locode,bit tempsign)
{
uchar data i,databyte,temp,temp1;
uint16 data address;
//extern uchar code ASICCzk[];
address =(locode-0x1f)*0x10; /////*0x10每个ASCII字符点阵码16字节。
address = address + 0x8000; //从0x8000开始
LCDRWIO=1;
LCDDIIO=1;
mcs138=ROMCS;
p1tune(mcs138);
A16 =1; A17 = 1;
for(i=0;i<16;i++)
{ temp=XBYTE[address++];
disdata[i] = temp;
}
A16 =0; A17 = 0;
if(ypost<8)
{
mcs138=LCDCS1;
temp1=(ypost*8)|0x40;
}
if((7<ypost)&&(ypost<16))
{
mcs138 = LCDCS2;
temp1 = ((ypost-8)*8)|0x40;
}
if((15<ypost)&&(ypost<24))
{
mcs138=LCDCS3;
temp1=((ypost-16)*8)|0x40;
}
/* 以上是设置列地址 save temp1 */
// temp=(xpost<<1)|0xb8;
temp = (xpost)|0xb8;
lcdwcommd(temp); // page
lcdwcommd(temp1); // y
/* 以上是设置页地址 */
for(i=0;i<16;i++)
{
//databyte = ASICCzk[address+i];
databyte = disdata[i];
if(tempsign==1)
databyte = ~databyte;
lcdwdata(databyte);
if(i==7)
{
lcdwcommd(++temp);
lcdwcommd(temp1);
}
}
}
//显示8*16的天线符号
void DispAntenna(uchar xpost,uchar ypost,bit tempsign)
{
uchar data i,databyte,temp,temp1;
A16 =0; A17 = 0;
for(i=0;i<16;i++)
{
disdata[i] =x16Antenna[i];
}
if(ypost<8)
{
mcs138=LCDCS1;
temp1=(ypost*8)|0x40;
}
if((7<ypost)&&(ypost<16))
{
mcs138 = LCDCS2;
temp1 = ((ypost-8)*8)|0x40;
}
if((15<ypost)&&(ypost<24))
{
mcs138=LCDCS3;
temp1=((ypost-16)*8)|0x40;
}
/* 以上是设置列地址 save temp1 */
// temp=(xpost<<1)|0xb8;
temp = (xpost)|0xb8;
lcdwcommd(temp); // page
lcdwcommd(temp1); // y
/* 以上是设置页地址 */
for(i=0;i<16;i++)
{
//databyte = ASICCzk[address+i];
databyte = disdata[i];
if(tempsign==1)
databyte = ~databyte;
lcdwdata(databyte);
if(i==7)
{
lcdwcommd(++temp);
lcdwcommd(temp1);
}
}
}
/****************************************************************
Disp chinese :在指定位置显示1个汉字文字符,14*14,流程是,根据汉字
的标准码,从汉字库中取出点阵数据,变换数据后送到LCDRam显示出来
xpost:离左上角的横向字符数(0-3 4行)
ypost:离左上角的众向字符数(0-23 24个assic字符)
hicode locode :为要显示的汉字GBK码
****************************************************************/
void disromdata(uchar hicode,uchar lo
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -