Trong mạch đo nhiệt độ và độ ẩm dùng cảm biến nhiệt độ DS18B20 và cảm biến điện dung HS1101 hiển thị ra màn hình LCD ta cần sử dụng các linh kiện sau: 3.1 Vi điều khiển 89S52
3.1.1 Hình ảnh
AT89S52 có tất cả 40 chân có chức năng như các đường xuất nhập. Trong đó có 24 chân có tác dụng kép (có nghĩa là 1 chân có 2 chức năng), mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ.
* PORT
Port 0: là port có 2 chức năng ở các chân từ 32- 39. Trong các thiết kế cỡ nhỏ
không dùng đến bộ nhớ mở rộng thì port 0 có chức năng là xuất/nhập dữ liệu. Nếu trong các thiết kế cỡ lớn phải dùng đến bộ nhớ mở rộng thì port 0 được kết hợp giữa bus địa chỉ và bus dữ liệu.
Port 1: là port có 1 chức năng từ chân 1- 8. Có thể dùng cho giao tiếp với thiết
bị ngoài nếu cần. Vì không có chức năng khác ngoài xuất/nhập nên nó chỉ được dùng giao tiếp với các thiết bị bên ngoài.
Port 2: là 1 port có tác dụng kép trên các chân 21- 28 được dùng như các
đường xuất nhập hoặc là byte cao của các bus địa chỉ đối với thiết bị dùng bộ nhớ mở rộng.
Port3: là port có tác dụng kép trên các chân 10- 17, port này có nhiều chức
năng cụ thể như sau:
P3.0 RXT Ngõ vào đữ liệu nối tiếp
P3.1 TXD Ngõ xuất dữ liệu nối tiếp
P3.2 INT0 Ngõ vào ngắt 0
P3.3 INT1 Ngõ vào ngắt 1
P3.4 T0 Ngõ vào của timer/ couter 0 P3.5 T1 Ngõ vào của timer/ couter 1 P3.6 WR Tín hiệu ghi dữ liệu lên bộ nhớ ngoài P3.7 RD Tín hiệu đọc dữ liệu bộ nhớ ngoài
* các ngõ tín hiệu điều khiển PSEN
PSEN là tín hiệu ngõ ra ở chân 29 có ứng dụng cho phép đọc bộ nhớ chương trình mở rộng thường được nối với chân 0E( output ennable) của EPROM cho phép đọc các byte mã lệnh. PSEN ở mức 0 khi 89s52 lấy lệnh, các mã lệnh của chương trình đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh để giải lệnh. PSEN ở mức 1 khi 89s52 thi hành chhuowng trình trong ROM nội.
ALE ở chân số 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt. Vì khi 89s52 truy xuất bộ nhớ bên ngoài port 0 có chức năng là đường địa chỉ và dữ liệu nên phải tách riêng ra.
Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.
EA
Ngõ tín hiệu vào EA ở chân 31 thường được mắc lên nguồn. Nếu ở mức 1 thì 89s52 thi hành chương trình từ ROM nội trong khaongr địa chỉ thấp
8kbyte. Nếu ở mức 0 thì 89s52 sẽ thi hành chương trình từ bộ nhớ mở rộng.
RST
Ngõ tín hiệu RST (reset) ở chân số 9. Khi 89s52 thực hiện 2 chu kỳ máy hoặc khi cấp điện mạch tự động reset.
X1,X2
Ngõ tín hiệu dao động X1, X2 ở chân 18, 19. Thường được nối với thạch anh để tạo dao động.
Vcc
3.2 Cảm biến nhiệt độ DS18B20
3.2.1 Hình ảnh
3.2.2 Cấu tạo
DS18B20 gồm 3 chân Vcc, GND, DATA. Sơ đồ kết nối:
3.2.3 Đặc tính kỹ thuật
+ Lấy nhiệt độ theo giao thức 1 dây (1wire)
+ Cung cấp nhiệt độ với độ phân giải config 9,10,11,12 bit, tùy theo sử dụng. Trong trường hợp không config thì nó tự động ở chế độ 12 bit. Thời gian chuyển đổi nhiệt độ tối đa là 750ms cho mã hóa 12 bit
+Có thể đo nhiệt độ trong khoảng -55 -> +125°C. Với khoảng nhiệt độ là -10°C to +85°C thì độ chính xác ±0.5°C,±0.25°C ,±0.125°C,±0.0625°C. theo số bít config.
+ Có chức năng cảnh báo nhiệt khi nhiệt độ vượt ngưỡng cho phép. Người dùng có thể lập trình chức năng này cho DS18B20. Bộ nhớ nhiệt độ cảnh báo không bị mất khi mất nguồn vì nó có một mã định danh duy nhất 64 bit chứa trong bộ nhớ ROM trên chip (on chip), giá trị nhị phân được khắc bằng tia laze.
+ Cam bien nhiet do DS18B20 có mã nhận diện lên đến 64-bit, vì vậy bạn có thể kiểm tra nhiệt độ với nhiều IC DS18B20 mà chỉ dùng 1 dây dẫn duy nhất để giao tiếp với các IC này.
Với DS18B20 bạn hoàn toàn có thể tạo cho mình mạch cảm biến nhiệt độ theo ý muốn.
+ Điện áp sử dụng : 3 – 5.5 V
+ Dòng tiêu thụ tại chế độ nghỉ rất nhỏ.
3.2.4 Lập trình đo nhiệt độ với vi điều khiển 89s52
Khi xử lý DS18b20 chúng ta cần quan tâm đến 2 nhóm lệnh sau: + nhóm lệnh truy cập ROM
+ nhóm lệnh chức năng bộ nhớ • Nhóm lệnh truy cập ROM - READ ROM (33h)
Cho phép đọc ra 8 byte mã đã khắc bằng laser trên ROM, bao gồm: 8 bit mã định tên linh kiện (10h), 48 bit số xuất xưởng, 8 bit kiểm tra CRC. Lệnh này chỉ dùng khi trên bus có 1 cảm biến DS1820, nếu không sẽ xảy ra xung đột trên bus do tất cả các thiết bị tớ cùng đáp ứng.