久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

溫度測量DSB1820 lcd1602液晶顯示

作者:佚名   來源:本站原創   點擊數:  更新時間:2014年04月10日   【字體:

程序中要用到LCD1602display.h頭文件 可以在我的另一篇文章中取得: http://m.zg4o1577.cn/mcu/3292.html  為同一個文件
#include <reg52.h>
#include <intrins.h>
#include "LCD1602display.h"
sbit DQ=P2^0;    //ds18b20
uint wendu=0;
uchar num,num1;
uint temperature=0;
uchar code range[]="===TEMPERTURE===";
uchar code ASCII[]="0123456789.";
uchar code table0[]="ROME TEMP:00.0C ";
uchar code table1[]="    ERRO !!!    ";
uchar temp[3]={0,0,0};
//********************延時
void delay1ms(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=114;y>0;y--);
}
//*************************初始化
bit init_DS18B20()
{
 bit flag;     //儲存DS18B20是否存在的標志,flag=0,表示存在;flag=1,表示不存在
 DQ=1;
 _nop_();       //先拉高
 DQ=0;
 for(num=0;num<200;num++); //要求保持480~960us
 DQ=1;      //釋放數據線
 for(num=0;num<10;num++); //等待DS18B20響應
 flag=DQ;     // 響應
 for(num=0;num<200;num++); //延時足夠長時間(此延時函數為了防止收不到信號而進入死胡同)
 DQ=1;      //釋放數據線
 return (flag);    //返回檢測成功標志
}
//*******************************寫溫度數據
void DS18B20_WR_CHAR(uchar byte) // 先寫低位
{
 for(num1=0;num1<8;num1++)
 {  
  DQ=1;
  _nop_();
  DQ=0;  //將數據線從高拉低時即啟動寫時序
  for(num=0;num<5;num++);//等待15us
  DQ=byte&0x01;
  for(num=0;num<15;num++); //延時約45us,DS18B20在約15~45us期間從數據線上采樣
  byte>>=1;
  for(num=0;num<1;num++);//延時3us,兩個寫時序間至少需要1us的恢復期 
 }
 DQ=1;//釋放數據線 
}
//**********************************讀出溫度數據
uchar DS18B20_RD_CHAR() //先讀低位
{
 uchar byte=0;
 for(num1=0;num1<8;num1++)
 {
  DQ=1;  
  _nop_();
  DQ=0;  //給個低脈沖 
  _nop_();
  DQ=1;
  for(num=0;num<5;num++);  //延時約15us,使主機在15us內采樣 
  byte>>=1;
  if(DQ==1)
   byte|=0x80;
  else
   byte|=0x00;
  for(num=0;num<1;num++);//延時3us,兩個讀時序之間必須有大于1us的恢復期
 }
 return (byte);
}
//*********************************溫度計算
void DS18B20_WENDU()
{
 uchar temperaturel=0,temperatureh=0;
 if(init_DS18B20()==0)
 {
  DS18B20_WR_CHAR(0xcc);
  DS18B20_WR_CHAR(0x44);
  delay1ms(1000);
  if(init_DS18B20()==0)
  {
   DS18B20_WR_CHAR(0xcc);
   DS18B20_WR_CHAR(0xBE);
   _nop_();
   temperaturel=DS18B20_RD_CHAR();
   temperatureh=DS18B20_RD_CHAR();
   temperature=(temperatureh*256+temperaturel)*0.625;
   init_DS18B20();
  }
  //return (temperature);   
 }
}
//******************************溫度顯示
void display_DS18B20()  
{
 temp[2]=temperature/100%10;
 temp[1]=temperature%100/10;
 temp[0]=temperature%10;
 
 DisplayListChar(0, 1, table0);
 DisplayOneChar(10, 1, ASCII[ temp[2] ] );
 DisplayOneChar(11, 1, ASCII[ temp[1] ]  );
 DisplayOneChar(12, 1, ASCII[10] );
 DisplayOneChar(13, 1, ASCII[ temp[0] ] );
}
//*******************************主函數
main()
{
 InitLCM();
 DisplayListChar(0,0,range);
 DisplayListChar(0,1,table0);
 while(1)
 {
  if( init_DS18B20()==0)  
      { 
    DS18B20_WENDU();
    display_DS18B20();    
  }
 }
}
 

關閉窗口
主站蜘蛛池模板: 天堂久久久久 | 中文字幕理论片 | 欧美黄色片 | 欧美亚洲三级 | 三级黄网站 | 国产精品久久久精品 | 美日韩丰满少妇在线观看 | 欧美日韩精品在线观看 | 国产成人在线观看免费网站 | 成人久久网站 | 亚洲福利视频一区 | 九色自拍 | 久久精品小视频 | 波多野结衣一区二区三区 | 久久99精品久久久久久琪琪 | 成人短视频在线观看 | 亚洲欧洲综合 | 国产成人在线免费视频 | 三级福利视频 | 午夜精品久久久久久久 | 一级欧美一级日韩 | 国产欧美日韩综合精品 | 亚洲国产日韩欧美 | 18成人免费观看网站 | av在线播放不卡 | 免费黄色网址在线观看 | 日韩精品视频网站 | av观看网站 | 免费在线黄色网址 | www.狠狠操.com| 免费毛片网站 | 欧美性猛交99久久久久99按摩 | 狠狠干狠狠操 | 欧美一级免费看 | 中文字幕亚洲一区 | 中文字幕三区 | 超碰91在线 | 18在线观看网站 | 日韩欧美一区二区在线 | 日韩精品免费在线观看 | 中文字幕在线观看免费 |