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

Đồ án môn học thiết kế đồng hồ thời gian thực và hiển thị nhiệt độ dùng at89s52 và DS1307

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 (745.5 KB, 47 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH
KHOA ĐIỆN-ĐIỆN TỬ

BÁO CÁO ĐỒ ÁN 2
ĐỀ TÀI: THIẾT KẾ ĐỒNG HỒ THỜI GIAN
THỰC VÀ ĐO NHIỆT ĐỘ HIỂN THỊ LCD

Giảng viên hướng dẫn
Sinh viên thực hiện
MSSV
LỚP

: NGUYỄN DUY THẢO
: TRẦN TRUNG HIẾU
: 10101043
: 101012B

1


MỤC LỤC

2


LỜI NÓI ĐẦU
Ngày nay cùng với sự phát triển không ngừng của khoa học kỹ thuật, điện
tử đã đang và sẽ phát triển mạnh mẽ, đặc biệt là trong các nhà máy, xí
nghiệp để phát triển quá trình tự động hóa cũng như mang lại tiện ích trong
sinh hoạt cho con người. Một trong những lĩnh vực phát triển hiện nay đó là


ứng dụng vi điều khiển.
Dưới sự hướng dẫn của Thầy Nguyễn Duy Thảo, em quyết định thực hiện
đề tài: “Thiết kế đồng hồ thời gian thực, có hiển thị nhiệt độ”.
Sau thời gian nỗ lực nghiên cứu, được sự chỉ dẫn nhiệt tình của thầy
Nguyễn Duy Thảo, em đã hoàn thành đề tài đã chọn. Dưới đây là Bài tiểu
luận báo cáo kết quả nghiên cứu của em, tuy đã nổ lực hết sức nhưng trong
quá trình thực hiện đề tài, do trình độ hiểu biết còn hạn chế nên đề tài còn
nhiều thiếu sót, em rất mong được sự giúp đỡ của Thầy để chúng em hoàn
thiện quá trình học tập tốt hơn.
Em xin gửi lời cảm ơn đến Thầy Nguyễn Duy Thảo đã giúp đỡ chúng em
rất nhiều trong quá trình thực hiện đề tài, em xin chân thành cảm ơn.

Tp.Hồ Chí Minh ngày 1 tháng 12 năm 2013

3


CHƯƠNG I: GIỚI THIỆU ĐỀ TÀI
I.

SƠ ĐỒ KHỐI

II.

CHỨC NĂNG SƠ LƯỢC CỦA TỪNG KHỐI
Khối vi điều khiển sử dụng vi điều khiển AT89S52 điều khiển
toàn bộ các hoạt động chính của mạch: nhận tín hiệu điều khiển
của khối nút nhấn và tín hiệu từ khối cảm biến nhiệt độ và khối
thời gian thực để xuất dữ liệu ra khối hiển thị là LCD.
Khối hiển thị sử dụng LCD 20x4 dùng để hiển thị dữ liệu gồm có

thứ, ngày, tháng, năm, giờ, phút, giây và nhiệt độ.
Khối nút nhấn gồm các nút nhấn để đặt và hiệu chỉnh thời gian.
Khối thời gian thực là IC thời gian thực DS1307.
Khối cảm biến nhiệt độ là IC cảm biến DS18b20, là loại cảm
biến số 1 dây.








4


CHƯƠNG I: GIỚI THIỆU PHẦN CỨNG
I.
VI ĐIỀU KHIỂN AT89S52
1. Giới thiệu sơ lược

AT89S52 thuộc họ vi điều khiển MCS-52, có cấu hình như sau:
 Có 8Kb bộ nhớ FLASH ROM bên trong để lưu chương trình điều

khiển.
 Có 256 Byte RAM nội và các thanh ghi có chức năng đặc biệt.
 Có 4 port xuất/nhập 8 bit
 Có khả năng giao tiếp truyền dữ liệu nối tiếp.
 Có 6 nguồn ngắt.
 Có 3 timer 16 bit.

 Cho phép lập trình nối tiếp theo chuẩn SPI với điện áp lập trình 5V.
 Có thể giao tiếp với 64Kb bộ nhớ ngoại dùng để lưu chương trình điều
khiển
 Có thể giao tiếp với 64Kb bộ nhớ ngoại dùng để lưu dữ liệu
2. Sơ đồ cấu trúc của vi điều khiển AT89S52.
Cấu trúc của vi điều khiển được trình bày ở hình dưới. Các thanh
ghi có trong vi điều khiển bao gồm:
 Khối ALU đi kèm với các thanh ghi temp1, temp2 và thanh ghi trạng











thái PSW.
Bộ điều khiển logic (timing and control).
Vùng nhớ RAM nội và vùng nhớ Flash Rom lưu trữ chương trình.
Mạch tạo dao động nội kết hợp với tụ thạch anh bên ngoài để tạo dao
động.
Khối xử lý ngắt, truyền dữ liệu, khối timer/counter.
Thanh ghi A, B, dptr và 4 port0, port1, port2, port3 có chốt và đệm.
Thanh ghi bộ đếm chương trình PC (program counter).
Con trỏ dữ liệu dptr (data pointer).
Thanh ghi con trỏ ngăn xếp SP (stack pointer).
Thanh ghi lệnh IR (instruction register).

Ngoài ra còn có 1 số các thanh ghi hổ trợ để quản lý địa chỉ bộ nhớ
ram nội bên trong cũng như các thanh ghi quản lý địa chỉ truy xuất bộ
nhớ bên ngoài.

5


Sơ đồ khối AT89S52

6


3. Sơ đồ chân AT89S52

Vi điều khiển AT89S52 có 40 chân. Trong đó nhiều chân có chức năng kép,
mỗi đường có thể hoạt động như đường xuất nhập điều khiển IO hoặc là
thành phần của các bus dữ liệu và bus địa chỉ và dữ liệu khi giao tiếp với bộ
nhớ ngoài.

a. Chức năng các port
 Port 0: dùng làm các đường điều khiển (nếu không dùng bộ nhớ mở

rộng bên ngoài), bus địa chỉ và bus dữ liệu (nếu dùng bộ nhớ mở
rộng bên ngoài).

 Port 1: có 5 chân 2 chức năng: chân P1.0 và P1.1 phục vụ cho timer

T2, 3 chân P1.5, P1.6, P1.7 có chức năng nạp dữ liệu nối tiếp cho bộ

7



nhớ chương trình. Sau khi nạp chương trình, 3 chân trên có thể làm
xuất nhập dữ liệu để điều khiển.

 Port 2: có 2 chức năng:
o Dùng làm các đường điều khiển (nếu không dùng bộ nhớ mở

rộng bên ngoài).
o Dùng làm bus địa chỉ cao A8-A15 (nếu dùng bộ nhớ mở rộng
bên ngoài).

 Port 3: có nhiều chức năng:

Bit
P3.0
P3.1
P3.2
P3.3
P3.4

Tên
RxD
TxD
INT0
INT1
T0

P3.5


T1

P3.6

WR

P3.7

RD

Chức năng chuyển đổi.
Ngõ vào nhận dữ liệu nối tiếp.
Ngõ xuất dữ liệu nối tiếp.
Ngõ vào ngắt cứng thứ 0.
Ngõ vào ngắt cứng thứ 1.
Ngõ vào nhận xung đếm của timer/counter
thứ 0.
Ngõ vào nhận xung đếm của timer/counter
thứ 0.
Tín hiệu điều khiển ghi dữ liệu lên bộ nhớ
ngoài.
Tín hiệu điều khiển đọc dữ liệu từ bộ nhớ
ngoài.

b. Các chân tín hiệu:
 Tín hiệu PSEN (Program Store Enable)

Là tín hiệu ngõ ra có chức năng cho phép đọc bộ nhớ chương
trình mở rộng.
 Tín hiệu điều khiển ALE/PROG (Address Latch


Enable/Program)
Dùng làm tín hiệu điều khiển IC chốt để giải đa hợp các đường
địa chỉ và dữ liệu, nhận xung từ bên ngoài để lập trình lưu mã
vào bộ nhớ Flash Rom ở chế độ lập trình song song.
 Tín hiệu EA/VPP

8


EA=1(+5V): thi hành chương trình từ bộ nhớ nội.
EA=0(0V): thi hành chương trình từ bộ nhớ ngoại
 Tín hiệu RST

Khi cấp điện cho hệ thống hoặc khi nhấn reset thì mạch sẽ reset
vi điều khiển.
II.

GIỚI THIỆU IC THỜI GIAN THỰC DS1307
DS1307 là chip đồng hồ thời gian thực (RTC : Real-time clock), khái
niệm thời gian thực ở đây được dùng với ý nghĩa thời gian tuyệt đối mà
con người đang sử dụng, tinh bằng giây, phút, giờ... DS1307 là một sản
phẩm của Dallas Semiconductor (một công ty thuộc Maxim Integrated
Products). Chip này có 7 thanh ghi 8-bit chứa thời gian là: giây, phút,
giờ, thứ (trong tuần), ngày, tháng, năm. Ngoài ra DS1307 còn có 1 thanh
ghi điều khiển ngõ ra phụ và 56 thanh ghi trống có thể dừng như RAM.

1. Sơ đồ chân

Các chân của DS1307 được mô tả như sau:

 X1 và X2: là 2 ngõ kết nối với 1 thạch anh

32.768KHz làm nguồn tạo dao động cho chip.
 VBAT: cực dương của một nguồn pin 3V nuôi chip.
 GND: chân mass chung cho cả pin 3V và Vcc.
 Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi
điều khiển.
SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave /



Output Driver), tần số của xung được tạo có thể được lập trình. Như vậy
chân này hầu như không liên quan đến chức năng của DS1307 là đồng hồ
thời gian thực.
 SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện

I2C.

Cấu tạo bên trong DS1307 bao gồm một số thành phần như mạch nguồn,

9


mạch dao động, mạch điều khiển logic, mạch giao diện I2C, con trỏ địa chỉ
và các thanh ghi (hay RAM). Sử dụng DS1307 chủ yếu là ghi và đọc các
thanh ghi của chip này. Vì thế có 2 vấn đề cơ bản đó là cấu trúc các thanh
ghi và cách truy xuất các thanh ghi này thông qua giao diện I2C. Như đã
trình bày, bộ nhớ DS1307 có tất cả 64 thanh ghi 8-bit được đánh địa chỉ từ
0 đến 63 (từ 00H đến 3FH theo hệ HexaDecimal). Tuy nhiên, thực chất chỉ
có 8 thanh ghi đầu là dùng cho chức năng “đồng hồ” (RTC) còn lại 56

thanh ghi bỏ trống có thể được dùng chứa biến tạm như RAM nếu muốn.
Bảy thanh ghi đầu tiên chứa thông tin về thời gian của đồng hồ bao gồm:
giây (SECONDS), phút (MINUTES), giờ (HOURS), thứ (DAY), ngày
(DATE), tháng (MONTH) và năm (YEAR). Việc ghi giá trị vào 7 thanh ghi
này tương đương với việc “cài đặt” thời gian khởi động cho RTC. Việc đọc
giá trị từ 7 thanh ghi là đọc thời gian thực mà chip tạo ra. Ví dụ, lúc khởi
động chương trình, chúng ta ghi vào thanh ghi “giây” giá trị 42, sau đó 12s
chúng ta đọc thanh ghi này, chúng ta thu được giá trị 54. Thanh ghi thứ 8
(CONTROL) là thanh ghi điều khiển xung ngõ ra SQW/OUT (chân 6). Tuy
nhiên, do chúng ta không dùng chân SQW/OUT nên có thề bỏ qua thanh
ghi thứ 8.

10


Sơ đồ khối DS1307

Tổ chức bộ nhớ thanh ghi được trình bày ở hình dưới



Thanh ghi giây (SECONDS): thanh ghi này là thanh ghi đầu tiên

11


trong bộ nhớ của DS1307, địa chỉ của nó là 0x00. Bốn bit thấp chứa mã
BCD 4-bit của chữ số hàng đơn vị của giá trị giây. Do giá trị cao nhất của
chữ số hàng chục là 5 (không có giây 60) nên chỉ cần 3 bit là có thể mã hóa
được (số 5 =101, 3 bit). Bit cao nhất, bit 7, trong thanh ghi này là 1 điều

khiển có tên CH (Clock halt - treo đồng hồ), nếu bit này được set bằng 1 bộ
dao động trong chip bị vô hiệu hóa, đồng hồ không hoạt động. Vì vậy, nhất
thiết phải reset bit này xuống 0 ngay từ đầu.


Thanh ghi phút (MINUTES): có địa chỉ 01H, chứa giá trị phút của

đồng hồ. Tương tự thanh ghi SECONDS, chỉ có 7 bit của thanh ghi này
được dùng lưu mã BCD của phút, bit 7 luôn luôn bằng 0.


Thanh ghi giờ (HOURS): có thể nói đây là thanh ghi phức tạp nhất

trong DS1307. Thanh ghi này có địa chỉ 02H. Trước hết 4-bits thấp của thanh
ghi này được dùng cho chữ số hàng đơn vị của giờ. Do DS1307 hỗ ứợ 2 loại hệ
thống hiển thị giờ (gọi là mode) là 12h (lh đến 12h) và 24h (lh đến 24h) giờ,
bit6 xác lập hệ thống giờ. Nếu bit6=0 thì hệ thống 24h được chọn, khi đó 2 bit
cao 5 và 4 dùng mã hóa chữ số hàng chục của giá trị giờ. Do giá trị lớn nhất
của chữ số hàng chục trong trường hợp này là 2 (=10, nhị phân) nên 2 bit 5 và
4 là đủ để mã hóa. Nếu bit6=l thỉ hệ thống 12h được chọn, với trường hợp này
chỉ có bit 4 dùng mã hóa chữ số hàng chục của giờ, bit 5 chỉ buổi ừong ngày,
AM hoặc PM. Bit5 =0 là AM và bit5=l là PM. Bit 7 luồn bằng 0.


Thanh ghi thứ (DAY - ngày trong tuần): nằm ở địa chỉ 03H. Thanh

ghi DAY chỉ mang giá trị từ 1 đến 7 tương ứng từ Chủ nhật đến thứ 7 trong
1 tuần. Vì thế, chỉ có 3 bit thấp trong thanh ghi này có nghĩa.



Các thanh ghi còn lại có cấu trúc tương tự, DATE chứa ngày trong

tháng (1 đến 31), MONTH chứa tháng (1 đến 12) và YEAR chứa năm (00

12


đến 99).
2. Thuật toán giao tiếp I2C giữa vi điều khiển và DS1307
a. Điều kiện start-stop

START và STOP là những điều kiện bắt buộc phải có khi một thiết bị chủ
muốn thiết lập giao tiếp với một thiết bị nào đó trong mạng I2C. START là
điều kiện khởi đầu, báo hiệu bắt đầu của giao tiếp, còn STOP báo hiệu kết
thúc một giao tiếp.

Điều kiện start-stop



Ban đầu khi chưa thực hiện quá trình giao tiếp, cả hai

đường SDA và SCL đều ở mức cao (SDA = SCL = HIGH). Lúc này bus
I2C đuợc coi là “rỗi” (“bus free”), sẵn sàng cho một giao tiếp. Hai điều
kiện START và STOP là không thể thiếu trong việc giao tiếp giữa các thiết
bị I2C, tất nhiên là trong giao tiếp này cũng không ngoại lệ.


Điều kiện START: một sự chuyển đổi trạng thái từ cao


