You are on page 1of 132

b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.

K45

PhÇn I:
Tæng quan vÒ c¸c thiÕt bÞ Vi Xö Lý
Ch¬ng 1 :
Giíi thiÖu chung vÒ chÝp AT89C51
I. Giíi thiÖu AT89C51
AT89C51 lµ mét bé vi xö lý 8 bit, lo¹i CMOS, cã tèc ®é cao vµ c«ng
suÊt thÊp víi bé nhí Flash cã thÓ lËp tr×nh ®îc. Nã ®îc s¶n xuÊt víi c«ng
nghÖ bé nhí kh«ng bay h¬i mËt ®é cao cña h·ng Atmel, vµ t¬ng thÝch víi
hä MCS-51TM vÒ ch©n ra vµ tËp lÖnh.

S¬ ®å khèi cña AT89C51

1
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

AT89C51 cã c¸c ®Æc trng c¬ b¶n nh sau: 4 K byte Flash, 128 byte
RAM, 32 ®êng xuÊt nhËp, hai bé ®Þnh thêi/®Õm 16-bit, mét cÊu tróc
ng¾t hai møc u tiªn vµ 5 nguyªn nh©n ng¾t, mét port nèi tiÕp song c«ng,
m¹ch dao ®éng vµ t¹o xung clock trªn chip. AT89C51 ®îc thiÕt kÕ víi logic
tÜnh cho ho¹t ®éng cã tÇn sè gi¶m xuèng 0 vaø hç trî hai chÕ ®é tiÕt kiÖm
n¨ng lîng ®îc lùa chän b»ng phÇn mÒm. ChÕ ®é nghØ dõng CPU trong khi
vÉn cho phÐp RAM, c¸c bé ®Þnh thêi/®Õm, port nèi tiÕp vµ hÖ thèng
ng¾t tiÕp tôc ho¹t ®éng. ChÕ ®é nguån gi¶m duy tr× néi dung cña RAM
nhng kh«ng cho m¹ch dao ®éng cung cÊp xung clock nh»m v« hiÖu ho¸ c¸c
ho¹t ®éng kh¸c cña chip cho ®Õn khi cã reset cøng tiÕp theo.

I.1 M« t¶ c¸c ch©n

C¸c cÊu h×nh ch©n ra cña AT89C51

2
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Nh vËy AT89C51 cã tÊt c¶ 40 ch©n víi c¸c chøc n¨ng nh sau:

- Vcc (40)
Ch©n cung cÊp ®iÖn (5V)
- GND (20)
Ch©n nèi ®Êt (0V)
- Port 0 (32-39)
Port 0 lµ port xuÊt nhËp 8-bit hai chiÒu. Port 0 cßn ®îc cÊu h×nh
lµm bus ®Þa chØ (byte thÊp) vµ bus d÷ liÖu ®a hîp trong khi truy xuÊt bé
nhí d÷ liÖu ngoµi vµ bé nhí ch¬ng tr×nh ngoµi. Port 0 còng nhËn c¸c byte
m· trong khi lËp tr×nh cho Flash vµ xuÊt c¸c byte m· trong khi kiÓm tra ch-
¬ng tr×nh (C¸c ®iÖn trë kÐo lªn bªn ngoµi ®îc cÇn ®Õn trong khi kiÓm tra
ch¬ng tr×nh).
- Port 1(1-8)
Port 1 lµ port xuÊt nhËp 8-bit hai chiÒu. Port 1 còng nhËn byte ®Þa
chØ thÊp trong thêi gian lËp tr×nh cho Flash.
- Port 2 (21-28)
Port 2 lµ port xuÊt nhËp 8-bit hai chiÒu. Port 2 t¹o ra c¸c byte cao
cña bus ®Þa chØ trong thêi gian t×m n¹p lÖnh tõ bé nhí ch¬ng tr×nh ngoµi
vµ trong thêi gian truy xuÊt bé nhí d÷ liÖu ngoµi sö dông c¸c ®Þa chØ 16-
bit. Trong thêi gian truy xuÊt bé nhí d÷ liÖu ngoµi sö dông c¸c ®Þa chØ 8-
bit, Port 2 ph¸t c¸c néi dung cña thanh ghi chøc n¨ng ®Æc biÖt P2. Port 2
còng nhËn c¸c bÝt ®Þa chØ cao vµ vµi tÝn hiÖu ®iÒu khiÓn trong thêi
gian lËp tr×nh cho Flash vµ kiÓm tra ch¬ng tr×nh.
- Port 3 (10-17)
Port 3 lµ Port xuÊt nhËp 8-bit hai chiÒu. Port 3 còng cßn lµm c¸c
chøc n¨ng kh¸c cña AT89C51. C¸c chøc n¨ng nµy ®îc liÖt kª nh sau:

Ch©n Tªn Chøc n¨ng


P3.0 RxD Ngâ vµo Port nèi tiÕp
P3.1 TxD Ngâ ra Port nèi tiÕp
P3.2 INT0 Ngâ vµo ng¾t ngoµi 0
P3.3 INT1 Ngâ vµo ng¾t ngoµi 1
P3.4 T0 Ngâ vµo bªn ngoµi cña bé ®Þnh thêi 1
P3.5 T1 Ngâ vµo bªn ngoµi cña bé ®Þnh thêi 0
P3.6 WR §iÒu khiÓn ghi bé nhí d÷ liÖu ngoµi
P3.7 RD §iÒu khiÓn ®äc bé nhí d÷ liÖu ngoµi

Port 3 còng nhËn mét vµi tÝn hiÖu ®iÒu khiÓn cho viÖc lËp tr×nh
Flash vµ kiÓm tra ch¬ng tr×nh.

3
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

- RST (9)
Ngâ vµo reset. Møc cao trªn ch©n nµy trong 2 chu kú m¸y trong khi
bé dao ®éng ®ang hoat ®éng sÏ reset AT89C51.

RST

M¹ch reset t¸c ®éng b»ng tay vµ tù ®éng reset khi khëi ®éng m¸y
- ALE/ PROG (30)
ALE laø moät xung ngoõ ra ñeå choát byte thaáp cuûa ñòa chæ trong khi
truy xuaát boä nhôù ngoaøi. Chaân naøy cuõng laøm ngoõ vaøo xung laäp trình (
PROG ) trong thôøi gian laäp trình cho Flash.

Khi hoaït ñoäng bình thöôøng, xung ngoõ ra ALE lu«n coù taàn soáä
khoâng ñoåi laø 1/6 taàn soá cuûa maïch dao ñoäng, coù theå ñöôïc duøng cho
caùc muïch ñích ñònh thôøi töø beân ngoaøi vµ taïo xung clock. Tuy nhieân, löu
yù laø moät xung ALE seõ bò boû qua trong moãi moät chu kyø truy xuaát boä
nhôù döõ lieäu ngoaøi.
Khi caàn, hoaït ñoäng ALE coù theå ñöôïc voâ hieäu hoaù baèng caùch set
bit 0 cuûa thanh ghi chöùc naêng ñaëc bieät coù ñòa chæ 8Eh. Khi bit naøy ñöôïc
set, ALE chæ tích cöïc trong thôøi gan thöïc hieän leänh MOVX hoaëc MOVC.
Ngöôïc laïi, chaân naøy seõ ñöôïc keùo leân cao. Vieäc set bit khoâng cho pheùp
hoaït ñoäng choát byte thaáp cuûa ñòa chæ seõ khoâng coù taùc duïng neáu boä vi
ñieàu khieån ñang ôû cheá ñoä thöïc thi chöông trình ngoaøi.
- PSEN (29)
PSEN (Program Store Enable) laø xung ñieàu khieån truy xuaát boä nhôù
chöông trình ngoaøi. Khi AT89C52 ñang thöïc thi chöông trình töø boä nhôù
chöông trình ngoaøi, PSEN ñöôïc kích hoaït hai laàn moãi chu kyø maùy, nhöng
hai hoaït ñoäng PSEN seõ bò boû qua moãi khi truy caäp boä nhôù döõ lieäu
ngoaøi.
- EA /Vpp (31)
EA (External Access Enable) laø chaân cho pheùp truy xuaát boä nhôù
chöông trình ngoaøi (baét ñaàu töø ñòa chæ töø 0000H ñeán FFFFH).
EA = 0 cho pheùp truy xuaát boä nhôù chöông trình ngoaøi, ngîc l¹i EA
=1 seõ thöïc thi chöông trình beân trong chip

4
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Tuy nhieân, löu yù raèng neáu bit khoaù 1 (lock-bit 1) ñöôïc laäp trình,
EA seõ ñöôïc choát beân trong khi reset.
Chaân naøy cuõng nhaän ñieän aùp cho pheùp laäp trình Vpp=12V khi laäp
trình Flash (khi ñoù ®iÖn aùp laäp trình 12V ñöôïc choïn).
- XTAL1 vaø XTAL2
XTAL1 vaø XTAL2 laø hai ngoõ vaøo vaø ra cuûa moät boä khueách ñaïi
ñaûo cuûa maïch dao ñoäng, ñöôïc caáu hình ñeå duøng nhö moät boä dao ñoäng
treân chip.

Khoâng coù yeâu caàu naøo veà chu kyø nhieäm vuï cuûa tín hieäu xung
clock beân ngoaøi do tín hieäu naøy phaûi qua moät flip-flop chia hai tröôùc khi
ñeán maïch taïo xung clock beân trong, tuy nhieân caùc chi tieát kyõ thuaät veà
thôøi gian möùc thaáp vaø möùc cao, ñieän aùp cöïc tieåu vaø cöïc ñaïi caàn phaûi
ñöôïc xem xeùt.

I.2 C¸c chÕ ®é ®Æc biÖt


I.2.1 ChÕ ®é nghØ
Trong cheá ñoä nghæ, CPU töï ñi vaøo traïng thaùi nguû trong khi taát caû
caùc ngoaïi vi beân trong chip vaãn tích cöïc. Cheá ñoä naøy ñöôïc ñieàu khieån
bôûi phaàn meàm. Noäi dung cuûa RAM treân chip vaø cuûa taát caû caùc thanh
ghi chöùc naêng ñaëc bieät vaãn khoâng ñoåi trong khi thôøi gian toàn taïi cheá
ñoä naøy. Cheá ñoä nghæ coù theå ñöôïc keát thuùc bôûi moät ngaét baát kyø
naøo ñöôïc pheùp hoaëc baèng caùch reset cöùng.
Ta caàn löu yù raèng khi cheá ñoä nghæ ñöôïc keát thuùc bôûi moät reset
cöùng, chip vi ñieàu khieån seõ tieáp tuïc bình thöôøng vieäc thöïc thi chöông
trình töø nôi chöông trình bò taïm döøng, trong voøng 2 chu kyø maùy tröôùc khi
giaûi thuaät reset meàm naüm quyeàn ñieàu khieån.
ÔÛ cheá ñoä nghæ, phaàn cöùng treân chip caãm truy xuaát RAM noäi
nhöng cho pheùp truy xuaát caùc chaân cuûa caùc port. Ñeå traùnh khaû naêng
coù moät thao taùc ghi khoâng mong muoán ñeán moät chaân port khi cheá ñoä
nghæ keát thuùc baèng reset, leänh tieáp theo yeâu caàu cheá ñoä nghæ khoâng
neân laø leänh ghi ñeán chaân port hoaëc ñeán boä nhôù ngoaøi.

5
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

I.2.2 ChÕ ®é nguån gi¶m


Trong cheá ñoä naøy, maïch dao ñoäng ngöøng hoaït ñoäng vaø leänh yeâu
caàu cheá ñoä nguoàn giaûm laø leänh sau cuøng ñöôïc thöïc thi. RAM treân chip
vaø caùc thanh ghi chöùc naêng ñaëc bieät vaãn duy trì caùc giaù trò cuûa chuùng
cho ñeán khi cheá ñoä nguoàn giaûm keát thuùc. Chæ coù moät caùch ra khoûi
cheá ñoä nguoàn giaûm, ñoù laø reset cöùng.
Vieäc reset seõ xaùc ñònh laïi caùc thanh ghi chöùc naêng ñaëc bieät nhöng
khoâng laøm thay ñoåi RAM treân chip. Vieäc reset khoâng neân xaûy ra (chaân
reset ôû möùc tích cöïc) tröôùc khi Vcc ñöôïc khoâi phuïc laïi möùc ñieän aùp
bình thöôøng vaø phaûi keùo daøi traïng thaùi tích cöïc cuûa chaân reset ñuû laâu
ñeå cho pheùp maïch dao ñoäng hoaït ñoäng trôû laïi vaø ñaït traïng thaùi oån
ñònh.

Traïng thaùi cuûa caùc chaân trong thôøi gian toàn taïi cheá ñoä nghæ va
cheá ñoä nguoàn giaûm ñöôïc cho trong baûng sau:

Cheá Boä nhôù


ALE PSEN PORT O PORT 1 PORT 2 PORT 3
ñoä Chöông trình
Nghæ Beân trong 1 1 Döõ lieäu Döõ lieäu Döõ lieäu Döõ lieäu
Nghæ Beân ngoaøi 1 1 Thaû Döõ lieäu Döõ lieäu Döõ lieäu
noåi
Nguoàn Beân trong 0 0 Döõ lieäu Döõ lieäu Döõ lieäu Döõ lieäu
giaûm Beân ngoaøi 0 0 Thaû Döõ lieäu Döõ lieäu Döõ lieäu
noåi

I.3 C¸c bÝt kho¸ bé nhí ch¬ng tr×nh


Treân chip coù ba bit khoaù, caùc bít naøy coù theå khoâng cho pheùp laäp
trình hoaëc cho pheùp laäp trình, caùc bit naøy cho ta theâm moät soá ñaëc tröng
nöõa cuûa AT89C51 nhö sau.
Khi bit khoaù 1 LB1 ñöôïc laäp trình, möùc logic ôû chaân EA ñöôïc laáy
maãu vaø ñöôïc choát trong khi reset. Neáu vieäc caáp nguoàn cho chip khoâng
coù coâng duïng reset, maïch choát ñöôïc khôûi ñoäng baèng moät giaù trò ngaãu
nhieân vaø giaù trò naøy ñöôïc duy trì cho ñeán khi coù taùc ñoäng reset. Ñieàu
caàn thieát laø giaù trò ñöôïc choát cuûa EA phaûi phuø hôïp vôi möùc logic
hieän haønh ôû chaân naøy.

6
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Caùc bit khoùa chöông trình Loaïi baûo veä


Cheá LB1 LB2 LB3
ñoä
1 U U U Khoâng coù ñaëc tröng khoùa chöông trình
2 P U U Caùc leänh MOVC ñöôïc thöïc thi töø boä
nhôù chöông trình ngoaøi khoâng ñöôïc
pheùp tìm naïp leänh töø boä nhôù noäi,
EA ñöôïc laáy maãu vaø ñöôïc choát khi
reset, hôn nöõa vieäc laäp trình treân Flash
bò caám
3 P P U Nhö cheá ñoä 2, caám theâm vieäc kieåm tra
chöông trình
4 P P P Nhö cheá ñoä 3, caám theâm vieäc thöïc thi
chöông trình ngoaøi

7
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Ch¬ng 2:
bé nhí ngoµi (RAM, ROM) - c¸ch ghÐp víi VXL

I.4 Tæ chøc bé nhí


AT89C51 coù khoâng gian boä nhôù rieâng cho chöông trình vaø döõ lieäu,
caû hai ñeàu ñöôïc ñaët beân trong chip, ngoaøi ra ta coù theå môû roäng boä nhôù
chöông trình vaø boä nhôù döõ lieäu baèng caùch söû duïng caùc chip nhôù beân
ngoaøi.

Kh«ng gian nhí ch¬ng tr×nh cña AT89C51


B¶n th©n bªn trong chip vi ®iÒu khiÓn cã dung lîng bé nhí ch¬ng tr×nh lµ
4K cã ®Þa chØ b¾t ®Çu tõ 0000h ®Õn 0FFFh. Khi më réng bé nhí ch¬ng tr×nh
ngoµi th× bé nhí bªn trong chip kh«ng ®îc sö dông vµ kh«ng gian nhí ch¬ng tr×nh
ngoµi cã thÓ më réng tèi ®a tíi 64K b¾t ®Çu tõ ®Þa chØ 0000h tíi FFFFh.

FFFF FFFF

Boä nhôù Boä nhôù


chöông trình döõ lieäu
ñöôïc choïn
qua PSEN ñöôïc choïn
qua WR
FF
vaø RD

00 0000 0000

Boä nhôù treân Boä nhôù môû


Toùmchip
taét caùc khoâng gian nhôù döõ lieäu roäng
trong IC AT89C51

Hình veõ treân cho ta thaáy caáu truùc cuûa khoâng gian nhôù cuûa

8
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

AT89C51, trong ñoù khoâng gian nhôù noäi ñöôïc chia thaønh caùc daõy thanh
ghi (00h-1Fh), vuøng RAM ñònh ñòa chæ bit(20h-2Fh), vuøng RAM ña muïc ñích
(30h-7Fh) vaø caùc thanh ghi chöùc naêng ñaëc bieät(80h-FFh).

Ñòa chæ Ñòa chæ


Ñòa chæ Ñòa chæ
byte byte
bit bit
7F FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B

RAM ña duïng E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC

D0 D7 D6 D5 D4 D3 D2 – D0 PSW

30 B8 – – – BC BB BA B9 B8 IP
2F 7F 7E 7D 7C 7B 7A 79 78
2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
2D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60 A8 AF – – A A A A9 A8 IE
C B A
2B 5F 5E 5D 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
29 4F 4E 4D 4C 4B 4A 49 48
28 47 46 45 44 43 42 41 40 99 khoâng ñöôïc ñòa chæ hoùa SBUF
27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9Cbit9B 9A 99 98 SCON
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18 8D khoâng ñöôïc ñòa chæ hoùa TH1
22 17 16 15 14 13 12 11 10 8C khoâng ñöôïcbitñòa chæ hoùa TH0
21 0F 0E 0D 0C 0B 0A 09 08 8B khoâng ñöôïcbitñòa chæ hoùa TL1
20 07 06 05 04 03 02 07 00 8A khoâng ñöôïcbitñòa chæ hoùa TL0
1F Bank 3 1 89 khoâng ñöôïcbitñòa chæ hoùa TMOD
18 88 8F 8E 8D 8Cbit8B 8A 89 88 TCON
17 Bank 2 87 khoâng ñöôïc ñòa chæ hoùa PCON
10 bit
0F Bank 1 83 khoâng ñöôïc ñòa chæ hoùa DPH
08 82 khoâng ñöôïcbitñòa chæ hoùa DPL
07 Bank thanh Boä
ghi 0 nhôù döõ lieäu treân
81 chip
khoângAT89C51
ñöôïcbitñòa chæ hoùa SP
00 (maëc ñònh cho R0-R7) 80 87 86 85 84bit83 82 81 80 P0

RAM CAÙC THANH GHI CHÖÙC NAÊNG ÑAËC


BIEÄT

9
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

II. Gheùp noái vôùi boä nhôù ngoaøi

Caùc boä vi ñieàu khieån raát hieám khi ñöôùc söû duïng gioáng nhö caùc
CPU trong caùc heä maùy tính, thay vaøo ñoù chuùng ñöôïc duøng laøm thaønh
phaàn trung taâm trong caùc thieát keá höôùng ñieàu khieån, trong ñoù boä nhôù
coù dung löôïng giôùi haïn, khaéc phuïc nhöôïc ñieåm naøy caùc boä vi ñieàu
khieån ñeàu ñöôïc thieát keá ñeå coù khaû naêng môû roäng caùc taøi nguyeân
(boä nhôù, I/O, .v.v. .).
Trong phaàn giôùi thieäu veà AT89C51 ta thaáy chæ coù 2 port 0 vaø port
2 laøm chöùc naêng bus ñòa chæ vì vaäy AT89C51 coù theå môû roäng toái ña
64K boä nhôù chöông trình vaø 64K boä nhôù döõ lieäu ngoaøi.
Ñeå tieát kieäm caùc chaân cho pheùp ta ñoùng goùi boä vi ñieàu khieån
trong voû 40 chaân neân port 0 vöøa laø bus döõ lieäu (D0-D7) vöøa laø bus ñòa
chæ (A0-A7), kieåu saép xeáp naøy ñöôïc goïi laø saép xeáp ña hôïp.
Saép xeáp ña hôïp hoaït ñoäng nhö sau: trong nöûa chu kyø ñaàu cuûa chu
kyø boä nhôù, byte thaáp cuûa ñòa chæ ñöôïc cung caáp bôûi port 0 vaø ñöôïc
choát nhôø tín hieäu ALE. Trong nöûa sau cuûa chu kyø boä nhôù, port 0 ñöôïc
söû duïng laøm bus döõ lieäu vaø döõ lieäu ñöôïc ñoïc hay ghi.
Ta söû duïng IC 73HC373 laøm maïch choát döõ lieäu, giöõ cho byte thaáp
cuûa bus ñòa chæ oån ñònh trong caû chu kyø boä nhôù

II.1 Bé nhí b¸n dÉn.

Cã hai lo¹i chÝnh lµ RAM vµ ROM. Riªng víi RAM l¹i cã 2 lo¹i lµ SRAM
(RAM tÜnh) vµ DRAM (RAM ®éng).

- Bé nhí chØ cã thÓ ®äc ROM (Read-Only-Memory) lµ lo¹i cã néi dung ®-


îc viÕt s½n mét lÇn khi chÕ t¹o vµ ®îc gi÷ m·i cè ®Þnh (non volatile).

V+

0 1 0

g¶i 1 0 1 C¸c d©y tõ


m· (i hµng)
Tin 1
hiÖu hµng 0 0
®Þa
chØ

C¸c d©y bit (j cét)

10
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

T¹i c¸c ®iÓm v¾t chÐo nhau trªn mét ma trËn c¸c d©y dÉn hµng (tõ sè liÖu)
vµ cét (bit sè liÖu) nh h×nh vÏ trªn nÕu cã diode th× sÏ mang th«ng tin lµ 0, c¸c
®iÓm kh«ng chøa diode sÏ mang th«ng tin lµ 1. Khi ®Çu ra bé gi¶i m· ®Þa chØ ë
møc thÊp chän mét hµng th× ë ®Çu ra c¸c d©y bit ph¶n ¸nh c¸c gi¸ trÞ ®îc lu tr÷
trong chip nhí. Trong h×nh vÏ trªn lu tr÷ 3 tõ nhí lµ 010, 101 vµ 001.
C¸c chip PROM (Programmable) cho phÐp ngêi lËp tr×nh cã thÓ ghi th«ng tin
®îc 1 lÇn. §ã lµ lo¹i ROM mµ khi s¶n xuÊt, tÊt c¶ c¸c ®iÓm v¾t chÐo ®Òu ®Æt
mét mét cÇu ch× nèi tiÕp víi diode hoÆc transistor. Khi cÇn ghi th«ng tin víi møc
logic 1 ë ®iÓm v¾t chÐo nµo chØ cÇn cho dßng ®ñ lín ®i qua lµm ch¸y ®øt
cÇu ch× t¬ng øng ë ®iÓm ®ã.
C¸c chip nhí EPROM (Erasable PROM) cho phÐp xãa ®îc b»ng tia cùc tÝm
vµ EEPROM (Electricaly EPROM) cho phÐp xãa b»ng ®iÖn.
Trong c¸c chip nhí nµy c¸c transistor MOS cöa næi ®îc chÕ t¹o theo c«ng
nghÖ FAMOST (Floating gate avalanche injection MOS transistor) n»m ë c¸c
®iÓm v¾t chÐo trong ma tr©n c¸c d©y tõ vµ d©y bit. Trong « nhí nµy cùc cöa
®îc nèi víi ®êng tõ, cùc m¸ng nèi víi ®êng bit vµ cùc nguån ®îc nèi víi nguån
chuÈn (nguån cho møc logic 1). NÕu cöa næi cã c¸c ®iÖn tö trong ®ã víi ®iÖn
tÝch ©m, chóng sÏ ng¨n trêng ®iÖn ®iÒu kiÓn cña cùc cöa ®iÒu khiÓn vµ dï
d©y tõ cã ®îc kÝch häat th× cóng kh«ng thÓ ph¸t ra trêng ®ñ m¹nh víi cùc cöa
®iÒu kiÓn ®Ó lµm th«ng transistor. Lóc nµy ®êng bit kh«ng ®îc nèi víi nguån
chuÈn vµ « nhí coi nh gi÷ gi¸ trÞ 0. ViÖc n¹p c¸c ®iÖn tö vµo vïng cöa næi, tøc lµ
t¹o ra c¸c « nhí cã gi¸ trÞ 0, ®îc thùc hiÖn bëi c¸c xung ®iÖn cã ®é dµi cì 50ms
vµ ®é lín +20Vkhi ®Æt vµo gi÷a cùc cöa vµ m¸ng. §Ó xãa c¸c th«ng tin, tøc lµ
lµm mÊt c¸c ®iÖn tÝch ®iÖn tö trong vïng cöa næi ta chiÕu tia UV vµo chip nhí.
C¸c ®iÖn tö sÏ hÊp thô n¨ng lîng nh¶y lªn c¸c møc cao, vµ rêi cöa næi nh c¸ch mµ
chóng ®· th©m nhËp vµo ®ã. Víi EEPROM viÖc n¹p ®iÖn tö t¬ng tù nh
EPROM. §Ó xãa EEPROM, mét líp kªnh mµng máng oxit gi÷a vïng cöa næi tr¶i
xuèng díi ®Õ vµ cùc m¸ng ®ãng vai trß quan träng. C¸c líp c¸ch ®iÖn lµ kh«ng lý
tëng, c¸c ®iÖn tö cã thÓ thÊm qua líp ph©n c¸ch víi mét x¸c suÊt thÊp. X¸c suÊt
nµy sÏ t¨ng lªn khi bÒ dµy cña líp gi¶m ®i vµ ®iÖn thÕ gi÷a hai ®iÖn cùc ë hai
mÆt t¨ng lªn. Muèn phãng c¸c ®iÖn tÝch trong vïng cöa næi, mét ®iÖn thÕ (-
20V) ®îc ®Æt vµo cùc cöa ®iÒu khiÓn vµ cùc m¸ng. Lóc nµy c¸c ®iÖn tö ©m
trong cöa næi ®îc ch¶y vÒ cùc m¸ng qua kªnh mµng máng oxit vµ sè liÖu lu tr÷
®îc xãa.
Flash memory t¬ng tù nh EEPROM nhng Flash memory xãa tÊt c¶ tong
mét lÇn trong khi EEPROM ph¶i xãa tõng bit mét.

- C¸c chip RAM (Random Access Memory) lµ lo¹i bé nhí cã thÓ ghi/®äc
®îc. §©y lµ lo¹i bé nhí kh«ng cè ®Þnh (volatile) tøc lµ th«ng tin lu tr÷ trong
nã sÏ bÞ mÊt ®i khi c¾t nguån ®iÖn nu«i. RAM b¸n dÉn cã hai lo¹i lµ SRAM
(Static RAM-Ram tÜnh) vµ DRAM (Dinamic RAM-Ram ®éng).
Mét « nhí SRAM lu tr÷ th«ng tin bëi tr¹ng th¸i cña mét m¹ch lËt (Flip-flop)
víi ®Çu ra cña nã ë mét trong hai møc logic thÊp. ThuËt ng÷ ‘tÜnh’ chØ ra

11
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

r»ng khi nguån nu«i cha bÞ c¾t th× néi dung « nhí vÉn ®îc gi÷ nguyªn. Trong
khi ®ã, bé nhí DRAM lu tr÷ th«ng tin b»ng møc ®iÖn ¸p trªn mét tô ®iÖn cã
®iÖn dung C. Lîng ®iÖn tÝch trªn tô biÕn ®æi theo thêi gian do sù phãng
hay n¹p ®iÖn qua c¸c ®iÖn trë khãa (cã gi¸ trÞ kh«ng thÓ b»ng v« cïng). V×
vËy thuËt ng÷ ‘®éng’ hµm ý r»ng mÆc dï cha c¾t nguån nu«i nhng vÉn ph¶i
thêng xuyªn phôc håi th«ng tin trong DRAM. Qu¸ tr×nh håi phôc ®îc gäi lµ
‘lµm t¬i’ « nhí.

Moät vi maïch nhôù thöôøng coù caáu truùc bao goàm: nhoùm tín hieäu
ñòa chæ, nhoùm tín hieäu döõ lieäu (data output/input), tín hieäu choïn voû, tín
hieäu ñieàu khieån ñoïc/ghi

Mét sè hä IC nhí th«ng dông:


Rom: Hä 28/27XXX (EPROMs) : 2704 (512K.8bit); 2708 (1K.8bit); 2716
(2K.8bit); 2732 (4K.8bit); 2764 (8K.8bit); 27128 (16K.8bit); 27256
(32K.8bit); 27512 (64K.8bit); 271024 (128K.8bit)
SRAM: TMS4016 (2K.8bit); 62256 (32K.8bit)
DRAM: TMS4464 (64K.4bit), 41256 (256K.1bit)
v.v. . .
HiÖn nay cßn cã bé nhí EPROM ghÐp nèi víi vi xö lý theo kiÓu nèi tiÕp (SÏ
®Ò cËp tíi ë phÇn sau)

A1D0A2D2A3D3.
.
..
Tín .
hieäu .
Vaøo/ra
ñòa AnDmWECSOE döõ
chæ
lieäu

Ghi

Chaân Ñoïc
choïn
voû

Caáu truùc toång quaùt moät vi maïch nhôù

12
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Moãi moät maïch nhôù ñöôïc phoái gheùp vôùi chip caàn phaûi ñöôïc chip
quy chieáu tôùi moät caùch chính xaùc khi thöïc hieän caùc thao taùc ghi/ñoïc.
Ñieàu ñoù coù nghóa laø moãi maïch nhôù phaûi ñöôïc gaùn moät vuøng rieâng
bieät coù ñòa chæ xaùc ñònh naèm trong khoâng gian ñòa chæ toång theå cuûa
boä nhôù. Vieäc gaùn ñòa chæ cuï theå cho maïch nhôù ñöôïc thöïc hieän nhôø
moät xung choïn voû laáy töø maïch giaûi maõ ñòa chæ.

Port 0 D0-D7

74HC373
AT89C51
EA O A0-A7 Boä
D
nhôùù
ALE G

Port 2 A8-A15

Tín hieäu ñieàu


khieån

Sô ñoà toång quaùt gheùp noái boä nhôù ngoaøi vôùi AT89C51

II.2 GhÐp nèi t¨ng dung lîng bé nhí.


Caùc vi maïch nhôù coù dung löôïng coá ñònh ví dô 4K, 8K . v.v. . Vì vaäy
ta phaûi gheùp noái caùc vi maïch nhôù naøy moät caùch thích hôïp ñeå coù ñöôïc
moät boä nhôù ngoaøi theo ñuùng yeâu caàu thieát keá. Coù hai caùch gheùp noái
chính ñeå taêng dung löôïng boä nhôù laø gheùp noái theo haøng doïc (taêng ñaàu
vaøo ñòa chæ) vaø gheùp noái theo haøng ngang (taêng ñaàu ra döõ lieäu).
- Gheùp noái theo haøng ngang (taêng soá bit döõ lieäu)
Giaû söû ta coù moät IC nhôù coù dung löôïng laø 2n.m bit, muoán coù
moät boä nhôù coù dung löôïng 2n.(km) bit ta gheùp k IC nhôù 2n.m bit lµ ®îc víi
®iÒu kiÖn c¸c tÝn hiÖu chän vá CS trªn k IC nhí ®ã ph¶i ®îc kÝch ho¹t ®ång
thêi.
Address Bus (A0-An-1)

IC1 IC2 ... ICk

2n.m 2n.m 2n.m

CS
k.m bit
Tín hieäu ñk ghi/ñoïc

13
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

- Gheùp noái theo haøng doïc (taêng soá bit ñòa chæ)

Giaû söû ta coù moät IC nhôù coù dung löôïng 2n.m bit, muoán coù moät
boä nhôù coù dung löôïng 2n+k.m bit ta gheùp 2k IC nhôù 2n.m bit víi bé gi¶i m·
®Þa chØ cã k ®êng ®Þa chØ vµo chän 1 trong sè 2k ®êng ra.

IC 1
A0 – An+k-1 A0 – An-1 2n.m
CE

IC 2
y0 2n.m
An – An+k-1 Maïch y1 CE m bit
giaûi
maõ .
Choïn voûû ñòa y2 k-1
.
chæ .
.
IC 2k

2n.m
CE

Tín hieäu ñk ghi ñoïc

II.3 LËp tr×nh

Ñeå vi xöû lyù coù theå nhaän bieát vaø laøm vieäc vôùi boä nhôù ngoaøi,
khi laäp trình ta caàn khôûi taïo caùc giaù trò caùc thuû tuïc caàn thieát ñeå giao
tieáp vôùi boä nhôù ngoaøi. Ví duï ñònh nghóa caùc chaân ñieàu khieån, thieát
laäp caùc chöông trình con ghi ñoïc döõ lieäu .v.v . .

14
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Ví duï gheùp noái AT89C51 vôùi SRAM 6264 (8Kx8)

15
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Chöông trình:

; Truy xuat bo nho du lieu ngoai su dung cong vao ra

SRAM_DATA DATA 30h ; SRAM Data


UART_BUSY BIT 00h ; UART Busy Flag
; Khoi tao
SRAM_ADDR EQU 0000h ; tu 0000 toi 1FFF voi 6264 ( 8Kx8)
;
; Dinh nghia cac chan
DATA_PORT EQU P0
LO_ADDR_PORT EQU P1
HI_ADDR_PORT EQU P2
SRAM_CS EQU P3.5
SRAM_WR EQU P3.6
SRAM_RD EQU P3.7
;
PROG EQU 0000h
ORG PROG+0000h
SJMP START
;Bang vecto ngat
ORG PROG+0003h
LCALL INT0_ISR ; Ngat ngoai 0
RETI
ORG PROG+000Bh
LCALL T0_ISR ; Ngat bo dinh thoi 0
RETI
ORG PROG+0013h
LCALL INT1_ISR ; Ngat ngoai 1
RETI
ORG PROG+001Bh
LCALL T1_ISR ; Ngat bo dinh thoi 1
RETI
ORG PROG+0023h
LCALL UART_ISR ; Ngat port noi tiep
RETI
;
ORG PROG+0030h ; Bat dau chuong trinh chinh
START:
MOV PCON,#10000000b ; Tang gap doi toc do baud
MOV TMOD,#00100001b ; Bo dinh thoi 1 o che do 2,Bo dinh thoi0 o che do 1
MOV TH1, #0FFh ; Toc do baud = 57600 bps voi thach anh 11.0592 (Byte cao bo dinh
thoi 1)
MOV SCON,#01010000b ; Che do 1 port noi tiep (khoi dong port noi tiep)
SETB ES ; Cho phep ngat do port noi tiep(IE.4)
SETB EA ; Cho phep ngat(IE.7)
SETB TR1 ; Khoi dong bo dinh thoi 1(TCON)
CLR UART_BUSY
; Vi du ghi bang chu cai A,B,C . . . vao RAM
MOV DPTR,#SRAM_ADDR
MOV SRAM_DATA,#'A'
Lap1: MOV A,SRAM_DATA
CALL SRAM_WRITE
INC SRAM_DATA

16
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

MOV A,SRAM_DATA
CJNE A,#'Z'+1,INC_SRAM_ADDR
MOV SRAM_DATA,#'A'
INC_SRAM_ADDR:
INC DPTR
MOV A,DPH
CJNE A,#20h,Lap1
; Doc byte tu RAM ra roi gui toi port noi tiep
MOV DPTR,#SRAM_ADDR
Lap2: CALL SRAM_READ
MOV SRAM_DATA,A
WAIT_UART:
JB UART_BUSY,WAIT_UART
SETB UART_BUSY
MOV SBUF,SRAM_DATA
INC DPTR
MOV A,DPH
CJNE A,#20h,lap2
DONE: SJMP DONE
;
INT0_ISR:
RET
T0_ISR:
RET
INT1_ISR:
RET
T1_ISR:
RET
UART_ISR:
JB RI,RECEIVED
TRANSMITTED:
CLR UART_BUSY
CLR TI
RET
RECEIVED:
CLR RI
RET
; Thu tuc doc RAM
SRAM_READ:
MOV LO_ADDR_PORT,DPL
MOV HI_ADDR_PORT,DPH
MOV DATA_PORT,#0FFh
CLR SRAM_CS
CLR SRAM_RD
MOV A,DATA_PORT
SETB SRAM_RD
SETB SRAM_CS
RET
; Thu tuc ghi RAM
SRAM_WRITE:
MOV LO_ADDR_PORT,DPL
MOV HI_ADDR_PORT,DPH
CLR SRAM_CS
MOV DATA_PORT,A ; Thanh ghi A chua du lieu can ghi vao RAM
ngoai

17
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

CLR SRAM_WR
SETB SRAM_WR
SETB SRAM_CS
RET

END

II.4 Giíi thiÖu bé nhí EEPROM nèi tiÕp

HiÖn nay bé nhí EEPROM trao ®æi d÷ liÖu theo kiÓu nèi tiÕp ®îc
øng dông rÊt nhiÒu trong thùc tÕ.
§Ó minh häa ta h·y xÐt mét IC nhí cô thÓ lo¹i nµy, ®ã lµ IC AT24C64
(64K x 8) .

18
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

M« t¶ ho¹t ®éng:
- Xung ®ång hå vµ truyÒn d÷ liÖu : Ch©n SDA b×nh thêng ®îc kÐo lªn
møc cao víi vai trß lµ thiÕt bÞ ngoµi. D÷ liÖu ë ch©n SDA ®îc thay
®æi khi SCL ¬ møc thÊp. NÕu tÝn hiÖu ë ch©n SDA thay ®æi khi SCl
ë møc cao sÏ chØ ra bÝt b¸o hiÖu b¾t ®Çu hay kÕt thóc viÖc trao ®æi
d÷ liÖu.
- BÝt b¾t ®Çu: TÝn hiÖu ë ch©n SDA chuyÓn tõ cao xuèng thÊp khi
SCl ë møc cao sÏ lµ ®iÒu kiÖn ®Ó b¾t ®Çu qu¸ tr×nh truyÒn d÷ liÖu
- BÝt kÕt thóc: TÝn hiÖu ë ch©n SDA chuyÓn tõ thÊp lªn cao khi SCl ë
møc cao lµ ®iÒu kiÖn b¸o hiÖu kÕt thóc qu¸ tr×nh truyÒn d÷ liÖu.
- BÝt b¸o hiÖu chÊp nhËn trao ®æi: TÊt c¶ c¸c ®Þa chØ vµ d÷ liÖu (8
bÝt) ®Òu truyÒn nèi tiÕp. EEPROM sÏ göi bÝt 0 ë bÝt thø 9 ®Ó x¸c
nhËn lµ ®· nhËn ®îc mçi tõ (8 bit)

§Þa chØ ®Ó x¸c ®Þnh EEPROM gåm 8 bit trong ®ã 4 bÝt ®©u ®îc cè
®Þnh nh h×nh vÏ. C¸c bÝt A0 , A1 , A2 sÏ ®îc nèi víi ®Êt nÕu chØ cã mét
IC nhí ®îc ghÐp nèi víi vi xö lý, nÕu cã nhiÒu IC nhí th× c¸c bit trªn sÏ quy
®Þnh vïng nhí cho mçi IC nhí. BÝt cuèi cïng quy ®Þnh ho¹t ®éng ®äc hay
ghi.

19
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Ho¹t ®éng ghi ®îc b¾t ®Çu khi cã tÝn hiÖu b¾t ®Çu, tiÕp ®ã lµ 8
bÝt ®Þa chØ bÝt thø 8 lµ 0 ®Ó b¸o hiÖu ghi, sau khi x¸c nhËn ®Þa chØ
EEPROM ®a ra bit 0 bÝt x¸c nhËn(coi nh lµ tÝn hiÖu ng¨n c¸ch gia c¸c
phÇn). Dong bÝt tiÕp theo ®a vµo lµ ®Þa chØ phÇn cao phÇn thÊp cña d÷
liÖu sÏ ghi råi míi ®Õn d÷ liÖu cÇn ghi, cø sau 8 bÝt ROM ®Òu ®a ra bÝt
x¸c nhËn. Cuèi cïng lµ tÝn hiÖu kÕt thóc.

Ta cã thÓ ghi d÷ liÖu theo tõng trang tøc lµ bé nhí sÏ tù ®éng t¨ng 1 ë ®Þa
chØ.

Ho¹t ®éng ®äc còng t¬ng tù ho¹t ®éng ghi, ta cã thÓ ®äc ngÉu nhiªn,
®äc tuÇn tù, current address read.

S¬ ®å nèi ghÐp díi ®©y ta ghÐp mét IC AT24C64 víi vi ®iÒu kiÓn
AT89C51 nªn c¸c ch©n A0 ,A1 , A2 ®Òu ®îc nèi víi ®Êt.

20
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Ch¬ng tr×nh:

PROG EQU 0000h


;
;Quy dinh cac chan
SEEPROM_SCL EQU P1.0 ; Xung dong ho
SEEPROM_SDA EQU P1.1 ; Du lieu noi tiep
;
; Khoi tao
SEEPROM_MADRS_LO DATA 30h ; Luu dia chi cao
SEEPROM_MADRS_HI DATA 31h ; Luu dia chi thap
SEEPROM_DATA DATA 32h ; Luu du lieu
SEEPROM_SBUF DATA 33h ; Dem port noi tiep
UART_BUSY BIT 00h ; Co bao port noi tiep ban
;
;
SEEPROM_DADRS EQU 0A0h
;
ORG PROG+0000h
SJMP START
; Bang vecto ngat
ORG PROG+0003h
LCALL INT0_ISR
RETI
ORG PROG+000Bh
LCALL T0_ISR
RETI

21
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

ORG PROG+0013h
LCALL INT1_ISR
RETI
ORG PROG+001Bh
LCALL T1_ISR
RETI
ORG PROG+0023h
LCALL UART_ISR
RETI
;
ORG PROG+0030h

START:
MOV TMOD,#00100001b ; Bo dinh thoi1 o che do 2, Bo dinh thoi 0 o che do 1
MOV TH1, #0FDh ; Toc do baud = 9600 bps voi thach anh 11.0592MHz
MOV SCON,#01010000b ; Port noi tiep o che do 1
SETB ES ; Cho phep port noi tiep ngat
SETB EA ; Cho phep ngat
SETB TR1 ; Khoi dong bo dinh thoi 1
CLR UART_BUSY
; Ghi bang chu cai A, B, C . . . vao bo nho
MOV SEEPROM_MADRS_HI,#00h
MOV SEEPROM_MADRS_LO,#00h
MOV SEEPROM_DATA,#'A'
LOOP_1: CALL SEEPROM_WRITE
INC SEEPROM_DATA
MOV A,SEEPROM_DATA
CJNE A,#'Z'+1,INC_MADRS_LO_1
MOV SEEPROM_DATA,#'A'
INC_MADRS_LO_1:
INC SEEPROM_MADRS_LO
MOV A,SEEPROM_MADRS_LO
CJNE A,#00h,LOOP_1
INC_MADRS_HI_1:
INC SEEPROM_MADRS_HI
MOV A,SEEPROM_MADRS_HI
CJNE A,#20h,LOOP_1 ; Gioi han 8K voi AT24C64

; Doc byte tu bo nho roi gui ra port noi tiep


MOV SEEPROM_MADRS_HI,#00h
MOV SEEPROM_MADRS_LO,#00h
LOOP_2: CALL SEEPROM_READ
WAIT_UART:
JB UART_BUSY,WAIT_UART
SETB UART_BUSY
MOV SBUF,SEEPROM_DATA
INC_MADRS_LO_2:
INC SEEPROM_MADRS_LO
MOV A,SEEPROM_MADRS_LO
CJNE A,#00h,LOOP_2
INC_MADRS_HI_2:
INC SEEPROM_MADRS_HI
MOV A,SEEPROM_MADRS_HI
CJNE A,#20h,LOOP_2 ; 8K Limit for AT24C64

22
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

DONE: SJMP DONE


;
INT0_ISR:
RET
;
T0_ISR:
RET
INT1_ISR:
RET
T1_ISR:
RET
;
UART_ISR:
JB RI,RECEIVED
TRANSMITTED:
CLR UART_BUSY
CLR TI
RET
RECEIVED:
CLR RI
RET
;
SEEPROM_WRITE:
; Thu tuc ghi
; Dia chi IC : SEEPROM_DADRS
; Dia chi du lieu : SEEPROM_MADRS_HI and SEEPROM_MADRS_LO
; Du lieu : SEEPROM_DATA
; CY = 1 neu bus ban hay la IC bi loi khi xuat biet xac nhan.
; Thu lai neu CY = 1.
PUSH ACC
CALL SEEPROM_START
JC SEEPROM_WRITE_RET ; Bo neu bus
khong san sang
MOV A,#SEEPROM_DADRS ; Dia chi IC
CLR ACC.0 ; Xac
dinh ghi du lieu
MOV SEEPROM_SBUF,A
CALL SEEPROM_SHOUT ; Gui dia chi IC
JC SEEPROM_WRITE_ERROR ; Bo neu
khong co bit xac nhan
MOV SEEPROM_SBUF,SEEPROM_MADRS_HI ; Phan cao dia chi
CALL SEEPROM_SHOUT ; Gui dia chi phan
cao
JC SEEPROM_WRITE_ERROR ; Bo neu
khong co bit xac nhan
MOV SEEPROM_SBUF,SEEPROM_MADRS_LO ; Phan thap dia
chi
CALL SEEPROM_SHOUT ; Gui phan thap
JC SEEPROM_WRITE_ERROR ; Bo neu
khong co bit xac nhan
MOV SEEPROM_SBUF,SEEPROM_DATA ; Du lieu
CALL SEEPROM_SHOUT ; Gui du lieu
JC SEEPROM_WRITE_ERROR ; Bo neu
khong co bit xac nhan
CLR C

23
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

; Xoa co bao loi


SEEPROM_WRITE_ERROR:
CALL SEEPROM_STOP
SEEPROM_WRITE_RET:
POP ACC
JC SEEPROM_WRITE ; Thu lai
neu loi
RET
;
SEEPROM_READ:
; Thu tuc doc
; Dia chi Ic : SEEPROM_DADRS
; Dia chi du lieu : SEEPROM_MADRS_HI and SEEPROM_MADRS_LO
; Du lieu : SEEPROM_DATA
; CY = 1 neu bus ban hay la IC bi loi khi xuat biet xac nhan.
; Thu lai neu CY = 1.
PUSH ACC
CALL SEEPROM_START
JC SEEPROM_READ_RET ; Bo neu bus chua
san sang
MOV A,#SEEPROM_DADRS
CLR ACC.0
MOV SEEPROM_SBUF,A
CALL SEEPROM_SHOUT
JC SEEPROM_READ_ERROR
MOV SEEPROM_SBUF,SEEPROM_MADRS_HI
CALL SEEPROM_SHOUT
JC SEEPROM_READ_ERROR
MOV SEEPROM_SBUF,SEEPROM_MADRS_LO
CALL SEEPROM_SHOUT
JC SEEPROM_READ_ERROR
CALL SEEPROM_START
JC SEEPROM_READ_RET
MOV A,#SEEPROM_DADRS
SETB ACC.0
MOV SEEPROM_SBUF,A
CALL SEEPROM_SHOUT
JC SEEPROM_READ_ERROR
CALL SEEPROM_SHIN ; Nhan du lieu
CALL SEEPROM_NAK ; khong
chap nhan byte
MOV SEEPROM_DATA,SEEPROM_SBUF
CLR C

SEEPROM_READ_ERROR:
CALL SEEPROM_STOP
SEEPROM_READ_RET:
POP ACC
JC SEEPROM_READ ; thu lai
neu loi
RET
;
SEEPROM_START:
; Gui bit bat dau, xac dinh chuyen tu cao ve thap o SDA trong khi SCL cao.
; Quay lai SCL, SDA thap.

24
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

; Tro lai set CY neu bus ban.


SETB SEEPROM_SDA
SETB SEEPROM_SCL
JNB SEEPROM_SDA,SEEPROM_START_ERROR
JNB SEEPROM_SCL,SEEPROM_START_ERROR
NOP ; tre mot chu ky may
CLR SEEPROM_SDA
NOP
NOP
NOP
NOP
NOP
CLR SEEPROM_SCL
CLR C ;xoa co loi
SJMP SEEPROM_START_RET
SEEPROM_START_ERROR:
SETB C ; set co bao loi
SEEPROM_START_RET:
RET
;
SEEPROM_STOP:
; Gui bit bao hieu ket thuc, xacs dinh chuyen tu thap len cao o SDA khi SCL cao.
; Cho SCL thap de thu lai. Tro lai SCL, SDA cao.
CLR SEEPROM_SDA
NOP ; SCL low va thiet lap du lieu
NOP
SETB SEEPROM_SCL
NOP ; tre mot chu ky may
NOP
NOP
NOP
NOP
SETB SEEPROM_SDA
RET
;
SEEPROM_SHOUT:
; Gui den ROM cac bit bat buoc.
; Cho SCL, SDA thu lai. Tro lai SCL thap.
; Duoc goi voi du lieu gui vao thanh dem SEEPROM_SBUF.
; SET lai CY cho biet loi boi tin hieu xac nhan.
PUSH ACC
PUSH B
MOV A,SEEPROM_SBUF
MOV B,#8 ; bit dem
SEEPROM_SHOUT_LOOP:
RLC A ; chuyen bit vao CY
MOV SEEPROM_SDA,C ; xuat bit
NOP ; lam cho SCL thap va thiet lap du
lieu
SETB SEEPROM_SCL ; phat xung
NOP ; lam cho SCL cao
NOP
NOP
NOP
CLR SEEPROM_SCL ; Giam xung

25
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

DJNZ B,SEEPROM_SHOUT_LOOP
SETB SEEPROM_SDA ; SDA for ACK
NOP ; lam cho SCL thap va tAA
NOP
SETB SEEPROM_SCL ; phat ACK clock
NOP ; lam cho SCL cao
NOP
NOP
NOP
MOV C,SEEPROM_SDA ; Nhan ACK bit
CLR SEEPROM_SCL ; Giam ACK clock
POP B
POP ACC
RET
;
SEEPROM_SHIN:
; Nhan vao bit bat buoc.
; SCL thap de thu lai. quay tro lai SCL thap.
; Nhan du lieu tu SEEPROM_SBUF.
PUSH ACC
PUSH B
SETB SEEPROM_SDA ; thiet lap SDA vao
MOV B,#8 ; bit dem
SEEPROM_SHIN_LOOP:
NOP ; Lam cho SCL thap va thiet lap du
lieu
NOP
NOP
SETB SEEPROM_SCL ; Phat clock
NOP ; Lam cho SCL cao
NOP
MOV C, SEEPROM_SDA ; bit vao
RLC A ; chuyen bit vao byte
CLR SEEPROM_SCL ; Giam clock
DJNZ B,SEEPROM_SHIN_LOOP
MOV SEEPROM_SBUF,A
POP B
POP ACC
RET
;
SEEPROM_NAK: ; Phu dinh xung xac nhan (cao).
; SCL thap de thu lai. Quay lai voi SCL thao, SDA cao.
SETB SEEPROM_SDA; phu dinh bit xac nhan
NOP ; lam cho SCL thap va thiet lap du lieu
NOP
SETB SEEPROM_SCL ; Phat clock
NOP ; lam cho SCL cao
NOP
NOP
NOP
CLR SEEPROM_SCL ; Giam clock
RET
;
END

26
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Ch¬ng 3
Giíi thiÖu vÒ ic chuyÓn ®æi ad – da
c¸ch ghÐp nèi chóng víi vi xö lý

1. SÔ LÖÔÏC VEÀ CAÙC PHÖÔNG PHAÙP BIEÁN ÑOÅI


AD
Tín hieäu trong theá giôùi thöïc thöôøng ôû daïng töông töï (analog), neân
maïch ñieàu khieån thu thaäp döõ lieäu töø ñoái töôïng ñieàu khieån veà
(thoâng qua caùc caûm bieán) cuõng ôû daïng töông töï. Trong khi ñoù, boä
ñieàu khieån ngaøy nay thöôøng laø caùc P, C xöû lyù döõ lieäu ôû daïng
soá (digital). Vì vaäy, caàn phaûi chuyeån ñoåi tín hieäu ôû daïng töông töï
thaønh tín hieäu ôû daïng soá thoâng qua boä bieán ñoåi AD.
Coù nhieàu phöông phaùp bieán ñoåi AD khaùc nhau, ôû ñaây chæ giôùi
thieäu moät soá phöông phaùp ñieån hình.

1.1. Bieán ñoåi AD duøng boä bieán ñoåi DA


Trong phöông phaùp naøy, boä bieán ñoåi DA ñöôïc duøng nhö moät thaønh
phaàn trong maïch.

ñaàu vaøo analog 1


vA + 0 Start
OPAMP Ñôn vò
- Clock
So saùnh
ñieàu khieån
EOC
(keát thuùc chuyeån
Thanh ñoåi)
Boä bieán ghi
...

vAX
ñoåi DA
Keát quaû digital

Khoaûng thôøi gian bieán ñoåi ñöôïc chia bôûi nguoàn xung clock beân
ngoaøi. Ñôn vò ñieàu khieån laø moät maïch logic cho pheùp ñaùp öùng
vôùi tín hieäu Start ñeå baét ñaàu bieán ñoåi. Khi ñoù, OPAMP so saùnh hai
tín hieäu vaøo angalog ñeå taïo ra tín hieäu digital bieán ñoåi traïng thaùi
cuûa ñôn vò ñieàu khieån phuï thuoäc vaøo tín hieäu analog naøo coù giaù
trò lôùn hôn. Boä bieán ñoåi hoaït ñoäng theo caùc böôùc :
 Tín hieäu Start ñeå baét ñaàu bieán ñoåi.

27
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

 Cöù moãi xung clock, ñôn vò ñieàu khieån söûa ñoåi soá nhò phaân
ñaàu ra vaø ñöa vaøo löu tröõ trong thanh ghi.
 Soá nhò phaân trong thanh ghi ñöôïc chuyeån ñoåi thaønh aùp analog
vAX qua boä bieán ñoåi DA.
 OPAMP so saùnh vAX vôùi aùp ñaàu vaøo vA. Neáu vAX < vA thì ñaàu
ra ôû möùc cao, coøn ngöôïc laïi, neáu v AX vöôït qua vA moät löôïng
vT (aùp ngöôõng) thì ñaàu ra ôû möùc thaáp vaø keát thuùc quaù trình
bieán ñoåi. Ôû thôøi ñieåm naøy, vAX ñaõ xaáp xæ baèng vA vaø soá
nhò phaân chöùa trong thanh ghi chính laø giaù trò digital xaáp xæ
cuûa vA (theo moät ñoä phaân giaûi vaø chính xaùc nhaát ñònh cuûa
töøng heä thoáng).
 Ñôn vò ñieàu khieån kích hoaït tín hieäu EOC, baùo raèng ñaõ keát
thuùc quaù trình bieán ñoåi.
Döïa theo phöông phaùp naøy, coù nhieàu boä bieán ñoåi nhö sau :

ñaàu vaøo analog Clock

vA + EOC
OPAMP
Start
-
So saùnh
vAX vA
Khi
Reset chuyeån
ñoåi hoaøn
taát, counter
Boäâ EOC ngöøng
Counter Clock
bieán tC ñeám
...

vAX
ñoåi DA
Start

Keát quaû digital

1.1.1. Boä bieán ñoåi AD theo haøm doác


Ñaây laø boä bieán ñoåi ñôn giaûn nhaát theo moâ hình boä bieán ñoåi toång
quaùt treân. Noù duøng moät counter laøm thanh ghi vaø cöù moãi xung
clock thì gia taêng giaù trò nhò phaân cho ñeán khi v AX  vA. Boä bieán ñoåi
naøy ñöôïc goïi laø bieán ñoåi theo haøm doác vì daïng soùng vAX coù daïng
cuûa haøm doác, hay noái ñuùng hôn laø daïng baäc thang. Ñoâi khi noù
coøn ñöôïc goïi laø boä bieán ñoåi AD loaïi counter.
Hình treân cho thaáy sô ñoà maïch cuûa boä bieán ñoåi AD theo haøm doác,
bao goàm moät counter, moät boä bieán ñoåi DA, moät OPAMP so saùnh,

28
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

vaø moät coång AND cho ñieàu khieån . Ñaàu ra cuûa OPAMP ñöôïc duøng
nhö tín hieäu tích cöïc möùc thaáp cuûa tín hieäu EOC. Giaû söû v A döông,
quaù trình bieán ñoåi xaûy ra theo caùc böôùc :
 Xung Start ñöôïc ñöa vaøo ñeå reset counter veà 0. Möùc cao cuûa
xung Start cuõng ngaên khoâng cho xung clock ñeán counter.
 Ñaàu vaøo cuûa boä bieán ñoåi DA ñeàu laø caùc bit 0 neân aùp ra
vAX = 0v.
 Khi vA > vAX thì ñaàu ra cuûa OPAMP (EOC) ôû möùc cao.
 Khi Start xuoáng möùc thaáp, coång AND ñöôïc kích hoaït vaø xung
clock ñöôïc ñöa vaøo counter.
 Counter ñeám theo xung clock vaø vì vaäy ñaàu ra cuûa boä bieán
ñoåi DA, vAX, gia taêng moät naác trong moät xung clock
 Quaù trình ñeám cuûa counter cöù tieáp tuïc cho ñeán khi v AX baèng
hoaëc vöôït qua vA moät löôïng vT (khoaûng töø 10 ñeán 100v). Khi
ñoù, EOC xuoáng thaáp vaø ngaên khoâng cho xung clock ñeán
counter. Töø ñoù keát thuùc quaù trình bieán ñoåi.
 Counter vaãn giöõ giaù trò vöøa bieán ñoåi xong cho ñeán khi coù
moät xung Start cho quaù trình bieán ñoåi môùi.
Töø ñoù ta thaáy raèng boä bieán ñoåi loaïi naøy coù toác ñoä raát chaäm
(ñoä phaân giaûi caøng cao thì caøng chaäm) vaø coù thôøi gian bieán ñoåi
phuï thuoäc vaøo ñoä lôùn cuûa ñieän aùp caàn bieán ñoåi.
1.1.2. Boä bieán ñoåi AD xaáp xæ lieân tieáp
Ñaây laø boä bieán ñöôïc duøng roäng raõi nhaát trong caùc boä bieán ñoåi
AD. Noù coù caáu taïo phöùc taïp hôn boä bieán ñoåi AD theo haøm doác
nhöng toác ñoä bieán ñoåi nhanh hôn raát nhieàu. Hôn nöõa, thôøi gian
bieán ñoåi laø moät soá coá ñònh khoâng phuï thuoäc giaù trò ñieän aùp
ñaàu vaøo.

29
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Sô ñoà maïch vaø giaûi thuaät nhö sau :


ñaàu vaøo
analog START
vA +
Clock Xoùa taát caû caùc
OPAMP
bit
- Baét ñaàu ôû MSB
So saùnh Ñôn vò Start
ñieàu khieån
EOC Set bit = 1
...
Ñuùn
VAX > VA g Clear bit = 0
Thanh ghi
MSB Sai?
LSB Ñeán Sai
... Xong heát
bit
thaáp bit Ñuùn
?
Boäâ bieán ñoåi keá g
DA Quaù trình bieán
ñoåi keát thuùc
vAX vaø giaù trò bieán
ñoåi naèm trong
thanh
ENDghi

Sô ñoà maïch töông töï nhö boä bieán


ñoåi AD theo haøm doác nhöng khoâng
duøng counter cung caáp giaù trò cho
boä bieán ñoåi DA maø duøng moät
thanh ghi. Ñôn vò ñieàu khieån söûa ñoåi
töøng bit cuûa thanh ghi naøy cho ñeán MSB
C
khi coù giaù trò analog xaáp xæ aùp vaøo
theo moät ñoä phaân giaûi cho tröôùc. B

A
1.2. Boä bieán ñoåi Flash AD
Boä bieán ñoåi loaïi naøy coù toác ñoä
nhanh nhaát vaø cuõng caàn nhieàu linh
kieän caáu thaønh nhaát.
Coù theå laøm moät pheùp so saùnh:
flash AD 6-bit caàn 63 OPAMP, 8-bit
Aùp analog ñaàu
caàn 255 OPAMP, vaø 10-bit caàn 1023 vaøo

30
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

OPAMP. Vì leõ ñoù maø boä bieán ñoåi AD loaïi naøy bò giôùi haïn bôûi
soá bit, thöôøng laø 2 ñeán 8-bit.
Ví duï moät flash AD 3-bit :
Maïch treân coù ñoä phaân giaûi laø 1V, caàu chia ñieän aùp thieát laäp
neân caùc ñieän aùp so saùnh (7 möùc töông öùng 1V, 2V, …) vôùi ñieän
aùp caàn bieán ñoåi.

Ñaàu ra cuûa caùc OPAMP ñöôïc noái ñeán moät priority encoder vaø ñaàu
ra cuûa noù chính laø giaù trò digital xaáp xæ cuûa ñieän aùp ñaàu vaøo.
Caùc boä bieán ñoåi coù nhieàu bit hôn deã daøng suy ra theo maïch treân.

1.3. Boä bieán ñoåi AD theo haøm doác daïng leân xuoáng (tracking
ADC)
Boä bieán ñoåi loaïi naøy ñöôïc caûi tieán töø boä bieán ñoåi AD theo haøm
doác. Ta thaáy raèng toác ñoä cuûa boä bieán ñoåi AD theo haøm doác khaù
chaäm bôûi vì counter ñöôïc reset veà 0 moãi khi baét ñaàu quaù trình bieán
ñoåi. Giaù trò VAX laø 0 luùc baét ñaàu vaø taêng daàn cho ñeán khi vöôït
qua VA. Roõ raøng laø thôøi gian naøy laø hoaøn toaøn laõng phí bôûi vì
ñieän aùp analog thay ñoåi moät caùch lieân tuïc, giaù trò sau naèm trong
laân caän giaù trò tröôùc.
Boä bieán ñoåi AD theo haøm doác daïng leân xuoáng duøng moät counter
ñeám leân/xuoáng thay cho counter chæ ñeám leân ôû boä bieán ñoåi AD
theo haøm doác vaø khoâng reset veà 0 khi baét ñaàu. Thay vì vaäy, noù
giöõ nguyeân giaù trò cuûa laàn bieán ñoåi tröôùc vaø taêng giaûm tuøy
thuoäc vaøo giaù trò ñieän aùp môùi so vôùi giaù trò ñieän aùp cuõ.

1.4. Boä bieán ñoåi AD duøng chuyeån ñoåi aùp sang taàn soá
Boä bieán ñoåi loaïi naøy ñôn giaûn hôn boä bieán ñoåi AD duøng bieán
ñoåi DA. Thay vì vaäy noù duøng moät boä dao ñoäng tuyeán tính ñöôïc
ñieàu khieån bôûi ñieän aùp ñeå taïo ra taàn soá töông öùng vôùi aùp vaøo.
Taàn soá naøy ñöôïc daãn ñeán moät counter ñeám trong moät thôøi
khoaûng coá ñònh vaø khi keát thuùc khoaûng thôøi gian coá ñònh naøy,
giaù trò ñeám tyû leä vôùi ñieän aùp vaøo.
Phöông phaùp naøy ñôn giaûn nhöng khoù ñaït ñöôïc ñoä chính xaùc cao
bôûi vì khoù coù theå thieát keá boä bieán ñoåi aùp sang taàn soá coù ñoä
chính xaùc hôn 0,1%.
Moät trong nhöõng öùng duïng chính cuûa loaïi naøy laø duøng trong moâi
tröôøng coâng nghieäp coù nhieãu cao. Ñieän aùp ñöôïc chuyeån töø
transducer veà maùy tính ñieàu khieån thöôøng raát nhoû, neáu truyeàn tröïc

31
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

tieáp veà thì seõ bò nhieãu taùc ñoäng ñaùng keå vaø giaù trò thu ñöôïc haàu
nhö khoâng coøn ñuùng nöõa. Do ñoù, ngöôøi ta duøng boä bieán ñoåi aùp
sang taàn soá ngay taïi transducer vaø truyeàn caùc xung veà cho maùy tính
ñieàu khieån ñeám neân ít bò aûnh höôûng bôûi nhieãu.

1.5. Boä bieán ñoåi AD theo tích phaân hai ñoä doác
Boä bieán ñoåi loaïi naøy laø moät trong nhöõng boä coù thôøi gian bieán
ñoåi chaäm nhaát (thöôøng laø töø 10 ñeán 100ms) nhöng coù lôïi ñieåm laø
giaù caû töông ñoái reû khoâng duøng caùc thaønh phaàn chính xaùc nhö
boä bieán ñoåi AD hoaëc boä bieán ñoåi aùp sang taàn soá.
Nguyeân taéc chính laø döïa vaøo quaù trình naïp vaø xaû tuyeán tính cuûa
tuï vôùi doøng haèng. Ñaàu tieân, tuï ñöôïc naïp trong moät khoaûng thôøi
gian xaùc ñònh töø doøng haèng ruùt ra töø ñieän aùp vaøo vA. Vì vaäy, ôû
cuoái thôøi ñieåm naïp, tuï seõ coù moät ñieän aùp tyû leä vôùi ñieän aùp
vaøo. Cuõng vaøo luùc naøy, tuï ñöôïc xaû tuyeán tính vôùi moät doøng
haèng ruùt ra töø ñieän aùp tham chieáu chính xaùc v ref. Khi ñieän aùp treân
tuï giaûm veà 0 thì quaù trình xaû keát thuùc. Trong suoát khoaûng thôøi
gian xaû naøy, moät taàn soá tham chieáu ñöôïc daãn ñeán moät counter vaø
baét ñaàu ñeám. Do khoaûng thôøi gian xaû tyû leä vôùi ñieän aùp treân tuï
luùc tröôùc khi xaû neân ôû cuoái thôøi ñieåm xaû, counter seõ chöùa moät
giaù trò tyû leä vôùi ñieän aùp treân tuï tröôùc khi xaû, töùc laø tyû leä vôùi
ñieän aùp vaøo vA.
Ngoaøi giaù thaønh reû thì boä bieán ñoåi loaïi naøy coøn coù öu ñieåm
choáng nhieãu vaø söï troâi nhieät. Tuy nhieân thôøi gian bieán ñoåi chaäm
neân ít duøng trong caùc öùng duïng thu thaäp döõ lieäu ñoøi hoûi thôøi
gian ñaùp öùng nhanh. Nhöng ñoái vôùi caùc quaù trình bieán ñoåi chaäm
(coù quaùn tính lôùn) nhö loø nhieät thì raát ñaùng ñeå xem xeùt ñeán

2. Thieát keá boä chuyeån ñoåi ADC:


2.1 Giôùi thieäu ADC 0809:
Boä ADC 0809 laø moät thieát bò CMOS tích hôïp vôùi moät boä chuyeån
ñoåi töø töông töï sang soá 8 bit, boä choïn 8 keânh vaø moät boâ logic ñieàu
khieån töông thích. Boä chuyeån ñoåi AD 8 bit naøy duøng phöông phaùp
chuyeån ñoåi xaáp xæ tieáp. Boä choïn keânh coù theå truy xuaát baát keành naøo
trong caùc ngoõ vaøo
IN töông
2
IN IN töïAmoät
1 0
B caùnh
C ALEñoäc
2 2laäp.
2 -1
2 -2 -3
2 REF 2 -4 -8 -6

Thieát bò naøy loaïi tröø khaû naêng caàn thieát ñieàu chænh ñieåm 0 beân
ngoaøi vaø khaû naêng ñieàu chænh tæ soá laøm troøn ADC 0809 deã daøng giao
tieáp vôùi caùc boä28
vi xöû lyù. 15
* Sô ñoà chaân ADC 0809:
ADC0809

1 32 14

IN3 IN4 IN5 IN6 IN7 START EOC 2-5 OE CLK VCC REF GND 2-7
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

* YÙ nghóa caùc chaân:


. IN0 ñeán IN7 : 8 ngoõ vaøo töông töï.
. A, B, C : giaûi maõ choïn moät trong 8 ngoõ vaøo
. Z-1 ñeán Z-8 : ngoõ ra song song 8 bit
. ALE : cho pheùp choát ñòa chæ
. START : xung baét ñaàu chuyeån ñoåi
. CLK : xung ñoàng hoà
. REF (+): ñieän theá tham chieáu (+)
. REF (-) : ñieän theá tham chieáu (-)
. VCC : nguoàn cung caáp
* Caùc ñaëc ñieåm cuûaADC 0809:
. Ñoä phaân giaûi 8 bit
. Toång sai soá chöa chænh ñònh  ½ LSB;  1 LSB
. Thôøi gian chuyeån ñoåi: 100s ôû taàn soá 640 kHz
. Nguoàn cung caáp + 5V
. Ñieän aùp ngoõ vaøo 0 – 5V
. Taàn soá xung clock 10kHz – 1280 kHz
. Nhieät ñoä hoaït ñoäng - 40oC ñeán 85oC
. Deã daøng giao tieáp vôùi vi xöû lyù hoaëc duøng rieâng
. Khoâng caàn ñieàu chænh zero hoaëc ñaày thang
* Nguyeân lyù hoaït ñoäng:
ADC 0809 coù 8 ngoõ vaøo töông töï, 8 ngoõ ra 8 bit coù theå choïn 1 trong 8
ngoõ vaøo töông töï ñeå chuyeån ñoåi sang soá 8 bit.
Caùc ngoõ vaøo ñöôïc choïn baèng caùch giaûi maõ. Choïn 1 trong 8 ngoõ
vaøo töông töï ñöôïc thöïc hieän nhôø 3 chaân ADD A , ADDB , ADDC nhö baûng
traïng thaùi sau:

A B C Ngoõ vaøo ñöôïc


choïn
0 0 0 IN0
0 0 1 IN1
0 1 0 IN2
0 1 1 IN3

33
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

1 0 0 IN4
1 0 1 IN5
1 1 0 IN6
1 1 1 IN7

Sau khi kích xung start thì boä chuyeån ñoåi baét ñaàu hoaït ñoäng ôû caïnh
xuoáng cuûa xung start, ngoõ ra EOC seõ xuoáng möùc thaáp sau khoaûng 8 xung
clock (tính töø caïnh xuoáng cuûa xung start). Luùc naøy bit cô troïng soá lôùn
nhaát (MSB) ñöôïc ñaët leân möùc 1, taát caû caùc bit coøn laïi ôû möùc 0, ñoàng
thôøi taïo ra ñieän theá coù giaù trò Vref/2, ñieän theá naøy ñöôïc so saùnh vôùi
ñieän theá vaøo in.
+ Neáu Vin > Vref/2 thì bit MSB vaãn ôû möùc 1.
+ Neáu Vin < Vref/2 thì bit MSB vaãn ôû möùc 0.
Töông töï nhö vaäy bit keá tieáp MSB ñöôïc ñaët leân 1 vaø taïo ra ñieän theá coù
giaù trò Vref/4 vaø cuõng so saùnh vôùi ñieän aùp ngoõ vaøo Vin. Quaù trình cöù
tieáp tuïc nhö vaäy cho ñeán khi xaùc ñònh ñöôïc bit cuoái cuøng. Khi ñoù chaân
EOC leân möùc 1 baùo cho bieát ñaõ keát thuùc chuyeån ñoåi.
Trong suoát quaù trình chuyeån ñoåi chaân OE ñöôïc ñaët ôû möùc 1, muoán ñoïc
döõ lieäu ra chaân OE xuoáng möùc 0.
Trong suoát quaù trình chuyeån ñoåi neáu coù 1 xung start taùc ñoäng thì ADC
seõ ngöng chuyeån ñoåi.
Maõ ra N cho moät ngoõ vaøo tuøy yù laø moät soá nguyeân.

256.(VIN  Vref (  ) )
N 
Vref (  )  Vref (  )

Trong ñoù Vin : ñieän aùp ngoõ vaøo heä so saùnh.


Vref(+): ñieän aùp taïi chaân REF(+).
Vref(-): ñieän aùp taïi chaân REF(-).
Vin
Neáu choïn Vref(-) = 0 thì N = 256. V
ref ( )

Vref(+) = Vcc = 5V thì ñaày thang laø 256.


- Giaù trò böôùc nhoû nhaát
5
1 LSB = = 0,0196 V/byte
2 1
8

Vaäy vôùi 256 böôùc Vin = 5V.


Aùp vaøo lôùn nhaát cuûa ADC 0809 laø 5V.
 Bieåu ñoà thôøi gian cuûa ADC 0809.

34
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Hình 7.2.1 Bieåu ñoà thôøi gian cuûa ADC 0809

2.2 Maïch taïo xung clock cho ADC 0809:


Söû duïng maïch dao ñoäng duøng caùc coång not ñeå taïo dao ñoäng cho ADC
nhö sau:

Vcc
IK IK
10K

560P
1
Taàn soá dao ñoäng cuûa maïch laø f =
3RC
Taàn soá dao ñoäng chuaån laø 600 kHz
1
Suy ra 640 =
3RC
Vôùi R töø 100 ñeán vaøi k choïn R =1 k  C = 500 PF.

2.Chöông trình ñeå vi xöû lyù nhaän boä ADC:


#INCLUDE "8051EQU.INC" ;include predefined constants
VARIABLES AND CONSTANTS

35
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

PORT USAGE
Port1 - ADC Result (Input)
P3.5 - ADC Complete (Input Active Low)
P3.4 - Start ADC (Output Active Low)
P3.3 - Load values to output (Output Active Low)

RESET ;reset routine


.ORG 0H ;locate routine at 00H
AJMP START ;jump to START

INTERRUPTS (not used) ;place interrupt routines at appropriate


;memory locations
.ORG 03H ;external interrupt 0
RETI
.ORG 0BH ;timer 0 interrupt
RETI
.ORG 13H ;external interrupt 1
  RETI
.ORG 1BH ;timer 1 interrupt
RETI
.ORG 23H ;serial port interrupt
  RETI
.ORG 25H ;locate beginning of rest of program

INITIALIZE: ;set up control registers

MOV TH1, #0FDH ;Set up for 9600 baud rate


MOV SCON, #01010000B ;Mode = 8 bit UART
MOV TMOD, #00100001B ;Sets Timer1 to 8 bit auto reload
MOV TCON, #01000000B ;Turns Timer1 on
RET

Real code starts below.


{This routine transmits the value in A through the serial port.}

SEND:
CLR TI ;Clear Timer1 Flag
MOV SBUF, A ;Transmit Byte
WAIT:
JNB TI, WAIT ;Wait for transmission to be completed.
RET

36
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

START: ;Main program (on power up, program jumps to


this point)

MOV SP, #030H ;Set Stack Pointer to 30H


ACALL INITIALIZE ;Set up control registers
ORL P1,#0FFH ;Make Port 1 an input port
SETB P3.5 ;Make P3.5 an Input pin
LOOP:
CLR P3.4 ;Prepare for Analog to Digital Conversion
SETB P3.3 ;Set Read to High
SETB P3.4 ;Start Analog to Digital Conversion
WAITFORDONE:
JB P3.5, WAITFORDONE ;Wait until Conversion is complete

CLR P3.3 ;Load 8 bit value to ADC0809 Outputs


MOV A,P1 ;Read ADC0809 Output
ACALL SEND ;Send Value to PC
SETB P3.3 ;Disable ADC0809 Output
AJMP LOOP ;Go to LOOP(jump back to point labeled
LOOP)

.END ;End program

3.Sô löôïc veà boä bieán ñoåi DAC:

DAC LTT

H×nh 5.1:S¬ ®å nguyªn t¾c biÓu diÔn qu¸ tr×nh t×m l¹i tÝn hiÖu tîng mét tÝn hiÖu sè

ChuyÓn ®æi sè – t¬ng tù kh«ng ph¶i lµ phÐp nghÞch ®¶o cña chuyÓn ®æi t¬ng tù –
sè, v× kh«ng thÓ thùc hiÖn ®îc phÐp nghÞa ®¶o cña qu¸ tr×nh lîng tö ho¸.
Qu¸ tr×nh chuyÓn ®æi sè – t¬ng tù ®¬n gi¶n h¬n qu¸ tr×nh chuyÓn ®æi t¬ng tù – sè rÊt
nhiÒu. V× vËy chuyÓn ®æi sè – t¬ng tù ®îc øng dông nhiÒu trong c¸c m¹ch chuyÓn
®æi t¬ng tù – sè.
§Ó lÊy ®îc tÝn hiÖu t¬ng tù tõ tÝn hiÖu sè, dïng s¬ ®å nguyªn t¾c trªn h×nh 5.1. Theo
s¬ ®å nµy th× qu¸ tr×nh chuyÓn ®æi sè – t¬ng tù lµ qu¸ tr×nh t×m l¹i tÝn hiÖu t¬ng tù
®· ®îc lÊy mÉu ®îc.TÝn hiÖu ®Çu ra lµ tÝn hiÖu rêi r¹c theo thêi gian. TÝn hiÖu nµy
®îc ®a qua bé läc th«ng thÊp lý tëng. Trªn ®Çu ra bé läc cã tÝn hiÖu Ua biÕn thiªn liªn
tôc theo thêi gian lµ tÝn hiÖu néi suy cña Um. ë ®©y bé läc th«ng thÊp ®ãng vai trß nh
mét bé néi suy.

37
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Mét sè ph¬ng ph¸p chuyÓn ®æi sè – t¬ng tù:


- Ph¬ng ph¸p thang ®iÖn trë
- Ph¬ng ph¸p m¹ng ®iÖn trë
- Ph¬ng ph¸p m· ho¸ Shannon – Rack

3.1 Giíi thiÖu vÒ DAC 0830:

H×nh 1: S¬ ®å ch©n DAC 0830


Chøc n¨ng c¸c ch©n cña Dac 0830:
ILE: Kho¸ ®Çu vµo
XFRE: §iÒu khiÓn tÝn hiÖu truyÒn tÝch cùc ë møc thÊp
CS : lùa chän vá
WR1,WR2: ®äc d÷ liÖu
DI0 – DI7: ®Çu vµo sè
IOUT1,IOUT2: ®Çu ra t¬ng tù
GND: nèi ®Êt
Vcc: ®iªn ¸p mét chiÒu 15 v

3.2:CÊu tróc bªn trong cña DAC 0830:


- DAC 0830 bao gåm 2 thanh ghi néi. Thanh ghi ®Çu lµ thanh ghi chèt.
Trong ®ã thanh ghi thø 2 kÕt nèi tíi thang chuyÓn ®æi. Hai bé chèt cho phÐp 1
byte ®îc chèt trong khi ®ã byte kia lu«n thay ®æi.Trong nhiÒu trêng hîp chóng ta
bá chèt ®Çu vµ dïng chèy 2 ®Ó biÕn ®æi d÷ liÖu. §iÒu nayd thùc hiÖn ® îc khi
kÕt nèi møc logic 1 tõ ILE vµ logic 0 tõ CS. C¶ 2 bé chèt nµy ®Òu n»m trong
DAC0830.

38
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

3.3:Giao tiếp vi xử lí với DAC 0830:

39
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Ch¬ng 4
Giíi thiÖu mµn h×nh tinh thÓ láng LCD
c¸ch ghÐp nèi víi vi xö lý

I/ KiÕn thøc chung vÒ LCD (Liquid Crystals Display).


1.Mµn h×nh tinh thÓ láng (LCD) lµ g× vµ ph¹m vi øng dông?
_ Ngµy nay trong lÜnh vùc th«ng tin vµ gi¶i trÝ, viÖc dïng mµn h×nh
èng tia ca tèt truyÒn thèng (CRT) ®ang dÇn ®îc thay thÕ b»ng viÖc sö
dông mµn h×nh tinh thÓ láng (LCD). V× LCD cã nhiÒu u ®iÓm vît tréi
nh : §é dµy mµn h×nh nhá h¬n rÊt nhiÒu , KÝch thíc ®a d¹ng tõ lo¹i mµn
h×nh nhá tíi mµn h×nh cùc lín, Tiªu thô Ýt n¨ng lîng vµ kh«ng nguy hiÓm
b»ng CRT.

LCD dïng trong th«ng tin gi¶i trÝ


(Mµn h×nh Tivi, m¸y vi tÝnh)

LCD dïng trong lÜnh vùc ®iÒu


khiÓn

LCD dïng trong truyÒn th«ng


(Mµn h×nh ®iÖn tho¹i, hiÓn thÞ cña hÖ
thèng chuyªn dông)

ë phÇn nµy chóng ta chØ xÐt tíi LCD lo¹i nhá vµ viÖc dïng LCD ®Ó
hiÓn thÞ cña hÖ thèng chuyªn dông.

40
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

2. C¬ së vËt lý cña LCD.


_ §óng nh tªn gäi cña nã, LCD (Liquid Crystals Display ) - Mµn
h×nh tinh thÓ láng - , c¬ së vËt lý ®Ó LCD cã thÓ hiÓn thÞ ®îc th«ng
tin , h×nh ¶nh chÝnh lµ do ®Æc tÝnh cña vËt liÖu chÕ t¹o nªn LCD, tøc
lµ Liquid Crystals (th¹ch anh láng).
_ §Æc tÝnh cña Liquid Crystals :
Thø nhÊt:
Liquid Crystals lµ vËt liÖu trong suèt võa cã tÝnh chÊt cña chÊ r¾n,l¹i
võa cã tÝnh chÊt cña chÊt láng (chÝnh ®iÖu nµy ®· lam nªn sù kh¸c
biÖt):
+ ¸nh s¸ng truyÒn qua Liquid Crystals theo gãc nghiªng cña c¸c ph©n
tö , vµ ¸nh s¸ng bÞ ph¶n x¹ trë l¹i. §©y chÝnh lµ tÝnh chÊt cña chÊt r¾n.
+ Khi Liquid Crystals ®îc tÝch ®iÖn, nã sÏ bÞ thay ®æi gãc nghiªng
cña c¸c phÇn tö, vµ kÕt qu¶ lµ ¸nh s¸ng cã thÓ truyÒn xuyªn qua. §©y
chÝnh lµ tÝnh chÊt cña chÊt láng.
Thø hai :
LCD gåm 2 bÒ mÆt d¹ng r·nh , gi÷a 2 bÒ mÆt nµy lµ 1 líp Th¹ch Anh
láng (Liquid Crystal).
Tríc hÕt nãi vÒ ®Æc tÝnh 2 bÒ mÆt r·nh : trªn mâi bÒ mÆt cã c¸c r·nh .
C¸c r·nh trªn 1 mÆt song song víi nhau vµ vu«ng gãc víi c¸c r·nh trªn mÆt
cßn l¹i (theo híng b¾c-nam/ t©y-®«ng).
B©y giê nãi vÒ ®Æc tÝnh cña líp Liquid Cristal (ë gi÷a) : ¸nh s¸ng truyÒn
qua líp nµy theo gãc cña c¸c phÇn tö, vµ v× thÕ ¸nh s¸ng bÞ xo¾n 90 ®é
khi xuyªn qua líp Liquid Cristal nµy. Nhng khi ph©n cùc cho líp Liquid
Cristal, c¸c ph©n tö ®îc s¾p xÕp l¹i theo ph¬ng ngang, vµ v× thÕ mµ ¸nh
s¸ng cã thÓ truyÒn qua líp Liquid Cristal mµ kh«ng bÞ xo¾n. (H×nh 2)
Thø ba :
VÒ tÝnh chÊt cña líp läc ¸nh s¸ng ®¬n cùc. Chóng ta ®Òu biÕt r»ng
¸nh s¸ng lµ sãng truyÒn theo nhiÒu ph¬ng kh¸c nhau. Líp läc ®¬n cùc
thùc ra chØ lµ tËp hîp c¸c ®êng th¼ng trong suèt song song – ChÝnh lµ 2
bÒ mÆt r·nh cña LCD ®· nãi ë trªn-. Sau khi ®i qua líp läc ®¬n cùc, ¸nh
s¸ng chØ cßn thµnh phÇn sãng cã ph¬ng trïng víi ph¬ng c¸c ®êng th¼ng
trªn líp läc cùc. LCD cã 2 líp läc ®¬n cùc cã ph¬ng läc vu«ng gãc nhau.
V× vËy, sau khi ra khái c¶ 2 líp läc ®¬n cùc ¸nh s¸ng bÞ chÆn l¹i hoµn
toµn. ¸nh s¸ng chØ cã thÓ truyÒn qua c¶ 2 líp läc ®¬n cùc nÕu sau khi
qua líp läc thø nhÊt ¸nh s¸ng ®îc xo¾n 1 gãc 90 ®é råi míi ®i qua líp läc

41
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

thø 2. ThËt may, viÖc xo¾n ¸nh s¸ng hoµn toµn cã thÓ thùc hiÖn ®îc
theo tÝnh chÊt líp Liquid Cristal ®· nãi ë trªn.

Cã thÓ tæng kÕt ®êng ®i cña ¸nh s¸ng nh sau:


§Ó cã 1 ®iÓm tèi trªn LCD: ¸nh s¸ng ph¸t ra tõ bªn trong LCD sÏ ®i
qua bÒ mÆt r·nh thø nhÊt (líp läc ®¬n cùc), sau ®ã ¸nh s¸ng ®i qua líp
Liquid Cristal (líp nµy ®îc ph©n cùc nªn ¸nh s¸ng qua nã mµ kh«ng bÞ
xo¾n),  sau ®ã ¸nh s¸ng qua bÒ mÆt r·nh thø 2líp ph©n cùc thø 2 (líp
läc ®¬n cùc), ¸nh s¸ng kh«ng lã ra ®îc khái líp nµy(bÞ chÆn l¹i hoµn
toµn)  ta thÊy 1 ®iÓm tèi trªn mµn h×nh LCD. (H×nh 3)
§Ó cã 1 ®iÓm s¸ng trªn LCD: qu¸ tr×nh ®i t¬ng tù nhng kh¸c ë chç
¸nh s¸ng qua líp Liquid Cristal kh«ng ®îc ph©n cùc nªn ¸nh s¸ng bÞ xo¾n
90 ®é, nhê thÕ mµ ®i qua ®îc bÒ mÆt r·nh thø 2 (líp läc ®¬n cùc)  Ta
thÊy 1 ®iÓm s¸ng trªn LCD. (H×nh 3)

H×nh 2 H×nh 3

42
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

II/ XÐt LCD cô thÓ Hitachi HD44780

LCD hiÓn thÞ ®îc 2 hµng mçi hµng hiÓn thÞ ®îc 16 ký tù (LCD cã 14
ch©n) nh ®îc minh ho¹ trªn h×nh.
Th«ng sè cña LCD :
+KÝch thíc hiÓn thÞ : 16 ký tù x 2 dßng.
+Mµu hiÓn thÞ: ®en/tr¾ng
+ChÕ ®é giao tiÕp : 8 bÝt vµ 4 bÝt
+Cì ch÷ hiÓn thÞ : 5x7 hoÆc 5x10

1. CÊu tróc cña LCD


1a. Giíi thiÖu s¬ ®å ch©n LCD .
_ LCD cã tæng sè 14 ch©n chia lµm 3 nhãm:
Nhãm 1: (3 ch©n) CÊp nguån VDD, VSS : cÊp 5V, 0V
VEE: thay ®æi ®iÖn ¸p ®Ó thay ®æi ®é t¬ng
ph¶n
Nhãm 2: (8 ch©n) Vµo ra th«ng tin víi V§K : Tõ ch©n D0-D7
Nhãm 3 : (3 ch©n) §iÒu khiÓn viÖc vµo ra th«ng tin : E,RS,R/W
E :(bËt /t¾t ) (cho phÐp/ kh«ng cho phÐp trao ®æi th«ng tin víi V§K
)
RS :(lo¹i th«ng tin trao ®æi)Th«ng tin trao ®æi lµ lÖnh ®iÒu khiÓn
hay µ d÷ liÖu ®Ó hiÓn thÞ
R/W : (híng truyÒn cña th«ng tin) ®äc tr¹ng th¸i tõ LCD hay th«ng
tin do V§K göi vµo LCD ®Ó hiÓn thÞ

43
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Cô thÓ tªn gäi vµ m« t¶ chøc n¨ng c¸c ch©n ®îc tæng kÕt trong b¶ng sau:

Interface Pin Connections


Ch© Ký
n sè hiÖ Tªn M« t¶ chøc n¨ng
u
1 VSS CÊp nguån 0V (GND)
2 VDD CÊp nguån Nèi víi d¬ng nguån (+4.5V~+5.5V)
3 VEE Contrast
®iÒu chØnh ®iÖn ¸p ch©n nµy sÏ t¨ng gi¶m ®é t¬ng
ph¶n cña LCD. cho nªn nã thêng ®îc nèi víi biÕn trë.
NÕu RS=0 : LCD nhËn lÖnh tõ V§K
4 RS Chän thanh ghi
NÕu RS=1: LCD nhËn d÷ liÖu tõ V§K ®Ó hiÓn thÞ
5 RW Read/Write Chän chøc n¨ng ghi/ ®äc
RS=1 : chän chøc n¨ng ®äc d÷ liÖu tõ LCD vµo V§K
RS=0 : chän chøc n¨ng ghi d÷ liÖu tõ V§Kvµo LCD
®Ó hiÓnt thÞ
Cho phÐp/ ko cho phÐp LCD trao ®æi th«ng tin víi
6 E Read Write enable
V§K.
ChØ khi E chuyÓn tõ 10 th× tÝn hiÖu ë c¸c ch©n
D0-D7 míi ®îc ®a vµo LCD.
7 D0

8 D1

9 D2 Data bus 0-7


10 D3 8 ch©n nµy ®îc nèi víi
11 D4 V§K ®Ó vµo/ra th«ng
tin

12 D5

13 D6
14 D7

_ Tõ nh÷ng ®Æc ®iÓm vµ chøc n¨ng ®· ®îc ®Ò cËp ë trªn ta cã thÓ


®i tíi viÖc h×nh thµnh viÖc ghÐp nèi cña LCD víi vi ®iÒu khiÓn nh sau:

44
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Nh trªn h×nh minh ho¹ ta cã thÓ thÊy c¸c ch©n D0-D3 lµ ®êng tÝn hiÖu
2 chiÒu (®Ó trao ®æi th«ng tin Vi ®iÒu khiÓn vµ LCD). 3 ch©n ®iÒu
khiÓn RS, R/W, E lµ ch©n ®a tÝn hiÖu ®iÒu khiÓn tõ Vi ®iÒu khiÓn
tíi LCD nªn nã chØ lµ ®êng tÝn hiÖu 1 chiÒu th«i.

V× ch©n Contrast (VEE) ®iÒu chØnh ®é t-


¬ng ph¶n cña LCD nªn ta cÊp nguån cho nã
th«ng qua biÕn trë (nh h×nh vÏ)

45
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

1b. CÊu tróc bé nhí trong LCD.


Mµn hiÓn thÞ cña LCD nãi chung cã thÓ lªn tíi h¬n 40 ký tù trªn mét
dßng vµ mét mµn cã thÓ cã tíi 4 dßng.Trong ®ã cã mét bé RAM ®Ó chøa
m· 80 ký tù gäi lµ bé nhí DDRAM(display data ram),mµn hiÓn thÞ cã
thÓ dÞch c¶ mµn ®Ó quan s¸t ®îc c¸c ký tù kh¸c.
Bé ký tù hiÓn thÞ : Bé hiÓn thÞ cã thÓ hiÓn thÞ ®îc c¸c ký tù ®· ®îc
lËp tr×nh tríc hoÆc c¸c ký tù do ngêi dïng ®Þnh nghÜa.Trong bé ®iÒu
khiÓn hiÓn thÞ cã mét bé nhí ROM dïng ®Ó ph¸t ký tù, trong Rom nµy
chøa 192 ký tù,khi cÇn chän nh÷ng ký tù nµy th× nã ®îc chän th«ng qua
tõng m· cña nã, cã tíi 96 m· ký tù ASCII, 64 m· ký tù tiÕng NhËt, 32 ký tù
®Æc biÖt kh¸c. Trong bé ®iÒu khiÓn LCD còng cã mét bé RAM gäi lµ
CGRAM(character generator ram) trong bé nhí nµy lu 8 ký tù do ngêi
dïng ®Þnh nghÜa, c¸c ký tù ®Çu tiªn ph¶i viÕt vµo CGRAM tríc råi sau
®ã míi hiÓn thÞ ra mµn hiÓn thÞ ®îc.

2. TËp lÖnh cña LCD.


2a. Kh¶ n¨ng hiÓn thÞ cña LCD.
LCD cã kh¶ n¨ng hiÓn thÞ rÊt linh ho¹t
_ ThiÕt lËp chÕ ®é hiÓn thÞ :
HiÓn thÞ trªn 1 dßng hay c¶ 2 dßng.
Chän cì ch÷ hiÓn thÞ (5x7 hay5x10).
Chän kiÓu con trá mµn h×nh (cã/kh«ng g¹ch ch©n , cã/kh«ng
nhÊp nh¸y)
_ ThiÕt lËp kiÓu trao ®æi th«ng tin :
Trao ®æi th«ng tin víi Vi ®iÒu khiÓn dïng 4 bit hay 8 bÝt.
_ Tr×nh bµy néi dung hiÓn thÞ.
HiÓn thÞ ký tù trªn LCD.
HiÓn thÞ ký tù ë vÞ trÝ bÊt kú trªn LCD.
T¹o ch÷ ch¹y trªn LCD
HiÓn thÞ ký tù , biÓu tîng , h×nh vÏ tuú ý ngêi dïng trªn LCD.

46
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

2b. TËp lÖnh cña LCD


§Ó thùc hiÖn ®îc c¸c kh¶ n¨ng hiÓn thÞ ë trªn, ta cÇn ra lÖnh cho
LCD thùc hiÖn c¸c thao t¸c, tøc lµ ph¶i sö dông tËp lÖnh cña LCD.

47
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Binary
Command Hex
D7 D6 D5 D4 D3 D2 D1 D0
Clear Display 0 0 0 0 0 0 0 1 01
(Xo¸ mµn h×nh)
Display & Cursor Home
0 0 0 0 0 0 1 x 02 or 03
Character Entry Mode
0 0 0 0 0 1 1/D S 04 to 07
(ChÕ ®é nhËn d÷ liÖu)
Display On/Off & Cursor
0 0 0 0 1 D U B 08 to 0F
(bËt/t¾t LCD vµ kiÓu con trá)
Display/Cursor Shift
0 0 0 1 D/C R/L x x 10 to 1F
(DÞch LCD vµ con trá)
10 /
Function Set 0 0 1 8/4 2/1 x x 20 to 3F
7
Set CGRAM Address 0 1 A A A A A A 40 to 7F
Set Display Address 1 A A A A A A A 80 to FF
1 / D: 1=Increment*, 0=Decrement 1=Display shift on, R / L: 8 / 4: 1=Right shift, 0=Left shift 1=8-bit interface*,
S: 0=Off* 0=4-bit interface

D: 1=Display on, 0=Off* 2 / 1: 1=2 line mode, 0=1 line mode*


1=Cursor underline on, 0=Off* 1=Cursor blink on, 10 / 7: 1=5x10 dot format, 0=5x7 dot format*
U: B:
0=Off*
D / C: 1=Display shift, 0=Cursor move x = Don't care * = Initialization settings

Chó thÝch b¶ng lÖnh:


Chøc n¨ng Chó thÝch
hiÖu
X bÝt nhÞ ph©n (0,1)tuú ý
1/D §Þa chØ con trá 1= tù ®éng t¨ng; 0= tù ®éng gi¶m
DÞch con trá sau khi hiÓn Cã (1); Kh«ng (0)
S
thÞ
D =1: bËt LCD; =0: t¾t LCD
U Con trá ®îc g¹ch ch©n Cã (1); Kh«ng (0)
B Con trá nhÊp nh¸y Cã (1); Kh«ng (0)
D/C DÞch chuyÓn Mµn h×nh (1); Con trá (0)
R/L ChiÒu dÞch chuyÓn Sang ph¶i (1); Sang tr¸i (0)
8/4 ChÕ ®é trao ®æi th«ng tin 8 bÝt (1); 4 bÝt (0)
2/1 Sè dßng hiÓn thÞ 2 dßng (1) ; 1 dßng (0)
10/7 Cì chò Cì 5x10 (1); Cì 5x7 (0)

_ C¸c lÖnh trªn chia lµm 3 nhãm :


Nhãm 1: C¸c lÖnh thiÕt lËp chÕ ®é hiÓn thÞ : Display On/Off &
Cursor , Function Set , Character Entry Mode .

48
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Nhãm 2: C¸c lÖnh ®iÒu khiÓn qu¸ tr×nh hiÓn thÞ (con trá vµ mµn
h×nh): Display & Cursor Home , Display On/Off & Cursor ,
Display/Cursor Shift, Set CGRAM Address,
Nhãm 3: LÖnh kiÓm tra tr¹ng th¸i cña LCD : Set Display Address

_ Trªn ®©y lµ tËp lÖnh cña LCD, c¸c m· lÖnh nµy sÏ ®îc ®a tõ Vi
®iÒu khiÓn vµo LCD qua 8 ®êng D0-D7. Muèn LCD nhËn vµ hiÓu c¸c
tÝn hiÒu ®a vµo nµy lµ lÖnh th× ph¶i sö dông ®óng Nhãm 3 ch©n §iÒu
khiÓn viÖc vµo ra th«ng tin : E,RS,R/W . Khi nµo LCD hiÓu tÝn hiÖu
®a vµo lµ d÷ liÖu, khi nµo lµ lÖnh lµ do sù kÕt hîp cña 3 ch©n nµy
quyÕt ®Þnh.

C¸c chÕ ®é vµo ra th«ng tin cña LCD (kÕt hîp c¸c ch©n E, RS,
R/W)
Cã 2 chÕ ®é ®a th«ng tin vµo LCD (tõ vi ®iÒu khiÓn): th«ng tin ®a
vµo lµ lÖnh; Th«ng tin ®a vµo lµ d÷ liÖu ®Ó hiÓn thÞ
Cã 1 chÕ ®é ®a th«ng tin ra khái LCD (vµo vi ®iÒu khiÓn) : ®äc
tr¹ng th¸i hiÖn hµnh cña LCD cho Vi ®iÒu khiÓn biÕt.
§iÒu khiÓn LCD lµ ph¶i sö dông linh ho¹t c¸c chÕ ®é nµy. ViÖc
quyÕt ®Þnh dïng chÕ ®é vµo ra th«ng tin nµo lµ do 3 ch©n E, RS,R/W
cña LCD quyÕt ®Þnh.
+ Ch©n E: quyÕt ®Þnh viÖc khi nµo chÊp nhËn th«ng tin ë c¸c ch©n
cßn l¹i : ®ã lµ khi tÝn hiÖu ë ch©n E chuyÓn møc tõ 1  0.
+ Ch©n RS quyÕt ®Þnh viÖc nhËn lÖnh hay d÷ liÖu. LÖnh (RS=0 );
D÷ liÖu (RS=1)
+ Ch©n R/W quyÕt ®Þnh chiÒu truyÒn d÷ liÖu . Vµo LCD(R/W=0);
Ra khái LCD (R/W=0).
Tæng hîp theo b¶ng sau:

C¸c chÕ ®é vµo/ra th«ng tin do RS, R/W quyÕt ®Þnh


RS R/W ChÕ ®é
0 0 LÖnh göi tõ Vi ®iÒu khiÓn vµo LCD
0 1 §äc cê bËn (D7) vµ vÞ trÝ con trá (D0-D6) cña LCD
1 0 D÷ liÖu göi tõ Vi ®iÒu khiÓn vµo LCD

VÝ dô muèn hiÓn thÞ 1 ch÷ c¸i A trªn LCD ta ph¶i lÇn lît qua c¸c chÕ
®é sau: CÊp nguån  §äc tr¹ng th¸i cña LCD xem LCD ®· s½n sµng cha
Göi lÖnh tõ Vi ®iÒu khiÓn vµo LCD ®Ó thiÕt lËp chÕ ®é hiÓn thÞ
 Göi m· cña ký tù cÇn hiÓn thÞ vµo LCD.

49
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

3. C¸c øng dông hiÓn thÞ trªn LCD.


PhÇn nµy sÏ sö dông tËp lÖnh cña LCD ®îc xÐt ë môc 2 ®Ó ®¹t ®îc môc
®Ých hiÓn thÞ trªn LCD kÕt hîp víi sö dông linh ho¹t Nhãm c¸c ch©n
®iÒu khiÓn vµo ra th«ng tin E, RS, R/W.
3a. ThiÕt lËp chÕ ®é hiÓn thÞ cho LCD.
_ PhÇn nµy sÏ øng dông c¸c lÖnh :
Binary
Command Hex
D7 D6 D5 D4 D3 D2 D1 D0
Clear Display 0 0 0 0 0 0 0 1 01
Display On/Off & Cursor 0 0 0 0 1 D U B 08 to 0F
Function Set 0 0 1 8/4 2/1 10 / 7 x x 20 to 3F

_ §Æt vÊn ®Ò :
Khi LCD modul ®îc Reset, ë tr¹ng th¸i ban ®Çu ngay khi ®îc cÊp
nguån mµn h×nh LCD cha cã g× ®îc hiÓn thÞ c¶. ThËm chÝ , lóc nµy
nÕu ta cho d÷ liÖu vµo ®Ó hiÓn thÞ 1 ký tù nµo ®ã th× LCD còng kh«ng
thÓ lµm ®îc. Bëi v× tríc tiªn LCD ph¶i nhËn ®îc lÖnh ®iÒu khiÓn tríc
khi nã cã thÓ hiÓn thÞ th«ng tin. LÖnh ®iÒu khiÓn mµ ta muèn nãi tíi
chÝnh lµ lÖnh cho LCD bËt chÕ ®é hiÓn thÞ vµ thiÕt lËp chÕ ®é hiÓn
thÞ cho LCD (VÝ dô: hiÓn thÞ trªn 1 hay 2 dßng, con trá hiÓn thÞ theo
d¹ng nµo..)

_ LÖnh Display On/Of and Cursor khi ®îc göi tíi LCD sÏ bËt chÕ
®é hiÓn thÞ cña LCD vµ ®ång thêi còng x¸c ®Þnh kiÓu con trá hiÓn
thÞ. NÕu bÝt D =1 sÏ bËt LCD (ngîc l¹i sÏ t¾t LCD). NÕu bÝt U=1 con
trá mµn h×nh sÏ ®îc g¹ch ch©n (vµ ngîc l¹i ). NÕu bÝt B=1 th× con trá sÏ
nhÊp nh¸y (vµ ngîc l¹i).
Tèt nhÊt nªn chän kiÓu con trá hiÓn thÞ lµ con trá nhÊp nh¸y vµ cã
g¹ch ch©n ®Ó tiÖn quan s¸t. Muèn vËy , ta sÏ göi tíi LCD m· lÖnh sau :
00001111($0F).
Cô thÓ c¸c thao t¸c nh sau :
RS ®Ó ë møc logic 0 (LCD ho¹t ®éng ë chÕ ®é nhËn lÖnh), R/W = 0
(truyÒn d÷ liÖu tõ vi ®iÒu khiÓu vµo LCD)  c¸c ®êng vµo D0-D7 ®îc
®Æt lµ: 00001111 ($0F))  Sau cïng ®Ó ch©n E cã 1 chuyÓn møc
“1”vÒ “0” ë møc cao (cho phÐp LCD nhËn d÷ liÖu). Sau khi c¸c thao t¸c
nµy ®îc thùc hiÖn, 1 con trá nhÊp nh¸y, cã g¹ch ch©n sÏ xuÊt hiªn ë gãc
bªn tr¸i mµn h×nh LCD .

50
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

_ LÖnh Function Set: NÕu muèn LCD hiÓn thÞ c¶ 2 dßng. Ta cã thÓ
dïng c©u lÖnh Function Set.LÖnh nµy cßn x¸c ®Þnh LCD trao ®æi th«ng
tin víi bªn ngoµi b»ng 4 ®êng hay 8 ®êng d÷ liÖu, ®é ph©n gi¶i 5x10 hay
5x7. NÕu bÝt 8/4 =1 th× LCD sÏ dïng 8 bÝt D0-D7 ®Ó trao ®æi th«ng
tin víi Vi ®iÒu khiÓn (nÕu =0 th× chØ dïng 4 bit th«i). NÕu bÝt 2/1=1
th× LCD sÏ hiÓn thÞ trªn c¶ 2 dßng (nÕu =0 th× chØ hiÓn thÞ trªn 1
dßng ). NÕu bÝt 10/7=1 mçi ký tù sÏ ®îc hiÓn thÞ víi cì ch÷ 5x10 (nÕu
=0 th× cì ch÷ 5x7).
VÝ dô : dïng 8 ®êng d÷ liÖu, hiÓn thÞ 2 dßng, ph©n gi¶i 5x7 th× ta sÏ
göi tíi LCD m· lÖnh sau: 00111000 ($38).
Thao t¸c cô thÓ:
®Ó RS =0, R/W=0  c¸c ®êng vµo D0-D7 ®îc ®Æt lµ: 00111000 ($38)
 ch©n E cã 1 chuyÓn møc “1”vÒ “0” ë møc cao (cho phÐp LCD nhËn
d÷ liÖu).

_ T¨ng ®é t¬ng ph¶n lªn 1 chót v× hiÖn giê ta ®ang hiÓn thÞ b»ng c¶
2 dßng cña LCD. TiÕp theo ®©y , ta ®· cã thÓ hiÓn thÞ ch÷ trªn LCD
theo tõng bíc sau: ®Ó ch©n RS =1 (ë møc cao) (ChuyÓn LCD tõ chÕ ®é
nhËn lÖnh sang chÕ ®é nhËn ký tù ,ký hiÖu), R/W=0  Sau ®ã ta chØ
viÖc ®a tÝn hiÖu m· ho¸ cña ký tù cÇn hiÓn thÞ vµo ®êng d÷ liÖu cña
LCD  Cho ch©n E 1 chuyÓn møc “1” vÒ “0”. VÝ dô : ®Ó hiÓn thÞ
ch÷ A , ta truyÒn gi¸ trÞ 01000001 ($47) (chÝnh lµ m· ASCII cña ký tù
A) vµo 8 ®êng d÷ liÖu cña LCD. ThËm chÝ ta cã thª hiÓn thÞ 1 d·y ký tù
nh sÏ xÐt ë phÇn sau ®©y.

KÕt luËn thiÕt lËp chÕ ®é hiÓn thÞ ban ®Çu cho LCD b»ng lÖnh :
Display On/Of and Cursor : 00001111($0F)
Function Set: 00111000 ($38)

3b. HiÓn thÞ ký tù trªn LCD.


_ §Æt vÊn ®Ò:
Sau khi ®· thiÕt lËp cho LCD chÕ ®ä hiÓn thÞ nh trªn, ta sÏ hiÓn thÞ
1 vµi ký tù trªn LCD. VËy LCD cã thÓ hiÓn thÞ nh÷ng ký tù nµo vµ ®a
c¸c ký tù ®ã vµo LCD nh thÕ nµo? PhÇn nµy sÏ gi¶i ®¸p c©u hái ®ã.

_ LCD cã bé nhí ROM m· ho¸ c¸c ký tù mµ nã cã thÓ hiÓn thÞ. Tæng


sè cã 192 ký tù, khi cÇn chän nh÷ng ký tù nµy th× chØ cÇn ®Æt m· nhÞ
ph©n cña nã ë ®Çu vµo, cã tíi 96 m· ký tù ASCII, 64 m· ký tù tiÕng
NhËt, 32 ký tù ®Æc biÖt kh¸c.

51
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

M« t¶ b¶ng m· ho¸ ký tù chuÈn: 16 m· ®Çu tiªn trong b¶ng (tõ $00 -


$0F) cßn ®Ó trèng ®Ó chøa c¸c ký tù , biÓu tîng do ngêi dïng tù ®Þnh
nghÜa. 16 ký tù tiÕp theo (tõ $10 - $1F) hiÓn thÞ c¸c ký tù trèng. C¸c vÞ
trÝ tiÕp theo hiÓn thÞ ký tù nh trªn h×nh minh ho¹. Tõ $80 - $9F kh«ng sö
dông.
_Chó ý r»ng ®Ó hiÓn thÞ ký tù th× khi ®a m· ho¸ cña ký tù vµo D0-
D7 th× LCD ph¶i ®Ó ë chÕ ®é nhËn d÷ liÖu (tøclµ RS=1. R/W=0) 
Sau ®ã ®Æt m· nhÞ ph©n cña ký tù ®ã vµo D0-D7  t¹o ra 1 chuyÓn
møc “1” vÒ “0 ” ë ch©n E. Ngay sau ®ã ta sÏ thÊy ký tù ®ã ®îc hiÓn thÞ
trªn mµn h×nh

52
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

53
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

3c. HiÓn thÞ ký tù t¹i 1 vÞ trÝ bÊt kú trªn LCD.


_PhÇn nµy sÏ øng dông c¸c lÖnh:

Binary
Command Hex
D7 D6 D5 D4 D3 D2 D1 D0
Set Display Address 1 A A A A A A A 80 to FF

_ §Æt vÊn ®Ò:


Khi LCD b¾t ®Çu ®îc ho¹t ®éng, sau khi ®îc thiÕt lËp kiÓu hiÓn thÞ,
ta sÏ thÊy trªn LCD cã 1 con trá ë ®Çu dßng ®Çu tiªn (®©y gäilµ ®Þa chØ
$00). Mçi khi 1 ký tù, biÓu tîng ®îc hiÓn thÞ, con trá ®ã l¹i dÞch sang ph¶i
1 vÞ trÝ (tøc lµ sang ®Þa chØ tiÕp theo $01, $02…). Sù tù ®éng t¨ng ®Þa
chØ cña con trá nh vËy ®· t¹o sù thuËn tiÖn trong hiÓn thÞ 1 chuçi ký tù
trªn LCD v× ta kh«ng cÇn ph¶i ®Þnh ®Þa chØ hiÓn thÞ cho tõng ký tù.
Nhng nÕu ta kh«ng muèn hiÓn thÞ chuçi ký tù ë vÞ trÝ ®Çu cña dßng
®Çu tiªn n÷a, mµ muèn hiÓn thÞ tõ 1 vÞ trÝ bÊt kú , th× lóc nµy ta ph¶i
cho LCD biÕt ®Þa chØ hiÓn thÞ th«ng qua lÖnh Set Display Address

_ LÖnh Set Display Address : LÖnh nµy sÏ ®Æt con trá mµn h×nh ë
vÞ trÝ (cã to¹ ®é x¸c ®Þnh bëi 0AAAAAAA) trªn mµn h×nh . Sau ®ã ta
cã thÓ cho hiÓn thÞ ch÷ t¹i vÞ trÝ míi cña con trá.

_ C¸c ®Þnh ®Þa chØ trªn mµn h×nh LCD. Ta biÕt r»ng ®Þa chØ ®Æt
con trá cã thÓ nhËn gi¸ trÞ trong kho¶ng $00-$7F tøc lµ 128 ®Þa chØ.
Nhng trªn thùc tÕ (do kÝch thêc cña LCD )chØ cã 80 ®Þa chØ ®îc x¸c
®Þnh, 40 ®Þa chØ cho dßng trªn vµ 40 ®Þa chØ cßn l¹i cho dßng díi.
ChØ cã LCD lo¹i 40x2 hµng míi dïng hÕt 80 ®Þa chØ ®ã, cßn lo¹i LCD
nhá h¬n (nh cña ta ®ang xÐt ) còng kh«ng dïng hÕt 80 ®Þa chØ ®ã. C¸ch
®Þnh ®Þa chØ hiÓn thÞ trªn LCD ®îc minh ho¹ theo h×nh sau:

_ V× Set Display Address lµ lÖnh nªn LCD ph¶i lµm viÖc ë chÕ ®é
lÖnh tõ Vi ®iÒu khiÓn göi vµo LCD.
_ VÝ dô : muèn hiÓn thÞ ch÷ A trªn LCD t¹i vÞ trÝ sè 10 cña dßng trªn
($0A hay 00001010) ta lµm nh sau:
§Æt ch©n RS=0 , R/W=0  §Æt m· 10001010 vµo ch©n D0-D7 
T¹o cho ch©n E 1 chuyÓn møc “1” vÒ “0”. Sau bíc nµy, con trá sÏ ¬ vÞ
trÝ $0A. Giê hÕt chÕ ®é nhËn lÖnh, ta thiÕt lËp chÕ ®é nh©n d÷ liÖu :
RS=1, R/W=0  §Æt m· ho¸ cña ký tù A (00010100) vµo D0-D7 T¹o

54
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

cho E 1 chuyÓn trang thai “1” – “0”. Ngay sau ®ã, ta sÏ thÊy ch÷ A hiÖn
t¹i vÞ trÝ sè 10 cña dßng trªn.

§Þnh ®Þa chØ trªn LCD 20ký tù x4 dßng

§Þnh ®Þa chØ trªn LCD 16ký tù x2 dßng

3d. HiÓn thÞ ch÷ ch¹y b»ng LCD


_ PhÇn nµy sÏ øng dông c¸c lÖnh :

Binary
Command Hex
D7 D6 D5 D4 D3 D2 D1 D0
Display/Cursor Shift 0 0 0 1 D/C R/L x x 10 to 1F

55
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

_ §Æt vÊn ®Ò:


Tuú vµo kÝch thíc cña LCD mµ sè lîng ký tù hiÓn thÞ trªn LDC bÞ h¹n
chÕ. Nhng hÇu hÕt c¸c LCD ®Òu cã chøc n¨ng dÞch chuyÓn khèi ký tù
®îc hiÓn thÞ sang tr¸i hoÆc sang ph¶i. §iÒu nµy gióp Ých rÊt nhiÒu nÕu
néi dung cÇn hiÓn thÞ lín h¬n cöa sè LCD, vµ còng lµm cho hiÓn thÞ cña
LCD trë nªn sinh ®éng h¬n. Muèn vËy , ta dïng lÖnh Cursor/Display Shift
_ LÖnh Cursor/Display Shift . NÕu D/C=1 LCD sÏ dÞch chuyÓn mµn
h×nh (nÕu =0 LCD dÞch chuyÓn con trá). NÕu R/L=1 LCD dÞch chuyÓn
sang ph¶i (nÕu =0 th× dÞch sang tr¸i).

_ VÝ dô: Sau ®©y ta xÐt cô thÓ 1 vÝ dô dÞch chuyÓn 1 khèi ký tù


trªn LCD:
NhËp lÖnh vµo LCD ®Ó thiÕt lËp tr¹ng th¸i ban ®Çu (hiÓn thÞ 1 dßng,
con trá nhÊp nh¸p cã g¹ch ch©n ) (lÖnh Function Set, Display On/Off and
Cursor ), sau ®ã truyÒn d÷ liÖu vµo LCD , ë ®©y ta truyÒn cho LCD 26
ký tù tõ A-Z (truyÒn m· tõ 01000001 – 01011010 tøc lµ tõ $41-$5A)
Tuy nhiªn trªn LCD ta chØ quan s¸t ®îc 16 ký tù ë dßng trªn , tõ A-P.
Nh÷ng ký tù cßn l¹i vµ con trá ®Òu bÞ khuÊt vÒ bªn ph¶i nªn ta kh«ng
quan s¸t ®îc.
Giê ta sÏ dïng lÖnh Cursor/Display Shift ®Ó dÞch khèi 26 ký tù ®ã sang
tr¸i ®Ó cã thÓ nh×n ®îc c¸c ký tù cßn l¹i vµ con trá. Mçi lÇn lÖnh
Cursor/Display Shift ®îc nhËp vµo LCD, khèi 26 ký tù ®ã sÏ dÞch ®i 1 vÞ
trÝ. Cø liªn tôc nhËp lÖnh vµo LCD, sau 1 thêi gian ta sÏ nh×n ®îc ký
tù ..Z, sau ®ã lµ c¶ con trá còng ®îc hiÓn thÞ. VÉn tiÕp tôc nhËp lÖnh
dÞch chuyÓn vµo ta l¹i thÊy c¸c ký tù ®Çu (A,B..) ®îc hiÓn thÞ nh thÓ c¶
khèi 26 ký tù ®îc quay vßng quanh - ®©y chÝnh lµ c¸ch LCD thùc hiªn
lÖnh Cursor/Display Shift-
V× khi nhËn lÖnh nµy LCD kh«ng thay ®æi ®Þa chØ cña tõng ký tù ,
mµ dÞch chuyÓn c¶ khèi ®Þa chØ cña LCD sang tr¸i hay sang ph¶i.

_ LÖnh Cursor/Display Shift ngoµi cã t¸c dông ®èi dÞch chuyÓn ®èi víi
ký tù nh ®· tr×nh bµy ë trªn , nã cßn ®îc dïng ®Ó dÞch chuyÓn con trá
hiÓn thÞ. Dïng lÖnh nµy ®èi víi con trá sÏ gióp ta chØnh söa néi dung t¹i
1 ®Þa chØ bÊt kú trong cña sæ hiÓn thÞ.

3e. Con trá c¬ së.


_ PhÇn nµy øng dông lÖnh:

56
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Binary
Command Hex
D7 D6 D5 D4 D3 D2 D1 D0
Clear Display 0 0 0 0 0 0 0 1 01
Display & Cursor Home 0 0 0 0 0 0 1 x 02 or 03

_§Æt vÊn ®Ò: Sau khi thùc hiÖn ch÷ ch¹y trªn LCD, ta thÊy r»ng c¶
hÖ thèng ®Þa chØ cña mµn h×nh LCD ®· bÞ dÞch chuyÓn. Cã c¸ch nµo
nhanh nhÊt ®Ó ®a hÖ thèng ®Þa chØ ®ã trë vÒ d¹ng chuÈn nh ban ®Çu
kh«ng? §©y lµ lóc ta dïng lÖnh Display and Cursor Home, Clear
Display
_ LÖnh Cursor Home : võa cã t¸c dông ®a con trá vÒ ®Þa chØ ®Çu
tiªn ($00), võa cã t¸c dông kÐo ®Þa chØ 0 cña khèi ®Þa chØ cña LCD vÒ
vÞ trÝ gãctr¸i cña dßng ®µu tiªn.
_ LÖnh Clear Display còng cã 2 t¸c dông trªn cña lÖnh Cursor Home
, ngoµi ra nã cßn cã t¸c dông xo¸ tÊt c¶ néi dông võa ®îc hiÓn thÞ trªn
LCD .

3f. ChÕ ®é nhËn d÷ liÖu


_PhÇn nµy sÏ øng dông lÖnh:

Binary
Command Hex
D7 D6 D5 D4 D3 D2 D1 D0
Character Entry Mode 0 0 0 0 0 1 1/D S 04 to 07

_ §Æt vÊn ®Ò:


Nh ë c¸c trêng hîp ta xÐt ë trªn, khi 1 ký tù ®îc nhËp vµo, sau khi LCD
hiÓn thÞ ký tù ®ã th× con trá tù ®éng t¨ng ®Þa chØ cña nã lªn . Tuy nhiªn
kh«ng ph¶i nhÊt thiÕt lóc nµo còng ph¶i hiÓn thÞ theo c¸ch ®ã, tøc lµ sau
khi hiÓn thÞ con trá cã thÓ tù ®éng gi¶m ®Þa chØ.
H·y xÐt 1 vÝ dô cô thÓ mµn h×nh hiÓn thÞ cña 1 chiÕc m¸y tÝnh
®iÖn tö bá tói b×nh thêng. Khi bËt m¸y cã sè 0 ë gãc bªn ph¶i mµn h×nh.
Sau ®ã ngêi dïng nhËp 1 sè vµo, th× sau khi hiÓn thÞ sè ®ã, con trá l¹i tù
®éng dÞch sang tr¸i (tøc lµ gi¶m ®Þa chØ cña nã). Cø nh vËy, cµng
nhiÒu ký tù ®îc nhËp vµo th× con trá cµng sang bªn tr¸i (tøc lµ ®Þa chØ
cña nã cµng g¶m).
B©y giê ta sÏ lµm cho mµn h×nh LCD cña ta ho¹t ®éng nh choc n¨ng
cña mµn h×nh chiÕc m¸y tÝnh ®iÖn tö. §ã chÝnh lµ hiÖu qu¶ cña viÖc
sö dông lÖnh Character Entry Mode

