STM32-OLED小数显示函数

​ OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代的平面显示屏新兴应用技术。

​ OLED显示和传统的LCD显示不同,其可以自发光,所以不需要背光灯,这使得OLED显示屏相对于LCD显示屏尺寸更薄,同时显示效果更优。 常用的OLED屏幕有蓝色、黄色、白色等几种。屏的大小为0.96寸,像素点为 128*64,所以我们称为0.96oled屏或者12864屏。

OLED屏幕特点

1.模块尺寸:23.7 *23.8mm

2.电源电压:3.3-5.5V

3.驱动芯片:SSD1306

4.测试平台:提供 k60/k10,9s12XS128,51,stm32,stm8等单片机

OLED网上的驱动代码一般厂商发货会提供驱动程序,但是显示小数很多都没有编写。这里编写了一段可显示任意位小数的代码(以正点原子代码为基础),需要显示有符号的小数程序稍微修改即可。

小数显示程序:

//显示数字
//x,y :起点坐标
//num :要显示的小数字
//z_len :整数数字的位数
//f_len :小数数字的位数
//size:字体大小
//mode:0,反色显示;1,正常显示
//z_len为整数显示位数,f_len为小数显示位数,size1为字体大小
void OLED_Showdecimal(u8 x,u8 y,float num,u8 z_len,u8 f_len,u8 size1,u8 mode)
{           u8 t,temp;u8 enshow=0;int z_temp,f_temp;      z_temp=(int)num;//整数部分for(t=0;t<z_len;t++){temp=(z_temp/OLED_Pow(10,z_len-t-1))%10;if(enshow==0 && t<(z_len-1)){if(temp==0){OLED_ShowChar(x+(size1/2)*t,y,' ',size1,mode);continue;}elseenshow=1;}OLED_ShowChar(x+(size1/2)*t,y,temp+'0',size1,mode); }//小数点OLED_ShowChar(x+(size1/2)*(z_len),y,'.',size1,mode); f_temp=(int)((num-z_temp)*(OLED_Pow(10,f_len)));//小数部分for(t=0;t<f_len;t++){temp=(f_temp/OLED_Pow(10,f_len-t-1))%10;OLED_ShowChar(x+(size1/2)*(t+z_len)+5,y,temp+'0',size1,mode); }
}

整数显示程序:

//显示数字
//x,y :起点坐标
//num :要显示的数字
//len :数字的位数
//size:字体大小
//mode:0,反色显示;1,正常显示
void OLED_ShowNum(u8 x,u8 y,u32 num,u8 len,u8 size1,u8 mode)
{u8 t,temp,m=0;u8 enshow=0;if(size1==8)m=2;for(t=0;t<len;t++){temp=(num/OLED_Pow(10,len-t-1))%10;if(enshow==0 && t<(len-1)){if(temp==0){OLED_ShowChar(x+(size1/2+m)*t,y,' ',size1,mode);continue;}elseenshow=1;}OLED_ShowChar(x+(size1/2+m)*t,y,temp+'0',size1,mode); }
}

有符号小数显示程序:

//显示数字
//x,y :起点坐标
//num :要显示的小数字
//z_len :整数数字的位数
//f_len :小数数字的位数
//size:字体大小
//mode:0,反色显示;1,正常显示
//z_len为整数显示位数,f_len为小数显示位数,size1为字体大小
void OLED_Showdecimal(u8 x,u8 y,float num,u8 z_len,u8 f_len,u8 size1,u8 mode)
{           u8 t,temp;u8 enshow=0;int z_temp,f_temp;      z_temp=(int)num;//符号部分 位置根据情况调节一下if(num < 0){OLED_ShowChar(x,y,'0'- 3,size1);num =fabs(num);}elseOLED_ShowChar(x,y,' ',size1);//第一位显示符号//整数部分for(t=0;t<z_len;t++){temp=(z_temp/OLED_Pow(10,z_len-t-1))%10;if(enshow==0 && t<(z_len-1)){if(temp==0){OLED_ShowChar(x+(size1/2)*t,y,' ',size1,mode);continue;}elseenshow=1;}OLED_ShowChar(x+(size1/2)*t,y,temp+'0',size1,mode); }//小数点OLED_ShowChar(x+(size1/2)*(z_len),y,'.',size1,mode); f_temp=(int)((num-z_temp)*(OLED_Pow(10,f_len)));//小数部分for(t=0;t<f_len;t++){temp=(f_temp/OLED_Pow(10,f_len-t-1))%10;OLED_ShowChar(x+(size1/2)*(t+z_len)+5,y,temp+'0',size1,mode); }
}

主程序调用:

int main(void)
{u8 t=' ';float vol_1=78.566;float vol_2=9.21;delay_init();OLED_Init();OLED_ColorTurn(0);//0正常显示,1 反色显示OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示while(1){OLED_Refresh();delay_ms(500);OLED_Clear();OLED_Showdecimal(8,16,vol_1,2,3,16,1); OLED_Showdecimal(64,16,vol_2,1,2,16,1); OLED_ShowString(20,32,"2014/05/01",16,1);OLED_ShowString(0,48,"ASCII:",16,1);  OLED_ShowString(63,48,"CODE:",16,1);OLED_ShowChar(48,48,t,16,1);//显示ASCII字符      t++;if(t>'~')t=' ';OLED_ShowNum(103,48,t,3,16,1);OLED_Refresh();delay_ms(500);OLED_Clear();OLED_ShowChinese(0,0,0,16,1);  //16*16 中OLED_ShowChinese(16,0,0,24,1); //24*24 中OLED_ShowChinese(24,20,0,32,1);//32*32 中OLED_ShowChinese(64,0,0,64,1); //64*64 中OLED_Refresh();delay_ms(500);OLED_Clear();OLED_ShowString(0,0,"ABC",8,1);//6*8 “ABC”OLED_ShowString(0,8,"ABC",12,1);//6*12 “ABC”OLED_ShowString(0,20,"ABC",16,1);//8*16 “ABC”OLED_ShowString(0,36,"ABC",24,1);//12*24 “ABC”OLED_Refresh();delay_ms(500);}
}

