Tải bản đầy đủ (.doc) (22 trang)

Đo và hiển thị nhiệt độ dùng DS18B20 8051

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 (837.29 KB, 22 trang )

PHẦN I
1.1 VI ĐIỀU KHIỂN 89C51
1.1.1. Sơ đồ khối và ý nghĩa các chân của 89c51

8051 có 4 cổng vào/ra số

P0 có 8 bit
là P0.0 đến P0.7

P0 có 8 bit
là P1.0 đến P1.7

P0 có 8 bit
là P2.0 đến P2.7

P0 có 8 bit
là P3.0 đến P3.7
Ngoài chức năng là các cổng vào/ra
số thì P0 còn là 8 bit (D0 đến D7)
của bus dữ liệu hoặc là 8 bit thấp
(A0 đến A7) của bus địa chỉ ,P2 lá 8
bit cao (A8 đến A15) của bus địa chỉ
khi cần thiết mở rộng thêm các
ngoại vi, bộ nhớ ngoài cho 8051

* RESET: (Tín hiệu vào): Dùng để khởi động lại toàn bộ hệ thống khi chương
trinh đang chạy mà gặp lỗi
* RxD,TxD: Là hai chân nhận và truyền số liệu của cổng truyền thông nối tiếp
* INT0,INT1: Là hai chân nhận tín hiệu ngắt từ bên ngoài

1




* WR ( Tín hiệu ra) Cho phép viết dữ liệu tới các ngoại vi, bộ nhớ bên ngoài vi
điều khiển
* RD: ( Tín hiệu ra) Cho phép đọc dữ liệu từ các ngoại vi,bộ nhớ dữ liệu ngoài
vi điều khiển
* X1,X2: Dùng để tạo xung nhịp cho vi điều khiển
* Vcc,GND: Cấp nguồn cho vi điều khiển (Vcc=5 VDC)
* EA/VP : Là tín hiệu vào
=1: Vi điều khiển sử dụng cả bộ nhớ chương trình bên trong và bộ nhớ
chương trình bên ngoài
+ Nếu vi điều khiển có 4 Kb bộ nhớ chương trinh bên trong với địa chỉ
0000H đến 0FFFH thì bộ nhớ chương trình bên ngoai phải có địa chỉ 1000h
đến 1FFFH
+ Nếu vi điều khiển co 8 Kb bộ nhớ chương trinh bên trong với địa chỉ
0000H đến 1FFFH thì bộ nhớ chương trình bên ngoai phải có địa chỉ 2000h
đến FFFFH
=0: vi điều khiển chỉ sử dụng bộ nhớ bên ngoài co địa chỉ là:0000H đến
FFFFH
* ALE/P: (tín hiệu ra) Là tín hiệu chốt địa chỉ .dùng để phân biệt khi nào P0
là bus dữ liệu,khi nào là bus dữ liệu khi vi điều khiển cần gép nối với các ngoại vi
* ALE=1:P0 là bus địa chỉ
* ALE=1:P0 là bus dữ liệu
* PSEN : Có chức năng giống như chân Rdnhunwg chỉ dùng để đọc bộ nhớ
chương trình bên ngoài
1.1.2. Các thanh ghi đặc biệt
Ký hiệu
* Acc
*B
* PSW

SP
DPTR
DPL
DPH
* P0
* P1
* P2
* P3
* IP
* IE

Tên
Thanh ghi chứa
Thanh ghi B
Thanh ghi trạng thái
Con trỏ ngăn xếp (8bit)
Con trỏ dữ liệu
Byte thấp của DPTR
Byte cao của DPTR
Thanh ghi đệm cổng P0
Thanh ghi đệm cổng P1
Thanh ghi đệm cổng P2
Thanh ghi đệm cổng P3
Thanh ghi điều khiển các mức ưu tiên ngắt
Thanh ghi cho phép/ che chắn các ngắt

2

Địa chỉ
0E0H

0F0H
0D0H
81H
82H
83H
80H
90H
0A0H
0B0H
0B8H
0A8H


TMOD
* TCON
*+T2CON
TH0
TL0
TH1
TL1
+ TH2
+ TL2

Thanh ghi chọn chế độ Time/Counter 0,1
Thanh ghi điều khiển Time/Counter 0,1
Thanh ghi điều khiển Time/Counter 2
Byte cao của bộ đếm trong Timer/Counter 0
Byte thấp của bộ đếm trong Timer/Counter 0
Byte cao của bộ đếm trong Timer/Counter 1
Byte thấp của bộ đếm trong Timer/Counter 1

Byte cao của bộ đếm trong Timer/Counter 2
Byte thấp của bộ đếm trong Timer/Counter 2
Byte cao của thanh ghi Capture/ Reload trong
+ RCAP2H
Timer/Counter 2
Byte thấp của thanh ghi Capture/ Reload trong
+ RCAP2L
Timer/Counter 2
* SCON
Thanh ghi điều khiển cổng truyền thông nối tiếp
SBUF
Bộ đếm cổng truyền thông nối tiếp
PCON
Thanh ghi điều khiển công suất tiêu thụ của 8051

89H
88H
0C8H
8CH
8AH
8DH
8BH
0CDH
0CCH
0CBH
0CAH
98H
99H
87H


Chú ý: *: Chỉ các thanh ghi truy cập theo bit
+: Các thanh ghi chỉ có trong 89c52
1.1.3. Bộ phát xung nhịp
- Dùng để tạo xung đồng bộ cho cả hệ thống vi điều khiển làm việc. Có 2 cách để
tạo xung nhịp là dùng thạch anh hoặc lấy xung dao động từ nguồn ngoài. Thông
thường tần số xung nhịp là: 12MHz. 11,0592MHz. 24MHz
33pF

Vcc

X1

X1

12MHz

10k
33pF
Dùng thạch anh

X2

X2
Xung ngoài

1.1.4. Các Timer/ Counter (T/C)
a. Timer/ Counter 0 và Timer/ Counter 1
3



Khi ứng dụng các Timer/ Counter ta phải cài đặt chúng ở một chế độ làm việc xác
định. Các thanh ghi đặc biệt được thiết kế để đặt các chế độ làm việc cho các
Timer/ Counter là TMOD (Time Mode) và TCON ( Time Control)

Thanh ghi TMOD
TMOD

GATE

M1

T/ C

M0

GATE

T /C

M1

M0

Thanh ghi TMOD có 2 phầnTimer
tử giống
chế độ0 cho các T/C 0 và
1 nhau dùng để cài đặtTimer
T/C 1 tương ứng như hình vẽ
T / C = 1 Làm Counter (Đếm xung từ bên ngoài)
T / C = 0 Làm Timer ( Đếm xung hệ thống)

GATE: Khi TRx=1 (x=0,1) nếu:
+ GATE=0 thì cho phép T/C làm việc
+ GATE=1 thì T/C được phép làm việc nếu INTx=1
Các chế độ làm việc
M1
0
0
1
1


M0
0
1
0
1

Chế độ
0
1
2
3

Mô tả
Bộ đếm 13bit
Bộ đếm 16bit
Chế độ Auto - Reload
Timer0 là bộ đếm 8bit Time1 dừng

Thanh ghi TCON

TF1

TCON

TR1

TF0

TR0

IE1

IT1

IE0

IT0

TF1 (TCON.7): Cờ báo bộ đếm Timer/Counter 1 bị tràn
TR1 (TCON.6): Bit cho phép T/C1 làm việc
TF0 (TCON.5): Cờ báo bộ đếm Timer/Counter 0 bị tràn
TR01 (TCON.4): Bit cho phép T/C0 làm việc
IE1 (TCON.3): Cờ báo có ngắt ngoài ở chân INT 1
IT1 (TCON.2), IT0 (TCON.0):
=1: Cho phép ngắt ngoài tương ứng ngắt theo sườn xuống
=0: Cho phép ngắt ngoài tương ứng ngắt theo mức “0”
IE0 (TCON.1): Cờ báo có ngắt ngoài ở chân INT 0
b. Timer/Counter 2 ( chỉ có trong 89c52)
* Thanh ghi T2CON:
T2CON


TF2

EXF2

RCLK

TCLK
4

EXEN2

TR2

T / C2

CP/


TF2 (T2CON.7): Cờ tràn được dựng khi T/C2 tràn, Cờ phải được xóa bởi phần
mền
TF2 (T2CON.6): Cờ tràn được dựng khi chân T2EX có sườn xuống với điều kiện
bit EXEN2 =1 để báo ngăt
TF2 (T2CON.3): Bit cho phép Reload hoặc Capture khi có sườn xuống ở chân
T2EX
TF2 (T2CON.2): Bit điều khiển cho phép T/C2 chạy hoặc dừng
TF2 (T2CON.1): Lựa chọn T/C2 làm việc ở chế độ Timer hoặc Counter
* Các chế độ làm việc của T/C2
RCLK+TCLK
0

0
1
x

TR2
1
1
1
0

CP / RL

0
1
x
x

MODE
Chế độ Auto – Reload
Chế độ Capture
Chế độ phát Baud rate
Không hoạt dộng

1.1.5. Ngắt và xử lý các ngắt
• Ngắt tràn của T0, T1: TF0,TF1
• Ngắt cổng truyền thông nối tiếp: RI, TI
• Ngắt bên ngoài vi điều khiển: INT 0 , INT 1
• Ngắt của Timer 2: TF2
* Thanh ghi cho phép ngắt IE
IE


EA

-

ET2

ES

ET1

EX1

EA : Cho phép/cấm tất cả ngắt ngoài
ET2:Cho phép/cấm ngăt Timer 2
ES: Cho phép/cấm ngắt cổng truyền thông nối tiếp
ET1: Cho phép/cấm ngăt Timer 1
EX1: Cho phép/cấm ngăt ngoài INT 1
ET0: Cho phép/cấm ngăt Timer 0
EX0: Cho phép/cấm ngăt ngoài INT 0
1.1.6. Địa chỉ vectơ ngắt
STT
1

Nguồn gây ngắt
IE0
5

Địa chỉ
0003H


ET0

EX0


2
3
4
5
6

TF0
IE1
TF1
RI_TI
TF2+EXF2

000BH
0013H
001BH
0023H
002BH

1.3. LED BẢY THANH
1.3.1 Cấu tạo
- Cấu tạo LED bảy thanh bao gồm 8 led phát quang được gọi là các thanh lần
lượt là : a. b, c, d, e, f ,g và dp(dấu chấm).
- LED bảy thanh thường dùng làm cơ cấu quan sát, hiện thị các con số hệ thập
phân. Trong một số trường hợp đặt biệt có thể dùng để hiện thị các số hệ HEX và

các ký tự

a

f

b
g

1.3.2 Phân loại
LED bảy thanh có hai loại là:
Loại Anode chung
Loại Cathode chung
a. Loại Anode chung
g
f A a b

10 9

8 7 6

1 2

3 4 5

e

A c dp

d


e

c

d

dp

Vcc

a

b

6

c

d

e

f

g

dp



Để các thanh sáng ta cấp dòng điện ( 5 – 20mA) chảy qua các Diode tương ứng.Để
hiện thị các số 0 – 9 trong hệ thập phân ta lựa chọn cách thanh cần sáng để hiện thị
được các số tương ứng. Như vậy ta nối chân A vào dương nguồn (5VDC) còn các
chân a, b, c, d, e, f, g, và dp điều khiển chúng sao cho:
Nếu = “1” các thanh tối
Nếu = “0” các thanh sáng
b. Loại Cathode chung
Đối với loại Cathode chung thì chân C nối xuống đất (0VDC) còn các chân a, b, c,
d, e, f, g, và dp điều khiển chúng sao cho:
Nếu = “1” các thanh sáng
Nếu = “0” các thanh tối
g f C a b
Vcc

10 9

8 7 6

a
1 2

b

c

d

e

f


g

3 4 5

e d C c dp
1.3.3 Bảng mã bảy thanh
Mã bảy thanh các số 0 – 9 loại Anode chung
DEC

dp

g

f

e

d

c

b

a

0
1
2
3

4

1
1
1
1
1

1
1
0
0
0

0
1
1
1
0

0
1
0
1
1

0
1
0
0

1

0
0
1
0
0

0
0
0
0
0

0
1
0
0
1

7

Mã Bảy
Thanh
C0H
F9H
A4H
B0H
99H


dp


5
6
7
8
9

1
1
1
1
1

0
0
1
0
0

0
0
1
0
0

1
0
1

0
1

0
0
1
0
0

8

0
0
0
0
0

1
1
0
0
0

0
0
0
0
0

92H

82H
F8H
80H
90H


1.4. CẢM BIẾN NHIỆT ĐỘ (DS18B20)
Các đặc điểm kỹ thuật của cảm biến DS18B20 có thể kể ra một cách tóm tắt như
sau:
• Sử dụng giao diện một dây nên chỉ cần có một chân ra để truyền thông.
• Có thể đo nhiệt độ trong khoảng -55 -> +125 oC.Với khoảng nhiệt độ là -10°C to
+85°C thì độ chính xác ±0.5°C.Có chức năng cảnh báo nhiệt độ vược qua giá trị
cho trước.
• Điện áp sử dụng : 3 – 5.5 V,có thể cấu hình mã hóa nhiệu độ từ 9 – 12 bit
số bit càng lớn thì độ chính xác cao hơn.Thời gian chuyển đổi nhiệt độ tối đa là
750ms cho mã hóa 12 bit
• Dòng tiêu thụ tại chế độ nghỉ cực nhỏ.
• Mỗi cảm biế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.
• Nếu cấu hình cho DS18B20 theo 9,10,11,12 bit thì ta có độ chính xác tương
ứng là : 0.5°C , 0.25°C ,0.125°C, 0.0625°C.Theo mặc định của nhà sản xuất nếu
chúng ta không cấu hình chế độ chuyển đổi thì nó sẽ tự cấu hình là 12 bit.
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 độ.

9


10



II.Các tập lệnh của 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 trên bus 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
11


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.

1.5. Chuẩn giao tiếp RS232
Được xây dựng phục vụ chủ yếu trong việc ghép nối điểm – điểm giữa hai thiết bị đầu
cuối (DTE, Data Terminal Equipment).mặc dù tính năng hạn chế nhưng chuẩn RS232 có
từ lâu đời nhất vì thế nên nó được sử dụng rộng rãi. Ngày nay mỗi máy tính cá nhân có
vài cổng RS232( cổng com) có thể sử dụng nối các thiết bị ngoại vi hoặc với các máy tính
khác.
Ưu điểm của giao diện nối tiếp RS232
+ Khả năng chống nhiễu của các cổng nối tiếp cao
+ Thiết bị ngoại vi có thể tháo lắp ngay cả khi máy tính đang được cấp điện
+ Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua công nối tiếp
Những đặc điểm cần lưu ý trong chuẩn RS232
+ Trong chuẩn RS232 có mức giới hạn trên và dưới (logic 0 và 1) là +-15V. Hiện nay
đang được cố định trở kháng tải trong phạm vi từ-7000Ω- 3000Ω
+ Mức logic 1 có điện áp nằm trong khoảng -3V đến -15V, mức logic 0
từ -3V đến 15V
+ Tốc độ truyền nhận dữ liệu cực đại là 100kbps ( ngày nay có thể lớn hơn)
+ Các lối vào phải có điện dung nhỏ hơn 2500pF
+ Trở kháng tải phải lớn hơn 3000 ôm nhưng phải nhỏ hơn 7000 ôm
12


+ Độ dài của cáp nối giữa máy tính và thiết bị ngoại vi ghép nối qua cổng nối tiếp
RS232 không vượt qua 15m nếu chúng ta không sử model