xuống thấp trên đường SDA trong khi đường SCL đang ở mức cao (cao =
1; thấp = 0) báo hiệu một điều kiện START.

13




Điều kiện STOP: Một sự chuyển đổi trạng thái từ mức thấp

lên cao trên đường SDA trong khi đường SCL đang ở mức cao.


Cả hai điều kiện START và STOP đều được tạo ra bởi thiết

bị chủ. Sau tín hiệu START, bus I 2C coi như đang trong trạng thái làm việc
(busy). Bus I2C sẽ rỗi, sẵn sàng cho một giao tiếp mới sau tín hiệu STOP từ
phía thiết bị chủ.


Sau khi có một điều kiện START, trong qua trình giao tiếp,

khi có một tín hiệu START được lặp lại thay vì một tín hiệu STOP thì bus
I2C vẫn tiếp tục trong trạng thái bận. Tín hiệu START và lặp lại START đều
có chức năng giống nhau là khởi tạo một giao tiếp.
b.






Chế độ hoạt động

DS1307 hoạt động ở 2 chế độ sau:
Ở chế độ slave nhận (chế độ DS1307 ghi): chuỗi dữ liệu và chuỗi xung
clock sẽ được nhận thông qua SDA và SCL. Sau mỗi byte được nhận thì 1
bit ACKnowledge sẽ được truyền. Các điều kiện START và STOP sẽ được
nhận dạng khi bắt đầu và kết thúc 1 truyền 1 chuỗi, nhận dạng địa chỉ được
thực hiện bởi phần cứng sau khi chấp nhận địa chỉ của slave và bit một
chiều.
Chế độ slave phát ( chế độ DS1307 đọc ): byte đầu tiên slave nhận được
tương tự như chế độ slave ghi. Tuy nhiên trong chế độ này thì bit chiều lại
chỉ chiều chuyền ngược lại. Chuỗi dữ liệu được phat đi trên SDA bởi
DS1307 trong khi chuỗi xung clock vào chân SCL.
c.

Thuật toán
 START I2C.
 Ghi: ODxH (Đây là địa chỉ của DS1307 do nhà sản xuất
quy định trong giao tiếp I2C) với:
x=0: Ghi dữ liệu vào DS1307
x=l: Đọc dữ liệu vào DS1307

 Ghi tham sổ x này vào, có nghĩa là việc tiếp theo là chúng ta ghi hay đọc
dữ liệu từ DS1307 tùy vào giá trị x=0 (ghi dữ liệu) hay x=1 (đọc dữ liệu).
 Ghi vào địa chỉ thanh ghi cần ghi hoặc cần đọc.
 Ghi hoặc đọc dữ liệu.

14



 STOPI2C.
III. GIỚI THIỆU IC ĐO NHIỆT ĐỘ 18B20
1. Đặc điểm
DS1820 là một sản phẩm của công ty Dallas (Hoa Kỳ), đây cũng là công ty
đóng góp nhiều vào việc cho ra đời bus một dây và các cảm biến một dây.
Hình dạng của cảm biến được trình bày ở hình dưới.

Các đặc điểm kỹ thuật của cảm biến DS1820 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.
 Độ phân giải khi đo nhiệt độ là 9 bit. Dải đo nhiệt độ -55°c đến
125°c, từng bậc 0,5oC, có thể đạt độ chính xác đến 0, l°C bằng việc
hiệu chỉnh qua phần mềm.
 Rất thích họp với các ứng dụng đo lường đa điểm vì nhiều đầu đo có thể
được nối trên một bus, bus này được gọi là bus một dây (l-wire bus).
 Không cần thêm linh kiện bên ngoài.
 Điện áp nguồn nuôi có thể thay đổi trong khoảng rộng, từ 3,0 V đến
5,5 V một chiều và có thể được cấp thông qua đường dẫn dữ liệu.
 Dòng tiêu thụ tại chế độ nghỉ cực nhỏ.
 Thời gian lấy mẫu và biến đổi thành số tương đối nhanh, không quá 200