STM32-OLED小数显示函数相关推荐

  1. STM32+OLED巧妙显示汉字英文

    STM32+OLED巧妙显示汉字英文 目标:实现OLED_Print函数,可以在OLED屏幕上显示中英文和符号混合的任意字符串 汉字编码原理 ASCII码显示的原理这里不再说明,一般的OLED例程都有 ...

  2. STM32分别实现温湿度的采集和OLED显示屏显示数据

    目录 一.温湿度的采集 1.1了解I2C总线协议 1.2实现AHT20采集程序 二.OLED显示屏显示数据 2.1了解SPI 2.2使用OLED显示 2.2.1实验题目: 2.2.2实验过程 三.总结 ...

  3. stm32汉字字库显示实验与OLED的使用(开始于2021-09-01)

    stm32汉字字库显示实验与OLED的使用 1.字库的使用 GBK字库的简介: GBK库的由两部分组成,如下图: 高位从0x81开始是为了兼容ASII字符,因为未扩展的ASII字符是从0-128,即0 ...

  4. STM32小项目之dht11在oled上显示温湿度

    前言: 实现一个简单的功能,最终多个功能合起来,就是一个大项目,也叫模块化编程:本篇文章不在讲述oled的用法和代码,因为代码太多了,粘不过来,需要的可以去看我另一篇文章专门讲解oled的. 本文牵扯 ...

  5. 第八章 STM32+SGP气体传感器+DHT11温湿度传感器+OLED模块显示室内温湿度、二氧化碳和甲醛浓度

    在智能家居相关的物联网毕设中,少不了室内气体检测功能,比如检测烟雾,检测一氧化碳,检测甲醛等有害气体浓度,别人有的,我们也要有!所以本章给大家介绍一款气体传感器--SGP气体传感器,这款气体传感器能够 ...

  6. 【嵌入式】STM32基于SPI通信协议OLED屏显示

    STM32基于SPI通信协议OLED屏显示 一.SPI协议和OLED介绍 1.SPI协议介绍 物理层 协议层 2.OLED显示屏介绍 二.显示个人学号姓名实验 1.题目要求 2.代码部分 1.完整代码 ...

  7. 基于stm32的OLED显示屏显示

    文章目录 一.内容 二.关于SPI 三.关于OLED 四.功能实现 1)实验准备 2)代码准备 1.显示学号和姓名 2.显示AHT20的温度和湿度 3.滑动显示长字符 3)结果展示 五.参考内容 六. ...

  8. 基于STM32的0.96寸OLED显示屏显示数据和滚动显示

    文章目录 一.SPI 二.OLED显示屏显示数据 2.1 代码实现 2.2 结果展示 三.0.96寸OLED滚动显示数据 3.1 滚动方式 3.2 对显示文字进行取模 3.3 代码实现 3.4 结果展 ...

  9. STM32读取DS18B20温度,并在OLED上显示

    部分代码来源于网络,侵权删 本文使用硬件:STM32F103C8T6最小系统板.IIC协议0.96寸OLED屏幕显示.DS18B20传感器 实现功能:在OLED上显示出DS18B20采集到的温度,精确 ...

最新文章

  1. 「留光」1小时:中科大让我们离「量子U盘」又近了一步
  2. 腾讯云工业互联网助力平台发布 推动制造业“数字化”蝶变
  3. Idea使用Lombok简化实体类代码
  4. 7-spark学习笔记-spark性能调优
  5. 电子管计算机的操作者是谁,大一计算机第一学期考试重点及相应习题 作者
  6. Python 应用领域
  7. 远程桌面提示:身份验证错误 要求的函数不受支持
  8. 学完计组后,我马上在「我的世界」造了台显示器,你敢信?
  9. python 100题_python 100题
  10. 二-Java基础-作业-基础语法
  11. Selenium2 + Python3.6实战(五):生成HTML测试报告 Invalid argument
  12. vs2012 express 密钥
  13. java经典算法(三)---zws
  14. CT图像重建简要介绍
  15. 下行控制信息 - 下行DCI
  16. goldendict无法导入字典
  17. 蓝桥杯——罗马数字转换器
  18. SpringBoot将图片/文件传至前端
  19. python爬取支付宝基金数据_python爬取支付宝账单
  20. 求你了别秀了——Reversion Count

热门文章

  1. mongodb compass连接不上远程服务器(亲测 已解决)
  2. 仿热血江湖NpcClass群攻查找范围Npc
  3. microsoft sqlserver 驱动
  4. java面向对象解决兔子问题_7-Java面向对象-多态
  5. 【 Qt Installer Framework安装包制作】
  6. LOJ #10166. 数字游戏【数位DP】
  7. JavaScript 数组filter方法完整介绍
  8. SSM整合(无Maven)
  9. java学习--硬件\软件\常用快捷键\常用DOS命令
  10. Thread.isbackground用法