OLED显示时钟(10)

2019-08-28 23:24

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

【附录二】设计图


OLED显示时钟(10).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:督导管理培训手册(70P)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: