Tải bản đầy đủ (.docx) (29 trang)

Mạch hiển thị nhiệt độ cảnh báo cháy

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 (174.65 KB, 29 trang )

BỘ NÔNG NGHIỆP VÀ PTNT
HỌC VIỆN NÔNG NGHIỆP VIỆT NAM

ĐỒ ÁN MÔN HỌC
VI XỬ LÝ TRONG ĐIỀU KHIỂN

ĐỀ TÀI: Mạch Hiển Thị Nhiệt Độ Cảnh Báo Cháy

Giảng Viên Hướng Dẫn: Lại Văn Song
Sinh viên thực hiện:
• Nguyễn Tiến Duy . Mã sv: 576164
• Nguyễn Văn Huấn . Mã sv: 576183
• Mai Đăng Khiêm .Mã sv:576190


NỘI DUNG ĐỒ ÁN GỒM
Chương 1: Giới thiệu chung.
1,1 Lời mở đầu
Chương 2: Các Công Nghệ Được Sử Dụng Trong đề tài
1.2 Tổng quan về vi điều khiển 8051
a. vi điều khiển 8051
b. kết nối phần cứng XTAL1 và XTAL2
c. kết nối phần cứng của chân RESET

1.3 Ic lm7805
1.4 Cảm biến nhiệt DS18B20
1.5 Relay 5 chân HLS8L-5VDC
1.6 Thạch anh 12Mhz
1.7 Led 7 đoạn
Chương 3: Xây dựng mô hình phần cứng của hệ thống điều khiển


3.1 Chuẩn bị linh kiện
3.2 Sơ đồ nguyên lý và mạch in
a. sơ đồ nguyên lý
b. mạch in
3.3. Nguyên lý hoạt động của hệ thống

3.4 Mô phỏng chương trình trên proteus 8.5
3.5. Chương trình khi điều khiển chính trên hệ thống
Chương 4: Kết quả thảo luận


CHƯƠNG I: GIỚI THIỆU CHUNG


1.1 Mở đầu

Vào năm 1980 khi Intel tung ra chip 8051, bộ Vi điều khiển đầu tiên của họ MCS51. Vi điều khiển được ứng dụng trong các dây chuyền tự động, các Robot, trong
máy giặt, ôtô, mạch chống trộm, mạch báo cháy, mạch điều khiển động cơ v.v Vi
điều khiển 89C51 (VĐK8051) là sự tích hợp một bộ nhớ, một số mạch giao tiếp
ngoại vi cùng với vi xử lý vào một IC duy nhất được gọi là Microcontroller. Họ
8051 là một trong những bộ vi điều khiển 8-bit mạnh và linh hoạt nhất, đã trở
thành bộ vi điều khiển hàng đầu trong những năm gần đây. VĐK8051 có khả năng
tương tự như khả năng của vi xử lý, nhưng cấu trúc phần cứng dành cho người
dùng đơn giản hơn nhiều. Vi điều khiển ra đời mang lại sự tiện lợi đối với người
dùng, họ không cần nắm vững một khối lượng kiến thức quá lớn, kết cấu mạch
điện dành cho người dùng cũng trở nên đơn giản hơn nhiều và có khả năng giao
tiếp trực tiếp với các thiết bị bên ngoài. Vi điều khiển có giá thành rẻ việc sử dụng
đơn giản, do đó nó được ứng dụng rộng rãi vào nhiều ứng dụng có chức năng đơn
Hiện nay các vấn đề cháy nổ ở các nhà hàng, khu chung cư, khu công nghiệp,
nhà kho đang rất được quan tâm. Chính về thế chúng em nghiên cưu về hệ thống

báo cháy nhằm phục vụ cho vấn đề này.
Hệ thống tự động cảnh báo cháy nhằm cung cấp cho người sở dụng biết nhiệt độ
hiện tại và cảnh báo khi nhiệt độ quá cao ngây nguy hiển cho các nhà máy phân
xưởng các kho chứ dễ cháy nổ khi nhiệt độ cao. ngoài ra chúng em còn nghiên cứu
thêm hệ thống làm mát khi nhiệt độ tăng cao đảm bảo an toàn.


