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

Kỹ thuật số bắt đầu được đưa vào ứng dụng thực tế từ đầu những năm thập niên 1960 ở phạm vi hẹp, sau đó đã phát triển mạnh mẽ và thâm nhập vào hầu hết các lĩnh vực đời sống, tiêu biểu như máy vi tính, máy đọc đĩa CD, VCD và hệ thống truyền hình số. Ưu điểm nổi bật của tín hiệu số là dải động rộng, độ chính xác cao và thuận tiện trong quá trình xử lý, lưu trữ thông tin. Tuy nhiên, các đại lượng vật lý trong thế giới thực và đời sống hàng ngày phần lớn tồn tại dưới dạng tín hiệu tương tự (analog), chẳng hạn như điện áp nguồn sinh hoạt, sóng phát thanh - truyền hình, tín hiệu thoại và âm thanh. Do đó, việc xây dựng các hệ thống thu thập dữ liệu đòi hỏi quá trình chuyển đổi tương tự sang số (A/D) để vi xử lý hoặc vi điều khiển tiếp nhận, xử lý; sau đó thực hiện chuyển đổi ngược lại từ số sang tương tự (D/A) để điều khiển, khống chế các thiết bị ngoại vi và cơ cấu chấp hành.

Đồ án tốt nghiệp "Ứng Dụng KIT 8051 Dùng Để Chuyển Đổi A/D và D/A" được thực hiện bởi sinh viên Nguyễn Vũ Anh Duy (lớp 95KDD, ngành Điện - Điện tử) dưới sự hướng dẫn của thầy Lê Thanh Đạo tại Bộ môn Điện tử, 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 vào tháng 03/2000).

Mục tiêu và nhiệm vụ nghiên cứu cụ thể được xác định trong văn bản gồm:

  1. Nghiên cứu nguyên lý kỹ thuật số, bản chất quá trình lượng tử hóa và mã hóa tín hiệu tương tự sang số (ADC) và từ số sang tương tự (DAC).
  2. Khảo sát cấu trúc và nguyên tắc hoạt động của các vi mạch chuyển đổi chuyên dụng gồm IC ADC0809 (bộ biến đổi A/D 8 kênh, độ phân giải 8 bit) và IC DAC0808 (bộ biến đổi D/A 8 bit dòng).
  3. Tìm hiểu kiến trúc phần cứng vi điều khiển họ MCS-51 (Intel 8051/8031), vi mạch giao tiếp ngoại vi song song lập trình được 8255A (PPI) và vi mạch điều khiển bàn phím/hiển thị 8279 trên KIT vi điều khiển 8051.
  4. Thiết kế và thi công phần cứng card mở rộng chuyển đổi A/D và D/A ghép nối với KIT thực hành vi điều khiển 8051 thông qua IC 8255A và mạch phối hợp trở kháng/khuếch đại đệm LM358.
  5. Xây dựng chương trình phần mềm bằng ngôn ngữ hợp ngữ (Assembly 8051) để điều khiển quét 8 kênh tín hiệu analog, thu thập dữ liệu số, chuyển đổi định dạng HEX sang BCD, giải mã hiển thị trên khối 8 LED 7 đoạn và xuất tín hiệu điều khiển ra bộ DAC.

Về phạm vi nghiên cứu, đề tài tập trung vào việc thiết kế mô hình chuyển đổi tín hiệu A/D và D/A cơ bản phục vụ mục đích học tập và thực nghiệm. Do vi điều khiển 8051 tại thời điểm năm 2000 chưa có trong chương trình giảng dạy chính khóa tại trường và thời gian thực hiện bị giới hạn trong 6 tuần, tác giả định hướng tự nghiên cứu lý thuyết vi điều khiển và triển khai thi công phần cứng thực tế trên KIT 8051 tần số 12 MHz với dải điện áp đo đơn cực từ 0V đến +5V.


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

Khung lý thuyết và mô hình kỹ thuật sử dụng

Cơ sở kỹ thuật của đồ án dựa trên các nguyên lý xử lý tín hiệu và cấu trúc phần cứng vi xử lý - vi điều khiển tiêu chuẩn:

  • Lý thuyết chuyển đổi A/D (Analog to Digital Conversion): Quá trình chuyển đổi tín hiệu liên tục thành các mức rời rạc thông qua hai bước lượng tử hóa và mã hóa. Kích thước bước lượng tử hóa ($Q$) tương ứng với trọng số bit thấp nhất (LSB) được xác định theo công thức: $$Q = \text{LSB} = \frac{V_{\text{FS}}}{2^N}$$ Trong đó $V_{\text{FS}}$ là điện áp toàn thang (Full Scale) và $N$ là số bit ngõ ra của bộ ADC. Độ chính xác của quá trình phụ thuộc vào độ ổn định của điện áp tham chiếu $V_{\text{ref}}$ và dải sai số lượng tử hóa lý thuyết là $\pm 1/2,\text{LSB}$. Đồ án phân tích chi tiết các kỹ thuật biến đổi A/D:

    • ADC điện áp tham chiếu dạng nấc thang: Sử dụng bộ đếm và DAC nội suy tăng từng nấc LSB.
    • ADC thăng bằng liên tục (Tracking/Servo ADC): Sử dụng bộ đếm thuận nghịch bám sát tín hiệu ngõ vào.
    • ADC hàm dốc tuyến tính (Tích phân một độ dốc): So sánh điện áp quét tuyến tính và đếm khoảng thời gian.
    • ADC xấp xỉ liên tiếp (Successive Approximation Register - SAR): Xác định từng bit từ MSB đến LSB qua $N$ chu kỳ xung clock, đạt tốc độ chuyển đổi cao và không phụ thuộc biên độ điện áp vào.
    • ADC tích phân hai độ dốc: Nạp và xả tích phân qua tụ, có khả năng khử nhiễu nguồn và độ ồn cao, thường ứng dụng cho các thiết bị đo chậm.
    • ADC biến đổi điện áp - tần số (V-F): Biến đổi áp thành chuỗi xung tần số tỉ lệ, thích hợp truyền dữ liệu xa trong môi trường công nghiệp nhiều nhiễu.
    • ADC song song (Flash ADC): Sử dụng $2^N - 1$ bộ so sánh đồng thời, tốc độ chuyển đổi cực nhanh (thời gian trễ 10–12 ns).
  • Lý thuyết chuyển đổi D/A (Digital to Analog Conversion): Nhận từ mã số nhị phân $N$ bit tại ngõ vào và tạo ra đại lượng dòng điện hoặc điện áp ngõ ra tỉ lệ với tín hiệu tham chiếu $V_{\text{ref}}$. Do các IC DAC thương mại (như DAC0808) thường xuất tín hiệu dòng điện $I_{\text{out}}$, mạch điện bắt buộc phải phối hợp thêm bộ khuếch đại thuật toán (OP-AMP) để chuyển đổi dòng thành điện áp (I-V converter).

  • Kiến trúc vi điều khiển Intel 8051 (MCS-51): Cấu trúc máy tính Harvard với không gian bộ nhớ chương trình (ROM) và bộ nhớ dữ liệu (RAM) tách biệt. Bộ nhớ nội gồm 128 bytes RAM (chứa 4 bank thanh ghi R0–R7 tại 00H–1FH, 128 bit định vị trực tiếp tại 20H–2FH, vùng RAM đa dụng tại 30H–7FH) và khối thanh ghi chức năng đặc biệt (SFR: ACC, B, PSW, SP, DPTR, P0–P3, TCON, TMOD, SCON, SBUF, IE, IP, PCON). Khả năng mở rộng bộ nhớ ngoài lên đến 64 KB ROM và 64 KB RAM thông qua việc phân kênh Bus dữ liệu/địa chỉ Port 0 (nhờ tín hiệu ALE) và Bus địa chỉ cao Port 2.

  • Vi mạch giao tiếp ngoại vi song song 8255A (PPI): Cung cấp 24 chân I/O chia thành 3 cổng (Port A, Port B, Port C). Hoạt động theo 3 chế độ: Mode 0 (nhập/xuất cơ bản không bắt tay), Mode 1 (nhập/xuất có bắt tay thông qua các tín hiệu điều khiển STB, IBF, INTR, OBF, ACK trên Port C), Mode 2 (nhập/xuất hai chiều có bắt tay trên Port A).

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

  • Phương pháp phân tích và tổng hợp lý thuyết: Thu thập, trích xuất và hệ thống hóa các tài liệu kỹ thuật, tập lệnh hợp ngữ MCS-51 và thông số kỹ thuật chuẩn từ nhà sản xuất (datasheet ADC0809 của National Semiconductor/Texas Instruments, DAC0808, 8255A, 8279).
  • Phương pháp thiết kế và thi công mạch phần cứng: Tính toán mạch định thời tạo xung clock bằng bộ đa hài Schmitt trigger TTL, thiết kế tầng đệm điện áp chuẩn sử dụng OP-AMP LM358, thiết kế mạch in (PCB) hai lớp cho card chuyển đổi A/D - D/A.
  • Phương pháp thiết kế phần mềm nhúng: Xây dựng lưu đồ thuật toán và viết chương trình điều khiển trực tiếp bằng ngôn ngữ Assembly 8051, sử dụng kỹ thuật ghép nối bộ nhớ chồng lấn (chân $\overline{\text{PSEN}}$ và $\overline{\text{RD}}$ qua cổng AND) để nạp và chạy trực tiếp chương trình trên RAM ngoài của KIT thực hành.

Thiết kế và triển khai

Thiết kế phần cứng hệ thống

Mô hình phần cứng của đề tài gồm hai phần chính: KIT vi điều khiển 8051 làm khối xử lý trung tâm và Card chuyển đổi A/D - D/A ghép nối mở rộng.

1. Cấu trúc phần cứng KIT vi điều khiển 8051

  • Vi xử lý trung tâm: Sử dụng vi điều khiển 8051/8951 của Intel hoạt động với thạch anh tần số $12,\text{MHz}$.
  • Tổ chức bộ nhớ:
    • Bộ nhớ EPROM (16 Kbytes): Gồm 2 IC 2764. EPROM 1 chứa chương trình hệ thống (địa chỉ $0000\text{H} - 1\text{FFF}\text{H}$); EPROM 2 thiết kế dạng socket để trống mở rộng (địa chỉ $2000\text{H} - 3\text{FFF}\text{H}$).
    • Bộ nhớ RAM (16 Kbytes): Gồm 2 IC 6264. RAM 1 (địa chỉ $4000\text{H} - 5\text{FFF}\text{H}$) và RAM 2 (địa chỉ $6000\text{H} - 7\text{FFF}\text{H}$), toàn bộ vùng RAM cho phép nạp và thực thi chương trình ứng dụng.
  • Khối giao tiếp ngoại vi 8255A: Trang bị 2 IC 8255A đưa ra đầu nối (connector) 64 chân với tổng cộng 48 đường I/O:
    • IC 8255-1: Port A ($8000\text{H}$), Port B ($8001\text{H}$), Port C ($8002\text{H}$), Thanh ghi điều khiển ($8003\text{H}$).
    • IC 8255-2: Port A ($\text{A}000\text{H}$), Port B ($\text{A}001\text{H}$), Port C ($\text{A}002\text{H}$), Thanh ghi điều khiển ($\text{A}003\text{H}$).
  • Khối điều khiển hiển thị và bàn phím 8279: Sử dụng IC 8279 giải mã quét bàn phím 26 phím ma trận và điều khiển 8 LED 7 đoạn Anode chung:
    • Địa chỉ $\text{C}000\text{H}$: Gởi dữ liệu hiển thị ra LED và đọc mã phím.
    • Địa chỉ $\text{C}001\text{H}$: Xuất từ điều khiển ra 8279 và đọc thanh ghi trạng thái.
    • Chương trình con quét phím hệ thống đặt tại địa chỉ $0223\text{H}$.

2. Card chuyển đổi A/D (ADC0809)

  • Thông số kỹ thuật ADC0809: Chế tạo bằng công nghệ CMOS, tích hợp bộ dồn kênh analog 8 kênh đơn cực, độ phân giải 8 bit, thời gian chuyển đổi $T_c \approx 100 - 128,\mu\text{s}$, dòng tiêu thụ $0.3,\text{mA}$, dải điện áp ngõ vào $0 - +5,\text{V}$.
  • Mạch tạo xung nhịp (Clock): Sử dụng cổng Schmitt trigger TTL mắc dạng đa hài RC tạo xung vuông tần số $f = \frac{0.7}{RC} \approx 700,\text{kHz}$ đưa vào chân CLK của ADC0809 (nằm trong dải hoạt động tiêu chuẩn $10,\text{kHz} - 1280,\text{kHz}$).
  • Mạch chuẩn điện áp $V_{\text{ref}+}$: Điốt zener $5.6,\text{V}$ kết hợp cầu phân áp (điện trở $1,\text{k}\Omega$, $2,\text{k}\Omega$, $10,\text{k}\Omega$ và biến trở VR $10,\text{k}\Omega$) qua mạch lặp điện áp dùng OP-AMP LM358 để cấp mức áp chuẩn chính xác $+5,\text{V}$ vào chân REF+, tạo bước lượng tử $\Delta V = \frac{5,\text{V}}{256} \approx 20,\text{mV}$.
  • Ghép nối với KIT 8051 qua IC 8255-1:
    • 8 đường dữ liệu ra $\text{D}_0 - \text{D}_7$ nối với Port A của 8255-1.
    • 3 chân chọn kênh địa chỉ $\text{A}_0, \text{A}_1, \text{A}_2$ nối với $\text{PB}_0, \text{PB}_1, \text{PB}_2$.
    • Chân START nối $\text{PB}_3$, chân ALE nối $\text{PB}_4$.
    • Chân OE (Output Enable) nối lên $V_{\text{CC}}$ (luôn cho phép đọc dữ liệu).
    • Chân báo kết thúc chuyển đổi EOC nối vào chân $\text{PC}_0$ (khi chuyển đổi xong $\text{EOC} = 1$).
    • Chân $\text{PC}_1$ nối qua điện trở kéo lên $1,\text{k}\Omega$ lên $+5,\text{V}$ kết hợp nút bấm tạo tín hiệu chuyển kênh thủ công.

3. Card chuyển đổi D/A (DAC0808)

  • Thông số kỹ thuật: Bộ chuyển đổi D/A 8 bit nguyên khối, nhận từ mã nhị phân $0 - 255$ và xuất dòng ngõ ra $I_{\text{out}}$ tỉ lệ theo dải $0 - 2,\text{mA}$.
  • Ghép nối: 8 đường ngõ vào số nối với Port A của IC 8255-2.
  • Mạch chuyển đổi I-V: Sử dụng biến trở tinh chỉnh VR $5,\text{k}\Omega$ và mạch khuếch đại thuật toán để chuyển đổi dải dòng $0 - 2,\text{mA}$ thành dải điện áp tương tự $0 - +5,\text{V}$.
Thành phần khối Vi mạch / Linh kiện chính Địa chỉ / Cổng giao tiếp Chức năng kỹ thuật
Xử lý trung tâm Intel 8051 / 8951 Thạch anh $12,\text{MHz}$ Thực thi chương trình, điều khiển quá trình lấy mẫu
Bộ nhớ hệ thống 2x 2764 (16KB) + 2x 6264 (16KB) $0000\text{H} - 7\text{FFF}\text{H}$ Lưu trữ phần mềm điều khiển và vùng đệm dữ liệu
Giao tiếp I/O 1 PPI 8255A-1 $8000\text{H} - 8003\text{H}$ Nhận dữ liệu ADC0809 (Port A) & điều khiển Start/Kênh (Port B, C)
Giao tiếp I/O 2 PPI 8255A-2 $\text{A}000\text{H} - \text{A}003\text{H}$ Xuất dữ liệu số 8-bit ra DAC0808 (Port A)
Bàn phím & LED Intel 8279 $\text{C}000\text{H} - \text{C}001\text{H}$ Quét 26 phím nhấn và điều khiển 8 LED 7 đoạn Anode chung
Khối ADC ADC0809 + LM358 + Schmitt trigger Port A, B, C (8255-1) Lấy mẫu 8 kênh analog, tốc độ clock $700,\text{kHz}$, dải $0 - 5,\text{V}$
Khối DAC DAC0808 + VR $5,\text{k}\Omega$ Port A (8255-2) Tái tạo điện áp analog $0 - 5,\text{V}$ từ dữ liệu nhị phân

Thiết kế phần mềm hệ thống

Phần mềm được viết bằng hợp ngữ ASM51, bắt đầu thực thi tại địa chỉ ô nhớ RAM $4000\text{H}$. Cấu trúc chương trình gồm chương trình chính và các chương trình con chuyên trách:

  • Chương trình chính (ORG 4000H): Khởi tạo IC 8255-1 ở Mode 0 bằng từ điều khiển $91\text{H}$ (Port A là ngõ vào, Port B là ngõ ra, Port C phần thấp là ngõ vào). Gán thanh ghi R7 để quản lý địa chỉ kênh quét ($0 - 7$). Vòng lặp chính tuần tự gọi: xóa màn hình (CLEAR), hiển thị số kênh (DISPLAY_1), kích hoạt và đọc ADC (CHU_DOI), xuất dữ liệu ra DAC (OUT), chuyển mã HEX sang BCD (HEX_BCD), giải mã LED 7 đoạn (DECODE), hiển thị giá trị đo (DISPLAY_2), tạo trễ (DELAY), sau đó kiểm tra phím bấm tại $\text{PC}_1$ để tăng R7 chuyển sang kênh tiếp theo.
  • Chương trình xóa vùng đệm (ORG 4880H - CLEAR): Sử dụng con trỏ dữ liệu DPTR và thanh ghi R0 ($80\text{H}$) để ghi giá trị $00\text{H}$ xóa sạch toàn bộ vùng nhớ từ $5000\text{H}$ đến $507\text{F}\text{H}$ trên RAM ngoài.
  • Chương trình chuyển đổi A/D (ORG 4500H - CHU_DOI): Nạp giá trị kênh từ R7 vào Port B, lần lượt xuất mức logic điều khiển chân ALE lên 1, chân START lên 1 để kích hoạt quá trình chuyển đổi, sau đó hạ ALE và START về 0. Đọc trạng thái chân $\text{PC}_0$ (EOC) tại địa chỉ Port C ($8002\text{H}$), dùng lệnh ANL A, #01H và JZ CTCI để tạo vòng lặp đợi tín hiệu EOC chuyển lên mức 1. Khi hoàn thành, chuyển con trỏ sang địa chỉ Port A ($8000\text{H}$) để đọc 8 bit dữ liệu đã chuyển đổi vào thanh ghi A.
  • Chương trình xuất D/A (ORG 4200H - OUT): Cất dữ liệu nhận được từ ADC vào R0, nạp từ điều khiển $80\text{H}$ vào thanh ghi điều khiển IC 8255-2 tại địa chỉ $\text{A}003\text{H}$ (cấu hình Port A là ngõ ra ở Mode 0), sau đó nạp lại dữ liệu từ R0 xuất thẳng ra Port A của 8255-2 tại địa chỉ $\text{A}000\text{H}$ để đưa vào DAC0808.
  • Chương trình chuyển đổi HEX sang BCD (ORG 4600H - HEX_BCD): Thực hiện liên tiếp các phép chia số học DIV AB cho 10 để tách số nhị phân 8-bit thành 3 chữ số BCD (hàng đơn vị, hàng chục, hàng trăm) và lưu lần lượt vào các ô nhớ ngoài $5008\text{H}$, $5009\text{H}$, $500\text{A}\text{H}$.
  • Chương trình giải mã LED 7 đoạn (ORG 4700H - DECODE): Truy xuất bảng mã 7 đoạn đặt tại vùng nhớ $0200\text{H}$ bằng lệnh MOVC A, @A+DPTR, chuyển đổi từng chữ số BCD thành mã điều khiển 7 đoạn tương ứng và ghi vào vùng đệm hiển thị.
  • Chương trình hiển thị LED qua 8279 (ORG 4100H & ORG 4800H): Xuất từ điều khiển $87\text{H}$ đến địa chỉ $\text{C}001\text{H}$ của IC 8279 và xuất tuần tự 8 byte dữ liệu từ ô nhớ $5000\text{H}$ ra địa chỉ $\text{C}000\text{H}$ để hiển thị số kênh và giá trị điện áp lên dàn LED 7 đoạn.
  • Chương trình trễ (ORG 488CH - DELAY): Vòng lặp định thời 3 tầng lồng nhau sử dụng các ô nhớ nội $7\text{D}\text{H} = 05\text{H}$, $7\text{F}\text{H} = 0\text{A}0\text{H}$, $7\text{E}\text{H} = 0\text{FF}\text{H}$ với lệnh giảm và nhảy DJNZ.

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

Phần I: Giới thiệu tổng quát

Chương I: Biến đổi tương tự - số và số - tương tự

Chương I trình bày cơ sở lý thuyết toàn diện về kỹ thuật biến đổi A/D và D/A. Phần A khảo sát quan hệ vào - ra, các thông số kỹ thuật then chốt của bộ ADC (bước lượng tử LSB, sai số lượng tử $\pm 1/2,\text{LSB}$, độ phân giải, độ chính xác, tín hiệu tham chiếu $V_{\text{ref}}$, tín hiệu điều khiển START, EOC, OE). Chương phân tích nguyên lý hoạt động, ưu nhược điểm của 7 kỹ thuật biến đổi ADC chính (nấc thang, thăng bằng liên tục, hàm dốc tuyến tính, SAR, tích phân 2 độ dốc, biến đổi V-F, biến đổi song song flash) và 3 phương thức giao tiếp phần mềm (Memory-Mapped, I/O Mapped, DMA). Phần B phân tích cấu trúc bộ DAC, mối quan hệ ngõ vào số - ngõ ra dòng/áp, cùng 3 phương pháp giao tiếp với vi xử lý (xuất dữ liệu tuần tự, ngắt ngoại vi, ngắt timer 8253).

Chương II: Giao tiếp ngoại vi 8255A

Khảo sát chi tiết kiến trúc IC ghép nối song song lập trình được 8255A (PPI). Trình bày cấu trúc khối đệm dữ liệu 8-bit, khối logic điều khiển đọc/ghi ($\overline{\text{CS}}, \overline{\text{RD}}, \overline{\text{WR}}, \text{A}_0, \text{A}_1$), cấu trúc 3 cổng Port A, Port B, Port C (chia thành 2 nhóm Group A và Group B). Phân tích cấu hình và bảng mã từ điều khiển ở 3 chế độ: Mode 0 (I/O cơ bản không bắt tay), Mode 1 (I/O có tín hiệu bắt tay STB, IBF, INTR, OBF, ACK) và Mode 2 (I/O hai chiều trên Port A). Phân tích chức năng thiết lập/xóa từng bit của Port C ($\text{D}_7 = 0$) và cơ chế đọc thanh ghi trạng thái Port C để kiểm tra thiết bị ngoại vi.

Chương III: Tổng quan về họ vi điều khiển MCS-51

Tổng thuật về lịch sử và đặc tính kỹ thuật họ vi điều khiển MCS-51 do Intel phát triển từ năm 1980. Bảng so sánh các thành viên tiêu biểu trong họ:

Vi điều khiển Vùng nhớ mã lệnh nội (Code ROM) Vùng dữ liệu nội (RAM) Số lượng Timer 16-bit
8051 4 KB ROM 128 Bytes 2
8031 0 KB (Không có ROM nội) 128 Bytes 2
8751 4 KB EPROM 128 Bytes 2
8052 8 KB ROM 256 Bytes 3
8032 0 KB 256 Bytes 3
8752 4 KB EPROM 256 Bytes 3

Chương đi sâu mô tả sơ đồ chân (40 chân DIP), cấu trúc 4 cổng I/O (Port 0 đến Port 3), các chân điều khiển chuyên dụng ($\overline{\text{PSEN}}, \overline{\text{EA}}, \text{ALE}, \text{RST}$), tổ chức không gian bộ nhớ Harvard, chi tiết các thanh ghi chức năng đặc biệt SFR (PSW, ACC, B, SP, DPTR, TCON, TMOD, SCON, SBUF, IE, IP, PCON), các chế độ tiết kiệm năng lượng (Idle Mode, Power Down Mode) và phương pháp giải mã phân kênh Bus mở rộng bộ nhớ ngoài lên $64,\text{KB}$ kết hợp mạch logic chống trùng lặp bộ nhớ.

Chương IV: Tóm tắt tập lệnh

