/***************************************************************************** 函 数 名 : OLED_PrintShort 功能描述 : 将一个Short型数转换成5位数进行显示 输入参数 : uchar8 ucIdxX ucIdxX的范围为0~120 uchar8 ucIdxY ucIdxY为页的范围0~7 SHORT16 sData sData为需要转化显示的数值 输出参数 : none 返 回 值 : none *****************************************************************************/ void OLED_PrintShort(uchar8 ucIdxX, uchar8 ucIdxY, short 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; }
/***************************************************************************** 函 数 名 : OLED_PrintChar 功能描述 : 将一个Char型数转换成3位数进行显示 输入参数 : uchar8 ucIdxX ucIdxX的范围为0~122 uchar8 ucIdxY ucIdxY的范围为0~7 char cData cData为需要转化显示的数值 -128~127 输出参数 : none 返 回 值 : none *****************************************************************************/ void OLED_PrintChar(uchar8 ucIdxX, uchar8 ucIdxY, signed char 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; }
//============================================================== //函数名: //功能描述:输出float的小数部分 //参数:x的范围为0~62,y为页的范围0~7,data为需要转化显示的数值整数部分最多位5位 num表示数位0~4 //返回:无 //============================================================== void OLED_PrintValueFP(uint8 x, uint8 y, unsigned int data, uint8 num) { uint8 m,i,j,k; OLED_P6x8Char(x, y, '.'); m= data/1000; i = (data%1000)/100; j = (data%100)/10; k = data%10; switch(num) { case 1: OLED_P6x8Char(x+6,y,k+48); break; case 2: OLED_P6x8Char(x+6,y,j+48); OLED_P6x8Char(x+12,y,k+48); break; case 3: OLED_P6x8Char(x+6,y,i+48); OLED_P6x8Char(x+12,y,j+48); OLED_P6x8Char(x+18,y,k+48); break; case 4: OLED_P6x8Char(x+6,y,m+48); OLED_P6x8Char(x+12,y,i+48); OLED_P6x8Char(x+18,y,j+48); OLED_P6x8Char(x+24,y,k+48); break; } }
//============================================================== //函数名: void OLED_PrintValueF(byte x, byte y, float data, byte num); //功能描述:将一个float型数转换成整数部分5位带小数和符号的数据并进行显示 //参数:x的范围为0~62,y为页的范围0~7,data为需要转化显示的数值整数部分最多位5位 num表示保留的小数位0~4 //返回:无 //============================================================== void OLED_PrintValueF(uint8 x, uint8 y, float data, uint8 num) { uint8 l,m,i,j,k; //万千百十个 uint8 databiti = 6; //整数位数 unsigned int tempdataui = 0; int tempdataii = (int)data; //整数部分 long int tempdatalp = (long int)((data - (int)data)*10000); //取小数位后4位 //整数部分显示 if(data < 0.0000001) OLED_P6x8Char(x, y,'-'); else OLED_P6x8Char(x, y,'+'); if(tempdataii < 0)tempdataii = - tempdataii; //去掉整数部分负号 tempdataui = tempdataii; l = tempdataui/10000; m= (tempdataui%10000)/1000; i = (tempdataui%1000)/100; j = (tempdataui%100)/10; k = tempdataui%10; if (l != 0) //五位 { OLED_P6x8Char(x+6,y,l+48); OLED_P6x8Char(x+12,y,m+48); OLED_P6x8Char(x+18,y,i+48); OLED_P6x8Char(x+24,y,j+48); OLED_P6x8Char(x+30,y,k+48); } else if(m != 0) //四位 { databiti = 5; OLED_P6x8Char(x+6,y,m+48); OLED_P6x8Char(x+12,y,i+48); OLED_P6x8Char(x+18,y,j+48); OLED_P6x8Char(x+24,y,k+48); } else if(i != 0) //三位 { databiti = 4; OLED_P6x8Char(x+6,y,i+48); OLED_P6x8Char(x+12,y,j+48); OLED_P6x8Char(x+18,y,k+48); } else if(j != 0) //两位 { databiti = 3; OLED_P6x8Char(x+6,y,j+48); OLED_P6x8Char(x+12,y,k+48); } else { databiti = 2; OLED_P6x8Char(x+6,y,k+48); } if(tempdatalp < 0)tempdatalp = - tempdatalp; //去掉小数部分负号 switch(num) { case 0: break; case 1: OLED_PrintValueFP(x + databiti * 6, y, (uint)(tempdatalp / 1000),num);break; case 2: OLED_PrintValueFP(x + databiti * 6, y, (uint)(tempdatalp / 100),num);break; case 3: OLED_PrintValueFP(x + databiti * 6, y, (uint)(tempdatalp / 10),num);break; case 4: OLED_PrintValueFP(x + databiti * 6, y, (uint)(tempdatalp),num);break; } }
//============================================================== //函数名: //功能描述: //参数:x的范围为0~62,y为页的范围0~7,data为需要转化显示的数值整数部分最多位5位 num表示数位0~4 //返回:无 //============================================================== void OLED_PrintValueInt(uint8 x, uint8 y, signed int data, uint8 num) { uint8 z = 0; uint8 m,i,j,k; if (data < 0) { OLED_P6x8Char(x,y,'-'); data = - data; z = 1; } m= data/1000; i = (data%1000)/100; j = (data%100)/10; k = data%10; if (1 == z) { switch(num) { case 1: OLED_P6x8Char(x+6,y,k+48); break; case 2: OLED_P6x8Char(x+6,y,j+48); OLED_P6x8Char(x+12,y,k+48); break; case 3: OLED_P6x8Char(x+6,y,i+48); OLED_P6x8Char(x+12,y,j+48); OLED_P6x8Char(x+18,y,k+48); break; case 4: OLED_P6x8Char(x+6,y,m+48); OLED_P6x8Char(x+12,y,i+48); OLED_P6x8Char(x+18,y,j+48); OLED_P6x8Char(x+24,y,k+48); break; } } else { switch(num) { case 1: OLED_P6x8Char(x,y,k+48); OLED_P6x8Char(x+6,y,' '); break; case 2: OLED_P6x8Char(x,y,j+48); OLED_P6x8Char(x+6,y,k+48); OLED_P6x8Char(x+12,y,' '); break; case 3: OLED_P6x8Char(x,y,i+48); OLED_P6x8Char(x+6,y,j+48); OLED_P6x8Char(x+12,y,k+48); OLED_P6x8Char(x+18,y,' '); break; case 4: OLED_P6x8Char(x,y,m+48); OLED_P6x8Char(x+6,y,i+48); OLED_P6x8Char(x+12,y,j+48); OLED_P6x8Char(x+18,y,k+48); OLED_P6x8Char(x+24,y,' '); break; } } }