STM32 您所在的位置:网站首页 u8的数据范围 STM32

STM32

2023-03-24 11:07| 来源: 网络整理| 查看: 265

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 if(temp==0) { OLED_ShowChar(x+(size1/2)*t,y,' ',size1,mode); continue; } else enshow=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 u8 t,temp,m=0; u8 enshow=0; if(size1==8)m=2; for(t=0;t if(temp==0) { OLED_ShowChar(x+(size1/2+m)*t,y,' ',size1,mode); continue; } else enshow=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 temp=(z_temp/OLED_Pow(10,z_len-t-1))%10; if(enshow==0 && t OLED_ShowChar(x+(size1/2)*t,y,' ',size1,mode); continue; } else enshow=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 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); } }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有