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

đồ án đo nhiệt độ dùng vi điều khiển 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 (312.05 KB, 27 trang )

NHẬN XÉT CỦA GIÁO VIÊN

………………………………………………………………………………
……………………………
………………………………………………………………………………
……………………………
………………………………………………………………………………
……………………………
………………………………………………………………………………
……………………………
………………………………………………………………………………
……………………………
………………………………………………………………………………
……………………………
………………………………………………………………………………
……………………………
………………………………………………………………………………
……………………………

Hà Nội, Ngày........Tháng.......Năm 2013
Giáo viên hướng dẫn


MỤC LỤC

Trang

PHẦN I: MỞ ĐẦU………………………………………………1
PHẦN II: LÝ THUYẾT ĐỒ ÁN……………………………….2
2.1


HỆ VI XỬ LÝ AT89S52………………………………2
2.1.1 Tổng quan về 89S52………………………………..2
2.1.2 Mô tả chân của AT89S52…………………………..3
2.1.3 Chức năng các chân của AT89S52…………………4

2.2

NGUYÊN LÝ ĐO LƯỜNG CỦA 1 SỐ LINH KIỆN (ADC
0804 và LM35)…………………………………………..6
2.2.1 Chip ADC0804……………………………………….6
2.2.2 Cảm biến LM335…………………………………….9
2.2.3 LCD 16x2………………………………………….14

PHẦN III: THIẾT KẾ MẠCH…………………………………17
3.1

CÁC LINH KIỆN SỬ DỤNG …………………………17

3.2

SƠ ĐỒ MẠCH IN …………………….………………...17

3.3

SƠ ĐỒ NGUYÊN LÝ………………………………….18

3.4

LẬP TRÌNH CHO VI ĐIỀU KHIỂN………………….19


PHẦN IV: KẾT LUẬN…………………………………………..19
PHẦN V : PHỤ LỤC…………………………………………….20
PHẦN VI :TÀI LIỆU THAM KHẢO………………………..…2


PHẦN I

I.

MỞ ĐẦU

LỜI MỞ ĐẦU

Ngày nay cùng với sự tiến bộ của khoa hoc kỹ thuật, đời sống xã hội ngày
càng phát triển cao dựa trên những ứng dụng của khoa học vào đơi sống. Vì vậy
mà những ứng dụng mang tính tự đông ngày càng được ứng dụng rộng rãi. Trong
đó có sự đóng góp không nhỏ của kỹ thuật vi điều khiển. Các bộ vi điều khiển
đang được ứng dụng rộng rãi và xuất hiên ngày càng nhiều trong lĩnh vực kỹ thuật
và đời sống xã hội. Hầu hết là các thiết bị được điều khiên tự động từ các thiệt bị
văn phòng cho đến các thiết bị trong gia đình đều dùng các bộ vi điều khiển nhằm
đem lại sự tiên nghi cho con người trong thời đại công nghiệp hóa, hiện đại hóa.
Đo nhiệt độ môi trường bây giờ trở nên khá đơn giản và dễ làm. Không cần phải
nhiệt kế thủy ngân nữa mà chúng ta hãy ứng dụng những kiến thức đã học vào để
làm 1 mạch đo nhiệt độ đơn giản. Một phần cải thiện kiến thức lập trình và cách xử
lý tín hiệu tương tự sang số mà chúng ta gọi tắt là ADC.
Đề tài này có sự tham gia của tất cả các thành viên trong nhóm.Tất cả đã cùng
hợp tác với nhau để cho ra sản phẩm cuối cùng.
Mặc dù đã cố gắng rất nhiều, nhưng chắc chắn bản báo cáo này sẽ còn nhiều
thiếu sót vì đây là lần đầu em tham gia làm mạch nên có rất ít kinh nghiệm. Rất
mong được sự góp ý của thầy.


Âu Văn Trung

Page 3


PHẦN II

LÝ THUYẾT LIÊN QUAN

2.1 HỆ VI XỬ LÝ AT89S52
2.1.1 Tổng quan về 89S52
AT89S52 là họ IC vi điều khiển do hãng Atmel sản xuất. Các sản phẩm
AT89S52 thích hợp cho những ứng dụng điều khiển. Việc xử lý trên byte và các
toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữ
liệu nhanh trên RAM nội. Tập lệnh cung cấp một bảng tiện dụng của những lệnh
số học 8 bit gồm cả lệnh nhân và lệnh chia. Nó cung cấp những hổ trợ mở rộng
trên chip dùng cho những biến một bit như là kiểu dữ liệu riêng biệt cho phép quản
lý và kiểm tra bit trực tiếp trong hệ thống điều khiển.
AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớ chỉ đọc có
thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3
TIMER/COUNTER 16 Bit, 5 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp
bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP.

Các đặc điểm của chip AT89S52 được tóm tắt như sau:
 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ ghi/xoá
 Tần số hoạt động từ: 0Hz đến 24 MHz
 3 mức khóa bộ nhớ lập trình
 3 bộ Timer/counter 16 Bit
Âu Văn Trung


Page 4


 128 Byte RAM nội.
 4 Port xuất /nhập I/O 8 bit.
 Giao tiếp nối tiếp.
 64 KB vùng nhớ mã ngoài
 64 KB vùng nhớ dữ liệu ngoại.
 4 ∞ s cho hoạt động nhân và chia
2.1.2 Mô tả chân của AT89S52

2.1.3 Chức năng các chân của AT89S52
Âu Văn Trung

Page 5


Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7). Port 0 có 2 chức năng: trong
các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường
IO, đối với thiết kế lớn có bộ nhớ mở rộng nó được kết hợp giữa bus địa chỉ và
bus dữ liệu.
Port 1: từ chân 1 đến chân 9 (P1.0 _ P1.7). Port 1 là port IO dùng cho giao
tiếp với thiết bị bên ngoài nếu cần.
Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7). Port 2 là một port có tác dụng
kép dùng như các đường xuất/nhập hoặc là byte cao của bus địa chỉ đối với các
thiết bị dùng bộ nhớ mở rộng.
Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7). Port 3 là port có tác dụng kép.
Các chân của port này có nhiều chức năng, có công dụng chuyển đổi có liên hệ
đến các đặc tính đặc biệt của 89S52 như ở bảng sau:


Bit

Tên

Chức năng chuyển đổi

P3.0

RXD Ngõ vào dữ 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 cứng thứ 0.

P3.3

INT1 Ngõ vào ngắt cứng thứ 1.

P3.4

T0

Ngõ vào TIMER/ COUNTER thứ 0.

P3.5


T1

Ngõ vào của TIMER/ COUNTER thứ

P3.6

WR

1.

P3.7

RD

Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.
Tín hiệu đọc bộ nhớ dữ liệu ngoài.

Âu Văn Trung

Page 6


PSEN (Program store enable):
PSEN là tín hiệu ngõ ra có tác dụng cho phép đọc bộ nhớ chương trình
mở rộng và thường được nối đến chân OE của Eprom cho phép đọc các byte
mã lệnh.
PSEN ở mức thấp trong thời gian 89S52 lấy lệnh. Các mã lệnh của chương
trình được đọc từ Eprom qua bus dữ liệu, được chốt vào thanh ghi lệnh bên trong
89S52 để giải mã lệnh. Khi 89S52 thi hành chương trình trong ROM nội, PSEN ở

mức cao.
Khi 89S52 truy xuất bộ nhớ bên ngoài, Port 0 có chức năng là bus địa chỉ và
dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ
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.
Tín hiệu ở 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
Âu Văn Trung

Page 7


EA (External Access): Tín hiệu vào EA (chân 31) thường được mắc lên mức
1 hoặc mức 0. Nếu ở mức 1, 89S52 thi hành chương trình từ ROM nội. Nếu ở
mức 0, 89S52 thi hành chương trình từ bộ nhớ mở rộng. Chân EA được lấy làm
chân cấp nguồn 21V khi lập trình cho Eprom trong 89S52.
RST (Reset): Khi ngõ vào tín hiệu này đưa
lên mức cao ít nhất 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị
thích hợp để khởi động hệ thống. Khi cấp điện mạch phải tự động reset.
Các giá trị tụ và điện trở được chọn là:
R1=10Ω, R2=220Ω, C=10 F.
Các ngõ vào bộ dao động X1, X2:
Bộ tạo dao động được tích hợp bên trong 89s52. Khi sử dụng 89s52, người ta chỉ
cần nối thêm thạch anh và các tụ. Tần số thạch anh tùy vào mục đích của người sử
dụng, giá trị tụ thường được sủ dụng là 33pF
2.2 NGUYÊN LÝ ĐO LƯỜNG CỦA 1 SỐ LINH KIỆN
2.2.1 Chip ADC0804
Chíp ADC 0804 là bộ chuyển đổi tương tự sang số trong họ các loạt ADC
0800 từ hãng National Semiconductor. Nó cũng được nhiều hãng khác sản xuất,
làm việc với +5V và có độ phân giải là 8 bít. Ngoài độ phân giải thì thời gian

