B ả n (Ịuyến thuộc HEVOBCO - K hà xuất b ản Giáo dục
1 7 -2 00 7/C X B /7 2-2 21 7/(;i)
Mã sô': 7B 6G lM '-]D A I
LỜI NÓI ĐẦU
f)áy là lập hai cìia bộ sách ‘‘Cấu Iriic, lập trình, ghép nổi và ứng dụng vi diều khiển". Tài liệu
này giới thiệu về ghép nối với các ihiếl bị ngoài (hiến ihị, bàn phím, nhớ ngoài, cổng mở rộng (song
song và nổi íiếp)) và các hệ VDK dùng Irong do lường, điều khiển lự động và truyền thông.
Tìcp theo lập một, ĩập hai gổin 8 chương. Trong mỗi chươỉig, đều có mô tả các thiết bị ngoài,
cách glìCỊ') noi và lập trình \’ới các ví dụ dể chạy thử mô phỏng Irên PINNAQ-E và PROTEUS.
('liuoỉiíỊ II (ỉliép nối và ứng dụnu dèn LED.
('htioỉỉ^ 12 Cìhép nối \ à ihm dụnu dèn LHD ma trận.
CliưííỊio 13 Ghép nối với màn hình tinh ihè long (LCD).
Chưoíìíỉ 14 Ghép nối với bàn phím.
Chương í 5 Ghép nối với bộ nhớ ngoài của vi diều khiển 8051/8052.
Clií(' vối ;
"hông sô^ 1 là giá trị của dữ liệu (dạng HKX) dưa vào thanh ghi chứa A.
- ''hỏiig sô^ 2 là chỉ sô^ của cổng VĐK.
Plin sau của chương trình trên làni dỏn LK13 sáng dần từ Ị ) h ả i qua trá i (dùng lệnh
RLC A cho tỏi khi c ” 1. Có thể thay lệnh RLC A bàng lộnh 1{1. A dổ dịch và lặp lại một sô'
lần (Ihy bằng lệnh MOV RO, #N lần và DJNZ RO, 1AP).
Vidụ 11. Ib là chương trình của ví dụ 11.la dạng đuôi. l.ST sau khi hỢp dịch trong
PINN.CLE.
Ti ví dụ trên, ta có thể viết chương trình cho LED đơn sáng dần dịch về bên phải
(dùng ậnh RRC A) hay bên trái (dùng lệnh RLC A).
; Ví d 11,1 a: Chương trình dùng
macr(@\VritePs <1,2>
mov a, #11 mov Í*I2, a
enclmc
ORGOOH
@\VritePs 55h, 0
call delay
@WritcPs OAAh, 1
call clelay
@WiitcPs OOh, 2
call delay
@WritePs Olh, 3
lênh gộp hiển thị trên Ll-D rời
lap:
; lệnh gộp ghi dữ liéu
; dữ liệu
; ghi ra cổng PI2
; kết thúc lệnh gộp
; ghi 55h ra po
; ghi OAah ra P1
; ghi OAah ra P 1
call dclay
rỉc a
lĩiov
a
jnc lap
sịnip $ ; kết thúc chờ
delay; mov 1-0, #250
dell: inov 11, #200
del2: dịnz rỉ, del2
djnz lO, dell
rut
end
; ghi OAah ra P1
•
; Ví (1 11. Ib; Dạng đuôi. LST cùa chương trình dùng lệnh gộp hiển thị trên I.El) cỉơn .
1 (XX)
6 (XX)
ORG OOH
7 000 MACLEVEL 00017
000
mov a. #55h
7 002
mov PO. a
7 004 MACLEVEL 0000
8 004
call delay
9 007 MACLEVEL 0002
9 007
nnov a, #OAAh
9 009
mov p 1, a
9 OOB MACLEVEL 0000
; VÍ dụ 11. la. LHĐR, hiến thị trcn LHD rời
; dữ liệu
; ghi ra cổng TO
; dữ liệu
; ghi ra cổng Pỉ
.
10
11
11
11
11
12
13
13
13
13
14
15
16
17
18
19
20
21
22
23
OOOB
call dclay
OOOE MACLEVIÍL 0003
OOOE
mov a. #()()h
0010
movP2, a
0012 MACLEVBL (XXX>
0012
calldclay
0015 MACLEVIÍL 0004
0015
mova. #01h
0017
movP3. a
0019 MACLEVEL oooc I
0019 lap: call delay
OOIC
rica
00ID
movP3, a
001F
nclap
0021
sjmp$
0023 delay; mov rO, #250
0025 dell:m ovrl, #200
0027del2;djnzrl,del2
0029
djnzK), dcll
002B
ret
: dữ liẹii
; ịilii ra cciiiíi P2
; tiữ liệu
; ghi ra cong P3
kèt thúc chờ
11.1.4. Lập trinh điểu khiển LED rời trong các biển quảng cáo
'Vối ví dụ 11.1 trên, chúng la có thể vièt chương t n n h đưa hiên thị như mong mucn:
- Cho tấ t cả các đén nôi vâi inột cổng nào dó sáng khi dưa A = #OFFh.
- Cho mỗi đèn sáng lần lượt từ trái qua phải dùiig lệnh SE'PB c và dịch phải qi:a c vối
lệnh RRC A.
- Cho mỗi đèn sáng lẩn lượt từ phải qua trái dùng lệnh SET15 c và (iịch trái qua 'C với
lệnh RLCA.
- Cho hai đèn sáng dồn từiiíĩ dèii từ bai dau vào giũa vớì các giá trị dưa trực tiêip vào
thanh ghi A n h ư 1000000115. OlOOOOlOH, 00l()()10015, OOOl lOOOB.
- Cho các đèn sáng vlồn lừ hai dầu vàu giữa VỨI các giá t rị A !à lOOOOOOlB, 1 lOCOOl IB,
lllO O lllB ,llllllllB ,
- Cho các đèn sáng dồii tù Riữa ra liai cliìu vỏi các giá trị A là OOOnOOOB, OOlllllOOB,
O llllllO B , l l l l l l l l R .
Có ba cách viêt chương tiìnli hiển thị dộiig (dèii sáng chạy) tièii các LED của các- biển
quảng cáo là:
- Đưa các giá trị (0 cho uit và 1 cho sáng) ti iíc tiêp ra các cổng.
- Thành lập một b ảng dữ liệu, rồi đọc bàng đổ đưa ra cổng (ví dụ 11.2).
- Dùng lệnh logic và vòng lặ|) (ví dụ 11.1 và ví dụ 11.3), còn có thể dùng lệnh ORL>.
; Ví du 11.2; Chương trình sán.íz dón vào piữa
org OOh
Ib:
mov dptr, #bvi!iiĩ
Ibl:
mova, #00h
movc a, @ a+clpir
8
; Ví du 11.3: Chương irình sáng dồn 16 bit
macro @san^dori <1.2, 3>
mov K). #lh
mov r2, #01h
mov plL #f2
mov pO, a
ỉcall delay
inc dptr
cjne a, #Offli, Ibỉ
sjmp Ib
(lelay:
inov r7, #25
nhanO:
mov R6 , #20
ĩiliím 1:
inov r5, #250
djnz r5, s
djnz 1'6 , n h a n l
djĩiz r7, nhanO
rel
hang: DB (XXX)OOOOB
DB 1000000IB
DB ỉ 100001IB
I)B lllO O lllB
DB l l I l l i l l B
DBOOOllOOOB
DBOOIlllOOB
D B O lliilỉO B
DB l l l l ỉ l l l B
DB (X)OOOOOOB
end
hay OOH
hay 81H
hay 0C3H
hay 0H7H
hay OPTH
hay 18H
hay 3CH
hay 7EH
hay 0FF1I
hay 001 ỉ
mov pl3, r2
kip!4: acall deỉíiy
niov a, K)
ri a
mov rO, a
acid a. r2
mov r2, a
mov pl3, a
acaỉl deỉay
mov a. r2
cjne a, #Orni, lap!4
cndinac
Ị
org OOh
! main: @sangdon 0, OOh, 2, 1
((i sangdon 2, Offh, 0, 2
@sangdon 2, OOh, 0, 3
sangdon 0, Ofíli, 2, 4
ljmp main
delay: mov xl, #25
nhanO: mov r6. #20
nhanl: mov r5, #250
djnz r5, s
djnz r6, nhanl
djnz r7, nhanO
rei
cnd
sáng cổng
sáng cổng
sáng cổng
sáng cổng
P2
PO
PO
P2
Trong ba cách trôn, cách đưa dử liộu Irực tiô'p khôiig thể dùng cho một bảng dữ liệu
dài. Cách dùng báng là thông dụng nhất, cho mỗi trường hỢp, nhất là cách hiển thị khó,
không có giải th u ậ t xuc định. Cách dùng lộnh vỏi giải th u ật dôi khi ngắn gọn. Hiển thị dồn
(sang ti’ái hay sang phải). Còn có giải thuật khác là dùng lộnh logic ORL giá trị đưa ra
hiến thị cù xO và giá trị dịch một bit yO (bởi lệnh SETB c và RLC A).
Đòn liEI) rời trên, ngoài chỉ thị íỊÌá tri của thanh ghi hay ô ĩihớ của VĐK, còn hay
dùng (iổ quảng cáo hay điểu khiển dỏn giao thòng tại các ngả dường. Khi đó, phải mắc đèn
côn^ suât lớn với các tần g khưẽch dại côíìg suất dùng tranzit() cỏiig suíXt.
Các chương trìn h trê n có th ể thay đoì thời gian trỗ Dolay dể thòi gian sáng hay tắ t tuỳ
ý. Vói đèn diổu khiển giao thông, có lúc Ị ìh ííi clio hai dỏn sáng dồiìg thòi (đỏ, vàng) để chỉ
sii rh uan bị chuyển luồng giao thông hav chuyển dèn (đỏ sang xanh hay xanh sang vàng
roi tlỏì. Người ta còn đưa thòi gian dôni ngưỢc từ thời gian sáng tôì đưa cho mỗi đèn về 0 và
hiến thị sô^ dếni dạng thậj) Ị)hân cho các dèĩi ílể người di đường biôt và chuẩn bị đi hay
dừng tại các giao lộ (xem phần 11.2 cho hieii thị LEl) 7 doạii).
11.1.5. Thiết kê mạch LED đơn và chạy chương trinh trên mạch mô phỏng
Trong thiết kế và chạy mô Ị)hỏiig sơ đồ íliộn tử, inới xuâL hiện chương trình mô phỏng
PROTKUS có cả mô phỏng mạch với vi (liểu khiển các loại như MCS-51 của INTEL, PIC
của Microchip, AVR của ATMKL, MCG8 H 1 1 cưa Motorola v.v... Chương trìn h trê n còn mô
phóng dưỢc các mạch sc/ và tương lự thay cho Workbcnch và Circuit m ak er hay Protel.
2. c-m u c..Đ K H iỂ N ữ >
Nhược diêm cơ ban của PROTEƯS là không hỢp dịch dược các ngôn ngữ khác lìhau trôĩì
giao diện, mà chỉ chạv mô phỏng được chương trình dạng duôi.HKX. Muôn chạv dưíỉc mạch
VĐK các loại, ta phải:
- Thiết kế mạch nguyẽn lý với chương trình ISIS.
- Viết chương trình và hỢp dịch th àn h file. HKX với các chương trình hợj) dịc.i iương
ứng với ngôn ngữ dó bằng cách vào tệp Labcenter/Proteus/Tool/ASEM5l
Ví dụ:
- PINNACLE cho họ MCS-51 của INTEl. hay ASEM51.
- AVR STUDIO cho AVR cua ATMEL.
- MPASM cho PTC của Microchip.
Ngoài các hỢp ngủ, còn các ngôn ngữ bậc cao (ngôn ngủ c , C++, PASCAL, C51 và R51
củng dịch ra tệp đuôi. HEX để chạy trên PROTEUS.
1. Chương tr ìn h P R O T E U S
PROTEUS có giao diện và 4 th a n h công cụ như hình 11.3, 11.4 và ll.õ .
PAe
Vievw
C d it
“ d'isí"Ẽâ
Í-3^ÍB
»*ĩũ
L lb rđ ry
T e e is
V r
o
^
C wM Qn
G r a e tt
S o u rc e
\W n i l ‘-^“í
\ \ù lù m
âị- " ã
ĩỉì ìữ.
s
i>
^
c^buo
T cm (iL o(«
5 v » te r w
I a ae Oi
_______ ____
A>
B
____
/
ã i
•
• •
tlB%>
'í'
V
;H ộ p h ic n tỉiiị h ìn h ỉin h :kiộn. ; ; ; ;
H ộ p h ic n ứ iị d a i\h sậệlỊ lĩn h kiiận
c
o
-►
t
11
*■ ẩ !»• I 11 « J » I
ISBHL&dŨÂâu.
Hình 11.3. Giao điện của PROTEUS
Công dụng của các th a n h công cụ như sau:
- Thanh công cụ số 1 d ù n g để tạo trang, lưu giữ, sao chép, phóng to, th u nhỏ, ícm và
in v.v... các tra n g th iết kế.
- Thanh công cụ số 2 dù n g để chọn các vi mạch ra danh sách linh kiện, vẽ các đưòing
dâv, ghi các n h ã n v.v...
- Thanh công cụ sô' 3 dù n g để quay 0“, 90“, 180“ các linh kiện và
tên nhãn.
- Thanh công cụ số 4 d ùng để chạy chương trìn h mô phỏng.
rên và công dụn g từ n g n ú t trong nhóm các th an h ghi trê n
trìn h bày ỏ cíc hì nh
vẽ ở trên.
10
i CTWjt..t»KH«ỂN«B
4- Thanh sỏ^ 1
n
íỉ^Cỉi Ỗ Q
ĩ ĩiti
1
2
3
^
^ Q ^ữ S E Q H
4
• C ụm
1:
• Cụm
2:
In cá Irang, chọn v ù n g in tuỳ ý
• Cụiìi
3:
Chia ìưới điểm trang t h iế t k ế
• Cụm
‘t:
5
6
Ỉ> È Í^
7
Tạo n h a n h một trang th iết kế, mở trang thiỏt kê đã tạo, lưutrang th iết ké
Zooni linh kiện vể giửa trang, phóng to trang, thu nhó trang, fix trang,
zoom v ù n g t u ỳ chọn
• Ciim 5: c á t , copy. p a ste trang
• Cụni 6: Copy, m ove, quay, xoá linh kiện trên
• Cụm 7; Chỉ d ù n g biểu tưỢng đầu, chọn linh kiện
4- Thanh sô' 2
í>
+ ••• ^ 0 ^ ẩ D-^ oa 0 ■?-.s / □ 0
1 2
3
4
5
6
7
8
9
co A Ẽ 4-
10 11 12 13 14 lõ 16 17 18 19 20 21 22 23
1. C o m p u te r cho p h é p chọn lin h k iệ n sa u khi nháp nút p ở hộp ih o ạ i D E V IC E S
2. D iểm nôi
3. Tạo n h ã n củ a đ ư ờ ng dáy: n h ắ p trái chuột lên dây dẫn và đặt tên
4. Ghi ván bản; n h ắ p
trái c h u ộ t và v iế t
õ. Tạo bus: n h ắ p trái kéo đôn cliêm khác, lại nhắp trái rồi nháp phải. P h ả i đặt label
cho c ù n g t ê n cho các d ây đ.ui sử d ụ n g c h u n g bu3
6. Mạch phụ
7. N h á p trái lê n lin h kiện đê xem E d it compoueiit
8. N guồn, đất, bu s,...
9. C hân lin h kiện
10. S im u la t io r ' ỉraph; mô p h ỏ n g h ìh h vẻ
11. T ape recorder, ghi b ă n g từ
12. Cìenerator: DC, x u n g , sin ,...
13. V oltage Probo, g iô n g v ôn k ế t h ư ò n g n h ư n g rhỉ ró 1 dẩu d;'iy, hiện sô' trực tiếp
11. C u ren t Probo, n h ư trên n h ư n g ch o giá trị dòng điộn
15. O ụng cụ áo; VÔIÌ kè* AC, DC. a m p e kê AC, D(',..
16. Vẽ đư ò ng 2D
17. Vẽ hộp 2D
18. Vẽ đư òng trò n 2D
19. Vẽ cu n g tròn 21)
20. Vẽ đưòng c o n g 2D
21. Text 21). n h á p trái vào t r a n g và type
22. Ký hiệu h ìn h v ẻ 2D
23. D ánh đấu ch o gôc linh kiện
i- Thanh sô' 3
c
o
^
í
Q u a y trá i, p h ả i, đôi xứng chân r.íĩang dọc iinh kiện tr ê n hộp h iể n thị
lin h kiện
Hình 11.4. Các thanh còng cụ 1, 2 và 3 của giao diện PROTEUS
11
!►
II
Đ icu khiến síart, step by slep. pause, stop của quá trình mô phĩng
( 011 inội thanh tooỉbar
ở giữa
như trên hình, nhưng tluinh này clìù yếu dùng licn quan đ ế n ạo
mạch iiì. ta không để cập ờ dây.
Hinh 11.5. Thanh công cụ số 4 để chạy chương trình
2. T h iế t k ế m ạ ch n g u y ê n lý
V ới các núm trong các th an h công cụ Irên, ta đã thiết kế đưỢc bản võ của sơ đc ngtyên
lý của mạch hiển thị 16 LED đơn nôì với hai cổng 1^0 và P2 như hin h 11.6.
RI
30CKỈ
R8
R1
D>aa
PQ.U**ỈH
P02if^
P0J(f>tì3
PQMMữ*
pasỉf>»
PD.7/AW
TOHỈ
i- ^6
f2D
’/e
P2.i/>e
P
2^A
O
r^a-A
ti
PZ.WAG
f2SỈA
O
r2iBỈAU
P27/A»
í tOT3
:.iz f12
^1*
Fp3ạ.iV
íyfurxi»p
12
paaT
rĩĐ
P33w
n
^3 *.7D
f 15
f3*n
P1.T
P37/W
ATa^jS
tTExl^
Hình 11.6. Mạch hiển thị 16 đèn LED ròi
Trong hộp linh kiện (ấn chữ p/micro controller), chúng ta đã chọn VĐK 89C52, LKD
đtín và điện trở hạn chế dòng điện loại nhỏ 3000.
3. Chạy chư ơng tr ìn h m ô p h ỏ n g
a) S o ạ n thảOy b iê n d ịc h c h ư ơ n g tr ì n h có đ u ô i ,HEX
Dùng chương trìn h PINNACLE để biên dịch các ví dụ 11.1 tới 11.3, ta có các 'hương
trình đuôi HKX tương ứng. Các chương trình với các ngôn ngữ bậc cao, ta cũng p h ii biên
dịch với các chương trìn h biên dịch tương ứng.
b) Mở sơ đ ồ n g u y ê n lý
Ta gọi sơ dồ cần chạy trên giao diện PROTEUS bằng nháy chuột vào biểu tưỢHỊ ISIS,
mỏ tệp và chọn tên của sơ đồ (thường ở thư mục BIN của PROTEUS nôu tự vẽ).
c) N ạ p ch ư ơ n g t r ì n h c ầ n c h a y
Có Ihể cóp tôn chương trình cần chạy vào cùng thư mục của sơ đồ nguyên lý hcặc nạp
vào bang cách tìm đường dẫn tới th ư mục có chứa chương trình theo cách sau:
Nháy chuột phải vào VĐK của sơ đồ nguyên lý: hình vẽ của sơ dồ nguyên lý h ệ n lên
màu do.
- N háy chuột trái vào VĐK của sơ đồ nguyên ỉý: hiện lên giao diện của chạy íhương
12
trình (TcUih nháy chuột phải lần hai vì sơ (lô riííuyên lý bị xoá di, phải hồi phục bằng nútN
nhấn lúni trở vể mũi tên ngược chiểu trôn Ihatiii cỏiig cụ số 1).
- Wháy chuột trái ưào ô chương trinh: dể tìm dường dẫn tói chương trìn h cần chạy
trong ?INNACLE.
N ỉá v chuôt trái vào tên chương trinh cẩn vhạy: khi dó, tôn chương trìn h sẽ hiện vào
hộp tôi của chương trình với cả dường dẫn. Nỏu cóp tôn chương trình vào cùng thư mục với
sơ dồ ĩguyôn lý, ta không phải tìm tên chương trình theo đường dẫn.
- 'ũểm tra tần s ố n h ịp của giao diện cỏ ìiỢp với tần s ố của VĐK: giá trị mặc định là
12MH:, nếu tần sô^ nhịp không hợp, phải sửa lại cho đúng.
~
về sơ đồ nguyên lý : nháy chuột trái vào chữ OK để trở về sơ đồ nguyên lý.
dy C h ạy c h ư ơ n g t r i n h
l)in^ th a n h công cụ sô" 4 để chạy chương trình bằng cách nháy chuột vào các núm
tương Ing sau;
^úm s ố 1 hinh tam giác:
chạy cả chương trình.
~ Vúm sô'2 h ìn h m ột vạch uà tam giác:
chạy từng lệnh của chương trình.
- Vzím SỐ3 h in h hai vạch thẳng:
nghỉ chạy chương trình.
~ Viim s ố 4 h ìn h chữ n hật:
kết thúc chạy chương trình.
Tiong khi chạy chương trình, trê n các đường dây tín hiệu, có các chấm đỏ, xanh tương
ứng vd các mức logic 1 h ay 0 .
Cí thể chương trìn h không chạy hay báo lỗi vì lý do khác nhau: tốc độ xung nhịp
khônghợp, quá thòi gian, lệnh sai v.v...
Níu chạy chương trìn h hiển thị trên 16 LF]D ở trên, ta sẽ thây các LED sẽ nhấp nháy
như qiy luật giải th u ậ t của chương trinh. Nếu không như mong muốh, giải th u ậ t không
đúng, )hải sửa lại.
M)t sơ đồ nguyên lý ở trên, có th ể cho chạy mô phỏng thử nhiều chương trìn h phục vụ
cho nỏ
__
Vii cách thiết k ế và chạy chương trình theo chương trìn h mô phỏng PROTEUS, ta có
thể thíc hành đưỢc về th iết k ế và lập trình cho hệ VĐK, trưốc khi chạy trê n sơ đồ lắp ráp.
Và sơ đồ nguyên lý trên, ta có thể vẽ dưỢc sơ đồ mạch in vối p h ần mềm ARES của
PROTCUS.
Siu khi làm mạch in, lắp linh kiện, nuôi mạch bằng nguồn điện nuôi, nạp chương
trình *ào bộ nhỏ PROM với máy nạp chương trình (Prograrnmer), chương trìn h có thể chạy
trên sí dồ lắp ráp sau khi đã chạy tôt trên chương trình mô phông.
11.2. HIỂN THỊ TRÊN MỘT ĐÈN LED 7 ĐOẠN
Đìĩi LEI) ròi có nhưỢc điểm là chỉ biểu diễn được sô' nhị phân (logic 0 ~ đèn t ắ t và 1 đồn Síng) không biểu diễn trực tiếp dược các cliữ và các con S(í. Muôn biểu diễn đèn LED
ròi Ihinh chữ hay sô", ta ph ải mắc nhiều đèn thành chữ hay sô dó. N hư vậy, sẽ tôn nhiều
đèn v; công s u â t điện nuôi lỏn.
Đĩĩi LED 7 đoạn (hay 7 th a n h sáng) ra dời (ỉể khắc phục được nhược điểm trên.
11.2.t Cấu tạo và hoạt động của đèn LED 7 đoạn
iVổi dèn LED 1 đoạn có 7 th a n h a, b, c, d, e, f và chấm h (để biểu diễn sô' th ập phân),
đưỢc sip xêp như hình 11.7a. Mỗi th an h là một đèn LED đơn, dược mắc theo:
- \ n ô t chung', (hình 11.7b), các anôt của các đèn nối chung với n h au và với cực +5V của
nguồi diện nuôi, còn các cực âm là các katôt a, b, c, d, 0, f, g, h.
-K a tô t chung: (hình 10.7c), các katôt của các dèn nối chung VỚI n h au và vói đất, các
anôt cưỢc nôì với các lôi vào a, b, c, ci, e, f, g và h.
13
Như vậy, trong cả hai trường
h(íỊ)
(iiìắc ainV .■hui.íí h;iy kalỏt clunig), các dầu còn lại a, h,
c, d, e, f, g v à h c ủ a d ò n (lểu nối với các' lỏi ra c u a .'ông VI dÚHi khiòn í‘ó g iá trị c ủ a m ã 7 đoạn.
Khi các th anh diot có dòiig tliện chạy (Ịiia (cỏ :hòỉi'. điện ti'(í liạn chê dòng cỡ 200Q),
thanh phát sáng và tùy n i à tiíơng ứng của { ' ả i ' lòi V A a. b , c, d. i \ f, g và h ta có hình sáng
của các chữ sô 0 tới 9 hay chừ lừ A tới z (hán<í 11.1).
Bảng 11.1 đưỢc th àn h lạp bằng cách:
- Mắc anôt chung hay katôt chung, đc từ (tu cỏ lỏi ríi từ a tới g có Iiìức logic 0 (cho niắc
anôt chung) hay 1 (cho mắc katôt chung). Các mã của cùng một sò bù nhau (tông = ()FFh).
- Các thanh sáng từ a tởi g hiện hình các clìữ sò từ 0 (các thanh a tỏi f sáng, trừ thanh
g t ắ t ) t ớ i 9 ( c á c t h a n h a , b , c, (1, f, g Scáng, t r ừ t h a n h e L ă í).
Anôt
+5V*
c)
b)
Hình 11.7. LED 7 thanh (a), có anôt chung (b) »iay katòt chung (c)
B ản g 11.1. Mã 7 đ o ạ n cho các số từ 0 tới 9
Sò'
Mả
D= h
D 6=g
D5 = f
D3 = d
D4 = e
D1'b
D2 = c
DO = a
BCD
0
0000
0
0
1
1
1
0001
0
0
0
0
2
0010
0
1
0
1
3
0011
0
1
0
0
4
0100
0
1
1
0
Q
1
.
A chung
Mâ7đ
Mãĩd
K chung^
1
1
1
CO
3F-H
0
1
1
F9
06H
ũ
1
1
A4
50H
1
ì
BO
4FH
1
0
99
66H
1
92
6DH
1
82
7DH
07H
í
1
t
1
'
0101
0
1
0
r
1
6
0110
0
1
1
1
t
1
7
0111
0
0
0
0
0
1
1
1
F8
8
1000
0
1
1
1
1
1
1
1
80
7FH
5
9
Blank
1001
10H
0
0
1
0
__ 1 _
1
0
0
1
1
0
c
0
0
1
1
1
1
90
6FH
0
0
OH
OH
11.2.2. Các loại đèn LED 7 thanh
Từ hình 11.8 , ta thấy có cáo dèn LED đơn có các loại sau:
- Đ è n LED 7 BCD: có 4 lối vào ABCD (có sẵn mạch giải mã 7 thanh bên trong) nêii khi
hiển thị, không cần mạch giải mã 7 thanh bôn ngoài V Ớ I sơ đồ nguyên lý ở hình (11.9).
Đèn LED 7 số(digital): có 8 lối vào a, b, c, d, e, f, g, li, không cán nguồn nuôi ngoài (như
anôt chung hay katôt chung) mà dùng mức log:c 1 của lòì ra của công VĐK (có khi con qua
mạch công suất) để làm sáng thanh sáng. Ixỉại dẻn này cũng càn giái inã 7 thanh.
- Đ è n LED 7 thanh mắc a n ô t chung-, (nối ngT.iồii nuôi ngoài) hay katôt chung (nôi đàt),
có 8 lối vào a , b, c, d, e, f, g, h ).
14
2. Chương trìn h h iể n th ị s ố tự n h iê n tr ê n LED 7 th a n h
vỏi LED BCD, dữ liệu dưa ra là nhị phân không cần chương trìn h giải inã. Còn các
LED 7 thanh khác, cần chương trìn h con giải mã các sô' tự nhiên (0 , 1, 2, 3, 4, 5, 6, 7. 8 , 9)
thành mã 7 thanh. Như vậy, chương trình hiển thị không có mạch giải mã cho LEl) 7
th an h gồm hai chưdng trìn h con:
~ Chương trinh con giải m ã s ố tự nhiên (0 tới 9)\ bằng cách dọc bảng dữ liệu bởi lộnh
MOVC A, @A + DPTR. Tùy loại anôt chung hay katôL chung, ta có hai bảng mă khác nhau vì:
+ Với anôt chung: bit dữ liệu đưa ra katôt, phải là logic 0 cho th a n h sáng diot {àòng
điện chạy từ anôt sang katỏt).
+ Với katôt chung: bit dữ liệu đưa ra anôt, phải là logic 1 cho th a n h sáng diot (dòng
điện chạy từ anôt sang katôt).
- Chương trinh con hiển thị: có các hành động đưa dữ liệu ra cổng, gọi trễ (đế m ắt
ngưòi quan sát đủ thây đèn sáng và đèn tắt.
Ví dụ 11.4 giới thiệu chương trìn h hiển thị trên các đèn LED các loại khác nhau theo
sơ đồ mắc ở hình 11.9.
Sau khi hợp dịch trong Pinnacle, ghi vào sơ đồ mô phỏng ở hình 11.9 và n h â n n ú t chạy
chương trình (nút thứ nhâ't của th a n h công cụ sô^ 4), theo dõi các đèn LED
7
th a n h , ta th
mỗi đèn sẽ hiển thị các sô" từ 0 tới 9 rồi trở về 0.
Ví dụ 1l.õ giới thiệu chương trình đưa mã 7 đoạn từ ô nhớ ra hiển thị trẽn LED 7 đoạn. Tnióc
đó có (loạn chương trình ghi và biến đổi các Iiìã BCD thànli mã 7 đoạn để ghi vào các ô nhớ.
3. Chương tr in h h iể n th ị ký tự
Hiển thị ký tự trên một LED 7 th a n h cũng tương tự hiển thị sô' tự nhiên, chỉ có điều
khác là;
- Các sô" tự nhiêiì có sẵn bảng mã sô tự nhiên —mã 7 thanh (anôt chung hay katôt chung),
trong khi hiển thị ký tự cần lập bảng mã cho chuỗi ký tự. Ví dụ, dòng chữ “CHAO ~ BAISr\
- Hiển thị cũng tương tự hiển thị số là đọc bảng dữ liệu (bởi lệnh MOVC A, (íỊ^A +
DPTR) rồi đưa A ra cổng Pi mong muôn.
Ví dụ 11.6a giới thiệu chương tiùnh hiển thị chuỗi “CHAO BAN” đưa dữ liệu trực tiôp qua
cổng PO mắc với đòn LED 7 có katôt chung và c ìươnp: trình 11.6b bằng đoc bảng dữ liộu.
; Ví dụ I 1.4: Chirơng trình hiển thị các số tự
m o v P l,# 00h
nhièn (0 lới 9) Irên các loại LED 7
mov dplr, #bangrnal; anỏl chung, PQ
macro @sangleci7
@sangled7 0
mov K), #0()h
mov dpir, #bangma2
mov rl, #Obh
@sanglcci7 2 ; kalỏl chung, cổng P2
inain: mov a, rO
@sanglcd7 3; LliD số, cống P3
movc a, @a+dptr
sjmp $
mov pl K a
delay;MOVR7,#200
call delay
delO: mov ró, #50
inc rO
dell: mov r5, #20
cljn7. rl, main
(ỉjnz r5, s
endinac
djnz ró, del 1
org OOh
djnz r7, deio
mov I-O, #10; LED BCD, cổng P1
rẽt
mov a, # 0 0 h
bangmal: db OcOh, 0f9h, 0a4h, ObOlì, 99h, 92h,
82h,Of8h, 80h,90h,0c0h
lap:
mov P l , a
bangma2: db 03fh, 06h, 05bh, 04fh, 066h,
call clelay
06dh,
7dh, 07h, 07fh, 06fh, 03fh
inc a
end
cjnc a, #0a h, lap
16
; Ví (iụ 11.5: Chương trình hiển thị dữ liộu
11011)1 ỏ nhớ dùng lệnh gộp giải mã__________
MACRO CạKilAÍMA < 1, 2, 3>
inov a, 11
; 11 - địa chi chứa dữ liệu
iinl a, #()lli
; lọc 4 bit thấp
IIIOVC a, @a+clptr ; đọc mã 7 đoạn
rnov 12, a
; gửi vào dịa chi nhớ 12
inov a, 11
; 11 - dịa chi chứa dữ liệu
anl a, #0r01i
; lọc 4 bit cao
svvap a
; tráo sang 4 bit thấp
movc a, @a+dptr ; dọc mã 7 doạn
inov 13, a
; gửi vào dịa chỉ nhớ 13
i ;n d m a c
org UOh
Mov dptr, #bangma; địa chi bàng
Mov rO, #30h
Mov @rO, #25h
(a(',IAlSÍAM )li,M ĩ.4lli
inov rO, #401i
inov a, (r/^K)
ino\' ro, a
inc rO
inov a, @r(}
inov 1\), a
S|mp s
hanuma: (Ib OcOli, Of9h, 0a4h, ObOh, 99h,
db 92h, 82h, Of8h, 80h. 90h ; anôt chung
; (cỉb 3ni, 06h. 5bh, 4fh, 66h, 6dh, 7dh,
07li, 701, 6fh, OOh; katôt chung
delav: niov r0,#250
dell: m ov rl,#200
dcl2: djnz rl, del2
(ljnz rO, del 1
rct
end
; Ví (ÌỊI 1 1.6a: Chương trình hiển ihị “CHAOliAN” dưa dữ liệu trực tiếp
; Vi
V1 (iụ
(lụ 11.6b:
11 .od: Chương
enương trình
trmn hiển
nier thị “CHAOBAN" dùng lệnh dọc bảng dữ liệu
inacrcXgỉVVriiePs <1, 2>
rnov a, #11
mov PI2, a
endmac
ORC.OOH
Cf«)WnteRs039h. 0
call dclay
Cfí\VritcPs 74h, 0
call delay
(ft)\Vritel^ 5Ch, 0
call delay
(íỊ)\Vrilel^ 5Ch, 0
call dclay
ÍỘVVritcPs 40h.0
call delay
(fí\VritePs 7Ch, 0
i-all delay
Cq) WriiePs 5Ch, 0
call delay
(anvrilel^ 54h, 0
call cỉclay
sjmp s
dciav; mov r7, #250
dell: mov r6 , #20
del2: mov r5, #20h
djnz r5, $
d jii7. ró, dcl2
d|nz r7. del 1
rel
end
org OOh
niov dplr, #bangma
main: mov rO, #0()li
mo\’ a rO
movc a, @a+dptr
djnz kt
inov ro, a
call delay
inc dptr
ljmp main
kc
inov a, #0()h
inov IK). a
call clelay
bangnia: (ih 3%, 741i, 5cli, 3fh, 40h, 7ch
dh ,xii.541i, OOh
dclay: inov r7, #250
dcl I: mov r6, #20
dol2: inov r5, #20h
(ljn/. r5, s
(ijiu r6, dcl2
(ljnz r7, dcl 1
rci
CIKỈ
Chu y: Chuỗi ký lự kốl thúc bời mã OOh. Khi
dọc tới mã này, cliirơng trình nhảy tới nhãn KT
dè kêì thúc.
; lệnh dữ liệu
; dĩr liệu
; ghi ra cổng PI2
; kết thúc lẹnh gộp
; ghi chữ“C” ra PO
; ghi chữ"H” ra r o
; ghi chữ“A” ra po
; ghi chiT‘()” ra TO
; ghi chiT'-” ra TO
; ghi chữ“B” ra P()
; ghi chữ“A” ra H)
; ghi cliũr‘N” ra r o
; kết thúc chờ
^ A l HỌC QUỐC GIA HẢ NỘI
TRUNG ĨÂM THÒNG ỈIN THU VIỆN
3 .C - n « 0 C ..Đ K H lỂ N « A
V .G O
/
17
11.3.3. Chương trinh hiển thị cho nhiểu đèn LED
Hình 11.11 giới thiộu cách mắc tỗì đa 8 đèn LED 7 doạn với hai cổng của vi cliểu khiển:
cổng PO đưa dữ liệu ra song song cho 8 đèn LED và cổng P1 có 8 bit nôì với 8 cực bazơ của 8
tranzito để diều khiển một trong 8 LED tương ứng p h át sáng khi có dữ liộu dưa ra.
Chương trình ở ví dụ 11.7 hiển thị các chữ sô" từ 0 tới 7 trôn 8 LED 7 doạn. Chương
trình cũng có hai h à n h động:
•
Đọc mã 7 đoạn của các sô^ tự nhiên từ 0 tới 7 có sẵn trong bảng mă với clỊa chỉ (lầu
tiên là bangma.
Dưa ra hiển thị trên c á c LED tương ứng mắc với cổng PO và tín hiệu diều klúcn vào
bazơ của tranzito mắc với cổng P l. Lòi điều khiến trong r3 (có 1 bifc bang 0) có tl7 0 cho
đèn LED 7 đoạn ở tậ n cùng bên trái sáng và đưỢc dịch phải (RRC A) để điều khiển dèn
LED sáng từ trái qua phải. Nẽu ban đầu cho r3 = #OEh và dùng lệnh dịch trái (RLC A) thì
các LED sẽ sáng từ phải qua Irái.
Ví dụ 11.7 ^ ố i thiệu chương trìn h hiển thị các dử liệu dạng BCD dưỢc chứa trong các ô
nhớ có địa chỉ 30h, 31h, 32h, 33h, 34h và 35h. Trước khi hiển thị, phải biến dổi mã BCD
thành mã 7 doạn ghi trong các ô nhớ có địa chỉ 40h tới 45h, bằng lệnh gộp GIAIMA.
Ví dụ 11.8. giới thiệu chương trình hiển thị chuỗi chữ APECHANGI2006 trong bảng mã 7
đoạn lên 8 dèn LED 7 đoạn. Kết thúc của chuỗi là mã OOh. Muổh biểu diễn đầy đủ chuỗi ký tự
trên, ta phải có sô' đèn LED 7 đoạn bằng sô^ký tự cần biểu diễn (13 đèn LED 7 đoạn).
; Ví dụ 11.7: Chương Irình hiển ihị dữ liệu ; Ví dụ 11.8: Chương trình hiển ihị chữ “APIiC
HA NOI 2006: trong bảng mã
tronp các ò nhớ 30h lới 35h
quelequPl
Org OOh
ledVequPO
Ljmpmain
orgOOh
quelequPl
mov dptr, #bangma ; địa chỉ bảng niă
ledVcquTO
; bit ci7= 0
mov r3, #07h
Org lOOh
; xoá a
lap: clr a
Main:
movc a, @a+dplr ; dọc bảng
mov lO, #30h
jz kt
mov a, #00h
mov led7, a
; clira dữ liộu ra cổng K)
IìiịK): mov @rO, a; ghi các số 0-7 vào các ò nhớ ■
; dưa diều khiển LBD7
mov quet. r3
inc rO
; gọi trề
Icall delay
inc a
mov quet, #Offli ; xoá đèn LKD7
cjne a, #9, lapO
mov a, r3
; lạo điều khiển mới
mov dplr, #bangma
; dịch phải a
rr a
call giaima
; ghi lại vào r3
mov
r3,
a
lap2: call hicnlhi
; lăng địa chỉ mới
inc dptr
sjmp lap2
; trở về lạp
sjmp lap
giaima:
kl: sjinp s
mov rO, #30h
; trể
delay: mov r7, #250
mov rl, #40h
dell: mov r6, #20
lapl: Mova, @rO
del2: mov r5, #20h
Movc a, @a+dptr; đọc mã 7 đoạn
djnz r5, $
Mov @r 1, a; gửi vào ô nhớ địa chỉ nhớ r 1
djnz r6, del2
inc rO
djnz r7, dell
inc rl
20
- Xem thêm -