OLED显示小数驱动程序(基于stm32f103)

驱动程序:

//z_len为整数显示位数,f_len为小数显示位数,size2为字体大小
void OLED_Showdecimal(u8 x,u8 y,float num,u8 z_len,u8 f_len,u8 size2)
{         	
	u8 t,temp;
	u8 enshow;
	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+(size2/2)*t,y,' ',size2);
				continue;
			}
			else
			enshow=1;
		}
		OLED_ShowChar(x+(size2/2)*t,y,temp+'0',size2); 
	}
	//小数点
	OLED_ShowChar(x+(size2/2)*(z_len),y,'.',size2); 
	
	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+(size2/2)*(t+z_len)+5,y,temp+'0',size2); 
	}
}

运行主函数程序:

int main(void)
{	
	float vol_1=78.566;
	float vol_2=9.2;
	
	OLED_Init();
	OLED_On();
	OLED_Clear();

  while(1)
	{			
		OLED_Showdecimal(35,0,vol_1,2,3,16);    //显示函数
		OLED_Showdecimal(35,2,vol_2,1,2,16);
	}	
}

实验现象:

在这里插入图片描述
第二个小数显示有所偏差,这是因为计算器的精度有限,有一些十进制小数用二进制表示会出现无限循环,比如0.1(十进制)=0.00011001100…(以1100循环)(二进制),由于计算机精度有限,会截取后面的一部分,由此造成误差。

  • 40
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 23
    评论
基于STM32F103OLED的波形显示是一种通过STM32F103微控制器驱动OLED屏幕显示波形的应用。STM32F103是一款基于ARM Cortex-M3内核的单片机,具有丰富的外设资源,包括GPIO、定时器、SPI等。OLED(有机发光二极管)是一种具有自发光和高对比度特点的显示技术。 首先,我们需要将STM32F103OLED连接起来。通过SPI接口或I2C接口连接STM32F103OLED屏幕。然后,在STM32F103的程序中,我们需要配置SPI或I2C的相关寄存器,设置通信参数和时钟频率,以确保STM32F103能够正确地与OLED通信。 接下来,我们需要准备波形数据。可以通过STM32F103的ADC模块进行模拟信号采样,或者通过其他方式获取数字化的波形数据。将获取的波形数据存储在STM32F103的存储器中,例如数组或缓冲区。 然后,在STM32F103的程序中,我们需要编写相应的代码来读取波形数据,并将其发送给OLED屏幕进行显示。根据OLED驱动程序,我们可以通过SPI或I2C发送命令和数据来控制OLED显示。通过逐点方式,将波形数据发送给OLED,以在屏幕上显示出波形。 为了实时显示波形,我们可以使用定时器中断来定时刷新屏幕上的波形数据。在每个定时器中断中,我们可以更新屏幕的显示,将新的波形数据发送给OLED进行更新。 此外,为了更好地显示波形,我们可以添加一些图形化的界面元素,例如坐标轴、刻度线等,以增强用户的可视化体验。 总而言之,基于STM32F103OLED的波形显示是一种通过STM32F103微控制器驱动OLED屏幕显示波形的应用。通过合理的硬件连接和程序设计,我们可以实现波形的实时显示,并提供更好的用户体验。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr Justin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值