chuyển đổi cũng là một yếu tố Quan trọng khác khi đánh giá một bộ ADC. Thời
gian chuyển đổi được định nghĩa như là thời gian mà bộ ADC cần để chuyển một
đầu vào tương tự thành một số nhị phân. Trong ADC 0804 thời gian chuyển đổi
thay đổi phụ thuộc vào tần số đồng hồ được cấp tới chân CLK R và CLK IN
nhưng không thể nhanh hơn 110µ s. Các chân của ADC 0804 được mô tả như sau:
- CS (Chip select): Chân số 1, là chân chọn chip, đầu vào tích cực mức thấp
được sử dụng để kích hoạt Chip ADC0804. Để truy cập tới ADC0804 th́ chân này
phải được đặt ở mức thấp.
- RD (Read): Chân số 2, là chân nhận tín hiệu vào tích cực ở mức thấp. Các bộ
chuyển đổi của 0804 sẽ chuyển đổi đầu vào tương tự thành số nhị phân và giữ nó ở
một thanh ghi trong. Chân RD được sử dụng để cho phép đưa dữ liệu đã được
chyển đổi tới đầu ra của ADC0804. Khi CS = 0 nếu có một xung cao xuống thấp
áp đến chân RD thì dữ liệu ra dạng số 8 bit được đưa tới các chân dữ liệu (DB0 –
DB7).
Âu Văn Trung

Page 8


- WR (Write): Chân số 3, đây là chân vào tích cực mức thấp được dùng báo cho
ADC biết để bắt đầu quá trình chuyển đổi. Nếu CS = 0 khi WR tạo ra xung cao
xuống thấp thì bộ ADC0804 bắt đầu quá trình chuyển đổi giá trị đầu vào tương tự
Vin thành số nhị phân 8 bit. Khi việc chuyển đổi hoàn tất thì chân INTR được
ADC hạ xuống thấp.
- CLK IN và CLK R: CLK IN (chân số 4), là chân vào nối tới đồng hồ ngoài
được sử dụng để tạo thời gian. Tuy nhiên ADC0804 c ũng có một bộ tạo xung đồng
hồ riêng. Để dùng đồng hồ riêng thì các chân CLK IN và CLK R (chân số 19) được
nối với một tụ điện và một điện trở. Khi đó tần số được xác định bằng biểu thức:
F=
Với R = 10 kΩ, C = 150 pF và tần số f = 606 kHz và thời gian chuyển đổi là

110 µs.
- Ngắt INTR (Interupt): Chân số 5, là chân ra tích cực mức thấp. Bình thường
chân này ở trạng thái cao và khi việc chuyển đổi tương tự số hoàn tất thì nó chuyển
xuống mức thấp để báo cho CPU biết là dữ liệu chuyển đổi sẵn sàng để lấy đi. Sau
khi INTR xuống thấp, cần đặt CS = 0 và gửi một xung cao xuống thấp tới chân RD
để đưa dữ liệu ra.
- Vin (+) và Vin (-): Chân số 6 và chân số 7, đây là 2 đầu vào tương tự vi sai,
trong đó Vin = Vin(+) – Vin(-). Thông thường Vin(-) được nối tới đất và Vin(+)
được dùng làm đầu vào tương tự và sẽ được chuyển đổi về dạng số.
- Vcc: Chân số 20, là chân nguồn nuôi +5V. Chân này còn được dùng làm điện
áp tham chiếu khi đầu vào Vref/2 để hở.
- Vref/2: Chân số 9, là chân điện áp đầu vào được dùng làm điện áp tham
chiếu. Nếu chân này hở thì điện áp đầu vào tương tự cho ADC0804 nằm trong dải
0 đến +5V. Tuy nhiên, có nhiều ứng dụng mà đầu vào tương tự áp đến Vin khác với
dải 0 đến +5V. Chân Vref/2 được dùng để thực hiện các điện áp đầu ra khác 0 đến
+5V.

Âu Văn Trung

Page 9


Sơ đồ chân của ADC 0804

Âu Văn Trung

Page 10


Bảng: Điện áp Vref/2 liên hệ với dải Vin


Vref/2

Vin

Kích thước bước (mv)

Hở*

0 đến 5

5/2.56 = 19.53

2.0

0 đến 4

4/256 = 15.62

1.5

0 đến 3

3/256 = 11.71

1.28

0 đến 2.56

2.56/256 = 10


1.0
0.5

0 đến 2
0 đến 1

2/256 = 7.81
1/256 = 3.90

Ghi chú: - VCC = 5V
Kích thước bước ( độ phân giải) là sự thay đổi nhỏ nhất mà ADC có thể phân
biệt được
- D0 – D7, chân số 18 – 11, là các chân ra dữ liệu số (D7 là bit cao nhất MSB và
D0 là bit thấp nhất LSB). Các chân này được đệm ba trạng thái và dữ liệu đã được
chuyển đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xuống mức thấp.
Để tính điện áp đầu ra ta tính theo công thức sau:
Dout = Vin / Kích thước bước.
Nguyên lý đo và chuyển đổi tương tự/số của ADC
Khi điện áp đầu vào que đo qua mạch phân áp sẽ đưa điện áp tới đầu vào Vin của ADC
0804 sao cho điện áp vào lớn nhất la 5V, khi đó ứng với mỗi giá trị đầu vào Vin thì
ADC0804 sẽ chuyển đổi giá trị tương tự là điện áp xang số, ứng với mỗi giá trị số sẽ là
một giá trị điện áp tương ứng
Vì chân Vref 2 để hở do vậy kích thước bước la 19,53mV khi đo điện áp đầu vào là 5V
tương ứng với giá trị thập phân là 256

2.2.2 Cảm biến LM335:
Âu Văn Trung

Page 11



có 3 chân chính : 2 chân cấp nguồn và 1 chân out tín hiệu Analog
Khi ta cấp điện áp 5V cho LM335 thì nhiệt độ đo được từ cảm biến sẽ chuyển
thành điện áp
tương ứng tại chân số 2 (Vout). Điện áp này được tỉ lệ với giải nhiệt độ mà nó đo
được. Với độ
giải của nhiệt độ đầu ra là 10mV/K. Hoạt động trong giải điện áp từ 0 cho đến 5V
và giải nhiệt
độ đo được từ 0 oC đến 100oC. Và cần chú ý đến những thông số chính sau :
+ Hoạt động chính xác ở dòng điện đầu vào từ 0.4mA đến 5mA. Dòng điện đầu
vào ngoài
khoảng này kết quả đo sẽ sai
+ Điện áp cấp vào ổn định là 5V
+ Trở kháng đầu ra thấp 1 ôm
+ Giải nhiệt độ môi trường là từ 0 đến 100 C
Như vậy LM335 nó cho chúng ta tín hiệu tương tự (Analog) và chúng phải xử lý
tín hiệu này thành nhiệt độ
3) Tính toán các giá trị của mạch đo
- Do tín hiệu trả về từ cảm biến LM335 là tín hiệu tương tự . Như vậy để xử lý tín
hiệu này và cho ra kết quả nhiệt độ tương ứng thì ta cần dùng bộ biến đổi tương tự
sang số gọi tắt là ADC. Đầu bài là đo nhiệt độ từ 0 đến 100 C
- Như ta đã biết độ phân giải nhiệt độ của LM335 là 10mV/ K nên ta có
+ Tại 0 C thì điện áp đầu ra tại LM335 là 2.73V
+ Tại 100 C thì điện áp đầu ra LM335 là 3.73V
-

Như vậy giải điện áp mà ADC biến đổi là từ (2.73V đến 3.73V) tức là 1V

Gọi S là giải điện áp đo của tín hiệu : S = (2.73 – 3.73V) tức là 1V

Âu Văn Trung

Page 12


A là giải điện áp của ADC : A = 5V
Ta có trong con Dspic đã tích hợp sẵn bộ khối ADC 10 bit tốc độ cao và trong con
Psoc nó cũng
tích hợp sẵn bộ ADC 11 bit nên sử dụng bộ ADC này cho mục đích biến đổi. Ta có
bước thay
đổi của ADC 10 bit :
n = 5 /1024 = 4.9mV (Dspic)
n1 = 5/2047 = 2.44mV (Psoc

Sai số tương đối của mạch đo

ς= 0.0049/1 = 0.49% (Dspic)
ς1 = 0.00244/1 = 0.244% (Psoc)

4 ) Tính giá trị nhiệt độ đầu ra
LM335 là cảm biến nhiệt độ , với nhiệt độ đầu ra là 10mV/K
Sử dụng bộ biến đổi ADC_10bit :
+ có giá trị lớn nhất là 1024
+ với V = V = 5V
+ Bước thay đổi là : (Của Dspic và Psoc)n = 5/1024 = 4.9 (mV) (Dspic)
n1 = 5/2047 = 2.44(mV) (Psoc)
Nên tại ở 0 C hay 273K thì điện áp đầu ra LM335 có giá trị là 2.73V
Nên tại ở 100 C hay 373K thì điện áp đầu ra của LM335 có giá trị là : 373.10mV/K
= 3.73V.
Âu Văn Trung


Page 13


Như vậy giải điện áp đầu vào sẽ là (2.73 đến 3.73V)
Tính toán được giá trị ADC đọc được từ Lm335.
+ V_in = 2.73V =>ADC_value = (1024/5)*2.73 = 559 (Dspic)
+ V_in = 3.73V => ADC_value = (1024/5)*3.73 = 764 (Dspic)
+ V_in = 2.73V => ADC_value = (2047/5)*2.73 = 1118 (Psoc)
+ V_in = 3.73V => ADC_value = (2047/5)*3.73 = 1527 (Psoc)
Mặt khác do ADC_value = 1 cho ra điện áp tương ứng là 4.9mV (dspic) và 2.44mV
(Psoc).
Trong khi đó LM335 cho ra điện áp là 10mV/K. Nên do đó để ADC _value thay
đổi trong 1 đơn vị thì nhiệt độ phải thay đổi là : (4.9mV/10mV/K) = 0.5K (dspic)
và (2.44mV/10mV/K) = 0.244K (Psoc)
Như vậy ta có công thức tính đầy đủ ra độ C tương ứng cho cả Psoc và Dspic:
t = (ADC_value – 559)* (4.9mV/10mV) = (ADC_value – 559) * 0.49 (Đối với
Dspic)
t = (ADC_value - 1118) * (2.44mV/10mV) = (ADC_value - 1118) * 0.244 (Đối với
Psoc)
5) Tính giá trị điện trở đệm cho LM355
Muốn áp ra ứng với 10mV/oK thì phải cấp dòng cho nó từ 400uA đến 5mA, vậy
phải có điện trở đệm.
Nếu dùng nguồn áp 5V, dải đo từ 0-100 C => áp trên LM335 sẽ từ 2.73V đến
3.73V => áp rơi
trên điện trở sẽ là từ 2.27V đến 1.27V => chọn điện trở 1.5k nối 5V - 1,5k LM335.
Do điện trở 1.5K không có nên ta dùng biến trở để cho điện trở đệm là 1.5K.Điều
chỉnh giá trị điện trở này cho nhiệt độ đúng với giá trị nhiệt độ mẫu.
Âu Văn Trung


Page 14


IC ổn áp 7805
IC ổn áp 7805 đầu vào >7V đầu ra 5V . Mạch ổn áp cần cho VĐK vì nếu nguồn cho
VĐK không ổn định thì sẽ treo VĐK, chạy không đúng, hoặc reset liên tục, thậm chí là
chết chíp

Âu Văn Trung

Page 15


Biến trở chẳng qua là điện trở mà trị số có thể thay đổi được, bằng cách vặn, xoay,
gạt qua gạt lại, … Nó có thể được gọi là biến trở, hay “chiết áp” (hay cái chia áp).
Tên tiếng Anh của nó có thể là Variable resitor, potentiometer, trimmer, trimpot…
Kí hiệu: VR, VAR, POT, …

Kí hiệu trên mạch:

Biến trở

Thạch anh là một linh kiện dùng để tạo ra một xung nhịp chuẩn mà ta có thể dựa vào
xung nhịp này để phân chia thành các khoảng thời gian chính xác cho từng ứng dụng của
mình.
Có nhiều loại thạch anh tạo xung nhịp khác nhau như : 8, 11.0592, 12 ... các xung nhịp
này sẽ ứng dụng trong từng trường hợp cụ thể mà ta có thể lựa chọn một cách linh hoạt.

2.2.3 LCD 16x2
Khái quát về LCD 16x2

Âu Văn Trung

Page 16


