Bối cảnh và vấn đề nghiên cứu

Hệ thống điều khiển thời gian thực (Real-Time Systems - RTS) là một trong những lĩnh vực nghiên cứu trọng tâm của khoa học máy tính và kỹ thuật điều khiển tự động. Các hệ thống này đóng vai trò then chốt trong dây chuyền sản xuất tự động, cánh tay robot, trạm kiểm soát công nghiệp và thiết bị đo lường tự động. Trong đời sống sinh hoạt và lao động, nhu cầu quản lý và kiểm soát thời gian chính xác là yếu tố cơ bản giúp con người tối ưu hóa năng suất và hạn chế các sai sót trong lịch trình.

Đề tài "Thiết Kế Thi Công Đồng Hồ Đo Thời Gian Thật" được tác giả Phạm Hồ Duy Mỹ thực hiện dưới sự hướng dẫn của Th.S Cù Minh Phước tại Bộ môn Tự động hóa, Khoa Điện – Điện tử, Trường Cao Đẳng Kỹ Thuật Cao Thắng (tháng 11/2022). Mục tiêu nghiên cứu là thiết kế và chế tạo một mô hình đồng hồ thời gian thực có giá thành thấp, kích thước nhỏ gọn, đáp ứng đầy đủ tính năng hiển thị thời gian chính xác và tiện dụng trong thực tế.

Nhiệm vụ nghiên cứu của đồ án bao gồm:

  1. Nghiên cứu cấu trúc và nguyên lý hoạt động của vi điều khiển PIC16F877A.
  2. Nghiên cứu IC thời gian thực chuyên dụng DS1307 và chuẩn giao tiếp nối tiếp I2C.
  3. Nghiên cứu IC ghi dịch 8-bit 74HC595 nhằm giải quyết bài toán mở rộng cổng xuất dữ liệu.
  4. Thiết kế sơ đồ nguyên lý, vẽ mạch in PCB và thi công bo mạch phần cứng thực tế.
  5. Xây dựng giải thuật và lập trình điều khiển hệ thống bằng ngôn ngữ C.

Đối tượng nghiên cứu là hệ thống đồng hồ kỹ thuật số đo thời gian thực sử dụng vi điều khiển PIC16F877A kết hợp IC DS1307 và hiển thị qua 6 LED 7 đoạn Anode chung. Phạm vi nghiên cứu tập trung vào việc thiết kế mạch phần cứng một lớp trên phần mềm Proteus, lập trình nhúng bằng ngôn ngữ C, gia công phần cứng và thử nghiệm thực nghiệm tại phòng thí nghiệm Bộ môn Tự động hóa từ ngày 05/10/2022 đến ngày 20/12/2022.

Mốc thời gian Nội dung công việc thực hiện
05/10/2022 Tìm hiểu đề tài và thu thập tài liệu
10/10/2022 Mua sắm linh kiện điện tử
12/10/2022 Thiết kế sơ đồ nguyên lý mạch
15/10/2022 In và gia công mạch in
20/10/2022 Thiết kế và gia công vỏ hộp mô hình
01/11/2022 Viết chương trình điều khiển
20/11/2022 Thử nghiệm phần cứng, nạp code và sửa lỗi
25/11/2022 Viết báo cáo thuyết minh đồ án
15/12/2022 Hoàn thiện slide báo cáo PowerPoint
20/12/2022 Hoàn thành và nghiệm thu đồ án

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và linh kiện phần cứng

Hệ thống được xây dựng trên cơ sở tích hợp các vi mạch điện tử chuyên dụng và các giao thức truyền thông nối tiếp tiêu chuẩn:

  • Vi điều khiển PIC16F877A: Vi điều khiển 8-bit họ RISC do Microchip sản xuất, cho phép tần số hoạt động tối đa 20 MHz (chu kỳ lệnh 200 ns). Cấu trúc bộ nhớ bao gồm 8K x 14-bit Flash chương trình (độ bền ghi xóa 100.000 lần), 368 x 8-bit RAM và 256 x 8-bit EEPROM (độ bền 1.000.000 lần ghi xóa, thời gian lưu trữ trên 40 năm). Vi điều khiển có 5 cổng xuất nhập (33 chân I/O), 3 bộ định thời (Timer0 8-bit, Timer1 16-bit, Timer2 8-bit) cùng khối truyền thông nối tiếp đồng bộ MSSP hỗ trợ chuẩn I2C và SPI.
  • Chuẩn giao tiếp I2C: Giao thức truyền thông nối tiếp 2 dây đồng bộ do Philips Semiconductors phát triển, sử dụng đường truyền dữ liệu nối tiếp SDA (Serial Data) và đường xung nhịp SCL (Serial Clock). Giao thức truyền theo gói tin gồm các trạng thái Start, byte địa chỉ slave (7-bit hoặc 10-bit), bit đọc/ghi (R/W), bit xác nhận ACK/NACK, các khung dữ liệu 8-bit và trạng thái Stop. Trên PIC16F877A, chân I2C được cấu hình ở chế độ cực thu hở (open-drain).
  • IC thời gian thực DS1307: Vi mạch RTC (Real-Time Clock) đóng vai trò slave trên bus I2C (địa chỉ ghi 0xD0, địa chỉ đọc 0xD1). DS1307 đếm giờ, phút, giây, thứ, ngày, tháng, năm với bộ bù năm nhuận đến năm 2100. IC sử dụng nguồn nuôi chính Vcc 5V và đầu vào pin dự phòng Vbat 3V (ngưỡng 2,5V - 3V). Khi Vcc nhỏ hơn 1,25Vbat, IC tự động ngắt kết nối đọc/ghi và chuyển sang dùng nguồn pin để duy trì dao động với tần số 32,768 kHz từ thạch anh ngoài kết hợp 2 tụ 33 pF.
  • IC ghi dịch 74HC595: IC ghi dịch 8-bit nối tiếp ra song song kết hợp tầng chốt dữ liệu (Storage Register). Điện áp hoạt động từ 2V đến 6V, mức tiêu thụ tĩnh 80 µA, dòng ngõ ra tải lên đến 35 mA. IC cho phép ghép nối tiếp thông qua ngõ ra $Q7'$ đưa vào chân dữ liệu DS của IC kế tiếp, giúp điều khiển đồng thời nhiều LED 7 đoạn chỉ bằng 3 chân vi điều khiển.
  • Mô-đun hiển thị LED 7 đoạn: Sử dụng loại Anode chung (Anode nối chung nguồn dương, các thanh LED $a, b, c, d, e, f, g$ sáng khi chân điều khiển ở mức logic 0).
Thanh ghi DS1307 Chức năng lưu trữ dữ liệu (Dạng mã BCD) Dải giá trị
00H Giây (Bit 7 là bit CH: 0 = Bật dao động, 1 = Tắt) 00 – 59
01H Phút 00 – 59
02H Giờ (Bit 6 chọn chế độ 12h/24h; Bit 5 chỉ thị AM/PM) 00 – 23 (hoặc 01 – 12)
03H Thứ trong tuần 01 – 07
04H Ngày trong tháng 01 – 31
05H Tháng 01 – 12
06H Năm 00 – 99
07H Control Register (Kiểm soát tần số xung vuông chân OUT) Bit OUT, SQWE, RS0, RS1

Phương pháp nghiên cứu

Tác giả kết hợp ba phương pháp kỹ thuật chính:

  1. Phương pháp phân tích và thiết kế phần cứng: Phân chia hệ thống thành các khối chức năng độc lập; thiết kế sơ đồ nguyên lý và layout mạch in một lớp (Single-layer PCB) trên phần mềm Proteus.
  2. Phương pháp lập trình nhúng có cấu trúc: Viết mã nguồn bằng ngôn ngữ C sử dụng trình biên dịch cho vi điều khiển PIC (CCS C), phân tách chương trình thành các thư viện điều khiển riêng biệt (TV_DS13B07.C, TV_595.c, TV_NUT_NHAN_DON.C); áp dụng kỹ thuật ngắt Timer1 để định thời.
  3. Phương pháp thực nghiệm - kiểm thử: Thi công mạch in bằng phương pháp thủ công, hàn lắp linh kiện, đo kiểm mức điện áp các khối và nạp vi chương trình để kiểm tra độ chính xác của các chức năng hiển thị, cài đặt và báo thức.

Thiết kế và triển khai hệ thống

Kiến trúc phần cứng

Hệ thống phần cứng hoàn chỉnh gồm 6 khối chức năng chính:

  • Khối nguồn: Sử dụng bộ Adapter chuyển đổi từ 220VAC sang 5VDC với dòng định mức 3A, cung cấp nguồn nuôi ổn định cho toàn bộ vi điều khiển, IC logic và LED.
  • Khối xử lý trung tâm: Vi điều khiển PIC16F877A được cấp dao động từ thạch anh ngoài 20 MHz cùng hai tụ gốm ổn định dao động. Cổng giao tiếp phân bổ gồm: PORTC và PORTD điều khiển hiển thị và cảnh báo; PORTE nhận tín hiệu từ các phím bấm chức năng.
  • Khối thời gian thực: IC DS1307 kết nối với PIC16F877A thông qua hai chân RC3 (SCL) và RC4 (SDA). Chân X1, X2 nối với thạch anh 32,768 kHz. Chân Vbat kết nối với viên pin CMOS 3V để duy trì bộ đếm thời gian khi mất điện lưới.
  • Khối hiển thị: Bao gồm 6 LED 7 đoạn Anode chung ghép tầng thông qua 6 IC ghi dịch 74HC595. Các chân điều khiển nối với vi điều khiển gồm: chân cấp dữ liệu nối tiếp data (chân RD2), xung dịch dữ liệu ck (chân RC7) và xung chốt dữ liệu en (chân RD3). Ngõ ra nối tiếp $Q7'$ của IC trước được nối vào ngõ vào DS của IC kế tiếp.
  • Khối nút nhấn: Gồm 4 nút nhấn độc lập: nút Reset nối với chân MCLR để tái khởi động vi điều khiển; nút Mod (nối chân RE1) dùng để chuyển đổi các chế độ cài đặt; nút Up (nối chân RE0) dùng để tăng giá trị; nút Down (nối chân RE2) dùng để giảm giá trị.
  • Khối cảnh báo: Còi buzzer báo động kết nối với chân RC2 và một LED đơn báo trạng thái kết nối với chân RC1.

Giải thuật và kiến trúc phần mềm

Chương trình điều khiển được xây dựng dựa trên nguyên lý quét hiển thị liên tục kết hợp ngắt định thời gian thực:

// Cấu hình ngắt định thời Timer1 tạo chu kỳ 100ms
#INT_TIMER1
VOID INTERRUPT_TIMER1() {
    bdn++;
    set_timer1(3036); // Nạp lại giá trị ban đầu cho thanh ghi 16-bit
}
  • Chuyển đổi dữ liệu: DS1307 lưu trữ thời gian ở định dạng mã BCD. Chương trình sử dụng hàm BCD_BIN() để chuyển đổi sang số nhị phân phục vụ tính toán và hàm BIN_BCD() để mã hóa ngược lại trước khi nạp vào các thanh ghi của DS1307 qua giao thức I2C phần mềm (I2C_START, I2C_WRITE, I2C_READ, I2C_STOP).
  • Truyền dữ liệu hiển thị: Hàm xuat_byte() dịch 8 bit dữ liệu ra chân data đồng bộ theo sườn dương của xung ck. Hàm xuat_6data() đẩy lần lượt 6 byte mã 7 đoạn của 6 LED ra chuỗi thanh ghi dịch và tạo xung tích cực trên chân en để chốt dữ liệu ra LED cùng lúc.
  • Xử lý ngắt Timer1: Timer1 được cấu hình với bộ chia tần số 4 (T1_DIV_BY_4). Giá trị nạp ban đầu là 3036, đếm đến 65536 ($2^{16}$) tạo ra sự kiện ngắt sau mỗi 100 ms. Biến đếm bdn tăng dần làm cơ sở để tạo chu kỳ phát âm thanh còi buzzer (chu kỳ 1s) và nhấp nháy LED cảnh báo (chu kỳ 2s).
  • Quản lý trạng thái hệ thống (tt_mod):
    • tt_mod = 0: Chế độ hiển thị thời gian thực bình thường (LED0 - LED5 hiển thị Giờ - Phút - Giây).
    • tt_mod = 1: Cài đặt giờ hệ thống. Hai LED đầu hiển thị mã 0x89 (chữ "H") và 0xBF (dấu "-"), hai LED giữa hiển thị giá trị giờ đang chỉnh.
    • tt_mod = 2: Cài đặt phút hệ thống. Hai LED đầu hiển thị mã 0x8C (chữ "P") và 0xBF (dấu "-"), hai LED giữa hiển thị giá trị phút.
    • tt_mod = 3: Cài đặt giờ báo thức. Hai LED đầu hiển thị số "5" (chữ "S") và chữ "H", dữ liệu giờ lưu trực tiếp vào ô nhớ EEPROM địa chỉ 1 (write_eeprom(1, gio)).
    • tt_mod = 4: Cài đặt phút báo thức. Hai LED đầu hiển thị chữ "S" và chữ "P", dữ liệu phút lưu vào ô nhớ EEPROM địa chỉ 2 (write_eeprom(2, phut)).

Nội dung chính theo từng chương

Chương 1 : Giới Thiệu Đề Tài

Chương 1 trình bày tổng quan về tầm quan trọng của hệ thống điều khiển theo thời gian thực (RTS) trong nền sản xuất công nghiệp hiện đại và đời sống xã hội. Tác giả xác định mục tiêu thiết kế một thiết bị đồng hồ điện tử giá thành thấp, kích thước nhỏ gọn. Nội dung chương công bố cấu trúc thuyết minh gồm 6 chương và bảng kế hoạch thực hiện đồ án từ ngày 05/10/2022 đến ngày 20/12/2022 với 10 mốc tiến độ cụ thể.

Chương 2: Cơ Sở Lý Thuyết

Chương 2 cung cấp toàn diện các cơ sở lý thuyết về vi điều khiển, IC ngoại vi và các giao thức truyền thông:

  • Phân tích cấu trúc phần cứng của PIC16F877A: sơ đồ khối, 33 chân xuất nhập trên 5 PORT (A, B, C, D, E), các thanh ghi điều hướng TRIS, các thanh ghi chức năng ngắt và các bộ định thời Timer0, Timer1, Timer2.
  • Trình bày cấu trúc giao thức nối tiếp I2C, cơ chế truyền nhận dữ liệu giữa Master và Slave, cấu hình khối MSSP trên PIC16F877A.
  • Khảo sát chi tiết IC ghi dịch 74HC595 (bảng chân, nguyên lý chốt dữ liệu với thanh ghi dịch 8-STAGE SHIFT REGISTER và thanh ghi lưu trữ 8-BIT STORAGE REGISTER) và IC thời gian thực DS1307 (cấu trúc 8 thanh ghi địa chỉ 00H - 07H, mạch dao động ngoài 32,768 kHz, mạch chuyển đổi nguồn tự động với pin CMOS 3V).
  • Trình bày bảng mã hiển thị LED 7 đoạn cho hai cấu hình Anode chung và Cathode chung, cùng đặc tính kỹ thuật của các linh kiện thụ động (tụ gốm, tụ hóa, điện trở hạn dòng, còi buzzer, nút bấm, thạch anh 20 MHz và 32,768 kHz).

Chương 3: Thiết Kế Sơ Đồ Khối Và Sơ Đồ Nguyên Lý

Chương 3 đi sâu vào thiết kế kiến trúc phần cứng hệ thống:

  • Xây dựng sơ đồ khối tổng thể gồm 6 khối chức năng và mô tả nguyên lý vận hành đồng bộ giữa khối xử lý trung tâm, khối thời gian thực, khối hiển thị, khối nút nhấn và khối cảnh báo.
  • Đặc tả chi tiết từng khối: khối nguồn sử dụng adapter 220VAC xuống 5VDC (3A); khối vi điều khiển PIC16F877A làm trung tâm; khối tạo thời gian thực DS1307 giao tiếp I2C; khối hiển thị gồm 6 LED 7 đoạn Anode chung ghép chuỗi qua các IC 74HC595 nhằm tối ưu hóa số chân điều khiển; khối nút nhấn gồm 4 phím (Reset, Up, Down, Mod); khối cảnh báo gồm còi buzzer và LED đơn phát tín hiệu chu kỳ 1s và 2s khi đến giờ hẹn.

Chương 4: Chương Trình Điều Khiển

Chương 4 mô tả toàn bộ giải thuật phần mềm và mã nguồn hệ thống:

  • Trình bày 4 lưu đồ giải thuật chi tiết: lưu đồ chương trình chính, lưu đồ chương trình hiển thị quét LED, lưu đồ xử lý chống dội nút nhấn và lưu đồ phục vụ ngắt Timer1.
  • Trình bày toàn bộ mã nguồn ngôn ngữ C được module hóa: thư viện giao tiếp DS1307 bằng I2C (TV_DS13B07.C) với các hàm nạp/đọc thời gian và chuyển đổi BCD-nhị phân; thư viện xuất dữ liệu IC ghi dịch (TV_595.c); chương trình đọc phím chống dội và chuyển trạng thái tt_mod (TV_NUT_NHAN_DON.C); chương trình chính khởi tạo ngắt Timer1 (nạp trước giá trị 3036), đọc giá trị hẹn giờ từ EEPROM nội và thực thi vòng lặp hiển thị.

Chương 5: Thi Công Mô Hình

Chương 5 trình bày quá trình hiện thực hóa phần cứng:

  • Thiết kế sơ đồ nguyên lý chi tiết trên phần mềm Proteus cho bo mạch điều khiển chính và bo mạch hiển thị LED.
  • Thiết kế bản vẽ mạch in PCB một lớp (Single-layer), thực hiện quy trình in mạch, ăn mòn hóa học, khoan lỗ và hàn gắn linh kiện thực tế.
  • Hoàn thiện lắp ráp cơ khí, kết nối dây dẫn giữa bo điều khiển và bo hiển thị, đặt mạch vào hộp bảo vệ mô hình hoàn chỉnh.

Chương 6: Kết luận

Chương 6 tổng kết các kết quả đạt được sau quá trình nghiên cứu và thi công:

  • Chế tạo thành công mô hình đồng hồ thời gian thực hoạt động ổn định, hiển thị chính xác giờ, phút, giây và lưu giữ được thời gian khi ngắt nguồn nhờ pin dự phòng.
  • Thực hiện đầy đủ tính năng cài đặt thời gian thực và cài đặt báo thức lưu trữ trong EEPROM nội, phát cảnh báo âm thanh và ánh sáng đúng thời điểm.
  • Đánh giá những thuận lợi, khó khăn trong quá trình thiết kế phần cứng và lập trình, đồng thời đề xuất hướng phát triển mở rộng tính năng cho hệ thống.

Kết quả và đóng góp

Kết quả kỹ thuật đạt được

Dựa trên dữ liệu thực nghiệm được trình bày trong đồ án, tác giả đã hoàn thành các mục tiêu kỹ thuật cụ thể:

  1. Chế tạo phần cứng hoàn chỉnh: Thiết kế và thi công thành công bo mạch điều khiển trung tâm sử dụng vi điều khiển PIC16F877A và bo mạch hiển thị gồm 6 LED 7 đoạn Anode chung kết hợp chuỗi IC 74HC595 trên nền mạch in một lớp.
  2. Đo đạc và duy trì thời gian thực chính xác: Tích hợp thành công IC DS1307 qua giao thức I2C, đọc và ghi liên tục các giá trị giờ, phút, giây. Nhờ mạch nguồn pin CMOS 3V kết nối chân Vbat, hệ thống duy trì được thời gian chính xác ngay cả khi nguồn chính 5V bị ngắt.
  3. Mở rộng giao diện điều khiển đa chế độ: Xây dựng thành công máy trạng thái nút nhấn với 5 chế độ hoạt động (tt_mod từ 0 đến 4). Người dùng có thể xem giờ thực tế hoặc hiệu chỉnh giờ/phút hệ thống và giờ/phút báo thức bằng các phím Mod, Up, Down.
  4. Lưu trữ dữ liệu phi bốc hơi (Non-volatile): Giá trị giờ và phút báo thức được ghi trực tiếp vào các ô nhớ EEPROM(1) và EEPROM(2) của PIC16F877A, đảm bảo dữ liệu cài đặt không bị xóa khi mất nguồn điện.
  5. Cơ chế cảnh báo kép: Hệ thống kích hoạt thành công còi buzzer phát âm thanh bíp bíp theo chu kỳ 1s và nhấp nháy LED đơn theo chu kỳ 2s khi thời gian thực trùng khớp với thời gian báo thức đã cài đặt, đồng thời cho phép tắt chuông báo bằng nút nhấn trên mạch.

Giải pháp kỹ thuật nổi bật

  • Tối ưu hóa tài nguyên phần cứng bằng IC ghi dịch: Tác giả sử dụng giải pháp mắc nối tiếp các IC 74HC595 (nối chân $Q7'$ của IC trước vào chân DS của IC sau, dùng chung xung nhịp SH_CP và ST_CP). Giải pháp này giúp điều khiển toàn bộ 6 LED 7 đoạn (tương đương 48 đoạn LED độc lập) chỉ bằng 3 chân xuất nhập của vi điều khiển (RD2, RC7, RD3), tiết kiệm tối đa tài nguyên I/O của PIC16F877A cho các khối chức năng khác.
  • Ứng dụng ngắt định thời Timer1: Thay vì sử dụng hàm trễ phần mềm (delay_ms) gây nghẽn toàn bộ hệ thống, tác giả sử dụng ngắt cứng Timer1 16-bit với bộ chia tần 4 và giá trị nạp 3036 để tạo chu kỳ định thời chính xác 100 ms. Cơ chế này đảm bảo việc quét hiển thị LED và xử lý nút nhấn luôn diễn ra liên tục, mượt mà mà không làm sai lệch chu kỳ cảnh báo của còi buzzer và LED.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đề tài

Căn cứ vào nội dung thuyết minh và phạm vi nghiên cứu do tác giả trình bày:

  • Hạn chế phần cứng: Mạch in được thiết kế và gia công ở dạng mạch một lớp thủ công, kích thước mạch còn tương đối lớn và chưa tối ưu độ thẩm mỹ công nghiệp.
  • Giao diện hiển thị: Hệ thống hiện chỉ sử dụng 6 LED 7 đoạn nên chỉ hiển thị được 3 thông số Giờ - Phút - Giây, chưa hiển thị đồng thời các thông số ngày, tháng, năm và thứ trong tuần ra ngoài màn hình dù các thanh ghi của DS1307 vẫn lưu trữ đầy đủ các thông tin này.

Hướng phát triển đề tài

Các hướng mở rộng được tác giả đề xuất bao gồm:

  1. Mở rộng tính năng hiển thị đầy đủ thông tin lịch vạn niên gồm ngày, tháng, năm và thứ.
  2. Tích hợp thêm cảm biến đo nhiệt độ môi trường (như LM35 hoặc DS18B20) để hiển thị nhiệt độ thực tế trên cùng một hệ thống.
  3. Nâng cấp thiết bị hiển thị sang màn hình tinh thể lỏng LCD (như LCD1602/LCD2004) hoặc màn hình LED ma trận để hiển thị thông tin trực quan, sinh động hơn.
  4. Thiết kế lại mạch in PCB theo tiêu chuẩn hai lớp chuyên nghiệp và gia công vỏ hộp bảo vệ hoàn chỉnh, tăng độ bền cơ học và tính thẩm mỹ của sản phẩm.

Giá trị tham khảo

Bản thuyết minh đồ án là tài liệu tham khảo có giá trị kỹ thuật thực tiễn cao cho:

  • Đối tượng sử dụng: Sinh viên các ngành Công nghệ Kỹ thuật Điện – Điện tử, Kỹ thuật Tự động hóa, Cơ điện tử và Kỹ thuật Máy tính đang học tập học phần Vi điều khiển, Kỹ thuật số hoặc thực hiện đồ án môn học, đồ án tốt nghiệp hệ cao đẳng và đại học.
  • Nội dung giá trị tiêu biểu:
    • Thư viện mã nguồn C lập trình giao tiếp I2C phần mềm và thuật toán chuyển đổi hai chiều mã BCD – nhị phân (BCD_BIN, BIN_BCD) kết nối IC RTC DS1307.
    • Kỹ thuật ghép nối tầng và giải thuật đẩy dữ liệu nối tiếp điều khiển chuỗi IC 74HC595 quét LED 7 đoạn.
    • Phương pháp tính toán giá trị nạp cho thanh ghi Timer1 để thiết lập ngắt định thời gian thực và thuật toán chống dội phím bấm đa trạng thái.
    • Sơ đồ nguyên lý và layout mạch in chuẩn trên Proteus cho các khối nguồn 5VDC, vi điều khiển PIC16F877A và mạch hiển thị công suất thấp.

Câu hỏi thường gặp

1. Khóa luận sử dụng vi điều khiển nào làm khối xử lý trung tâm và cấu hình tần số dao động ra sao?
Khóa luận sử dụng vi điều khiển 8-bit PIC16F877A của Microchip. Vi điều khiển được cấu hình sử dụng bộ dao động thạch anh ngoài tần số 20 MHz (chu kỳ lệnh tương ứng là 200 ns), trong khi khối thời gian thực DS1307 sử dụng một thạch anh ngoài riêng biệt có tần số 32,768 kHz.

2. Làm thế nào để hệ thống điều khiển được 6 LED 7 đoạn mà chỉ sử dụng 3 chân của vi điều khiển?
Tác giả sử dụng 6 IC ghi dịch 8-bit 74HC595 mắc nối tiếp nhau. Ngõ ra nối tiếp $Q7'$ của IC phía trước được nối vào ngõ vào dữ liệu DS của IC phía sau. Vi điều khiển chỉ cần điều khiển 3 đường tín hiệu nối tiếp: chân dữ liệu data (RD2), chân xung dịch ck (RC7) và chân xung chốt dữ liệu en (RD3) để xuất đồng thời dữ liệu cho toàn bộ 6 LED 7 đoạn.

3. Dữ liệu thời gian của đồng hồ được duy trì như thế nào khi ngắt nguồn điện chính 5V?
IC thời gian thực DS1307 được cấp nguồn pin dự phòng 3V (pin CMOS) nối vào chân Vbat. Khi điện áp nguồn chính Vcc sụt giảm xuống dưới mức 1,25Vbat, mạch so sánh nội bên trong DS1307 tự động ngắt truy cập bus và chuyển sang sử dụng pin 3V để duy trì hoạt động của bộ dao động 32,768 kHz và bộ đếm lịch, bảo toàn giờ giấc chính xác.

4. Giá trị cài đặt giờ và phút báo thức được lưu trữ ở đâu trong hệ thống?
Giá trị cài đặt giờ báo thức được ghi vào ô nhớ địa chỉ 1 của bộ nhớ EEPROM nội (write_eeprom(1, gio)), và giá trị phút báo thức được ghi vào ô nhớ địa chỉ 2 (write_eeprom(2, phut)) của vi điều khiển PIC16F877A. Nhờ đặc tính của bộ nhớ EEPROM (lưu trữ trên 40 năm), các thông số báo thức không bị mất đi khi mất nguồn điện.

5. Thuật toán ngắt Timer1 được cấu hình với các thông số nào để tạo chu kỳ định thời?
Chương trình sử dụng ngắt Timer1 16-bit với bộ chia tần số bằng 4 (T1_DIV_BY_4). Mỗi lần xảy ra sự kiện tràn, thanh ghi Timer1 được nạp lại giá trị bắt đầu là 3036 (set_timer1(3036)), đếm từ 3036 đến 65536 ($2^{16}$) để tạo ra khoảng thời gian ngắt định kỳ 100 ms, phục vụ việc đếm nhịp nhấp nháy LED và kích hoạt còi báo.


Kết luận

Đồ án "Thiết Kế Thi Công Đồng Hồ Đo Thời Gian Thật" của tác giả Phạm Hồ Duy Mỹ đã hoàn thành trọn vẹn mục tiêu thiết kế và chế tạo một mô hình đồng hồ số hoàn chỉnh ứng dụng vi điều khiển PIC16F877A và IC thời gian thực DS1307. Tác giả đã giải quyết hiệu quả bài toán tiết kiệm tài nguyên chân xuất nhập thông qua kỹ thuật ghép chuỗi IC ghi dịch 74HC595 và xây dựng giải thuật điều khiển nhúng linh hoạt trên ngôn ngữ C kết hợp ngắt Timer1 và bộ nhớ EEPROM nội. Kết quả của đồ án thể hiện tính ứng dụng kỹ thuật cao, đáp ứng tốt yêu cầu đo đếm thời gian chính xác và cung cấp một tài liệu tham khảo thực nghiệm giá trị cho sinh viên chuyên ngành Điện – Điện tử và Tự động hóa.