PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cảm biến (http://www.picvietnam.com/forum/forumdisplay.php?f=18)
-   -   giao tiep PIC16F877-DS1620......? (http://www.picvietnam.com/forum/showthread.php?t=2536)

andyhug 30-06-2008 07:50 AM

giao tiep PIC16F877-DS1620......?
 
Các bác xem giúp em đoạn chương trình sau, em mô phỏng bằng Proteus7.2 SP2 mà nhiệt độ đo được hiển thị trên LCD LMB162A toàn là 127 độ? Các bác chỉ giáo cho em hàm DS1620_read. Thanks các bác! Quên, em dung trình biên dịch CCSC for Pic 4.049.

Code:

//*-----------------------------------------------------------------------------
//* Tac gia      : Pham Thanh Cong
//* Ngay viet    : 18/06/2008
//* Phan cung    : PIC16F877, LCD 2x16[5x7]
//* Chuong trinh  : do nhiet do dung DS1620 hien thi tren LCD LMB162A
//*=============================================================================*/
#include <16F877.h>
#include <stdlib.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP  // dat cau hinh cho PIC
#use delay(clock=4000000)
#byte PORTB    = 0x06
#define LCD PORTB
#bit RA2        = 0x05.2
#bit RA1        = 0x05.1
#bit RA0        = 0x05.0
#define RS  RA0            // chan chon thanh ghi =0 lenh hay =1 du lieu
#define RW  RA1            // =1 doc hay =0 ghi
#define E  RA2            // H-to-L de cho fep LCD
#bit RD1        = 0x08.1  // chan data cua DS1620
#bit RD2        = 0x08.2  // chan dong ho
#bit RD3        = 0x08.3  //
#define DQ    RD1        // =0 output, =1 input
#define CLK    RD2
#define RST    RD3

// khai bao cac ham su dung trong chuong trinh
void comandwrt(void);
void datawrt(void);
void lcd_gotoxy(byte x, byte y);
void main(void);
void DS1620_InitTemp(void);
unsigned int DS1620_GetTemp(void);
void DS1620_Write(unsigned char Data);
int DS1620_Read(void);


const unsigned char dongchu[]="Nhiet do:";
int i = 0;

//xxxxxxxxxxxxxxxxxxxxxxxxxxx chuong trinh LCD xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//*Ham yeu cau goi lenh dieu khien LCD*/
void comandwrt(void)
{
 RS = 0;
 RW = 0;
 E  = 1;
 E  = 0;
 delay_ms(1);
}
//*Ham yeu cau goi du lieu hien thi len LCD*/
void datawrt(void)
{
 RS = 1;
 RW = 0;
 E  = 1;
 E  = 0;
 delay_ms(1);
}
void lcd_gotoxy(int x, int y)
{  int address;
  switch(y)
      {
        case 1:  address=0;
                  address+=x-1;
                  LCD = (0x80 + address);
                  break;
        case 2:  address=0;
                  address+=x-1;
                  LCD = (0xC0 + address);
                  break;
        default : break;
      }
}

//xxxxxxxxxxxxxxxxxxxxxxxxxxx chuong trinh DS1620 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
void DS1620_InitTemp(void)
{
// Sets up the config register to poll continuously for Temp.
// DS1620 also starts taking temperature readings.
      DS1620_Write(0x0C); // dat cau hinh Config
      DS1620_Write(0x00); // che do chuyen doi lien tuc
} // End DS1620_InitTemp


unsigned int DS1620_GetTemp(void)
{
// Returns hex value of last temperature reading.
unsigned int16 Data;
      DS1620_Write(0xAA);    // doc nhiet do
      DS1620_Write(0xA2);
      Data = DS1620_Read();  // nhiet do luu vao bien data
      if(bit_test(Data,8))
      {
        Data = -Data / 2;
      }
      Data = Data / 2;
return(Data);
} // End DS1620_GetTemp


void DS1620_Write(unsigned char Data)
{
  unsigned char i;
  output_low(pin_D1);      // DQ=0, thiet lap DQ la cong ra
  output_high(pin_D3);    // RST=1, activiate DS1620
  for (i=1; i<=8; i++)
  {
      output_low(pin_D2);    // CLK=0
      DQ = (Data && 1);      // DQ=data AND 1, tuc la xuat data ra chan RD1 cua PIC
      output_high(pin_D2);    // CLK=1
      delay_us(4);   
      Data = Data >> 1; // dich fai data di 1 bit
  }
  output_low(pin_D3);        // RST=0, deactiviate DS1620
  delay_us(10);


int DS1620_Read(void)
{
  int16 Data;
  unsigned char i;
  output_high(pin_D3); // RST = 1
  DQ = 1; // DQ = 1 : input
  DS1620_Write(0xAA); 
  for (i=1; i<=9; i++)
  {
      output_low(pin_D2);  // CLK = 0
      Data |= DQ; // Data = DQ 
      output_high(pin_D2); // CLK = 1 
      delay_us(10);
      Data = Data << 1;
  } 
  output_low(pin_D3);  // RST = 0
  return(Data);
}

void display(int temp)
{
  char string[8];
  lcd_gotoxy(5,2);
  comandwrt();
  delay_us(2);
  itoa(temp,10,string);
  for(i=0;i<=8;i++)
  {
      LCD = string[i]; // xuat nhiet do ra o dang ki tu so
      datawrt();
      delay_us(10);
  }
  delay_us(10);
}

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx *Ham main xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
void main(void)
{
  int data;
  set_tris_B(0);  // out put
  set_tris_A(0);
  delay_ms(100);  //  Tao tre 100ms cho LCD khoi dong

  LCD = 0x38;      //  Hai hang, ma tran dot 5*7, 8 bit interface
  comandwrt();
  LCD = 0x0C;      //  Bat hien thi, tat con tro
  comandwrt();
 
  lcd_gotoxy(3,1);      //  Vi tri cot 3, hang 1
  comandwrt();
  delay_us(2);
  for (i=0;i<=8;i++)
  {
      LCD = dongchu[i]; // xuat chu ra LCD
      datawrt();
      delay_us(10);
  }
  DS1620_InitTemp();
  while(1)
  {
      DS1620_Write(0xEE);          // bat dau chuyen doi lien tuc
      delay_ms(1);                  // tre 1000 us cho qua trinh chuyen doi
      DS1620_write(0x22);          // dung chuyen doi
      data  = DS1620_GetTemp();    // lay du lieu
      delay_us(1000);
      display(data);
  }
 
}


andyhug 30-06-2008 07:55 AM

1 Attachment(s)
mach mo phỏng Proteus:

andyhug 22-07-2008 07:26 AM

Đề tài này có vẻ ít người làm nhẩy!..
Cuối cùng thì cũng đọc được nhiệt độ, mọi người ai biết giúp tôi thiết đặt giới hạn nhiệt độ cao, thấp với(write TH, TL)!
Đây là phần code:
Code:

xxxxxxxxxxxxxxxxx Interface PIC6F877-DS1620xxxxxxxxxxxxxxxxxxx
//*-----------------------------------------------------------------------------
//* Tac gia                      : Pham Thanh Cong
//* Ngay viet                    : 18/06/2008
//* Ngay hoan thanh        : 22/07/2008
//* Phan cung                    : PIC16F877, LCD 2x16[5x7], DS1620
//* Chuong trinh                  : do nhiet do dung DS1620 hien thi tren LCD LMB162A
//*===========================================================================*/
// Khoi tien xu ly
#include <16F877A.h>
#include <stdlib.h>
#include <string.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP  // dat cau hinh cho PIC
#use delay(clock=4000000)
#use fast_io(A)                  // su dung cung voi lenh set_tris
#use fast_io(B)
#use fast_io(D)
#byte  PORTB    = 0x06
#define LCD PORTB
#bit RA2        = 0x05.2
#bit RA1        = 0x05.1
#bit RA0        = 0x05.0
#define RS  RA0              // chan chon thanh ghi =0 lenh hay =1 du lieu
#define RW  RA1              // =1 doc hay =0 ghi
#define E  RA2              // H-to-L de cho fep LCD
#bit RD1        = 0x08.1    // chan data cua DS1620
#bit RD2        = 0x08.2    // chan dong ho
#bit RD3        = 0x08.3    //
#define DQ    RD1            // =0 output, =1 input
#define CLK    RD2
#define RST    RD3
// khai bao cac ham su dung trong chuong trinh
void LCD_init(void);
void comandwrt(void);
void datawrt(void);
void LCD_gotoxy(byte x, byte y);
void DS1620_InitTemp(void);
unsigned int8 DS1620_GetTemp(void);
void DS1620_Write(unsigned char Data);
unsigned int8 DS1620_Read(void);
void display(int8 temp);
void main(void);
// Cac bien toan cuc
const unsigned char dongchu[]="Nhiet do:";      // Hang so toan cuc
int i = 0, sign = 0;                                      // Bien toan cuc
//xxxxxxxxxxxxxxxxxxxxxxxxxxx CHUONG TRINH LCD xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// Khoi tao cho LCD
void LCD_init()
{
  delay_ms(50);      // tre it nhat 30ms
  LCD = 0x38;        // Hai hang, ma tran diem 5*8, 8 bit interface
  comandwrt();   
  delay_us(50);      // tre it nhat 39us
  LCD = 0x0C;        // bat hien thi, tat con tro va tat nhap nhay
  comandwrt();   
  delay_us(50);      // tre it nhat 39us
  LCD = 0x01;        // xoa man hinh
  comandwrt();   
  delay_ms(3);        // tre it nhat 1.53ms
  LCD = 0x06;        // che do tang con tro sau khi viet 1 ki tu
  comandwrt();        // va chu khong chay
  delay_ms(1);
}
// Ham gui lenh ra LCD
void comandwrt(void)
{
 RS = 0;
 RW = 0;
 E  = 1;
 E  = 0;
 delay_ms(1);
}
// Ham gui du lieu ra LCD
void datawrt(void)
{
 RS = 1;
 RW = 0;
 E  = 1;
 E  = 0;
 delay_ms(1);
}
// Ham di chuyen con tro toi vi tri xy(cot,hang) tren man hinh LCD
void LCD_gotoxy(int x, int y)
{  int address;
  switch(y)
      {
        case 1:  address=0;
                  address+=x-1;
                  LCD = (0x80 + address);    // dong 1, cot1: 80h
                  break;
        case 2:  address=0;
                  address+=x-1;
                  LCD = (0xC0 + address);    // dong 2, cot1: C0h
                  break;
        default : break;
      }
}
//xxxxxxxxxxxxxxxxxxxxxxxxxxx CHUONG TRINH DS1620 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// Khoi tao DS1620
void DS1620_InitTemp(void)
{
      RST = 1;              // thiet lap che do giao tiep 3-wire .
      DS1620_Write(0x0C);    // cho phep ghi config
      DS1620_Write(0x00);// xoa thanh ghi config, thiet lap chuyen doi lien tuc
      RST = 0;
      RST = 1;              // thiet lap che do giao tiep 3-wire
      DS1620_Write(0xEE);    // bat dau chuyen doi nhiet do
      RST =0;
}

void DS1620_Write(unsigned char Data)
{
  unsigned char i;
  set_tris_D(0);          // cong D la cong ra
  CLK = 1;                // tao clock
  for (i=1; i<=8; ++i)
      {
      DQ = (Data & 1);    // viet bit thap len DQ
      CLK = 0;
      CLK = 1;            // tao clock
      Data = Data >> 1;  // dich dl
      }
}

unsigned int8 DS1620_Read(void)
{
  unsigned int8 Data, temp;
  set_tris_D(0x02);      // Chan DQ = 1 : chan vao, con lai la chan ra
  Data = 0;
  temp = 1;
  CLK = 1;
  for (i=1; i<=8; ++i)
  {
      CLK = 0;                    // CLK = 0: convert
      if (DQ == 1) Data += Temp; //neu DQ = 1, cong don Data
      Temp = Temp << 1;        // neu DQ = 0, dich trai temp 1bit de chen 0 vao
      CLK = 1;
  }
  CLK = 0;
  if (DQ == 1) Sign = 1;// Lay gia tri bit dau, bit thu 9
  else Sign = 0;
  CLK = 1;
  return(Data);
}

unsigned int8 DS1620_GetTemp(void)
{
  unsigned int8 Data;
  RST =1;                  // thiet lap che do giao tiep 3-wire
  DS1620_Write(0xAA);      // lenh cho phep doc noi dung thanh ghi nhiet
  data = DS1620_Read();    // doc noi dung
  RST =0;                  // ket thuc che do giao tiep 3-wire
  return(data);         
}

void display(int8 temp)
{
  int8 Data, leng;
  unsigned char string[3];
  if (sign == 1)
  {
      LCD_gotoxy(5,2);
      comandwrt();
      LCD = '-';
      datawrt();
      Data = ~(temp - 1) / 2;
     
  }
  else  {  LCD_gotoxy(5,2);
            comandwrt();
            LCD = '+';
            datawrt();
            Data = temp / 2;
        }
  itoa(Data,10,string);
  leng = strlen(string);
  if (bit_test(temp,0))
  {
      for(i=0;i<leng;i++)
      {
        LCD = string[i]; // xuat nhiet do ra o dang ki tu so
        datawrt();
      }
      LCD = '.';
      datawrt();
      LCD = '5';
      datawrt();
      LCD = ' ';
      datawrt();
      LCD = 'd';
      datawrt();
      LCD = 'o';
      datawrt();
      LCD = 'C';
      datawrt();
  }
  else
  {
      for(i=0;i<leng;i++)
      {
        LCD = string[i]; //
        datawrt();
      }
      LCD = '.';
      datawrt();
      LCD = '0';
      datawrt();
      LCD = ' ';
      datawrt();
      LCD = 'd';
      datawrt();
      LCD = 'o';
      datawrt();
      LCD = 'C';
      datawrt();
  }
}

//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Ham main xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
void main(void)
{
  int8 data;
  set_tris_B(0);                  // cong ra
  set_tris_A(0);                  // cong ra
  LCD_init();                      // dat che do hoat dong cho LCD
  delay_us(2);
  DS1620_InitTemp();
  delay_ms(2);
  LCD_gotoxy(5,1);                // Vi tri cot 5, hang 1
  comandwrt();
  for (i=0;i<=8;i++)
  {
      LCD = dongchu[i];            // xuat chu ra LCD
      datawrt();
     
  }
  while(1)
  {
      data  = DS1620_GetTemp();    // lay du lieu
      display(data);
  }
}


andyhug 22-07-2008 07:35 AM

1 Attachment(s)
Đây là file Hex để mô phỏng trong Proteus:

andyhug 26-07-2008 02:00 AM

1 Attachment(s)
Interface PIC16F877A-DS1620 final... Yahoo!
Các bác nào quan tâm về cảm biến nhiệt độ DS1620 thì vào đây, code nè:
Code:

//*---------------------------------------------------------------------
//* Tac gia              : Pham Thanh Cong
//* Ngay viet            : 18/06/2008
//* Ngay hoan thanh  : 26/07/2008
//* Phan cung          : PIC16F877A, LCD 2x16[5x7]
//* Chuong trinh        : do nhiet do dung DS1620 hien thi tren LCD LMB162A
//*===================================================*/
// Khoi tien xu ly
#include <16F877A.h>
#include <stdlib.h>
#include <string.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP  // dat cau hinh cho PIC
#use delay(clock=4000000)
#use fast_io(A)                  // su dung cung voi lenh set_tris
#use fast_io(B)
#use fast_io(D)
#byte  PORTB    = 0x06
#define LCD PORTB
#bit RA2        = 0x05.2
#bit RA1        = 0x05.1
#bit RA0        = 0x05.0
#define RS  RA0              // chan chon thanh ghi =0 lenh hay =1 du lieu
#define RW  RA1              // =1 doc hay =0 ghi
#define E  RA2              // H-to-L de cho fep LCD
#bit RD1        = 0x08.1    // chan data cua DS1620
#bit RD2        = 0x08.2    // chan dong ho
#bit RD3        = 0x08.3    //
#define DQ    RD1            // =0 output, =1 input
#define CLK    RD2
#define RST    RD3
// khai bao cac ham su dung trong chuong trinh
void LCD_init(void);
void comandwrt(void);
void datawrt(void);
void LCD_gotoxy(byte x, byte y);
void DS1620_InitTemp(void);
unsigned int8 DS1620_GetTemp(void);
void DS1620_Write(unsigned char Data);
void DS1620_WriteTHTL(unsigned char Data, int dau);
unsigned int8 DS1620_Read(void);
void display(int8 temp);
void main(void);
// Cac bien toan cuc
const unsigned char dongchu[]="Nhiet do:";      // Hang so toan cuc
int i = 0, Sign = 0;                            // Bien toan cuc
//xxxxxxxxxxxxxxxxxxxxxx CHUONG TRINH LCD xxxxxxxxxxxxxxxxxxxxxxx
// Khoi tao cho LCD
void LCD_init()
{
  delay_ms(50);      // tre it nhat 30ms
  LCD = 0x38;        // Hai hang, ma tran diem 5*8, 8 bit interface
  comandwrt();   
  delay_us(50);      // tre it nhat 39us
  LCD = 0x0C;        // bat hien thi, tat con tro va tat nhap nhay
  comandwrt();   
  delay_us(50);      // tre it nhat 39us
  LCD = 0x01;        // xoa man hinh
  comandwrt();   
  delay_ms(3);        // tre it nhat 1.53ms
  LCD = 0x06;        // che do tang con tro sau khi viet 1 ki tu
  comandwrt();        // va chu khong chay
  delay_ms(1);
}
// Ham gui lenh ra LCD
void comandwrt(void)
{
 RS = 0;
 RW = 0;
 E  = 1;
 E  = 0;
 delay_ms(1);
}
// Ham gui du lieu ra LCD
void datawrt(void)
{
 RS = 1;
 RW = 0;
 E  = 1;
 E  = 0;
 delay_ms(1);
}
// Ham di chuyen con tro toi vi tri xy(cot,hang) tren man hinh LCD
void LCD_gotoxy(int x, int y)
{  int address;
  switch(y)
      {
        case 1:  address=0;
                  address+=x-1;
                  LCD = (0x80 + address);    // dong 1, cot1: 80h
                  break;
        case 2:  address=0;
                  address+=x-1;
                  LCD = (0xC0 + address);    // dong 2, cot1: C0h
                  break;
        default : break;
      }
}
//xxxxxxxxxxxxxxxxxxxxx CHUONG TRINH DS1620xxxxxxxxxxxxxxxxxxxxxx
// Khoi tao DS1620
void DS1620_InitTemp(void)
{
      RST = 1;              // thiet lap che do giao tiep 3-wire.
      DS1620_Write(0x0C);    // cho phep ghi config
      DS1620_Write(0x08);
      RST = 0;
      RST = 1;              // thiet lap che do giao tiep 3-wire
      DS1620_Write(0xEE);    // bat dau chuyen doi nhiet do
      RST = 0;
}

void DS1620_Write(unsigned char Data)
{
  set_tris_D(0);          // cong D la cong ra
  CLK = 1;                // tao clock
  for (i=1; i<=8; ++i)
      {
      DQ = (Data & 1);    // viet bit thap len DQ
      CLK = 0;
      CLK = 1;            // tao clock
      Data = Data >> 1;  // dich fai Data di 1 bit
      }
}

void DS1620_WriteTHTL(unsigned char Data, int dau)
{
  set_tris_D(0);          // cong D la cong ra
  CLK = 1;                // tao clock
  for (i=1; i<=8; ++i)
      {
      DQ = (Data & 1);    // viet bit thap len DQ
      CLK = 0;
      CLK = 1;            // tao clock
      Data = Data >> 1;  // dich fai Data di 1 bit
      }
  CLK = 1; 
  if (dau == 1) DQ = 1; // Lay gia tri bit dau, gui not bit9 di
  else          DQ = 0;
  CLK = 0;
}

unsigned int8 DS1620_Read(void)
{
  unsigned int8 Data, temp;
  set_tris_D(0x02);      // Chan DQ = 1 : chan vao, con lai la chan ra
  Data = 0;
  temp = 1;
  CLK = 1;
  for (i=1; i<=8; ++i)
  {
      CLK = 0;                    // CLK = 0: convert
      if (DQ == 1) Data += Temp; //neu DQ = 1, cong don Data
      Temp = Temp << 1;        // neu DQ = 0, dich trai temp 1bit de chen 0 vao
      CLK = 1;
  }
  CLK = 0;
  if (DQ == 1) Sign = 1;// Lay gia tri bit dau
  else Sign = 0;
  CLK = 1;
  return(Data);
}

unsigned int8 DS1620_GetTemp(void)
{
  unsigned int8 Data;
  RST =1;                  // thiet lap che do giao tiep 3-wire
  DS1620_Write(0xAA);      // lenh cho phep doc noi dung thanh ghi nhiet
  data = DS1620_Read();    // doc noi dung
  RST =0;                  // ket thuc che do giao tiep 3-wire
  return(data);         
}

void display(int8 temp)
{
  int8 Data, leng;
  unsigned char string[3];
  if (sign == 1)                // Nhiet do am
  {
      LCD_gotoxy(5,2);
      comandwrt();
      LCD = '-';                // Hien thi dau -
      datawrt();
      Data = ~(temp - 1) / 2;    // neu nhiet do am thi lay ma bu 2
  }
  else  {  LCD_gotoxy(5,2);    // Nhiet do duong
            comandwrt();
            LCD = '+';          // Hien thi dau +
            datawrt();
            Data = temp / 2;
        }
  itoa(Data,10,string);        // Chuyen doi Data thanh ma ASCII vao string
  leng = strlen(string);        // Lay chieu dai cua string
  if (bit_test(temp,0))        // kiem tra bit0 =1 suy ra nhiet do .5 doC
  {
      for(i=0;i<leng;i++)
      {
        LCD = string[i]; // xuat nhiet do ra o dang ki tu so
        datawrt();
      }
      LCD = '.';          // hien thi phan thap phan .5 do C
      datawrt();
      LCD = '5';
      datawrt();
      LCD = ' ';
      datawrt();
      LCD = 'd';
      datawrt();
      LCD = 'o';
      datawrt();
      LCD = 'C';
      datawrt();
  }
  else                  // bit0 =0 suy ra nhiet do .0 do C
  {
      for(i=0;i<leng;i++)
      {
        LCD = string[i]; // xuat nhiet do ra o dang ki tu so
        datawrt();
      }
      LCD = '.';          // hien thi phan thap phan .0 do C
      datawrt();
      LCD = '0';
      datawrt();
      LCD = ' ';
      datawrt();
      LCD = 'd';
      datawrt();
      LCD = 'o';
      datawrt();
      LCD = 'C';
      datawrt();
  }
}

//xxxxxxxxxxxxxxxxxxxxxxxx Ham main xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*/
void main(void)
{
  int8 data;
  set_tris_B(0);                  // cong ra
  set_tris_A(0);                  // cong ra
  LCD_init();                      // dat che do hoat dong cho LCD
  delay_us(2);
  DS1620_InitTemp();              // dat che do hoat dong cho DS1620
  delay_us(10);
  LCD_gotoxy(5,1);                // Vi tri cot 5, hang 1
  comandwrt();
  for (i=0;i<=8;i++)
  {
      LCD = dongchu[i];            // xuat chu ra LCD
      datawrt();
  }
      RST = 1;
      DS1620_Write(0x01);      // Dat gioi han nhiet do cao TH
      DS1620_WriteTHTL(0x44,0); // TH = +34 do C
      DS1620_Write(0x00);    // qua thuc te phai co them lenh nay moi 'run ok'
      RST = 0;
  while(1)
  {
      RST = 1; // qua thuc te phai dat khoi lenh nay vao vong lap moi 'run ok'
      DS1620_Write(0x02);          // Dat gioi han nhiet do thap TL
      DS1620_WriteTHTL(0x40,0);    // TL = +32 do C
      DS1620_Write(0x00);
      RST = 0;
      data  = DS1620_GetTemp();    // lay du lieu
      display(data);                // hien thi du lieu
  }
}
xxxxxxxxxxxxxxxxxxxxxxxxx HẾT xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Chúc anh em vui!
Datasheet DS1620:

jvcuong 05-04-2009 07:50 PM

bác có thể giải nguyên tắc của đo nhiệt độ không, mình đang tìm hiểu về cái này, và biết là dùng cảm biến nhiệt độ và bô ADC, nhưng không hiểu về độ phân giải nhiệt như thế nào, điện áp tham chiếu

mrbean007 05-04-2009 10:32 PM

bạn có thể dùng cam biến nhiệt độ lm335 dc ko
mình ko hiểu gí nhiếu vế lcd bạn chỉ thêm cho mình dc ko
minh cũng đang làm đề tài như bạn nhưng dung lm335 bạn có thể chỉ cho mình biết nên làm như thế nao dc ko andyhug

thaithien 05-04-2009 10:49 PM

bác đang ở đâu vậy?Sài gòn hay HN.Làm sao kiếm được con DS1620.T đi nhật tảo mà kiém không ra

andyhug 06-04-2009 09:03 PM

Ds1620
 
1 Attachment(s)
Mình ở Hà nội, ngày xưa đặt mua DS1620 của chị Hằng trong TP HCM mà, mình mất số của chị ấy rồi, có lần thấy chị Hằng đăng list linh kiện trên này nên mình mới mua được.

Nói chung, các bạn cứ đọc kỹ datasheet rồi ghép nối và lập trình.
Về giao tiếp LCD, bạn xem các luồng cơ bản trong diễn đàn nhé, làm vài lần biết ngay mà, mình gửi mấy tài liệu tham khảo để các bạn xem thêm (Pic-LM335, DS1620 tiếng việt).

thaithien 06-04-2009 10:58 PM

Cảm ơn nhiều nhé

chomchom 23-04-2010 09:55 PM

thank bác nhiều nhiều nhé
 
Trích:

Nguyên văn bởi andyhug (Post 24406)
Mình ở Hà nội, ngày xưa đặt mua DS1620 của chị Hằng trong TP HCM mà, mình mất số của chị ấy rồi, có lần thấy chị Hằng đăng list linh kiện trên này nên mình mới mua được.

Nói chung, các bạn cứ đọc kỹ datasheet rồi ghép nối và lập trình.
Về giao tiếp LCD, bạn xem các luồng cơ bản trong diễn đàn nhé, làm vài lần biết ngay mà, mình gửi mấy tài liệu tham khảo để các bạn xem thêm (Pic-LM335, DS1620 tiếng việt).

em giờ cũng phải làm đề tài này, lại phải tìm hiểu từ đầu. hic. mà bác chỉ giúp em cách mua DS1620 với. bác mua được lâu rồi phải không. thanks bác

key9995 20-06-2013 09:22 PM

sao code trên chọn giá trị giới hạn khác cho ds1620 không được z ? chọn một giá trị khác thì chạy không còn đúng nữa.......... theo bạn viết thì bit 9 báo nhiệt độ âm dương đã được gửi cho ds1620 thì tại sao đặt giá trị giới hạn âm nó cũng không hiểu............


Múi giờ GMT. Hiện tại là 07:58 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam