OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4653|回复: 4

如何把一个float变量显示到LCD上

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
25
金钱
25
注册时间
2014-11-15
在线时间
0 小时
发表于 2014-11-15 16:00:38 | 显示全部楼层 |阅读模式
5金钱
#include "stm32f10x.h"
#include "bsp_usart1.h"
#include "bsp_ili9341_lcd.h"
#include "bsp_sdfs_app.h"
#include "bsp_adc.h"

extern __IO uint16_t ADC_ConvertedValue;

float ADC_ConvertedValueLocal;        

void Delay(__IO uint32_t nCount)
{
  for(; nCount != 0; nCount--);


uint8_t q;uint8_t w;uint8_t e;uint8_t r;float d;
int main(void)
{
USART1_Config();

ADC1_Init();

while (1)
{
ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*3.3; 
 d=ADC_ConvertedValueLocal*100;
q=(uint8_t)d/1000+48;w=((uint8_t)d-q*1000)/100+48;e=((uint8_t)d-q*1000-w*100)/10+48;r=(uint8_t)d-q*1000-w*100-e*10+48;
printf("\r\n The current AD value = 0x%04X \r\n", ADC_ConvertedValue); 
printf("\r\n The current AD value = %f V \r\n",ADC_ConvertedValueLocal);


LCD_Init();
LCD_Clear(0, 0, 240, 320, BACKGROUND);


Sd_fs_init();
    LCD_DispEnCh(5, 25, (uint8_t *)"输出的电压为", RED);
LCD_DispStr(5, 55, (uint8_t *)q, RED);
LCD_DispStr(55, 55, (uint8_t *)w, RED);  
LCD_DispStr(105, 55, (uint8_t *)e, RED); 
LCD_DispStr(155, 55, (uint8_t *)r, RED); 

Delay(0xffffee);  
}


LCD上显示的“输出电压为”是正常的,但q,w,e,r为乱码,求有什么办法可以把ADC_ConvertedValueLocal变量输出到LCD屏幕上?

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

490

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1229
金钱
1229
注册时间
2012-8-4
在线时间
248 小时
发表于 2014-11-15 16:00:39 | 显示全部楼层
nrf51822蓝牙4.0手环开发板: 淘宝小店
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2014-11-15 16:00:39 | 显示全部楼层
我用的sprintf,先乘以例如1000,再判断大小10 100 1000等,分离出各个位。打印”%d.%d%d%d“,整数位,十分位,百分位,。。。。。
小小蜗牛
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2014-11-15 16:32:07 | 显示全部楼层
q=(uint8_t)d/1000+48;w=((uint8_t)d-q*1000)/100+48;e=((uint8_t)d-q*1000-w*100)/10+48;r=(uint8_t)d-q*1000-w*100-e*10+48;
--------------------------------------------------------------------------
q=(uint8_t)d%10000/1000+48;依此类推
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2014-11-15 16:33:08 | 显示全部楼层
回复【3楼】jiutianshenjian:
---------------------------------
+1
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 03:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表