- 1 - LӠI NÓI ĐҪU
Ngày nay, sӵ bùng nә cӫa khoa hӑc kӻ thuұt đòi hӓi chúng ta phҧi ӭng dөng
nhӳng công nghӋ mӟi, hiӋn đҥi vào sҧn xuҩt và đӡi sӕng đӇ đҥt đưӧc hiӋu quҧ cao
nhҩt. Nhӳng thành tӵu cӫa khoa hӑc kӻ thuұt tiên tiӃn làm thӃ giӟi cӫa chúng ta đã
và đang ngày mӝt thay đәi, văn minh và hiӋn đҥi hơn. Sӵ phát triӇn cӫa kӻ thuұt
điӋn tӱ đã tҥo ra hàng loҥt nhӳng thiӃt bӏ vӟi các đһc điӇm nәi bұt như sӵ chính xác
cao, tӕc đӝ nhanh, gӑn nhҽ là nhӳng yӃu tӕ rҩt cҫn thiӃt góp phҫn cho hoҥt đӝng cӫa
con ngưӡi đҥt hiӋu quҧ cao.
Kӻ thuұt vi điӅu khiӇn hiӋn nay rҩt phát triӇn, nó đưӧc ӭng dөng vào rҩt nhiӅu
lĩnh vӵc sҧn xuҩt công nghiӋp, tӵ đӝng hóa, trong đӡi sӕng và còn nhiӅu lĩnh vӵc
khác nӳa. So vӟi kӻ thuұt sӕ thì kӻ thuұt vi điӇu khiӇn nhӓ gӑn hơn rҩt n hiӅu do nó
đưӧc tích hӧp lҥi và có khҧ năng lұp trình đưӧc đӇ điӅu khiӇn. Nên rҩt tiӋn dөng và
cơ đӝng. Các bӝ vi điӅu khiӇn theo thӡi gian cùng vӟi sӵ phát triӇn cӫa công nghӋ
bán dүn đã tiӃn triӇn rҩt nhanh, tӯ các bӝ vi điӅu khiӇn 4 bit đơn giҧn đӃn các bӝ vi
điӅu khiӇn 32 bit, rӗi sau này là 64 bit. ĐiӋn tӱ đang trӣ thành mӝt ngành khoa hӑc
đa nhiӋm vө. ĐiӋn tӱ đã đáp ӭng đưӧc nhӳng đòi hӓi không ngӯng nhӳng yêu cҫu
cҫn thiӃt trong hoҥt đӝng đӡi sӕng hҵng ngày.
Mӝt trong sӕ đó là ӭng dөng nhiӋt kӃ điӋn tӱ vào sҧn xuҩt và đӡi sӕng nhҵm
xác đӏnh đưӧc nhiӋt đӝ chính xác cӫa thiӃt bӏ cũng như hӋ thӕng đӇ có nhӳng điӅu
chӍnh phù hӧp. Chính vì thӃ, vӟi nhӳng kiӃn thӭc đã hӑc vӅ Vi điӅu khiӇn và mӝt sӕ
nghiên cӭu vӅ cҧm biӃn nhiӋt em quyӃt đӏnh làm đӗ án vӅ ³ Đo và hi͋n th͓ nhi͏t đ͡
dùng LCD, có báo cháy´
Mһc dù cӕ gҳng đӇ hoàn thành đӗ án nhưng do mӟi làm quen vӟi Vi điӅu
khiӇn nên không thӇ tránh khӓi nhӳng sai sót. Em mong thҫy cô có nhӳng nhұn xét
và góp ý đӇ đӗ án đưӧc hoàn thiӋn hơn.
Em xin chân thành cҧm ơn!
a. Mô tҧ các chân LCD ................................................ 27
b. Hoҥt đӝng LCD ....................................................... 29
5. Thuұt toán: ........................................................................ 32
a. Sơ đӗ thuұt toán....................................................... 32
b. Thuұt toán phҫn hiӇn thӏ và thông báo
nhiӋt đӝ ....................................................................... 33
6. Code chương trình ............................................................. 34
III. KӃt quҧ mô phӓng
1. Sơ đӗ mô phӓng Protues .................................................... 37
2. KӃt quҧ .............................................................................. 39
IV. KӃt luұn
1. Ưu điӇm ............................................................................. 40
2. Nhưӧc điӇm ....................................................................... 40
3. Hưӟng phát triӇn ................................................................ 40
NHҰN XÉT CӪA GIÁO VIÊN HƯӞNG DҮN 41
- 3 - I. GIӞI THIӊU Đӄ TÀI:
1. Mөc tiêu:
- Sӱ dөng cҧm biӃn nhiӋt đӇ đo đưӧc sӵ thay đәi nhiӋt đӝ cӫa môi
trưӡng.
- Ghép nӕi cҧm biӃn nhiӋt vӟi bӝ chuyӇn đәi tương tӵ sӕ đӇ chuyӇn tín
hiӋu vào Vi điӅu khiӇn.
- Vұn dөng kiӃn thӭc vӅ Vi điӅu khiӇn đӇ lұp trình hiӇn thӏ giá trӏ nhiӋt đӝ
và nhӳng cҧnh báo vӅ nhiӋt đӝ ra màn hình LCD.
- Nghiên cӭu đӇ ӭng dөng vào thӵc tӃ.
2. Ý nghĩa khoa hoc:
- Ngày nay vӟi sӵ phát triӇn cӫa công nghiӋp vi điӋn tӱ, kӻ thuұt sӕ, các
hӋ thӕng điӅu khiӇn dҫn dҫn đưӧc tӵ đӝng hóa. Vӟi nhӳng kӻ thuұt tiên tiӃn như - 5 -
II. PHÂN TÍCH
1. Vi điӅu khiӇn 8051(AT89C51)
a . Vi đi͙u khi͛n hͥ MCS -51
MCS-51 là hӑ vi điӅu khiӇn do hãng INTEL sҧn xuҩt vào đҫu nhӳng năm 80
và ngày nay đã trӣ thành mӝt chuҭn trong công nghiӋp. Bҳt đҫu tӯ IC tiêu biӇu là
8051 đã cho thҩy khҧ năng thích hӧp vӟi nhӳng ӭng dөng mang tính điӅu khiӇn.
ViӋc xӱ lí trên byte và các phép 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ҧn 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 on-chip dùng cho nhӳng biӃn 1 bit như là kiӇu dӳ liӋu
riêng cho phép quҧn lí và kiӇm tra bit trӵc tiӃp trong điӅu khiӇn và nhӳng hӋ thӕng
logic đòi hӓi xӱ lí luұn lí.
Bҧng so sánh các IC trong hӑ MCS-51 :
TÊN
LINH KIӊN
BӜ NHӞ
CHƯƠNG TRÌNH
ON CHIP
BӜ NHӞ DӲ
LIӊU ON CHIP
TIMER
8051 4 KB MROM 128 Bytes 2
8031 0 KB 128 Bytes 2
dөng cĩ thӇ chӑn mӝt trong 3 kiӇu chn do ATMEL đưa ra.
Mô tҧ chӭc năng cӫa các chân
+ Chân Vcc : áp nguӗn.
+ Chân GND : đҩt.
+ Port 0 : là mӝt port I/O 8-bit hai chiӅu, cӵc máng hӣ. Khi xuҩt ra, mӛi chân
port có thӇ lái 8 đҫu vào TTL. NӃu ghi các mӭc 1 ra các chân port thì các chân này
có thӇ dùng như các đҫu vào trӣ kháng cao.
- 8 -
Port 0 cũng có thӇ đưӧc cҩu hình thành mӝt bus multiplex giӳa đӏa chӍ thҩp và
dӳ liӋu khi truy cұp chương trình hay dӳ liӋu tӯ bên ngoài. Trong chӃ đӝ này, port 0
có điӋn trӣ pullup nӝi.
Port 0 cũng nhұn các byte mã chương trình khi lұp trình Flash và xuҩt ra mã
chương trình khi kiӇm tra, khi đó cҫn có điӋn trӣ pullup bên ngoài
+ Port 1 : là mӝt port I/O 8-bit hai chiӅu có pullup nӝi. Đҫu ra port 1 có thӇ lái
4 đҫu vào TTL. Khi viӃt các mӭc 1 ra các chân port thì chúng đưӧc kéo lên do có
điӋn trӣ nӝi và có thӇ dùng làm đҫu vào. Khi vai trò là cәng nhұp, nhӳng chân cӫa
port 1 bӏ kéo xuӕng thҩp sӁ đә dòng vì có nӝi trӣ kéo lên.
Hơn nӳa, P1.0 và P1.1 có thӇ đưӧc dùng như là đҫu vào bӝ đӃm timer/counter
2 bên ngoài (P1.0/T2) và xung kích (P1.1/T2EX).
Port 1 cũng nhұn nhӳng byte đӏa chӍ thҩp trong khi lұp trình Flash và trong khi
kiӇm tra Flash .
+ Port 2 : là mӝt port I/O 8-bit hai chiӅu có pullup nӝi. Đҫu ra port 2 có thӇ lái
4 đҫu vào TTL. Khi viӃt các mӭc 1 ra các chân port thì chúng đưӧc kéo lên do có
điӋn trӣ nӝi và có thӇ dùng làm đҫu vào. Khi vai trò là cәng nhұp, nhӳng chân cӫa
Port 3 cũng nhұn vài tín hiӋu điӅu khiӇn trong lúc lұp trình Flash và trong lúc
kiӇm tra Flash.
+ RST : là ngõ vào Reset. Khi ngõ này đưӧc đưa lên cao (trong ít nhҩt hai chu
kì máy), các thanh ghi bên trong AT89C51 đưӧc tҧi nhӳng giá trӏ thích hӧp đӇ khӣi
đӝng hӋ thӕng.
+ ALE/PROG (Address Latch Enable) : ALE là xung xuҩt cho phép chӕt
byte đӏa chӍ thҩp khi truy cұp bӝ nhӟ ngoài. Chân này còn là ngõ vào cӫa xung lұp
trình (PROG) khi lұp trình Flash
Trong hoҥt đӝng bình thưӡng, ALE đưӧc phát xung vӟi tҫn sӕ 1/6 tҫn sӕ dao
đӝng on-chip và có thӇ đưӧc dùng như xung thӡi gian chuҭn bên ngoài. Tuy nhiên,
cҫn chú ý là mӝt xung ALE sӁ bӏ mҩt khi truy cұp bӝ nhӟ ngoài.
Có thӇ hӫy bӓ chӭc năng cӫa ALE bҵng cách set bit 0 cӫa thanh ghi ӣ vӏ trí
8EH. Mӝt khi bit này đưӧc set, ALE chӍ tích cӵc khi có lӋnh MOVX hoһc MOVC.
NӃu không có các lӋnh này thì ALE ӣ mӭc cao. ViӋc set bit 0 cӫa thanh ghi ӣ vӏ trí
8EH không làm ҧnh hưӣng đӃn vi điӅu khiӇn khi truy cұp bӝ nhӟ ngoài.
+ PSEN (Program Store Enable) : PSEN là xung strobe báo hiӋu viӋc đӑc bӝ
nhӟ chương trình ngoài, PSEN tích cӵc hai lҫn (mӭc thҩp) mӛi chu kì máy, ngoҥi
trӯ hai xung PSEN bӏ mҩt khi truy xuҩt dӳ liӋu ngoài. Khi thi hành chương trình
trong RAM nӝi, PSEN sӁ ӣ mӭc thө đӝng (mӭc cao).
+ EA/V
PP
(External Access) : EA là ngõ vào đӇ cho phép truy xuҩt bӝ nhӟ
chương trình tӯ bên ngoài khi đưӧc nӕi vӟi GND. Khi EA đưӧc treo lên nguӗn V
CC
,
chương trình sӁ đưӧc thӵc thi trong ROM nӝi. Chân này cũng nhұn điӋn áp 12v
(V
PP
) trong khi lұp trình Flash.
xóa bҵng phҫn mӅm. EXF2 không gây nên ngҳt trong chӃ đӝ đӃm
lên/xuӕng (DCEN = 1).
RCLK Kích hoҥt xung clock bӝ thu. Khi set, các xung tràn Timer 2 sӁ là
xung clock cho bӝ thu port nӕi tiӃp trong mode 1 và 3. RCLK = 0
thì bӝ thu port nӕi tiӃp sӁ dùng các xung tràn cӫa Timer 1.
TCLK Kích hoҥt xung clock bӝ phát. Khi set, các xung tràn Timer 2 sӁ là
xung clock cho bӝ phát port nӕi tiӃp trong mode 1 và 3. TCLK = 0
thì bӝ phát port nӕi tiӃp sӁ dùng các xung tràn cӫa Timer 1.
EXEN2 Kích hoҥt bên ngoài. Khi set, cho phép capture hay reload khi
T2EX xuӕng thҩp (nӃu Timer 2 không sӱ dөng cho port nӕi tiӃp).
EXEN2 = 0 làm cho Timer 2 bӓ qua các sӵ kiӋn trên T2EX.
TR2 Khӣi đӝng/Dӯng Timer 2. TR2 = 1 làm khӣi đӝng Timer 2.
C/T2 Bit lӵa chӑn timer hay counter. C/T2 = 0 : timer. C/T2 = 1 : counter
đӃm sӵ kiӋn bên ngoài (kích cҥnh xuӕng).
CP/RL2 Lӵa chӑn capture hay reload. CP/RL2 = 1: capture xҧy ra khi T2EX
xuӕng thҩp nӃu EXEN2 = 1. CP/RL2 = 0 : reload xҧy ra khi Timer
2 tràn hoһc khi T2EX xuӕng thҩp nӃu EXEN2 = 1. NӃu TCLK hay
RCLK = 1, bit này bӏ bӓ qua và timer bӏ ép vào chӃ đӝ reload khi
Timer 2 tràn.
- 13 -
Các thanh ghi ngҳt tұp các bit riêng lҿ cho phép ngҳt chӭa trong thanh ghi IE.
ThiӃt lұp hai mӭc ưu tiên cho 6 nguӗn ngҳt bҵng cách set các bit thanh ghi IP.
Bӝ nhӟ dӳ liӋu
AT89C51 có 256 byte bӝ nhӟ RAM on-chip. Trong đó, 128 byte trên có cùng
đӏa chӍ vӟi vùng thanh ghi chӭc năng nhưng có cҩu tҥo vұt lý riêng biӋt.
Khi mӝt lӋnh truy cұp mӝt vӏ trí nӝi có đӏa chӍ trên 7FH, chӃ đӝ đӏa chӍ nó sӱ
dөng sӁ báo cho CPU biӃt vùng đӏa chӍ nào nó cҫn truy cұp : RAM hay SFR. Các
lӋnh dùng đӏa chӍ trӵc tiӃp sӁ truy cұp vùng SFR. Ví dө như lӋnh sau đây (Asembly)
sӁ truy cұp SFR ӣ đӏa chӍ 0A0H (port 2)
thӇ đưӧc coi như các bӝ cҧm biӃn. Mһc dù chӍ có các bӝ cҧm biӃn nhiӋt, tӕc đӝ, áp
suҩt, ánh sáng và nhiӅu đҥi lưӧng tӵ nhiên khác nhưng chúng đӅu cho ra các
tín hiӋu dҥng dòng điӋn hoһc điӋn áp ӣ dҥng liên tөc. Do vұy, ta cҫn mӝt bӝ
chuyӇn đәi tương tӵ sӕ sao cho bӝ vi điӅu khiӇn có thӇ đӑc đưӧc chúng. Mӝt chíp
ADC đưӧc sӱ dөng rӝng rãi là ADC 0804.
b. Đ͏c đi͛m c̽u t̹o:
Chíp ADC 0804 là bӝ chuyӇn đәi tương tӵ 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, nó 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 và CLK IN nhng không thӇ nhanh hơn
110 micro giây. Các chân cӫa ADC 0804 đưӧc mô tҧ như sau:
1. Chân CS - chӑn chíp: Là mӝt đҫu vào tích cӵc mӭc thҩp đưӧc sӱ dөng
đӇ kích hoҥt chíp ADC 0804. ĐӇ truy cұp ADC 0804 thì chân này phҧi ӣ mӭc thҩp.
2. Chân RD (đӑc): Đây là mӝt tín hiӋu đҫu vào đưӧc tích cӵc mӭc
thҩp. Các bӝ ADC chuyӇn đәi đҫu vào tương tӵ thành sӕ nhӏ phân tương đơng vӟi
nó và giӳ nó trong mӝt thanh ghi trong. RD đӧc sӱ dөng đӇ nhұn dӳ liӋu đưӧc
chuyӇn đәi ӣ đҫu ra cӫa ADC 0804. Khi CS = 0 nӃu mӝt xung cao - xuӕng - thҩp
đưӧc áp đӃn chân RD thì đҫu ra sӕ 8 bít đӧc hiӇn diӋn ӣ các chân dӳ liӋu D0 - D7.
Chân RD cũng đưӧc coi như cho phép đҫu ra.
- 15 -
3. Chân ghi WR (thӵc ra tên chính xác là ³Bҳt đҫu chuyӇn đәi´). Đây là chân
đҫu vào tích cӵc mӭc thҩp đưӧc dùng đӇ báo cho ADC 804 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ӝ ADC 0804
bҳt đҫu chuyӇn đәi giá trӏ đҫu vào tương tӵ V
in
vӅ sӕ nhӏ phân 8 bít. Lưӧng thӡi
in
= V
in
(+) - V
in
(-). Thông thưӡng V
in
(-) đưӧc nӕi xuӕng đҩt và V
in
(+) đưӧc dùng như đҫu vào tương tӵ đưӧc chuyӇn đәi
vӅ dҥng sӕ.
7. Chân V
CC
.
Đây là chân nguӗn nuôi +5v, nó cũng đưӧc dùng như điӋn áp tham chiӃu khi
đҫu vào V
ref/2
(chân 9) đӇ hӣ.
1,1
1
f !
- 16 -
8. Chân V
ref/2
.
Chân 9 là mӝt điӋn áp đҫu vào đưӧc dùng cho điӋn áp tham chiӃu. NӃu chân
này hӣ (không đưӧc nӕi) thì điӋn áp đҫu vào tương tӵ cho ADC 804 nҵm trong dҧi
0 đӃn +5v (giӕng như chân V
ref
/ 2(V) V
in
(V) Step Size (mV)
Hӣ * 0 đӃn 5 5/256 = 19.53
2.0 0 đӃn 4 4/255 = 15.62
1.5 0 đӃn 3 3/256 = 11.71
1.28 0 đӃn 2.56 2.56/256 = 10
1.0 0 đӃn 2 2/256 = 7.81
0.5 0 đӃn 1 1/256 = 3.90
Ghi chú: - V
CC
= 5V
- * Khi V
ref
/2 hӣ thì đo đưӧc ӣ đó khoҧng 2,5V
ADC080
+5V
1
1
1
4
1
2
10
9
19
10k
150p
A
Vref/2
Vin(-)
Vin(+)
20
Vcc
10k
PO