57
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

_ LÖnh Character Entry Mode : NÕu S=1 con trá sÏ tù ®éng dÞch
®Þa chØ sau khi hiÓn thÞ (nÕu=0 th× kh«ng dÞch). NÕu 1/D=1 ®Þa chØ
con trá tù ®éng t¨ng 1 tøc lµ con trá dÞch sang ph¶i sau khi hiÓn thÞ
(nÕu =0 th× dÞch sang tr¸i).

_ Thùc hiÖn lÇn lît c¸c bíc sau:


NhËp c¸c lÖnh thÝch hîp (Function Set, Display On/Off and
Cursor)vµo LCD ®Ó thiÕt lËp chÕ ®é ban ®Çu cho LCD, chØ dïng 1
dßng ®Ó hiÓn thÞ, ®Þnh ®Þa chØ hiÓn thÞ ë $10 (lÖnh Set Display
Address ) .
Sau ®ã göi lÖnh Character Entry Mode vµo LCD m· nhÞ ph©n lµ:
00000111 ($07) . LÖnh nµy sÏ thiÕt lËp chÕ ®é hiÓn thÞ- dÞch tr¸i cho
LCD (tøc lµ sau khi hiÓn thÞ th× con trá dÞch sang tr¸i).
Mäi c«ng viÖc chuÈn bÞ va thiÕt lËp chÕ ®é ®· hoµn tÊt. Giê chØ cßn 1
viÖc lµ nhËp sè hay ký tù vµo LCD ®Ó kiÓm tra kiÕt qu¶.
NhËp d÷ liÖu vµo LCD . Ta nhËp c¸c sè tõ 0-9 (m· ho¸ tõ 00110000 ®Õn
00111001 ($30 ®Õn $39 )). Ta sÏ they LCD ho¹t ®éng ®óng nh mµn h×nh
hiÓn thÞ cña m¸y tÝnh ®iÖn tö. Sau khi 1 sè ®îc hiÓn thÞ, con trá sÏ
dÞch sang tr¸i ®Ó chê hiÓn thÞ sè tiÕp theo.

_ ë b¶ng c¸c lÖnh cña LCD ta they r»ng lÖnh cã thÓ nhËp vµo LCD víi
4 c¸ch m· ho¸ kh¸c nhau tõ 00000100 ®Õn 00000111 ($04 ®Õn $07). Mçi
1 c¸ch m· ho¸ sÏ ®¸p øng 1 nhu cÇu trong ®êi sèng thùc tÕ (nh mµn h×nh
m¸y tÝnh ®iÖn tö ch¼ng h¹n)

3g. HiÓn thÞ ký tù tuú ý trªn LCD theo ®Þnh nghÜa ngêi dïng.
_ PhÇn nµy sÏ øng dông lÖnh:

Binary
Command Hex
D7 D6 D5 D4 D3 D2 D1 D0
Set CGRAM Address 0 1 A A A A A A 40 to 7F

_ LÖnh Set CGRAM Address : sÏ khëi ®éng chøc n¨ng hiÓn thÞ c¸c ký
tù , h×nh d¹ng theo ®Þnh nghÜa riªng cña ngêi sö dông. LCD cho phÐp
®Þnh nghÜa tèi ®a 8 ký tù ngêi dïng .

58
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

_ C¸c bíc thùc hiÖn: VÝ dô muèn hiÓn thÞ h×nh ngêi nh minh ho¹ ta
ph¶i lÇn lît thùc hiÖn c¸c bíc sau:

ThiÕt lËp chÕ ®é lµm viÖc cho LCD. Göi lÖnh Set CGRAM Address
®Õn Vi ®iÖu khiÓn (m· lÖnh bÊt kú tõ $04-$78). tõ lóc nµy trë ®i, d÷
liÖu ®îc truyÒn vµo sÏ t¹o nªn hiÓn thÞ theo ý ngêi dïng theo tõng dßng 1.
NhËp 1 bé 8 dßng m· nhÞ ph©n ®Ó hiÓn thÞ ®îc nh y muèn (00001110,
00010001, 00001110, 00000100, 00011111,
00000100, 00001010, 00010001 ($0E, $11, $0E, $04, $1F, $04, $0A,
$11) ). Sau khi LCD nhËn 8 dßng vµo nµy, 1 h×nh sÏ ®îc hiÖn trªn mµn
h×nh LCD. NÕu gØ bé 8 dßng bÝt vµo ta sÏ ®îc 2 ký tù , h×nh vÏ kh¸c.

_ Chó ý r»ng CGRAM lµ bé nhí t¹m thêi, nÕu mÊt ®iÖn nã sÏ mÊt. V×
vËy khi nèi LCD víi Vi ®iÒu khiÓn, th× bé 8 dßng bit ®ã ph¶i ®îc lu s½n
trong bé nhí ROM cña Vi diÒu khiÓn, khi nµo dïng tíi th× ®Þnh nghÜa
®ã ®îc gäi ra.

3g. LCD trao ®æi víi bªn ngoµi b»ng 4 bit


_ PhÇn nµy sÏ øng dông lÖnh :

Binary
Command Hex
D7 D6 D5 D4 D3 D2 D1 D0
Function Set 0 0 1 8/4 2/1 10 / 7 x x 20 to 3F

_ §Æt vÊn ®Ò:


Trong thùc tÕ thêng gÆp LCD ®îc ®iÒu khiÓn bs»ng lo¹i Chip 4 bit
ra. Trong khi LCD co 8 ®êng vµo ra d÷ liÖu. V× thÕ ta ph¶i xem xÐt kh¶

59
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

n¨ng lµm viÖc víi LCD mµ chØ dïng 4 ®êng d÷ liÖu (®Ó t¬ng thÝch víi
lo¹i Vi §iÒu KhiÓn 4 bit).
4 bit ®îc gäi lµ 1 nöa byte.
ë chÕ ®é 4 bit, dïng 4 bit nµo ®Ó trao ®æi th«ng tin? Tr¶ lêi: dïng 4
bit cao D4-D7 ®Ó trao ®æi th«ng tin. $ bit thÊp cßn l¹i D0-D3 ph¶i tu©n
thñ c¸ch xö lý sau: 4 bit kh«ng sö dông nµy ph¶i th¶ tù do hoÆc nèi víi 1
cùc th«ng qua ®iÖn trë 4k7-47k. TuyÖt ®èi kh«ng ®îc nèi 4 ch©n kh«ng
sö dông nµy trùc tiÕp víi ®Êt v× sÏ lµm cho LCD hiÓu nhÇm lµ dïng 8
bÝt ®Ó trao ®æi d÷ liÖu (4 bit D0-D3 lµ 0000).

§Ó LCD lµm viÖc ë chÕ ®é giao tiÕp 4 bit th× viÖc ®Çu tiªn lµ ph¶i
thiÕt lËp (ra lÖnh cho LCD) chän chÕ ®é lµm viÖc 4 bit (dïng lÖnh
Function Set ) . Nhng cã vÊn ®Ò n¶y sinh lµ lÖnh ®ã còng chØ ®îc ®a
vµo LCD b»ng 4 bit D4-D7 mµ th«i, cßn 4 bÝt thÊp th× kh«ng thÓ thay
®æit gi¸ trÞ tuú ý ®îc. Nhng thËt may m¾n lµ trong lÖnh Function Set
bÝt ra lÖnh cho LCD lµm viÖc ë chÕ ®é 4 bit lµ bit 4 , v× vËy chØ cÇn
göi tíi LCD m· lÖnh 00100000 lµ ®· thiÕt lËp ®îc chÕ ®é trao ®æi
th«ng tin 4 bit.

Sau khi thiÕt lËp chÕ ®é trao ®æi th«ng tin4 bit, kÓ tõ lóc nµy mäi
lÖnh vµ d÷ liÖu ®îc göi tíi LCD ®Òu ph¶i chia lµm 2 phÇn : 4 bÝt phÇn
cao göi tríc, sau ®ã míi göi 4 bÝt phÇn thÊp .
Mçi 1 lÇn göi th«ng tin tíi LCD ®Òu ph¶i cÊp cho ch©n E 1 xung d-
¬ng. Nh vËy v× sè lÇn göi ë chÕ ®é 4 bit gÊp 2 lÇn sè lÇn göi ë chÕ ®é
8 bit, nªn sè xung d¬ng cÇn cÊp cho ch©n E còng gÊp ®«i.

3h.§äc th«ng tin vÒ LCD.


_ PhÇn nµy sÏ øng dông lÖnh:

Binary
Instruction RS
D7 D6 D5 D4 D3 D2 D1 D0
Read Data High D D D D D D D D
Read Status Low BF A A A A A A A
D: Character data at current cursor address
A: Current cursor address ($00 to $7f)
BF: Busy Flag (0 = Ready, 1 = Busy)

Table 6: HD44780 Read Instructions.

60
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

_ LÖnh : Cê bËn cña LCD sÏ ®îc ®äc trªn ®êng D7. NÕu D7=1 tøc lµ
LCD ®ang thùc hiÖn lÖnh vµ nã cha s½n sµng ®Ó nh©n th«ng tin tõ VI
diÒu khiÓn (nÕu D7=0 tøc lµ LCD ®· s½n sµng chê th«ng tin). 6 bit A lµ
m· ho¸ vÞ trÝ cña con trá trªn mµn h×nh, ®îc ®äc ra ë ch©n D0-D6.
_ C¸c th«ng tin tr¹ng th¸i b¸o vÒ Vi ®iÒu khiÓn ®Ó V§K ®îi LCD hÕt
bËn míi göi lÖnh tiÕp theo.
_ Chó ý r»ng LCD ph¶i ®Ó ë chÕ ®é ®äc th«ng tin ra : RS=1, R/W=1

3g. Chu tr×nh thêi gian trªn LCD.


CÇn ®Ó ý tíi thêi gian LCD thùc hiÖn 1 lÖnh ®Ó t¹o nh÷ng kho¶ng
thêi gian trÔ thÝch hîp trong khi lËp tr×nh Assembly. Kho¶ng thêi gian
trÔ cã t¸c dông ®îi ®Ó LCD thùc hiÖn xong lÖnh tríc råi míi göi lÖnh
tiÕp theo.
Sau khi cÊp nguån cho LCD ph¶i ®îi cho tíi khi LCD khëi ®éng xong
hoµn toµn, ta chÌn vµo ®ã 1 thêi gian trÔ.

Thêi gian thùc hiÖn lÖnh Qu¸ tr×nh thùc hiÖn lÖnh (nhËn d÷ liÖu )

61
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

LËp tr×nh Assembly cho Vi §iÒu KhiÓn 89C51


§iÒu khiÓn ho¹t ®éng cña LCD

; LCD Example Program


; Port 1 = D0-D7 (data port), R/W nèi víi P3.2, Enable nèi víi P3.4, RS
nèi víi P3.3
;*****
#INCLUDE "8051EQU.INC" ;include predefined constants
;
;
************************************************************
**************
; BiÕn vµ H»ng
;
; LËp 1 bé nhí ®Öm cã 16 « nhí (®ñ cho 1 LCD).
; §Ó viÕt ký tù lªn LCD, ký tù ®îc ®a vµo bé ®Öm sau ®ã
; tÊt c¶ c¸c bÝt ®îc ®ång lo¹t ®a vµo LCD.
B0 .EQU 070H ;BUFFER POSITION 1
B1 .EQU 071H ;
B2 .EQU 072H ;
B3 .EQU 073H ;
B4 .EQU 074H ;
B5 .EQU 075H ;
B6 .EQU 076H ;
B7 .EQU 077H ;
B8 .EQU 078H ;
B9 .EQU 079H ;
B10 .EQU 07AH ;
B11 .EQU 07BH ;
B12 .EQU 07CH ;
B13 .EQU 07DH ;
B14 .EQU 07EH ;
B15 .EQU 07FH ;BUFFER POSITION 16
;
;
************************************************************
**************
;
; RESET ;reset routine

62
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

.ORG 0H ;locate next command at 00H


AJMP START ;jump to START (first command of
program)
;
;
************************************************************
**************
;
; INTERRUPTS ;place interrupt routines at appropriate
;memory locations
.ORG 03H ;external interrupt 0
RETI
.ORG 0BH ;timer 0 interrupt
RETI
.ORG 13H ;external interrupt 1
RETI
.ORG 1BH ;timer 1 interrupt
RETI
.ORG 23H ;serial port interrupt
RETI
.ORG 2BH ;locate beginning of rest of program
;
;
************************************************************
**************
;
INITIALIZE: ;set up control registers
;
MOV TCON,#00H
MOV TMOD,#00H
MOV PSW,#00H
MOV IE,#00H ;disable interrupts
RET
;
;
************************************************************
**************
;
DELAYMS: ;millisecond delay routine

63
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

; ;uses R7
MOV R7,#00H ;put 00H in register R7
LOOPA:
INC R7 ;increment R7
MOV A,R7 ;move R7 to Accumlator
CJNE A,#0FFH,LOOPA ;jump to LOOPA if R7 not equal to
#FFH
RET ;return
;
;
************************************************************
**************
;
DELAYHS: ;half second delay using milsec delay
; ;uses R5 R6 (R7)
MOV R6,#00H
MOV R5,#002H
LOOPB:
INC R6
ACALL DELAYMS
MOV A,R6
JNZ LOOPB
DEC R5
MOV A,R5
JNZ LOOPB
RET
;
;
************************************************************
**************
;
DELAYS: ;delay for a second or two
; ;uses (R5 R6 R7)
ACALL DELAYHS
ACALL DELAYHS
ACALL DELAYHS
ACALL DELAYHS
RET
;

64
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

;
************************************************************
**************
;
;
;
************************************************************
**************
;
WRITELCD:
SETB P3.4 ;enable LCD
ACALL DELAYMS ;wait for write completion
CLR P3.4 ;disable LCD
RET
;
;
************************************************************
**************
;
EXECUTELCD:
CLR P3.3 ;ditto
SETB P3.4 ;enable LCD
ACALL DELAYMS
CLR P3.4
SETB P3.3 ;Make rs=1
RET
;
;
************************************************************
**************
;
LCDSETUP:
;
MOV P1,#03CH ;set up LCD 8 bits and 2 lines
ACALL EXECUTELCD
MOV P1,#00DH ;turn on display and cursor off
ACALL EXECUTELCD
MOV P1,#006H ;set increment one and shift
ACALL EXECUTELCD
MOV P1, #02H ; Home Display

65
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

ACALL EXECUTELCD
RET
;
;
************************************************************
***************
;
CLEARBUFFER: ; uses R0
;
MOV R0,#070H
CBONE:
MOV @R0,#' ' ; put a blank in the memory address specified in
R0
INC R0 ; go to next memory address
CJNE R0,#080H,CBONE ; stop when address is 80H
RET
;
;
************************************************************
***************
;
WRITEBUFFER: ;uses R0
;
MOV R0,#070H
WBONE:
MOV P1,@R0 ; get character stored in the memory address
specified in R0
ACALL WRITELCD
INC R0 ; go to next memory address
CJNE R0,#080H,WBONE ; stop when address is 80H
RET
;

;
;
************************************************************
***************
;
WRITEIguana_Labs: ;write Iguana Labs to LCD
;

66
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

ACALL CLEARBUFFER
MOV B0,#'I' ;write I
MOV B1,#'g' ;write g
MOV B2,#'u' ;write u
MOV B3,#'a' ;write a
MOV B4,#'n' ;write n
MOV B5,#'a' ;write a
MOV B6,#' ' ;write
MOV B7,#'L' ;write L
MOV B8,#'a' ;write a
MOV B9,#'b' ;write b
MOV B10,#'s' ;write s
ACALL WRITEBUFFER
RET
;
;
************************************************************
***************
;
WRITELCD_Example: ;write Example to LCD
;
ACALL CLEARBUFFER
MOV B0,#'L' ;write L
MOV B1,#'C' ;write C
MOV B2,#'D' ;write D
MOV B3,#' ' ;write
MOV B4,#'E' ;write E
MOV B5,#'x' ;write x
MOV B6,#'a' ;write a
MOV B7,#'m' ;write m
MOV B8,#'p' ;write p
MOV B9,#'l' ;write l
MOV B10,#'e' ;write e
ACALL WRITEBUFFER
RET
;
;
************************************************************
**************
;

67
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

BEGLINEONE:
;
MOV P1,#080H ;go to beginning of line one
ACALL EXECUTELCD
RET
;
;
************************************************************
***************
;
BEGLINETWO:
;
MOV P1,#0C0H ;go to beginning of line two
ACALL EXECUTELCD
RET
;
;
************************************************************
***************
;
CLEARDISPLAY:
;
MOV P1,#001H ;clear display
ACALL EXECUTELCD
ACALL BEGLINEONE ;go to beginning of line one
RET
;
;
************************************************************
***************
;
;
************************************************************
***************
;
START: ;beginning of main program
;
MOV SP,#02FH ;initialize stack pointer to 2FH
ACALL INITIALIZE ;initialize registers
ACALL DELAYHS

68
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

CLR P3.2 ;make LCD R/W low (Stays low since we are
just writing to LCD)
ACALL LCDSETUP ;initialize LCD
LCDLOOP:
ACALL CLEARDISPLAY ; erase LCD screen
ACALL DELAYHS
ACALL BEGLINEONE ; move cursor to beginning of top line
ACALL WRITEIguana_Labs
ACALL DELAYHS
ACALL BEGLINETWO ; move cursor to beginning of bottom
line
ACALL WRITELCD_Example
ACALL DELAYHS
AJMP LCDLOOP ; go to LCDLOOP: (repeat)
;
.END ;end program

69
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Ch¬ng 5:
giíi thiÖu c¸c ic hç trî vµo ra ( 8255 - 8251)
c¸ch lËp tr×nh c¸c cæng

GIAO tiÕp song song dïng vi m¹ch 8255

I. Giíi thiÖu vi m¹ch 8255A


Ñeå vi xöû lyù giao tieáp vôùi nhöõng thieát bò beân ngoaøi, ngöôøi ta
thöôøng duøng vi maïch giao tieáp 8255A, vi maïch naøy coù khaû naêng giao
tieáp raát roäng, vöøa coù theå xuaát döõ lieäu, vöøa coù theå nhaän döõ
lieäu tuøy theo ngöôøi laäp trình ñieàu khieån baèng caùch thay ñoåi thoâng
soá cuûa thanh ghi ñieàu khieån.
Maïch 8255A thöôøng ñöôïc goïi laø maïch phoái gheùp I/O coù khaû
naêng laäp trình ñöôïc. 8255A ñöôïc thieát keá söû duïng vôùi taát caû caùc doøng
Intel cuõng nhö caùc boä VXL khaùc. 8255 bao goàm 24 chaân I/O öùng vôùi ba
Port PA, PB, PC. Baát kyø chaân cuûa ba Port ñeàu coù theå xem nhö moät coång
ghi/ñoïc döõ lieäu,

II. S¬ ®å ch©n, S¬ ®å logic, Chøc n¨ng c¸c cæng cña 8255A.

Sô ñoà chaân vaø sô ñoà logic cuûa vi maïch 8255A ñöôïc theå hieän qua

hình veõ:
PA3 1 40 PA4
PA2 PA5
PA1 PA6
PA0 PA7 PA0 – PA7
RD\ WR\ D0 – D7
CS\ RESET
GND D0 8255A
A1 D1
A0 D2
PC7 8255A D3 RD\ PB0 – PB7
PC6 D4 WR\
PC5 D5
PC4 D6 RESET
PC0 D7
PC1 Vcc A0
PC2 PB7
PC3 PB6 A1 PC0 – PC7
PB0 PB5 CS\
PB1 PB4
PB2 20 21 PB3

70
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Hình 1 : Sô ñoà chaân vaø sô ñoà logic cuûa vi maïch 8255A


Trong ñoù:

Chaân 1  4, 37  40 (PA0 – PA7): laø caùc ñöôøng xuaát nhaäp


coù teân laø coång A.
Chaân 18  25 (PB0 – PB7): laø caùc ñöôøng nhaäp xuaát coù teân
coång B.
Chaân 10  13, 14  17 (PC0 – PC7): laø caùc ñöôøng nhaäp xuaát
coù teân coång C.
Chaân 27  34 (D0 – D7): laø caùc ñöôøng döõ lieäu (data) hoaït
ñoäng hai chieàu, daãn tín hieäu ñieàu khieån töø vi xöû lyù ra caùc thieát bò beân
ngoaøi ñoàng thôøi nhaän caùc döõ lieäu töø caùc thieát bò ñieàu khieån beân
ngoaøi vaøo vi xöû lyù.
Chaân 35 (Reset input): ngoõ vaøo xoùa, chaân reset phaûi ñöôïc
noái vôùi tín hieäu reset out cuûa vi xöû lyù ñeå khoâng laøm aûnh höôùng ñeán
maïch ñieàu khieån. Khi reset, caùc coång cuûa 8255A laø caùc ngoõ vaøo, ñoàng
thôøi taát caû caùc döõ lieäu treân thanh ghi beân trong 8255A ñeàu bò xoùa,
8255A trôû veà traïng thaùi ban ñaàu saên saøng laøm vieäc.
Chaân 6 (CS\): tín hieäu ngoõ vaøo chip select (CS\) ñöôïc ñieàu
khieån bôûi vi xöû lyù, duøng ñeå löïa choïn 8255A laøm vieäc khi vi xöû lyù
giao tieáp vôùi nhieàu thieát bò.
Chaân 5 (RD\): ngoõ vaøo ñoïc döõ lieäu (Read Input).
Chaân 36 (WR\) : ngoõ vaøo ghi döõ lieäu (Write Input).
Chaân 8,9 (A1, A0): ngoõ vaøo ñòa chæ (Address Input), duøng
nhaän ñòa chæ vaøo ñeå löïa choïn thanh ghi vaø caùc coång.

Baûng ñòa chæ löïa choïn thanh ghi vaø caùc coång:

A1 A0 Coång vaø thanh ghi


0 0 Coång A
0 1 Coång B
1 0 Coång C
1 1 Thanh ghi ñieàu
khieån

Chaân 26 (Vcc) : nguoàn 5 VDC.

71
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Chaân 7 (GND) : GND 0 VDC.

III. CÊu tróc bªn trong vµ ho¹t ®éng cña vi m¹ch 8255A.
1. S¬ ®å khèi cÊu tróc bªn trong cña vi m¹ch 8255A. PA7 - PA0
Port A
Ñieàu
khieån
nhoùm A PC7 – PC4
Port C
(4 bit cao)

D7 – D0 Ñeäm bus
Nhoùm A
döơ lieäu
PC3 – PC0
Port C
(4 bit
Ñieàu thaáp)
khieån
nhoùm B PB7 – PB0
RD\ Logic
ñieàu
Port B
WR\
CS\ khieån
ghi/ñoïc
A0
Nhoùm B
A1

Hình 2: Sô ñoà khoái caáu truùc beân trong cuûa 8255A

2. Ho¹t ®éng cña vi m¹ch 8255A


Töø sô ñoà khoái caáu truùc beân trong cuûa vi maïch 8255A ta thaáy caùc
coång cuûa 8255A ñöôïc chia thaønh 2 nhoùm:

Nhoùm A goàm coång A vaø 4 bit cao cuûa coång C.


Nhoùm B goàm coång B vaø 4 bit thaáp cuûa coång C.
Caáu hình laøm vieäc cuûa 2 nhoùm seõ do noäi dung cuûa thanh ghi ñieàu
khieån quyeát ñònh.
Vi maïch 8255 giao tieáp vôùi vi xöû lyù thoâng qua caùc ñöôøng sau :
- Ñöôøng döõ lieäu: goàm 8 ñöôøng döõ lieäu (D0 - D7). Maõ leänh, caùc
döõ lieäu ñeàu ñöôïc truyeàn ñi treân ñöôøng naøy.

72
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

- Ñöôøng ñòa chæ: goàm 2 ñöôøng (A0 – A1) duøng ñeå löïa choïn coång
hoaëc thanh ghi ñieàu khieån nhö ñaõ trình baøy ôû phaàn tröôùc.
- Ñöôøng ñieàu khieån: goàm caùc ñöôøng RD\, WR\, CS\, Reset duøng
ñeå ñieàu khieån vieäc hoaït ñoäng cuûa 8255A.
Ñeå söû duïng caùc coång laøm coâng cuï giao tieáp, ngöôøi söû duïng
phaûi göûi töø ñieàu khieån ra thanh ghi ñieàu khieån ñeå 8255A ñònh caáu hình
laøm vieäc cho caùc coång ñuùng nhö yeâu caàu cuûa ngöôøi laäp trình.

3. Tõ ®iÒu khiÓn
Töø ñieàu khieån laø döõ lieäu ñöôïc gôûi tôùi thanh ghi ñieàu khieån. Giaù
trò cuûa töø ñieàu khieån seõ xaùc ñònh caáu hình laøm vieäc cho caùc coång
cuûa 8255A, ñoù laø vieäc löïa choïn chöùc naêng nhaäp hay xuaát cuûa caùc
coång.

3.1. CÊu tróc cña tõ ®iÒu khiÓn


Do caùc coång cuûa 8255A ñöôïc chia laøm hai nhoùm neân töø ñieàu
khieån cuõng ñöôïc chia laøm hai nhoùm ñieàu khieån töông öùng.
Caùc bit D3, D4, D5, D6 duøng ñeå xaùc ñònh caáu hình cho nhoùm A:
- Bit D3 duøng ñeå thieát laäp 4 bit cao cuûa coång C.
D3 = 0 coång C laø coång xuaát döõ lieäu.
D3 = 1 coång C laø coång nhaäp döõ lieäu.
- Bit D4 duøng ñeå thieát laäp coång A.
D4 = 0 coång A laø coång xuaát döõ lieäu.
D4 = 1 coång A laø coång nhaäp döõ lieäu.
- Bit D5 vaø D6 duøng thieáp laäp mode ñieàu khieån cuûa nhoùm A.
D6D5 = 00 : nhoùm A hoaït ñoäng ôû mode 0.
D6D5 = 01 : nhoùm A hoaït ñoäng ôû mode 1.
D6D5 = 1x : nhoùm A hoaït ñoäng ôû mode 2.
Caùc bit D0, D1, D2 duøng ñeå xaùc ñònh caáu hình cho nhoùm B.
- Bit D0 duøng ñeå thieát laäp 4 bit thaáp cuûa coång C.
D0 = 0 coång C laø coång xuaát döõ lieäu.
D0 = 1 coång C laø coång nhaäp döõ lieäu.
- Bit D1 duøng ñeå thieát laäp coång B.
D1 = 0 coång B laø coång xuaát döõ lieäu.
D1 = 1 coång B laø coång nhaäp döõ lieäu.
- Bit D2 duøng thieáp laäp mode ñieàu khieån cuûa nhoùm B.
D2 = 0 : nhoùm B hoaït ñoäng ôû mode 0.
D2 = 1 : nhoùm B hoaït ñoäng ôû mode 1.

73
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

D7D6D5D4D3D2D1D0

Nhoùm B
Coång C (4 bit
thaáp)
1 = Input
0 = OutputCoång B
1 = Input
0 = OutputMode
select
1 = mode 0
0 = mode 1

Nhoùm A
Coång C (4 bit cao)
1 = Input
0 = OutputCoång A
1 = Input
0 = OutputMode
select
00 = mode 0
01 = mode 1
1x = mode 2

Ñaët
Hình 3 : Caáu truùc töø ñieàu khieån cuûa vi maïch traïng thaùi
8255A
côø.
1 = Active
b. Cô cheá hoaït ñoäng caùc coång cuûa 8255A ôû caùc traïng thaùi.
8255 hoaït ñoäng ôû ba cheá ñoä mode:
* Mode 0: “ Vaøo/ra cô sôû ”. moãi coång PA, PB, PCL, PCH ñeàu ñöôïc
ñònh nghóa laø caùc coång vaøo hoaëc ra.
* Mode 1: “ vaøo/ra coù xung cho pheùp ”, caùc coång port PA, PB coù
theå ñöôïc ñònh nghóa laø caùc coång vaøo hoaëc ra vôùi tín hieäu moùc noái do
caùc bit töông öùng cuûa port PC trong cuøng nhoùm ñaûm nhieäm.
* Mode 2: “ vaøo/ra 2 chieàu ”, chæ rieâng Port PA ñöôïc ñònh nghóa
thaønh coång vaøo/ra 2 chieàu vôùi caùc tín hieäu moùc noái do caùc bit cuûa Port
PC ñaûm nhieäm. Port PB coù theå laøm vieäc trong cheá ñoä 0 hoaëc 1.

74
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Moùc noái ( Hanshare ) laø moät phöông phaùp kyõ thuaät chung ñeå truyeàn
döõ lieäu trong moät giao dieän. Moät maùy tính, moät thieát bò thoâng thöôøng
hoaït ñoäng vôùi caùc ñoàng hoà heä thoáng coù toác ñoä khaùc nhau vaø do
ñoù, döõ lieäu truyeàn ñi giöõa caùc I/O töông öùng coù theå seõ khoâng coøn
ñaùng tin caäy. Nhö vaäy moùc noái ( hansharing ) coøn laø phöông tieän naâng
cao ñoä tin caäy cuûa döõ lieäu khi truyeàn ñi.
* Nhoùm A vaø Nhoùm B caáu hình ôû mode 0.
Khi ñöôïc ñònh cô caáu hình naøy, caùc coång cuûa hai nhoùm hoaït ñoäng
xuaát hoaëc nhaäp döõ lieäu ñoäc laäp vôùi nhau.
Töø ñieàu khieån:
1 0 0 D4 D3 0 D1 D0
Vôùi D0, D1. D3, D4 tuøy choïn theo yeâu caàu cuûa ngöôøi söû duïng.
* Nhoùm A ñöôïc caáu hình ôû mode 1.
ÔÛ mode 1, caùc coång laøm vieäc coù choát (Strobed I/O), thieát bò giao
tieáp muoán 8255A nhaän döõ lieäu thì thieát bò ñoù phaûi taïo ra moät tín
hieäu yeâu caàu 8255A nhaän döõ lieäu vaø ngöôïc laïi, 8255A muoán gôûi
döõ lieäu cho moät thieát bò khaùc thì noù phaûi gôûi 1 tín hieäu yeâu caàu
thieát bò ñoù nhaän döõ lieäu, tín hieäu ñoù goïi laø tín hieäu choát.
+ Khi coång A ñöôïc caáu hình laø coång nhaäp döõ lieäu, chöùc naêng
caùc ñöôøng tín hieäu ñöôïc trình baøy nhö hình veõ: PA –PA 0 7
INTE
A PC4 STBA\
Töø ñieàu khieån :
PC5 IBFA

1 0 1 1 D3 x x x
Hình 4 : Chöùc naêng caùc ñöôøng tín hieäu khi coång A laø coång nhaäp döõ
lieäu
Caùc ñöôøng tín hieäu coång C trôû thaønh caùc ñöôøng ñieàu khieånINTR
cuûa
PC3
coång A. RD\ A

Trong ñoù : PC6,7 I/O


Bit INTEA (Interrupt Enable) ñöôïc thieát laäp möùc logic döôùi söï ñieàu
khieån cuûa phaàn meàm duøng caáu truùc Set/Reset cuûa 8255A.
Bit PC4 trôû thaønh bit STBA (Strobed Input, taùc ñoäng möùc thaáp),
ñöôïc duøng ñeå choát caùc döõ lieäu ôû caùc ngoõ vaøo PA 0 – PA7 vaøo maïch
choát beân trong.
Bit PC5 trôû thaønh bit IBFA (Input Buffer Full, taùc ñoäng möùc cao),
duøng ñeå baùo cho beân ngoaøi bieát döõ lieäu ñaõ ñöôïc choát beân trong.
Bit PC3 trôû thaønh bit INTRA (Interrupt Request, taùc ñoäng möùc cao),
bit naøy coù möùc logic 1 khi bit STR A = 1, bit IBFA = 1 vaø bit INTEA = 1.

75
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Thoâng thöôøng bit naøy duøng ñeå taùc ñoäng vaøo ngoõ vaøo ngaét cuûa vi xöû
lyù ñeå baùo cho vi xöû lyù bieát : döõ lieäu môùi ñaõ xuaát hieän ôû ngoõ vaøo.
Caùc bit PC6, PC7 cuûa coång C laø caùc bit xuaát/ nhaäp bình thöôøng
tuøy thuoäc vaøo töø ñieàu khieån trong thanh ghi ñieàu khieån. Coøn coång B
ñöôïc ñieàu khieån baèng caùc bit D0 – D2 trong thanh ghi ñieàu khieån (neáu
coång B hoaït ñoäng ôû mode 1 thì caùc bit PC0 – PC2 laø caùc bit ñieàu khieån).
+ Coång A ñöôïc caáu hình laø coång xuaát döõ lieäu.
Chöùc naêng caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ:
PA0–PA7
Töø ñieàu khieån : INTE
A PC7 OBFA\
PC6 ACKA\
1 0 1 0 D3 X x x

PC3 INTRA
WR\
Hình 5 : Chöùc naêng caùc ñöôøng tín hieäu khi coång A laø PCcoång
4,5
xuaát
I/Odöõ
lieäu
Bit PC7 trôû thaønh bit OBFA (Output Buffer Full, taùc ñoäng möùc thaáp),
khi coù döõ lieäu töø vi xöû lyù gôûi ra coång A, tín hieåu OBF seõ yeâu caàu
thieát bò beân ngoaøi nhaän döõ lieäu.
Bit PC6 trôû thaønh bit ACKA (Acknowledge Input, taùc ñoäng möùc
thaáp), thieát bò nhaän döõ lieäu duøng tín hieäu naøy ñeå baùo cho 8255A bieát
döõ lieäu ñaõ ñöôïc nhaän vaø saün saøng nhaän döõ lieäu môùi.
Bit PC3 trôû thaønh bit INTRA (Interrupt Request, taùc ñoäng möùc cao),
bit naøy coù möùc logic baèng 1 khi bit OBF A = 1, ACKA = 1 vaø bit INTEA = 1.
Tín hieäu INTRA taùc ñoäng ñeán ngoõ vaøo ngaét cuûa vi xöû lyù ñeå baùo cho
vi xöû lyù bieát thieát bò beân ngoaøi ñaõ nhaän döõ lieäu töø coång A.
Caùc bit PC4, PC5 vaãn laø bit nhaäp/ xuaát döõ lieäu bình thöôøng tuøy
thuoäc vaøo töø ñieàu khieån. Caùc bit D0 – D2 trong thanh ghi ñieàu khieån
duøng ñeå thieát laäp caáu hình cho coång B.
* Nhoùm B ñöôïc caáu hình ôû mode 1.
+ Coång B ñöôïc caáu hình laø coång nhaäp döõ lieäu.
Chöùc naêng caùc ñöôøng tín hieäu ñöôïc trình baøy nhö hình veõ:
PB0–PB7
Töø ñieàu khieån : INTE
B PC2 STBB\

1 x x x x 1 1 x PC1 IBFB

76 INTRB
PC0
RD\
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Hình 6 : Chöùc naêng caùc ñöôøng tín hieäu khi coång B laø coång nhaäp döõ
lieäu
Chöùc naêng cuûa caùc bit ñieàu khieån gioáng nhö khi nhoùm A hoaït
ñoäng ôû mode 1 vaø coång A ñöôïc caáu hình laø coång nhaäp döõ lieäu.
+ Coång B ñöôïc caáu hình laø coång xuaát döõ PB0–PB7
lieäu. INTE
B PC1 OBFB\
PC2 ACKB\
Töø ñieàu khieån:

1 x X x x 1 0 x INTRB
PC0
WR\

Hình 7 : Chöùc naêng caùc ñöôøng tín hieäu khi coång B laø coång xuaát döõ
lieäu
Chöùc naêng cuûa caùc töø ñieàu khieån gioáng nhö khi nhoùm A hoaït ñoäng
ôû mode 1 vaø coång A ñöôïc caáu hình laø coång xuaát döõ lieäu.
* Nhoùm A ñöôïc caáu hình ôû mode 2.
Mode 2 laø kieåu hoaït ñoäng strobed bi-directional IO : coù hai chöùc naêng
nhaäp xuaát döõ lieäu.
Töø ñieàu khieån khi nhoùm A ñöôïc caáu hình ôû mode 2 vaø chöùc
naêng cuûa caùc ñöôøng tín hieäu ñöôïc trình baøy ôû hình veõ:
Töø ñieàu khieån :

PA0–PA7
1 0 1 1 D3 x x x
INTE
PC3 A

PC7 OBFA\
INTE
1 PC6 ACKA\

INTE
2 PC4 STBA\
WR\ IBFA
77 PC5
RD\ PC2,1,0 I/O
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Hình 8: Chöùc naêng caùc ñöôøng tín hieäu khi nhoùm A hoaït ñoäng ôû mode 2

Caùc ñöôøng tín hieäu coång C trôû thaønh caùc ñöôøng ñieàu khieån cuûa coång
A.

Bit PC7 trôû thaønh bit OBFA, PC6 trôû thaønh bit ACKA, PC4 trôû thaønh
bit STBA, PC5 trôû thaønh bit IBFA vaø bit PC3 trôû thaønh bit INTRA, chöùc
naêng cuûa caùc bit ñieàu khieån gioáng nhö ôû mode 1, chæ khaùc tín hieäu
INTRA = 1 khi OBFA = 1 vaø INTE1 = 1 hoaëc IBFA = 1 vaø INTE2 = 1.
Caùc bit PC0 – PC2 laø caùc bit nhaäp xuaát döõ lieäu bình thöôøng tuøy
thuoäc vaøo töø ñieàu khieån trong thanh ghi ñieàu khieån.
Moät chuù yù caàn thieát laø khi nhoùm A ñöôïc caáu hình ôû mode 2 thì
nhoùm B chæ ñöôïc caáu hình ôû mode 0.

IV. Giao tiÕp g÷a Vi xö lý víi 8255A


Vi maïch 8255A coù theå giao tieáp vôùi vi xöû lyù theo 2 kieåu: kieåu
nhaäp/xuaát (kieåu I/O) vaø kieåu boä nhôù.
Khi vi xöû lyù giao tieáp vôùi 8255A theo kieåu I/O noù chæ duøng ñöôïc
8 ñöôøng ñòa chæ töø A0 – A7 maø thoâi coøn khi giao tieáp kieåu boä nhôù, noù
duøng ñöôïc caû 16 ñöôøng ñòa chæ, vì vaäy dung löôïng giao tieáp kieåu I/O
thaáp hôn dung löôïng giao tieáp kieåu boä nhôù.

1. Giao tiÕp kiÓu I/O.


Khi thieát keá vi xöû lyù giao tieáp vôùi 8255A theo kieåu I/O thì döõ lieäu
seõ ñöôïc truy xuaát baèng 2 leänh : IN addr-port vaø OUT addr-port. Döõ
lieäu giao tieáp luoân chöùa trong thanh ghi A. Ñòa chæ coång (addr-port) coù
ñoä daøi laø 8 bit.
Cuõng gioáng nhö boä nhôù, vi xöû lyù coù theå giao tieáp vôùi nhieàu vi
maïch 8255, vôùi 8 ñöôøng ñòa chæ thì coù taát caû 256 ñòa chæ, maø moãi vi
maïch chieám 4 ñòa chæ (3 coång vaø thanh ghi ñieàu khieån) neân soá vi maïch
8255 toái ña coù theå giao tieáp cuûa vi xöû lyù laø 256/4 = 64 vi maïch.
Khi keát noái giöõa vi xöû lyù vôùi vi maïch 8255A thì ñöôøng ñòa chæ A 0
vaø A1 duøng ñeå löïa choïn caùc coång vaø thanh ghi ñieàu khieån, coøn caùc
ñöôøng ñòa chæ coøn laïi töø A2 – A7 duøng ñeå löïa choïn vi maïch hoaït ñoäng,
thoâng thöôøng caùc ñöôøng ñòa chæ naøy ñöôïc ñöa vaøo vi maïch giaûi maõ

78
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

roài caùc ngoõ ra cuûa vi maïch giaûi maõ seõ ñöa ñeán CS\ cuûa caùc vi maïch
8255A.
Moät ví duï khi thieát keá vi xöû lyù giao tieáp vôùi 4 vi maïch 8255A:
Sô ñoà keát noái nhö hình veõ : (vi maïch 74139).

A2 ñeán CS\ cuûa 8255A


A3 DECODER -1
ñeán CS\ cuûa 8255A
2 TO 4 LINE -2
ñeán CS\ cuûa 8255A
-3
ñeán CS\ cuûa 8255A
-4

Hình 9: Sô ñoà keát noái vi xöû lyù vôùi vi maïch 8255A

Trong ñoù, ñöôøng A0 vaø A1 ñöôïc noái vôùi 8255A nhö ñaõ trình baøy ôû
treân, ñöôøng A2, A3 ñöôïc ñöa vaøo vi maïch giaûi maõ 2 ñöôøng thaønh 4
ñöôøng ñeå löïa choïn vi maïch 8255A.
Töø ñoù, ta coù baûng ñòa chæ cuûa caùc vi maïch 8255A nhö sau :

IC A7 A6 A5 A4 A3 A2 A1 A0 Hex
8255A-1 0 0 0 0 0 0 0 0 00
0 0 0 0 0 0 1 1 03
8255A-2 0 0 0 0 0 1 0 0 04
0 0 0 0 0 1 1 1 07
8255A-3 0 0 0 0 1 0 0 0 08
0 0 0 0 1 0 1 1 0B
8255A-4 0 0 0 0 1 1 0 0 0C
0 0 0 0 1 1 1 1 0F

2. Giao tiÕp kiÓu bé nhí.


Khi thieát keá 8255A giao tieáp vôùi vi xöû lyù theo kieåu boä nhôù thì
chöùc naêng cuûa 8255A khoâng thay ñoåi, chæ thay ñoåi kieåu truy xuaát. Vôùi
kieåu I/O thì ñòa chæ cuûa caùc coång vaø thanh ghi ñieàu khieån laø 8 bit thì ôû
kieåu boä nhôù, ñòa chæ cuûa caùc coång vaø thanh ghi ñieàu khieån laø 16 bit,
khi ñoù caùch keát noái cuõng töông töï nhö keát noái vi xöû lyù vôùi boä nhôù
thoâng thöôøng, vaø moãi vi maïch 8255A cuõng ñöôïc coi nhö laø boä nhôù vôùi
4 oâ nhôù: 3 coång vaø thanh ghi ñieàu khieån, truy xuaát döõ lieäu baèng caùch
duøng caùc leänh truy xuaát döõ lieäu cuûa boä nhôù.

79
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Caùch keát noái töông töï nhö khi vi xöû lyù keát noái vôùi boä nhôù neân
ôû ñaây khoâng caàn trình baøy laïi.

Method and detail:


Trong phaàn naøy, chuùng ta cuøng ñi vaøo nghieân cöùu laøm sao ñeå
laäp trình moät Chip 8255 hoaït ñoäng trong nhöõng cheá ñoä khaùc nhau maïch
noái gheùp 8051 hoaëc cuûa moät maïch gheùp noái 8255.
printer
port 8051 8255
Computer evaluation evaluation
board board

Hình treân laø sô ñoà khoái cuûa heä thoáng. Chuùng ta coù theå löïa chon cheá
ñoä hoaït ñoäng cuûa caùc modules chöông trình cuûa 8051, ñoàng thôøi coù theå
söûa chöõa caùc Modules ñoù. Khi thay ñoåi chöông trình thì caàn phaûi thieát
laäp chöông trình cho caùc coång Port PA, PB cuûa 8255 trong maïch noái gheùp
ñeå chuùng hoaït ñoäng ôû cuøng moät cheá ñoä. Ta coù theå taäp hôïp vaø keát
noái caùc Modules cuûa mình vôùi caùc thieát bò, caùc boä keát noái ñeå thöïc
hieän caùc döõ lieäu phaùt sinh.
Ñoái vôùi ba Port trong 8255 vaø caùc bit cuûa chuùng coù theå hoaït ñoäng nhö
caùc chaân xuaát/nhaäp, ngoaøi ra chuùng coøn coù moät soá caùc phöông thöùc
hoaït ñoäng khaùc, cuï theå nhö:

Port A Port B Port C


1 Mode 0, Input Mode 0, Output -
2 Mode 1, Input Mode 0, Output Moùc noái PA
3 Mode 0, Input Mode 1, Output Moùc noái PB
4 Mode 1, Input Mode 1, Output Moùc noái PA vaø
PB

Vôùi moãi moät cheá ñoä hoaït ñoäng nhö treân, chuùng ta vieát moät chöông
trình töông öùng ñeå phoái hôïp giöõa 8255 vaø 8051:

* Phöông thöùc hoaït ñoäng 1 : Ai0Bo0. asm


+ Port A: mode 0, Input
+ Port B: mode 0, Output

80
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

; Ai0Bo0X. asm
; Port A -> mode 0 input
; Port B -> mode 0 output
; Input data from port A and output it to prot B
pa equ 8000h ; prot a
pb equ pa+ 1 ; prot b
pc equ pa+ 2 ; prot c
cr equ pa+ 3 ; control register
org 00h
ajmp main
;------------------------------------
main:
mov sp,# 60h ; set stack pointer to address 60h
mov r5,# 10 ; delay 100ms for
call delay ; 8255 initialization
mov a,# 90h ; set port a to mode 0 input
mov dptr,# cr ; and port b to mode 0 output
movx @dptr, a
loop: ; periodically wait 2. 5s, get a data
; and dump it
mov r5,# 250 ; delay 2. 5s
call delay ;
mov a,# 0 ; clear port b for 20ms
mov dptr,# pb ;
movx @dptr, a ;
mov r5,# 2 ;
call delay ;
mov a,# 255 ; set port b for 20ms
mov dptr,# pb ;
movx @dptr, a ;
mov r5,# 2 ;
call delay ;
mov dptr,# pa ; input from port a
movx a,@ dptr

81
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

mov dptr,# pb ; output to port b


movx @dptr, a
jmp loop
;------------------------------------
delay: ; delay time = r5* 10ms
mov r6,# 50
$1: mov r7,# 100
$2: djnz r7,$ 2
djnz r6,$ 1
djnz r5, delay
ret
;------------------------------------
end

* Phöông thöùc hoaït ñoäng 2 : Ai1Bo0. asm


+ Port A: mode 1, Input
+ Port B: mode 0, Output

; Ai1Bo0. asm
; Port A -> mode 1 input
; Port B -> mode 0 output
; Input data from port A and output it to prot B
pa equ 8000h ; prot a
pb equ pa+ 1 ; prot b
pc equ pa+ 2 ; prot c
cr equ pa+ 3 ; control register
org 00h
ajmp main
org 13h
ajmp int1
;------------------------------------

82
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

main:
mov sp,# 60h ; set stack pointer to address 60h
setb it1 ; set int1 to negative edge trigger
setb ea ; enable hardware interrupt
setb ex1 ; enable int1
mov r5,# 10 ; delay 10ms for
call delay ; 8255 initialization
mov a,_____ ; set port a to mode 1 input
mov dptr,# cr ; and port b to mode 0 output
movx @dptr, a
mov a,_____ ; enable interrupt request
mov dptr,# cr ; for port a
movx @dptr, a
loop:
mov dptr,# pb ; output to port b
movx @dptr, a
jmp loop
;------------------------------------
int1:
mov r5,# 200 ; delay 200ms to make
call delay ; IBF visible
mov dptr,# pa ; input from port a
movx a,@ dptr
reti
;------------------------------------
delay: ; delay time = r5* 10ms
mov r6,# 50
$1: mov r7,# 100
$2: djnz r7,$ 2
djnz r6,$ 1
djnz r5, delay
ret
;------------------------------------
end
* Phöông thöùc hoaït ñoäng 3 : Ai0Bo1. asm
+ Port A: mode 0, Input
+ Port B: mode 1, Output

83
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

; Ai0Bo1. asm
; Port A -> mode 0 input
; Port B -> mode 1 output
; Input data from port A and output it to prot B
pa equ 8000h ; prot a
pb equ pa+ 1 ; prot b
pc equ pa+ 2 ; prot c
cr equ pa+ 3 ; control register
org 00h
ajmp main
org 03h
ajmp int0
;------------------------------------
main:
mov sp,# 60h ; set stack pointer to address 60h
setb it0 ; set int0 to negative edge trigger
setb ea ; enable hardware interrupt
setb ex0 ; enable int0
mov r5,# 10 ; delay 10ms for
call delay ; 8255 initialization
mov a,_____ ; set port a to mode 0 input
mov dptr,# cr ; and port b to mode 1 output
movx @dptr, a
mov a,_____ ; enable interrupt request
mov dptr,# cr ; for port b
movx @dptr, a
loop:
mov dptr,# pa ; input from port a
movx a,@ dptr
jmp loop
;------------------------------------
int0:
mov dptr,# pb ; output to port b
movx @dptr, a
reti
;------------------------------------
delay: ; delay time = r5* 10ms
mov r6,# 50

84
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

$1: mov r7,# 100


$2: djnz r7,$ 2
djnz r6,$ 1
djnz r5, delay
ret
;------------------------------------
end

* Phöông thöùc hoaït ñoäng 4 : Ai1Bo1. asm


+ Port A: mode 1, Input
+ Port B: mode 1, Output

; Ai1Bo1. asm
; Port A -> mode 1 input
; Port B -> mode 1 output
; Input data from port A and output it to prot B
pa equ 8000h ; prot a
pb equ pa+ 1 ; prot b
pc equ pa+ 2 ; prot c
cr equ pa+ 3 ; control register
org 00h
ajmp main
org 03h
ajmp int0
org 13h
ajmp int1
;------------------------------------
main:
mov sp,# 60h ; set stack pointer to address 60h
setb it0 ; set int0 to negative edge trigger
setb it1 ; set int1 to negative edge trigger
setb ea ; enable hardware interrupt
setb ex0 ; enable int0
setb ex1 ; enable int1

85
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

mov r5,# 10 ; delay 10ms for


call delay ; 8255 initialization
mov a,______ ; set port a to mode 1 input
mov dptr,_____ ; and port b to mode 1 output
movx @dptr, a
mov a,_______ ; enable interrupt request
mov dptr,______ ; for port b
movx @dptr, a
mov a,_______ ; enable interrupt request
mov dptr,______ ; for port a
movx @dptr, a
loop:
jmp loop
;------------------------------------
int0:
mov dptr,_____ ; output to port b
movx @dptr, a
reti
;------------------------------------
int1:
mov dptr,_____ ; input from port a
movx a,@ dptr
reti
;------------------------------------
delay: ; delay time = r5* 10ms
mov r6,# 50
$1: mov r7,# 100
$2: djnz r7,$ 2
djnz r6,$ 1
djnz r5, delay
ret
;------------------------------------
end

86
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

PHAÀN CÖÙNG VAØ PHAÀN MEÀM GIAO TIEÁP

I. LÖU ÑOÀ VAØ CHÖÔNG TRÌNH TRUYEÀN DÖÕ


LIEÄU
1 Lu ®å truyÒn d÷ liÖu

BEGIN

KHÔÛI PHAÙT: GHI


TÖØ CHEÁ ÑOÄ

GHI LEÄNH :
DTR, TxEN

ÑOÏC TRAÏNG
THAÙI:
DSR, TxRDy

Kieåm tra saün


saøng:
DSR = TxRDY =1

H̀NH 7.1 GHI SOÁ LIEÄU RA

THANH GHI ÑEÄM

SOÁ LIEÄU
GHI LEÄNH PHAÙT:
RTS

END

87
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

2 Lu ®å nhËn d÷ liÖu.

BEGIN

KHÔÛI PHAÙT: GHI


TÖØ CHEÁ ÑOÄ

GHI LEÄNH :
DTR, A{RxEN,RTS

ÑOÏC TRAÏNG THAÙI:


DSR, RxRDy

Kieåm tra saün


saøng :DSR=
RxRDY=1

H̀NH 7.2

ÑOÏC SOÁ LIEÄU TÖØ


THANH GHI ÑEÄM SOÁ
LIEÄU
CHÖÔNG TRÌNH TRUYEÀN DÖÕ
LIEÄU
; END

xxxxxxxxxxxxxxxxxxxxx

88
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

;chuong trinh con delay


org 6200h
delay: mvi b,3
x0: dcr b
jnz X0
ret
;xxxxxxxxxxxxxxxxxxxxx
;chuong trinh truyen du lieu
org 4100h
mvi a,00h ;xoa reg lenh
out 01h
call delay
out 01h
call delay
out 01h
call delay
mvi a,40h ;xoa cac thanh ghi noi
out 01h
call delay
mvi a,0ceh ;goi tu dk che do
out 01h
call delay
lxi d,6500h
mvi a,03h ;goi tu lenh
out 01h
call delay

x1: in 01 ;doc tg trang thai


ani 10000001b;giu MSB va LSB
cpi 81h
jnz x1
ldax d
mov l,a
out 00h ;doc byte dia chi
de truyen
call delay
mvi a,21h ;goi tu lenh de truyen
di
out 01
call delay
inr e
mvi a,03h
out 01h

89
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

call delay

x2: in 01h
ani 81h
cpi 81h
jnz x2
ldax d
mov h,a
out 00h
call delay
mvi a,21h
out 01h
call delay

inr e
mvi a,03h
out 01h
call delay
x13: in 01h
ani 81h
cpi 81h
jnz x13
ldax d
mov c,a
out 00
call delay
mvi a,21h
out 01h
call delay

x4: mvi a,03h


out 01h
call delay

x3: in 01h
ani 81h
cpi 81h
jnz x3

mov a,m ;truyen du lieu


out 00h
call delay
mvi a,21h

90
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

out 01h
call delay
inr l
dcr c
jnz x4
;hien chu E de biet cham dut
lxi h,0a000h
mvi m,79h
hlt

3 Ch¬ng tr×nh nhËn d÷ liÖu


;x-chuong trinh nhan du lieu-x
org 4300h

mvi a,00h ; xoa cac thanh ghi


out 01h
call delay
out 01h
call delay
out 01h
call delay
mvi a,40h ;xoa cac thanh ghi noi
out 01h
call delay
mvi a,0ceh ;nap tu che do
out 01h
call delay
mvi a,26h ;nap tu lenh
out 01h
call delay

y5: in 01h
ani 82h
cpi 82h
jnz y5

in 00h ;cat byte dia chi thap


mov e,a
mov l,a

y6: in 01h
ani 82h
cpi 82h

91
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

jnz y6

in 00h ;cat byte dia chi cao


mov d,a
mov h,a

y7: in 01h
ani 82h
cpi 82h
jnz y7
in 00h
mov c,a

y8: in 01h
ani 81h
cpi 81h
jnz y8

in 00h ;nap du lieu vao o nho


stax d
inr e
dcr c
jnz y8
pchl

end

92
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

GIAO TIEÁP NOÁI TIEÁP DUØNG VI MAÏCH 8251

I TruyÒn th«ng tin nèi tiÕp


Vieäc truyeàn thoâng tin giöõa caùc boä phaän naèm gaàn nhau trong heä vi
xöû lyù coù theå ñöôïc thöïc hieän thoâng qua bus song song môû roäng hoaëc
caùc maïch phoái gheùp song song. Trong ñoù caùc byte hoaëc caùc töø ñöôïc
chuyeån töø boä phaän naøy sang boä phaän khaùc treân moät taäp caùc ñöôøng
maïch in hoaëc daây caùp. Trong tröôøng hôïp caàn phaûi truyeàn thoâng tin ôû
caùc thieát bò caùch xa nhau laøm sao tieát kieäm ñöôïc soá ñöôøng daây daãn
caàn thieát cho vieäc truyeàn. Töø yeâu caàu treân ñaõ ra ñôøi phöông phaùp
truyeàn thoâng tin noái tieáp. ÔÛ ñaàu phaùt döõ lieäu song song ñaàu tieân ñöôïc
chuyeån thaønh döõ lieâu daïng noái tieáp sau ñoù ñöôïc truyeàn ñi lieân tieáp
treân moät ñöôøng daây. ÔÛ ñaàu thu, tín hieäu noái tieáp seõ ñöôïc bieán ñoåi
ngöôïc laïi ñeå taùi taïo tín hieäu daïng song song thích hôïp cho vieäc xöû lyù
tieáp theo.
Trong thöïc teá coù 2 phöông phaùp truyeàn thoâng tin kieåu noái tieáp:
truyeàn ñoàng boä vaø truyeàn khoâng ñoàng boä.
Trong phöông phaùp truyeàn ñoàng boä, döõ lieäu ñöôïc truyeàn theo töøng
maûng vôùi toác ñoä xaùc ñònh. Maûng döõ lieäu tröôùc khi ñöôïc truyeàn ñi seõ
ñöôïc gaén theâm ôû ñaàu vaø ôû cuoái maûng caùc byte hoaëc moät nhoùm bit
ñònh daáu ñaëc bieät.
ÔÛ hình 5.1 bieåu dieãn moät baûn tin ñeå truyeàn ñoàng boä theo giao
thöùc BISYNC (giao thöùc truyeàn thoâng tin heä 2 ñoàng boä, binary
synchronous communication protocol) ñaây thöïc chaát laø giao thöùc ñieàu
khieån theo byte, vì caùc byte (kyù töï) ñaëc bieät ñöôïc duøng ñeå ñaùnh daáu
caùc phaàn khaùc nhau cuûa baûn tin.

SYN SYN SOH HEADER STX TEXT ETX hay ETB BCC

SYN : Kyù töï ñoàng boä


SOH : Kyù töï baét ñaàu phaàn maøo ñaàu
HEADER : Phaàn maøo ñaàu
STX : Kyù töï baét ñaàu vaên baûn
TEXT :Thaân vaên baên
ETX : Kyù töï keát thuùc vaên baûn
ETB : Kyù töï keát thuùc vaên baûn
BCC : Kyù töï kieåm tra khoái
Hình 1

93
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Trong caùch truyeàn khoâng ñoàng boä, döõ lieäu ñöôïc truyeàn ñi theo
töøng kyù tö. Kyù töï caàn truyeàn ñi ñöôïc gaén theâm moät bit ñaùnh daáu ôû
ñaàu ñeå baùo baét ñaáu kyù töï (start) vaø 1 hoaëc 2 bit ñaùnh daáu cuoái ñeå
baùo keát thuùc kyù töï (stop)ï. Vì cuoái kyù töï ñöôïc nhaän daïng rieâng bieät
neân noù coù theå ñöôïc truyeàn ñi theo phöông phaùp khoâng ñoàng boä, ñöôïc
theå hieän hình treân.

Chieàu cuûa doøng kyù töï


Luoân ôû möùc cao
Luoân ôû möùc thaáp

Start D0 D1 D2 D3 D4 D5 D6 Parity Stop Stop

Maõ cuûa kyù töï caàn truyeàn

Hình 2. Khung cuûa moät kyù töï ñeå truyeàn khoâng ñoàng boä

Tuyø theo loaïi maõ ñöôïc choïn duøng trong khi truyeàn (Baudot, Ascii,… )
ñoä daøi cho maõ kyù töï coù theå laø 5 , 6 , 7, 8 bit. Tuyø theo heä thoáng truyeàn
tin, beân caïnh caùc bit döõ lieäu coøn coù theå tuyø choïn coù hay khoâng coù 1
bit parity ñeå kieåm tra loãi khi truyeàn coù theå tuyø choïn 1 hoaêc 2 bit stop,
nhöng baét buoäc phaûi coù moät bit start. Nhö vaäy ñeå truyeàn moät kyù töï
theo phöông phaùp khoâng ñoàng boä, ngoaøi kyù töï mang tin ta buoäc phaûi
truyeàn theâm ít nhaát 2 vaø nhieàu nhaát laø 4 bit phuï ñeå taïo ra khung cho kyù
töï ñoù, vì theá phöông phaùp naày tuy ñôn giaûn nhöng coù hieäu suaát khoâng
cao.
Toác ñoä truyeàn döõ lieäu theo phöông phaùp noái tieáp ñöôïc ño baèng
bit/s. Ngoaøi ra ngöôøi ta cuõng hay duøng ñôn vò baud, ñoù laø giaù trò ngòch
ñaûo cuûa thôøi gian giöõa caùc laàn thay ñoåi möùc tín hieäu, vôùi döõ lieäu chæ
coù hai möùc (0 vaø 1)ø vaø moãi thay ñoåi möùc tín hieäu chæ maõ hoùa moät
bit thì coù theå hieåu baud = bit/s, caùc toác ñoä truyeàn thöôøng gaëp trong thöïc
teá laø 11, 300, 600, 1200, 2400, 4800, 9600, 19200 baud.

94
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Ñeå taïo ñieàu kieän deå daøng cho vieäc phoái gheùp ñöôøng truyeàn noái
tieáp vôùi heä vi xöû lyù vaø ñeå giaûm toái ña caùc maïch phuï theâm ôû beân
ngoaøi ngöôøi ta ñaõ cheá taïo ra caùc vi maïch toå hôïp côõ lôùn laäp trình ñöôïc
coù khaû naêng hoaøn thaønh phaàn lôùn caùc coâng vieäc caàn thieát trong khi
phoái gheùp. Ñoù laø caùc maïch thu phaùt di boä vaïn naêng IN8250/16450 cuûa
National vaø maïch thu phaùt ñoàng boä – dò boä vaïn naêng 8251 cuûa Intel.

95
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

II. Vi m¹ch USART 8251:

Trong phaàn naøy ta seõ giôùi thieäu maïch 8251A ñoù laø vi maïch USART coù
theå duøng cho caû hai kieåu truyeàn thoâng tin noái tieáp ñoàng boä, dò boä. Sô
ñoà chaân vaø sô ñoà thanh ghi ñöôïc trình baøy ôû hình 3

1. S¬ ®å ch©n vµ s¬ ®å khèi

a. nhoùm tín hieäu gheùp noái vôùi vi xöû lyù goàm:


- /CS noái vôùi boä giaûi maõ ñòa chæ A1.. An ñeå choïn 2 thanh ghi.
(A0 = 1ñieàu khieån traïng thaùi, A0 = 0 ñeäm soá lieäu).
- C/D noái vôùi ñöôøng daây ñòa chæ A0 ñeå moät trong 2 caëp thanh ghi
treân.
- /WR noái vôùi chaân /WR cuûa vi xöû lyù.
- /RD noái vôùi chaân /RD cuûa vi xöû lyù.
- CLK noái vôùi ñöôøng daây CLK cuûa vi xöû lyù.
- Reset noái vôùi ñöôøng daây reset cuûa vi xöû lyù.
- D0 … D7 noái vôùi caùc ñöôøng daãn D0…D7 cuûa VXL.

b. Nhoùm tín hieäu gheùp noái voái Modem


- /DTR
- /DSR
- /RTS
- /CTS

c. Nhoùm tín hieäu geùp noái vôùi ñöôøng daây truyeàn – nhaän vaø KGN:
- TxEMTY thanh ghi ñeäm truyeàn roãng.
- TxR cho soá lieäu truyeàn.
- TxRDy baùo soá lieäu truyeàn ñaõ saün saøng.
- RxRDy baùo soá lieäu nhaän ñaõ saün saøng.

96
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

- Syn det/Break : chæ ñoàng boä/ñöùt doøng tin.

d. Nhoùm tín hieäu gheùp noái vôùi maùy phaùt xung nhòp.
- TxD : nhòp truyeàn.
- RxC : nhòp nhaän.

97
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

D2  /CS chíp choïn vi maïch


1 28 D1 /RD read – ñoïc
D3 2 27 D0 /WR write – vieát
C/D control/data - ñ.khieån soá lieäu
RxD 3 26 Vcc CLK – clock – nhòp
GND 4 25 /RxC D0..D7 data O/I – bus d.lieäu vaøo
D4 5 24 /DTR ra
/TxC – transmit clock - nhòp
D5 6 23 /RTS truyeàn
D6 7 22 /DSR RxC – receiver clock
D7 8251A Reset RST – reset
8 21 /DTR dada terminal ready
/TxC 9 20 CLK /DSR – data set ready
/WR 10 19 TxD /RTS request to send
/CS /CTS clear to send
11 18 TxEMPT TxD – transmit data
C/D 12 17 Y/CTS RxD – receiver data
/RD 13 16 Syndet/B TxRDy – transmit ready
RxRDy – receiver ready
RxRDY 14 15 R TxEMTY – transmist register empty
TxRDY Syn/BRK- Break detect

(a)

/CS TxD
/RD Thanh ghi truyeàn
/WR
C/D
D0 Thanh ghi ñeäm
D1 truyeàn
D2 RxD
Thanh
D3 ghi nhaän
D4
D5
D6 Thanh ghi ñeäm
D7 nhaän
CLK
RST
RxRDY Thanh ghi cheá ñoä Hình 3 : Sô
TxRDY ñoà chaân (a)
TxEMTy Thanh ghi leänh vaø caùc thanh
Vcc ghi (b) cuûa
GND
2 C¸c thanh ghi Thanh ghi traïng thaùi 8251A
ÔÛ hình 4a vaø hình 4b moâ taû boä thanh ghi cuûa 8251, goàm: thanh
/DSR /DTR /CTS /RTS Syn/BRK TxC RxC (b)
ghi traïng thaùi vaø thanh ghi ñieàu khieån.

98
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Hai thanh ghi treân coù cuøng moät ñòa chæ vôùi A0 = 1, moät duøng ñeå
ghi (/WR) leänh ñieàu khieån vaø moät ñeå ñoïc (/RD) traïng thaùi. Hai thanh ghi
ñeäm soá lieäu ghi vaø ñoïc coù cuøng moät ñòa chæ (A0 = 0) vaø duøng ñeå ghi
vaø ñoïc soá lieäu caàn truyeàn vaø nhaän cuûa KGN. Caùc leänh cho caùc thanh
ghi treân nhö baûng sau:

/CE C/D /WR /RD LEÄNH

0 1 0 1 Ghi vaøo thanh ghi ñieàu khieån (cheá ñoä, leänh).


0 1 1 0 Ñoïc thanh ghi traïng thaùi.
0 0 0 1 Ghi soá lieäu vaøo thanh ghi ñeäm truyeàn.
0 0 1 0 Ñoïc soá lieäu töø thanh ghi ñeäm nhaän.
1 x x x Trôû khaùng cao (khoâng duøng).

- Thanh ghi ñieàu khieån


- Thanh ghi traïng thaùi

99
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

a C¸c thanh ghi ®iÒu khiÓn


- duøng ñeå ghi:
+ lôøi ñieàu khieån cheá ñoä.

D7 D6 D5 D4 D3 D2 D1 D0

Toác ñoä truyeàn


Bit chaün leû
00 ñoàng boä
X0 khoâng kieåm 01 khoâng ñoàng boä x1
tra chaún leû
10 khoâng ñoàng boä x
kieåm tra leû
10 kieåm tra
16
chaün 11 khoâng ñoàng boä
x64
Ñoä daøi kyù töï
5 bit
6bit
7bit
8 bit

Ñieàu khieån khung.


khoâng giaù tṛ
moät bit döøng
1.5 bit döøng
H́nh 4a 2 bit döøng

100
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

b Lêi lÖnh

D7 D6 D5 D4 D3 D2
D1 D0
EH IR RTS ER SBRK RxEN DTR TxEN

Cho pheùp phaùt


1= cho pheùp
0= caám
Soá lieäu ñaàu cuoái
Saün saøng, DTR\ =1

Cho pheùp thu


1= cho pheùp RxRDy
0= caám RxRDy

Göûi tín hieäu caét


1= ñöa TxD = 0
0= hoaït ñoäng b́ nh
thöôøng
Xoaù côø baùo loăi
1= xoaù côø
PE, OE, FE

Yeâu caàu phaùt


1= ñöa tín hieäu
RTS/= 0

Ngaét meàm
1= xoaù caùc thanh ghi

Cheá ñoä baát ñoàng boä


1= t́m kyù töï ñoàng boä
Sync

H́nh 4b
c C¸c thanh ghi tr¹ng th¸i

Duøng ñeå ñoïc lôøi traïng thaùi:

101
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

D7 D6 D5 D4 D3 D2 D1 D0

DSR SYNDET FE OE PE TxEM RxRDy TxRDy

Chæ 8251 saün saøng


nhaän 1 chöơ hay leänh
Chæ thanh ñeå truyeàn
Chæ modem
ghi bieán ñoåi
ñaơ Saün
song song -
saøng ñeå
noái tieáp Chæ saün saøng nhaän
truyeàn soá
roăng soá lieäu ñeå truyeàn
lieïäu
cho VXL
Chæ chöơ
ñoàng boä
ñaơ ñöôïc
8251 nhaän Bit baùo sai chaún
leû

Pe= 1 khi coù sai


xoùa baèng ER cuûa
leänh

Bit chæ loăi traøn

Khi VXL chöa ñoïc


lôøi tröôùc, lôøi sau
ñaơ tôùi th́
OE =1 xoaù baèng ER
cuûa leänh

Bit chæ sai khung


(khoâng ñoàng boä)

khi soá bit döøng ḅ sai


FE= 1 xoaù baèng ER
H́nh 4c
=1

102
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

* Vôùùi lôøi ñieàu khieån cheá ñoä: hình 4a


- Cheá ñoä ñoàng boä: (trong, ngoaøi hai hay moät kyù töï ñoàng boä SYNC)
bôûi noäi dung ghi vaøo D7, D6.
- Toác ñoä truyeàn vôùi giaù trò:
+ D1D0 = 00: Duøng cho cheá ñoä ñoàng boä, toác ñoä nôi thu baèng toác
ñoä nôi phaùt, khoâng coù söï thay ñoåi taàn soá xung nhòp.
+ D1D0=01 : duøng cho cheá ñoä khoâng ñoàng boä, toác ñoä giöõa nôi thu
vaø nôi phaùt khoâng ñoåi.
+ D1D0=01: toác ñoä thu = toác ñoä truyeàn X1, töùc toác ñoä thu = toác
ñoä truyeàn.
+D1D0=10: toác ñoä thu =16x toác ñoä truyeàn.
+ D1D0=11: toác ñoä thu =64x toác ñoä truyeàn.
- Ñoä daøi kyù töï, töùc ñoä daøi moät ñôn vò tin SDU vôùi caùc giaù trò
D3d2 = 00 (5bit), 01(6bit), 10(7bit) vaø 11(8bit)
- Kieån tra chaün leû D5D4 =00 (khoâng kieåm tra), 01 (kieåm tra leû), 11
(kieåm tra chaün)
- Ñieàu khieån khung, xaùc ñònh soá bit döøng.
Vôùi D7D6 = 01 – moät bit döøng
D7D6 = 10 – moät bit röôõi döøng
D7D6 = 11 – hai bit döøng
 Vôùi lôøi leänh (hình 4b) ta coù theå ghi leänh ñeå:
- Ñieàu khieån modem: DTR(D1=1), RTS(D5=1)
- Xoaù meàm( baèng chöông trình coù IR (D6=1) ñeå xoaù veà 0 caùc thanh
ghi noäi
- Xoùa côø baùo loãi ER (D4=1)
- Ghi cho pheùp truyeàn TxEN (D0=1) cho pheùp nhaän RxE(D2=1)
- Göûi tín hieäu caét ( caùc bit baèng 0-Break) ñeå caét doøng tin lieân tuïc
ñang truyeàn.
- Tìm kyù töï ñoàng boä EH(D7=1) trong cheá ñoä ñoàng boä
 Thanh ghi traïng thaùi (hình 4c): duøng ñeå ñoïc.
- Saün saøng truyeàn TxRDY (D0=1), saün saøng nhaän RXRDY( D1=1)
- Thanh ghi ñeäm soá lieäu roãng TxE (D2=1)
- Tuy chæ coù moät ñòa chæ (CS\=0, A1=1) nhöng ta coù theå ghi ñöôïc 2 lôøi
ñieàu khieån cheá ñoä vaø lôøi leänh ôû 2 thanh ghi ñieàu khieån khaùc nhau
vì coøn coù chung moät flip flop noäi ñieàu khieån laàn löôït vaøo hai thanh
ghi treân

103
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

III. øng dông 8251A ®Ó truyÒn th«ng tin nèi tiÕp

1 TruyÒn th«ng tin nèi tiÕp gi÷a 2 Kit Vi xö lý

a. Khôûi phaùt 8251A:


TxD TxD

RxD RxD

DTR\ DTR\

8251 8251
VXL1 DSR\ DSR\ VXL2

RTS\ RTS\

CTS\ CTS\

H́nh 5

Muoán 8251 hoaït ñoäng ñuùng cheá ñoä (khoâng ñoàng boä), toác ñoä (300,
600, 1200, 2400, 4800, 9600bps hoaëc lôùn hôn), soá bit tin (5, 6, 7, 8) coù kieåm
tra chaün hoaëc leû vaø xaùc ñinh soá bit döøng (1; 1,5; 2 bit) ta phaûi ghi lôøi
ñieàu khieån cheá ñoä vaøo thanh ghi ñieàu khieån cuaû 8251.
Ví duï:
Moät 8251 coù ñiaï chæ goác CS\ vôùi 0FFF0h, caàn trao ñoåi thoâng tin 8 bit,
toác ñoä x16 khoâng coù kieåm tra Parity chaün leû, 2bit stop.
Lôøi ñieàu khieån laø: 1 1 0 0 1 1 1 0

104
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Löu ñoà khôûi taïo 8251A

Begin

00h thanh ghi ñieàu


khieån

03h AH

AH - 1

Delay

sai
AH = 0 ?

Ñuùng

Naïp töø cheá ñoä caøo thanh


ghi cheá ñoä

Delay

End

H́nh 6

105
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Chöông trình khôûi phaùt:


MOV DX, 0FFF2h
MOV AL,00h
OUT DX,AL
MOV CX 2h
D0 : LOOP D0
OUT DX, AL
D1: MOV CX,2h
LOOP D1
OUT DX, AL
MOV CX,2h
D2: LOOP D2
MOV AL, 40h
OUT DX, AL
MOV CX, 2h
D3: LOOP D3
MOV AL, 11001110B
OUT DX, AL
MOV CX, 2h
D4: LOOP D4
END

2 TruyÒn th«ng tin nèi tiÕp gi÷a Kit VXL vµ m¸y tÝnh
Giaûi
A1–A maõ ñiaï CS \
chæ
11 GND

D 0 –D 7 D 0 – D7

Reset TxD
Rest 5
CLK O O O O O
RxD O O O O
A0 CLK
6 9
RD \ DTR
C/D\
Xöû ngaét Coång COM
WR \ cuûa maùy
(8259A hai RD \ tính
möùc)
DSR\
WR\ Hình 7
INTR
VXL 8251
INTA \ RTS \
PhÇn ii
c¸c m¹ch øng dông
TxD

106
CTS\
RxRDy
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

ch¬ng tr×nh
gi¶i quyÕt bµi to¸n tæng hîp

Ch¬ng tr×nh vÝ dô díi ®©y minh ho¹ viÖc ghÐp nèi vi xö lý víi Ram
ngoµi, Rom ngoµi, 8255, vµ hiÓn thÞ LCD gi¶ sö trong Ram ngoµi ®·
chøa d÷ liªu ®Ó hiÓn thÞ ra LCD dßng ch÷ “BAI TAP LON VI XU LY”.
D÷ liÖu nµy n»m ë ®Çu vïng ®Þa chØ cña Ram ngoµi.Cho hiÓn thÞ ra
LCD trªn 1 dßng víi cì ch÷ 5x10, dßng ch÷ ch¹y tõ tr¸i qua ph¶i

Keát noái boä nhôù döõ lieäu ngoaøi:


Boä nhôù Ram ñöôïc cho pheùp ghi/ ñoïc baèng caùc tín hieäu ñieàu
khieån WR\ vaø RD\. 8951 coù 1 leänh duy nhaát truy xuaát döõ lieäu cuûa
boä nhôù döõ lieäu ngoaøi laø MOVX duøng con troû 16 bit (DPTR) hoaëc
R0 vaø R1 xem nhö thanh ghi ñòa chæ.
Keát noái bus ñòa chæ vaø bus döõ lieäu giöõa RAM vaø 8951 cuõng
gioáng nhö EPROM . Ngoaøi ra, RD cuûa 8951 ñöôïc noái tôùi chaân cho
pheùp xuaát (OE\ ) cuûa Ram vaø chaân WR ñöôïc noái tôùi chaân ghi
(WR\) cuûa Ram.

Tuy nhieân taïi moät thôøi ñieåm chæ coù 1 IC nhôù ñöôïc truy xuaát
neân duøng caùc ñöôøng ñòa chæ A13, A14, A15 ñeå phaân bieät. Laáy
A15, A13, A14 noái tôùi 3 ñaàu vaøo IC giaûi maõ 74138 (A,B,C). Caùc
ngoõ ra Y0, Y1,Y2, Y3 laàn löôït ñöôïc noái tôùi CE cuûa Rom,Ram, CS
cuûa 8255. Khi Yi = 0 thì IC ñoù ñöôïc choïn:
A13, A14, A15 = 0 choïn Rom
A13 = 1, A14, A15 = 0 choïn Ram
A13 = 0, A14 = 1, A15 = 0 choïn 8255
Keát noái maïch choát:

- Chaân ALE (chaân 30) cuûa 8951 keát noái vôùi chaân G cuûa 74373.
Caùc ñöôøng cuûa Port0 noái vôùi caùc ñöôøng töø Do ñeán D7 cuûa
74373. Caùc ñöôøng tín hieäu (Q0Q7 ) cuûa 74373 vaø caùc ñöôøng port
2 (P2.0 P2.7) ñöôïc noái tôùi caùc ñöôøng ñòa chæ cuûa ROM vaø RAM
(A0 A12 ) coøn caùc ñöôøng döõ lieäu töø port 0 ñöôïc noái tôùi caùc
ñöôøng döõ lieäu cuûa ROM vaø RAM, 8255 (D0 D 7 ).

107
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

- Trong moãi chu kyø maùy seõ coù 2 xung ALE. Khi ALE ôû möùc
logic cao (G = 1) vaø OC\ = (0) thì ngoõ ra Qo  Q7 töông öùng vôùi ngoõ
vaøo D, moïi söï thay ñoåi ôû ngoõ vaøo ñeàu aûnh höôûng ñeán ngoõ ra,
luùc naøy Port 0 töông öùng laø ñöôøng ñòa chæ Ao  A7. Khi ALE
xuoáng möùc thaáp (G = 0), ngoõ ra Q seõ giöõ nguyeân traïng thaùi tröôùc
ñoù baát chaáp ngoõ vaøo D, luùc naøy caùc ñöôøng Port 0 töông öùng laø
caùc ñöôøng döõ lieäu Do  D7.
* Tín hieäu PSEN\ cuûa 8951 (chaân 29) noái tôùi 0E cuûa Rom. Caùc
ñöôøng (RD,WR) noái ñeán RD, WR cuûa Rom vaø 8255.
Hình thaønh maïch giaûi maõ ñòa chæ döïa treân baûng ñoà boä nhôù
sau:

IC A A A A A A A A A A A A A A A A hex
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Rom 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0000 H
8K 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1FFFH
Ram 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 2000 H
8K 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3FFFH
8255 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4000 H
0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 4003 H

S¬ ®å m¹ch nguyªn lÝ:

ROM RAM
7437 8Kx
8255
8Kx8
8

89C51

74138 LCD

Ch¬ng tr×nh ®iÒu khiÓn dïng cho s¬ ®å


( viÕt trªn phÇn mÒm Batronic Prog - Studio )
INCLUDE 89c51.mc
; khoi tao

108
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

SD_ROM EQU 0000h ; dia chi cua ROM tu 0000h den 1FFFh
SD_RAM EQU 2000h ; dia chi cua RAM tu 2000h den 3FFFh
FIST_NUM EQU 2000h
LAT_NUM EQU 200Eh
; khoi dong bo dinh thoi 8 bit che do 2
MOV TMOD,#02h ; che do tu nap lai 8 bit
MOV TH0,#00h ; TH0 chua gia tri 0
;
;
; Dinh nghia cac chan
DATA_PORT EQU P0
LO_ADDR_PORT EQU P0 ; dia chi phan thap
HI_ADDR_PORT EQU P2 ; dia chi phan cao
LCD_RS EQU P1.2
LCD_WR EQU P1.3
LCD_E EQU P1.4
SRAM_RD EQU P1.5
;
;
; khoi tao cho 8255A
MOV DPTR,#4003h ; dia chi thanh ghi lenh cua 8255 la 4003h
MOV A,#80h ; cac port cua 8255 la port xuat
MOVX @DPTR,A ; xuat tu dieu khien ra 8255
;
;
; thiet lap che do ban dau cho LCD
SETB LCD_E
CLR LCD_RS
CLR LCD_WR
MOV DPTR,#4000h ; dia chi portA cua 8255 la 4000h
MOV A,#0Fh
MOVX @DPTR,A ; gui lenh hien thi con tro cho LCD
CLR LCD_E ; cho phep LCD nhan lenh
NOP
NOP
NOP
SETB LCD_E ; treo LCD
MOV A,#34h
MOVX @DPTR,A ; hien thi tren 1 dong, co chu 5x10
CLR LCD_E
NOP
NOP
NOP

109
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

SETB LCD_E
; = = = = = = = CHUONG TRINH XUAT KI TU TU ROM RA LCD
ORG 0000h
DATA_IN_LCD:
CJNE FIST_NUM,LAST_NUM,HIENTHI_LCD
SETB LCD_RS ; cho phep LCD nhan du lieu
MOV LO_ADDR_PORT,LOW(FIST_NUM) ; dua dia chi phan thap vao
MOV HI_ADDR_PORT,HIGH(FIST_NUM) ; dua dia chi phan cao vao
MOV DATA_PORT,0FFh ; xoa port du lieu
CLR SRAM_CS
CLR SRAM_RD
MOV A,DATA_PORT ; dua du lieu vao thanh chua A
SETB LCD_RS
CLR LCD_RW
MOVX @DPTR,A ; dua ki tu vao bo nho LCD
CLR LCD_E ; cho phep LCD nhan du lieu
NOP
NOP
NOP
SETB LCD_E
INC FIST_NUM ; tang dia chi du lieu len 1
JMP DATA_IN_LCD
HIENTHI_LCD:
MOV R7,#100 ; lap lai 100 lan
loop:
CLR LCD_RS
CLR LCD_WR
MOV DPTR,#4000h ; dia chi portA cua 8255 la 4000h
MOV A,#18h ; ki tu chay tu phai qua trai
MOVX @DPTR,A ; gui lenh hien thi con tro cho LCD
CLR LCD_E ; cho phep LCD nhan lenh
NOP
NOP
NOP
SETB LCD_E ; treo LCD
SJMP TRE ; tre 256us de quan sat
DJNZ R7,LOOP
TRE:
SETB TR0
loop1:
JNB TF0,loop1
CLR TF0
RET

110
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

END

111
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

øng dông
vi ®iÒu khiÓn trong d©y chuyÒn c«ng nghiÖp

I. §Æt vÊn ®Ò
Coù theå öùng duïng ngay nhöõng gì ñöôïc hoïc vaøo thöïc teá laø
ñieàu maø moãi sinh vieân chuùng em mong muoán. Trong qua trình hoïc
taäp vaø tìm hieåu veà moân hoïc Vi Xöû Ly,ù chuùng em nhaän thaáy ñaây
laø moät moân hoïc hay vôùi nhieàu öùng duïng trong SX kinh doanh. Hieän
nay, PLC vôùi nhöõng tính naêng noåi troäi neân ñöôïc söû duïng chuû yeáu
trong caùc daây chuyeàn coâng nghieäp; nhöng vôùi ñieàu kieän cuûa nöôùc
ta, giaù thaønh cuûa PLC laø raát cao. Ñeå ñaåy maïnh quaù trình töï ñoäng
hoaù phuø hôïp vôùi ñieàu kieän ñaât nöôùc, chuùng em nhaäân thaáy raèng
Vi xöû lyù hoaøn toaøn coù theå thay theá ñöôïc PLC trong caùc daây
chuyeàn SX vöøa vaø nhoû.
Ngaøy nay cuøng vôùi söï phaùt trieån cuûa caùc ngaønh khoa hoïc kyõ
thuaät, kyõ thuaät ñieän töû ma øtrong ñoù laø kyõ thuaät soá ñoùng vai troø
quan troïng trong moïi lónh vöïc khoa hoïc kyõ thuaät, quaûn lí, coâng
nghieäp töï ñoäng hoùa, cung caáp thoâng tin…. do ñoù chuùng ta phaûi
naém baét vaø vaän duïng noù moät caùch coù hieäu quaû nhaèm goùp
phaàn vaøo söï phaùt trieån neàn khoa hoïc kyõ thuaät theá giôùi noùi chung
vaø trong söï phaùt trieån kyõ thuaät ñieän töû noùi rieâng.
Xuaát phaùt töø vieäc tìm hieåu caùc nhaø maùy vaø tham quan caùc
phöông thöùc saûn xuaát cuûa nhieàu doanh nghieäp, chuùng em ñaõ ñöôïc
thaáy nhieàu khaâu ñöôïc töï ñoäng hoùa trong quaù trình saûn xuaát. Tuy
nhieân ñoái vôùi nhöõng doanh nghieäp vöøa vaø nhoû thì vieäc töï ñoäng
hoùa laïi hoaøn toaøn chöa ñöôïc aùp duïng maø vaãn coøn söû duïng nhaân
coâng.
Töø nhöõng kieán thöùc thöïc teá vaø khaû naêng, kieán thöùc cuûa
mình, chuùng em nhaän thaáy coù theå söû duïng Vi xöû lyù ñeå goùp
phaàn naâng cao khaû naêng töï ñoäng hoaù cuûa caùc cô sôû SX vöøa vaø
nhoû; coù theå taêng hieäu suaát lao ñoäng leân gaáp nhieàu laàn, ñoàng
thôøi ñaûm baûo ñöôïc ñoä chính xaùc cao.
Trong phaïm vi moät baøi taâp lôùn, chuùng em khoâng theå trình baøy
taát caû moïi yù töôûng vaø caùc saûn phaûm cuûa mình. Maïch chuùng em
thieát keá coù theå öùng duïng trong khaâu cuoái cuûa moät chu trình saûn
xuaát.

112
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

II. S¬ ®å khèi hÖ thèng

Khèi hiÓn thÞ

C¶m biÕn Khèi xö Khèi chÊp


lý hµnh

HÖ thèng gåm 4 khèi chÝnh:


- Khèi c¶m biÕn: Khèi c¶m biÕn cã nhiÖm vô ph¸t hiÖn ñoái
töôïng (ví duï: saûn phaåm ñi qua treân baêng chuyeàn .v.v. ).
- Khèi xö lý: Khèi xö lý cã nhiÖm vô nhËn tÝn hiÖu tõ khèi c¶m
biÕn, nhËn biÕt ñoái töôïng vµ ®a ra c¸c lÖnh ®iÒu khiÓn tíi
khèi chÊp hµnh.
- Khèi hiÓn thÞ: Khèi hiÖn thÞ cã nhiÖm vô hiÓn thÞ tr¹ng th¸i cña
heä thoáng.

III) ThiÕt kÕ
A) Khèi c¶m biÕn:
A1. HÖ thèng ph¸t:

§Ó cã thÓ nhËn biÕt ®îc s¶n phÈm cã rÊt nhiÒu ph¬ng ph¸p nh siªu
©m, laser hay hång ngo¹i mçi ph¬ng ph¸p cã u vµ nhîc ®iÓm riªng. Víi u
®iÓm gi¸ thµnh vµ dÔ dµng thiÕt kÕ vµ thi c«ng ph¬ng ph¸p c¶m biÕn
b»ng hång ngo¹i ®îc chän. Tuy nhiªn ph¬ng ph¸p nµy cho ta ®é æn ®Þnh
vµ tin cËy kh«ng cao.

113
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Víi hång ngo¹i cã rÊt nhiÒu c¸ch cã thÓ ®îc sö dông ®Ó c¶m biÕn.
Víi c¸c s¶n phÈm cã ®é bãng cao cã thÓ øng dông ®Æc tÝnh ph¶n x¹ cña
hång ngo¹i ®Ó c¶m biÕn, b»ng ph¬ng ph¸p nµy chóng ta sÏ bè trÝ cÆp
thu ph¸t ë cïng mét phÝa, rÊt dÔ cho l¾p ®Æt, nhng víi c¸c s¶n phÈm cã
®é ph¶n x¹ kh«ng cao thi ta sÏ bè trÝ cÆp thu ph¸t ë hai phÝa, ph¬ng ph¸p
nµy cho chóng ta ®é tin cËy cao h¬n tuy nhiªn khi l¾p ®Æt thiÕt bÞ sÏ
phøc t¹p h¬n.

S¬ ®å m¹ch thu ph¸t hång ngo¹i:

M¹ch ®iÖn phÝa ph¸t

Ho¹t ®éng cña m¹ch ®iÖn nµy nh sau:

Ngay khi cung cÊp ®iÖn lÇn ®Çu cho m¹ch nµy, ®iÖn ¸p trªn tô C1
b»ng 0V nªn m¹ch ë tr¹ng th¸i ban ®Çu nh sau: R = 0, S = 1  Q cña FF ë
møc logic cao  Q bï cña FF ë møc logic thÊp (0V) dÉn ®Õn T1 t¾t møc
®iÖn ¸p ra ë ch©n 3 ë møc cao. Tô C1 b¾t ®Çu n¹p ®iÖn qua ®iÖn trë
R1, R2 cho ®Õn khi ®iÖn ¸p trªn C1 t¨ng ®Õn trÞ sè 2/3Vcc ( lóc ®iÖn

114
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

¸p trªn tô C1 t¨ng qu¸ Vcc/3, m¹ch so s¸nh 2 ®æi tr¹ng th¸i R = S = 0 nªn FF
vÉn gi÷ nguyªn tr¹ng th¸i cò ch©n 3 vÉn ë møc cao) ë thêi ®iÓm nµy
m¹ch so s¸nh 1 ®æi tr¹ng th¸i nªn R = 1, S = 0 FF ®æi tr¹ng th¸i tøc lµ Q bï
ë møc cao ph©n cùc cho T1 dÉn b·o hoµ lµm cho ch©n 3 chuyÓn tr¹ng
th¸i vÒ møc thÊp, tô C1 phãng ®iÖn qua R1, ch©n 7 vµ T1cho ®Õn khi
®iÖn ¸p trªn tô gi¶m xuèng cßn 1/3Vcc m¹ch so s¸nh 2 ®æi tr¹ng th¸i S =
1, R = 0 Q bï cña FF chuyÕn lªn møc ®iÖn ¸p cao T1 t¾t tô C1 l¹i b¾t
®Çu n¹p ®Õn ®iÖn ¸p 2/3Vcc. Chu tr×nh cø lÆp ®i lÆp l¹i t¹i ch©n 3 sÏ
t¹o dao ®éng xung vu«ng. V× R2 rÊt lín h¬n R1 nªn thêi gian n¹p lín h¬n
rÊt nhiÒu thêi gian phãng nªn mét chu kú cña bé ®Þnh thêi t = R2.C1 =
0,01 s VËy tÇn sè ph¸t lµ f = 1/t = 100Hz.

A2 HÖ thèng thu:

PhÝa thu ta dïng m¹ch ®iÖn nh sau:

M¹ch ®iÖn phÝa thu

M¹ch ®iÖn phÝa thu gåm cã ba khèi chÝnh nh sau:

Khèi 1 cã nhiÖm vô t¹o dao ®éng theo tÝn hiÖu cña Diot thu hång
ngo¹i, läc vµ khuÕch ®¹i s¬ bé tÝn hiÖu thu ®îc.
Nh vËy khèi mét sÏ gåm c¸c linh kiÖn: Diot thu D2, bé khuÕch ®¹i thuËt
to¸n (IC1), tô C2, C3, ®iÖn trë R4, R5.

115
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Trong ®ã IC1, ®iÖn trë R4, tô C2 ®ãng vai trß lµ bé läc tÝch cùc th«ng
thÊp mét cùc dïng håi tiÕp ©m.

Khèi 2 cã nhiÖm vô khuÕch ®¹i tÝn hiÖu gåm IC 2 , tô C4, R6, R7.
Víi hÖ sè khuÕch ®¹i tÝnh theo c«ng thøc ;

R6
Ku  1 
Z

Yªu cÇu cÇn hÖ sè khuÕch ®¹i cì 150 lÇn ta chän R7 = 330K,


R6 = 1K, tô C4 = 1F suy ra Z  2K.
TÝn hiÖu sau khi ®îc khuÕch ®¹i qua tô nèi tÇng C5 ®a vµo khèi 3.
Khèi 3 cã nhiÖm vô t¸ch sãng t¹o tÝn hiÖu mét chiÒu ®Ó ®a vµo bé
so s¸nh t¹o møc ®iÖn ¸p ra mét chiÒu ë møc logic 0, 1 cã thÓ tÝch hîp víi
bé xö lý sè.
§Ó thùc hiÖn t¸ch sãng ta dïng mét Diot D3 (1N4148) vµ tô läc C6(1F).
D4(1n4148), R8(1K), R9(1K) t¹o thµnh mét m¹ch ph©n ¸p cã nhiÖm vô bï
sôt ¸p tÝn hiÖu xoay chiÒu ®îc chØnh lu bëi D3.

A2 Ho¹t ®éng ph¸t hiÖn s¶n phÈm cña khèi C¶m biÕn

_ Chóng em sö dông 2 bé thu ph¸t hång ngo¹i (bé 1 vµ bé 2) ®Ó nhËn


biÕt sù xuÊt hiÖn vµ chiÒu di chuyÓn cña ñoái töôïng (®i vµo hay ®i
ra). C¨n cø vµo thø tù ch¾n c¸c ®Ìn hång ngo¹i mµ chóng em cã thÓ kÕt
luËn r»ng ñoái töôïng ®ã ®i vµo hay ®i ra .

Cô thÓ nh sau

116
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

§Çu thu1 §Çu ph¸t 2

Vµo

Ra

§Çu ph¸t 1 §Çu thu 2

_ Nh vËy ñoái töôïng ®i vµo vµ ®i ra theo 2 chu tr×nh kh¸c h¼n nhau,
ta sö dông sù kh¸c biÖt nµy ®Ó lËp tr×nh cho Vi diÒu khiÓn nhËn ra
chóng.

B) Khèi hiÓn thÞ

S¬ ®å nguyªn lý cña Khèi hiÓn thÞ nh sau:

Vi ®iÒu k h iÓn

89c 51

117
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

M« t¶:
_ 89C51 ®a ra 8 ch©n cña Port2, 4 bit ®Çu lµ 4 bÝt cao, 4 bÝt sau
lµ 4 bÝt thÊp. 4 bÝt cao vµ 4 bÝt thÊp ®îc gi¶i m· ®éc lËp qua IC gi¶i
m· 74LS47. TÝn hiÖu vµo IC 74LS47 qua c¸c ch©n A,B,C,D, vµ ra ë c¸c
ch©n OA, OB, OC, OD, OE, OF, OG. §Çu ra 74LS47 nèi víi LED 7
thanh ®Ó hiÓn thÞ sè thËp ph©n.

KÕt qu¶ thu ®îc lµ trªn LED 7 thanh ta thÊy ®îc gi¸ trÞ thËp ph©n cña
tÝn hiÖu ®Çu ra 89C51.

_ Trªn giao diÖn cña khèi hiÓn thÞ cßn cã 5 LED b¸o hiÖu tr¹ng th¸i
lµm viÖc cña hÖ thèng:
+Led 1: saùng baùo hieäu saûn phaåm ñi vao.
+Led 2: saùng baùo hieäu saûn phaåm ñi ra.
+Led 3: s¸ng chæ chieàu quay cuûa ñoäng cô (quay phaûi).
+Led 4: s¸ng chæ chieàu quay cuûa ñoäng cô (quay traùi).
+Led 5: saùng baùo hieäu relay ñoùng.
C¸c Led nµy ®Òu ®îc lÊy tÝn hiÖu ®iÒu khiÓn trùc tiÕp tõ Vi §iÒu
KhiÓn 89C51.

C) Khèi thiÕt bÞ chÊp hµnh

§Çu vµo : LÊy tõ 89C51.


§Çu ra :nèi víi ®éng c¬.
_ NhiÖm vô khèi chÊp hµnh:
Khèi nµy NhËn tÝn hiÖu ®iÒu khiÓn tõ 89C51 ®Ó ®iÒu khiÓn
chuyÒn quay ®éng c¬ (chiÒu dÞch chuyÓn cña b¨ng chuyÒn).

_ S¬ ®å khèi.

§iÒu khiÓn
Vi ®iÒu ®éng c¬
khiÓn chiÒu quay
®éng c¬

118
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

S¬ ®å m¹ch ®iÒu khiÓn chiÒu quay ®éng c¬.

_ M« t¶ ho¹t ®éng :

§Çu A, B lÊy tÝn hiÖu tõ 89C51.


+Khi A=1, B=0 , th× ®Çu ra cña m¹ch ®iÒu khiÓn sÏ ®Æt lªn ®éng
c¬ mét ®iÖn ¸p 1 chiÒu 7V  Lµm ®éng c¬ quay theo 1 chiÒu nhÊt
®Þnh.
+Khi A=0, B=1 , th× ®Çu ra cña m¹ch ®iÒu khiÓn sÏ ®Æt lªn ®éng
c¬ mét ®iÖn ¸p 1 chiÒu 7V ngîc cùc tÝnh víi trêng hîp tríc  Lµm ®éng
c¬ quay theo chiÒu ngîc víi trêng hîp tríc.
Nh vËy, víi viÖc ®iÒu khiÓn møc tÝn hiÖu ra cña Vi ®iÒu khiÓn
ta ®· ®iÒu khiÓn ®îc chiÒu quay cña ®éng c¬ theo ý muèn.

_ §éng c¬ ®îc lùa chän trong m¹ch øng dông nµy lµ ®éng c¬ 1 chiÒu.
§éng c¬ quay khi ®iÖn ¸p ®Æt vµo nã tõ 5V-12V. ChiÒu quay cña ®éng
c¬ thay ®æi khi ®æi vÞ trÝ 2 cùc ®iÖn ¸p ®Æt vµo.

119
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

D Khèi xö lý
D1 S¬ ®å ghÐp nèi:

U 1
8 1 0
7 P 1 .7 R XD 1 1
6 P 1 .6 TXD 3 0
5 P 1 .5 A L E /P 2 9
4 P 1 .4 PSEN 1 6
3 P 1 .3 W R 1 7
P 1 .2 R D
Khèi c¶m 2
1 P
P
1 .1
1 .0 P 2 .7
2 8
2 7
biÕn 15 P 2 .6 2 6
14
13
T1
T0
P
P
2 .5
2 .4
2
2
5
4
Khèi
IN T 1 P 2 .3
VC C _BAR
12
IN T 0 P 2 .2
2
2
3
2
HiÓn
P 2 .1
9
R ESET
P 2 .0
2 1
thÞ
3 2
P 0 .7 3 3
18 P 0 .6 3 4
C 2 X2 P 0 .5 3 5
Y 1 P 0 .4 3 6
C AP 19 P 0 .3 3 7
X1 P 0 .2 3 8
31 P 0 .1 3 9
R 1 C R Y STAL E A /V P P 0 .0
R E S IS T O R
C 3 C 4 89C 51

D2 M« t¶ chøc n¨ng , ho¹t ®éng

D2.1 M¹ch t¹o dao ®éng.


_ Ta duøng thaïch anh 11,0592 MHz gheùp theâm hai tuï goám 33p
ñeå taïo xung clock ñoàng boä cho toaøn heä thoáng.
D2.2 M¹ch Reset.
_ Trong øng dông nµy chóng em thùc hiÖn c¬ chÕ Reset nguån, tøc
lµ khi cÊp nguån cho hÖ thèng, Vi ®iÒu khiÓn seõ ®îc Reset ®Ó chuÈn
ho¸ ho¹t ®éng. M¹ch Reset thùc hiÖn th«ng qua m¹ch RC, khi cÊp nguån,
sÏ cã xung møc cao ®a vµo ch©n RS cña 89C51 trong h¬n 2 chu kú m¸y
 Vi ®iÒu khiÓn Reset ho¹t ®éng.

D2.3 NhËn d÷ liÖu vµo tõ khèi c¶m biÕn:


ÔÛ khèi c¶m biÕn cã 2 bé thu ph¸t tÝn hiÖu hång ngo¹i lµm nhiÖm
vô ph¸t hiÖn ñoái töôïng. Hai ®Çu b¸o hiÖu cña 2 bé thu ph¸t ®îc ®a vµo
Vi ®iÒu khiÓn (Ch©n P1.0 vµ ch©n P1.1). Nh ®· tr×nh bµy ë trªn : Ñoái

120
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

töôïng ®i vµo hay ®i ra theo 2 chu tr×nh kh¸c nhau, nhê ®ã mµ ph©n
biÖt ®îc. Sau khi ®îc nèi víi Vi ®iÒu khiÓn, c¸c th«ng tin vÒ 2 qu¸ tr×nh
nµy ®îc ®a vµo khèi xö lý nhËn biÕt vµ ra quyÕt ®Þnh cho khèi chÊp
hµnh.

D2.4 KÕt nèi víi Khèi hiÓn thÞ:


_ Dïng Port 2 (8 bit )cña 89C51 ®Ó xuÊt d÷ liÖu cÇn hiÓn thÞ . D÷
liÖu cÇn hiÓn thÞ chÝnh lµ sè s¶n phÈm. §©y lµ 8 bit BCD nµy gåm 4
bÝt cao (m· ho¸ hµng chôc )vµ 4 bit thÊp (m· ho¸ hµng ®¬n vÞ), 8 bÝt
nµy ®îc xö lý trong khèi hiÓn thÞ.

D2.5 KÕt nèi víi Khèi chÊp hµnh:


_ Dïng 2 ch©n cña 89C51 ®Ó ®iÒu khiÓn khèi chÊp hµnh (®iÒu
chØnh chiÒu quay ®éng c¬).
P0.2, Pin37: Bit dong role cho sp di vao (khi ®ã P0.2 se cã møc logic
cao)
P0.6, Pin36: Bit dong role cho sp di vao (khi ®ã P0.2 se cã møc logic
cao)

D3 LËp tr×nh cho Vi §iÒu KhiÓn.

D3.1 M« t¶
_ H·y xÐt chu tr×nh ñoái töôïng ®i vµo. C¸c ch©n P1.0, P1.1 sÏ lÇn lît
tr¶i qua 4 giai ®o¹n sau:
P1.0 =0; P1.1=1 (§îi) P1.0 =1; P1.1=0 (Vµo 1) (®Ìn 1 bÞ
ch¾n)
P1.0 =1; P1.1=1 (Vµo 2) (2 ®Ìn ®Òu chÞ ch¾n) P1.0
=0 ; P1.1=1 (Vµo 3) (®Ìn 1 th«ng, ®Ìn 2 ch¾n) P1.0 =0; P1.1=0
(Vµo 4) (2 ®Ìn cïng th«ng).
VËy s¶n phÈm vµo th× hÖ thèng lÇn lît chuyÓn tr¹ng th¸i: §îi
Vµo1  Vµo 2  Vµo 3  Vµo 4

_ T¬ng tù s¶n phÈm ra theo chu tr×nh: §îi  Ra 1  Ra 2  Ra 3 


Ra4 chóng ta cã

_Mçi 1 giai ®o¹n sÏ t¬ng øng víi 1 thñ tôc trong ch¬ng tr×nh. Ch¬ng
tr×nh chÝnh sÏ lÇn lît kiÓm tra tÝn hiÖu Bé c¶m biÕn ®a vµo cã lÇn lît

121
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

tr¶i qua c¸c thñ tôc nµy kh«ng, trªn c¬ së ®ã Vi ®iÒu khiÓn ®a ra quyÕt
®Þnh.
ÖÙng víi mçi ñoái töôïng ®i vµo, Vi ®iÒu khiÓn sÏ t¨ng gi¸ trÞ thanh
ghi sè lîng lªn 1 ®¬n vÞ. ÖÙng víi mçi ñoái töôïng ®i ra, Vi ®iÒu khiÓn
sÏ gi¶m gi¸ trÞ thanh ghi sè lîng 1 ®¬n vÞ.

D3.2 Ch¬ng tr×nh cô thÓ:


Lu ®å thuËt to¸n:

122
BEGIN

b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45


Wait
0,0

§
0,0

S
S §
1,0 Vµo 1
S §
0,1 Ra 1 1,0

0,1

§
1,0
§
0,1
S
S
1,1
1,1 Vµo 2
§
Ra 2
§ 1,1
1,1

§
§ 1,1
1,1
S
S
S
S 0,1
1,0
Vµo 3
Ra 3 §
§
0,1
1,0

§
§ 0,1
1,0
S
S
S
S 0,0
0,0
Ra 4 Vµo 4 §
§

END
123
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

BEGIN

Wait

Out In

Decrease Increase

Repeat

124
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

Ch¬ng tr×nh:

#include <sfr51.inc>
;===============================================?======
;======================Khaibao==========================
;====================================================== Vao
equ 80h ; Bit bao hieu sp vao (P0.0, Pin39)
Ra equ 81h ; Bit bao hieu sp ra (P0.1, Pin38)
Divao equ 82h ; Bit dong role cho sp di vao (P0.2, Pin37)
Dira equ 83h ; Bit dong role cho sp di ra (P0.3, Pin36)
Dong equ 84h ; Bit dong role de rot bia (P0.4, Pin35)
Soluong equ 00h ; R0 la thanh ghi soluong

Cseg at 0000h ; Thiet lap bo nho tai 0000h

mov psw,#00h ; Thiet lap tu nho chuong trinh chon bank 0

clr Vao ; Thiet lap Bit bao hieu


clr Ra
clr dira
clr divao
clr Dong
mov soluong,#00h ; So luong ban dau = 0
mov P2,#00h ; Dat gia tri ban dau cho P2 la 0

;
======================================================;====
===================Thu tuc wait======================
;==================================================?=== setb
divao

wait: ; Thu tuc doi sp di qua

; P1.0(Pin1): Dat den cam bien 1


; P1.1(Pin2): Dat den cam bien 2

mov p1,#FFh ; Dat gia tri ban dau cho thanh ghi P1 la FF
nop
mov a,p1 ; Lay tin hieu dua vao
mov b,a ; Cat noi dung P1 vao thanh b
xrl a,#FFh ; P1 co khac voi gia tri khoi tao ban dau
;khong
jz wait ; Nhay toi wait neu khong khac

125
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

mov a,b ; Lay lai gia tri da luu


xrl a,#FEh ; Co phai la qua trinh 'vao1' khong
jz vao1 ; Nhay toi 'vao1' neu dung
mov a,b ; May lai gia tri da luu
xrl a,#FDh ; Co phai la qua trinh 'ra1' khong
jz ra1 ; Nhay toi 'ra1' oeu dung

sjmp wait ; Quay tro lai urang thai cho neu khong phai
;hai truong hop tren

;======================================================
;======================Qua trinh vao======================
;======================================================
vao1:
mov a,p1 ; Lay mau tin hieu vao
mov b,a ; Luu gia tri mau
xrl a,#FEh ; Con la 'vao1' khong?
jz vao1 ; Cho trang thai tiep theo neu van con la 'vao1'

mov a,b ; Lay gia tri da luu


xrl a,#FCh ; Co phai la 'Vao2' khong?
jz vao2 ; Nhay toi 'vao2' neu dung

sjmp wait ; Huy bo trang thai, quay lai wait

vao2:
mov a,p1 ; Lay mau tin hieu vao
mov b,a ; Luu gia tri mau
xrl a,#FCh ; con la 'vao2' khong?
jz vao2 ; Cho trang thai tiep theo neu van la 'vao2'

mov a,b ; Lay gia tri da luu


xrl a,#FDh ; Co phai la 'vao3' khong?
jz vao3 ; Nhay toi 'vao3' neu dung

sjmp wait ; Huy bo trang thai, quay lai wait

vao3:
mov a,p1 ; Lay mau tin hieu vao
mov b,a ; Luu gia tri mau
xrl a,#FDh ; Con la 'vao3' khong?

126
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

jz vao3 ; Cho trang thai tiep theo neu van la 'vao3'

mov a,b ; Lay gia tri da luu


xrl a,#FFh ; Co phai la 'vao4' khong?
jz vao4 ; Nhay toi 'vao4' neu dung

sjmp wait ; Huy bo trang thai, quay lai wait

vao4:
setb vao ; Dat bit bao hieu vao

inc Soluong ; Tang so luong len 1


lcall hienthi

mov R6,#FFh ; Khoi tao gia tri cho thu tuc tre
mov R7,#FFh
Lcall Tre ; Tre de quan sat
clr Vao ; Xoa bit bao hieu vao

cjne R0,#02h,tiepvao ; Da du 2 chai chua?


clr Divao ; Dung chu trinh dua sp vao

setb Dong ; Bat dau qua trinh rot bia

mov R6,#FFh ; Khoi tao gia tri cho thu tuc Tre
mov R7,#FFh
lcall Tre ; Tre de rot bia

clr Dong

setb dira

ljmp wait
tiepvao:
ljmp wait ; Cho qua trinh moi

;
======================================================;====
===================Qua trinh ra======================
;======================================================

ra1:
mov a,p1 ; Lay mau tin hieu vao

127
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

mov b,a ; Luu gia tri mau


xrl a,#FDh ; Con la 'ra1' khong?
jz ra1 ; Cho trang thai tiep theo neu van la 'ra1'

mov a,b ; lay gia tri da luu


xrl a,#FCh ; Co phai la 'ra2' khong?
jz ra2 ; Nhay toi 'ra2' neu dung

ljmp wait ; Huy bo trang thai, quay lai wait

ra2:
mov a,p1 ; Lay mau tin hieu vao
mov b,a ; Luu gia tri mau
xrl a,#FCh ; Con la 'ra2' khong?
jz ra2 ; Cho trang thai tiep theo neu van la 'ra2'

mov a,b ; lay gia tri da luu


xrl a,#FEh ; Co phai la 'ra3' khong?
jz ra3 ; Nhay toi 'ra3' neu dung

ljmp wait ; Huy bo trang thai, quay lai wait

ra3:
mov a,p1 ; Lay mau tin hieu vao
mov b,a ; Luu gia tri mau
xrl a,#FEh ; Con la 'ra3' khong?
jz ra3 ; Cho trang thai tiep theo neu van la 'ra3

mov a,b ; lay gia tri da luu


xrl a,#FFh ; Co phai la 'ra4' khong?
jz ra4 ; Nhay toi 'ra4' neu dung

ljmp wait ; Huy bo trang thai, quay lai wait

ra4:
setb Ra ; Dat bit bao hieu ra

dec Soluong ; Giam so luong di 1


lcall hienthi ; Hien thi

mov R6,#FFh ; Khoi tao gia tri cho thu tuc Tre
mov R7,#FFh
lcall Tre ; Tre de quan sat

128
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

clr Ra ; Xoa bit bao hieu ra

cjne R0,#00h,tiepra
clr dira

mov R6,#FFh ; Khoi tao gia tri cho thu tuc Tre
mov R7,#FFh
lcall Tre ; Tre de dong co dung quay, dao chieu quay

setb divao

ljmp wait
tiepra:
ljmp wait ; Cho qua trinh moi
;======================================================
;===================Thu tuc Tre==========================
;====================================================== Tre:
DJNZ R6,Tre
NOP
DJNZ R7,Tre
REt

;
======================================================;====
===================Hienthi=========================
;======================================================
hienthi:
mov A,soluong ; chuyen noi dung thanh thanh ghi soluong vao
;thanh tong
mov B,#10
Div AB
SWAP A
ADD A,B
MOV p2,A
RET
END

129
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

PhÇn I:
Tæng quan vÒ c¸c thiÕt bÞ Vi Xö Lý
Ch¬ng 1 :
Giíi thiÖu chung vÒ chÝp AT89C51
I. Giíi thiÖu AT89C51....................................................................................................................1
I.1 M« t¶ c¸c ch©n...........................................................................................................2
I.2 C¸c chÕ ®é ®Æc biÖt...............................................................................................5
I.2.1 ChÕ ®é nghØ......................................................................................................5
I.2.2 ChÕ ®é nguån gi¶m............................................................................................6
I.3 C¸c bÝt kho¸ bé nhí ch¬ng tr×nh...............................................................................6
I.4 Tæ chøc bé nhí...........................................................................................................8

Ch¬ng 2:
bé nhí ngoµi (RAM, ROM) - c¸ch ghÐp víi VXL

II. Gheùp noái vôùi boä nhôù ngoaøi......................................................................10


II.1 Bé nhí b¸n dÉn........................................................................................................10
II.2 GhÐp nèi t¨ng dung lîng bé nhí..............................................................................13
II.3 LËp tr×nh................................................................................................................14
II.4 Giíi thiÖu bé nhí EEPROM nèi tiÕp......................................................................18

Ch¬ng 3
Giíi thiÖu vÒ ic chuyÓn ®æi ad – da
c¸ch ghÐp nèi chóng víi vi xö lý

1. SÔ LÖÔÏC VEÀ CAÙC PHÖÔNG PHAÙP BIEÁN ÑOÅI AD.........................................27


1.1. Bieán ñoåi AD duøng boä bieán ñoåi DA..............................................................27
1.1.2. Boä bieán ñoåi AD xaáp xæ lieân tieáp...........................................................29
1.2. Boä bieán ñoåi Flash AD........................................................................................31
1.3. Boä bieán ñoåi AD theo haøm doác daïng leân xuoáng (tracking ADC)...............31
1.4. Boä bieán ñoåi AD duøng chuyeån ñoåi aùp sang taàn soá...................................32
1.5. Boä bieán ñoåi AD theo tích phaân hai ñoä doác...................................................32

Ch¬ng 4
Giíi thiÖu mµn h×nh tinh thÓ láng LCD
c¸ch ghÐp nèi víi vi xö lý
I/ KiÕn thøc chung vÒ LCD (Liquid Crystals Display)..........................................................41
1.Mµn h×nh tinh thÓ láng (LCD) lµ g× vµ ph¹m vi øng dông?...................................41
2. C¬ së vËt lý cña LCD................................................................................................42
II/ XÐt LCD cô thÓ Hitachi HD44780......................................................................................44
1. CÊu tróc cña LCD.....................................................................................................44
1a. Giíi thiÖu s¬ ®å ch©n LCD ...............................................................................44
1b. CÊu tróc bé nhí trong LCD..................................................................................47
2. TËp lÖnh cña LCD....................................................................................................47
2a. Kh¶ n¨ng hiÓn thÞ cña LCD................................................................................47
2b. TËp lÖnh cña LCD..............................................................................................48
3. C¸c øng dông hiÓn thÞ trªn LCD...............................................................................51

130
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

3a. ThiÕt lËp chÕ ®é hiÓn thÞ cho LCD.................................................................51


3b. HiÓn thÞ ký tù trªn LCD....................................................................................52
3c. HiÓn thÞ ký tù t¹i 1 vÞ trÝ bÊt kú trªn LCD.......................................................55
3d. HiÓn thÞ ch÷ ch¹y b»ng LCD.............................................................................56
3e. Con trá c¬ së........................................................................................................57
3f. ChÕ ®é nhËn d÷ liÖu..........................................................................................58
3g. HiÓn thÞ ký tù tuú ý trªn LCD theo ®Þnh nghÜa ngêi dïng...............................59
3g. LCD trao ®æi víi bªn ngoµi b»ng 4 bit...............................................................60
3h.§äc th«ng tin vÒ LCD...........................................................................................61
3g. Chu tr×nh thêi gian trªn LCD...............................................................................62

Ch¬ng 5:
giíi thiÖu c¸c ic hç trî vµo ra ( 8255 - 8251)
c¸ch lËp tr×nh c¸c cæng

GIAO tiÕp song song dïng vi m¹ch 8255

I. Giíi thiÖu vi m¹ch 8255A........................................................................................................71


II. S¬ ®å ch©n, S¬ ®å logic, Chøc n¨ng c¸c cæng cña 8255A..................................................71
III. CÊu tróc bªn trong vµ ho¹t ®éng cña vi m¹ch 8255A........................................................73
1. S¬ ®å khèi cÊu tróc bªn trong cña vi m¹ch 8255A....................................................73
2. Ho¹t ®éng cña vi m¹ch 8255A...................................................................................73
3. Tõ ®iÒu khiÓn..........................................................................................................74
3.1. CÊu tróc cña tõ ®iÒu khiÓn..............................................................................74
IV. Giao tiÕp g÷a Vi xö lý víi 8255A........................................................................................80
1. Giao tiÕp kiÓu I/O...................................................................................................80
2. Giao tiÕp kiÓu bé nhí................................................................................................81
I. LÖU ÑOÀ VAØ CHÖÔNG TRÌNH TRUYEÀN DÖÕ LIEÄU.....................................89
1 Lu ®å truyÒn d÷ liÖu................................................................................................89
2 Lu ®å nhËn d÷ liÖu...................................................................................................90
3 Ch¬ng tr×nh nhËn d÷ liÖu.........................................................................................93

GIAO TIEÁP NOÁI TIEÁP DUØNG VI MAÏCH 8251


I TruyÒn th«ng tin nèi tiÕp.......................................................................................................95
II. Vi m¹ch USART 8251:...........................................................................................................98
1. S¬ ®å ch©n vµ s¬ ®å khèi.......................................................................................98
2 C¸c thanh ghi.............................................................................................................101
a C¸c thanh ghi ®iÒu khiÓn....................................................................................102
b Lêi lÖnh................................................................................................................103
c C¸c thanh ghi tr¹ng th¸i..........................................................................................104
III. øng dông 8251A ®Ó truyÒn th«ng tin nèi tiÕp............................................106
1 TruyÒn th«ng tin nèi tiÕp gi÷a 2 Kit Vi xö lý.........................................................106
Löu ñoà khôûi taïo 8251A........................................................................................................107
2 TruyÒn th«ng tin nèi tiÕp gi÷a Kit VXL vµ m¸y tÝnh...........................................108

phÇn ii
m¹ch øng dông

131
b¸o c¸o bµi tËp lín m«n Vi xö lý - nhãm I - Líp §T11.K45

vi ®iÒu khiÓn trong d©y chuyÒn c«ng nghiÖp

I. §Æt vÊn ®Ò..........................................................................................................................114


II. S¬ ®å khèi hÖ thèng............................................................................................................115
III) ThiÕt kÕ............................................................................................................................115
A) Khèi c¶m biÕn:.......................................................................................................115
A1. HÖ thèng ph¸t:..................................................................................................115
A2 HÖ thèng thu:.....................................................................................................117
A2 Ho¹t ®éng ph¸t hiÖn s¶n phÈm cña khèi C¶m biÕn..........................118
B) Khèi hiÓn thÞ.........................................................................................................119
C) Khèi thiÕt bÞ chÊp hµnh........................................................................................120
D Khèi xö lý.................................................................................................................122
D1 S¬ ®å ghÐp nèi:................................................................................................122
D2 M« t¶ chøc n¨ng , ho¹t ®éng..............................................................................122
D2.1 M¹ch t¹o dao ®éng...................................................................................122
D2.2 M¹ch Reset................................................................................................122
D2.3 NhËn d÷ liÖu vµo tõ khèi c¶m biÕn:...................................................123
D2.4 KÕt nèi víi Khèi hiÓn thÞ:.....................................................................123
D2.5 KÕt nèi víi Khèi chÊp hµnh:.................................................................123
D3 LËp tr×nh cho Vi §iÒu KhiÓn..........................................................................123
D3.1 M« t¶.........................................................................................................123
D3.2 Ch¬ng tr×nh cô thÓ:...............................................................................124

132

You might also like