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.
50 trang |
Chia sẻ: banmai | Lượt xem: 2324 | Lượt tải: 5
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