ms.
 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.
Đầu đo nhiệt độ số DS1820 đưa ra số liệu đế biểu thị nhiệt độ đo được
dưới dạng mã nhị phân 9 bit. Các thông tin được gửi đến và nhận về từ
DS1820 trên giao diện l-wire, do đó chỉ cần hai đường dẫn một đường làm

15



tín hiệu, một đường làm dây đất là đủ để kết nối vi điều khiển đến điểm
đo. Nguồn nuôi cho các thao tác ghi/đọc/chuyến đổi có thê được trích từ
đường tín hiệu, không cần có thêm đường dây riêng để cấp điện áp nguồn.
Mồi vi mạch đo nhiệt độ DS1820 có một mã số định danh duy nhất, được
khắc bằng laser trong quá trình chế tạo vi mạch nên nhiều vi mạch
DS1820 có thể cùng kết nối vào một bus l-wire mà không có sự nhầm lẫn.
Đặc điểm này làm cho việc lắp đặt nhiều cảm biến nhiệt độ tại nhiều vị trí
khác nhau trở nên dễ dàng và với chi phí thấp. Theo chuẩn 1- wire độ dài
tối đa cho phép của bus là 300 m. số lượng các cảm biến nối vào bus không hạn
chế.

BỘ NHỚ ROM 64 BIT

Mỗi cảm biến nhiệt độ DS1820 có một dãy mã 64 bit duy nhất được lưu
trữ trong bộ nhớ ROM từ khi sản xuất bằng kỹ thuật laser. Ý nghĩa của 64
bit mã được giải thích như sau:

Như vậy dãy mã được chia ra thành 3 nhóm, trong đó:
 Tám bit đầu tiên là mã định danh họ một dây, mã của DS1820 là 1
Oh.

48 bit tiếp theo là mã số xuất xưởng duy nhất, nghĩa là mỗi cảm
biến DS1820 chỉ có một số mã.

Tám bit có ý nghĩa nhât là byte mã kiêm tra CRC (cyclic redundancy
check), byte này được tính toán từ 56 bit đầu tiên của dãy mã trên ROM
Để truy cập lên cảm biến một dây DS1820 ta phải sử dụng hai nhóm lệnh:
các lệnh ROM và các lệnh chức năng (function commands) bộ nhớ, các

lệnh này có thê được mô tả ngắn gọn như sau:
Sau khi thiết bị chủ (thường là một vi điều khiển) phát hiện ra một xung
presence pulse, nó có thể xuất ra một lệnh ROM. Có 5 loại lệnh ROM,
mỗi lệnh dài 8 bit. Thiết bị chủ phải đưa ra lệnh ROM thích hợp trước khi
đưa ra một lệnh chức năng để giao tiếp với cảm biến DS18S20.

LỆNH 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 (lOh), 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

16


-

-

-

-

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
trùng 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 đó 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ò
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.

LỆNH CHỨC NĂNG BỘ NHỚ
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

17


