void ShowWord(uchar ucCharRow, uchar ucCharCol, uchar *sucWord) { uchar data uci; uchar ucj; uchar xdata ucHzDot[32]; //必须设置在DATA区,因为SelectFlashPageAddress(0);在下面
uchar ucX; //一个区中列计数器 uchar ucY; if(sucWord[0] > 0x80 && sucWord[1] > 0x80) { //if HZ LCD_GetHZDot(sucWord[0],sucWord[1],ucHzDot); //获取汉字的点 阵 ucX = ucCharCol*8; ucY = ucCharRow*16; for(uci=0;uci<16;uci++) { for(ucj=0;ucj<8;ucj++) { if(ucHzDot[2*uci] & MaskBit[ucj]) { LCD_Set_Pixel(ucX+ucj,uci+ucY,1); } else { LCD_Set_Pixel(ucX+ucj,uci+ucY,0); } if(ucHzDot[2*uci+1] & MaskBit[ucj]) { LCD_Set_Pixel(ucX+8+ucj,uci+ucY,1); } else { LCD_Set_Pixel(ucX+8+ucj,uci+ucY,0); } } }
} else { //if english LCD_GetEnglishCharDot(sucWord[0],ucHzDot); ucX = ucCharCol*8; ucY = ucCharRow*16; for(uci=0;uci<16;uci++) { for(ucj=0;ucj<8;ucj++) { if(ucHzDot[uci] & MaskBit[ucj]) { LCD_Set_Pixel(ucX+ucj,uci+ucY,1); } else { LCD_Set_Pixel(ucX+ucj,uci+ucY,0); } } } } } 请问以上您写的函数取到的汉字或英文点阵放在什么地方。是不是可以不需要用你LCD_Set_Pixel();函数。直接把取到的点阵送到LCD啊? for(uci=0;uci<16;uci++) { for(ucj=0;ucj<8;ucj++) { if(ucHzDot[2*uci] & MaskBit[ucj]) { LCD_Set_Pixel(ucX+ucj,uci+ucY,1); } else { LCD_Set_Pixel(ucX+ucj,uci+ucY,0); } if(ucHzDot[2*uci+1] & MaskBit[ucj]) { LCD_Set_Pixel(ucX+8+ucj,uci+ucY,1); } else { LCD_Set_Pixel(ucX+8+ucj,uci+ucY,0); } } } 这个部分的用法为什么这么奇怪,是不是您用的LCD的接口不是并行的啊?若是并行的应该怎么改动下。 相关链接:https://bbs.21ic.com/club/bbs/ShowAnnounce.asp?v=&ID=3074096 |