Ứng dụng CPU Z80 thiết kế và thi công hệ thống báo giờ tự động
Trang 1PHẢI EOFHT?
PHẢI EOFRT?
BẰNG GIỜ THỰC?
BẰNG PHÚT THỰC ?
PHÚT THAY ĐỔI ?
Luận văn tốt nghiệp
BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
KHOA ĐIỆN _ ĐIỆN TỬBỘ MÔN ĐIỆN TỬ
LUẬN VĂN TỐT NGHIỆP
ĐỀ TÀI:
ỨNG DỤNG CPU Z80THIẾT KẾ VÀ THI CÔNGHỆ THỐNG BÁO GIỜ TỰ ĐỘNG
SVTH : PHAN THANH TÀILỚP : 95KĐĐ
GVHD : TS_ TRẦN THU HÀ
Trang 2Đại học quốc gia TP HCMCộng hòa xã hội chủ nghĩa Việt Nam
Trường Đại Học Sư Phạm Kỹ Thuật Độc lập – Tự do – Hạnh phúc
KHOA ĐIỆN _ ĐIỆN TỬBỘ MÔN ĐIỆN TỬ
NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
Họ và tên : PHAN THANH TÀI
Lớp : 95KĐĐ
1- Tên đề tài:
ỨNG DỤNG CPU Z80
THIẾT KẾ VÀ THI CÔNG HỆ THỐNG BÁO GIỜ TỰ ĐỘNG
2- Các số liệu ban đầu:
5- Cán bộ hướng dẫn: TS-Trần Thu Hà
6- Ngày giao nhiệm vụ:
7- Ngày hoàn thành nhiệm vụ: 28/02/2000
Cán bộ hướng dẫn ký tên Thông qua bộ môn Ngày tháng năm 2000
Trang 3LỜI CẢM TẠ
Có lẽ không một ai có thể quên được những mái trường mà mình đã đi quatrong một thời thơ ấu cho đến lúc trưởng thành và tôi không phải là một ngoạilệ Các mái trường đã lần lượt nối tiếp nâng dần từng bước đi lên của tôi Cứ saumỗi chặng đường đi qua, tôi lại thấy mình lớn lên, vững vàng hơn trong kiếnthức và năng lực Chặng đường vừa đi qua là chặng đường cuối cùng của thờicắp sách đến trường đó là năm năm dài đầy cam go và thử thách dưới máitrường Đại Học Sư Phạm Kỹ Thuật Nơi đây đã không chỉ đơn giản cung cấp chotôi những kiến thức khoa học kỹ thuật mà quý hơn cả là đã nhóm trong tôi ngọnlửa yêu khoa học và rèn luyện cho tôi một nghị lực vững vàng để làm hành trangbước vào đời.
Bên cạnh đó gia đình còn là nguồn động lực to lớn về tinh thần lẫn vậtchất giúp cho tôi bước đi trên con đường mà tôi đã chọn.
Con xin cảm ơn ba mẹ đã không quản khó nhọc lo toan chăm chút cho con,nuôi dưỡng con thành người Nay con kính dâng lên ba mẹ những gì con đã gặthái được trên ghế nhà trường.
Xin cảm ơn những mái trường mà tôi đã đi qua suốt thời niên thiếu Tôi sẽghi nhớ mãi công ơn của tất cả thầy cô đã dìu dắt tôi từ những buổi học vở lòngđến nay Cảm ơn trường Đại Học Sư Phạm Kỹ Thuật, nơi in đậm những vuibuồn, thất bại và thành công của tuổi sinh viên Kính lời cảm ơn khoa điện cùngcác thầy cô của khoa, tất cả như những người thân đã dành nhiều tình cảm tốtđẹp đối với tôi và tạo mọi điều kiện thuận lợi để tôi học tập tốt.
Gởi đến cô Trần Thu Hà lời ghi ơn vô vàn, người cô đã trực tiếp theo sát,
tận tình hướng dẫn tôi trong suốt quá trình làm luận văn.
Sau cùng là lời cảm ơn chân thành về những ý kiến đóng góp của quí thầycô và tất cả bạn đọc.
Trang 4LỜI NÓI ĐẦU
Kỹ thuật vi xử lí với tốc độ phát triển nhanh đã và đang mang đến những thay đổito lớn trong khoa học và công nghệ cũng như trong đời sống hàng ngày Ngày nay, cácthiết bị, máy móc ngày càng trở nên thông minh hơn và dễ sử dụng hơn Các công việcđược thực hiện với hiệu quả cao hơn Đó cũng nhờ vào kỹ thuật vi xử lí.
Kỹ thuật vi xử lí là kỹ thuật của tương lai, là chìa khóa đi vào công nghệ hiệnđại Đối với sinh viên chuyên ngành Điện Tử, đây là một lĩnh vực mới, hứa hẹn mở ranhiều triển vọng Để góp phần làm nền tảng ban đầu cho việc học tập, tìm hiểu kỹthuật vi xử lí người viết đề nghị thực hiện đề tài : ỨNG DỤNG CPU Z80 VÀO HỆTHỐNG BÁO GIỜ TỰ ĐỘNG.
Trong quá trình thực hiện đề tài, mặc dù người viết đã rất cố gắng, xong chắc chắnkhông tránh khỏi thiếu xót Rất mong nhận được sự góp ý, phê bình và chỉ dẫn của quíthầy cô và bạn đọc.
Trang 5MỤC LỤC
Lời mở đầuMục lục
PHẦN I : GIỚI THIỆU ĐỀ TÀI
I- Mục tiêu đề tài.
II- Khả năng của hệ thống báo giờ tự động.III- Một số qui ước.
IV- Phương hướng giải quyết.4.1- Giải pháp phần cứng4.2- Giải pháp phần mềm
V- Nguyên lý chung của hệ thống báo giờ tự động.
PHẦN II : NỘI DUNG
I- Giới thiệu các dạng mạch đã có trong nước.
II- Thiết kế phần cứng.
2.1- Tổng quát phần cứng hệ thống 2.2- Bộ nhớ hệ thống và giải mã địa chỉ
2.2.1- Bộ nhớ hệ thống 2.2.2- Mạch giải mã địa chỉ2.2.3- Tóm tắt
2.4- Cấu tạo và nguyên tắt hoạt động các khối mạch
Trang 62.4.4- Mạch kiểm soát ngắt2.4.5- Mạch hiển thị (Display) 2.4.6- Mạch điều khiển báo hiệu
2.4.7- Mạch cung cấp điện 2.5- Sơ đồ chi tiết mạch điện hệ thống.III- Thiết kế phần mềm
3.1- Tổng quát phần mềm hệ thống
3.1.1- Chức năng báo hiệu tự động 3.1.2- Chức năng tạo thời gian thực
3.1.3- Chức năng điều chỉnh thời gian thực
3.1.4- Chức năng về Hottime (Xem – Xóa – Đặt)3.1.5- Chức năng về Skiptime (Xem – Xóa – Đặt)3.1.6- Các chương trình con
3.2- Tổ chức dữ liệu
3.2.1- Thời gian thực 3.2.2- Restime
3.2.3- Hottime3.2.4- Skiptime3.2.5- Mã chuông 3.2.6- Các biến
3.2.7- Phân chia vùng nhớ3.3- Các chương trình
3.3.1- Chương trình MAIN
3.3.2- Chương trình RTP (Real Time Program)3.3.3- Chương trình Settime
3.3.4- Chương trình Hottime3.3.5- Chương Trình Skiptime
Trang 73.3.6- Chương trình con Display3.3.7- Chương trình con Keypro3.3.8- Chương trình con ERRORIV- Thi công
PHẦN III : KẾT LUẬN VÀ KIẾN NGHỊ
I- Kết quả thực nghiệm
II- Mô tả hệ thống và hướng dẫn sử dụng
2.1- Chức năng điều chỉnh thời gian thực (Settime)2.2- Chức năng về Hottime
2.3- Chức năng về SkiptimeIII- Kết luận và hướng phát triển của đề tàiIV- Kiến nghị
Phụ lục
Tài liệu tham khảo
Trang 8PHẦN I
GIỚI THIỆU ĐỀ TÀI
Trang 9I- MỤC TIÊU CỦA ĐỀ TÀI:
Việc báo hiệu thời gian trong trường học, trong phân xưởng sản xuất hay ở các xínghiệp … tuy rất đơn giản nhưng đòi hỏi phải có người quản lý theo dõi thường xuyênvà báo hiệu chính xác.
Để đề phòng cháy nổ cho các cơ quan, kho tàng … cần phải được trang bị các thiếtbị phát hiện hỏa hoạn Việc phát hiện sớm các vụ hỏa hoạn sẽ hạn chế được nhữngthiệt hại về tính mạng con người cũng như của cải vật chất.
Mục tiêu của đề tài là thiết kế một Hệ Thống có những khả năng sau:_ Tạo ra thời gian thực.
_ Tự động báo hiệu tại những thời điểm đã được qui định (Gồm những thời điểmđược đặt trước trong ROM và những thời điểm do người sử dụng tự đặt vào Hệ Thốngqua bàn phím).
_ Việc báo hiệu có thể được thực hiện bằng nhiều cách khác nhau.
_ Thăm dò các thiết bị phát hiện hỏa hoạn (Sensors) và phát tín hiệu báo độngkhẩn cấp khi có hỏa hoạn xảy ra.
Trong khuôn khổ của luận văn tốt nghiệp, người viết chỉ thiết kế Hệ Thống thựchiện việc tạo thời gian thực và tự động báo hiệu tại những thời điểm đã được qui định.Hệ Thống có tên gọi “Hệ Thống Báo Giờ Tự Động” được thiết kế nhằm mục đíchthay thế người quản lý tự động báo hiệu tại các thời điểm trong ngày một cách chínhxác.
II- KHẢ NĂNG CỦA HỆ THỐNG BÁO GIỜ TỰ ĐỘNG:
Với tên gọi “Hệ Thống Báo Giờ Tự Động” Hệ Thống có những khả năngsau:
_ Cho phép theo dõi thời gian thực (Gồm thứ, giờ, phút và giây) và điều chỉnh thờigian thực.
_ Tự động báo hiệu tại những thời điểm cố định hằng ngày (Những thời điểm nàyđược đặt sẵn theo yêu cầu nơi sử dụng) Không báo hiệu vào ngày thứ 7 và Chủ nhật.
_ Cho phép người sử dụng đặt vài thời điểm báo hiệu đột xuất trong ngày._ Người sử dụng có thể cấm báo hiệu tại những thời điểm nào đó trong ngày._ Cho phép xem lại hay xóa mất bất kì thời điểm nào do người sử dụng tự đặt vàoHệ Thống.
Trang 10_ Hệ Thống có đèn chỉ thị yêu cầu đặt lại thời gian thực khi việc tạo thờigian thực bị gián đoạn.
_ Hệ Thống có khả năng phát hiện ra lỗi và sẽ gởi thông báo lỗi đến người sử dụngqua led hiển thị.
III- MỘT SỐ QUI ƯỚC :
Để ngắn gọn trong trình bày, người viết xin qui ước các thuật ngữ sau đây:
_ Điều chỉnh thời gian thực: là thay đổi thời điểm hiện tại, gọi là SETTIME
_ Thời điểm báo hiệu thường trực: là những thời điểm báo hiệu cố định hàng
ngày, chẳng hạn như giờ học trong trường học, gọi là RESTIME.
_ Thời điểm báo hiệu tức thời: là những thời điểm do ngươi sử dụng tự đặt vào Hệ
Thống để báo hiệu đột xuất, gọi là HOTTIME.
_ Thời điểm cấm báo hiệu: là những thời điểm do sử dụng tự đặt vào để cấm báo
hiệu tại bất kì một thời điểm nào trong ngày, gọi là SKIPTIME.
IV-PHƯƠNG HƯỚNG GIẢI QUYẾT:
Để Hệ Thống có những tính năng mạnh mẽ, dễ dàng trong sử dụng, người viếtdùng kỹ thuật vi xử lý để thiết kế Hệ Thống Hoạt động của Hệ Thống là sự kết hợpchặt chẽ giữa phần cứng và phần mềm.
4.1-Giải pháp phần cứng:
Hệ Thống được thiết kế dựa trên bộ vi xử lí (P Micro processor) Z80 của hãngZilog Hệ Thống có:
_ Bộ nhớ ROM và RAM phục vụ cho hoạt động của Hệ Thống.
_ Tín hiệu định thời để phục vụ việc tạo thời gian thực bằng phần mềm._ Bàn phím để người sử dụng giao tiếp với Hệ Thống.
_ Mạch kiểm soát các vectơ ngắt INT mode 0 dùng cho việc phục vụ các chứcnăng: Settime, Hottime và Skiptime.
_ 7 led 7 đoạn để hiển thị thời gian (Thứ, giờ, phút và giây)._ Mạch điều khiển chuông điện để báo hiệu.
_ Mạch nguồn cấp điện có accu dự phòng khi mất điện lưới.
4.2 Giải pháp phần mềm:
Phần mềm Hệ Thống được thiết kế dựa trên cấu tạo phần cứng Hệ Thống đượctổ chức như sau:
_ Một IC ROM chứa phần mềm Hệ Thống và bảng Restime.
_ Một IC RAM được dùng làm vùng đệm, Stack, bảng Hottime, bảng Skiptime._ Chương trình ra quyết định báo hiệu và điều khiển báo hiệu.
Trang 11_ Chương trình phục vụ ngắt NMI để đếm thời gian thực.
_ Các chương trình phục vụ các ngắt INT mode 0 để thực hiện các chức năng:Settime, Hottime và Skiptime
_ Xử lý bàn phím và hiển thị để người sử dụng giao tiếp với Hệ Thống.
Trên đây là giải pháp kỹ thuật mà người viết chọn để thiết kế Hệ Thống.
V- NGUYÊN LÝ CHUNG CỦA HỆ THỐNG BÁO GIỜ TỰ ĐỘNG:
Bộ vi xử lý (P) Z80 là một P 8 bit, có khả năng truy xuất 64KB bộ nhớ, cónhiều kiểu ngắt Tần số xung clock tối đa 2.5MHz (họ Z80 CPU) Tập lệnh gồm 158lệnh.
Trong quá trình hoạt động của Hệ Thống, cứ mỗi giây tín hiệu định thời tác độngvào ngắt NMI để gọi chương trình tạo thời gian thực và mỗi giây thời gian thực đượchiển thị trên đèn led 7 đoạn.
Chương trình phần mềm thường xuyên thực hiện quá trình so sánh thời gian thựcvới từng Restime, Hottime, Skiptime và thứ trong tuần để ra quyết định báo hiệu.
Khi có tín hiệu gọi ngắt INT , tùy vào địa chỉ ngắt mode 0, các chức năng như:Xem_Xóa_Đặt Hottime, Xem_Xóa_Đặt Skiptime và Settime sẽ được chương trìnhtương ứng phục vụ Khi đó, thông qua bàn phím và đèn hiển thị người sử dụng sẽ thựchiện các chức năng đã chọn.
Nhìn chung:
Người viết thấy yêu cầu phần cứng ngoài bộ vi xử lí và bộ nhớ (ROM và RAM)cần phải có mạch hiển thị, bàn phím, mạch kiểm soát ngắt mode 0, mạch điều khiểnbáo hiệu, mạch tạo xung đồng hồ và định thời.
Vêà phần mềm, ngoài việc khởi động Hệ Thống cần phải thực hiện các nhiệm vụsau: tạo thời gian thực, quyết định việc báo hiệu và điều khiển báo hiệu Phục vụ ngườisử dụng điều chỉnh thời gian thực, thực hiện các chức năng về Hottime và Skiptime.Điều khiển mạch hiển thị để hiển thị các thông tin cần thiết như thời gian thực, cácHottime và Skiptime, tạo thông báo lỗi Xử lí bàn phím để nhận lệnh từ người sử dụng.
Trang 12PHẦN II
NỘI DUNG
Trang 13I- GIỚI THIỆU CÁC DẠNG MẠCH ĐÃ CÓ TRONG NƯỚC.
Trước đây đã có một vài Hệ Thống báo Giờ Tự Động được thiết kế và thi công.Tuy nhiên, do chúng được thiết kế bằng cách dùng “Eprom” nên đã vấp phải một vàihạn chế về tính năng trong sử dụng cũng như việc tính toán phức tạp trong kết nối phầncứng Sau đây, người viết sẽ giới thiệu hai dạng mạch dùng “Eprom” điển hình.
1.1_ Đề tài : “Thiết Kế Và Thi Công Máy Báo Tiết Cho Trường ĐHSPKT”
Gvhd: Trần Minh Chánh.
Svth : Nguyễn Đình Mạnh Chiến Trần Thị Bạch Ngọc
Sơ đồ khối chi tiết mạch:
Trình bày sơ đồ khối:
_ Khối dao động: tạo tần số chuẩn 1Hz làm tần số cơ sở để mạch hoạt động và tạoxung điều khiển mạch báo giây.
_ Khối chia 30: tạo tần số 1/30 Hz tức ½ giây là tần số để mạch đếm thay đổi địachỉ bộ nhớ.
_ Khối đếm: Là mạch đếm lên làm tăng dần địa chỉ bộ nhớ sau mỗi xung ½giây Có thể đặt lại trạng thái ban đầu (reset) bằng tay hoặc từ ngõ ra của bộnhớ.
_ Khối nhớ và đệm: ghi toàn bộ chương trình báo tiết học trong 24 giờ.Tạo xung cho mạch chỉ thị (1 phút)
CÔNG SUẤT VÀ TẢI
DAO ĐỘNG1Hz
Trang 14 Tạo xung reset toàn mạch sau 24 giờ (bằng cách reset mạch đếm vềtrạng thái ban đầu mà tại địa chỉ đó chứa đoạn chương trình reset toànmạch).
_ Khối điều khiển báo hiệu:
Tạo thời gian dài (7’) cho đầu tiết học. Tạo thời gian ngắn (3’) cho cuối tiết học.
Tắt mở báo bằng tay theo yêu cầu sử dụng (ALARM ON/OFF).
_ Khối công suất: gồm transistor công suất, rơle đóng cắt tải AC, DC (110V,220V).
_ Khối dao động điều chỉnh:
Tạo tần số dao động cao hơn tần số dao động cơ bản để điều chỉnh lại đồng hồbáo giờ.
Chỉnh với tốc độ nhanh. Chỉnh với tốc độ chậm.
_ Khối nguồn: Gồm có mạch ổn áp, mạch bảo vệ nhằm cực tính nguồn accu từbên ngoài
Nguyên lý hoạt động cơ bản của hệ thống như sau:
Dữ liệu từ 0 đến 23 giờ và tín hiệu điều khiển báo chuông được nạp trong một ICROM 2732 Dữ liệu này không xuất trực tiếp ra led 7 đoạn để hiển thị mà chúng cónhiệm vụ tạo ra xung clock cho mạch đếm BCD và xung reset cho mạch đếm sau 60phút và sau 24 giờ
Nguyên tắc tạo ra xung clock cho mạch đếm BCD như sau :
Cứ mỗi phút ở ngõ ra của IC ROM sẽ xuất hai 2 byte, ở bit D0 của byte thứ nhất cógiá trị là 0 và byte thứ 2 có giá trị là 1, IC ROM cứ tuần hoàn xuất ra dữ liệu như thếnên ở bit D0 ngõ ra sẽ tạo thành một chuỗi xung liên tục có tần số là 1/60 Hz hay 1phút (dạng chuỗi xung có được mô tả ở hình phía dưới) kích cho mạch đếm BCD đểmạch đếm này cứ đếm tăng lên, sau đó số đếm BCD này sẽ được giải mã từ BCD raled 7 đoạn để hiển thị
Địa chỉ : 0h 1h 2h 3h 4h
Dạng sóng
Trang 151/60 Hz
Do mạch đếm là mạch đếm BCD nên ở phút 60 phải có xung reset mạch đếm phútvề 00 và tăng giờ lên 1, tương tự khi giờ bằng 24 phải reset giờ về 00.
Nguyên tắc reset mạch đếm phút và giờ như sau:
Bit D1 dùng để reset mạch đếm phút Giả sử mạch đếm phút được reset ở mức 0 thìtất cả các byte ở phút 60 phải đặt bit D1 = 0 còn các byte khác phải đặt bit D1 = 1.
Tương tự như reset mạch đếm phút, bit D2 dùng để reset mạch đếm giờ Bytetương ứng với 24 giờ phải đặt bit D2 = 0 (giả sử mạch đếm giờ có reset tác động mức 0)còn các byte còn lại phải đặt bit D2 = 1.
VD : Mạch reset phút tác động mức 0 thì phải ghi chương trình như sau: Địa chỉ : 118D 119D 102D 121D
Giờ ứng : 0:59 0:59:30 1:00:00 1:00:30 D1 : 1 1 0 1
D0 ck CO ck CO ck CO ck Reset 60 phút Reset 24 giờ D1 D2
SƠ ĐỒ MẠCH ĐẾM BCD CHO PHÚT, GIỜ
Nguyên tắc xuất tín hiệu điều khiển chuông:
Chục giờ
Trang 161.2 _ Đề tài : “Thiết Kế Và Thi Công Mạch Đồng Hồ Báo Giờ”
Giáo viên hướng dẫn : Nguyễn Phương Quang Sinh viên thực hiện : Võ Đức Trí
: Đoàn Nam SơnLớp : 95KĐĐ3/7
Sơ đồ khối chi tiết mạch.
Nhiệm vụ các khối:
KHỐI ĐIỀU KHIỂN BÁO
BỘ GIẢI MÃ ĐỊA CHỈKHỐI HIỂN THỊ
KHỐI GIẢI ĐA HỢP, CHỌN KÊNH
KHỐI DAO ĐỘNG ĐIỀU CHỈNH
Trang 17_ Khối tạo xung: khối này có chức năng tạo dao động và chia tần số để được xung1 Hz Xung này được đưa đến bộ đếm và giải mã địa chỉ bộ nhớ.
_ Khối giải mã địa chỉ bộ nhớ: khối này là bộ đếm lên nhận xung clock vớitần số 1/60 Hz (1 phút), 11 ngõ ra của bộ đếm được đưa đến 11 đường địa chỉ từA2 đến A12 của IC nhớ 2764.
_ Bộ nhớ: Là nơi lưu trữ dữ liệu đã nạp từ trước Mạch giải mã địa chỉ bộ nhớ sẽlàm cho địa chỉ bộ nhớ thay đổi, khi đó dữ liệu sẽ được xuất ra mạch bên ngoài quamạch đệm dữ liệu.
Bộ chốt dữ liệu: có nhiệm vụ chốt dữ liệu và giao tiếp với bộ nhớ để hiển thị dữliệu ra led 7 đoạn.
_ Khối giải mã và chọn kênh: nhận xung từ bộ dao động sau đó giải mã ở ngõ rađể chọn bộ đệm.
_ Khối hiển thị: cho phép người sử dụng xem được giờ, phút thông qua led 7 đoạn._ Khối điều khiển báo: đây là khối thực hiện nhiệm vụ chính, nó có nhiệm vụ phátra tín hiệu điều khiển chuông.
_ Khối dao động điều chỉnh: tạo tần số dao động cao hơn tần số dao động cơ bảnđể cho phép người sử dụng chỉnh lại giờ, phút của đồng hồ.
_ Khối nguồn: khối này đảm bảo cho toàn mạch hoạt động liên tục, gồm có mạchổn áp và accu dự phòng.
Nguyên lý hoạt động cơ bản của hệ thống như sau:
Dữ liệu từ 0 đến 23 giờ và tín hiệu điều khiển báo chuông được lưu trongEprom Dữ liệu này sẽ được xuất ra led 7 đoạn và mạch điều khiển báo chuông chỉ quabộ đệm mà không cần giải mã, mỗi phút sẽ có 4 byte dữ liệu gồm 2 byte cho giờ và 2byte cho phút xuất lần lượt ra 2 led giờ và 2 led phút, chúng sẽ vẫn cứ xuất ra lần lượtnhư thế (quét) với tần số khá cao để người quan sát không còn thấy được sự chớp tắtcủa nó nữa Dữ liệu xuất ra ở bộ đệm có 32 đường, trong đó 28 đường cung cấp chohiển thị giờ, phút, một đường cấp cho hiển thị AM/PM thông qua 1 FF-T, một đườngcấp cho mạch điều khiển chuông để báo giờ.
Dựa vào nguyên tắc hoạt động của hai dạng mạch nêu trên người viết nhận thấyrằng mặc dù nguyên tắc hoạt động của chúng khác nhau nhưng chúng đều có chungnhững khả năng sau:
_ Tạo ra thời gian thực gồm giờ và phút.
_ Điều chỉnh thời gian thực, cách điều chỉnh là điều chỉnh với tốc độ nhanh và
Trang 181.3- Ưu nhược điểm của hệ thống bao giờ tự động dùng “EPROM” và vi xử líZ80.
Như vậy hệ thống báo giờ tự động mà người viết thiết kế có được những ưu, nhượcđiểm so với 2 dạng mạch nêu trên như sau:
Ưu điểm:
_ Hiển thị được thêm thứ và giây.
_ Điều chỉnh thứ, giờ, phút độc lập với nhau Có thể điều chỉnh thời gian theohướng tăng hoặc giảm.
_ Có thể đặt vào hệ thống 10 thời điểm báo hiệu đột xuất thông qua bàn phím_ Có thể đặt vào hệ thống 10 thời điểm cấm báo hiệu thông qua bàn phím
_ Có thể xem lại và xóa đi các thời điểm báo hiệu đột xuất và các thời điểm cấmbáo hiệu do người sử dụng đặt vào hệ thống.
_ Không báo hiệu vào ngày thứ bảy và chủ nhật (giải quyết bằng phần mềm)._ Tín hiệu báo chuông được điều khiển bằng phần mềm nên rất đa dạng nhằmmục đích thể hiện ý nghĩa của loại thời điểm báo hiệu.
_ Có chương trình báo lỗi nhằm tăng thêm tính sống động của hệ thống.
Trang 19II_ THIẾT KẾ PHẦN CỨNG.
2.1_ Tổng quát phần cứng Hệ Thống.
Phần cứng Hệ Thống được xây dựng với yêu cầu đơn giản nhưng hiệu quả,phục vụ tốt cho các hoạt động của Hệ Thống Sơ đồ khối tổng quát của HệThống được mô tả ở hình 1.
Thành phần cốt lõi của Hệ Thống là bộ vi xử lí (P) Z80, các vi mạch nhớROM (Read Only Memory), RAM (Random Access Memory) Các bộ phận bổtrợ như mạch tạo xung đồng hồ và định thời (Clock generator và Timer), mạchbàn phím (Keyboard), mạch hiển thị (Display), mạch kiểm soát ngắt INT
(Interrupt controller) và mạch điều khiển báo hiệu (Bell Driver).
Hệ Thống sẽ gồm có 1 vi mạch ROM và 1 vi mạch RAM Vi mạch ROM sẽlưu trữ phần mềm Hệ Thống và các thời điểm báo hiệu Restime Vi mạch RAMdùng để làm vùng nhớ làm việc của Hệ Thống và là vùng đệm để lưu trữ cácHottime và Skiptime.
Mạch tạo xung đồng hồ và định thời sẽ phát ra xung nhịp cho hoạt động của
vụ việc tạo thời gian thực.
Bàn phím gồm 5 phím chức năng (Xây dựng theo nguyên tắc ánh xạ bộ nhớ)cho phép người sử dụng điều chỉnh thời gian thực cũng như đặt các Hottime vàSkiptime.
Mạch hiển thị gồm 7 led 7 đoạn sẽ thông báo thời gian (Thứ, giờ, phút vàgiây) và cho phép người sử dụng theo dõi được các thao tác trên bàn phím
Mạch kiểm soát ngắt giúp người sử dụng lựa chọn các chế độ hoạt động
Mạch điều khiển báo hiệu phát ra tín hiệu theo sự điều khiển của phầnmềm.
Trang 20ADDRESS BUSCONTROL BUSDATA BUS1Hz
277khZ
Hình 1: SƠ ĐỒ KHỐI TỔNG QUÁT HỆ THỐNG
KEYBO
Trang 21 Nguyên lí hoạt động tổng quát:
Hệ thống báo giờ tự động là một hệ vi xử lí nên hoạt động của hệ thống làsự kết hợp chặt chẽ giữa phần cứng và phần mềm.
Vi xử lí được đặt ở chế độ “auto reset” nên khi mới mở điện vi xử lí sẽ bắtđầu đọc bộ nhớ tại địa chỉ 0000h Đây cũng là địa chỉ bắt đầu của chương trìnhhệ thống Ngoài ra, mạch kiểm soát ngắt sẽ cấm tín hiệu Timer tác động vào
thống báo giờ sai.
Về mặt phần mềm:
Khi mới mở điện chương trình hệ thống sẽ khởi động mạch hiển thị (khởi tạo8279) để mạch hiển thị sẵn sàng hiển thị dữ liệu thời gian thực từ vi xử lí gởi tới.Ngoài ra, chương trình hệ thống còn reset mạch báo chuông …
Mạch bàn phím hoạt động khi chương trình con Keypro được gọi để phục vụcho Settime, Hottime hay Skiptime.
hiểu rõ hơn hoạt động của Hệ Thống Bước đầu tiên trong việc thiết kế HệThống là phân bố bộ nhớ và thực hiện giải mã địa chỉ cho các bộ phận của HệThống.
Trang 222.2_Bộ nhớ Hệ Thống và giải mã địa chỉ:
2.2.1_Bộ nhớ Hệ Thống:
Hệ Thống báo giờ tự động là một hệ vi xử lí nên việc phân bố bộ nhớHệ Thống là hết sức cần thiết Ngoài bộ nhớ ROM, RAM Hệ Thống còn có cácbộ phận: bàn phím, mạch hiển thị và mạch điều khiển báo hiệu Các bộ phậnnày được xem như bộ nhớ Bộ vi xử lí sẽ truy xuất các khối mạch này giống nhưtruy xuất bộ nhớ (phương pháp ánh xạ bộ nhớ).
Do yêu cầu hoạt động với vùng nhớ nhỏ Hệ Thống chỉ sử dụng 20KBđầu tiên (0000h – 4FFFh) trong không gian 64KB mà Z80 quản lí Với yêu cầutrên bộ nhớ sẽ được phân chia thành các vùng nhớ dành cho ROM, RAM, vùngnhớ dành cho mạch hiển thị, mạch báo hiệu và bàn phím.
Để đơn giản, bộ nhớ Hệ Thống sẽ chia thành 5 vùng với dung lượng4KB/vùng được phân bố như sau:
Hình 2: BẢN ĐỒ BỘ NHỚ HỆ THỐNG
Vùng nhớ từ địa chỉ 0000h đến 0FFFh dành cho IC ROM chứa phầnmềm Hệ Thống và lưu trữõ các Restime IC ROM được dùng là 2732 (4KBx8).Bảng mô tả hoạt động và sơ đồ chân chức năng như sau:
Trang 23CHẾ ĐỘ CEOE\VppVccOUTPUT
ReadStand byProgramProgram verifyProgram Inhibit
DoutHigh Z
DinDoutHigh Z
Bảng 1 : BẢNG MÔ TẢ HOẠT ĐỘNG CỦA IC – ROM 2732
Hình 3: SƠ ĐỒ CHÂN CHỨC NĂNG CỦA IC-ROM 2732
Vùng nhớ từ 1000h đến 1FFFh là vùng nhớ RAM dùng để làm ngăn xếp(Stack), vùng đệm, bảng Hottime và bảng Skiptime Với yêu cầu hiện tại, HệThống chỉ sử dụng 2KB từ 1000h đến 17FFh khi có yêu cầu mở rộng 2KB cònlại sẽ được dùng đến IC- RAM được chọn là loại RAM tĩnh (Static Ram) 6116(2KBx8) IC 6116 có bảng mô tả hoạt động và sơ đồ chân chức năng như sau:
Trang 24CHẾ ĐỘ CEOEWE DATA
Không chọnCấm xuấtĐọc (Read)Ghi (Write)
High ZHigh ZDout
Bảng 2 : BẢNG MÔ TẢ HOẠT ĐỘNG CỦA IC – RAM 6116
Hình 4: SƠ ĐỒ CHÂN CHỨC NĂNG CỦA RAM 6116
Vùng nhớ còn lại được dành cho các bộ phận: bàn phím, hiển thị, điềukhiển báo hiệu.
2.2.2_ Mạch giải mã địa chỉ:
Nhiệm vụ mạch giải mã địa chỉ là thực hiện hoạt động giải mã để tạo ra
khiển chọn các bộ phận bàn phím, hiển thị, điều khiển báo hiệu.
Mạch giải mã địa chỉ là một mạch giải mã từ 3 ra 8 đường sử dụng 3đường địa chỉ A12, A13, A14 để giải mã tạo 8 đường tín hiệu điều khiển và chọnchip.
Bảng giải mã địa chỉ chi tiết cùng các tín hiệu điều khiển như sau:
Trang 25A15A14 A13 A12A 11 A10 ……A0VÙNG NHỚTÍNHIỆU
0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0
x x …… x 0 x …… x 1 x …… x x x … x x x … x x x …… x
0000h – 0FFFh1000h - 17FFh1800h – 1FFFh2000h – 2FFFh3000h - 3FFFh4000h - 4FFFh
Chọn IC ROMChọn IC RAM
Chưa dùngHiển thịBáo hiệuĐọc bàn phím
Bảng 3 : BẢNG GIẢI MÃ ĐỊA CHỈ BỘ NHỚ.
Mạch giải mã địa chỉ dùng IC 74LS138 có 8 ngõ ra tác động mức thấp.
khiển việc giải mã chọn chip.
Hình 5: SƠ ĐỒ CHI TIẾT MẠCH GIẢI MÃ ĐỊA CHỈ.
2.2.3_Tóm tắt:
Mạch điện bộ nhớ Hệ Thống có cấu tạo như sau:
Trang 26Hình 6: SƠ ĐỒ CHI TIẾT MẠCH BỘ NHỚ
phép P ghi dữ liệu vào RAM.
Trang 27Hình 7: CHU KÌ P ĐỌC VÀ GHI BỘ NHỚ.
Hoạt động đọc, ghi bộ nhớ của P như sau:
Các bộ phận bàn phím, hiển thị và điều khiển báo hiệu thiết kế theonguyên tắt ánh xạ bộ nhớ Hoạt động của P truy xuất các bộ phận này như sau:
HOẠT ĐỘNG CỦA P ĐỊA CHỈ MERQ TÍN HIỆU ĐIỀU KHIỂN
Điều khiển báo hiệu 3000h – 3FFFh L BDR = L
Trang 282.3_ Khảo sát tính chất ngắt NMI:
(NON_ MASKABLE INTERRUPT)
chỉ 0066h.
Với yêu cầu đặt ra là Hệ Thống làm việc với thời gian thực, nên đòi hỏi việcđếm thời gian phải thực hiện chính xác và được ưu tiên hàng đầu Do đó, ngắt
gian thực chương trình Hệ Thống còn phải thực hiện các công việc khác như:
được làm ảnh hưởng đến các hoạt động trên
hồ cuối cùng ở chu kì máy cuối cùng của một chu kì lệnh (gọi là các thời điểmto).
Chu kì máy cuối Chu kì máy lệnh kế
to
Hình 8: GIẢN ĐỒ NHẬN NGẮT NMI
các thời điểm khác với các thời điểm to thì chương trình Hệ Thống sẽ không
không được thực hiện.
Phần mềm Hệ Thống bao gồm nhiều loại lệnh và các lệnh này được thực
Trang 29này vẫn đang ở mức tích cực thấp Để nhận ngắt trở lại, chân NMI của Z80 phảiđược kéo lên mức logic cao trước khi có tín hiệu ngắt kế tiếp.
đương với việc khôi phục hoạt động thăm dò ngắt của P
Tóm lại, để hoạt động đếm thời gian thực không ảnh hưởng đến các hoạt
đối với hoạt động của Hệ Thống
2.4_Cấu tạo và nguyên tắt hoạt động các khối mạch:
2.4.1_Mạch tạo xung đồng hồ:
Mạch tạo xung đồng hồ có vai trò như quả tim đập nhịp cho hoạt động củaHệ Thống Viêäc tạo thời gian thực sẽ càng chính xác nếu tần số xung clock cấpcho P càng cao Tuy nhiên, Hệ Thống sẽ hoạt động khó ổn định ở tần số cao donhiễu xuất hiện trên đường mạch in Do vậy, tần số xung clock được chọn saucho giảm thiểu sai số trong việc tạo thời gian thực và tránh được nhiễu xuất hiệntrên mạch in để Hệ Thống hoạt động ổn định Tần số xung clock được chọn là500KHz.
nhận ngắt khi phải thực hiện xong lệnh còn đang dang dở ta tính được sai số vềthời gian cực đại do việc tạo thời gian thực như sau:
Thời gian thực hiện lệnh dài nhất t = 23x1/fck = 23/500000
= 0.46sSai số trong 1 phút = 60 x t
= 60 x 0.46 = 27,6S
Tính tương tự ta có sai số cực đại trong một năm = 365 x 24 x 60 x 60 x t = 365 x 24 x 60x 60 x27,6
Trang 30Sai số này là sai số max, thực tế không phải lúc nào tín hiệu gọi ngắt NMI
cũng ngay vừa lúc P nhận một lệnh dài nhất nên tần số hoạt động của HệThống = 500KHz là chấp nhận được.
Tần số xung clock này cũng được cấp cho IC 8279 để hiển thị.
Để tận dụng số lượng cổng logic trên mạch cũng như đơn giản trong thiết kế,mạch dao động được thiết kế như sau:
Hình 9: SƠ ĐỒ MẠCH TẠO XUNG ĐỒNG HỒ
2.4.2_Mạch định thời.
Mạch định thời có nhiệm vụ tạo ra xung nhịp tuần hoàn phục vụ cho việcđếm thời gian thực Việc đếm thời gian thực đòi hỏi phải thực hiện một cáchchính xác và ổn định Do đó, mạch định thời phải tạo ra tín hiệu định thời có tầnsố thật chính xác và có tính ổn định cao.
tạo thời gian thực sẽ tăng lên 1 đơn vị thời gian (1 giây).
Để có được tín hiệu định thời tần số 1Hz có độ chính xác và tính ổn định caomặc nhiên không thể sử dụng mạch dao động RC vì giá trị R,C không ổn địnhtheo thời gian cũng như nhiệt độ.
Có thể dùng mạch dao động thạch anh để có được tín hiệu định thời ổn địnhvà chính xác Tuy nhiên, giá trị thạch anh bán ngoài thị trường ít nhất cũng vàitrăm KHz, cho nên phải tốn thêm mạch chia tần số thì mới có được tín hiệu địnhthời tần số 1Hz.
Chính vì vậy người viết chọn mạch dao động trong đồng hồ GIMIKO, đây làmạch chuyên dùng nên đảm bảo được tính ổn định và chính xác của tín hiệuđịnh thời.
Trang 31Hình 10: SƠ ĐỒ MẠCH ĐỊNH THỜI.
Do mạch dao động sử dụng nguồn 1,5V nên tín hiệu định thời ở ngõ ra sẽđược khuyếch đại lên cho phù hợp với mức logic của mạch số Sau đó, tín hiệu
bằng một mạch đơn ổn (Mono Multivibrator).
lệnh dài nhất trong chương trình Hệ Thống Thời gian thực hiện lệnh dài nhất
2.4.3_Mạch bàn phím (Keyboard):
Người sử dụng dùng bàn phím để điều chỉnh thời gian (Settime), đặt các thờiđiểm báo hiệu đột xuất (Hottime), đặt các thời điểm cấm báo hiệu (Skiptime),xem hoặc xóa nội dung bảng Hotime/Skiptime.
Để đáp ứng các yêu cầu trên, bàn phím sẽ có 5 phím với tên gọi như sau :
Trang 32Bàn phím được thiết kế theo nguyên tắc ánh xạ bộ nhớ, P sẽ xem bànphím như 1 byte nhớ Bàn phím có địa chỉ thuộc vùng nhớ từ 4000h đến 4FFFh.
nhau sẽ làm cho byte nhớ có nội dung khác nhau tương ứng với chức năng khácnhau của mỗi phím Chu kì P đọc bàn phím như hình 11.
CLOCK A0-A15 MERQ
D0-D7
Hình 11: CHU KÌ P ĐỌC BÀN PHÍM.
Bàn phím có cấu tạo gồm một IC đệm 8 bit 3 trạng thái và 5 Switch như sau:
Hình 12: SƠ ĐỒ CHI TIẾT MẠCH BÀN PHÍM
IC 74LS245 được dùng làm mạch đệm 8 bit 3 trạng thái nên bàn phím có tối
động vào chân G của IC 74LS245 để đọc bàn phím Khi không có phím nàođược ấn, dữ liệu đọc vào có nội dung là 0FFh Khi có 1 phím được ấn, bit tương
Trang 33ứng sẽ có mức logic thấp Ví dụ, khi phím OK được ấn, dữ liệu đọc được sẽ cónội dung là 0F7h Như vậy, mỗi phím tương ứng với một mã sau:
-OkDel/Date _ +
Del/Date_
Bảng 4: BẢNG MÃ BÀN PHÍM
Chương trình xử lí bàn phím sẽ thực hiện các công việc phù hợp với các mãđược nhận Khi không có nhu cầu sử dụng bàn phím, ngõ ra của mạch đệm 8 bitở trạng thái tổng trở cao, bàn phím được cách ly khỏi bus dữ liệu
Chương trình phần mềm phải đọc phím sau mỗi 200ms nhằm mục đích:Chống hiện tượng nảy của phím và để người sử dụng theo dõi được sự thayđổi của các con số trên đèn hiển thị khi ấn các phím.
2.4.4_Mạch kiểm soát ngắt (interupt controller).
Hệ Thống báo giờ tự động có 3 chức năng: Setime, Hotime và Skiptime Để
cho P biết công việc cần thực hiện để phục vụ người sử dụng Tại mỗi thờiđiểm, người sử dụng chỉ có thể làm việc ở 1 chức năng hoặc Setime hoặcHotime hoặc Skiptime.
để tạo nên 3 chức năng trên Nhiệm vụ của mạch kiểm soát ngắt là tạo ra 3
Trang 34Hình 13: SƠ ĐỒ KHỐI MẠCH KIỂM SOÁT NGẮT.
Mạch tạo vectơ ngắt là mạch đếm modulo 4 đồng bộ, sẽ tạo ra 4 vectơ ngắt(vectơ ngắt gồm 8 bit có dạng 11ttt111) Mỗi vectơ ngắt tạo ra tương ứng với 1chức năng của Hệ Thống Hiện tại Hệ Thống chỉ sử dụng 3 vectơ ngắt, các vectơngắt còn lại dành cho các yêu cầu mở rộng chức năng khi cần Bảng 5 trình bàycác vectơ ngắt và chức năng của chúng:
SetimePhục vụ hotimePhục vụ Skiptime
Chưa sử dụng
Bảng 5: CHỨC NĂNG VÀ ĐỊA CHỈ CÁC VECTƠ NGẮT.
vectơ ngắt đang hiện diện trên đệm 8 bit và thực hiện chương trình phục vụ ngắttương ứng với vectơ ngắt đó Mạch giải mã và chỉ thị sẽ làm sáng led tương ứngvới vectơ ngắt được chọn Người sử dụng sẽ dùng switch “select” để lựa chọn
CHỐT 8 BIT 3 TRẠNG
THÁITẠO VECTƠ
MẠCH GỌI NGẮT
GIẢI MÃ VÀ CHỈ THỊ
Trang 35Khi ở chức năng Setime, mạch kiểm soát ngắt sẽ tạo ra tín hiệu điều khiểndừng việc đếm thời gian thực Tín hiệu này sẽ điều khiển việc cho hoặc cấm tín
Hệ Thống sẽ tự động đặt ở chế độ Setime và ngừng việc đếm thời gian thực, lúcđó mạch tạo vectơ ngắt tự động tạo ra vectơ ngắt 11001111 và tín hiệu ngừngđếm thời gian Công việc trên nhằm tránh cho Hệ Thống báo giờ sai, đồng thờingười sử dụng sẽ biết được cần phải đặt lại thời gian khi nhìn thấy đèn chỉ thịchức năng Setime sáng lên.
Mạch kiểm soát ngắt có cấu tạo như sau:
Hình 14: SƠ ĐỒ CHI TIẾT MẠCH KIỂM SOÁT NGẮT.
IC 74LS245 được dùng làm đệm 8 bit 3 trạng thái, IC 74LS112 làm mạchđếm modulo 4, được đặt ở chế độ tự động reset khi mới cấp điện IC 4093 làmnhiệm vụ giải mã và thúc các led chỉ thị IC 74LS123 làm nhiệm vụ giới hạn
Trang 36Mạch hiển thị có nhiệm vụ thông báo thời gian thực và cho phép người sửdụng theo dõi được công việc đang thực hiện khi dùng bàn phím Nội dung hiểnthị là các con số chỉ thời gian (thứ, giờ, phút, giây) Đèn hiển thị gồm 7 led 7đoạn, một led hiển thị thứ, hai led hiển thị giờ, hai led hiển thị phút và 2 led hiểnthị giây.
Do đặc điểm của Hệ Thống là phần quét hiển thị cần phải được thực hiệnđộc lập với vi xử lí nên người viết sử dụng IC chuyên quét phím và hiển thị Đólà IC 8279 để hiển thị.
Cấu trúc phần cứng 8279
Hình 15: SƠ ĐỒ CHÂN CHỨC NĂNG IC 8279
Tên các chân :
DB7 – DB0CLKRESET
CS\RD\WR\AoIRQSl0 - SL3
CHỨC NĂNG
Data busClock input
Reset inputChip SelectRead inputWrite inputAddress
Interrupt request inputScan lines
Trang 37RL0 – RL3SHIFTCNTL/STBOUT A3 – 0OUT B3 – 0
Return linesShift inputControl/Strobe input
Display (A) outputDisplay (B) outputBlank Display output
Caáu truùc phaàn meàm cuûa 8279
khieån 8279.
Trang 38011 : decode scan keyboard – N key lockout100 : encode scan sensor matrix
101 : dencode scan sensor matrix110 : strobe input, encode display scan111 : strobe input, decode display scan
+ Mã
+ 8279 có 8 byte RAM bên trong để chứa mã của phím ấn hay mã của cácsensors, để truy xuất từng byte mã của phím ấn hay của sesors ta có thể điềuchỉnh các bit AAA tương ứng Bộ nhớ này thuộc kiểu FIFO.
+ AI (automatically increment) : ở mức 1 có chức năng làm con trỏ tự độngtăng lên byte kế tiếp để sẵn sàng cho việc đọc dữ liệu Nếu AI = 0 con trỏ sẽkhông thay đổi.
+ Mã
+ 8279 có 16 byte RAM bên trong do con trỏ 4 bit AAAA quản lý 16 byteRam này dùng để chứa dữ liệu hiển thị do vi xử lí gởi đến, để đọc dữ liệu ô nhớnào trong vùng nhớ Ram ta có thể điều chỉnh các bit AAAA tương ứng.
Bộ nhớ này thuộc kiểu FIFO
Trang 39+ AI (automatically increment): ở mức 1 có chức năng làm con trỏ tự độngtăng lên byte kế tiếp để sẵn sàng đọc byte dữ liệu Nếu AI = 0 con trỏ sẽ khôngthay đổi.
+ Mã
+ Bit E = 1 sẽ xóa ngắt IRQ về mức 0
+ Mã
+ 8279 có 16 byte Ram bên trong do con trỏ 4 bit AAAA quản lý 16 byteRam này dùng để chứa dữ liệu hiển thị do vi xử lí gởi tới Để gởi dữ liệu đếnbyte Ram tứ mấy trong 16 byte Ram ta có thể điều chỉnh các bit AAAA tươngứng
+ AI (automatically increment): ở mức 1 có chức năng làm con trỏ tư ïđộngtăng lên byte kế để sẵn sàng nhận dữ liệu Nếu AI = 0 con trỏ sẽ không thay đổido đó byte dữ liệu sau sẽ đè lên byte dữ liệu trước đó
Trang 40Hình 16: SƠ ĐỒ CHI TIẾT MẠCH HIỂN THỊ.
Cách khởi tạo 8279 được trình bày ở phần thiết kế phần mềm.
2.4.6_Mạch điều khiển báo hiệu:
Khi đến thời điểm báo hiệu, Hệ Thống phát ra tín hiệu điều khiển thiết bịbáo hiệu hoạt động Việc báo hiệu được thể hiện bằng đèn chớp tắt hay tiếngcòi, chuông điện Cách thức báo hiệu như : số hồi chuông và độ dài các hồichuông do phần mềm Hệ Thống qui định Cách thức báo hiệu có thể thay đổibằng cách thay đổi byte mã chuông trong chương trình phần mềm Các thiết bịbáo hiệu có thể được cấp điện từ nguồn điện khác với nguồn điện của HệThống.
Mạch điều khiển báo hiệu có địa chỉ từ 3000h đến 3FFFh P sẽ xuất tínhiệu báo hiệu ra mạch điều khiển báo hiệu bằng lệnh ghi dữ liệu vào 1 byte
khiển việc báo hiệu Mạch điều khiển báo hiệu có sơ đồ khối như hình 17.