Đây là loại gồm 16 ký tự x2 dòng ,mỗi ký tự được tạo ra từ một ma trận điểm sáng kích
cỡ 5×7 hoặc 5×10
Ta có sơ đồ chân của LCD:
Chân
1
2
3
4

Ký hiệu
Vss
Vcc
Vee
RS

I/O
I

5
6
7
8
9
10
11

12
13
14

R/W
E
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7

I
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O
I/O

Mô tả
Đất
Dương nguôn 5V
Cấp nguồn điều kiện phản

RS=0 chọn thanh ghi lệnh, RS=1 chọn
thanh ghi dữ liệu
R/W=1 đọc dữ liệu, R/W=0 ghi
Cho phép
Các bit dữ liệu
Các bit dữ liệu
Các bit dữ liệu
Các bit dữ liệu
Các bit dữ liệu
Các bit dữ liệu
Các bit dữ liệu
Các bit dữ liệu

Chân 15 và chân 16: ghi là A và K. Nó là anot và katot của một con led dùng để sáng
LCD trong bóng tối. Chúng ta không sử dụng. Nếu các bạn muốn dùng thì nối chân A qua
1 điện trở 220 lên dương 5V, chân K xuống đất đèn sẽ sáng
Nguyên lý hoạt động của LCD
-Các chân 1,2,3 là các chân VSS , VDD, VEE: trong đó VEE chân nối đất , VDD
chân chọn độ tương phản chân này dc chọn qua 1 biến trở 5K một đầu nối VCC ,
một đầu nối mát . Chân VSS nối dương nguồn .
- Chân chọn thanh ghi RS (Register Select): Có hai thanh ghi trong LCD, chân
RS(Register Select) được dùng để chọn thanh ghi, như sau:
Nếu RS = 0 ở chế độ ghi lệnh như xóa màn hình , đưa con trỏ về đầu dòng…
Nếu RS =1 ở chế độ ghi dữ liệu như hiển thị ký tự , chữ số lên màn hình .
-Chân đọc/ ghi (R/W): Đầu vào đọc/ ghi cho phép người dùng ghi thông tin lên
LCD khi R/W = 0 hoặc đọc thông tin LCD khi
R/W = 1.
Âu Văn Trung

Page 17



-Chân cho phép E (Enable): Chân cho phép E được sử dụng bởi LCD để chốt dữ
liệu của nó. Khi dữ liệu được đến chân dữ liệu thì cần có 1 xung từ mức cao xuống
mức thấp ở chân này để LCD chốt dữ liệu , xung này phải có độ rộng tối thiểu
450ns.
Chân D0 – D7: Đây là 8 chân dữ liệu 8 bít, được dùng để gửi thông tin lên LCD
hoặc đọc nội dung của các thanh ghi trong
LCD. Để hiển thị các chữ cái và các con số chúng ta gửi các mã ASCII của các chữ
cái và các con số tương ứng đến các chân này khi bật RS =1
Bảng mã lệnh của LCD 16x2

Âu Văn Trung

Page 18


PHẦN III

THIẾT KẾ

3.1 CÁC LINH KIỆN SỬ DỤNG TRONG MẠCH
- Vi điều khiển AT89S52:
- Cảm biến nhiệt LM35
- LCD 16x1
- Biến trở
- Điện trở
- IC chuyển đổi Analog - Digita ADC0804
- Tụ
- Led báo nguồn, Led cảnh báo nhiệt độ:

- Thạch anh 12Mhz:
- 7805
3.2 SƠ ĐỒ MẠCH IN

Sơ đồ điều khiển
ADC
VI Điều Khiển

Hiện Thị LCD

CẢM BIẾN LM335
Hiển Thị Đèn
Âu Văn Trung

Page 19

LED


3.3 SƠ ĐỒ NGUYÊN LÝ

Giải thích sơ đồ:
1. Khối nguồn:
Khối nguồn bao gồm:
- J1 để lấy điện áp cấp vào
- Tụ C5 lọc nguồn
- IC7805 ổn định điện áp 5V cho toàn mạch
- R5 hạn dòng cho led báo nguồn D1 sáng khi cấp nguồn
2. Khối chuyển đổi ADC:
- Khối chuyển đổi ADC gồm IC trung tâm là 0804 có nhiệm vụ chuyển tín hiệu Analog

thành tín hiệu số cấp cho 8051.
- Tụ C1, điện trở R4 có tác dụng tạo mạch dao động RC cung cấp xung cho IC chuyển
Âu Văn Trung

Page 20


