单片机好友请帮忙,最近在学用C编程,做温度显示时,传感器返回给单片机不是十六进制数据么,

[复制链接]
查看11 | 回复1 | 2011-4-21 14:18:00 | 显示全部楼层 |阅读模式
在两位数码管显示时,假如TEMP=温度 TEMP/10, TEMP%10,在数码管上显示十进制温度值 这怎么能成立呢 我以前学的汇编,有数据转换十进制指令,这里TEMP是怎么转换给单片机的(显示十进制),还有DS1302时写入时要用BCD码,我看到了Value=(Value/10)*16+Value%10;,这因该是转换,这里有些不懂,我需要记住则个公式么?请求专家详解,小谢过了

回复

使用道具 举报

千问 | 2011-4-21 14:18:00 | 显示全部楼层
TEMP/10, TEMP%10
temp应该是整形数据,在c语言中,整数相除直接得到的是整数,舍去小数部分,譬如:21/10=2;而%是个求余运算,21%10=1;相当于汇编中的div ab;a为商,b为余数。bcd码是用四位二进制数表示一位十进制数,仍然用21来举例子,21用二进制表示是10101,而用bcd码是100001,而cpu只认识二进制数,也就是说,你在输出bcd码时要输出的100001实际上相当于输出33,现在我们再来看这个公式Value=(Value/10)*16+Value%10;33=(21/10)*16 +21%10。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行