ghi vào thanh ghi TL (byte 2 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ế độ cấp
nguồn 1 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.

IV. GIỚI THIỆU LCD

1. Sơ đồ khối và chức năng các chân

18


ST
T
1
2
3
4

Tên
Vss
Vcc
Vee
RS

5

R/W

6
7
8
9
10
11
12


EN
D0
D1
D2
D3
D4
D5

Ý nghĩa
Đất
Cung cấp nguồn +5V
Điều khiển độ tương phản
0 : đầu vào là lệnh
1: đầu vào là dữ liệu
0 : ghi tới LCD
1 : đọc từ LCD
Chân cho phép
Đường dữ liệu 0 (LSB)
Đường dữ liệu 1
Đường dữ liệu 2
Đường dữ liệu 3
Đường dữ liệu 4
Đường dữ liệu 5

19


13
14
15

16

2.

D6
D7
A
K

Đường dữ liệu 6
Đường dữ liệu 7
Anode của đèn nền
Kathode của đèn nền

Tập lệnh của LCD

Lệnh

R
S

RW

D
7

D
6

D

5

D
4

D
3

D
2

D
1

D
0

Mô tả

Xóa màn hình

0

0

0

0

0


0

0

0

0

1

Xóa màn hình, đưa
con trỏ về vị trí đầu

Đưa trỏ về vị trí đầu

0

0

0

0

0

0

0


0

1

x

Thiết lập mode

0

0

0

0

0

0

0

1

I/
D

S

Bật, tắt hiển thị


0

0

0

0

0

0

1

D

C

B

Dịch con trỏ hiển thị

0

0

0

0


0

1

S/
C

R/
L

*

*

Thiết lập chức năng

0

0

0

0

1

D
L


N

F

*

*

Đưa con trỏ về vị trí
đầu
Thiết lập hướng dịch
chuyển con trỏ (I/D),
dịch hiển thị (S)
Bật tắt hiển thị con trỏ,
bật tắt chế độ nhấp
nháy con trỏ
Thiết lập chiều dịch
chuyển của con trỏ và
hiển thị
Thiết lập độ dài của dữ
liệu, số dòng và font
chữ

Thiết lập địa chỉ CGRAM

0

0

0


1

CGRAM Address

Thiết lập địa chỉ DDRAM

0

0

1

DDRAM Address

Đọc cờ báo bận và địa chỉ
CGRAM/ DDRAM

0

1

B
F

CGRAM/ DDRAM Address

clock

Thiết lập địa chỉ

CGRAM
Thiết lập địa chỉ
DDRAM
Đọc cờ báo bận và
địa chỉ CGRAM/
DDRAM

20


Ghi CGRAM/ DDRAM

1

0

Write data

Đọc CGRAM/ DDRAM

1

1

Read data

Mã (Hex)

Ghi
DDRAM

Đọc
DDRAM

CGRAM/
CGRAM/

Lệnh đến thanh ghi của LCD
1

Xoá màn hình hiển thị

2

Trở vê đầu dòng

4

Giảm con trỏ (dịch con trỏ sang trái)

6

Tăng con trỏ (dịch con trỏ sang phải)

5

Dịch hiển thị sang phải

7

Dịch hiển thị sang trái


8

Tắt con trỏ, tắt hiển thị

Á

Tắt hiển thị, bật con trỏ

C
E

Bật hiển thị, tắt con trỏ

F

Tắt con trỏ, nhấp nháy con trỏ

10

Dịch vị trí con trỏ sang trái

14

Dịch vị trí con trỏ sang phải

18

Dịch toàn bộ hiển thị sang trái


1C

Dịch toàn bộ hiển thị sang phải

80

Ép con trỏ vê đảu dòng thứ nhất

CO

Ép con trỏ vẻ đảu dòng thứ hai

38

Hai dòng và ma trận 5x7

Bật hiển thị, nhấp nháy con trỏ

21


Dạng sóng điều khiển của LCD

Nhìn vào dạng sóng ta có thể thấy được trình tự điều khiển
như sau:
- Điều khiển tín hiệu RS.
- Điều khiển tín hiệu R/W xuống mức thấp.
- Điều khiển tín hiệu E lên mức cao để cho phép.
- Xuất dữ liệu D7:D0.
- Điều khiển tín hiệu E về mức thấp.

- Điều khiển tín hiệu R/W lên mức cao trở lại.

22


CHƯƠNG III: THIẾT KẾ MẠCH MÔ PHỎNG VÀ THỰC TẾ

23


Sơ đồ mạch thiết kế

Mạch mô phỏng

24


Chương trình điều khiển
#include<at89x52.h>
#define RS P0_0
#define RW P0_1
#define E P0_2
#define SCL P3_6
#define SDA P3_7
#define ka P0_3
#define kb P0_4
#define kc P0_5
#define ale P0_6
#define sta P0_7
sbit DQ = P3^0;

sbit tang=P3^5;

25


×