无线传感网络课程设计方案.docx
《无线传感网络课程设计方案.docx》由会员分享,可在线阅读,更多相关《无线传感网络课程设计方案.docx(64页珍藏版)》请在冰豆网上搜索。
无线传感网络课程设计方案
无线传感网络
课程设计报告
姓名:
胡韶辉胡衎
学号:
139074377139074376
班级:
物131班
指导教师:
卫琳娜
2017年1月1日
无线传感网络课程设计
实验一、无线传感网络点对点通信实验
1.实验内容
此实验为验证实验,根据实验步骤进行实验,观察结果是否与预期相符
2.实验步骤
用IAR8.1打开路径:
C:
\Users\xs\Desktop\无线传感器网络课程设计\无线传感网实验资料201604\感知RF2-2530WSNV1.2\代码和例子程序\Light_Switch\IDE\Light_Switch\srf05_cc2530\Iar\Light_Switch.eww分别编译并下载至两个节点上,打开节点,左右键选择/,选择完成后按中间键确认,观察LED灯显示情况。
3.实验代码及分析
/*
功能:
查找字符在索引中的哪一个位置
*/
/**************************************************************************************************/
staticu16lookforChar(u8ch)
{
uint16i;
for(i=0;i{if(fontList[i]==ch)returni;}returni;}//查中文staticu16lookforChar16(u16ch){uint16i,j;u16temp16;for(i=0;i{j=i*2;temp16=fontChar16List[j+1];temp16<<=8;temp16|=fontChar16List[j];if(temp16==ch)returni;}returni;} /**************************************************************************************************//*功能:在指定位置输出8*8*//**************************************************************************************************/staticvoidLcdPutChar8(u8x,u8y,u8ch){LcdBuf[y][x]=ch;}/**************************************************************************************************//*功能:在指定位置输出16*16*//**************************************************************************************************//*staticvoidLcdPutChar16(u8x,u8y,u16ch){LcdBuf[y][x]=(u8)ch;//低前高后LcdBuf[y+1][x]=(u8)(ch>>8);}voidLcdPutString8(u8x,u8y,u8*ptru8len,u8op){u8i,*tptr=ptr,xx=x,yy=y;u16m;if(x>95)return;if(y>1)return;for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*8;}elsereturn;xx+=8;if(xx>88)return;}}*/ voidLcdClearRam(void){u8i;for(i=0;i<96;i++){LcdBuf[0][i]=0;}for(i=0;i<96;i++){LcdBuf[1][i]=0;}}voidLcdClearScrean(void){LcdClearRam();PutPic((void*)LcdBuf);}voidLcdPutString16_8(u8x,u8y,u8*ptr,u8len,u8op){u8i,j,*tptr=ptr,xx=x,yy=y;u16m;if(xx>95)return;if(yy)return;for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*16;for(j=0;j<8;j++){if(op){LcdPutChar8((xx+j),yy,font[m+j]);LcdPutChar8((xx+j),yy+1,font[m+j+8]);}else{LcdPutChar8((xx+j),yy,~font[m+j]);LcdPutChar8((xx+j),yy+1,~font[m+j+8]);}}}elsebreak;xx+=8;if(xx>96)return;}PutPic((void*)LcdBuf);}//显示16*16字符voidLcdPutString16_16(u8x,u8y,u8*ptr,u8len,u8op){u8i,j,*tptr=ptr,xx=x,yy=y;u16m;if(xx>95)return;if(yy)return;for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*32;for(j=0;j<16;j++){if(op){LcdPutChar8((xx+j),yy,font[m+j]);LcdPutChar8((xx+j),yy+1,font[m+j+16]);}else{LcdPutChar8((xx+j),yy,~font[m+j]);LcdPutChar8((xx+j),yy+1,~font[m+j+16]);}}}elsebreak;xx+=16;if(xx>80)return;}PutPic((void*)LcdBuf);}staticvoidLcdPrint8(u8x,u8y,u8vl,u8op){u8j;u16m;m=lookforChar(vl);if(m!=FONTLISTCOUNT){m=m*16;for(j=0;j<8;j++){if(op){LcdPutChar8((x+j),y,font[m+j]);LcdPutChar8((x+j),y+1,font[m+j+8]);}else{LcdPutChar8((x+j),y,~font[m+j]);LcdPutChar8((x+j),y+1,~font[m+j+8]);}}}}staticvoidLcdPrint16(u8x,u8y,u16val,u8op){u8j;u16m;m=lookforChar16(val);if(m!=fontChar16ListCount){m=m*32;for(j=0;j<16;j++){if(op){LcdPutChar8((x+j),y,fontChar16[m+j]);LcdPutChar8((x+j),y+1,fontChar16[m+j+16]);}else{LcdPutChar8((x+j),y,~fontChar16[m+j]);LcdPutChar8((x+j),y+1,~fontChar16[m+j+16]);}}}}voidLcdPutDispBuf(u8x,u8y,OledCodeDataType*ptr,u8op){u8tcount=x;OledCodeDataType*tptr=ptr;u16temp16;if(x>88)return;if(y>1)return;while((*tptr!='\0')&&(tcount<=88)){if(*tptr<127)//显示ASIC码{LcdPrint8(tcount,y,*tptr,op);tptr++;tcount+=8;}else//显示汉字{temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(tcount,y,temp16,op);tptr+=2;tcount+=16;}}PutPic((void*)LcdBuf);}//实现中英文混合显示voidLcdPutDisp(u8x,u8y,OledCodeDataType*ptr,u8op){u8tcount=x;OledCodeDataType*tptr=ptr;u16temp16;if(x>88)return;if(y>1)return;while((*tptr!='\0')&&(tcount<=88)){if(*tptr<127)//显示ASIC码{LcdPrint8(tcount,y,*tptr,op);tptr++;tcount+=8;}else//显示汉字{temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(tcount,y,temp16,op);tptr+=2;tcount+=16;}}PutPic((void*)LcdBuf);}//从右往左输出一组字符并移运显示voidLcdPutScDispRtoL(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*tptr=ptr;u16temp16;//LcdClearRam();while(*tptr!='\0'){if(*tptr<127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8(88,0,*tptr,op);tptr++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(80,0,temp16,op);tptr+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScDispRtoL12(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*tptr=ptr;u16i,temp16;for(i=0;i<12;){if(*tptr<127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8(88,0,*tptr,op);tptr++;i++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(80,0,temp16,op);tptr+=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}//从左往右voidLcdPutScDispLtoR12(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*ttptr,*tptr=ptr;u16temp16;u8i,len,tempbuf[2][96];len=12;tptr=ptr+11;for(i=0;i{if(*(tptr)<127)//显示ASIC码{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][8],&tempbuf[0][0],88);memcpy(&LcdBuf[1][8],&tempbuf[1][0],88);LcdPrint8(0,0,*tptr,op);tptr--;i++;}else//显示汉字{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][16],&tempbuf[0][0],80);memcpy(&LcdBuf[1][16],&tempbuf[1][0],80);ttptr=tptr;temp16=*ttptr;temp16<<=8;ttptr=tptr-1;temp16|=*ttptr;LcdPrint16(0,0,temp16,op);tptr-=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScString(OledCodeDataType*ptr,u8op,u8rl,u16dl){switch(rl){caseLIFT_SC:LcdPutScDispLtoR12(ptr,op,dl);break;caseRIGHT_SC:LcdPutScDispRtoL12(ptr,op,dl);break;default:break;}} voidLcdPutPic(u8x,u8y,u8w,u8h,OledCodeDataType*ptr,u8op){u8i;OledCodeDataType*tptr=ptr;if((x>95)||((x+w)>96))return;if((y>1)||((y+h)>2))return;for(i=0;i{if(op){LcdBuf[y][x+i]=*tptr;if(h==2)LcdBuf[y+1][x+i]=*(tptr+w);tptr++;}else{LcdBuf[y][x+i]=~*tptr;if(h==2)LcdBuf[y+1][x+i]=~*(tptr+w);tptr++;}}PutPic((void*)LcdBuf);} //整屏滑动显示voidLcdPutScPic(OledCodeDataType*ptr,u8op,u8qp,u16dl){u8i,j;u8tempbuf[2][96];if(qp){for(i=0;i<96;i++){tempbuf[0][i]=*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=*ptr++;}}else{for(i=0;i<96;i++){tempbuf[0][i]=~*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=~*ptr++;}}switch(op){caseRIGHT_SC://右边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][95-j]=LcdBuf[0][83-j];LcdBuf[1][95-j]=LcdBuf[1][83-j];}for(j=0;j<12;j++){LcdBuf[0][11-j]=tempbuf[0][95-j];LcdBuf[1][11-j]=tempbuf[1][95-j];}for(j=0;j<84;j++){tempbuf[0][95-j]=tempbuf[0][83-j];tempbuf[1][95-j]=tempbuf[1][83-j];}PutPic((void*)LcdBuf);}LcdDelay(dl);break;caseLIFT_SC://左边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][j]=LcdBuf[0][j+12];LcdBuf[1][j]=LcdBuf[1][j+12];}for(j=0;j<12;j++){LcdBuf[0][95-j]=tempbuf[0][11-j];LcdBuf[1][95-j]=tempbuf[1][11-j];}for(j=0;j<84;j++){tempbuf[0][j]=tempbuf[0][j+12];temp
if(fontList[i]==ch)
returni;
}
//查中文
staticu16lookforChar16(u16ch)
uint16i,j;
u16temp16;
for(i=0;i{j=i*2;temp16=fontChar16List[j+1];temp16<<=8;temp16|=fontChar16List[j];if(temp16==ch)returni;}returni;} /**************************************************************************************************//*功能:在指定位置输出8*8*//**************************************************************************************************/staticvoidLcdPutChar8(u8x,u8y,u8ch){LcdBuf[y][x]=ch;}/**************************************************************************************************//*功能:在指定位置输出16*16*//**************************************************************************************************//*staticvoidLcdPutChar16(u8x,u8y,u16ch){LcdBuf[y][x]=(u8)ch;//低前高后LcdBuf[y+1][x]=(u8)(ch>>8);}voidLcdPutString8(u8x,u8y,u8*ptru8len,u8op){u8i,*tptr=ptr,xx=x,yy=y;u16m;if(x>95)return;if(y>1)return;for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*8;}elsereturn;xx+=8;if(xx>88)return;}}*/ voidLcdClearRam(void){u8i;for(i=0;i<96;i++){LcdBuf[0][i]=0;}for(i=0;i<96;i++){LcdBuf[1][i]=0;}}voidLcdClearScrean(void){LcdClearRam();PutPic((void*)LcdBuf);}voidLcdPutString16_8(u8x,u8y,u8*ptr,u8len,u8op){u8i,j,*tptr=ptr,xx=x,yy=y;u16m;if(xx>95)return;if(yy)return;for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*16;for(j=0;j<8;j++){if(op){LcdPutChar8((xx+j),yy,font[m+j]);LcdPutChar8((xx+j),yy+1,font[m+j+8]);}else{LcdPutChar8((xx+j),yy,~font[m+j]);LcdPutChar8((xx+j),yy+1,~font[m+j+8]);}}}elsebreak;xx+=8;if(xx>96)return;}PutPic((void*)LcdBuf);}//显示16*16字符voidLcdPutString16_16(u8x,u8y,u8*ptr,u8len,u8op){u8i,j,*tptr=ptr,xx=x,yy=y;u16m;if(xx>95)return;if(yy)return;for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*32;for(j=0;j<16;j++){if(op){LcdPutChar8((xx+j),yy,font[m+j]);LcdPutChar8((xx+j),yy+1,font[m+j+16]);}else{LcdPutChar8((xx+j),yy,~font[m+j]);LcdPutChar8((xx+j),yy+1,~font[m+j+16]);}}}elsebreak;xx+=16;if(xx>80)return;}PutPic((void*)LcdBuf);}staticvoidLcdPrint8(u8x,u8y,u8vl,u8op){u8j;u16m;m=lookforChar(vl);if(m!=FONTLISTCOUNT){m=m*16;for(j=0;j<8;j++){if(op){LcdPutChar8((x+j),y,font[m+j]);LcdPutChar8((x+j),y+1,font[m+j+8]);}else{LcdPutChar8((x+j),y,~font[m+j]);LcdPutChar8((x+j),y+1,~font[m+j+8]);}}}}staticvoidLcdPrint16(u8x,u8y,u16val,u8op){u8j;u16m;m=lookforChar16(val);if(m!=fontChar16ListCount){m=m*32;for(j=0;j<16;j++){if(op){LcdPutChar8((x+j),y,fontChar16[m+j]);LcdPutChar8((x+j),y+1,fontChar16[m+j+16]);}else{LcdPutChar8((x+j),y,~fontChar16[m+j]);LcdPutChar8((x+j),y+1,~fontChar16[m+j+16]);}}}}voidLcdPutDispBuf(u8x,u8y,OledCodeDataType*ptr,u8op){u8tcount=x;OledCodeDataType*tptr=ptr;u16temp16;if(x>88)return;if(y>1)return;while((*tptr!='\0')&&(tcount<=88)){if(*tptr<127)//显示ASIC码{LcdPrint8(tcount,y,*tptr,op);tptr++;tcount+=8;}else//显示汉字{temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(tcount,y,temp16,op);tptr+=2;tcount+=16;}}PutPic((void*)LcdBuf);}//实现中英文混合显示voidLcdPutDisp(u8x,u8y,OledCodeDataType*ptr,u8op){u8tcount=x;OledCodeDataType*tptr=ptr;u16temp16;if(x>88)return;if(y>1)return;while((*tptr!='\0')&&(tcount<=88)){if(*tptr<127)//显示ASIC码{LcdPrint8(tcount,y,*tptr,op);tptr++;tcount+=8;}else//显示汉字{temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(tcount,y,temp16,op);tptr+=2;tcount+=16;}}PutPic((void*)LcdBuf);}//从右往左输出一组字符并移运显示voidLcdPutScDispRtoL(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*tptr=ptr;u16temp16;//LcdClearRam();while(*tptr!='\0'){if(*tptr<127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8(88,0,*tptr,op);tptr++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(80,0,temp16,op);tptr+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScDispRtoL12(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*tptr=ptr;u16i,temp16;for(i=0;i<12;){if(*tptr<127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8(88,0,*tptr,op);tptr++;i++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(80,0,temp16,op);tptr+=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}//从左往右voidLcdPutScDispLtoR12(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*ttptr,*tptr=ptr;u16temp16;u8i,len,tempbuf[2][96];len=12;tptr=ptr+11;for(i=0;i{if(*(tptr)<127)//显示ASIC码{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][8],&tempbuf[0][0],88);memcpy(&LcdBuf[1][8],&tempbuf[1][0],88);LcdPrint8(0,0,*tptr,op);tptr--;i++;}else//显示汉字{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][16],&tempbuf[0][0],80);memcpy(&LcdBuf[1][16],&tempbuf[1][0],80);ttptr=tptr;temp16=*ttptr;temp16<<=8;ttptr=tptr-1;temp16|=*ttptr;LcdPrint16(0,0,temp16,op);tptr-=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScString(OledCodeDataType*ptr,u8op,u8rl,u16dl){switch(rl){caseLIFT_SC:LcdPutScDispLtoR12(ptr,op,dl);break;caseRIGHT_SC:LcdPutScDispRtoL12(ptr,op,dl);break;default:break;}} voidLcdPutPic(u8x,u8y,u8w,u8h,OledCodeDataType*ptr,u8op){u8i;OledCodeDataType*tptr=ptr;if((x>95)||((x+w)>96))return;if((y>1)||((y+h)>2))return;for(i=0;i{if(op){LcdBuf[y][x+i]=*tptr;if(h==2)LcdBuf[y+1][x+i]=*(tptr+w);tptr++;}else{LcdBuf[y][x+i]=~*tptr;if(h==2)LcdBuf[y+1][x+i]=~*(tptr+w);tptr++;}}PutPic((void*)LcdBuf);} //整屏滑动显示voidLcdPutScPic(OledCodeDataType*ptr,u8op,u8qp,u16dl){u8i,j;u8tempbuf[2][96];if(qp){for(i=0;i<96;i++){tempbuf[0][i]=*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=*ptr++;}}else{for(i=0;i<96;i++){tempbuf[0][i]=~*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=~*ptr++;}}switch(op){caseRIGHT_SC://右边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][95-j]=LcdBuf[0][83-j];LcdBuf[1][95-j]=LcdBuf[1][83-j];}for(j=0;j<12;j++){LcdBuf[0][11-j]=tempbuf[0][95-j];LcdBuf[1][11-j]=tempbuf[1][95-j];}for(j=0;j<84;j++){tempbuf[0][95-j]=tempbuf[0][83-j];tempbuf[1][95-j]=tempbuf[1][83-j];}PutPic((void*)LcdBuf);}LcdDelay(dl);break;caseLIFT_SC://左边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][j]=LcdBuf[0][j+12];LcdBuf[1][j]=LcdBuf[1][j+12];}for(j=0;j<12;j++){LcdBuf[0][95-j]=tempbuf[0][11-j];LcdBuf[1][95-j]=tempbuf[1][11-j];}for(j=0;j<84;j++){tempbuf[0][j]=tempbuf[0][j+12];temp
j=i*2;
temp16=fontChar16List[j+1];
temp16<<=8;
temp16|=fontChar16List[j];
if(temp16==ch)
在指定位置输出8*8
staticvoidLcdPutChar8(u8x,u8y,u8ch)
LcdBuf[y][x]=ch;
在指定位置输出16*16
/*staticvoidLcdPutChar16(u8x,u8y,u16ch)
LcdBuf[y][x]=(u8)ch;//低前高后
LcdBuf[y+1][x]=(u8)(ch>>8);
voidLcdPutString8(u8x,u8y,u8*ptru8len,u8op)
u8i,*tptr=ptr,xx=x,yy=y;
u16m;
if(x>95)
return;
if(y>1)
for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*8;}elsereturn;xx+=8;if(xx>88)return;}}*/ voidLcdClearRam(void){u8i;for(i=0;i<96;i++){LcdBuf[0][i]=0;}for(i=0;i<96;i++){LcdBuf[1][i]=0;}}voidLcdClearScrean(void){LcdClearRam();PutPic((void*)LcdBuf);}voidLcdPutString16_8(u8x,u8y,u8*ptr,u8len,u8op){u8i,j,*tptr=ptr,xx=x,yy=y;u16m;if(xx>95)return;if(yy)return;for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*16;for(j=0;j<8;j++){if(op){LcdPutChar8((xx+j),yy,font[m+j]);LcdPutChar8((xx+j),yy+1,font[m+j+8]);}else{LcdPutChar8((xx+j),yy,~font[m+j]);LcdPutChar8((xx+j),yy+1,~font[m+j+8]);}}}elsebreak;xx+=8;if(xx>96)return;}PutPic((void*)LcdBuf);}//显示16*16字符voidLcdPutString16_16(u8x,u8y,u8*ptr,u8len,u8op){u8i,j,*tptr=ptr,xx=x,yy=y;u16m;if(xx>95)return;if(yy)return;for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*32;for(j=0;j<16;j++){if(op){LcdPutChar8((xx+j),yy,font[m+j]);LcdPutChar8((xx+j),yy+1,font[m+j+16]);}else{LcdPutChar8((xx+j),yy,~font[m+j]);LcdPutChar8((xx+j),yy+1,~font[m+j+16]);}}}elsebreak;xx+=16;if(xx>80)return;}PutPic((void*)LcdBuf);}staticvoidLcdPrint8(u8x,u8y,u8vl,u8op){u8j;u16m;m=lookforChar(vl);if(m!=FONTLISTCOUNT){m=m*16;for(j=0;j<8;j++){if(op){LcdPutChar8((x+j),y,font[m+j]);LcdPutChar8((x+j),y+1,font[m+j+8]);}else{LcdPutChar8((x+j),y,~font[m+j]);LcdPutChar8((x+j),y+1,~font[m+j+8]);}}}}staticvoidLcdPrint16(u8x,u8y,u16val,u8op){u8j;u16m;m=lookforChar16(val);if(m!=fontChar16ListCount){m=m*32;for(j=0;j<16;j++){if(op){LcdPutChar8((x+j),y,fontChar16[m+j]);LcdPutChar8((x+j),y+1,fontChar16[m+j+16]);}else{LcdPutChar8((x+j),y,~fontChar16[m+j]);LcdPutChar8((x+j),y+1,~fontChar16[m+j+16]);}}}}voidLcdPutDispBuf(u8x,u8y,OledCodeDataType*ptr,u8op){u8tcount=x;OledCodeDataType*tptr=ptr;u16temp16;if(x>88)return;if(y>1)return;while((*tptr!='\0')&&(tcount<=88)){if(*tptr<127)//显示ASIC码{LcdPrint8(tcount,y,*tptr,op);tptr++;tcount+=8;}else//显示汉字{temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(tcount,y,temp16,op);tptr+=2;tcount+=16;}}PutPic((void*)LcdBuf);}//实现中英文混合显示voidLcdPutDisp(u8x,u8y,OledCodeDataType*ptr,u8op){u8tcount=x;OledCodeDataType*tptr=ptr;u16temp16;if(x>88)return;if(y>1)return;while((*tptr!='\0')&&(tcount<=88)){if(*tptr<127)//显示ASIC码{LcdPrint8(tcount,y,*tptr,op);tptr++;tcount+=8;}else//显示汉字{temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(tcount,y,temp16,op);tptr+=2;tcount+=16;}}PutPic((void*)LcdBuf);}//从右往左输出一组字符并移运显示voidLcdPutScDispRtoL(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*tptr=ptr;u16temp16;//LcdClearRam();while(*tptr!='\0'){if(*tptr<127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8(88,0,*tptr,op);tptr++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(80,0,temp16,op);tptr+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScDispRtoL12(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*tptr=ptr;u16i,temp16;for(i=0;i<12;){if(*tptr<127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8(88,0,*tptr,op);tptr++;i++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(80,0,temp16,op);tptr+=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}//从左往右voidLcdPutScDispLtoR12(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*ttptr,*tptr=ptr;u16temp16;u8i,len,tempbuf[2][96];len=12;tptr=ptr+11;for(i=0;i{if(*(tptr)<127)//显示ASIC码{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][8],&tempbuf[0][0],88);memcpy(&LcdBuf[1][8],&tempbuf[1][0],88);LcdPrint8(0,0,*tptr,op);tptr--;i++;}else//显示汉字{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][16],&tempbuf[0][0],80);memcpy(&LcdBuf[1][16],&tempbuf[1][0],80);ttptr=tptr;temp16=*ttptr;temp16<<=8;ttptr=tptr-1;temp16|=*ttptr;LcdPrint16(0,0,temp16,op);tptr-=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScString(OledCodeDataType*ptr,u8op,u8rl,u16dl){switch(rl){caseLIFT_SC:LcdPutScDispLtoR12(ptr,op,dl);break;caseRIGHT_SC:LcdPutScDispRtoL12(ptr,op,dl);break;default:break;}} voidLcdPutPic(u8x,u8y,u8w,u8h,OledCodeDataType*ptr,u8op){u8i;OledCodeDataType*tptr=ptr;if((x>95)||((x+w)>96))return;if((y>1)||((y+h)>2))return;for(i=0;i{if(op){LcdBuf[y][x+i]=*tptr;if(h==2)LcdBuf[y+1][x+i]=*(tptr+w);tptr++;}else{LcdBuf[y][x+i]=~*tptr;if(h==2)LcdBuf[y+1][x+i]=~*(tptr+w);tptr++;}}PutPic((void*)LcdBuf);} //整屏滑动显示voidLcdPutScPic(OledCodeDataType*ptr,u8op,u8qp,u16dl){u8i,j;u8tempbuf[2][96];if(qp){for(i=0;i<96;i++){tempbuf[0][i]=*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=*ptr++;}}else{for(i=0;i<96;i++){tempbuf[0][i]=~*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=~*ptr++;}}switch(op){caseRIGHT_SC://右边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][95-j]=LcdBuf[0][83-j];LcdBuf[1][95-j]=LcdBuf[1][83-j];}for(j=0;j<12;j++){LcdBuf[0][11-j]=tempbuf[0][95-j];LcdBuf[1][11-j]=tempbuf[1][95-j];}for(j=0;j<84;j++){tempbuf[0][95-j]=tempbuf[0][83-j];tempbuf[1][95-j]=tempbuf[1][83-j];}PutPic((void*)LcdBuf);}LcdDelay(dl);break;caseLIFT_SC://左边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][j]=LcdBuf[0][j+12];LcdBuf[1][j]=LcdBuf[1][j+12];}for(j=0;j<12;j++){LcdBuf[0][95-j]=tempbuf[0][11-j];LcdBuf[1][95-j]=tempbuf[1][11-j];}for(j=0;j<84;j++){tempbuf[0][j]=tempbuf[0][j+12];temp
m=lookforChar(*tptr++);
if(m!
=FONTLISTCOUNT)
m=m*8;
else
xx+=8;
if(xx>88)
voidLcdClearRam(void)
u8i;
for(i=0;i<96;i++)
LcdBuf[0][i]=0;
LcdBuf[1][i]=0;
voidLcdClearScrean(void)
LcdClearRam();
PutPic((void*)LcdBuf);
voidLcdPutString16_8(u8x,u8y,u8*ptr,u8len,u8op)
u8i,j,*tptr=ptr,xx=x,yy=y;
if(xx>95)
if(yy)
for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*16;for(j=0;j<8;j++){if(op){LcdPutChar8((xx+j),yy,font[m+j]);LcdPutChar8((xx+j),yy+1,font[m+j+8]);}else{LcdPutChar8((xx+j),yy,~font[m+j]);LcdPutChar8((xx+j),yy+1,~font[m+j+8]);}}}elsebreak;xx+=8;if(xx>96)return;}PutPic((void*)LcdBuf);}//显示16*16字符voidLcdPutString16_16(u8x,u8y,u8*ptr,u8len,u8op){u8i,j,*tptr=ptr,xx=x,yy=y;u16m;if(xx>95)return;if(yy)return;for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*32;for(j=0;j<16;j++){if(op){LcdPutChar8((xx+j),yy,font[m+j]);LcdPutChar8((xx+j),yy+1,font[m+j+16]);}else{LcdPutChar8((xx+j),yy,~font[m+j]);LcdPutChar8((xx+j),yy+1,~font[m+j+16]);}}}elsebreak;xx+=16;if(xx>80)return;}PutPic((void*)LcdBuf);}staticvoidLcdPrint8(u8x,u8y,u8vl,u8op){u8j;u16m;m=lookforChar(vl);if(m!=FONTLISTCOUNT){m=m*16;for(j=0;j<8;j++){if(op){LcdPutChar8((x+j),y,font[m+j]);LcdPutChar8((x+j),y+1,font[m+j+8]);}else{LcdPutChar8((x+j),y,~font[m+j]);LcdPutChar8((x+j),y+1,~font[m+j+8]);}}}}staticvoidLcdPrint16(u8x,u8y,u16val,u8op){u8j;u16m;m=lookforChar16(val);if(m!=fontChar16ListCount){m=m*32;for(j=0;j<16;j++){if(op){LcdPutChar8((x+j),y,fontChar16[m+j]);LcdPutChar8((x+j),y+1,fontChar16[m+j+16]);}else{LcdPutChar8((x+j),y,~fontChar16[m+j]);LcdPutChar8((x+j),y+1,~fontChar16[m+j+16]);}}}}voidLcdPutDispBuf(u8x,u8y,OledCodeDataType*ptr,u8op){u8tcount=x;OledCodeDataType*tptr=ptr;u16temp16;if(x>88)return;if(y>1)return;while((*tptr!='\0')&&(tcount<=88)){if(*tptr<127)//显示ASIC码{LcdPrint8(tcount,y,*tptr,op);tptr++;tcount+=8;}else//显示汉字{temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(tcount,y,temp16,op);tptr+=2;tcount+=16;}}PutPic((void*)LcdBuf);}//实现中英文混合显示voidLcdPutDisp(u8x,u8y,OledCodeDataType*ptr,u8op){u8tcount=x;OledCodeDataType*tptr=ptr;u16temp16;if(x>88)return;if(y>1)return;while((*tptr!='\0')&&(tcount<=88)){if(*tptr<127)//显示ASIC码{LcdPrint8(tcount,y,*tptr,op);tptr++;tcount+=8;}else//显示汉字{temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(tcount,y,temp16,op);tptr+=2;tcount+=16;}}PutPic((void*)LcdBuf);}//从右往左输出一组字符并移运显示voidLcdPutScDispRtoL(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*tptr=ptr;u16temp16;//LcdClearRam();while(*tptr!='\0'){if(*tptr<127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8(88,0,*tptr,op);tptr++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(80,0,temp16,op);tptr+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScDispRtoL12(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*tptr=ptr;u16i,temp16;for(i=0;i<12;){if(*tptr<127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8(88,0,*tptr,op);tptr++;i++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(80,0,temp16,op);tptr+=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}//从左往右voidLcdPutScDispLtoR12(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*ttptr,*tptr=ptr;u16temp16;u8i,len,tempbuf[2][96];len=12;tptr=ptr+11;for(i=0;i{if(*(tptr)<127)//显示ASIC码{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][8],&tempbuf[0][0],88);memcpy(&LcdBuf[1][8],&tempbuf[1][0],88);LcdPrint8(0,0,*tptr,op);tptr--;i++;}else//显示汉字{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][16],&tempbuf[0][0],80);memcpy(&LcdBuf[1][16],&tempbuf[1][0],80);ttptr=tptr;temp16=*ttptr;temp16<<=8;ttptr=tptr-1;temp16|=*ttptr;LcdPrint16(0,0,temp16,op);tptr-=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScString(OledCodeDataType*ptr,u8op,u8rl,u16dl){switch(rl){caseLIFT_SC:LcdPutScDispLtoR12(ptr,op,dl);break;caseRIGHT_SC:LcdPutScDispRtoL12(ptr,op,dl);break;default:break;}} voidLcdPutPic(u8x,u8y,u8w,u8h,OledCodeDataType*ptr,u8op){u8i;OledCodeDataType*tptr=ptr;if((x>95)||((x+w)>96))return;if((y>1)||((y+h)>2))return;for(i=0;i{if(op){LcdBuf[y][x+i]=*tptr;if(h==2)LcdBuf[y+1][x+i]=*(tptr+w);tptr++;}else{LcdBuf[y][x+i]=~*tptr;if(h==2)LcdBuf[y+1][x+i]=~*(tptr+w);tptr++;}}PutPic((void*)LcdBuf);} //整屏滑动显示voidLcdPutScPic(OledCodeDataType*ptr,u8op,u8qp,u16dl){u8i,j;u8tempbuf[2][96];if(qp){for(i=0;i<96;i++){tempbuf[0][i]=*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=*ptr++;}}else{for(i=0;i<96;i++){tempbuf[0][i]=~*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=~*ptr++;}}switch(op){caseRIGHT_SC://右边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][95-j]=LcdBuf[0][83-j];LcdBuf[1][95-j]=LcdBuf[1][83-j];}for(j=0;j<12;j++){LcdBuf[0][11-j]=tempbuf[0][95-j];LcdBuf[1][11-j]=tempbuf[1][95-j];}for(j=0;j<84;j++){tempbuf[0][95-j]=tempbuf[0][83-j];tempbuf[1][95-j]=tempbuf[1][83-j];}PutPic((void*)LcdBuf);}LcdDelay(dl);break;caseLIFT_SC://左边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][j]=LcdBuf[0][j+12];LcdBuf[1][j]=LcdBuf[1][j+12];}for(j=0;j<12;j++){LcdBuf[0][95-j]=tempbuf[0][11-j];LcdBuf[1][95-j]=tempbuf[1][11-j];}for(j=0;j<84;j++){tempbuf[0][j]=tempbuf[0][j+12];temp
m=m*16;
for(j=0;j<8;j++)
if(op)
LcdPutChar8((xx+j),yy,font[m+j]);
LcdPutChar8((xx+j),yy+1,font[m+j+8]);
LcdPutChar8((xx+j),yy,~font[m+j]);
LcdPutChar8((xx+j),yy+1,~font[m+j+8]);
break;
if(xx>96)
//显示16*16字符
voidLcdPutString16_16(u8x,u8y,u8*ptr,u8len,u8op)
for(i=0;i{m=lookforChar(*tptr++);if(m!=FONTLISTCOUNT){m=m*32;for(j=0;j<16;j++){if(op){LcdPutChar8((xx+j),yy,font[m+j]);LcdPutChar8((xx+j),yy+1,font[m+j+16]);}else{LcdPutChar8((xx+j),yy,~font[m+j]);LcdPutChar8((xx+j),yy+1,~font[m+j+16]);}}}elsebreak;xx+=16;if(xx>80)return;}PutPic((void*)LcdBuf);}staticvoidLcdPrint8(u8x,u8y,u8vl,u8op){u8j;u16m;m=lookforChar(vl);if(m!=FONTLISTCOUNT){m=m*16;for(j=0;j<8;j++){if(op){LcdPutChar8((x+j),y,font[m+j]);LcdPutChar8((x+j),y+1,font[m+j+8]);}else{LcdPutChar8((x+j),y,~font[m+j]);LcdPutChar8((x+j),y+1,~font[m+j+8]);}}}}staticvoidLcdPrint16(u8x,u8y,u16val,u8op){u8j;u16m;m=lookforChar16(val);if(m!=fontChar16ListCount){m=m*32;for(j=0;j<16;j++){if(op){LcdPutChar8((x+j),y,fontChar16[m+j]);LcdPutChar8((x+j),y+1,fontChar16[m+j+16]);}else{LcdPutChar8((x+j),y,~fontChar16[m+j]);LcdPutChar8((x+j),y+1,~fontChar16[m+j+16]);}}}}voidLcdPutDispBuf(u8x,u8y,OledCodeDataType*ptr,u8op){u8tcount=x;OledCodeDataType*tptr=ptr;u16temp16;if(x>88)return;if(y>1)return;while((*tptr!='\0')&&(tcount<=88)){if(*tptr<127)//显示ASIC码{LcdPrint8(tcount,y,*tptr,op);tptr++;tcount+=8;}else//显示汉字{temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(tcount,y,temp16,op);tptr+=2;tcount+=16;}}PutPic((void*)LcdBuf);}//实现中英文混合显示voidLcdPutDisp(u8x,u8y,OledCodeDataType*ptr,u8op){u8tcount=x;OledCodeDataType*tptr=ptr;u16temp16;if(x>88)return;if(y>1)return;while((*tptr!='\0')&&(tcount<=88)){if(*tptr<127)//显示ASIC码{LcdPrint8(tcount,y,*tptr,op);tptr++;tcount+=8;}else//显示汉字{temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(tcount,y,temp16,op);tptr+=2;tcount+=16;}}PutPic((void*)LcdBuf);}//从右往左输出一组字符并移运显示voidLcdPutScDispRtoL(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*tptr=ptr;u16temp16;//LcdClearRam();while(*tptr!='\0'){if(*tptr<127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8(88,0,*tptr,op);tptr++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(80,0,temp16,op);tptr+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScDispRtoL12(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*tptr=ptr;u16i,temp16;for(i=0;i<12;){if(*tptr<127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8(88,0,*tptr,op);tptr++;i++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16=tptr[1];temp16<<=8;temp16|=tptr[0];LcdPrint16(80,0,temp16,op);tptr+=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}//从左往右voidLcdPutScDispLtoR12(OledCodeDataType*ptr,u8op,u16dl){OledCodeDataType*ttptr,*tptr=ptr;u16temp16;u8i,len,tempbuf[2][96];len=12;tptr=ptr+11;for(i=0;i{if(*(tptr)<127)//显示ASIC码{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][8],&tempbuf[0][0],88);memcpy(&LcdBuf[1][8],&tempbuf[1][0],88);LcdPrint8(0,0,*tptr,op);tptr--;i++;}else//显示汉字{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][16],&tempbuf[0][0],80);memcpy(&LcdBuf[1][16],&tempbuf[1][0],80);ttptr=tptr;temp16=*ttptr;temp16<<=8;ttptr=tptr-1;temp16|=*ttptr;LcdPrint16(0,0,temp16,op);tptr-=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScString(OledCodeDataType*ptr,u8op,u8rl,u16dl){switch(rl){caseLIFT_SC:LcdPutScDispLtoR12(ptr,op,dl);break;caseRIGHT_SC:LcdPutScDispRtoL12(ptr,op,dl);break;default:break;}} voidLcdPutPic(u8x,u8y,u8w,u8h,OledCodeDataType*ptr,u8op){u8i;OledCodeDataType*tptr=ptr;if((x>95)||((x+w)>96))return;if((y>1)||((y+h)>2))return;for(i=0;i{if(op){LcdBuf[y][x+i]=*tptr;if(h==2)LcdBuf[y+1][x+i]=*(tptr+w);tptr++;}else{LcdBuf[y][x+i]=~*tptr;if(h==2)LcdBuf[y+1][x+i]=~*(tptr+w);tptr++;}}PutPic((void*)LcdBuf);} //整屏滑动显示voidLcdPutScPic(OledCodeDataType*ptr,u8op,u8qp,u16dl){u8i,j;u8tempbuf[2][96];if(qp){for(i=0;i<96;i++){tempbuf[0][i]=*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=*ptr++;}}else{for(i=0;i<96;i++){tempbuf[0][i]=~*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=~*ptr++;}}switch(op){caseRIGHT_SC://右边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][95-j]=LcdBuf[0][83-j];LcdBuf[1][95-j]=LcdBuf[1][83-j];}for(j=0;j<12;j++){LcdBuf[0][11-j]=tempbuf[0][95-j];LcdBuf[1][11-j]=tempbuf[1][95-j];}for(j=0;j<84;j++){tempbuf[0][95-j]=tempbuf[0][83-j];tempbuf[1][95-j]=tempbuf[1][83-j];}PutPic((void*)LcdBuf);}LcdDelay(dl);break;caseLIFT_SC://左边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][j]=LcdBuf[0][j+12];LcdBuf[1][j]=LcdBuf[1][j+12];}for(j=0;j<12;j++){LcdBuf[0][95-j]=tempbuf[0][11-j];LcdBuf[1][95-j]=tempbuf[1][11-j];}for(j=0;j<84;j++){tempbuf[0][j]=tempbuf[0][j+12];temp
m=m*32;
for(j=0;j<16;j++)
LcdPutChar8((xx+j),yy+1,font[m+j+16]);
LcdPutChar8((xx+j),yy+1,~font[m+j+16]);
xx+=16;
if(xx>80)
staticvoidLcdPrint8(u8x,u8y,u8vl,u8op)
u8j;
m=lookforChar(vl);
LcdPutChar8((x+j),y,font[m+j]);
LcdPutChar8((x+j),y+1,font[m+j+8]);
LcdPutChar8((x+j),y,~font[m+j]);
LcdPutChar8((x+j),y+1,~font[m+j+8]);
staticvoidLcdPrint16(u8x,u8y,u16val,u8op)
m=lookforChar16(val);
=fontChar16ListCount)
LcdPutChar8((x+j),y,fontChar16[m+j]);
LcdPutChar8((x+j),y+1,fontChar16[m+j+16]);
LcdPutChar8((x+j),y,~fontChar16[m+j]);
LcdPutChar8((x+j),y+1,~fontChar16[m+j+16]);
voidLcdPutDispBuf(u8x,u8y,OledCodeDataType*ptr,u8op)
u8tcount=x;
OledCodeDataType*tptr=ptr;
if(x>88)
while((*tptr!
='\0')&&(tcount<=88))
if(*tptr<127)//显示ASIC码
LcdPrint8(tcount,y,*tptr,op);
tptr++;
tcount+=8;
else//显示汉字
temp16=tptr[1];
temp16|=tptr[0];
LcdPrint16(tcount,y,temp16,op);
tptr+=2;
tcount+=16;
//实现中英文混合显示
voidLcdPutDisp(u8x,u8y,OledCodeDataType*ptr,u8op)
//从右往左输出一组字符并移运显示
voidLcdPutScDispRtoL(OledCodeDataType*ptr,u8op,u16dl)
//LcdClearRam();
while(*tptr!
='\0')
memcpy(LcdBuf[0],&LcdBuf[0][8],88);
memcpy(LcdBuf[1],&LcdBuf[1][8],88);
LcdPrint8(88,0,*tptr,op);
memcpy(LcdBuf[0],&LcdBuf[0][16],80);
memcpy(LcdBuf[1],&LcdBuf[1][16],80);
LcdPrint16(80,0,temp16,op);
LcdDelay(dl);
voidLcdPutScDispRtoL12(OledCodeDataType*ptr,u8op,u16dl)
u16i,temp16;
for(i=0;i<12;)
i++;
i+=2;
//从左往右
voidLcdPutScDispLtoR12(OledCodeDataType*ptr,u8op,u16dl)
OledCodeDataType*ttptr,*tptr=ptr;
u8i,len,tempbuf[2][96];
len=12;
tptr=ptr+11;
for(i=0;i{if(*(tptr)<127)//显示ASIC码{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][8],&tempbuf[0][0],88);memcpy(&LcdBuf[1][8],&tempbuf[1][0],88);LcdPrint8(0,0,*tptr,op);tptr--;i++;}else//显示汉字{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);memcpy(&LcdBuf[0][16],&tempbuf[0][0],80);memcpy(&LcdBuf[1][16],&tempbuf[1][0],80);ttptr=tptr;temp16=*ttptr;temp16<<=8;ttptr=tptr-1;temp16|=*ttptr;LcdPrint16(0,0,temp16,op);tptr-=2;i+=2;}PutPic((void*)LcdBuf);LcdDelay(dl);}}voidLcdPutScString(OledCodeDataType*ptr,u8op,u8rl,u16dl){switch(rl){caseLIFT_SC:LcdPutScDispLtoR12(ptr,op,dl);break;caseRIGHT_SC:LcdPutScDispRtoL12(ptr,op,dl);break;default:break;}} voidLcdPutPic(u8x,u8y,u8w,u8h,OledCodeDataType*ptr,u8op){u8i;OledCodeDataType*tptr=ptr;if((x>95)||((x+w)>96))return;if((y>1)||((y+h)>2))return;for(i=0;i{if(op){LcdBuf[y][x+i]=*tptr;if(h==2)LcdBuf[y+1][x+i]=*(tptr+w);tptr++;}else{LcdBuf[y][x+i]=~*tptr;if(h==2)LcdBuf[y+1][x+i]=~*(tptr+w);tptr++;}}PutPic((void*)LcdBuf);} //整屏滑动显示voidLcdPutScPic(OledCodeDataType*ptr,u8op,u8qp,u16dl){u8i,j;u8tempbuf[2][96];if(qp){for(i=0;i<96;i++){tempbuf[0][i]=*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=*ptr++;}}else{for(i=0;i<96;i++){tempbuf[0][i]=~*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=~*ptr++;}}switch(op){caseRIGHT_SC://右边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][95-j]=LcdBuf[0][83-j];LcdBuf[1][95-j]=LcdBuf[1][83-j];}for(j=0;j<12;j++){LcdBuf[0][11-j]=tempbuf[0][95-j];LcdBuf[1][11-j]=tempbuf[1][95-j];}for(j=0;j<84;j++){tempbuf[0][95-j]=tempbuf[0][83-j];tempbuf[1][95-j]=tempbuf[1][83-j];}PutPic((void*)LcdBuf);}LcdDelay(dl);break;caseLIFT_SC://左边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][j]=LcdBuf[0][j+12];LcdBuf[1][j]=LcdBuf[1][j+12];}for(j=0;j<12;j++){LcdBuf[0][95-j]=tempbuf[0][11-j];LcdBuf[1][95-j]=tempbuf[1][11-j];}for(j=0;j<84;j++){tempbuf[0][j]=tempbuf[0][j+12];temp
if(*(tptr)<127)//显示ASIC码
memcpy(&tempbuf[0][0],&LcdBuf[0][0],96);
memcpy(&tempbuf[1][0],&LcdBuf[1][0],96);
memcpy(&LcdBuf[0][8],&tempbuf[0][0],88);
memcpy(&LcdBuf[1][8],&tempbuf[1][0],88);
LcdPrint8(0,0,*tptr,op);
tptr--;
memcpy(&LcdBuf[0][16],&tempbuf[0][0],80);
memcpy(&LcdBuf[1][16],&tempbuf[1][0],80);
ttptr=tptr;
temp16=*ttptr;
ttptr=tptr-1;
temp16|=*ttptr;
LcdPrint16(0,0,temp16,op);
tptr-=2;
voidLcdPutScString(OledCodeDataType*ptr,u8op,u8rl,u16dl)
switch(rl)
caseLIFT_SC:
LcdPutScDispLtoR12(ptr,op,dl);
caseRIGHT_SC:
LcdPutScDispRtoL12(ptr,op,dl);
default:
voidLcdPutPic(u8x,u8y,u8w,u8h,OledCodeDataType*ptr,u8op)
if((x>95)||((x+w)>96))
if((y>1)||((y+h)>2))
for(i=0;i{if(op){LcdBuf[y][x+i]=*tptr;if(h==2)LcdBuf[y+1][x+i]=*(tptr+w);tptr++;}else{LcdBuf[y][x+i]=~*tptr;if(h==2)LcdBuf[y+1][x+i]=~*(tptr+w);tptr++;}}PutPic((void*)LcdBuf);} //整屏滑动显示voidLcdPutScPic(OledCodeDataType*ptr,u8op,u8qp,u16dl){u8i,j;u8tempbuf[2][96];if(qp){for(i=0;i<96;i++){tempbuf[0][i]=*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=*ptr++;}}else{for(i=0;i<96;i++){tempbuf[0][i]=~*ptr++;}for(i=0;i<96;i++){tempbuf[1][i]=~*ptr++;}}switch(op){caseRIGHT_SC://右边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][95-j]=LcdBuf[0][83-j];LcdBuf[1][95-j]=LcdBuf[1][83-j];}for(j=0;j<12;j++){LcdBuf[0][11-j]=tempbuf[0][95-j];LcdBuf[1][11-j]=tempbuf[1][95-j];}for(j=0;j<84;j++){tempbuf[0][95-j]=tempbuf[0][83-j];tempbuf[1][95-j]=tempbuf[1][83-j];}PutPic((void*)LcdBuf);}LcdDelay(dl);break;caseLIFT_SC://左边for(i=0;i<8;i++){for(j=0;j<84;j++){LcdBuf[0][j]=LcdBuf[0][j+12];LcdBuf[1][j]=LcdBuf[1][j+12];}for(j=0;j<12;j++){LcdBuf[0][95-j]=tempbuf[0][11-j];LcdBuf[1][95-j]=tempbuf[1][11-j];}for(j=0;j<84;j++){tempbuf[0][j]=tempbuf[0][j+12];temp
LcdBuf[y][x+i]=*tptr;
if(h==2)
LcdBuf[y+1][x+i]=*(tptr+w);
LcdBuf[y][x+i]=~*tptr;
LcdBuf[y+1][x+i]=~*(tptr+w);
//整屏滑动显示
voidLcdPutScPic(OledCodeDataType*ptr,u8op,u8qp,u16dl)
u8i,j;
u8tempbuf[2][96];
if(qp)
tempbuf[0][i]=*ptr++;
tempbuf[1][i]=*ptr++;
tempbuf[0][i]=~*ptr++;
tempbuf[1][i]=~*ptr++;
switch(op)
//右边
for(i=0;i<8;i++)
for(j=0;j<84;j++)
LcdBuf[0][95-j]=LcdBuf[0][83-j];
LcdBuf[1][95-j]=LcdBuf[1][83-j];
for(j=0;j<12;j++)
LcdBuf[0][11-j]=tempbuf[0][95-j];
LcdBuf[1][11-j]=tempbuf[1][95-j];
tempbuf[0][95-j]=tempbuf[0][83-j];
tempbuf[1][95-j]=tempbuf[1][83-j];
//左边
LcdBuf[0][j]=LcdBuf[0][j+12];
LcdBuf[1][j]=LcdBuf[1][j+12];
LcdBuf[0][95-j]=tempbuf[0][11-j];
LcdBuf[1][95-j]=tempbuf[1][11-j];
tempbuf[0][j]=tempbuf[0][j+12];
temp
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1