Giáo trình Điều khiển tốc độ động cơ (Phần 2)

pdf 119 trang ngocly 590
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Điều khiển tốc độ động cơ (Phần 2)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_dieu_khien_toc_do_dong_co_phan_2.pdf

Nội dung text: Giáo trình Điều khiển tốc độ động cơ (Phần 2)

  1. PHAÀN II PHAÀN II THIEÁT KEÁ Chöông 3 MAÏCH PHAÀN CÖÙNG A. SÔ ÑOÀ B. CHÖÙC NAÊNG CUÛA TÖØNG BOÄ PHAÄN C. HOAÏT ÑOÄNG CUÛA SÔ ÑOÀ Chöông 4 PHAÀN MEÀM ASSEMBLER D. GIAÛI THUAÄT E. CHÖÙC NAÊNG CUÛA TÖØNG CHÖÔNG TRÌNH CON F. CHÖÔNG TRÌNH Chöông 5 PHAÀN MEÀM VISUAL BASIC G. NHIEÄM VUÏ CUÛA PHAÀN MEÀM H. GIAÛI THÍCH HOAÏT ÑOÄNG I. CHÖÔNG TRÌNH Chöông 6 KEÁT QUAÛ J. MAÏCH THI COÂNG K. GIAO DIEÄN ÑIEÀU KHIEÅN TREÂN MAÙY TÍNH - 68 -
  2. PHAÀN II - CHÖÔNG 3 TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 69 -
  3. PHAÀN II - CHÖÔNG 3 A—SÔ ÑOÀ: (Hình 3.1) Hình 3.1 Sô ñoà maïch thi coâng. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 70 -
  4. PHAÀN II - CHÖÔNG 3 DANH SAÙCH CAÙC THAØNH PHAÀN: Thöù töï Soá löôïng Moâ taû linh kieän 01 1 IC, AT89C51, Microcontroller 02 1 12MHz Crystal 03 6 10uF Capacitor 04 4 Led 7 ñoaïn 05 4 BJT, 2N1015,PNP 06 1 IC, ADC0809 07 1 IC, 7447 08 1 IC, 74393 09 1 IC, MAX232 10 1 IC, LM7805 11 1 BJT, 2N1061, NPN 12 1 Bieán trôû 10K Ω 13 1 Caàu chænh löu diode 14 2 Led thu-phaùt 15 2 Ñaàu noái DB-9 (ñöïc, caùi) 16 5 Tuï ñieän 10nF 17 10 Ñieän trôû 470 Ω 18 6 Ñieän trôû 10K Ω 19 1 Ñieän trôû 47K Ω 20 4 Ñieän trô û1K Ω 21 2 Ñieän trôû 4K7 22 1 Nuùt reset 23 1 Rôle 5V 8 chaân 24 1 Tuï loïc nguoàn, 2200uF 25V 25 2 Diode 1N4007, choáng aùp ngöôïc 26 2 Tuï ñieän 30pF 27 2 BJT, 2N2222, NPN 28 1 BJT, D468, NPN 29 1 DC Motor 6V 30 1 Ñóa CD, ñuïc 20 loå, ñöôïc gaén ñoàng truïc ñoäng cô TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 71 -
  5. PHAÀN II - CHÖÔNG 3 B—CHÖÙC NAÊNG CUÛA TÖØNG BOÄ PHAÄN:  KHOÁI NGUOÀN: Hình 3.2 Caáu truùc maïch mguoàn. Cung caáp nguoàn nuoâi cho maïch thi coâng. Khoái nguoàn ñöôïc thieát keá ñeå cung caáp möùc ñieän aùp oån ñònh 5V cho moâ hình. Moät bieán aùp 110V/220V sang 6V/9V/12V khoaûng 1A; moät caàu chænh löu 1A; tuï ñieän nguoàn 2200 µF 25V vaø IC oån aùp 7805. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 72 -
  6. PHAÀN II - CHÖÔNG 3  KHOÁI GIAO TIEÁP MAÙY TÍNH: Hình 3.3 Khoái giao tieáp PC-KIT Thieát laäp quan heä giao tieáp vôùi maùy tính. Khoái ñöôïc thieát keá nhaèm môû roäng khaû naêng ñieàu khieån cho kit. Maïch giao tieáp ôû ñaây ñôn giaûn chæ coù ñaàu caém daây vaø boä IC max232 vaø tuï ñieän laøm töông thích ñieän aùp giöõa hai ñôn vò giao tieáp laø maùy tính (~12V) vaø kit (~5V). Hai khoái giao tieáp nhau qua hai ñöôøng truyeàn nhaän vaø phaùt, ngoaøi ra daây masse ñöôïc noái chung. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 73 -
  7. PHAÀN II - CHÖÔNG 3  KHOÁI VI ÑIEÀU KHIEÅN AT89C51: Hình 3.4 Khoái ñieàu khieån AT89C51. Trung taâm ñieàu khieån caùc cheá ñoä laøm vieäc cuûa ñoäng cô vaø toaøn boä moïi hoaït ñoäng khaùc : ñieàu khieån ñoäng cô chaïy ôû toác ñoä mong muoán, ñaûo chieàu, haõm ngöôïc, ñieàu khieån hoaït ñoäng maïch hieån thò led, ño toác ñoä, giao tieáp vôùi maùy tính. Khoái goàm coù IC AT89C51, maïch taïo xung vaø maïch reset. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 74 -
  8. PHAÀN II - CHÖÔNG 3  KHOÁI ÑAËT TOÁC ÑOÄ TREÂN KIT: Hinh 3.5 Khoái ñaët toác ñoä treân KIT. Khoái ñieàu khieån toác ñoä ñoäng cô baèng tay naèm treân kit. Khoái goàm coù IC ADC0809 laøm chöùc naêng chính laø chuyeån ñoåi töông töï/soá, IC 74LS393 taïo xung nhòp cho ADC0809 vaø bieán trôû ñaët toác ñoä ñeå choïn möùc ñieän aùp cho ADC0809. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 75 -
  9. PHAÀN II - CHÖÔNG 3  KHOÁI HIEÅN THÒ: Hình 3.6 Khoái hieån thò toác ñoä ño. Duøng ñeå hieån thò toác ñoä ño ñöôïc cuûa ñoäng cô trong moâ hình maïch thi coâng. Khoái goàm IC 7447 laøm nhieäm vuï giaûi maõ BCD sang baûy ñoaïn, boán led baûy ñoaïn, boán transistor A1015 keùo doøng cho boán led baûy ñoaïn loaïi anode chung, baûy ñieän trôû haïn doøng cho baûy ñaàu vaøo a, b, c, d, e, f vaø g (khoâng veõ treân hình ) vaø boä ñieän trôû phaân cöïc transistor. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 76 -
  10. PHAÀN II - CHÖÔNG 3  KHOÁI MAÏCH ÑOÄNG CÔ: Hình 3.7 Khoái maïch ñoäng cô. Khoái naøy goàm maïch ñoäng löïc cung caáp coâng suaát cho ñoäng cô. Boä phaän caûm bieán toác ñoä söû duïng keøm theo laø moät ñóa CD-ROM coù ñuïc loã vaø caëp led thu-phaùt. Moät thaønh phaàn nöõa laø relay taùm chaân cho muïc ñích ñaûo chieàu ñoäng cô duøng transistor D468 ñeå ñieàu khieån. Xem chi tieát trong phaàn phuï luïc. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 77 -
  11. PHAÀN II - CHÖÔNG 3 C—HOAÏT ÑOÄNG CUÛA SÔ ÑOÀ: 1. Caùc böôùc chuaån bò:  Kieåm tra noái daây;  Kieåm tra noái nguoàn;  Chænh bieán trôû ñaët toác ñoä veà zero ñeå ñoäng cô khoâng chaïy khi môùi caáp nguoàn. 2. Hoaït ñoäng cuûa sô ñoà: Sau khi caáp nguoàn cho maïch hoaït ñoäng, traïng thaùi cuûa caùc khoái treân nhö sau:  Khoái nguoàn cho ra ñieän aùp 5V ôû ngoõ ra.  Khoái giao tieáp maùy tính ôû traïng thaùi chôø.  Khoái vi ñieàu khieån AT89C51 thöïc thi chöông trình ñöôïc naïp vôùi caùc ñieàu kieän ñaàu laø toác ñoä ñaët baèng zero, toác ñoä ño xuaát ra led laø khoâng, taïo xung khôûi ñoäng cho ADC0809.  Khoái ñaët toác ñoä treân kit, luùc ñaàu vì chöa ñaët toác ñoä neân ñoäng cô khoâng chaïy.  Khoái hieån thò hieän boán soá khoâng.  Khoái maïch ñoäng cô hôû maïch. Ñeå ñieàu khieån ñoäng cô chaïy ôû toác ñoä mong muoán, chænh bieán trôû ñaët toác ñoä theo chieàu taêng ñieän aùp. AT89C51 trong quaù trình thöïc thi chöông trình seõ caäp nhaät toác ñoä töø ADC0809, so saùnh toác ñoä caäp nhaät vôùi toác ñoä tröôùc ñoù, neáu coù söï thay ñoåi, noù seõ töï ñoäng caäp nhaät vaøo oâ nhôù toác ñoä chuaån, sau ñoù seõ ñieàu khieån phaùt xung ñònh thôøi, taêng möùc 1 lieân tuïc khi toác ñoä chuaån lôùn hôn toác ñoä ño, cho tôùi khi baèng nhau vaø ngöôïc laïi giaûm ñònh thôøi möùc 1 khi toác ñoä chuaån beù hôn toác ñoä ño. Vieäc taêng hay giaûm khoaûng ñònh thôøi tuaân thuû luaät: löôïng taêng khoaûng ñònh thôøi möùc naøy ñoàng thôøi ñi keøm giaûm moät löôïng töông öùng khoaûng ñònh thôøi möùc kia. Sau khi tính toaùn löôïng cheânh leäch giöõa toác ñoä chuaån vaø toác ñoä ño, ngaét do boä ñònh thôøi timer 0 neáu xuaát hieän, AT89C51 seõ kieåm tra bit daáu (trong chöông trình laø bit ñònh ñòa chæ 00H) ñeå xaùc ñònh boä ñeám timer 0 ñang ñònh thôøi trong khoaûng ñònh thôøi möùc 1 ( neáu noäi dung 00H baèng 1) hay möùc 0 ( neáu noäi dung 00H baèng khoâng). Neáu ñang ñònh thôøi möùc 1 thì xoùa 00H, naïp noäi dung trong oâ nhôù giaù trò ñònh thôøi möùc 0 vaøo timer 0 vaø cho chaïy. Neáu ngaét cuûa timer 0 chöa can thieäp thì AT89C51 seõ xuaát toác ñoä ño ñöôïc töø boä caûm bieán toác ñoä (CD-ROM vaø caëp led thu-phaùt) cho khoái hieån thò. Trong chöông trình thöïc thi cuûa AT89C51, ta söû duïng ba ngaét coù ñoä öu tieân theo thöù töï giaûm daàn laø Timer 0, ngaét ngoaøi 0, ngaét do port noái tieáp. Ngaét ngoaøi 0 seõ laøm vieäc vôùi ñoä öu tieân xeáp sau ngaét do timer 0, neáu timer 0 traøn vaø gaây ngaét thì ngaét ngoaøi 0 seõ chôø vaø thöïc thi sau ñoù. Ngaét ngoaøi 0 seõ lieân tuïc taêng oâ TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 78 -
  12. PHAÀN II - CHÖÔNG 3 nhôù toác ñoä moãi khi coù xung caïnh aâm ñaët vaøo chaân /INT0 cuûa AT89C51. OÂ nhôù toác ñoä bò xoùa moãi khi timer 0 gaây ngaét. Tieáp theo laø ngaét do port noái tieáp vaø caùch ñaët toác ñoä cho ñoäng cô töø maùy tính. Treân maùy tính, treân panel ñieàu khieån, ta choïn toác ñoä mong muoán, nhaán nuùt Start, 8-bit döõ lieäu seõ truyeàn sang kit AT89C51. Keát thuùc quaù trình nhaän döõ lieäu töø kit gaây ra ngaét. Ngaét do port noái tieáp coù ñoä öu tieân thöù ba sau timer 0 vaø ngaét ngoaøi 0. Döõ lieäu ñaàu tieân khi nhaäp vaøo seõ ñöôïc kieåm tra xem lieäu ñoù coù phaûi laø kyù töï yeâu caàu ñaûo chieàu hay khoâng. Neáu phaùt hieän döõ lieäu vöøa nhaän ñöôïc töø maùy tính laø tín hieäu yeâu caàu ñaûo chieàu thì AT89C51 seõ ñieàu khieån ñaûo chieàu ñoäng cô vaø thoaùt khoûi cheá ñoä ngaét port noái tieáp. Neáu leänh yeâu caàu khoâng phaûi laø ñaûo chieàu, toác ñoä ñaët töø maùy tính sau ñoù seõ ñöôïc kieåm tra xem coù thay ñoåi so vôùi toác ñoä hieän haønh hay khoâng. Tröôøng hôïp khoâng thay ñoåi seõ phaûn hoài toác ñoä cho maùy tính. Tröôøng hôïp khaùc khi toác ñoä ñaët khaùc toác ñoä chuaån, toác ñoä chuaån seõ bò thay theá baèng chính toác ñoä môùi ñaët naøy, ñeå keát thuùc quaù trình ngaét cuûa port noái tieáp, AT89C51 seõ phaûn hoài toác ñoä hieän haønh cho maùy tính. Quaù trình ñònh thôøi cho ñoäng cô chaïy seõ gioáng nhö cuûa ADC0809. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 79 -
  13. PHAÀN II - CHÖÔNG 4 - 80 -
  14. PHAÀN II - CHÖÔNG 4 D—GIAÛI THUAÄT: Baûng danh saùch caùc löu ñoà giaûi thuaät ñöôïc söû duïng: Teân löu ñoà Nhieäm vuï Trang TIMER 0_ISR Trình phuïc vuï ngaét do Timer 0 INT0_ISR Trình phuïc vuï ngaét do ñeám toác ñoä SP_ISR Trình phuïc vuï ngaét do port noái tieáp MAIN Chöông trình chính HIENTHITOCDO Hieån thò toác ñoä ño DELAYMS Laøm treã 1 mili giaây BINTOBCD Ñoåi soá nhò phaân 16-bit thaønh maõ BCD neùn DIV_16_8 Chia soá nhò phaân 16-bit cho soá 8-bit Chöùc naêng caùc oâ nhôù ñöôïc duøng trong chöông trình: OÂ nhôù Chöùc naêng 7FH Byte cao cuûa giaù trò khoaûng ñònh thôøi möùc 1 (byte cao cuûa T H) 7EH Byte thaáp cuûa giaù trò khoaûng ñònh thôøi möùc 1 (byte thaáp cuûa T H) 7DH Byte cao cuûa giaù trò khoaûng ñònh thôøi möùc 0 (byte cao cuûa T L) 7CH Byte thaáp cuûa giaù trò khoaûng ñònh thôøi möùc 0 (byte thaáp cuûa T L) 7BH Boä nhôù caäp nhaät toác ñoä ño theo chu kyø laøm vieäc cuûa Timer 0 (~50ms) 7AH OÂ nhôù toác ñoä ño (caäp nhaät giaùn tieáp qua 7BH) 79H OÂ nhôù toác ñoä chuaån 78H OÂ nhôù löu toác ñoä ñaët cuûa maùy tính (caäp nhaät giaùn tieáp qua 76H) 77H OÂ nhôù löu toác ñoä ñaët cuûa ADC0809 (caäp nhaät giaùn tieáp qua 75H) 76H OÂ nhôù caäp nhaät toác ñoä ñaët töø maùy tính 75H OÂ nhôù caäp nhaät toác ñoä ñaët töø ADC0809 74H Töông töï thanh ghi R7 73H Töông töï thanh ghi R6 Chöùc naêng thanh ghi trong bank thanh ghi default: Thanh ghi Chöùc naêng R2 Ñeå ñeám soá laàn dòch bit khi chia soá 16-bit cho soá 8-bit R3 Ñeå phaùt hieän tín hieäu yeâu caàu ñaûo chieàu ñoäng cô R5 Laøm boä ñeám trong chöông trình con DELAYMS R6 ÔÛ daïng nhò phaân chöùa byte thaáp, BCD thì chöùa haøng chuïc-ñôn vò cuûa giaù trò toác ñoä ño R7 ÔÛ daïng nhò phaân chöùa byte cao, BCD thì chöùa haøng ngaøn-traêm cuûa giaù trò toác ñoä ño TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 81 -
  15. PHAÀN II - CHÖÔNG 4  TIMER 0_ISR TIMER 0_ISR: PUSH ACC CLR TR0 No Bit daáu: 00H = #0 ? Yes Ñoïc toác ñoä töø ADC vaøo oâ nhôù 75H No (75H) ≠ (77H) ? Y1: Yes Xoùa bit daáu: 00H = #0 Naïp (7DH) vaøo TH0 Naïp (7CH) vaøo TL0 Naïp (75H) vaøo (77H) Xoùa bit P3.7 Naïp (75H) vaøo (79H) SKIP_1: Khôûi ñoäng ADC0809 Naïp (7BH) vaøo (7AH) Xoùa (7BH) Set bit daáu: 00H = #1 Naïp (7FH) vaøo TH0 Naïp (7EH) vaøo TL0 Set bit P3.7 Y2: Khôûi ñoäng timer 0: TR0=1 POP ACC RETI TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 82 -
  16. PHAÀN II - CHÖÔNG 4  INT0_ISR Taêng noäi dung boä ñeám toác ño ä 7BH RETI  SP_ISR TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 83 -
  17. PHAÀN II - CHÖÔNG 4 SP_ISR: PUSH ACC No RI = 1 ? Yes Naïp SBUF vaøo (76H) Naïp (76H) vaøo R3 No R3 ≠ 100 ? Yes SKIP_4: (76H) = (79H) No ? CPL P3.6 Yes Naïp (76H) vaøo (79H) Naïp (76H) vaøo (78H) SKIP_2: CLR RI Naïp (7AH) vaøo SBUF EXIT: CLR TI POP ACC RETI  MAIN TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 84 -
  18. PHAÀN II - CHÖÔNG 4 MAIN: Naïp 50 000 µs(thôøi gian möùc 0 cuûa tín hieäu ñieàu khieån ñoäng cô) vaøo hai byte: Cao: 7DH, thaáp: 7CH; Naïp 00000 µs(thôøi gian möùc 1 cuûa tín hieäu ñieàu khieån ñoäng cô) vaøo hai byte: Cao: 7FH, thaáp: 7EH; Khôûi ñoäng ADC0809 Naïp SCON, TH1,SP Naïp TMOD, TCON, IE, IP Set bit: TR1 = 1 Set bit: TR0 = 1 X0: No (79H) (7AH) (Chuaån Ño) ? ? Yes Yes X1: Giaûm oâ nhôù 7EH, neáu traøn Taêng oâ nhôù 7EH, neáu traøn 00 →FF thì giaûm oâ nhôù 7FH. FF →00 thì taêng oâ nhôù 7FH. Taêng oâ nhôù 7CH, neáu traøn Giaûm oâ nhôù 7CH, neáu traøn FF →00 thì taêng oâ nhôù 7DH. 00 →FF thì giaûm oâ nhôù 7DH. X2: HIENTHITOCDO  HIENTHITOCDO TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 85 -
  19. PHAÀN II - CHÖÔNG 4 HIENTHITOCDO: Naïp (7AH) vaøo thanh ghi A Naïp 60 vaøo thanh ghi B Nhaân A vôùi B Naïp B vaøo R7 Naïp A vaøo R6 Naïp B vaøo (74H) Naïp A vaøo (73H) BINTOBCD Naïp R7 vaøo 74H Naïp R6 vaøo 73H Naïp (73H) vaøo thanh ghi A Naïp (74H) vaøo thanh ghi A Naïp soá BCD ñôn vò trong A (ANL) Naïp soá BCD traêm trong A (ANL) Choïn led ñôn vò: ACC.4 = 0 (ORL) Choïn led traêm: ACC.6 = 0 (ORL) Xuaát A ra port 0 Xuaát A ra port 0 DELAYMS (6 laàn) DELAYMS (6 laàn) Naïp (73H) vaøo thanh ghi A Naïp (74H) vaøo thanh ghi A Hoaùn vò hai nible trong A Hoaùn vò hai nible trong A Naïp soá BCD chuïc trong A (ANL) Naïp soá BCD ngaøn trong A (ANL) Choïn led chuïc: ACC.5 = 0 (ORL) Choïn led ngaøn: ACC.7 = 0 (ORL) Xuaát A ra port 0 Xuaát A ra port 0 DELAYMS (6 laàn) DELAYMS (6 laàn) RET  DELAYMS TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 86 -
  20. PHAÀN II - CHÖÔNG 4 DELAYMS: Xoùa thanh ghi R5 LOOPA: NOP Taêng thanh ghi R5 leân 1 No R5 = 255 ? Yes RET  BINTOBCD BINTOBCD: PUSH ACC PUSH B TAØI LIEÄU ÑÖÔÏC SHARE TREÂNNaïp WEBSITE 10 vaøo thanh KYSUBACHKHOA.C ghi B OM - 87 - DIV_16_8
  21. PHAÀN II - CHÖÔNG 4  DIV_16_8 DIV_16_8: TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITECaát noäi dung KYSUBACHKHOA.C A vaøo STACK OM Caát noäi dung R2 vaøo STACK - 88 - Xoùa thanh ghi A Naïp 16 vaøo R2
  22. PHAÀN II - CHÖÔNG 4 TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 89 -
  23. PHAÀN II - CHÖÔNG 4 E—CHÖÙC NAÊNG CUÛA TÖØNG CHÖÔNG TRÌNH CON:  TIMER 0_ISR Ñaây laø chöông trình phuïc vuï ngaét daønh cho ngaét do Timer 0 gaây ra. Nhö ñaõ ñeà caäp ôû phaàn treân [doøng thöù 9 töø treân xuoáng, trang 55]; nguyeân lyù taïo xung coù ñoä roäng möùc cao hay thaáp thay ñoåi cho ñieàu khieån toác ñoä ñoäng cô nhö sau : High 7FH T T High 7DH Low 7EH H L Low 7CH T coá ñònh = 50ms = 50 000 µs TH thay ñoåi tuøy yù theo toác ñoä ñoäng cô - neáu toác ñoä ñoäng cô > toác ñoä chuaån  giaûm T H - neáu toác ñoä ñoäng cô < toác ñoä chuaån  taêng T H Trong ñoù: TL laø khoaûng thôøi gian ñònh thôøi ôû möùc 0 (töông öùng vôùi ñieän aùp 0V). TH laø khoaûng thôøi gian ñònh thôøi ôû möùc 1 (töông öùng vôùi ñieän aùp 5V). Giaù trò naïp cuûa khoaûng ñònh thôøi T H ñöôïc löu vaøo caùc oâ nhôù coù ñòa chæ:( high: 7FH, low : 7EH ) vaø cho T L : ( high : 7DH, low : 7CH ). Toác ñoä chuaån ñöôïc laáy vaøo töø ADC0809 hoaëc maùy tính naïp vaøo oâ nhôù ñòa chæ : (79H). So saùnh giöõa oâ nhôù caäp nhaät tröïc tieáp vôùi oâ nhôù caäp nhaät giaùn tieáp ñeå caäp nhaät vaøo oâ nhôù toác ñoä chuaån 79H söï thay ñoåi treã nhaát xuaát hieän cuûa hai phaàn ñieàu khieån ñaët toác ñoä ADC vaø maùy tính. Trong ñoù, caùc oâ nhôù duøng ñeán laø: 78H : oâ nhôù toác ñoä ñaët töø maùy tính (78H caäp nhaät giaùn tieáp qua 76H). 76H : oâ nhôù toác ñoä ñaët caäp nhaät tröïc tieáp töø maùy tính. 77H : oâ nhôù toác ñoä ñaët töø ADC0809 (77H caäp nhaät giaùn tieáp qua 75H). 75H : oâ nhôù toác ñoä ñaët caäp nhaät tröïc tieáp töø ADC0809. Bit ñaùnh daáu ñeám, choïn laø bit ñònh ñòa chæ 00H. Bit 00 coù giaù trò : 1 : töùc laø xung ñieàu khieån ñoäng cô ñang ôû ñònh thôøi möùc 1 (5V). 0 : töùc laø xung ñieàu khieån ñoäng cô ñang ôû ñònh thôøi möùc 0 (0V). Söû duïng Timer 0, mode 1, khi traøn thì interrupt (sau khoaûng 50ms). TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 90 -
  24. PHAÀN II - CHÖÔNG 4 Timer 0 : boä ñònh thôøi 16-bit coù boán mode hoaït ñoäng. Mode 1 : Timer 0 ñaët hoaït ñoäng ôû mode 1, caùc bit M1 = 0, M0 = 1 trong thanh ghi TMOD => thieát laäp ñònh thôøi 16-bit, ñeå Timer 0 baét ñaàu ñeám thì ñoàng thôøi phaûi set bit TR0 = 1 trong thanh ghi TCON. Interrupt timer 0: TF0 = 1 trong thanh ghi TCON khi Timer 0 ñeám tôùi giaù trò ñaët vaø voøng veà giaù trò 0. Vôùi caùc dieãn giaûi treân, hoaït ñoäng cuûa TIMER 0_ISR toùm taét nhö sau: Khi ngaét xaûy ra, döøng timer 0, kieåm tra bit daáu 00H, coù hai tröôøng hôïp:  Bit daáu 00H baèng 1: caùc hoaït ñoäng tieáp theo seõ laø  Xoùa bit daáu 00H;  Naïp laïi dung löôïng ñeám (T L) cho Timer 0;  Haï tín hieäu ñieàu khieån ñoäng cô xuoáng möùc thaáp;  Cho chaïy laïi Timer 0.  Bit daáu 00H baèng 0:  Caäp nhaät toác ñoä ñaët töø ADC0809. Hai tröôøng hôïp:  Phaùt hieän coù söï thay ñoåi toác ñoä ñaët töø ADC, caäp nhaät toác ñoä ñoù.  Toác ñoä nhaän veà töø ADC khoâng thay ñoåi, khoâng caäp nhaät.  Khôûi ñoäng laïi ADC0809;  Set bit daáu 00H;  Naïp laïi dung löôïng ñeám (T H) cho Timer 0;  Naâng tín hieäu ñieàu khieån ñoäng cô leân möùc cao;  Cho pheùp Timer 0 hoaït ñoäng.  INT0_ISR Trình phuïc vuï ngaét gaây ra do ngaét ngoaøi 0. Chöông trình con naøy phuïc vuï vieäc ñeám toác ñoä quay cuûa ñoäng cô. Noù ñöôïc vieát ngay sau vector ngaét cuûa ngaét ngoaøi 0 (leänh vi xöû lyù: ORG 0003H). Trình naøy chæ thöïc hieän moãi ñoäng taùc laø taêng noäi dung oâ nhôù toác ñoä ño 7BH leân moät. Quaù trình ñeám toác ñoä naøy dieãn ra trong khoaûng 50ms (chu kyø cuûa xung ñieàu khieån toác ñoä ñoäng cô) vaø sau ñoù ñöôïc taùi laäp (voøng veà 0 vaø ñeám laïi trong chu kyø tieáp). Trình phuïc vuï ngaét naøy khoâng hieän dieän roõ raøng trong chöông trình, noù ñöôïc ñaët noái tieáp ngay sau leänh goïi ñòa chæ vector ngaét vaø ñöôïc trình baøy ôû ñaây coù teân laø INT0_ISR chæ nhaèm muïc ñích moâ taû roõ hôn caùc hoaït ñoäng dieãn ra beân trong boä vi ñieàu khieån.  SP_ISR Ñaây laø trình phuïc vuï ngaét, phuïc vuï vieäc thu – phaùt döõ lieäu cuûa port noái tieáp. Trình phuïc vuï port noái tieáp hoaït ñoäng theo cô cheá thu tröôùc vaø phaûn hoài sau. Toùm taét quaù trình hoaït ñoäng cuûa trình phuïc vuï ngaét port noái tieáp nhö sau: TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 91 -
  25. PHAÀN II - CHÖÔNG 4 Ban ñaàu chôø nhaän döõ lieäu göûi qua töø maùy tính, khi nhaän ñuû 1 byte döõ lieäu, côø RI döïng leân 1. Trình phuïc vuï ngaét nhaûy vaøo xen ngang chöông trình chính. Byte döõ lieäu ñöôïc kieåm tra ñeå xaùc nhaän laø tín hieäu ñieàu khieån ñaûo chieàu hay laø tín hieäu ñaët toác ñoä. Neáu laø tín hieäu ñaûo chieàu, boä vi ñieàu khieån seõ xuaát tín hieäu ñaûo cöïc ñoäng cô. Tröôøng hôïp ñaët toác ñoä, ñoäng cô moät laàn nöõa seõ kieåm tra ñeå phaùt hieän toác ñoä ñaët töø maùy tính coù thay ñoåi so vôùi toác ñoä hieän haønh hay khoâng. Quaù trình xöû lyù tieáp theo vi ñieàu khieån döïa vaøo keát quaû kieåm tra, neáu coù thay ñoåi toác ñoä thì AT89C51 töï ñoäng caäp nhaät toác ñoä môùi naøy, neáu khoâng thay ñoåi thì vi ñieàu khieån seõ boû qua khaâu caäp nhaät treân. Ñeå keát thuùc hoaït ñoäng cuûa mình, vi ñieàu khieån traû toác ñoä ño hieän haønh veà maùy tính ñeå hieån thò treân maøn hình maùy tính.  MAIN Phaàn chöông trình laøm vieäc nhö moät boä tính toaùn-hieäu chænh dung löôïng ñeám T H hoaëc T L ñeå thay ñoåi chu kyø laøm vieäc cuûa xung ñieàu khieån toác ñoä ñoäng cô. Beân caïnh ñoù coøn coù nhieäm vuï: taïo baud rate 1200, naïp caùc trò thích hôïp cho caùc thanh ghi ñieàu khieån vaø hieån thò toác ñoä ño. Xem chi tieát treân phaàn löu ñoà giaûi thuaät.  HIENTHITOCDO Trình con naøy phuïc vuï cho vieäc hieån thò toác ñoä ño ra khoái hieån thò led baûy ñoaïn. Xem chi tieát treân löu ñoà giaûi thuaät.  DELAYMS Trình con taïo treã khoaûng moät mili giaây (1024 microsecconds).  BINTOBCD Trình con chuyeån ñoåi soá BIN sang soá BCD, ñaàu vaøo laø caëp thanh ghi R7:R6 lieân tieáp chöùa byte cao vaø byte thaáp cuûa soá nhò phaân 16-bit. Ñeå chuyeån sang maõ BCD neùn, ta caàn chuyeån sang maõ BCD theo caùch laáy giaù trò caàn chuyeån ñoåi laàn löôït chia cho 10, soá dö seõ laø maõ BCD töông öùng. Neáu soá caàn chuyeån ñoåi laø 16-bit nhö tröôøng hôïp cuûa ta, chia laàn ñaàu ñeå ñöôïc soá dö laø maõ BCD haøng ñôn vò, laáy keát quaû chia laàn thöù hai ñeå ñöôïc soá dö laø maõ BCD haøng chuïc. Thuû tuïc duøng ñeå chia soá 16-bit cho soá 8-bit laø DIV_16_8. Ñeå tìm hai maõ haøng traêm vaø haøng ngaøn coøn laïi, chæ caàn duøng leänh thoâng thöôøng trong taäp leänh. Keát quaû töø thuû tuïc naøy cuõng laø R7:R6, nhöng baây giôø laø soá BCD neùn vôùi R7 chöùa haøng ngaøn trong 4-bit cao, haøng traêm trong 4-bit thaáp. Töông töï cho R6, nible cao chöùa haøng chuïc vaø thaáp chöùa ñôn vò. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 92 -
  26. PHAÀN II - CHÖÔNG 4 Trong thuû tuïc naøy coù söû duïng ñeán thuû tuïc chia soá 16-bit cho soá 8-bit seõ trình baøy döôùi ñaây.  DIV_16_8 Chöông trình con chia moät soá nhò phaân 16-bit cho 10 (soá nhò phaân 8-bit) duøng pheùp tröø vaø pheùp dòch traùi bit lieân tieáp cho tôùi khi ñeán bit thöù 16. Dieãn giaûi cuï theå nhö sau: Ñaàu tieân, dòch traùi 1-bit toaøn boä 16-bit trong coù maët trong caëp thanh ghi R7:R6 coù côø Carry, CY=0. Thanh ghi A taïi doøng leänh mang giaù trò caùc bit cao cuûa soá nhò phaân 16-bit ñöôïc dòch traùi vaø coù theå coøn coù bit ñi tröôùc bit cao mang giaù trò chia coøn dö cuûa laàn dòch bit keá tröôùc ñoù. Phaàn tính ra trò dö naøy ñöôïc tính ra baèng leänh naèm noái tieáp sau cuûa nhaõn “A_GREATER_EQ_B” vaø trò dö (neáu coù) ñöôïc giöõ nguyeân trong thanh ghi A luùc nhaûy ra ngoaøi nhaõn. Taïi doøng leänh cho ta ba khaû naêng quan heä giöõa A vaø B:  Neáu A = B : CY = 0  Neáu A > B : CY = 0  Neáu A B, thì thöông soá = 1 vaø soá dö tính ra baèng leänh SUBB. Soá dö naøy seõ löu laïi cho laàn dòch bit sau (laàn dòch bit sau laø laàn dòch bit thöù ≤ 16). TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 93 -
  27. PHAÀN II - CHÖÔNG 4 F—CHÖÔNG TRÌNH: ; ; ;CHÖÔNG TRÌNH CHÍNH, xöû duïng 3 ngaét ; ; ORG 0000H LJMP MAIN ORG 0003H ;external interrupt 0 INC 7BH CPL P2.1 RETI ORG 000BH ;timer 0 interrupt LJMP TIMER 0_ISR ORG 0023H ;serial port interrupt LJMP SP_ISR MAIN: CLR TI CLR RI MOV 7DH,#HIGH(-50000) ;chu kyø xung kích ñoäng cô = 50ms MOV 7CH,#LOW(-50000) ;taàn soá töông öùng 20Hz MOV 7FH,#0 ;khôûi ñoäng khoaûng ñònh thôøi möùc 1 baèng zero MOV 7EH,#0 CLR P2.0 ; khôûi ñoäng ADC0809 SETB P2.0 ;taïo moät xung ra START,ALE CLR P2.0 MOV TMOD,#21H ;timer1 mode 2, timer 0 mode 1 MOV TH1,#-26 ;1200 baud SETB TR1 SETB TR0 MOV TCON,#01H ;IT0 =1 : ngaét ngoaøi 0 taùc ñoäng baèng caïnh xung xuoáng MOV SCON,#50H ; mode = 8-bit UART MOV SP, #2FH ;boä nhôù doàn baét ñaàu töø 30H MOV IP,#02H ;PT0=1 :öu tieân cho ngaét timer 0 ;REN=1 : cho pheùp hoaït ñoäng thu MOV IE,#93H ;EA=1:cho pheùp ngaét toaøn cuïc ;ES=1:cho pheùp ngaét do port noái tieáp ;ET0=1 : cho pheùp ngaét do timer 0 ;EX0=1 :cho pheùp ngaét ngoaøi 0 ; ; ; ;Duøng timer 0 ñeå ñònh toác ñoä ñoäng cô ;X0 : giaûm ñònh thôøi möùc 1 vaø taêng ñònh thôøi möùc 0 ;X1 : taêng ñònh thôøi möùc 1 vaø giaûm ñònh thôøi möùc 0 ; ; X0: MOV A,7AH ;boä nhôù toác ñoä ño (7AH) CLR C SUBB A,79H ;toác ñoä chuaån (79H) JC X1 ;neáu chuaån > ño: C=1 ; >nhaûy ñeán X1 MOV A,79H ;chuaån TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 94 -
  28. PHAÀN II - CHÖÔNG 4 CLR C SUBB A,7AH ;ño JNC X2 ;neáu chuaån = ño : C=0 ; >nhaûy ñeán X2 DEC 7EH ;ño > chuaån: giaûm ñònh khoaûng ñònh thôøi 1 CLR C ;ñoàng thôøi taêng khoaûng ñònh thôøi 0 MOV A,#0FFH ;so saùnh byte thaáp vôùi 0FFH CJNE A,7EH, TANG_DINH_THOI_MUC_0 ; neáu pheùp tröø (7EH) coù möôïn ; thì tröø tieáp (7FH) DEC 7FH ;byte cao giaù trò khoaûng ñònh thôøi 1 TANG_DINH_THOI_MUC_0: INC 7CH ;byte thaáp giaù trò khoaûng ñònh thôøi 0 CLR C MOV A,#0 CJNE A,7CH, X2 ;neáu coäng bò traøn thì coäng 1 ;vaøo (7DH)_byte cao giaù trò ñònh thôøi 0 INC 7DH CPL P2.2 SJMP X2 X1: INC 7EH CLR C MOV A,#0 CJNE A,7EH, GIAM_DINH_THOI_MUC_0 INC 7FH GIAM_DINH_THOI_MUC_0: DEC 7CH CLR C MOV A,#0FFH CJNE A,7CH, X2 DEC 7DH CPL P2.3 X2: ;rpm=(7AH)/20/0.05*60=(7AH)*60 CALL HIENTHITOCDO SJMP X0 ; ; ; ;Trình phuïc vuï ngaét Timer 0 ;naïp caùc khoaûng ñònh thôøi vaø cho chaïy timer 0 ; ; TIMER 0_ISR: PUSH ACC CLR TR0 JB 00H, Y1 ;kieåm tra bit daáu 00H, neáu (00H)=1 ;thì nhaûy ñeán Y1 MOV 75H, P1 ;75H laø oâ nhôù caäp nhaät toác ñoä ñaët töø ADC MOV A, 75H CJNE A,77H, NOT_EQ_ADC ;so saùnh giaù trò caäp nhaät vôùi giaù trò ñaõ löu ;cuûa laàn kieåm tra tröôùc SJMP SKIP_1 ;neáu khoâng thay ñoåi thì baét ñaàu tieán haønh naïp TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 95 -
  29. PHAÀN II - CHÖÔNG 4 ;khoaûng ñònh thôøi 0 vaø cho chaïy timer 0 NOT_EQ_ADC: MOV 77H,A ;77H laø oâ nhôù löu toác ñoä ñaët cuõ cuûa ADC MOV 79H, A ;baèng thì caäp nhaät toác ñoä chuaån SKIP_1: CLR P2.0 ;khôûi ñoäng ADC SETB P2.0 CLR P2.0 MOV 7AH, 7BH ;7AH laø oâ nhôù toác ñoä ño MOV 7BH, #0 ;7BH laø oâ nhôù toác ñoä seõ thay ñoåi ;theo moãi laàn timer 0 bò traøn (~50ms) SETB 00H ;baét ñaàu naïp ñònh thôøi 1 MOV TH0, 7FH ;byte cao giaù trò khoaûng ñònh thôøi 1 MOV TL0, 7EH ;byte thaáp giaù trò khoaûng ñònh thôøi 1 SETB P3.7 ;naâng tín hieäu ñieàu khieån ñoäng cô leân möùc cao SJMP Y2 Y1: CLR 00H ;baét ñaàu naïp ñònh thôøi 0 MOV TH0, 7DH ;byte cao giaù trò khoaûng ñònh thôøi 0 MOV TL0, 7CH ;byte thaáp giaù trò khoaûng ñònh thôøi 0 CLR P3.7 ;haï tín hieäu ñieàu khieån ñoäng cô xuoáng möùc 0 Y2: SETB TR0 ;cho timer 0 chaïy POP ACC CPL P2.4 ;ñeøn baùo RETI ; ; ; ;Hieån thò toác ñoä, pp queùt led ;haøng ngaøn-traêm chöùa trong byte ñòa chæ 74H ;haøng chuïc-ñôn vò trong byte ñòa chæ 73H ;7AH chöùc toác ñoä ño baèng soá xung/50ms hoaëc voøng/giaây ;nhö vaäy muoán chuyeån ñoåi sang rpm thì nhaân 60. ; ; HIENTHITOCDO: MOV A, 7AH MOV B,#60 MUL AB MOV 73H, A ; (73H) = (R6) MOV 74H, B ; (74H) = (R7) MOV R7, B ;R7 : byte cao soá nhò phaân 16 bit MOV R6, A ;R6 : byte thaáp soá nhò phaân 16 bit LCALL BINTOBCD ;CTC chuyeån soá BIN 16 bit thaønh soá BCD neùn MOV 73H, R6 ;R7 chöùa soá BCD neùn haøng ngaøn-haøng traêm MOV 74H, R7 ;R6 chöùa soá BCD neùn haøng chuïc-ñôn vò MOV A, 73H ANL A, #0FH ORL A, #11100000B ;choïn led ñôn vò MOV P0, A ACALL DELAYMS ACALL DELAYMS TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 96 -
  30. PHAÀN II - CHÖÔNG 4 ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS MOV A, 73H SWAP A ANL A, #0FH ORL A, #11010000B ;choïn led chuïc MOV P0, A ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS MOV A, 74H ANL A, #0FH ORL A, #10110000B ;choïn led traêm MOV P0, A ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS MOV A, 74H SWAP A ANL A, #0FH ORL A, #01110000B ;choïn led ngaøn MOV P0, A ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS ACALL DELAYMS RET ; ; ; ; Chöông trình con laøm treã 1 mili giaây ; ; DELAYMS: ;millisecond delay routine(1024MC) MOV R5,#00H ; 2MC LOOPA: ; 255 x 4MC = 1020MC NOP ; 1MC INC R5 ; 1MC CJNE R5,#0FFH, LOOPA ; 2MC RET ; 2MC TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 97 -
  31. PHAÀN II - CHÖÔNG 4 ; ; ; ; Chöông trình con ñoåi soá nhò phaân 16-bit thaønh maõ BCD neùn ;inputs: dia chi 74H chua byte cao soá nhò phaân 16-bit (R7 =74H) ; dia chi 73H chua byte thaáp soá nhò phaân 16-bit (R6 = 73H) ;outputs: dia chi 74H chua ngan-tram BCD neùn (R7 = 74H) ; dia chi 73H chua chuc-donvi BCD neùn (R6 = 73H) ; ; BINTOBCD: PUSH ACC PUSH B MOV B, #10 ACALL DIV_16_8 ;laáy R7:R6 chia cho 10 PUSH B ;caát haøng ñôn vò vaøo Stack MOV B, #10 ACALL DIV_16_8 ;tieáp tuïc chia cho 10 PUSH B ;caát haøng chuïc vaøo Stack MOV B, #10 MOV A, R6 DIV AB ;tieáp tuïc chia cho 10 PUSH B ;caát soá haøng traêm vaøo Stack ;A chöùa soá haøng ngaøn SWAP A ;Ñöa soá haøng ngaøn leân 4 bit cao POP B ;laáy soá haøng traêm töø Stack ra ORL A, B ;Keát hôïp soá haøng ngaøn-haøng traêm MOV R7, A ;R7 = ngaøn - traêm POP ACC ;laáy soá haøng chuïc töø Stack ra SWAP A ;Ñöa soá haøng chuïc leân 4 bit cao POP B ;laáy soá haøng ñôn vò töø Stack ra ORL A, B ;Keát hôïp soá haøng chuïc- haøng ñôn vò MOV R6, A ;R6 = chuïc - ñôn vò POP B POP ACC RET ; ; ; ;Chöông trình con chia moät soá nhò phaân 16-bit cho moät soá 8-bit ;soá 8-bit laø 10 (heä thaäp phaân) ; ; DIV_16_8: PUSH ACC ;caát thanh ghi A PUSH 02H ;caát thanh ghi R2 MOV R2, #16 ;cho pheùp dòch 16 laàn CLR A DIVIDE: XCH A, R6 CLR C ;dòch bit 7 cuûa R6 vaøo Carry RLC A ;bit 0 cuûa R6 baèng 0 XCH A, R6 TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 98 -
  32. PHAÀN II - CHÖÔNG 4 XCH A, R7 ;dòch bit Carry vaøo bit 0 cuûa R7 RLC A XCH A, R7 RLC A ;dòch bit 7 cuûa R7 vaøo A CJNE A, B, NOT_EQUAL ; Xem soá bit ñaõ dòch >= soá chia chöa? SJMP A_GREATER_EQ_B NOT_EQUAL: ;No : thöông soá = 0 caát trong R6 JC BELOW A_GREATER_EQ_B: ;Yes: thöông soá = 1 caát trong R6 SUBB A, B ; Soá dö caát trong A XCH A, R6 ORL A, #1 XCH A, R6 BELOW: DJNZ R2, DIVIDE ; xem ñaõ dòch ñuû 16 laàn chöa? ;chöa thì nhaûy leân DIVIDE XCH A, B ; neáu ñuû 16 laàn dòch roái thì naïp soá dö vaøo B POP 02H POP ACC RET ; ; ; ;Trình phuïc vuï ngaét Port noái tieáp ; ; SP_ISR: ;NHAÄN TRÖÔÙC - PHAÛN HOÀI SAU. PUSH ACC JNB RI, EXIT MOV 76H, SBUF ;76H laø oâ nhôù caäp nhaät toác ñoä töø maùy tính MOV R3, 76H ;R3 thanh ghi duøng phaùt hieän ñaûo chieàu ñoäng cô CJNE R3,#100, SKIP_4 CPL P3.6 SJMP EXIT SKIP_4: MOV A, 76H CJNE A, 79H, NOT_EQ_COMPUTER SJMP SKIP_2 NOT_EQ_COMPUTER: ;phaùt hieän toác ñoä ñaët töø maùy tính thay ñoåi neân ;laáy toác ñoä töø 76H naïp cho 78H MOV 78H, A ;78H laø oâ nhôù löu giaù trò ñaët töø maùy tính MOV 79H, 78H SKIP_2: CLR RI ; xoùa RI MOV SBUF, 7AH ;PHAÛN HOÀI THOÂNG TIN ; keát thuùc phaûn hoài, ngaét noái tieáp bò ngaét bôûi chính noù ;voøng leân thöïc hieän laïi trình fuïc vuï ngaét port noái tieáp, ; ñuïng phaûi doøng leänh thoaùt do (RI = 0) ;keát thuùc trình fuïc vuï ngaét môùi naøy ;trôû veà laïi trình vuï ngaét tröôùc ñoù ; (taïm ngöng do ngaét phaùt xuaát hieän), vaø ;laàn naøy thoaùt thöïc söï khoûi SP_ISR ! TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 99 -
  33. PHAÀN II - CHÖÔNG 4 EXIT: CLR TI POP ACC CPL P2.5 ;ñeøn baùo giao tieáp coång noái tieáp RETI ; ; ; ; R3 4 ÑAÛO CHIEÀU ÑOÄNG CÔ ; ; ; R5 4 DELAYMS ; ; ; R6 4 CHUC-DONVI ; ; ; R7 4 NGAN-TRAM ; ; END TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 100 -
  34. PHAÀN II - CHÖÔNG 4 TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 101 -
  35. PHAÀN II - CHÖÔNG 5 - 102 -
  36. PHAÀN II - CHÖÔNG 5 GIÔÙI THIEÄU VEÀ VISUAL BASIC  Sô löôïc veà Visual Basic: - Visual Basic (VB) laø saûn phaåm phaàn meàm cuûa Microsoft. - VB laø moät ngoân ngöõ laäp trình höôùng ñoái töôïng. - Hieän nay phieân baûn môùi nhaát laø phieân baûn 6.0 (naêm 1998), cung caáp moät soá tính naêng môùi phuïc vuï cho laäp trình treân Internet. - VB 6.0 laø chöông trình 32 bit, chæ chaïy treân moâi tröôøng Win95 trôû leân. - Phieân baûn chöông trình söû duïng laø phieân baûn 6.0.  Tính naêng cuûa VB 6.0: * Öu ñieåm: - Tieát kieäm ñöôïc thôøi gian vaø coâng söùc so vôùi moät soá ngoân ngöõ laäp trình coù caáu truùc khaùc vì ta coù theå thieát laäp caùc hoaït ñoäng treân töøng ñoái töôïng ñöôïc VB cung caáp. - Khi thieát keá chöông trình coù theå thaáy ngay keát quaû qua töøng thao taùc vaø giao dieän khi thi haønh chöông trình. - Cho pheùp chænh söûa deã daøng, ñôn giaûn. - Khaû naêng keát hôïp vôùi caùc thö vieän lieân keát ñoäng DLL. * Nhöôïc ñieåm: - Yeâu caàu caáu hình maùy khaù cao. - Chæ chaïy ñöôïc treân moâi tröôøng Win95 trôû leân.  Yeâu caàu khi söû duïng chöông trình: Maùy tính cuûa ta phaûi ñöôïc caøi ñaët phaàn meàm Visual Basic (5.0 hoaëc 6.0) vì trong chöông trình khoâng cung caáp phaàn meàm VB. Ta coù theå tìm mua phaàn meàm VB (caùc phieân baûn) taïi caùc cöûa haøng dòch vuï tin hoïc. * Caùch caøi ñaët Visual Basic (5.0 hoaëc 6.0): Caùch caøi ñaët VB cuõng gioáng nhö caùch caøi ñaët caùc chöông trình phaàn meàm khaùc treân Win95. - Ñöa CD chöông trình nguoàn vaøo oå ñóa CD ROM, chöông trình AutoRun töï ñoäng hieån thò. - Thöïc hieän theo töøng böôùc höôùng daãn cuûa chöông trình caøi ñaët. - Löu yù coù theå choïn thö muïc löu giöõ chöông trình VB khaùc vôùi höôùng daãn maëc ñònh maø chöông trình caøi ñaët ñöa ra nhöng phaûi nhôù chính xaùc ñeå khoâng gaây raéc roái veà sau. - Sau khi caøi ñaët, VB seõ taïo treân ñóa cöùng moät thö muïc chính theo ñöôøng daãn ñöôïc chæ ñònh trong quaù trình caøi ñaët, trong ñoù chöùa caùc döõ lieäu khaùc nhau duøng cho vieäc thieát keá hay nhöõng coâng cuï ñeå laøm vieäc vôùi VB.  Moät soá ñònh nghóa: Moät chöông trình baèng VB coù 2 phaàn: Form vaø Code. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 103 -
  37. PHAÀN II - CHÖÔNG 5 - Form laø "boä maët" cuûa chöông trình vaø ngöôøi söû duïng laøm vieäc vôùi chöông trình qua ñoái töôïng naøy, treân ñoù theå hieän caùc nuùt ñieàu khieån hay moät trình ñôn qui ñònh caùch laøm vieäc cuûa Form. - Code laø phaàn beân trong cuûa chöông trình ñeå ñieàu khieån toaøn chöông trình. Phaàn naøy chæ ngöôøi laäp trình môùi coù theå thaáu suoát noù vaø thieát laäp nhöõng ñoaïn leänh ra leänh cho ñoái töôïng thöïc hieän moät coâng vieäc naøo ñoù. - Khi ñaõ thöïc hieän xong vieäc taïo hai böôùc treân nghóa laø ta ñaõ laäp moät döï aùn (Project). Moãi döï aùn coù theå coù nhieàu Form, hoaëc caàn coù nhöõng taäp tin chöùa maõ leänh rieâng ñeå xöû lyù nhöõng thao taùc ñaëc bieät, hoaëc moät soá taäp tin duøng ñeå quaûn lyù toaøn boä döï aùn Nhö vaäy, moät döï aùn (Project) goàm coù (caùc ñieàu kieän lieät keâ döôùi ñaây coù theå coù hoaëc khoâng trong moät Project tuøy töøng döï aùn): + Taäp tin .FRM cho moãi Form ñöôïc thieát keá. + Taäp tin .FRX cho Form ñöôïc thieát keá vôùi caùc coâng cuï coù döõ lieäu ñaëc bieät. + Taäp tin .BAS cho caùc maõ leänh rieâng. + Taäp tin .RES chöùa caùc taøi nguyeân cuûa döï aùn nhö bitmap, icon + Taäp tin duy nhaát .VBP (chöông trình chính) cho toaøn boä döï aùn.  Caùc thao taùc cô baûn khi xaây döïng chöông trình baèng VB: * Caùch theâm moät ñoái töôïng treân thanh ToolBox: - RightClick vaøo ñoái töôïng Pointer treân thanh ToolBox, choïn Component , hoäp thoaïi Component xuaát hieän. - Ñaùnh daáu Check vaøo ñoái töôïng muoán choïn, sau ñoù Click OK ñeå ghi nhaän. * Taïo môùi moät Project: - Click choïn bieåu töôïng New Project hoaëc vaøo trình ñôn File\New Project. - Trong hoäp thoaïi New Project qui ñònh chöông trình ta muoán vieát ôû möùc ñoä naøo, ôû möùc ñoä caên baûn ta choïn Standard EXE vaø click OK. Caùc löïa choïn khaùc ta seõ tìm hieåu ôû möùc laäp trình cao hôn. - Maøn hình xuaát hieän moät Project môùi chöùa moät Form traéng töông öùng. * Löu Project: - Click choïn bieåu töôïng Save hoaëc vaøo trình ñôn File\Save Project ñeå löu Project vaø File\Save Form ñeå löu Form. - Ñaët teân cho Project hay Form vaø click OK ñeå chaáp nhaän. * Môû Project coù saün: - Click choïn bieåu töôïng Open hoaëc vaøo trình ñôn File\Open Project. - Hoäp thoaïi Open Project xuaát hieän, choïn teân Project caàn môû trong khung File name vaø click Open ñeå môû Project. * Taïo Form: Töø trình ñôn Project, choïn Add Form hoaëc choïn bieåu töôïng Add Form treân thanh Standard. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 104 -
  38. PHAÀN II - CHÖÔNG 5 * Caùch goïi thi haønh hay môû moät Form: Trong moät Project coù theå coù nhieàu Form, neáu ta muoán môû Form naøy khi taùc ñoäng ñeán moät bieán coá naøo ñoù treân Form ñang hoaït ñoäng ta coù theå duøng leänh: Teân Form caàn môû.Show Ví duï: Giaû söû Form frmMain ñang hieän haønh, ta muoán khi Click vaøo nuùt Tìmkieám ñeå tìm moät ngöôøi naøo ñoù trong döõ lieäu cuûa ta. Caùc thoâng tin veà ngöôøi caàn tìm ñöôïc hieån thò trong Form frmTim, do ñoù ta phaûi cho hieån thò Form naøy leân tröôùc baèng caùch vieát leänh cho bieán coá Click cuûa nuùt Tìm kieám cuûa Form frmMain: Private Sub Timkiem_Click() frmTim.Show End * Ñaët moät ñoái töôïng leân Form: Coù hai caùch: Caùch 1: DoubleClick leân ñoái töôïng caàn ñaët leân Form treân thanh coâng cuï ToolBox. Caùch 2: Click chuoät leân ñoái töôïng treân thanh ToolBox, sau ñoù ñöa troû chuoät leân Form vaø Click and Drag ñeán vò trí vaø kích thöôùc thích hôïp. * Choïn ñoái töôïng ñaõ coù treân Form: Ñöa troû chuoät ñeán ñoái töôïng vaø Click, coù theå nhaán giöõ phím Shift vaø Click ñeán caùc ñoái töôïng khaùc ñeå choïn nhieàu ñoái töôïng. * Di chuyeån moät ñoái töôïng treân Form: Choïn ñoái töôïng caàn di chuyeån vaø Click and Drag ñeán vò trí môùi hoaëc nhaán toå hôïp phím Ctrl + caùc phím di chuyeån. * Hieäu chænh kích thöôùc ñoái töôïng: Choïn ñoái töôïng caàn hieäu chænh, ñöa troû chuoät ñeán 1 trong 8 nuùt ñieàu khieån bao quanh ñoái töôïng vaø Click and Drag cho ñeán kích thöôùc vöøa yù hoaëc nhaán toå hôïp phím Shift + Caùc phím di chuyeån. * Xoùa moät ñoái töôïng treân Form: Choïn ñoái töôïng caàn xoùa vaø nhaán phím Delete. * Moâ taû caáu truùc cuûa chöông trình: Chöông trình Visual Basic ñöôïc thöïc hieän theo hai böôùc: - Taïo Form (Thieát keá giao dieän): Thieát keá hình daùng Form vaø boá trí caùc ñoái töôïng treân Form. - Vieát Code (vieát ñoaïn maõ leänh cho caùc ñoái töôïng): Duøng caùc caâu leänh cuûa VB ñeå qui ñònh caùch laøm vieäc cuûa moãi Form hay moãi ñoái töôïng. G—NHIEÄM VUÏ CUÛA PHAÀN MEÀM: Ta seõ duøng phaàn meàm naøy ñeå laäp trình treân maùy tính giao tieáp vôùi kit AT89C51. Caùc thaønh phaàn cuûa chöông trình vieát treân Visual Basic coù caùc file: Caùc file thö vieän lieân keát ñoäng vaø file ñieàu khieån nhuùng ñoái töôïng vaø keát noái döõ lieäu trong windows OLE (Object Linking & Embedding): TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 105 -
  39. PHAÀN II - CHÖÔNG 5 Löu yù: file Mscomm32.ocx vaø MSVBVM60.DLL chæ caàn thieát khi maùy tính söû duïng khoâng caøi ñaët chöông trình Visual Basic (heä ñieàu haønh maùy tính ñang söû duïng laø windows 98SE). H—GIAÛI THÍCH HOAÏT ÑOÄNG: Khi muoán giao tieáp duøng chöông trình naøy, ta coù theå chaïy file ñaõ ñöôïc bieân dòch saün hoaëc caùch khaùc laø chaïy treân neàn Visual Basic, nhaán nuùt open vaø choïn file , nhaán phím Start treân thanh coâng cuï hoaëc phím F5. Giao dieän laøm vieäc treân Visual Basic 6.0 sau khi môû seõ coù cöûa soå nhö sau: Hình 5.1 Giao dieän panel ñieàu khieån treân PC. Treân giao dieän ñaõ ñöôïc môû ra, ta nhìn thaáy coù caùc phím: Start, Stop, InvertDir, Exit, moät thanh tröôït ñaët toác ñoä vaø hai khung hieån thò: oâ lôùn daønh hieån thò toác ñoä ño vaø nhoû cho toác ñoä ñaët. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 106 -
  40. PHAÀN II - CHÖÔNG 5 Ñeå chaïy ñoäng cô ôû toác ñoä mong muoán, choïn toác ñoä ñaët baèng thanh tröôït, nhaán phím Start treân panel ñieàu khieån ñeå truyeàn toác ñoä ñaët cho kit. Sau khi truyeàn xong, maùy tính seõ nhaän ñöôïc toác ñoä ño ñöôïc töø kit göûi laïi cho noù. Toác ñoä ño naøy seõ hieån thò treân khung hieån thò daønh cho toác ñoä ño. Ñeå thöïc hieän döøng ñoäng cô, nhaán nuùt Stop. Ñeå laøm ñaûo chieàu ñoäng cô, nhaán phím InvertDir. Coù theå thöïc hieän haõm ngöôïc nhö sau: nhaán InvertDir ñeå ñaûo chieàu ñoäng cô, quan saùt ñeå phaùt hieän thôøi ñieåm toác ñoä ñoäng cô giaûm veà khoâng, nhaán nuùt Stop. Ta neân nhaán sôùm tröôùc luùc ñoäng cô döøng moät chuùt ñeå traùnh tröôøng hôïp ñaùp öùng cuûa ta khoâng kòp luùc toác ñoä ñoäng cô qua giaù trò zero. Nhaán nuùt Exit ñeå thoaùt khoûi chöông trình. I—CHÖÔNG TRÌNH: Phaàn chöông trình coù hai phaàn nhö sau:  Phaàn giao dieän: Hình 5.2 Panel ñieàu khieån.  Phaàm maõ: TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 107 -
  41. PHAÀN II - CHÖÔNG 5 Option Explicit Dim KyTuSoXuat As Byte 'toác ñoä ñaët xuaát cho KIT Dim KyTuChuXuat As String Dim KyTuSoNhan As Byte 'toác ñoä ño nhaän veà töø KIT Dim KyTuChuNhan As String Dim Address As Long 'Dim Data As Long Dim data As Long Dim Buffer As Variant 'Const DiaChiCom = &H3F8 'ñòa chæ truyeàn thoâng coång COM 1 Private Declare Function Inport Lib "Project2" (ByVal Address As Long) As Byte Private Declare Sub Outport Lib "Project2" _ (ByVal Address As Long, ByVal data As Long) ‘ ‘ Private Sub cmdStart_Click() 'thieát laäp cheá ñoä truyeàn döõ lieäu Frame1.Caption = "Today is " & Date KyTuSoXuat = HScroll1.Value 'caäp nhaät laïi toác ñoä ñaët data = KyTuSoXuat Text3.Text = KyTuSoXuat ' MSComm1.CommPort = 1 ' bit rate, no parity, 8 data, and 1 stop bit. MSComm1.Settings = "1200, N, 8, 1" 'Set to 0 to read entire buffer on Input ' MSComm1.InputLen = 0 ' MSComm1.InBufferSize = 256 'Input and output data are text:comInputModeText=0, binary thì comInputModeText=1. ' MSComm1.InputMode = 1 'comInputModeText 'MSComm does no handshaking. MSComm1.Handshaking = comNone ' MSComm1.OutBufferSize = 256 MSComm1.EOFEnable = False 'MSComm1.RTSEnable = True ' RTS = +12V ' MSComm1.RTSEnable = False ' RTS = -12V 'No OnComm event on received data. ' MSComm1.RThreshold = 0 'No OnComm transmit event. ' MSComm1.SThreshold = 0 MSComm1.PortOpen = True 'môû coång ñeå 'XUAÁT DÖÕ LIEÄU : 'ra thanh ghi ñeäm phaùt Call Outport(&H3F8, data) Dim i As Integer For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 108 -
  42. PHAÀN II - CHÖÔNG 5 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 109 -
  43. PHAÀN II - CHÖÔNG 5 For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i 'Delay khoaûng thôøi gian ñuû laâu ñeå Kit phaùt data phaûn hoài : toác ñoä ño ñöôïc. 'Baét ñaàu Delay: For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 110 -
  44. PHAÀN II - CHÖÔNG 5 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 111 -
  45. PHAÀN II - CHÖÔNG 5 Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i 'NHAÄP DÖÕ LIEÄU : 'töø thanh ghi ñeäm thu KyTuSoNhan = Inport(&H3F8) Text1.Text = KyTuSoNhan * 60 Call Outport(&H3F8, data) 'Xoùa caùc boä ñeäm phaùt vaø nhaän ' MSComm1.OutBufferCount = 0 ' Buffer = MSComm1.Input MSComm1.PortOpen = False 'Set to 0 to read entire buffer on Input ' MSComm1.InputLen = 0 ' MSComm1.InBufferSize = 256 'boä ñeäm nhaän: 256 byte. End Sub ‘ ‘ Private Sub EXIT_Click() End End Sub ‘ ‘ Private Sub HScroll1_Change() ' Thanh tröôït : Min = 0 vaø Max = 60 Text2.Text = 60 * HScroll1.Value End Sub ‘ ‘ Private Sub START_Click() ' KyTuSoXuat = HScroll1.Value ' byte caàn phaûi xuaát ra ngoaïi vi - KIT AT89C51 End Sub ‘ ‘ Private Sub INVERTDIR_Click() 'thieát laäp cheá ñoä truyeàn döõ lieäu Frame1.Caption = "Today is " & Date KyTuSoXuat = 100 'caäp nhaät laïi toác ñoä ñaët, vì laø Stop neân ñaët data=0. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 112 -
  46. PHAÀN II - CHÖÔNG 5 data = KyTuSoXuat Text3.Text = KyTuSoXuat MSComm1.CommPort = 1 ' bit rate, no parity, 8 data, and 1 stop bit. MSComm1.Settings = "1200, N, 8, 1" 'Set to 0 to read entire buffer on Input MSComm1.InputLen = 0 MSComm1.InBufferSize = 256 'Input and output data are text:comInputModeText=0, binary thì comInputModeText=1. MSComm1.InputMode = 1 'comInputModeText 'MSComm does no handshaking. MSComm1.Handshaking = comNone MSComm1.OutBufferSize = 256 MSComm1.EOFEnable = False 'No OnComm event on received data. MSComm1.RThreshold = 0 'No OnComm transmit event. MSComm1.SThreshold = 0 MSComm1.PortOpen = True 'môû coång ñeå 'XUAÁT DÖÕ LIEÄU : 'ra thanh ghi ñeäm phaùt Call Outport(&H3F8, data) Dim i As Integer For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 113 -
  47. PHAÀN II - CHÖÔNG 5 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 114 -
  48. PHAÀN II - CHÖÔNG 5 Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i 'Delay khoaûng thôøi gian ñuû laâu ñeå Kit phaùt data phaûn hoài : toác ñoä ño ñöôïc. 'Baét ñaàu Delay: For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 115 -
  49. PHAÀN II - CHÖÔNG 5 Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i 'NHAÄP DÖÕ LIEÄU : 'töø thanh ghi ñeäm thu TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 116 -
  50. PHAÀN II - CHÖÔNG 5 KyTuSoNhan = Inport(&H3F8) Text1.Text = KyTuSoNhan * 60 'Xoùa caùc boä ñeäm phaùt vaø nhaän MSComm1.OutBufferCount = 0 Buffer = MSComm1.Input MSComm1.PortOpen = False 'Set to 0 to read entire buffer on Input MSComm1.InputLen = 0 MSComm1.InBufferSize = 256 'boä ñeäm nhaän: 256 byte. End Sub ‘ ‘ Private Sub MSComm1_OnComm() End Sub ‘ ‘ Private Sub STOP_Click() 'thieát laäp cheá ñoä truyeàn döõ lieäu Frame1.Caption = "Today is " & Date KyTuSoXuat = 0 'caäp nhaät laïi toác ñoä ñaët, vì laø Stop neân ñaët data=0. data = KyTuSoXuat Text3.Text = KyTuSoXuat MSComm1.CommPort = 1 ' bit rate, no parity, 8 data, and 1 stop bit. MSComm1.Settings = "1200, N, 8, 1" 'Set to 0 to read entire buffer on Input MSComm1.InputLen = 0 MSComm1.InBufferSize = 256 'Input and output data are text:comInputModeText=0, binary thì comInputModeText=1. MSComm1.InputMode = 1 'comInputModeText 'MSComm does no handshaking. MSComm1.Handshaking = comNone MSComm1.OutBufferSize = 256 MSComm1.EOFEnable = False 'No OnComm event on received data. MSComm1.RThreshold = 0 'No OnComm transmit event. MSComm1.SThreshold = 0 MSComm1.PortOpen = True 'môû coång ñeå 'XUAÁT DÖÕ LIEÄU : 'ra thanh ghi ñeäm phaùt Call Outport(&H3F8, data) Dim i As Integer For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 117 -
  51. PHAÀN II - CHÖÔNG 5 Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 118 -
  52. PHAÀN II - CHÖÔNG 5 Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i 'Delay khoaûng thôøi gian ñuû laâu ñeå Kit phaùt data phaûn hoài : toác ñoä ño ñöôïc. 'Baét ñaàu Delay: For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 119 -
  53. PHAÀN II - CHÖÔNG 5 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 120 -
  54. PHAÀN II - CHÖÔNG 5 Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i For i = 1 To 8 BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(12) 'ñoû Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(14) 'vaøng Frame1.Caption = "Today is " & Date BANG_DIEU_KHIEN_VA_HIEN_THI_TOC_DO_DONG_CO_DC.BackColor = QBColor(9) 'xanh Frame1.Caption = "Today is " & Date Next i 'NHAÄP DÖÕ LIEÄU : 'töø thanh ghi ñeäm thu KyTuSoNhan = Inport(&H3F8) Text1.Text = KyTuSoNhan * 60 'Xoùa caùc boä ñeäm phaùt vaø nhaän MSComm1.OutBufferCount = 0 Buffer = MSComm1.Input MSComm1.PortOpen = False 'Set to 0 to read entire buffer on Input MSComm1.InputLen = 0 MSComm1.InBufferSize = 256 'boä ñeäm nhaän: 256 byte. End Sub TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 121 -
  55. PHAÀN II-CHÖÔNG 6 - 122 -
  56. PHAÀN II- CHÖÔNG 6 J—MAÏCH THI COÂNG: Döôùi ñaây laø hai hình chuïp laïi moâ hình ñieàu khieån toác ñoä ñoäng cô ñieän moät chieàu ñaõ ñöôïc thi coâng vaø chaïy thöû: Hình 6.1 Maïch thi coâng ñaõ chaïy thöû. Hình 6.2 Board maïch chính. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 123 -
  57. PHAÀN II- CHÖÔNG 6 K—GIAO DIEÄN ÑIEÀU KHIEÅN TREÂN MAÙY TÍNH: Ñaây laø giao dieän panel ñieàu khieån ñôn giaûn ñöôïc thieát keá ñeå ñieàu khieån cho moâ hình thi coâng ôû treân: Hình 6.3 Ñaët toác ñoä ñoäng cô baèng panel ñieàu khieån. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 124 -
  58. PHAÀN III- KEÁT LUAÄN PHAÀN III KEÁT LUAÄN - 125 -
  59. PHAÀN III - KEÁT LUAÄN Vôùi mong muoán coù theå thöïc hieän ñöôïc toát hôn nöõa ñeà taøi nhöng thôøi gian quaù ít ñoái vôùi moät ngöôøi môùi laàn ñaàu laøm vieäc vôùi moät khoái löôïng ñoøi hoûi taäp trung lôùn. Ñeà taøi hieän ñaõ giaûi quyeát ñöôïc nhöõng vaán ñeà xaây döïng laïi moâ hình ñieàu khieån ñoäng cô DC theo lyù thuyeát ñaõ hoïc. Ñoäng cô trong moâ hình maïch thi coâng coù theå chaïy theo toác ñoä ñaët, coù theå haõm hay ñaûo chieàu tuøy theo ñieàu khieån treân Kit cuõng nhö treân maùy tính. Phaàn maïch thi coâng treân coù theå phaùt trieån theâm ñeå ñieàu khieån cho loaïi ñoäng cô coù coâng suaát lôùn hôn, ñieàu khieån cho ñoäng cô khoâng ñoàng boä hieän ñang ñöôïc söû duïng roäng raõi. Luùc ñoù phaàn chöông trình caàn nhaém tôùi vieäc xöû lyù ñieàu khieån kích chuyeån maïch cho boä bieán ñoåi nguoàn coâng suaát, maïch kích töø,v.v tuøy theo caùch ñieàu khieån ñoäng cô ñöôïc löïa choïn theo phöông phaùp naøo. Trong moâ hình maïch thi coâng boä xöû lyù vaø chöông trình vieát thieân veà ñieàu chænh chu kyø laøm vieäc, ñieàu chænh caùc khoaûng thôøi gian laøm vieäc (ON) hay coøn goïi laø khoaûng ñònh thôøi thoâng vaø khoaûng thôøi gian taét (OFF) coøn goïi laø khoaûng ñònh thôøi khoùa. Toác ñoä ñoäng cô thay ñoåi tuøy theo thay ñoåi cuûa chu kyø laøm vieäc. Tuy nhieân moâ hình xöû lyù khoâng toát phaàn hieån thò toác ñoä; ôû ñaây toác ñoä hieån thò khoâng ñöôïc oån ñònh vaø chöa kòp giaûi quyeát. Ngoaøi ra phaàn meàm Visual Basic ñeå ñieàu khieån ñoäng cô töø maùy tính cuõng chæ ñöôïc thieát keá ôû möùc toái thieåu ñeå coù theå ñieàu khieån ñöôïc caùc hoaït ñoäng cô baûn cuûa ñoäng cô. Ñoái vôùi phaàn meàm ta coù theå naâng caáp theâm caùc tính naêng môùi treân panel ñieàu khieån cuõng nhö giao dieän seõ toát hôn, thaân thieän hôn. Toùm laïi, phaàn ñeà taøi ñaõ giuùp em hieåu roõ raøng hôn veà nhöõng ñieàu ñaõ hoïc vaø moät soá kinh nghieäm thi coâng maïch. Trong thôøi gian laøm luaän aùn, do coøn thieáu kinh nghieäm vaø trình ñoä coøn haïn cheá neân nhöõng sai laàm maéc phaûi khoâng theå traùnh khoûi. Em xin chaân thaønh caûm ôn vaø ghi nhôù söï giuùp ñôõ, ñoäng vieân töø gia ñình, thaày coâ vaø baïn beø ñaõ giuùp em coù ñöôïc ñònh höôùng ñuùng trong luùc giaûi quyeát caùc coâng vieäc cuûa mình. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 126 -
  60. PHAÀN IV PHAÀN IV TAØI LIEÄU THAM KHAÛO - 127 -
  61. PHAÀN IV ooo TAØI LIEÄU THAM KHAÛO xxx 1. Ion Boldea, S. A. Nasar, “ Electric Drives ”, CRC Press, Printed in the United States of America, 1999. 2. Vuõ Quang Hoài, “ Trang bò Ñieän-Ñieän töû Coâng Nghieäp ”, Nhaø Xuaát Baûn Giaùo Duïc, Nhaø maùy in Quaân Ñoäi, 2000. 3. X. N. Vesenevxki (Ngöôøi dòch: Buøi Ñình Tieáu, Leâ Toøng), “ Caùc ñaëc tính cuûa ñoäng cô trong truyeàn ñoäng ñieän ”, Nhaø Xuaát Baûn Khoa Hoïc vaø Kyõ Thuaät, Nhaø maùy in Dieân Hoàng (15, Hai Baø Tröng – Haø Noäi), 1979. 4. Peter F.Ryff, David Platnick, Joseph A. Karnas, “ Electrical Machines And Transformers-Principles and Applications ”, Prentice-Hall, Inc., Englewood Cliffs, New Jersey 07632, Printed in the United States of America, 1987. 5. Joseph Vithayathil, “ Power Electronics-Principles and Applications ”, McGraw- Hill, Inc., R. R. Donnelley & Sons Company (USA), 1995. 6. Toáng Vaên On, Hoaøng Ñöùc Haûi, “ Hoï Vi Ñieàu Khieån 8051 ”, Nhaø Xuaát Baûn Lao Ñoäng- Xaõ Hoäi, Xí nghieäp in Machinco (21, Buøi Thò Xuaân- Q.1- TP. HCM), 2001. 7. Vaên Theá Minh, “ Kó Thuaät Vi Xöû Lí ”, Nhaø Xuaát Baûn Giaùo Duïc, Coâng ty in Khoa hoïc kó thuaät, 1997. 8. PTS Nguyeãn Tieán Duõng, Traàn Theá San, Vuõ Höõu Töôøng, PTS Nguyeãn Ngoïc Phöông, “ Kyõ naêng laäp trình Visual Basic 6 ”, Nhaø Xuaát Baûn Thoáng Keâ, Xöôûng In Coâng ty XNK & Phaùt trieån Vaên hoùa, 1999. 9. Nhoùm taùc giaû Elicom, “ Ngoân ngöõ laäp trình Delphi 5 ”, Nhaø Xuaát Baûn Thoáng Keâ, Coâng ty saùch vaø thieát bò tröôøng hoïc Ñaø Naüng, 2001. 10. Traàn Quang Vinh, “ Nguyeân lyù phaàn cöùng vaø kó thuaät gheùp noái maùy vi tính ”, Nhaø Xuaát Baûn Giaùo Duïc, Xí nghieäp in Haø Taây, 2002. 11. Nguyeãn Ñöùc Thaønh, “ Ño löôøng, ñieàu khieån baèng maùy tính ”, Nhaø Xuaát Baûn Ñaïi hoïc Quoác gia TP. Hoà Chí Minh, Xöôûng in Ñaïi hoïc Baùch Khoa- Ñaïi hoïc Quoác gia TP. HCM, 2002. 12. Ngoâ Dieân Taäp, “ Laäp trình gheùp noái maùy tính trong Windows ”, Nhaø xuaát baûn Khoa hoïc vaø Kyõ thuaät, Haø Noäi, 2002. 13. (Philips ECG), “ECG Master Replacement Guide”,( ), ( ), 2002. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 128 -
  62. PHAÀN V PHAÀN V PHUÏ LUÏC - 129 -
  63. PHAÀN V 1—GIÔÙI THIEÄU MCS-8051: Naêm 1980, taäp ñoaøn Intel coâng boá chip 8051, boä vi ñieàu khieån ñaàu tieân cuûa hoï vi ñieàu khieån MCS-51. Moät soá nhaø saûn xuaát ñöôïc pheùp cung caáp caùc IC töông thích vôùi caùc saûn phaåm MCS-51  cuûa Intel laø Siemens, Advanced Micro Devices, Fujitsu, Philips, Atmel . Caùc IC cuûa hoï MCS-51 coù caùc ñaëc tröng chung nhö sau:  4 port I/O 8 bit;  Giao tieáp noái tieáp;  64K khoâng gian boä nhôù chöông trình môû roäng;  64K khoâng gian boä nhôù döõ lieäu môû roäng;  Moät boä xöû lyù luaän lyù (thao taùc treân caùc bit ñôn);  210 bit ñöôïc ñòa chæ hoùa;  Boä nhaân/chia 4 µs. Caùc bieán theå ngaøy nay gaàn nhö coù gaáp ñoâi caùc ñaëc tröng naøy (AT80C52, SAB80515, ). Ngoaøi ra, tuøy theo soá hieäu saûn xuaát maø chuùng coù nhöõng khaùc bieät veà boä nhôù vaø boä ñònh thôøi/boä ñeám nhö trong baûng so saùnh döôùi ñaây: Soá hieäu saûn xuaát Boä nhôù chöông trình (maõ) Boä nhôù döõ lieäu Soá boä ñònh thôøi (boä ñeám) 8031 0K 128 byte 2 8051 4K ROM 128 byte 2 8751 4K EPROM 128 byte 2 8951 4K FLASH 128 byte 2 8032 0K 256 byte 3 8052 8K ROM 256 byte 3 8752 8K EPROM 256 byte 3 8952 8K FLASH 256 byte 3 TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 130 -
  64. PHAÀN V  Giôùi thieäu AT89C51: Sô ñoà khoái cuûa AT89C51 : Hình PL.1.1 Sô ñoà khoái AT89C51. AT89C51 laø moät Microcontroller 8 bit, loaïi CMOS, coù toác ñoä cao vaø coâng suaát thaáp vôùi boä nhôù Flash coù theå laäp trình ñöôïc. Noù ñöôïc saûn xuaát vôùi coâng ngheä boä nhôù khoâng bay hôi maät ñoä cao cuûa haõng Atmel, vaø töông thích vôùi chuaån coâng nghieäp cuûa 80C51 vaø 80C52 veà chaân ra vaø boä leänh. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 131 -
  65. PHAÀN V  Caáu hình chaân cuûa AT89C51: Hình PL.1.2 Sô ñoà chaân IC AT89C51.  Nhöõng ñaëc tröng cuûa AT89C51:  4KB ROM;  128 byte RAM;  Hoaït ñoäng tónh ñaày ñuû: 0Hz ñeán 24MHz;  Khoaù boä nhôù chöông trình ba caáp;  4 port xuaát nhaäp 8-bit;  2 boä ñònh thôøi 16-bit;  Maïch noái tieáp song coâng laäp trình ñöôïc;  Maïch ñoàng hoà vaø maïch taïo dao ñoäng treân chip.  Moâ taû caùc chaân:  Vcc chaân cung caáp ñieän.  GND chaân noái ñaát (0V).  Port 0 TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 132 -
  66. PHAÀN V Port 0 laø port xuaát nhaäp hai chieàu cöïc maùng hôû, 8 bit. Neáu ñöôïc söû duïng nhö laø moät ngoõ xuaát thì moãi chaân coù theå keùo 8 ngoõ vaøo TTL. Khi möùc 1 ñöôïc vieát vaøo caùc chaân cuûa port 0, caùc chaân naøy coù theå ñöôïc duøng nhö laø caùc ngoõ nhaäp toång trôû cao. Port 0 coøn ñöôïc caáu hình laøm bus ñòa chæ (byte thaáp) vaø bus döõ lieäu ña hôïp khi truy xuaát ñeán boä nhôù döõ lieäu vaø boä nhôù chöông trình ngoaøi. ÔÛ cheá ñoä ña hôïp, Port 0 coù caùc ñieän trôû keùo leân beân trong. Port 0 cuõng nhaän caùc byte maõ khi laäp trình Flash vaø xuaát caùc byte maõ khi kieåm tra chöông trình. Caùc ñieän trôû keùo leân beân ngoaøi ñöôïc caàn ñeán trong khi kieåm tra chöông trình.  Port 1 Port 1 laø port xuaát nhaäp 8 bit hai chieàu coù caùc ñieän trôû keùo leân beân trong. Caùc boä ñeäm xuaát cuûa port 1 coù theå huùt vaø caáp doøng vôùi 4 ngoõ vaøo TTL. Khi caùc logic 1 ñöôïc ghi leân caùc chaân cuûa port 1, caùc chaân naøy ñöôïc keùo leân möùc cao bôûi caùc ñieän trôû keùo leân beân trong vaø coù theå ñöôïc söû duïng nhö laø caùc ngoõ vaøo. Khi laøm nhieäm vuï port nhaäp, caùc chaân cuûa port 1 ñang ñöôïc keùo xuoáng möùc thaáp do taùc ñoäng beân ngoaøi seõ caáp doøng do coù caùc ñieän trôû keùo leân beân trong. Port 1 cuõng nhaän byte ñòa chæ thaáp trong thôøi gian laäp trình cho Flash vaø kieåm tra chöông trình.  Port 2 Port 2 laø port xuaát nhaäp 8 bit hai chieàu coù caùc ñieän trôû keùo leân beân trong. Caùc boä ñeäm xuaát cuûa port 2 coù theå huùt vaø caáp doøng vôùi 4 ngoõ vaøo TTL. Khi caùc logic 1 ñöôïc ghi leân caùc chaân cuûa port 2, caùc chaân naøy ñöôïc keùo leân möùc cao bôûi caùc ñieän trôû keùo leân beân trong vaø coù theå ñöôïc söû duïng nhö laø caùc ngoõ vaøo. Khi laøm nhieäm vuï port nhaäp, caùc chaân cuûa port 2 ñang ñöôïc keùo xuoáng möùc thaáp do taùc ñoäng beân ngoaøi seõ caáp doøng do coù caùc ñieän trôû keùo leân beân trong. Port 2 taïo ra byte cao cuûa bus ñòa chæ trong thôøi gian tìm naïp leänh töø boä nhôù chöông trình ngoaøi vaø trong thôøi gian truy xuaát boä nhôù döõ lieäu ngoaøi söû duïng caùc ñòa chæ 16-bit (MOVX @DPTR). Trong öùng duïng naøy, port 2 söû duïng caùc ñieän trôû keùo leân beân trong khi phaùt caùc bit 1. Trong thôøi gian truy xuaát boä nhôù döõ lieäu ngoaøi söû duïng caùc ñòa chæ 8-bit (MOVX @RI), port 2 phaùt caùc noäi dung cuûa thanh ghi chöùc naêng ñaëc bieät P2. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 133 -
  67. PHAÀN V Port 2 cuõng nhaän caùc bit ñòa chæ cao vaø vaøi tín hieäu ñieàu khieån trong thôøi gian laäp trình cho Flash vaø kieåm tra chöông trình.  Port 3 Port 3 laø port xuaát nhaäp 8 bit hai chieàu coù caùc ñieän trôû keùo leân beân trong. Caùc boä ñeäm xuaát cuûa port 3 coù theå huùt vaø caáp doøng vôùi 4 ngoõ vaøo TTL. Khi caùc logic 1 ñöôïc ghi leân caùc chaân cuûa port 3, caùc chaân naøy ñöôïc keùo leân möùc cao bôûi caùc ñieän trôû keùo leân beân trong vaø coù theå ñöôïc söû duïng nhö laø caùc ngoõ vaøo. Khi laøm nhieäm vuï port nhaäp, caùc chaân cuûa port 3 ñang ñöôïc keùo xuoáng möùc thaáp do taùc ñoäng beân ngoaøi seõ caáp doøng do coù caùc ñieän trôû keùo leân beân trong. Port 3 cuõng coøn ñöôïc söû duïng laøm caùc chöùc naêng khaùc cuûa AT89C51, caùc chöùc naêng naøy ñöôïc lieät keâ nhö sau: Chaân Teân Chöùc naêng chuyeån ñoåi P3.0 RXD Ngoõ vaøo cuûa port noái tieáp P3.1 TXD Ngoõ ra cuûa port noái tieáp P3.2 INT0 Ngoõ vaøo ngaét ngoaøi 0 P3.3 INT1 Ngoõ vaøo ngaét ngoaøi 1 P3.4 T0 Ngoõ vaøo beân ngoaøi cuûa boä ñònh thôøi 0 P3.5 T1 Ngoõ vaøo beân ngoaøi cuûa boä ñònh thôøi 1 P3.6 WR Ñieàu khieån ghi boä nhôù döõ lieäu ngoaøi P3.7 RD Ñieàu khieån ñoïc boä nhôù döõ lieäu ngoaøi  RST Ngoõ vaøo reset. Möùc cao treân chaân naøy trong 2 chu kyø maùy trong khi boä dao ñoäng ñang hoaït ñoäng seõ reset AT89C51.  ALE/ PROG ALE laø moät xung ngoõ ra ñeå choát byte thaáp cuûa ñòa chæ trong khi truy caäp boä nhôù ngoaøi. Chaân naøy cuõng laø ngoõ nhaäp xung laäp trình ( PROG ) khi laäp trình Flash. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 134 -
  68. PHAÀN V Khi hoaït ñoäng bình thöôøng, ALE ñöôïc phaùt vôùi moät tyû leä khoâng ñoåi laø 1/6 taàn soá boä dao ñoäng vaø coù theå ñöôïc duøng cho caùc muïch ñích timing vaø clocking beân ngoaøi. Tuy nhieân, löu yù raèng moät xung ALE seõ bò boû qua moãi khi truy caäp boä nhôù döõ lieäu ngoaøi. Neáu muoán, hoaït ñoäng ALE coù theå caám ñöôïc baèng caùch set bit 0 cuûa SFR taïi ñòa chæ 8Eh. Neáu bit naøy ñöôïc set, ALE chæ döôïc hoaït ñoäng khi coù moät leänh MOVX hoaëc MOVC. Ngöôïc laïi, chaân naøy ñöôïc keùo leân cao bôûi caùc ñieän trôû pullup "nheï". Vieäc set bit caám-ALE khoâng coù taùc duïng khi boä vi ñieàu khieån ñang ôû cheá ñoä thi haønh ngoaøi.  PSEN PSEN (Program Store Enable) laø xung ñoïc boä nhôù chöông trình ngoaøi. Khi AT89C52 ñang thi haønh maõ (code) 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 EA (External Access Enable) phaûi ñöôïc noái vôùi GND ñeå cho pheùp thieát bò ñoïc code töø boä nhôù chöông trình ngoaøi coù ñòa chæ töø 0000H ñeán FFFFH. 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. EA phaûi ñöôïc noái vôùi Vcc khi thi haønh chöông trình beân trong. 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ù 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 dao ñoäng nghòch ñöôï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à duty cycle cuûa tín hieäu xung ngoaøi,vì ngoõ nhaäp noái vôùi maïch taïo xung noäi laø moät flip-flop chia ñoâi, nhöng caùc chæ ñònh veà thôøi gian high vaø low, caùc möùc aùp toái ña vaø toái thieåu phaûi ñöôïc tuaân theo. Caùc ñaëc tröng khaùc xin tham khaûo trong caùc taøi lieäu chuyeân ñeà hoaëc giaùo trình. Phaàn tieáp theo xin trình baøy veà sô ñoà caáu truùc Ram noäi vaø phaàn tham khaûo nhanh taäp leänh 8051 ñeå tieän theo doõi chöông trình Assembler trong luaän aùn. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 135 -
  69. PHAÀN V  Sô ñoà caáu truùc RAM noäi: Ñòa chæ Ñòa chæ Ñòa chæ bit Ñòa chæ bit byte byte 7F FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC RAM ña duïng D 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 2 6F 6E 6D 6C 6B 6A 69 68 2C 67 66 65 64 63 62 61 60 A8 AF – – AC AB AA A9 A8 IE 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 bit SBUF 27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 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 8 khoâng ñöôïc ñòa chæ hoùa bit TH1 22 17 16 15 14 13 12 11 10 8C khoâng ñöôïc ñòa chæ hoùa bit TH0 21 0F 0E 0D 0C 0B 0A 09 08 8B khoâng ñöôïc ñòa chæ hoùa bit TL1 20 07 06 05 04 03 02 07 00 8A khoâng ñöôïc ñòa chæ hoùa bit TL0 1F Bank 3 89 khoâng ñöôïc ñòa chæ hoùa bit TMOD 18 88 8F 8E 8D 8C 8B 8A 89 88 TCON 17 Bank 2 87 khoâng ñöôïc ñòa chæ hoùa bit PCON 10 0F Bank 1 83 khoâng ñöôïc ñòa chæ hoùa bit DPH 08 82 khoâng ñöôïc ñòa chæ hoùa bit DPL 07 Bank thanh ghi 0 81 khoâng ñöôïc ñò a chæ hoùa bit SP 00 (maëc ñònh cho R0-R7) 80 87 86 85 84 83 82 81 80 P0 RAM CAÙC TH ANH GHI CHÖÙC NAÊNG ÑAËC BIEÄT Hình PL.1.3 Caáu truùc RAM noäi AT89C51. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 136 -
  70. PHAÀN V  Tham khaûo nhanh taäp leänh 8051:  Ghi chuù: Rn ñònh ñòa chæ thanh ghi söû duïng R0 ÷ R7 base thanh ghi neàn coù theå laø con troû döõ lieäu hoaëc PC byte coù theå laø Rn, direct, @Ri direct ñòa chæ 8-bit trong RAM noäi (00H ÷ FFH) @Ri ñònh ñòa chæ giaùn tieáp söû duïng thanh ghi R0 hoaëc R1 source toaùn haïng nguoàn: coù theå laø Rn hoaëc direct hoaëc @Ri dest toaùn haïng ñích: coù theå laø Rn hoaëc direct hoaëc @Ri #data haèng soá 8-bit chöùa trong leänh #data16 haèng soá 16-bit bit ñòa chæ tröïc tieáp (8-bit) cuûa moät bit rel offset 8-bit coù daáu addr11 ñòa chæ 11-bit trong trang hieän haønh addr16 ñòa chæ 16-bit TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 137 -
  71. PHAÀN V  Tham khaûo nhanh taäp leänh 8051: TAÁT CAÛ CAÙC LEÄNH TRÌNH BAØY THEO TRAÄT TÖÏ ALPHABE: ACALL addr11 DIV AB LJMP addr16 RETI ADD A,source DJNZ byte,rel MOV dest,source RL A ADDC A,source INC byte MOV DPTR,#data16 RLC A AJMP addr11 INC DPTR MOV bit,bit RR A ANL dest,source JB bit,rel MOVC A,@A+base RRC A ANL bit JBC bit,rel MOVX dest,source SETB bit CJNE dest,source,rel JC rel MUL AB SJMP rel CLR A JMP @A+DPTR NOP SUBB A,source CLR bit JNB bit,rel ORL dest,source SWAP A CPL A JNC rel ORL C,bit XCH A,byte CPL bit JNZ rel POP direct XCHD A,@Ri DA A JZ rel PUSH direct XRL dest,source DEC byte LCALL addr16 RET CAÙC THANH GHI TIEÂU CHUAÅN CUÛA 8051/52: Symbol Name Address Reset-value ACC * Accumulator E0 0000 0000 (00) B * B Register F0 0000 0000 (00) PSW * Program Status Word D0 0000 0000 (00) SP Stack Pointer 81 0000 0111 (07) DPL Low Byte Dptr 82 0000 0000 (00) DPH High Byte Dptr 83 0000 0000 (00) P0 * Port 0 80 1111 1111 (FF) P1 * Port 1 90 1111 1111 (FF) P2 * Port 2 A0 1111 1111 (FF) P3 * Port 3 B0 1111 1111 (FF) IP * Interrupt Priority Control B8 xxx0 0000 (?0) IE * Interrupt Enable Control A8 0xx0 0000 (?0) TMOD Timer/Counter Mode Control 89 0000 0000 (00) TCON * Timer/Counter Control 88 0000 0000 (00) T2CON * ^ Timer/Counter 2 Control C8 0000 0000 (00) TH0 Timer/Counter 0 High Byte 8C 0000 0000 (00) TL0 Timer/Counter 0 Low Byte 8A 0000 0000 (00) TH1 Timer/Counter 1 High Byte 8D 0000 0000 (00) TL1 Timer/Counter 1 Low Byte 8B 0000 0000 (00) TH2 ^ Timer/Counter 1 High Byte CD 0000 0000 (00) TL2 ^ Timer/Counter 2 Low Byte CC 0000 0000 (00) RCAP2H ^ T/C 2 Capture Reg. High Byte CB 0000 0000 (00) RCAP2L ^ T/C 2 Capture Reg. Low Byte CA 0000 0000 (00) SCON * Serial Control 98 0000 0000 (00) SBUF Serial Data Buffer 99 Xxxx xxxx (??) PCON Power Control 87 0xxx 0000 (?0) † Moâ taû kí hieäu ñaëc bieät: ^ = 80C52 * = bit ñònh ñòa chæ x = traïng thaùi tuøy yù. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 138 -
  72. PHAÀN V CAÙC LEÄNH SOÁ HOÏC Instruction Description Bytes Periods C OV AC ADD A, Rn Add register to A CC 1 12 x x x ADD A, direct Add direct byte to ACC 2 12 x x x ADD A, @Ri Add indirect RAM to ACC 1 12 x x x ADD A, #data Add immediate data to ACC 2 12 x x x ADDC A, Rn Add register to ACC with Carry 1 12 x x x ADDC A, direct Add direct byte to ACC with Carry 2 12 x x x ADDC A, @Ri Add indirect RAM to ACC with Carry 1 12 x x x ADDC A, #data Add immediate data to ACC with Carry 2 12 x x x SUBB A, Rn Subtract Register from ACC with borrow 1 12 x x x SUBB A, direct Subtract indirect RAM from ACC with borrow 2 12 x x x SUBB A, @Ri Subtract indirect RAM from ACC with borrow 1 12 x x x SUBB A, #data Subtract immediate data from ACC with borrow 2 12 x x x INC A Increment ACC 1 12 INC Rn Increment register 1 12 INC direct Increment direct byte 2 12 INC @Ri Increment direct RAM 1 12 DEC A Decrement ACC 1 12 DEC Rn Decrement Register 1 12 DEC direct Decrement direct byte 2 12 DEC @Ri Decrement indirect RAM 1 12 INC DPTR Increment Data Pointer 1 24 MUL AB Multiply A & B 1 48 0 x DIV AB Divide A by B 1 48 0 x DA A Decimal Adjust ACC 1 12 x TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 139 -
  73. PHAÀN V CAÙC LEÄNH LOGIC: Instruction Description Bytes Periods C OV AC ANL A,Rn AND register to ACC 1 12 ANL A,direct AND direct byte to ACC 2 12 ANL A,@Ri AND indirect RAM to ACC 1 12 ANL A,#data AND immediate data to ACC 2 12 ANL direct,A AND ACC to direct byte 2 12 ANL direct,#data AND immediate data to direct byte 3 24 ORL A,Rn OR register to ACC 1 12 ORL A,direct OR direct byte to ACC 2 12 ORL A,@Ri OR indirect RAM to ACC 1 12 ORL A,#data OR immediate data to ACC 2 12 ORL direct,A OR ACC to direct byte 2 12 ORL direct,#data OR immediate data to direct byte 3 24 XRL A,Rn XOR register to ACC 1 12 XRL A,direct XOR direct byte to ACC 2 12 XRL A,@Ri XOR indirect RAM to ACC 1 12 XRL A,#data XOR immediate data to ACC 2 12 XRL direct,A XOR ACC to direct byte 2 12 XRL direct,#data XOR immediate data to direct byte 3 24 CLR A Clear the ACC 1 12 CPL A Complement the ACC 1 12 RL A Rotate the ACC left 1 12 RLC A Rotate the ACC left through Carry 1 12 x RR A Rotate the ACC right 1 12 RRC A Rotate the ACC right through Carry 1 12 x SWAP A Swap nibbles in the ACC 1 12 TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 140 -
  74. PHAÀN V CAÙC LEÄNH CHUYEÅN DÖÕ LIEÄU: Instruction Description Bytes Periods C OV AC MOV A,Rn Move Register to ACC 1 12 MOV A,direct Move Direct byte to ACC 2 12 MOV A,@Ri Move Indirect byte to ACC 1 12 MOV A,#data Move Immediate data to ACC 2 12 MOV Rn,A Mov ACC to Register 1 12 MOV Rn,direct Move Direct byte to Register 2 24 MOV Rn,#data Move Immediate data to Register 2 12 MOV direct,A Move ACC to Direct byte 2 12 MOV direct,Rn Move Register to Direct byte 2 24 MOV direct,direct Move Direct byte to Direct byte 3 24 MOV direct,@Ri Mov Indirect RAM to Direct byte 3 24 MOV direct,#data Move Immediate data to Direct byte 3 24 MOV @Ri,A Move ACC to Indirect RAM 1 12 MOV @Ri,direct Move direct byte to indirect RAM. 2 24 MOV @Ri,#data Move Immediate data to Indirect RAM 2 12 MOV DPTR,#data16 Load datapointer with 16 bit constant 3 24 MOVC A,@A+DPTR Move code byte at ACC+DPTR to ACC 1 24 MOVC A,@A+PC Move code byte at ACC+PC to ACC 1 24 MOVX A,@Ri Move external RAM to ACC 1 24 MOVX @Ri,A Move ACC to external RAM 1 24 MOVX A,@DPTR Move external RAM to ACC 1 24 MOVX @DPTR,A Move ACC to external RAM 1 24 PUSH direct Push direct byte to stack 2 24 POP direct Pop direct byte from stack 2 24 XCH A,Rn Exchange register with ACC 1 12 XCH A,direct Exchange direct byte with ACC 2 12 XCH A,@Ri Exchange indirect RAM with ACC 1 12 XCHD A,@Ri Exchange low order digit indirect RAM with ACC 1 12 TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 141 -
  75. PHAÀN V CAÙC LEÄNH THAO TAÙC TREÂN BIT: Instruction Description Bytes Periods C OV AC CLR C Clear carry flag 1 12 0 CLR bit Clear direct bit 2 12 SETB C Set carry flag 1 12 1 SETB bit Set direct bit 2 12 CPL C Complement carry flag 1 12 x CPL bit Complement direct bit 2 12 ANL C,bit AND direct bit to carry 2 24 x ANL C,/bit AND complement of direct bit to carry 2 24 x ORL C,bit OR direct bit to carry 2 24 x ORL C,/bit OR complement of direct bit to carry 2 24 x MOV C,bit Move direct bit to carry 2 12 x MOV bit,C Move carry to direct bit 2 24 JC rel Jump if carry is set 2 24 JNC rel Jump if carry is NOT set 2 24 JB bit,rel Jump if direct bit is set 3 24 JNB bit,rel Jump if direct bit is NOT set 3 24 JBC bit,rel Jump if direct bit is set and clear that bit 3 24 CAÙC LEÄNH REÕ NHAÙNH: Instruction Description Bytes Periods C OV AC ACALL addr11 Absolute call within 2K page 2 24 LCALL addr16 Absolute call (Long call) 3 24 RET Return from subroutine 1 24 RETI Return from interrupt 1 24 AJMP addr11 Absolute jump within 2K page 2 24 LJMP addr16 Absolute jump (Long jump) 3 24 SJMP rel Relative jump within +/- 127 bytes (Short jump) 2 24 JMP @A+DPTR Jump direct relative to DPTR 1 24 JZ rel Jump if ACC is zero 2 24 JNZ rel Jump if ACC is NOT zero 2 24 CJNE A,direct,rel Compare direct byte to ACC, jump if NOT equal 3 24 x CJNE A,#data,rel Compare immediate to ACC, jump if NOT equal 3 24 x CJNE Rn,#data,rel Compare immediate to register, jump if NOT equal 3 24 x CJNE @Ri,#data,rel Compare immediate to indirect, jump if NOT equal 3 24 x DJNZ Rn,rel Decrement register, jump if NOT zero 2 24 DJNZ direct,rel Decrement direct byte, jump if NOT zero 3 24 NOP No operation (Skip to next instruction) 1 12 TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 142 -
  76. PHAÀN V 2—COÅNG NOÁI TIEÁP: Thoâng tin noái tieáp ñöôïc duøng trong raát nhieàu öùng duïng gheùp noái vôùi maùy vi tính nhö chuoät, modem, maùy veõ, maùy in, maùy queùt, v.v . Vì döõ lieäu ñöôïc truyeàn song song treân caùc bus maùy tính neân ñeå truyeàn noái tieáp ñöôïc, beân phaùt duøng caùc thanh ghi dòch song song – noái tieáp ñeå bieán ñoåi caùc byte song song thaønh moät chuoãi bit noái tieáp nhau cho ra coång vaø ôû beân thu phaûi duøng caùc thanh ghi dòch noái tieáp – song song ñeå bieán ñoåi ngöôïc laïi. Thoâng tin noái tieáp ñöôïc phaân bieät thaønh hai loaïi: truyeàn noái tieáp ñoàng boä vaø khoâng ñoàng boä. Khi truyeàn noái tieáp ñoàng boä, ngoaøi ñöôøng daây truyeàn soá lieäu giöõa hai traïm phaùt vaø thu caàn coù theâm moät ñöôøng daây ñieàu khieån ñeå truyeàn tín hieäu nhòp nhaèm ñeå beân thu xaùc ñònh ñöôïc caùc thôøi ñieåm taïi ñoù soá lieäu treân ñöôøng truyeàn ñaõ oån ñònh. Trong khi ñoù, truyeàn noái tieáp khoâng ñoàng boä chæ caàn moät daây truyeàn trong ñoù caùc thoâng tin ñoàng boä ñöôïc truyeàn ngay cuøng vôùi caùc töø döõ lieäu. Ñoù laø caùc bit Start (bit baét ñaàu) chæ thò söï baét ñaàu cuûa khoái soá lieäu ñöôïc truyeàn vaø bit Stop (bit keát thuùc) baùo keát thuùc khoái soá lieäu ñoù cuøng moät soá bit phaùt hieän vaø söûa loãi ñöôïc gheùp cuøng caùc bit soá lieäu ñeå taïo thaønh moät khung truyeàn (frame) hay moät SDU (Serial Data Unit). Giöõa hai coång thoâng tin noái tieáp coù theå coù caùc phöông thöùc trao ñoåi thoâng tin nhö sau: Noái ñôn coâng (Simplex Connection): soá lieäu chæ ñöôïc truyeàn theo moät höôùng. Baùn song coâng (Half – Duplex): soá lieäu truyeàn theo hai höôùng, nhöng moãi thôøi ñieåm chæ ñöôïc truyeàn theo moät höôùng. Song coâng (Full – Duplex): soá lieäu ñöôïc truyeàn ñoàng thôøi theo hai höôùng.  Chuaån thoâng tin noái tieáp: Do haïn cheá veà daûi taàn cuûa ñöôøng truyeàn neân haàu heát caùc thieát bò ñaàu cuoái soá lieäu DTE (Data Terminal Equipment) muoán thoâng tin vôùi nhau khoâng theå noái tröïc tieáp vôùi moâi tröôøng truyeàn daãn analog ñöôïc maø phaûi thoâng qua caùc thieát bò thoâng tin soá lieäu DCE (Data Communication Equipment). Thí duï, vieäc thoâng tin giöõa hai maùy tính hoaëc maùy fax laø caù DTE qua ñöôøng ñieän thoaïi coâng coäng phaûi ñöôïc noái qua hai thieát bò DCE laø caùc modem nhö hình döôùi ñaây. DTE DTE DCE Maïng ñieän thoaïi DCE Maùy tính Modem Modem Maùy tính Hình PL.2.4 Thoâng tin giöõa hai maùy tính qua maïng ñieän thoaïi. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 143 -
  77. PHAÀN V Caùc tieâu chuaån chính cho thoâng tin soá lieäu noái tieáp hieän nay ñöôïc xaây döïng bôûi caùc toå chöùc ITU (International Telecommunications Union), EIA (Electronics Industry Association) vaø ISO (International Standards Organisation). Caùc chuaån ITU veà thoâng tin noái tieáp thuoäc veà nhoùm V vaø caùc chuaån EIA veà thoâng tin noái tieáp thuoäc veà nhoùm RS. Chuaån RS-232C quy ñònh caùc gheùp noái noái tieáp giöõa moät DTE vaø DCE vôùi khoaûng caùch cöïc ñaïi laø 17 ñeán 20m vaø toác ñoä truyeàn soá lieäu cöïc ñaïi leân tôùi 20kbps. Tín hieäu ñieän theo chuaån RS-232C laø löôõng cöïc: möùc logic 1 coù ñieän theá döông so vôùi ñaát (0V), möùc 0 coù ñieän theá aâm so vôùi ñaát. Vôùi tín hieäu ra: möùc logic cao coù ñieän theá trong daûi töø +5V ñeán +15V möùc logic thaáp töø –5V ñeán –15V. Vôùi tín hieäu vaøo: möùc logic cao töø +3V ñeán +15V möùc logic thaáp töø –3V ñeán –15V. Logic treân ñöôøng truyeàn soá lieäu TxD vaø RxD ñöôïc ñoåi thaønh logic aâm, töùc laø möùc logic cao coù ñieän theá aâm so vôùi ñaát (0V) vaø möùc logic thaáp coù ñieän theá döông so vôùi ñaát. Döõ lieäu treân ñöôøng truyeàn chæ ôû moät trong hai traïng thaùi MARK hoaëc SPACE, laàn löôït töông öùng vôùi traïng thaùi ñieän theá aâm hoaëc döông töùc laø töông öùng vôùi möùc logic 1 hoaëc 0. Vôùi caùc maùy PC, caùc möùc ñieän theá ñieån hình laø ±12V. Döõ lieäu ñöôïc truyeàn laàn löôït theo töøng nhoùm bit. Moãi nhoùm goïi laø moät SDU hay moät khung truyeàn. Moät khung truyeàn bao goàm: 1 bit start luoân ôû möùc logic thaáp, ñieän theá döông. 1 hoaëc 1,5 hoaëc 2 bit stop luoân ôû möùc logic cao, ñieän theá aâm. 1 hoaëc khoâng coù 1 bit kieåm tra chaün leû, 5, 6 hoaëc 7 bit soá lieäu. Thí duï, khi caùc khung truyeàn ñaïi dieän cho caùc kí töï (vôùi maõ ASCII laø 7 bit) ñöôïc truyeàn treân ñöôøng daây laàn löôït vôùi moät khoaûng thôøi gian treã giöõa chuùng. Trong khoaûng thôøi gian naøy ñöôøng truyeàn ôû vaøo traïng thaùi MARK (möùc logic cao). Hình sau laø moät minh hoïa veà tín hieäu nhaän ñöôïc treân ñöôøng truyeàn TxD hoaëc RxD khi truyeàn caùc bit thoâng tin maõ hoùa ASCII cho hai chöõ ‘A’ (100 0001 = 41h) vôùi bit parity leû. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 144 -
  78. PHAÀN V Khoaûng treã 7 bit döõ lieäu Bit start SPACE Bit parity leû Bit stop 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 1 LSB MSB LSB MSB ‘A’ (100 0001) MARK ‘A’ (100 0001) Hình treân laø thí duï veà tín hieäu treân ñöôøng truyeàn cuûa caùc bit bieåu dieãn cho hai kí töï ‘A’. Toác ñoä truyeàn soá lieäu noái tieáp ñöôïc ño baèng soá bit truyeàn trong moät giaây bps. Trong caùc heä thoáng truyeàn soá lieäu vôùi maõ nhò phaân toác ñoä naøy truøng vôùi toác ñoä baud laø soá laàn thay ñoåi traïng thaùi cuûa moät keânh truyeàn tín hieäu trong moät giaây. Taát caû caùc maùy PC ñeàu coù coång gheùp noái thoâng tin noái tieáp. Coång sô caáp goïi laø COM1 (hoaëc COM3) vaø thöù caáp laø COM2 (hoaëc COM4). Coù hai loaïi ñaàu caém tín hieäu cho caùc coång naøy laø D-25 (25 chaân) vaø D-9 (9 chaân) thöôøng ñöôïc gaén ôû phía sau thuøng maùy. Söû duïng loaïi naøo cho COM1 hoaëc COM2 laø tuøy ôû ngöôøi laép raùp maùy tính, thöôøng thì hay duøng ñaàu caém D-9 cho COM1. caùc ñaàu caém cho caùc coång noái tieáp gaén treân thuøng maùy PC bao giôø cuõng laø loaïi ñaàu caém ñöïc (male), ñaàu caém ôû caùp noái ra caùc thieát bò ngoaïi vi laø ñaàu caém caùi (female). Vieäc naøy ñeå traùnh nhaàm laãn vôùi ñaàu caém D-25 duøng cho coång song song LPT gaén treân thuøng maùy PC luoân laø loaïi ñaàu caém caùi (female). Caùc chaân tín hieäu treân caùc ñaàu caém ñöôïc noái ra caùc ñöôøng daây ñeå caùc thieát bò DTE vaø DCE thoâng tin vôùi nhau. Ngoaøi daây ñaát GND coù ñieän theá 0V, coù theå phaân thaønh hai nhoùm ñöôøng daây goàm nhoùm caùc ñöôøng truyeàn döõ lieäu TxD, RxD vaø nhoùm caùc ñöôøng tín hieäu ñieàu khieån (goïi laø caùc tín hieäu moùc noái thoâng tin) goàm caùc ñöôøng coøn laïi. Baûng sau moâ taû teân vaø chöùc naêng cuûa caùc ñöôøng tín hieäu. D25 D9 Teân Kí hieäu Chöùc naêng 1 - Frame Ground FG Thöôøng ñöôïc noái vôùi voû boïc kim cuûa caùp daãn hoaëc ñaát. 2 3 Transmit Data TxD Soá lieäu ñöôïc phaùt töø DTE (thí duïPC hoaëc thieát bò ñaàu cuoái) tôùi DCE qua ñöôøng TxD. 3 2 Receive Data RxD Soá lieäu ñöôïc thu töø DCE vaøo DTE. TAØI LIEÄU ÑÖÔÏC SHARE TREÂN WEBSITE KYSUBACHKHOA.COM - 145 -