+ Các giá trị tốc độ truyền dữ liệu chuẩn :
50,75,110,750,300,600,1200,2400,4800,9600,19200,28800,38400....56600,115200
bps
1. Quá trình dữ liệu
a) Quátrình truyền dữ liệu
Truyền dữ liệu qua cổng nối tiếp RS232 được thực hiện không đồng bộ. Do vậy nên
tại một thời điểm chỉ có một bit được truyền (1 kí tự). Bộ truyền gửi một bit bắt đầu (bit
start) để thông báo cho bộ nhận biết một kí tự sẽ được gửi đến trong lần truyền bit tiếp
the . Bit này luôn bắt đầu bằng mức 0.. Tiếp theo đó là các bit dữ liệu (bits data) được
gửi dưới dạng mã ASCII( có thể là 5,6,7 hay 8 bit dữ liệu) Sau đó là một Parity bit
( Kiểm tra bit chẵn, lẻ hay không) và cuối cùng là bit dừng - bit stop có thể là 1, 1,5 hay
2 bit dừng.
b) Tốc độ Baud
Đây là một tham số đặc trưng của RS232. Tham số này chính là đặc trưng cho quá
trình truyền dữ liệu qua cổng nối tiếp RS232 là tốc độ truyền nhận dữ liệu hay còn gọi là
tốc độ bit. Tốc độ bit được định nghĩa là số bit truyền được trong thời gian 1 giây hay số
bit truyền được trong thời gian 1 giây. Tốc độ bit này phải được thiết lập ở bên phát và
bên nhận đều phải có tốc độ như nhau
( Tốc độ giữa vi điều khiển và máy tính phải chung nhau 1 tốc độ truyền bit)
Ngoài tốc độ bit còn một tham số để mô tả tốc độ truyền là tốc độ Baud. Tốc độ
Baud liên quan đến tốc độ mà phần tử mã hóa dữ liệu được sử dụng để diễn tả bit được
truyền còn tôc độ bit thì phản ánh tốc độ thực tế mà các bit được truyền.Vì một phần tử
báo hiệu sự mã hóa một bit nên khi đó hai tốc độ bit và tốc độ baud là phải đồng nhất
Một số tốc độ Baud thường dùng: 50, 75, 110, 150, 300, 600, 1200, 2400, 4800,
9600, 19200, 28800, 38400, 56000, 115200 … Trong thiết bị họ thường dùng tốc độ là
19200, Khi sử dụng chuẩn nối tiếp RS232 thì yêu cầu khi sử dụng chuẩn là thời gian
chuyển mức logic không vượt quá 4% thời gian truyền 1 bit. Do vậy, nếu tốc độ bit càng
cao thì thời gian truyền 1 bit càng nhỏ thì thời gian chuyển mức logic càng phải nhỏ.
Điều này làm giới hạn tốc Baud và khoảng cách truyền.


c) Bit chẵn lẻ hay Parity bit
Đây là bit kiểm tra lỗi trên đường truyền. Thực chất của quá trình kiểm tra lỗi khi
truyền dữ liệu là bổ xungthêm dữ liệu được truyền để tìm ra hoặc sửa một số lỗi trong
13


quá trình truyền . Do đó trong chuẩn RS232 sử dụng một kỹ thuật kiểm tra chẵn lẻ.
Một bit chẵn lẻ được bổ sung vào dữ liệu được truyền để ch thấy số lượng các bit "1"
được gửi trongmột khung truyền là chẵn hay lẻ.
Một Parity bit chỉ có thể tìm ra một số lẻ các lỗi chả hạn như 1,3,,5,7,9... Nếu như
một bit chẵn được mắc lỗi thì Parity bit sẽ trùng giá trị với trường hợp không mắc lỗi vì
thế không phát hiện ra lỗi. Do đó trong kỹ thuật mã hóa lỗi này không được sử dụng
trong trường hợp có khả năng một vài bit bị mắc lỗi.

2.

IC MAX232

Max232 là IC chuyên dùng cho giao tiếp giữa RS232 và thiết bị ngoại vi. Max232
là IC của hãng Maxim. Đây là IC chay ổn định và được sử dụng phổ biến trong các mạch
giao tiếp chuẩn RS232. Giá thành của Max232 phù hợp (12K hay 10K) và tích hợp trong
đó hai kênh truyền cho chuẩn RS232. Dòng tín hiệu được thiết kế cho chuẩn RS232 .
Mỗi đầu truyền ra và cổng nhận tín hiệu đều được bảo vệ chống lại sự phóng tĩnh điện
( hình như là 15KV). Ngoài ra Max232 còn được thiết kế với nguồn +5V cung cấp nguồn
công suất nhỏ.

1.5. CÁC LINH KIỆN KHÁC
1.5.2. Phím bấm

- Sơ đồ nguyên lý

Vcc
10K

2,2μF
Output

1.5.2. Các linh kiện khác
- Tụ điện: Chọn tụ điện có các giá trị sau 2,2μF, 3,3pF
14


+ Đối với loại tụ có giá trị 2,2μF ta chọn tụ hóa
+ Đối với loại tụ có giá trị 3,3pF ta chọn tụ gốm
- Transzito : Chọn loại NPN có cấu tạo như sau
E