chương 2: Các công nghệ được sử dụng trong đề tài
1.2 Tổng quan về vi điều khiển 8051




a. Vi điều khiển 8051
VĐK8051 là một IC tích hợp có nguồn gốc từ hãng Intel. Là bộ vi xử lý

8 bit có 128 byte RAM, 4K byte ROM, hai bộ định thời, một cổng nối tiếp và
4 cổng vào /ra tất cả được đặt trên một chíp.

Gồm 40 chân được chia làm 4 công post0-post1-post2-post3
Chân VCC: Chân số 40 là VCC cấp điện áp +5V cho Vi điều khiển.
Chân GND: Chân số 20 nối GND.
Port 0 (P0): Gồm 8 chân (từ chân 32 đến 39) có hai chức năng:
Chức năng xuất/nhập: Các chân này được dùng để nhận tín hiệu từ bên
ngoài vào để xử lý, hoặc dùng để xuất tín hiệu ra bên ngoài.


Chức năng là bus dữ liệu và bus địa chỉ (AD7-AD0) : 8 chân này làm nhiệm
vụ lấy dữ liệu từ ROM hoặc RAM.
Port 1 (P1): Gồm 8 chân (từ chân 1 đến chân 8), chỉ có chức năng làm các đường

xuất/nhập, không có chức năng khác.
Port 2 (P2): Gồm 8 chân (từ chân 21 đến chân 28) có hai chức năng:
Chức năng xuất/nhập và chức năng là bus địa chỉ cao (A8-A15): Khi kết nối
với bộ nhớ ngoài có dung lượng lớn.
Port 3 (P3): Gồm 8 chân (từ chân 10 đến 17):
Chức năng xuất/nhập và chức năng riêng thứ hai như trong bảng sau:
Bit
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7

Bảng 1.4: Các chức năng riêng của P3.
Bit
Chức năng
RxD
Ngõ vào nhận dữ liệu nối tiếp
TxD
Ngõ xuất dữ liệu nối tiếp
INT0\
Ngõ vào ngắt cứng thứ 0
INT1\
Ngõ vào ngắt cứng thứ 1
T0
Ngõ vào của Timer/Counter thứ 0
T1

Ngõ vào của Timer/Counter thứ 1
WR\
Ngõ điều khiển ghi dữ liệu lên bộ nhớ ngoài
RD\
Ngõ điều khiển đọc dữ liệu từ bộ nhớ bên ngoài

Chân RESET (RST) (Chân 9)
Ngõ vào RST ở chân 9 là ngõ vào Reset dùng để thiết lập trạng thái ban đầu
cho vi điều khiển. Hệ thống sẽ được thiết lập lại các giá trị ban đầu nếu ngõ này ở
mức 1.
Chân XTAL1 và XTAL2 (Chân 18 và 19)
Hai chân này có vị trí chân là 18 và 19 được sử dụng để nhận nguồn xung
clock từ bên ngoài để hoạt động, thường được ghép nối với thạch anh và các tụ để
tạo nguồn xung clock ổn định.


Chân cho phép bộ nhớ chương trình PSEN\: (Chân 29)
Dùng để truy xuất bộ nhớ chương trình ngoài. Chân này thường được nối
với chân OE\ (outputenable) của ROM ngoài.
Khi vi điều khiển làm việc với bộ nhớ chương trình ngoài, chân này kích
hoạt ở mức 0.
Khi thực thi một chương trình ở ROM nội, chân này được duy trì ở mức
logic không tích cực (logic 1).
Chân ALE: (Chân 30)
Là chân cho phép chốt địa chỉ khi Vi điều khiển truy xuất bộ nhớ từ bên
ngoài. Tín hiệu ở chân ALE dùng làm tín hiệu điều khiển để giải đa hợp các đường
địa chỉ và các đường dữ liệu khi kết nối chúng với IC chốt.
Chân EA\: ( Chân 31)
Là chân dùng để xác định chương trình thực hiện được lấy từ ROM nội hay
ROM ngoại. Khi EA nối với logic 1(+5V) thì Vi điều khiển thực hiện chương trình

