測試DS18B20

測試DS18B20  

 

 

/*文件名:測試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

相關文章
相關標籤/搜索