第十六集 DS18B20测温 课后小任务
把温度传感器的数值显示改成两位数,加一小数点,然后小数点后再显示一位。
先在程序中加入转换精度可预设的代码:
- void DS18B20_Init(void)
- {
- DS18B20_Reset(); //1.发送复位命令
- DS18B20_WriteByte(0xcc); //2.跳过ROM命令
- DS18B20_WriteByte(0x4e); //3.写暂存器指令4E
- DS18B20_WriteByte(0x4b); //4.写TH最高限值温度
- DS18B20_WriteByte(0x00); //5.写TL最低限值温度
- DS18B20_WriteByte(0x7f); //写配置寄存器4
- //0x1f : 0.5000°C 转换时间93.75ms
- //0x3f : 0.2500°C 转换时间187.5ms
- //0x5f : 0.1250°C 转换时间375ms
- //0x7f : 0.0625°C 转换时间750ms
- }
复制代码
Temp_18b20 = Temp_18b20/1000; //除1000,再在十位数之后加上小数点,则显示出需要的数值。
- u8 SEG_NUM1[]= //带小数点
- {
- 0xBF, /*'0', 0*/
- 0x86, /*'1', 1*/
- 0xDB, /*'2', 2*/
- 0xCF, /*'3', 3*/
- 0xE6, /*'4', 4*/
- 0xED, /*'5', 5*/
- 0xFD, /*'6', 6*/
- 0x87, /*'7', 7*/
- 0xFF, /*'8', 8*/
- 0xEF, /*'9', 9*/
- 0xF7, /*'A', 10*/
- 0xFC, /*'B', 11*/
- 0xB9, /*'C', 12*/
- 0xDE, /*'D', 13*/
- 0xF9, /*'E', 14*/
- 0xF1, /*'F', 15*/
- 0x40, /*'-', 16*/
- 0x00, /*' ', 17*/
- 0x80, /*'.', 18*/
- };
复制代码
只显示三位数字
- void SEG_Show_U32(u32 num)
- {
- u8 i;
- for(i=0;i<3;i++) //只显示三位数字
- {
- passward[7-i] = num%10;
- num /= 10;
- }
- }
复制代码
demo1.zip
(195.65 KB, 下载次数: 41)
|