Đồng hồ số hiển thị trên LCD 16X2

Ngày nay nhân loại đang trải qua những sự phát triển vượt về mọi mặt. Trong đó điện tử tự - động hoá đóng một vai trò không nhỏ. Điện tử góp phần vào quá trình tự động hoá mọi thứ giúp con người hiện đại hoá cuộc sống. Vận dụng những kiến thức đã được học trong quá trình học tập ở trường em thực hiện đồ án II này. Đồ án này được áp dụng chủ yếu dựa vào vi điều khiển. Mà thực tế là IC họ 8051 IC89C51, nhằm mục đích dúp em hiểu một cách tường tận hơn về những gì về vi điều khiển, cách đọc, viết va nhận biết về các chân IC mà em đã được học từ thầy cô trong trường, tìm hiểu và nghiên cứu qua sách cũng như cách thức vận dụng nó trong thực tế . Trong thực tế, các ứng dụng của vi điều khiển rất đa dạng và phong phú. Từ những ứng dụng đơn giản chỉ có vài thiết bị ngoại vi cho đến những hệ thống điều khiển phức tạp .Tuy nhiên do pham vi trình độ của em còn hạn chế, nên việc nghiên cứu và tìm hiểu về vi điều khiển còn nhiều điều chưa biết. Trong bài viết của em, em xin giới thiêu ứng dụng IC8051 để hiển thị bộ đếm GIỜ - PHÚT – GIÂY – THỨ– NGÀY – THÁNG - NĂM trên LCD 16 2. Tuy nhiên trong quá trình viêt do trình độ hiểu biết của em còn hạn chế, nên còn xẩy ra nhiều sai sót mong thầy và các bạn góp ý bổ sung để em được hiểu biết hơn trong quá trình học tâp tiếp theo.

doc50 trang | Chia sẻ: banmai | Lượt xem: 2181 | Lượt tải: 5download
Bạn đang xem trước 20 trang tài liệu Đồng hồ số hiển thị trên LCD 16X2, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
NHAÄN XEÙT CUÛA GIAÙO VIEÂN HÖÔÙNG DAÃN -- ---------------------------------------------------------- NGAØY……THAÙNG……NAÊM 2009 CHÖÕ KYÙ CUÛA GVHD: NHAÄN XEÙT CUÛA HOÄI ÑOÀNG CHAÁM ÑIEÅM NGAØY …… THAÙNG ……NAÊM 2009 CHÖÕ KYÙ CUÛA GVPB: A – MÔÛ ÑAÀU 1. Lời mở đầu Ngày nay nhân loại đang trải qua những sự phát triển vượt về mọi mặt. Trong đó điện tử tự - động hoá đóng một vai trò không nhỏ. Điện tử góp phần vào quá trình tự động hoá mọi thứ giúp con người hiện đại hoá cuộc sống. Vận dụng những kiến thức đã được học trong quá trình học tập ở trường em thực hiện đồ án II này. Đồ án này được áp dụng chủ yếu dựa vào vi điều khiển. Mà thực tế là IC họ 8051 IC89C51, nhằm mục đích dúp em hiểu một cách tường tận hơn về những gì về vi điều khiển, cách đọc, viết va nhận biết về các chân IC mà em đã được học từ thầy cô trong trường, tìm hiểu và nghiên cứu qua sách cũng như cách thức vận dụng nó trong thực tế . Trong thực tế, các ứng dụng của vi điều khiển rất đa dạng và phong phú. Từ những ứng dụng đơn giản chỉ có vài thiết bị ngoại vi cho đến những hệ thống điều khiển phức tạp .Tuy nhiên do pham vi trình độ của em còn hạn chế, nên việc nghiên cứu và tìm hiểu về vi điều khiển còn nhiều điều chưa biết. Trong bài viết của em, em xin giới thiêu ứng dụng IC8051 để hiển thị bộ đếm GIỜ - PHÚT – GIÂY – THỨ – NGÀY – THÁNG - NĂM trên LCD 16 2. Tuy nhiên trong quá trình viêt do trình độ hiểu biết của em còn hạn chế, nên còn xẩy ra nhiều sai sót mong thầy và các bạn góp ý bổ sung để em được hiểu biết hơn trong quá trình học tâp tiếp theo. Em xin chân thành cảm ơn! 2. Lời cảm tạ Em thực hiện đồ án này cám ơn thầy Trương Năng Toàn đã tận tình hướng dẫn và tạo điều kiện thuận lợi cho em hoàn thành tốt đề tài này . Em thực hiện đồ án này xin chân thành cám ơn quý thầy cô trong khoa điện tử cùng các bạn sinh viên trong khoa đã đóng góp ý kiến và kinh nghiệm trong quá trình thực hiện đề tài này. B - NOÄI DUNG Chöông GIÔÙI THIEÄU CAÁU TRUÙC PHAÀN CÖÙNG HOÏ MCS-51 (8951): Giôùi thieäu hoï MCS-51: MCS-51 laø hoï IC vi ñieàu khieån do haõng Intel saûn xuaát. Caùc IC tieâu bieåu cho hoï laø 8051 vaø 8031. Caùc saûn phaåm MCS-51 thích hôïp cho nhöõng öùng duïng ñieàu khieån. Vieäc xöû lyù treân Byte vaø caùc toaùn soá hoïc ôû caáu truùc döõ lieäu nhoû ñöôïc thöïc hieän baèng nhieàu cheá ñoä truy xuaát döõ lieäu nhanh treân RAM noäi. Taäp leänh cung caáp moät baûng tieän duïng cuûa nhöõng leänh soá hoïc 8 Bit goàm caû leänh nhaân vaø leänh chia. Noù cung caáp nhöõng hoå trôï môû roäng treân Chip duøng cho nhöõng bieán moät Bit nhö laø kieåu döõ lieäu rieâng bieät cho pheùp quaûn lyù vaø kieåm tra Bit tröïc tieáp trong ñieàu khieån vaø nhöõng heä thoáng logic ñoøi hoûi xöû lyù luaän lyù. AT89C51 laø moät vi ñieàu khieån 8 Bit, cheá taïo theo coâng ngheä CMOS chaát löôïng cao, coâng suaát thaáp vôùi 4 KB PEROM (Flash Programmable and erasable read only memory). Thieát bò naøy ñöôïc cheá taïo baèng caùch söû duïng boä nhôù khoâng boác hôi maät ñoä cao cuûa ATMEL vaø töông thích vôùi chuaån coâng nghieäp MCS-51 veà taäp leänh vaø caùc chaân ra. PEROM ON-CHIP cho pheùp boä nhôù laäp trình ñöôïc laäp trình trong heä thoáng hoaëc bôûi moät laäp trình vieân bình thöôøng. Baèng caùch keát hôïp moät CPU 8 Bit vôùi moät PEROM treân moät Chip ñôn, ATMEL AT89C51 laø moät vi ñieàu khieån maïnh (coù coâng suaát lôùn) maø noù cung aáp moät söï linh ñoäng cao vaø giaûi phaùp veà giaù caû ñoái vôùi nhieàu öùng duïng vi ñieàu khieån. AT89C51 cung caáp nhöõng ñaëc tính chuaån nhö sau: 4 KB boä nhôù chæ ñoïc coù theå xoùa vaø laäp trình nhanh (EPROM), 128 Byte RAM, 32 ñöôøng I/O, 2 TIMER/COUNTER 16 Bit, 5 vectô ngaét coù caáu truùc 2 möùc ngaét, moät Port noái tieáp baùn song coâng, 1 maïch dao ñoäng taïo xung Clock vaø boä dao ñoäng ON-CHIP. Theâm vaøo ñoù, AT89C51 ñöôïc thieát keá vôùi logic tónh cho hoaït ñoäng ñeán möùc khoâng taàn soá vaø hoã trôï hai phaàn meàm coù theå löïa choïn nhöõng cheá ñoä tieát kieäm coâng suaát, cheá ñoä chôø (IDLE MODE) seõ döøng CPU trong khi vaãn cho pheùp RAM, timer/counter, port noái tieáp vaø heä thoáng ngaét tieáp tuïc hoaït ñoäng. Cheá ñoä giaûm coâng suaát seõ löu noäi dung RAM nhöng seõ treo boä dao ñoäng laøm maát khaû naêng hoaït ñoäng cuûa taát caû nhöõng chöùc naêng khaùc cho ñeán khi Reset heä thoáng. Caùc ñaëc ñieåm cuûa 8951 ñöôïc toùm taét nhö sau: 4 KB boä nhôù coù theå laäp trình laïi nhanh, coù khaû naêng tôùi 1000 chu kyø ghi xoaù Taàn soá hoaït ñoäng töø: 0Hz ñeán 24 MHz 3 möùc khoùa boä nhôù laäp trình 2 boä Timer/counter 16 Bit 128 Byte RAM noäi. 4 Port xuaát /nhaäp I/O 8 bit. Giao tieáp noái tieáp. 64 KB vuøng nhôù maõ ngoaøi 64 KB vuøng nhôù döõ lieäu ngoaïi. Xöû lyù Boolean (hoaït ñoäng treân bit ñôn). 210 vò trí nhôù coù theå ñònh vò bit. 4 ms cho hoaït ñoäng nhaân hoaëc chia. Sô ñoà khoái cuûa AT89C51 Sô ñoà nguyeân lyù OTHER REGISTER 128 byte RAM 128 byte RAM 8032\8052 ROM 0K: 8031\8032 4K:8951 8K:8052 INTERRUPCONTROL INT1\ INT0\ SERIAL PORT TEMER0 TEMER1 TEMER2 8032\8052 CPU OSCILATOR BUS CONTROL I/O PORT SERIAL PORT EA\ RST ALE\ PSEN\ P0 P1 P2 P3 Address\Data TXD RXD TEMER2 8032\8052 TEMER1 TEMER1 Hình 1.1: Sô ñoà khoái cuûa AT89C51 Interrup Control: Khoái ñieàu khieån ngaét ngoaøi Other Register: Caùc thanh ghi Ram: Boä nhôù truy xuaát ngaåu nhieân (128 Byte) Eprom: Boä nhôù chæ ñoïc, xoùa, laäp trình ñöôïc Timer 1: Boä ñònh thôøi Timer 0: Boä ñònh thôøi Serial Port: Coång vaøo ra noái tieáp I/O Port: Caùc coång vaøo ra CPU: Vi xöû lyù Oscilator: Maïch dao ñoäng noäi Bus Control: Caùc ñöôøng ñieàu khieån Bus Sô ñoà chi tieát Hình 1.2: Sô ñoà chi tieát cuûa AT89C51 KHAÛO SAÙT SÔ ÑOÀ CHAÂN 8951, CHÖÙC NAÊNG TÖØNG CHAÂN: Sô ñoà chaân 8951: Hình 1.3: Sô ñoà chaân cuûa AT89C51 Chöùc naêng caùc chaân cuûa 8951 AT89C51 coù taát caû 40 chaân coù chöùc naêng nhö caùc ñöôøng xuaát nhaäp. Trong ñoù coù 24 chaân coù taùc duïng keùp (coù nghóa 1 chaân coù 2 chöùc naêng), moãi ñöôøng coù theå hoaït ñoäng nhö ñöôøng xuaát nhaäp hoaëc nhö ñöôøng ñieàu khieån hoaëc laø thaønh phaàn cuûa caùc bus döõ lieäu vaø bus ñòa chæ. Caùc Port: Port 0: Port 0 laø port coù 2 chöùc naêng ôû caùc chaân 32 – 39 cuûa 8951. Trong caùc thieát keá côõ nhoû khoâng duøng boä nhôù môû roäng noù coù chöùc naêng nhö caùc ñöôøng IO. Ñoái vôùi caùc thieát keá côõ lôùn coù boä nhôù môû roäng, noù ñöôïc keát hôïp giöõa bus ñòa chæ vaø bus döõ lieäu. Port 1: Port 1 laø port IO treân caùc chaân 1-8. Caùc chaân ñöôïc kyù hieäu P1.0, P1.1, P1.2, … coù theà duøng cho giao tieáp vôùi caùc thieát bò ngoaøi neáu caàn. Port 1 khoâng coù chöùc naêng khaùc, vì vaäy chuùng chæ ñöôïc duøng cho giao tieáp vôùi caùc thieát bò beân ngoaøi. Port 2: Port 2 laø 1 port coù taùc duïng keùp treân caùc chaân 21- 28 ñöôïc duøng nhö caùc ñöôøng xuaát nhaäp hoaëc laø byte cao cuûa bus ñòa chæ ñoái vôùi caùc thieát bò duøng boä nhôù môû roäng. Port 3: Port 3 laø port coù taùc duïng keùp treân caùc chaân 10-17. Caùc chaân cuûa port naøy coù nhieàu chöùc naêng, caùc coâng duïng chuyeån ñoåi coù lieân heä vôùi caùc ñaëc tính ñaëc bieät cuûa 8951 nhö ôû baûng sau: Bit Teân Chöùc naêng chuyeån ñoåi P3.0 RXT Ngoõ vaøo döõ lieäu noái tieáp. P3.1 TXD Ngoõ xuaát döõ lieäu noái tieáp. P3.2 INT0\ Ngoõ vaøo ngaét cöùng thöù 0 P3.3 INT1\ Ngoõ vaøo ngaét cöùng thöù 1 P3.4 T0 Ngoõ vaøo cuûa TIMER/COUNTER thöù 0 P3.5 T1 Ngoõ vaøo cuûa TIMER/COUNTER thöù 0 P3.6 WR\ Tín hieäu ghi döõ lieäu leân boä nhôù ngoaøi P3.7 RD\ Tín hieäu ñoïc döõ lieäu boä nhôù ngoaøi Baûng 1.1: Chöùc naêng caùc chaân cuûa Port 3 Caùc ngoõ tín hieäu ñieàu khieån: Ngoõ tín hieäu PSEN (Program store enable): PSEN laø tín hieäu ngoõ ra ôû chaân 29 coù taùc duïng cho pheùp ñoïc boä nhôù chöông trình môû roäng thöôøng ñöôïc noùi ñeán chaân 0E\ (output enable) cuûa Eprom cho pheùp ñoïc caùc byte maõ leänh. PSEN ôû möùc thaáp trong thôøi gian Microcontroller 8951 laáy leänh. Caùc maõ leänh cuûa chöông trình ñöôïc ñoïc töø Eprom qua bus döõ lieäu vaø ñöôïc choát vaøo thanh ghi leänh beân trong 8951 ñeå giaûi maõ leänh. Khi 8951 thi haønh chöông trình trong ROM noäi PSEN seõ ôû möùc logic 1. Ngoõ tín hieäu ñieàu khieån ALE (Address Latch Enable): Khi 8951 truy xuaát boä nhôù beân ngoaøi, port 0 coù chöùc naêng laø bus ñòa chæ vaø bus döõ lieäu do ñoù phaûi taùch caùc ñöôøng döõ lieäu vaø ñòa chæ. Tín hieäu ra ALE ôû chaân thöù 30 duøng laøm tín hieäu ñieàu khieån ñeå giaûi ña hôïp caùc ñöôøng ñòa chæ vaø döõ lieäu khi keát noái chuùng vôùi IC choát. Tín hieäu ra ôû chaân ALE laø moät xung trong khoaûng thôøi gian port 0 ñoùng vai troø laø ñòa chæ thaáp neân choát ñòa chæ hoaøn toaøn töï ñoäng. Caùc xung tín hieäu ALE coù toác ñoä baèng 1/6 laàn taàn soá dao ñoäng treân chip vaø coù theå ñöôïc duøng laøm tín hieäu clock cho caùc phaàn khaùc cuûa heä thoáng. Chaân ALE ñöôïc duøng laøm ngoõ vaøo xung laäp trình cho Eprom trong 8951. Ngoõ tín hieäu EA\(External Access) : Tín hieäu vaøo EA\ ôû chaân 31 thöôøng ñöôïc maét leân möùc 1 hoaëc möùc 0. Neáu ôû möùc 1, 8951 thi haønh chöông trình töø ROM noäi trong khoaûng ñòa chæ thaáp 8 Kbyte. Neáu ôû möùc 0, 8951 seõ thi haønh chöông trình töø boä nhôù môû roäng. Chaân EA\ ñöôïc laáy laøm chaân caáp nguoàn 21V khi laäp trình cho Eprom trong 8951. Ngoõ tín hieäu RST (Reset): Ngoõ vaøo RST ôû chaân 9 laø ngoõ vaøo Reset cuûa 8951. Khi ngoõ vaøo tín hieäu naøy ñöa leân cao ít nhaát laø 2 chu kyø maùy, caùc thanh ghi beân trong ñöôïc naïp nhöõng giaù trò thích hôïp ñeå khôûi ñoäng heä thoáng. Khi caáp ñieän maïch töï ñoäng Reset. Caùc ngoõ vaøo boä giao ñoäng X1,X2: Boä dao ñoäng ñöôïc ñöôïc tích hôïp beân trong 8951, khi söû duïng 8951 ngöôøi thieát keá chæ caàn keát noái theâm thaïch anh vaø caùc tuï nhö hình veõ trong sô ñoà. Taàn soá thaïch anh thöôøng söû duïng cho 8951 laø 12Mhz. Chaân 40 (Vcc) ñöôïc noái leân nguoàn 5V. Chöông 2.1 GIÔÙI THIEÄU IC REAL TIME CLOCK DS12C887 DS12C887 thuoäc hoï Real-Time Clock laø saûn phaåm cuûa haõng MAXXIM vôùi nhöõng tính naêng sau: Ñöôïc söû duïng chaïy ñoàng hoà, lòch trong caùc doøng maùy tính IBM AT. Sô ñoà chaân töông thích vôùi caùc loaïi IC MC146818 vaø DS1287. Töï vaän haønh vôùi pin noäi coù tuoåi thoï leân ñeán 10 naêm. Ñeám giôø, phuùt, giaây, ngaøy, thaùng, naêm, thöù vôùi thôøi gian ñeán naêm 2100. Döõ lieäu ngaøy giôø ñöôïc truy xuaát döôùi daïng binary hoaëc BCD. Coù theå löïa choïn hieån thò giôø Mode 24 hoaëc Mode 12 vôùi AM vaø PM. Töông thích Bus giao tieáp vôùi hoï Motorola vaø hoï Intel. Cung caáp 128 Byte RAM ñöôïc ñònh ñòa chæ, trong ñoù coù 14 Bytesöû duïng cho vieäc löu tröõ giôø vaø caùc thanh ghi ñieàu khieån, 114 Byte RAM ña muïc ñích daønh cho caùc öùng duïng cuûa ngöôøi söû duïng. Xuaát tín hieäu laäp trình xung vuoâng. Tín hieäu ñieàu khieån ngaét . Thôøi gian coù theå bò sai soá phuùt /1 thaùng trong ñieàu kieän nhieät ñoä 25 Coù maïch dao ñoäng noäi vaø coù thanh ghi theá kyû SÔ ÑOÀ CHAÂN IC DS12C887 Hình 2.1: Sô ñoà chaân IC DS12C887 Chöùc naêng caùc chaân IC DS12C887: Moâ taû: AD0 – AD7 : Caùc ñöôøng ñòa chæ / döõ lieäu NC : Khoâng keát noái MOT : Choïn loaïi Bus(Khi töông thích Bus giao tieáp vôùi hoï Motorola thì chaân MOT noái leân nguoàn Vcc vaø hoï Intel thì chaân MOT noái ñaát hoaëc khoâng keát noái) : Cho pheùp hoaït ñoäng(choïn chip) AS : Choát ñòa chæ R / : Ngoõ vaøo ñoïc vieát DS : Choát döõ lieäu : Reset ngoõ vaøo : Ñieàu khieån ngaét ngoaøi SQW : Ngoõ ra xung vuoâng Vcc : Nguoàn +5V GND : Ñaát Maïch giao tieáp vôùi vi xöû lyù: Hình 2.2: Sô ñoà giao tieáp vi xöû lyù SÔ ÑOÀ KHOÁI IC DS12C887 Hình 2.3: Sô ñoà khoái IC DS12C887 Chöùc naêng caùc khoái: Khoái nguoàn(Power): Goàm coù nguoàn cung caáp chính vaø nguoàn pin döï phoøng ñöôïc cung caáp bôûi pin Lithium coù tuoåi thoï raát laâu (Khi nguoàn Vcc < 3V thì nguoàn ñöôïc chuyeån qua nguoàn pin ñaët beân trong IC ) Khoái dao ñoäng(OSC): Maïch dao ñoäng söû duïng thaïch anh 32.768 kKz coù ñoä chính xaùc cao, sau ñoù ñöôïc ñöa ñeán caùc boä chia ñeå coù ñöôïc taàn soá caàn duøng. Caùc boä chia taàn soá(Divide by 8, Divide by 64): Taàn soá 32.768 kKz qua boä chia 8, sau ñoù chia 2 laàn 64 ñeå coù ñöôïc taàn soá 1 Hz cung caáp cho ñoàng hoà. Khoái phaùt xung vuoâng(Square wave out): Chaân SQW xuaát caùc xung vuoâng coù taàn soá ñieàu khieån bôûi chöông trình ôû thanh ghi A. Tín hieäu xung vuoâng coù theå taét môû bôûi bit SQWE ôû thanh ghi B. Tín hieäu xung vuoâng seõ khoâng hoaït ñoäng khi nguoàn cung caáp < 4.25V. Caùc thanh ghi(Registers A, B, C, D): Caùc cheá ñoä hoaït ñoäng coù theå thay ñoåi bôûi chöông trình ôû caùc thanh ghi. Khoái lòch giôø: Caùc thoâng tin veà giô,ø lòch ñöôïc ñoïc töø boä nhôù vaø ghi vaøo RAM döôùi daïng maõ Binary hoaëc BCD (Binary coded decimal). Khoái giao tieáp(Bus Interface): Goàm caùc chaân AD0 – AD7,DS, R/, AS, MOT ñeå ñaët cheá ñoä thích hôïp cho IC coù theå giao tieáp vi xöû lyù cuûa hoï Motorola vaø hoï Intel. Chöông SÔ ÑOÀ KHOÁI IC DS12C887 (REAL TIME CLOCK) HIEÅN THÒ (DISPLAY) IC AT89C51 (VI ÑIEÀU KHIEÅN) NUÙT NHAÁN KHOÁI NGUOÀN (NGUOÀN +5VDC) Hình 3.1: Sô ñoà khoái CHÖÙC NAÊNG CAÙC KHOÁI Khoái nguoàn: Cung caáp nguoàn oån ñònh cho caùc khoái (+5VDC) Khoái ñoàng hoà: Duøng IC Real Time Clock ñeå coù giôø oån ñònh, khoâng bò sai giôø khi maát ñieän, coù 113 byte RAM ña duïng ñeå môû roäng RAM ngoaøi khi vieát chöông trình Khoái ñieàu khieån: Duøng vi xöû lyù 89C51 ñoïc döõ lieäu thôøi gian töø IC ñoàng hoà, xöû lyù caùc nuùt nhaán khi nhaäp döõ lieäu, xuaát döõ lieäu hieån thò Khoái hieån thò: Duøng Led 7 ñoaïn hieån thò giaù mua vaøo, giaù baùn ra vaø ngaøy, thaùng, naêm Khoái nuùt nhaán: Duøng 4 nuùt nhaán (SELECT, OK, UP, DOWN) ñeå hieäu chænh caùc giaù trò hieån thò Chöông SÔ ÑOÀ NUÙT NHAÁN Hình 4.1: Sô ñoà caùc phím nhaán Taát caû caùc nuùt nhaán söû duïng laø loaïi nuùt nhaán hôû. Moät chaân noái vôùi ñaát, chaân coøn laïi noái leân nguoàn +5V thoâng qua ñieän trôû. ÔÛ traïng thaùi bình thöôøng ngoõ ra nuùt nhaán laø +5V töông öùng vôùi möùc logic 1. Khi nhaán nuùt ñieän aùp ngoõ ra seõ noái xuoáng ñaát töông öùng vôùi möùc logic 0. Vì vaäy ta phaûi duøng ñieän trôû ñeå haïn doøng vaø taïo möùc ñieän theá logic ôû ngoõ vaøo cuûa IC vi ñieàu khieån Chöùc naêng cuûa caùc nuùt nhaán: SELECT (Phím hieäu chænh) OK (Phím chaáp nhaän), UP (Phím taêng), DOWN (Phím giaûm) Caùc nuùt nhaán SELECT, OK, UP, DOWN ñöôïc noái laàn löôït vôùi caùc chaân P3.2, P3.3, P3.4, P3.5 cuûa IC vi ñieàu khieån. Khi nhaán moät trong 4 nuùt nhaán treân thì ñieän aùp ngoõ ra seõ noái xuoáng ñaát töông öùng vôùi möùc logic 0 seõ cho pheùp gôûi tín hieäu hieäu chænh thôøi gian ñeán IC vi ñieàu khieån SÔ ÑOÀ MAÏCH VI ÑIEÀU KHIEÅN Hình4.2: Sô ñoà maïch vi ñieàu khieån xöû lyù Maïch vi ñieàu khieån laø boä phaän quan troïng, ñieàu khieån moïi hoaït ñoäng cuûa heä thoáng. Bao goàm: Maïch Reset, maïch Taïo dao ñoäng vaø IC AT89C51 Maïch RESET Hình 4.3: Sô ñoà maïch Reset AT89C51 ñöôïc reset baèng caùch giöõ chaân RST (chaân 9) ôû möùc cao trong ít nhaát 2 chu kyø maùy, sau ñoù xuoáng möùc thaáp ñeå AT89C51 baét ñaàu laøm vieäc. Reset coù theå kích tay baèng moät phím nhaán thöôøng hôû nhö hình 2.3. Nhieäm vuï cuûa maïch RESET laø töï ñoäng reset khi caáp nguoàn & reset baèng tay khi caàn baèng caùch nhaán phím RESET Tuï CRST1 vaø ñieän trôû R7 taïo thaønh maïch R-C vôùi thôøi haèng laø t = RC V = V . e Þ V = Þ e = Þ = Ln Þ Maø t = RC Þ RC= Ñeå reset AT89C51, chaân 9 (RST) phaûi ôû möùc cao ít nhaát laø hai chu kyø maùy (T ³ 2ms ) vaø V phaûi lôùn hôn 2.5V Choïn V=3 V; T=40 ms; R7=10 kW Khi ñoù: CRST1= . Choïn giaù trò chuaån CRST1=10mF Ñieän trôû R7 coù taùc duïng xaõ doøng tích treân tuï khi ta nhaán ñeå chaân Reset leân möùc 1 (5V). 4.2.2 Maïch taïo dao ñoäng AT89C51 coù moät boä dao ñoäng treân chip. Noù thöôøng ñöôïc noái vôùi moät thaïch anh giöõa hai chaân 18 vaø 19. Caùc tuï giöõ oån ñònh cuõng raát caàn thieát cho vieäc buø nhieät, giaù trò thöôøng töø 27pF – 40pF. Taàn soá dao ñoäng thaïch anh thoâng thöôøng laø =12 Mhz. Vaäy thôøi gian 1 chu kyø maùy laø: ===1 ms IC AT89C51 Hình 4.5: Sô ñoà IC AT89C51 Vi ñieàu khieån AT89C51 laø IC raát thoâng duïng vì coù chöùa boä nhôù EFROM beân trong vaø taêng ñöôïc bus giao tieáp neân tieát kieäm ñöôïc kích thöôùc vaø thuaän tieän vieäc thieát keá. Ngoaøi ra coù theâm 2 cheá ñoä bit ñieàu khieån nguoàn: IDL_idle mode (Cheá ñoä nghæ; ñöôïc ñaët leân 1 ñeå kích hoaït cheá ñoä nghæ; chæ thoaùt khi coù ngaét hoaëc reset heä thoáng) vaø PD_power down (taét nguoàn; ñöôïc ñaët leân 1 ñeå kích hoaït cheá ñoä taét nguoàn; chæ thoaùt khi xoùa veà 0) tieát kieäm naêng löôïng Port 0: chaân 32-39(AD0-AD7) laø caùc ñöôøng döõ lieäu vaø ñòa chæ ñöôïc noái ñeán chaân 4-11(AD0-AD7) IC ñoàng hoà DS12C887 Port 2: chæ söû duïng caùc chaân 21, 22, 23 (P2.0, P2.1, P2.2) ñöôïc noái ñeán chaân 9,10, 11 cuûa LCD 16x2. Port 3: chaân 12, 13, 14, 15 (P3.2, P3.3, P3.4, P3.5) ñöôïc noái ñeán caùc phím nhaán: SELECT, OK, UP, DOWN. Chaân 10, 11, (P3.0 P3.1) ñöôïc keát noái vôùi chaân 6, 5 (SCK, SDA) cuûa Rom 24C04. Chaân 16 () ñöôïc noái ñeán chaân 15 (R/) cuûa IC DS12C887. Chaân 17 () ñöôïc noái ñeán chaân 17 (DS) cuûa IC DS12C887 Chaân 18, 19 (XTAL2, XTAL1) ñöôïc noái vôùi thaïch anh 12 MHz söû duïng laøm xung clock cho vi xöû lyù Chaân 31 () ñöôïc noái leân nguoàn +5V ñeå vi ñieàu khieån thöïc thi chöông trình töø ROM noäi trong khoaûng ñòa chæ thaáp 8 Kbyte Chaân 9 (Reset) ñöôïc töï ñoäng reset khi caáp nguoàn hoaëc coù theå reset baèng tay khi ta caàn baèng caùch nhaán phím reset Chaân 30 (ALE) ñöôïc noái ñeán chaân 14 (AS) cuûa IC DS12C887 4.2 SÔ ÑOÀ MAÏCH GIAO TIEÁP GIÖÕA VI XÖÛ LYÙ VAØ IC DS12C887 Hình4.6: Sô ñoà khoái maïch giao tieáp giöõa vi xöû lyù vaø IC DS12C887 Hình 4.7: Sô ñoà maïch giao tieáp giöõa vi xöû lyù vaø IC DS12C887 Chaân 4-11 (AD0-AD7) cuûa IC DS12C887 vöøa laø caùc ñöôøng ñòa chæ vaø döõ lieäu ñöôïc noái ñeán Port 0 töø chaân 32-39 (AD0-AD7) cuûa vi ñieàu khieån. Vì Port 0 coù cöïc thu ñeå hôû neân ta phaûi maéc ñieän trôû keùo leân nguoàn Vcc taïo möùc ñieän theá logic cao. Caùc ñieän trôû coù theå choïn: 1 kW, 4.7 kW, 10 kW Chaân 15 (R/) ñöôïc noái ñeán chaân 16 () cuûa vi xöû lyù cho pheùp ghi döõ lieäu vaøo RAM cuûa IC DS12C887 Chaân 17 (DS) ñöôïc noái ñeán chaân 17 () cho pheùp ñoïc döõ lieäu töø RAM cuûa IC DS12C887. Chaân 1 (MOT) ñöôïc noái ñaát ñeå choïn theo chuaån Intel Chaân 14 (AS) ñöôïc noái ñeán chaân 30 (ALE) cho pheùp choát byte thaáp cuûa ñòa chæ trong thôøi gian truy xuaát boä nhôù ngoaøi Chaân 18,19 (, ) ñöôïc noái leân nguoàn, tích cöïc ôû möùc thaáp neân ñöôïc keùo leân bôõi 2 ñieän trôû R1=R2=10 kW SÔ ÑOÀ MAÏCH HIEÅN THÒ SÔ ÑOÀ MAÏCH NGUOÀN Sô ñoà khoái maïch nguoàn Hình4.16: Sô ñoà khoáimaïch nguoàn Bieán aùp nguoàn: Haï theá töø 220V caùc ñieän aùp thaáp hôn nhö 6V, 9V, 12V Maïch chænh löu: Ñoå ñieän AC thaønh DC Maïch loïc: Loïc gôïn xoay chieàu sau chænh löu cho nguoàn DC phaúng hôn Maïch oån aùp: Giöõ moät ñieän aùp coá ñònh cung caáp cho taûi tieâu thuï. Maïch oån aùp ñöôïc coi laø ñôn giaûn vaø coùhieäu quaû laø loaïi IC LA78: LA7805 IC oån aùp 5V LA7808 IC oån aùp 8V LA7809 IC oån aùp 9V LA7812 IC oån aùp 12V Löu yù : Hoï IC78 chæ cho doøng tieâu thoï khoaûng 1A trôû xuoáng. Khi raùp IC trong maïch thì Uin>Uout töø 3 ñeán 5V khi ñoù IC môùi phaùt huy taùc duïng Hình4.16: IC oån aùp LA7805 Sô ñoà chi tieát maïch nguoàn +5V Hình4.17: Sô ñoà chi tieát maïch nguoàn Nguoàn AC 9V ñöôïc ñöa vaøo caàu diode goàm 4 diode (1N4007 vôùi ñieän aùp ngöôïc cöïc ñaïi laø 1000V vaø doøng cöïc ñaïi laø 1A) qua C2= 2200uF/25V (loïc nguoàn ngoõ vaøo) vaø C4=104 (loïc nhieãu xoay chieàu ngoõ vaøo) taïo ra ñieän aùp +12V, Sau ñoù nguoàn 12V ñöa vaøo oån aùp LM7805 qua C5= 1000uF (loïc nguoàn ngoõ ra) vaø C6=104 (loïc nhieãu ngoõ ra) taïo ra ñieän aùp +5V DC caáp nguoàn cho caùc IC cuûa maïch chính 4.6 NGUYEÂN LYÙ HOAÏT ÑOÄNG TOÅNG QUAÙT Thoâng tin lòch vaïn nieân (giôø, phuùt, giaây, ngaøy, thaùng, naêm) chöùa trong dalas DS12C887. IC naøy coù moät byte ñòa chæ vaø döõ lieäu ñöôïc tích hôïp chung (AD0AD7). Khi ta choïn ba ñòa chæ naøy thì chaân ñöôïc tích cöïc ôû möùc 0, khi ta choïn döõ lieäu thì chaân ñöôïc tích cöïc möùc 0. khi ta ñoïc thoâng tin lòch vaïn nieân töø Dalas thì chaân ôû möùc 1. khi ta ghi thoâng tin lòch vaïn nieân từ Dalas thì chaân ôû möùc 0. Byte ddiwj chæ vaø döõ lieäu cuûa Dalas ñöôïc keát loái vôùi Port 1 cuûa AT89C51 , chaân ñöôïc keát noái vôùi chaân ALE cuûa AT89C51. Port 0 cuûa AT89C51 ñöôïc tích hôïp ñòa chæ vaø döõ lieäu. Khi chi xuaát ñòa chæ thì chaân ALE cuûa AT89C51 ôû möùc 0 cuõng ôû möùc 0 laø ta choïn ñòa chæ. Khi ta choïn döõ lieäu thì chaân RD cuûa AT89C51 ôû möùc 0, chaân naøy ñöôïc noái vôùi chaân laø ta choïn döõ lieäu. Port 1 cuûa AT89C51 ñöôïc keát noái vôùi LCD ñeå hieån thò thoâng tin lòch vaïn nieân. Chaân VR cuûa LCD ñöôïc keát noái vôùi bieán trôû VR1(10K) ñeå chænh ñoä saùng toái cuûa LCD. Chaân ,,Enable cuûa LCD laø caùc chaân ñieàu khieån. Caùc nuùt nhaán Select, Up, Down, Ok duøng ñeå hieäu chænh thoâng tin lòch vaïn nieân cuûa Dalas. Chöông 5.1 CHÖÔNG TRÌNH CHÍNH BAÉT ÑAÀU KHÔÛI TAÏO LCD KHÔÛI TAÏO DALLAS ÑOÏC GIÔØ PHUÙT GIAÂY HEX TO BCD HAØNG 1 HAØNG 2 SELECT=0 BIEÁN ÑEÁM 1 = 1 SETTING KEÁT THUÙC S Ñ 5.2 CHÖÔNG TRÌNH KHÔÛI TAÏO LCD BAÉT ÑAÀU XAÙC LAÄP CAÁU HÌNH HOAÏT ÑOÄNG CUÛA LCD THEO DATASHEET XAÙC LAÄP FONT 5*7 KEÁT THUÙC 5.3 CHÖÔNG TRÌNH KHÔÛI TAÏO DALLAS BAÉT ÑAÀU GHI VAØO THANH GHI A CUÛA DALLAS NOÄI DUNG 20H GHI VAØO THANH GHI B CUÛA DALLAS NOÄI DUNG 06H KEÁT THUÙC 5.4 CHÖÔNG TRÌNH ÑOÏC GIÔØ, PHUÙT, GIAÂY BAÉT ÑAÀU ÑOÏC THOÂNG TIN LÒCH VAÏN NIEÂN CUÛA DALLAS TÖØ OÂ NHÔÙÙ 00H – 09H LÖU VAØO OÂ NHÔÙ 60H – 69H CUÛA 89C51 KEÁT THUÙC 5.5 HEX TO BCD BAÉT ÑAÀU SOÁ HEX ÑOÏC TÖØ DALLAS CHIA CHO 10 ÑEÅ TAÙCH SOÁ ÑÔN VÒ VAØ SOÁ CHUÏC KEÁT THUÙC 5.6 HAØNG 1 BAÉT ÑAÀU GIAÛI MAÕ SOÁ BCD CUÛA GIÔØ-PHUÙT-GIAÂY,HIEÅN THÒ LEÂN HAØNG 1 CUÛA LCD KEÁT THUÙC 5.7 HAØNG 2 BAÉT ÑAÀU GIAÛI MAÕ SOÁ BCD CUÛA THÖÙ, NGAØY, THAÙNG, NAÊM HIEÅN THÒ HAØNG 2 CUÛA LCD KEÁT THUÙC 5.8 CHÖÔNG TRÌNH SETTING S KEÁT THUÙC BAÉT ÑAÀU HEX TO BCD HAØNG 1 HAØNG 2 UP = 0 SELECT=00 DOWN = 0 OK = 0 TAÊNG BIEÁN ÑEÁM 1 B ÑEÁM 1=8 BIEÁN ÑEÁM 1 = 1 TAÊNG GIAÛM Ñ S Ñ Ñ Ñ 5.9 CHÖÔNG TRÌNH TAÊNG BAÉT ÑAÀU Ñ TAÊNG GIAÂY BIEÁN ÑEÁM 1=1 S Ñ TAÊNG PHUÙT BIEÁN ÑEÁM 1=2 S Ñ TAÊNG GIÔØ BIEÁN ÑEÁM 1=3 S Ñ TAÊNG THÖÙ BIEÁN ÑEÁM 1=4 S Ñ TAÊNG NGAØY BIEÁN ÑEÁM 1=5 S Ñ TAÊNG THAÙNG BIEÁN ÑEÁM 1=6 S Ñ TAÊNG NAÊM BIEÁN ÑEÁM 1=7 S KEÁT THUÙC 5.10 CHÖÔNG TRÌNH GIAÛM BAÉT ÑAÀU Ñ GIAÛM GIAÂY BIEÁN ÑEÁM 1=1 S Ñ GIAÛM PHUÙT BIEÁN ÑEÁM 1=2 S Ñ GIAÛM GIÔØ BIEÁN ÑEÁM 1=3 S Ñ GIAÛM THÖÙ BIEÁN ÑEÁM 1=4 S Ñ GIAÛM NGAØY BIEÁN ÑEÁM 1=5 S Ñ GIAÛM THAÙNG BIEÁN ÑEÁM 1=6 S Ñ GIAÛM NAÊM BIEÁN ÑEÁM 1=7 S KEÁT THUÙC Chöông CHUONG TRINH HIEN THI DONG HO TREN LCD datalcd equ p1 RS bit p2.2 RW bit p2.1 Enable bit p2.0 select bit p3.2 up bit p3.3 down bit p3.4 ok bit p3.5 org 0000h lcall ktaolcd lb1: lcall ktaods lb: lcall docgpg lcall hexbcd lcall hang1 lcall hang2 jb select,x1 kt1: lcall dl3_lcd jnb select,kt1 mov 5fh,#01h lcall setting sjmp lb1 x1: sjmp lb setting: x6: lcall hexbcd lcall hang1 lcall hang2 jb select,x2 kt2: lcall dl3_lcd jnb select,kt2 inc 5fh mov a,5fh cjne a,#8,x2 mov 5fh,#01h x2: jb ok,x3 kt3: lcall dl3_lcd jnb ok,kt3 mov r0,#00h mov r1,#60h ds2: mov a,@r1 movx @r0,a inc r1 inc r0 cjne r0,#0ah,ds2 sjmp x7 x3: jb up,x4 kt4: lcall dl3_lcd jnb up,kt4 lcall tang x4: jb down,x5 kt5: lcall dl3_lcd jnb down,kt5 lcall giam x5: sjmp x6 x7: ret tang: mov a,5fh ;tang giay cjne a,#01h,y1 inc 60h mov a,60h cjne a,#60,y1 mov 60h,#00h y1: mov a,5fh ;tang phut cjne a,#02h,y2 inc 62h mov a,62h cjne a,#60,y2 mov 62h,#00h y2: mov a,5fh ;tang gio cjne a,#03h,y3 inc 64h mov a,64h cjne a,#24,y3 mov 64h,#00h y3: mov a,5fh ;tang thu cjne a,#04h,y4 inc 66h mov a,66h cjne a,#8,y4 mov 66h,#01h y4: mov a,5fh ;tang ngay cjne a,#05h,y5 inc 67h mov a,67h cjne a,#32,y5 mov 67h,#01h y5: mov a,5fh ;tang thang cjne a,#06h,y6 inc 68h mov a,68h cjne a,#13,y6 mov 68h,#01h y6: mov a,5fh ;tang nam cjne a,#07h,y7 inc 69h mov a,69h cjne a,#100,y7 mov 69h,#00h y7: ret giam: mov a,5fh ;giam giay cjne a,#01h,y8 dec 60h mov a,60h cjne a,#0ffh,y8 mov 60h,#59 y8: mov a,5fh cjne a,#02h,y9 dec 62h mov a,62h cjne a,#0ffh,y9 mov 62h,#59 y9: mov a,5fh cjne a,#03h,y10 dec 64h mov a,64h cjne a,#0ffh,y10 mov 64h,#23 y10: mov a,5fh cjne a,#04h,y11 dec 66h mov a,66h cjne a,#00h,y11 mov 66h,#7 y11: mov a,5fh cjne a,#05h,y12 dec 67h mov a,67h cjne a,#00h,y12 mov 67h,#31 y12: mov a,5fh cjne a,#06h,y13 dec 68h mov a,68h cjne a,#00h,y13 mov 68h,#12 y13: mov a,5fh cjne a,#07h,y14 dec 69h mov a,69h cjne a,#0ffh,y14 mov 69h,#99 y14: ret ktaolcd: clr tr0 clr tf0 mov tmod,#01 clr RS clr RW setb Enable mov tl0,#03h mov th0,#0ch mov datalcd,#38h lcall x1lcd lcall dl_lcd mov datalcd,#38h lcall x1lcd mov datalcd,#0ch lcall x1lcd mov datalcd,#01h lcall x1lcd lcall font ret writelcd: mov a,#0 movc a,@a+dptr cjne a,#99h,x2lcd ret x2lcd: mov datalcd,a acall data_byte inc dptr sjmp writelcd dl_lcd: setb tr0 clr tf0 jnb tf0,$ ret write1lcd: mov r0,#30h ht1: mov a,@r0 lcall h1 inc r0 cjne r0,#40h,ht1 ret h1: movc a,@a+dptr mov datalcd,a acall data_byte ret write2lcd: mov r0,#40h ht2: mov a,@r0 lcall h1 inc r0 cjne r0,#50h,ht2 ret font: mov datalcd,#40h acall x1lcd mov dptr,#0840h acall writelcd ret hang1: mov datalcd,#080h acall x1lcd mov dptr,#0800h acall write1lcd ret hang2: mov datalcd,#0c0h acall x1lcd mov dptr,#0800h acall write2lcd ret x1lcd: clr RS jmp dl1_lcd data_byte: setb RS nop dl1_lcd: clr RW clr Enable nop setb Enable nop mov datalcd,#0ffh setb RW clr RS clr Enable nop setb Enable lcall dl2_lcd ret dl2_lcd: mov 52h,#00 djnz 52h,$ ret dl3_lcd: mov 53h,#01h de2: mov 54h,#0ffh de1: mov 55h,#0ffh djnz 55h,$ djnz 54h,de1 djnz 53h,de2 ret ktaods: mov r0,#10 mov a,#00100000b movx @r0,a mov r0,#11 mov a,#06h movx @r0,a ret docgpg: mov r0,#00h mov r1,#60h ds1: movx a,@r0 mov @r1,a inc r1 inc r0 cjne r0,#10,ds1 ret hexbcd: mov a,60h mov b,#10 div ab mov 3bh,b ;d/vi giay mov 3ah,a ;chuc giay mov a,62h mov b,#10 div ab mov 38h,b ;d/vi phut mov 37h,a ;chuc phut mov a,64h mov b,#10 div ab mov 35h,b ;d/vi gio mov 34h,a ;chuc gio mov 43h,66h ;thu mov a,67h mov b,#10 div ab mov 47h,b ;d/vi ngay mov 46h,a ;chuc ngay mov a,68h mov b,#10 div ab mov 4ah,b ;d/vi thang mov 49h,a ;chuc thang mov a,69h mov b,#10 div ab mov 4fh,b ;d/vi nam mov 4eh,a ;chuc nam mov 4dh,#0 ;tram nam mov 4ch,#2 ;ngan nam mov 30h,#0ch ;khoang trang mov 31h,#0ch ;khoang trang mov 32h,#0ch ;khoang trang mov 33h,#0ch ;khoang trang mov 36h,#0ah ;dau : mov 39h,#0ah ;dau : mov 3ch,#0ch ;khoang trang mov 3dh,#0ch ;khoang trang mov 3eh,#0ch ;khoang trang mov 3fh,#0ch ;khoang trang mov 40h,#0dh ;T mov 41h,#0eh ;h mov 42h,#0fh ;u mov 44h,#0ch ;khoang trang mov 45h,#0ch ;khoang trang mov 48h,#0bh ;gach ngang mov 4bh,#0bh ;gach ngang ret delay: mov 7eh,#01 del1: mov 7fh,#30 djnz 7fh,$ djnz 7eh,del1 ret org 0800h db '0123456789:- Thu' org 0840h ;font_data: font1: db 0ah,15h,11h,11h,0ah,04h,00h,00h font2: db 04h,0ah,11h,11h,15h,0ah,00h,00h font3: db 04h,0eh,15h,04h,04h,04h,04h,00h font4: db 04h,04h,04h,04h,15h,0eh,04h,00h font5: db 18h,18h,1fh,1fh,1fh,18h,18h,00h font6: db 1fh,1fh,03h,03h,03h,1fh,1fh,00h font7: db 0ah,15h,0ah,15h,0ah,15h,0ah,00h font8: db 15h,0ah,15h,0ah,15h,0ah,15h,00h db 99h end C – KEÁT LUAÄN VI XÖÛ LYÙ Taùc giaû: HOÀ TRUNG MYÕ Nhaø xuaát baûn: Tröôøng Ñaïi Hoïc Quoác gia TP HCM. Naêm 2003 HOÏVI ÑIEÀU KHIEÅN 8051 Taùc giaû: TOÁNG VAÊN ON & HOAØN ÑÖÙC HAÛI Nhaø xuaát baûn: Lao Ñoäng – Xaõ Hoäi Haø Noäi. Naêm 2001 GIAÙO TRÌNH THÍ NGHIEÄM VI XÖÛ LYÙ Taùc giaû: Boä moân Ñieän Töû Nhaø xuaát baûn: Khoa Ñieän-Ñieän Töû_ Tröôøng ÑHBK TP.HCM, Thaùng 9 -2002 KYÕ THUAÄT ÑIEÄN TÖÛ . Taùc giaû : LÖU PHI YEÁN – LÖU PHUÙ – NGUYEÃN NHÖ ANH Nhaø xuaát baûn : Ñaïi Hoïc Baùch Khoa – TP HCM. Naêm 1996 DATASHEET REAL TIME CLOCK DS12C887 www.Maxim-ic.com MOÄT SOÁ ÑÒA CHÆ WEB THAM KHAÛO www.google.com.vn www.Alldatasheet.com www.8951.com

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

  • docNOI DUNG BAO CAO.doc
  • doc~$I DUNG BAO CAO.doc
  • docBIA.doc
  • docso do mach in.doc
  • docso do nguyen ly tong hop.doc
  • docso do nguyen ly.doc
Tài liệu liên quan