lấy từ bộ nhớ nội. Khi EA nối với logic 0(0V) thì Vi điều khiển thực hiện chương
trình lấy từ bộ nhớ ngoại.
b. Kết nối phần cứng của XTAL1 và XTAL2
Mạch dao động được đưa vào hai chân này thông thường được kết nối với
dao động thạch anh như sau:


Hình 1.4: Kết nối bộ dao động thạch anh.
C1=C2= 30pF dùng ổn định dao động cho thạch anh.
C .Kết nối phần cứng của chân RESET
Việc kết nối chân RESET đảm bảo hệ thống bắt đầu làm việc khi Vi điều
khiển được cấp điện, hoặc đang hoạt động mà hệ thống bị lỗi cần tác động cho Vi
điều khiển hoạt động trở lại, hoặc do người sử dụng muốn quay về trạng thái hoạt
động ban đầu.
Vì vậy chân RESET được kết nối như sau:

Hình 1.5: Kết nối bộ Reset.


Vi điều khiển sử dụng thạch anh có tần số fzat = 12MHz, C=10µF và
R=10KΩ.


1.3 Ic Lm 7805

Điện áp vào lớn nhất: 20V
Điện áp vào nhỏ nhất: 7V
Kiểu đóng vỏ: TO-220
Nhiệt độ hoạt động lớn nhất: 85°C
Nhiệt độ hoạt động nhỏ nhất: -20°C

Dòng đầu ra: 1.5A
Điện áp ổn định: 5V



1.4 Cảm biến nhiệt độ DS18B20


DS18B20 là IC cảm biến nhiệt độ, chỉ bao gồm 3 chân, đóng gói dạng TO-92 3
chân rất nhỏ gọn.
DS18B20 giao tiếp thông qua giao thức 1 dây dẫn với vi xử lý.
Đặc điểm chính của DS18B20 như sau:
+ Cung cấp nhiệt độ với độ phân giải 12bit.
+ Ngưỡng nhiệt độ rộng: -10°C đến 125°C
+ Sai số cho phép: ±0.5°C
+ 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.
+ 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.
a. Tìm hiểu về các lệnh ROM liên quan đến DS18b20
- 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.
- MATCH ROM (55h)



Lệnh này được gửi đi cùng với 64 bit ROM tiếp theo, cho phép bộ điều khiển bus
chọn ra chỉ một cảm biến DS1820 cụ thể khi trên bus có nhiều cảm biến DS1820
cùng nối vào. Chỉ có DS1820 nào có 64 bit trên ROM trung khớp với chuỗi 64 bit
vừa được gửi tới mới đáp ứng lại các lệnh về bộ nhớ tiếp theo. Còn các cảm biến
DS1820 có 64 bit ROM không trùng khớp sẽ tiếp tục chờ một xung reset. Lệnh này
được sử dụng cả trong trường hợp có một cảm biến một dây, cả trong trường hợp
có nhiều cảm biến một dây.
- SKIP ROM (CCh)
Lệnh này cho phép thiết bị điều khiển truy nhập thẳng đến các lệnh bộ nhớ của
DS1820 mà không cần gửi chuỗi mã 64 bit ROM. Như vậy sẽ tiết kiệm được thời
gian chờ đợi nhưng chỉ mang hiệu quả khi chỉ có một cảm biến.
- SEARCH ROM (F0h)
Lệnh này cho phép bộ điều khiển bus có thể dò tìm được số lượng thành viên tớ
đang được đấu vào bus và các giá trị cụ thể trong 64 bit ROM của chúng bằng một
chu trình dò tìm.
- ALARM SEARCH (ECh)
Tiến trình của lệnh này giống hệt như lệnh Search ROM, nhưng cảm biến DS1820
chỉ đáp ứng lệnh này khi xuất hiện điều kiện cảnh báo trong phép đo nhiệt độ cuối
cùng. Điều kiện cảnh báo ở đây được định nghĩa là giá trị nhiệt độ đo được lớn hơn
giá trị TH và nhỏ hơn giá trị TL là hai giá trị nhiệt độ cao nhất và nhiệt độ thấp
nhất đã được đặt trên thanh ghi trong bộ nhớ của cảm biến.
Sau khi thiết bị chủ (thường là một vi điều khiển) sử dụng các lệnh ROM để định
địa chỉ cho các cảm biến một dây đang được đấu vào bus, thiết bị chủ sẽ đưa ra các
lệnh chức năng DS1820. Bằng các lệnh chức năng thiết bị chủ có thể đọc ra và ghi
vào bộ nhớ nháp (scratchpath) của cảm biến DS1820. khởi tạo quá trình chuyển
đổi giá trị nhiệt độ đo được và xác định chế độ cung cấp điện áp nguồn. Các lệnh
chức năng có thể được mô tả ngắn gọn như sau:
- WRITE SCRATCHPAD (4Eh)

