You are on page 1of 19

KHOA ĐIỆN-ĐIỆN TỬ

LỚP TBD TRONG CN &GTVT-K13

I. KHẢO SÁT TÍN HIỆU VÀO - RA LIÊN QUAN BÀI TOÁN


1. Tín hiệu analog:

Tín hiệu analog (tương tự) là loại tín hiệu có các giá trị biên độ
liên tục theo thời gian, thí dụ tín hiệu thoại analog.
Một dạng điển hình của tín hiệu analog là sóng hình sine, được
thể hiện dưới dạng:
S(t) = Asin (ωt + ϕ)
Trong đó: A là biên độ tín hiệu, ω là tần số góc (ω = 2πf, f là tần
số), ϕ là pha của tín hiệu.
Nếu tín hiệu là tập hợp của nhiều tần số thì ngoài các tham số
trên đây còn có một tham số khác, đó là dải tần của tín hiệu.

2. Tín hiệu xung:


Tín hiệu xung: tín hiệu xung là loại tín hiệu có các giá trị biên
độ là hàm rời rạc của thời gian. Điển hình của tín hiệu xung là
tín hiệu xung lấy mẫu tín hiệu analog dựa vào định lý lấy mẫu.

3. Tín hiệu số:

Hình: (a) Hệ thống và tín hiệu liên tục, (b) hệ thống và tín hiệu rời rạc

GHÉP NỐI MÁY TÍNH 1


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

Tín hiệu số cũng là loại tín hiệu có các giá trị biên độ là hàm rời
rạc của thời gian như tín hiệu xung. Tuy nhiên, khác với tín hiệu
xung ở chỗ biên độ của các xung bằng 0 hoặc 1, mặt khác tập
hợp của một nhóm xung đại diện cho một chữ số, hoặc một ký
tự nào đó. Mỗi một xung được gọi là một bit. Một vài loại tín
hiệu số điển hình như: tín hiệu 2 mức (0 và 1), còn có tên là tín
hiệu xung nhị phân hay tín hiệu xung đơn cực; và tín hiệu ba
mức (-1, 0 và +1), còn được gọi là tín hiệu xung tam phân hay
tín hiệu xung lưỡng cực.
Tín hiệu số là tín hiệu được lấy mẫu và lượng tử hóa. Lấy mẫu là quá trình biến
một tín hiệu tương tự thành một tín hiệu rời rạc theo thang thời gian. Định lí lấy
mẫu (Shannon-Nyquist) nói rằng muốn khôi phục một tín hiệu băng tần gốc liên
tục theo thời gian thì băng thông của tín hiệu ban đầu phải có giới hạn và tần số
lấy mẫu phải lớn hơn hai lần băng thông của tín hiệu ban đầu.
Lượng tử hóa là quá trình biến một tín hiệu có giá trị liên tục thành tín hiệu có
giá trị rời rạc
Những tín hiệu trong quá trình có thể được phân chia thành tín hiệu liên tục và
tín hiệu rời rạc. Mối quan hệ giữa tín hiệu vào và tín hiệu ra trong hệ thống
được mô tả bằng mô hình toán học. Hệ thống liên tục thường được mô tả bằng
những phương trình vi phân thường, và được sử dụng trong lý thuyết điều khiển
tuyến tính. Những hệ thống rời rạc thường được mô tả bằng phương trình sai
phân. Hệ thống và tín hiệu rời rạc thường được sử dụng trong lý thuyết điều
khiển số.
Trong hệ thống điều khiển số, người ta thường sử dụng bộ biến đổi liên tục-số
(analogue-to-digital converter, hoặc viết tắt là bộ A/D, A/D Converter) biến đổi
một tín hiệu liên tục y(t) sang tín hiệu số y(k). Tương tự tín hiệu rời rạc u(k)
trong bộ điều khiển số đi qua bộ biến đổi số-liên tục (digital-to-analogue
converter, hoặc viết tắt là bộ D/A, D/A Converter) sẽ được biến đổi thành tín
hiệu liên tục u(t).

4. Các tham số của tín hiệu:


•Mức điện tương đối:

Trong đó:
Px là công suất tín hiệu (mW) tại điểm cần xác định mức điện
P0 là công suất tín hiệu tại điểm tham khảo (mW).
• Mức điện tuyệt đối:

GHÉP NỐI MÁY TÍNH 2


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

L(dB)m= 0 dBm khi công suất tại điểm x bằng 1 mW


L(dBm) > 0 khi công suất tín hiệu tại điểm x lớn hơn 1 mW
L(dBm) < 0 khi công suất tín hiệu tại điểm x bé hơn 1 mW.

Tỷ số tín hiệu trên nhiễu

trong đó:
Ps, Vs, Is tương ứng là công suất, điện áp và dòng điện tín hiệu
Pn, Vn, In tương ứng là công suất, điện áp và dòng điện nhiễu

II. THIẾT KẾ HỆ THỐNG:


1. Phân tích đầu bài:
- Tín hiệu vào là tín hiệu analog, mức tín hiệu là 0-1V (theo yêu cầu đầu
bài), ngoài ra tín hiệu analog có thể là tín hiệu 1 chiều, xoay chiều, nhiệt độ, âm
thanh, áp suất hoặc độ ẩm….
- Mạch thiết kế yêu cầu cách li hoàn toàn, độ chính xác 1,5%.
- Tốc độ lấy mẫu: 1kSps
Lấy mẫu là quá trình biến một tín hiệu tương tự thành một tín hiệu rời rạc theo
thang thời gian. Định lí lấy mẫu (Shannon-Nyquist) nói rằng muốn khôi phục
một tín hiệu băng tần gốc liên tục theo thời gian thì băng thông của tín hiệu ban
đầu phải có giới hạn và tần số lấy mẫu phải lớn hơn hai lần băng thông của tín
hiệu ban đầu.
Tốc độ lấy mẫu sẽ quyết định có bao nhiêu mẫu được lấy trong một giây. Nếu
tốc độ lấy mẫu theo đề bài là 1kSps sẽ tương đương với 1000 mẫu/1s (không
phụ thuộc số bit) cho ta biết thời gian trích mẫu mỗi kênh là 100μs.

2. Nguyên lý mạch:
Mạch thu thập dữ liệu analog được sử dụng trong các thiết bị đo lường và điều
khiển số để biến đổi các tín hiệu analog thành tín hiệu số, nó là mạch nối ghép
giữa phần analog với phần số và máy tính. Trong các thiết bị đo lường và điều
khiển số đơn giản, mạch thu thập dữ liệu analog thực hiện luôn chức năng xử
lý, hiển thị và điều khiển tiếp theo, còn trong các hệ thống phức tạp hơn, các tín
hiệu tương tự sau khi đã được biến đổi thành số liệu và được xử lý sơ bộ ở

GHÉP NỐI MÁY TÍNH 3


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

mạch thu thập dữ liệu sẽ được chuyển vào máy tính hoặc thiết bị số khác để tiếp
tục xử lý.

3. Lựa chọn phương án thiết kế:


Phương án thiết kế phần cứng: Nhóm chúng tôi trình bày mạch thu thập dữ liệu
analog 2 kênh sử dụng bộ vi điều khiển đơn chíp 89C51 có thể nối ghép với
máy tính qua cổng số liệu song song 8 bit và cổng nối tiếp.
Với yêu cầu của bài toán đã cho với các chỉ tiêu của hệ thống Ta lựa chọn MCU
và thiết bị chuyển đổi sao cho đảm bảo được yêu cầu đầu ra nhưng phù hợp
nguyên tắc hạn chế tối đa số lượng và loại linh kiện ngoài..

a, Phương pháp phần cứng:


Trong mạch ta lựa chọn thiết kế phần cứng như sau:

- Thiết kế bộ nhớ:
Chọn 89C51 (U1) là bộ điều khiển trung tâm của mạch.Bên trong 89C51 tích
hợp sẵn 4 KB ROM (thuộc loại Flash memory) và 128 byte RAM. Trong đó
ROM dùng để chứa chương trình điều khiển và RAM để chứa dữ liệu. Bộ nhớ
này là khá nhỏ nhưng vẫn đáp ứng được các yêu cầu điều khiển. Tuy nhiên khi
ứng dụng đòi hỏi chương trình lớn hoặc dữ liệu nhiều thì bộ nhớ nội không đáp
ứng được. Khi đó 8951 cho phép mở rộng thêm bộ nhớ bên ngoài, có thể gắn
thêm tối đa 64 KB ROM và 64 KB RAM [1,2].
Trong thực tế khi thiết kế bộ nhớ, người ta thường căn cứ vào nhu cầu và linh
kiện có sẵn (hoặc thông dụng) để thiết kế. Để hệ thống tổng quát, đa năng, cấu
hình bộ nhớ cần thiết kế phải linh hoạt, cho phép cắm nhiều loại IC nhớ có
dung lượng khác nhau trên một đế cắm, không phân biệt ROM và RAM.
Trên thị trường hiện nay, đối với IC ROM có các loại thông dụng 8KB, 16 KB
và 32 KB, đối với RAM là 8 KB và 32 KB [3]. Các loại này có đều có 28 chân
và có sơ đồ khá giống nhau nên có thể cắm trên cùng một đế được.
Từ thực tế trên, bộ nhớ được thiết kế với 3 đế cắm IC nhớ, có thể cắm được các
IC nhớ
Cấu hình bộ nhớ trên được thực hiện bằng một mạch giải mã bộ nhớ và một bộ
Jumper chọn cấu hình.
Bộ nhớ này được bảo vệ bằng một mạch phát hiện mất điện. Ngay tại thời điểm
điện thế cung cấp vừa tụt xuống (trước khi CPU ngưng hoạt động), mạch này
phát hiện và khoá bộ nhớ lại, không cho CPU truy xuất nữa (để tránh trường
hợp CPU ghi nhầm vào bộ nhớ trong lúc quá độ do mất điện). Sau đó dòng điện
từ pin backup sẽ tiếp tục lưu giữ dữ liệu trong bộ nhớ cho đến khi có điện trở
lại.
89C51 cung cấp 32 ngõ vào/ra lập trình được (port P0, P1, P2 và P3). Tuy
nhiên khi mở rộng bộ nhớ ngoài, 16 ngõ của port P0 và P2 đã sử dụng cho bus

GHÉP NỐI MÁY TÍNH 4


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

địa chỉ và dữ liệu (đa hợp), 8 ngõ của port P3 được sử dụng cho mục đích khác
(ngắt, counter, port nối tiếp,…) [1,2]. Như vậy chỉ còn lại 8 ngõ vào/ra (P1)
dành để điều khiển thiết bị. Do đó nhất thiết phải mở rộng ngõ các ngõ vào/ra
để có thể điều khiển các hệ thống lớn.
Việc mở rộng phải thoả mãn điều kiện là có thể cắm thêm các các ngõ vào/ra dễ
dàng mà không làm thay đổi hệ thống. Để có thể thực hiện điều này, phương
pháp được lựa chọn là biến đổi song song thành nối tiếp (đối với ngõ vào) và từ
nối tiếp sang song song (đối với ngõ ra).
Board ngõ vào thực chất là một mạch ghi dịch vào song song ra nối tiếp. Trạng
thái các ngõ vào được chốt lại khi có tín hiệu Load tác động (mức 0). Sau đó tín
hiệu này trở lại mức cao để chuẩn bị dịch (Shift). Mỗi khi có 1 xung Ck thì một
bit được dịch vào MPC. Các bit ứng với trạng thái các ngõ vào sẽ được chuyển
thành song song bên trong MPC để xử lý. Mỗi board có 16 ngõ vào. Có thể mắc
nối tiếp các board lại để có nhiều ngõ vào hơn nữa.
Board ngõ ra gồm mạch ghi dịch vào nối tiếp ra song song, mạch chốt và mạch
buffer (driver). Dữ liệu cần xuất ra được đưa ra từng bit nối tiếp ứng với từng
xung Ck. Các bit này được dịch vào thanh ghi dịch và chuyển thành dữ liệu
song song. Khi thanh ghi dịch đã dịch xong tất cả các bit, tín hiệu chốt sẽ chốt
dữ liệu đó vào mạch chốt và đưa ra các ngõ ra qua mạch buffer. Mạch buffer
nâng dòng mỗi ngõ ra lên khoảng 350 mA với điện thế tối đa 70V DC để đủ
khả năng điều khiển các thiết bị. Mỗi board có 32 ngõ ra, có thể ghép nối tiếp
các board lại để có nhiều ngõ ra hơn nữa.
Với cách mở rộng ngõ vào/ra như trên, số lượng các ngõ vào/ra có thể mở rộng
không giới hạn. Tuy nhiên khi số lượng ngõ vào/ra quá nhiều thì tốc độ đọc và
xuất dữ liệu sẽ chậm hơn. Rất nhiều các ứng dụng điều khiển thực tế không cần
tốc độ nhanh lắm (ví dụ thao tác bấm nút - điều khiển thì việc chậm hơn vài
mili giây không thành vấn đề), do đó hệ thống vẫn đáp ứng tốt. Với những ứng
dụng đòi hỏi tốc độ nhanh thì có thể sử dụng port P1 (8 ngõ vào/ ra) để điều
khiển. Nếu không đủ, có thể mở rộng port theo kiểu vào/ra song song (ví dụ
dùng 8255- 3 port, hoặc đơn giản là sử dụng các mạch chốt 74535).

- Bộ ADC0809 bộ biến đổi tương tự số:


ADC0809 là một thiết bị CMOS vững chắc với bộ chuyển đổi 8-bit analog-to-
digital, bộ đa công 8-kênh và bộ vi xử lý tương thích điều khiển logic. Bộ
chuyển đổi 8-bit A/D sử dụng phép tính xấp xỉ liên tục theo kỹ thuật quá bộ
chuyển đổi. Bộ chuyển đổi nhiều tính năng ngắt điện trở kháng cao đã làm ổn
định bộ so sánh, bộ chia điện áp 256R với chuyển mạch analog hình cây và
thanh ghi phép tính xấp xỉ liên tục. Bộ đa công 8-kênh có thể trực tiếp truy cập
bất cứ các tín hiệu analog 8-single-ended nào.
Các tính năng:
 Dễ ghép nối với tất cả các bộ vi xử lý

GHÉP NỐI MÁY TÍNH 5


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

 Hoạt động ratio-metrically hoặc với 5 VDC hoặc mở


rộng tương tự điện áp đã điều chỉnh
 Không đòi hỏi hiệu chỉnh điểm giữa hoặc full-scale
(giữ đúng kích thước thực sự)
 8-channel bộ đa công có các địa chỉ logic
 Dải vào 0V tới 5V với bộ cung cấp năng lượng đơn lẻ
5V
 Các đầu vào thoả mãn điện áp mức chỉ định TTL Độ
kín tiêu chuẩn hoặc kiểu bao gói 28-pin DIP
 Bao gói chuyên chở chip kiểu đúc 28-pin
 ADC0808 tương đương với MM74C949
 ADC0809 tương đương với MM74C949-1
 Những đặc tính chủ chốt:
 Độ phân giải 8 Bits
 Tổng số lỗi không hiệu chỉnh ±1⁄2 LSB và ±1 LSB
 Nguồn cung cấp đơn lẻ 5 VDC
 Năng lượng thấp 15 mW
 Thời gian chuyển đổi 100 μs
- 74LS737 cổng ra số liệu song song 8bit;
- 74LS93 bộ đếm.
- MAX232 cổng trao đổi số liệu nối tiếp:
Máy tính được thiết kế theo chuẩn RS232 (được qui định năm 1960) ,
chuẩn này được qui định trước khi xuất hiện họ logic TTL (ra đời năm
1968 )nên mức điện áp của nó không tương thích với TTL:
Qui định của chuẩn RS232:
• “space”(logic 0) có trị số từ +3 đến +25v
• “mark”(logic 1) có trị số từ -3 đến -25v
• Miền giữa -3v đến +3 v không hợp lệ
• Dòng điện ngắn mạch không được vượt quá 500mA
Vì vậy ta phải có một mạch lái đường dây để chuyển đổi tín hiệu giữa
RS232 và TTL, thiết bị được sử dụng là MAX232, DS275,…

Bên cạnh đó còn có bàn phím số HEXA (KPI), các linh kiện bán dẫn, giắc kết
nối, bộ dao động thạch anh, màn hình tinh thể lỏng và các công tắc nguồn…

b, Phương pháp phần mềm giải quyết bài toán:


Trên phần cứng đã thiết kế, cần phải xây dựng một phần mềm điều khiển. Phần
mềm này hoạt động như một hệ điều hành, có chức năng download chương
trình người dùng (user program) và điều khiển việc thực hiện chương trình đó.

GHÉP NỐI MÁY TÍNH 6


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

Ngoài ra còn phải cung cấp các tiện ích cần thiết khác. Phần mềm có các tính
năng mạnh sau đây:
- Soạn thảo và biên dịch chương trình người dùng.
- Download chương trình đã biên dịch xuống hệ thống.
- Thực hiện chương trình đã download (liên tục).
- Thực hiện từng lệnh chương trình.
- Thực hiện từng khối chương trình.
- Hiển thị tất cả các thông tin: giá trị các thanh ghi, ô nhớ nội, ô nhớ ngoại,…
khi chạy từng bước (từng lệnh/ khối). Cho phép thay đổi nội dung thanh ghi
hoặc ô nhớ.
- Hiển thị nội dung bộ nhớ.
- Từ PC có thể reset (mềm) được hệ thống dù đang chạy bất cứ chương trình
nào.
- Có thể đặt chế độ tự động chạy user program mỗi khi bật điện (khi sử dụng
MPC để điều khiển hệ thống thực tế).
- Cung cấp các hàm/chương trình con tiện ích khác,…

Phần mềm được thiết kế gồm có hai phần: Phần chạy trên máy tính PC (được
viết bằng ngôn ngữ Visual Basic) và phần chạy trên hệ thống MPC(được viết
bằng ngôn ngữ Assembler của AT89C51). Hai phần này phải bắt tay nhau rất
chặt chẽ để bảo đảm không có bất kì lỗi nào xảy ra.
Phần mềm của mạch thu thập dữ liệu này có thể viết trên ngôn ngữ C hoặc
Assembler (mã ngữ), chúng tôi trình bầy chương trình mã ngữ.

III. THIẾT KẾ CHI TIẾT PHẦN CỨNG:

1. Sơ đồ khối:

GHÉP NỐI MÁY TÍNH 7


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

Sơ đồ ghép nối tổng quát

GHÉP NỐI MÁY TÍNH 8


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

2. giải thích nguyên lí hoạt động


của từng khối:
- Mạch thu thập tín hiệu:

Hình: Tín hiệu analog vào qua cổng (giắc) J1

Tín hiệu vào là tín hiệu analog, mức tín hiệu là 0-1V (theo yêu cầu đầu bài),
ngoài ra tín hiệu analog có thể là tín hiệu 1 chiều, xoay chiều, nhiệt độ, âm thanh, áp suất
hoặc độ ẩm…tín hiệu qua bộ biến đổi tương tự số ADC0809 (U3) và được nối tới
cổng PO của 89C51, Để ADC0809 làm việc cần phải đặt điện áp chuẩn Uref =
+5v đến chân REF+ và nối đất chân REF-, đồng thời phải đưa xung nhịp tới
chân CLK của nó. Xung nhịp cho ADC0809 được lấy từ chân ALE (30) của
89C51 rồi được chia 2 bởi bộ đếm 74LS93 (U5), nên nếu tần số thạch anh của
89C51 là 12MHz thì xung trên đầu ra ALE là 2MHz và xung nhịp của
ADC0809 là 1MHz. Các số liệu trích mẫu của 2 kênh analog được lưu giữ ở bộ
nhớ RAM trong của 89C51 và có thể lập trình cho 89C51 xử lý các số liệu đó
theo tính chất của từng loại tín hiệu tương tự và theo một số thuật toán xử lý số
tín hiệu đơn giản rồi hiển thị chúng lên LCD hoặc gửi tới máy tính hay thiết bị
số khác qua cổng ra số liệu song song hoặc cổng nối tiếp. Việc chuyển số liệu
qua cổng song song U2 đến máy tính có thể được thực hiện theo phương pháp
hỏi đáp hoặc dùng ngắt nhờ các tín hiệu báo số liệu ra đã sẵn sàng DR do

GHÉP NỐI MÁY TÍNH 9


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

89C51 tạo ra trên chân cổng P3.5 và tín hiệu báo đã nhận xong số liệu ACK do
máy tính đưa tới chân cổng INT0 (12) của 89C51 . Để nhận 1 byte số liệu từ
cổng ra số liệu song song U2, máy tính hoặc thiết bị số khác phải đưa tín
hiệu /RP tới chân OC của 74LS373 để điều khiển mở cổng U2 cho số liệu đến
chúng.

- Ghép nối máy tính và thiết bị ngoài:

Hình: cổng nối tiếp với máy tính hoặc thiết bị số khác qua giắc J2

Cổng ra số liệu song song 8 bit 74LS373 (U2) được nối tới cổng PO của 89C51,
Nối ghép cổng song song với máy tính hoặc thiết bị số khác được thực hiện qua
giắc J2, nối ghép cổng nối tiếp với máy tính hoặc thiết bị số khác được thực hiện
qua giắc J3. Các tín hiệu analog (tín hiệu tương tự) được đưa vào mạch qua giắc
J1 , 2 kênh tín hiệu analog đến từ đầu ra của các mạch biến đổi, tín hiệu tương tự
có giá trị 1V được đưa vào xử lý.

- Khối nhập dữ liệu:

GHÉP NỐI MÁY TÍNH 10


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

Hình: Bàn phím số nhập dữ liệu ngoài

Bàn phím số HEXA (KPI) được nối đến cổng P2 của 89C51. Bàn phím KPI và
LCD được sử dụng làm phương tiện giao tiếp giữa người với máy để thiết lập chế
độ làm việc và hiển thị các số liệu cần thiết.
Bàn phím số KP1 có16 phím, được tổ chức thành 4 hàng và 4 cột, nên mạch ra
của nó có 4 tín hiệu cột và 4 tín hiệu hang

- Hoạt động của bộ điều khiển trung tâm:

Hình: Vi mạch 89C51 (U1) là bộ điều khiển trung tâm của mạch

GHÉP NỐI MÁY TÍNH 11


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

Trong mạch thu thập dữ liệu analog này, bộ vi điều khiển 89C51 được thiết lập
để làm việc trong chế độ không dùng bộ nhớ ngoài, vì thế chân /EA (31) của
89C51 được nối với nguồn +5v. Ở chế độ này, tất cả 4 cổng P0 đến P3 của
89C51 đều được sử dụng làm cổng vào ra và chúng được nối tới các thiết bị
ngoại vi như đã nói ở trên.
Mạch RESET cứng của 89C51 được thực hiện trên các điện trở R1 , R2, tụ
điện C3 và phím ấn RESET. Khi bật nguồn, ban đầu tụ C3 coi như bị ngắn
mạch nên chân RESET (9) của 89C51 được giữ ở mức cao (>1,8v) trong
khoảng thời gian đủ cho 89C51 RESET mạch nội bộ, nghĩa là nó khởi tạo giá
trị ban đầu cho các thanh ghi chức năng đặc biệt SFR và đặt bộ đếm chương
trình PC trỏ đến địa chỉ 00h của bộ nhớ chương trình EEPROM bên trong
89C51. Do tụ C3 được nạp với hằng số thời gian t = c3.R1 = 0,1ms nên điện áp
trên chân RESET (9) của 89C51 giảm dần, khi điện áp trên chân 9 nhỏ hơn 0,5v
thì quá trình RESET kết thúc, CPU của 89C51 gọi lệnh chứa ở địa chỉ 00h của
bộ nhớ chương trình vào nó để thực hiện, 89C51 bắt đầu hoạt động theo chương
trình chứa ở EEPROM bên trong nó. Phím ấn RESET là để làm cho mạch chạy
lại từ đầu giống như khi bật nguồn mà không cần ngắt, bật nguồn. Khi ấn phím
RESET, tụ C3 bị ngắn mạch và phóng điện qua điện trở R2, do đó khi nhả phím
RESET trong mạch diễn ra quá trình giống như khi bật nguồn.
Cổng P2 của 89C51 được sử dụng để quét bàn phím nhằm phát hiện phím
được ấn và đọc mã phím đó vào 89C51, các chân cổng P2.0 đến P2.3 (21 ¸24)
để quét các cột, còn các chân cổng P2.4 đến P2.7 (25 ¸28) để quét các hàng của
bàn phím KP1. Việc quét bàn phím và đọc mã của phím ấn được thực hiện bởi
một chương trình con của phần mềm ở EEPROM của 89C51.
Cổng P0 của 89C51 vừa là cổng vào để nhận số liệu của ADC0809, vừa là
cổng ra để nạp số liệu cho LCD và cổng song song U2, ở mỗi thời điểm, phần
mềm điều khiển sẽ quyết định P0 chỉ phục vụ một trong các mạch ngoại vi trên.
Do P0 được sử dụng làm cổng ra nên cần treo các chân của nó lên mức cao
bằng điện trở băng R3 (8x10k) có một đầu chung được nối với nguồn +5v.
Cổng P1 của 89C51 được sử dụng để chọn mạch ngoại vi nối tới P0 và để
điều khiển bộ hiển thị tinh thể lỏng LCD và bộ biến đối tương tự số
ADC0809.Chân cổng P1.5 (6) của 89C51 là tín hiệu ra LPA tích cực mức cao
được đưa tới đầu vào IE của 74LS373 để cho phép nó chốt số liệu do 89C51 đa
ra trên cổng P0 để gửi tới máy tính hoặc thiết bị số khác. Chân cổng P1.6 (7)
của 89C51 là tín hiệu ra ELCD tích cực mức cao được đưa tới đầu vào EN của
LCD để cho phép LCD nhận các số liệu trên cổng P0 do 89C51 đưa ra để hiển
thị trên LCD . Chân cổng P1.7 (8) của 89C51 là tín hiệu ra RLCD tích cực mức
cao được đưa tới đầu vào RS của LCD để xóa số liệu đang đợc hiển thị trên
LCD. Các chân cổng P1.0, P1.1, P1.2 (1, 2, 3) của 89C51 là các tín hiệu ra
SA0, SA1, SA2 được đưa tới các chân A0, A1 , A2 của ADC0809 để chọn hai
trong tám kênh analog trên đầu vào của ADC0809 được trích mẫu. Chân cổng

GHÉP NỐI MÁY TÍNH 12


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

P1.3 (4) của 89C51 là tín hiệu ra STAR tích cực theo sườn xuống được đưa tới
các đầu vào START và ALE của ADC0809 để chốt các tín hiệu chọn kênh
analog và bắt đầu quá trình trích mẫu tín hiệu tương tự của kênh analog được
chọn. Sau xườn xuống của tín hiệu STAR, ADC0809 sẽ điều khiển tín hiệu ra
EOC của nó xuống mức thấp để báo bắt đầu quá trình trích mẫu với tốc độ trích
mẫu 1kSps, sau khoảng 100μs quá trình trích mẫu kết thúc, ADC0809 điều
khiển tín hiệu EOC lên mức cao để báo số liệu trên đầu ra của nó đã sẵn sàng,
tín hiệu này được đưa tới chân cổng INT1 (13) của 89C51. Sau khi nhận được
tín hiệu EOC ở mức cao, 89C51 sẽ đưa ra tín hiệu OUT mức cao ở chân cổng
P1.5 (6) để cho phép ADC0809 mở cổng số liệu ra của nó, số liệu này được
89C51 đọc vào ở cổng P0.
Như vậy, tại mỗi thời điểm, ADC0809 chỉ cho phép trích mẫu một kênh tín
hiệu analog do 89C51 chọn và bằng cách thay đổi các tín hiệu ra SA0, SA2,
SA3 từ giá trị 00h đến 01h, 89C51 điều khiển ADC0809 lần lượt trích mẫu cả
2 kênh tín hiệu tương tự. Thời gian trích mẫu của mỗi kênh là 100μs (theo đề
ra), do đó nếu 2 kênh analog đều làm việc thì chu kỳ trích mẫu nhỏ nhất của
mỗi kênh analog là khoảng 200μs, tương ứng tần số trích mẫu 400 Hz.

- Cổng trao đổi số liệu nối tiếp:

Hình: Cổng trao đổi số liệu nối tiếp MAX232

Cổng trao đổi số liệu nối tiếp MAX232 (U4) nối đến cổng P3 của 89C51

GHÉP NỐI MÁY TÍNH 13


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

Các cổng số liệu nối tiếp và song song là để chuyển số liệu cho máy tính hoặc
thiết bị số khác, ngoài ra cổng nối tiếp có thể nhận các lệnh điều khiển của máy
tính
Việc trao đổi sổ liệu nối tiếp với máy tính được thực hiện theo chuẩn
RS232 qua vi mạch MAX232 và giắc J3. Ở đây, các chân ra của J3 được thiết
kế để đảm bảo có thể nối thẳng các dây tương ứng đến giắc 9 chân của cổng
COM1 máy tính.

IV. THIẾT KẾ CHI TIẾT PHẦN MỀM:

