Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Đại cương Cấu trúc lập trình ghép nối và ứng dụng vi điều khiển. tập 2...

Tài liệu Cấu trúc lập trình ghép nối và ứng dụng vi điều khiển. tập 2

.PDF
40
94
98

Mô tả:

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 -

Tài liệu liên quan