Lệnh này cho phép ghi 2 byte dữ liệu vào bộ nhớ nháp của DS1820. Byte đầu tiên
được ghi vào thanh ghi TH (byte 2 của bộ nhớ nháp) còn byte thứ hai được ghi vào
thanh ghi TL (byte 3 của bộ nhớ nháp). Dữ liệu truyền theo trình tự đầu tiên là bit
có ý nghĩa nhất và kế tiếp là những bit có ý nghĩa giảm dần. Cả hai byte này phải
được ghi trước khi thiết bị chủ xuất ra một xung reset hoặc khi có dữ liệu khác xuất
hiện.
- READ SCRATCHPAD (BEh)
Lệnh này cho phép thiết bị chủ đọc nội dung bộ nhớ nháp. Quá trình đọc bắt đầu từ
bit có ý nghĩa nhấy của byte 0 và tiếp tục cho đến byte rhứ 9 (byte 8 - CRC). Thiết
bị chủ có thể xuất ra một xung reset để làm dừng quá trình đọc bất kỳ lúc nào nếu
như chỉ có một phần của dữ liệu trên bộ nhớ nháp cần được đọc.
- COPYSCRATCHPAD (48h)


Lệnh này copy nội dung của hai thanh ghi TH và TL (byte 2 và byte 3) vào bộ nhớ
EEPROM. Nếu cảm biến được sử dụng trong chế dộ cấp nguồn l bắt đầu việc đo.
- CONVERT T (44h)
Lệnh này khởi động một quá trình đo và chuyển đổi giá trị nhiệt độ thành số (nhị
phân). Sau khi chuyển đổi giá trị kết quả đo nhiệt độ được lưu trữ trên thanh ghi
nhiệt độ 2 byte trong bộ nhớ nháp Thời gian chuyển đổi không quá 200 ms, trong
thời gian đang chuyển đổi nếu thực hiện lệnh đọc thì các giá trị đọc ra đều bằng 0.
- READ POWER SUPPLY (B4h)
Một lệnh đọc tiếp sau lệnh này sẽ cho biết DS1820 đang sử dụng chế độ cấp nguồn
như thế nào, giá trị đọc được bằng 0 nếu cấp nguồn bằng chính đường dẫn dữ liệu
và bằng 1 nếu cấp nguồn qua một đường dẫn riêng.
b. Cách config độ phân giải cho ds18b20
Sơ đồ bộ nhớ của ds18b20


Các byte thứ 5 của bộ nhớ đệm có chức năng đăng ký cấu hình (config) cho

ds18b20, và các bít được tổ chức như sau:


Các bit từ 0 đến 4 luôn được đọc giá trị là 1, bít số 7 luôn được đọc giá trị là 0. Cấu
hình độ phân giải cho ds18b20 được quyết định bởi R1 và R0 ta có bảng thiết lập
như sau.

c. Sơ đồ kết nối cảm biến nhiệt ds18b20
- Sơ đồ khi sử dụng một cảm biến.

- Sơ đồ khi mắc nhiều cảm biến. (Chúng ta cũng chỉ cần 1 dây để lấy mẫu nhiệt độ)