Trình bày cấu trúc tập lệnh và 5 chế độ định vị dữ liệu của vi điều khiển 8051: định vị thanh ghi, định vị trực tiếp, định vị gián tiếp qua con trỏ (R0, R1, DPTR), định vị tức thời (#data), và định vị chỉ số (@A+DPTR, @A+PC). Phân loại các nhóm lệnh cơ bản gồm: nhóm lệnh chuyển dữ liệu (MOV, MOVX, MOVC, PUSH, POP), nhóm lệnh số học (ADD, SUBB, MUL, DIV, INC, DEC, DA A), nhóm lệnh logic (ANL, ORL, XRL, CLR, CPL, RL, RR), nhóm lệnh xử lý biến Boolean (thao tác trên từng bit), và nhóm lệnh rẽ nhánh/điều khiển chương trình (JC, JNC, JZ, JNZ, CJNE, DJNZ, LCALL, RET).

Chương V: Giới thiệu về KIT vi điều khiển 8051

Mô tả toàn diện KIT thực hành vi điều khiển 8051:

  • Bàn phím hệ thống gồm 26 phím (16 phím nhập dữ liệu Hex $0 - \text{F}$ và 10 phím chức năng: Q - Reset, S - Thay đổi địa chỉ, + - Tăng địa chỉ/lưu dữ liệu, - - Giảm địa chỉ, P - Chọn thực thi chương trình, R - Xem thanh ghi nội, I - Ngắt cứng hệ thống, T - Chạy từng bước lệnh Step-by-Step, G - Chạy toàn bộ chương trình).
  • Cấu trúc phần cứng trên bo: Thạch anh $12,\text{MHz}$, 2 IC EPROM 2764 ($16,\text{KB}$), 2 IC RAM 6264 ($16,\text{KB}$), 2 IC ngoại vi 8255A ($8000\text{H} - 8003\text{H}$ và $\text{A}000\text{H} - \text{A}003\text{H}$), IC điều khiển hiển thị/bàn phím 8279 ($\text{C}000\text{H} - \text{C}001\text{H}$).
  • Khối giải mã hiển thị 8 LED 7 đoạn Anode chung, định nghĩa bảng mã ký tự 7 đoạn và hai phương pháp xuất hiển thị qua 8279 (xuất tuần tự dịch chuyển và xuất trực tiếp đến từng vị trí LED).

Phần II: Thiết kế

Chương I: Thiết kế phần cứng

Trình bày chi tiết tính toán và thiết kế nguyên lý card chuyển đổi A/D - D/A ghép nối với KIT 8051. Thuyết minh nguyên lý hoạt động của khối ADC0809 (8 kênh analog ngõ vào, thời gian chuyển đổi $100,\mu\text{s}$, tạo xung clock $700,\text{kHz}$ bằng Schmitt trigger TTL, đệm điện áp chuẩn $+5,\text{V}$ bằng OP-AMP LM358), khối DAC0808 (biến đổi từ mã số từ Port A của 8255-2 thành dòng ngõ ra $0 - 2,\text{mA}$, chuyển đổi I-V thành áp $0 - 5,\text{V}$ nhờ VR $5,\text{k}\Omega$). Cung cấp bản vẽ sơ đồ nguyên lý tổng thể, sơ đồ bố trí linh kiện, và bản vẽ thiết kế mạch in (PCB layout) hai mặt lớp trên và lớp dưới.

Chương II: Thiết kế phần mềm

Xây dựng lưu đồ giải thuật chi tiết của chương trình chính và các chương trình con phục vụ quá trình chuyển đổi. Trình bày toàn bộ mã nguồn hợp ngữ ASM51 có chú thích chi tiết cho từng tác vụ: khởi tạo hệ thống, điều khiển quét kênh, kích hoạt ADC, kiểm tra cờ EOC qua cổng $\text{PC}_0$, xuất dữ liệu số sang DAC qua 8255-2, thuật toán chia lấy dư đổi HEX sang BCD, tra bảng mã LED 7 đoạn và điều khiển hiển thị 8 LED qua vi mạch 8279.


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

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

  • Thi công hoàn chỉnh phần cứng card mở rộng: Chế tạo thành công bo mạch in 2 lớp tích hợp IC ADC0809, DAC0808, OP-AMP LM358, biến trở tinh chỉnh và mạch tạo dao động clock $700,\text{kHz}$, kết nối trực tiếp với KIT vi điều khiển 8051 qua cáp bus 64 chân.
  • Hiện thực hóa chức năng chuyển đổi A/D đa kênh: Thu thập tín hiệu tương tự thành công trên 8 kênh ngõ vào độc lập với dải điện áp $0 - +5,\text{V}$, thời gian chuyển đổi đạt xấp xỉ $100 - 128,\mu\text{s}$, độ phân giải 8 bit tương ứng bước lượng tử xấp xỉ $20,\text{mV}$.
  • Hiện thực hóa chức năng chuyển đổi D/A: Tái tạo thành công tín hiệu điện áp tương tự ngõ ra dải $0 - +5,\text{V}$ từ dữ liệu nhị phân số thông qua IC DAC0808 và mạch chuyển đổi dòng - áp I-V.
  • Hoàn thiện gói phần mềm nhúng: Viết và thử nghiệm thành công toàn bộ chương trình điều khiển bằng hợp ngữ ASM51 (nạp tại địa chỉ $4000\text{H}$ trên RAM), thực hiện khép kín chu trình: quét kênh $\rightarrow$ lấy mẫu A/D $\rightarrow$ xuất D/A $\rightarrow$ chuyển đổi BCD $\rightarrow$ giải mã và hiển thị số kênh cùng giá trị đo trên dàn 8 LED 7 đoạn của KIT 8051.

Đóng góp của đề tài

  • Xây dựng thành công một module phần cứng thực nghiệm chuyển đổi A/D và D/A tương thích với chuẩn ghép nối của KIT vi điều khiển 8051, đóng góp thiết bị phục vụ công tác giảng dạy, học tập và thí nghiệm tại Bộ môn Điện tử.
  • Cung cấp tài liệu kỹ thuật chi tiết về phương pháp lập trình điều khiển vi mạch ghép nối ngoại vi 8255A, vi mạch quét phím/hiển thị 8279 và thuật toán chuyển đổi mã số (HEX-BCD, 7 đoạn) bằng ngôn ngữ hợp ngữ 8051.

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

Hạn chế của đồ án

  • Giới hạn thời gian và kiến trúc xử lý: Đồ án hoàn thành trong thời gian 6 tuần trong điều kiện tác giả tự học vi điều khiển 8051, do đó chỉ mới dừng lại ở việc thực hiện quá trình chuyển đổi A/D và D/A cơ bản trên tín hiệu điện áp một chiều (DC) biến thiên chậm, chưa thử nghiệm trên các nguồn tín hiệu xoay chiều hoặc âm thanh tần số cao.
  • Phương pháp kiểm tra tín hiệu: Phần mềm kiểm tra tín hiệu kết thúc chuyển đổi EOC bằng phương pháp quét vòng lặp (polling), gây chiếm dụng thời gian xử lý của CPU vi điều khiển trong suốt khoảng thời gian chuyển đổi $100,\mu\text{s}$.
  • Độ phân giải: Hệ thống sử dụng bộ chuyển đổi 8 bit (256 mức lượng tử), bước điện áp $20,\text{mV}$, phù hợp cho mục đích thí nghiệm cơ bản nhưng chưa đáp ứng được các ứng dụng đo lường công nghiệp đòi hỏi độ chính xác cao (12 bit hoặc 16 bit).

Hướng nghiên cứu tiếp

  • Tối ưu hóa bằng ngắt cứng: Chuyển đổi cơ chế đọc cờ EOC từ vòng lặp kiểm tra trạng thái sang việc kết nối trực tiếp chân EOC vào các chân ngắt ngoài ($\overline{\text{INT}_0}$ hoặc $\overline{\text{INT}_1}$) của vi điều khiển 8051, giúp giải phóng tài nguyên CPU để thực hiện các tác vụ xử lý khác trong khi ADC đang biến đổi.
  • Nâng cao độ phân giải và tốc độ: Nghiên cứu thay thế các IC ADC và DAC 8 bit bằng các dòng vi mạch có độ phân giải cao hơn (10 bit, 12 bit hoặc 16 bit) kết hợp các bộ tiền khuếch đại và lọc tích cực ngõ vào để đo lường các tín hiệu tương tự phức tạp.
  • Giao tiếp máy tính giám sát: Mở rộng chương trình phần mềm sử dụng cổng nối tiếp (UART) tích hợp sẵn trên vi điều khiển 8051 để truyền dữ liệu thu thập từ các kênh analog lên máy vi tính (PC), xây dựng giao diện hiển thị và lưu trữ dữ liệu thời gian thực.

Giá trị tham khảo

Đồ án là tài liệu tham khảo hữu ích cho sinh viên và kỹ sư thuộc các ngành Kỹ thuật Điện - Điện tử, Tự động hóa, Cơ điện tử và Kỹ thuật Máy tính. Các nội dung có giá trị ứng dụng và thực hành cao gồm:

  • Hệ thống hóa kiến trúc phần cứng vi điều khiển 8051: Cung cấp tài liệu tra cứu đầy đủ về tập lệnh MCS-51, các chế độ định vị, cấu trúc thanh ghi SFR, tổ chức bộ nhớ trong/ngoài và cơ chế phân kênh Bus dữ liệu/địa chỉ.
  • Kỹ thuật thiết kế mạch chuyển đổi A/D - D/A chuẩn: Cung cấp sơ đồ nguyên lý chuẩn xác, các công thức tính toán mạch định thời đa hài Schmitt trigger, mạch ổn định điện áp tham chiếu OP-AMP LM358 và mạch chuyển đổi I-V cho DAC0808.
  • Kỹ thuật lập trình ghép nối ngoại vi: Cung cấp các đoạn mã nguồn mẫu bằng hợp ngữ Assembly 8051 điều khiển IC ngoại vi song song 8255A, IC hiển thị 8279, thuật toán chia lấy dư đổi mã HEX sang BCD và thuật toán tra bảng giải mã LED 7 đoạn.

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

1. Hệ thống sử dụng các vi mạch chuyên dụng nào cho khối chuyển đổi tín hiệu A/D và D/A?
Khối chuyển đổi A/D sử dụng vi mạch ADC0809 (công nghệ CMOS, 8 kênh ngõ vào analog, độ phân giải 8 bit, thời gian chuyển đổi khoảng $100 - 128,\mu\text{s}$) phối hợp với bộ tạo xung clock $700,\text{kHz}$ dùng Schmitt trigger và tầng đệm áp chuẩn LM358. Khối chuyển đổi D/A sử dụng vi mạch DAC0808 (8 bit, ngõ ra dòng $0 - 2,\text{mA}$) kết hợp với mạch khuếch đại thuật toán và biến trở VR $5,\text{k}\Omega$ để tạo điện áp tương tự ngõ ra $0 - +5,\text{V}$.

2. Bản đồ địa chỉ bộ nhớ và các cổng ngoại vi trên KIT vi điều khiển 8051 được phân bổ như thế nào?
KIT vi điều khiển hoạt động với xung clock $12,\text{MHz}$, phân bổ địa chỉ như sau:

  • EPROM 1 (2764): $0000\text{H} - 1\text{FFF}\text{H}$; EPROM 2 (2764): $2000\text{H} - 3\text{FFF}\text{H}$.
  • RAM 1 (6264): $4000\text{H} - 5\text{FFF}\text{H}$; RAM 2 (6264): $6000\text{H} - 7\text{FFF}\text{H}$.
  • IC 8255-1 (giao tiếp ADC0809): Port A ($8000\text{H}$), Port B ($8001\text{H}$), Port C ($8002\text{H}$), Thanh ghi điều khiển ($8003\text{H}$).
  • IC 8255-2 (giao tiếp DAC0808): Port A ($\text{A}000\text{H}$), Port B ($\text{A}001\text{H}$), Port C ($\text{A}002\text{H}$), Thanh ghi điều khiển ($\text{A}003\text{H}$).
  • IC 8279 (quét phím/LED): Dữ liệu/Mã phím ($\text{C}000\text{H}$), Điều khiển/Trạng thái ($\text{C}001\text{H}$).

3. Vi điều khiển 8051 nhận biết quá trình chuyển đổi ADC hoàn thành bằng cách nào?
Chân báo kết thúc chuyển đổi (EOC) của IC ADC0809 được nối trực tiếp vào chân $\text{PC}_0$ của IC ngoại vi 8255-1. Trong chương trình con CHU_DOI (tại địa chỉ ORG 4500H), sau khi phát xung kích START, vi điều khiển liên tục đọc nội dung Port C tại địa chỉ $8002\text{H}$, thực hiện lệnh mặt nạ bit ANL A, #01H và kiểm tra bằng lệnh JZ CTCI. Vi điều khiển sẽ lặp lại quá trình kiểm tra cho đến khi chân EOC chuyển lên mức 1 (báo hiệu chuyển đổi xong) mới bắt đầu đọc 8 bit dữ liệu số từ Port A ($8000\text{H}$).

4. Tại sao cần thiết kế mạch logic cổng AND giữa tín hiệu $\overline{\text{PSEN}}$ và $\overline{\text{RD}}$ khi kết nối bộ nhớ RAM trên KIT 8051?
Do vi điều khiển 8051 phân biệt rõ ràng giữa tín hiệu đọc bộ nhớ chương trình ($\overline{\text{PSEN}}$) và tín hiệu đọc bộ nhớ dữ liệu ($\overline{\text{RD}}$), việc đưa hai tín hiệu này qua một cổng logic AND nối vào chân cho phép xuất ($\overline{\text{OE}}$) của IC RAM 6264 tạo ra sự chồng lắp giữa vùng nhớ mã lệnh và dữ liệu. Nhờ đó, người lập trình có thể vừa ghi chương trình vào RAM dưới dạng dữ liệu (dùng tín hiệu $\overline{\text{WR}}$), vừa cho phép vi điều khiển đọc và thực thi trực tiếp các lệnh từ chính vùng nhớ RAM đó như một bộ nhớ ROM.

5. Thuật toán chuyển đổi từ mã số nhị phân sang định dạng hiển thị LED 7 đoạn được thực hiện như thế nào trong mã nguồn?
Chương trình thực hiện qua hai bước:

  • Chuyển HEX sang BCD (ORG 4600H): Lấy giá trị nhị phân 8-bit chia liên tiếp cho 10 bằng lệnh DIV AB. Thương số và số dư được tách ra thành các chữ số BCD hàng trăm, hàng chục, hàng đơn vị và lưu lần lượt vào các ô nhớ RAM ngoài $500\text{A}\text{H}$, $5009\text{H}$, $5008\text{H}$.
  • Giải mã 7 đoạn (ORG 4700H): Lấy từng chữ số BCD làm độ dời địa chỉ, sử dụng lệnh MOVC A, @A+DPTR tra bảng mã LED 7 đoạn đặt tại địa chỉ $0200\text{H}$, sau đó xuất chuỗi mã giải mã hoàn chỉnh ra IC 8279 tại địa chỉ $\text{C}000\text{H}$ để hiển thị lên 8 LED.

Kết luận

Đồ án tốt nghiệp "Ứng Dụng KIT 8051 Dùng Để Chuyển Đổi A/D và D/A" của sinh viên Nguyễn Vũ Anh Duy đã hoàn thành toàn diện các mục tiêu nghiên cứu và thiết kế kỹ thuật đặt ra. Tác giả đã hệ thống hóa sâu sắc lý thuyết chuyển đổi tín hiệu tương tự - số, kiến trúc vi điều khiển Intel 8051 cùng các vi mạch ngoại vi chuẩn công nghiệp 8255A và 8279. Hệ thống phần cứng mở rộng sử dụng ADC0809 và DAC0808 kết hợp với phần mềm điều khiển viết bằng hợp ngữ Assembly 8051 đã vận hành chính xác, cho phép thu thập, xử lý tín hiệu analog 8 kênh và tái tạo điện áp điều khiển tương tự với độ phân giải 8 bit, mang lại giá trị thực nghiệm và ứng dụng đào tạo chuyên ngành Điện tử - Vi xử lý.