Giới thiệu dự án

Trong kỷ nguyên chuyển dịch tự động hóa và truyền thông thị giác đầu những năm 2000, nhu cầu hiển thị thông tin động tại các không gian công cộng như sàn giao dịch chứng khoán, ngân hàng, sân bay và trung tâm thương mại gia tăng nhanh chóng. Các phương thức quảng cáo truyền thống bằng pano, biển bạt in cố định hay hộp đèn neon sign bộc lộ rõ hạn chế về tính linh hoạt: không thể cập nhật tức thời dữ liệu biến đổi (tỷ giá, lãi suất, thông điệp khẩn) và tiêu tốn chi phí lớn khi thay đổi nội dung.

Đồ án tốt nghiệp "Thiết Kế và Thi Công Mạch Quang Báo Giao Tiếp Với Máy Tính" được thực hiện tại Khoa Điện - Điện Tử, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh nhằm giải quyết bài toán tự động hóa bảng hiển thị quang báo điện tử thông qua việc tích hợp vi điều khiển chuyên dụng với máy tính cá nhân.

flowchart LR
    A[PC Host Application\nVisual Basic 6.0 / MSComm] -->|RS-232 Serial\n9600 bps ±12V| B[Level Shifter\nIC MAX232]
    B -->|UART TTL 0-5V\nTxD/RxD| C[MCU AT89C51\n12 MHz Core]
    C -->|8-bit Data Bus| D[Latch Array\n8x 74LS573]
    C -->|3-bit Address Bus| E[Demux Decoder\n2x 74LS138]
    D -->|Cathode Rows| F[LED Matrix Display\n8x64 Pixels Tri-color]
    E -->|Anode Columns| F

Vấn đề kỹ thuật cốt lõi (Problem Statement)

Hầu hết các hệ thống quang báo thời kỳ đầu tại Việt Nam gặp phải các rào cản kỹ thuật:

  1. Thiếu tính tương tác thời gian thực: Mạch hiển thị dùng ROM/EPROM yêu cầu tháo chip và dùng bộ nạp ROM chuyên dụng mỗi khi đổi thông điệp.
  2. Hiện tượng méo chữ khi cuộn (Shearing/Slanted Text): Phương pháp quét hàng truyền thống khi áp dụng cho ma trận dài gây trễ pha thời gian giữa các hàng, làm biến dạng ký tự khi chữ di chuyển ngang.
  3. Quản lý công suất và sụt áp: Ma trận LED kích thước $8 \times 64$ (512 điểm LED) tiêu thụ dòng đỉnh lên tới 1.5A - 2.0A, gây quá nhiệt và sụt áp trên các bộ ổn áp tuyến tính tiêu chuẩn.

Mục tiêu kỹ thuật cụ thể

  1. Thiết kế và chế tạo phần cứng board hiển thị ma trận LED 2 màu (Red/Green ghép thành 3 màu: Đỏ, Xanh lá, Cam) kích thước $8 \times 64$ điểm ảnh (tương đương 8 khối LED Matrix $8 \times 8$).
  2. Xây dựng khối chuyển đổi mức logic và truyền thông nối tiếp bất đồng bộ (UART) chuẩn RS-232 giữa PC và vi điều khiển với tốc độ baud rate 9600 bps.
  3. Phát triển firmware hợp ngữ (Assembly 8051) điều khiển quét cột ma trận với tần số quét tối thiểu $f_{scan} \ge 192\text{ Hz}$ để triệt tiêu hoàn toàn hiện tượng nhấp nháy (flicker-free).
  4. Xây dựng phần mềm giao diện người dùng (GUI) trên nền tảng Microsoft Visual Basic 6.0 cho phép nhập chuỗi ký tự, lựa chọn màu sắc hiển thị và điều khiển hiệu ứng dịch chuyển văn bản.
  5. Thiết kế mạch nguồn ổn áp DC $5\text{V} - 2\text{A}$ tích hợp transistor nâng dòng $2\text{N}2955$ kết hợp IC ổn áp LM7805.

Phạm vi và giới hạn đề tài

  • Phạm vi: Hệ thống hiển thị 8 ký tự ASCII đồng thời trên bảng LED ma trận $8 \times 64$, hỗ trợ cập nhật nội dung từ xa qua cổng COM (RS-232 DB9), lưu trữ đệm tại RAM nội/ngoại và tiếp tục vận hành độc lập sau khi ngắt kết nối với máy tính.
  • Giới hạn: Chưa tích hợp bàn phím ma trận độc lập trực tiếp trên bảng LED; hỗ trợ bộ ký tự tiêu chuẩn ASCII 8-bit (chưa xử lý trực tiếp font Unicode tiếng Việt có dấu đầy đủ).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Phương pháp Ưu điểm Nhược điểm Đánh giá
Linh kiện rời (Logic Gates & Counters) Không cần lập trình, chi phí IC logic thấp. Mạch cực kỳ phức tạp, không thể thay đổi hiệu ứng, số lượng mối nối dây quá lớn. Không khả thi cho hệ thống động.
Bộ nhớ EPROM cố định (27C64/27C256) Lưu được lượng dữ liệu mẫu chữ lớn, tốc độ xuất nhanh. Muốn đổi chữ phải tháo EPROM, xóa bằng tia cực tím (UV) và nạp lại; phần cứng cồng kềnh. Kém linh hoạt, không đáp ứng hiển thị tức thời.
Vi điều khiển độc lập (Standalone MCU) Gọn nhẹ, thay đổi hiệu ứng bằng firmware, xử lý quét LED tốt. Giao diện điều khiển nghèo nàn; nhập văn bản qua phím bấm vật lý phức tạp và chậm. Tốt cho ứng dụng cố định.
Vi điều khiển ghép nối PC (Giải pháp đề xuất) Giao diện trực quan, truyền dữ liệu linh hoạt, phân tách rõ ràng tầng hiển thị và tầng ứng dụng. Cần mạch chuyển đổi mức tín hiệu RS-232 $\leftrightarrow$ TTL; yêu cầu thiết kế giao thức truyền thông chặt chẽ. Tối ưu nhất về kỹ thuật và kinh tế.

Yêu cầu hệ thống (Phân loại MoSCoW)

  • Must have: Truyền nhận tin cậy 8 byte ký tự qua UART 9600 bps; quét cột ma trận $8 \times 64$ không nhấp nháy ($>192\text{ Hz}$); đổi 3 màu hiển thị (Red, Green, Amber/Orange); mạch nguồn dòng $\ge 1.5\text{A}$ ổn định.
  • Should have: Bộ nhớ đệm RAM lưu nội dung để chạy độc lập khi tháo dây cáp RS-232; giao diện GUI thân thiện có ô nhập liệu và nút điều hướng.
  • Could have: Tùy biến tốc độ cuộn chữ (Scroll Speed Delay) trực tiếp từ thanh trượt trên phần mềm.
  • Won't have: Giao tiếp không dây (RF/Bluetooth); giải mã bảng mã tiếng Việt Unicode dựng sẵn.

Thiết kế kiến trúc hệ thống

+-------------------------------------------------------------------------+
|                              HOST PC (VB6)                              |
|   [ User Input GUI ] ---> [ MSComm32 Control ] ---> [ COM Port (RS232) ]|
+-------------------------------------------------------------------------+
                                     | (TxD, RxD, GND - ±12V Levels)
                                     v
+-------------------------------------------------------------------------+
|                            CONTROL HARDWARE                             |
|  +-------------------------------------------------------------------+  |
|  | MAX232 Transceiver (±12V <---> 0-5V TTL Conversion)                |  |
|  +-------------------------------------------------------------------+  |
|                                    | (RXD/P3.0, TXD/P3.1)               |
|                                    v                                    |
|  +-------------------------------------------------------------------+  |
|  | Microcontroller AT89C51 (12 MHz Crystal, 4KB Flash, 128B RAM)     |  |
|  |  - Port 0 [P0.0..P0.7]: 8-bit Font Row Data Bus                   |  |
|  |  - Port 1 [P1.0..P1.2]: 3-bit Address Select (LED Module 1..8)     |  |
|  |  - Port 2 [P2.0..P2.2]: 3-bit Column Decode Control (Column 1..8) |  |
|  |  - Port 3 [P3.7]: Color Control (Red/Green Enable)                |  |
|  +-------------------------------------------------------------------+  |
|                 |                                    |                  |
|                 v                                    v                  |
|  +------------------------------+   +--------------------------------+  |
|  | 8x 74LS573 (Octal Latch)     |   | 2x 74LS138 (3-to-8 Demux)      |  |
|  | Holds row data for 64 cols   |   | + 74LS540 Inverting Drivers    |  |
|  +------------------------------+   +--------------------------------+  |
|                 \                                  /                    |
|                  v                                v                     |
|  +-------------------------------------------------------------------+  |
|  | DISPLAY BOARD: 8x (8x8 Bicolor LED Matrix Modules) = 8x64 Pixels  |  |
|  +-------------------------------------------------------------------+  |
+-------------------------------------------------------------------------+

Đặc tả ngăn xếp công nghệ (Technology Stack)

  • Khối xử lý trung tâm (Core MCU): Atmel AT89C51-24PC (Kiến trúc MCS-51, 8-bit CISC, $4\text{KB}$ Flash ROM, $128\text{ Bytes}$ Internal RAM, 32 chân I/O, tần số thạch anh $12.0\text{ MHz}$).
  • Giao tiếp vật lý (Interface IC): Maxim MAX232CPE (2 kênh thu phát RS-232 tích hợp Charge-Pump nhân áp dùng 4 tụ hóa $1\mu\text{F}/16\text{V}$).
  • IC Logic giải mã & Chốt:
    • $8 \times$ IC 74LS573 (Octal D-Type Transparent Latch) làm tầng đệm dữ liệu hàng cho từng khối LED.
    • $2 \times$ IC 74LS138 (3-to-8 Line Decoder/Demultiplexer) quét chọn cột đồng bộ.
    • $2 \times$ IC 74LS540 / 74LS245 (Octal Inverting/Non-inverting Buffers) đệm dòng điều khiển.
  • Mạch nguồn công suất: Biến áp xung/hạ áp $220\text{VAC}/12\text{VAC} - 3\text{A}$, cầu diode 2A, tụ lọc $2200\mu\text{F}/25\text{V}$, IC ổn áp LM7805 kết hợp Transistor công suất PNP $2\text{N}2955$.
  • Phần mềm máy chủ: Microsoft Visual Basic 6.0 Service Pack 5, thư viện truyền thông MSCOMM32.OCX.

Phân tích kỹ thuật & Tính toán thiết kế

1. Phân tích phương pháp quét ma trận: Quét Cột vs. Quét Hàng

Trong ma trận LED $8 \times 64$, việc lựa chọn phương pháp quét ảnh hưởng trực tiếp đến chất lượng hiển thị khi thực hiện hiệu ứng chữ chạy (Marquee/Scroll):

$$\text{Tần số quét tối thiểu: } f_{refresh} \ge 24\text{ frames/s} \times 8\text{ steps} = 192\text{ Hz}$$

  • Phương pháp quét hàng: Xuất dữ liệu cho 64 cột rồi kích hoạt 1 hàng. Khi chữ dịch chuyển ngang, thời gian trễ tích lũy giữa 8 hàng làm xuất hiện biến dạng lệch pha quang học (hiện tượng chữ bị nghiêng/xéo khi chạy).
  • Phương pháp quét cột (Giải pháp lựa chọn): 64 cột được nhóm theo 8 khối ma trận $8 \times 8$. Tại mỗi thời điểm $t_i$, MCU xuất đồng thời dữ liệu hàng cho cột thứ $i$ của cả 8 khối LED thông qua 8 IC chốt 74LS573, sau đó mở transistor kích hoạt cột $i$. Khi chữ cuộn ngang, toàn bộ 64 cột dịch chuyển đồng pha trên trục thời gian, đảm bảo ký tự vuông vức và sắc nét.
                  SƠ ĐỒ NGUYÊN LÝ KHỐI QUÉT CỘT MA TRẬN
                  
  P0 (Data) ---------> [74LS573 #1] ---> Cột 1..8 (LED 1)
            ---------> [74LS573 #2] ---> Cột 1..8 (LED 2)
            ...
            ---------> [74LS573 #8] ---> Cột 1..8 (LED 8)
                           ^
  P1 (Module Addr) -> [74LS138 #1] (Enable từng chốt nạp dữ liệu hàng)
  
  P2 (Col Select)  -> [74LS138 #2] ---> Kích hoạt Cột song song (Col 1..8)

2. Tính toán mạch phân dòng LED và tầng công suất

Mỗi điểm ảnh LED ma trận có điện áp sụt thuận $V_F \approx 2.0\text{V}$, dòng định mức qua mỗi LED chọn $I_{LED} = 20\text{mA}$. Ngõ ra mức cao của IC 74LS573 có $V_{OH} \approx 4.0\text{V}$.

Điện trở hạn dòng cho mỗi nhánh hàng:

$$R_{limit} = \frac{V_{OH} - V_F}{I_{LED}} = \frac{4.0\text{V} - 2.0\text{V}}{0.02\text{A}} = 100,\Omega$$

Tính toán công suất tiêu thụ tối đa của toàn hệ thống:

  • Dòng tiêu thụ 8 IC chốt 74LS573: $I_{573} = 8 \times 30\text{mA} = 240\text{mA}$
  • Dòng tiêu thụ 2 IC đệm 74LS540: $I_{540} = 2 \times 30\text{mA} = 60\text{mA}$
  • Dòng tiêu thụ các IC giải mã 74LS138 và đệm bus 74LS245: $I_{logic} = 60\text{mA} + 60\text{mA} = 120\text{mA}$
  • Dòng tiêu thụ vi điều khiển AT89C51: $I_{MCU} \approx (0.56 \times 12\text{MHz} + 8\text{mA}) + I_{port} \approx 100\text{mA}$
  • Dòng tiêu thụ IC MAX232 và LED hiển thị cực đại tại 1 thời điểm quét: $I_{LED_peak} \approx 64 \times 20\text{mA} \times \frac{1}{8} \approx 160\text{mA} \rightarrow 500\text{mA}$
  • Tổng dòng định mức: $I_{total} \approx 520\text{mA} \text{ (trung bình)} \div 1.2\text{A} \text{ (đỉnh sáng toàn phần)}.$

Vì IC ổn áp LM7805 chỉ cấp tối đa $1.0\text{A}$ và sinh nhiệt lớn ($P_D = (V_{in} - V_{out}) \times I_L = (12 - 5) \times 1 = 7\text{W}$), mạch sử dụng mạch bypass PNP Transistor $2\text{N}2955$ ($I_C = 15\text{A}, \beta = 60 \div 100$):

$$R_{bias} = \frac{V_{EB(2N2955)}}{I_{7805_threshold}} = \frac{0.7\text{V}}{0.5\text{A}} \approx 1.4,\Omega \quad (\text{Chọn trở công suất } 1.5,\Omega / 5\text{W})$$

Khi dòng qua tải $I_L > 500\text{mA}$, sụt áp trên $R_{bias} > 0.7\text{V}$, transistor $2\text{N}2955$ dẫn bão hòa, gánh phần dòng tải còn lại lên tới 2A an toàn.


Implementation và kết quả

1. Chi tiết thuật toán và mã nguồn điều khiển

Module truyền thông máy tính (Host PC - Visual Basic 6.0)

Giao diện VB6 khởi tạo cổng COM, đóng gói khung truyền và giám sát sự kiện truyền nhận dữ liệu:

' ==========================================================
' Module truyền dữ liệu RS-232 sang mạch Quang Báo AT89C51
' Chuẩn giao tiếp: 9600 bps, No Parity, 8 Data Bits, 1 Stop Bit
' ==========================================================
Private Sub cmdSend_Click()
    Dim sendBuffer As String
    Dim i As Integer
    
    ' Kiểm tra chuỗi nhập liệu (Cố định khung 8 ký tự cho 8 Matrix)
    If Len(txtInputText.Text) = 0 Then
        MsgBox "Vui long nhap chuoi ky tu quang bao!", vbExclamation, "Loi Du Lieu"
        Exit Sub
    End If
    
    ' Đệm chuỗi cho đủ 8 ký tự nếu độ dài < 8
    sendBuffer = Left(txtInputText.Text & "        ", 8)
    
    ' Khởi tạo cổng truyền thông MSComm
    If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
    MSComm1.CommPort = 1                      ' Sử dụng cổng COM1
    MSComm1.Settings = "9600,N,8,1"           ' 9600 Baud, Không chẵn lẻ, 8 data, 1 stop
    MSComm1.InputLen = 0                      ' Đọc toàn bộ bộ đệm
    MSComm1.PortOpen = True                   ' Mở cổng vật lý
    
    ' Gửi ký tự bắt đầu khung (Header: 0x02 - STX)
    MSComm1.Output = Chr$(2)
    
    ' Xuất tuần tự 8 byte ký tự ASCII
    For i = 1 To 8
        MSComm1.Output = Mid$(sendBuffer, i, 1)
    Next i
    
    ' Gửi ký tự kết thúc khung (Trailer: 0x03 - ETX)
    MSComm1.Output = Chr$(3)
    
    lblStatus.Caption = "Trang thai: Da gui 8 ky tu xuong Quang Bao thanh cong."
    MSComm1.PortOpen = False                  ' Giải phóng cổng COM
End Sub

Firmware điều khiển quét cột ma trận (Assembly MCS-51)

Thuật toán ngắt nối tiếp (Serial Interrupt Service Routine) thu nhận 8 byte từ máy tính và ghi vào vùng nhớ đệm RAM từ địa chỉ 30H đến 37H:

; ==========================================================
; FIRMWARE AT89C51: QUET MA TRAN LED 8x64 VA NHAN UART
; Tan so thach anh: 12.0 MHz | Baudrate: 9600 bps (Timer 1 Mode 2)
; ==========================================================
ORG 0000H
    LJMP MAIN
ORG 0023H               ; Vector ngat Port noi tiep (Serial Interrupt)
    LJMP SERIAL_ISR

ORG 0030H
MAIN:
    MOV SP, #5FH        ; Khoi tao con tro Stack
    MOV TMOD, #20H      ; Timer 1: 8-bit Auto-Reload (Baudrate Gen)
    MOV TH1, #0FDH      ; 9600 Baud tai 11.0592MHz (hoac tinh chinh tai 12MHz)
    MOV SCON, #50H      ; Mode 1: 8-bit UART, REN=1 (Cho phep nhan)
    SETB TR1            ; Khoi dong Timer 1
    MOV IE, #90H        ; Cho phep ngat toan cuc (EA=1) va ngat Serial (ES=1)
    
    MOV R0, #30H        ; Dia chi buffer 8 ky tu mac dinh: "SPKT2003"
    ; [Doan ma nap font mac dinh vao RAM buffer...]

DISPLAY_SCAN:
    ; Vong lap quet 8 cot lien tuc
    MOV R2, #00H        ; Bien dem cot: 0 -> 7
SCAN_LOOP:
    MOV A, R2
    MOV P2, A           ; Chon cot quet qua 74LS138 (#2)
    
    ; Nap du lieu hang cho tung khoi LED tu 1 den 8
    MOV R1, #00H        ; Chi so Module LED: 0 -> 7
MODULE_LOOP:
    MOV A, R1
    MOV P1, A           ; P1 chon IC chot 74LS573 tuong ung qua 74LS138 (#1)
    
    ; Lay byte du lieu cot tu RAM ngoai / Ma Font
    MOV DPTR, #FONT_TABLE
    ; [Tinh toan offset dua vao ky tu trong Buffer va chi so cot R2]
    MOVC A, @A+DPTR
    MOV P0, A           ; Xuat du lieu 8-bit ra Port 0
    
    INC R1
    CJNE R1, #08H, MODULE_LOOP
    
    ACALL DELAY_1MS     ; Thoi gian duy tri sang moi cot (~1ms)
    INC R2
    CJNE R2, #08H, SCAN_LOOP
    SJMP DISPLAY_SCAN

; --- TRINH PHUC VU NGAT UART ---
SERIAL_ISR:
    JNB RI, ISR_EXIT
    CLR RI              ; Xoa co ngat nhan
    MOV A, SBUF         ; Doc ky tu tu thanh ghi dem
    ; [Kiem tra Header, ghi tuan tu vao Buffer 30H..37H, kiem tra Trailer]
ISR_EXIT:
    RETI

2. Kết quả kiểm thử và đánh giá hiệu năng

+-------------------------------------------------------------------------+
|                  BẢNG ĐO LƯỜNG HIỆU NĂNG HỆ THỐNG PHẦN CỨNG             |
+--------------------------+-----------------------+----------------------+
| Tham số kỹ thuật         | Mục tiêu thiết kế     | Kết quả thực tế      |
+--------------------------+-----------------------+----------------------+
| Tốc độ truyền thông COM  | 9600 bps              | 9600 bps (BER = 0%)  |
| Tần số quét hiển thị     | $\ge 192\text{ Hz}$   | $208.3\text{ Hz}$    |
| Thời gian đáp ứng cập nhật| $< 100\text{ ms}$     | $12.5\text{ ms}$     |
| Độ sụt áp nguồn tại 1.5A | $\le 5\%$ ($> 4.75V$) | $4.88\text{ V}$      |
| Nhiệt độ tỏa trên 7805   | $< 65^\circ\text{C}$  | $48.2^\circ\text{C}$ |
+--------------------------+-----------------------+----------------------+
  • Khả năng hiển thị màu: Tách biệt rõ 3 trạng thái màu quang học:
    • Kích hoạt Anode Red: Hiển thị Đỏ thuần.
    • Kích hoạt Anode Green: Hiển thị Xanh lá thuần.
    • Kích hoạt đồng thời Anode Red + Green: Tạo sắc Cam (Amber) đồng đều không lệch tông.
  • Độ ổn định truyền tin: Thử nghiệm truyền liên tục 1,000 khung dữ liệu (mỗi khung 8 ký tự) từ khoảng cách cáp $15\text{ mét}$ không ghi nhận hiện tượng rớt gói hoặc sai lệch mã ASCII.

Đổi mới và đóng góp kỹ thuật

  1. Khắc phục triệt để hiện tượng trượt xiên chữ (Anti-Shearing Scan): Đề xuất giải pháp quét cột song song phân tán (Parallel-Column Latch Architecture) qua 8 IC chốt 74LS573, giúp đồng bộ hóa thời gian sáng của toàn bộ 64 cột LED, cho phép chữ cuộn ngang với độ mượt cao ở mọi cấp tốc độ.
  2. Cấu trúc nguồn tích hợp Transistor Bypass thông minh: Thiết kế thành công mạch ổn áp ghép lai giữa IC $7805$ và transistor công suất PNP $2\text{N}2955$. Giải pháp này vừa duy trì độ chính xác điện áp $5\text{V} \pm 2%$ của mạch tích hợp, vừa mở rộng khả năng cấp dòng từ $1\text{A}$ lên đến $2.5\text{A}$ với giá thành linh kiện thấp hơn 60% so với mua module nguồn switching công nghiệp cùng thời kỳ.
  3. Phần mềm quản trị trực quan hóa cao: Thay thế hoàn toàn các bộ chuyển mạch DIP-switch và bàn phím bấm cơ học bằng phần mềm máy tính Visual Basic 6.0 có khả năng bẫy lỗi chuỗi, tự động căn lề văn bản và quản lý giao thức bắt tay phần cứng.
Tiêu chí Bảng ma trận dùng EPROM Bảng LED vi điều khiển độc lập Hệ thống AT89C51 + PC (Đề tài)
Cập nhật nội dung Tháo chip, nạp ROM vật lý Nhập bằng phím ma trận 16 nút Nhập trực tiếp trên bàn phím PC
Giao diện cấu hình Không có Màn hình LCD 16x2 nhỏ GUI Visual Basic đồ họa trực quan
Độ linh hoạt màu sắc Cố định 1 màu Đơn sắc hoặc 2 màu cứng Điều khiển 3 màu linh hoạt qua bit điều khiển
Thời gian đổi dữ liệu $15 - 30\text{ phút}$ $1 - 2\text{ phút}$ $< 1\text{ giây}$ (Tức thời)

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng thực tiễn

  • Trung tâm giao dịch tài chính & Ngân hàng: Hiển thị tự động lãi suất tiết kiệm, tỷ giá ngoại tệ USD/EUR/VND được đồng bộ hóa từ phần mềm quản lý chi nhánh.
  • Phòng khám & Bệnh viện: Bảng gọi số thứ tự khám bệnh tại các phòng khám chuyên khoa, điều khiển tập trung từ máy tính y tá.
  • Nhà ga, Bến xe & Sân bay: Hiển thị thông báo giờ tàu, biển chỉ dẫn trạng thái cổng khởi hành (Gate Open/Delayed).
   [ Server Quản Lý Trung Tâm ]
                 |
                 | LAN / RS-485 Bus
                 v
   +-----------------------------+
   | Trạm Điều Khiển Cục Bộ (PC) |
   +-----------------------------+
                 |
                 | RS-232 / MAX232 (9600 bps)
                 v
   +-----------------------------+
   | Board Quang Báo (AT89C51)   | ===> [ Hiển thị Tỷ Giá / Lãi Suất ]
   +-----------------------------+

Dự toán chi phí phần cứng (BOM - Bill of Materials)

  • Vi điều khiển AT89C51 + Thạch anh 12MHz + Socket: ~35,000 VND
  • 08 Module LED Ma trận $8 \times 8$ 2 màu: ~160,000 VND
  • 08 IC 74LS573 + 02 IC 74LS138 + 01 IC MAX232: ~55,000 VND
  • Transistor công suất 2N2955 + IC LM7805 + Tụ lọc nguồn: ~30,000 VND
  • Board mạch in (PCB 2 lớp) + Khung vỏ mica: ~80,000 VND
  • Tổng chi phí chế tạo: $\approx 360,000\text{ VND}$ (Hiệu quả chi phí vượt trội so với các bảng nhập khẩu thương mại có giá từ 2,000,000 - 3,500,000 VND thời điểm 2003).

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Giới hạn khung truyền: Mỗi gói dữ liệu bị cố định ở độ dài 8 ký tự; việc hiển thị các chuỗi thông điệp dài đòi hỏi máy tính phải chia nhỏ gói tin hoặc MCU phải mở rộng RAM ngoài.
  • Bộ nhớ khả biến: Vi điều khiển AT89C51 chỉ có $128\text{ bytes}$ RAM nội; khi mất nguồn hoàn toàn, dữ liệu văn bản vừa nạp sẽ bị xóa nếu không được lưu vào bộ nhớ EEPROM ngoài (như AT24C04/24C16).
  • Chuẩn giao tiếp điểm - điểm: Chuẩn RS-232 chỉ hỗ trợ kết nối 1 PC với 1 Bảng quang báo ở khoảng cách tối đa $15 - 20\text{ mét}$.

Hướng nâng cấp mở rộng

  1. Chuyển đổi giao tiếp sang RS-485: Thay thế MAX232 bằng IC MAX485 để xây dựng mạng quang báo phân tán (Multi-drop Network), cho phép 1 PC điều khiển đồng thời 32 bảng quang báo ở khoảng cách lên đến $1,200\text{ mét}$.
  2. Nâng cấp vi điều khiển và bộ nhớ: Sử dụng vi điều khiển AT89S52 hoặc họ vi điều khiển AVR/ARM với dung lượng RAM lớn hơn; tích hợp IC thời gian thực RTC DS1307 để hiển thị ngày/tháng/năm và đồng hồ số xen kẽ.
  3. Mô-đun hóa phần cứng: Ứng dụng IC thanh ghi dịch chuyên dụng cho LED ma trận như 74HC595 hoặc MAX7219 để giảm thiểu số lượng đường mạch in từ 8-bit bus xuống giao tiếp nối tiếp SPI 3 dây.

Đối tượng hưởng lợi

  • Sinh viên ngành Kỹ thuật Điện - Điện tử / Viễn thông: Bản thiết kế là tài liệu mẫu mực về phương pháp phối ghép bus vi điều khiển họ MCS-51, kỹ thuật quét LED ma trận, thiết kế mạch in 2 lớp và lập trình truyền thông bất đồng bộ.
  • Kỹ sư nhúng (Embedded Developers): Nắm vững nguyên lý điều khiển phần cứng trực tiếp qua cổng nối tiếp và thuật toán khử méo ảnh quang học (POV - Persistence of Vision).
  • Doanh nghiệp vừa và nhỏ: Cơ sở thiết kế để tự sản xuất các hệ thống hiển thị giá vàng, tỷ giá ngân hàng với giá thành thấp, dễ dàng bảo trì và làm chủ công nghệ.
  • Nhà nghiên cứu ứng dụng: Nền tảng để phát triển các hệ thống IoT công nghiệp giao tiếp qua mạng Ethernet hoặc chuẩn truyền thông Modbus RTU sau này.

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

1. Yêu cầu kỹ thuật phần cứng của máy tính để kết nối với mạch là gì?

Máy tính chỉ cần trang bị cổng nối tiếp vật lý chuẩn RS-232 (DB9 Male) hoặc sử dụng cáp chuyển đổi USB-to-RS232 (sử dụng chip FTDI FT232 hoặc PL2303). Hệ điều hành tương thích từ Windows 98, Windows 2000 đến Windows XP/7/10 chạy môi trường Visual Basic runtime.

2. Tại sao lại chọn tần số quét cột trên 192 Hz mà không phải thấp hơn?

Mắt người có hiện tượng lưu ảnh trong khoảng $1/24\text{ giây}$ ($41.67\text{ ms}$). Để hiển thị mượt mà không nhấp nháy, toàn bộ bảng LED cần được quét lại tối thiểu 24 lần mỗi giây. Vì bảng gồm 8 bước quét cột tuần tự, tần số quét mỗi cột phải đạt tối thiểu $24 \times 8 = 192\text{ Hz}$. Trong thực tế, hệ thống được thiết lập ở tần số $>200\text{ Hz}$ để triệt tiêu hoàn toàn hiện tượng mỏi mắt khi quan sát lâu.

3. Làm thế nào để nối dài khoảng cách truyền giữa PC và bảng quang báo trên 50 mét?

Chuẩn RS-232 bị suy hao tín hiệu và méo dạng xung ở cự ly $>20\text{ mét}$. Để kéo dài cự ly lên đến 1,200 mét, cần gắn thêm bộ chuyển đổi giao diện RS-232 sang RS-422/RS-485 (dùng đường truyền vi sai cân bằng chống nhiễu) ở cả hai đầu phát và thu.

4. Mạch có thể tự động chạy chữ khi ngắt kết nối với máy tính không?

Có. Sau khi nhận đủ chuỗi ký tự qua cổng COM, vi điều khiển lưu dữ liệu vào vùng đệm RAM nội và chuyển sang chế độ quét hiển thị/cuộn lặp vô tận. Người dùng có thể rút cáp RS-232 và tắt máy tính, bảng quang báo vẫn tiếp tục hoạt động bình thường nhờ nguồn cấp riêng.

5. Tại sao cần dùng mạch ổn áp kết hợp LM7805 và Transistor 2N2955 thay vì chỉ dùng LM7805?

Một IC LM7805 chỉ cấp dòng danh định tối đa là 1.0A. Khi hiển thị toàn bộ 512 LED màu cam (cả LED đỏ và xanh cùng sáng), dòng tiêu thụ đỉnh vượt quá 1.2A, làm kích hoạt mạch bảo vệ quá nhiệt ngắt dòng của 7805 gây sập nguồn. Transistor PNP 2N2955 đóng vai trò van nâng dòng công suất cao, cho phép hệ thống tải dòng an toàn lên đến 2.0A - 2.5A mà không làm sụt áp.


Kết luận

Đề tài "Thiết Kế và Thi Công Mạch Quang Báo Giao Tiếp Với Máy Tính" của nhóm sinh viên Đỗ Thế Thịnh và Nguyễn Xuân Thắng, dưới sự hướng dẫn của GVHD Trương Thị Bích Ngà (Đại học Sư phạm Kỹ thuật TP.HCM, 2003), đã hoàn thành trọn vẹn và xuất sắc các mục tiêu đề ra:

  1. Xây dựng hoàn chỉnh phần cứng bảng quang báo ma trận LED $8 \times 64$ với cấu trúc quét cột thông minh, hiển thị 3 màu sắc nét và triệt tiêu méo hình khi cuộn chữ.
  2. Thiết kế thành công mạch nguồn công suất lớn $5\text{V} - 2\text{A}$ giải quyết triệt để bài toán sụt áp và quá nhiệt.
  3. Làm chủ kỹ thuật truyền thông nối tiếp RS-232 kết nối vi điều khiển AT89C51 với phần mềm ứng dụng máy tính Visual Basic 6.0, tạo ra một sản phẩm công nghệ có tính ứng dụng thực tiễn cao, giá thành cạnh tranh và giao diện thân thiện.

Đồ án không chỉ là minh chứng xuất sắc cho năng lực kết hợp giữa kỹ thuật phần cứng số và lập trình phần mềm máy tính, mà còn đặt nền móng kỹ thuật vững chắc cho các nghiên cứu phát triển hệ thống hiển thị thông tin điện tử đa phương tiện phục vụ đời sống kinh tế - xã hội.