STM32 OLED屏幕SSD1306显示浮点 负数

网上没有找到现成的根据别人写的改编了一个

你的库里没有mode的可以删除

 

效果

//显示负数、浮点数字
//x,y :起点坐标
//num :要显示的数字
//len :数字的位数
//size:字体大小
//mode:0,反色显示;1,正常显示
//@n,小数点后位数,默认为2

void OLED_ShowFNum(u8 x,u8 y,float num,u8 len,u8 size,u8 mode)
{         	
	u8 t,temp,i=0,m=0,n=2;
	u8 enshow=0,pointshow=0;
	u16 k;
	len--;
	if(size==8)m=2;
	if(num<0)
	{
	num=-num;
	i=1;     //负数标志	
	}	
	k=num*OLED_Pow(10,n); //此处为显示一位小数*10转化为整数,若要显示几位就@我(自己想办法)
	for(t=0;t<len;t++)
	{
		temp=(k/OLED_Pow(10,len-t-1 ))%10;
		if(enshow==0&&t<(len-2))
		{
			if(temp==0)
			{
				if(((k/OLED_Pow(10,len-t-2)%10)!=0)&&(i==1))//判断是否为负数且在最高位前一位
				{
					OLED_ShowChar(x+(size/2+m)*t,y,'-',size,mode);
									

					i=0;	                              //清除判断后一位的标志
				}else
		    		OLED_ShowChar(x+(size/2+m)*t,y,'0',size,mode);//如果没到数字就显示0
									

				continue;
			}else enshow=1;		//此处是判断是否要显示数字	
		}
		if(t==len-n)//判断是否为最后一位的前一位(显示一位小数)
		{
			OLED_ShowChar(x+(size/2+m)*t,y,'.',size,mode);
       		OLED_ShowChar(x+(size/2+m)*(t+1),y,temp+'0',size,mode);
			pointshow=1;
			continue;
		}
		if(pointshow==1){	
			OLED_ShowChar(x+(size/2+m)*(t+1),y,temp+'0',size,mode);
			
		}else	
	 		OLED_ShowChar(x+(size/2+m)*t,y,temp+'0',size,mode);
		//一位一位显示下去
	 }
}

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在STM32上的OLED屏幕显示图片,你可以按照以下步骤进行操作: 1. 准备图片:将你想要显示的图片转换为适合OLED屏幕的格式,通常为位图格式(BMP)或无压缩的位图(RAW)格式。确保图片的分辨率与OLED屏幕的分辨率匹配。 2. 引入库文件:在你的STM32项目中引入相应的OLED屏幕驱动库文件,例如SSD1306驱动库。 3. 初始化OLED屏幕:使用驱动库提供的函数初始化OLED屏幕。这通常包括设置通信接口(如I2C或SPI)和发送初始化命令。 4. 显示图片:将转换后的图片数据通过驱动库提供的函数发送到OLED屏幕。这通常涉及到设置显示区域和发送像素数据。 以下是一个示例代码片段,演示了如何使用SSD1306驱动库在STM32显示图片(假设使用I2C通信接口): ```c #include "ssd1306.h" // 定义图片数据数组 const uint8_t image_data[] = { // 图片数据 }; // 初始化OLED屏幕 void OLED_Init() { // 初始化I2C通信接口 // ... // 发送初始化命令到OLED屏幕 ssd1306_Init(); } // 显示图片 void OLED_ShowImage() { // 设置显示区域和坐标 ssd1306_SetColumnAddress(0, OLED_WIDTH - 1); ssd1306_SetPageAddress(0, OLED_HEIGHT / 8 - 1); // 发送图片数据到OLED屏幕 ssd1306_DrawBitmap(image_data, OLED_WIDTH, OLED_HEIGHT); } int main() { // 初始化OLED屏幕 OLED_Init(); // 显示图片 OLED_ShowImage(); while (1) { // 主循环 } } ``` 请注意,上述示例代码仅作为参考,具体的实现可能因使用的OLED屏幕驱动库和硬件配置而有所不同。你需要根据你使用的具体驱动库和硬件进行相应的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值