STM32-OLED小数显示函数

这篇具有很好参考价值的文章主要介绍了STM32-OLED小数显示函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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;
			}
			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<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;
			}
			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 < 0)
	{
        OLED_ShowChar(x,y,'0'- 3,size1);
		num =fabs(num);
	}
    else
	OLED_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;
			}
			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<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); 
	}
}

主程序调用:文章来源地址https://www.toymoban.com/news/detail-529173.html

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小数显示函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32+OLED显示数据

    理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能: 显示自己的学号和姓名; 显示AHT20的温度和湿度; 上下或左右的滑动显示长字符。 OLED(Organic Light Emitting Display,中文名有机发光显示器)是指有机半导体材料和发光材料在电场驱动下,通过载流子注

    2024年02月02日
    浏览(33)
  • STM32-OLED显示屏

    *本文采用的OLED显示屏为4针脚IIC显示屏,4针脚分别为GND,VCC,SCL,SDA OLED.C OLED_Font.h main.c

    2024年02月05日
    浏览(49)
  • 基于stm32的oled显示

    目录 1.显示原理  2.接口配置 8080并行接口模式 spi四线 3.程序控制 基于stm32的oled显示(以ALINETEK0.96寸OLED模块为例) ALINETEK0.96寸OLED模块由SSD1306驱动芯片控制: SSD1306的显存总共为128*64bit大小,分为八页,每页为128个字节,共计128*68位,以此对应屏幕的168*64像素,将显存的各位

    2024年02月05日
    浏览(41)
  • STM32F103C8T6—库函数应用I2C/SPI驱动OLED显示中文、字符串

    I2C(Inter-Integrated Circuit) SPI(Serial Peripheral Interface) 传输方式 半双工 全双工 传输速度 低速,100Kbps----4Mbps 高速,30Mbps以上 几线制 4线制:VCC,GND,SCL,SDA 6/7线制:VCC,GND,SCLK(D0),MOSI(D1/SDA),DC,CS/SS 主从模式 多主机总线,通过SDA上的地址信息锁定从机 只有一个主机,主

    2024年02月02日
    浏览(62)
  • STM32——OLED显示屏(4)

    目录 一、调试方式 二、OLED简介 三、OLED硬件电路 四、OLED驱动函数 五、OLED显示屏使用 1、硬件接线图 2、添加OLED驱动函数 3、程序 4、实物展示  六、Keil软件自带调试模式         对于单片机的编程而言,经常会遇到一个很大的问题,就是程序调试,单片机不像电脑,电

    2024年02月03日
    浏览(52)
  • STM32+OLED屏多级菜单显示(三)

            前面两章实现了OLED屏幕显示的基本功能,这一章就做一个多级菜单显示功能         单片机选择STM32F103C8T6最小系统板,OLED屏选择0.96寸OLED显示器,除了单片机和OLED屏之外,还需要三个按键(下一位键、确认键和返回键),当然一个按键也可以(单击、双击和长击

    2024年02月03日
    浏览(39)
  • stm32之27.iic协议oled显示

    屏幕如果无法点亮,需要用GPIO_OType_PP推挽输出,加并上拉电阻 1.显示字符串代码 2.显示图片代码(+unsigned+强制转换(char*)) 汉字显示

    2024年02月10日
    浏览(44)
  • STM32驱动OLED显示汉字,字符------IIC

    目录 一、OLED简介 二、IIC简介 三、代码介绍 四、完整代码 OLED,即有机发光二极管( Organic Light Emitting Diode )。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下

    2023年04月11日
    浏览(49)
  • STM32超声波测距(OLED显示距离)

    超声波原理: 利用声音测距,声音在空气中的速度是340m/s(15℃) 当声音传播时,若遇到障碍物时,就会被反弹回来,通过计时反弹回来的时间就可以计算出从发射端到障碍物的距离 引脚定义: 工作电压:3V-5.5V宽电压供电 测距盲区:2cm最小盲区 接口定义如图 序号 接口定义

    2024年02月04日
    浏览(45)
  • STM32 软件IIC 控制OLED 显示屏

    需要看原理图了

    2024年02月09日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包