d. Đọc nhiệt độ
Khi bắt đầu chuyển đổi nhiệt độ thì chân DQ sẽ được kéo xuống mức thấp và khi
chuyển đổi xong thì ở mức cao.Như vậy ta sẽ căn cứ vào hiện tượng này để xác
định khi nào chuyển đổi xong nhiệt độ. Lưu ý luôn phải dùng một điện trở tầm
4.7k trở lên vào chân DQ treo lên nguồn như sơ đồ mắc.
Dưới đây là một ví dụ mẫu đo nhiệt độ bằng ds18b20 hiển thị LCD các bạn tham
khảo sẽ hiểu rõ hơn về sử dụng cảm biến này như thế nào. Đồng thời tham khảo
thêm datasheet của ds18b20.
Hàm đọc nhiệt đô:
Mã:
float ds18b20_read() {
int8 busy=0, temp1, temp2;
signed int16 temp3;
float result;
onewire_reset();
onewire_write(0xCC);
//Skip ROM, address all devices

onewire_write(0x44);
//Start temperature conversion
while(busy == 0)
//Wait while busy (bus is low)
busy = onewire_read();
onewire_reset();
onewire_write(0xCC);
//Skip ROM, address all devices
onewire_write(0xBE);
//Read scratchpad
temp1 = onewire_read();
temp2 = onewire_read();
temp3 = make16(temp2, temp1);


result = (float) temp3 / 16.0;
delay_ms(200); //
return(result);
}


1.5 Relay 5 chân HLS8L-5VDC

Thông số kỹ thuật:
Điện áp điều khiển: 5V
Dòng điện cực đại: 10A
Thời gian tác động: 10ms
Thời gian nhả hãm: 5ms
Nhiệt độ hoạt động: -45oC ~ 75oC
-Sơ đồ đấu dây


Chân 1 và chân 2 được nối vào cuộn hút, khi có điện vào cuộn hút sẽ hút tiếp điểm
chuyển từ vị trí 5 xuống tiếp điểm 4
Chân 3: đặt điện áp(nếu là loại Relay 5V thì đặt 5V DC vào đây)
Chân 4, chân 5: tiếp điểm.
1.6 Thạch anh 12Mhz
Thạch anh là bộ dao động khá ổn định để tạo ra tần số dao động cho vi điều
khiển. Đa số các mạch điều khiển đèn Led đều dùng thạch anh có thể là Thạch anh
12Mhz, 24Mhz….mỗi loại sẽ cho ra 1 xung nhịp khác nhau.



– Ứng dụng của thạch anh trong điện tử đa phần để tạo ra tần số được ổn định vì
tần số của thạch anh tạo ra rất ít bị ảnh hưởng bởi nhiệt độ hơn là các mạch dao
động RC…


1.7 Led 7 đoạn

- Led 7 đoạn có cấu tạo bao gồm 7 led đơn xếp theo hình phía trên và có
thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của
led 7 thanh.
- 8 led đơn trên led 7 thanh có Anode (cực +) hoặc Cathode (cực -) được nối chung
với nhau vào một điểm và được đưa chân ra ngoài để kết nối với mạch điện. 7 cực
còn lại trên mỗi led đơn của led 7 đoạn và 1 cực trên led đơn ở góc dưới, bên phải
của led 7 đoạn được đưa thành 8 chân riêng để điều khiển cho led sáng tắt theo ý
- Nếu led 7 đoạn có Anode (cực +) chung, đầu chung này được nối với +Vcc, các


chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi

tín hiệu đặt vào các chân này ở mức 0.
- Nếu led 7 đoạn có Cathode (cực -) chung, đầu chung này được nối xuống Ground
(hay Mass), các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn,
led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 1

Chương 3: Xây dựng mô hình phần cứng của hệ thống điều khiển
--Lưa đồ thuật toán


Cảm biến nhiệt độ =T*c
Coi báo=CB
Động cơ =DC

Hiển thị nhiệt độ T lên led 7 thanh

DC=1
40<=T<=45
Đ

s
CB =1
T >=46
Đ

s


3.1 Chuẩn bị linh kiện
- 1 IC 89s52 + Đế cắm 40chân
- 1 DS18B20

