DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án
No Result
View All Result
DMDT
No Result
View All Result
Home Vi Điều Khiển AVR

[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20

12 Tháng Sáu, 2022
in AVR, Vi Điều Khiển
258 19

Chú ý : Source code bài viết dưới đây được biên dịch bằng phần mềm CodeVisionAVR để biên dịch code không lỗi xin vui lòng Download bản CodeVisionAVR Tại Đây

I. Sơ đồ kết nối đa điểm

  Sau khi test thử nghiệm thành công, mình xin giới thiệu với các bạn CODE sử dụng DS18b20 trong đo lường đa điểm (Version 1.0.0 ^^) cùng vi điều khiển Atmega 8. Cụ thể là mình sẽ đo nhiệt độ tại nhiều nơi sử dụng nhiều cảm biến DS18b20. Các cảm biến này cùng được kết nối trên 1 dây DATA (theo chuẩn 1 Wire):

  Trong code của mình các bạn có thể cấu hình lại số lượng DS18b20 tối đa ở trên Bus (mình đang cho là 8 con). Ở mạch thực tế, mình chỉ mới sử dụng 5 cảm biến DS18b20, giá trị nhiệt độ tại 5 điểm sẽ liên tục được cập nhật và hiển thị lên LCD1602.​

  Mình dùng trình biên dịch CodeVisionAVR, các bạn vào CodeWizardAVR –> 1 Wire, sau đó chọn chân DATA và tích vào Enable, Multiple Devices để lấy thư viện sử dụng nhiều DS18b20 trên 1 Bus.​

II.Code Test V1.0.0:​

#include <main.h>
#include <var.h>
 
void main(void)
{
  unsigned char i,j;
  float Temp;
  char Lcd_Buffer[33];
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
 
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0xff;
DDRC=0x00;
 
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0xff;
DDRD=0x00;
 
// KHOI TAO CHUAN 1 WIRE
// 1 Wire Data port: PORTC
// 1 Wire Data bit: 5
// Note: 1 Wire port settings must be specified in the
// Project|Configure|C Compiler|Libraries|1 Wire IDE menu.
w1_init();
 
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("  MINHHAGROUP");
lcd_gotoxy(0,1);
lcd_puts("1 WIRE BUS DEMO");
delay_ms(2000);
lcd_clear();
 
// Xac dinh so IC DS18b20 co tren Bus
ds18b20_devices = w1_search(0xf0,ds18b20_rom_codes);
sprintf(Lcd_Buffer,"SO THIET BI\nDS18B20: %u",ds18b20_devices);
lcd_puts(Lcd_Buffer);
delay_ms(3000);
/*
//Hien thi ROM CODE cua tung IC tren Bus
if (ds18b20_devices)
{
    for (i=0;i<ds18b20_devices;i++)
    {
          sprintf(Lcd_Buffer," IC DS18b20 #%u\nROM CODE:",i+1);
          lcd_clear();
          lcd_puts(Lcd_Buffer);
          delay_ms(2000);
          lcd_clear();
          for (j=0;j<8;j++)
          {
              sprintf(Lcd_Buffer,"%02X ",ds18b20_rom_codes[i][j]);
              lcd_puts(Lcd_Buffer);
              if(j==3)
              lcd_gotoxy(0,1);
          };
          delay_ms(2000);
    };
}
else
while (1); // Khong co IC tren Bus      */
 
// Cau hinh do phan giai 12 Bit cho cac IC DS18b20 tren Bus
for (i=0;i<ds18b20_devices;)
    if (!ds18b20_init(&ds18b20_rom_codes[i++][0],20,30,DS18B20_12BIT_RES))
    {
          sprintf(Lcd_Buffer,"Init error for\ndevice #%u",i);
          lcd_clear();
          lcd_puts(Lcd_Buffer);
          while (1); // Qua trinh khoi tao co loi
    };
/*
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts("NHIET DO TAI:");
*/
while (1)
{
    j=1;   
// Cap nhat nhiet do tai cac diem va hien thi len LCD1602
    for (i=0;i<ds18b20_devices;i++)
    {
          Temp = ds18b20_temperature(&ds18b20_rom_codes[i][0]);
          sprintf(Lcd_Buffer,"t%u=%2.2f\xdfC",j++,Temp);
          lcd_clear();
          lcd_puts(Lcd_Buffer);
          delay_ms(1500);
    }
}
}
// ------------------END OF FILE--------------------
// -------------------------------------------------

 

Mình sẽ tối ưu hóa code hơn trong các Version sau… Chúc các bạn thành công!

Các bạn có thể tham khảo thêm Code mẫu TẠI ĐÂY :

Tags: CodeVisionAVRđa điểm ds18b20ds18b20hướng dẫn lập trình avr
Share206Tweet129

Related Posts

[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20
AVR

[HỌC AVR] BÀI 10: HIỂN THỊ LCD128x64 LOẠI CHIP KS0108

26 Tháng Sáu, 2022
[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20
AVR

[HỌC AVR] BÀI 9: HIỂN THỊ LED 7 THANH

12 Tháng Sáu, 2022
[HỌC AVR] BÀI 8.1 .ĐO LƯỜNG ĐA ĐIỂM VỚI DS18B20
AVR

[HỌC AVR] BÀI 8: GIAO TIẾP CẢM BIẾN NHIỆT ĐỘ DS18B20

26 Tháng Sáu, 2022
Next Post
Hướng dẫn cài đặt và cr@ck full phần mềm Vẽ mạch Altium Designer 15.0.xx

Hướng dẫn cài đặt và cr@ck full phần mềm Vẽ mạch Altium Designer 15.0.xx

Nguyên lý và hoạt động của Biến trở

Nguyên lý và hoạt động của Biến trở

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Đăng nhập
Thông báo của
guest
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận

No Result
View All Result
  • Danh Mục
    • Vi Điều Khiển
      • 8051
      • Arduino
      • AVR
      • IC Chức Năng
      • PIC
    • Module
      • MD Chuyển Đổi
      • MD GSM,GPS,3G
      • MD LCD
      • MD Nguồn
      • MD Wifi
    • Điện Tử Cơ Bản
      • ADC/DAC
      • Bộ Nhớ Bán Dẫn
      • Các Họ IC Số
      • Họ OPAM
      • Mạch Tổ Hợp
      • Mạch Tuần Tự
      • Linh Kiện Cơ Bản
    • Mạch Điện Vui
      • DIY – Tự Ráp Mạch
      • Hướng Dẫn Thiết Kế Mạch
      • Sản Phẩm Sáng Tạo
      • Tự Làm Mạch In
    • Cảm Biến
      • Analog (Tín hiệu điện áp)
      • Digital (Tín hiệu số)
  • Phần Mềm
  • Đồ Án

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In
wpDiscuz