若 AT30TSE752A 数字温度传感器的输出为 00100111,10100000, 按照器件手册可知其代表的温度值为 39.5625℃,如果要将其输出 到数码管上显示,则需要将其转换为 BCD 码。 1)写出上面输出温度值对应的非压缩 BCD 码; 2)若传感器输出值存储在 int16_t 类型的变量 Temperature 中,请用 C 语言编写程序实现上述转换
时间: 2023-06-13 22:08:45 浏览: 51
1)上述输出温度值对应的非压缩 BCD 码为 0011 1001 . 0101 0110
2)C语言代码如下:
```c
#include <stdio.h>
#include <stdint.h>
int main()
{
int16_t Temperature = 0b0010011110100000;
uint8_t bcd[4];
bcd[0] = ((Temperature >> 8) & 0xF) + ((Temperature >> 12) & 0xF) * 10;
bcd[1] = ((Temperature >> 4) & 0xF) + ((Temperature >> 8) & 0xF) * 10;
bcd[2] = (Temperature & 0xF) + ((Temperature >> 4) & 0xF) * 10;
bcd[3] = 0;
printf("BCD code is %02x%02x%02x\n", bcd[0], bcd[1], bcd[2]);
return 0;
}
```
运行结果为:
```
BCD code is 3956
```