性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

有關(guān)DS18B20

大家好,最近看DS18B20的程序,有一些不明白,請(qǐng)大家指教!
#include
#define uchar unsigned char
#define uint unsigned int
sbit DS=P2^2;           //define interface
uint temp;             // variable of temperature
uchar flag1;            // sign of the result positive or negative
sbit dula=P2^6;
sbit wela=P2^7;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
                        0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
                        0x87,0xff,0xef};

void delay(uint count)      //delay
{
  uint i;
  while(count)
  {
    i=200;
    while(i>0)
    i--;
    count--;
  }
}
///////功能:串口初始化,波特率9600,方式1///////
void Init_Com(void)
{
     TMOD = 0x20;
     PCON = 0x00;
     SCON = 0x50;
     TH1 = 0xFd;
     TL1 = 0xFd;
     TR1 = 1;
}

void dsreset(void)       //send reset and initialization command
{
  uint i;
  DS=0;
  i=103;
  while(i>0)i--;
  DS=1;
  i=4;
  while(i>0)i--;
}

bit tmpreadbit(void)       //read a bit
{
   uint i;
   bit dat;
   DS=0;i++;          //i++ for delay
   DS=1;i++;i++;
   dat=DS;
   i=8;while(i>0)i--;
   return (dat);
}

uchar tmpread(void)   //read a byte date
{
  uchar i,j,dat;
  dat=0;
  for(i=1;i<=8;i++)
  {
    j=tmpreadbit();
    dat=(j<<7)|(dat>>1);   //讀出的數(shù)據(jù)最低位在最前面,這樣剛好一個(gè)字節(jié)在DAT里
  }
  return(dat);
}

void tmpwritebyte(uchar dat)   //write a byte to ds18b20
{
  uint i;
  uchar j;
  bit testb;
  for(j=1;j<=8;j++)
  {
    testb=dat&0x01;
    dat=dat>>1;
    if(testb)     //write 1
    {
      DS=0;
      i++;i++;
      DS=1;
      i=8;while(i>0)i--;
    }
    else
    {
      DS=0;       //write 0
      i=8;while(i>0)i--;
      DS=1;
      i++;i++;
    }

  }
}

void tmpchange(void)  //DS18B20 begin change
{
  dsreset();
  delay(1);
  tmpwritebyte(0xcc);  // address all drivers on bus
  tmpwritebyte(0x44);  //  initiates a single temperature conversion
}

uint tmp()               //get the temperature
{
  float tt;
  uchar a,b;
  dsreset();
  delay(1);
  tmpwritebyte(0xcc);
  tmpwritebyte(0xbe);
  a=tmpread();
  b=tmpread();
  temp=b;
  temp<<=8;             //two byte  compose a int variable
  temp=temp|a;
  tt=temp*0.0625;
  temp=tt*10+0.5;
  return temp;
}

void delay10ms()            //delay
  {
    uchar a,b;
    for(a=10;a>0;a--)
      for(b=60;b>0;b--);
   }

void display(uint temp)//顯示程序
{
   uchar A1,A2,A2t,A3,ser;
   ser=temp/10;
   SBUF=ser;
   A1=temp/100;
   A2t=temp%100;
   A2=A2t/10;
   A3=A2t%10;
   dula=0;
   P0=table[A1];//顯示百位
   dula=1;
   dula=0;

   wela=0;
   P0=0x7e;
   wela=1;
   wela=0;
   delay(1);

   dula=0;
   P0=table1[A2];//顯示十位
   dula=1;
   dula=0;

   wela=0;
   P0=0x7d;
   wela=1;
   wela=0;
   delay(1);

   P0=table[A3];//顯示個(gè)位
   dula=1;
   dula=0;

   P0=0x7b;
   wela=1;
   wela=0;
   delay(1);
}


