Tải bản đầy đủ (.ppt) (10 trang)

slide bài giảngckỹ thuật điều khiển ghép nối thiết bị ngoại vi chương 6b

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (276.85 KB, 10 trang )

GIAO TiẾP ONEWIRE


GiỚI THIỆU

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




ĐỊNH DẠNG DỮ LiỆU

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




ĐỊNH DẠNG DỮ LiỆU

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




XÂY DỰNG CÁC LỆNH CƠ BẢN
//báo chân giao tiep I2C
#defne DQ   P0_3
//hàm reset
unsigned char
Init_DS18B20(void)
{


DQ = 0;
Delay(60); //480us
DQ = 1;
Delay(8); 64us,
presence = DQ;
Delay(50); // 400us,
DQ = 1;
return (presence);
}

void
WriteOneChar(unsigne
d char dat)
{
unsigned char i = 0;
for (i = 0; i < 8; i++)
{
DQ = 0;
Delay(1); //<15us
dat >>= 1; //CY
DQ = CY;
Delay(6); //> 45us
DQ = 1;
}
}

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng

unsigned char
ReadOneChar(void)

{unsigned char i = 0;
unsigned char dat = 0;
DQ = 1;
for (i = 0; i < 8; i++)
{DQ = 0;
dat >>= 1;
DQ = 1;
_nop_();
_nop_();
if (DQ == 1)
dat |= 0x80;
Delay(6); //> 45us
DQ = 1;
}return (dat);
}



ỨNG DỤNG: ĐO NHIỆT ĐỘ DÙNG DS18B20

- Sử dụng 1 chân DQ để truyền thông
- Độ phân giải từ 9 đến 12 bit
- Dãi nhiệt độ -55 đến 125

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




CÁC LỆNH

CÁC LỆNH ROM:
-SEACH ROM (F0H): Tìm số lượng ds18b20 nối vào mạch
-READ ROM (33H): Đọc 8 byte liên quan đến mã xuất xưởng (để xử lý
bus có nhiều cảm biến), chỉ dùng lệnh này khi trên mạch có 1 cảm biến
-MATCH ROM (55H): cùng với 64bit để chọn ra 1 cảm biến cụ thể
-SKIP ROM (CCH): Truy cập thẳng đến bộ nhớ mà ko cần chuỗi mã 64bit
-ALARM SEACH (ECH): giống SEACH ROM, nhưng cảm biến chỉ phản
hồi khi nhiệt độ vượt quá ngưỡng quy định
•Sau khi sử dụng các lệnh ROM để xác định 1 cảm biến cụ thể thì sử
dụng đến nhóm lệnh chức năng
CÁC LỆNH CHỨC NĂNG:
-CONVERT (44H):Bắt đầu đo và chuyển đổi, thời gian chuyển đổi <200us
-READ SCRATCHPAD (BEH): cho phép đọc nội dung bộ nhớ nháp

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




ĐỊNH DẠNG KẾT QuẢ

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




LẬP TRÌNH
if (Init_DS18B20() == 0)
{
WriteOneChar(0xCC); // SKIP ROM

WriteOneChar(0x44); // CONVERT
}
if (Init_DS18B20() == 0)
{
WriteOneChar(0xCC); // SKIP ROM
WriteOneChar(0xBE); // READ SCRATCHPAD
temp_data[0] = ReadOneChar();
temp_data[1] = ReadOneChar();
Temperature_conver();
}

Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng




LẬP TRÌNH
void Temperature_conver()
{
unsigned char minus = 0;
if (temp_data[1] > 127) //Nhiệt độ âm (dạng bù 2)
{
temp_data[0] = (~temp_data[0]) + 1;//chuyển lại dạng số dương (bù 1 +1)
if ((~temp_data[0]) >= 0xff)
temp_data[1] = (~temp_data[1]) + 1;
else
temp_data[1] = ~temp_data[1];
minus = 1;
}
}


Cao Nguyễn Khoa Nam - Khoa Điện - Trường Cao đẳng Công nghệ Đà Nẵng





×