đổi.
- R1,R2 và R3 có tác dụng phân áp nguồn vào thích hợp, bởi lẽ áp vào ADC không được
quá lớn.
3 Khối xử lý trung tâm, hiển thị
gồm 8051 kết hợp với LCD
3.4 LẬP TRÌNH CHO VI ĐIỀU KHIỂN
Code chương trình bằng ngôn ngữ C:
Chương trình viết cho vi điều khiển sử dụng ngôn ngữ Assembler với trình dịch
là phần mềm Keil C. Ưu điểm của ngôn ngữ Assembler là mã nguồn chạy nhanh
và gọn, giúp sinh viên nắm chắc cấu trúc phần cứng của vi điều khiển cũng như
các bước lập trình phần mềm. Tuy nhiên nhược điểm của ngôn ngữ này là khó hiểu
và rắc rối,phần code lập trình sẽ được đề cập đến trong phụ lục.

Phần IV

KẾT LUẬN

Trên đây là toàn bộ phần thiết kế,tính toán cho ‘Hệ thống đo nhiệt độ hiển thị
trên LCD’ với kiến thức còn giới hạn và tìm hiểu chưa rộng về lĩnh vực chuyền
ngành nên đồ án còn chưa được tối ưu và còn có nhiều nhầm lẫn,thiếu sót,còn về
phân thiết kế mạch chưa có kinh nghiệm về thiết kế mạch thực tế, cần giải quyết
các vấn đề: vẽ mạch nguyên lý và mạch in sử dụng phần mềm Altium, các kĩ thuật
sắp xếp linh kiện, đi dây và có nhiều nhầm lẫn thiếu sót.Kính mong các thầy cô chỉ

bảo và xây dựng kiến thức thêm để em hoàn thành khóa học một cách tốt nhất.
Em xin chân thành cảm ơn các thầy cô !

Âu Văn Trung

Page 21


PHẦN V

PHỤ LỤC

Dưới đây là chương trình viết bằng ngôn ngữ C cho IC AT89S52. Chương trình
được viết và dịch trên phần mềm keil C:
Hỉen thị LCD
#define RS P3_3
#define RW P3_4

//RW=0 => ghi

#define EN P3_5

//RW=1 => doc
//RS=0 => code
//RS=1 => data

#define LCD_PORT P0

void delay_5ms(){


//tao tre 5ms

int i,j;
for(i=0;i<250;i++)
for(j=0;j<4;j++){}
}

void delay_15ms(){

//tao tre 15ms

int i,j;
for(i=0;i<250;i++)
for(j=0;j<100;j++){}
}
void LCDWriteCmd(unsigned char c)
Âu Văn Trung

//ghi lenh len lcd

Page 22


{
RS=0;
RW=0;
LCD_PORT=c;
EN=1;
EN=0;
delay_5ms();

}

void LCDWriteData(unsigned char c)

//ghi du lieu len lcd

{
RS=1;
RW=0;
LCD_PORT=c;
EN=1;
EN=0;
delay_5ms();
}

void LCD_init()

//khoi tao lcd

{
delay_15ms();
LCDWriteCmd(0x30);
Âu Văn Trung

//khoi tao 8 bit du lieu
Page 23


LCDWriteCmd(0x38);


//khoi tao font 5x7 va 2 dong lcd

LCDWriteCmd(0x0C);

//bat con tro hien thi

// LCDWriteCmd(0x06);
LCDWriteCmd(0x01);

// Xoa man hinh LCD

}

void LCD_clear()

//lenh xoa man hinh

{
LCDWriteCmd(0x01);
}

void LCD_home()

//lenh tro ve dau dong

{
LCDWriteCmd(0x80);
}

void LCD_putstr(unsigned char *s) //hien thi xau ky tu len lcd

{
while (*s)
{
LCDWriteData(*s);
s++;
}
Âu Văn Trung

Page 24


}

Chuương trình chính
#include <REGX51.H>
#include <LCD8Bit.c>
#include <stdio.h>
sbit RD_ADC=P3^0;
sbit WR_ADC=P3^1;
sbit INTR =P3^2;
#define led1 P2_3
#define led2 P2_4
float num;

void delay (unsigned int j)
{
unsigned int i;
for(i=0;i<=j;i++);
}
void main ()

{
char temp[16];
P2=0x00;
RD_ADC=0;
Âu Văn Trung

//tao muc thap de dieu khien doc ADC
Page 25


×