void main()
{
uchar a;
Init_Com();
  do
  {
    tmpchange();
   // delay(200);
for(a=10;a>0;a--)
  {   display(tmp());
  }
  }                while(1);
}
我看了它的資料,但是從來沒學(xué)過還是不太懂,資料中介紹了一些讀ROM,跳過ROM的命令,他們都是干什么用的,為什么程序里沒有讀ROM的命令 ?還有它的TH和TL的報(bào)警是怎么回事?怎么編程?請(qǐng)大家指教!
全部回復(fù)(6)
正序查看
倒序查看
ahai0306
LV.4
2
2007-05-14 13:49
當(dāng)一個(gè)I/O口上有多個(gè)18B20時(shí),需要讀ROM,進(jìn)行分辨.只有一個(gè)18B20時(shí)就沒有必要讀ROM了,跳過就可以了……

順便給樓主看一下我的開發(fā)板:
硬件接口:
1:89C51系列單片機(jī)( ISP 單片機(jī),可直接通過串口燒錄更新程序,不用編程器)
2:4 Key + 1Key(int0) 共5個(gè)按鍵
3:2x8字LED數(shù)碼管.
5:4單LED發(fā)光二極管
6:RS232接口(可調(diào)試通信程序)
7:RS485接口(可接入485總線)
8:EEROM 24C32(聯(lián)系IIC總線的使用,和數(shù)據(jù)存儲(chǔ)器的使用)
9:蜂鳴器.
10:9V電源適配器(避免初學(xué)者使用USB口燒壞主板)
11:溫度傳感器DS18B20(一線器件的使用,高精度溫度傳感器的使用)
12:LCD1602液晶屏(藍(lán)屏的,沒聽電視廣告說嘛:藍(lán)瓶的——三精制藥)

軟件實(shí)驗(yàn):
從最簡單的建立KEIL工程,最簡單的單片機(jī)程序開始
以上所有的實(shí)驗(yàn)都有.所有的基礎(chǔ)實(shí)驗(yàn)配有C語言和匯編語言.高級(jí)程序用C語言編寫.
價(jià)格160元.
本開發(fā)板優(yōu)點(diǎn):用到了比較值錢的器件,都是本人在項(xiàng)目開發(fā)中用到的元件,而且程序豐富,結(jié)構(gòu)合理,免費(fèi)升級(jí),不斷增加新程序,3個(gè)技術(shù)群和QQ號(hào)碼技術(shù)支持!最大的優(yōu)點(diǎn)是價(jià)格便宜!
還有QQ在線技術(shù)支持呢
QQ:50501160
QQ群:38210966(這個(gè)群剛剛開通,另外兩個(gè)技術(shù)群已滿)
應(yīng)用領(lǐng)域:
1:學(xué)習(xí)
2:51項(xiàng)目開發(fā)
3:工業(yè)控制
4:其它
0
回復(fù)
2007-05-16 21:02
@ahai0306
當(dāng)一個(gè)I/O口上有多個(gè)18B20時(shí),需要讀ROM,進(jìn)行分辨.只有一個(gè)18B20時(shí)就沒有必要讀ROM了,跳過就可以了……順便給樓主看一下我的開發(fā)板:硬件接口:1:89C51系列單片機(jī)(ISP單片機(jī),可直接通過串口燒錄更新程序,不用編程器)2:4Key+1Key(int0)共5個(gè)按鍵3:2x8字LED數(shù)碼管.5:4單LED發(fā)光二極管6:RS232接口(可調(diào)試通信程序)7:RS485接口(可接入485總線)8:EEROM24C32(聯(lián)系IIC總線的使用,和數(shù)據(jù)存儲(chǔ)器的使用)9:蜂鳴器.10:9V電源適配器(避免初學(xué)者使用USB口燒壞主板)11:溫度傳感器DS18B20(一線器件的使用,高精度溫度傳感器的使用)12:LCD1602液晶屏(藍(lán)屏的,沒聽電視廣告說嘛:藍(lán)瓶的——三精制藥)軟件實(shí)驗(yàn):從最簡單的建立KEIL工程,最簡單的單片機(jī)程序開始以上所有的實(shí)驗(yàn)都有.所有的基礎(chǔ)實(shí)驗(yàn)配有C語言和匯編語言.高級(jí)程序用C語言編寫.價(jià)格160元.本開發(fā)板優(yōu)點(diǎn):用到了比較值錢的器件,都是本人在項(xiàng)目開發(fā)中用到的元件,而且程序豐富,結(jié)構(gòu)合理,免費(fèi)升級(jí),不斷增加新程序,3個(gè)技術(shù)群和QQ號(hào)碼技術(shù)支持!最大的優(yōu)點(diǎn)是價(jià)格便宜!還有QQ在線技術(shù)支持呢QQ:50501160QQ群:38210966(這個(gè)群剛剛開通,另外兩個(gè)技術(shù)群已滿)應(yīng)用領(lǐng)域:1:學(xué)習(xí)2:51項(xiàng)目開發(fā)3:工業(yè)控制4:其它
請(qǐng)大家?guī)蛶兔?謝謝!
0
回復(fù)
abing
LV.8
4
2007-05-19 13:38
@電源插頭
請(qǐng)大家?guī)蛶兔?謝謝!
程序是人家的,從頭到尾你兩個(gè)字“不懂”我想別人也不知從那里說起,我之前用匯編寫過,還在我的博客里有發(fā)布,你可以去看下有沒有新的發(fā)現(xiàn).
0
回復(fù)
whatcall
LV.5
5
2007-05-19 20:39
@電源插頭
請(qǐng)大家?guī)蛶兔?謝謝!
abing問得好.你要先把問題描述清楚.

