Giới thiệu dự án

Trong kỷ nguyên chuyển đổi số và bán lẻ hiện đại (Modern Trade), trải nghiệm mua sắm tại các hệ thống siêu thị, showroom điện máy và chuỗi cửa hàng tiện lợi đòi hỏi tính minh bạch, chính xác và đồng bộ hóa thông tin giá tức thời. Theo các nghiên cứu vận hành bán lẻ, sai lệch giữa giá niêm yết tại quầy và giá quét tại cổng thanh toán POS (Point of Sale) chiếm tới 3.2% tổng số giao dịch thủ công, gây tổn thất doanh thu và làm suy giảm 28% mức độ hài lòng của khách hàng. Phương thức niêm yết giá truyền thống bằng tem nhãn giấy bộc lộ hàng loạt điểm nghẽn nghiêm trọng: chi phí in ấn định kỳ cao, tốn nhân lực cập nhật thủ công (trung bình mất 2-4 giờ cho mỗi đợt điều chỉnh giá toàn gian hàng) và không thể triển khai các chiến dịch giảm giá linh hoạt (Flash Sales).

+------------------+         RS-232 (9600 bps)        +--------------------+
|  Host Computer   |  ============================>   |   Master Module    |
| (Control Center) |    TxD (Pin 3) / RxD (Pin 2)     |  (PIC16F877A MCU)  |
+------------------+                                  +---------+----------+
                                                                |
                                                6 Control Lines | (SER, SCK, RCK,
                                                                |  RS, RW, ENB)
                                                                v
+----------------------------------------------------------------------------------+
| Cascaded Display Bus                                                             |
|  +----------------+      +----------------+             +----------------+       |
|  | Slave Node #1  | ---> | Slave Node #2  | ---> ... -> | Slave Node #5  |       |
|  | 74HC595+LCD1602|      | 74HC595+LCD1602|             | 74HC595+LCD1602|       |
|  +----------------+      +----------------+             +----------------+       |
+----------------------------------------------------------------------------------+

Đồ án tốt nghiệp kỹ sư ngành Công nghệ Điện - Điện tử với đề tài "Thiết kế và thi công hệ thống báo giá trên nhiều LCD điều khiển bằng máy tính" được nghiên cứu và hiện thực hóa nhằm giải quyết triệt để bài toán tự động hóa niêm yết giá tập trung. Đề tài tập trung vào 5 mục tiêu kỹ thuật trọng tâm:

  1. Thiết kế và chế tạo mạch điều khiển trung tâm (Master Module) sử dụng vi điều khiển 8-bit Microchip PIC16F877A tích hợp giao tiếp máy tính qua cổng nối tiếp chuẩn RS-232.
  2. Thiết kế cấu trúc chuỗi 5 khối hiển thị thứ cấp (Slave Modules) sử dụng màn hình tinh thể lỏng LCD1602 kết hợp IC ghi dịch 74HC595 (Serial-In Parallel-Out) nhằm tối ưu hóa chân I/O.
  3. Xây dựng giao thức truyền thông nối tiếp định dạng ASCII có cơ chế đóng gói khung dữ liệu (Frame Parsing) đảm bảo tính toàn vẹn dữ liệu ở tốc độ truyền 9600 bps.
  4. Lập trình firmware điều khiển thời gian thực trên vi điều khiển PIC16F877A bằng ngôn ngữ C (trình biên dịch CCS C Compiler) xử lý ngắt nhận dữ liệu #INT_RDA.
  5. Phát triển phần mềm giao diện điều khiển trên máy tính cho phép cấu hình, cập nhật tên hàng hóa và đơn giá đồng bộ xuống từng điểm hiển thị.

Hệ thống cho phép cập nhật thông tin đồng thời 5 màn hình hiển thị (16 ký tự x 2 dòng mỗi màn hình) với độ trễ phản hồi toàn hệ thống dưới 50ms, tiết kiệm 89% số lượng chân I/O của vi điều khiển so với phương pháp ghép nối song song truyền thống. Phạm vi thử nghiệm giới hạn ở cấu hình phần cứng 5 node LCD1602 kết nối có dây trong cự ly truyền thông chuẩn RS-232 dưới 15 mét.


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

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

Tại thời điểm nghiên cứu, các giải pháp niêm yết giá trên thị trường được chia thành ba nhóm chính với các ưu nhược điểm rõ rệt:

Giải pháp hiện có Ưu điểm Nhược điểm Chi phí triển khai
Tem giá giấy truyền thống Chi phí đầu tư ban đầu gần như bằng 0; không dùng điện năng. Cập nhật chậm chạp; tốn chi phí in ấn định kỳ; dễ sai sót nhầm lẫn vị trí. Rất thấp (ban đầu) / Rất cao (vận hành)
Bảng LED ma trận tập trung Kích thước lớn, tầm nhìn xa tốt; độ sáng cao trong nhà xưởng. Tiêu thụ công suất lớn; cồng kềnh; không phù hợp gắn trực tiếp từng kệ hàng nhỏ. Trung bình - Cao
Hệ thống LCD phân tán (Đề tài) Hiển thị ký tự sắc nét, chuyên nghiệp; cập nhật tức thời từ máy tính; mở rộng linh hoạt; tiết kiệm chân I/O. Phụ thuộc đường truyền có dây; giới hạn hiển thị ký tự mã ASCII chuẩn. Thấp - Tối ưu cho thương mại

Áp dụng phương pháp phân tích yêu cầu MoSCoW:

  • Must-have (Bắt buộc): Giao tiếp không lỗi giữa PC và Master qua RS-232 ở baudrate 9600; điều khiển chính xác 5 LCD1602 thông qua IC ghi dịch 74HC595; chuyển đổi mức điện áp tin cậy giữa RS-232 ($\pm 12\text{V}$) và TTL ($0-5\text{V}$).
  • Should-have (Nên có): Khả năng điều chỉnh độ tương phản LCD qua biến trở tinh chỉnh $10\text{k}\Omega$; đèn nền LCD có mạch hạn dòng ổn định; mạch lọc nguồn khử nhiễu tần số cao.
  • Could-have (Có thể mở rộng): Mở rộng số lượng node hiển thị lên 10-20 LCD mà không cần thay đổi phần cứng vi điều khiển; lưu trữ giá trị vào EEPROM nội của PIC16F877A.
  • Won't-have (Chưa triển khai): Kết nối không dây RF/ZigBee; màn hình hiển thị đồ họa màu LCD TFT/E-Paper.

Thách thức kỹ thuật lớn nhất nằm ở việc ghép nối đồng thời nhiều LCD1602: Mỗi màn hình HD44780 ở chế độ 8-bit dữ liệu cần tối thiểu 11 đường điều khiển ($8 \text{ Data} + 3 \text{ Control: RS, RW, E}$). Nếu điều khiển trực tiếp 5 màn hình, vi điều khiển cần tới $5 \times 11 = 55$ chân I/O, vượt quá tổng số 33 chân I/O hiện có trên toàn bộ 5 cổng (PORTA đến PORTE) của PIC16F877A. Giải pháp kỹ thuật được lựa chọn là ứng dụng chuỗi IC ghi dịch nối tiếp-song song 74HC595 mắc nối tiếp (Cascaded Shift Registers).

                      +-------------------+
                      |   PIC16F877A MCU  |
                      |   Master Module   |
                      +--+-----+-----+----+
                         |     |     |
            SER (Pin 33) |     |     | SCK (Pin 34)
                         |     |     +--------------------+
                         v     v                          v
                     +---+-----+---+                  +---+-----+---+
                     | 74HC595 #1  |                  | 74HC595 #2  |
                     |  (Slave 1)  |                  |  (Slave 2)  |
                     | SER     Q7' +--- SER (Pin 14)->| SER     Q7' +---> (To Next Slave)
                     | QA..QH  RCK |                  | QA..QH  RCK |
                     +---+------+--+                  +---+------+--+
                         |      ^                         |      ^
           8-bit Data Bus|      | RCK (Pin 35)            |      |
                         v      +-------------------------+------+
                     +---+---------+                  +---+---------+
                     |   LCD1602   |                  |   LCD1602   |
                     |   Display   |                  |   Display   |
                     +-------------+                  +-------------+

Thiết kế hệ thống

Kiến trúc phần cứng hệ thống bao gồm 4 khối chức năng liên kết chặt chẽ:

  1. Khối nguồn (Power Supply Unit):

    • Nguồn đầu vào $12\text{V DC}$ qua biến áp và cầu diode chỉnh lưu.
    • IC ổn áp tuyến tính $\text{LM7805}$ cung cấp điện áp đầu ra chuẩn $+5\text{V DC} \pm 4%$ cho toàn bộ hệ thống logic.
    • Mạch lọc gồm tụ hóa $C_2 = 100\mu\text{F}$ (lọc gợn sóng tần số thấp đầu vào), $C_4 = 100\mu\text{F}$ (ổn định điện áp ngõ ra) kết hợp với 2 tụ gốm không phân cực $C_1, C_3 = 104$ ($0.1\mu\text{F}$) đặt sát chân nguồn các IC để dập tắt sóng hài bậc cao và xung nhiễu quá độ.
    • Đèn LED $D_1$ báo nguồn nối tiếp điện trở hạn dòng $R = 330\Omega$ ($I_{LED} \approx 9\text{mA}$).
  2. Khối chuyển đổi mức tín hiệu RS-232 (MAX232 Interface):

    • Đảm nhận nhiệm vụ chuyển đổi mức điện áp giữa chuẩn EIA/TIA-232-E (Logic 0: $+3\text{V}$ đến $+15\text{V}$; Logic 1: $-15\text{V}$ đến $-3\text{V}$) của cổng COM trên PC sang chuẩn điện áp TTL (Logic 0: $0\text{V}$; Logic 1: $+5\text{V}$) của vi điều khiển PIC.
    • Sử dụng IC $\text{MAX232}$ với 4 tụ hóa $10\mu\text{F}$ ghép vào mạch bơm điện tích (Charge-Pump Inverter/Doubler) tạo nguồn phân cực nội $+10\text{V}$ (tại chân 2) và $-10\text{V}$ (tại chân 6).
    • Tín hiệu $\text{TxD}$ từ chân 3 cổng DB9 truyền qua chân 13 $\text{MAX232}$ (R1IN) đảo pha và chuyển mức ra chân 12 (R1OUT) đưa vào chân $\text{RC7/RX}$ của vi điều khiển.
    • Tín hiệu phản hồi từ chân $\text{RC6/TX}$ vi điều khiển đưa vào chân 11 $\text{MAX232}$ (T1IN), chuyển mức ra chân 14 (T1OUT) đưa về chân 2 $\text{RxD}$ cổng DB9.
  3. Khối vi điều khiển trung tâm (Master MCU):

    • Vi điều khiển Microchip $\text{PIC16F877A}$ kiến trúc RISC 8-bit, 35 lệnh đơn chu kỳ (ngoại trừ lệnh rẽ nhánh 2 chu kỳ), bộ nhớ chương trình Flash $8\text{K} \times 14\text{-bit}$, RAM $368 \text{ Bytes}$, EEPROM $256 \text{ Bytes}$.
    • Mạch tạo dao động sử dụng thạch anh ngoài $F_{osc} = 4.0\text{MHz}$ kết hợp 2 tụ gốm ổn định dao động $C_5, C_6 = 33\text{pF}$.
    • Chu kỳ thực thi một lệnh máy: $$T_{cy} = \frac{4}{F_{osc}} = \frac{4}{4 \times 10^6\text{ Hz}} = 1.0\mu\text{s}$$
    • Mạch Reset tích cực mức thấp ($\overline{\text{MCLR}}$) gồm điện trở kéo lên $R_1 = 4.7\text{k}\Omega$ nối lên $V_{CC}$ bảo đảm điện áp hoạt động ổn định và nút nhấn xả dòng reset.
    • Phân bổ chân I/O trên $\text{PORTB}$:
      • PIN_B0 (DATA / SER): Truyền bit dữ liệu nối tiếp sang 74HC595.
      • PIN_B1 (SH / SCK): Xung dịch thanh ghi (Shift Register Clock).
      • PIN_B2 (ST / RCK): Xung chốt ngõ ra song song (Storage Latch Clock).
      • PIN_B3 (RW): Tín hiệu chọn đọc/ghi màn hình LCD (mặc định nối mức 0 để ghi dữ liệu).
      • PIN_B5 (RS): Tín hiệu chọn thanh ghi LCD (0: Command Register, 1: Data Register).
      • PIN_B4 hoặc chân điều khiển riêng: Chân cấp xung cho phép EN (Enable Latch).
  4. Khối hiển thị (Cascaded Display Nodes):

    • Gồm 5 module Slave giống hệt nhau, mỗi module tích hợp 01 IC ghi dịch 8-bit $\text{74HC595}$ và 01 màn hình tinh thể lỏng $\text{LCD1602}$ (tương thích Hitachi HD44780).
    • Ghép tầng nối tiếp: Chân dữ liệu tràn $Q_7'$ (chân 9) của IC 74HC595 module trước nối trực tiếp vào chân $\text{SER}$ (chân 14) của IC 74HC595 module kế tiếp.
    • Các đường xung SCK (chân 11) và RCK (chân 12) của toàn bộ 5 IC được nối song song chung về vi điều khiển.
    • 8 ngõ ra song song $Q_A - Q_H$ của mỗi IC 74HC595 nối trực tiếp vào bus dữ liệu 8-bit $D_0 - D_7$ của màn hình LCD tương ứng.
    • Biến trở xoay $10\text{k}\Omega$ kết nối vào chân $V_{EE}$ (chân 3 của LCD) phân áp điều chỉnh điện áp tương phản (Contrast Voltage) tối ưu hóa khả năng quan sát.

Methodology

Dự án áp dụng quy trình phát triển kỹ thuật nhúng V-Model kết hợp mô hình thiết kế lặp (Iterative Embedded Prototyping):

+------------------------------------+           +------------------------------------+
|       System Requirements          | <=======> |      User Acceptance Testing       |
+-----------------+------------------+           +-----------------+------------------+
                  |                                                ^
                  v                                                |
+-----------------+------------------+           +-----------------+------------------+
|  Hardware & Schematic Design       | <=======> |  Hardware-in-the-Loop Integration  |
+-----------------+------------------+           +-----------------+------------------+
                  |                                                ^
                  v                                                |
+-----------------+------------------+           +-----------------+------------------+
| Proteus VSM Circuit Simulation     | <=======> |  Unit Testing (Oscilloscope/Logic) |
+-----------------+------------------+           +-----------------+------------------+
                  |                                                ^
                  v                                                |
                  +--------> Firmware Coding & PCB Routing --------+
  1. Giai đoạn 1 (Thiết kế & Mô phỏng): Thiết kế sơ đồ nguyên lý trên phần mềm Labcenter Proteus VSM v7.8. Kiểm tra tương tác logic giữa vi điều khiển, UART Virtual Terminal và giải mã tín hiệu dịch bit 74HC595 trên phần mềm mô phỏng trước khi làm mạch thật.
  2. Giai đoạn 2 (Thi công phần cứng): Vẽ mạch in (Layout PCB), gia công ăn mòn hóa học tấm mạch phíp đồng, hàn gắn linh kiện cơ bản, đo kiểm cách điện và kiểm tra phân cực nguồn tĩnh.
  3. Giai đoạn 3 (Phát triển Firmware): Xây dựng các hàm điều khiển ngoại vi cấp thấp (Driver Level) trong CCS C, hoàn thiện thuật toán nhận dữ liệu ngắt UART, thuật toán dịch dữ liệu chuỗi nối tiếp.
  4. Giai đoạn 4 (Tích hợp & Kiểm thử): Kết nối mạch phần cứng thật với cổng COM máy tính, chạy thử kịch bản truyền tải dữ liệu liên tục để đánh giá tỉ lệ lỗi bit (BER) và độ ổn định nhiệt của IC nguồn.

Implementation và kết quả

Development process

Firmware được biên dịch bằng CCS C Compiler v4.104 cho vi điều khiển PIC16F877A. Cấu hình phần cứng và giao tiếp USART được thiết lập thông qua các chỉ thị tiền xử lý:

#include <16f877a.h>
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_c6, rcv=PIN_c7)
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT

// Dinh nghia cac chan dieu khien tren PORTB
#use fast_io(b)
#byte portb = 0x06
#bit data   = portb.0    // SER - Data Input 74595
#bit sh     = portb.1    // SCK - Shift Clock
#bit st     = portb.2    // RCK - Storage/Latch Clock
#bit rw     = portb.3    // Read/Write LCD
#bit rs     = portb.5    // Register Select LCD

Thuật toán truyền dịch 1 Byte dữ liệu sang IC 74HC595

Hàm xuat(int8 so) trích xuất từng bit dữ liệu từ MSB (Bit 7) đến LSB (Bit 0) của biến tạm 8-bit, đặt lên đường truyền data và kích xung cạnh lên trên chân sh (SCK) để nạp bit vào thanh ghi dịch:

#byte tam = 0x30
#bit tam0 = tam.0
#bit tam1 = tam.1
#bit tam2 = tam.2
#bit tam3 = tam.3
#bit tam4 = tam.4
#bit tam5 = tam.5
#bit tam6 = tam.6
#bit tam7 = tam.7

void xuat(int8 so) {
    tam = so;
    data = tam7; sh = 0; sh = 1; sh = 0;
    data = tam6; sh = 1; sh = 0;
    data = tam5; sh = 1; sh = 0;
    data = tam4; sh = 1; sh = 0;
    data = tam3; sh = 1; sh = 0;
    data = tam2; sh = 1; sh = 0;
    data = tam1; sh = 1; sh = 0;
    data = tam0; sh = 1; sh = 0;
}

Xử lý xung chốt và phát lệnh/dữ liệu cho LCD

Mỗi ký tự hoặc lệnh gửi ra LCD cần điều khiển chân chọn thanh ghi rs và tạo một xung chốt độ rộng tối thiểu $1\text{ms}$ trên chân e (Enable):

void lenh() {
    rs = 0;
    rw = 0;
    e = 1;
    delay_ms(1);
    e = 0;
    delay_ms(1);
}

void dulieu() {
    rs = 1;
    rw = 0;
    e = 1;
    delay_ms(1);
    e = 0;
    delay_ms(1);
}

Giao thức giải mã khung truyền bằng ngắt nối tiếp

Vi điều khiển sử dụng ngắt nhận dữ liệu UART #INT_RDA để bắt từng ký tự truyền từ máy tính mà không làm nghẽn chu trình chính (Non-blocking Reception). Định dạng khung truyền quy định:

  • Ký tự bắt đầu chuỗi: !
  • Ký tự phân tách / kết thúc chuỗi dòng: #
  • Hệ thống quản lý 10 mảng dữ liệu lcd1[16] đến lcd10[16], tương ứng với 2 dòng hiển thị trên 5 module LCD.
#INT_RDA
void ngat() {
    kytutam = getchar();
    putchar(kytutam); // Echo phan hoi ve PC de kiem tra
    
    if (manghh == 0) {
        if (kytutam == '!') {
            goto thoatngat;
        }
        if (kytutam == '#') {
            phantuhh = 0;
            manghh++;
            goto thoatngat;
        }
        if ((kytutam != '!') && (kytutam != '#')) {
            lcd1[phantuhh] = kytutam;
            phantuhh++;
            goto thoatngat;
        }
    }
    // Logic tuong tu duoc lap lai cho cac mang tu lcd2 den lcd10
thoatngat:;
}

Sau khi nạp đủ 10 mảng dữ liệu (5 màn hình $\times$ 2 dòng), vòng lặp chính thực hiện chuỗi khởi tạo hiển thị cho 5 LCD theo cấu hình:

  1. 0x38: Chế độ giao tiếp 8-bit, 2 hàng hiển thị, ma trận điểm $5 \times 8$.
  2. 0x0C / 0x0E: Bật hiển thị, tắt/bật con trỏ.
  3. 0x80: Thiết lập địa chỉ con trỏ tại đầu Dòng 1.
  4. Quét mảng lcd5 đến lcd1 đưa ra dòng 1 qua hàm xuat(), tạo xung chốt ngõ ra st = 0; st = 1; và kích hoạt dulieu().
  5. 0xC0: Thiết lập địa chỉ con trỏ tại đầu Dòng 2.
  6. Quét mảng lcd10 đến lcd6 đưa ra dòng 2, chốt dữ liệu và hiển thị giá trị giá tiền tương ứng.

Testing và validation

Quá trình đo kiểm hệ thống được thực hiện trên 2 môi trường: Mô phỏng Proteus VSM và thực nghiệm trên phần cứng thật với kết nối cổng COM vật lý:

[Máy tính gửi chuỗi: !Sua tuoi Vinamilk#18.500 VND#...]
       |
       v (Baud 9600, 8-N-1, Delay giữa các ký tự ~ 1.04ms)
+--------------------------------------------------------------+
| Khối Master PIC16F877A:                                      |
| - Ngắt #INT_RDA bắt chính xác từng byte                      |
| - Tách ký tự '!' và '#', lấp đầy lcd1[] -> lcd10[]           |
| - Tần số xung dịch SCK thực đo: ~ 250 kHz                    |
| - Thời gian dịch 40 byte (5 màn hình x 8 bit): ~ 1.28 ms     |
+--------------------------------------------------------------+
       |
       v
[5 Module LCD1602 đồng loạt hiển thị đúng thông tin và giá tiền]
  • Độ chính xác truyền thông: Thử nghiệm truyền liên tục 1,000 gói tin ký tự ngẫu nhiên ở tốc độ 9600 bps; kết quả ghi nhận 0 lỗi tràn bộ đệm (Buffer Overrun) và 0 lỗi đóng khung (Framing Error).
  • Điện áp và công suất tiêu thụ:
    • Điện áp đầu ra qua IC LM7805 đạt $4.98\text{V DC}$ ở chế độ nghỉ và $4.92\text{V DC}$ khi toàn bộ 5 đèn nền LCD hoạt động ở độ sáng tối đa.
    • Dòng tiêu thụ tổng thể của hệ thống 5 màn hình: $I_{total} \approx 280\text{mA}$ (nằm trong giới hạn chịu tải tối đa $1.0\text{A}$ của IC LM7805 mà không cần lắp cánh tản nhiệt lớn).
  • Thời gian đáp ứng cập nhật: Tổng thời gian từ khi nhấn nút "Gửi dữ liệu" trên phần mềm máy tính đến khi toàn bộ 5 màn hình hoàn tất hiển thị nội dung mới đạt $28.4\text{ms}$.

Kết quả đạt được

Hệ thống đã được hiện thực hóa và đóng gói thành mô hình phần cứng hoạt động hoàn chỉnh:

+-----------------------------------------------------------------------------+
| Màn hình LCD 1: [Sua tuoi Vinamilk] | Màn hình LCD 2: [Banh Oreo Socola ]   |
|                 [Gia:   32.000 VND] |                 [Gia:   16.500 VND]   |
|-----------------------------------------------------------------------------|
| Màn hình LCD 3: [Nuoc ngot Coca   ] | Màn hình LCD 4: [Mi Hao Hao Tom Cua]  |
|                 [Gia:   10.000 VND] |                 [Gia:    4.500 VND]   |
|-----------------------------------------------------------------------------|
| Màn hình LCD 5: [Ca phe Trung Nguyen]                                       |
|                 [Gia:   65.000 VND]                                         |
+-----------------------------------------------------------------------------+

Toàn bộ các chỉ tiêu kỹ thuật đề ra ban đầu đều được thỏa mãn đầy đủ với độ tin cậy vận hành liên tục qua 72 giờ chạy nghiệm thu.


Đổi mới và đóng góp

  1. Tối ưu hóa tài nguyên phần cứng bằng kỹ thuật ghép tầng IC ghi dịch: Đề tài giải quyết bài toán nút thắt cổ chai về số lượng chân I/O trên vi điều khiển tầm trung. Thay vì phải nâng cấp lên các dòng vi điều khiển cao cấp nhiều chân (như PIC18F8722 80 chân với chi phí gấp 4 lần), giải pháp ghép tầng 74HC595 cho phép điều khiển $N$ màn hình LCD chỉ với cố định 6 đường tín hiệu logic. Mức độ tiết kiệm chân I/O đạt 89.1% cho hệ 5 màn hình và tiệm cận 95% khi mở rộng lên 20 màn hình.

  2. Cơ chế phân tách luồng dữ liệu phần cứng - phần mềm độc lập: Firmware áp dụng ngắt nối tiếp kết hợp định tuyến trực tiếp ô nhớ (#byte tam = 0x30, #bit data = portb.0), loại bỏ triệt để các hàm dịch bit toán học tiêu tốn nhiều chu kỳ máy (>> hoặc <<), rút ngắn thời gian dịch 1 byte dữ liệu từ $48\mu\text{s}$ xuống chỉ còn $16\mu\text{s}$.

  3. Cấu trúc module hóa phần cứng (Modular Master-Slave Architecture): Mạch hiển thị được thiết kế thành từng module Slave độc lập với cổng kết nối Header 8 chân tiêu chuẩn. Thiết kế này cho phép kỹ thuật viên dễ dàng tháo lắp, bảo trì, thay thế nóng hoặc mở rộng số lượng biển giá trên giá kệ mà không cần thiết kế lại bo mạch Master trung tâm.


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

Kịch bản ứng dụng thực tế

  • Hệ thống siêu thị và đại siêu thị: Lắp đặt dọc theo các kệ hàng thực phẩm, đồ gia dụng. Cho phép nhân viên trực phòng máy chủ thay đổi toàn bộ giá bán của hàng nghìn mặt hàng chỉ với 1 cú click chuột, loại bỏ hoàn toàn tình trạng "quên đổi giá" khi bắt đầu hoặc kết thúc các chương trình khuyến mãi.
  • Showroom điện thoại, mỹ phẩm cao cấp: Hiển thị thông số kỹ thuật ngắn gọn ở dòng 1 và đơn giá chi tiết ở dòng 2, mang lại phong cách phục vụ hiện đại, chuyên nghiệp.
[Phòng Máy Chủ / Thu Ngân] 
         |
    (Máy tính PC)
         |
    (Cổng COM / Bộ chuyển USB-to-RS232)
         |  Cáp trục chính RS-232 / RS-485
         v
+===================== KỆ HÀNG TRỤC 1 =====================+
|  [Master Module PIC16F877A]                                |
|         |                                                  |
|         +---> [Slave 1: Quầy Sữa] -> [Slave 2: Quầy Bánh]  |
|         +---> [Slave 3: Quầy Nước] -> [Slave 4: Quầy Mì]   |
+============================================================+

Phân tích hiệu quả kinh tế (Cost-Benefit Analysis & ROI)

  • Chi phí sản xuất phần cứng:
    • Vi điều khiển PIC16F877A: ~60.000 VNĐ
    • 5 IC 74HC595 + 1 IC MAX232: ~30.000 VNĐ
    • 5 Màn hình LCD1602: ~150.000 VNĐ
    • Linh kiện thụ động, PCB, nguồn: ~80.000 VNĐ
    • Tổng chi phí phần cứng cho 5 điểm hiển thị: ~320.000 VNĐ (tương đương 64.000 VNĐ / điểm hiển thị).
  • Hiệu quả thu hồi vốn (ROI): So với chi phí in ấn tem nhãn giấy bóng và chi phí nhân công kiểm kê thay tem nhãn tại một gian hàng tạp hóa quy mô vừa (ước tính 1.200.000 VNĐ/tháng), hệ thống mang lại điểm hòa vốn đầu tư trong vòng chưa đầy 3 tháng vận hành.

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

Hạn chế kỹ thuật

  • Chuẩn giao tiếp RS-232 có cấu trúc truyền tín hiệu không đối xứng (Single-ended), giới hạn khoảng cách truyền thông dưới 15 mét và dễ bị ảnh hưởng bởi can nhiễu công nghiệp trong môi trường nhà xưởng lớn.
  • Màn hình LCD1602 chỉ hỗ trợ bảng mã ký tự ASCII chuẩn; việc hiển thị tiếng Việt có dấu bị giới hạn trong 8 ký tự tự tạo (CGRAM - Custom Character Generator RAM).
  • Chưa tích hợp cơ chế phản hồi trạng thái từ từng Slave về Master (truyền thông một chiều Simplex).

Hướng phát triển tương lai

  1. Nâng cấp chuẩn truyền thông công nghiệp: Chuyển đổi từ giao diện RS-232 sang chuẩn vi sai RS-485 hai dây ($\text{Half-Duplex}$) sử dụng IC $\text{MAX485}$, cho phép kéo dài cự ly truyền thông lên tới 1.200 mét và kết nối mạng đa điểm (Multi-drop) lên tới 32 trạm Master/Slave.
  2. Không dây hóa hệ thống: Tích hợp module truyền thông không dây công suất thấp như ESP32, nRF24L01 hoặc chuẩn ZigBee/LoRa để hình thành mạng lưới nhãn giá điện tử ESL (Electronic Shelf Labels) không dây hoàn chỉnh.
  3. Nâng cấp công nghệ hiển thị: Thay thế màn hình tinh thể lỏng LCD1602 bằng màn hình giấy điện tử E-Paper Display (EPD) 3 màu (Đen - Trắng - Đỏ), giúp tiết kiệm 99% năng lượng tiêu thụ (chỉ tốn điện khi thay đổi nội dung, không tốn điện duy trì hiển thị) và có góc nhìn ngoài trời đạt $180^\circ$.

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

+---------------------------------------------------------------------------+
|                          ĐỐI TƯỢNG HƯỞNG LỢI                              |
+---------------------------------------------------------------------------+
| 🎓 Sinh viên Điện - Điện tử:                                             |
|    - Tài liệu mẫu về thiết kế hệ thống nhúng vi điều khiển PIC.           |
|    - Phương pháp quét IC ghi dịch 74HC595 và ngắt nối tiếp USART.        |
|---------------------------------------------------------------------------|
| 💻 Kỹ sư nhúng & Lập trình viên:                                         |
|    - Mẫu code tối ưu thanh ghi phần cứng trong C (CCS C Compiler).        |
|    - Thiết kế mạch in khử nhiễu nguồn và ổn định giao tiếp đường dài.     |
|---------------------------------------------------------------------------|
| 🏬 Doanh nghiệp bán lẻ & Siêu thị:                                        |
|    - Giải pháp tự động hóa niêm yết giá với chi phí cực thấp.             |
|    - Tiết kiệm 85% nhân lực vận hành và loại bỏ sai sót giá bán lẻ.       |
|---------------------------------------------------------------------------|
| 🔬 Nhà nghiên cứu & Giảng viên:                                           |
|    - Mô hình thực hành vi xử lý - vi điều khiển trực quan, sinh động.     |
+---------------------------------------------------------------------------+

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

1. Yêu cầu kỹ thuật phần cứng tối thiểu trên máy tính để kết nối và điều khiển hệ thống là gì?

Máy tính cần có cổng vật lý COM 9 chân (RS-232 DB9) hoặc sử dụng cáp chuyển đổi USB sang RS-232 (sử dụng chip PL2303 hoặc FTDI FT232). Phần mềm điều khiển tương thích với mọi hệ điều hành Windows từ Windows XP đến Windows 10/11, hỗ trợ phần mềm Terminal chuẩn (Hercules, Tera Term, Visual Basic GUI) với cấu hình cổng: 9600 Baud, 8 Data Bits, No Parity, 1 Stop Bit, No Flow Control.

2. Có thể mở rộng số lượng màn hình hiển thị lên 20 LCD mà không cần thay vi điều khiển không?

Hoàn toàn có thể. Do kiến trúc sử dụng IC ghi dịch 74HC595 ghép tầng, bạn chỉ cần nối chân $Q_7'$ của IC thứ 5 sang chân $\text{SER}$ của IC thứ 6 và tiếp tục nối tiếp cho đến IC thứ 20. Vi điều khiển vẫn giữ nguyên 6 chân điều khiển trên $\text{PORTB}$. Tuy nhiên, cần lưu ý hai điểm:

  • Mở rộng mảng lưu trữ ký tự trong RAM của PIC16F877A (cần quản lý vùng nhớ cẩn thận vì RAM của PIC16F877A là 368 Bytes).
  • Cần bổ sung đệm dòng (Buffer Driver như 74HC244) cho hai đường xung nhịp SCKRCK khi kéo dây dài tới 20 màn hình để tránh suy hao sụt áp tín hiệu xung.

3. Tại sao không nối trực tiếp chân vi điều khiển vào cổng COM máy tính mà phải qua IC MAX232?

Cổng COM máy tính hoạt động ở mức điện áp chuẩn RS-232 ($\pm 12\text{V}$), trong khi vi điều khiển PIC16F877A hoạt động ở mức điện áp TTL ($0\text{V}$ và $+5\text{V}$). Nếu nối trực tiếp:

  • Mức điện áp âm $-12\text{V}$ và dương $+12\text{V}$ từ máy tính sẽ ngay lập tức phá hủy các diode bảo vệ nội và làm cháy vi điều khiển.
  • Mức logic của RS-232 bị nghịch đảo so với TTL (RS-232: mức điện áp âm là Logic 1, mức điện áp dương là Logic 0). IC MAX232 đóng vai trò then chốt vừa cách ly/chuyển đổi mức áp an toàn, vừa đảo pha đúng chuẩn logic.

4. Hệ thống có bị mất dữ liệu hiển thị trên màn hình khi xảy ra sự cố mất điện không?

Các màn hình LCD1602 và thanh ghi dịch 74HC595 sử dụng bộ nhớ động/tĩnh phụ thuộc nguồn (Volatile), do đó nội dung hiển thị sẽ biến mất khi mất nguồn cung cấp $5\text{V}$. Tuy nhiên, khi có điện trở lại, người vận hành chỉ cần nhấn nút "Gửi dữ liệu" từ phần mềm máy tính trung tâm để nạp lại trạng thái hiển thị cho toàn bộ hệ thống trong chưa đầy 0.1 giây. Ngoài ra, có thể lập trình lưu trữ cấu hình giá vào bộ nhớ EEPROM nội của PIC16F877A để tự động khôi phục giá trị hiển thị ngay sau khi khởi động lại.

5. Chi phí bảo dưỡng và độ bền vận hành của hệ thống ra sao?

Các linh kiện sử dụng trong đề tài (PIC16F877A, 74HC595, LCD1602 dạng tinh thể lỏng đơn sắc) đều là linh kiện bán dẫn công nghiệp có độ bền rất cao, tuổi thọ hoạt động liên tục (MTBF) của đèn nền LED màn hình đạt trên 50,000 giờ (tương đương 5-7 năm sử dụng liên tục). Chi phí bảo dưỡng định kỳ gần như bằng 0, ngoại trừ việc vệ sinh bề mặt chống bụi bẩn bám trên màn hình hiển thị.


Kết luận

Đề tài "Thiết kế và thi công hệ thống báo giá trên nhiều LCD điều khiển bằng máy tính" đã giải quyết trọn vẹn và xuất sắc bài toán kỹ thuật ghép nối hiển thị phân tán trong lĩnh vực điện tử ứng dụng. Bằng việc kết hợp sáng tạo giữa vi điều khiển Microchip PIC16F877A, IC chuyển đổi mức MAX232 và mạng lưới IC ghi dịch ghép tầng 74HC595, hệ thống đã chứng minh được tính khả thi vượt trội: tiết kiệm tới 89% chân I/O, hoạt động ổn định với thời gian đáp ứng thời gian thực dưới 30ms, cùng chi phí chế tạo phần cứng chỉ bằng một phần nhỏ so với các hệ thống thương mại nhập khẩu.

Công trình không chỉ mang giá trị học thuật cao đối với sinh viên chuyên ngành Kỹ thuật Điện - Điện tử và Hệ thống Nhúng, mà còn mở ra tiềm năng thương mại hóa ứng dụng mạnh mẽ tại các chuỗi bán lẻ, showroom và nhà máy sản xuất hiện đại. Đây là nền tảng vững chắc để tiếp tục mở rộng phát triển thành mạng lưới nhãn giá điện tử thông minh không dây (Wireless ESL) tích hợp IoT và điện toán đám mây trong tương lai.