测温不太准确,捏住18B29温度只到34.6℃,应该是没多点采样加滤波,但是因为单独写了DS18B20的头文件和.C文件,拓展编程也方便,无非就是改个p口就是了
- #include <reg51.h>
- #include <hd7279.h>
- #include <delay.h>
- #include "DS18B20.h"
- unsigned int Temp_Buffer = 0;
- main()
- {
-
- Temp_Buffer = Get_temp(); //读取DS18B20的值
- Delay_ms(1000); //等待1s等待DS18B20数据稳定。否则会出现85℃。
- while(1)
- {
- Delay_ms(10);
- send_byte (CMD_RESET);
- Temp_Buffer = Get_temp();
- write7279(UNDECODE+7, 0X0F); //第8位led显示“t”
- write7279(UNDECODE+6, 0X09); //第7位led显示“=”
- if(flag_temper == 1) // 根据温度标志显示正负
- {
- write7279(UNDECODE+5, 0X08); //若为负第6位显示“-”
- }
- if( Temp_Buffer/1000 != 0 ) // 如果第一位为0则不显示
- {
- write7279(DECODE0+4,Temp_Buffer/1000); // 显示百位值
- }
- if( Temp_Buffer/1000 == 0 && Temp_Buffer%1000/100 == 0 ) //百位十位都为0则不显示
- {
- }
- else
- {
- write7279(DECODE0+3,Temp_Buffer%1000/100); // 显示十位值
- }
- write7279(DECODE0+2,Temp_Buffer%100/10+0x80); // 显示个位值与小数点
- write7279(DECODE0+1,Temp_Buffer%10);
- write7279(UNDECODE, 0X4e);
-
- Delay_ms(500);
- }
-
-
- }
-
-
复制代码
下载:
DS18B20.zip
(50.63 KB, 下载次数: 7)
|