OpenEdv-开源电子网

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

temp-=(u8)temp 已解决

[复制链接]

4

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2013-7-22
在线时间
0 小时
发表于 2013-7-31 14:03:21 | 显示全部楼层 |阅读模式

内部温度传感器部分代码     

  u16 adcx;
  float temp;
  float temperate;         

  adcx=T_Get_Adc_Average(ADC_CH_TEMP,10);
  LCD_ShowxNum(132,130,adcx,4,16,0);//显示ADC的值
  temp=(float)adcx*(3.3/4096);
  temperate=temp;//保存温度传感器的电压值
  adcx=temp;
  LCD_ShowxNum(132,150,adcx,1,16,0);       //显示电压值整数部分
  temp-=(u8)temp;           //减掉整数部分   
  LCD_ShowxNum(148,150,temp*1000,3,16,0X80); //显示电压小数部分

不知上面标红色部分怎么解读,为什么整数部分直接赋给adcx就好了,而小数部分不是,望各位版友解释下

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

刚刚向师傅请教了下,重新复习了C语言知识,现在将学到的和各位分享下,虽很是基础,但还是需要掌握的。
u8 是 unsigned char  8位
u16 是 unsigned short  16位
u32 是 unsigned int 32位
1.取整数
  由temp=(float)adcx*(3.3/4096)得temp为浮点型,而adcx前面定义为16位的无符号整型,则adcx=temp就将temp强制转换为整型,当从浮点数转换成整数时,数字将被取整(丢弃小数位)取其整数部分。
2.取小数
  (u8)temp将原来的float转换成8位的无符号char,则temp=temp-(u8)temp,得小数部分


 

 


将来的你,一定会感谢现在拼命努力的自己!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-31 15:30:49 | 显示全部楼层
因为adcx是个整形的数据,temp是个浮点数据.假设是3.12,那么这个浮点数赋值给整形数据的时候,小数部分就会丢失.这里就是利用这个赋值规律来做的.
至于后面,滤掉整数部分不是更简单了? temp被强制转换为u8,那么就是3,temp-=(u8)temp;就相当于temp=temp-3,那么就得到0.12,不就是把整数部分丢弃了?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2013-7-22
在线时间
0 小时
 楼主| 发表于 2013-7-31 15:36:07 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子哥的解释,要恶补C语言了
将来的你,一定会感谢现在拼命努力的自己!
回复 支持 反对

使用道具 举报

23

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-10-18
在线时间
1 小时
发表于 2015-3-16 13:46:58 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,液晶屏显示部分我跳过来了,还没学。所以没看很懂,弱弱的问一句,整数部分和小数部分之间的小数点是哪句程序实现的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-16 19:03:18 | 显示全部楼层
回复【4楼】笨笨的小马驹爱奔跑:
---------------------------------
固定就是只有1个整数,3个小数。
所以不需要判定小数点所在的位置。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-25 05:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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