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

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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

B ả n (Ịuyến thuộc HEVOBCO - K hà xuất b ản Giáo dục -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ập hai cìia sách ‘‘Cấu Iriic, lập trình, ghép ứng dụng vi diều khiển" Tài liệu giới thiệu ghép nối với ihiếl bị (hiến ihị, bàn phím, nhớ ngồi, cổng mở rộng (song song íiếp)) hệ VDK dùng Irong lường, điều khiển lự động truyền thơng Tìcp theo lập một, ĩập hai gổin chương Trong chươỉig, có mơ tả thiết bị ngồi, cách glìCỊ') noi lập trình \’ới ví dụ dể chạy thử mơ Irên PINNAQ-E PROTEUS ('liuoỉiíỊ II (ỉliép nối ứ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 hình tinh ihè long (LCD) Chưìíỉ 14 Ghép nối với bàn phím Chương í Ghép nối với nhớ vi diều khiển 8051/8052 Clií(' 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 : liẹii ; ịilii cciiiíi P2 ; tiữ liệu ; ghi cong P3 kèt thúc chờ 11.1.4 Lập trinh điểu khiển LED rời biển quảng cáo 'Vối ví dụ 11.1 trên, chúng la vièt chương t n n h đưa hiên thị mong mucn: - Cho tấ t đén nơi vâi inột cổng dó sáng dưa A = #OFFh - Cho đèn sáng từ trái qua phải dùiig lệnh SE'PB c dịch phải qi:a c vối lệnh RRC A - Cho đèn sáng lẩn lượt từ phải qua trái dùng lệnh SET15 c (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ớì giá trị dưa trực tiêip vào ghi A n h 1000000115 OlOOOOlOH, 00l()()10015, OOOl lOOOB - Cho đèn sáng vlồn lừ hai dầu vàu VỨI giá t rị A !à lOOOOOOlB, lOCOOl IB, lllO O lllB ,llllllllB , - Cho đèn sáng dồii tù Riữa liai cliìu vỏi giá trị A 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 LED các- biển quảng cáo là: - Đưa giá trị (0 cho uit cho sáng) ti iíc tiêp cổng - Thành lập b ảng liệu, đọc bàng đổ đưa cổng (ví dụ 11.2) - Dùng lệnh logic vòng lặ|) (ví dụ 11.1 ví dụ 11.3), 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 ; Ví du 11.3: Chương irình sáng dồn 16 bit macro @san^dori 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, ((i sangdon 2, Offh, 0, @sangdon 2, OOh, 0, sangdon 0, Ofíli, 2, 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 bảng liệu dài Cách dùng báng thông dụng nhất, cho trường hỢp, 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 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 dùng lộnh logic ORL giá trị đưa hiến thị cù xO giá trị dịch bit yO (bởi lệnh SETB c RLC A) Đòn liEI) rời trên, ngồi thị íỊÌá tri ghi hay ĩihớ VĐK, hay dùng (iổ quảng cáo hay điểu khiển dỏn giao thòng ngả dường Khi đó, phải mắc đèn cơn^ st lớn với tần g khưẽch dại cơíìg suất dùng tranzit() cỏiig sXt Các chương trìn h trê n có th ể thay đ 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) để 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 đưa thòi gian dơni ngưỢc từ thời gian sáng tơì đưa cho đèn hiến thị sô^ dếni dạng thậj) Ị)hân cho dèĩi ílể người di đường biơt chuẩn bị hay dừng giao lộ (xem phần 11.2 cho hieii thị LEl) doạii) 11.1.5 Thiết kê mạch LED đơn chạy chương trinh mạch mô Trong thiết kế chạy mô Ị)hỏiig sơ đồ íliộn tử, inới xL chương trình mơ PROTKUS có mơ mạch với vi (liểu khiển loại MCS-51 INTEL, PIC Microchip, AVR ATMKL, MCG8 H 1 cưa Motorola v.v Chương trìn h trê n mơ phóng dưỢc mạch sc/ tương lự thay cho Workbcnch Circuit m ak er hay Protel c-m u c Đ K H iỂ N ữ > Nhược diêm ban PROTEƯS không hỢp dịch dược ngôn ngữ khác lìhau trơĩì giao diện, mà chạv mơ chương trình dạng di.HKX Mn chạv dưíỉc mạch VĐK 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 hỢp dịch th àn h file HKX với chương trình hợj) dịc.i iương ứng với ngơn ngữ dó cách vào tệp Labcenter/Proteus/Tool/ASEM5l Ví dụ: - PINNACLE cho họ MCS-51 INTEl hay ASEM51 - AVR STUDIO cho AVR cua ATMEL - MPASM cho PTC Microchip Ngoài hỢp ngủ, ngơn ngữ bậc cao (ngơn ngủ c , C++, PASCAL, C51 R51 củng dịch tệp HEX để chạy PROTEUS Chương tr ìn h P R O T E U S PROTEUS có giao diện th a n h công cụ hình 11.3, 11.4 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(« 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 PROTEUS Cơng dụng th a n h công cụ sau: - Thanh công cụ số d ù n g để tạo trang, lưu giữ, chép, phóng to, th u nhỏ, ícm in v.v tra n g th iết kế - Thanh công cụ số dù n g để chọn vi mạch danh sách linh kiện, vẽ đưòing dâv, ghi n h ã n v.v - Thanh công cụ sô' dù n g để quay 0“, 90“, 180“ linh kiện tên nhãn - Thanh công cụ số d ùng để chạy chương trìn h mơ rên công dụn g từ n g n ú t nhóm th an h ghi trê n trìn h bày ỏ cíc hì nh vẽ 10 i CTWjt t»KH«ỂN«B div ab mov lOh, a ; lOh chứa số hàng trãm mov 1Ih, b ; 1Ih chứa sô' hàng chục mov R0,#10h mov rl, #30h mov r2, #00h lapl: mov a, @R0 movc a, @a+dplr mov (o)Rl, a inc RI inc RO inc r2 mov a, R2 cjne a, #3, lapl inc rO mov a, r3 rr a mov r3, a djnz r4, lap2 djnz r2, hthi sjmp $ bangma; db OcOh, 0F9h, 0A4h, OBOh, 99h db 92h, 82h, 0F8h, 80h, 90h delay: mov r5, #1 de: mov r6, 50 djnz rỏ, $ djnz r5, de ret end ; Ví dụ 11.12 Hiến thị hai byte BIN dèn LED đoan BIN_0: MOV @R0, #0 MACRO @BINBCD INC RO ; 33 e) Lệnh Ghi hiển thị, d n g IOOZAAAA Lệnh ĩiày chọn địa ghi liệu cho hiổii thị AAAAA ghi dịa dổ ghi liõu lừ công dừ liệu z chọn tự tăng, nghĩa chuỗi ghi qua cổng liộu chuỗi vị trí hiển thị f) Lệnh C ấ m g h i h iể n thi, d a n g 1010WWBB Lộnh câm ghi nửa vùng RAM hiển thị w bên trái cám ghi bi: bên trái vùng RAM hiển thị \v bên phải cấm ghi bit bên phải vùng RAM hiển thị Các chữ BB có chức nảng tương lự, trừ chúng nhấp nháy (tắt) nửa châii g) Lệnh Xoá, d a n g IIOOCCPA Lệnh xoá hiển thị, FIFO hai hiển thị FIFO Bit F xố FIFO írạng thái RAiVl hiển thị xác lập trỏ địa 000 Nếu bit c c 00 hay 01, tâ't vùng RAM hiển thị trở nên 0000000, c c = 10, tấ t vùng trò nên 00100000, c c = 11, tấ^t vùng trở nên 11111111 h) Lệnh kết t h ú c Ngắty d a n g lllEOOOO Lệnh p h át để xoá chân IRQ chế độ ma tr ậ n sensor Nêu E 1, ch ế độ lỗi đặc biệt dược dùng Trong chế độ lỗi đặc biệt này, th a n h ghi trạ n g thái có nhiêu phím bị đóng xảy ra, Chương trin h h iể n th ị củ a vi m ch 8279 Ví dụ 11.16 giới thiệu chương trình hiển thị 8279 ; ' Ví du 11.16; Chương Irình hiển ihi cho LED doan với 8279 Org ƠOh MASKequSOh n rn i eqii 30h Movdptr, #20 Ih Mova,#001111110b Mov @dptr, a Mov c ũ #00h Mov @dplr, a Mova, # 1100000Ib M o v @dptr a ORL, MASK Mov @dplr, a Mov a, IH HI l)cc dpi Mov @dptr, a Sịmp $ end ; lOOOOOOOB, hiển thị đèn ; ; ; ; địa chi 8279 cho lời điều khiển clock vi mạch ghi vào 8279 xác lập chế độ ; xoá hiển thị ; đưa diều khiển ; địa 200h 8279 cho liệu 11.5 CẬCH GHÉP NỐI LED ĐOẠN TIẾT KIỆM CổNG CỦA VI ĐIỂU KHIỂN ỏ phần , ch ún g ta tiêt kiệm cổng vi điều khiển b ằn g dùn g cổng nơl vói hai vi mạch giải mã 7447 74138 p hần này, ng ta xét cách ghép nô"i khác để tiết kiộỉĩi cổng, d ù n g vi mạch chuyên dùng phương p h p địa để điều khiển LED 34 C T m K :._ Đ K H lé N ữ B I>jmp Main Org 03h l.jmp HXOISR Main: Mm' ICOUNT, #50 SETB EA SETB EXO SJMP$ ; nạp #50 vào ICOUNT ; cho phép ngắt toàn ; cho phép ngắt ; chờ ngắt HXOISR: DJNZ ICOƯNT, EXIT MOV ICOUNT, #50 ACALL LIPDATE XIT: RE 11 UPI)A'I’n 4- DiGIT LED DI SPLAY (ihời gian thực = 84 microsec) Vào: chữ sô BCD vùng nhớ DIGITS DIGITS + (MSD bit cao cùa RAM Ra: MC 14499 hiển thị Dùng; P1.5, P1.6, P1.7 vùng nhớ ghi liên quan UPDATE: push acc ; lưu giữ a Clr ENABLE ; xoá ENABLE hay kích hoạt MC 14499 hoạt động Mov a, DIGITS ; gửi ô nhớ DIGITS vào a Acall 0UT8 ; gọi đưa bit Mov a DIGITS+1 ; gửi ô nhớ DIG1TS+1 vào a Acall 0UT8 ; gọi dưa bit Setb ENABLE ; xác lập ENABLE hay câm MC 14499 hoạt dộng Pop Acc ; hồi phục a Ret ; trờ chươiig trình ; SEND bít A tới MC 14499 (MSB trước tiên) 0ƯT8: push r7 ; lưu giữ r7 Mov r7, #8 ; nạp #8 vào r7 AGAIN:rlca ; dịch trái a qua c Mov DIN, c ; chuyển c vào DÍN Clr CLOCK ; xoá CLOCK Nop Nop ' Setb a O C K ; xác lập CLOCK Djnz r7, AGAIN ; giảm r7, khác 0, trở AGAIN Pop r7 ; hồi phục r7 Rel ; trờ chương trình end 11.5.2 Điểu khiển LED đoạn với đường dây địa Mạch Hình 11.16 giói thiệu cách điểu khiển đèn LED đoạn đưòng dây địa AO, AlvcàA2 Vi mạch th an h ghi đệm liệu 74LS374 d ùng để chô’t liệu mã đoạn đưa LEI) có (lịa vùng 4000h Vi macli giải mã liệu 74LS259 dùng để đưa tín hiệu điểu khiển LEI) đoại) có dịa vùng 6000h liệu DO = Tín hiệu RS dùng để xoá vi mạch 74LS259 ấn n ú t RESET board vi điếu khiến 36 DISPLAY: Mov dph #60h Mov a, 16 Anl a, #03 Mov dpi, a Clr a Movx (ô)dptr, a Inc 16 Mov dpti, #40h Mov a, 16 Anl a #03 Mov dpi, a Add a, #12 Mov r l, a Mov a, @ rl Movx @dptr, a Mov dph, #60h Mov a, 16 Anl a, #03 Mov dpi, a Setb acc.o Movx (2)dptr, a Ret end ; nạp #60 vào dph để xoá katơl hay xố LED cloạii ; thứ tự quét I.ED đoạn nạp vào a ; giữ bit thấp ; gửi vào địa chi thấp ; xoá a ; xố nhớ địa dptr ; tăng ihứ tự quét LED đoạn để nạp mã đoạn ; gọi địa cao 40h ; thứ tự quét LED đoạn nạp vào a ; giữ bit thấp ; gửi vào dịa chi thấp ; cộng a với #12 ; nạp a vào rl ; đọc ô nhớ địa rl vào a ; gửi a vào ô nliớ địa chi dptr ; nạp #60 vào dph để xác lập katôt hay lập LED cloạn ; thứ tự quét LED đoạn nạp vào a ; gửi vào dịa chi thấp ; xác lập bit acc.o ; gửi a có acc.o = vào ò nhớ có địa chi dptr ; trở từ chưcmg trình 11.6 HIỂN THỊ CHỮ/SỐ TRONG CÁC BIỂN quảng cáo Trong đòi sơng, cần nhiều biển quảng cáo hiển thị chữ sơ" Ngưòi ta dùng đèn LED đoạn để hiển thị chữ sô" cách đọc liộu nhớ ROM cúa hệ vi điều khiển Đe gây ấ n tưỢng cho ngưòi quan sát, biển quảng cáo này, chữ hay số"có thê n hấp nháy, dần từ trái sang phải hay từ phải sang trái, chữ chạy từ trái sang phải hay chạy từ phải sang trái, hiện/tắt kiểu dồn từ hai đầu vào, từ v.v Hiện c h /s ố nhâp nháy Thơng thưòng, chữ/sơ" lên vối thòi gian trễ đủ lớn để m ắ t ngưòi nlìậii biết và* lặp lại với thời gian đủ nhỏ để m người nhận thấy chữ lôn cách liên tục NgưỢc lại, thực cáe chữ/sô lên nhấp nháy cách bật sáng tắ t đèn hiển thị với thòi gian trễ đủ lớn để m thấy rõ đèn tắt Do đó, chương trìn h có th êm thòi gian tắ t đủ lớn (có thể thời gian sáng hay khác di) Ví dụ 11.19 giới thiệu chương trình chóp/tắt chuỗi chữ H A N O I LED đoạn với thời gian sán g DELAY thòi gian tắ t 3x delaytat ; Ví dụ 11.19: Hiển thị nhấp nháy chuỗi chữ -HA-NOIjnc maina; nhảy c = 0, sau lần dịch phải led7 equ PO djnz r4, main; lặp 250 lần quét equ P2 Icall delaytat org OOh Icall delaytat mov dptr, #bangma ; địa đầu bảng Icall dclaỹtal mainb: mov r4, #250 main:mov r3, #0111111 Ib; điều khiển LED ljmp mainb ; biến cùa bảng delăy: mov r6, #01h mov r2 #00h de2; mov r7, #50h maina: mov a, r2 djnz r7, $ movc a, @a+dptr ; đọc bảng djnz r6, de2 mov led7, a ; đưa hàng cho LED 38 ret delaytat: mov r6, #00h mrv qiiet, #OM'h de2a: mov r7, #00h IIICV leci7,#0rTh lắl LED djnz r7, $ scib c ; xác lập c djnz r6, de2a UK v2 ; tăng địa bảng ret nicv a, r3 ; r3 gửi vào a bangma; db Obữi, 089h, 088h, Obfh, m a ; dịch phải qua c db0c8h, 0c0h, 0f9h,0bfli nioy_v3,_a ; dưa trò vé r3 end ỈT1( Vqucl, r2 Icall dclay ; diều khiển LÍỈD doạn ; thời gian sáng Hiện d ẩ n /tắ t chữ/sô* từ trái sa n g phải thường, chương trình hiển thị cho chữ/sô" dần từ trái sang phiii, V đọc báng từ dịa đầu tới cươi, theo thứ tự chuỗi ghi bảng Vì thòi gian ni)t chừ ngắn, lặp lại nhiều lần-đảm bảo thòi gian cỡ 20msec nên m ngứòi cuan sál thây chữ liên tục Nếu cho thòi gian trễ chữ/sơ' delay lốn lên tới mức lớn hơn, m người n hận biết dược chừlsố dần chữ từ trá i q ua phải theo thứ tự ghi bảng Ví dụ 11.20 giới thiệư chương trình chuỗi chữ H A N O I LED đoạn chạy từ trái s a n g bni phải H ìệ i d ầ n chử/sô" từ ph ải s a n g trái Néu dọc chữ/sô^ cuối bảng trước dần lên chữ ỏ đầu b ản g b ằn g cách: - 2ho địa d ptr địa bảng mã - 3iốn địa r2 = #7h để dptr+#r2 địa chữ/số' ỏ cuỗl bảng để đọc chữ/sô" trước - C h o địa giảm dần lệnh djnz r 2, m aina để đọc chữ/số’ tới 1*2 = # 0, việc đọc lặp lại từ chữ cuổì bảng Ví dụ 11.21 giới thiệu chương trìn h chuỗi chữ H A N O I trê n LED đoạn lên từ bên phii với chữ cuôi (dâu -), chữ sát cuổì (I) v.v tói chữ bên trá i (dâ"u -) ; Vi di 11.20: Chương trình dần chữ -HA-NOI- từ trái sang phải lcd7 eiu IX) mov a, r3 quét aiu VI rrc a crg (X)h mov r3, a nuun:mov dptr, #bangma jc mainb mcv r4, #250 djnz r4, maina niauKi niov r3 #111111 lOb ljmp main mcv r2, #(K)h delay: mov r6, #01h set) c de2: mov r7, #50h niaìiứ; niov a, r2 djnz r7, $ mcvc a, @a+dptr djnz r6, de2 mcv led7, a rết movquet, r3 bangma; lcallcielay db Obíh, 089h, 088h, Obfh, Oc8h, OcOh, m.ovquet, #()FFh 0f9h, Obfh inc i2 end ; V í ại 11.21; Chương trình chữ -HA-NOI- dần từ phải sang trái led iqu PO mov a, r3 (Ịuei

Ngày đăng: 06/01/2020, 23:45

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan