找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1476|回复: 3
收起左侧

请教,51单片机读出18b20,8位二进制数转ascII码算法原理

[复制链接]
ID:73992 发表于 2022-2-28 20:29 | 显示全部楼层 |阅读模式
18B20读出8位二进制,高四位和低四位经过加30H或者37H只能得到16进制ascII码。85摄氏度在lcd1602上显示16进制55。我想显示十进制数。比如125摄氏度就显示十进制125度,而不是十六进制7d。

IMG_20220228_202341.jpg
回复

使用道具 举报

ID:161164 发表于 2022-2-28 22:56 | 显示全部楼层
给你一个思路

  1. char Temp[] = {"000.0"}

  2. u8_Temp = DS18B20_Temp() * 0.625;
  3. Temp[0] = u8_Temp /1000 % 10 +'0';
  4. Temp[1] = u8_Temp /100 % 10 +'0';
  5. Temp[2] = u8_Temp /10 % 10 +'0';
  6. Temp[4] = u8_Temp  % 10 +'0';

  7. printf_1602(Temp);
复制代码
回复

使用道具 举报

ID:8222 发表于 2022-3-1 11:01 | 显示全部楼层
要加十进制的30就行了,或者象楼上的加'0'。
回复

使用道具 举报

ID:73992 发表于 2022-3-1 21:37 | 显示全部楼层
125 二进制是 0111 1101  除以100 等于 0001 1111 就是十进制31,   31模10 余 1
                    0111 1101  除以10   等于 0011 1110 就是十进制62, 62模10 余2
                    0111 1101  除以1     等于 0111 1101 就是十进制125,125模10 余5
                  然后加上#30H即为这个数的ascII码。
           谢谢楼上两位老师!!
回复

使用道具 举报

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

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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