Dữ liệu được truyền qua lại giữa PC và MPC thông qua cổng COM1 (hoặc
COM2). Tốc độ truyền dữ liệu được chọn là 9600bps, parity chẵn, bảo đảm
truyền rất ít lỗi với tốc độ tương đối nhanh.
Trong phạm vi của bài báo cáo chúng tôi xin giới thiệu phần mở đầu của
chương trình chính có lệnh gọi chương trình con để điều khiển việc trích mẫu 2
kênh tín hiệu tương tự rồi cất số liệu vào bộ nhớ RAM của 89C51 thành 2 mảng
riêng biệt cho 2 kênh, mỗi mảng dài 5 số liệu. Phần mở đầu của chương trình
mã ngữ thường phải khai báo các biến và cổng số liệu được sử dụng trong
chương trình, sau đó là khởi tạo điểm bắt đầu của chương trình khi RESET và
các vector ngắt bằng các chỉ dẫn ORG và các lệnh nhảy đến chương trình chính
và các chương trình con phục vụ ngắt. Chương trình chính bắt đầu từ địa chỉ
30h của bộ nhớ chương trình EEPROM. Đoạn đầu của chương trình chính là
khởi tạo đỉnh ngăn xếp, thiết lập các ngắt được sử dụng và mức ưu tiên cho các
ngắt đó. Việc trích mẫu và tạo các mảng số liệu của 2 kênh analog ở RAM
trong được thực hiện bởi chương trình con CONV do chương trình chính gọi
bằng lệnh ACALL.
Dưới đây là đoạn mở đầu của chương trình chính và chương trình con CONV.

;* * * * ** * * * * * * * ** **.* ** ** *** * ** * *
Chương trình điều khiển ADC0809 trích mẫu 2 kênh analog và cất số liệu
vào RAM trong ;

;* * * * * * * *** * * * ** ** ** * ** ** * ** ** **

; Khai báo tên và địa chỉ của các biến byte

BUFFEQU30h; Địa chỉ đầu vùng đệm cất số liệu ở RAM trong

TOP-SPEQU6fh; Đỉnh ngăn xếp khi khởi động

; Khai báo giá trị của các hằng số liệu tức thời

GHÉP NỐI MÁY TÍNH 14


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

LENGEQU5; độ dài mỗi mảng sổ liệu của một kênh

NUMBEQU 2; số kênh analog cần trích mẫu

; Khai báo tên và địa chỉ của các biến bít

SA0 BITP1.0; AO chọn cổng analog của ADC0809

SA1 BITP1.1; Ai chọn cổng analog của ADC0809

SA2BITP1.2; A2 chọn cổng analog của ADC0809

STARTBIT P1.3 ; Sườn xuống của START bắt đầu trích mẫu

OUT BIT P1.4 ; OUT="1" , Mở đệm ra của ADC0809 đến cổng P0

LATCH BIT P1.5 ; LATCH="1" , Chốt số liệu của cổng P0 vào U2

E-LCD BIT P1.6 ; E_LCD="1" , Chốt số liệu của cổng P0 vào LCD

C-LCDBIT P1.7 ; C_LCD="1" , Xóa bộ hiển thị LCD

EOC BIT P3.3 ; EOC="1" , Báo kết thúc trích mẫu (là ngắt INT1)

; Mã chương trình bắt đầu từ đây. Khởi tạo các vector ngắt INT0 và cổng nối
tiếp

ORG 00h ; Địa chỉ bắt đầu chương trình khi RESET

AJMP MAIN ; Nhảy đến điểm bắt đầu chương trình chính

ORG 03h ; Địa chỉ vector ngắt ngoài INT0

AJMP S_INTO ; Nhảy đến chương trình con xử lý ngắt INT0

ORG 23h ; Địa chỉ vector ngắt cổng nổi tiếp.

AJMP S_PORT ; Nhẩy đến chương trình con xử lý ngắt cổng nối tiếp

;* ** * * * * * * * *** * * *** * * * * * * * *** * *

GHÉP NỐI MÁY TÍNH 15


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

; Bắt đầu chương trình chính ;

;* * * * *** * * ** * * * * * * * *** * *** * * * * *

ORG 30h ; Điểm nhập của chương trình chính

MAIN:MOV SP,#TOP_SP ; Nạp đỉnh ngăn xếp là địa chỉ TOP_ SP ở RAM

MOV IE,#92h ; Cho phép các ngắt INT0 và cổng nối tiếp

MOV IP,#02h : Ngắt INT0 ở mức ưu tiên cao

MOV TCON,#01h ; Đặt INT0 tác động theo sườn xuống

MOV P2,#08h ; Xóa các bít cổng P2 bằng 0, riêng START= 1

REL0:ACALL CONV ; Gọi chương trình con trích mẫu 2 kênh analog

;........

; Tiếp theo là các lệnh xử lý và trao đổi số liệu

;......

NOP

AJMP REL0 ; Nhẩy về RELO để trích mẫu lấy số liệu

;......

; Hết chương trình chính, bắt đầu các chương trình con

;** * * *** * ** * * **** * * * * *** **** ** ** * * * *** *

; CONV: Chương trình con trích mẫu tín hiệu của 2 kênh analog và cất
số liệu thành 2 mảng ;

; Cho 2 kênh, mỗi mảng dài 5 byte bắt đầu từ địa chỉ BUFF ở RAM
trong của 89C51 ;

GHÉP NỐI MÁY TÍNH 16


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

; Sử dụng các thanh ghi: R0, R6, R7, B và thanh chứa A

;****** ******* ************ *** * ********* ** *

CONV:MOV R6,LENG ; Dùng R6 làm con đếm chỉ số mảng số liệu

MOV B,BUFF ; B chứa địa chỉ cất số liệu của kênh 0 (mảng 0)

MOV R7,#0 ; R7 giữ địa chỉ chọn kênh analog, từ kênh 0

CONI: MOV R0,B ; R0 là con trỏ để cất số liệu vào RAM trong

CON2: CLR SA0 ; Xoá SA0 = 0

CLR SA1 ; Xoá SA1 = 0

CLR SA2 ; Xoá SA2 = 0

MOV A,R7 ; Nạp địa chỉ chọn kênh analog vào A

ORL P1,A ; Gởi địa chỉ chọn kênh analog đến ADC0809

NOP ; Giữ chậm để địa chỉ ổn định

CLR START ; Sườn xuống của START kích bắt đầu trích mẫu

JB EOC,$ ; Đợi ADC0809 hạ EOC="0" báo bắt đầu trích mẫu

SETB START ; Trả START về mức cao: START="1

JNB EOC,$ ; Đợi EOC="1" báo kết thúc trích mẫu

SETB OUT ; OUT = 1, mở mạch ra ADC0809 tới cổng P0

NOP ; Giữ chậm cho số liệu ổn định trên BUS

MOV @R0,P0 ; Cất số liệu trích mẫu vào ô nhớ trỏ bởi R0

MOV A,R0 ; Gửi giá trị của R0 vào A:(A)="(R0)

ADD A,#LENG ; (A)="(A)+LENG" , địa chỉ cất số liệu của kênh sau

GHÉP NỐI MÁY TÍNH 17


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

MOV R0,A ; R0 trỏ đến ô nhớ cất số liệu của kênh tiếp theo

INCR7 ; Tâng địa chỉ chọn kênh analog đến kênh tiếp theo

CJNER7,#NUMB, CON2 ; (R7)<2, chia hết 2 kênh, về CONV2 làm tiếp

INCB ; (R7)="2," Tăng B đến ô nhớ tiếp theo của kênh 0

DJNZ R6,CON1 ; (R6)-1 ="(R6)>O," nhẩy về CONV1 lấy số liệu tiếp

RET (R6)="0," đã lấy đủ 2 mảng số liệu của hai kênh

; Còn các chương trình con khác nữa.

END ; Kết thúc chương trình

Sau khi điều khiển ADC0809 trích mẫu, chương trình này không sử dụng
ngắt mà quay vòng tại chỗ đợi tín hiệu báo kết thúc trích mẫu EOC của
ADC0809 lên cao thì đọc số liệu, chương trình như vậy đơn giản và dễ viết,
nhưng có nhược điểm lớn là không tận dụng được thời gian ADC trích mẫu
để làm việc khác. Thời gian ADC0809 trích một mẫu tín hiệu tương tự là 1
100μs, nếu dùng ngắt thì thời gian đó 89C51 có thể xử lý các số liệu đã nhận
được trước đó hoặc thực hiện trao đổi số liệu với máy tính.

V. KẾT LUẬN VÀ ĐỀ NGHỊ:

Mạch thu thập dữ liệu analog được sử dụng trong các thiết bị đo lường và điều
khiển số để biến đổi các tín hiệu analog thành tín hiệu số, nó là mạch nối ghép
giữa phần analog với phần số và máy tính. Trong các thiết bị đo lường và điều
khiển số đơn giản, mạch thu thập dữ liệu analog thực hiện luôn chức năng xử
lý, hiển thị và điều khiển tiếp theo, còn trong các hệ thống phức tạp hơn, các tín
hiệu tương tự sau khi đã được biến đổi thành số liệu và được xử lý sơ bộ ở
mạch thu thập dữ liệu sẽ được chuyển vào máy tính hoặc thiết bị số khác để tiếp
tục xử lý. Mạch ứng dụng rất rộng rãi trong công nghệ xử lí tín hiệu số, bước
đầu thu thập và chuyển đổi từ tín hiệu analog sang tín hiệu nhị phân. Chúng ta
có thể nâng cấp mạch thu thập dữ liệu analog đến 8 kênh và sử dụng bộ vi điều
khiển đơn chíp 89C51, hoặc dòng 89C52,53 nối ghép với máy tính qua cổng số
liệu song song 8 bit và cổng nối tiếp.

GHÉP NỐI MÁY TÍNH 18


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”
KHOA ĐIỆN-ĐIỆN TỬ
LỚP TBD TRONG CN &GTVT-K13

GHÉP NỐI MÁY TÍNH 19


“Thiết kế mạch thu nhận số liệu Analog 2 kênh”

You might also like