Ứng dụng mạng vi xử lí điều khiển dây chuyền sản xuất

LỜI CẢM ƠN! Em xin chân thành cảm ơn quí thầy cô trong và ngoài Trường Đại Học Bách Khoa TP. Hồ Chí Minh đã truyền đạt cho em nhiều kiến thức quí báu trong suốt thời gian học tập. Em xin chân thành cảm ơn thầy Nguyễn Chí Nghĩa đã tận tình hướng dẫn,truyền đạt cho em nhiều kiến thức và kinh nghiệm thực tiễn trong quá trình thực hiện luận văn tốt nghiệp này. Xin cảm ơn gia đình và các bạn bè đã động viên, giúp đỡ trong suốt quá trình hoàn thành luận văn này.

doc73 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2139 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Ứng dụng mạng vi xử lí điều khiển dây chuyền sản xuất, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
u maïch phaùt vaø nhaän cuøng noái vaøo moät ñöôøng daây bus chung , moãi node ñeàu coù theå phaùt vaø nhaän data. RS485 ñaùp öùng caùc yeâu caàu naøy. Chuaån RS485 cho pheùp 32 maïch truyeàn vaø maïch nhaän cuøng noái vaøo ñöôøng daây bus ñôn (vôùi boä repeater töï ñoäng vaø caùc boä truyeàn / nhaän trôû khaùng cao, giôùi haïn naøy coù theå môû roäng leân ñeán haøng traêm node treân moät maïng). Beân caïnh ñoù , RS485 coøn coù theå chòu ñöôïc caùc xung ñoät data(data collision) vaø caùc ñieàu kieän loãi treân ñöôøng daây bus. Ñeå giaûi quyeát vaán ñeà xung ñoät data thöôøng xuaát hieän treân maïng multi-drop network , caùc ñôn vò phaàn cöùng( converters, repeaters , micro-processor controls ) ñöôïc thieát keá ñeå luoân duy trì ôû traïng thaùi nhaän cho ñeán khi chuùng ñaõ saün saøng truyeàn data. Moät node master seõ kích khôûi moät yeâu caàu truyeàn ñeán moät slave node baèng caùch ñònh ñòa chæ node ñoù. Phaàn cöùng phaùt hieän bit start cuûa kyù töï ñöôïc truyeàn vaø töï ñoäng cho pheùp boä truyeàn laøm vieäc. Sau khi moät kyù töï ñöôïc truyeàn , phaàn cöùng seõ trôû veà traïng thaùi nhaän sau moät vaøi micro giaây. Khi coù kyù töï môùi caàn göûi , boä truyeàn seõ töï ñoäng ñöôïc kích laïi. Nhö vaäy , moät slave node ñöôïc ñònh ñòa chæ coù theå ñaùp öùng ngay laäp töùc maø khoâng caàn thöïc hieän moät khoaûng delay daøi ñeå traùnh xung ñoät . Nhöõng öu ñieåm cuûa RS485 so vôùi RS232 : Chi phí thaáp . Boä truyeàn vaø boä nhaän thöôøng khoâng quaù ñaét vaø chæ ñoøi hoûi moät nguoàn ñôn +5V ( hoaëc thaáp hôn) ñeå taïo ra möùc aùp toái thieåu laø 1,5V taïi ngoõ ra vi sai. Ngöôïc laïi , ngoõ ra toái thieåu cuûa RS232 laø 5V caàn moät nguoàn cung caáp keùp hoaëc moät chip coù chi phí ñaùng keå ñeå taïo ra caùc nguoàn naøy. Khaû naêng noái maïng . Thay vì giôùi haïn ôû 2 ñôn vò , RS485 laø giao dieän coù theå cung caáp cho vieäc keát noái coù nhieàu boä truyeàn vaø nhaän .Vôùi boä nhaän coù trôû khaùng cao , RS485 coù theå cho keát noái leân ñeán 256 node. Ñöôøng daây keát noái daøi. Moät maïng RS485 coù theå daøi ñeán 4000 feet so vôùi RS232 coù giôùi haïn töø 50 ñeán 100 feet. Toác ñoä nhanh. RS485 coù theå cho toác ñoä leân ñeán 10 Megabits/giaây. IV. Full Duplex : Giao dieän RS485 ñöôïc thieát keá ñeå söû duïng trong heä thoáng coù nhieàu node , vôùi moät hoaëc nhieàu boä truyeàn hoaëc nhaän . Phaàn lôùn caùc keát noái RS485 ñeàu laø baùn song coâng , trong ñoù boä truyeàn vaø nhaän duøng chung moät ñöôøng tín hieäu. Tuy nhieân , ta cuõng coù theå duøng RS485 döôùi daïng song coâng , moãi höôùng truyeàn duøng moät ñöôøng tín hieäu rieâng. Ñaây laø giaûi phaùp ñôn giaûn khi ta muoán taïo moät keát noái daøi , song coâng giöõa caùc microcontrollers. Caùc chip duøng cho RS485 cuõng nhoû hôn , ñôn giaûn hôn vaø reû hôn so vôùi RS232. Thuaän lôïi cuûa caùch keát noái naøy laø noù tieát kieäm thôøi gian cho caùc slave ( boä nhaän) vì chuùng khoâng phaûi ñoïc tín hieäu traû lôøi ( master) töø caùc slave ñöôïc hoûi. Tuy nhieân , neáu duøng ñöôøng daây daøi , chi phí seõ taêng ñaùng keå. V. Half Duplex : Nhieàu lieân keát RS485 ôû daïng baùn song coâng , vôùi nhieàu boä nhaän vaø truyeàn duøng chung moät ñöôøng tín hieäu. Khi moät lieân keát coù 3 node hoaëc nhieàu hôn, ta chuù yù raèng chæ coù moät ñöôøng tín hieäu vaø chæ coù moät node ñöôïc truyeàn taïi moãi thôøi ñieåm. Do ñoù caàn baûo ñaûm ñöôøng truyeàn ñang ôû traïng thaùi free khi moät node muoán truyeàn. * Maïch baûo veä beân trong : Trong keát noái baùn song coâng , chæ coù moät boä truyeàn ñöôïc cho pheùp taïi moät thôøi ñieåm nhöng cho duø ñöôïc thieát keá caån thaän ñeán ñaâu , vaãn coù theå coù tröôøng hôïp taïi moät thôøi ñieåm naøo ñoù hai hoaëc nhieàu boä truyeàn ñeàu ñöôïc enable cuøng moät luùc. Khi ñieàu naøy xaûy ra, neáu caùc driver keùo ñöôøng daây theo caùc traïng thaùi ngöôïc nhau , tín hieäu treân ñöôøng daây seõ ôû möùc logic khoâng xaùc ñònh , hieän töôïng naøy goïi laø söï tranh chaáp treân ñöôøng daây (line contention) Taát caû caùc chip RS485 ñeàu coù giôùi haïn doøng (curent limiting) vaø töï ñoäng shutdown do quaù nhieät (thermal shutdown) ñeå baûo veä chip neáu coù nhieàu hôn moät boä nhaän ñöôïc cho pheùp cuøng luùc. Giôùi haïn doøng haïn cheá doøng ra cuûa boä truyeàn. Theo chuaån TIA/EIA-485 möùc giôùi haïn naøy phaûi döôùi 250mA. Neáu ngoõ ra output tieáp tuïc ñöa ra doøng cao , nhieät ñoä cuûa chip seõ taêng leân vaø cuoái cuøng maïch baûo veä quaù nhieät beân trong chip seõ chuyeån ngoõ ra sang traïng thaùi trôû khaùng cao( high-impedance state). Ñieàu naøy cuõng ñoàng nghóa vôùi vieäc ngoõ ra seõ khoâng theå söû duïng cho tôùi khi noù ñöôïc haï nhieät , nhöng baûo ñaûm linh kieän seõ khoâng bò hö. VI. Caùc Phöông Phaùp Truyeàn Thoâng Ñôn coâng ( Simplex Communication) : truyeàn thoâng moät chieàu. Döõ lieäu chæ coù theå truyeàn ñi theo moät chieàu töø thieát bò naøy sang thieát bò khaùc maø khoâng coù chieàu ngöôïc laïi(hình 1.2). Baùn song coâng ( Half Duplex Communication ) : taïi moät thôøi ñieåm chæ coù moät node truyeàn vaø moät node nhaän . Cho pheùp truyeàn hai chieàu(hình 1.3). Song coâng ( Full Duplex Communication ) : cho pheùp truyeàn döõ lieä ñoàng thôøi giöõa hai thieát bò(hình 1.4). Chuaån RS-232C ñöôïc ñònh nghóa laø moät chuaån giao tieáp giöõa moät DTE ( Device Terminal Equipment – thöôøng laø computer) vaø moät DCE ( Device Communication Equipment – caùc thieát bò ngoaïi vi) vôùi khoaûng caùch truyeàn toái ña laø 50ft ( khoaûng 15m ) vaø toác ñoä toái ña laø 20kps. Chöông III : BUS I2C I. Hoaït Ñoäng Cuûa Bus I2C : Bus I2C (vieát taét töø Inter-Ic-Bus) laø moät moái lieân keát döõ lieäu 2 daây giöõa moät hoaëc nhieàu boä xöû lyù (Master) vaø nhöõng khoái ngoaïi vi cuï theå (slave).Taát caû caùc vi maïch ñeàu lieân keát tröïc tieáp vôùi bus vaø ñöôïc trao ñoåi döôùi ñòa chæ cuûa töøng vi maïch. Caùc ñòa chæ vaø döõ lieäu ñöôïc truyeàn treân chính caùc ñöôøng daãn. Bus I2C cho pheùp hình thaønh moät moái lieân keát ñôn giaûn giöõa nhieàu vi maïch vaø cho pheùp deã daøngù môû roäng theâm. Taát caû caùc vi maïch tham gia bus, khoáng cheá giao thöùc theo moät caùch rieâng . Beân caïnh caùc boä nhôù RAM, EEPROM, caùc vi maïch môû roäng coång, caùc boä bieán doåi A/D vaø D/A cuõng nhö caùc vi maïch ñoàng hoà coøn coù nhieàu vi maïch chuyeân duïng, chaúng haïn boä ñeäm hieån thò hoaëc caùc vi maïch duøng trong kyõ thuaät truyeàn hình . Taát caû caùc vi maïch naøy ñeàu coù theåû ñieàu khieån deã daøng vaø tröïc tieáp qua hai ñöôøng daãn cuûa dao dieän song song vôùi maùy tính PC. Chæ caàn boå sung theâm raát ít caùc vi maïch, coång noái tieáp cuõng coù theå ñöôïc söû duïng. II . Truyeàn Döõ Lieäu vaø Ñònh Ñòa Chæ : Bus I2C söû duïng 2 ñöôøng daãn: Ñöôøng daãn döõ lieäu noái tieáp SDA Ñuôøng daãn giöõ nhòp SCL Gioáng nhö ôû thanh ghi dòch, döõ lieäu vaø ñòa chæ ñöôïc truyeàn cuøng theo moät nhòp .Caû hai ñöôøng daãn ñeàu coù theå ñöôïc söû duïng theo töøng höôùng döõ lieäu. Moãi ñöôøng daãn ñeàu coù moät ñieän trôû noái leân nguoàn(Pull-up) vaø coù theå ñöôïc moãi thaønh vieân keùo xuoáng möùc LOW qua caùc loái ra cöïc goùp hôû hoaëc cöïc maùng hôû. Thaønh vieân bus khoâng kích hoaït ôû traïng thaùi coù ñieän trôû cao, nhöng vaãn luoân giaùm saùt caùc tín hieäu truyeàn treân bus. Khi chæ coù moät vi maïch chuû ñöôïc söû duïng, vi maïch naøy töï xuaát ra tín hieäu giöõ nhòp ñeå suû duïng. Döõ lieäu coù theå ñeán töø vi maïch chuû cuõng nhö töø vi maïch tôù. Giao thöùc bus I2C nhaän bieát moät daüy caùc tình huoáng ñaü ñöôïc ñònh nghóa chính xaùc, caùc tình huoáng naøy giôùi thieäu töøng thaønh vieân bus, ñeå nhaän daïng choã baét daàu vaø keát thuùc cuûa moät cuoäc truyeàn cuõng nhö caùch ñònh ñòa chæ coù theå coù cuûa noù. Traïng thaùi yeân tónh: SDA vaø SCL ôû möùc HIGH vaø do vaäy laø khoâng kích hoaït. Ñieàu kieän baét ñaàu( Start): SDA ñöôïc vi maïch master chuyeån sang möùc thaáp, trong khi SCL giöõ nguyeân ôû möùc HIGH. Ñieàu kieän döøng (Stop) : SDA chuyeån töø traïng thaùi LOW sang HIGH, trong khi SCL giöõ nguyeân ôû möùc HIGH. Truyeàn döõ lieäu : Moãi boä truyeàn xeáp taùm bít döõ lieäu leân ñöôøng daãn döõ lieäu SDA, baèng caùc xung giöõ nhòp caùc bít naøy ñöôïc vi maïch chuû(master) ñaåy tieáp leân ñöôøng giöõ nhòp SCL. Vieäc truyeàn döõ lieäu baét ñaàu vôùi bít coù giaù trò lôùn nhaát. Xaùc nhaän (Acknowledge):Moãi boä nhaän keát thuùc quùa trình nhaän moâït byte baèng moät möùc LOW ôû ñöôøng daãn SDA, cho ñeán khi vi maïch chuû taïo ra xung ñoàng hoà thöù chín ôû ñöôøng daãn SCL. Vieäc xaùc nhaän ñoàng thôøi coù nghóa laø moät byte tieáp theo caàn ñöôïc nhaän. Vieäc keát thuùc cuoäc truyeàn theo mong muoán caàn phaûi ñöôïc baùo tröôùc baèng vieäc khoâng xuaát hieän söï xaùc nhaän. Söï keát thuùc thaät söï cuûa cuoäc truyeàn ñöôïc ñaït tôùi baèng ñieàu kieän döøng(Stop). Caùc ñòa chæ ñöôïc truyeàn vaø keát thuùc gioáng heät nhö döõ lieäu. Trong tröôøng hôïp ñôn giaûn nhaát laø cuoäc truyeàn döõ lieäu töø vi maïch chuû tôùi moät vi maïch tôù(slave) chaúng haïn tôùi moät coång loái ra, caùc quùa trình dieãn ra sau: Vi maïch chuû (master) taïo ra dieàu kieän baét ñaàu vaø truyeàn ñòa chæ cuûa vi maïch coång vaøo caùc bit 7 ñeán 1 vaø höôùng mong muoán truyeàn döõ lieäu vaøo bit 0, cuï theå laø 0 ñoái vôùi tröôøng hôïp "ghi" vaø 1 ñoái vôùi tröôøng hôïp "ñoïc". Vieäc truyeàn ñòa chæ ñöôïc keát thuùc bôûi vi maïch tôù (slave) caàn trao ñoåi. Sau ñoù vi maïch chuû (master) göûi byte döõ lieäu vaø cuõng laø ñeå keát thuùc moät quùa trình truyeàn. Vi maïch chuû coù theå chaám döùt moái lieân keát baèng ñieàu kieän Stop hoaëc göûi caùc byte tieáp theo tôùi chính caùc vi maïch aáy. Caùc ñòa chæ chæ vi maïch coù ñoä daøi 7 bit,trong ñoù coøn moät bit höôùng döõ lieäu ñöôïc truyeàn boå sung sau cuøng. Thoâng thöông caùc ñòa chæ vi maïch ñöôïc qui ñònh ñeå chæ roõ loaïi trong 4 bit cao hôn vaø coù theå ñöôïc löïa choïn töï do trong 3 bit thaáp hôn (A0 - A2) baèng maïch ñieän beân ngoaøi. Nhieàu vi maïch cuøng moät loaïi cuõng coù theå hoaït ñoäng treân cuøng moät bus. Toång coäng coù theå coù ñeán 128 vi maïch coù theå ñöôïc söû duïng treân cuøng moät bus. Ñòa chæ bus I2C vôùi höôùng döõ lieäu A6 A5 A4 A3 A2 A1 A0 R/W Khi caàn ñoïc döõ lieäu töø moät vi maïch tôù (slave), ñòa chæ caàn phaûi ñöôïc truyeàn baèng bit höôùng döõ lieäu ñaü ñöôïc ñaët. Vi maïch chuû xuaát ra töøng nhoùm taùm xung ñoàng hoà vaø nhaän ñöôïc taùm bit döõ lieäu. Cho ñeán khi noù xaùc nhaän cuoäc nhaän döõ lieäu baèng Acknowledge, ôû xung ñoàng hoà thuù chín, vi maïch naøy coù theå nhaän caùc byte tieáp theo.Cuoái cuøng, cuoäc truyeàn ñöôïc vi maïch chuû keát thuùc baèng vieäc khoâng ñöa ra tín hieäu xaùc nhaän (Nacknowledge ) vaø keøm theo laø ñieàu kieän döøng. Moãi maïch I2C ñeàu coù moät ñòa chæ ñaü ñöôïc quy ñònh, ñòa chæ naøy moät phaàn ñöôïc quy ñònh ñeå ñaëc tröng cho töøng loaïi coøn moät phaàn khaùc ñöôïc thay ñoåi qua caùc ñöôøng daãn ñòa chæ ñöôïc daãn ra ngoaøi. Ñieàu ñoù coù nghóa laø,chaúng haïn vôùi ba ñöôøng ñòa chæ ñöôïc daãn ra ngoaøi coù tôùi taùm vi maïch cuøng loaïi coù theå ñöôïc ñaáu noái vaøo bus. Toáùc ñoä giöõ nhòp cöïc ñaïi duøng cho bus I2C baèng 100 KHz. Caùc chöông trình ñöôïc giôùi thieäu döôùi ñaây söû duïng thôøi gian chôø baèng 10ms, ñeå traùnh tình traïng vöôït quùa toác ñoä cöc ñaïi khi cho chaïy treân caùc maùy tính nhanh. III. Bus I2C Duøng SEEPROM AT24C0X Ñaây laø 1 boä nhôù coá ñònh (permanent),coù theå ñöôïc xoaù vaø ghi baèng ñieän maø khoâng caàn cung caáp ñieän aùp laøm vieäc phuï theâm. 24C01 128 bytes 24C02 256 bytes 24C03 512 bytes 24C04 1024 bytes 24C08 2048 bytes Caùc boä nhôù SEEPROM coù dung löôïng nhoû thöôøng ñöôïc söû duïng ñeå thieát laäp caùc döõ lieäu ñònh chuaån hoaëc moät löông döõ lieäu khoâng ñaùng keå khaùc moät caùch ñoäc laäp vôùi nguoàn cung caáp vaøo moät heä thoáng. Caùc vi maïch naøy baûo ñaûm vieäc löu tröõ döõ lieäu ñöôïc treân 10 naêm. Moät öu ñieåm khaùc laø vieäc thieát keá maïch ñôn giaûn,ñoàng nghóa vôùi vieäc khoâng caàn ñeán ñieän aùp boå sung duøng cho boä naïp chöông trình,bôûi vì moät ñieän aùp cao hôn ñaõ ñöôïc taïo ra ngay treân chip. Vieát AT24C0X : Xoùa ghi EEPROM,max 2 bytes S Ñòa chæ Slave 0 A A Ñòa chæ boä nhôù Vieát byte 1 A Vieát byte 2 A S S Ñòa chæ Slave 0 A A Ñòa chæ boä nhôù A Ñoïc byte 1 A S Ñòa chæ Slave 1 Ñoïc byte 2 A Ñoïc byte n NACK S Vieát Ack cuûa Slave Ñoïc AT24C0X : Vieát Ack cuûa Slave Ack cuûa Master khoâng coù NACK Khi ñoïc ra,sau ñòa chæ vi maïch,tröôùc heát laø ñòa chæ byte cuûa byte ñaàu tieân mong muoán phaûi ñöôïc chæ ñònh . Sau ñoù,ñieàu kieän ngöøng caàn phaûi ñöôïc xuaát ra ñeå trao ñoå vôùi vi maïch theo höôùng ñoïc ra. Treân ñoù nhieàu byte coù theå ñuôïc ñoïc ra moät caùch tuøy yù. Moät boä ñeäm ñòa chæ beân trong töï ñoäng taêng theâm moät. Khi laäp trình (vieát) caán chuù yù laø sau ñòa chæ vi maïch,ñòa chæ byte mong muoán caàn ñöôïc chuyeån giao. Sau ñoù,tieáp theo laø byte döõ lieäu caàn ñöôïc laäp trình.Cuõng coù theå xaûy ra tröôøng hôïp hai byte ñöôïc truyeàn keá tieáp nhau. Khi ñoù,quaù trình laäp trình vaø xoaù thöïc teá baét ñaàu ngay sau ñieàu kieän ngöøng. III. CHÖÔNG TRÌNH VIEÁT EEPROM AT24C0X TÖØ PC : 1. Chöông trình vi xöû lí : ORG 0000H MEM1 EQU 30H MEM2 EQU 31H MEM19 EQU 50H MEM20 EQU 51H MAIN: MOV SCON,#01010010B CLR TR1 MOV TMOD,#21H MOV TH1,# -3 SETB TR1 LOOP: ;Nhan tin hieu tu PC ACALL INCHAR CJNE A,#79,NEXT ;CT write a byte ACALL INCHAR MOV MEM1,A ; Address 24C02 ACALL INCHAR MOV MEM2,A ; Data 24C02 ACALL VIETROM ;Delay thoi gian de nap Rom ACALL DELAY100MS ;Goi CT con docrom NEXT: CJNE A,#79,LOOP ;CT Read a byte ;Khai bao cac CT con ACALL INCHAR MOV MEM1,A ; Address 24C02 ACALL DOCROM ;Phat len PC gia tri rom doc duoc ACALL OUTCHAR ;Xuat ra P2 de kiem tra MOV P2,A SJMP LOOP INCHAR: JNB RI,$ CLR RI MOV A,SBUF RET OUTCHAR: JNB TI,$ CLR TI MOV SBUF,A RET I2CINIT: SETB P1.6 ;SDA = 1 SETB P1.7 ;SCL = 1 RET I2CSTART: CLR P1.6 ;SDA = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 RET I2CSTOP: CLR P1.6 ;SDA = 0 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 SETB P1.6 ;SDA = 1 RET ACK: CLR P1.6 ;SDA = 0 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 NACK: SETB P1.6 ;SDA = 1 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 RET XUATRA: MOV MEM20,A ;BO NHO TRUNG GIAN MOV A,#8 MOV MEM19,A ;BO DEM DUNG CHO 8 BIT LAP: MOV A,MEM20 ANL A,#128 ;CHE BIT 7 RR A ;SAU BIT 6 (SDA) ADD A,#3FH MOV P1,A SETB P1.7 CLR P1.7 MOV A,MEM20 RL A ;BIT TIEP THEO MOV MEM20,A DJNZ MEM19,LAP ;BO DEM GIAM 1 SETB P1.6 CLR P1.7 SETB P1.6 SETB P1.7 CLR P1.7 RET DOCVAO: SETB P1.6 ;SDA = 1 CLR P1.7 ;SCL = 0 MOV MEM20,#0 MOV MEM19,#8 LAP1: SETB P1.7 ;SCL = 1 MOV A,MEM20 RL A MOV B,A MOV A,P1 ANL A,#64 ;DOC SDA RL A RL A ;BIT 0 ADD A,B MOV MEM20,A ;LUU TRU CLR P1.7 ;SCL = 0 DJNZ MEM19,LAP1 ;8 LAN RET VIETROM: ACALL I2CSTART MOV A,#10100000B ACALL XUATRA MOV A,#0 ACALL XUATRA MOV A,MEM2 ACALL XUATRA ACALL I2CSTOP ACALL DELAY100MS RET DOCROM: ACALL I2CSTART MOV A,#10100000B ;DIA CHI AT24C02,VIET ACALL XUATRA MOV A,#0 ;DIA CHI BAT DAU 0 ACALL XUATRA ACALL I2CSTOP ACALL I2CSTART MOV A,#10100001B ;DIA CHI AT24C02,DOC ACALL XUATRA ACALL DOCVAO ACALL NACK ACALL I2CSTOP RET DELAY100MS: PUSH B MOV B,#2 LAP2: MOV TL0,#LOW(-50000) MOV TH0,#HIGH(-50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ B,LAP2 POP B RET END 2. Chöông trình Visual Basic : Dim Dataout(0) As Byte Dim Datain() As Byte Dim Transfer As Byte Dim Timeout As Boolean Dim str As String Dim Buffer As Variant Private Sub CmdRead_Click() 'Phat tin hieu read a byte Dataout(0) = 80 Buffer = Dataout() MSComm1.Output = Buffer MSComm1.InBufferCount = 0 'Truyen dia chi str = Text2.Text Transfer = Val(str) Dataout(0) = Transfer Buffer = Dataout() MSComm1.Output = Buffer MSComm1.InBufferCount = 0 tmrError.Enabled = True Timeout = False Do DoEvents Loop Until MSComm1.InBufferCount = 1 Or Timeout = True If Timeout = False Then Buffer = MSComm1.Input Datain() = Buffer Text3.Text = Datain(0) Text4.Text = "Data read successfully !" Else Text4.Text = "Not response from 89C51" End If End Sub Private Sub cmdWrite_Click() 'Phat tin hieu write a byte Dataout(0) = 79 Buffer = Dataout() MSComm1.Output = Buffer MSComm1.InBufferCount = 0 ''Truyen dia chi str = Text2.Text Transfer = Val(str) Dataout(0) = Transfer Buffer = Dataout() MSComm1.Output = Buffer MSComm1.InBufferCount = 0 'Truyen data str = Text1.Text Transfer = Val(str) Dataout(0) = Transfer Buffer = Dataout() MSComm1.Output = Buffer MSComm1.InBufferCount = 0 tmrError.Enabled = True Timeout = False Text4.Text = "Data and Address are transfering" Do DoEvents Loop Until MSComm1.InBufferCount = 1 Or Timeout = True If Timeout = False Then Buffer = MSComm1.Input Datain() = Buffer If Datain(0) = Val(Text1.Text) Then Text4.Text = "Data writed successfully !" Else Text4.Text = "Data Error" End If Else Text4.Text = "Not response from 89C51" End If End Sub Private Sub Form_Load() MSComm1.Settings = "9600,n,8,1" MSComm1.CommPort = 2 MSComm1.InputLen = 0 tmrError.Interval = 2000 MSComm1.PortOpen = True End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False End Sub Private Sub tmrError_Timer() tmrError.Enabled = False Timeout = True End Sub Chöông IV : GIÔÙI THIEÄU DAÂY CHUYEÀN SAÛN XUAÁT I.Yeâu Caàu Cuûa Coâng Vieäc Ñoái Vôùi Daây Chuyeàn Saûn Xuaát : Saûn phaåm sau khi qua giai ñoaïn cô baûn,noù phaûi qua caùc coâng ñoaïn phuï. Sau khi laøm ñaõ ñuû caùc coâng ñoaïn phuï naøy,noù seõ trôû thaønh saûn phaåm hoaøn chænh ñeå ñöa ñeán ngöôøi tieâu duøng. Caùc coâng ñoaïn phuï naøy coù ñaëc ñieåm laø chuùng khoâng phuï thuoäc vaøo nhau,coâng ñoaïn naøy coù theå laøm tröôùc hoaëc laøm sau baát kyø coâng ñoaïn naøo,khoâng caàn theo thöù töï. Trong daây chuyeàn saûn xuaát naøy coù coâng ñoaïn cuoái cuøng ñeå laáy saûn phaåm hoaøn chænh ñaõ laøm ñuû caùc coâng ñoaïn phuï ra khoûi daây chuyeàn ñoàng thôøi cho pheùp ñöa saûn phaåm môùi vaøo (saûn phaåm chöa laøm coâng ñoaïn phuï naøo) Muïc ñích sau cuøng laø laøm sao phaân boá ñeàu coâng vieäc ñeán caùc coâng ñoaïn phuï,taïi moãi thôøi ñieåm ôû caùc coâng ñoaïn ñeàu coù saûn phaåm ñeå laøm. Khi ñoù daây chuyeàn saûn xuaát seõ ñaït naêng suaát vaø hieäu quaû cao nhaát. * Em cuõng xin giôùi thieäu daây chuyeàn saûn xuaát ñang ñöôïc öùng duïng taïi xí nghieäp may Vieät Tieán. Saûn phaåm ôû ñaây laø aùo quaàn caùc loaïi. Caùc coâng ñoaïn phuï bao goàm: vaøo coå,ñôm nuùt,may tuùi,may caùnh tay... II.Daây Chuyeàn Saûn Xuaát: Daây chuîeàn saûn xuaát ôû ñaây coù baêng taûi chuyeån ñoäng troøn ñeàu vôùi vaän toác khoâng ñoåi ( vaän toác cuûa baêng taûi töông ñoái thaáp khoaûng10cm/s). Sau khi chuyeån ñoäng ñöôïc moät voøng, noù seõ trôû veà vò trí ban ñaàu. Baêng taûi ôû ñaây coù nhieäm vuï chuyeån ñoäng ñeå ñöa caùc saûn phaåm sau khi ñaõ hoaøn thaønh baát kyø coâng ñoaïn naøo hoaëc ñöa saûn phaåm môùi vaøo daây chuyeàn saûn xuaát. Vaán ñeà ñaët ra laø quaûn lyù soá saûn phaåm coù treân baêng taûi, ñoàng thôøi bieát ñöôïc caùc saûn phaåm ñoù ñaõ laøm coâng ñoaïn naøo vaø chöa laøm coâng doaïn naøo. Töø ñoù cho pheùp ñieàu khieån vaøo,ra taïi caùc vò trí vaøo ra cuûa caùc coâng ñoaïn. Do ñoù caáu taïo cuûa baêng taûi seõ goàm moät soá raõnh coá ñònh ( kyù hieäu laø n, n = const, n coù theå leân ñeán haøng ngaøn). Moãi raõnh cuûa baêng taûi coù hai traïng thaùi: chöùa moät baùnh xe duøng ñeå treo saûn phaåm hoaëc troáng ( khoâng coù saûn phaåm). Baêng taûi coù theå cho pheùp caùc baùnh xe( duøng ñeå treo saûn phaåm) vaøo hoaëc ra taïi caùc vò trí cho pheùp vaøo ra cuûa caùc coâng ñoaïn. Khi coù tín hieäu ñieàu khieån vaøo thì ngay laäp töùc baêng taûi seõ ñaåy baùnh xe ra khoûi daây chuyeàn, ñoàng thôøi khi coù tín hieäu ñieàu khieån ra thì baêng taûi seõ cho pheùp baùnh xe chöùa saûn phaåm ñaõ laøm xong coâng ñoaïn naøo ñoù ñang chôø vaøo daây chuyeàn töùc thì. 10 1 2 3 6 9 7 8 5 4 CÑ1 CÑ2 CÑ4 CÑ3 11 Hình : Daây Chuyeàn Saûn Xuaát 1. Baêng chuyeàn chính 4. Truyeàn ñoäng chính 2. Baêng chuyeàn reõ nhaùnh 5. Thieát bò reõ nhaùnh phuï 3. Baøn laøm vieäc 6. Thieát bò nhaän daïng 7. Tuû ñieàu khieån baêng chuyeàn chính 10. Coät chính truyeàn ñoäng. 8. Tuû ñieàu khieån baêng chuyeàn reõ nhaùnh 11. Saûn phaåm chôø 9. Coät trung gian Sp Sp Sp Maët caét ngang Baêng Chuyeàn Baøn laøm vieäc Coät trung gian Coät truyeàn ñoäng chính III.Caùch Nhaän Bieát Caùc Baùnh Xe (caùc saûn phaåm): Vaán ñeà ñaët ra laøm theá naøo ñeå nhaän bieát ñöôïc caùc baùnh xe khi chuùng vaøo vaø ra khoûi baêng taûi cuûa daây chuyeàn khoâng theo moät thöù töï, quy ñònh naøo. Do ñoù ñeå nhaän bieát caùc baùnh xe ta seõ gaén moät con SEEPROM (AT24C0X). Moãi moät con AT24C0X seõ ñöôïc naïp moät giaù trò coá ñònh ( maõ ROM). VÍ DUÏ: giaû söû baêng taûi cuûa daây chuyeàn coù 1000 raõnh thì ta seõ duøng 1000 con ROM gaén treân 1000 baùnh xe. Vì vaäy ñeå phaân bieät ñöôïc baùnh xe (saûn phaåm) naøy thì caùc con SEEPROM seõ ñöôïc naïp caùc giaù trò töø 1 ñeán 1000 (2 bytes). IV. Ñoïc Döõ Lieäu Töø Serial EEPROM : Nhö ta ñaõ giôùi thieäu ôû phaàn bus I2C ñeå ñoïc döõ lieäu töø SEEPROM taïi moãi coâng ñoaïn ta seõ duøng 1 con VXL AT89C51 Neáu daây chuyeàn saûn xuaát coù n coâng ñoaïn ,ta seõ duøng (n+1) con VXL .Con VXL sau cuøng duøng cho vieäc laáy saûn phaåm ñaõ laøm xong n coâng ñoaïn ra vaø ñöa saûn phaåm môùi vaøo. V. Ñieàu Khieån Vaøo vaø Ñieàu Khieån Ra : Taïi moãi coâng ñoaïn seõ coù 2 vò trí ñaëc bieät : Vò trí cho pheùp vaøo (MEMIN) : Cho pheùp baùnh xe chöùa saûn phaåm reõ vaøo baêng chuyeàn reõ nhaùnh ñeå laøm. Vò trí cho pheùp ra (MEMOUT) : Cho pheùp baùnh xe chöùa saûn phaåm laøm xong ñang chôø chaïy vaøo baêng chuyeàn chính. Caùc vò trí MEMIN & MEMOUT cuûa cuøng 1 coâng ñoaïn vaø giöõa caùc coâng ñoaïn seõ caùch nhau 1 khoaûng caùch coá ñònh do caáu taïo cô khí vaø caùch boá trí caùc coâng ñoaïn cuûa daây chuyeàn saûn xuaát. Ñieàu khieån vaøo : ñieàu kieän MEMIN # 0 : coù baùnh xe (saûn phaåm). Khoâng coù tín hieäu baùo ñaàøy töø coâng ñoaïn ñang xeùt Ñieàu khieån ra : ñieàu kieän MEMOUT # 0 :khoâng coù saûn phaåm. Coù saûn phaåm laøm xong ñang chôø Ghi chuù : Khi coù saûn phaåm laøm xong ñang chôø cho ra ñeå vaøo baêng taûi. Khi coù tín hieäu Ñieàu Khieån ra thì baùnh xe ( AT24C02 ) seõ ñöôïc caáp nguoàn vaø 2 chaân SDA vaø SCL tieáp xuùc P1.6 vaø P1.7 , VXL seõ ñoïc ñöôïc döõ lieäu töø AT24C02 ñöôïc caáp nguoàn vaø phaùt leân PC. VI. Sô Ñoà Nguyeân Lyù Ñieàu Khieån : PC VXL1 VXL2 VXL n VXL n+1 ÑK Vaøo&Ra Ñoïc EEPROM ÑK Vaøo&Ra Ñoïc EEPROM ÑK Vaøo&Ra Ñoïc EEPROM ÑK Vaøo&Ra Ñoïc EEPROM VXL 1 ñeán n : coù nhieäm vuï Nhaän töø PC tín hieäu : Ñieàu khieån vaøo Ñieàu khieån ra Phaùt PC tín hieäu : Baùo baän taïi caùc coâng ñoaïn Maõ SEEPROM VXL (n+1) : coù nhieäm vuï Nhaän töø PC tín hieäu : Ñieàu khieån vaøo (saûn phaåm ñaõ laøm ñuû n coâng ñoaïn) Ñieàu khieån ra (ñöa saûn phaåm môùi vaøo) Phaùt PC tín hieäu : Côø baùo baêng taûi chuyeån ñoäng (moãi laàn baêng taûi chuyeån ñoäng ñöôïc 1 oâ (raõnh) thì côø baêng taûi seõ baùo). Maõ SEEPROM PC coù nhieäm vuï thu thaäp,quaûn lyù vaø xöû lí döõ lieäu Set caùc vò trí MEMIN(i) vaø MEMOUT(i) (i = 1ñeán n+1) Quaûn lí n raõnh baêng taûi cuûa daây chuyeàn saûn xuaát :moãi laàn nhaän ñöôïc tín hieäu côø baêng taûi töø VXL cuoái (n+1),PC seõ taêng caùc giaù trò MEMIN(i) vaø MEMOUT(i) leân 1 ñôn vò Quaûn lí n saûn phaåm (n baùnh xe) ñaõ laøm coâng ñoaïn naøo vaø chöa laøm coâng ñoaïn naøo hay laø saûn phaå môùi ñöa vaøo Phaùt tín hieäu Ñieàu khieån vaøo vaø Ñieàu khieån ra ñeán caùc VXL CHÖÔNG V : SÔ ÑOÀ GIAÛI THUAÄT VAØ CHÖÔNG TRÌNH ÑEÅ ÑIEÀU KHIEÅN DAÂY CHUYEÀN SAÛN XUAÁT (DCSX) TOÅNG QUAÙT TREÂN GOÀM n COÂNG ÑOAÏN (CÑ),CHÖÔNG TRÌNH MINH HOÏA SAU ÑAÂY SEÕ TRÌNH BAØY DAÂY CHUYEÀN SAÛN XUAÁT ÑÔN GIAÛN NHÖ SAU : SAÛN PHAÅM (SP) PHAÛI LAØM 3 CÑ VAØ CÑ CUOÁI CUØNG LAØ CÑ 4 ÑEÅ LAÁY SP ÑAÕ LAØM XONG 3 CÑ RA VAØ ÑÖA SP MÔÙI VAØO (CHÖÔNG TRÌNH HOAØN TOAØN COÙ THEÅ MÔÛ ROÄNG CHO DCSX GOÀM n CÑ) . CAÙC CÑ 1,2,3,4 ÖÙNG VÔÙI VÒ TRÍ CUÛA CAÙC VXL 1,2,3,4. * Giaû söû baêng taûi cuûa DCSX coù 12 raõnh (oâ) ,do ñoù coù theå chöùa toái ña 12 baùnh xe (SP) moãi baùnh xe coù gaén 1 con seeprom AT24C0X,caùc con seeprom ñöôïc naïp caùc giaù trò töø 1 - 12 (1 byte) * Caùc VXL 1,2,3 : Nhaän töø PC tín hieäu : ÑK Vaøo (xuaát xung ra P3.4 ñeå kieåm tra) ÑK Ra (xuaát xung ra P3.5 ñeå kieåm tra) Phaùt leân PC tín hieäu : Baùo baän ( Swich P3.2 = 0 : baän ) Maõ ROM ñoïc ñöôïc ( Swich P3.3 = 0 : coù saûn phaåm laøm xong ñang chôø vaøo daây chuyeàn saûn xuaát ) * VXL 4 Nhaän töø PC tín hieäu : ÑK Vaøo (xuaát xung ra P3.4 ñeå kieåm tra) ÑK Ra (xuaát xung ra P3.5 ñeå kieåm tra) Phaùt leân PC tín hieäu : Côø baùo baêng taûi chuyeån ñoäng ( Swich P3.2 = 0 ) Maõ ROM ñoïc ñöôïc (Swich P3.3 = 0 : coù saûn phaåm laøm xong ñang chôø ñeå vaøo DCSX ) * PC : Duøng maûng MEMIN(1-4) ñeå xeùt caùc vò trí ÑK Vaøo taïi caùc VXL 1,2,3,4 Duøng maûng MEMOUT(1-4) ñeå xeùt caùc vò trí ÑK Ra taïi caùc VXL 1,2,3,4 Duøng maûng DATA(1-12) ñeå quaûn lí 12 oâ BT, oâ naøo khoâng coù SP thì DATA(i) = 0,oâ naøo coù SP thì giaù trò DATA(i) = maõ ROM chöùa SP ñoù (i = 1-12) Duøng maûng DATACD(1-12) ñeå quaûn lí caùc CÑ ñaõ laøm hoaëc chöa laøm cuûa 12 SP. Neáu SP treân baùnh xe chöùa ROM coù maõ laø i thì DATACD(i) seõ quaûn lí (i = 1-12) SP ñoù. DATACD(i) = xxxxxxxx (8 bit) bit 0 : CÑ 1 bit 1 : CÑ 2 bit 2 : CÑ 3 bit x = 0 : CÑ chöa laøm bit x = 1 : CÑ ñaõ laøm Ñeå nhaän vaø phaùt vôùi maïng VXL,PC qui ñònh caùch ñònh ñòa chæ vaø maõ leänh nhö sau : duøng 1 byte ñeå nhaän bieát ñòa chæ vaø maõ leänh : C3C2C1C0 A3A2A1A0 Ñòa chæ : A3A2A1A0 = 0001 : Ñòa chæ VXL1 A3A2A1A0 = 0010 : Ñòa chæ VXL2 A3A2A1A0 = 0011 : Ñòa chæ VXL3 A3A2A1A0 = 0100 : Ñòa chæ VXL4 Maõ leänh : C3C2C1C0 = 0001 : ÑK Vaøo C3C2C1C0 = 0010 : ÑK Ra C3C2C1C0 = 0011 : Maõ ROM C3C2C1C0 = 0100 : Baän (VXL1,2,3),Côø BT (VXL4) Sô Ñoà Maïch Nguyeân Lyù CHÖÔNG TRÌNH TOÅNG QUAÙT PC LOOP - CT ÑK Ra - Ñoïc maõ Rom töø caùc VXL Coù tín hieäu côø BT töø XL4? CT ÑK Vaøo LOOP PC N Y LÖU ÑOÀ GIAÛI THUAÄT CHI TIEÁT : - SET MEMOUT ( i ) - SET MEMIN ( i ) START CT ÑK VAØO Tín hieäu BT töø XL4? DATAIN = 44H ? - INC MEMOUT(i ) - INC MEMIN (i ) Vò trí vaøo CÑ1 coù SP? DATA[MEMIN(1)]#0 Phaùt tín hieäu ÑK vaøo xuoáng VXL1 DATAOUT = 11H CÑ1 laøm chöa ? DATACD[DATA(MEMIN(1))] AND 01H = 01H ? LOOP N Y Y N Y N Y N N Coù tín hieäu baùo Busy töø VXL1 ? DATAIN = 41H ? Xoaù oâ nhôù vöøa cho SP vaøo DATA[MEMIN(1)] = 0 Vò trí vaøo CÑ2 coù SP? DATA[MEMIN(2)]#0? Phaùt tín hieäu ÑK vaøo xuoáng VXL2 DATAOUT = 12H CÑ2 laøm chöa ? DATACD[DATA(MEMIN(2))] AND 02H = 02H ? Y N N N Y Y Y N N N Coù tín hieäu baùo Busy töø VXL2 ? DATAIN = 42H ? Xoaù oâ nhôù vöøa cho SP vaøo DAT[MEMIN(2)] = 0 Vò trí vaøo CÑ3 coù SP? DATA[MEMIN(3)#0? Phaùt tín hieäu ÑK vaøo xuoáng VXL3 DATAOUT = 13H CÑ3 laøm chöa ? DATACD[DATA(MEMIN(3))] AND 04H = 04H ? Y N N Y Y N N Phaùt tín hieäu ÑK vaøo xuoáng VXL4 DATAOUT = 14H Coù tín hieäu baùo Busy töø VXL3 ? DATAIN = 43H ? Xoaù oâ nhôù vöøa cho SP vaøo DATA[MEMIN(3)] = 0 Vò trí vaøo CÑ4 coù SP? DATA[MEMIN(4)#0? Caû ba CÑ1,CÑ2,CÑ3 laøm chöa ? DATACD[DATA(MEMIN(4))] AND 07H = 07H ? Xoaù oâ nhôù vöøa cho SP vaøo DATA[MEMIN(4)] = 0 Y N N Y N Y Y CT ÑK RA Vò trí ra CÑ1 coù SP ? DATA[MEMOUT(1)] #0 ? Truyeàn tín hieäu ÑK ra xuoáng VXL1 DATAOUT = 21H Coù tín hieäu ñoïc ROM töø VXL1? DATAIN(1) = 31H ? Gaùn maõ ROM nhaän ñöôïc vaøo oâ nhôù cho pheùp ÑK ra DATA[MEMOUT(1) = DATAIN(2) (Maõ ROM = DATAIN(2)] Ñaùnh daáu CÑ1 ñaõ laøm DATACD[DATA(MEMOUT(1))] OR 01H Y N N Y Vò trí ra CÑ2 coù SP ? DATA[MEMOUT(2)] # 0 ? Truyeàn tín hieäu ÑK ra xuoáng VXL2 DATAOUT = 22H Coù tín hieäu ñoïc ROM töø VXL2? DATAIN(1) = 32H ? Gaùn maõ ROM nhaän ñöôïc vaøo oâ nhôù cho pheùp ÑK ra DATA[MEMOUT(2)] = DATAIN(2) (Maõ ROM = DATAIN(2)] Ñaùnh daáu CÑ2 ñaõ laøm DATACD[DATA(MEMOUT(2))] OR 02H Y N N Y Vò trí ra CÑ3 coù SP ? DATA[MEMOUT(3)] # 0 ? Truyeàn tín hieäu ÑK ra xuoáng VXL3 DATAOUT = 23H Coù tín hieäu ñoïc ROM töø VXL3? DATAIN(1) = 33H ? Gaùn maõ ROM nhaän ñöôïc vaøo oâ nhôù cho pheùp ÑK ra DATA[MEMOUT(3)] = DATAIN(2) (Maõ ROM = DATAIN(2) ) Ñaùnh daáu CÑ3 ñaõ laøm DATACD[DATA(MEMOUT(3))] OR 04H Y N N Y Coù tín hieäu ñoïc ROM töø VXL3? DATAIN(1) = 33H ? Gaùn maõ ROM vaøo oâ nhôù cho pheùp ÑK ra DATA[MEMOUT(3)] = DATAIN(2) (Maõ ROM = DATAIN(2) ) Ñaùnh daáu CÑ3 ñaõ laøm DATACD[DATA(MEMOUT(3)] OR 04H Vò trí ra CÑ4 coù SP ? DATA[MEMOUT(4)] # 0 ? Truyeàn tín hieäu ÑK ra xuoáng VXL4 DATAOUT = 24H Coù tín hieäu ñoïc ROM töø VXL4? DATAIN(1) = 34H ? Gaùn maõ ROM nhaän ñöôïc vaøo oâ nhôù cho pheùp ÑK ra DATA[MEMOUT(4)] = DATAIN(2) (Maõ ROM = DATAIN(2)] Ñöa SP môùi vaøo (chöa laøm CÑ naøo) DATACD[DATA(MEMOUT(4))] = 0 LOOP Y N N Y LÖU ÑOÀ GIAÛI THUAÄT CUÛA CAÙC VXL 1,2,3 VXL1,2,3 Coù phaûi tín hieäu ÑK Vaøo LOOP Nhaän tín hieäu ÑK töø PC Coù phaûi tín hieäu ÑK Ra ? ÑK Vaøo Phaùt PC baùo baän Caùc CÑ coù baän ? Coù SP laøm xong ñang chôø? Ñoïc ROM & phaùt PC ÑK Ra LOOP Y Y N N Y N N Y LÖU ÑOÀ GIAÛI THUAÄT CHO VXL4 (CÑ CUOÁI ) VXL1,2,3 LOOP Coù phaûi tín hieäu ÑK Vaøo Coù phaûi tín hieäu ÑK Ra ? ÑK Vaøo Coù SP môùi ñang chôø? Ñoïc ROM & phaùt PC ÑK Ra LOOP Coù tín hieäu côø BT N Y Y N Y N N Y CHÖÔNG TRÌNH VXL1: ORG 0000H MEM1 EQU 30H MEM2 EQU 31H MEM19 EQU 50H MEM20 EQU 51H MAIN: MOV SCON,#01010010B CLR TR1 MOV TMOD,#21H MOV TH1,#-3 SETB TR1 LOOP: ACALL INCHAR ;CO PHAI TIN HIEU DIEU KHIEN VAO ? CJNE A,#11H,NEXT JNB P3.2,BUSY ;CO TIN HIEU BAO BAN ? ACALL DKVAO ;PHAT TIN HIEU BAO KHONG BAN MOV A,#51H ACALL OUTCHAR SJMP LOOP BUSY: ;PHAT TIN HIEU BAO BAN MOV A,#41H ACALL OUTCHAR SJMP LOOP NEXT: ;CO PHAI TIN HIEU DIEU KHIEN RA ? CJNE A,#21H,LOOP ;CO SAN PHAM CHO ? JB P3.3,NEXT1 ;CO SP CHO ? ACALL DKRA WAIT: ;CHO DOC ROM MOV A,#0 ACALL DOCROM CJNE A,#0FFH,NEXT2 ;CO DOC DUOC MA ROM ? SJMP WAIT NEXT2: ;XUAT MA ROM DOC DUOC RA P2 DE KIEM TRA MOV P2,A MOV B,A MOV A,#31H ACALL OUTCHAR MOV A,B ACALL OUTCHAR SJMP LOOP NEXT1: ;PHAT TIN HIEU BAO KHONG CO SAN PHAM CHO MOV A,#61H ACALL OUTCHAR MOV A,#71H ACALL OUTCHAR SJMP LOOP ;KHAI BAO CAC CHUONG TRINH CON INCHAR: JNB RI,$ CLR RI MOV A,SBUF RET OUTCHAR: JNB TI,$ CLR TI MOV SBUF,A RET DKVAO: ;XUAT TIN HIEU DK VAO RA P3.4 DE KIEM TRA CLR P3.4 ACALL DELAY100MS SETB P3.4 RET DKRA: ;XUAT TIN HIEU DKRA RA P3.5 DE KIEM TRA CLR P3.5 ACALL DELAY100MS SETB P3.5 RET I2CINIT: SETB P1.6 ;SDA = 1 SETB P1.7 ;SCL = 1 RET I2CSTART: CLR P1.6 ;SDA = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 RET I2CSTOP: CLR P1.6 ;SDA = 0 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 SETB P1.6 ;SDA = 1 RET ACK: CLR P1.6 ;SDA = 0 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 NACK: SETB P1.6 ;SDA = 1 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 RET XUATRA: MOV MEM20,A ;BO NHO TRUNG GIAN MOV A,#8 MOV MEM19,A ;BO DEM DUNG CHO 8 BIT LAP: MOV A,MEM20 ANL A,#128 ;CHE BIT 7 RR A ;SAU BIT 6 (SDA) ADD A,#3FH MOV P1,A SETB P1.7 CLR P1.7 MOV A,MEM20 RL A ;BIT TIEP THEO MOV MEM20,A DJNZ MEM19,LAP ;BO DEM GIAM 1 SETB P1.6 CLR P1.7 SETB P1.6 SETB P1.7 CLR P1.7 RET DOCVAO: SETB P1.6 ;SDA = 1 CLR P1.7 ;SCL = 0 MOV MEM20,#0 MOV MEM19,#8 LAP1: SETB P1.7 ;SCL = 1 MOV A,MEM20 RL A MOV B,A MOV A,P1 ANL A,#64 ;DOC SDA RL A RL A ;BIT 0 ADD A,B MOV MEM20,A ;LUU TRU CLR P1.7 ;SCL = 0 DJNZ MEM19,LAP1 ;8 LAN RET DOCROM: ACALL I2CSTART MOV A,#10100000B ;DIA CHI AT24C02,VIET ACALL XUATRA MOV A,#0 ;DIA CHI BAT DAU 0 ACALL XUATRA ACALL I2CSTOP ACALL I2CSTART MOV A,#10100001B ;DIA CHI AT24C02,DOC ACALL XUATRA ACALL DOCVAO ACALL NACK ACALL I2CSTOP RET DELAY100MS: PUSH B MOV B,#2 LAP2: MOV TL0,#LOW(-50000) MOV TH0,#HIGH(-50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ B,LAP2 POP B RET END CHÖÔNG TRÌNH VXL2: ORG 0000H MEM1 EQU 30H MEM2 EQU 31H MEM19 EQU 50H MEM20 EQU 51H MAIN: MOV SCON,#01010010B CLR TR1 MOV TMOD,#21H MOV TH1,#-3 SETB TR1 LOOP: ACALL INCHAR ;CO PHAI TIN HIEU DIEU KHIEN VAO ? CJNE A,#12H,NEXT JNB P3.2,BUSY ;CO TIN HIEU BAO BAN ? ACALL DKVAO ;PHAT TIN HIEU BAO KHONG BAN MOV A,#52H ACALL OUTCHAR SJMP LOOP BUSY: ;PHAT TIN HIEU BAO BAN MOV A,#42H ACALL OUTCHAR SJMP LOOP NEXT: ;CO PHAI TIN HIEU DIEU KHIEN RA ? CJNE A,#22H,LOOP ;CO SAN PHAM CHO ? JB P3.3,NEXT1 ACALL DKRA WAIT: ;CHO DOC ROM ACALL DOCROM CJNE A,#0FFH,NEXT2 ;CO DOC DUOC MA ROM ? SJMP WAIT NEXT2: MOV P2,A ;XUAT MA ROM DOC DUOC RA P2 DE KIEM TRA MOV B,A MOV A,#32H ACALL OUTCHAR MOV A,B ACALL OUTCHAR SJMP LOOP NEXT1: ;PHAT TIN HIEU BAO KHONG CO SAN PHAM CHO MOV A,#62H ACALL OUTCHAR MOV A,#72H ACALL OUTCHAR SJMP LOOP ;KHAI BAO CAC CHUONG TRINH CON INCHAR: JNB RI,$ CLR RI MOV A,SBUF RET OUTCHAR: JNB TI,$ CLR TI MOV SBUF,A RET DKVAO: ;XUAT TIN HIEU DK VAO RA P3.4 DE KIEM TRA CLR P3.4 ACALL DELAY100MS SETB P3.4 RET DKRA: ;XUAT TIN HIEU DKRA RA P3.5 DE KIEM TRA CLR P3.5 ACALL DELAY100MS SETB P3.5 RET I2CINIT: SETB P1.6 ;SDA = 1 SETB P1.7 ;SCL = 1 RET I2CSTART: CLR P1.6 ;SDA = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 RET I2CSTOP: CLR P1.6 ;SDA = 0 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 SETB P1.6 ;SDA = 1 RET ACK: CLR P1.6 ;SDA = 0 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 NACK: SETB P1.6 ;SDA = 1 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 RET XUATRA: MOV MEM20,A ;BO NHO TRUNG GIAN MOV A,#8 MOV MEM19,A ;BO DEM DUNG CHO 8 BIT LAP: MOV A,MEM20 ANL A,#128 ;CHE BIT 7 RR A ;SAU BIT 6 (SDA) ADD A,#3FH MOV P1,A SETB P1.7 CLR P1.7 MOV A,MEM20 RL A ;BIT TIEP THEO MOV MEM20,A DJNZ MEM19,LAP ;BO DEM GIAM 1 SETB P1.6 CLR P1.7 SETB P1.6 SETB P1.7 CLR P1.7 RET DOCVAO: SETB P1.6 ;SDA = 1 CLR P1.7 ;SCL = 0 MOV MEM20,#0 MOV MEM19,#8 LAP1: SETB P1.7 ;SCL = 1 MOV A,MEM20 RL A MOV B,A MOV A,P1 ANL A,#64 ;DOC SDA RL A RL A ;BIT 0 ADD A,B MOV MEM20,A ;LUU TRU CLR P1.7 ;SCL = 0 DJNZ MEM19,LAP1 ;8 LAN RET DOCROM: ACALL I2CSTART MOV A,#10100000B ;DIA CHI AT24C02,VIET ACALL XUATRA MOV A,#0 ;DIA CHI BAT DAU 0 ACALL XUATRA ACALL I2CSTOP ACALL I2CSTART MOV A,#10100001B ;DIA CHI AT24C02,DOC ACALL XUATRA ACALL DOCVAO ACALL NACK ACALL I2CSTOP RET DELAY100MS: PUSH B MOV B,#2 LAP2: MOV TL0,#LOW(-50000) MOV TH0,#HIGH(-50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ B,LAP2 POP B RET END CHÖÔNG TRÌNH VXL3: ORG 0000H MEM1 EQU 30H MEM2 EQU 31H MEM19 EQU 50H MEM20 EQU 51H MAIN: MOV SCON,#01010010B CLR TR1 MOV TMOD,#21H MOV TH1,#-3 SETB TR1 LOOP: ACALL INCHAR ;CO PHAI TIN HIEU DIEU KHIEN VAO ? CJNE A,#13H,NEXT JNB P3.2,BUSY ;CO TIN HIEU BAO BAN ? ACALL DKVAO ;PHAT TIN HIEU BAO KHONG BAN MOV A,#53H ACALL OUTCHAR SJMP LOOP BUSY: ;PHAT TIN HIEU BAO BAN MOV A,#43H ACALL OUTCHAR SJMP LOOP NEXT: ;CO PHAI TIN HIEU DIEU KHIEN RA ? CJNE A,#23H,LOOP JB P3.3,NEXT1 ;CO SP CHO ? ACALL DKRA WAIT: ;CHO DOC ROM MOV A,#0 ACALL DOCROM CJNE A,#0FFH,NEXT2 ;CO DOC DUOC MA ROM ? SJMP WAIT NEXT2: MOV P2,A ;XUAT MA ROM DOC DUOC RA P2 DE KIEM TRA MOV B,A MOV A,#33H ACALL OUTCHAR MOV A,B ACALL OUTCHAR SJMP LOOP NEXT1: ;PHAT TIN HIEU BAO KHONG CO SAN PHAM CHO MOV A,#63H ACALL OUTCHAR MOV A,#73H ACALL OUTCHAR SJMP LOOP ;KHAI BAO CAC CHUONG TRINH CON INCHAR: JNB RI,$ CLR RI MOV A,SBUF RET OUTCHAR: JNB TI,$ CLR TI MOV SBUF,A RET DKVAO: ;XUAT TIN HIEU DK VAO RA P3.4 DE KIEM TRA CLR P3.4 ACALL DELAY100MS SETB P3.4 RET DKRA: ;XUAT TIN HIEU DKRA RA P3.5 DE KIEM TRA CLR P3.5 ACALL DELAY100MS SETB P3.5 RET I2CINIT: SETB P1.6 ;SDA = 1 SETB P1.7 ;SCL = 1 RET I2CSTART: CLR P1.6 ;SDA = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 RET I2CSTOP: CLR P1.6 ;SDA = 0 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 SETB P1.6 ;SDA = 1 RET ACK: CLR P1.6 ;SDA = 0 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 NACK: SETB P1.6 ;SDA = 1 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 RET XUATRA: MOV MEM20,A ;BO NHO TRUNG GIAN MOV A,#8 MOV MEM19,A ;BO DEM DUNG CHO 8 BIT LAP: MOV A,MEM20 ANL A,#128 ;CHE BIT 7 RR A ;SAU BIT 6 (SDA) ADD A,#3FH MOV P1,A SETB P1.7 CLR P1.7 MOV A,MEM20 RL A ;BIT TIEP THEO MOV MEM20,A DJNZ MEM19,LAP ;BO DEM GIAM 1 SETB P1.6 CLR P1.7 SETB P1.6 SETB P1.7 CLR P1.7 RET DOCVAO: SETB P1.6 ;SDA = 1 CLR P1.7 ;SCL = 0 MOV MEM20,#0 MOV MEM19,#8 LAP1: SETB P1.7 ;SCL = 1 MOV A,MEM20 RL A MOV B,A MOV A,P1 ANL A,#64 ;DOC SDA RL A RL A ;BIT 0 ADD A,B MOV MEM20,A ;LUU TRU CLR P1.7 ;SCL = 0 DJNZ MEM19,LAP1 ;8 LAN RET DOCROM: ACALL I2CSTART MOV A,#10100000B ;DIA CHI AT24C02,VIET ACALL XUATRA MOV A,#0 ;DIA CHI BAT DAU 0 ACALL XUATRA ACALL I2CSTOP ACALL I2CSTART MOV A,#10100001B ;DIA CHI AT24C02,DOC ACALL XUATRA ACALL DOCVAO ACALL NACK ACALL I2CSTOP RET DELAY100MS: PUSH B MOV B,#2 LAP2: MOV TL0,#LOW(-50000) MOV TH0,#HIGH(-50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ B,LAP2 POP B RET END CHÖÔNG TR4ÌNH VXL4: ORG 0000H MEM1 EQU 30H MEM2 EQU 31H MEM19 EQU 50H MEM20 EQU 51H MAIN: MOV SCON,#01010010B CLR TR1 MOV TMOD,#21H MOV TH1,#-3 SETB TR1 CO: ;CHO TIN HIEU CO BANG TAI JB P3.2,CO ACALL DELAY100MS JB P3.2,CO MOV A,#44H ACALL OUTCHAR ;NHAN TIN HIEU DIEU KHIEN LOOP: ACALL INCHAR CJNE A,#14H,NEXT ACALL DKVAO ;PHAT TIN HIEU DIEU KHIEN VAO MOV A,#54 ACALL OUTCHAR SJMP LOOP NEXT: CJNE A,#24H,NEXT1 JB P3.3,NEXT2 ;CO SP CHO ? ACALL DKRA WAIT: ;CHO DOC ROM MOV A,#0 ACALL DOCROM CJNE A,#0FFH,NEXT3 ;CO DOC DUOC MA ROM ? SJMP WAIT NEXT3: MOV P2,A ;XUAT MA ROM DOC DUOC RA P2 DE KIEM TRA MOV B,A MOV A,#34H ACALL OUTCHAR MOV A,B ACALL OUTCHAR SJMP LOOP NEXT2: MOV A,#64H ACALL OUTCHAR MOV A, #74H ACALL OUTCHAR SJMP LOOP NEXT1: ;KIEM TRA XEM CO PHAI TIN HIEU KET THUC CJNE A,#79,LOOP SJMP CO ;KHAI BAO CAC CHUONG TRINH CON INCHAR: JNB RI,$ CLR RI MOV A,SBUF RET OUTCHAR: JNB TI,$ CLR TI MOV SBUF,A RET DKVAO: ;XUAT TIN HIEU DK VAO RA P3.4 DE KIEM TRA CLR P3.4 ACALL DELAY100MS SETB P3.4 RET DKRA: ;XUAT TIN HIEU DKRA RA P3.5 DE KIEM TRA CLR P3.5 ACALL DELAY100MS SETB P3.5 RET I2CINIT: SETB P1.6 ;SDA = 1 SETB P1.7 ;SCL = 1 RET I2CSTART: CLR P1.6 ;SDA = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 RET I2CSTOP: CLR P1.6 ;SDA = 0 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 SETB P1.6 ;SDA = 1 RET ACK: CLR P1.6 ;SDA = 0 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 NACK: SETB P1.6 ;SDA = 1 CLR P1.7 ;SCL = 0 SETB P1.7 ;SCL = 1 CLR P1.7 ;SCL = 0 RET XUATRA: MOV MEM20,A ;BO NHO TRUNG GIAN MOV A,#8 MOV MEM19,A ;BO DEM DUNG CHO 8 BIT LAP: MOV A,MEM20 ANL A,#128 ;CHE BIT 7 RR A ;SAU BIT 6 (SDA) ADD A,#3FH MOV P1,A SETB P1.7 CLR P1.7 MOV A,MEM20 RL A ;BIT TIEP THEO MOV MEM20,A DJNZ MEM19,LAP ;BO DEM GIAM 1 SETB P1.6 CLR P1.7 SETB P1.6 SETB P1.7 CLR P1.7 RET DOCVAO: SETB P1.6 ;SDA = 1 CLR P1.7 ;SCL = 0 MOV MEM20,#0 MOV MEM19,#8 LAP1: SETB P1.7 ;SCL = 1 MOV A,MEM20 RL A MOV B,A MOV A,P1 ANL A,#64 ;DOC SDA RL A RL A ;BIT 0 ADD A,B MOV MEM20,A ;LUU TRU CLR P1.7 ;SCL = 0 DJNZ MEM19,LAP1 ;8 LAN RET DOCROM: ACALL I2CSTART MOV A,#10100000B ;DIA CHI AT24C02,VIET ACALL XUATRA MOV A,#0 ;DIA CHI BAT DAU 0 ACALL XUATRA ACALL I2CSTOP ACALL I2CSTART MOV A,#10100001B ;DIA CHI AT24C02,DOC ACALL XUATRA ACALL DOCVAO ACALL NACK ACALL I2CSTOP RET DELAY100MS: PUSH B MOV B,#2 LAP2: MOV TL0,#LOW(-50000) MOV TH0,#HIGH(-50000) SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ B,LAP2 POP B RET END CHÖÔNG TRÌNH VISUAL BASIC Option Explicit Dim data(1 To 12) As Byte Dim Memout(1 To 4) As Byte Dim Memin(1 To 4) As Byte Dim Mem(1 To 12) As Byte Dim Datain() As Byte Dim Dataout(0) As Byte Dim Bufferin As Variant Dim Bufferout As Variant Dim lap As Boolean Private Sub cmddisplay_Click() Load Form2 Form2.Show End Sub Private Sub cmdStart_Click() Dim i, j, k As Integer Dim x, y, z As Integer Dim CY As Boolean For i = 1 To 12 Mem(i) = i Next i For i = 1 To 12 data(i) = 0 Datacd(i) = 0 Next i x = 0 y = 0 z = 0 'Vong lap chuong trinh chinh lap = True Do 'Cho tin hieu co bang tai tu VXL4 Do CY = False DoEvents If (MSComm1.InBufferCount >= 1) Then Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = 0 If Datain(0) = &H44 Then CY = True End If End If Loop Until CY = True Beep For i = 1 To 12 Mem(i) = Mem(i) - 1 If Mem(i) = 0 Then Mem(i) = 12 End If Next i Memin(1) = Mem(1) Memout(1) = Mem(2) Memin(2) = Mem(4) Memout(2) = Mem(5) Memin(3) = Mem(7) Memout(3) = Mem(8) Memin(4) = Mem(10) Memout(4) = Mem(11) 'Hien thi 12 san pham For i = 1 To 12 If data(Mem(i)) Then Frame1(i - 1).Visible = True Text1(i - 1).Text = Mem(i) Text2(i - 1).Text = data(Mem(i)) If (Datacd(data(Mem(i))) And &H1) = &H1 Then Check1(i - 1).Value = 1 Else: Check1(i - 1).Value = 0 End If If (Datacd(data(Mem(i))) And &H2) = &H2 Then Check2(i - 1).Value = 1 Else: Check2(i - 1).Value = 0 End If If (Datacd(data(Mem(i))) And &H4) = &H4 Then Check3(i - 1).Value = 1 Else: Check3(i - 1).Value = 0 End If Else: Frame1(i - 1).Visible = False End If Next i For i = 1 To 12 If data(Mem(i)) Then Shape3(i - 1).Visible = True Else: Shape3(i - 1).Visible = False End If Next i 'Dieu khien vao cong doan 1 If data(Memin(1)) Then 'Co san pham 'Cong doan 1 lam chua If (Datacd(data(Memin(1))) And &H1) &H1 Then Dataout(0) = &H11 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = 0 Do DoEvents Loop Until MSComm1.InBufferCount >= 1 Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = 0 If Datain(0) &H41 Then data(Memin(1)) = 0 x = x + 1 If x > 4 Then x = 4 End If End If End If End If 'Dieu khien vao cong doan 2 If data(Memin(2)) Then 'Co san pham 'Cong doan 2 lam chua If (Datacd(data(Memin(2))) And &H2) &H2 Then Dataout(0) = &H12 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = 0 Do DoEvents Loop Until MSComm1.InBufferCount >= 1 Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = 0 If Datain(0) &H42 Then data(Memin(2)) = 0 y = y + 1 If y > 4 Then y = 4 End If End If End If End If 'Dieu khien vao cong doan 3 If data(Memin(3)) Then 'Co san pham 'Cong doan 3 lam chua If (Datacd(data(Memin(3))) And &H4) &H4 Then Dataout(0) = &H13 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = 0 Do DoEvents Loop Until MSComm1.InBufferCount >= 1 Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = 0 If Datain(0) &H43 Then data(Memin(3)) = 0 z = z + 1 If z > 4 Then z = 4 End If End If End If End If 'Dieu khien vao cong doan 4 If data(Memin(4)) Then 'Co san pham 'San pham lam xong 3 cong dan chua ? If (Datacd(data(Memin(4))) And &H7) = &H7 Then Dataout(0) = &H14 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = 0 Do DoEvents Loop Until MSComm1.InBufferCount >= 1 Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = 0 data(Memin(4)) = 0 End If End If 'Dieu khien ra cong doan 1 If data(Memout(1)) = 0 Then 'Khong co san pham Dataout(0) = &H21 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = 0 Do DoEvents Loop Until MSComm1.InBufferCount >= 2 Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = 0 If Datain(0) = &H31 Then data(Memout(1)) = Datain(2) Datacd(data(Memout(1))) = Datacd(data(Memout(1))) Or &H1 x = x - 1 If x < 0 Then x = 0 End If End If End If 'Dieu khien ra cong doan 2 If data(Memout(2)) = 0 Then 'Khong co san pham Dataout(0) = &H22 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = 0 Do DoEvents Loop Until MSComm1.InBufferCount >= 2 Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = 0 If Datain(0) = &H32 Then data(Memout(2)) = Datain(2) Datacd(data(Memout(2))) = Datacd(data(Memout(2))) Or &H2 y = y - 1 If y < 0 Then y = 0 End If End If End If 'Dieu khien ra cong doan 3 If data(Memout(3)) = 0 Then 'Khong co san pham Dataout(0) = &H23 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = 0 Do DoEvents Loop Until MSComm1.InBufferCount >= 2 Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = 0 If Datain(0) = &H33 Then data(Memout(3)) = Datain(2) Datacd(data(Memout(3))) = Datacd(data(Memout(3))) Or &H4 z = z - 1 If z < 0 Then z = 0 End If End If End If 'Dieu khien ra cong doan 4 If data(Memout(4)) Then 'Co san pham Dataout(0) = 79 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = 0 Else: 'Khong co san pham Dataout(0) = &H24 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = 0 Do DoEvents Loop Until MSComm1.InBufferCount >= 2 Bufferin = MSComm1.Input Datain() = Bufferin MSComm1.InBufferCount = 0 If Datain(0) = &H34 Then data(Memout(4)) = Datain(2) Datacd(data(Memout(4))) = 0 End If Dataout(0) = 79 Bufferout = Dataout() MSComm1.Output = Bufferout MSComm1.OutBufferCount = 0 End If 'Hien thi 12 san pham sau khi da dieu khien Vao va Ra For i = 1 To 12 If data(Mem(i)) Then Frame1(i - 1).Visible = True Text1(i - 1).Text = Mem(i) Text2(i - 1).Text = data(Mem(i)) If (Datacd(data(Mem(i))) And &H1) = &H1 Then Check1(i - 1).Value = 1 Else: Check1(i - 1).Value = 0 End If If (Datacd(data(Mem(i))) And &H2) = &H2 Then Check2(i - 1).Value = 1 Else: Check2(i - 1).Value = 0 End If If (Datacd(data(Mem(i))) And &H4) = &H4 Then Check3(i - 1).Value = 1 Else: Check3(i - 1).Value = 0 End If Else: Frame1(i - 1).Visible = False End If Next i For i = 1 To 12 If data(Mem(i)) Then Shape3(i - 1).Visible = True Else: Shape3(i - 1).Visible = False End If Next i 'Hien thi so san pham tai cong doan 1 Select Case x Case 0 For i = 0 To 2 Shape4(i).Visible = False Next i Case 1 Shape4(0).Visible = True Shape4(1).Visible = False Shape4(2).Visible = False Shape4(3).Visible = False Case 2 Shape4(0).Visible = True Shape4(1).Visible = True Shape4(2).Visible = False Shape4(3).Visible = False Case 3 For i = 0 To 2 Shape4(i).Visible = True Next i Shape4(3).Visible = False Case 4 For i = 0 To 3 Shape4(i).Visible = True Next i End Select 'Hien thi so san pham tai cong doan 2 Select Case y Case 0 For i = 0 To 2 Shape5(i).Visible = False Next i Case 1 Shape5(0).Visible = True Shape5(1).Visible = False Shape5(2).Visible = False Shape5(3).Visible = False Case 2 Shape5(0).Visible = True Shape5(1).Visible = True Shape5(2).Visible = False Shape5(3).Visible = False Case 3 For i = 0 To 2 Shape5(i).Visible = True Next i Shape5(3).Visible = False Case 4 For i = 0 To 3 Shape5(i).Visible = True Next i End Select 'Hien thi so san pham tai cong doan 3 Select Case z Case 0 For i = 0 To 2 Shape6(i).Visible = False Next i Case 1 Shape6(0).Visible = True Shape6(1).Visible = False Shape6(2).Visible = False Shape6(3).Visible = False Case 2 Shape6(0).Visible = True Shape6(1).Visible = True Shape6(2).Visible = False Shape6(3).Visible = False Case 3 For i = 0 To 2 Shape6(i).Visible = True Next i Shape6(3).Visible = False Case 4 For i = 0 To 3 Shape6(i).Visible = True Next i End Select 'Kiem tra Error (neu co nhieu san pham cung ma Rom tren bang tai) k = 2 For i = 1 To 11 For j = k To 12 If (data(i) = data(j)) And data(i) 0 Then MsgBox "Co san pham cung ma Rom", , "Error" End If Next j k = k + 1 Next i Loop Until lap = False End Sub Private Sub cmdStop_Click() lap = False Unload Form1 End Sub Private Sub Form_Load() MSComm1.Settings = "9600,n,8,1" MSComm1.InputLen = 0 MSComm1.InputMode = comInputModeText MSComm1.CommPort = 2 MSComm1.PortOpen = True End Sub Private Sub Unload_form() MSComm1.PortOpen = False End Sub BAÙO CAÙO KEÁT QUAÛ THI COÂNG * Chöông trình vieát vaø ñoïc Seeprom AT24C02 : Vieát vaø ñoïc ñöôïc ñuùng giaù trò. * Chöông trình ñieàu khieån daây chuyeàn saûn suaát : Chöông trình ñieàu khieån chaïy ñuùng yeâu caàu ñaët ra ban ñaàu cuûa daây chuyeàn saûn xuaát.

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

  • docThesis.doc
  • doc89c51.doc
  • docCover.doc
  • rarProgram.rar
  • docThanks.doc