Tài liệu Thiết kế công cụ nhận dạng phân tích khuôn dạng số dùng trong điều khiển từ xa của Tivi: ... Ebook Thiết kế công cụ nhận dạng phân tích khuôn dạng số dùng trong điều khiển từ xa của Tivi
141 trang |
Chia sẻ: huyen82 | Lượt xem: 1494 | Lượt tải: 0
Tóm tắt tài liệu Thiết kế công cụ nhận dạng phân tích khuôn dạng số dùng trong điều khiển từ xa của Tivi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lôøi môû ñaàu
Ngaøy nay khi khoa hoïc kó thuaät ngaøy caøng phaùt trieån ,ñaëc bieät laø söï phaùt trieån nhaûy voït coâng ngheä ñieän töû , coâng ngheä thoâng tin, töï ñoäng ñieàu khieån vvv.
Nhu caàu aùp duïng nhöõng thaønh quaû khoa hoïc coâng ngheä vaøo trong coâng nghieäp , trong caùc thieát bò gia duïng phuïc vuï cuoäc soáng. YÙù thöùc ñöôïc xu höôùng phaùt trieån cuûa khoa hoïc kó thuaät , yeâu caàu vôùi moät kó sö ñieän töû trong thôøi ñaïi ngaøy nay. Em ñaõ choïn ñeà taøi “Thieát keá coâng cuï phaân tích khuoân daïng soá trong ñieàu khieån töø xa cuûa ti vi”. Vieäc thöïc hieän ñeà taøi ñaõ giuùp cho em coù ñieàu kieän aùp duïng caùc kieán thöùc ñaõ ñöôïc ñaøo taïo trong nhaø tröôøng vaøo moät ñeà taøi mang tính thöïc tieãn. Noù cuõng giuùp cho em caùc kó naêng böôùc ñaàu trong caùc kó thuaät phaùt trieån heä thoáng ,ñaëc bieät la økó thuaät laäp trình vôùi hoï vi ñieàu khieån 8051 hieän ñang söû duïng roäng raõi trong nhieàu lónh vöïc khaùc nhau.
Lôøi caûm ôn !
Em xin chaân thaønh caûm ôn caùc thaày coâ trong khoa Ñieän Töû Vieãn Thoâng tröôøng Ñaïi Hoïc Baùch Khoa Haø Noäi, ñaõ truyeàn ñaït cho em nhieàu kieán thöùc quyù baùu trong nhöõng naêm hoïc vöøa qua.
Ñaëc bieät em xin baøy toû loøng bieát ôn saâu saéc ñeán thaày Kieàu Vieãn Taát Thaønh, tröïc tieáp höôùng daãn giuùp em hoaøn thaønh Ñoà aùn toát nghieäp naøy.
Ñeå hoaøn thaønh Ñoà aùn naøy em cuõng ñöôïc söï chæ baûo, höôùng ñaãn raát nhieàu töø caùc caùn boä kyõ sö phoøng nghieân cöùu coâng ty ñieän töû Haø Noäi. Ñaëc bieät laø anh Leâ Anh Tuù ñaõ taän tình giuùp ñôõ em trong quaù trình thöïc taäp toát nghieäp vaø laøm ñoà aùn toát nghieäp. Em xin chaân thaønh caûm ôn anh cuøng caùc anh chò trong phoøng ñaõ giuùp ñôõ em nhieät tình ñeå em coù theå hoaøn thaønh ñoà aùn toát nghieäp.
Chöông1 :Toång quan veà ñeà taøi toát nghieäp.
1.1. Noäi dung ñeà taøi thieát keá.
Thieát keá moät coâng cuï duøng cho vieäc nhaän daïng, phaân tích … daïng soá lieäu caùc phím treân ñieàu khieån töø xa cuûa Tivi.
1.2. Yeâu caàu cuûa thieát keá.
Maïch phaûi thích öùng ñöôïc caùc cheá ñoä nhaän daïng theo moät soá tieâu chuaån ñieàu cheá maõ hoùa phoå bieán cuûa tín hieäu hoàng ngoaïi duøng trong ñieàu khieån töø xa.
Tuøy theo tieâu chuaån maø ta coù theå choïn cheá ñoä nhaän daïng, giaûi maõ thích hôïp, truyeàn veà PC ñònh daïng cuûa chuaån vaø caùc döõ lieäu ñaõ giaûi maõ ñöôïc theo chuaån ñoù.
Trong quaù trình hoaït ñoäng, maïch coù theå thay ñoåi cheá ñoä giaûi maõ khi coù yeâu caàu töø ngöôøi
söû duïng, sau khi thay ñoåi cheá ñoä giaûi maõ. Maïch seõ chuyeån sang cheá ñoä giaûi maõ môùi,ñeå ñaùp öùng loaïi ñieàu khieån töø xa môùi.
1.3. Höôùng thieát keá cho ñeà taøi.
Nguoàn phaùt tín hieäu hoàng ngoaïi: Söû duïng caùc loaïi ñieàu khieån töø xa töông öùng vôùi caùc chuaån RC5, REC vaø NEC… Trong thieát keá do thôøi gian haïn heïp em chæ thöû vôùi loaïi ñieàu khieån töø xa cuûa PHILIPS,SONY töông öùng vôùi chuaån RC5.
Ñeå coù theå thu ñöôïc tín hieäu hoàng ngoaïi: Ta caàn choïn khoái thu tín hieäu hoàng ngoaïi. Yeâu caàu vôùi boä thu laø phaûi töông thích,toái öu vôùi caû 3 chuaån RC5,REC vaø NEC. Trong thieát keá cô baûn naøy do ta em chæ laøm DEMO vôùi chuaån RC5 ta caàn choïn maét ít nhaát töông thích vôùi chuaån RC5.
Ñeå coù theå choïn ñöôïc mode giaûi maõ môùi trong khi söû duïng ta caàn khoái choïn Mode. Trong thieát keá cuûa em do thôøi gian haïn heïp leân chæ laøm vôùi chuaån RC5 cho neân khoâng caàn khoái choïn mode vaø maëc ñònh luoân cheá ñoä giaûi maõ laø RC5 vaø chæ coù theå giaûi maõ ñöôïc caùc ñieàu khieån töø xa chuaån RC5.
Vaø phaàn cöùng moâ phoûng cuûa ñeà taøi laø giaûi maõ cho chuaån RC5 ta khoâng caàn khoái choïn mode. Trong thieát keá phaàn meàm , söû duïng luoân PC laøm khoái choïn mode töùc laø coù theå söû duïng leänh töø PC ñeå yeâu caàu khoái xöû lí trung taâm thay ñoåi cheá ñoä giaûi maõ.
Khoái xöû lyù trung taâm: Nhieäm vuï cuûa khoái.
Tieáp nhaän cheá ñoä giaûi maõ.
Giaûi maõ theo cheá ñoä giaûi maõ hieän taïi.
Truyeàn veà PC döõ lieäu phaân tích ñöôïc.
Caäp nhaät mode giaûi maõ môùi.
Thay ñoåi cheá ñoä nhaän daïng, giaûi maõ theo mode môùi.
Quaûn lyù giao dieän giao tieáp vôùi PC.
Ñeå coù theå ñaùp öùng ñöôïc nhieäm vuï naøy ta choïn vi ñieàu khieån thuoäc hoï 8051 cuï theå laø vì ñieàu khieån AT 89C52 cuûa ATMEL.
Khoái löu vaø xöû lyù hieån thò khuoân daïng töø maõ .
+ Khoái naøy chính laø PC vôùi caùc nhieäm vuï chính laø:
Môû giao dieän RS232 lieân tuïc ñoïc coång, ghi döõ lieäu vaøo File. Döõ lieäu laø ñònh daïng cho caùc chuaån giaûi maõ vaø caùc byte cuûa caùc töø maõ treân ñieàu khieån töø xa.
Hieån thò khuoân daïng tö ø maõ:
Môû File ñaõ ghi, kieåm tra ñònh daïng cho loaïi File duøng ñeå giaûi maõ.
Hieån thò laàn löôït caùc töø maõ phuø hôïp caùc chuaån.
Sô ñoà khoái toång quaùt nhö sau:
Choïn mode giaûi maõ
Khoái thu tín hieäu hoàng ngoaïi
XÖÛ LYÙ TRUNG TAÂM
Löu, hieån thò töø maõ
1.4.Nguyeân lyù hoaït ñoäng cuûa maïch.
-Maét nhaän tín hieäu hoàng ngoaïi nhaän tín hieäu töø ñieàu khieån töø xa, taïi maét nhaän xaûy ra quaù trình giaûi ñieàu cheá khoâi phuïc laïi doøng tín hieäu soá theo caùc chuaån maõ hoaù khaùc nhau.
-Doøng tín hieäu chöa ñöôïc giaûi maõ ñöôïc ñöa vaøo chaân nhaän daïng cuûa khoái söû lyù trung taâm (chaân ngaét ngoaøi cuûa vi ñieàu khieån). Khoái xöû lyù trung taâm vôùi phaàn meàm nhuùng treân chíp seõ nhaän daïng vaø giaûi maõ doøng soá vaø truyeàn veà PC döõ lieäu giaûi maõ ñöôïc. Vôùi moät phím treân ñieàu khieån töø xa ñöôïc nhaán seõ coù moät töø maõ töông öùng. Khi moät phím ñöôïc nhaän daïng thì khoái xöû lyù trung taâm seõ truyeàn veà moät soá byte tuøy theo ñieàu khieån töõ xa thuoäc chuaån gì. Vôùi chuaån RC5,REC thì seõ truyeàn veà 2 byte khi moät phím ñöôïc nhaán ,coøn vôùi chuaån NEC thì seõ truyeàn veà 4 byte khi moät phím ñöôïc nhaán.
-PC vôùi chöông trình phaàn meàm seõ luoân môû coång RS232 trong quaù trình thu caùc byte soá lieäu sau giaûi maõ, ghi vaøo file. Caùc file naøy seõ ñöôïc söû duïng cho moät chöông trình giaûi maõ khaùc phaân tích khuoân daïng caùc töø maõ cuûa caùc ñieàu khieån theo caùc tieâu chuaån khaùc nhau.
1.5. Höôùng môû roäng cho ñeà taøi.
Tích hôïp ña chuaån ñieàu cheá soùng hoàng ngoaïi laøm cho thieát bò trôû leân ña naêng vôùi nhieàu loaïi tín hieäu töø caùc ñieàu khieån töø xa khaùc nhau. Thöïc hieän baèng caùch naâng caáp phaàn meàm treân chíp, treân PC.
Thay ñoåi nguoàn phaùt soùng,khoái thu soùng khi ñoù ta coù theå cheá taïo moät thieát bò nhaän daïng cho caùc loaïi tín hieäu khaùc ví duï soùng voâ tuyeán, tín hieäu soá treân ñöôøng truyeàn soá.
Coù theå thieát keá coâng cuï töông töï nhöng vôùi loaïi tín hieäu soá coù toác ñoä cao hôn. Ta phaûi ñaùp öùng ñöôïc yeâu caàu veà phaàn cöùng nghóa laø phaûi choïn loaïi chíp xöû lyù toác ñoä cao. Ñeå thích öùng ñöôïc vôùi loaïi tín hieäu coù toác ñoä cao naøy. Phaûi tích hôïp theâm cô cheá maõ hoaù loãi, ñieàu khieån luoàng, kieåm soaùt loãi, cô cheá baét tay giöõa hai beân thu phaùt.
Tích hôïp nhieàu chuaån ñieàu cheá, nhieàu loaïi tín hieäu khaùc nhau treân moät maïch thieát bò duy nhaát . Taïo ra moät thieát bò ña naêng ñeå phaân tích khuoân daïng nhieàu loaïi tín hieäu theo nhieàu chuaån ñieàu cheá khaùc nhau .
Naâng caáp caùc phaàn meàm treân chíp vaø treân PC.
Cuï theå:
Vôùi phaàn thu cuûa PC ta coù theå taïo ra moät option choïn toác ñoä truyeàn thoâng vôùi khoái xöû lyù trung taâm. Phaùt thoâng tin cho khoái xöû lyù trung taâm bieát vaø khôûi taïo laïi cho ñuùng toác ñoä mong muoán.
Vôùi phaàn giaûi maõ hieån thò treân PC. Naâng caáp giao dieän cho chöông trình. Thay ñoåi thuaïât toaùn ñoà hoaï laøm cho doøng bít trôû leân ñoäng hôn, coù nghóa laø ta coù theå quan saùt doøng bít giaûi maõ chaïy treân maøn hình.
Phaàn meàm treân chíp phaûi lieân tuïc kieåm tra yeâu caàu töø PC xem coù thay ñoåi cheá ñoä giaûi maõ, thay ñoåi toác ñoä truyeàn thoâng hay khoâng. Neáu coù töùc khaéc ñaùp öùng yeâu caàu thay ñoåi naøy.
Chöông2:Cô sôû lí thuyeát.
2.1 .Toång quan veà moät soá heä thoáng ñieàu khieån töø xa:
Cuøng vôùi söï phaùt trieån cuûa khoa hoïc kyõ thuaät, ngaøy caøng coù nhieàu caùc heä thoáng ñieàu khieån nhö: heä thoáng ñieàu khieån töï ñoäng, heä thoáng ñieàu khieån töø xa ñöôïc cheá taïo ra ñeå ñaùp öùng nhöõng nhö caàu trong ñôøi soáng con ngöôøi. Caùc phöông thöùc thoâng tin lieân laïc nhö ñieän thoaïi, fax, thö tín… cuõng chieám vai troø quan troïng.
Hieän nay coù nhieàu heä thoáng ñieàu khieån ñöôïc ñöa vaøo hoaït ñoäng raát hieäu quaû nhö: ñieàu khieån baèng hoàng ngoaïi, ñieàu khieån baèng voâ tuyeán, ñieàu khieån baèng tín hieäu DTMF thoâng qua ñieän thoaïi… Moãi heä thoáng ñieàu khieån ñeàu coù nhöõng ñaëc ñieåm söû duïng rieâng chaúng haïn nhö:
Heä thoáng ñieàu khieån baèng hoàng ngoaïi: ngöôøi ñieàu khieån caàn phaûi coù maët taïi nôi söû duïng (boä ñieàu khieån töø xa cuûa Tivi, ñaàu maùy video…)
Heä thoáng ñieàu khieån voâ tuyeán: phaïm vi söû duïng nhaát ñònh, phuï thuoäc vaøo coâng suaát cuûa boä ñieàu khieån.
Heä thoáng ñieàu khieån baèng tín hieäu DTMF: thoâng qua ñieän thoaïi laïi bò giôùi haïn bôûi vieäc ngöôøi söû duïng phaûi coù ñöôøng daây ñieän thoaïi nhöng ngöôïc laïi, heä thoáng naøy coù theå ñieàu khieån töø xa, khoâng bò giôùi haïn bôûi phaïm vi söû duïng vaø coù theå ñieàu khieån töø baát cöù nôi naøo.
Heä thoáng ñieàu khieån baèng hoàng ngoaïi:
Töø laâu, ngöôøi ta ñaõ duøng caùc boä ñieàu khieån baèng daây noái vaøo caùc thieát bò caàn ñieàu khieån ñeå thöïc hieän moät soá thao taùc ñieàu chænh cho thieát bò ôû khoaûng caùch vaøi meùt. Trong moät soá moâi tröôøng laøm vieäc maø söï coù maët cuûa con ngöôøi seõ gaây nguy hieåm nhö moâi tröôøng coù chaát phoùng xaï…
Ngöôøi ta ñaõ duøng caùc thieát bò maùy moùc ñöôïc ñieàu khieån töø xa ñeå laøm vieäc thay vaø con ngöôøi seõ ôû trong moät moâi tröôøng khaùc an toaøn hôn ñeå vaän haønh caùc thieát bò naøy. Tuy nhieân, caùch noái daây vaøo thieát bò ñeå ñieàu khieån töø xa bò haïn cheá do caùc daây daãn noái töø thieát bò ra raát vöôùng, maët khaùc, khi maø caàn ñieàu khieån nhieàu thao taùc cho thieát bò thì soá löôïng daây ñieàu khieån seõ taêng leân töông öùng. Nhöng vieäc laøm treân cuõng coù nhöõng thuaän lôïi nhaát ñònh neân ngöôøi ta ñaõ thöïc hieän noù trong suoát thôøi gian vöøa qua.
Ngaøy nay, khi maø coâng ngheä cheá taïo linh kieän ñieän-ñieän töû coù nhöõng böôùc phaùt trieån vöôït baäc cuøng vôùi vieäc öùng duïng vi xöû lyù vaøo trong caùc thieát bò , caùc boä ñieàu khieån töø xa ñöôïc thieát keá cöïc kyø goïn nheï maø laïi thöïc hieän ñöôïc nhieàu chöùc naêng thoaû maõn moät soá yeâu caàu cho ngöôøi söû duïng maø khoâng caàn daây noái vôùi thieát bò caàn ñieàu khieån.
Ñeå thöïc hieän ñöôïc ñieàu naøy, söï phaùt trieån cuûa coâng ngheä quang ñieän töû laø ñieàu khoâng theå boû qua. Chính caùc duïng cuï quang ñieän töû vaø caùc öùng duïng cuûa noù ñaõ caûi tieán caùc thieát bò duøng trong caùc boä ñieàu khieån töø xa. Caùc duïng cuï naøy coù nhieàu öùng duïng nhö laøm nguoàn saùng, caùc boä ñieàu cheá aùnh saùng, caùc thieát bò hieån thò, caùc heä thoáng truyeàn tin, caùc boä phaùt hieän…
Caùc duïng cuï hieån thò nhö LED (light emitting diode: ñioát phaùt quang) vaø LCD (liquid crystal display: hieån thò tinh theå) ñang lieân tuïc môû roäng aûnh höôûng vaø caûi thieän chaát löôïng. Caùc boä hieån thò coù theå ñöôïc laøm vôùi caùc maïch logic coù saün beân trong ñeå coù theå giao tieáp vôùi maïch tích hôïp hoaëc maùy tính. Caùc sôïi quang ñaõ trôû thaønh phöông tieän thöïc teá ñeå truyeàn thoâng tin treân nhöõng khoaûng caùch xa.
Chuyeån ñoåi tín hieäu quang sang tín hieäu ñieän vaø ngöôïc laïi töø tín hieäu ñieän sang tín hieäu quang laø nguyeân taéc cô baûn ñeå söû duïng coâng ngheä quang ñieän töû. ÔÛ ñaây ta chæ noùi ñeán caùc öùng duïng cuûa linh kieän quang ñieän töû coù lieân quan ñeán vieäc ñieàu khieån töø xa nhö khaû naêng taïo ra, ñieàu cheá vaø phaùt hieän aùnh saùng, caùc linh kieän duøng trong coâng ngheä thoâng tin quang, hieån thò, caùc duïng cuï duøng cho ño löôøng vaø caùc caûm bieán cho caùc muïc ñích ñieàu khieån quaù trình hay ño löôøng. Ta coù sô ñoà khoái cuûa caùc thaønh phaàn khaùc nhau cuûa moät heä thoáng quang ñieän töû.
Nguoàn saùng
Boä ñieàu cheá
Truyeàn
Phaùt hieän & caûm nhaän
Boä laùi
ñieän töû
Boä nhôù
Hieån thò hoaëc phaân tích
Sô ñoà khoái heä thoáng quang ñieän töû
Nhö vaäy, phaàn quan troïng nhaát ñeå ñieàu khieån caùc quaù trình laø boä nhôù vaø boä vi xöû lyù caùc leänh ñieàu khieån nhaän töø nôi ñieàu khieån.
Thoâng thöôøng caùc boä ñieàu khieån töø xa goàm hai thaønh phaàn chính: Phaàn phaùt xung tín hieäu ñieàu khieån vaø phaàn nhaän, xöû lyù tín hieäu ñieàu khieån ñoù. Tuy nhieân, moãi phaàn laø khoái keát hôïp nhieàu khoái coù caùc chöùc naêng khaùc nhau ñeå laøm neân boä ñieàu khieån. Boä phaùt tín hieäu ñieàu khieån töø xa duøng hoàng ngoaïi theo thieát keá seõ goàm coù nhöõng khoái:
Baøn phím ñieàu khieån.
Khoái queùt baøn phím ñeå nhaän bieát caùc phím ñieàu khieån coù ñöôïc aán hay khoâng vaø maõ hoaù caùc tín hieäu ñieàu khieån.
Khoái ñieàu cheá.
Khoái truyeàn tín hieäu ñieàu khieån
Nhö vaäy, ta coù sô ñoà khoái cuûa boä phaùt tín hieäu ñieàu khieån nhö sau:
baøn phím ñieàu khieån
Khoái nhaän phím nhaán & maõ hoaù
Khoái ñieàu cheá
Khoái truyeàn tín hieäu ñieàu khieån
Sô ñoà khoái cuûa boä phaùt tín hieäu ñieàu khieån.
Boä phaän phaùt tín hieäu ñieàu khieån duøng LED hoàng ngoaïi ñeå phaùt caùc xung ñieàu khieån neân ñaàu tieân ta caàn phaûi coù boä phaùt hieän böùc xaï hoàng ngoaïi, hay noùi caùch khaùc laø boä phaän xung ñieàu khieån töø böùc xaï ñöôïc phaùt ra bôûi LED hoàng ngoaïi.
Do xung ñieàu khieån nhaän ñöôïc töø caûm bieán hoâng ngoaïi coù bieân ñoä raát nhoû neân ta phaûi khueách ñaïi leân tröôùc khi ñöa qua boä giaûi ñieàu cheá ñeå laáy laïi giöõ lieäu ñaõ ñöôïc ñieàu cheá tröôùc ñoù. Döõ lieäu naøy ñöôïc ñöa vaøo IC vi ñieàu khieån ñeå giaûi maõ vaø thöïc hieän caùc ñieàu khieån theo quy ñònh tröôùc.
Nhö vaäy, sô ñoà khoái cuûa boä nhaän vaø xöû lyù caùc tín hieäu ñieàu khieån töø boä ñieàu khieån töø xa duøng hoàng ngoaïi nhö sau:
Khoái giaûi ñieàu cheá
Khoái giaûi maõ & xöû lyù caùc tín hieäu ñieàu khieån
Khoái hieån thò
Khoái caûm bieán hoàng ngoaïi
Khoái khueách ñaïi
PHOTODIODE
Sô ñoà khoái cuûa boä nhaän vaø xöû lyù caùc tín hieäu ñieàu khieån töø xa.
Trong thöïc teá, coù nhieàu loaïi böùc xaï vaø boä phaùt nhieät khaùc nhau nhöng chæ ñeà caäp ñeán loaïi böùc xaï ñöôïc öùng duïng roäng raõi trong caùc boä ñieàu khieån töø xa laø böùc xaï hoàng ngoaïi.
Thöïc chaát cuûa boä böùc xaï hoàng ngoaïi laø diode phaùt quang hay goïi vôùi moät thuaät ngöõ quen thuoäc laø LED (light emitting diode) nhöng aùnh saùng do LED phaùt ra coù böôùc soùng naèm trong vuøng hoàng ngoaïi. Böùc xaï hoàng ngoaïi coù böôùc soùng traûi töø 0,7 ñeán 0,3 mm.
Töø quan ñieåm cuûa quang ñieän töû , nguoàn phaùt xaï quan troïng nhaát laø tieáp xuùc baùn daãn, thöôøng ñöôïc goïi laø baùn daãn p-n. Trong tieáp xuùc p-n, baùn daãn loaïi p vaø baùn daãn loaïi n ñöôïc laøm noùng chaûy ñeå hoãn hôïp laïi. Tieáp xuùc naøy coù nhieàu tính chaát trong ñoù coù khaû naêng phaùt xaï.
Böôùc soùng cuûa söï böùc xaï phuï thuoäc nhieàu yeáu toá: thöù nhaát, khe löôïng hoaëc ñieän aùp raøo chaén giöõa caùc möùc naêng löôïng p vaø n maø ñöôïc xaùc ñònh baèng vaät lieäu baùn daãn. Thöù hai laø cheá ñoä taùi hôïp, noù coù theå laø tröïc tieáp khi ñieän töû rôi tröïc tieáp töø daûi daãn xuoáng daûi hoaù trò, hoaëc giaùn tieáp khi ban ñaàu.
2.2.Ñaïi cöông veà quang ñieän töû:
Quang ñieän töû ñöôïc dieãn taû laø nhöõng hieäu öùng hoã töông giöõa nhöõng böùc xaï aùnh saùng vaø ñieän töû, ñoù laø caùc maïch ñieän töû vôùi caùc linh kieän quang ñieän töû coù theå öùng duïng ñöôïc trong kyõ thuaät.
Chuyeån ñoåi caùc tín hieäu quang sang ñieän vaø ngöôïc laïi laø nguyeân taéc cô baûn ñeå söû duïng coâng ngheä quang ñieän töû. Chuùng ta chuû yeáu söû duïng caùc duïng cuï quang ñieän töû coù khaû naêng taïo ra, ñieàu cheá vaø phaùt hieän aùnh saùng, cuõng nhö caùc phaàn töû ñeå truyeàn aùnh saùng, caùc boä nhôù quang vaø xöû lyù tín hieäu quang.
Phoå ñieän töø chaïy töø caùc soùng voâ tuyeán raát daøi ñeán caùc tia vuõ truï cöïc ngaén. Trong quang ñieän töû ta quan taâm ñeán böùc xaï aùnh saùng hoàng ngoaïi (infrared = IR) aùnh saùng thaáy ñöôïc vaø böùc xaï tia cöïc tím (Ultraviolet =UV) coù böôùc soùng traûi töø 1mm ñeán 1m.
Phoå ñieän töø:
Kieåu böùc xaï
Böôùc soùng
Taàn soá
Naêng löôïng löôïng töû (ev)
Soùng voâ tuyeán
(Radio waves)
Soùng VIBA
Hoàng ngoaïi (IR)
Aùnh saùngthaáyñöôïc
Cöïc tím (UV)
Böùc xaï Rontgen (tiaX)
Böùc xaï Gamma (tia )
Tia vuõ truï
100 Km
300mm
0,3mm
0,7m
0,4m
m
mm
pm
pm
3x103
109
1012
4,3x1014
7,5x 1014
1016
3x1018
3x1020
3x1021
1,2x10-11
4x10-6
4x10-3
1,8
3,1
40
1,2x104
1,2x106
Ñoä daøi vaø taàn soá aùnh saùng nhìn thaáy ñöôïc:
700nm 650 600 550 500 450 400nm
IR
Ñoû
Cam
Vaøng
Luïc
Döông
Tím
UV
4,3x1014Hz 4,6x1014 5x1014 5,5x1014 6x1014 6,7x1014 7,5x1014 Aùnh saùng thaáy ñöôïc
Linh kieän baùn daãn quang ñieän töû ñöôïc giôùi haïn vôùi nhöõng linh kieän chaát raén nhöõng vaät lieäu baùn daãn nhö LED, phototransistor (trasistor quang), ñieän trôû quang, Laser baùn daãn…
Linh kieän baùn daãn quang ñieän töû hoaït ñoäng vôùi caùc hieäu öùng nhö:
Söï haáp thuï aùnh saùng qua söï sinh caùc ñieän tích töï do trong baùn daãn (nhaän böùc xaï).
Söï phaùt saùng qua söï phaùt hieän caùc ñieän tích töï do trong baùn daãn (phaùt böùc xaï).
Trong quaù trình phaùt saùng vaø haáp thuï aùnh saùng, ñònh luaät baûo toaøn naêng löôïng vaø xung ñoäng coù giaù trò cho caùc haït tham gia trong quaù trình nhö: Proton, haït ñieän töû.
2.2.1.Led hoàng ngoaïi:
LED hoàng ngoaïi coøn goïi laø nguoàn phaùt saùng hoàng ngoaïi vaät lieäu duøng ñeå cheá taïo noù laø GAAs coù vuøng caám ñoä roäng khoaûng 1,43 ev öùng vôùi böùc xaï khoaûng 900mm. Led hoàng ngoaïi coù hieäu suaát löôïng töû cao hôn vôùi loaïi Led phaùt ra aùnh saùng nhìn thaáy ñöôïc.
Tính chaát löôõng tính cuûa Silic vaãn giöõ nguyeân khi noù ñöôïc pha taïp trong nguyeân vaät lieäu (GAAl) As. Trong tröôøng hôïp naøy ñoä roäng cuûa vuøng caám coù theå thay ñoåi tuyø theo löôïng nhoâm (Al), vôùi caùch naøy, ngöôøi ta coù theå taïo ra daõy soùng giöõa 850mm vaø 900mm vaø do ñoù coù theå taïo söï ñieàu höôûng sao cho LED hoàng ngoaïi phaùt ra böôùc soùng thích hôïp nhaát cho ñieåm cöïc ñaïi cuûa ñoä nhaïy cuûa caùc Detector.
Soùng hoàng ngoaïi coù phoå taàn cuûa soùng ñieän töø chieám moät khoaûng roäng nhaát so vôùi caùc soùng khaùc. Nhöng ñeán nay chöa ñöôïc öùng duïng roäng raõi nhö caùc soùng coù taàn soá thaáp hôn. Vôùi caùc Detector laøm baèng vaät lieäu Atimon-Idium, coù theå doø ñöôïc tia soùng caùch xa haøng Km vôùi ñoä chính xaùc 0,1oc. Vôùi caùch naøy coù theå tìm thaáy moïi vaät vaøo ban ñeâm, caùc veä tinh cho nhöõng khoâng aûnh veà thôøi tieát, caây coái, taøi nguyeân thieân nhieân.
2.2.2.Hoàng ngoaïi gaàn:
Hoàng ngoaïi ñöôïc öùng duïng roäng raõi trong coâng ngheä thoâng tin hieän ñaïi, trong söï töï ñoäng hoùa coâng nghieäp. Löôïng thoâng tin coù theå ñaït ñeán 3Mbit/s… Trong kyõ thuaät truyeàn thoâng tin ñöôïc truyeàn ñi trong sôïi quang, khoâng caàn caùc traïm khueách ñaïi giöõa chöøng. Coù theå truyeàn cuøng luùc 15000 ñieän thoaïi hay 12 keânh truyeàn hình, vôùi sôïi quang coù ñöôøng kính 0,13 mm, vôùi khoaûng caùch 10 Km ñeán 20 Km. Löôïng thoâng tin ñöôïc truyeàn ñi vôùi aùnh saùng hoàng ngoaïi lôùn gaáp nhieàu laàn so vôùi soùng ñieän töø maø ta vaãn duøng.
2.2.3.Nguoàn phaùt saùng hoàng ngoaïi:
Caùc nguoàn saùng nhaân taïo thöôøng chöùa nhieàu soùng hoàng ngoaïi.
IRED: Diode hoàng ngoaïi.
LA: Laser baùn daãn.
Lr: Ñeøn huyønh quang.
Q: Ñeøn thuyû ngaân.
W: Boùng ñeøn ñieän vôùi daây toùc Volfram.
Soùng hoàng ngoaïi coù nhöõng ñaëc tính quang hoïc gioáng nhö aùnh saùng (nhö söï hoäi tuï qua thaáu kính, tieâu cöï…). Aùnh saùng vaø hoàng ngoaïi khaùc nhau raát roõ trong söï xuyeân suoát qua vaät chaát. Coù nhöõng vaät maét ta thaáy “Phaûn chieáu aùnh saùng”, nhöng ñoái vôùi tia hoàng ngoaïi noù laø vaät “phaûn chieáu toài”. Coù nhöõng vaät ta thaáy noù döôùi moät maøu xaùm ñuïc nhöng vôùi aùnh saùng hoàng ngoaïi noù trôû neân thoâng suoát. Ñieàu naøy giaûi thích taïi sao LED hoàng ngoaïi coù hieäu suaát cao hôn so vôùi LED cho maøu xaùnh laù caây, maøu ñoû… Vì raèng vaät lieäu baùn daãn “trong suoát” ñoái vôùi soùng hoàng ngoaïi, tia hoàng ngoaïi khoâng bò yeáu ñi khi noù phaûi vöôït qua caùc lôùp baùn daãn ñeå ra ngoaøi.
Ñôøi soáng cuûa LED hoàng ngoaïi daøi ñeán 100.000 giôø (hôn 11 naêm). LED hoàng ngoaïi khoâng phaùt saùng, ñoù laø lôïi ñieåm trong caùc thieát bò kieåm soaùt vì khoâng gaây söï chuù yù.
2.3.Moät soá chuaån ñieàu cheá maõ hoaõ duøng trong ñieàu khieån töø xa cuûa TI VI.
2.3.1. Chuaån RC5.
M· ho¸ lìng pha
Trong tiªu chuÈn nµy m· ho¸ lìng pha ®îc sö dông ,tÇn sè sãng mang ®îc gi÷ cè ®Þnh t¹i mét tÇn sè nµo ®ã , mét vµi tiªu chuÈn truyÒn dÉn t¬ng tù tÇn sè sãng mang tõ 30 ®Õn 56 khz tryÒn dÉn b»ng mét tõ baät ®Çu b»ng hai bÝt start , tiÕp sau lµ toggle bit (bÝt bËt t¾t thay ®æi gi¸ trÞ sau mçi lÇn phÝm bÊm , vôùi sù thay ®æi nµy cã thÓ ph©n biÖt c¸c word cña nhiÒu phÝm khi chóng liªn tôc ®¬c nhÊn .
5 bit ®Þa chØ sÏ chØ ®Þnh thiÕt bÞ sÏ ®îc diÒu khiÓn.
6 data bit chøa th«ng tin ®iÒu khiÓn (c¸c leänh phÝm trªn ®iÒu khiÓn töø xa ).
§èi víi chuÈn RC5 th× nh÷ng hä m¾t nhaän sau lµ tèi u: TSOP 12xx, TSOP 17xx, TSOP18xx …
®èi víi sãng mang 36 khz : mét bÝt lµ mét burts 32 xung liªn tôc víi tÇn sè 36 khz .
2.3.2. ChuÈn REC
§é réng cña mét tõ data lµ sÊp sØ 70 ms dµi sÊp sØ gÊp 3 lÇn mét tõ cña RC5.
REC sö dông c¸ch ñieàu chÕ kho¶ng c¸ch xung (pulse-distance modulation )
Khu«n d¹ng theo chuÈn REC nhu h×nh vÏ trªn ®©y.
2bÝt bËt t¾t (toggle bit) 4bÝt ®Þa chØ , 6 bÝt lÖnh (command bit).
TÇn sè sãng mang ®îc sö dông trong tiªu chuÈn REC phæ biÕn tõ 30khz ®Õn 56 khz nh trong tiªu chuÈn RC5. Còng cã trêng hîp ®Æc biÖt sãng mang cã tÇn sè lªn tíi 400 khz nhng trong c¸c øng dông th«ng thêng ta chØ quan t©m ñÕn ph¹m vi tÇn sè tõ 30 ®Õn 56 khz th«ng thöôøng kho¶ng c¸ch xung cho bit 0 la 5ms cßn cho bit 1 lµ 7.5 ms hä m¾t nhaän tèi u cho chuÈn nµy lµ : TSOP 11xx vµ TSOP 18xx.
2.3.3.Chuaån NEC
NEC code më ®Çu b»ng c¸ch sö dông 1burts dµi 9ms gäi lµ leader code sau ®ã kho¶ng 4.5ms lµ tõ m· data word.
Khi 1 phÝm ®îc nhÊn leadercode ®îc lÆp l¹i vµ theo sau nã lµ data word .
NEC code sö dông ®iÒu chÕ kho¶ng c¸ch xung nh chuaån REC.
ñòa chØ (address), lÖnh ®iÒu khiÓn (command)®îc truyÒn hai lÇn.§Çu tiªn lµ byte (®Þa chØ hay lÖnh )b×nh thêng sau ®ã lµ byte(®Þa chØ hay lÖnh )®¶o –tÊt c¶ c¸c bit ®îc lÊy bï (NOT).
VÝ dô ta truyÒn byte dÞa chØ nh sau 00110111 vµ byte lÖnh nh sau 00011010 th× dßng bit ®îc truyÒn ®i sau leader code nh sau 00110111’11001000’00011010’11100101’.
BÝt 0 ®îc biÓu diÔn b»ng kho¶ng c¸ch xung lµ 1.125 ms , bÝt 1 ®îc biÓu diÔn b»ng kho¶ng c¸ch xung 2.5ms.
Hä m¾t nhËn tèi u víi chuÈn NEC code nµy lµ TSOP 12xx, TSOP 17xx ,TSOP18xx.
Dâ dµng ®Ó cã thÓ tèi u ho¸ khi thu c¶ 3 tÝn hieäu hoàng ngo¹i theo 3 chuÈn trªn sÏ chän hä m¾t nhËn TSOP 18xx,bëi v× TSOP18xx ®îc sö dông tèt nhÊt cho c¶ RC5 , RECvµ NEC code.
2.3.4. Mét sè ®Æc tÝnh kÜ thuËt cña TSOP18xx, vµ TSOP17xx.
Diod dß vµ bé tiÒn khuyÕch ®¹i ®Æt trong 1 vá .
Bé läc bªn trong cho c¸c tÇn sè PCM.
Cã líp vá bäc chèng l¹i nhiÔu ®iÖn trong m«i trõ¬ng xung quanh .
Kh¶ n¨ng t¬ng thÝch TTL vµ CMOS .
Tiªu tiªu thô n¨ng lîng Ýt .
Kh¶ n¨ng chÞu ¸nh s¸ng xung quanh cao .
Tèc ®é dßng bit cao liªn tôc cao cã thÓ ®Ët tíi 1200 bit/sec.
2.4.Giao tieáp cuûa PC vôùi ngoaïi vi
Thoâng thöôøng coù 3 caùch giao tieáp cô baûn:
Giao tieáp qua Slot.
Giao tieáp qua coång COM.
Giao tieáp qua Printer Port.
Moãi moät caùch giao tieáp noù mang moät tính naêng rieâng vaø moät öu ñieåm rieâng; cho neân tuyø theo nhu caàu söû duïng cuï theå maø aùp duïng sao cho phuø hôïp vaø ñaït hieäu quaû cao nhaát. Sau ñaây xin giôùi thieäu töøng loaïi nhö sau:
2.4.1Giao tieáp qua Slot:
Trong maùy tính ñöôïc cheá taïo saün caùc Slot cho pheùp ngöôøi söû duïng gaén theâm caùc maïch giao tieáp vôùi caùc thieát bò ngoaïi vi khaùc, moãi Slot ñeàu coù caùc ñöôøng Data, ñöôøng ñòa chæ, ñöôøng nguoàn: +12v, -12v, +5v, -5v vaø caùc ñöôøng ñieàu khieån. Vì vaäy neáu thieát keá maïch giao tieáp Slot seõ giaûm ñi nhieàu linh kieän giaûm bôùt boä nguoàn beân ngoaøi, deã ñieàu khieån vaø do ñoù giaûm chi phí thi coâng. Ñaây laø öu ñieåm lôùn cuûa caùch giao tieáp naøy. Tuy nhieân coù moät soá haïn cheá, phaûi laøm Card ñeå gaén vaøo Slot, baát tieän trong vieäc tieáp nhaän tín hieäu, soá lieäu beân ngoaøi. Noù coøn haïn cheá veà khoaûng caùch truyeàn, ñoàng thôøi muoán laøm vieäc phaûi môû voû maùy, ñieàu naøy khaù baát tieän vaø moät soá tröôøng hôïp khoâng cho pheùp.
Sô ñoà chaân cuûa Slot trong maùy PC IBM.
I/O Pin
Signal
I/O
I/O Pin
Signal
I/O
A1
I/O CHCK
I
B1
GND
Ground
A2
SD7
I/O
B2
RESET DRV
O
A3
SD6
I/O
B3
5V DC
POWER
A4
SD5
I/O
B4
IRQ 9
I
A5
SD4
I/O
B5
5V DC
POWER
A6
SD3
I/O
B6
DRQ 2
I
A7
SD2
I/O
B7
12V DC
POWER
A8
SD1
I/O
B8
OWS
I
A9
SD0
I/O
B9
12V DC
POWER
A10
I/O CHRDY
I
B10
GND
Ground
A11
AEN
O
B11
SMENW
O
A12
SA19
I/O
B12
SMENR
O
A13
SA18
I/O
B13
IOW
I/O
A14
SA17
I/O
B14
IOR
I/O
A15
SA16
I/O
B15
DACK 3
O
A16
SA15
I/O
B16
DRQ 3
I
A17
SA14
I/O
B17
DRQ 3
I
A18
SA13
I/O
B18
DACK 1
O
A19
SA12
I/O
B19
Refresh
I/O
A20
SA11
I/O
B20
CLK
O
A21
SA10
I/O
B21
IRQ 7
I
A22
SA9
I/O
B22
IRQ 6
I
A23
SA8
I/O
B23
IRQ 5
I
A24
SA7
I/O
B24
IRQ4
I
A25
SA6
I/O
B25
IRQ3
I
A26
SA5
I/O
B26
DACK 2
O
A27
SA4
I/O
B27
T/C
O
A28
SA3
I/O
B28
BALE
O
A29
SA2
I/O
B29
5V DC
POWER
A30
SA1
I/O
B30
OSC
O
A31
SA0
I/O
B31
GND
Ground
2.4.2.Giao tieáp qua coång noái tieáp:
2.4.2.1.Truyeàn ñoàng boä :
Döõ lieäu ñöôïc truyeàn theo töøng maûng (khoái) vôùi moät toác ñoä xaùc ñònh . Maûng döõ lieäu tröôùc khi ñöôïc truyeàn ñi seõ ñöôïc gaén theâm ôû ñaàu maûng vaø ôû cuoái maûng caùc byte (hoaëc moät nhoùm bít) ñaùnh daáu ñaëc bieät.
2.4.2.2.Truyeàn khoâng ñoàng boä:
Döõ lieäu ñöôïc truyeàn ñi theo töøng kí töï.Kí töï caàn truyeàn ñöôïc ñöôïc gaén theâm moät bit daáu ôû ñaàu ñeå baùo baét ñaàu kí töï (start)vaø moät hoaëc hai bit daáu ôû cuoái ñeå baùo keát thuùc kí töï (stop).ÔÛ phöông phaùp naøy moãi kí töï ñöôïc nhaän daïng rieâng bieät neân noù coù theå ñöôïc truyeàn ñi vaøo baát cöù luùc naøo,töùc laø giöõa caùc kí töï truyeàn ñi coù theå coù caùc khoaûng caùch veà thôøi gian .
Daïng thöùc cuûa döõ lieäu truyeàn ñi theo phöông phaùp truyeàn noái tieáp khoâng ñoàng boä coù daïng nhö sau:
Chieàu cuûa doøng döõ lieäu
Luoân ôû möùc cao Luoân ôû möùc cao
Start D0 D1 D2 D3 D4 D5 D6 D7 Parity Stop Stop
Maõ ASCII cuûa kí töï caàn truyeàn
Tuøy theo loaïi loaïi maõ (Baudot,ASCII,…)ñöôïc choïn trong quaù trình truyeàn thì ta seõ coù ñoä daøi cho maõ kí töï khaùc nhau coù theå laø 5,6,7,8 bit(trong ñoà aùn naøy maõ cuûa kí töï ñöôïc qui ñònh laø maõ ASCII).Vôùi töøng heä thoáng truyeàn tin khaùc nhau thì beân caïnh caùc bit maõ döõ lieäu ta coøn coù theå tuøy choïn coù hoaëc khoâng coù bit Parity ñeå kieåm tra loãi khi truyeàn hoaëc ta coù theå tuøy choïn 1 hoaëc 2 bít Stop,nhöng trong moïi tröôøng hôïp thì baét buoäc phaûi coù 1 bit Start
2.4.2.3. GIÔÙI THIEÄU VEÀ GIAO DIEÄN NOÁI TIEÁP:
Coù nhieàu loaïi giao dieän noái tieáp khi truyeàn nhaän thoâng tin qua coång COM , tuy nhieân khi boä vi xöû lí ñaët ngay gaàn maùy tính ta coù theå söû duïng coång noái tieáp RS-232 ñeå gheùp noái tröïc tieáp.
Giao dieän noái tieáp RS-232 hoaëc coù theå goïi laø V.24 moâ taû giao dieän ñieän aùp thuaàn tuùy.Caùc möùc Logich High hoaëc Low ñeàu laø moät möùc ñieän aùp töø +3V ñeán +12V hoaëc –3V ñeán –12V so vôùi ñöôøng daãn mass noái chung.
Öu ñieåm cuûa giao dieän RS-232 laø vieäc xöû lí raát ñôn giaûn (tìm loãi raát nhanh) neân ñöôïc söû duïng raát roäng raõi vaø phoå bieán neân khaû naêng giao tieáp raát lôùn,haàu heát ôû caùc maùy tính PC ñeàu coù coång RS-232, vì vaäy soá thieát bò ngoaïi vi gheùp noái vôùi maùy tính PC qua giao dieän RS-232 cuõng nhieàu .Veà nhöôïc ñieåm cuûa loaïi giao dieän naøy phaûi keå ñeán khoaûng caùch truyeàn raát bò haïn cheá vaø toác ñoä truyeàn chöa cao.Tuy nhieân trong vieäc thieát keá maïch ngoaïi vi cho ñeà taøi naøy ñeå ñôn giaûn veà thieát keá cuõng nhö nhaèm ñaït ñöôïc yeâu caàu cuûa ñeà taøi, maïch giao tieáp qua coång COM cuûa ñoà aùn seõ söû duïng loaïi giao dieän RS-232.Khi caàn môû roäng ñeà taøi ñoøi hoûi khoaûng caùch truyeàn xa hôn,toác ñoä truyeàn nhanh hôn chaúng haïn chuùng ta seõ phaûi söû duïng loaïi giao dieän tieân tieán khaùc nhö RS-422,RS-485.
2.4.2.4. Baûng thoâng soá veà tính naêng kó thuaät cuaû giao dieän RS-232 / V 24 :
Chöùc naêng Lieân keát ñieåm vôùi ñieåm
Loaïi giao dieän Giao dieän ñieän aùp khoâng ñoái xöùng
Khaû naêng choáng nhieãu Nhoû
Boä ñeäm cöïc ñaïi 1
Boä nhaän cöïc ñaïi 1
Ñoä daøi ñöôøng truyeàn cöïc ñaïi 15 meùt
Toác ñoä truyeàn cöïc ñaïi 20 KBaud ñeán 100 Kbaud
Ñieän aùp loái ra cuûa boä ñeäm:
-Khoâng taûi: -15V , +15V
-Coù taûi : -5V , +5V
Ñieän trôû loái ra cuûa boä ñeäm 3 KOÂm ñeán 7 KOÂm
Ñieän trôû loái vaøo cuûa boä nhaän 3 KOÂm ñeán 7 KOÂm
Ñoä nhaïy cuûa boä nhaän -3V hoaëc +3v
2.4.2.5.Vaøi neùt cô baûn veà coång noái tieáp:
Chaân
(loaïi 9 chaân)
Chaân
(loaïi 25 chaân)
Chöùc naêng (teân goïi)
Loái vaøo - ra
1
2
3
4
5
6
7
8
9
8
3
2
20
7
6
4
5
22
DCD-Data Carrier Detect
RxD –Receive Data
TxD –Transmit Data
DTR –Data terminal Ready
GND –Ground (noái ñaát)
DSR – Data – Set – Ready
RTS – Request – to – Send
CTS – Clear – to – Send
RI – Ring Indicator
Loái vaøo
Loái vaøo
Loái ra
Loái ra
Chung
Loái ra
Loái ra
Loái vaøo
Vieäc truyeàn döõ lieäu xaûy ra ôû treân hai ñöôøng daãn. Qua chaân caém ra TxD (Transmit Data) maùy tính göûi caùc döõ lieäu cuûa noù ñeán maùy kia. Trong khi ñoù caùc giöõ lieäu maø maùy tính nhaän ñöôïc, laïi ñöôïc daãn ñeán chaân noái RxD (Receive Data). Caùc tín hieäu khaùc ñoùng vai troø nhö laø nhöõng tín hieäu hoã trôï khi trao ñoåi thoâng tin vaø vì theá khoâng phaûi trong moïi öùng duïng ñeàu duøng ñeán.
Möùc tín hieäu treân chaân ra RxD tuyø thuoäc vaøo ñöôøng daãn TxD vaø thoâng thöôøng naèm trong khoaûng -12V ñeán +12V. Caùc bit döõ lieäu ñöôïc göûi ñaûo ngöôïc laïi. Möùc ñieän aùp ñoái vôù._.i möùc High naèm giöõa -3V vaø +12V. Doøng döõ lieäu treân coång RS 232 vôùi toác ñoä 9.600 baud.
ÔÛ traïng thaùi tónh treân ñöôøng daãn coù ñieän aùp -12V. Moät bit khôûi ñoäng (Start bit) seõ môû ñaàu vieäc truyeàn döõ lieäu. Tieáp ñoù laø caùc bit döõ lieäu rieâng leû seõ ñeán, trong ñoù nhöõng bit giaù trò thaáp seõ ñöôïc göûi ñi tröôùc tieân. Con soá cuûa caùc bit döõ lieäu thay ñoåi giöõa 5 vaø 8. ÔÛ cuoái cuûa doøng döõ lieäu coøn coù moät bít döøng (Stop bit) ñeå ñaët trôû laïi traïng thaùi loái ra (-12V).
Baèng toác ñoä baud ta thieát laäp toác ñoä truyeàn döõ lieäu. Caùc giaù trò thoâng thöôøng laø 300; 600;1.200; 2.400; 4.800; 9600 vaø 19.200 baud. Kyù hieäu baud töông öùng vôùi soá bít ñöôïc truyeàn trong moät giaây. Chaúng haïn nhö khi toác ñoä baud baèng 9.600 coù nghóa laø coù 9.600 bít döõ lieäu ñöôïc truyeàn trong moãi giaây. Töø ñoù ta suy ra raèng coøn moät bit baét ñaàu vaø bit döøng ñöôïc göûi keøm theo vôùi moät byte döõ lieäu. Nhö vaäy vôùi moät byte ñaõ coù 10 bit ñöôïc göûi. Nhôø vaäy maø coù theå öôùc ñoaùn moät caùch deã daøng löôïng döõ lieäu cöïc ñaïi ñaõ ñöôïc truyeàn. Vôùi toác ñoä 9.600 baud cho pheùp truyeàn nhieàu nhaát laø 960 byte moãi giaây.
Qua caùch öôùc tính ñôn giaûn naøy ta cuõng thaáy ñöôïc moät nhöôïc ñieåm khoâng nhoû cuûa coång truyeàn noái tieáp laø toác ñoä truyeàn döõ lieäu bò haïn cheá. Khuoân maãu truyeàn döõ lieäu caàn phaûi ñöôïc thieát laäp gioáng nhau caû ôû beân göûi vaø nhö ôû beân nhaän.
2.4.2.5.1.Söï trao ñoåi cuûa ñöôøng daãn tín hieäu:
Cuõng nhö ôû coång maùy in, caùc ñöôøng daãn tín hieäu rieâng bieät cuõng cho pheùp trao ñoåi qua caùc ñòa chæ trong maùy tính PC. Trong tröôøng hôïp naøy, ngöôøi ta thöôøng söû duïng nhöõng vi maïch coù möùc ñoä tích hôïp cao ñeå coù theå hôïp nhaát nhieàu chöùc naêng treân moät chíp. ÔÛ maùy tính PC thöôøng coù moät boä phaùt/ nhaän khoâng ñoàng boä vaïn naêng (goïi taét laø UART: Universal Asynchronous Receiver/Transmitter) ñeå ñieàu khieån söï trao ñoåi thoâng tinh giöõa maùy tính vaø thieát bò ngoaïi vi. Phoå bieán nhaát laø vi maïch 8250 cuûa haõng NSC hoaëc caùc theá heä tieáp theo, chaúng haïn nhö 16C550. Boä UART naøy coù 10 thanh ghi ñeå ñieàu khieån taát caû chöùc naêng cuûa vieäc nhaäp vaø xuaát ra döõ lieäu theo caùch noái tieáp. Ta chæ quan taâm ñeán moät soá thanh ghi lieân quan truyeàn daãn döõ lieäu:
Thanh ghi döõ lieäu:(ñòa chæ cô baûn)
Döõ lieäu nhaän ñöôïc hay caàn göûi ñi ñeàu chöùa trong thanh ghi naøy, khi ghi vaøo thanh ghi noù chöùa döõ lieäu truyeàn vaø khi ñoïc thanh ghi thì noù chöùa döõ lieäu nhaän.
Thanh ghi cho pheùp ngaét (ñòa chæ cô baûn +1)
Bit 7 – 4: khoâng söû duïng, thieát laäp veà “0”.
Bit 3 = 1: cho pheùp UART phaùt theo yeâu caàu ngaét theo traïng thaùi Modem.
Bit 2 =1: cho pheùp UART phaùt theo yeâu caàu ngaét cuûa traïng thaùi ñöôøng truyeàn.
Bit 1 = 1: cho pheùp UART phaùt theo yeâu caàu ngaét khi thanh ghi truyeàn roãng.
Bít 0 =1: cho pheùp UART phaùt theo yeâu caàu ngaét khi döõ lieäu nhaän ñaõ saün saøng.
Thanh ghi nhaän dieän ngaét (ñòa chæ cô baûn +2)
Khi xaûy ra ngaét thì ñoïc thanh ghi naøy xem xaûy ra do söï kieän gì.
Bit 7-3: thieát laäp veà 0.
Bit 2,1 = 00: traïng thaùi Modem thay ñoåi.
01: thanh ghi ñôïi truyeàn roãng.
10: döõ lieäu nhaän ñaõ saün saøng.
11: traïng thaùi truyeàn thay ñoåi.
Bit 0 = 1 : khoâng coù yeâu caàu ngaét naøo caàn xöû lyù.
0: coù yeâu caàu ngaét caàn xöû lyù.
Thanh ghi ñieàu khieån thanh truyeàn (ñòa chæ cô baûn +3)
Bit 7: xaùc ñònh mode laøm vieäc cuûa caùc coång.
= 0: bình thöôøng
= 1: ôû mode ñaët toác ñoä baud.
Bit 6 = 0: taét tín hieäu Break (neáu tröôùc ñoù ñang göûi).
=1: göûi tính hieäu Break.
Bit 5: khoâng ñöôïc Bios duøng ñeán.
Bit 4 = 0: bit Parity laø leû.
=1: bit Parity laø chaün.
Bit 3 = 0: khoâng söû duïng phöông phaùp kieåm tra chaün leû.
1: coù söû duïng phöông phaùp kieåm tra chaün leû.
Neáu bit naøy baèng 0 thì bit 4 khoâng coù taùc duïng.
Bit 2 = 0: söû duïng moät bit stop
= 1: söû duïng 1.5 bit stop neáu 5 bit/kyù töï.
2 bit stop neáu 6-8 bit/kyù töï.
Bit 1,0 = 00: 5 bit/kyù töï.
01: 6 bit/kyù töï.
10: 7 bit/kyù töï.
11: 8 bit/kyù töï.
Thanh ghi ñieàu khieån modem (ñòa chæ cô baûn +4)
Bit 7-5: khoâng söû duïng ñöôïc thieát laäp veà 0.
Bit 4 = 0: bình thöôøng.
1: kieåm tra Loop back.
Bit 3 = 1: kích hoaït keát xuaát OUT2.
Bit 2 = 1: kích hoaït keát xuaát OUT1.
Line Status Register.
Bit 7: khoâng söû duïng ñöôïc thieát laäp veà 0.
Bit 6 = 1: thanh ghi dòch roãng.
Bit 5 = 1: thanh ghi ñôïi truyeàn roãng.
Bit 4 = 1: nhaän ñöôïc tín hieäu Break.
Bit 3 = 1: nhaän ñöôïc loãi khung.
Bit 2 = 1: nhaän ñöôïc loãi chaün leû.
Bit 1 = 1: loãi Overrun, xaûy ra khi kyù töï tröôùc ñoù bò maát.
Bit 0 =1: nhaän ñöôïc döõ lieäu.
Thanh ghi traïng thaùi Modem (ñòa chæ cô baûn +6)
Modem Status Register
Bit 7 = 1: lieân laïc vôùi Modem ñaõ ñöôïc thieát laäp.
Bit 6 = 1: chæ thò chuoâng.
Bit 5 = 1: Modem göûi tín hieäu DSR veà maùy tính baùo ñaõ saün saøng nhaän döõ lieäu.
Bit 4 = 1: Modem göûi tín hieäu CTSà maùy tính baùo ñaõ saün saøng phaùt döõ lieäu.
Bit 3 = 1: bit 7 vöøa chuyeån traïng thaùi.
Bit 2 = 1: Bit 6 vöøa chuyeån traïng thaùi.
Bit 1 = 1: Bit 5 vöøa chuyeån traïng thaùi.
Bit 0 = 1: bit 4 vöøa chuyeån traïng thaùi.
Gioáng nhö ôû coång gheùp noái vôùi maùy in, caùc thanh ghi ñöôïc trao ñoåi qua oâ nhôù trong vuøng vaøo/ ra. Ñòa chæ ñaàu tieân coù theå tôùi ñöôïc cuûa coång noái tieáp ñöôïc goïi laø ñòa chæ cô baûn. Caùc ñòa chæ ghi tieáp theo ñöôïc ñaït tôùi baèng vieäc coäng theâm soá thanh ghi ñaõ gaëp cuûa boä UART vaøo ñòa chæ cô baûn.
Ñòa chæ cô baûn cuûa coång noái tieáp cuûa maùy tính PC coù theå toùm taét trong caùc baûng ñòa chæ sau:
COM 1(coång noái tieáp thöù nhaát) : Ñòa chæ cô baûn = 3F8 (Hex).
COM 2 (coång noái tieáp thöù hai) : Ñòa chæ cô baûn = 2F8 (Hex).
COM 3 (coång noái tieáp thöù ba) : Ñòa chæ cô baûn = 3E8 (Hex).
COM 4 ( coång noái tieáp thöù tö) : Ñòa chæ cô baûn = 2E8 ( Hex).
2.4.3.Giao tieáp qua Printer Port:
Ñaây laø caùch giao tieáp truyeàn döõ lieäu song song giöõa maùy tính vaø maùy in khaùc vôùi caùch giao tieáp coång COM, Data ñöôïc truyeàn song song cuøng moät luùc 8 bit neân toác ñoä truyeàn coù theå ñaït ñeán 1000bps, Connector cuûa coång naøy coù 25 chaân.
Taát caû caùc ñöôøng Data vaø tín hieäu ñieàu khieån duø coù möùc Logíc töông thích vôùi TTL: Ngöôøi laäp trình coù ñieàu khieån cho pheùp hoaëc caám caùc tín hieäu Interrupt töø ngoõ vaøo. Do ñoù vieäc giao tieáp khaù thuaän lôïi, tuy nhieân haïn cheá veà khoaûng caùch truyeàn so vôùi caùch giao tieáp coång COM/
2.4.3.1.Vaøi neùt cô baûn veà coång gheùp noái vôùi maùy in:
Coång gheùp noái vôùi maùy in hay thöôøng goïi laø giao dieän Centronics. Ñeå giao tieáp ta noái maùy in vôùi maùy tính ñöôïc thöïc hieän qua oå caém 25 chaân ôû phía sau maùy tính. Nhöng ñaây khoâng chæ laø choã noái maùy in maø khi söû duïng maùy tính vaøo muïc ñích ño löôøng vaø ñieàu khieån thì vieäc gheùp noái cuõng thöïc hieän qua oå caém naøy. Qua coång naøy döõ lieäu ñöôïc truyeàn ñi song song vaø toác ñoä truyeàn döõ lieäu cuõng ñaït ñeán möùc lôùn ñaùng keå. Taát caû caùc ñöôøng daãn cuûa coång naøy ñeàu töông thích TTL, nghóalaø chuùng ñeàu cung caáp moät möùc ñieän aùp naèm giöõa 0 vaø 5V. Do ñoù ta coøn caàn phaûi löu yù laø ôû caùc ñöôøng daãn noái vaøo coång naøy khoâng ñöôïc ñaët caùc möùc ñieän aùp quaù lôùn. Söï saép xeáp caùc chaân ra ôû coång maùy in vôùi taát caû caùc ñöôøng daãn ñöôïc moâ ta nhö hình:
Chaân
Moâ taû
Höôùng
1
/Strobe
Ngoõ ra
2
Data 0
Ngoõ ra
3
Data 1
Ngoõ ra
4
Data 2
Ngoõ ra
5
Data 3
Ngoõ ra
6
Data 4
Ngoõ ra
7
Data 5
Ngoõ ra
8
Data 6
Ngoõ ra
9
Data 7
Ngoõ ra
10
/ACK (acknowledge)
Ngoõ vaøo
11
Busy
Ngoõ vaøo
12
PE (Paper Empty)
Ngoõ vaøo
13
Select
Ngoõ vaøo
14
/AF ( Auto Feed)
Ngoõ ra
15
/Error
Ngoõ vaøo
16
Init (Initialize Printer)
Ngoõ ra
17
/Select Input
Ngoõ ra
18-25
GND
STB (strobe) – chaân soá 1: Ngoõ ra (ngoõ vaøo maùy in); xung strobe ñeå ñoïc data vaø xung naøy coù ñoä roäng hôn 0,5us taïi thieát bò ñaàu cuoái möùc tín hieäu laø 1, khi ñoïc tín hieäu thì xuoáng möùc thaáp.
Data: chaân soá 2…9: Ngoõ ra (ngoõ ra maùy in). Maùy tính seõ göûi thoâng tin qua 8 ñöôøng xuaát data naøy.
ACK (Acknowledge): chaân soá 10: Ngoõ vaøo (ngoõ ra maùy in) xung naøy xaáp xæ 5 us. Khi xung naøy xuoáng thaáp seõ.
BUSY: chaân 11: Ngoõ vaøo (ngoõ ra cuûa maùy in). Tín hieäu naøy ôû möùc cao seõ baùo raèng maùy in ñang baän, khoâng theå nhaän döõ lieäu. Noù coù möùc cao trong nhöõng tröôøng hôïp:
-Trong suoát thôøi gian döõ lieäu vaøo.
-Trong suoát thôøi gian maùy in ñang ôû cheá ñoä in.
-Trong suoát thôøi gian maùy in ñang ôû traïng thaùi baùo loãi.
Tín hieäu PE: chaân soá 12: Ngoõ vaøo (Ngoõ ra maùy in). Tín hieäu naøy ñang ôû möùc cao, ñeå baùo raèng maùy in ñang ôû traïng thaùi heát giaáy.
SLCT (select) : chaân soá 13: Ngoõ vaøo (ngoõ ra maùy in) . Tín hieäu naøy ôû möùc cao ñeå baùo raèng maùy in ñang ôû traïng thaùi löïa choïn.
AUTO FEED: chaân soá 14: Ngoõ ra (ngoõ vaøo maùy in). Tín hieäu naøy ôû möùc thaáp ñeå baùo raèng maùy in töï ñoäng dòch giaáy leân moät doøng sau khi in.
ERROR: chaân soá 15: Ngoõ vaøo ( ngoõ ra maùy in) . Tín hieäu naøy xuoáng möùc thaáp khi maùy in ñang traïng thaùi heát giaáy, offline, error.
INT (Intialize Printer) : Chaân soá 16: Ngoõ ra (ngoõ vaøo maùy in). Khi tín hieäu naøy xuoáng möùc thaáp, ñieàu khieån maùy in seõ Reset maùy vaø vuøng ñeäm maùy in seõ ñöôïc xoaù. Tín hieäu naøy bình thöôøng ôû möùc cao, ñoä roäng xung lôùn hôn 50s ôû ñaàu thu.
SLCTIN (select input): chaân soá 17: Ngoõ ra ( ngoõ vaøo maùy in). Döõ lieäu ñöôïc ñöa vaøo maùy in khi tín hieäu naøy ôû möùc thaáp.
2.4.3.2.Trao ñoåi vôùi caùc ñöôøng daãn tín hieäu:
Taát caû caùc ñöôøng daãn tín hieäu vöøa ñöôïc giôùi thieäu cho phep trao ñoåi qua caùc ñòa chæ boä nhôù cuûa maùy tính PC. 17 ñöôøng daãn cuûa coång maùy in saép xeáp thaønh 3 thanh ghi: ghi döõ lieäu, ghi traïng thaùi vaø ghi ñieàu khieån. Moïi hoaït ñoäng xuaât nhaäp data duøng coång song song ñeàu ñöôïc thöïc hieän thoâng qua 3 port 8 bit ñöôïc mang teân: Data port, Control port vaø Sratus port. Caùc ñòa chæ ñöôïc saép xeáp tuaàn töï.
Caùc giaù trò ñòa chæ ñieån hình:
Printer
Data Port
Status Port
Control
LPT1
3BCH
3BDH
3BEH
LPT2
378H
379H
37AH
LPT3
278H
279H
27AH
Thoâng thöôøng ña soá caùc maùy tính thöôøng ñöôïc thieát keá duøng ñòa chæ 378H cho LPT1.
Data register:
Vò trí bit
Coâng duïng
Höôùng
Bit 7
Data Bit 7
Ra
Bit 6
Data Bit 6
Ra
Bit 5
Data Bit 5
Ra
Bit 4
Data Bit 4
Ra
Bit 3
Data Bit 3
Ra
Bit 2
Data Bit 2
Ra
Bit 1
Data Bit 1
Ra
Bit 0
Data Bit 0
Ra
Control register:
Ñòa chæ duøng cho thanh ghi ñieàu khieån laø 37AH öùng vôùi coång LPT1 (hoaëc 27 AH öùng vôùi coång LPT2). Thoâng thöôøng noù ñöôïc PC duøng ñeå ñieàu khieån maùy in vôùi baûng ñònh nghóa chöùc naêng caùc bit trong thanh ghi nhö sau:
Vò trí bit
Coâng duïng
Höôùng
Bit 7
Not used
Bit 6
Not used
Bit 5
Direction
Bit 4
IRQ Enable
Ra
Bit 3
/Select Input
Ra
Bit 2
Init
Ra
Bit 1
/Auto Feed
Ra
Bit 0
/Strobe
Ra
Status register:
Ñòa chæ duøng cho thanh ghi traïng thaùi laø 379H öùng vôùi coång LPT1 (hoaëc 279 H öùng vôùi coång LPT2). Thanh ghi naøy ñöôïc söû duïng ñeå phaûn hoài traïng thaùi hoaït ñoäng cuûa maùy in veà PC, do ñoù höôùng truyeàn döõ lieäu seõ laø töø thieát bò ngoaïi vi vaøo maùy tính vôùi baûng ñònh nghóa chöùc naêng hoaït ñoäng nhö sau:
Vò trí bit
Coâng duïng
Höôùng
Bit 7
BUSY
Vaøo
Bit 6
/ACK
Vaøo
Bit 5
PE
Vaøo
Bit 4
Select
Vaøo
Bit 3
/Error
Vaøo
Bit 2
/IRQ
Vaøo
Bit 1
reserved
Bit 0
Reserved
Ñòa chæ ñaàu tieân ñaït ñeán ñöôïc cuûa coång maùy in ñöôïc xem nhö laø ñòa chæ cô baûn. Ñòa chæ cô baûn ñoàng nhaát vôùi ñòa chæ thanh ghi döõ lieäu. Thanh ghi traïng thaùi ñöôïc ñaït tôùi döôùi “ñòa chæ cô baûn +1”. ÔÛ ñaây caàn chuù yù raèng möùc logic cuûa BUSY ( chaân 11) ñöôïc saép xeáp ngöôïc vôùi thanh ghi traïng thaùi. Thanh ghi ñieàu khieån vôùi 4 ñöôøng daãn loái ra cuûa noù ñaët döôùi ñòa chæ “ñòa chæ cô baûn +2”.
ÔÛ ñaây laïi caàn chuù yù tôùi söï ñaûo ngöôïc cuûa caùc tín hieäu Strobe, Auto Feed vaø Select Input.
*Vuøng ñòa chæ vaøo/ra cuûa maùy tính PC/AC
Ñòa chæ 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-04F
Boä phaùt thôøi gian (8254)
060-06F
Boä kieåm tra baøn phím (8232)
070-07F
Ñoàng hoà thôøi gian thöïc (MC 146818)
080-09F
Thanh ghi traïng thaùi DMA (LS 670)
0A0-0AF
Boä ñieàu khieån ngaét 2 (8259)
0C0-0CF
Boä ñieàu khieån DMA2 (8237)
0E0-0EF
Döï tröõ cho baûng maïch chính
0F8-0FF
Boä ñoàng xöû lyù 80x70
1F0-1F8
Boä ñieàu khieån ñóa cöùng
200-20F
Coång game
278-27F
LPT 2
2B0-2DF
Card EGA 2
2E8-2FF
COM 4
2F8-2EF
COM 2
300-31F
Duøng cho card môû roäng
320-322F
Boä ñieàu khieån ñóa cöùng
360-36F
Coång noái maïng LAN
378-37F
LPT 1
380-38F
Coång noái tieáp ñoàng boä 1
3A0-3AF
Coång noái tieáp ñoàng boä 2
3B0-3B7
Maøn hình ñôn saéc
3C0-3CF
Card EGA
3D0-3DF
Card CGA
3E8-3EF
COM 3
3F0-3E7
Boä ñieàu khieån ñóa meàm
3F8-3FF
COM 1
Chöông 3 :Thieát keá cuï theå.
3.1.Thieát keá phaàn cöùng.
3.1.1. Khoái nguoàn cung caáp .
3.1.1.1.Sô ñoà maïch nguoàn.
Qua sô ñoà treân cho thaáy caùc linh kieän trong maïch chæ caàn nguoàn moät chieàu 5volt öôùc tính doøng cung caáp cho toaøn maïch döôùi 200mA, coâng suaát döôùi 1watt,ñoä bieán ñoåi ñieän aùp ra 0,5%.
Thoâng thöôøng ñeå thieát keá boä nguoàn coù coâng suaát thaáp, nhöng ñoä oån ñònh cao, ngöôøi ta hay duøng IC oån aùp, choïn caùc IC 78xx laø tieän lôïi nhaát.Trong khuoân khoå ñoà aùn naøy ta choïn IC 7805 ñeå laáy ra ñieän aùp oån ñònh 5 v.
3.1.1.2. Caùc thoâng soá cuûa IC:
LM 7805 : 50mA < Io < 1A,Po < 15w
7v DC < Vin < 20v DC
3.1.1.3. Ñieän aùp ra :
Min Type Max
4,8v 5v 5,2v
3.1.1.4.Ñaëc tính cuûa IC :
Doøng cung caáp döôùi 1A.
Hoaït ñoäng ñoäc laäp khoâng phuï thuoäc vaøo beân ngoaøi.
Baûo veä quaù taûi nhieät beân trong.
Töï ñoäng ngaét maïch khi quaù doøng.
Ñoä gia giaûm aùp ra 2 ñeán 4%.
Daûi nhieät ñoä cho pheùp hoaït ñoäng –55 C ñeán 150 C.
3.1.2. Khoái xöû lyù trung taâm.
Khoái xöû lí trung taâm chòu traùch nhieäm giaûi maõ doøng soá phaùt ra töø ñieàu khieån töø xa cuûa tivi . Ñöùng ôû trung taâm laø vi ñieàu khieån AT89C52. Sôûõ dó duøng AT89C52 maø khoâng duøng caùc IC khaùc trong hoï MCS-51TM laø vì IC naøy coù 3 timer 16-bit, phuø hôïp cho hoaït ñoäng ñieàu khieån nhö : moät timer cung caáp xung ñeå taïo baudrate cho truyeàn thoâng noái tieáp RS-232, moät timer ñeám duøng ñeå giaûi maõ chuaån RC5 , moät timer taïo ngaét ñeå giaûi maõ cho chuaån REC vaø NEC.
Trong thieát keá DEMO cho chuaån RC5 thì coù theå chæ caàn söû duïng vi ñieàu khieån AT89C51 laø ñuû coøn khi tích hôïp ñuû caû3 chuaån trong moät thieát keá duy nhaát ta phaûi söû duïng moät vi ñieàu khieån thuoäc hoï 8052 ñieån hình laø AT89C52.
Boä dao ñoäng goàm thaïch anh X1 vaø 2 tuï C1, C2 ñöôïc noái ñeán chaân XTAL1 vaø XTAL2. Xung clock cho caùc hoaït ñoäng beân trong cuûa AT89C52 seõ coù taàn soá baèng taàn soá cuûa thaïch anh chia cho 12. Thoâng thöôøng, ngöôøi ta hay duøng thaïch anh 12MHz ñeå taàn soá xung clock laø 1MHz, töông öùng vôùi moät chu kyø maùy toán 1ms neân raát deã taïo moät timer thôøi gian thöïc chính xaùc. Tuy nhieân trong maïch laïi duøng thaïch anh 11,059MHz laø ñeå taïo baudrate chính xaùc. Hoaït ñoäng taïo baudrate coù theå giaûi thích nhö sau : ñoái vôùi hoï MCS-51TM, ngöôøi ta phaûi duøng moät timer (thöôøng laø timer1) vaø toác ñoä traøn cuûa noù seõ taïo ra baudrate. Khi ñoù, ta coù coâng thöùc:
BAUDRATE = TOÁC ÑOÄ TRAØN TIMER1 ¸ 12
Ví duï, giaû söû ta muoán coù toác ñoä 1200 baud thì tính nhö sau :
1200 = toác ñoä traøn timer1 ¸ 12
Þ toác ñoä traøn timer1 = 1200x32 = 38,4KHz
Neáu thaïch anh coù taàn soá 12MHz thì timer1 ñöôïc clock vôùi taàn soá 1MHz hay 1000KHz. Ñeå coù toác ñoä traøn laø 38,4KHz thì timer1 phaûi traøn sau moãi 1000 ¸ 38,4 = 26,04 xung clock (laøm troøn laø 26). Do timer ñeám leân vaø seõ traøn khi chuyeån töø FFh sang 00h, caàn phaûi naïp soá -26 vaøo timer vaø theá laø baudrate ñöôïc taïo ra.
Nhö ta ñaõ thaáy, trong pheùp tính treân coù laøm troøn, ñieàu naøy daãn ñeán sai soá trong baudrate taïo ra. Töø ñoù ta caàn phaûi tìm thaïch anh coù taàn soá sau cho baudrate taïo ra khoâng coù sai soá ñeå vieäc truyeàn thoâng ñaûm baûo chính xaùc. Qua caùc pheùp tính thì thaïch anh 11,059MHz cho baudrate raát chính xaùc. Baûng sau seõ cho thaáy söï so saùnh sai soá khi duøng thaïch anh 12MHz vaø thaïch anh 11,059MHz trong moät soá baudrate thoâng duïng :
BAUDRATE
TAÀN SOÁ THAÏCH ANH
SMOD
GIAÙ TRÒ NAÏP
BAUDRATE THÖÏC SÖÏ
SAI SOÁ
9600
2400
1200
19200
9600
2400
1200
12,000MHz
12,000MHz
12,000MHz
11,059MHz
11,059MHz
11,059MHz
11,059MHz
1
0
0
1
0
0
0
-7(F9H)
-13(F3H)
-26(E6H)
-3(FDH)
-3(FDH)
-12(F4H)
-24(E8H)
8923
2404
1202
19200
9600
2400
1200
7%
0,16%
0,16%
0
0
0
0
(Neáu SMOD = 1 thì baudrate = toác ñoä traøn timer1 ¸ 16)
Maïch reset goàm C3, R2 cho taùc vuï auto-reset (reset khi môùi caáp nguoàn). Ngoaøi ra coøn coù R1 vaø SW1 cho taùc vuï manual-reset (reset baèng tay khi aán phím SW1 baát cöù khi naøo).
Chaân P3.2 vaø P3.3 laø ngoõ ra cuûa Port3 cuõng ñoàng thôøi laø ngoõ vaøo cuûa ngaét ngoaøi.Chaân ngaét ngoaøi INT0 duøng cho vieäc nhaän daïng tín hieäu ñi ra töø maét nhaän hoàng ngoaïi ñeû khoái xöû lí trung taâm giaûi maõ .
3.1.3. Khoái giao tieáp giöõa PC vaø khoái xöû lyù trung taâm
Khoái naøy ñaûm nhaän vai troø truyeàn thoâng giöõa khoâi xöû lí trung taâm vôùi maùy vi tính qua coång noái tieáp (theo chuaån RS-232).
Töø sô ñoà maïch treân, ta thaáy raèng vieäc truyeàn thoâng dieãn ra thoâng qua 3 daây : TXD, RXD, vaø GND, töùc laø khoâng duøng cheá ñoä baét tay baèng phaàn cöùng (caëp DSR/DTR hay CTS/RTS). Hình thöùc naøy dieãn ra khaù phoå bieán bôûi vì toác ñoä maùy vi tính hieän nay raát cao, baát kyø luùc naøo cuõng coù theå xöû lyù ñöôïc. Khoâng phaûi nhö luùc tröôùc : coù luùc maùy vi tính ñang laøm vieäc gì ñoù thì phaûi kieåm tra xem maùy vi tính laøm xong chöa, neáu xong roài thì thöïc hieän vieäc truyeàn thoâng. Ñoái vôùi khoái xöû lí trung taâm tuy toác ñoä chaäm (côõ vaøi MHz), nhöng do ñöôïc thieát keá chuyeân duïng (chæ laøm moät coâng vieäc gì ñoù) neân dó nhieân laø ñaùp öùng deã daøng. Do ñoù, ta boû ñi hai trong boán ñöôøng truyeàn cuûa MAX232 (boû R2 vaø T2). Neáu vì lyù do gì ñoù maø caàn phaûi baét tay thì ta coù theå duøng cheá ñoä baét tay baèng phaàn meàm thoâng qua caëp Xon/Xoff.
Ñaàu ra cuûa khoái xöû lí trung taâm ñöôïc thieát keá cuøng loaïi vôùi ñaàu ra cuûa maùy vi tính (loaïi male, vaø gioáng chöùc naêng chaân) neân baét buoäc phaûi ñaáu cheùo daây nhö treân sô ñoà.
Choïn coång noái tieáp cuûa vi ñieàu khieån ôû mode 1 (SM0 = 1, SM1 = 0) ñeå truyeàn 8 bit döõ lieäu vaø khoâng coù bít chaún leõ, coù baudrate thay ñoåi ñöôïc.
Trong thieát keá naøy ta choïn toác ñoä truyeàn thoâng giöõa khoái xöû lí trung taâm vaø PC laø 9600 baud. Toác ñoä naøy ñaùp öùng ñöôïc vieäc truyeàn soá lieäu töø khoái xöû lí trung taâm veà PC trong khuoân khoå ñoà aùn naøy. Bôûi vì ta choïn tín hieäu ñaàu vaøo khoái xöû lí trung taâm laø tín hieäu hoàng ngoaïi vaø ta giaû söû raèng vieäc baám caùc phím treân nguoàn phaùt soùng (caùc ñieàu khieån töø xa laø rôøi raïc ). Khuoân daïng soá lieäu khi truyeàn laø 1 start bit ,1stop bit ,8 data bit,khoâng kieåm tra chaün leû. Khuoân daïng soá lieäu nhö vaäy phuø hôïp vôùi vieäc truyeàn thoâng giöõa khoái xöû lí trung taâm (vi ñieàu khieån hoï 8051 ) vôùi coång RS232 cuûa PC.
Trong giao tieáp giuõa khoái xöû lí trung taâm vaø PC ta khoâng tieán haønh kieåm soaùt loãi khi truyeàn bôûi vì trong khuoân khoå ñoà aùn naøy ñöôøng truyeàn cuûa ta ngaén,toác ñoä truyeàn thoâng khoâng cao vaø moâi tröôøng khoâng chòu aûnh höôûng lôùn töø caùc nguoàn nhieãu ñieän vaø töø.
Neáu ta tích hôïp theâm cô cheá kieåm soaùt loãi laø khoâng caàøn thieát vì nhö vaäy giaûi thuaät seõ phöùc taïp hôn. Hieäu suaát truyeàn cuõng vì vaäy maø giaûm xuoáng. Sau naøy khi naâng caáp thieát keá naøy vôùi loaïi tín hieäu coù toác ñoä cao hôn vieäc truyeàn soá lieäu yeâu caàu chính xaùc hôn thì vieäc tích hôïp theâm cô cheá kieåm soaùt loãi laø caàn thieát.
3.1.4.Khoái choïn mode .
+Ta coù theå söû duïng moät baøn phím ôû beân ngoaøi moãi laàn goõ phím thay ñoåi cheá ñoä giaûi maõ seõ saûn sinh moät ngaét ñöa vaøo chaân ngaét ngoaøi cuûa khoái xöû lí trung taâm (chaân INT1 chaúng haïn ) trình phuïc vuï ngaét ngoaøi chaân INT1 seõ ñöôïc goïi vaø ñoïc vaøo maõ phím. Caên cöù vaøo maõ phím ñoïc vaøo ñeå bieát ñöôïc cheá ñoä giaûi maõ laø gì .
+Ta coù theå söû duïng chính PC laøm khoái choïn mode trong quaù trình thu soá lieäu truyeàn veà töø khoái xöû lí trung taâm. Neáu ngöôøi duøng aán moät trong caùc phím chöùc naêng naøo ñoù laäp töùc PC seõ phaùt leänh yeâu caàu khoái xöû lí trung taâm thay ñoåi cheá ñoä giaûi maõ. Ñaây chính laø phöông aùn em thöïc hieän trong ñoà aùn toát nghieäp naøy khi thieát keá thuaät toaùn cho caû 3 chuaån.
+ Trong thieát keá DEMO cho chuaån RC5. Vì chæ coù moät chuaån duy nhaát neân khoâng caàn khoái choïn mode ,maëc ñònh luoân cheá ñoä giaûi maõ laø giaûi maõ cho chuaån RC5.
3.1.5.Khoái maét nhaän.
Choïn loaïi maét nhaän treân thò tröôøng theo chuaån TSOP18xx hoaëc moät soá chuaån khaùc sao cho töông thích vôùi ít nhaát chuaån RC5 söû duïng trong demo thieát keá naøy.Sô ñoà phoái gheùp maét nhaän hoàng ngoaïi vôùi khoái xöû lí trung taâm nhö sau.
(*) ñeå ngaên ngöøa nhieãu do nguoàn nuoâi.
(**) ñieän aùp caáp coù theå thaêng giaùng töø 4.5v ñeán 5.5 v
3.2. Thieát keá phaàn meàm.
3.2.1. Thieát keá löu ñoà thuaät toaùn thu treân PC vaø thay ñoåi cheá ñoä giaûi maõ töø PC.
Chöông trình thu treân PC phaûi ñaûm baûo ñöôïc caùc yeâu caàu sau:
Cho pheùp ngöôøi söû duïng choïn ñöôïc COMPORT.
Cho pheùp löïa choïn toác ñoä Baud.
Kieåm soaùt löu löôïng thu vaøo baèng boä ñeäm.
Coù theå döøng thu theo yù muoán. Khi döøng thu thì chöông trình ghi boä ñeäm vaøo File.
coù theå thay ñoûi cheá ñoä giaûi maõ baèng caùch goõ vaøo moät soá phím ñaõ laäp trình tröôùc .
Löu ñoà thuaät toaùn nhö sau:
Nhaán B
Nhaán C
Ghi chuoãi ñònh daïng vaøo file tröôùc ,môû laïi file ghi boå xung
môû file ghi theo kieåu nhò phaân…
BEGIN
Choïn coång COM, choïn toác ño.
Ñôïi moät söï kieän
Coù döõ lieäu
Ghi vaøo boä ñeäm
Boä ñeäm traøn
ESC
Ghi boä ñeäm vaøo File,môû laïi file ghi boå xung
Ghi boä ñeäm vaøo File
end
Xuaát RC5MODE
Nhaán A
Xuaát RECMODE
Xuaát NECMODE
ESC
3.2.2.Chöông trình giaûi maõ,hieån thò treân PC:
Chöông trình phaûi laøm caùc coâng vieäc sau:
Naïp file töø ñóa ñeå chuaån bò giaûi maõ.
Kieåm tra xem coù ñuùng chuûng loaïi file maø caàn giaûi maõ hay khoâng. Neáu khoâng ñuùng thì ta phaûi naïp file khaùc hoaëc coù theå thoaùt.
Xöû lyù file ñeå giaûi maõ baèng caùch ñoïc file ra danh saùch moùc noái duyeät danh saùch moùc noái vaø xöû lyù noù theo caùc tieâu chuaån giaûi maõ, hieån thò khaùc nhau.
Hieän thò treân maøn hình theo caùc tieâu chuaån.
Coù theå quan saùt theo hai chieàu ngöôïc nhau baèng caùch söû duïng phím LEFT arraw vaø Right arraw. Trình töï xöû lyù nhö sau:
Coù theå nhaán ESC ñeå thoaùt khoûi chöông trình.
coù theå quan saùt daïng caùc töø maõ cuûa caùc chuaån trong khi söû duïng caùc phím duyeät traùi vaø duyeät phaûi .
Naïp file,töø ñóa
Duyeät danh saùch moùc noái vaø xöû lyù danh saùch
Môû file, kieåm tra ñònh daïng file
Ñoïc file ra danh saùch moùc noái , coù kieåm soaùt boä nhôù
Hieän thò ñoà hoaï
END
BEGIN
Ta boá trí caùc haøm:
Input_Char_File_ name () -> Nhaäp teân file
Môû File Open_file (.)
Haøm coù nhieäm vuï môû File. Neáu file khoâng môû ñöôïc yeâu caàu ngöôøi duøng phaûi naïp teân file khaùc vaøo. Sau khu môû ñöôïc file roài khi kieåm tra ñònh daïng cuûa file ñoù coù ñuùng hay khoâng . Neáu ñuùng chuaån bò sang böôùc tieáp theo> Khoâng ñuùng ñònh daïng phaûi naïp file khaùc vaøo.
Haøm Print_Data_In_file (.) in noäi dung file duøng giaûi maõ maø thoâi.
Haøm Lnit_Graphics(..) coù nhieäm vuï khôûi taïo caùc tham soá ñoà hoaï ban ñaàu.
Trong haøm naøy coù kieåm tra loãi ñoà hoaï. Neáu ñoà hoaï coù loãi thì seõ thoaùt ngay.
Haøm RC5_Draw_Bit1(int bitnum)veõ bít 1 chuaån RC5
Haøm RC5_Draw_Bit0 (int bitnum)veõ bít 0 chuaån RC5
Haøm RC5_Draw_Dataword(UINT32 RC5_DataWord )veõ caû töø maõ chuaån RC5.
Haøm REC_Draw_Bit (x,y) söû duïng ñeå veõ buùt noùi chung cuûa chuaån REC.
Haøm REC_Draw_Dataword(UINT32 REC_DataWord )veõ caùc töø maõ chuaån REC.
NEC_Draw_bit (x,y…) veõ caùc bít cuûa chuaån NEC.
Haøm NEC_Draw Dataword veõ caû töø maõ chuaån NEC.
Haøm Init_List (.): Khôûi taïo danh saùch moùc noái.
Haøm Insert: Sau khi ñoïc töøng byte trong teäp ra caáu truùc khaùc. Cheøn bieán caáu truùc naøy vaøo danh saùch moùc noái.
Haøm Make_List (,.): Taïo ra danh saùch moùc noái ( giaûi maõ hieån thò) töø döõ lieäu coù trong file.
Haøm Free_List () duøng ñeå giaûi phoùng boä nhôù cho danh saùch.
Haøm Print_List (.) duøng ñeå in noäi dung danh saùch moùc noái tröôùc khi xöû lyù vaø sau khi xöû lyù ra maøn hình.
Haøm Processing_List: xöû lyù danh saùch theo caùc tieâu chuaån khaùc nhau.
Haøm Display_Decode: Hieån thò caùc töø maõ töông öùng vôùi caùc chuaån treân maøn hình. Töø traùi sang phaûi vaø ngöôïc laïi khi ngöôøi duøng goõ vaøo phím Left arrow vaø Right Arraw.
Löu ñoà thuaät toaùn cho töøng haøm nhö sau:
Input_Char_File_Name :
Nhaäp leân file
OK = False
OK = 0
Teân file khoâng hôïp leä
Teân file hôïp leä döøng laïi ñeå xem
Kieåm tra teân file coù hôïp leä
OK = True
OK = false
END
BEGIN
ñuùng
ñuùng
sai
sai
ñuùng
sai
Ñuùng
sai
Ñuùng
File name?
OK = False
Môû File
OK = true
OK = False
OK = True
Môû file thaønh coâng
Kieåm tra ñònh daïng file
OK = True
Begin
END
sai
Haøm Open_file
Haøm Print_Data_In_file().
Iput charFile name
Open_file()
Ñoïc File
Kieåm tra cuoái File
In ra maøn hình
Begin
END
Haøm Init_Graphics:
Haøm naøy coù nhieäm vuï khôûi taïo ñoà hoïavaø kieåm tra xem coù loãi ñoà hoïa hay khoâng ,neáu coù loãi thì thoaùt khoûi chöông trình .
Khôûi taïo cheá ñoä ñoà hoaï cheá ñoä VGA. VGAHI
Thoâng baùo loãi ñoà hoaï
Hieän thò caùc thoâng baùo cho ngöôøi duøng
Kieåm tra loãi ñoà hoïa
Return
EXIT
Begin
Haøm F_Con_Vert1.
bieán ñoåi 2 byte cao, thaáp thaønh 1 tö maõ cuûa chuaån RC5 vaø REC
Dòch traùi 8 Bit
Eùp kieåu byte cao sang long vaø ñöa vaøo 1 bieán long
Traû veá töø maõ chuaån RC5 chöùa trong bieùn kieåu long
Eùp kieåu byte thaáp sang long vaø ñöa vaøo bieán long
Begin
END
Haøm F_Con_Vert2.
Bieán ñoåi 4 Byte theo thöù töï thaønh 1 töø maõ chuaån NEC.
Eùp kieåu byte sang long ñöa byte thaáp nhaát vaøo bieán chöùa.
Dòch traùi 8 Bít
Bieán chöùa dòch traùi 8 bit
Eùp kieåu byte sang long ñöa byte thöù 2 vaøo
Eùp kieåu byte sang long ñöa byte thöù2 vaøo
Traû veà töø maõ
Ñöa Byte thöù 4 vaøo
Dòch sang traùi 8 Bit
Begin
END
Haøm RC5_Draw_Dataword .
Haøm naøy seõ veõ caùc töø maõ cuûa chuaån RC5.
Veõ bit 1
I = 13
Veõbit0
Bít(i) = 1
I = --
I > 0
Begin
END
Haøm REC_Draw_Dataword.
Haøm naøy seõ veõ caû töø maõ cuûa chuaån REC.
I = --
I = 11
x = x +32
x = x +50
Bít(i) = 1
REC Drawbit
I > 0
Begin
Begin
Haøm NEC Draw DataWord
I=0
begin
Söû lí leader codeban ñaàu
i=31;
Bit (i)=1;
Veõ bit 1
Veõ bit 0
i--
End
Haøm INSERT.
Haøm naøy chæ coù nhieäm vuï ñôn giaûn laø caáp phaùt boä nhôù cho töøng nuùt cuûa danh saùch duøng ñeå hieån thò,sau ñoù cheøn node ñoù vaøo danh saùch hieån thò . Dó nhieân laø ta coù kieåm tra xem PC coù khaû naêng caáp phaùt boä nhôù hay khoâng. Khi file giaûi maõ cuûa ta quaù lôùn khoâng theå caáp phaùt boä nhôù cho toaøn boä döõ lieäu trong file thì khaû naêng caáp phaùt boä nhôù cuûa PC seõ quyeát ñònh ñoä daøi cuûa danh saùch hieån thò.
Caáp phaùt boä nhôù thaønh coâng
Caáp phaùt boä nhôù cho node
Thoâng baùo khoâng…..
Thaønh coâng
Ñöa node vaøo danh saùch
Return
Begin
END
Haøm Freelist.
Haøm naøy coù nhieäm vuï giaûi phoùng vuøng nhôù daønh cho danh saùch moùc noái ñaõ ñöôïc caáp phaùt. Thuaät toaùn cho haøm naøy ñôn giaùn laø duyeät danh saùch ñeán cuoái danh saùch , loaïi boû töøng nuùt trong danh saùch sau ñoù ñaët con troû danh saùch veà NULL.
End
Temp=first->next
begin
First=NULL
Temp=First
Temp!=NULL
Free(first);
First=temp
return
Haøm MakeList.
Haøm naøy coù nhieäm vuï taïo danh saùch hieån thò. Noù seõ coù nhieäm vuï ñoïc file ñöa töøng byte döõ lieäu trong file vaøo moät caáu truùc maø caáu truùc naøy seõ giuùp ta xöû lí danh saùch hieån thò moät caùch thuaän lôïi. Vieäc xöû lí ñoà hoïa cung vì theá maø ñôn giaûn hôn raát nhieàu khi file cuûa ta seõ coù nhieàu caùc byte döõ lieäu cuûa caùc chuaån khaùc nhau.
Return (.)
Ñöa vaøo caáu truùc
Ñöa vaøo danh saùch moùc noái
File roãng
Exit
Ñoïc File
Cuoái File
Ñoïc ñöôïc
Begin
END
Ñuùng
sai
Ñuùng
sai
Haøm Print_list:
In data trong node troû bôûi ptr
Ptr=first_List
Danh saùch roãng=NULL
Dich con troû
Cuoái danh saùch
begin
exit
End
Haøm Processing List.
Begin
Kieåm tra tröôøng data cuûa node 1 coù laø 255,node2 coù laø 64, 65,66 hay khoâng ,neáu khoâng thoaøt vì 2byte ñaøu tieân xaùc ñònh ñònh daïng cho chuaån ñaøu tieân
Coù ñöôïc currenmode sau khi kieåm tra 2 node ñaàu tieân,ñaùnh daáu tröôøng mode , pos cuûa 2 node ñaâøu tieân
Chöa cuoái danh saùch
Dòch con troû sang node keá tieáp
Gaùn currentmode cho tröôøng mode cuûa node hieän taïi vaø keá tieáp,söû lí mode ,pos chocaùc node naøy
Datacuûa node khaùc 255
Data cuûa node keá tieálaø 64,65,66
Thay ñoåi Cuurent_Mode,xaùc laäp mode pos ch 2 node naøy
end
Ñuùng
Ñuùng
Ñuùng
sai
sai
sai
exit
Goõ vaøo moät phím
Temp=first
begin
List!=NULL
LEFT
ESC
RIGHT
Dòch traùi temp
Dòch phaûi temp
return
Temp=NULL
Temp=NULL
Temp=last
Temp=first
=1
Kieåm tra temp->mode
=2
=3
Tuøy giaù trò temp->pos
Laáy ra 2 byte ñeå gheùp thaø._.
puts("LENTH OF FILE NAME <=25! ");
gets(Char_File_Name);
if( ( (strlen(Char_File_Name)==0) || (strlen(Char_File_Name)>25) ) )
ok=false;
else ok=true;
if (ok==false)
{
puts (" FILE NAME ERROR!... ");
puts("HIT ANY KEY!...");
puts("HIT ESC TO EXIT....");
ch=getch();
if(ch==27) exit(0) ;
else ok=false;
}
else
{
puts("FILE NAME SUCCESS! ...");
puts("HIT ANY KEY!...");
getch();
}
}
while( ok==false);//lap cho den khi nhap ten file dung
}
//----------------------------------------------------------------
void Open_File()
{
FILE *fp; //con tro file
bool ok;
UINT8 Test_Read_Fileformatarray[2];
char ch;
do
{
puts("NOW! REOPEN THIS FILE...");
puts("HIT ANY KEY...");
getch();
Input_Char_File_Name();//nhap ten file
puts(" FILE NAME... ");
puts( Char_File_Name);
getch();
fp = fopen(Char_File_Name,"rb");//mo tep doc kieu nhi phan
if (fp==NULL)
{
ok=false;
puts("FILE BLANK.... " );
puts("HIT ANY KEY... LOOP ");
getch();
}
else
{
puts("FILE NOT BLANK! ...");
puts("HIT ANY KEY!...");
getch();
fread(Test_Read_Fileformatarray,1,2,fp);
if( (Test_Read_Fileformatarray[0] == FORMAT0) && (Test_Read_Fileformatarray[1]==FORMAT1))
{
ok = true; //dung dinh dang
puts("VIEW FORMAT... " );
printf("\n VALUE1 %d ",int (Test_Read_Fileformatarray[0]));
printf("\n VALUE2 %d ",int (Test_Read_Fileformatarray[1]));
getch();//dung lai de xem
}
else
ok = false; // sai dinh dang
if(ok==true)
{
File_Ptr=fp;
return;
}
else // khong dung dinh dang
{
puts("FORMAT ERROR...");
printf("\nWRONG FORMAT1 %d ",int (Test_Read_Fileformatarray[0]));
printf("\nWRONG FORMAT2 %d",int (Test_Read_Fileformatarray[1]));
puts("EXIT?.......");
puts("HIT ESC TO EXIT...");
ch=getch();
if (ch==27) exit(0);
}
}
}
while(ok==false);
}
//-------------------------------------
void Print_Data_In_File(void)
{
bool ok;
getch();
do
{
Input_Char_File_Name();// nhap lai ten file
/*mo file de quan sat noi dung file*/
File_Ptr=fopen(Char_File_Name,"rb"); //mo lai file de doc
if (File_Ptr==NULL) // khong mo duoc
{
puts("COULD NOT OPEN THIS FILE...");
ok=false;
puts("HIT ANY KEY ...");
getch();
}
else // mo duoc
{
puts("THIS FILE OPENED SUCCESSFULLY ...");
puts("HIT ANY KEY...");
getch();
ok=true;
}
} while(ok==false);
char ch;
int num=0; // so cac phan tu doc tu tep
puts("DATA IN THIS FILE ...");
puts("HIT ANY KEY...");
puts("BYTE OF FILE...");
while(!feof(File_Ptr))
{
int Test_Read_File=fread(&ch,1,1,File_Ptr) ;
if(Test_Read_File<0)
{
puts("COULD NOT READ THIS FILE...");
break;
}
num++;
puts("BYTE READ ...");
printf(" %d ,", ch);
}
puts("HIT ANY KEY TO CONTINUE...");
getch();
puts("NUMBER BYTE OF FILE...");
printf("\n %d ,",num-1);
fcloseall();
}
//----------------------------------------
void Init_Graphics(void )
{
int gr_drive;
int gr_mode;
gr_drive= VGA;
gr_mode= VGAHI;
initgraph(&gr_drive,&gr_mode,"F:\\TC\\BGI");
/* loi do hoa*/
if (graphresult()!=grOk)//loi do hoa
{
puts("MESSAGE...");
puts("GRAPHICS ERROR!...");
puts("HIT ANY KEY TO EXIT...");
getch(); //doi den khi go vao mot phim
exit(0); // thoat
}///end if
/*khong loi*/
puts(" *************************************************** ");
puts(" MESSAGE... ");
puts(" HIT KEY <- TO VIEW LEFT... ");//cacthong diep
puts(" HIT KEY -> TO VIEW RIGH... " );
puts(" HIT ESC EXIT... ");
puts(" MUMMUM... ");
puts(" OK... ");
puts(" HIT OTHER KEY SCREEN WILL STILL STOP ...");
puts(" *************************************************** ");
getch();//doi den khi go vao mot phim
}
//-----------------------------------------
/*ham ve bit 1*/
void RC5_Draw_Bit1(int bitnum)
{
moveto((560-40*bitnum),200);
linerel(0,-50);
linerel(20,0);
linerel(0,50);
}
//-------------------------------------------------
void RC5_Draw_Bit0( int bitnum) /*ham nay ve bit0 cua chuan RC5*/
{
moveto(( 540-40*bitnum),200);
linerel(0,-50);
linerel(20,0);
linerel(0,50);
}
//---------------------------------------
UINT32 F_Con_Vert1(UINT8 bytelow,UINT8 bytehigh)
{
UINT32 DataWord = 0;
DataWord |= (UINT32)bytehigh;
DataWord = DataWord<<8;
DataWord |= (UINT32)bytelow;
return DataWord;
}
//-------------------------------------------
UINT32 F_Con_Vert2(UINT8 x,UINT8 y,UINT8 z,UINT8 t)//tu byte thap den byte cao
{
UINT32 DataWord=0;
DataWord|=(UINT32)t;
DataWord=DataWord<<8;
DataWord|=(UINT32)z;
DataWord=DataWord<<8;
DataWord|=(UINT32)y;
DataWord=DataWord<<8;
DataWord|=(UINT32)x;
return DataWord;
}
//------------------------------------------------------
void RC5_Draw_Dataword(UINT32 RC5_DataWord) /*ham nay ve tu ma cua chuan RC5*/
{
int i;
char* namekeypressed;//ten phim nhan
UINT8 command; //lenh
command=RC5_DataWord&0x3f;//'0011'1111'quan tam den 6 bit command
if (command ==0) namekeypressed="CHANNEL0";
else if (command ==1) namekeypressed="CHANNEL1";
else if (command ==2) namekeypressed="CHANNEL2";
else if (command ==3) namekeypressed="CHANNEL3";
else if (command ==4) namekeypressed="CHANNEL4";
else if (command ==5) namekeypressed="CHANNEL5";
else if (command ==6) namekeypressed="CHANNEL6";
else if (command ==7) namekeypressed="CHANNEL7";
else if (command ==8) namekeypressed="CHANNEL8";
else if (command ==9) namekeypressed="CHANNEL9";
else if (command ==12) namekeypressed="STANDBY";
else if (command ==16) namekeypressed="MASTER VOLUME + ";
else if (command ==17) namekeypressed="MASTER VOLUME -";
else if (command ==18) namekeypressed="BRIGHNESS +";
else if (command ==19) namekeypressed="BRIGHNESS -";
else if (command ==50) namekeypressed="FAST REWIND";
else if (command ==52) namekeypressed="FAST RUN FORWARD";
else if (command ==53) namekeypressed="PLAY";
else if (command ==54) namekeypressed="STOP";
else if (command ==55) namekeypressed="RECORDING";
setbkcolor(BLACK);
setcolor(DARKGRAY);
rectangle(10,10,629,469);
setcolor( LIGHTGREEN);
rectangle(15,20,619,459);
moveto(15,200);
lineto(619,200);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
setcolor(MAGENTA);
outtextxy(200,230,"RC5_DATAWORD");
outtextxy(200,270,"BI PHASE CODING");
setcolor( GREEN);///mau Green
outtextxy(20,100,"2 start");
outtextxy(100,100,"1 toggle");
outtextxy(190,100,"5 address");
outtextxy(360,100 ,"6 command");
setcolor( LIGHTRED);
moveto(20,145);
lineto(100,145);
moveto(20,145);
lineto(25,142);
moveto(20,145);
lineto(25,148);
moveto(100,145);
lineto(95,148);
moveto(100,145);
lineto(95,142);
line(20,140,20,150);
line(100,140,100,150);
//--------------------------------------
moveto(100,145);
lineto(140,145);
moveto(100,145);
lineto(105,142);
moveto(100,145);
lineto(105,148);
moveto(140,145);
lineto(135,148);
moveto(140,145);
lineto(135,142);
line(140,140,140,150);
//-----------------------------------
moveto(140,145);
lineto(340,145);
moveto(140,145);
lineto(145,142);
moveto(140,145);
lineto(145,148);
moveto(340,145);
lineto(335,148);
moveto(340,145);
lineto(335,142);
line(340,140,340,150);
//--------------------------------------
moveto(340,145);
lineto(580,145);
moveto(340,145);
lineto(345,142);
moveto(340,145);
lineto(345,148);
moveto(580,145);
lineto(575,148);
moveto(580,145);
lineto(575,142);
line(580,140,580,150);
setcolor(40);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,1);
outtextxy(200,290,"**************************** ");
outtextxy(200,310,"HIT KEY <- TO VIEW LEFT... ");
setcolor(30);
outtextxy(200,330,"HIT KEY -> TO VIEW RIGH... ");
setcolor(35);
outtextxy(200,350,"HIT KEY_HOME TO GO HEADER LIST... ");
setcolor(30);
outtextxy(200,370,"HIT KEY_END GO TAILER LIST... ");
setcolor(35);
outtextxy(200,390,"HIT ESC TO EXIT...");
setcolor(40);
outtextxy(200,410,"HIT OTHER KEY NO THING TO DO...");
setcolor(RED);
setbkcolor(BLACK);
for( i =13 ;i>=0; i--)
{
if ((RC5_DataWord>>i)&1 == 1)
{
RC5_Draw_Bit1(i);
moveto((560-40*i),150);
lineto((560-40*i-3),155);
moveto((560-40*i),150);
lineto((560-40*i+3),155);
setcolor(GREEN );
outtextxy((555-40*i),210,"|1|");
setcolor(RED);
}
else
{
RC5_Draw_Bit0(i);
moveto((560-40*i),200);
lineto((560-40*i-3),195);
moveto((560-40*i),200);
lineto((560-40*i+3),195);
setcolor(BLUE);
outtextxy((555-40*i),210, "|0|" );
setcolor(RED);
}
}
}
//-----------------------------------------------------
void REC_Draw_Bit(int x0,int y0,int Fill_pattern, int Fill_Color)/*ham nay ve tung bit cua chuan RECS 80*/
{
moveto (x0,y0);
linerel(0,-70);
linerel(15,0);
linerel(0,70);
setfillstyle(Fill_pattern,Fill_Color);
bar(x0,y0,x0+15,y0-70);
}
//--------------------------------------------------------------
void REC_Draw_Dataword(UINT32 REC_DataWord) /*ham nay ve tu ma cua chuan RECS80*/
{
int i ;
int x=20;
int x01;
int y01;
int y=200;
setbkcolor(BLACK);
setcolor(YELLOW);
moveto(20,200);
lineto(620,200);
setcolor(GREEN);
rectangle(10,10,629,469);
setcolor( LIGHTGREEN);
rectangle(15,20,619,459);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,1);
outtextxy(200,270,"REC_DATAWORD");
outtextxy(200,290,"**************************** ");
outtextxy(200,310,"HIT KEY <- TO VIEW LEFT... ");
setcolor(30);
outtextxy(200,330,"HIT KEY -> TO VIEW RIGH... ");
setcolor(35);
outtextxy(200,350,"HIT KEY_HOME TO GO HEADER LIST... ");
setcolor(30);
outtextxy(200,370,"HIT KEY_END GO TAILER LIST... ");
setcolor(35);
outtextxy(200,390,"HIT ESC TO EXIT...");
setcolor(40);
outtextxy(200,410,"HIT OTHER KEY NO THING TO DO...");
setcolor(RED);
setbkcolor(BLACK);
setcolor(GREEN);
REC_Draw_Bit(x,y,SLASH_FILL,RED);
for( i =11 ;i>=0; i--)
{
if(((REC_DataWord >>i)&1)==1)
{
x01=x+23;
y01=220;
x+=50;
REC_Draw_Bit(x,y,SLASH_FILL,RED);
setcolor(GREEN);
outtextxy(x01,y01,"|1|");
setcolor(RED);
}
else
{
x01=x+13;
y01=220;
x+=32;
REC_Draw_Bit(x,y,SLASH_FILL,RED);
setcolor(BLUE);
outtextxy(x01,y01,"|0|");
setcolor(RED);
}
}
}
//---------------------------------------------------------------
void NEC_Draw_Bit(int x0,int y0,int width,int Fill_pattern, int Fill_Color)/*ham nay ve tung bit cua chuan NEC*/
{
moveto (x0,y0);
linerel(0,-50);
linerel(width,0);
linerel(0,50);
setfillstyle(Fill_pattern,Fill_Color);
bar(x0,y0,x0+width,y0-50);
}
//---------------------------------------------------
void NEC_Draw_Dataword(UINT32 NEC_DataWord) /*ham nay ve tu ma cua chuan NEC*/
{
int i;
int x=20;
int y=200;
int x01;
int y01;
setbkcolor(BLACK);
setcolor(YELLOW);
moveto(20,200);
lineto(620,200);
rectangle(10,10,629,469);
setcolor( LIGHTGREEN);
rectangle(15,20,619,459);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,2);
outtextxy(200,250,"NEC_DATAWORD");
setcolor(45);
outtextxy(200,290,"**************************** ");
outtextxy(200,310,"HIT KEY <- TO VIEW LEFT... ");
setcolor(30);
outtextxy(200,330,"HIT KEY -> TO VIEW RIGH... ");
setcolor(35);
outtextxy(200,350,"HIT KEY_HOME TO GO HEADER LIST... ");
setcolor(30);
outtextxy(200,370,"HIT KEY_END GO TAILER LIST... ");
setcolor(35);
outtextxy(200,390,"HIT ESC TO EXIT...");
setcolor(40);
outtextxy(200,410,"HIT OTHER KEY NO THING TO DO...");
setcolor(25);
NEC_Draw_Bit(x,y,50,WIDE_DOT_FILL,RED);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,1);
setcolor(35);
outtextxy(x,230,"LEADER");
setcolor(40);
outtextxy(x+50,130,"HEADER");
x=x+75;
setcolor(45);
NEC_Draw_Bit(x,y,4,WIDE_DOT_FILL,RED);
setcolor(RED);
for( i =32 ;i!=0; i--)
{
if ((NEC_DataWord>>i)&1==1)
{
x01=x+9;
y01=230;
x=x+20;
NEC_Draw_Bit(x,y,4,WIDE_DOT_FILL,RED);
setcolor(GREEN);
outtextxy(x01,y01,"1");
setcolor(RED);
}
else
{
x01=x+5;
y01=230;
x=x+12;
setcolor(BLUE);
NEC_Draw_Bit(x,y,4,WIDE_DOT_FILL,RED);
outtextxy(x01,y01,"0");
setcolor(RED);
}
}
}
//---------------------------------------------
void F_Init_List(LIST**Header_List_Ptr,LIST**Tailer_List_Ptr)
{
*Header_List_Ptr=NULL;
*Tailer_List_Ptr=NULL;
}
//----------------------------------------------------------//
void Insert_List(LIST** Header_List_Ptr,LIST **Tailer_List_Ptr,DISPLAY Node_Dis)//chen nut vao cuoi danh sach
{
LIST *Node_Ptr;
Node_Ptr=(LIST*)malloc(1*sizeof (LIST));
if(Node_Ptr!=NULL)
{
Node_Ptr->node=Node_Dis;// dua du lieu
Node_Ptr->prev=NULL;//gan bangNULL
Node_Ptr->next=NULL;//gan bangNULL
if(*Header_List_Ptr==NULL)//vi tri dau tien,danh sach rong
{
*Header_List_Ptr=Node_Ptr;//phan dau tien
*Tailer_List_Ptr=Node_Ptr;//phan dau tien
}
else //vi tri thu hai, Header_List_Ptr,last la cac bien toan cuc
{
(*Tailer_List_Ptr)->next=Node_Ptr;//containptr sau last
Node_Ptr->prev=(*Tailer_List_Ptr);//bo xung containptr sau last
(*Tailer_List_Ptr)=Node_Ptr;//dich con tro last vi tri moi
}
}
else
{
puts("COULD ALLOC MEMMORY...");
puts("HIT ANY KEY...");
getch();
return;// tro lai hm go
}
}
//----------------------------------------------
void Free_List(LIST **Header_List_Ptr,LIST**Tailer_List_Ptr) //xuat phat tu dau danh sach
{
LIST *Temp_List_Ptr;//con tro toi dau danh sach
if ((*Header_List_Ptr)==NULL)
{
puts("LIST EMPTY...");
puts("HIT ANY KEY...");
getch();
return;
}
//danh sach khac rong
Temp_List_Ptr=*Header_List_Ptr;
while( Temp_List_Ptr!=NULL)//Header_List_Ptr!=NULL
{
Temp_List_Ptr=(*Header_List_Ptr)->next;//dich Temp_List_Ptr
free(*Header_List_Ptr);//giai phong vi tri truoc
(*Header_List_Ptr)=Temp_List_Ptr;//gan vitri moi
}
*Header_List_Ptr= NULL;//giai phong con tro
*Tailer_List_Ptr=NULL;
}
//---------------------------------------------------------
void F_Make_List_Display (LIST **Header_List_Ptr,LIST**Tailer_List_Ptr) //tra ve Header_List_Ptr va last la 2 bien global
{
DISPLAY Node_Dis;
UINT8 Byte_Read;
int Test_Read_File;// bien nay kiem tra xem co doc duoc file hay khong
if (File_Ptr==NULL) //tep rong
{
puts("FILE EMPTY...");
puts("HIT ANY KEY TO EXIT...");
getch();
fclose(File_Ptr);
getch();
exit(0) ; //tep rong
}//tep khac rong
while(!feof(File_Ptr))// vong lap thoat khi khong doc duoc tep ,va khong cap phat bo nho
{
Test_Read_File=fread(&Byte_Read,1,1,File_Ptr) ;//doc tep
if (Test_Read_File<0)// khong doc duoc tep , thi khong cap phat bo nho
{
puts(" NOW...COULD OPEN THIS FILE");
puts ("HIT ANY KEY...");
getch();
break;
}
else //doc duoc tep
{
Node_Dis.data=Byte_Read;// dua vao cau truc
puts("BYTE READ ...");
printf("\n%d",(int) Byte_Read);
Node_Dis.pos=0;//gan pos
Node_Dis.mode=0;// gan mode
Insert_List(Header_List_Ptr,Tailer_List_Ptr,Node_Dis) ;//chen vao cuoi danh sach
}//end else
}// end while
fclose(File_Ptr); // dong file
}//end function
//-----------------------------------------------------
void Print_List(LIST *Header_List_Ptr) //in danh sach moc noi ra man hinh
{
LIST* Ptr_List;
if (Header_List_Ptr==NULL)
{
puts("LIST EMPTY...");
puts("HIT ANY KEY TO EXIT...!");
getch();
exit(0);
}
Ptr_List=Header_List_Ptr;// lay phan tu dau tien
puts(" DATA IN LIST...");
do
{
printf("\n%s%d%s%d%s%d"," mode ",int ((Ptr_List->node).mode)," data ",(Ptr_List->node).data," pos ",(Ptr_List->node).pos);
Ptr_List=Ptr_List->next; //dich
}
while((Ptr_List->next)!=NULL);
}
//----------------------------------------
LIST* Get_Header_List(LIST* list)
{
LIST *Ptr_List =NULL;
if(list==NULL)
{
puts("LIST EMPTY ...");
return(Ptr_List);
}
Ptr_List=list;// khoi dong
while(Ptr_List->next!=NULL)
{
Ptr_List=Ptr_List->next;
}
return Ptr_List;
}
//----------------------------------------
LIST* Get_Tailer_List(LIST* list)
{
LIST *Ptr_List =NULL;
if(list==NULL)
{
puts("LIST EMPTY ...");
return(Ptr_List);
}
Ptr_List=list;
while(Ptr_List->prev!=NULL)
{
Ptr_List=Ptr_List->prev;
}
return Ptr_List;
}
//-------------------------------------------------------
void F_Processcing_List(LIST**Header_List_Ptr,LIST**Tailer_List_Ptr) //luon xuat phat tu dau danh sach
{
LIST*p,*q;
UINT8 Test1, Test2;
UINT8 Current_Mode;//bien chua mode hien tai
bool ok;
/*-----------------phan dau ------------*/
if (*Header_List_Ptr==NULL)//danh sach rong
{
puts ("LIST EMPTY..."); //chay den day roi
puts ("HIT ANY KEY...");
getch(); //thoat luon
exit(0); // thoat
}
//Header_List_Ptr khac NULL
p=*Header_List_Ptr;
Test1=(p->node).data;
if (Test1!=255) // khong dung dinh dang dau tien
{
puts("Test1");
printf("\n %d ",int(Test1));
puts ("FORMAT1 ERROR..."); //chay den day roi
puts("HIT ANY KEY...");
puts("EXIT OK!...");
getch();
Free_List(Header_List_Ptr,Tailer_List_Ptr);//giai phong bo nho
exit(0);//sai byte xac dinh chuan dau tien
}
//dung byte cua chuan dau tien
(p->node).mode=4;
q=p->next; //dich con tro vi tri tiep//VI TRI THU HAI
if (q==NULL) //rong
{
puts ("LIST ONE NODE..."); //chay den day roi
puts("HIT ANY KEY...");
puts("EXIT OK...");
getch();
Free_List(Header_List_Ptr,Tailer_List_Ptr);//giai phong bo nho
exit(0); // tro lai
}
Test2=(q->node).data; // khong rong kiem tra mode
if ((Test2==64)||(Test2==65)||(Test2==66)) // dung 64,65,66
ok=true; // gan
else
ok=false; // sai
if (ok==false) //sai byte dinh dang thu hai
{
puts(" Test2");
printf(" %d ",int (Test2));
puts("FORMAT2 ERROR... ");
puts(" HIT ANY KEY...");
getch();
Free_List(Header_List_Ptr,Tailer_List_Ptr);//giai phong bo nho
exit(0);
}
else//(ok==true) // dung chuan,xac lap curren mode theo hai vi tri dau tien
{
(q->node).mode=4;
puts("Header_List_Ptr STANDARD...");
puts("RIGH STANDARD... ");
puts("HIT ANY KEY");
getch();
switch (Test2)//ok=true, gan Current_Mode,pos
{
case 64: // chuan RC5
{
puts(" RC5 STANDARD...");
puts ("HIT ANY KEY...");
getch();
Current_Mode=1;//Current_Mode
(p->node).mode=4;//chuan
(q->node).mode=4;//chuan
break;
}
case 65:
{
puts(" REC STANDARD...");
puts ("HIT ANY KEY....");
getch();
Current_Mode=2;
(p->node).mode=4;//chuan
(q->node).mode=4;//chuan
break;
}
case 66:
{
puts("NEC STANDARD.....");
puts ("HIT ANY KEY....");
getch();
Current_Mode=3;
(p->node).mode=4;//chuan
(q->node).mode=4;//chuan
break;
}//end case
}//end switch,lay duoc Current_Mode
} //end if
/*--------------------------------------------------------------------*/
p=q->next;//
if( p==NULL)
{
puts ("LIST HAVE TWO NODE..."); //chay den day roi
puts("HIT ANY KEY...");
puts("EXIT OK...");
getch();
Free_List(Header_List_Ptr,Tailer_List_Ptr);//giai phong bo nho
exit(0); // tro lai
}
do //lap di lap lap theo curent mode
{
Test1=(p->node).data; // khong cuoi
if (Test1==255) //lai xuat hien mot chuan moi
ok=true; // gan lai ok
else
ok=false; // gan ok
if(ok==true)//la 255
{
q=p->next;
if (q==NULL) return;
Test2=(q->node).data;
if((Test2==64)||(Test2==65)||(Test2==66))
{
if (Test2==64)
{
Current_Mode=1;
(p->node).mode=4;
(q->node).mode=4;
p=q->next;
q=p;
}
else if (Test2==65)
{
Current_Mode=2;
(p->node).mode=4;
(q->node).mode=4;
p=q->next;
q=p;
}
else
{
Current_Mode=3;
(p->node).mode=4;
(q->node).mode=4;
p=q->next;
q=p;
}
}
else //khac 64,65,66
{
if(Current_Mode==1)
{ //
(p->node).mode=Current_Mode;
(p->node).pos=1;
(p->node).pos=1;
q=p->next;
if (q==NULL) return;
(q->node).mode=Current_Mode;
(q->node).pos=2;
}//
else if(Current_Mode==2)
{//
(p->node).mode=Current_Mode;//gan mode
(p->node).pos=1;//gan pos
q=p->next;
p=q;
if (q==NULL) return;
(q->node).mode=Current_Mode;
(q->node).pos=2;
} //
else if(Current_Mode==3)
{ //
(p->node).mode=Current_Mode;//gan mode
(p->node).pos=1;//gan pos
q=p->next;
p=q;
if (q==NULL) return;
(q->node).mode=Current_Mode;
(q->node).pos=2;
p=q->next;//p tro vitr tiep theo
q=p;
if (p==NULL) return;
(p->node).mode=Current_Mode;//gan mode
(p->node).pos=3;
q=p->next;//q tro vitri tiep theo
p=q;
if (q==NULL) return;
(q->node).pos=4;//gan pos
(q->node).mode=Current_Mode;
} //
}//end else
}//end else
else//khac 64,65,66(ok=false)
{
if(Current_Mode==1)
{ //
(p->node).mode=Current_Mode;
(p->node).pos=1;
q=p->next;
if (q==NULL) return;
(q->node).mode=Current_Mode;
(q->node).pos=2;
}//
else if(Current_Mode==2)
{//
(p->node).mode=Current_Mode;//gan mode
(p->node).pos=1;//gan pos
q=p->next;
if (q==NULL) return ;
(q->node).mode=Current_Mode;
(q->node).pos=2;
} //
else if(Current_Mode==3)
{ //
(p->node).mode=Current_Mode;//gan mode
(p->node).pos=1;//gan pos
q=p->next;
if (q==NULL) return;
(q->node).mode=Current_Mode;
(q->node).pos=2;
p=q->next;//p tro vitr tiep theo
if (p==NULL) return;
(p->node).mode=Current_Mode;//gan mode
(p->node).pos=3;
q=p->next;//q tro vitri tiep theo
if (q==NULL) return;
(q->node).pos=4;//gan po
(q->node).mode=Current_Mode;
} //
p=q->next;//dich con tro
}
}while(q!=NULL); //end while
}//end untion
//-----------------------------------------------
void Display_Decode(LIST**Header_List_Ptr,LIST**Tailer_List_Ptr)// ham nay hien thi
{
LIST *q,*r;// con tro duyet danh sach
UINT8 bytehigh;
UINT8 bytelow;
UINT8 x,y,z,t;
UINT32 dataword;//tu ma
char ch;// ma phim
bool ok;
if (*Header_List_Ptr==NULL)//danh sach rong
{
puts ("LIST EMPTY..."); //chay den day roi
puts("EXIT...");
puts("HIT ANY KEY");
getch();
exit(0);
}
//rakhoi last tro den vi tri cuoi
puts("LIST NOT EMPTY...");
puts("INIT GRAPHICS...");
puts("HIT ANY KEY...");
getch();
Init_Graphics(); //khoi tao do hoa
q = *Header_List_Ptr;// khoi dong con tro
setbkcolor(BLACK);
while(1)
{
if(kbhit())
{
char ch;
ch = getch();
ok = false;
switch(ch)
{
case 71: //left
{
clrscr();
outtextxy(40,40," GO HEADER LIST ...");
outtextxy(40,60," HIT ANY KEY... ");
getch();
q=*Tailer_List_Ptr;
ok = true;
break;
}
case 79: //left
{
clrscr();
outtextxy(40,40," GO TAILER LIST ... ...");
outtextxy(40,60," HIT ANY KEY... ");
getch();
q=*Tailer_List_Ptr;
ok = true;
break;
}
case 75: //left
{
clrscr();
q = q->prev;
if (q==NULL)
{
outtextxy(40,40," GO HEADER LIST ...");
outtextxy(40,60," HIT ANY KEY... ");
getch();
q=*Tailer_List_Ptr;
}
ok = true;
break;
}
case 77: //righ
{
clrscr();
q = q->next;
if(q==NULL)
{
outtextxy(40,40," GO TAILER LIST ...");
outtextxy(40,60," HIT ANY KEY... ");
getch();
q=*Header_List_Ptr;
}
ok = true;
break;
}
case 27:
{
ok=false;
break;
}
default:
ok=true;
}//end switch
bar(0,0,639,479);
if(ok == true)
{
switch ((q->node).mode)
{
case 1://RC5
{
if ((q->node).pos ==1)//kiem tra pos
{
r=q->next;
if(r==NULL)
break;
bytelow=(q->node).data;
bytehigh=(r->node).data;
}
else//pos=2
{
r=q->prev;
if (r==NULL)
break;
bytelow=(r->node).data;
bytehigh=(q->node).data;
}
dataword=F_Con_Vert1(bytelow,bytehigh);
clrscr();
RC5_Draw_Dataword(dataword);
break;
}
case 2://REC80
{
if ((q->node).pos ==1)
{
r=q->next;
if (r==NULL) break;
bytelow=(q->node).data;
bytehigh=(r->node).data;
}
else//pos=2
{
r=q->prev;
if (r==NULL) break;
bytelow=(r->node).data;
bytehigh=(q->node).data;
}
dataword=F_Con_Vert1(bytelow,bytehigh);
clrscr();
REC_Draw_Dataword(dataword);
break;
}
case 3://NEC
{
if((q->node).pos==1)
{
x=(q->node).data;
r=q->next;
if( r==NULL) break;
y=(r->node).data;
r=q->next;
if( r==NULL) break;
z=(r->node).data;
r=q->next;
if( r==NULL) break;
t=(r->node).data;
}
else if((q->node).pos==2)
{
q=q->prev;
if( q==NULL) break;
x=(r->node).data;
y=(q->node).data;
r=q->next;
if( r==NULL) break;
z=(r->node).data;
r=q->next;
if( r==NULL) break;
t=(r->node).data;
}
else if ((q->node).pos==3)
{
z=(q->node).data;
r=q->next;
if( r==NULL) break;
t=(r->node).data;
r=q->prev;
if( r==NULL) break;
z=(r->node).data;
r=q->next;
if( r==NULL) break;
x=(r->node).data;
}
else if ((q->node).pos==4)
{
t=(q->node).data;
r=q->prev;
if( r==NULL) break;
z=(r->node).data;
r=r->prev;
if( r==NULL) break;
y=(r->node).data;
r=r->next;
if( r==NULL) break;
x=(r->node).data;
}
dataword=F_Con_Vert2(x,y,z,t);
clrscr();
NEC_Draw_Dataword( dataword);
break;
}//end case
}//end switch
}//endifok
else return;
}//end ifkbhit
}//end while(1)
}//endfu
Caùc taøi lieäu tham khaûo.
Kó thuaät vi söû lí (VAÊN THEÁ MINH chuû bieân ).
Kó thuaät gheùp noái maùy tính ( taùc giaû NGOÂ DIEÂN TAÄP).
Kó thuaät truyeàn soá lieäu (NGUYEÃN HOÀNG SÔN chuû bieân ).
Hoï vi ñieàu khieån 8051 (taùc giaû TOÁNG VAÊN ON).
Caùc Website cuûa caùc haõng INTEL,ATMEL,KEIL vvv
Lôøi môû ñaàu 1
Lôøi caûm ôn ! 2
Chöông1 :Toång quan veà ñeà taøi toát nghieäp. 3
1.1. Noäi dung ñeà taøi thieát keá. 3
1.2. Yeâu caàu cuûa thieát keá. 3
1.3. Höôùng thieát keá cho ñeà taøi. 3
1.4.Nguyeân lyù hoaït ñoäng cuûa maïch. 4
1.5. Höôùng môû roäng cho ñeà taøi. 5
Chöông2:Cô sôû lí thuyeát. 7
2.1 .Toång quan veà moät soá heä thoáng ñieàu khieån töø xa: 7
2.2.Ñaïi cöông veà quang ñieän töû: 12
2.2.1.Led hoàng ngoaïi: 13
2.2.2.Hoàng ngoaïi gaàn: 14
2.2.3.Nguoàn phaùt saùng hoàng ngoaïi: 14
2.3.Moät soá chuaån ñieàu cheá maõ hoaõ duøng trong ñieàu khieån töø xa cuûa TI VI. 16
2.3.1. Chuaån RC5. 16
2.3.2. ChuÈn REC 17
2.3.3.Chuaån NEC 18
2.3.4. Mét sè ®Æc tÝnh kÜ thuËt cña TSOP18xx, vµ TSOP17xx. 19
2.4.Giao tieáp cuûa PC vôùi ngoaïi vi 19
2.4.1Giao tieáp qua Slot: 19
2.4.2.Giao tieáp qua coång noái tieáp: 21
2.4.2.1.Truyeàn ñoàng boä : 21
2.4.2.2.Truyeàn khoâng ñoàng boä: 21
2.4.2.3. GIÔÙI THIEÄU VEÀ GIAO DIEÄN NOÁI TIEÁP: 22
2.4.2.4. Baûng thoâng soá veà tính naêng kó thuaät cuaû giao dieän RS-232 / V 24 : 23
2.4.2.5.Vaøi neùt cô baûn veà coång noái tieáp: 24
2.4.2.5.1.Söï trao ñoåi cuûa ñöôøng daãn tín hieäu: 25
2.4.3.Giao tieáp qua Printer Port: 29
2.4.3.1.Vaøi neùt cô baûn veà coång gheùp noái vôùi maùy in: 29
Chöông 3 :Thieát keá cuï theå. 35
3.1.Thieát keá phaàn cöùng. 36
3.1.1. Khoái nguoàn cung caáp . 36
3.1.1.1.Sô ñoà maïch nguoàn. 36
3.1.1.2. Caùc thoâng soá cuûa IC: 36
3.1.1.3. Ñieän aùp ra : 37
3.1.1.4.Ñaëc tính cuûa IC : 37
3.1.2. Khoái xöû lyù trung taâm. 37
3.1.3. Khoái giao tieáp giöõa PC vaø khoái xöû lyù trung taâm 40
3.1.4.Khoái choïn mode . 42
3.1.5.Khoái maét nhaän. 42
3.2. Thieát keá phaàn meàm. 43
3.2.1. Thieát keá löu ñoà thuaät toaùn thu treân PC vaø thay ñoåi cheá ñoä giaûi maõ töø PC. 43
3.2.2.Chöông trình giaûi maõ,hieån thò treân PC: 44
3.2.2.Thuaät toaùn treân khoái xöû lí trung taâm. 62
3.2.2.1.Thuaät toaùn ñeå nhaän daïng töø maõ chuaån RC5. 62
3.2.2.2.Thuaät toaùn nhaän daïng cho caùc töø maõ chuaån REC. 64
3.2.2.3.Thuaät toaùn nhaän daïng töø maõ cho chuaån NEC. 65
3.2.2.4.Thuaät toaùn caùc haøm coù nhieäm vuï truyeàn veà PC, nhaän döõ lieäu töø PC. 67
3.2.2.5.Thuaät toaùn cho haøm Main treân Vi ñieàu khieån. 69
Chöông 4:Keát luaän. 71
4.1 Ñaùnh giaù heä thoáng. 71
4.2.Phöông aùn khaéc phuïc vaø naâng caáp . 72
Phaàn 2 : Phuï luïc. 74
Phuï luïc A :Giôùi thieäu veà caùc linh kieän söû duïng trong ñoà aùn . 74
1.1. Vi ñieàu khieån hoï MCS -51 74
1.2 Vi ñieàu khieån AT89C52 75
1.2.1. Caáu taïo chaân 76
1.2.2. Sô ñoà khoái 77
1.2.3. Moâ taû chöùc naêng cuûa caùc chaân 78
1.2.4. Caùc thanh ghi chöùc naêng (SFR-Special Funtion Reisters) 79
1.2.5. Boä nhôù döõ lieäu 82
1.2.6. Ñaëc tính boä dao ñoäng 82
1.2.7. Cheá ñoä löôøi 83
1.2.8. Cheá ñoä haï nguoàn 83
1.2.9. Traïng thaùi cuûa moät soá chaân trong cheá ñoä löôøi vaø cheá ñoä haï nguoàn 84
1.2.10. Caùc thoâng soá kyõ thuaät 84
1.2.11. Hoaït ñoäng cuûa port noái tieáp 87
1.2.11.1Khaùi quaùt veà port noái tieáp: 87
1.2.11.2. Cheá ñoä thanh ghi dòch 8 bit . 88
1.2.11.3. Cheá ñoä UART 8 bit. 89
1.2.11.3. UART 9 bit: toác ñoä baud coá ñònh. 89
1.2.11.4. UART 9-bit: toác ñoä baud thay ñoåi. 90
1.2.11.5. Toác ñoä baud cuûa port noái tieáp . 90
1.2.12.Ngaét –vai troø cuûa ngaét trong caùc öùng duïng cuûa boä vi ñieàu khieån. 90
1.2.12.1.Sô löôïc veà ngaét. 90
1.2.12.2.Toå chöùc ngaét cuûa hoï 8051. 91
1.2.12.3.Cho pheùp vaø khoâng cho pheùp ngaét. 91
1.2.12.1.Öu tieân ngaét . 92
1.2.12.5.Chuoãi voøng . 92
1.2.12.6.Trình töï söû lyù ngaét . 93
1.2.12.7.Caùc vector ngaét . 93
1.2.13.Hoaït ñoäng ñònh thôøi cuûa 8501. 94
1.2.13.1.Toång quaùt veà ñònh thôøi . 94
1.2.13.2.ÖÙng duïng cuûa boä ñònh thôøi . 94
1.2.13.2.1.Ñònh thôøi moät khoaûng thôøi gian . 94
1.2.13.2.2. Ñeám söï kieän. 94
1.2.13.3.Thanh ghi cheá ñoä ñònh thôøi (TMOD) 95
Bít 95
1.2.13.1.Thanh ghi ñieàu khieån ñònh thôøi(TCON). 95
1.2.13.5.Caùc cheá ñoä hoaït ñoäng cuûa boä ñònh thôøi. 96
1.2.13.5.1.Cheá ñoä ñònh thôøi 13-bit. 96
1.2.13.5.2.Cheá ñoä ñònh thôøi 16-bit. 96
1.2.13.5.3.Cheá ñoä töï naïp 8-bit. 96
1.2.13.5.1.Cheá ñoä ñònh thôøi chia seû . 97
1.3.1. Caáu taïo chaân 98
1.3.2. Moâ taû chöùc naêng chaân 98
1.3.3. Sô ñoà khoái vaø maïch tieâu bieåu 99
Phuïluïc B :Maõ nguoàn chöông trình 101
1.Maõ nguoàn chöông trình treân khoái söû lí trung taâm. 101
2. Maõ nguoàn chöông trình thu treân PC. 107
3.chöông trình giaûi maõ hieån thò treân PC 112
Caùc taøi lieäu tham khaûo. 133
._.
Các file đính kèm theo tài liệu này:
- DAN081.doc