OLED_SetPos(ucIdxX, ucIdxY);
for(i = 0;i < 14;i++) {
for(i = 0; i < 14; i++) OLED_WrDat(0); {
OLED_WrDat(F14x16[usAddress]); usAddress++; }
OLED_SetPos(ucIdxX,ucIdxY + 1);
for(i = 0;i < 14;i++) {
OLED_WrDat(F14x16[usAddress]); usAddress++; } j += 2; }
else //显示空白字符 {
OLED_SetPos(ucIdxX,ucIdxY); for(i = 0;i < 14;i++) {
OLED_WrDat(0); }
OLED_SetPos(ucIdxX,ucIdxY + 1);
} j++; }
ucIdxX += 14; } return; }
VOID OLED_PXx16MixStr(UCHAR8 ucIdxX, UCHAR8 ucIdxY, UCHAR8 ucDataStr[]) {
UCHAR8 ucTmpStr[3]; UCHAR8 i = 0;
while(ucDataStr[i] != '\\0') {
if(ucDataStr[i] > 127) {
ucTmpStr[0] =
ucDataStr[i];
ucTmpStr[1] = ucDataStr[i + 1];
ucTmpStr[2] = '\\0'; //汉字为两个字节
OLED_P14x16Str(ucIdxX, ucIdxY, ucTmpStr); //显示汉字 ucIdxX += 14;
i += 2; } else {
ucTmpStr[0] =
ucDataStr[i];
ucTmpStr[1] = '\\0'; //字母占一个字节
OLED_P8x16Str(ucIdxX, ucIdxY, ucTmpStr); //显示字母 ucIdxX += 8; i += 1; } } return; }
VOID OLED_PrintChar(UCHAR8 ucIdxX, UCHAR8 ucIdxY, CHAR8 cData) {
USHORT16 i, j, k, usData; if(cData < 0) {
OLED_P6x8Char(ucIdxX, ucIdxY, '-'); usData =
(USHORT16)(-cData); } else {
OLED_P6x8Char(ucIdxX, ucIdxY, '+');
usData = (USHORT16)cData; }
i = usData / 100; j = (usData % 100) / 10;
k = usData % 10; OLED_P6x8Char(ucIdxX+6, ucIdxY, i+48);
OLED_P6x8Char(ucIdxX+12, ucIdxY, j+48);
OLED_P6x8Char(ucIdxX+18, ucIdxY, k+48); return; }
VOID OLED_PrintShort(UCHAR8 ucIdxX, UCHAR8 ucIdxY, SHORT16 sData) {
USHORT16 i, j, k, l, m, usData; if(sData < 0) {
OLED_P6x8Char(ucIdxX,ucIdxY,'-'); usData =
(USHORT16)(-sData); } else {
OLED_P6x8Char(ucIdxX,ucIdxY,'+'); usData = (USHORT16)sData;
}
l = usData / 10000;
m = (usData % 10000) /1000; i = (usData % 1000) / 100; j = (usData % 100) / 10; k = usData % 10;
OLED_P6x8Char(ucIdxX+6, ucIdxY, l+48);
OLED_P6x8Char(ucIdxX+12, ucIdxY, m+48);
OLED_P6x8Char(ucIdxX+18, ucIdxY, i+48);
OLED_P6x8Char(ucIdxX+24, ucIdxY, j+48);
OLED_P6x8Char(ucIdxX+30, ucIdxY, k+48); return; } VOID OLED_PrintImage(UCHAR8 *pucTable,
USHORT16
usRowNum,
USHORT16 usColumnNum) {
UCHAR8 ucData; USHORT16 i,j,k,m,n; USHORT16 usRowTmp;
m = usRowNum >> 3; //计算图片行数以8位为一组完整的组数
n = usRowNum % 8; //计算分完组后剩下的行数
for(i = 0; i < m; i++) //完整组行扫描 {
OLED_SetPos(0,(UCHAR8)i); usRowTmp = i << 3; //计算当前所在行的下标 for(j = 0; j < usColumnNum; j++) //列扫描 {
ucData = 0;
for(k = 0; k < 8; k++) //在i组中对这8行扫描 {
ucData = ucData >> 1;
if((pucTable
+
(usRowTmp + k) * usColumnNum)[j] == OLED_IMAGE_WHITE) {
ucData = ucData | 0x80;
} }
OLED_WrDat(ucData); }
}
OLED_SetPos(0,(UCHAR8)i); for(j = 0; j < usColumnNum; j++) {
ucData = 0;
for(k = 0; k < n; k++) //对剩下的行扫描 {
ucData = ucData >> 1; if((pucTable
+
(usRowTmp + k) * usColumnNum)[j] == OLED_IMAGE_WHITE) {
ucData = ucData | 0x80;
} }
ucData = ucData >> (8 - n); OLED_WrDat(ucData);
}
return; }
函 数 名 : OLED_P16x32Image 功能描述 : 显示一个大字体数字图形
输入参数 : UCHAR8 ucIdxX 为显示的横坐标0~112
UCHAR8 ucIdxY 为纵坐标地址0~7
UCHAR8 ucData 要显示的数字0~10,对应数据到二维数组Big_NUMBR[][64]中取****/
VOID OLED_P16x32Image(UCHAR8 ucIdxX,
UCHAR8 ucIdxY, UCHAR8 ucData) {
UCHAR8 i; if(ucIdxX > 112) {
ucIdxX = 0; ucIdxY += 1; }
OLED_SetPos(ucIdxX, ucIdxY); for(i = 0; i < 16; i++) {
OLED_WrDat(Big_NUMBR[ucData][i]); }
OLED_SetPos(ucIdxX, ucIdxY+ 1); // 显示第二行16个字节 for(i = 0; i < 16; i++) {
OLED_WrDat(Big_NUMBR[ucData][i+ 16] );
}
OLED_SetPos(ucIdxX, ucIdxY+ 2 ); //显示第三行16个字节 for(i = 0; i < 16; i++) {
OLED_WrDat(Big_NUMBR[ucData][i+ 32] ); }
OLED_SetPos(ucIdxX, ucIdxY+ 3 ); //显示第四行16个字节
for(i = 0; i < 16; i++) {
OLED_WrDat(Big_NUMBR[ucData][i+ 48] ); } return; } #endif
【附录二】设计图
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库OLED显示时钟(10)在线全文阅读。
相关推荐: