Thiết kế Card giao tiếp máy tính ứng dụng điều khiển bộ nguồn

Tài liệu Thiết kế Card giao tiếp máy tính ứng dụng điều khiển bộ nguồn: ... Ebook Thiết kế Card giao tiếp máy tính ứng dụng điều khiển bộ nguồn

doc114 trang | Chia sẻ: huyen82 | Lượt xem: 1427 | Lượt tải: 0download
Tóm tắt tài liệu Thiết kế Card giao tiếp máy tính ứng dụng điều khiển bộ nguồn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BOÄ GIAÙO DUÏC VAØ ÑAØO TAÏO COÄNG HOØA XAÕ HOÄI CHUÛ NHÓA VIEÄT NAM TRÖÔØNG ÑAÏI HOÏC SÖ PHAÏM KYÕ THUAÄT ÑOÄC LAÄP _ TÖÏ DO _ HAÏNH PHUÙC KHOA ÑIEÄN BOÄ MOÂN ÑIEÄN TÖÛ NHIEÄM VUÏ LUAÄN VAÊN TOÁT NGHIEÄP Sinh vieân thöïc hieän: NGUYEÃN MINH TUAÁN NGUYEÃN LAÂM VUÕ Lôùp: 95KÑÑ Khoùa: 1995 – 2000 TEÂN LUAÄN VAÊN: THIEÁT KEÁ CARD GIAO TIEÁP MAÙY TÍNH ÖÙNG DUÏNG ÑIEÀU KHIEÅN BOÄ NGUOÀN CAÙC SOÁ LIEÄU BAN ÑAÀU: NOÄI DUNG CAÙC PHAÀN LYÙ THUYEÁT & TÍNH TOAÙN: CAÙC BAÛN VEÕ & ÑOÀ THÒ: GIAÙO VIEÂN HÖÔÙNG DAÃN: LEÂ VIEÁT PHUÙ NGAØY NHAÄN NHIEÄM VUÏ: 30 – 11 – 1999 NGAØY HOAØN THAØNH NHIEÄM VUÏ: 26 – 2 – 2000 GIAÙO VIEÂN HÖÔÙNG DAÃN THOÂNG QUA BOÄ MOÂN Ngaøy thaùng naêm 2000 CHUÛ NHIEÄM BOÄ MOÂN LÔØI CAÙM ÔN Chuùng em xin caûm ôn Nhaø tröôøng ñaõ taïo ñieàu kieän cho chuùng em ñöôïc hoïc taäp vaø nghieân cöùu trong suoát caùc naêm qua. Chuùng em xin chaân thaønh caùm ôn Quyù Thaày Coâ ñaõ taän tình truyeàn ñaït nhöõng kieán thöùc môùi vaø boå ích cho chuùng em, nhaát laø Quyù Thaày Coâ trong Khoa Ñieän ñaõ giaûng daïy trong suoát quaù trình hoïc taäp cuõng nhö trong thôøi gian thöïc hieän luaän vaên toát nghieäp. Xin traân troïng caûm ôn Thaày Leâ Vieát Phuù ñaõ tröïc tieáp höôùng daãn chuùng em hoaøn thaønh toát nhieäm vuï. Xin caùm ôn caùc baïn ñaõ quan taâm vaø giuùp ñôõ. Xin caùm ôn caùc baäc phuï huynh ñaõ taïo moïi ñieàu kieän veà maët tinh thaàn cuõng nhö vaät chaát trong nhöõng naêm hoïc vöøa qua.. Nguyeãn Minh Tuaán Nguyeãn Laâm Vuõ NHAÄN XEÙT CUÛA GIAÙO VIEÂN HÖÔÙNG DAÃN NHAÄN XEÙT CUÛA GIAÙO VIEÂN DUYEÄT LÔØI NOÙI ÑAÀU Ngaøy nay tin hoïc ñaõ thaâm nhaäp vaøo taát caû moïi hoaït ñoäng trong xaõ hoäi vaø maùy vi tính ñaõ trôû thaønh moät coâng cuï ñaéc löïc trong vieäc hoã trôï con ngöôøi. Noù khoâng chæ laøm giaûm nheï lao ñoäng (keå caû lao ñoäng trí tueä) maø coøn giuùp cho con ngöôøi coù nhöõng naêng löïc môùi maø tröôùc ñaây chuùng ta khoù hình dung ñöôïc. Maùy vi tính ngaøy caøng ñöôïc söû duïng roäng raõi trong nhieàu cô quan, tröôøng hoïc, trong caùc ngaønh kinh teá vaø ngay caû trong gia ñình. Theo ñaø phaùt trieån hieän nay cuûa nöôùc ta thì quaù trình hieän ñaïi hoaù, coâng nghieäp hoaù laø hai muïc tieâu ñöùng ñaàu. Noùi ñeán coâng nghieäp hoaù, hieän ñaïi hoùa thì khoâng theå khoâng noùi ñeán quaù trình töï ñoäng hoùa, ñoù laø moät quaù trình maø söï can thieäp cuûa con ngöôøi laø toái thieåu. Maø ñeå coù töï ñoäng hoaù trong caùc khaâu, caùc nghaønh thì nhaát thieát phaûi coù söï hoå trôï cuûa tin hoïc maø cuï theå laø caùc maùy tính. Vieäc söû duïng maùy vi tính trong lónh vöïc ño löôøng vaø ñieàu khieån ngaøy caøng phoå bieán ñoøi hoûi phaûi gheùp noái maùy tính vôùi caùc thieát bò beân ngoaøi trong ñoù taûi hay caùc yeáu toá chaáp haønh phaûi ñieàu khieån ñöôïc, coøn caùc phaàn töû nhaäp lieäu vaø caùc ñaàu ño thì ñöôïc lieân tuïc kieåm tra ñeå caäp nhaät döõ lieäu baèng moät phaàn meàm ñöôïc thieát keá rieâng. Thoâng thöôøng caùch giaûi quyeát vaán ñeà naøy moät caùch toát nhaát laø thieát keá moät khoái gheùp noái vôùi beân ngoaøi maùy tính ñeå trao ñoåi thoâng tin vôùi maùy tính, khoái ñoù chính laø card giao tieáp. Trong thöïc tieãn saûn xuaát, vieäc ño löôøng vaø xöû lyù caùc ñaïi löôïng cuûa theá giôùi thöïc nhö nhieät ñoä, toác ñoä, nguoàn ñieän aùp… laø moät yeâu caàu caáp baùch vaø thöôøng xuyeân. Ñeå phaàn naøo ñaùp öùng ñöôïc yeâu caàu ñoù, nhoùm em quyeát ñònh thöïc hieän ñeà taøi: THIEÁT KEÁ VAØ THI COÂNG CARD GIAO TIEÁP MAÙY TÍNH ÖÙNG DUÏNG ÑIEÀU KHIEÅN BOÄ NGUOÀN Töø nhöõng vaán ñeà ñoù, nhoùm em ñaõ ñöôïc Thaày LEÂ VIEÁT PHUÙ höôùng daãn thöïc hieän ñeà taøi theo höôùng töï ñoäng hoùa baèng maùy tính caù nhaân (Personal Computer) vaø ñôn giaûn phaàn cöùng baèng kyõ thuaät laäp trình. Tuy nhieân vì thôøi gian coù haïn, neân trong quaù trình thieát keá taäp luaän vaên naøy khoâng theå traùnh khoûi nhöõng sai soùt, chuùng em raát mong söï giuùp ñôõ cuûa Quyù Thaày Coâ vaø caùc baïn ñeå cuoán Luaän Vaên Toát Nghieäp naøy ñöôïc hoaøn thieän hôn. Ngaøy 20 thaùng 02 naêm 2000 Nhoùm Sinh Vieân Thöïc Hieän NGUYEÃN MINH TUAÁN – NGUYEÃN LAÂM VUÕ MUÏC LUÏC LÔØI NOÙI ÑAÀU PHAÀN A: GIÔÙI THIEÄU CHUNG I. MUÏC ÑÍCH – YEÂU CAÀU MUÏC ÑÍCH YEÂU CAÀU II. YÙ TÖÔÛNG THIEÁT KEÁ PHAÀN B: GIÔÙI THIEÄU SÔ LÖÔÏC VEÀ HOÏ MAÙT TÍNH IBM I. BOÄ XÖÛ LYÙ TRUNG TAÂM II. BOÄ NHÔÙ BOÄ NHÔÙ ROM BOÄ NHÔÙ RAM III. CAÙC THIEÁT BÒ NHAÄP XUAÁT NGOAÏI VI CAÙC THIEÁT BÒ NHAÄP XUAÁT CÔ BAÛN XUAÁT NHAÄP TRAO ÑOÅI THOÂNG TIN QUA KHE CAÉM (SLOT) IV. SÖÏ PHAÂN BOÁ ÑÒA CHÆ TRONG MAÙY TÍNH V. SO SAÙNH VAØ LÖÏA CHOÏN CAÙC KYÕ THUAÄT GIAO TIEÁP KYÕ THUAÄT GIAO TIEÁP SO SAÙNH VAØ LÖÏA CHOÏN KYÕ THUAÄT GIAO TIEÁP PHAÀN C: THIEÁT KEÁ VAØ THI COÂNG MODULE GIAO TIEÁP I. SÔ ÑOÀ KHOÁI CUÛA MODULE GIAO TIEÁP II. THIEÁT KEÁ & THI COÂNG CAÙC MODULE CON MODULE GIAÛI MAÕ ÑÒA CHÆ VAØ ÑEÄM DÖÕ LIEÄU (MODULE 1) MODULE NHAÄN TÍN HIEÄU ANALOG (MODULE 2) MODULE XUAÁT TÍN HIEÄU ANALOG (MODULE 3) MODULE NHAÄN TÍN HIEÄU DIGITAL (MODULE 4) MODULE XUAÁT TÍN HIEÄU DIGITAL (MODULE 5) PHAÀN D: THIEÁT KEÁ VAØ THI COÂNG BOÄ NGUOÀN OÅN AÙP PHAÀN E: THIEÁT KEÁ VAØ LAÄP TRÌNH CHÖÔNG TRÌNH ÑIEÀU KHIEÅN BOÄ NGUOÀN KEÁT LUAÄN PHAÀN A: GIÔÙI THIEÄU I. Muïc ñích – Yeâu caàu cuûa ñeà taøi: 1. Muïc ñích: Nhaèm ñaùp öùng ñöôïc phaàn naøo yeâu caàu ño löôøng, khoáng cheá vaø ñieàu khieån caùc thieát bò maùy moùc trong saûn xuaát cuõng nhö phuïc vuï cho nhu caàu hoïc taäp, thí nghieäm cuûa sinh vieân. Beân caïnh ñoù ñeà taøi cuõng ñeå minh hoïa moät trong nhieàu öùng duïng cuûa caùc IC choát, giaûi maõ thoâng duïng treân thò tröôøng vôùi giaù thaønh reû vaø ñoä tin caäy cao. Ta coù theå duøng caùc IC naøy trong maïch ñeå thay theá caùc IC chuyeân duøng nhö 8255… giuùp ta tieát kieäm ñöôïc kinh phí, khaû naêng môû roäng cao maø ñoä tin caäy nhö nhau trong caùc öùng duïng vöøa vaø nhoû. 2. Yeâu caàu: Card giao tieáp phaûi thoûa maõn ñöôïc caùc yeâu caàu sau: + Deã môû roäng, deã phaùt trieån. + Coù theå ñieàu khieån ñöôïc nhieàu ñoái töôïng khaùc nhau (Boä nguoàn chæ laø moät ñoái töôïng. + Deã thay ñoåi. + Gheùp noái ñöôïc vôùi nhieàu chuûng loaïi maùy tính khaùc nhau cuûa hoï maùy vi tính IBM PC. + Söû duïng caùc linh kieän saün coù, deã tìm kieám, giaù thaønh phuø hôïp. + Khi thay ñoåi ñoái töôïng ñieàu khieån thì khoâng caàn thay ñoåi thieát keá phaàn cöùng maø chæ caàn thay ñoåi phaàn meàm ñieàu khieån. + Coù khaû naêng quaûn lyù ñöôïc nhieàu keânh khaùc nhau. + Coù ñoä tin caäy vaø chính xaùc cao khi laøm vieäc. II. YÙ töôûng thieát keá: Trong ñeà taøi naøy em choïn maùy vi tính laøm nhieäm vuï xöû lyù vaø ñieàu khieån vì noù coù moät soá öu ñieåm sau: Veà phöông dieän ño löôøng: Hieäu chænh deã daøng nhôø vaøo phaàn meàm. Töï ñoäng xöû lyù baèng phaàn meàm. Ñaùp öùng ñöôïc yeâu caàu ña daïng cuûa caùc quaù trình saûn xuaát. Veà phöông dieän xöû lyù: - Öu ñieåm cuûa maùy tính laø khaû naêng löu tröõ vaø xöû lyù thoâng tin cuûa noù raát lôùn vaø linh ñoäng (coù theå löu treân Memory, caùc loaïi oå ñóa meàm vaø cöùng) do xöû lyù soá lieäu baèng phaàn meàm. - Caùc phöông phaùp khaùc khoâng coù khaû naêng löu tröõ thoâng tin, keùm linh ñoäng, chæ coù khaû naêng chæ thò hoaëc chæ ñieàu khieån maø khoâng xöû lyù soá lieäu. Veà phöông dieän ñieàu khieån: - Thöïc hieän ñöôïc caùc phöông phaùp ñieàu khieån khaùc nhau nhôø phaàn meàm. Veà phöông dieän kinh teá: - Giaù thaønh thi coâng phaûi phuø hôïp, nhöng vaãn ñaûm baûo ñoä tin caäy cao. Do ñoái töôïng ñieàu khieån trong ñeà taøi naøy söû duïng döõ lieäu soá 8 bit neân ta seõ thieát keá moät card giao tieáp vôùi maùy tính theo daïng moät board caém vaøo khe slot theo chuaån ISA 8 bit maø moïi maùy vi tính PC IBM ñeàu coù ñeå truy xuaát döõ lieäu töø D0 ñeán D7 treân Data Bus cuûa maùy tính ñeå ñieàu khieån ñoái töôïng maø cuï theå trong ñeà taøi naøy laø boä nguoàn oån aùp coù ñieän aùp ra coù theå thay ñoåi ñöôïc trong khoaûng töø 0V ñeán 25,5V. Ngoaøi ra, döïa treân caùc muïc ñích vaø yeâu caàu ñaõ neâu ôû treân, heä thoáng seõ ñöôïc thieát keá theo daïng module coù theå thaùo laép ñoäc laäp nhau. Caùc module seõ ñöôïc gaén treân moät ñeá caém coù nhieàu slot caém song song nhau vaø ñeá caém naøy seõ keát noái vôùi card giao tieáp gaén trong trong maùy tính baèng caùp ñeå trao ñoåi döõ lieäu. Caùc böôùc thieát keá: Ñeå thuaän tieän trong quaù trình thieát keá cuõng nhö phaân boá ñòa chæ cho caùc card keát noái theo daïng module nhoùm chuùng em thieát keá theo trình töï: - Thieát keá card giao tieáp gaén beân trong maùy tính tröôùc, coù nhieäm vuï ñeäm döõ lieäu vaø giaûi maõ ñòa chæ. - Choïn tröôùc ñòa chæ cho caùc card coøn laïi seõ gaén vaøo module bao goàm card xuaát tín hieäu Digital, card nhaän tín hieäu Digital, card xuaát tín hieäu Analog, card nhaän tín hieäu Analog. - Döïa treân ñòa chæ choïn tröôùc (naèm trong vuøng ñòa chæ daønh cho card caém theâm trong maùy tính) thieát keá töøng module ñaõ keå treân. Caùc module naøy coù theå thieát keá theo thöù töï tuøy yù do ñaõ choïn tröôùc ñòa chæ truy xuaát khoâng truøng nhau. - Thieát keá module nguoàn oån aùp ñeå minh hoïa döïa treân caùch xuaát döõ lieäu ra thoâng qua card ñeäm vaø giaûi maõ. - Thieát keá phaàn meàm ñieàu khieån ñöôïc vieát baèng ngoân ngöõ C. PHAÀN B: GIÔÙI THIEÄU SÔ LÖÔÏC VEÀ HOÏ MAÙY TÍNH IBM I. Boä xöû lyù trung taâm : (CPU_Central Processing Unit) Ñaây laø boä phaän trung taâm ñieàu khieån moïi hoaït ñoäng cuûa maùy vi tính. Noù laø moät maïch toång hôïp (Chip) raát phöùc taïp, coù nhieäm vuï sau ñaây : Thu nhaän döõ lieäu. Xöû lyù döõ lieäu. Truyeàn nhöõng tín hieäu ñieàu khieån. Truyeàn döõ lieäu ñeán ñòa ñieåm xaùc ñònh. Nhaän chæ thò khaùc. Maùy vi tính coù 3 hoï chính : IBM PC vôùi boä vi xöû lyù Intel 80xxx, MACINTOSH vôùi boä vi xöû lyù Ziglog Z8000, ATARI vôùi boä vi xöû lyù Motorola 6800. ÔÛ ñaây, vì tính thoâng duïng neân chuùng em chæ khaûo saùt caùc boä vi xöû lyù Intel cuûa hoï IBM PC: - CPU 8086, 8088: (Duøng trong caùc maùy tính XT) Laø caùc CPU 16 bit Coù 14 thanh ghi, qua caùc thanh ghi naøy coù theå truy nhaäp ñeán 1Mb boä nhôù vaø 64 Kb caùc coång vaøo/ra. Coù 20 ñöôøng ñòa chæ, cho pheùp ñòa chæ hoùa tôùi 2020 ñòa chæ Data bus coù 8 ñöôøng. - CPU 80x86 (ngaøy nay coù 80486 ,80586, 80686 ...): Laø boä vi xöû lyù 16 bit. Coù 24 ñöôøng ñòa chæ. Coù 16 ñöôøng data bus, 80286 vaãn coù khaû naêng duøng caùc bus 8 bit Maùy tính söû duïng ôû ñaây laø loaïi 586, neân coù khaû naêng töông thích vôùi caùc ñôøi maùy töø 286 trôû leân. Caùc maùy naøy, ngoaøi CPU coøn coù caùc caáu truùc phaàn cöùng hoã trôï tuøy theo töøng loaïi CPU maø seõ duøng nhöõng IC khaùc nhau nhö: Boä ñoàng xöû lyù toaùn hoïc (8087/80287). Ñieàu khieån ngaét Interrupt (8259A). Ñieàu khieån DMA (Direct Memory Access: Truy xuaát boä nhôù tröïc tieáp) (8237A). Boä taïo nhòp (8284) Caùc coång giao tieáp song song, noái tieáp (8255). Ñieàu khieån CRT (6845) Ngoaøi ra, coøn söû duïng caùc logic ñeäm, choát vaø giaûi maõ ñòa chæ. II. Boä nhôù : (Memory) CPU xöû lyù khoái löôïng lôùn döõ lieäu. Tuy nhieân vaøo töøng thôøi ñieåm noù chæ ghi nhaän moät vaøi byte döõ lieäu, do ñoù caàn phaûi coù boä nhôù (main memory) beân trong maùy ñeå vieäc trao ñoåi döõ lieäu beân trong CPU ñöôïc nhanh hôn. Boä nhôù cuûa maùy vi tính coù theå chia laøm 2 loaïi : ROM vaø RAM 1. Boä nhôù ROM: laø vuøng nhôù maø haõng cheá taïo maùy ghi tröôùc vaøo ñoù caùc chöông trình ñieàu khieån caên baûn (Ngöôøi ta thöôøng goïi laø ROM BIOS), nhöõng phaàn meàm heä thoáng hoaëc öùng duïng ñi keøm vôùi maùy do haûng saûn xuaát cung caáp. Nhöõng chöông trình naøy khoâng theå thay ñoåi ñöôïc, khoâng theå bò maát ñi khi taét maùy vaø ROM chæ cho pheùp ñoïc döõ lieäu chöùa treân noù maø thoâi. 2. Boä nhôù RAM: RAM laø phaàn coøn laïi cuûa boä nhôù trong. Ñaây laø vuøng boä nhôù chöùa chöông trình öùng duïng vaø döõ kieän caàn thieát ñeå khai thaùc xöû lyù. IBM PC quaûn lyù boä nhôù baèng 20 ñöôøng ñòa chæ, töùc laø coù theå giaûi maõ ñöôïc ñòa chæ tôùi 1024 Kb hoaëc chính xaùc hôn laø 1048576 KB. Noùi caùch khaùc, ñoù laø soá löôïng toái ña caùc ñòa chæ vaø cuõng laø soá toái ña caùc byte rieâng bieät coù theå söû duïng ñöôïc. Vôùi caùc maùy tính theá heä sau naøy töø 286 trôû ñi, ngöôøi ta phaân bieät nhieàu loaïi kyù öùc RAM tuøy theo töøng heä ñieàu haønh. Vôùi heä ñieàu haønh MS DOS thì ñöôïc phaân bieät thaønh 3 loaïi kyù öùc: * Vuøng nhôù qui öôùc: (Conventional memory). Taát caû caùc maùy vi tính chaïy döôùi DOS ñeàu coù toái ña 1 MB (1.024 KB) vuøng nhôù RAM. Theo thieát keá cuûa DOS thì phaàn ñeàu 384 KB ôû ñænh ñuôïc duøng vaøo caùc coâng vieäc ñaëc bieät nhö theo beân döôùi, phaàn vuøng nhôù naøy ñöôïc goïi laø vuøng nhôù treân (UMA). Phaàn coøn laïi 640 KB daønh cho caùc chöông trình öùng duïng vaø ñöôïc goïi laø vuøng nhôù cô baûn. ROM BIOS ROMBASIS FIXED DISK ROM CGA VIDEO MONOCHROME VIDEO EGA VIDEO 1024KB 64K 8K 16K 16K 64K 640KB * Vuøng nhôù môû roäng: (Extended memory). Ñöôïc goïi taét laø XMS, ñaây laø vuøng nhôù mang vò trí lôùn hôn vò trí 1 MB ñaàu tieân. Baét ñaàu töø maùy IBM AT, caùc maùy chaïy vôùi DOS coù theå coù ñeán 15 MB vuøng nhôù môû roäng ngoaøi 1 MB vuøng nhôù qui öôùc. Caùc CPU Intel 8088 hay 8086 khoâng coù caùc vuøng nhôù naøy (vì noù chæ ñònh vò 1 MB maø thoâi). * Vuøng nhôù baønh tröôùng: (Expanded memory). Ñöôïc goïi taét laø EMS, ñaây laø nhöõng vuøng nhôù naèm ngoaøi bieân giôùi 1 MB ñöôïc ñöa veà trong khoâng gian 1 MB vôùi thoâng soá laø trang. EMS chæ coù khi tröôùc ñoù ñöôïc chaïy moät chöông trình ñaëc bieät: EMM386.EXE. III. Caùc thieát bò xuaát nhaäp ngoaïi vi : (I/O DEVICES) Thieát bò ngoaïi vi laø nhöõng thieát bò thöïc hieän chöùc naêng nhaäp xuaát döõ lieäu. Caùc thieát bò ngoaïi vi thoâng duïng ñöôïc gaén vôùi maùy tính goàm baøn phím, maøn hình, caùc oå ñóa, maùy in … Chuùng ñöôïc gaén vaøo maùy tính nhôø caùc Card giao tieáp vaø thoâng qua caùc Slot gaén treân Mainboard cuûa maùy tính (treân Mainboard cuûa maùy tính bao goàm CPU, ROM, RAM, Slot vaø caùc boä phaän hoå trôï khaùc). Trong maùy vi tính thöôøng 6 Slot duøng ñeå caém caùc Card (tuøy theo loaïi main board), caùc Slot naøy hoaøn toaøn bình ñaúng vôùi nhau, nghóa laø caùc Slot song song nhau neân khaû naêng xuaát ñòa chæ laø hoaøn toaøn gioáng nhau. Vì vaäy 1 Card caém ôû Slot naøo cuõng xuaát cuøng moät daïng ñòa chæ vaø döõ lieäu nhö nhau, ñieàu naøy raát thuaän tieän cho ngöôøi söû duïng. Moät ñieåm nöõa, laø treân maùy tính caøi ñaët caùc chöông trình phuïc vuï xuaát nhaäp cô baûn (BIOS). Muïc ñích laø giao tieáp coù ñieàu khieån vôùi heä thoáng vaø giaûi phoùng ngöôøi laäp trình khoûi quan taâm ñeán caùc ñaëc tính phaàn cöùng. Vieäc truy xuaát naøy seõ thoâng qua caùc Vector interrupt. (Vector ngaét). Ó Caùc raõnh caém trong Maùy Tính PC: Khi moät maùy tính xuaát xöôûng thì caû nhaø saûn xuaát vaø ngöôøi duøng ñeàu ngaàm hieåu laø caáu hình chöa haún ñaõ hoaøn chænh, maø tuøy töøng muïc ñích söû duïng coù theå ñöa theâm vaøo caùc baûn maïch (card) gheùp noái ñeå môû roäng khaû naêng ñaùp öùng cuûa maùy tính. Beân trong maùy, ngoaøi caùc raõnh caém duøng cho card vaøo/ra (I/O card), card maøn hình, vaãn coøn nhöõng raõnh caém ñeå troáng. Caùc raõnh caém naøy ñöôïc tieáp tuïc duøng ñeå gheùp noái caùc baûn maïch caém theâm vaøo vôùi maùy tính PC. ÔÛ maùy tính PC/XT raõnh caém trong maùy tính chæ coù moät loaïi vôùi ñoä roäng bus laø 8 bit vaø tuaân theo tieâu chuaån ISA (Industry Standard Architecture). Töø maùy tính AT trôû ñi vieäc boá trí chaân treân raõnh caém trôû neân phöùc taïp hôn, tuøy theo tieâu chuaån ñöôïc löïa choïn khi cheá taïo maùy tính. Caùc loaïi raõnh caém theo nhöõng tieâu chuaån khaùc nhau coù theå keå ra nhö sau: Raõnh caém 16 bit theo chuaån ISA (Industry Standard Architecture) Raõnh caém PS/2 vôùi 16 bit theo chuaån MCA (Micro Channel Architecture). Raõnh caém PS/2 vôùi 32 bit theo chuaån MCA Raõnh caém 32 bit theo chuaån EISA. (Extended Industy Standard Architecture). Raõnh caém 32 bit theo chuaån VESA VLB (VESA Local Bus Standard). Raõnh caém 32 bit theo chuaån PCI. (Peripheral Component Interconect-Standard). Cho ñeán nay phaàn lôùn card gheùp noái duøng trong kyõ thuaät ño löôøng vaø ñieàu khieån ñeàu ñöôïc cheá taïo ñeå ñaët vaøo raõnh caém theo chuaån ISA, cho neân döôùi ñaây seõ ñöôïc giôùi thieäu chi tieát hôn. Trong caùc tröôøng hôïp caàn tìm hieåu chi tieát veà caùc raõnh caém khaùc coù theå xem theâm phaàn phuï luïc. Söï saép xeáp chaân trong khe caém theo chuaån ISA: Thoâng thöôøng raõnh caém coù 62 ñöôøng tín hieäu duøng coù muïc ñích thoâng tin vôùi moät card caém vaøo. Veà cô baûn caùc ñöôøng tín hieäu naøy ñöôïc chia ra thaønh caùc ñöôøng daãn tín hieäu, ñöôøng daãn ñòa chæ vaø ñöôøng daãn ñieàu khieån. Bôûi vì ngay töø caùc maùy tính PC/XT ñaõ saün coù caùc raõnh caém 62 chaân naøy, treân ñoù coù 8 ñöôøng daãn döõ lieäu, neân ñoâi khi ngöôøi ta cuõng goïi luoân raõnh caém 62 chaân naøy laø raõnh caém 8 bit. Chæ nhöõng card 8 bit môùi ñöôïc caém vaøo raõnh naøy. Baûng döôùi ñaây chæ ra söï saép xeáp chaân ra cuûa raõnh caém môû roäng 8 bit. Veà sau maùy tính PC/AT ra ñôøi chuùng coù theâm moät raõnh thöù hai naèm thaúng haøng vôùi raõnh 8 bit keå treân vaø coù 36 chaân. Treân raõnh naøy coù chöùa caùc tín hieäu 16 bit. Neân khi coù theâm raõnh caém naøy thì ngöôøi ta goïi chung caû hai raõnh laø raõnh caém 16 bit. Caùc raõnh caém töø 32 bit trôû leân duøng ñeå gheùp vaøo nhöõng card coù chaát löôïng raát cao, vaø vì vaäy trong phaïm vi noäi dung cuûa taäp luaän aùn naøy chöa ñöôïc quan taâm. Raõnh caém 16 bit bao goàm raõnh caém 8 bit vaø coù theâm moät raõnh caém thöù hai. Sau ñaây laø sô ñoà boá trí chaân cuûa moät khe caém theo chuaån ISA 8 bit trong maùy tính PC. Phía maïch in Phía linh kieän GND B01 A01 /IOCHCK Reset B02 A02 D7 + 5V B03 A03 D6 IRQ2 B04 A04 D5 - 5V B05 A05 D4 DREQ2 B06 A06 D3 - 12 V B07 A07 D2 Döï tröõ B08 A08 D1 + 12 V B09 A09 D0 GND B10 A10 /IOCHRDY /MEMW B11 A11 AEN /MEMR B12 A12 A19 /IOW B13 A13 A18 /IOR B14 A14 A17 /DACK3 B15 A15 A16 DREQ3 B16 A16 A15 /DACK1 B17 A17 A14 DREQ1 B18 A18 A13 /DACK0 B19 A19 A12 CLK B20 A20 A11 IRQ7 B21 A21 A10 IRQ6 B22 A22 A9 IRQ5 B23 A23 A8 IRQ4 B24 A24 A7 IRQ3 B25 A25 A6 /DACK2 B26 A26 A5 TC B27 A27 A4 ALE B28 A28 A3 + 5 V B29 A29 A2 OSC B30 A30 A1 GND B31 A31 A0 Kích thöôùc lôùn nhaát cuûa card ISA 8 bit laø: Chieàu cao 106,7 mm (hay 4,2 inch). Chieàu daøi 333,5 mm (hay 13,13 inch). Chieàu daøy – keå caû linh kieän – 12,7 mm (hay 0,5 inch). Coøn kích thöôùc lôùn nhaát cuûa caùc card ISA 16 bit laø: Chieàu cao 121,92 mm (hay 4,8 inch). Chieàu daøi 333,5 mm (hay 13,3 inch). Chieàu daøy – keå caû linh kieän – 12,7 mm (hay 0,5 inch). Söï khaùc nhau giöõa hai kích thöôùc naøy chæ ôû chieàu cao maø nguyeân nhaân laø do voû cuûa maùy tính AT ñöôïc thieát keá cao hôn loaïi XT ñoâi chuùt. Töø caùch saép xeáp chaân ra, roõ raøng laø 62 ñöôøng tín hieäu naèm caû ôû maët haøn thieác cuõng nhö maët saép ñaët linh kieän. Do ñoù caùc baûn maïch (card) caém theâm vaøo bao giôø cuõng laø nhöõng card maïch in hai maët. Beân caïnh 8 ñöôøng daãn döõ lieäu treân card coøn coù 20 ñöôøng daãn ñòa chæ töø A0 ñeán A19. Trong cuoán luaän aùn naøy caùc ñöôøng daãn ñieàu khieån coøn laïi cuõng ít ñöôïc quan taâm ñeán. Vaø khoâng phaûi taát caû caùc tín hieäu ñieàu khieån duøng ñeå taïo neân moät card môû roäng ñeàu ñöôïc söû duïng, neân thöôøng thì ta cuõng chæ caàn quan taâm ñeán caùc tín hieäu sau : Tín hieäu Höôùng Moâ taû Reset Loái ra Sau khi baät maùy tính hoaëc sau khi ngaét ñieän, ñöôøng daãn Reset seõ kích hoaït trong thôøi gian ngaén ñeå ñöa card ñaõ ñöôïc caém vaøo ñeán moät traïng thaùi ban ñaàu xaùc ñònh. /IOW Loái ra Input / Output / Write Tín hieäu naøy seõ kích hoaït khi truy nhaäp ghi leân moät card môû roäng. Möùc thaáp chæ ra raèng caùc döõ lieäu coù giaù trò ñang chôø ñeå ñöa ra ôû bus döõ lieäu. Caùc döõ lieäu ñöôïc ñoùn nhaän baèng söôøn tröôùc. /IOR Loái ra Input / Output / Read Möùc thaáp cuûa ñöôøng daãn ñòa chæ naøy baùo hieäu söï truy nhaäp ñoïc treân moät card môû roäng. Trong thôøi gian naøy caùc döõ lieäu coù giaù trò caàn phaûi saép xeáp ñeå roài sau ñoù ñöôïc ñoùn nhaän baèng söôøn tröôùc. AEN Loái ra Address Enable Ñöôøng daãn ñieàu khieån AEN duøng ñeå phaân bieät chu trình truy nhaäp DMA vaø chu trình truy nhaäp boä xöû lyù. ÔÛ möùc cao (High) DMA giaùm saùt qua bus ñòa chæ vaø bus döõ lieäu; ñöôøng daãn coù hieäu löïc ôû möùc thaáp (Low). Ñöôøng daãn naøy caàn phaûi ñöôïc söû duïng cho quaù trình giaûi maõ ñòa chæ bôûi card môû roäng. IV.Söï phaân boá ñòa chæ trong maùy tính: Vuøng vaøo/ra cuûa maùy tính PC ñaõ chieám giöõ 64 Kbyte cuûa boä nhôù toång coäng vôùi dung löôïng haøng vaøi MByte trôû leân. Vì vaäy, vuøng vaøo/ra cuûa moät card môû roäng khoâng ñöôïc pheùp bao truøm leân vuøng ñòa chæ vaøo/ra cuûa maùy tính. Khi ñöa moät card môû roäng vaøo söû duïng, thì vieäc ñaàu tieân laø ta phaûi löu taâm ñeán ñieåm ñaùng chuù yù naøy. Baûng döôùi ñaây seõ chæ ra söï saép xeáp cuûa vuøng ñòa chæ vaøo/ra cuûa maùy tính PC/AT: Ñòa chæ (Hex) vaøo/ra Chöùc naêng 000 – 01F Boä ñieàu khieån DMA 1 (8232) 020 – 03F Boä ñieàu khieån ngaét (8259) 040 – 04H Boä phaùt thôøi gian (8254) 060 – 06F Boä kieåm tra baøn phím (8242) 070 – 07F Ñoàng hoà thôøi gian thöïc (MC 146818) 080 – 09F Thanh ghi trang DMA (LS 670) 0A0 – 0AF Boä ñieàu khieån ngaét 2 (8259) 0CH – 0CF Boä ñieàu khieån DMA 2 (8237) 0E0 – 0EF Döï tröõ cho maûng maïch chính 0F8 – 0FF Boä ñoàng xöû lyù 80x87 1F0 – 1F8 Boä ñieàu khieån ñóa cöùng 200 – 20F Coång duøng cho troø chôi (Game) 278 – 27F Coång song song 2 (LPT 2) 2B0 – 2DF Card EGA 2 2E8 – 2EF Coång noái tieáp 4 (COM 4) 2F8 – 2FF Coång noái tieáp 2 (COM 2) 300 – 31F Duøng cho card môû roäng 320 – 32F Boä ñieàu khieån ñóa cöùng 360 – 36F 378 – 37F Coång noái maïng (LAN) Coång song song 1 (LPT1) 380 – 38F Coång noái tieáp ñoàng boä 2 3A0 – 3AF Coång noái tieáp ñoàng boä 1 3B0 – 3B7 Maøn hình ñôn saéc 3C0 – 3CF Card EGA 3D0 – 3DF Card CGA 3E8 – 3EF Coång noái tieáp 3 (COM 3) 3F0 – 3F7 Boä ñieàu khieån ñóa meàm 3F8 – 3FF Coång noái tieáp 1 (COM 1) Töø baûng naøy ta thaáy roõ raøng laø caùc ñòa chæ 300 ñeán 31F (Hex) ñaõ ñöôïc döï tính ñeå duøng cho card môû roäng. Caùc ñöôøng daãn ñòa chæ ñöôïc söû duïng ñoái vôùi vuøng naøy laø A0 ñeán A9. Thoâng thöôøng thì caùc ñòa chæ, maø döôùi caùc ñòa chæ naøy maùy tính coù theå trao ñoåi vôùi card môû roäng, coù theå ñaët ñöôïc ôû chính treân card. Baây giôø nhieäm vuï cuûa taám baûn maïch (card) ñöôïc gaén vaøo laø so saùnh caùc ñöôøng daãn ñòa chæ ôû maùy tính vôùi caùc ñòa chæ ñaõ ñöôïc thieát laäp xem coù thoáng nhaát khoâng vaø thoâng baùo söï ñaùnh giaù ôû moät boä ñieàu khieån logic. Chæ khi coù söï thoáng nhaát moät caùch chính xaùc môùi coù theå tieán haønh söï trao ñoåi thoâng tin vôùi maùy tính. Thoâng thöôøng thì treân moät card môû roäng coù nhieàu khoái chöùc naêng nhö: boä bieán ñoåi A/D, boä bieán ñoåi D/A, khoái xuaát vaø nhaäp döõ lieäu soá, caùc khoái naøy ñöôïc trao ñoåi döôùi nhöõng ñòa chæ khaùc nhau töø maùy tính. Sô ñoà ñònh vò chaân cuûa caùc Slot, moãi beân coù 31 ñöôøng vaø ñöôïc ñaùnh daáu nhö sau : - Moät beân coù caùc ñöôøng ñaùnh daáu töø B1 ñeán B31. - Beân coøn laïi coù caùc ñöôøng ñaùnh daáu töø A1 ñeán A31. Tuy nhieân, thöù töï ñaët caùc Slot coøn tuøy thuoäc vaøo loaïi maùy vaø haûng saûn xuaát, coøn yù nghóa cuûa caùc kyù hieäu thì vaãn nhö nhau. Vì ñeà taøi chæ söû duïng caùc chaân naèm trong khoaûng töø A1 ñeán A31 vaø B1 ñeán B31, neân trong phaàn naøy chuùng em chæ trình baøy teân cuûa chuùng vaø chöùc naêng cuûa caùc chaân söû duïng trong phaàn thieát keá. Nhöõng chaân coøn laïi xin xem ôû phaàn phuï luïc, muïc “Sô ñoà chaân cuûa Slot” ñöôïc trích töø saùch PC/AT – Technical Reference. Trong ñeà taøi thieát keá naøy chuùng em chæ söû duïng caùc chaân Address, caùc chaân Data, chaân ñieàu khieån (IOR, IOW, RESET, AEN) vaø chaân Mass. Cho neân chuùng em chæ trình baøy chöùc naêng cuûa caùc chaân naøy maø thoâi, caùc chaân coøn laïi xin xem theâm ôû phaàn Phuï Luïc. - A0 ¸ A19 : 20 chaân ñòa chæ söû duïng cho boä nhôù vaø I/O, caùc tuyeán naøy ñöôïc ñieàu khieån bôûi boä vi xöû lyù hay taùc duïng cuûa DMA. Chuùng ñöôïc taùc ñoäng ôû möùc thaáp. - D0 ¸ D7 : 8 chaân cuûa Bus döõ lieäu 2 chieàu. Khi CPU ôû chu kyø vieát ra bus (Xuaát) thì CPU phaûi cung caáp Data cho Bus tröôùc khi xung IOW hay MEMW leân cao ñeå tuaàn töï ñöa Data ra Port hay Memory xuaát. - IOW, MEMW, IOR, MEMR : Laø caùc tín hieäu tích cöïc thaáp (Low/Active) ñieàu khieån caùc hoaït ñoäng ñoïc vaø vieát nhö ñaõ trình baøy ôû treân. Chuùng ñöôïc phaùt ra töø CPU hay töø boä ñieàu khieån DMA. - ALE (Address latch enable) : Tín hieäu ALE cho bieát baét ñaàu chu kyø hoaït ñoäng. - AEN (Address enable) : Tín hieäu naøy ñöôïc phaùt töø boä ñieàu khieån DMA ñeå baùo quaù trình DMA ñang hoaït ñoäng. Noù thöôøng ñöôïc duøng ñeå voâ hieäu hoùa giaûi maõ Logic cho I/O port (Khoùa Port I/O) trong suoát chu kyø DMA. Vì theá, ñòa chæ boä nhôù DMA khoâng ñöôïc duøng tham döï nhö moät ñòa chæ I/O Port. Traïng thaùi naøy xaûy ra töø khi tín hieäu IOR hay IOW ñöôïc tích cöïc trong moät chu kyø DMA. - RESET DRV: Duøng ñeå Reset heä thoáng. Tín hieäu naøy ñoàng boä vôùi caïnh xuoáng cuûa OSC. Treân ñaây, chuùng em ñaõ trình baøy sô boä caùc chöùc naêng moät soá chaân cuûa Slot ñöôïc söû duïng trong maïch thieát keá. Tuy nhieân, ñeå choïn ñòa chæ I/O Port cho maïch thieát keá ñaûm baûo khoâng bò truøng ñòa chæ vôùi caùc thieát bò khaùc thì ta caàn phaûi bieát bieåu ñoà phaân chia Port cuûa IBM PC. IBM PC cung caáp cho ta 10 bit ñeå ñaùnh ñòa chæ cho caùc port: bit A0 ¸ A9 giaûi maõ toång coäng ñöôïc 1024 ñòa chæ port vaø ñöôïc chia laøm 2 phaàn: * 512 ñòa chæ töø 0000 H ¸ 01FF H duøng cho Mainboard (System board). * 512 ñòa chæ töø 0200 H ¸ 03FF H daønh cho caùc board ôû caùc Slot. Trong caùc ñòa chæ treân thì vuøng ñòa chæ Prototype card chöa ñöôïc söû duïng, do ñoù em seõ söû duïng vuøng ñòa chæ naøy ñeå giaûi maõ cho Card giao tieáp cuûa em (caùc ñòa chæ töø 300H ¸ 31FH), nhieäm vuï cuï theå xin xem phaàn tieáp theo. Döôùi ñaây laø hình minh hoïa moät khe caém ISA nhìn töø treân xuoáng: TOP VIEW SÔ ÑOÀ CHAÂN CUÛA MOÄT KHE CAÉM THEO CHUAÅN ISA 8 BIT V. So saùnh vaø löïa choïn caùc kyõ thuaät giao tieáp: 1. Kyõ thuaät giao tieáp: ÔÛ phaàn treân, nhoùm em ñaõ trình baøy sô löôïc veà caùc I/O vaø choïn vuøng ñòa chæ cho Card giao tieáp. Tuy nhieân, khi giao tieáp giöõa caùc Card I/O vôùi maùy vi tính thì coù raát nhieàu phöông phaùp khaùc nhau nhöng coù theå chia laøm 3 nhoùm chính nhö sau: - Vaøo / Ra ñieàu khieån baèng chöông trình (Program – Controlled I/O). - Vaøo / Ra ñieàu khieån baèng ngaét (Interrupt service – Routine controlled I/O) - Vaøo / Ra thaâm nhaäp tröïc tieáp (Hardwave – Controlled I/O : DMA). Caùc phöông phaùp trao ñoåi thoâng tin: Vaøo / Ra ñieàu khieån baèng chöông trình : (Program–Controlled I/O) Coù daïng ñieàu khieån theo chöông trình laø : * Coù ñieàu kieän. * Khoâng coù ñieàu kieän. Giao nhaän Data khoâng ñieàu kieän laø khoâng ñeå yù xem Port coù saün saøng nhaän hay giao soá lieäu chöa, phöông phaùp naøy ñöôïc söû duïng vôùi thoâng tin tónh. Soá lieäu giao nhaän coù theå sai neáu chöông trình vieát khoâng tính ñuùng. Neáu boä vi xöû lyù truyeàn Data nhanh hôn ngoaïi vi thì seõ bò maát Data. Tuy nhieân, ta coù phöông phaùp khaùc ñeå khaéc phuïc tình traïng treân laø caùc I/O port thöôøng ñöôïc thieát keá vôùi cheá ñoä coù ñieàu kieän, ñoù laø giao nhaän Data coù tín hieäu “Baét tay” (Hand Shaking). Traïng thaùi cuûa I/O Port ñöôïc giöõ trong caùc côø (flag), phaàn meàm phaûi kieåm tra caùc côø naøy tröôùc khi giao nhaän Data, do ñoù toán thôøi gian. Nhaát laø khi coù nhieàu I/O port thì ta phaûi kieåm tra laàn löôït caùc traïng thaùi côø. Quaù trình kieåm tra voøng traïng thaùi côø goïi laø kyõ thuaät thaêm doø (polling). + Öu ñieåm: Linh ñoäng, deå ñieàu khieån, deã môû roäng vaø deã thay ñoåi. + Nhöôïc ñieåm: Maát nhieàu thôøi gian vì kyõ thuaät thaêm doø neân ñaùp öùng chaäm. b. Vaøo/Ra ñieàu khieån baèng ngaét : (Interrupt Service Routine Controlled I/O) Kyõ thuaät naøy nhaèm caûi thieän thôøi gian giao tieáp, cuõng nhö caùc yeâu caàu ñoät xuaát. Quaù trình ngaét taêng khaû naêng cuûa heä do cho pheùp ngoaïi vi yeâu caàu vi xöû lyù khi chuùng caàn, thay vì phaûi ñôïi ñeán khi chuùng ñöôïc hoûi tôùi. Caùc hoï vi xöû lyù khaùc nhau ñeàu trang bò moät chöông trình ngaét rieâng. Khi coù nhieàu thieát bò söû duïng ngöôøi ta coù hai caùch thöïc hieän: * Baèng phaàn cöùng. * Baèng phaàn meàm. Nhöôïc ñieåm cuûa phöông phaùp naøy laø: + Yeâu caàu ngaét coù theå xuaát hieän ôû baát cöù thôøi ñieåm naøo, do ñoù CPU coù theå chuyeån ñieàu khieån sang caùc chöông trình phuïc vuï ngaét ôû cuoái baát kyø leänh naøo trong chöông trình chính. Vì vaäy phaùt hieän sai trong chöông trình duøng ngaét thöôøng khoù vaø phöùc taïp hôn trong chöông trình ñoøi hoûi voøng (polling). + Caùc chöông trình con phuïc vuï ngaét coù theå caát giöõ noäi dung caùc thanh ghi, côø ... vaø khoâi phuïc khi quay laïi. Coâng vieäc naøy laøm cho CPU phaûi thöïc hieän theâm moät soá leänh vaø nhieàu khi laøm taêng thôøi gian traû lôøi ngaét. + Heä thoáng duøng ngaét caàn theâm phaàn cöùng ñaëc bieät. Khi heä coù nhieàu nguoàn ngaét, phaàn cöùng naøy trôû neân phöùc taïp, do phaûi giaûi quyeát vaán ñeà maõ hoùa vaø thöù töï öu tieân caùc yeâu caàu ngaét. Vaøo/Ra thaâm nhaäp tröïc tieáp : (Hardware – Controlled I/O: DMA) Cô cheá DMA giuùp cho CPU khoâng bò laõng phí thôøi gian. Quaù trình truy xuaát tröïc tieáp boä nhôù caàn thieát khi chuyeån giao moät löôïng lôùn Data maø khoâng caàn phaûi xöû lyù (giöõa Memory vaø I/O) 2.So saùnh vaø choïn kyõ thuaät giao tieáp : Qua khaûo saùt ôû treân nhoùm em nhaän thaáy raèng vôùi heä thoáng cuûa chuùng ta, yeâu caàu linh ñoäng lôùn, coù khaû naêng môû roäng, khoâng yeâu caàu xöû lyù Data vôùi toác ñoä cao. Maëc khaùc giaù thaønh phaûi reû, phuø hôïp vôùi khaû naêng cuûa nhieàu ngöôøi. Do ñoù chuùng em maïnh daïn choïn phöông phaùp ñieàu khieån baèng chöông trình coù ñieàu kieän (Program – Controlled I/O) theo phöông phaùp truyeàn soá lieäu song song. Noäi dung cuï theå xin xem phaàn keá tieáp. PHAÀN C: THIEÁT KEÁ VAØ THI COÂNG MODULE GIAO TIEÁP 1. Sô ñoà khoái cuûa module giao tieáp: Heä thoáng ñöôïc thieát keá theo._. daïng caùc Module con ñeå deã daøng cho nhu caàu môû roäng veà sau, caùc Module con naøy coù caùc nhieäm vuï rieâng bieät vaø coù theå lieân keát vôùi nhau ñöôïc deå daøng thaønh moät heä thoáng module lôùn duøng keát noái trao ñoåi thoâng tin vôùi maùy tính. MODUN 5 TEST CARD MODUN6 MODUN 3 Data Bus Add. Bus MODUN 1 MODUN 4 Control Bus MODUN 2 Computer MODUN 7 - MODUN 1 : Laø khoái trung gian ñeå lieân keát giöõa maùy tính vaø caùc khoái khaùc, khoái naøy coù nhieäm vuï ñeäm caùc tín hieäu xuaát nhaäp maùy tính vaø giaûi maõ ñòa chæ. - MODUN 2 : Laø khoái nhaän caùc tín hieäu ANALOG vaø chuyeån ñoåi caùc tín hieäu naøy thaønh tín DIGITAL. Khoái naøy ñöôïc thieát keá coù khaû naêng nhaän ñöôïc 128 keânh ANALOG vaø noù coù theå ñöôïc taùch ra laøm 2 phaàn, moãi phaàn nhaän ñöôïc 64 keânh ANLOG. Caùc phaàn naøy hoaït ñoäng ñoäc laäp vôùi nhau. - MODUN 3 : Laø khoái nhaän tín hieäu DIGITAL, khoái naøy coù khaû naêng nhaän ñöôïc 128 keânh DIGITAL vaø noù coù theå ñöôïc taùch ra laøm 2 phaàn, moãi phaàn nhaän ñöôïc 64 keânh DIGITAL vaø hoaït ñoäng ñoäc laäp nhau. - MODUN 4 : Laø khoái xuaát tín hieäu DIGITAL, khoái naøy coù khaû naêng xuaát ñöôïc 128 keânh DIGITAL vaø noù coù theå ñöôïc taùch ra laøm 2 phaàn, moãi phaàn xuaát ñöôïc 64 keânh DIGITAL vaø hoaït ñoäng ñoäc laäp nhau. - MODUN 5 : Laø khoái xuaát tín hieäu ANALOG, khoái naøy coù theå xuaát ñöôïc 8 keânh ANALOG. - MODUN 6 : Ñaây laø Modun duøng ñeå TEST caùc Modun treân (töø Modun 2 ñeán Modun 5). Vieäc TEST caùc Modun naøy laø ñeå kieåm tra ñoä tin caäy cuûa thieát bò vaø ñaûm baûo caùc Modun hoaït ñoäng toát. - MODUN 7: Laø thieát bò öùng duïng ñaàu cuoái maø cuï theå ôû ñaây laø boä nguoàn ñieän aùp coù ñieän aùp ra ñieàu chænh ñöôïc II. Thieát keá & thi coâng caùc module con: 1. Module giaûi maõ ñòa chæ vaø ñeäm döõ lieäu (Module 1) : Phaàn lôùn trong ñeà taøi ñeàu söû duïng caùc IC hoï 74LSxxx, do ñoù ñeå traùnh vieäc laäp laïi vaán ñeà naøy em xin trình baøy moät soá ñaëc tröng tieâu bieåu cuûa chuùng, coøn sô ñoà chaân vaø baûng söï thaät cuûa caùc IC ñöôïc ñeà caäp ñeán trong ñeà taøi xin xem ôû phaàn Phuï Luïc. Caùc ñaëc tröng tieâu bieåu: - Coâng suaát tieâu taùn : P = 2mW + 0,25mW (vôùi Ctaûi = 15pF). - Nguoàn nuoâi : +5 Vdc. - Logic [0] ñieän aùp ra : 0.2 Vdc - Logic [1] ñieän aùp ra : 3 – 4.5 Vdc. - Khoaûng an toaøn : 1 Vdc. - Khoaûng nhieät ñoä laøm vieäc : 0 – 70 ñoä C - Khoaûng nhieät ñoä baûo quaûn : -65 – 150 ñoä C. - Ñieän aùp cao nhaát cho pheùp : +7 Vdc. - Ñieän aùp thaáp nhaát : 0.5 Vdc. - Ñieän aùp cao nhaát giöõa 2 ngoõ vaøo : +5.5 Vdc. - Ñieän aùp cao nhaát giöõa ngoõ ra vaø ñaát : +5.5 Vdc. - Ñieän aùp thaáp I giöõa ngoõ vaøo laø : -0.8 Vdc. - Ñieän aùp thaáp I giöõa ngoõ ra vaø ñaát : -0.8 Vdc. - Ñeå traùnh hieän töôïng nhieãu ta duøng moät tuï khöû gheùp : 0.01mF – 0.1mF noái töø chaân Vcc xuoáng GND vaø caøng ñaët gaàn vi maïch caøng toát (Caùc tuï khöû gheùp naøy seõ trung hoøa caùc xung ñænh nhoïn cuûa nguoàn khi caùc ñaàu ra cuûa vi maïch TTL/LS thay ñoåi traïng thaùi. Neáu nguoàn cung caáp khoâng naèm treân baûng maïch thì noái moät tuï ñieän töø 1mF ñeán 10mF ôû ñaàu ra cuûa nguoàn taïi vò trí ñöa vaøo baûng maïch. - Moät ñaàu ra cuûa TTL coù theå ñieàu khieån ñöôïc 10 ñaàu vaøo TTL hoaëc 20 ñaàu vaøo LS. Moät ñaàu ra LS coù theå ñieàu khieån ñöôïc 10 ñaàu vaøo TTL hoaëc 20 ñaàu vaøo LS. Moät ñaàu ra LS coù theå ñieàu khieån 5 ñaàu vaøo TTL hoaëc 10 ñaàu vaøo LS. - Ñòa chæ ñöôïc choïn ñeå giaûi maõ cho Port laø vuøng Prototype Card coù vuøng ñòa chæ trong khoaûng töø 300H ñeán 31FH. ÔÛ ñaây, vì thieát bò chæ söû duïng coù 4 Card chöùc naêng (Chuùng chæ caàn khoaûng 16 ñòa chæ) do ñoù em choïn caùc ñòa chæ cho Card naøy laø : 300H à 30FH. Baûng phaân boá ñòa chæ : Add.pin … A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Add (Hex) 300 0 0 1 1 0 0 0 0 0 0 0 0 301 0 0 1 1 0 0 0 0 0 0 0 1 302 0 0 1 1 0 0 0 0 0 0 1 0 303 0 0 1 1 0 0 0 0 0 0 1 1 304 0 0 1 1 0 0 0 0 0 1 0 0 305 0 0 1 1 0 0 0 0 0 1 0 1 306 0 0 1 1 0 0 0 0 0 1 1 0 307 0 0 1 1 0 0 0 0 0 1 1 1 308 0 0 1 1 0 0 0 0 1 0 0 0 309 0 0 1 1 0 0 0 0 1 0 0 1 30A 0 0 1 1 0 0 0 0 1 0 1 0 30B 0 0 1 1 0 0 0 0 1 0 1 1 30C 0 0 1 1 0 0 0 0 1 1 0 0 30D 0 0 1 1 0 0 0 0 1 1 0 1 30E 0 0 1 1 0 0 0 0 1 1 1 0 30F 0 0 1 1 0 0 0 0 1 1 1 1 Töø baûng phaân boá ñòa chæ treân em nhaän thaáy raèng: ta chæ caàn 10 ñöôøng ñòa chæ laø coù theå giaûi maõ cho Card naøy, ñoù laø caùc ñöôøng sau: A0, A1, A2, A3, A4, A5, A6, A7, A8, A9. Maïch giaûi maõ ñòa chæ söû duïng 3 IC 74LS138 ñeå giaûi maõ vôùi vuøng ñòa chæ ñöôïc giaûi maõ töø 300H ñeán 30FH. IC 74LS138 ñaàu tieân ñöôïc duøng ñeå cho pheùp hai IC 74LS138 coøn laïi hoaït ñoäng, noù söû duïng caùc ñòa chæ : A5 ¸ A9 vaø chaân AEN, trong ñoù caùc chaân ñòa chæ seõ chæ giaù trò khoâng ñoåi khi ñòa chæ cuûa I/O Port rôi vaøo vuøng ñaõ choïn (300H ¸ 30FH), chaân AEN coøn laïi duøng laøm tín hieäu cho pheùp cho IC 74LS138 naøy hoaït ñoäng, chaân AEN ñöôïc duøng ñeå caám giaûi maõ Port khi chu kyø DMA ñang thöïc hieän (DMA ñang thöïc hieän thì chaân AEN seõ ôû möùc cao, neáu khoâng thì chaân naøy seõ ôû möùc thaáp), do ñoù chaân naøy seõ ñöôïc noái vôùi chaân G2B. Hai IC 74LS138 coøn laïi söû duïng chaân ñòa chæ A3 ñeå choïn moät trong hai seõ hoaït ñoäng. Trong 2 IC naøy thì con ñaàu seõ giaûi maõ ñòa chæ 300H ñeán 307H töông öùng vôùi A3 ôû möùc thaáp, IC coøn laïi seõ giaûi maõ ñòa chæ töø 308H ñeán 30FH töông öùng vôùi A3 ôû möùc cao. Caû hai IC naøy ñeàu söû duïng caùc chaân A0, A1, A2 ñeå choïn cuï theå töøng ñòa chæ. Nhö vaäy trong cuøng moät thôøi ñieåm thì chæ coù moät con ñöôïc choïn. C B A G2=G2A+G2B G1 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 X X X H H H H H H H H H H X X X H L H H H H H H H H X X X L H H H H H H H H H X X X L L H H H H H H H H 0 0 0 L H L H H H H H H H 0 0 1 L H H L H H H H H H 0 1 0 L H H H L H H H H H 0 1 1 L H H H H L H H H H 1 0 0 L H H H H H L H H H 1 0 1 L H H H H H H L H H 1 1 0 L H H H H H H H L H 1 1 1 L H H H H H H H L L Baûng hoaït ñoäng cuûa IC 74LS138 Ghi chuù : 0 = L : Töông öùng vôùi möùc logic thaáp. 1 = H : Töông öùng vôùi möùc logic cao. Ngoaøi ra, do trong maùy tính caùc tín hieäu Data (D0 ¸ D7), caùc tín hieäu ñieàu khieån (IOR, IOW, OSC, RESET) ... laø caùc tín hieäu nhoû, coù doøng raát nhoû. Do ñoù ñeå traùnh quaù taûi cho caùc IC cuûa maùy tính vaø ngaên ngöøa moät phaàn söï coá xaûy ra töø beân ngoaøi thì ta seõ söû duïng caùc coång ñeäm nhö sau: + Boä ñeäm Data 2 chieàu, söû duïng IC 74LS245. + Boä ñeäm caùc tín hieäu ñieàu khieån moät chieàu, söû duïng IC 74LS244. + Ta khoâng caàn phaûi qua taàng ñeäm ñòa chæ vì caùc chaân ñòa chæ sau khi laáy töø Slot cuûa maùy tính seõ ñöa tröïc tieáp vaøo 3 IC giaûi maõ 74LS138, caùc IC naøy coù coâng suaát tieâu thuï töông ñoái nhoû neân raát khoù gaây ra tröôøng hôïp quaù taûi cho maùy tính. * Toùm laïi, treân ñaây chuùng em ñaõ trình baøy veà Module 1: “MAÏCH ÑEÄM VAØ GIAÛI MAÕ”, Module naøy ñöôïc thieát keá rieâng treân moät mieáng maïch in vaø coù ñaëc ñieåm sau: - Ñaàu vaøo : Goàm caùc chaân sau : (ñöôïc laáy töø Slot cuûa maùy tính) + 8 chaân Data (D0 ...D7). + 10 chaân ñòa chæ (A0 .... A9). + 5 chaân ñieàu khieån : AEN, IOR, IOW, OSC, RESET. Ngoaøi ra, treân Card Ñeäm vaø Giaûi maõ naøy coøn coù theâm caùc ñöôøng nguoàn + 5V vaø ñöôøng Mass. Ñöôøng Mass naøy phaûi ñöôïc noái giöõa maùy tính – Boä nguoàn – Caùc Card giao tieáp, do ñoù moïi bieán ñoäng nhieãu cuûa boä nguoàn hay caùc Card giao tieáp ñieàu coù aûnh höôûng ñeán maùy tính vaø laøm maùy tính bò treo maùy. Ñeå giaûm toái thieåu caùc aûnh höôûng treân thì boä nguoàn vaø caùc Card giao tieáp caàn phaûi thieát keá choáng nhieãu cho thaät toát (duøng tuï, boá trí caùc linh kieän …) vaø ñöôøng Mass chung naøy neân noái vôùi ñaát. Döôùi ñaây laø sô ñoà nguyeân lyù cuûa card ñeäm vaø giaûi maõ: 2. Module nhaän tín hieäu Analog (Module 2) : Ñeå maùy tính coù theå nhaän bieát ñöôïc caùc tín hieäu töông töï (Analog) thì maïch chuyeån ñoåi tín hieäu Analog sang tín hieäu Digital caàn coù sô ñoà khoái nhö sau Tín hieäu Analog Choïn keânh töông töï Giao tieáp vôùi maùy tính ADC Laáy Maãu Quan troïng nhaát trong caùc khoái treân ñoù laø khoái ADC, ñaây laø khoái coù nhieäm vuï chuyeån ñoåi caùc tín hieäu ANALOG sang tín hieäu soá, phaàn lôùn caùc sai soá trong maïch naøy ñeàu do khoái naøy gaây ra. 2.1 Giôùi thieäu veà ADC 0809: ADC laø IC chuyeân duïng, duøng ñeå chuyeån ñoåi tín hieäu ANALOG sang tín hieäu soá. Coù raát nhieàu loaïi IC ADC naøy chaúng haïn nhö ADC0800, …, ADC088, ADC0809… (laø caùc IC chuyeån ñoåi 8 bit) hay ADC 1001C, ADC1080 … (laø caùc IC chuyeån ñoåi 10 bit) Hay ADC1210, ADC1211… (laø caùc IC chuyeån ñoåi 12 bit). Tuy nhieân thoâng duïng nhaát ôû thò tröôøng Vieät Nam (TP.HCM) thì ADC 0809 ñöôïc nhieàu ngöôøi söû duïng nhaát vì noù thoâng duïng vaø giaù thaønh töông ñoái thaáp. ADC0809 laø moät thieát bò ñôn loaïi CMOS vôùi boä chuyeån ñoåi 8 bit, coù boä doàn 8 keânh vaø boä vi xöû lyù ñieàu khieån töông hôïp ñieàu khieån Logic. Boä chuyeån ñoåi 8 bit A/D duøng nhöõng pheùp tính gaàn ñuùng laøm kyõ thuaät bieán ñoåi. Moâ hình ADC 0809 ñaõ ñöôïc öa thích hôn nhôø keát hôïp nhöõng neùt mong muoán nhaát cuûa nhieàu kyõ thuaät bieán ñoåi A/D, noù coù toác ñoä chuyeån ñoåi lôùn, ñoä chính xaùc cao, tieâu thuï naêng löôïng toái thieåu. Nhöõng ñaëc ñieåm naøy khieán cho thieát bò thích nghi moät caùch lyù töôûng cho caùc öùng duïng, ñaëc bieät laø khi gheùp noái vôùi maùy tính. a. Ñaëc tính kyõ thuaät cuûa ADC0809: Haõng saûn xuaát: NATIONAL SEMICONDUCTOR. Ñaëc ñieåm: - Ñoä phaân giaûi 8 bit. - Toång sai soá chöa chænh : ± ½ LSB vaø ± 1 LSB. - Khoâng leäch maõ. - Thôøi gian chuyeån ñoåi 100 ms. - Nguoàn ñôn 5Vdc. - Deã giao tieáp vôùi caùc Microprocessor hoaëc duøng ñôn ñoäc. - Boä doàn 8 keânh vôùi ñieàu khieån ñònh vò Logic. - Vôùi nguoàn ñôn 5Vdc thì aùp ngoõ vaøo ANALOG töø 0 ¸ 5 Volt. - Töï ñoäng chænh Zero hay Fullscale. - Ñònh vò ngoõ ra ba traïng thaùi. Caùc giaù trò danh ñònh: - Ñieän aùp nguoàn nuoâi (Vcc) : 4.5 ¸ 6.5 Vdc. - AÙp ôû chaân baát kyø (Tröø ngoõ vaøo ñieàu khieån) : -0.3V ¸ (Vcc + 0.3V). - Aùp ngoû vaøo ñieàu khieån (Start, OE, CLOCK, ALE, A, B, C) : -0.3V ¸ +15V. - Coâng suaát tieâu taùn: 875 mW. - Nhieät ñoä chaân khi haøn 10s: 300 ñoä C. - Taàm nhieät ñoä laøm vieäc: -55 ¸ 125 (ñoä C). b. Sô ñoà khoái cuûa ADC0809: Clock Start 8 Bit A/D End of Conversion 8 Channels Multi - plexing Analog Switches CONTROL & TIMING 8 Analog Input S.A.R Tri -State Output Latch Buffer Comparator SWITCH TREE 3-Bit ADDRESS ADDRESS LATCH DECODER 256R RESISTOR LADDER ADDRESS LATCH ENABLE Output Enable VCC GND REF (+) REF(-) c. Nguyeân lyù hoaït ñoäng cuûa ADC0809: Thanh ghi SAR laáy xaáp xæ gaàn ñuùng lieân tieáp coù nhieäm vuï xaáp xæ ñieän aùp vaøo vôùi ñieän aùp chuaån trong thang chia ñieän aùp 256R vôùi 8 bit ngoõ ra, ñeå laáy xaáp xæ gaàn ñuùng ñieän aùp vaøo SAR caàn ñeán 8 thao taùc lieân tieáp nhau. Thôøi gian giöõa hai thao taùc laáy gaàn ñuùng lieân tieáp nhau do boä ñònh thôøi beân trong IC aán ñònh. Khi xung Start baét ñaàu caïnh leân thì SAR ñöôïc Reset veà khoâng. Quaù trình bieán ñoåi baét ñaàu töø caïnh xuoáng cuûa xung Start. Caïnh xuoáng cuûa xung Start cuõng laø luùc tín hieäu EOC xuoáng thaáp. Sau thôøi gian thöïc hieän vieäc laáy xaáp xæ gaàn ñuùng lieân tieáp, thanh ghi SAR ñaõ chöùa beân trong giaù trò maõ soá ra. Luùc ñoù tín hieäu EOC ñöôïc keùo leân cao trôû laïi ñeå baùo cho Logic beân ngoaøi bieát quaù trình ñaõ chuyeån ñoåi xong vaø Logic beân ngoaøi coù theå ñoïc ñöôïc Data treân 8 ñöôøng Data ra. Maïch chuyeån ñoåi ADC0809 coù toác ñoä cao do chæ toán n laàn laáy xaáp xæ gaàn ñuùng cho maõ soá ra n bit. Caùc yeáu toá giôùi haïn toác ñoä chuyeån ñoåi cuûa loaïi ADC naøy laø thôøi gian caàn ñeå ngoõ ra cuûa maïch oån ñònh vaø thôøi gian ñeå cho maïch so saùnh ñaùp öùng vôùi caùc ñieän theá vaøo. Ngoaøi ra, ADC naøy cho pheùp choïn moät trong 8 keânh ANALOG ôû ñaàu vaøo nhôø 3 bit A, B, C. Quaù trình giaûi maõ ñöôïc ñieàu khieån ôû baûng sau: Selected Analog Channel Address C B A IN0 L L L IN1 L L H IN2 L H L IN3 L H H IN4 H L L IN5 H L H IN6 H H L IN7 H H H DX Vfs VZ VIN Söï chuyeån ñoåi Analog – Digital cuûa ADC0809 ñöôïc bieåu dieãn bôûi phöông trình: DMin DMax Trong ñoù: - VIN : Ñieän aùp vaøo (0 ....5 Vdc). - Vfs : Ñieän aùp khi ñaày thang (5Vdc). - VZ : Ñieän aùp Zero (0Vdc). - DX : Data caàn xuaát hieän ôû ngoõ ra (0.... 255). - DMax : Data lôùn nhaát xuaát hieän ôû ngoû ra (255). - DMin : Data nhoû nhaát xuaát hieän ôû ngoû ra (0). Nhö vaäy vôùi phöông trình treân khi nhaän tín hieäu vaøo maùy tính ta coù theå xaùc ñònh ñöôïc möùc Volt nhaän vaøo cuûa caùc keânh ANALOG, vaán ñeà coøn laïi laø ta phaûi bieát tín hieäu ANALOG naøy ñaëc tröng cho ñaïi löôïng ño naøo vaø quan heä giöõa ñaïi löôïng ño naøy vôùi ñieän aùp ñöa vaøo ADC nhö theá naøo ñeå ñaûm baûo maùy tính nhaän bieát ñöôïc chính xaùc caùc ñaïi löôïng ño cuûa ñoái töôïng caàn ño. Taàn soá xung Clock cung caáp cho ADC theo tra cöùu phaûi naèm trong phaïm vi 100khz ñeán 1,2Mhz. ÔÛ ñaây chuùng em choïn laø 500Khz (Khoâng neân choïn cao vì raát deå bò nhieãu). Giaûn ñoà xung: Clock Comparator input Analog input OUTPUT 2.2 Giao tieáp ADC 0809 vôùi maùy tính: ADC khi nhaän vaøo maùy tính caàn phaûi qua maïch giao tieáp vôùi maùy tính (ñeå ñaûm baûo tín hieäu nhaän vaøo ñöôïc töông thích vôùi maùy tính). Hieän nay coù raát nhieàu phöông phaùp giao tieáp giöõa ADC vôùi maùy tính, tuy nhieân ñeå vieäc giao tieáp naøy coù tính khaû thi cao thì phaàn lôùn caùc Card giao tieáp loaïi naøy ñeàu coù chung moät sô ñoà khoái sau: : Ñeäm Data vaø giaûi maõ choïn keânh ADC Laáy maãu vaø giöõ Choïn keânh Analog Analog Caùc tín hieäu Trong maïch thieát keá cuûa chuùng em thì Card giao tieáp naøy coù khaû naêng nhaän vaøo 128 keânh ANALOG, töông öùng vôùi hai phaàn ñoäc laäp, moãi phaàn coù theå nhaän vaøo 64 keânh. Ñeå hieåu roõ theâm veà Card giao tieáp naøy chuùng em seõ laàn löôït trình baøy sô ñoà cuï theå cuûa töøng khoái treân. a. Sô ñoà maïch choïn keânh töông töï: Maïch choïn keânh töông töï coøn ñöôïc goïi laø maïch nhaäp tín hieäu töông töï, maïch naøy coù 64 ñaàu vaøo vaø 8 ñaàu ra, moãi moät ñaàu ra seõ töông öùng vôùi moät trong 8 ñaàu vaøo. Nhö vaäy vôùi 8 ñaàu ra seõ töông öùng vôùi 8*8 = 64 ñaàu vaøo. Trong maïch naøy söû duïng caùc IC sau ñaây: - 1 IC ñeäm vaø caøi tín hieäu giaûi maõ choïn keânh töông töï 74LS373. - 1 IC giaûi maõ vieäc choïn keânh 74LS138. - 1 IC 74LS02, laø coång NOR. - 8 IC choïn keânh ANALOG 4051. Ñaây laø IC thöôøng ñöôïc duøng laøm boä keânh töông töï hoaëc phaân keânh töông töï cuõng nhö boä choïn hoaëc phaân phoái soá. Sô ñoà giaûi maõ vieäc choïn keânh: A B C Ñaàu ra X 0 0 0 X0 0 0 1 X1 0 1 0 X2 0 1 1 X3 1 0 0 X4 1 0 1 X5 1 1 0 X6 1 1 1 X7 Ñeå thöïc hieän vieäc choïn keânh maïch naøy söû duïng 6 bit Data töø D0 ¸ D5, laáy töø Slot cuûa maïch ñeäm vaø Giaûi maõ ñeå laøm tín hieäu choïn keânh. Caùc tín hieäu naøy ñöôïc ñöa vaøo IC caøi vaø ñeäm 74LS373 ñeå giöõ traïng thaùi cuûa chuùng khi ñöôïc caøi. Ñeå caøi tín hieäu cho vieäc choïn keânh ta söû duïng ñòa chæ 300H (hay 308H) keát hôïp vôùi chaân IOW (baèng coång NOR ) ñeå taïo xung kích ñoåi traïng thaùi cho IC caøi, ñaàu ra cuûa 74LS373 laø 6 tín hieäu ñieàu khieån vieäc choïn keânh coù giaù trò baèng ñaàu vaøo moãi khi IC naøy ñöôïc caøi, caùc tín hieäu ñieàu khieån naøy ñöôïc söû duïng nhö sau: - 3 bit ñaàu D0 ¸ D2 seõ ñöôïc ñöa vaøo 3 chaân A, B, C cuûa 8 IC choïn keânh 4051 (IC4-1 ¸ IC4-8) duøng ñeå choïn 8 ñaàu vaøo cuûa moät con töông öùng (moãi con seõ ñöôïc choïn töø 8 sang 1 ñöôøng). - 3 bit sau: D3 ¸ D5 seõ ñöôïc söû duïng laøm tín hieäu ñieàu khieån vieäc giaûi maõ cho 74LS138 (IC2), IC giaûi maõ naøy coù 8 chaân ra taùc ñoäng ôû möùc thaáp vaø ñöôïc duøng laøm chaân Chip Select ñeå choïn 1 trong 8 IC choïn keânh 4051 ñoàng thôøi chuùng cuõng ñöôïc ñöa vaøo 3 chaân choïn keânh A, B, C cuûa ADC0809 ñeå choïn keânh (vaán ñeà naøy seõ ñöôïc giaûi thích kyõ ôû phaàn sô ñoà choïn maïch cuûa ADC). Nhö vaäy öùng vôùi moãi thôøi ñieåm sau khi caøi tín hieäu choïn keânh thì chæ coù 1 trong 8 IC choïn keânh 4051 ñöôïc pheùp hoaït ñoäng. Caùc IC coøn laïi khoâng ñöôïc pheùp hoaït ñoäng. Trong IC 4051 ñöôïc pheùp hoaït ñoäng thì chæ ñöôïc pheùp choïn 1 trong 8 keânh ñeå ñöa vaøo ñaàu ra. Toùm laïi, taïi moãi thôøi ñieåm ta chæ coù theå choïn ñöôïc 1 trong toång soá 64 keânh ANALOG. Ñaàu ra cuûa maïch choïn keânh töông töï bao goàm 8 ñaàu (töông öùng vôùi 8 IC choïn keânh 4051), moãi ñaàu ra naøy ñöôïc cho qua 1 IC ñeäm ñieän aùp coù toång trôû nhaäp cao TL084 ñeå ñaûm baûo caùc tín hieäu khoâng bò suy giaûm (söû duïng hai IC vì moät con TL084 coù 4 IC Op-Amp. b. Sô ñoà maïch laáy maãu vaø giöõ: Caùc tín hieäu ANALOG naøy thoâng thöôøng coù hai daïng DC vaø AC coù bieân ñoä vaø thôøi gian lieân tuïc, vì boä chuyeån ñoåi ADC laáy tín hieäu vaøo öùng vôùi töøng thôøi ñieåm, cho neân ñoái vôùi caùc tín hieäu AC thì seõ coù sai soá vaø daãn ñeán vieäc khoâi phuïc tín hieäu seõ khoâng nhö luùc ñaàu nöõa. Ñeå traùnh tröôøng hôïp naøy ta caàn phaûi laáy maãu tín hieäu ANALOG tröôùc khi ñöa vaøo ADC, ñaàu vaøo cuûa khoái laáy maãu laø tín hieäu coù bieân ñoä vaø thôøi gian lieân tuïc, ñaàu ra tín hieäu coù bieân ñoä lieân tuïc vaø thôøi gian rôøi raïc. Chaúng haïn, tín hieäu caàn ñöôïc laáy maãu coù daïng sau: Xa (t) = A Sin (2P.F.t + q) Thì tín hieäu sau khi ra khoûi boä laáy maãu seõ coù daïng sau: Xn (t) = A Sin (2P.F.n.Ts + q) = A Sin (2P.(F/Fs).n + q) = Xa (nTs) Vôùi: Ts : chu kyø laáy maãu. Fs = 1/Ts : Taàn soá laáy maãu. F : Taàn soá cuûa tín hieäu ANALOG Neáu ñaët : f = F/Fs : Soá chu kyø tín hieäu ANALOG trong moät maãu. Thì : X(n) = A.Sin (2P.F.n + q) = A.Sin (w.n +q) Trong ñoù : w = 2P.F (rad/maãu) Vieäc choïn taàn soá laáy maãu phaûi döïa vaøo ñònh luaät Nyquist ñeå traùnh hieän töôïng Alias. Ñònh luaät naøy coù noäi dung nhö sau : “Moät tín hieäu vôùi taàn soá cao nhaát Fmax neáu ñöôïc laáy maãu ôû taàn soá Fs thì phaûi thoûa ñieàu kieän sau ñaây: Fs ³ 2.Fmax thì luùc ñoù tín hieäu seõ ñöôïc khoâi phuïc gaàn ñuùng vôùi daïng tín hieäu ban ñaàu” Vì cuï theå ñeà taøi laø ñieàu khieån ñieän aùp cho neân caùc tín hieäu ANALOG naøy laø tín hieäu DC do ñoù ta coù theå khoâng caàn laáy maãu cuõng ñöôïc, tuy nhieân ñeå khoâng maát tính toång quaùt em vaãn giôùi thieäu sô löôïc moät maïch cuï theå ñeå laáy maãu. Coøn phaàn thi coâng thì neáu coøn ñuû thôøi gian nhoùm em seõ tieán haønh thi coâng. Do ôû thò tröôøng Vieät Nam raát khoù kieám caùc IC laáy maãu chuyeân duïng do ñoù ôû phaàn naøy em thöïc hieän phöông phaùp laáy maãu baèng caùc linh kieän rôøi. Cô cheá laáy maãu ôû ñaây laø giaû laäp moät khoùa K ñoùng môû moät choát döõ lieäu lieân tuïc theo moät taàn soá coá ñònh ñeå laáy maãu tín hieäu tröôùc khi ñöa vaøo laø bit. Do ñöôïc laáy treân Slot cuûa maïch ñeäm vaø giaûi maõ, ñaàu ra ñöôïc caøi seõ ñöôïc söû duïng nhö laø moät tín hieäu ñieàu khieån ñeå cho pheùp IC phaân keânh 4051 ñoùng môû lieân tuïc. Nhôø vaäy maø tín hieäu ôû ñaàu vaøo 4051 seõ ñöôïc laáy maãu lieân tuïc. Ñeå coù theå phaùt tín hieäu ñieàu khieån cho vieäc ñoùng ngaét thì ta söû duïng ñòa chæ 303H (hay 30BH) keát hôïp vôùi chaân IOW baèng coång NOR ñeå taïo xung kích cho IC caøi 74LS373 hoaït ñoäng, ñoàng thôøi sau moãi laàn kích ta thay ñoåi giaù trò cuûa bit D0 töø [0] sang [1] vaø töø [1] sang [0] ñeå ñaàu ra coù IC caøi naøy coù daïng xung vuoâng, tín hieäu naøy seõ ñöôïc laøm tín hieäu ñieàu khieån cho 4051 hoaït ñoäng. Caàn chuù yù raèng, öùng vôùi moät tín hieäu ANALOG caàn laáy maãu thì ta chæ ñöôïc söû duïng coù 1 IC 4051 (IC naøy seõ coá ñònh keânh choïn, ôû ñaây duøng keânh 1 do ñoù caùc chaân A, B, C phaûi ñöôïc noái xuoáng Mass) vaø 1 IC 74LS373 phaùt tín hieäu ñieàu khieån qua 1 ñòa chæ rieâng bieät, do ñoù khi ta coù 8 tín hieäu ANALOG töø maïch choïn keânh ñöa ñeán thì hoaëc laø ta söû duïng 8 maïch laáy maãu gioáng nhö vaäy hoaëc laø söû duïng chæ moät maïch nhö vaäy vaø coù keát hôïp coâng taéc töø 8 sang 1 ñöôøng (Khi choïn tín hieäu naøo thì noái tín hieäu ñoù vaøo maïch laáy maãu). Vôùi sô ñoà maïch nhö treân thì ta coù theå thay ñoåi taàn soá laáy maãu baèng phaàn meàm, deã daøng nhôø vaøo Int 8 cuûa BIOS, ñaây laø moät ngaét maø cöù sau 18,2 giaây thì noù seõ ñöôïc goïi moät laàn, vieäc laäp trình cho ngaét naøy raát laø khoù khaên, vôùi laïi thôøi gian laøm ñeà taøi coù giôùi haïn cho neân ñeå ñôn giaûn vieäc laáy maãu thì ta seõ khoâng söû duïng 74LS373 ñeå phaùt tín hieäu xung laáy maãu maø söû duïng moät xung laáy maãu coù taàn soá coá ñònh, xung naøy ñöôïc phaùt nhôø caùc IC phaùt xung bình thöôøng hay duøng thaïch anh, taàn soá xung phaùt naøy phaûi thoûa ñieàu kieän Nyquist. Do thieát bò ño cuûa ta chæ ño vaø ñieàu khieån caùc ñoái töôïng coâng nghieäp coù taàn soá 50Hz, do ñoù, taàn soá laáy maãu cuûa tín hieäu phaûi thoûa Fs >= 100 Hz (tuy nhieân phaûi laáy nhoû hôn taàn soá cuûa xung Clock cho ADC), do ñoù em choïn Fs=250 KHz. c. Sô ñoà maïch ADC: Tín hieäu sau khi qua maïch laáy maãu vaø giöõ ñöôïc ñöa ñeán IC ADC 0809 ñeå thöïc hieän vieäc chuyeån ñoåi töø tín hieäu töông töï (ñöa töø keânh ñöôïc choïn vaøo) sang tín hieäu soá vaø ñem vaøo maùy tính ñeå xöû lyù. Nhö ñaõ khaûo saùt ôû phaàn ñaàu thì ADC 0809 naøy coù moät soá ñieåm quan troïng sau ñaây: Khi chöa phaùt xung Start thì chaân EOC luoân ôû möùc cao, khi phaùt xung Start thì ADC baét ñaàu chuyeån ñoåi, trong quaù trình chuyeån ñoåi thì chaân EOC xuoáng möùc thaáp vaø khi chuyeån ñoåi xong thì noù seõ leân möùc cao, khi ñoù ta chæ caàn cho chaân OE xuoáng möùc thaáp thì Data seõ ñöôïc caøi ra ôû ngoõ ra (Data seõ caøi khi OE ôû möùc thaáp. Khi chaân naøy leân möùc cao trôû laïi thì ngoõ ra seõ ôû traïng thaùi toång trôû cao). Caùc IC söû duïng trong maïch naøy bao goàm: - 1 IC 74LS02 (coång NOR) - 1 IC 74LS32 (coång NOR). - 1 IC ADC 0809. - 2 IC TL084 (caàn 8 Op-Amp maéc theo kieåu ñeäm ñieän aùp cho 8 tín hieäu ANALOG töø maïch choïn keânh (hay maïch laáy maãu ñöa ñeán), ñöôïc duøng ñeå ñaûm baûo caùc tín hieäu ANALOG ñöa vaøo ADC khoâng bò suy giaûm). - 1 IC 74LS125 coù ngoõ ra 3 tranïg thaùi, ñöôïc duøng ñeå ñoïc tín hieäu EOC cuûa ADC… - 1 thaïch anh 1MHZ, 1 IC 74LS04 (coång NOT) vaø 1 IC ñeám TC4040 ñeå taïo xung Clock. ADC0809 coù 3 chaân A, B, C duøng ñeå giaûi maõ vieäc choïn keânh cho 8 ñaàu vaøo cuûa ADC (Töø chaân Vin 1 ñeán Vin 8, töông öùng vôùi 8 ñöôøng ANALOG ñöa vaøo töø maïch choïn keânh), ñeå giaûi maõ cho caùc chaân naøy ta söû duïng caùc bit töø D3 ñeán D5 töông öùng vôùi caùc phaân töø Q4 ñeán Q6 cuûa IC 74LS373 ôû maïch choïn keânh ANALOG. Sô ñoà giaûi maõ vieäc choïn keânh toång quaùt nhö sau: D5 D4 D3 4051 ôû maïch choïn keânh ñöôïc choïn Keânh ñöôïc choïn cuûa ADC 0809 0 0 0 4051 - 1 In1 0 0 1 4051 - 2 In2 0 1 0 4051 - 3 In3 0 1 1 4051 - 4 In4 1 0 0 4051 - 5 In5 1 0 1 4051 - 6 In6 1 1 0 4051 - 7 In7 1 1 1 4051 - 8 In8 Ñeå choïn töøng keânh trong moät IC 4051 thì xin xem laïi phaàn Sô ñoà maïch choïn keânh töông töï. Trong maïch naøy ñòa chæ 301H (hay 309H) ñöôïc duøng ñeå kích xung Start cho ADC (Khi noù keát hôïp vôùi xung IOW) vaø ñöôïc duøng ñeå ñoïc Data ñeå ñöa vaøo maùy tính ADC ñaõ chuyeån ñoåi xong (Khi noù keát hôïp vôùi chaân IOR). Ñeå ñoïc traïng thaùi cuûa chaân EOC thì ta söû duïng IC 74LS126 vôùi tín hieäu cho pheùp ñoïc seõ thoâng qua chaân IOR vaø ñòa chæ 302H (hay 30AH), tín hieäu ôû ñaàu ra seõ ñöôïc gaùn vaøo bit D7 thoâng qua maïch Ñeäm vaø Giaûi Maõ (Module 1). Xung Clock ñeå cung caáp cho ADC ñöôïc söû duïng ôû ñaây laø thaïch anh 1 Mhz, nhö trình baøy ôû phaàn treân thì xung Clock caàn phaûi coù taàn soá laø 500 Khz, do ñoù Xung töø thaïch anh seõ ñöôïc ñöa qua IC TC4040 ñeå chia 2, xung ra ôû ñaây seõ coù taàn soá laø 500KHz (Ngoaøi ra, ta coù theå laáy xung laáy maãu ôû ñaây sau khi ñaõ ñöôïc chia 4). Data sau khi ñaõ ñöôïc chuyeån ñoåi xong seõ ñöôïc ñoïc vaøo maùy tính thoâng qua maïch Ñeäm vaø Giaûi Maõ. (Module 1) Nhö vaäy, em ñaõ giôùi thieäu xong maïch nhaän caùc tín hieäu ANALOG, caùc thao taùc ñeå nhaän caùc tín hieäu ANALOG naøy phaûi tuaân theo trình töï sau: Choïn keânh nhaän ANALOG baèng caùch xuaát tin hieäu choïn D0 ¸ D5 ra oâ nhôù 300H hay 30AH. Phaûi taïo tính hieäu laáy maãu. Phaùt xung Start (taïi ñòa chæ 301H hay 309H). Kieåm tra xem ADC ñaõ chuyeån ñoåi xong chöa (ñoïc bit D7 taïi ñòa chæ 302H hay 30AH). Neáu bit D7 leân möùc [1] (quaù trình chuyeån ñoåi ñaõ thöïc hieän xong) thì ñoïc tín hieäu ñaõ ñöôïc chuyeån ñoåi vaøo oâ nhôù 301H hay 309H. Phaân tích döõ lieäu ñoïc vaøo vaø xöû lyù chuùng. Module xuaát tín hieäu Analog (module 3) : Trong caùc heä thoáng vi xöû lyù thì vaán ñeà xuaát tín hieäu ñieàu khieån döôùi daïng ANALOG laø caàn thieát. Sô ñoà khoái ñeå xuaát caùc tín hieäu ANALOG coù daïng nhö sau: Choïn keânh xuaát Analog Caøi tín hieäu digital ôû ngoõ vaøo DAC Ñeäm vaø giaûi maõ DAC Tín hieäu : Analog Trong ñoù khoái DAC laø khoái laøm nhieäm vuï chính trong vieäc chuyeån ñoåi tín hieäu Digital sang tín hieäu Analog. Hieän nay, coù raát nhieàu IC chuyeån ñoåi DAC, tuy nhieân söû duïng khaù phoå bieán nhaát laø DAC coù ñoä chính xaùc 8, 7 hay 6 bit chaúng haïn nhö laø DAC0808, DAC0807, DAC0806 laø caùc DAC chuyeån ñoåi 8 bit Digital sang Analog. Trong ñeà taøi naøy do em söû duïng loaïi DAC 0806 neân em seõ trình baøy sô löôïc veà noù, caùc DAC khaùc xin xem theâm saùch “Tra Cöùu IC Nhaät Baûn – taäp II”. 3.1 Giôùi thieäu veà DAC 0806 : DAC 0806 laø boä chuyeån ñoåi Digital sang Analog duøng ñeå chuyeån ñoåi 8 bit Digital sang ANALOG, coù khaû naêng gheùp noái ñöôïc vôùi maùy tính. a. DAC 0806 coù caùc ñaëc ñieåm sau ñaây: + Khaù chính xaùc : Sai soá ±0.19%(max). + Doøng caân baèng ñaày thang :±1 LSB (chuaån). + Chæ duøng coù 6 bit. + Thôøi gian laéng nhanh 150ns (chuaån). + Ngoõ vaøo khoâng ñaûo, giao tieáp ñöôïc vôùi TTL vaø CMOS. + Ñoä doác xung ñaùp 8 mA/ms. + Taàm ñieän aùp nguoàn : ±4,5 V ñeán ±18 V. + Coâng suaát tieâu thuï : 33mW (±5V). b. Caùc giaù trò danh ñònh: - Ñieän aùp nguoàn: Vcc : +18Vdc Vee : -18Vdc. - Aùp ngoõ vaøo Digital : V5 – V12 : -10 Vdc ¸ +18 Vdc. - Aùp ngoõ ra Vo : -11 Vdc ¸ +18 Vdc. - Doøng chuaån I14 : 5 mA. - Aùp chuaån ngoõ ra khueách ñaïi (V14, V15) : Vcc, Vee. - P tieâu taùn (theo voû) : 1000 mW. 3.2 Giao tieáp DAC 0806 vôùi maùy tính: Nhö ta ñaõ bieát thì tröôùc khi xuaát ra tín hieäu ANALOG thì ta phaûi xuaát ra caùc tín hieäu DIGITAL ñöôïc caøi ôû ngaõ ra, maïch naøy hoaøn toaøn gioáng nhö maïch Xuaát tín hieäu DIGITAL (Xin xem laïi maïch xuaát tín hieäu DIGITAL), sau ñoù cöù laáy 8 bit töông öùng naøy ñöa vaøo caùc chaân töø A1 ñeán A8 cuûa DAC 0806. Ngaõ ra cuûa DAC 0806 laø cuûa tín hieäu doøng cho neân caàn phaûi qua moät maïch chuyeån thaønh ñieän aùp (duøng TL084), tín hieäu ñieän aùp ôû ñaây coù giaù trò nhö sau: ) + 256 A2 A48 4 2 A1 ( 10V = V0 … + + Nhö vaäy ñieän aùp ra ôû ñaây coù giaù trò töø 0 ñeán 10V töông öùng vôùi caùc bit xuaát ra töø 0 ñeán 255. Do ñoù neáu nhö maïch taïo xung kích coù giaù trò daûi ñieän aùp thaáp hôn thì ta chæ caàn ñöa qua moät caàu phaân aùp laø ñuû. Hieän taïi, thì maïch xuaát ra caùc tín hieäu Digital coù caøi ôû ngaõ ra ñeå ñöa vaøo DAC thì em vaãn söû duïng maïch xuaát Digital treân nhöng chæ söû duïng 16 bit ñaàu coøn caùc bit coøn laïi seõ ñöôïc duøng vaøo caùc ñieàu khieån khaùc. Nhö vaäy em ñaõ giôùi thieäu sô löôïc veà caùc maïch phaàn cöùng chuû yeáu cuûa caùc Card giao tieáp naøy, caùc ñòa chæ ñaõ ñöôïc söû duïng cho caùc Card naøy nhö sau: Ñòa chæ ( Hex) Maïch söû duïng Nhieäm vuï 300 Maïch nhaän tín hieäu Analog 300H : Choïn keânh nhaän Analog 301H : Kích xung Start vaø ñoïc Data 302H : Ñoïc traïng thaùi chaân EOC 301 302 303 304 305 Maïch nhaän tín hieäu Digital 305H : Choïn keânh vaø nhaän tín hieäu 306 307 Maïch xuaát tín hieäu Digital 306H : Choïn keânh xuaát tín hieäu 307H : Xuaát tín hieäu Digital 308 Duøng laøm ñòa chæ döï bò cuûa maïch nhaän tín hieäu Analog 309 30A 30B 30C 30D Duøng laøm ñòa chæ döï bò cuûa maïch nhaän tín hieäu Digital 30E Duøng laøm ñòa chæ döï bò cuûa maïch xuaát tín hieäu Digital 30F 4. Maïch nhaän tín hieäu digital (module 4): Ñeå ñaùp öùng ñöôïc nhu caàu ñieàu khieån ñöôïc nhieàu ñoái töôïng thì maïch nhaän caùc tín hieäu DIGITAL naøy phaûi coù khaû naêng nhaän ñöôïc nhieàu keânh, caùc keânh naøy coù hai traïng thaùi nhaän vaøo laø möùc logic [0] töông öùng vôùi möùc 0Vdc vaø möùc Logic [1] töông öùng vôùi möùc 5Vdc (ñeå töông thích vôùi caùc tín hieäu cuûa maùy tính). Coù hai phöông phaùp ñeå thieát keá maïch naøy: Moät laø duøng IC 8255, hai laø duøng caùc IC caøi bình thöôøng ôû ngoõ ra. Trong hai phöông phaùp treân thì phöông phaùp thöù hai laø hieäu quaû hôn vì khi duøng 8255 thì noù coù lôïi ñieåm laø ñôn giaûn phaàn cöùng ñeå thieát keá, tuy nhieân khaû naêng môû roäng seõ khoù khaên (moãi con 8255 coù khaû naêng truy xuaát ñöôïc 3 Port töông öùng vôùi 24 keânh) vaø giaù thaønh laïi cao khoaûng gaáp 8 laàn so vôùi IC caøi bình thöôøng. Do ñoù, chuùng em quyeát ñònh choïn phöông aùn thöù hai ñeå thieát Module nhaän caùc tín hieäu DIGITAL naøy, ñoù laø phöông aùn duøng caùc IC caøi bình thuôøng. Trong maïch naøy chuùng em söû duïng caùc con IC thoâng duïng sau ñaây: - 1 con IC 74LS138. - 1 con IC 74LS02 (coång NOR ) - 1 con IC ñeäm vaø caøi ngoõ ra 74LS373 - ._.y1+H_SIZE/2+1); line(x1+H_SIZE,y1,x1+H_SIZE,y1+H_SIZE); rectangle(x1,y1,x2,y2); setcolor(maucu); } void Trang_bia() { setfillstyle(SOLID_FILL, CYAN); NutNoi(6,46,632,452,3,4); rectangle(2,43,640-4,480-3); rectangle(5,46,640-7,480-6); setcolor(YELLOW); outtextxy(180,54," BO GIAO DUC VA DAO TAO"); outtextxy(180,64," TRUONG DAI HOC SU PHAM KY THUAT"); outtextxy(180,84," KHOA DIEN - BO MON DIEN TU "); outtextxy(180,104," ---oOo---"); outtextxy(55,127,"LUAN VAN TOT NGHIEP"); outtextxy(54,170,"DE TAI: "); settextstyle(DEFAULT_FONT,HORIZ_DIR,2); setcolor(BLACK); outtextxy(13,170," THIET KE VA THI CONG CARD "); outtextxy(13,203," GIAO TIEP MAY TINH UNG DUNG "); outtextxy(13,236," DIEU KHIEN BO NGUON"); setcolor(WHITE); outtextxy(10,165," THIET KE VA THI CONG CARD "); outtextxy(10,198," GIAO TIEP MAY TINH UNG DUNG "); outtextxy(10,231," DIEU KHIEN BO NGUON"); setcolor(BLACK); outtextxy(358,300,"Le Viet Phu"); outtextxy(358,330,"Nguyen Lam Vu"); outtextxy(358,360,"Nguyen Minh Tuan"); setcolor(WHITE); outtextxy(355,295,"Le Viet Phu"); outtextxy(355,325,"Nguyen Lam Vu"); outtextxy(355,355,"Nguyen Minh Tuan"); setcolor(YELLOW); settextstyle(DEFAULT_FONT,0,1); outtextxy(130,302," GIAO VIEN HUONG DAN:"); outtextxy(130,330," SINH VIEN THUC HIEN:"); outtextxy(130,385,"TP HO CHI MINH - THANG 3 - NAM 2000"); } void Gioi_Thieu() { int Maxx=getmaxx(); int Maxy=getmaxy(); rectangle(0,0,Maxx,Maxy); Window(0,0,Maxx,Maxy,"CHUONG TRINH DIEU KHIEN BO NGUON "); Trang_bia(); NutNoi(6,455,634,475,3,3); setcolor(YELLOW); outtextxy(170,462,"Hay nhan phim bat ky de bat dau..."); Demo(); // Haøm chaïy con meøo getch(); } void Trang_Help() { setfillstyle(SOLID_FILL, CYAN); NutNoi(6,23,632,452,3,3); rectangle(2,20,640-4,480-3); rectangle(5,23,640-7,480-6); setcolor(14); outtextxy(20,45," 1. Cac gia tri dien ap chuan: "); setcolor(15); outtextxy(10,63,"- Dung phim ® hay ¬ de di chuyen khung sang toi gia tri muon xuat va an Enter."); outtextxy(10,81,"- Dung chuot tro vao gia tri muon xuat va bam nut trai chuot. "); setcolor(14); outtextxy(20,99," 2. Cac gia tri dien ap le: "); setcolor(15); outtextxy(10,117,"- Dung chuot tro vao 2 nut tam giac va bam nut trai chuot cho den khi dat gia"); outtextxy(10,135,"tri muon xuat. Sau do dung chuot tro vao nut GIA TRI va bam nut trai chuot."); setcolor(14); outtextxy(20,153," 3. Cac nut dang song: "); setcolor(15); outtextxy(20,171," a. Dang song 1 (nut thu 6): la dang song vuong, voi muc [1] = DIEN AP MAX,"); outtextxy(10,189,"thoi gian o muc [1] = thoi gian o muc [0] = TOC DO "); outtextxy(20,207," b. Dang song 2 (nut thu 4): la dang song nat thang, voi dien ap tang dan:"); outtextxy(10,225,"tu 0V ö DIEN AP MAX, moi lan tang mot BUOC DIEN AP, thoi gian tang = TOC DO."); outtextxy(20,243," c. Dang song 3 (nut thu 5): la dang song nat thang, voi dien ap giam dan:"); outtextxy(10,261,"tu DIEN AP MAX ö 0V, moi lan giam mot BUOC DIEN AP, thoi gian giam = TOC DO."); outtextxy(20,279," d. Dang song 4 (nut thu 2): la su ket hop cua dang song 2 va 3."); outtextxy(20,297," e. Dang song 5 (nut thu 1): giong dang song 2 nhung duoc lap lai nhieu lan."); outtextxy(20,315," f. Dang song 6 (nut thu 3): giong dang song 3 nhung duoc lap lai nhieu lan."); setcolor(14); outtextxy(20,333," 4. Chuc nang cac nut khac: "); setcolor(15); outtextxy(10,351,"- Nut STOP: lam dung cua cac dang song 1,4,5,6 va dat dien ap = 0V. "); outtextxy(10,369,"- Nut TRO GIUP: la phan huong dan su dung chuong trinh."); outtextxy(10,387,"- Nut THOAT: de thoat khoi chuong trinh. "); outtextxy(10,405,"- Ngoai ra chung ta co the thoat khoi chuong trinh bang nut hinh vuong o goc "); outtextxy(10,423,"trai tren dinh cua man hinh, hay phim ESC tren ban phim. "); } void Help() { int Maxx=getmaxx(); int Maxy=getmaxy(); rectangle(0,0,Maxx,Maxy); Window(0,0,Maxx,Maxy," HUONG DAN SU DUNG CHUONG TRINH "); Trang_Help(); NutNoi(6,455,634,475,3,3); setcolor(YELLOW); outtextxy(20,462," Hay nhan phim bat ky de tro lai phan dieu khien ..."); getch(); } void SetMouseRange(int x1,int y1,int x2,int y2) // ñaët vuøng di chuyeån cho chuoät { _AX = 0x07; _CX = x1; _DX = y1; geninterrupt(INT_MOUSE); _AX = 0x08; _CX = x2; _DX = y2; geninterrupt(INT_MOUSE); } int InitMouse() // Khôûi ñoäng chuoät { int ax; _AX = 0; geninterrupt(INT_MOUSE); ax = _AX; if (ax == 0) return FALSE; SetMouseRange(0,0,MaxX,MaxY); return TRUE; } void ShowMouse(void) // Hieån thò chuoät { _AX = 1; geninterrupt(INT_MOUSE); } void HideMouse(void) // Daáu chuoät { _AX = 2; geninterrupt(INT_MOUSE); } void MouseRead(LPEVENT lpEvent) // Traû veà bieán coá nhaän ñöôïc töø chuoät : Nuùt traùi hay phaûi ñöôïc baám { int bx,cx,dx; _AX = 3; geninterrupt(INT_MOUSE); bx = _BX; lpEvent->Msg = bx; lpEvent->Posx = _CX; lpEvent->Posy = _DX; } void ResetEvent(LPEVENT lpEvent) // ñaët laïi bieán coá chuoät { lpEvent->Msg = 0; lpEvent->Posx = lpEvent->Posy = 0; } EVENT PrevEvent, CurEvent; // Bieán coá tröôùc , Bieán coá hieän haønh. LPEVENT GetEvent(void) // Haøm laáy bieán coá chuoät { ResetEvent(&CurEvent); MouseRead(&CurEvent); CurEvent.Posx = CurEvent.Posx; CurEvent.Posy = CurEvent.Posy; // xeùt traïng thaùi chuoät coù thay ñoåi hay khoâng if((CurEvent.Posx!=PrevEvent.Posx)&& (CurEvent.Posy!=PrevEvent.Posy)) CurEvent.Msg |= M_CHANGE; PrevEvent = CurEvent; return (&CurEvent); } void Release(int Msg) // traû laïi traïng thaùi ( vò trí ) cuûa chuoät sau khi daáu. { while(GetEvent()->Msg & Msg); } int GetKey(void) { int ch; ch = getch(); if (ch == 0) ch = getch() | 0x80; return ch; } void Nut_Chim(int ax1,int ay1,int ax2,int ay2,int color) { my_bar(ax1,ay1,ax2,ay2,color); setcolor(7); for (int i=1;i<3;i++) { line(ax1+i+1,ay1+i,ax2-i,ay1+i); line(ax1+i,ay1+i+1,ax1+i,ay2-i); } setcolor(15); for (i=1;i<3;i++) { line(ax1+i,ay2-i,ax2-i-1,ay2-i); line(ax2-i,ay1+i,ax2-i,ay2-i-1); } setcolor(0); rectangle(ax1,ay1,ax2,ay2); } int ChonTuMouse(int x,int y,int dai,int socot,int ax,int ay) { for (int i=0;i<socot;i++) { if ((ax>=(x+dai*i)*W_CHAR)&&(ax<=(x+6+dai*i)*W_CHAR)&& (ay>=(y-1)*W_CHAR)&&(ay<=(y+2)*W_CHAR) ) return i; } if ((ax>=80) &&(ax=160)&&(ay<=190)) return 11; if ((ax>=150)&&(ax=160)&&(ay<=190)) return 12; if ((ax>=450)&&(ax=310)&&(ay<=340)) return 13; if ((ax>=490)&&(ax=310)&&(ay<=340)) return 14; if ((ax>=450)&&(ax=360)&&(ay<=390)) return 15; if ((ax>=490)&&(ax=360)&&(ay<=390)) return 16; if ((ax>=450)&&(ax=410)&&(ay<=440)) return 17; if ((ax>=490)&&(ax=410)&&(ay<=440)) return 18; if ((ax>=355)&&(ax=310)&&(ay<=440)) return 19; if ((ax>= 25)&&(ax=310)&&(ay<=370)) return 20; if ((ax>=135)&&(ax=310)&&(ay<=370)) return 21; if ((ax>=245)&&(ax=310)&&(ay<=370)) return 22; if ((ax>= 25)&&(ax=380)&&(ay<=440)) return 23; if ((ax>=135)&&(ax=380)&&(ay<=440)) return 24; if ((ax>=245)&&(ax=380)&&(ay<=440)) return 25; if ((ax>=250)&&(ax=140)&&(ay<=190)) return 26; if ((ax>=550)&&(ax=455)&&(ay<=477)) return 27; if ((ax>= 00)&&(ax= 00)&&(ay<= 20)) return 28; if ((ax>=518)&&(ax= 85)&&(ay<=110)) return 29; if ((ax>=420)&&(ax=455)&&(ay<=477)) return 30; return -1; } void thuhep(char *Title) { int i,midx,midy; for (i=0;i<10;i++) { cleardevice(); Window(0+i*32,0+i*24,MaxX-i*32,MaxY-i*24,Title); delay(100); } } void doi(float so) { sprintf(chuoi,"%2.1f%s",so,"V"); } void doi_1(float so) { sprintf(chuoi,"%2.1f",so); } void inchuoi(char a[]) { settextstyle(DEFAULT_FONT,HORIZ_DIR,3); Nut_Chim(425,140,570,190,7); setcolor(14); outtextxy(445,155,a); settextstyle(0,0,1); } void inchuoi_1(char a[], int y1, int y2, int y3) { settextstyle(DEFAULT_FONT,HORIZ_DIR,2); Nut_Chim(550,y2,620,y3,7); setcolor(14); outtextxy(553,y1,a); settextstyle(0,0,1); } void doi_tt(string *mc,int x, int y,int &chon) // ñoåi traïng thaùi: töø nuùt noåi sang nuùt chìm, duøng cho caùc nuùt ñieän aùp chuaån. { int dai=7; doi(dienap); Nut_Chim((x+dai*chon)*W_CHAR,(y1)*W_CHAR,(x+6+dai*chon) *W_CHAR,(y+2)*W_CHAR,7); setcolor(14); rectangle((x+dai*chon)*W_CHAR+6,(y-1)*W_CHAR+6, (x+6+dai*chon)*W_CHAR-4,(y+2)*W_CHAR-4); outtextxy((x+dai*chon)*W_CHAR+3,y*W_CHAR+1,mc[chon]); inchuoi(chuoi); delay(200); NutNoi((x+dai*chon)*W_CHAR,(y-1)*W_CHAR, (x+6+dai*chon)*W_CHAR,(y+2)*W_CHAR,7,3); rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5, (x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5); outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]); } void doi_tt1( int x1, int y1,int x2, int y2 , int z, int poly[], int kieu) // ñoåi traïng thaùi: töø nuùt noåi sang nuùt chìm, duøng cho caùc nuùt daïng soùng. { if (kieu==1) { NutNoi(x1,y1,x2,y2,7,3); my_bar(x1+5,y1+5,x2-5,y2-5,9); setcolor(14); drawpoly(z,poly); } else { Nut_Chim(x1,y1,x2,y2,7); my_bar(x1+6,y1+6,x2-4,y2-4,9); setcolor(14); drawpoly(z,poly); } } void doi_tt2(int x1,int y1,int x2,int y2, int kieu) // duøng cho nuùt STOP. { if (kieu==1) NutNoi(x1,y1,x2,y2,7,3); else Nut_Chim(x1,y1,x2,y2,7); } void doi_tt3(int x1,int y1,int x2,int y2, int kieu) // duøng cho nuùt GIA TRI. { int poly7[]={265,165,325,165,325,160,335,170,325, 180,325,175,265,175,275,170,265,165}; int poly7_7[]={266,166,326,166,326,161,336,171,326, 181,326,176,266,176,276,171,266,166}; if (kieu==1) { NutNoi(x1,y1,x2,y2,7,3); drawpoly(9,poly7); setcolor(BLACK); setfillstyle(1,YELLOW); drawpoly(9,poly7); floodfill(300,168,BLACK); outtextxy(34*W_CHAR,8*H_SIZE+2,"GIA TRI"); } else { Nut_Chim(x1,y1,x2,y2,7); drawpoly(9,poly7_7); setcolor(BLACK); setfillstyle(1,YELLOW); drawpoly(9,poly7_7); floodfill(300,168,BLACK); outtextxy(34*W_CHAR+1,8*H_SIZE+3,"GIA TRI"); } } void NutTG1(int x,int y,int canh,int kieu) { int g=canh/2; // g=giöõa if (kieu==1) { int poly8[]={x+g-4,y+g-4,x+g+4,y+g-4,x+g, y+g+4,x+g-4,y+g-4}; NutNoi(x,y,x+canh,y+canh,7,3); setcolor(BLACK); setfillstyle(1,14); drawpoly(4,poly8); floodfill(x+g,y+g,BLACK); } else { int poly8[]={x+g-3,y+g-3,x+g+5,y+g-3,x+g+1, y+g+5,x+g-3,y+g-3}; Nut_Chim(x,y,x+canh,y+canh,7); setcolor(BLACK); setfillstyle(1,14); drawpoly(4,poly8); floodfill(x+g,y+g,BLACK); } } void NutTG2(int x,int y,int canh,int kieu) { int g=canh/2; // g=giöõa if (kieu==1) { int poly8[]={x+g,y+g-4,x+g+4,y+g+4,x+g-4, y+g+4,x+g,y+g-4}; NutNoi(x,y,x+canh,y+canh,7,3); setcolor(BLACK); setfillstyle(1,14); drawpoly(4,poly8); floodfill(x+g,y+g,BLACK); } else { int poly8[]={x+g+1,y+g-3,x+g+5,y+g+5,x+g-3, y+g+5,x+g+1,y+g-3}; Nut_Chim(x,y,x+canh,y+canh,7); setcolor(BLACK); setfillstyle(1,14); drawpoly(4,poly8); floodfill(x+g,y+g,BLACK); } } void menu(string *mc,int socot,int x,int y,int &chon) { int i,j,ch,dai=7; setcolor(0); for (i=0;i<socot;i++) { NutNoi((x+dai*i)*W_CHAR,(y-1)*W_CHAR, (x+6+dai*i)*W_CHAR,(y+2)*W_CHAR,7,3); setcolor(0); outtextxy((x+dai*i)*W_CHAR+2,y*W_CHAR,mc[i]); } setcolor(14); rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5, (x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5); outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]); int MouseChon=-1; do { ShowMouse(); lpEvent = GetEvent(); if (lpEvent->Msg==M_CHANGE) { MouseChon=ChonTuMouse(x,y,dai,socot, lpEvent->Posx,lpEvent->Posy); if ((MouseChon>=0) && (chon!=MouseChon)) { HideMouse(); NutNoi((x+dai*chon)*W_CHAR,(y-1)*W_CHAR, (x+6+dai*chon)*W_CHAR,(y+2)*W_CHAR,7,3); outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]); chon=MouseChon; setcolor(14); rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5, (x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5); outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]); } } if (lpEvent->Msg==M_LEFT) { MouseChon=ChonTuMouse(x,y,dai,socot, lpEvent->Posx,lpEvent->Posy); if (MouseChon>=0) { HideMouse(); Release(M_LEFT); chon=MouseChon; return; } } if (kbhit()) { HideMouse(); ch=getch(); if (ch==0) ch=getch(); switch (ch) { case 75: // phím ¬ { setcolor(7); rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5, (x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5); setcolor(0); outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]); if (chon==0) chon=socot-1; else chon=chon-1; setcolor(14); rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5, (x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5); outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]); break; } case 77: // phím ® { setcolor(7); rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5, (x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5); setcolor(0); outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]); if (chon==socot-1) chon=0; else chon=chon+1; setcolor(14); rectangle((x+dai*chon)*W_CHAR+5,(y-1)*W_CHAR+5, (x+6+dai*chon)*W_CHAR-5,(y+2)*W_CHAR-5); outtextxy((x+dai*chon)*W_CHAR+2,y*W_CHAR,mc[chon]); break; } } ShowMouse(); } } while ((ch!=27)&&(ch!=13)); if (ch==27) chon=31; } void Giaodien() { setviewport(0,0,MaxX,MaxY,1); Window(0,0,MaxX,MaxY,"LUAN VAN TOT NGHIEP _ KHOA : 1995 - 2000 _ LOP : 95KDD "); setcolor(0); line(0,2*H_SIZE+1,MaxX,2*H_SIZE+1); setcolor(7); rectangle(0,0,MaxX,MaxY); setcolor(14); outtextxy(1*W_CHAR+5,26*H_SIZE-7,"KHOA DIEN – DAI HOC SU PHAM KY THUAT "); NutNoi(10,50,630,120,7,4); settextstyle(DEFAULT_FONT,HORIZ_DIR,2); setcolor(0); outtextxy(65,66,"CHUONG TRINH DIEU KHIEN BO NGUON"); outtextxy(187,91,"(0 - 25.5V / 2A)"); setcolor(15); outtextxy(62,63,"CHUONG TRINH DIEU KHIEN BO NGUON"); setcolor(14); outtextxy(184,89,"(0 - 25.5V / 2A)"); settextstyle(0,0,1); NutNoi(550,455,630,477,7,4); // nut TRÔÏ GIUÙP outtextxy(560,463,"TRO GIUP"); NutNoi(420,455,520,477,7,4); // nut GIÔÙI THIEÄU outtextxy(430,463,"GIOI THIEU"); NutNoi(10,130,630,200,7,4); NutNoi(10,210,630,280,7,4); NutNoi(10,290,630,450,7,4); NutNoi(518,85,570,110,7,3); // nut THOAÙT outtextxy(525,95,"THOAT"); NutNoi(25,310,125,370,7,3) ; my_bar(30,315,120,365,9) ; //1 NutNoi(135,310,235,370,7,3); my_bar(140,315,230,365,9); //2 NutNoi(245,310,345,370,7,3); my_bar(250,315,340,365,9); //3 NutNoi(25,380,125,440,7,3) ; my_bar(30,385,120,435,9) ; //4 NutNoi(135,380,235,440,7,3); my_bar(140,385,230,435,9); //5 NutNoi(245,380,345,440,7,3); my_bar(250,385,340,435,9); //6 NutNoi(355,310,435,440,7,3); int poly1[]={30,328,33,325,33,355,75,325,75,355, 117,325,117,355,120,352}; int poly2[]={140,355,180,325,220,355,230,350}; int poly3[]={250,352,253,355,253,325,295,355,295, 325,337,355,337,325,340,328}; int poly4[]={30,425,50,425,100,395,120,395}; int poly5[]={140,395,160,395,210,425,230,425}; int poly6[]={250,425,258,425,258,395,273,395,273, 425,288,425,288,395,303,395,303,425, 318,425,318,395,333,395,333,425,340,425}; setcolor(14); drawpoly(8,poly1); // Veõ caùc nuùt daïng soùng drawpoly(4,poly2); drawpoly(8,poly3); drawpoly(4,poly4); drawpoly(4,poly5); drawpoly(14,poly6); // Heát caùc nuùt daïng soùng setcolor(BLACK); // baét ñaàu veõ nuùt STOP. setfillstyle(1,RED); circle(395,390,30); floodfill(395,390,BLACK); my_bar(372,382,417,398,15); // heát nuùt STOP. Nut_Chim(425,140,570,190,7); // nuùt chìm hieån thò soá ñieän aùp. NutNoi(250,140,350,190,7,3); // Veõ nuùt giaù trò int poly7[]={265,165,325,165,325,160,335,170, 325,180,325,175,265,175,275,170,265,165}; drawpoly(9,poly7); setcolor(BLACK); setfillstyle(1,YELLOW); drawpoly(9,poly7); floodfill(300,168,BLACK); outtextxy(34*W_CHAR,8*H_SIZE+2,"GIA TRI");// heát nuùt giaù trò NutTG1(80,160,30,1); NutTG2(150,160,30,1); outtextxy(8*W_CHAR+4,8*H_SIZE+2,"THAY DOI DIEN AP"); NutTG1(450,310,30,1); NutTG2(490,310,30,1); NutTG1(450,360,30,1); NutTG2(490,360,30,1); NutTG1(450,410,30,1); NutTG2(490,410,30,1); outtextxy(55*W_CHAR,17*H_SIZE-7,"DIEN AP MAX(V)"); outtextxy(55*W_CHAR,19*H_SIZE+5,"BUOC DIEN AP(V)"); outtextxy(58*W_CHAR,22*H_SIZE+1,"TOC DO(S)"); Nut_Chim(550,310,620,340,7); // hieån thò bieân ñoä max Nut_Chim(550,360,620,390,7); // hieån thò böôùc ñieän aùp Nut_Chim(550,410,620,440,7); // hieån thò toác ñoä rectangle(371 ,318 ,417 ,335 ); outtextxy(47*W_CHAR+3,18*H_SIZE,"STOP"); outtextxy(31*W_CHAR,12*H_SIZE+5,"CAC DIEN AP CHUAN "); outtextxy(16*W_CHAR+6,17*H_SIZE-7,"CAC DANG SONG"); outtextxy(7*W_CHAR,15*H_SIZE-2,"0V "); outtextxy(69*W_CHAR,15*H_SIZE-2,"25.5V "); } void Doi_tt_Nut_Stop() { doi_tt2(355,310,435,440,0); setcolor(BLACK); setfillstyle(1,RED); circle(396,391,30); floodfill(396,391,BLACK); my_bar(373,383,418,399,15); rectangle(372,319,418,336); outtextxy(47*W_CHAR+4,18*H_SIZE+1,"STOP"); delay(200); doi_tt2(355,310,435,440,1); setcolor(BLACK); setfillstyle(1,RED); circle(395,390,30); floodfill(395,390,BLACK); my_bar(372,382,417,398,15); rectangle(371,318,417,335); outtextxy(47*W_CHAR+3,18*H_SIZE,"STOP"); } void main(void) { int tam; int chon=0; if (!InitMouse()) { printf("Chua cai dat Mouse driver!!! Chuong trinh ngung"); return; } InitGraph(); Gioi_Thieu(); Giaodien(); ShowMouse(); outp(0x306,0x00); outp(ADD,0x00); sound(3500); delay(50); nosound(); do { doi(dienap); inchuoi(chuoi); doi_1(dienapmax); inchuoi_1(chuoi,317,310,340); doi_1(buocdienap); inchuoi_1(chuoi,367,360,390); doi_1(tocdo); inchuoi_1(chuoi,417,410,440); ShowMouse(); menu(cn,10,5,31,chon); sound(3500); delay(50); nosound(); switch (chon) { case 0: // nuùt 0V { dienap=0; outp(ADD,0); doi_tt(cn,5,31,chon); HideMouse(); break; } case 1: // nuùt 1.5V { int t1,ss1,s1; dienap=1.5; outp(ADD,15); doi_tt(cn,5,31,chon); HideMouse(); t1=inp(ADD); while (t1<15) { ss1=15-t1; s1=15+ss1; outp(ADD,s1); t1=inp(ADD); } break; } case 2: // nuùt 3V { int t2,ss2,s2; dienap=3; outp(ADD,30); doi_tt(cn,5,31,chon); HideMouse(); t2=inp(ADD); while (t2<30) { ss2=30-t2; s2=30+ss2; outp(ADD,s2); t2=inp(ADD); } break; } case 3: // nuùt 5V { int t3,ss3,s3; dienap=5; outp(ADD,50); doi_tt(cn,5,31,chon); HideMouse(); t3=inp(ADD); while (t3<50) { ss3=50-t3; s3=50+ss3; outp(ADD,s3); t3=inp(ADD); } break; } case 4: // nuùt 9V { int t4,ss4,s4; dienap=9; outp(ADD,90); doi_tt(cn,5,31,chon); HideMouse(); t4=inp(ADD); while (t4<90) { ss4=90-t4; s4=90+ss4; outp(ADD,s4); t4=inp(ADD); } break; } case 5: // nuùt 12V { int t5,ss5,s5; dienap=12; outp(ADD,120); doi_tt(cn,5,31,chon); HideMouse(); t5=inp(ADD); while (t5<120) { ss5=120-t5; s5=120+ss5; outp(ADD,s5); t5=inp(ADD); } break; } case 6: // nuùt 15V { int t6,ss6,s6; dienap=15; outp(ADD,150); doi_tt(cn,5,31,chon); HideMouse(); t6=inp(ADD); while (t6<150) { ss6=150-t6; s6=150+ss6; outp(ADD,s6); t6=inp(ADD); } break; } case 7: // nuùt 18V { int t7,ss7,s7; dienap=18; outp(ADD,180); doi_tt(cn,5,31,chon); HideMouse(); t7=inp(ADD); while (t7<180) { ss7=180-t7; s7=180+ss7; outp(ADD,s7); t7=inp(ADD); } break; } case 8: // nuùt 24V { int t8,ss8,s8; dienap=24; outp(ADD,240); doi_tt(cn,5,31,chon); HideMouse(); t8=inp(ADD); while (t8<240) { ss8=240-t8; s8=240+ss8; outp(ADD,s8); t8=inp(ADD); } break; } case 9: // nuùt 25.5V { int t9,ss9,s9; dienap=25.5; outp(ADD,255); doi_tt(cn,5,31,chon); HideMouse(); t9=inp(ADD); while (t9<255) { ss9=255-t9; s9=255+ss9; outp(ADD,s9); t9=inp(ADD); } break; } case 11: // nuùt giaûm ñieän aùp { sound(3500); delay(10); nosound(); NutTG1(80,160,30,0); delay(100); NutTG1(80,160,30,1); if (dienap>0) { dienap=dienap-0.1; doi(dienap); inchuoi(chuoi); } if (dienap<=0) { dienap=0; doi(dienap); inchuoi(chuoi); } break; } case 12: // nuùt taêng ñieän aùp { sound(3500); delay(50); nosound(); NutTG2(150,160,30,0); delay(100); NutTG2(150,160,30,1); if (dienap<25.5) { dienap=dienap+0.1; doi(dienap); inchuoi(chuoi); } if (dienap>=25.5) { dienap=25.5; doi(dienap); inchuoi(chuoi); } break; } case 13: // nuùt giaûm ñieän aùp max { sound(3500); delay(10); nosound(); NutTG1(450,310,30,0); delay(100); NutTG1(450,310,30,1); if (dienapmax>buocdienap) { dienapmax=dienapmax-0.1; doi_1(dienapmax); inchuoi_1(chuoi,317,310,340); } if (dienapmax<=buocdienap) { dienapmax=buocdienap; doi_1(dienapmax); inchuoi_1(chuoi,317,310,340); } break; } case 14: // nuùt taêng ñieän aùp max { sound(3500); delay(10); nosound(); NutTG2(490,310,30,0); delay(100); NutTG2(490,310,30,1); if (dienapmax<25.5) { dienapmax=dienapmax+0.1; doi_1(dienapmax); inchuoi_1(chuoi,317,310,340); } if (dienapmax>=25.5) { dienapmax=25.5; doi_1(dienapmax); inchuoi_1(chuoi,317,310,340); } break; } case 15: // nuùt giaûm böôùc ñieän aùp { sound(3500); delay(10); nosound(); NutTG1(450,360,30,0); delay(100); NutTG1(450,360,30,1); if (buocdienap>0.1) { buocdienap=buocdienap-0.1; doi_1(buocdienap); inchuoi_1(chuoi,367,360,390); } if (buocdienap<=0.1) { buocdienap=0.1; doi_1(buocdienap); inchuoi_1(chuoi,367,360,390); } break; } case 16: // nuùt taêng böôùc ñieän aùp { sound(3500); delay(10); nosound(); NutTG2(490,360,30,0); delay(100); NutTG2(490,360,30,1); if (buocdienap<2.5) { if ((dienapmax<2.5)&&(dienapmax==buocdienap)) { dienapmax=dienapmax+0.1; doi_1(dienapmax); inchuoi_1(chuoi,317,310,340); } buocdienap=buocdienap+0.1; doi_1(buocdienap); inchuoi_1(chuoi,367,360,390); } if (buocdienap>=2.5) { buocdienap=2.5; doi_1(buocdienap); inchuoi_1(chuoi,367,360,390); dienapmax=2.5; doi_1(dienapmax); inchuoi_1(chuoi,317,310,340); } break; } case 17: // nuùt giaûm toác ñoä { sound(3500); delay(10); nosound(); NutTG1(450,410,30,0); delay(100); NutTG1(450,410,30,1); if (tocdo>0.5) { tocdo=tocdo-0.1; doi_1(tocdo); inchuoi_1(chuoi,417,410,440); } if (tocdo<=0.5) { tocdo=0.5; doi_1(tocdo); inchuoi_1(chuoi,417,410,440); } break; } case 18: // nuùt taêng toác ñoä { sound(3500); delay(10); nosound(); NutTG2(490,410,30,0); delay(100); NutTG2(490,410,30,1); if (tocdo<25) { tocdo=tocdo+0.1; doi_1(tocdo); inchuoi_1(chuoi,417,410,440); } else tocdo=25; break; } case 19: // nuùt STOP { sound(3500); delay(50); nosound(); Doi_tt_Nut_Stop(); dienap=0; outp(ADD,0); doi(dienap); inchuoi(chuoi); break; } case 20: // nuùt daïng soùng 1 { int temp1,ax,ay,stop=0; long int dem=0; int poly1[]={30,328,33,325,33,355,75,325, 75,355,117,325,117,355,120,352}; int poly11[]={31,329,34,326,34,356,76,326, 76,356,118,326,118,356,121,353}; doi_tt1(25,310,125,370,8,poly11,0); delay(200); doi_tt1(25,310,125,370,8,poly1,1); ShowMouse(); while( !stop ) { lpEvent=GetEvent(); if (lpEvent->Msg==M_LEFT) { ax=lpEvent->Posx;ay=lpEvent->Posy; Release(M_LEFT); if ((ax>=355)&&(ax=310)&&(ay<=440)) //Toa do nut Stop { stop=1; HideMouse(); Doi_tt_Nut_Stop(); ShowMouse(); } } dienap=0; while(dienap<dienapmax) { if (dem<=tocdo*2500000) { dem++; } else { dem=0; dienap=dienap+buocdienap; doi(dienap); inchuoi(chuoi); tem1=dienap*10; outp(ADD,tem1); } } } break; } case 21: // nuùt daïng soùng 2 { long int dem=0; int ax,ay,temp21,temp22,stop=0; int poly2[]={140,355,180,325,220,355,230,350}; int poly22[]={141,356,181,326,221,356,231,351}; doi_tt1(135,310,235,370,4,poly22,0); delay(200); doi_tt1(135,310,235,370,4,poly2,1); dienap=0; doi(dienap); inchuoi(chuoi); outp(ADD,0); ShowMouse(); while(!stop) { lpEvent=GetEvent(); if (lpEvent->Msg==M_LEFT) { ax=lpEvent->Posx;ay=lpEvent->Posy; Release(M_LEFT); if ((ax>=355)&&(ax=310)&&(ay<=440)) //Toa do nut Stop { stop=1; HideMouse(); Doi_tt_Nut_Stop(); ShowMouse(); } } dienap=0; doi(dienap); inchuoi(chuoi); //outp(ADD,0); while (dienap<dienapmax) { if (dem<=tocdo*1700000) { dem++; } else { dem=0; dienap=dienap+buocdienap; if (dienap>=dienapmax) dienap=dienapmax; doi(dienap); inchuoi(chuoi); temp21=dienap*10; outp(ADD,temp21); } } dienap=dienapmax; doi(dienap); inchuoi(chuoi); temp5=dienap*10; outp(ADD,temp5); while (dienap > 0) { if (dem<=tocdo*1700000) { dem++; } else { dem=0; dienap=dienap-buocdienap; if (dienap<=0) dienap=0; doi(dienap); inchuoi(chuoi); temp22=dienap*10; outp(ADD,temp22); } } } break; } case 22: // nuùt daïng soùng 3 { long int dem=0; int temp3,ax,ay,stop=0; int poly3[]={250,352,253,355,253,325,295,355, 295,325,337,355,337,325,340,328}; int poly33[]={251,353,254,356,254,326,296,356, 296,326,338,356,338,326,341,329}; doi_tt1(245,310,345,370,8,poly33,0); delay(200); doi_tt1(245,310,345,370,8,poly3,1); ShowMouse(); while(!stop) { lpEvent=GetEvent(); if (lpEvent->Msg==M_LEFT) { ax=lpEvent->Posx;ay=lpEvent->Posy; Release(M_LEFT); if ((ax>=355)&&(ax=310)&&(ay<=440)) //Toa do nut Stop { stop=1; HideMouse(); Doi_tt_Nut_Stop(); ShowMouse(); } } dienap=dienapmax; doi(dienap); inchuoi(chuoi); temp3=dienap*10; outp(ADD,temp3); while (dienap>0) { if (dem<=tocdo*2500000) { dem++; } else { dem=0; dienap=dienap-buocdienap; doi(dienap); inchuoi(chuoi); temp3=dienap*10; outp(ADD,temp3); if (dienap<=0) { dienap=0; doi(dienap); inchuoi(chuoi); outp(ADD,0); } } } } break; } case 23: // nuùt daïng soùng 4 { long int dem=0; int temp4; int poly4[]={30,425,50,425,100,395,120,395}; int poly44[]={31,426,51,426,101,396,121,396}; doi_tt1(25,380,125,440,4,poly44,0); delay(200); doi_tt1(25,380,125,440,4,poly4,1); dienap=0; doi(dienap); inchuoi(chuoi); outp(ADD,0); while (dienap<dienapmax) { if (dem<=tocdo*1700000) { dem++; } else { dem=0; dienap=dienap+buocdienap; if (dienap>=dienapmax) dienap=dienapmax; doi(dienap); inchuoi(chuoi); temp4=dienap*10; outp(ADD,temp4); } } break; } case 24: // nuùt daïng soùng 5 { int temp5; long int dem=0; int poly5[]={140,395,160,395,210,425,230,425}; int poly55[]={141,396,161,396,211,426,231,426}; doi_tt1(135,380,235,440,4,poly55,0); delay(200); doi_tt1(135,380,235,440,4,poly5,1); dienap=dienapmax; doi(dienap); inchuoi(chuoi); temp5=dienap*10; outp(ADD,temp5); while (dienap > 0) { if (dem<=tocdo*1700000) { dem++; } else { dem=0; dienap=dienap-buocdienap; if (dienap<=0) dienap=0; doi(dienap); inchuoi(chuoi); temp5=dienap*10; outp(ADD,temp5); } } break; } case 25: // nuùt daïng soùng 6 { int temp6,ax,ay,stop=0; int flag=0; int poly6[]={250,425,258,425,258,395,273,395, 273,425,288,425,288,395,303,395,303,425, 318,425,318,395,333,395,333,425,340,425}; int poly66[]={251,426,259,426,259,396,274,396, 274,426,289,426,289,396,304,396,304,426, 319,426,319,396,334,396,334,426,341,426}; long int dem=0; doi_tt1(245,380,345,440,14,poly66,0); delay(200); doi_tt1(245,380,345,440,14,poly6,1); ShowMouse(); while(!stop) { lpEvent=GetEvent(); if (lpEvent->Msg==M_LEFT) { ax=lpEvent->Posx;ay=lpEvent->Posy; Release(M_LEFT); if ((ax>=355)&&(ax=310)&&(ay<=440)) //Toa do nut Stop { stop=1; HideMouse(); Doi_tt_Nut_Stop(); ShowMouse(); } } if (dem<=tocdo*170000) { dem++; } else { dem=0; flag=!flag; if (flag) { doi(dienapmax); inchuoi(chuoi); temp6=dienapmax*10; outp(ADD,temp6); } else { doi(0); inchuoi(chuoi); outp(ADD,0); } } } break; } case 26: // nuùt GIAÙ TRÒ { sound(3500); delay(10); nosound(); doi_tt3(250,140,350,190,0); delay(200); doi_tt3(250,140,350,190,1); tam=dienap*10; outp(ADD,tam); break; } case 27: // nuùt TRÔÏ GIUÙP { sound(3500); delay(10); nosound(); Help(); Giaodien(); break; } case 28: // nuùt Thoaùt treân goùc traùi maøn hình { sound(3500); delay(10); nosound(); thuhep("LUAN VAN TOT NGHIEP - KHOA : 1995 - 2000 - LOP : 95KDD "); closegraph(); return; } case 29: // Nuùt THOAÙT { sound(3500); delay(10); nosound(); thuhep("LUAN VAN TOT NGHIEP - KHOA : 1995 - 2000 - LOP : 95KDD "); closegraph(); return; } case 30: // Nuùt GIÔÙI THIEÄU { sound(3500); delay(10); nosound(); Gioi_Thieu(); Giaodien(); break; } case 31: // phím ESC { sound(3500); delay(10); nosound(); thuhep("LUAN VAN TOT NGHIEP - KHOA : 1995 - 2000 - LOP : 95KDD "); closegraph(); return; } } } while (1); } ._.

Các file đính kèm theo tài liệu này:

  • docDO60.DOC