DS18B20我沒有使用過,我只是根據(jù)你貼出的程序大概回答一下,如有謬誤,請(qǐng)指出.
(1)Q:資料中介紹了一些讀ROM,跳過ROM的命令,他們都是干什么用的?
A: 讀DS18B20中的參數(shù)值 或 發(fā)送控制命令.

(2)Q:為什么程序里沒有讀ROM的命令 ?
A: 這個(gè)不算是嗎?
uchar tmpread(void)   //read a byte date

(3)Q:還有它的TH和TL的報(bào)警是怎么回事?
A: 在溫度的到達(dá)設(shè)定的報(bào)警點(diǎn)會(huì)有報(bào)警指示. TH: 過溫(Temperature High),TL:低溫(Temperature Low).

(4)Q:怎么編程?
A: 你都已經(jīng)貼出了程序,還問怎么編程?或許該補(bǔ)一下C語言和你用的單片機(jī)的知識(shí)了.
0
回復(fù)
bill_gase
LV.3
6
2009-06-20 17:59
@whatcall
abing問得好.你要先把問題描述清楚.DS18B20我沒有使用過,我只是根據(jù)你貼出的程序大概回答一下,如有謬誤,請(qǐng)指出.(1)Q:資料中介紹了一些讀ROM,跳過ROM的命令,他們都是干什么用的?A:讀DS18B20中的參數(shù)值或發(fā)送控制命令.(2)Q:為什么程序里沒有讀ROM的命令?A:這個(gè)不算是嗎?uchartmpread(void)  //readabytedate(3)Q:還有它的TH和TL的報(bào)警是怎么回事?A:在溫度的到達(dá)設(shè)定的報(bào)警點(diǎn)會(huì)有報(bào)警指示.TH:過溫(TemperatureHigh),TL:低溫(TemperatureLow).(4)Q:怎么編程?A:你都已經(jīng)貼出了程序,還問怎么編程?或許該補(bǔ)一下C語言和你用的單片機(jī)的知識(shí)了.
**此帖已被管理員刪除**
0
回復(fù)
2009-07-21 11:48
@bill_gase
**此帖已被管理員刪除**
供應(yīng)DS18B20,特價(jià)銷售,有需要聯(lián)系.
0
回復(fù)
發(fā)