/*文件名:測試DS18B20.C
/功能:使用數碼管測試溫度傳感器
*/
/****************************************************************************************
*包含文件聲明
***************************************************************************************/
#include<reg52.h>
#include"display.h"
#include"DS18B20.h"
#include <intrins.h>ide
/**********************************************************************************
*函數聲明
********************************************************************************/
void delay_50ms(unsigned int ) ; //延時精度50ms
void hextobcd( void) ; //將十六進制轉換爲BCD函數
/************************************************************************************
*全局變量聲明
***********************************************************************************/
extern unsigned char Temperature;
uchar disp_data[4] = {0,0,0,0}; //數碼管顯示數據測試
/**********************************************************************************
*主程序
********************************************************************************/spa
/*******************************************************************************
** 函數名稱:void main ()
** 函數功能:使用數碼管測試溫度傳感器
** 入口參數:void
** 出口參數:void
** 說 明:
**************************************************************************************/
void main(void)
{
Display(disp_data);
delay_50ms(10); blog
DS18B20_Init(); //溫度傳感器初始化
while (1)
{
delay_50ms(1);
DS18B20ConvT(); //轉換溫度
delay_50ms(16); //800ms轉換時間等待
ReadDS18B20(); //讀取溫度
hextobcd(); //將溫度轉換爲BCD
_nop_();
Display(disp_data);
}
}it
/***************************************************************************************
** 函數名稱:void delay_50ms(unsigned int t)
** 函數功能:延時程序
** 入口參數:unsigned int t
** 出口參數:void
** 說 明:延時精度50ms
****************************************************************************************/
void delay_50ms(unsigned int t)
{
unsigned int j;
for(;t>0;t--)
for(j = 6245;j>0;j--)
;
}
/***************************************************************************************
** 函數名稱:void hextobcd( void)
** 函數功能:將十六進制轉換爲BCD
** 入口參數:void
** 出口參數:void
** 說 明:使用了全局變量
***************************************************************************************/
void hextobcd( void)
{
unsigned char high= 0, low = 0, temp =0,high_temp = 0,low_temp =0;
high_temp = (Temperature>>4) *0x16;
low_temp = Temperature&0x0F;
if(low_temp > 9)
{
low_temp = low_temp -10 + 0x10;
}
temp = high_temp + low_temp;
high = temp>>4;
low = temp & 0x0F;
if(low>9)
{
high +=1;
low -=10;
}
disp_data[1]= high;
disp_data[0] = low;
}class