- 2 LED 7 thanh Anot chung 0.56
- 1 Relay 5 chân 5v
- 4 Tranzito C1815
- 8 Trở 330 ôm-1/4W
- 4 Trở 1k-1/4W
- 1 Trở 10k-1/4W
- 3 Tụ hóa 10uF
- 1 Tụ hóa 0,1uF
- 2 Tụ gốm 104
- 2 Tụ gốm 33
- 1 Thạch anh 12Mhz
- 1 LM7805
- 1 Nút nhấn 2 chân
- 1 Led phi 3
- 1 Jack DC cái 5.5


3.2 Sơ đồ nguyên lý và mạch in
a. sơ đồ nguyên lý

b. mạch in



3.3. Nguyên lý hoạt động của hệ thống
Cấp nguồn 5v cho hệ thống.Cảm biến nhiệt độ bắt đầu hoạt động tín hiệu từ cảm
biến được đưa vào chân p1.6 của at89c52 sau đó ic 89c52 sẽ thu nhận và chuyển
vào thanh ghi A. Khi nhận đủ các dữ liệu sẽ thực hiện so sánh với các dữ liệu mà
người viết chương trình nạp vào cho nó, chuỗi dữ liệu nào mà giống nhau sẽ được
đưa tín hiệu ra led 7 thanh hiển thị nhiệt độ hiện tại. lúc này chân p1.3 của at89c52

đang có tín hiệu đèn led xanh sẽ sáng. Khi nhiệt độ tăng lên từ 41-45 độ C thì chân
p1.3 sẽ mất tín hiệu đông đời tín hiệu được chuyển xuống chân p1.4 đi qua tranzito
và tới role sẽ chuyển tiếp điểm quận hút cấp điện có quạt gió hoạt động. khi nhiệt
độ tiếp tục tăng lên trên 45 độ C thì tín hiệu từ ic 80c52 sẽ chuyển xuống chân p1.5
cấp cho loa kêu báo động.
3.4 Mô phỏng chương trình trên proteus 8.5


3.2. Chương trình khi điều khiển chính trên hệ thống
#include <regx51.h>
#include <stdio.h>
#define scan_seg P1
#define Bat 1
#define Tat 0
sbit Led1 = P0^3;
sbit Led2 = P0^2;
sbit Led3 = P0^1;
sbit Led4 = P0^0;
#define dt_seg P2
sbit DQ = P1^6;
// chan ket noi voi DS1820
sbit Led_x = P1^3;
sbit Led_d = P1^4;
sbit Loa = P1^5;
unsigned char data_seg[13] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x9C,0xC6,0xBF };
thanh

// Ma led 7



void delay_18B20(unsigned int i);
void Init_18B20(void) ;
// khoi tao DS1820
unsigned char ReadOneChar(void); // doc mot byte trong DS1820
void WriteOneChar(unsigned char dat);
// Ghi byte vao DS1820
unsigned charReadTemperature(void);
// Doc gia tri nhiet do ket qu cuoi cung luu o
temp
unsigned char temp,k;
unsigned char x,y;
/***********CHUONG TR?N TAO THOI GIAN TRE*************/
void delay(unsigned int time)
{
while(time--); }
/*************************************/
// LOA
void bip(void)
{
unsigned char n;
for(n=0;n<100;n++)
{
Loa=1; delay(50);
Loa=0; delay(50);
}
}
void delay_us(unsigned int a)
{
unsigned int d;

for (d=0;d}
//*********************// chuong trinh cho DS18B20
void delay_18B20(unsigned int i)
{
while(i--);
}
void Init_18B20(void)// khoi tao ds18b20
{
unsigned char x=0;
DQ = 1;
delay_18B20(8);
DQ = 0;
delay_18B20(80);
DQ = 1;


delay_18B20(14);
x=DQ;
delay_18B20(10);
}
unsigned char ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0;
dat>>=1;
DQ = 1;

if(DQ)
dat |= 0x80;
delay_18B20(4);
}
return(dat);
}
void WriteOneChar(unsigned char dat)
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
delay_18B20(5);
DQ = 1;
dat>>=1;
}
}
ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
Init_18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
delay_18B20(100);
Init_18B20();

// Bo qua ROM
// this message is very important



×