Bối cảnh và vấn đề nghiên cứu
Sự phát triển của kỹ thuật vi xử lý và vi điều khiển từ cuối thập niên 1970 đã tạo ra bước chuyển biến lớn trong lĩnh vực kỹ thuật điều khiển tự động. Năm 1976, hãng Intel giới thiệu vi điều khiển 8748 thuộc họ MCS-48 chứa hơn 17.000 transistor, tích hợp CPU, 1 KB EPROM, 64 byte RAM, 27 chân xuất/nhập và 1 bộ định thời 8-bit. Đến năm 1980, dòng chip 8051 thuộc họ vi điều khiển MCS-51 ra đời với mật độ tích hợp trên 60.000 transistor, trang bị 4 KB ROM, 128 byte RAM, 32 đường xuất/nhập cùng 2 bộ định thời 16-bit, trở thành chuẩn công nghiệp phổ biến cho các hệ thống nhúng điều khiển chuyên dụng.
Tại các cơ sở đào tạo và trường học, nhu cầu quản lý thời gian giảng dạy và báo tiết học chính xác là một đòi hỏi thực tiễn. Trước đây, nhiều hệ thống báo giờ đã được nghiên cứu và chế tạo nhưng bộc lộ nhiều hạn chế về mặt cấu trúc phần cứng và tính linh hoạt:
- Đề tài "Thiết kế và thi công máy báo tiết cho Trường ĐHSPKT" (hướng dẫn bởi GV. Trần Minh Chánh, thực hiện bởi SV. Nguyễn Đình Mạnh Chiến và Bạch Ngọc Mai) sử dụng IC nhớ EPROM 2732. Dữ liệu từ 0 đến 23 giờ và tín hiệu điều khiển chuông được nạp trong EPROM, tạo chuỗi xung 1/60 Hz kích cho chuỗi mạch đếm BCD rời, sau đó giải mã hiển thị LED 7 đoạn. Tín hiệu chuông đầu tiết và cuối tiết dùng 2 bit (D4, D5) kích qua 2 mạch dao động đơn ổn để tạo độ trễ 7 giây và 3 giây.
- Đề tài "Thiết kế và thi công mạch đồng hồ báo giờ" (hướng dẫn bởi GV. Nguyễn Phương Quang, thực hiện bởi SV. Võ Đức Trí và Đoàn Nam Sơn, Lớp 98KDD3/7) sử dụng EPROM 2764 với 11 đường địa chỉ (A2–A12) nhận xung đếm 1/60 Hz, giải mã quét hiển thị 32 đường đệm ra 4 LED giờ/phút và 1 đường báo chuông.
- Các thiết kế dùng bộ vi xử lý Z80 đòi hỏi phải kết nối thêm nhiều IC bổ trợ do Z80 không tích hợp bộ nhớ nội.
Các hệ thống dùng EPROM rời hoặc vi xử lý Z80 có nhược điểm lớn: cấu trúc phần cứng cồng kềnh, tính toán ghép nối phức tạp; việc điều chỉnh thời gian chỉ có thể tăng/giảm tần số quét xung mà không thể chỉnh độc lập giữa giờ, phút, thứ; không chỉnh lùi được thời gian và các mốc báo giờ bị cố định cứng trong bộ nhớ ROM.
Đề tài "Thiết kế và thi công hệ thống báo giờ sử dụng vi điều khiển 8951" được thực hiện bởi sinh viên Đoàn Quốc Sơn (MSSV: 98221461, Lớp 98N KĐĐ) dưới sự hướng dẫn của Th.S Trần Thanh Mai tại Khoa Điện - Điện tử, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh (hoàn thành tháng 03/2002) nhằm khắc phục các nhược điểm trên.
Mục tiêu và nhiệm vụ nghiên cứu của đề tài gồm:
- Thiết lập hệ thống tạo thời gian thực chính xác gồm thứ, giờ, phút và giây.
- Thiết kế khối hiển thị trực quan thông số thời gian thực (thứ, giờ, phút, giây) bằng 8 LED 7 đoạn.
- Xây dựng giải thuật cho phép người sử dụng theo dõi và điều chỉnh độc lập từng thông số thời gian (thứ, giờ, phút) theo hướng tăng thông qua bàn phím điều khiển và ngắt ngoài.
- Tự động phát tín hiệu điều khiển chuông điện báo hiệu tại các thời điểm định sẵn trong ngày (cụ thể thiết lập 3 mốc: 07 giờ 00 phút, 11 giờ 30 phút và 16 giờ 45 phút).
- Thiết kế mạch nguồn cung cấp liên tục, tích hợp bộ sạc và ắc quy dự phòng tự động chuyển mạch khi mất điện lưới (khi mất điện, hệ thống vẫn duy trì bộ đếm thời gian nhưng ngắt chuông để tiết kiệm năng lượng).
Cơ sở lý thuyết và phương pháp
Đề tài xây dựng trên nền tảng kỹ thuật vi điều khiển họ MCS-51, lý thuyết mạch điện tử tương tự, mạch số và phương pháp lập trình hợp ngữ có cấu trúc:
-
Kiến trúc vi điều khiển AT89C51 (họ MCS-51):
- Vi điều khiển 8-bit tích hợp 4 KB Flash ROM nội, 128 byte RAM nội, 4 cổng xuất/nhập 8-bit (P0, P1, P2, P3), 2 bộ định thời/đếm 16-bit (Timer 0 và Timer 1), cổng truyền thông nối tiếp UART và 5 nguồn ngắt phân cấp 2 mức ưu tiên.
- Không gian bộ nhớ RAM nội được phân chia rõ ràng: 32 byte thấp (00H–1FH) chia thành 4 dãy thanh ghi (Bank 0 đến Bank 3); 16 byte tiếp theo (20H–2FH) gồm 128 bit định vị trực tiếp; 80 byte RAM mục đích chung (30H–7FH) và vùng thanh ghi chức năng đặc biệt SFR (80H–FFH) chứa các thanh ghi điều khiển như PSW (Program Status Word tại D0H), TMOD (Timer Mode tại 89H), TCON (Timer Control tại 88H), IE (Interrupt Enable tại A8H), IP (Interrupt Priority tại B8H) và con trỏ ngăn xếp SP (81H).
- Cơ chế tạo trễ và định thời gian thực sử dụng Timer 0 ở Chế độ 1 (Mode 1 - định thời 16-bit). Khi sử dụng bộ dao động thạch anh tần số 12 MHz kết hợp 2 tụ ổn định 30 pF, một chu kỳ máy của vi điều khiển tương đương $12 / 12\text{ MHz} = 1\ \mu\text{s}$. Cứ mỗi chu kỳ máy, giá trị trong cặp thanh ghi định thời (TH0, TL0) tăng lên một đơn vị cho đến khi xảy ra hiện tượng tràn từ
FFFFH sang 0000H, kích hoạt cờ tràn TF0 và sinh ngắt định thời.
- Hệ thống ngắt ngoài INT0 (chân P3.2, vector ngắt
0003H) và INT1 (chân P3.3, vector ngắt 0013H) được cấu hình để phục vụ các tác vụ chọn chế độ và điều chỉnh thời gian thực.
-
Phương pháp nghiên cứu và thiết kế:
- Phương pháp phân tích - tổng hợp: Nghiên cứu, đánh giá ưu nhược điểm của các thế hệ mạch báo giờ dùng EPROM (2732, 2764) và vi xử lý Z80 nhằm tối ưu hóa sơ đồ khối và lược bỏ các linh kiện rời không cần thiết.
- Phương pháp tính toán mạch điện tử tương tự: Tính toán các tầng khuếch đại thuật toán dùng OPAMP μA741, phân áp diode Zener và tầng đệm transistor công suất A671 cho mạch sạc ắc quy tự động.
- Phương pháp lập trình có cấu trúc bằng Hợp ngữ (Assembly MCS-51): Thiết kế chương trình điều khiển thành các chương trình con độc lập kết nối qua các lệnh gọi
LCALL và lệnh trở về RET/RETI, sử dụng lưu đồ thuật toán (flowchart) và mã giả (pseudo-code) để mô tả logic đếm giờ, giải mã quét LED và xử lý ngắt.
- Phương pháp thiết kế mạch in tự động (CAD): Ứng dụng phần mềm EAGLE (Easily Applicable Graphical Layout Editor) để vẽ sơ đồ nguyên lý (Schematic) và xuất bản vẽ mạch in hai lớp (Board layout).
Thiết kế và triển khai
Hệ thống được thiết kế hoàn chỉnh gồm phần cứng mạch điện tử và chương trình phần mềm điều khiển:
1. Thiết kế phần cứng
Hệ thống phần cứng phân rã thành 5 khối chức năng chính:
- Khối vi điều khiển trung tâm: Sử dụng vi điều khiển 8951 chạy ở tần số thạch anh 12 MHz. Cổng P0 đóng vai trò điều khiển chọn vị trí LED quét (quét anode/cathode); cổng P2 xuất mã nhị phân hiển thị 7 đoạn; cổng P3 nhận tín hiệu ngắt điều khiển từ các nút bấm (INT0, INT1) và điều khiển rơle chuông.
- Khối nguồn và sạc ắc quy tự động:
- Sử dụng IC khuếch đại thuật toán OPAMP μA741 (vỏ 8 chân). Điện áp tham chiếu 3V được tạo bởi diode Zener 3V kết hợp cầu phân áp gồm các điện trở $R_{11} = 4.7\text{ k}\Omega$, biến trở $R_{12} = \text{VR} = 5\text{ k}\Omega$, $R_{13} = 12\text{ k}\Omega$, $R_{14} = 3.3\text{ k}\Omega$.
- Dòng nạp định mức cho ắc quy chọn $I_C = 300\text{ mA}$. Transistor công suất sạc A671 có hệ số khuếch đại $\beta = 70$, dòng cực gốc $I_B = I_C / \beta = 300 / 70 \approx 4.3\text{ mA}$. Điện trở hạn dòng sạc được tính toán và chọn $R_{15} = 10\ \Omega$ (công suất 1W).
- Khi điện áp ắc quy sụt dưới 12V, điện áp tại ngõ vào không đảo (+) của OPAMP thấp hơn 3V, ngõ ra OPAMP xuống mức thấp (0V) làm transistor A671 dẫn bão hòa, kích nạp cho ắc quy với dòng 300 mA. Khi ắc quy nạp đầy (điện áp vượt mức 12V), điện áp ngõ vào (+) vượt 3V, ngõ ra OPAMP lên mức cao (14V) làm transistor ngắt hoàn toàn.
- Mạch chuyển mạch tự động sử dụng diode D1 và IC ổn áp LM7805. Khi có điện lưới, nguồn 15V cấp cho hệ thống và phân cực nghịch D1. Khi mất điện lưới, D1 được phân cực thuận, tự động chuyển sang cấp nguồn từ ắc quy 12V nuôi mạch đồng hồ hoạt động liên tục.
- Khối hiển thị: Gồm 8 LED 7 đoạn được gán thứ tự hiển thị: LED 1 (đơn vị giây), LED 2 (chục giây), LED 3 (đơn vị phút), LED 4 (chục phút), LED 5 (đơn vị giờ), LED 6 (chục giờ), LED 7 và LED 8 (hiển thị Thứ). Sử dụng IC đệm 2 chiều 74245 (Bus Transceiver) kết hợp điện trở hạn dòng trên các ngõ ra (B1–B8) để nâng cao khả năng chịu tải và độ sáng của LED khi quét.
- Khối điều khiển chuông: Tín hiệu từ vi điều khiển xuất qua tầng khuếch đại kích đóng ngắt rơle cơ điện, đóng mở nguồn điện chuông báo 110V/220V AC.
2. Thiết kế phần mềm
Phần mềm hệ thống được viết bằng hợp ngữ 8951, tổ chức phân bổ không gian RAM nội như sau:
- Vùng lưu bảng mã giải mã LED 7 đoạn (từ số
0 đến 9 tác động mức thấp): Lưu tại các địa chỉ từ 70H đến 79H tương ứng các giá trị: 0C0H (0), 0F9H (1), 0A4H (2), 0B0H (3), 099H (4), 092H (5), 082H (6), 0F8H (7), 080H (8), 090H (9).
- Vùng lưu trữ thời gian báo chuông định sẵn: Ô nhớ
40H–43H lưu mốc 07h00 (40H=00H, 41H=07H, 42H=00H, 43H=00H); ô nhớ 44H–47H lưu mốc 11h30 (44H=01H, 45H=01H, 46H=03H, 47H=00H); ô nhớ 48H–4BH lưu mốc 16h45 (48H=01H, 49H=06H, 4AH=04H, 4BH=05H).
- Vùng biến đếm thời gian thực hiện hành: Ô nhớ
11H (biến đếm Thứ, giá trị từ 2 đến 8 tương ứng Thứ Hai đến Chủ Nhật), 12H (chục giờ), 13H (đơn vị giờ), 14H (chục phút), 15H (đơn vị phút), 16H (chục giây), 17H (đơn vị giây).
Chương trình vận hành theo các mô-đun chính:
- Chương trình khởi tạo: Cấu hình ngăn xếp
SP = 40H, nạp bảng mã 7 đoạn vào RAM, cấu hình thanh ghi chế độ định thời TMOD = #01H (Timer 0 Mode 1), nạp giá trị ban đầu cho bộ định thời TH0 = #0D8H, TL0 = #0F6H (hoặc 0FFH), khởi tạo thanh ghi cho phép ngắt IE = #10000111B (cho phép ngắt toàn cục EA, ngắt ngoài EX0, EX1 và ngắt Timer ET0).
- Chương trình phục vụ ngắt Timer 0 (
ngatt0): Đảm nhận đếm xung tạo trễ cơ sở 1 giây. Sau khi đủ 1 giây, biến đếm đơn vị giây (17H) tăng 1. Lần lượt kiểm tra tràn: giây đạt 60 $\rightarrow$ tăng phút (15H), phút đạt 60 $\rightarrow$ tăng giờ (13H), giờ đạt 24 $\rightarrow$ reset về 01 giờ và tăng biến đếm Thứ (11H), Thứ vượt quá 8 (Chủ Nhật) $\rightarrow$ quay về Thứ 2.
- Chương trình quét hiển thị (
hthi) và giải mã (gma): Dịch chuyển dữ liệu số đếm sang bảng mã tương ứng thông qua thanh ghi con trỏ R0, R1 và xuất lần lượt mã điều khiển vị trí ra cổng P0 kết hợp mã đoạn ra cổng P2 qua IC 74245 kèm trễ ngắn (delay1).
- Chương trình so sánh và báo chuông: Sử dụng lệnh so sánh và rẽ nhánh
CJNE để đối chiếu từng byte của biến đếm thời gian thực (12H đến 15H) với vùng nhớ cài đặt báo giờ (40H đến 4BH). Nếu trùng khớp tại giây thứ 00, vi điều khiển gọi chương trình con chuong để kích hoạt rơle phát chuông.
- Chương trình phục vụ ngắt ngoài INT0 (
ngato) và INT1 (ngat1): Phục vụ giao tiếp nút bấm. Ngắt INT0 dùng để chọn chế độ điều chỉnh; ngắt INT1 thực hiện tăng giá trị tương ứng của phút, giờ, thứ và cập nhật tức thời ra màn hình hiển thị.
Nội dung chính theo từng chương
Bố cục của báo cáo đồ án tốt nghiệp được tổ chức thành hai phần chính:
Phần I: Giới thiệu đề tài và Nội dung
- Mục I - Giới thiệu các dạng mạch đã có trước: Phân tích chi tiết hai công trình tiền nhiệm tại Trường ĐH Sư phạm Kỹ thuật TP.HCM gồm máy báo tiết dùng ROM 2732 và đồng hồ báo giờ dùng EPROM 2764. Tổng hợp nguyên lý hoạt động, sơ đồ khối, cách thức tạo xung clock quét địa chỉ BCD và xuất tín hiệu điều khiển chuông qua các bit dữ liệu. Chỉ rõ các điểm hạn chế về phần cứng và tính năng điều chỉnh thời gian của các thiết kế cũ, từ đó nêu bật sự cần thiết của việc ứng dụng vi điều khiển 8951.
- Mục II - Thiết kế phần cứng: Giới thiệu tổng quan kiến trúc phần cứng họ vi điều khiển MCS-51 và chip đại diện AT89C51. Trình bày chi tiết sơ đồ chân, chức năng từng chân ghép nối, cấu trúc không gian bộ nhớ RAM/ROM/SFR (thanh ghi trạng thái chương trình PSW, con trỏ ngăn xếp SP, con trỏ dữ liệu DPTR, các cổng xuất nhập P0–P3, thanh ghi định thời TMOD/TCON, thanh ghi ngắt IE/IP, thanh ghi nguồn PCON). Khảo sát tập lệnh 8951 với 5 nhóm lệnh, 8 chế độ định vị địa chỉ, nguyên lý hoạt động của 4 mode Timer và cơ chế xử lý 5 nguồn ngắt. Trình bày sơ đồ khối toàn mạch và tính toán chi tiết thông số linh kiện khối nguồn nạp ắc quy tự động (OPAMP 741, transistor A671, Zener 3V) và khối đệm IC 74245.
- Mục III - Thiết kế phần mềm: Trình bày phương pháp luận lập trình hợp ngữ có cấu trúc, phân tích ưu điểm nâng cao năng suất viết mã và nhược điểm chiếm dụng bộ nhớ của lập trình cấu trúc. Xây dựng chi tiết hệ thống lưu đồ thuật toán gồm: lưu đồ chương trình chính đồng hồ số, lưu đồ ngắt INT0 chọn mode, lưu đồ ngắt INT1 chỉnh thông số thời gian (giây, phút, giờ, thứ) và lưu đồ ngắt định thời Timer 0. Cung cấp toàn bộ mã nguồn chương trình viết bằng Assembly 8951 kèm chú thích chi tiết từng lệnh.
- Mục IV - Thi công: Trình bày quy trình ứng dụng phần mềm CAD EAGLE để vẽ sơ đồ nguyên lý mạch điện, sắp xếp bố trí linh kiện và thiết kế bản vẽ mạch in hai lớp (lớp mặt trên và lớp mặt dưới).
Phần II: Kết luận và Kiến nghị
- Mục I - Kết luận và hướng phát triển của đề tài: Đánh giá tổng kết các tính năng kỹ thuật mà hệ thống đã hoàn thành (tạo thời gian thực, hiển thị 8 LED 7 đoạn, điều chỉnh thời gian độc lập và phát tín hiệu chuông theo 3 mốc cố định). Đề xuất các hướng mở rộng phần mềm và phần cứng cho hệ thống.
- Mục II - Kiến nghị: Đề xuất định hướng đẩy mạnh nghiên cứu, đầu tư trang thiết bị thực hành vi điều khiển và ứng dụng các kết quả nghiên cứu tự động hóa vào đời sống.
- Tài liệu tham khảo: Liệt kê 6 tài liệu giáo trình và tài liệu kỹ thuật chuyên khảo về vi mạch số, vi điều khiển họ 8051, tra cứu chân linh kiện bán dẫn và hướng dẫn thiết kế mạch in EAGLE.
Kết quả và đóng góp
Đồ án đã hiện thực hóa thành công sản phẩm phần cứng và chương trình điều khiển nhúng với các kết quả cụ thể:
-
Kết quả kỹ thuật đạt được:
- Chế tạo thành công mạch phần cứng hoàn chỉnh sử dụng vi điều khiển 8951 với khối nguồn sạc ắc quy tự động ngắt ở ngưỡng 12V, dòng sạc ổn định 300 mA qua transistor A671 và OPAMP 741, đảm bảo vi điều khiển không bị mất dữ liệu khi mất điện lưới.
- Hệ thống hiển thị đồng thời và liên tục 8 thông số thời gian thực (Thứ, Giờ, Phút, Giây) trên 8 LED 7 đoạn thông qua IC đệm 74245 với tần số quét cao, không gây hiện tượng nhấp nháy.
- Bộ điều khiển thực thi chính xác giải thuật thời gian thực 24 giờ, cho phép người dùng can thiệp điều chỉnh độc lập từng thông số thứ, giờ, phút thông qua 2 nút ngắt ngoài INT0 và INT1.
- Hệ thống tự động so sánh và kích hoạt rơle chuông báo hiệu chính xác tại 3 mốc thời gian thiết lập sẵn trong chương trình: 07 giờ 00 phút, 11 giờ 30 phút và 16 giờ 45 phút.
-
So sánh với các giải pháp trước đó:
| Tiêu chí kỹ thuật |
Mạch báo tiết dùng EPROM 2732 |
Mạch đồng hồ dùng EPROM 2764 |
Hệ thống báo giờ dùng Vi điều khiển 8951 |
| Kiến trúc điều khiển |
Mạch logic số rời + EPROM 2732 |
Mạch logic số rời + EPROM 2764 |
Vi điều khiển đơn chip AT89C51 |
| Độ phức tạp phần cứng |
Rất cao (nhiều IC chia tần, đếm BCD, giải mã) |
Cao (nhiều IC đếm, giải mã địa chỉ, chốt) |
Gọn nhẹ (tích hợp sẵn CPU, 4KB ROM, 128B RAM) |
| Khả năng chỉnh thời gian |
Chỉnh nhanh/chậm toàn hệ thống |
Chỉnh nhanh/chậm qua tần số dao động |
Chỉnh độc lập từng đại lượng (Thứ, Giờ, Phút) qua ngắt |
| Tính linh hoạt chuông báo |
Mốc thời gian cố định cứng trong ROM |
Mốc thời gian cố định cứng trong EPROM |
Điều khiển mềm bằng mã lệnh, dễ mở rộng mốc giờ |
| Khối nguồn dự phòng |
Ổn áp và ắc quy ngoài không tự động sạc |
Có mạch sạc và pin dự phòng cơ bản |
Tự động sạc 300mA bằng OPAMP 741, tự ngắt khi đầy |
Hạn chế và hướng nghiên cứu tiếp
Bên cạnh các kết quả đạt được, tác giả chỉ rõ một số hạn chế do giới hạn về thời gian thực hiện đề tài và phạm vi thiết kế:
- Phần mềm hiện tại chỉ mới hỗ trợ đếm và quản lý thứ, giờ, phút, giây; chưa hỗ trợ tính năng lịch vạn niên phân biệt ngày, tháng, năm.
- Hệ thống chỉ mới cài đặt cố định 3 mốc thời gian báo chuông trong mã nguồn (07h00, 11h30, 16h45); chưa tích hợp bàn phím đầy đủ để người dùng nhập tự do các mốc báo giờ đột xuất trong quá trình vận hành.
- Chưa lập trình tính năng tự động vô hiệu hóa chuông báo vào các ngày nghỉ cuối tuần (Thứ Bảy và Chủ Nhật).
- Khi mất điện lưới, mạch nguồn dự phòng duy trì hoạt động của vi điều khiển và khối hiển thị nhưng ngắt hoàn toàn tín hiệu báo chuông.
Hướng mở rộng được đề xuất:
- Cải tiến phần mềm để hệ thống có khả năng nhận diện, tính toán và hiển thị đầy đủ ngày, tháng, năm.
- Nâng cấp chương trình cho phép người dùng thiết lập danh sách các ngày cấm báo chuông tùy chọn trong tuần, tháng hoặc năm.
- Bổ sung giao tiếp phần cứng với các cảm biến đo lường môi trường như cảm biến nhiệt độ, độ ẩm.
- Thiết kế mạch tạo âm thanh dạng nhạc chuông đa âm thay cho chuông điện đơn âm nhằm đa dạng hóa tín hiệu báo hiệu cho từng sự kiện.
Giá trị tham khảo
Đồ án tốt nghiệp là tài liệu tham khảo có giá trị kỹ thuật và tính ứng dụng thực hành cao:
- Đối tượng thụ hưởng: Sinh viên, giảng viên và kỹ sư thuộc các chuyên ngành Kỹ thuật Điện - Điện tử, Kỹ thuật Máy tính, Tự động hóa và Cơ điện tử đang nghiên cứu về kỹ thuật vi điều khiển và thiết kế hệ thống nhúng.
- Nội dung tham khảo trọng tâm:
- Thiết kế và tính toán mạch sạc ắc quy tự động ngắt dùng khuếch đại thuật toán OPAMP μA741 và tầng khuếch đại công suất BJT.
- Kỹ thuật quét hiển thị đa hợp LED 7 đoạn sử dụng IC đệm 74245 kết hợp các cổng xuất/nhập của vi điều khiển họ MCS-51.
- Cấu trúc chương trình hợp ngữ chuẩn cho vi điều khiển 8951: cấu hình Timer 16-bit tạo trễ 1 giây, kỹ thuật lập bảng tra mã 7 đoạn trong bộ nhớ RAM, thiết lập bảng vector ngắt và giải thuật so sánh thời gian thực.
- Quy trình ứng dụng phần mềm CAD EAGLE trong thiết kế sơ đồ nguyên lý và layout mạch in 2 lớp cho các mạch điều khiển vi xử lý.
Câu hỏi thường gặp
1. Hệ thống sử dụng cơ chế nào để tạo ra chu kỳ đếm thời gian thực 1 giây chính xác?
Hệ thống sử dụng bộ dao động thạch anh ngoài tần số 12 MHz kết hợp 2 tụ gốm 30 pF, đưa qua mạch chia tần số nội 12 của vi điều khiển 8951 để tạo tần số cơ sở 1 MHz (mỗi chu kỳ máy bằng $1\ \mu\text{s}$). Chương trình cấu hình Timer 0 hoạt động ở Chế độ 1 (định thời 16-bit) với các giá trị khởi tạo nạp vào thanh ghi TH0 = #0D8H và TL0 = #0F6H (hoặc #0FFH). Khi bộ định thời đếm tràn, cờ TF0 được kích hoạt để sinh ngắt định thời phục vụ việc tăng biến đếm giây và các cấp thời gian tiếp theo.
2. Mạch nguồn và sạc ắc quy tự động trong đề tài hoạt động trên nguyên lý nào?
Mạch sử dụng IC khuếch đại thuật toán OPAMP μA741 làm bộ so sánh điện áp với ngưỡng tham chiếu 3V (tạo bởi diode Zener 3V và biến trở điều chỉnh $\text{VR} = 5\text{ k}\Omega$). Khi ắc quy có điện áp dưới 12V, ngõ ra OPAMP ở mức 0V kích transistor A671 dẫn bão hòa để sạc ắc quy với dòng nạp định mức 300 mA qua điện trở hạn dòng $R_{15} = 10\ \Omega$ (1W). Khi ắc quy nạp đầy đạt điện áp từ 12V trở lên, ngõ ra OPAMP chuyển lên mức cao (14V) làm transistor A671 ngắt hoàn toàn để bảo vệ ắc quy.
3. Khối hiển thị của hệ thống được kết nối và điều khiển như thế nào?
Hệ thống sử dụng 8 LED 7 đoạn hiển thị tuần tự Thứ (LED 7, 8), Giờ (LED 5, 6), Phút (LED 3, 4) và Giây (LED 1, 2). Cổng P2 của vi điều khiển 8951 xuất mã nhị phân 7 đoạn qua IC đệm dòng 74245 (kết hợp các điện trở hạn dòng bảo vệ), trong khi cổng P0 đóng vai trò điều khiển phân kênh quét tuần tự từng vị trí LED với chu kỳ quét nhanh để mắt người quan sát liên tục không thấy hiện tượng chớp tắt.
4. Chương trình phần mềm xử lý tác vụ điều chỉnh thời gian và báo chuông ra sao?
Tác vụ chỉnh thời gian được xử lý bằng ngắt ngoài: ngắt INT0 (chân P3.2) dùng để chọn chế độ điều chỉnh và ngắt INT1 (chân P3.3) dùng để tăng độc lập giá trị của biến đếm phút, giờ hoặc thứ. Đối với chức năng báo chuông, vi điều khiển nạp sẵn các mốc thời gian so sánh vào RAM nội (địa chỉ 40H–4BH) tương ứng với 3 mốc: 07h00, 11h30 và 16h45. Trong vòng lặp chính, lệnh CJNE liên tục đối chiếu biến đếm hiện hành với các ô nhớ này; khi trùng khớp tại giây thứ 00, vi điều khiển xuất tín hiệu kích rơle đóng chuông.
5. Lợi ích căn bản của việc ứng dụng vi điều khiển 8951 thay thế cho các thiết kế EPROM rời trước đây là gì?
Vi điều khiển 8951 tích hợp sẵn CPU, 4 KB Flash ROM, 128 byte RAM, 2 bộ định thời 16-bit và 4 cổng I/O trên một chip đơn. Nhờ đó, hệ thống loại bỏ hoàn toàn các khối phần cứng phức tạp như mạch chia tần rời, IC đếm BCD và IC giải mã địa chỉ ngoài, giúp giảm kích thước mạch in, cho phép người dùng điều chỉnh độc lập từng thông số thời gian theo cả hai chiều và dễ dàng thay đổi các mốc báo giờ cũng như quy luật phát chuông thông qua việc sửa đổi mã lệnh phần mềm.
Kết luận
Đồ án tốt nghiệp "Thiết kế và thi công hệ thống báo giờ sử dụng vi điều khiển 8951" của sinh viên Đoàn Quốc Sơn đã giải quyết thành công bài toán tự động hóa việc quản lý và báo giờ học đường bằng công nghệ vi điều khiển đơn chip. Tác giả đã hoàn thiện cả phần cứng mạch in hai lớp thiết kế bằng phần mềm EAGLE lẫn chương trình điều khiển viết bằng hợp ngữ Assembly MCS-51, tích hợp mạch nguồn sạc ắc quy tự động ngắt dùng OPAMP 741 và hiển thị 8 LED 7 đoạn qua IC đệm 74245. Hệ thống vận hành ổn định, hiển thị chính xác thứ, giờ, phút, giây, hỗ trợ chỉnh giờ linh hoạt qua ngắt ngoài và tự động kích chuông báo tại các thời điểm định sẵn. Công trình là tài liệu tham khảo có giá trị học thuật và thực tiễn cao cho sinh viên ngành Điện - Điện tử trong việc nghiên cứu và ứng dụng vi điều khiển họ 8051.