N

P

N

C

E

5VDC

B


B
C

Chức năng Khuếch đại dòng để quét LED hiện thị
- Điện trở: Chọn loại điện trở có giá trị 10KὨ và 330Ὠ
2.2. SƠ ĐỒ NGUYÊN LÝ

15


2.3. SƠ ĐỒ THUẬT TOÁN TOÀN BỘ CHƯƠNG TRÌNH
Chuyển đổi dữ liệu
nhiệt độ từ ds18b20

Gửi lệnh yêu cầu
truy cập thẳng bộ
nhớ của ds18b20
SKIP ROM (CCh)

Hiển thị dữ liệu sau xử

Gửi lệnh yêu cầu
chuyển đổi nhiệt độ
CONVERT T (44h)
Kiểm tra ngưỡng cao
thấp

RESET (44h)
Gửi lệnh yêu cầu
truy cập thẳng bộ

nhớ của ds18b20

Kiểm tra phím nhấn

SKIP ROM (CCh)

ENA

Đọc nội dung bộ nhớ
nháp của ds18b20
READ SCRATCHPAD
(BEh)

Thuật toán chương trình chính
Qúa trình đọc ds

16


2.4. VIẾT CHƯƠNG TRÌNH PHẦN MỀN
DQ
BIT P2.2
RUN bit
P0.0
STOP bit
p0.1
W_L
W_H

EQU

EQU

50H
51H

DEM EQU
T_LSB
T_MSB
TEMP EQU
DIGITEQU
T_DIGIT
T_LED

R2
EQU
EQU

30H
20H

EQU
EQU

33H
34H

ENA

EQU


35H

32H
31H

ORG 0000H
jmp CHUONG_TRINH_CHINH
WRITE_TIME_SLOT:
CLR DQ
NOP
NOP
MOV DQ,C
MOV R5,#15
Lcall DELAY
SETB DQ
NOP
RET
READ_TIME_SLOT:
CLR DQ
NOP
NOP
SETB DQ
MOV R5,#4
lcall DELAY
MOV C, DQ
MOV R5,#25
Lcall DELAY
RET
RESET_DS1820:
CLR DQ

MOV R5,#244
Lcall DELAY

;byte nhiet do thap doc tu SCRATCHPAD
;byte nhiet do cao doc tu SCRATCHPAD
;nhiet do sau khi hieu chinh
;phan thap phan

;viet 1 bit

;doc 1 bit

17


SETB
MOV
Lcall
JB
MOV
lcall

DQ
R5,#36
DELAY
DQ,RESET_DS1820
R5,#212
DELAy

RET

WRITE_BYTE:
MOV DEM,#8
WRITE_LAI:
RRC A
Lcall WRITE_TIME_SLOT
DJNZ DEM, WRITE_LAI
SETB DQ
MOV R5,#50
Lcall DELAY
RET
READ_BYTE:
MOV DEM,#8
READ_LAI:
Lcall READ_TIME_SLOT
RRC A
DJNZ DEM, READ_LAI
MOV R5,#50
Lcall DELAY
RET
DELAY:
DJNZ R5,$
RET
DELAY_LONG:
MOV R6,#0FFH
DELAY_LAI:
Lcall DELAY
DJNZ R6,DELAY_LAI
RET
BCD:
MOV B,#10

DIV AB
MOV T_LED,A
RET
HIEU_CHINH:
;hieu chinh 0.1 va nhiet do (+)
MOV TEMP,#0
MOV DIGIT,#0
ANL A,#0FH
;BO BYTE CAO
MOV TEMP,A
MOV A,T_LSB
ANL A,#0F0H
;BO BYTE THAP
18


ORL TEMP,A
MOV A,TEMP
SWAP A
MOV TEMP,A
;------------------------------------------------------------------------------------MOV A,T_LSB
ANL A,#0FH
;BO BYTE CAO
MOV DPTR,#TABLE1
MOVC
A,@A+DPTR
MOV DIGIT,A
RET
KIEMTRA:
;hieu chinh gia tri cua nhiet do (-)

JNB 6,OUT_KT
MOV A,#0FFH
CLR C
SUBB A,TEMP
MOV TEMP,A
MOV A,#0FH
ANL A,T_LSB
CJNE A,#0,OUT_KT1
INC TEMP
JMP OUT_KT
OUT_KT1:
MOV DPTR,#TABLE2
MOVC
A,@A+DPTR
MOV DIGIT,A
OUT_KT:
RET
OUTLED:
MOV DPTR,#TABLE0
MOV A,TEMP
lcall BCD
MOV A,B
MOVC
A,@A+DPTR
ANL A,#01111111B
MOV P1,A
SETB P3.4
lcall DELAYLED
CLR P3.4
MOV A,T_LED

lcall BCD
JNB 6,NEXT1
;dau (-)
MOV A,#10
NEXT1:
MOVC
A,@A+DPTR
MOV P1,A
SETB P3.2
lcall DELAYLED
19


CLR P3.2
MOV A,B
MOVC
A,@A+DPTR
MOV P1,A
SETB P3.3
lcall DELAYLED
CLR P3.3
MOV A,DIGIT
MOVC
A,@A+DPTR
MOV P1,A
SETB P3.5
lcall DELAYLED
CLR P3.5
RET
DELAYLED:

MOV R7,#5
LOOPD:
MOV R6,#255
DJNZ R6,$
DJNZ R7,LOOPD
RET
CHUONG_TRINH_CHINH:
setb RUN
setb STOP
SETB DQ
SETB ENA
CLR P3.6
CLR P3.7
MOV
W_L,#28h
; NGUONG THAP
MOV
W_H,#3ch
; NGUONG CAO
MOV
TEMP,#0
MAIN:
JNB ENA,N_ENABLE
ENABLE:
lcall RESET_DS1820
MOV A,#0CCH ; SKIP ROM (CCH) NH?P TH?NG D?N CáC L?NH B? NH? C?A
DS1820
lcall WRITE_BYTE
MOV A,#44H ; CONVERT T KH?I D?NG M?T QUá TRìNH DO Và CHUY?N D?
I GIá TR? NHI?T D?

lcall WRITE_BYTE
lcall RESET_DS1820
MOV A,#0CCH ; SKIP ROM (CCH) NH?P TH?NG D?N CáC L?NH B? NH? C?A
DS1820
lcall WRITE_BYTE
MOV A,#0BEH ; READ SCRATCHPAD CHO PHéP THI?T B? CH? D?C N?I
DUNG B? NH? NHáP
lcall WRITE_BYTE
20


lcall
MOV
lcall
MOV
lcall

READ_BYTE
T_LSB,A
READ_BYTE
T_MSB,A
RESET_DS1820

;THAP
;CAO

;

lcall HIENTHI
lcall HIEU_CHINH

lcall KIEMTRA
N_ENABLE:
lcall OUTLED
LCALL
SO_SANH
CHECK_RUN:
; KIEM TRA NUT RUN
JB
RUN,CHECK_STOP
;NEU PHIM RUN = '1' THI kie tra phim
stop
LCALL
DELAY
JNB RUN,CHECK_RUN
; chong giu phim
SETB
ENA ;set bien ena
EXIT_RUN:
JMP MAIN
CHECK_STOP:
; KIEM TRA NUT stop
JB
STOP,EXIT_STOP ;
LCALL
DELAY
JNB STOP,CHECK_STOP
; chong giu phim
CLR
ENA
EXIT_STOP:

JMP MAIN
HIENTHI:
lcall
lcall
lcall
RET

HIEU_CHINH
KIEMTRA
OUTLED

SO_SANH:
MOV
A,temp
CLR C
SUBB A,W_L
JC
SET_L
MOV
A,W_H
CLR C
SUBB A,temp
JC
SET_H

; NGUONG <40
; NGUONG >60

21



CLR P3.6
CLR P3.7
mov a,#0
clr
c
RET
SET_L:
clr
c
SETB p3.6
clr
p3.7
RET
SET_H:
clr
c
SETB p3.7
clr
p3.6
RET
TABLE0:
DB
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH,0FFH
TABLE1:
DB
0,0,1,0,2,3,0,4,5,0,6,0,7,8,0,9
TABLE2:
DB
0,0,9,8,0,7,0,6,5,0,4,3,0,2,0,1

END

22



×