測溫不太準確,捏住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)
2017-5-2 10:53 上傳
點擊文件名下載附件
|