You are on page 1of 52

Trong quá trình đo các thông số của các thí nghiệm vật lý, hoá học hay sinh

học,... (các đại


lượng trong tự nhiên), Người ta thường biến đổi các đại lượng không điện thành các đại
lượng điện nhờ các bộ cảm biến (sensor) để tận dụng được các tính năng ưu việt của các tín
hiệu điện ( phát, truyền, thu nhận và xử lý một cách thuận tiện). Các tín hiệu từ bộ cảm
biến ( đặc trưng cho thông tin) được truyền vào các bộ thu thập thông tin rồi được mã hoá
và truyền qua kênh thông tin, sau đó được thu nhận lại, giải mã và xử lý để tái tạo lại các
dạng tín hiệu gốc cung cấp các thông tin về diễn biến của hiện tượng cần đo. Quá trình biến
đổi, mã hoá, truyền tin lại bị ảnh hưởng của các phần tử nhiễu (tạp âm) từ môi trường ảnh
hưởng làm tín hiệu kém trung thực. Do đó quá trình xử lý tín hiệu cần thiết để khôi phục lại
dạng gần nhất của tín hiệu gốc ban đầu.

MỞ ĐẦU : HỆ ĐO VÀ ĐIỀU KHIỂN

1/ TÍN HIỆU :
Trong quá trình đo các thông số của các thí nghiệm vật lý, hoá học hay sinh học,... (các đại
lượng trong tự nhiên), Người ta thường biến đổi các đại lượng không điện thành các đại lượng
điện nhờ các bộ cảm biến (sensor) để tận dụng được các tính năng ưu việt của các tín hiệu điện (
phát, truyền, thu nhận và xử lý một cách thuận tiện). Các tín hiệu từ bộ cảm biến ( đặc trưng cho
thông tin) được truyền vào các bộ thu thập thông tin rồi được mã hoá và truyền qua kênh thông
tin, sau đó được thu nhận lại, giải mã và xử lý để tái tạo lại các dạng tín hiệu gốc cung cấp các
thông tin về diễn biến của hiện tượng cần đo. Quá trình biến đổi, mã hoá, truyền tin lại bị ảnh
hưởng của các phần tử nhiễu (tạp âm) từ môi trường ảnh hưởng làm tín hiệu kém trung thực. Do
đó quá trình xử lý tín hiệu cần thiết để khôi phục lại dạng gần nhất của tín hiệu gốc ban đầu.

Trước đây các tín hiệu thường được xử lý bằng kỹ thuật tương tự (analog). Nhưng ngày nay việc
phát triển của các máy tính cá nhân (PC) khiến cho việc áp dụng các kỹ thuật xử lý tín hiệu số
ngày càng được sử dụng rộng rãi.(DSP). Kỹ thuật xử lý số cho phép thực hiện những công việc
xử lý phức tạp nhất mà vẫn đảm bảo được tính mềm dẻo cao nhất (điều mà kỹ thuật xử lý tín
hiệu tương tự không thể làm được).

Tín hiệu : Là biểu hiện vật lý của thông tin (information). các thông tin xuất hiện từ một quá
trình nào đó trong tự nhiên. Các thông số của tín hiệu có thể thay đổi theo thời gian và nhiều đại
lượng khác.

Tín hiệu có thể là các đại lượng vật lý không điện ( áp suất, nhiệt độ, độ sáng, từ thông, độ pH)
và cũng có thể là các đại lượng điện ( hiệu thế mV ở hai đầu cặp nhiệt điện,... ). Nhưng để thực
hiện được các kỹ thuật xử lý số người ta phải biến đổi tín hiệu từ các đại lượng không điện thành
các đại lượng điện trong khi tiến hành quá trình đo. vì thế ở đây ta coi rằng tín hiệu là tín hiệu
điện.

14
Tín hiệu liên tục : Là tín hiệu mà sự thay đổi của nó theo thời gian và biên độ là liên tục
Tín hiệu rời rạc : Là tín hiệu mà biên độ của nó chỉ xác định trong những khoảng thời gian xác
định.

Các tín hiệu tác dụng vào đầu vào và đầu ra của thiết bị đo tuỳ thuộc vào đặc tính của tín hiệu
mà có thể chia thành bốn loại như sau :

- Tín hiệu tương tự (analog signal) : Là tín hiệu liên tục cả về biên độ lẫn thời gian.
- Tín hiệu được lượng tử hoá (Quantified Signal) : Là tín hiệu liên tục theo thời gian nhưng
biên độ được lượng tử hoá.
- Tín hiệu rời rạc (Discrete Time Signal) : Là tín hiệu được lấy rời rạc theo thời gian nhưng
biên độ vẫn giữ liên tục. Hàm tín hiệu chỉ có giá trị xác định ở những thời điểm xác định. Ta có
thể thu nhận được tín hiệu rời rạc bằng cách lấy mẫu tín hiệu tương tự (sampling). Vì vậy tín
hiệu rời rạc còn được gọi là tín hiệu được lấy mẫu (sampled signal).
- Tín hiệu số (Digital Signal) : Là tín hiệu lấy rời rạc theo thời gian và biên độ cũng được lượng
tử hoá.

1.2/ CÁC HỆ ĐO VÀ ĐIỀU KHIỂN


Khi nối máy tính với một hệ thống đo, điều khiển hay với một thí nghiệm vật lý, hoá học cần
biến đổi các tín hiệu lối ra của các bộ cảm biến cho phù hợp với lối vào máy tính. Các quá trình
chuyển đổi điện áp tương tự thành tín hiệu số yêu cầu các bộ chuyển đổi tương tự số (AD). Bước
tiếp theo thường liên quan đến việc điều kiện hoá các tín hiệu sinh ra bởi cảm biến. Máy tính
cũng có thể thực hiện chức năng điều khiển. Theo nghĩa của hai chức năng này ( đo và điều
khiển), máy tính có thể tham gia (tương tác) với một tiến trình nào đó : Bằng việc lập trình chính

15
xác, máy tính có thể điều khiển một tiến trình trên cơ sở thu nhận và xử lý các tín hiệu phản hồi
từ tiến trình đó.

Ngày nay có thể sử dụng các thiết bị khác nhau cho mục đích này :
- Thiết bị ghép nối theo giao diện RS 232
- Các board thu thập số liệu cắm thêm
- Thiết bị giao diện IEEE-488
- Thiết bị VXI
Với các ứng dụng khác nhau các thiết bị ghép nối khác nhau được sử dụng, tất nhiên là cũng có
sự khác biệt về đặc tính và giá thành giữa các thiết bị khác nhau.
Các thiết bị đơn giản như cặp nhiệt điện, đồng hồ đo tốc độ, thiết bị tự ghi dữ liệu có thể được
thực hiện qua ghép nối RS-232. Chuẩn ghép nối nối tiếp này được sử dụng khi cần
nối thiết bị ngoại vi với máy tính qua một khoảng cách dài. Ghép nối nối tiếp truyền dữ liệu từng
bít một qua một đường dây tín hiệu tới một máy tính khác. Do đầu cắm RS-232 hầu như là
chuẩn cho tất cả các máy tính PC vì vậy không cần thêm các phần cứng bổ xung. Về nguồn gốc,
RS-232 được thiết kế để nối các máy tính (hay thiết bị đầu cuối) với các MODEM ( nối với
đường điện thoại).
Cuộc cách mạng các bộ chuyển đổi tương tự số và các thiết bị điều kiện hoá tín hiệu khiến
cho các board thu thập dữ liệu cắm thêm trở nên phổ biến. Giả sử với yêu cầu đo với giải
điện áp từ -5v đến +5V độ chính xác yêu cầu là không lớn hơn 1 : Board thu thập dữ liệu
2048 bít là một sự lựa chọn tự nhiên. Trên một board thường tích hợp nhiều chức năng :
chuyển đổi AD, chuyển đổi DA, vào ra I/O, các hoạt động đếm, định thời gian. Các board
thu thập dữ liệu cắm thêm cung cấp nhiều khả năng mềm dẻo hơn so với một thiết bị đơn
độc.

Giao diện ghép nối IEEE- 488 còn được biết đến như GPIB (Bus ghép nối mục đích chung)
thiết kế cho việc sử dụng với các ứng dụng đòi hỏi tốc độ truyền dữ liệu cao (cỡ
1MByte/giây). IEEE – 488 định nghĩa cả các liên kết phần cứng lẫn giao thức lệnh để kết nối
thiết bị. Đa số các thiết bị như các giao động ký nhớ và các máy phát chức năng đều có
giao diện IEEE-488 đi kèm.

BUS VXI ra đời năm 1987, là một mặt bằng phát triển cho các ứng dụng thời gian thực tốc
độ cao. Một trong các phương án khả thi là các máy tính nhúng trong các khung VXI
(frame). CPU, thiết bị đo và bộ nhớ cũng tích hợp luôn trong các khung VXI và ghép nối
trực tiếp qua các BUS VXI 32 bít. Tốc độ truyền dữ liệu cực đại cỡ 20MByte / giây.

Để liên lạc giữa các máy tính và thiết bị ngoại vi người ta thực hiện các nghi thức móc nối
(handshaking).

Nhằm mục đích hỗ trợ cho việc điều kiện hoá tín hiệu , các thiết bị đặc biệt (gọi là front-
end) được sử dụng kết hợp với các board thu thập dữ liệu nhằm cách ly máy tính với thiết bị
đo (về mặt điện để tránh hỏng hóc). Các thiết bị front-end này thường sẵn có nguồn cung
cấp, bộ khuyếch đại ( hai bộ khuyếch đại với các lối vào vi sai ) và các bộ lọc thấp ( hai bộ).
Nhiều đầu nối 2mm nối với card ghép nối.

Trong các kết nối song song hai chiều giữa thiết bị đo và máy tính. Các máy tính thông
thường không có sẵn các cổng kết nối song song như vậy. Tuy nhiên người ta có thể sử
dụng các bộ tiếp hợp riêng trên các khe cắm mở rộng,Ví dụ như các board ghép nối

16
UIA/UIB thực hiện các kênh I/O hai chiều, chuyển đổi AD và một vài chức năng bổ xung
khác. ( phòng thí nghiệm máy tính – Trung tâm ITIMS)

Card ghép nối UIA/UIB hỗ trợ nhiều khả năng đo, nó có bốn lối vào tín hiệu tương tự.

Các bộ chuyển đổi tương tự / số nối liền khoảng cách giữa thế giới tín hiệu số và tương tự.
Một hệ thống tương tự / số điển hình lối vào hệ thống nhận các kích thích vật lý, hoá học
hay sinh học; bộ chuyển đổi chuyển những tín hiệu này ra dạng tín hiệu điện tương tự
(sensor áp suất, nhiệt độ, ánh sáng ...). các tín hiệu được sinh ra do bộ chuyển dổi thường
tương đối nhỏ và cần được khuyếch đại lên ( đến mức điện áp yêu cầu ) trước khi được
chuyển đổi sang dạng tín hiệu số tương đương. Các giá trị số đại diện cho tín hiệu sau đó sẽ
được các máy tính hay bộ vi xử lý lưu trữ hay xử lý rồi được tái tạo lại thành các tín hiệu
điện nhờ bộ chuyển đổi số / tương tự DAC.

2/ CÁC HỆ THU THẬP DỮ LIỆU (DATA AQUISITION)

2.1/ CHUYỂN ĐỔI TÍN HIỆU TƯƠNG TỰ THÀNH TÍN HIỆU SỐ


Các bộ chuyển đổi ADC ( tương tự / số ) nối liền khoảng cách giữa thế giới tín hiệu số và tương
tự. Hình vẽ dưới đây biểu diễn một hệ thống tương tự / số điển hình. Lối vào hệ thống nhận các
kích thích vật lý, hoá học hay sinh học; bộ chuyển đổi chuyển những tín hiệu này ra dạng tín
hiệu điện tương tự ( sensor áp suất, nhiệt độ, ánh sáng ...). các tín hiệu được sinh ra do bộ
chuyển dổi thường tương đối nhỏ và cần được khuyếch đại lên ( đến mức điện áp yêu cầu ) trước
khi chuyển sang dạng tín hiệu số tương đương. Bộ chuyển đổi tương tự / số (ADC ) chuyển tín
hiệu dạng tương tự này thành tín hiệu dạng số. Máy tính hay bộ vi xử lý sau đó sẽ cất hay xử lý
các giá trị số này để tạo ra các tín hiệu điện qua bộ chuyển đổi số / tương tự DAC. Lưu ý rằng tất
cả các hệ thống tương tự / số không nhất thiết phải có cả các lỗi vào và các lối ra. Nó có thể chỉ
có các lối vào tương tự hoặc các lối ra tương tự.

17
Máy tính số : Là một thiết bị thu thập và xử lý tín hiệu số, trong khi các tín hiệu đo từ các quá
trình gồm cả tín hiệu tương tự. Vì vậy sơ đồ khối đầy đủ của việc xử lý tín hiệu bằng tính số
trong các thực nghiệm như sau :

Tín hiệu tương tự từ thực nghiệm đưa vào bộ lọc thông thấp LF1, được lấy mẫu qua bộ trích và
giữ mẫu S&H (sample and hold) thành tín hiệu rời rạc. Sau đó được đưa qua bộ biến đổi tương
tự số ADC (Analog – digital-converter) để thành tín hiệu số và đưa vào máy tính PC để xử lý.
Tín hiệu số sau khi đã xử lý được biến đổi trở lại thành tín hiệu tương tự qua bộ biến đổi số
tương tự DAC (Digital-analog-converter) rồi lại đưa qua bộ lọc thông thấp LF2 để thành tín hiệu
lối ra. Tác dụng của hai bộ lọc thấp LF1 và LF2 sẽ được nói rõ sau. Tuy nhiên tín hiệu số khi
đưa vào máy tính xử lý không nhất thiết phải lấy ra từ ADC mà có thể được lấy trực tiếp từ các
quá trình số khác. Cũng như vậy, tín hiệu số sau khi xử lý không bắt buộc phải qua bộ biến đổi
DAC để chuyển đổi lại thành tín hiệu tương tự mà có thể được lấy ra ngay để điều khiển các quá
trình số khác.

Hình vẽ - Hệ thống tương tự-số

Thiết bị chuyển đổi những tín hiệu tương tự biến đổi liên tục từ các thiết bị theo dõi các điều
kiện như sự chuyển động, nhiệt độ, cường độ sáng, âm thanh ...thành các số nhị phân dùng trong
máy tính. Có thể là một chip đơn hay một mạch điện thiết kế cùng một chíp gọi là bộ chuyển đổi
tương tự số (Analog Digital Converter).

Vai trò của các bộ chuyển đổi là chuyển dạng này của năng lượng ( ánh sáng, nhiệt độ ... ) ra
thành các dạng khác ( tín hiệu điện ).

18
Điều khiển là một vai trò quan trọng trong ghép nối máy tính với ngoại vi, việc điều thể hiện ở
khả năng lập trình mềm dẻo các câu lệnh máy tính để hệ thống tự động làm những công việc
nhất định (mà không có sự can thiệp của con người). Cùng với hệ thu thập dữ liệu, hệ xử lý, điều
khiển hệ thống là thành phần cốt lõi của các robot điều khiển tự động công nghiệp.

3/ ĐIỀU KHIỂN HỆ THỐNG:

3.1.1/ VÀO RA SONG SONG


Hệ thống đo và điều khiển :
Điều hoàn không khí :
- Bật tắt lò sưởi trung tâm (bật/ tắt)
- Nồi đun (bật/tắt)
- Quạt (bật/tắt)
- Airgrid ( mở/đóng )
- Tưới nước (bật/tắt)
- Mở cửa sổ (mở/đóng)
- Dò phương (có/không)
Các quá trình tiếp diễn
- Nhiệt độ tới hạn
- áp suất tới hạn
- Nồng độ cồn tới hạn
Thang máy
- Chuyển động (lên/xuống)
- Gọi từ trong ra (lên/xuống)
- Gọi từ ngoài vào (lên/xuống)
- Đếm đến giá trị 0 (có/không)
- Cửa thang máy (mở/đóng)
- Hãm khẩn cấp
- Chuông (bật / tắt )
Cũng có thể xét tới các hệ thống điều khiển cho đèn giao thông, thiết bị gia đình như máy
giặt, máy rửa chén, đun nước sôi, lò nướng, lò sưởi ...

3.1.2/ ĐIỀU KHIỂN SỐ


Lưu ý khi sử dụng chức năng điều khiển với máy tính:
- Lối ra chỉ có thể điều khiển lối vào tương tích TTL
- Nguồn cung cấp 5 V trên cáp chỉ chịu được cỡ 100mA (UIA) – 200mA(UIB)
Nói chung các lối ra này nên được dùng để mở đóng một transitor điều khiển một rơler.
Hình vẽ đèn LED sẽ bật sáng khi transitor dẫn điện.
Ví dụ điều khiển là :
Đèn (bật/tắt)

19
điều khiển motor của hệ thống sưởi trung tâm (bật/tắt)
Quạt (bật/tắt)
Cungcấp gas (bật/tắt)
Đánh lửa điện (bật/tắt)
CUng cấp ôxy (bật/tắt)
Cung cấp nước (bật/tắt)
Lựa chọn điện áp
Lựa chọn tần số
Mô tơ bước (bật/tắt)

3.1.3/ HỆ PHẢN HỒI (FEEDBACK)


Trong các quá trình phản hồi : Việc kích hoạt hay tắt điều khiển bằng tiến trình đo trước nó.

Câu hỏi :
- Nêu một số ví dụ về điều khiển hệ thống
- Hệ phản hồi là gì, ví dụ ?

3.2/ CHUYỂN ĐỔI SỐ TƯƠNG TỰ (DAC)


Chuyển đổi DAC chuyển một giá trị số thành mức thế hay dòng tương tự tương đương. Hầu
hết các DAC hoạt động song song, đó là các bít được nạp vào song song và do đó không
cần các nguồn xung nhịp, lối ra sẽ đạt được mức thế ngay sau khi mạch được ổn định.

Khái niệm cơ sở của DAC là các bít được dùng để bật ON hay tắt OFF các mức thế hay dòng
trọng số. Chúng được cộng thêm vào và lối ra sẽ là mức tương tự tương đương với giá trị số
lối vào. Bít nhiều ý nghĩa nhất có trọng số bằng nửa của toàn thang ... Một DAC cộng
thếđơn giản biểu diễn trên hình vẽ :

Để tiến hành ghép nối, card ghép nối hay các board ghép nối là phần cứng thiết yếu đóng vai trò
trung gian, cửa ngõ giữa máy tính và các thiết bị ngoại vi, có thể là một thiết bị chấp hành, một
thiết bị đo,...card hay board ghép nối có thể được cài đặt (install) trong máy tính cá nhân hay qua
các giao tiếp thông thường của máy tính như cổng usb, cổng nối tiếp COM hay cổng máy in

20
song song LPT. Trong bài học này chúng ta sẽ tìm hiểu một card ghép nối chuyên dụng dùng
trong các bài thực tập tại ITIMS, card ghép nối vạn năng UIB (Univesal Inteface Bus)

CARD GHÉP NỐI UIA/UIB


Để thực hiện các ứng dụng máy tính liên quan tới các hệ thống đo và điều khiển, Các máy tính
PC (kiểu MS-DOS) cần card mở rộng không phải là các card chuẩn đi kèm với các máy tính.
Card ghé nối vạn năng UIA/UIB kết hợp các mạch điện cần thiết để thực hiện hầu hết các chức
năng đo lường, điều khiển cho các ứng dụng cơ bản.

Card UIA / UIB được thực hiện tại khoa Vật Lý trường Đại học tổnghợp Amsterdam ( Hà lan).
Khoa này đã thực hiện các phát triển ứng dụng các thực nghiệm trên cơ sở máy tính rất sớm (từ
năm 1982). Hợp tác với các kỹ thuật viên, nhà vật lý chuyên gia đào tạo và giáo viên, thiết kế
đầu tiên của UIA ra đời năm 1987. Từ năm 1988 card ghép nối vạn năng UIA đã được sử dụng
trong hàng trăm trường học tại Hà lan. Bộ tương hợp UIA đã trở thành chuẩn cho việc liên kết
các thí nghiệm với các máy tính PC (nền DOS).
Card mở rộng UIB là version cải tiến của UIA. cải tiến quan trong nhất là ở các lối vào tương tự.
Bộ chuyển đổi ADC kiểu 12 bít ( 8 bít trong UIA), chứa các chức năng trích và giữ mẫu nhanh
hơn rất nhiều. Giải điện áp lối vào cũng được cải thiện đối với mức thế âm. Nhữnng cải tiến này
làm tăng tính ứng dụng của các bộ tương hợp này

CÁC LINH KIỆN CHÍNH TRÊN CÁC UIA :


- 8255 PPI (Programable Peripheral Interface) : Gồm 24 đường I/O có thể sử dụng trong
nhiều MODE tổ hợp vào ra khác nhau.
- 8254 PIT (Programable Interval Timer ) IC này có 3 bộ đếm 16 bít độc lập có thể sử dụng
để tạo ra các xung và sóng vuông với tần số có thể lập trình được
- Công tắc mềm : Để thiết lập cấu hình các bộ đếm (định thời) và các phương án ngắt có
thể được thiết lập bằng các lệnh chương trình
- Nguồn xung nhịp nội (1MHz – 4MHz, chọn bằng JUMPER) : Cho phép dịnh thời 8254 độc
lập với đồng hồ hệ thống của máy tính.
- ADC0844 cùng với bộ tiền khuyếch đại, để chuyển đổi AD, có bốn kênh cho điện áp giữa 0
và 5 V ( kênh 1 và 2) hay giữa 0 và 1 V (kênh 3 và sµ 4). Chuyển đổi thế tương tự thành số
8 bít mất 40

Hình vẽ :(Hình 2.3_trang 15 - Lưu đồ khối của UIB )

THÀNH PHẦN CHÍNH CHO CARD UIB :


- 82C55 PPI (Programable Peripheral Interface) : Gồm 24 đường I/O có thể sử dụng trong
nhiều MODE tổ hợp vào ra khác nhau.
- 8C254 PIT (Programable Interval Timer ) IC này có 3 bộ đếm 16 bít độc lập có thể sử
dụng để tạo ra các xung và sóng vuông với tần số có thể lập trình được
- Công tắc mềm : Để thiết lập cấu hình các bộ đếm (định thời) và các phương án ngắt có
thể được thiết lập bằng các lệnh chương trình.
- Nguồn xung nhịp nội (1MHz – 4MHz, chọn bằng JUMPER) : CHo phép dịnh thời 82C54 độc

21
lập với đồng hồ hệ thống của máy tính.
- ADS7803 và tiền khuyếch đại : CHuyển đổi tương tự số với bốn lối vào tín hiệu tương tự.
Các kênh 1 và 2 có thể hoạt động với giải điện áp từ –5 đến +5V, với các kênh 3 và 4 giải
điện áp vào có thể đặt qua JUMPER từ –1 đên +1V hay –2V đến +2V; -5 V đến +5V và -10V
đến +10V. Quá trình s.µ chuyển đổi một điện áp tương tự ra mã số 12 bít mất khoảng 10

Điều khiển ADC :


Đơn vị điều khiển kích hoạt chuyển đổi AD
Mỗi kênh này có thể được khởi động quá trình chuyển đổi bằng lệnh chương trình (phần
mềm) hay khởi động bằng lối ra xung của bộ đếm 0 với từng kênh xác định
Thanh ghi bổ trợ :
a/ Chọn mức tích cực cho cổng GATE1
b/ Bật hay tắt nguồn cung cấp điện áp +5V trên đầu cắm 9 chân.

ADC TRÊN CARD GHÉP NỐI UIA/UIB


Có sự khác biệt giữa UIA và UIB
UIA : ADC0844 là bộ chuyển đổi AD với lối vào multiplexer 4 kênh tín hiệu tương tự. Các lối
vào tương tự của của card UIA được đệm (kênh 1 và 2) hay được tiền khuyếch đại ( kênh 3
và 4 ). Theo cách này khoảng thế lối vào ở kênh 3 và 4 là từ 0 – 1 V. Tín hiệu giữ chặt
trong khoảng .Ω thế vào của ADC. Tất cả các kênh có trở kháng vào cỡ 100K
s. Điện áp 5V có thể sai lệch khoảng +-0.2 V (4.8 –µ Thời gian chuyển đổi cỡ 40 5.2 V)
hình vẽ :
Các MODE ADC : Bằng cách viết ra từ điều khiển lên địa chỉ của ADC, ADC có thể được lập
trình ở các MODE khác nhau. Khuôn dạng của từ điều khiển theo bảng dưới đây

Khuôn dạng từ điều khiển cho kênh/MODE ( địa chỉ 0x308)


Bốn bít thấp của từ điều khiển viết ra chốt địa chỉ MUX (multiplexer). Các bít này xác định
hai kênh nào được chọn và các điện áp tương ứng sẽ có dấu như thế nào (dương hay âm).
Qua bộ cộng thế, những thế này sẽ được kết hợp và sau đó xử lý bởi bộ chuyển đổi ADC.
( giáo trình Tin học I phần II - phòng thí nghiệm máy tính – Trung tâm ITIMS)

22
MODE đơn cực là MODE thường dùng, ý nghĩa của nó là từ điều khiển quyết định chọn kênh
chuyển đổi ADC. Sau khi viết từ điều khiển, quá trình s.µ chuyển đổi được tự động bắt đầu.
Kết quả có thể được đọc sau 40 Trong MODE này chu kỳ giữa một kênh xác định và đất
tương tự (AGND) được chuyển đổi bởi ADC.
Với trường hợp outportb(0x308) = 4; // 0000 0100 thế của kênh 1 ( tương đối so với
AGND) được chuyển đổi thành giá trị byte tương đương.
Trong MODE vi sai, ADC chuyển đổi chu kỳ giữa hai kênh ( điẹn áp so sánh ).
MODE giả vi sai có thể nói chung thường không được sử dụng chính xác, vì sự khác biệt về
độ nhạy giữa các kênh.

UIB : ADS7803 :
Hình vẽ :
ADS7803 chứa bộ chuyển đổi ADC 12 bít với mạch lấy mẫu tín hiệu và giữ mẫu trực tiếp
trước quá trình chuyển đổi. Đây là một bộ MUTIPLEXER 4 kênh vào tươngtự. ADS7803 dùng
phương pháp xấp xỉ liên tiếp, mức điẹn s). Phầnµ áp vào được số hoá thành 12 bước xấp xỉ
liên tiếp ( 12x0,5 cứng cho phép lấy mẫu ở tốc độ 100kHz. Tín hiệu vào với tần số đên
50kHz có thể đo được.
Khoảng thế vào của ADS7803 là 0 đến 5V. Mỗi lối vào đều được tiền khuyếch đại. Với kênh
1 và 2 của lối vào cáp 9 chân giải điện áp từ –5V đến 5V. Giải điện áp cho kênh 3 và 4 là
được lựa chọn bằng JUMPER từ –1V đên + 1V hay –2V đến + 2V ; -5 V đến + 5V hoặc –10V
đến + 10V). Các lối vào đều có trở kháng 1Ω 00K
Mức thế thấp nhất trong giải điện áp vào là nhận giá trị số là 0 trong khi mức cao nhất
(mức trên) ở giá trị số là 4095.

Khởi tạo quá trình chuyển đổi nhờ sườn lên của lối vào khởi động (Sart Conversion) với một
tín hiệu hợp lệ từ lối vào kênh giải mã và đường chọn chip (CS). Kênh chuyển đổi tương tự
được chọn để lấy mẫu tín hiệu mất 5 chu kỳ xung nhịp. Một phép chuyển đổi xấp xỉ liên tiếp
sẽ tiến hành trong chu kỳ 6 đến 17.

Đọc dữ liệu : Dữ liệu từ ADS7803 được đọc trong hai byte : byte thấp ( địa chỉ 0x308) và
byte cao ở 0x309. Các byte này có thể đọc theo bất kỳ thứ tự nào. Bít 7 của byte cao ADC
biểu diễn trạng thái của tiến trình chuyển đổi. Nếu =’1’ thì quá trình chuyển đổi đang được
thực hiện, nếu là ‘0’ thì quá trình chuyển đổi đã hoàn tất.

MODE chốt lối ra :Trong MODE này dữ liệu từ quá trình chuyển đổi chỉ được chốt vào hai
chốt lỗi ra 8 bít sau khi quá trình chuyển đổi hoàn thành và được giữ ở đó cho đến khi quá
trình chuyển đổi tiếp theo hoàn tất. Dữ liệu kết quả của quá trình chuyển đổi còn hợp lệ cho
trong khi quá trình chuyển đổi tiếp theo đang thực hiện. Điều này cho phép đọc dữ liệu cũ
ngay cả khi một quá trình chuyển đổi mới tiếp theo đã bắt đầu. Làm cho hệ thống nhanh
hơn.
Mode chốt lối ra kích hoạt nhờ việc viết số ‘1’ ra bít 0 của thanh ghi chức năng đặc biệt của
ADC (0x30B)

MODE trong suốt (Transparent) : Trong MODE này thanh ghi xấp xỉ liên tiếp là trong suốt Ví
dụ 4 bít nhiều ý nghĩa nhất có thể được đọc sau khi kết thúc chu kỳ thứ 9 của quá trình
chuyển đổi. Dữ liệu 12 bít đầy đủ có thể sau khi EOC chuyển về ‘0’. Lúc bật nguồn bộ

23
chuyển đổi đặt ở MODE trong suốt theo mặc định.

Do cách thực hiện của ADS7803 trong Card UIB mà quá trình chuyển đổi có thể được thực
hiện ở hai cách khác nhau :
- Chuyển đổi bằng lệnh chương trình : Khi một chỉ thị được viết ra địa chỉ 0x308 (hay
0x309) khởi động một chu kỳ của kênh được chọn, lấy mẫu và chuyển đổi. Các đường dữ
liệu D0 và D1 qui định kênh muốn chuyển đổi, ví dụ : outportb(0x308,1) khởi động quá
trình chuyển đổi ở kênh 2. ( số kênh là 1 .. 4 tương ứng với các mã 0 .. 3). Cách này khởi
tạo quá trình chuyển đổi được chọn khi bít #2 của thanh ghi MODE lấy mẫu ở địa chỉ 0x30C
bằng 0. Đây là thiết lập mặc định sau khi máy tính khởi động. ( hoặc sau một RESET cứng)
s) từ bộ đếm 0µ - Chuyển đổi khởi tạo bằng một xung âm ( đặc trưng 1 (PIT). Mode này
được chọn nếu bít #2 của thanh ghi MODE lấy mẫu ở địa chr 0x30C đặt là cao. Bít #0 và #1
định nghiã kênh được chọn. Ví dụ, sau lệnh outportb(0x30C,6); quá trình chuyển đổi ở kênh
3 được thực hiện (tuần tự) sau mỗi xung lối ra của bộ đếm 0.

Kết quả chuyển đổi :


Sau khi khởi động quá trình chuyển đổi (với một trong hai cách ở trên), cần phải đợi cho
đến khi quá trình chuyển đổi hoàn thành trước khi có thể đọc được kết quả. Bít cao nhất ở
địa chỉ 0x309 sẽ bằng 1 trong suốt quá trình chuyển đổi. Vòng lặp dưới đây có thể được
dùng để kiểm tra :
do x = inportb(0x309) while(( x & 0x80 )!= 0 )
Nếu điều kiện này thoả mãn ( bít cao nết của biến x bằng 0), thì x giữ 4 bít cao nhất của
kết quả giá trị chuyển đổi 12 bít. byte thấp có thể nhận được tại địa chỉ 0x308, sau đó một
phép cộng điều chỉnh sẽ cho kết quả của phép chuyển đổi inportb(0x308) + x*256.
ưu điểm lớn nhất của việc khởi động quá trình chuyển đổi trực tiếp từ bộ đếm 0 (MODE 2)
là việc định thời chính xác thời điểm lấy mẫu, bằng khoảng thời gian giữa hai lần đếmm.
Xung lối ra của bộ đếm 0 có thể dùng để sinh ra một ngắt. Đồng thời với khởi động quá
trình chuyển đổi, chương trình quản lý ngắt sẽ được gọi. Chương trình quản lý này sẽ phải
đợi cho đến quá trình chuyển đổi hoàn thành và kế đó kết quả có thể được cất giữ trong
một mảng.

CHUYỂN ĐỔI DAC


(thực nghiệm) Card DAC 12 bít tương thích với các máy tính AT với lối ra DAC có giải điện
áp từ -5V đến +5V và một kênh DAC có giải điện áp từ 0V đến +10V.
Card DAC được sử dụng cùng với card UIB như sự bổ xung do card ghép nối UIB không tích
hợp sẵn chức năng chuyển đổi DA trên card.
Giải địa chỉ card DAC được dùng trong khoảng từ 0x210 - 0x240 và kênh thứ hai ở giải địa
chỉ 0x310 - 0x340. Giá trị mặc định của card là 0x210 cho kênh DAC0 và 0x310 cho kênh
DAC1. Như vậy nên đặt card UIB tại địa chỉ 0x300 để tránh xung đột địa chỉ.
Cũng có thể đặt lại các địa chỉ này bằng cách đặt lại các JUMPER trên card.
Bằng cách viết một từ 12 bít ra địa chỉ DAC, hai chốt dữ liệu 8 bít sẽ chốt dữ liệu và sau đó
truyền dữ liệu đó cho bộ chuyển đổi DAC. Nếu DAC vừa chọn đường tín hiệu U5a/b sẽ đẩy
đường IO CS16 xuống thấp và cho phép một phép truyền dữ liệu 16 bít. Đường tín hiệu I/O
RDY trên khe cắm PC (ISA) không được dùng. Thường bít này được sử dụng cho các card PC
tốc độ chậmbằng cách huỷ bỏ một chu kỳ viết mới cho đến khi dữ liệu được xử lý xong. Với
card loại này người lập trình cần cảnh giác khi một chu trình viết nhanh có thể dẫn đến kết
quả chuyển đổi nhầm lẫn nêu chu trình viết đang trong khoảng thời gian trễ do quá trình
chuyển đổi đang tiến hành ( ví dụ như khi muốn tạo ra các dạng song với tần số cao ).
( giáo trình Tin học I phần II - phòng thí nghiệm máy tính – Trung tâm ITIMS)

Khuyếch đại OPAM đóng vai trò bộ đệm phối hợp trở kháng có độ trôi nhỏ và dòng dò nhỏ,
tốc độ cao. Bộ chuyển đổi DAC thứ nhất sử dụng hai bộ OPAM : một đóng vai trò đệm phối
hợp trở kháng nhờ điện trở phản hồi nội của DAC và cái kia khuyếch đại tổng để dịch tín

24
hiệu thành mức lưỡng cực. Một mạch dịch thế một chiều bổ xung dùng để thay đổi thế
offset của U6 với P2. Hệ số khuyếch đại của DAC0 có thể thay đổi bằng cách chọn đúng giá
trị điện trở cho R3, R7 và R9. Thường R9 sẽ là một ) và R3 không được nối. R7 là điện trở
chính xác caoΩ điện trở dây (0 10K (0.1%)
Điều chỉnh độ khuyếch đại của DAC1 không cần thiết trong khi các điện trở nội U9 được
dùng. ĐIện áp Offset có thể thay đổinhờ chiết áp P1.
Các khuyếch đại Burr Brown có thể được thay thế bằng các vi mạch TL051 rẻ tiền hơn và
hầu như có cùng đặc tuyến.
Lối ra của chuyển đổi DA có thể dùng với các tải trở kháng thấp, hay dẫn, nên nối thêm với
bộ khuyếch đại ngoài.

Chương trình kiểm tra :


outport(0x210, 0x0); // DAC 0 = -5 V
outport(0x210, 0xFFF; // DAC 0 = + 5V

outport(0x310, 0x0); // DAC 1 = 0 V


outport(0x310, 0xFFF); // DAC 1 = 10 V

ĐỊA CHỈ DAC:

Có thể chọn qua các JUMPER

25
Lưu ý với card ghép nối UIA : các địa chỉ 0x309,0x30A và 0x30B tương đương với 0x308
( cũng tương tự với các giải địa chỉ khác)
Lưu ý với UIB : địa chỉ 0x30E tương đương với 0x30C, 0x30F tương đương với 0x30D ( và
tương tự cho các giải địa chỉ khác)

CÁC THIẾT LẬP HỆ THỐNG :


Trước khi cài đặt cần kiểm tra :
- Máy tính của bạn có thừa ít nhất một khe cắm mở rộng (ISA)
- Một trong các địa chỉ 0x100 .. 0x10F, 0x110 .. 0x11F và 0x300 .. 0x30F còn chưa sử dụng
- ít nhất một trong các mức ngắt 2, 3, 4, 5 còn rảnh
- Tốc độ nhịp của hệ thống không vượt quá 8MHz.
JUMPER : Trước khi cắm UIA/UIB vào khe cắm trong máy tính, cần xác lập một số JUMPER
giống nhau trên cả UIA và UIB. Các board UIB có 4 JUMPER lựa chọn bổ xung giải điện áp
vào cho các kênh 3 và 4.
- JUMPER J1 dùng để đặt mức ngắt, mặc định là 2. Có thể ngắt này đã bị sử dụng bởi các
board mở rộng khác, trong trường hợp này sẽ không sử dụng được đúng chức năng ngắt.
Thử với các ngắt 3, 4 hay 5. Trong hầu hết các máy tính XT mức ngắt 2 sẽ có thể dùng
được. Các máy AT thường đặt ở mức ngắt 5.
- JUMPER J2 dùng để chọn khoảng địa chỉ, mặc định là 0x300 – 0x30F. Nếu các card mở
rộng khác đã dùng mất giải địa chỉ này thì thử các chọn lựa khác như : 0x100 – 0x10F
(256-271); 0x110 – 0x11F ( 272-287); 0x300 – 0x30F (768 – 783) và 0x310 – 0x31F
( 784 – 799 ).
- JUMPER J6 xác định tần số xung nhịp nội. 1MHz và 4MHz. Mặc định là 1 MHz, chương trình
cũng thường giả thiết là tần số nhịp 1MHz nên nếu đặt ở 4MHz thì thường gặp lỗi.
Riêng cho board UIB
JUMPER J3a và J3b cùng nhau xác địn giải điện áp vào cho kênh 3 theo sơ đồ sau :

- JUMPER J4a và J4b cùng nhau xác định giải điện áp vào cho kênh 4 theo cùng cách diễn
tả với kênh 3
- JUMER J5 nối tín hiẹu xung nhịp 2MHz với bộ chuyển đổi AD. Nếu gỡ ra ADC sẽ sử dụng
đồng hồ xung nhịp nội riêng của nó. Quá trình chuyển đổi sẽ chậm hơn một chút, những
mức ồn có thể được hạn chế.

CÀI ĐẶT :
- Mở máy tính
- Chạm tay vào vỏ máy khoảng một phút để giảm tĩnh điện
- Tháo dây nguồn
- Gỡ vỏ máy
- Chèn card UIA/UIB vào khe cắm ISA còn trống trongmáy ( chú ý khoảng cách giữa các
card mở rộng tránh để chập)
- Vít nhẹ các ốc
- Lắp lại vỏ máy
ĐẦU NỐI :
-Đầu nối 9 chân :

26
1/ Lối vào kênh 1 (CH1)
UIA : 0- 5V
UIB : -5V – 5V
. trong nhiêu fthí nghiệmΩ Trở kháng vào của lỗi vào tương tự là 100K với UIA/UIB sẽ
không ảnh hưởng đến hệ thống. Giải điện áp vào được lượng tử hoá ra thành 256 mức
(UIA) và 4096 mức (UIB) điện áp bằng nhau.
2/ Lối vào kênh 3 (CH3)
UIA : 0 – 1V
UIB : giải điện áp tuỳ thuôc vào xác lập JUMPER
3/ Đất cho tín hiêu tương tự
4/ Đất cho tín hiệu số
5/ Lối vào xung nhịp cho bộ đêm 1
Lối vào CLOCK và GATE là các triger Schmitt, Hệ quả là không có các yêu cầu đặc biệt với
tốc độ chuyển mức logic cho các cổng
( Bộ đếm giảm di một mỗi lần chuyển từ mức thấp lên mức rồi về mức thấp ( xung dương))
Mức cao và thấp nghĩa là +5V và 0 V tương ứng(TTL). Trong thực tiễn các điện áp vào trên
+2.0V được xem như mức cao. dưới +0.8V xem như mức thấp. Với lối ra TTL: thấp nghãi là
dưới +0.4V và cao là trên +2.4V. Điện áp vào trên +5.5V và dưới –0.5V nên tránh, các
mứcc điện áp này có thể gây ra hư hỏng mạch điện.
6/ Lối vào cho kênh 2 (CH2)
UIA : 0- 5V
UIB : -5V – 5V
7/ Lối vào cho kênh 4 (CH4)
UIA : 0 – 1V
UIB : giải điện áp tuỳ thuôc vào xác lập JUMPER
8/ Điện áp ra 5V. Nguồn này bị giới hạn dòng cực đại 100mA (0.5W), có thể dùng cho một
số loại sensor
9/ Cổng vào GATE cho bộ đếm 1
Lỗi này cho phép hay huỷ bỏ quá trình đếm của bộ đếm 1
Cổng GATE có thể sử dụng để đo chu kỳ của một xung dương ( hay cả xung âm với UIB ).
Xung dương nghĩa là mức thế thay đổi từ mức thấp ( gần 0V) đến mức cao (gần 5V) và trở
về.
Hình vẽ :
Đầu nối 25 chân :
Tất cả các lối vào và ra là tương thích TTL. Lối ra được tải với 1 lối vào TTL, CLK – 0, CLK –
1 và GATE – 1 là các lối ào triger SCHMITT.
1-8/ Cảng A : cổng vào ra 8 bít có thể lập trình được
PAO là bít ít ý nghĩa nhất, giá trị 1 là cao; 0 nếu là thấp.
PA7 là bít nhiều ý nghĩa nhất. giá trị 128 nếu ở mức cao và 0 nếu là ở mức thấp
14-17 Các bít thấp cổng C (PC0 – PC3)
18 – 21
Các bít cao cảng C (PC4 – PC7)
Nửa cao và nửa thấp cảng C có thể lập trình riêng biệt cho đọc vào hay viết ra.
10/ Lối vào nhịp cho bộ đếm 0. Đếm xuống 1 mỗi xung duơng ( thấp – cao – thấp)
11/ Lối vào cổng GATE ch bộ đếm 0 ( mặc đinh là cao ). Hoạt động đếm bị cấm nếu cổng
nàybị đặt xuống mức thấp.
12/ Lỗi ra bộ đếm 0. Tính chất tuỳ thuộc vào xác lập cho MODE đếm.
13/ Lối ra cho bộ đếm 2
23/ Lối vào xung nhịp cho bộ đếm 1
24/ Lối vào cổng GATE cho bộ đếm 1
25/ Lỗi ra cho bộ đếm 1
9/ Đất
22/ Thế lối ra +5V, dòng cực đại là 100mA (0.5W) cho UIA và 200mA (1W) cho UIB.

27
Bảo vệ : Các card ghép nối UIA/UIB
- Tránh đưa những điện áp quá cao hay quá thấp (ngoài giải đo) đến các lối vào. Tránh các
phóng điện tĩnh điện với các đường tín hiệu nối trực tiếp.
- Các lối vào tương tựu có thể chịu được các điện thế giữa –30V và 30V
- các lối vào số không nên chịu các giá trị dưới –0.5V hay trên +5.5V.
- Thế lỗi vào là được giữ bởi các diod. Khả năng chịu đựng tuỳ thuộc vào dòng trên lối vào.
Các peaks điện áp từ nguồn cũng hạn chế nhờ các diod này
- Lối ra số cũng có thể chịu được sự ngắn mạch với đất trong một thời gian ngắn. Với các lối
ra điện áp ngắn mạch +5V nên tránh.

CÁC PHÉP TOÁN THAO TÁC BITS


ANSI-C cung cấp sáu phép toán thao tác bít có thể áp dụng với các toán hạng kiểu nguyên
(char, short, int và long có dấu hay không dấu). Các phép toán này và kiểu kết quả được
mô tả trong bảng dưới đây :

Lệnh code = code << 2; dịch tất cả các bít đi hai vị trí về phía trái, trong khi bít 0 và bít 1
trở thành 0. code << 2 tương đương với code * 4. Toán hạng dịch phải cũng hoạt động
tương tự : code >> 1 dịch các bít đi 1 vị rí sang phải còn bít 7 bằng 0
ví dụ :
17 & 7 =
0x17 & 0x07 =
0xFC | 0xC3 =
~ 0x55 =
6 >> 2 =
2 << 6 =
Kiểm tra bít : Giả sử muốn dùng máy tính để kiểm tra an toàn của một cửa ra vào ( ví dụ
phòng từ trường cao chẳng hạn ). Một thiết bị an toàn nối với cửa của phòng cao thế. Nhờ
các công tắc ở cửa ra vào ta có thể kiểm tra xem cửa có mở (‘1’) hay đóng (‘0’). Nối bít 2
với cổng vào tại địa chỉ 0x300. Trạng thái của bít 2 có thể được xác địnhnhờ dòng lệnh sau
đây :
door_is_open = inportb(0x300) & 4; // Dùng phép toán AND &
// xxxx xxxx & 0000 0100 = 0000 0x00
Kiểm tra bít thứ n có thể được thực hiện nhờ hàm sau
int test_bit_PPI_PORT_A(int bit_nrr)
{
return inportb(0x300) & (1 << bit_nr );
}

Đặt hay Xoá một bít :


Với từ trường cao trong ví dụ trên, cơ cấu điều khiển nguồn cao thế được nối với bít 3 của
cổng C. Điện áp cao thế có thể được bật hay tắt nhờ việc SET hay RESET (‘1’/’0’) bít 3 của
cổng C. Các bít khác của cổng C có thể được sử dụng để điều khiển các thiết bị khác và nên

28
duy trì không đổi trong khi điều khiển bít 3. Có thể xây dựng được hàm như sau để điều
khiển quá trình :
magnet_control ( high_voltage, on)

void magnet_control ( int bit_nr, int value)


{
int mask;
static int ctrl_code;
mask = 1 << bit_nr; // Mặt nạ bít bit_nrr 3 : 0000 1000
if (value) {
ctrl_code = ctrl_code | mask;
} else {
ctrl_code = ctrl_code & ~mask; // Mặt nạ bít mask bit_nr 3: 1111 0111
}
outportb( 0x302, ctrl_code);
}
Lưu ý : Để cho chương trình dễ đọc, khuyến khích dùng các kiểu liệt kê cho phép liên hệ
một cách thuận tiện các tên hằng với giá trị của nó. Kiểu liệt kê là danh sách các giá trị
hằng số nguyên :
enum { off = 0, on };
Tên thứ nhất của hằng nhận giá trị 0, tiếp theo là 1, ... Nếu các giá trị tiếp theo không được
xác định, nó sẽ nhận tiếp theo cấp số cộng ví dụ :
enum = {
cooling_system = 1, water_pump, high_voltage
}
// water_pump = 2, high_voltage = 3
Biến tĩnh static là địa phương đối với một hàm riêng biệt như biến tự động, khác với biến tự
động, biến tĩnh vẫn duy trì giá trị của nó sau mỗi phép gọi hàm. Điều này nghiã là một biến
nội tĩnh (static) cungcấp một vùng bộ nhớ lâu dài,, riêng biệt trong một hàm đơn.

Để thực hiện được các nhiệm vụ điều khiển và thu thập, xử lý dữ liệu một cách mềm dẻo linh
hoạt, không có cách nào khác hơn là sử dụng những thuật toán và ngôn ngữ lập trình cho phép
can thiệp đến phần cứng ngoại vi (cổng, cảng hay port). Bằng cách thay đổi chương trình, có thể
thay đổi các tác vụ hay nâng cấp tính năng mà không cần thay đổi thiết kế phần cứng. Việc lập
trình ghép nối mở ra những khả năng to lớn cho chúng ta trong việc thiết kế, ứng dụng môn học
vào thực tiện cuộc sống, công việc.

4/ LẬP TRÌNH ĐIỀU KHIỂN VÀ THU THẬP DỮ LIỆU :

4.1/ VÀO RA SỐ SONG SONG : Xây dựng trên cơ sở vi mạch 82C55 PPI ( Progamable

29
Peripheral Inteface ).

16 đường I/O cho hai cổng 8 bít A và C được nối với jack cắm 25 chân trên card UIA/UIB.
Mỗi cổng có địa chỉ riêng. Việc gửi và nhận dữ liệu được thực hiện qua việc đọc và viết ra
địa chỉ cổng tương ứng. Có thể sử dụng cổng A cho cả việc vào và ra dữ liệu trong vài
MODE khác nhau. Trong khi đo cổng C được chia ra làm hai cổng 4 bít Pclower (nửa byte
thấp PC0 – PC3) và PC upper (nửa byte cao PC4 – PC7) có thể lập trình độc lập cho mỗi nửa
ở MODE đọc vào hay viết ra. Cổng C chỉ hoạt động ở một MODE. MODE hoạt động được lựa
chọn bằng cách viết từ điều khiển cho thanh ghi điều khiển. Thanh phần của từ điều khiển
được biểu diễn dưới đây :
Với card UIA/UIB, cổng B luôn được đặt ở MODE ra (MODE 0) vì nó được dùng để điều khiển
các công tắc mềm. ( giáo trình Tin học I phần II - phòng thí nghiệm máy tính – Trung tâm
ITIMS)

Ví dụ : outportb(0x303,145) // 1001 0001 sẽ đặt cổng A trong MODE 0 đọc vào , cổng B
MODE 0 viết ra và cổng C (thấp) MODE đọc vào và nửa cao MODE viết ra.
Riêng cổng C ( khi ở MODE viết ra) từng bít riêng biệt có thể được xác lập lên 1 hay về 0
( mà không ảnh hưởng tới các bít khác) bằng cách viết từ SET/RESET bít ( bít 7 luôn luôn
bằng 0) ra từ điều khiển.
Ví dụ :
outportb(0x303,6); // 0000 0110 đặt bít PC3 xuống thấp
outportb(0x303,7); // 0000 0111 đặt bít PC3 lên mức cao

30
31
32
4.1.1/ ĐỊNH DẠNG TỪ ĐIỀU KHIỂN CHO VIỆC ĐẶT / XOÁ BÍT CỔNG C

Các MODE PPI : Việc lập trình cho MODE ở cổng A tuỳ thuộc vào cách truyền dữ liệu với
thiết bị ngoại vi.
a/ MODE0 : Vào ra cơ sở :
- MODE 0 viết ra : Một byte được viết ra cổng và sẽ được chốt lại nghĩa là nó xuất hiện
trên kết nối với cổng đó và sẽ duy trì cho đến khi một byte mới được viết ra cổng đó.
- MODE 0 đọc vào : VIệc đọc trên một cổng sẽ cho biết giá trị của một byte hiện hành
trên cổng đó ( tại thời điểm đọc ).

Nếu chương trình sử dụng cổng A ở MODE 1 hay 2, cổng A sẽ dùng các tín hiệu móc nối.
Các đường tín hiệu móc nối này được mượn từ cổng C (khi đó cổng C không thể được dùng
ở MODE vào ra thông thường nữa ). ở MODE 0 cổng A không thực hiện việc móc nối nên các
bít ở cổng C đều có thể sử dụng ở hoạt động vào ra thông thường.

b/ MODE 1 : Vào ra STROBE ( nhấp nháy )


Móc nối được thực hiện để đảm bảo thứ tự truyền dữ liệu. Với các hoạt động vào hay ra sử
dụng các tín hiệu móc nối khác nhau.

MODE 1 đọc vào dùng :


- STB ( lối vào STROBE). Khi ngoại vi nối đặt lối vào này xuống mức thấp, byte hiện hành
được nạp vào vùng đệm vào, dữ liệu có thể dọc từ cổng sau đó.
- IBF ( Input Buffer Full) ở mức cao chỉ ra rằng có một byte vừa được tải vào vùng đệm và
chưa từng đựoc đọc. Chương trình điều khiển nhận ra có một byte mới vừa nhận được và
ngoại vi biết rằng không nên gửi byte tiếp theo vì byte trước đó chưa được xử lý.
- INTR (Interrupt Request). Nếu được phép, một ngắt sẽ được sinh ra khi byte được tải vào
vùng đệm đọc. Việc đọc từ cổng đó sẽ làm INTR xuống thấp lại.

MODE 1 viết ra : dùng các đường :


- OBF ( Output Buffer Full ) : Đường này xuống thấp khi một byte vừa viết ra cổng vẫn còn
chưa được thiết bị ngoại vi chấp nhận ( đọc ). Bằng cách này, chương trình thấy rằng nó
không thể gửi dữ liệu mới ( do byte trước đó vẫn chưa được ngoại vi xử lý (chấp nhận) và
thiết bị ngoại vi nhận ra có một byte mới nhận được.
- ACK (Acknowledge). Thiết bị ngoại vi xác nhận rằng byte vừa được chấp nhận bằng cách
đưa ACK xuống mức thấp. Điều này làm cho lối ra OBF lên cao một lần nữa, để chương
trình biết nó có thể gửi một byte mới.
- INTR ( Interrupt Request) Nếu cho phép, ngắt sẽ sinh ra khi vùng đệm ra là trống ( thiết
bị viết ra đã sẵn sàng nhận dữ liệu mới). Viết ra cổng sẽ đặt lại đường INTR xuống thấp.

NGẮT:
Trong chương trình , trạng thái của đường INTR (PC3) có thể được kiểm tra liên tục ( thăm
dò) để biết có byte mới nào đựoc đọc vào hay viết ra cổng A không. Trong hầu hết trường
hợp, cách hiệu quả hơn là để 8255 PPI sinh ra ngắt. Đường INTR có thể được kích hoạt hay
không kích hoạt nhờ các triger INTE ( cho phép ngắt ). Hay là các công tắc mềm các đường

33
INTR của PPI có thể được nối với một trong các mức ngắt ( đường yêu caùa ngắt ) của máy
tính.
Cổng A dùng các flipflop INTE khác nhau cho lối vào và lối ra
Lối vào cổng A : INTE-A được bật/tắt bằng cách đặt bít SET/RESET PC4
Lối ra cổngA : INTE-A được bật hay tắt (SET/RESET) nhờ bít PC6

c/ MODE 2 : Vào ra hai chiều Strobe.


Mode này chỉ có thể với cổng A và có nghĩa để kết nối với một thiết bị ngoại vi qua một bus
dữ liệu 8 bít theo cả hai chiều, gửi và nhận (I/O song công ). ở trạng thái bình thường cổng
A được đặt ở MODE vào. Dưới điều kiện thiết bị ngoại vi điều khiển ACK xuống thấp, byte
trong vùng đệm ra được đặt ra lối ra. Nếu không thiết bị ngoại vi có thể đặt dữ liệu lên cổng
và tải những dữ liệu này vào chốt dữ liệu vào nhừo việc đặt một xung (thấp) lên lối vào
STB. CHức năng của các tín hiệu móc nối tương tự như trong MODE 1. flipflop INTE cho lối
vào (PC4) và lối ra (PC6) có thể được bật hay tắt độc lập với các thiết bị ngoại vi khác.

Chức năng các đường tín hiệu trên cổng C

Cổng C các đường còn lại, thông tin trạng thái


Trong MODE 1 và 2 cổng A mượn các bít của cổng C để thực hiện móc nối. Các bít còn lại có
thể được dùng để vào ra I/O thông thường.
Cổng C có thể được đọc thông thường. Trong byte kết quả các bít tương ứng với các đường
mượn cho biết trạng thái của các đường này. Cổng C đóng vai trò như thanh ghi trạng thái
các đường tín hiệu mượn. Ví dụ chương trình có thể đọc trạng thái của OBF hay IBF. Nếu
cổng C được lập trình ở MODE vào, các bít còn lại phản ánh mức tín hiệu trên những đường
này. Nếu ở MODE ra, các đường PC4 – PC7 chỉ có thể được điều khiển bằng chức năng đặt /
xoá bít. Các đường PC0 – PC3 cũng có thể được điều khiển bằng cách viết một byte ra cổng
C ( có khả năng là các bít mượn PC3 sẽ không thay đổi giá trị ).

2/ II - Timer/ Counter _PIT-82C54 :


Trên cơ sở vi mạch PIT 82C54 : là bộ đếm có thể lập trình được, nó gồm 3 bộ đếm độc lập,
mỗi bộ đếm có một lối vào xung nhịp (Clock), một lối vào cổng (Gate) và một lối ra (Out).
Lối ra cổng và lối vào nhịp của bộ đếm 0 và 1 được nối ra cổng 25 chân (UIB). Nối vào nhịp
của cổng bộ đếm 1, cũng nối với cổng 9 chân của UIB, bộ đếm 2 chỉ có lối ra với cổng 25
chân. Mỗi bộ đếm hoạt động tuỳ thuộc vào mode được lập trình. ( giáo trình Tin học I phần
II - phòng thí nghiệm máy tính – Trung tâm ITIMS)

Mỗi đơn vị đếm gồm có :


- Một triger sườn dương kích hoạt một bộ đếm lùi 16 bít
- Hai thanh ghi lối vào 8 bít cất giá trị khởi đầu bộ đếm ( giá trị đếm bắt đầu )

34
- Hai thanh ghi lối ra chốt giá trị đếm tức thời
- Một thanh ghi điều khiển và một đơn vị điều khiển điều khiển bộ đếm theo MODE được
chọn
- Một thanh ghi chốt trạng thái đệ đọc trạng thái hiện tại của bộ đếm.
Phần tử đếm (bộ đếm lùi có thể đặt lại được), một thanh ghi đếm (cất dữ liệu được viết vào
bộ đếm), một chốt dữ liệu lối ra, cất dữ liệu đọc ra từ bộ đếm và một đơn vị điều khiển

logic (điều khiển bộ đếm tuỳ theo mode lập trình ). Dưới những đIều kiện nhất định tuỳ
thuộc vào mode của bộ đếm, số đếm ban đầu được nạp vào phần tử đếm, sau đó bắt đầu
quá trình đếm lùi. Khi bộ đếm đạt đến giá trị 0 (N xung sau khi nạp giá trị N vào thanh ghi
đếm) đơn vị logic đIều khiển hoạt động tương ứng tuỳ thuộc vào mode lập trình. Phần tử
đếm đếm lùi đi 1 mỗi một xung nhịp trên lối vào nhịp, lối vào cổng (Gate) là lối vào điều
khiển. Chức năng của nó tuỳ thuộc vào mode lập trình. Các đường lối vào gate được treo
lên với các điện trở PullUp và mức logic nếu không nối là bằng 1. Mode bộ đếm được xác lập
bằng việc viết từ điều khiển đến thanh ghi điều khiển. Sau khi viết từ điều khiển, các byte
của số đếm ban đầu được viết lần lượt vào bộ đếm.
Chú thích:
CRM ,CRl : Thanh ghi đếm (dùng để lưu trữ dữ liệu được ghi lên bộ đếm).
CE : Phần tử đếm (Bộ đếm giảm dần để đồng bộ với những thiết lập được đặt trước).
OLM ,OLM : Chốt lối ra (Chứa dữ liệu được đọc từ bộ đếm).

Hình vẽ: Định dạng của công tắc chuyển mạch mềm ( Cổng B của PPI-8255A, địa chỉ
$301). Cổng B gồm 8 bit được xác định từ PB0-->PB7, dùng để xác lập chế độ kết nối cho
bộ đếm vào.

35
Khởi tạo bộ đếm : Việc khởi tạo bộ đếm được thực hiện nhờ viết một byte từ điều khiển ra
địa chỉ thanh ghi điều khiển bộ đếm PIT theo thứ tự ở bảng sau đây

Các bít 7 và 6 xác định bộ đếm nào sẽ được khởi tạo. Bít 4 và 5 xác định cách viết giá trị
khởi tạo cho bộ đếm xác định bởi các bít 7 và 6 nói trên., có thể viết một byte đơn ( cả
phần byte cao hoặc byte thấp) hay viết cả hai phần lần lượt lên bộ đếm đó. Các bít 3, 2, 1
xác định MODE đếm. Bít 0 qui định kiểu đếm là đếm nhị phân hay mã nhị thập phân (BCD –
Binary Coded Decimal)

4.2.1/ VIẾT BỘ ĐẾM :


Hầu hết các ứng dụng đều dùng bộ đếm hai byte. Như vậy giá trị khởi tạo cần nập (viết)
vào thanh ghi lối vào theo đúng trật tự : bít ít ý nghĩa nhất trước (lsb), bít nhiều ý nghĩa
tiếp theo (msb). Sườn xung dương của xung nhịp (ngoài) đầu tiên sẽ copy giá trị khởi đầu
vào bộ đếm.
4.2.2/ ĐỌC BỘ ĐẾM:
Khi đang tiến hành quá trình đếm, giá trị bộ đếm có thể bị thay đổi trong quá trình đọc dẫn
đến kết quả đọc được không chính xác, điều này có thể tránh được nhờ việc tạm dừng quá
trình đếm bằng cách đặt cho cổng Gate xuống mức thấp 0. Trong hầu hết các trường hợp
người ta muốn đọc giá trị bộ đếm mà không ảnh hưởng đến quá trình đếm thì có 2 cách để
đạt được điều này:

36
• lệnh chốt bộ đếm (Bit 5,4 =00)
• Lệnh đọc lại bộ đếm (Bit 7,6 =11)
a/ Lệnh chốt bộ đếm: Khi được viết vào thanh ghi điều khiển, thì giá trị bộ đếm được chốt
vào thanh ghi lối ra và số liệu này có thể được giữ nguyên để chương trình đọc lại sau đó.
Lưu ý: phải đọc đủ 1 hoặc 2 byte , nếu không đọc đủ thì lệnh chốt tiếp theo sẽ bị bộ đếm
bỏ qua và giá trị đầu vẫn được giữ nguyên.

b/ Lệnh đọc lại bộ đếm: hoạt động giống như lệnh chốt bộ đếm nhưng nó cho phép chốt
giá trị của nhiều bộ đếm đồng thời, mỗi bộ đếm được chốt cho đến khi nó được đọc (hoặc là
bộ đếm được lập trình lại), cũng có thể chốt byte trạng thái, byte trạng thái thu được bằng
cách đọc bộ đếm đó.

Dữ liệu được chốt của một lệnh chốt hoặc lệnh đọc lại cần phải được đọc hoàn toàn nếu
không lệnh đọc lại tiếp theo sẽ không có ảnh hưởng trên bộ đếm đó. Bit đếm NULL (D6=1)
trong byte trạng thái chỉ ra rằng một số đếm ban đầu vừa được viết lên bộ đếm chưa được
nạp vào trong phần tử đếm dẫn đến việc đọc bộ đếm sẽ không có ý nghĩa

37
c/ Mode bộ đếm: mode của bộ đếm được định nghĩa bởi các bit 1,2,3 của từ điều khiển.
+ Mode 0: (ngắt khi kết thúc đếm) Sau khi bộ đếm vừa đặt là mode 0 thì lối ra OUT là thấp
(=0), ngay khi giá trị đếm vừa được nạp vào thì bắt đầu quá trình đếm lùi, khi đạt đến 0, lối
ra OUT của bộ đếm bật lên cao (=1, có thể được dùng để sinh ra một ngắt) viết một giá trị
đếm mới sẽ lặp lại quá trình này, tức là OUT lại thấp xuống và quá trình đếm lùi lại tiến
hành. Quá trình đếm được phép nếu cổng Gate là cao, khi cổng gate là thấp thì các xung
nhịp bị bỏ qua (không đếm).
(Tóm lại: trong mode 0, nếu giá trị OUT=0 thì quá trình đếm của bộ đếm vẫn đang được
tiến hành, Nếu OUT=1 thì chấm dứt quá trình đếm. Giá trị OUT của bộ đếm sẽ được kiểm
tra qua việc đọc Byte trạng thái của bộ đếm - kiểm tra bit D7 của bộ đếm - sau khi thực
hiện lệnh đọc thanh ghi).

+ Mode 1: (kích hoạt bằng xung phần cứng) Ban đầu lối ra OUT là mức cao (=1) với một
xung sườn lên ở lối vào cổng gate thì lối ra OUT sẽ xuống thấp và giữ nguyên ở mức thấp
trong khi đếm lùi.

38
+ Mode 2: (máy phát xung) mode này là mode liên tiếp, lối ra OUT xuống thấp một chu kì
xung nhịp ngay khi quá trình đếm kết thúc (số đếm =1). Sau đó OUT lại lên mức cao một
lần nữa và giá trị đếm ban đầu lại được nạp lại. Như vậy cứ sau mỗi chu kì N xung nhịp, lối
ra OUT lại xuống thấp trong một chu kì. cổng Gate có thể được dùng để đồng bộ bộ đếm:
sau một xung ở mức thấp trên cổng gate, bộ đếm khởi động lại từ giá trị đếm ban đầu.

+ Mode 3 (máy tạo sóng vuông): mode này tương tự mode 2, quá trình đếm xuống sẽ được
thực hiện hai lần, nhưng với số bước gấp đôi. Với số đếm ban đầu là chẵn thì OUT sẽ cao
trong nửa đầu của chu kì ( N, N-2, N-4, .... , 2) và thấp trong nửa còn lại ( N-1, N-3,..., 1).
Với số ban đầu là lẻ, thì chu kì ở mức cao của lối ra OUT sẽ giữ lâu hơn một xung nhịp so
với chu kì thấp. Cũng như với mode 2, lối vào gate có thể được dùng để đồng bộ bộ đếm.

39
+ Mode 4 (khởi động mềm): OUT sẽ khởi đầu là cao sau khi số đếm ban đầu được viết thì
bộ đếm bắt đầu đếm lùi ngay khi đạt đến giá trị 0, OUT sẽ thấp trong một chu kì xung nhịp.
Lối vào gate cho phép quá trình đếm khi ở mức cao và cấm khi ở mức thấp.
+ Mode 5 (kích hoạt cứng): OUT bắt đầu ở mức cao. Khi gate đạt đến mức cao, số đếm ban
đầu được nạp và quá trình đếm lùi bắt đầu. Khi giá trị đếm đạt đến 0, OUT xuống thấp
trong một chu kì xung nhịp. ( giáo trình Tin học I phần II - phòng thí nghiệm máy tính –
Trung tâm ITIMS)

Ví dụ: Tạo máy phát xung vuông điều khiển được từ bàn phím

Hình : Khai báo và hàm tạo xung vuông dùng bộ đếm C2

Hình : Chương trình chính với vòng lặp bắt phím điều khiển tần số

40
Hình : Màn hình kết quả trong DOS- bấm ESC để thoát khỏi chương trình

4.3/ CHUYỂN ĐỔI TƯƠNG TỰ - SỐ ADC

Chuyển đổi tương tự số phức tạp hơn chuyển đổi số tương tự. ở đây đề cập đến kiểu phổ
biến nhất ADC xấp xỉ liên tiếp.
ADC sẽ cần một thời gian hữu hạn để tính toán các giá trị số. Nó cũng cần báo hiệu khi nào
thì bắt đầu quá trình chuyển đổi và trả lại tín hiệu khi kết thúc qua trình này. Khi nhận được
tín hiệu kết thúc, máy tính đọc từ lối ra ADC. Những đường tín hiệu chính điều khiển quá
trình móc nối này như trên hình vẽ.

Đường tín hiệu SC ( bắt đầu chuyển đổi ) lên mức kích hoạt cao (HIGH) báo với ADC bắt
đầu quá trình chuyển đổi (tính toán ). Sau khi kết thúc lối ra EOC xuống mức thấp (LOW)
báo hiệu giá trị ở lối ra của ADC đã ổn định dấu – báo rằng đây là đường hoạt động ở mức
thấp. giản đồ thời gian của chu trình chuyển đổi như trên hình vẽ.

4.3.1/ ADC XẤP XỈ LIÊN TIẾP

41
Phương pháp xấp xỉ liên tiếp là phương pháp phổ biến cho các kiểu ADC do tốc độ, độ chính
xác và dễ thiết kế của nó. Hoạt động nhờ việc so sánh thế được sinh với thế lối vào. Một
mạch dãy và một DAC tạo ra thế so sánh như trên hình vẽ :

Phương pháp xấp xỉ liên tiếp : phương pháp trên cơ sở “đúng” và “sai”. Tín hiệu lối vào được
xấp xỉ liên tiếp bằng một nửa độ lớn của bước trước đó. Như trên hình vẽ :

Bước thứ nhất kiểm tra xem nếu điện thế vào Vin lớn hơn một nửa khoảng điện thế
(Vranger) của ADC. Giả sử rằng lối ra là “đúng” thì phép xấp xỉ tiếp theo sẽ kiểm tra xem
nếu Vin lớn hơn (1/2 + ẳ) giải điện áp Vranger. Giả sử kết quả là sai. Phép so sánh thứ ba
sẽ kiểm tra xem liệu Vin có lớn hơn (1/2 + ẳ + 1/8) của giải điện ap Vranger. Quá trình này
sẽ lặp lại cho đến khi thế vào xấp xỉ đủ chính xác.

Như vậy ADC xấp xỉ liên tiếp gồm bộ so sánh, một chuyển đổi số tương tự (DAC), một đồng
hồ xung nhịp và một thanh ghi xấp xỉ liên tiếp SAR.

Bộ so sánh :
Khuyếch đại thuật toán sử dụng để so sánh hai giá trị điện thế ở cùng độ lớn ( biên độ ),
nếu không dùng ở chế độ có phản hồi. Lối ra của một bộ thuật toán lý tưởng là +15V. Nếu
V + lớn hơn V – và bằng –15V nếu V + nhỏ hơn V - . Những mạch như vậy được gọi là bộ
so sánh ( comparator ). Trong trường hợp này, Vout là giới hạn về 0 tương ứng với 5 V để
lối ra có thể tương thích TTL.
Chuyển đổi DAC : Bộ chuyển đổi DAC chuyển đổi số nhị phân thành thế tương tự tương ứng
tỷ lệ về độ lớn (biên độ ) với giá trị của số đó.

42
Khởi đầu quá trình chuyển đổi thế so sánh được đặt bằng nửa thang đo lối vào. Nếu thế so
sánh quá lớn lần lượt sẽ thiết lập phép so sánh giữa một tập các giá trị một nửa các giá trị
giữa giới hạn thấp và điểm một nửa trước đó. Nếu thế so sánh quá nhỏ thì thế đặt liên tiếp
phép so sánh giữa điểm giữa và toàn thang. Quá trình này tiếp tục cho đến khi đạt đến
khoảng tăng nhỏ nhất. Mã trên lối ra là giá trị số tính được. Hình vẽ biểu diễn phép so sánh
với bộ chuyển đổi 4 bít và chu trình lấy mẫu xấp xỉ liên tiếp.

Có thể thấy số phép so sánh cần thiết bằng số bít trong mẫu. như vậy số chu kỳ xung nhịp
cần thiết cho phép tính xấp xỉ liên tiếp bằng số bít lối ra.

4.3.2/ ADC LỐI RA SONG SONG

43
Bộ chuyển đổi song song N bít ( hay bộ chuyển đổi kiểu flash) dùng các thang điện trở để
tạo ra 2N - 1 mức lượng tử từ LSB (bít ít ý nghĩa nhất ) đến (2N-1) lần LSB. Mỗi chúng so
sánh với thế vào dùng 2N - 1 bộ so sánh. Nếu thế trên lối vào thuận (+) của bộ so sánh lớn
hơn lối vào đảo (-) thì lối ra sẽ ở mức cao , khác đi sẽ là mức thấp. Thế ngưỡng được đưa
vào lối vào lối vào (+) và thế vào đưa vào lối vào (-). Như vậy lối ra của mỗi bộ so sánh sẽ
cao khi thế vào lớn hơn thế ngưỡng và thấp khi nhỏ hơn. Một bộ giải mã (decode) sẽ dịch
lối ra từ các bộ so sánh thành mã nhị phân. Hình vẽ biểu diễn một ADC song song 3 bít với
7 bộ so sánh. bảng dưới đây cũng liệt kê số lượng các bộ so sánh cần thiết cho ADC với độ
phân giải khác nhau. Có thể thấy DC 16 bít cần 65535 mức thế và bộ so sánh.
ADC flash không yêu cầu xung nhịp và tốc độ của nó chỉ bị giới hạn bởi thời gian thiết lập
của tín hiệu. Thường thường được dùng trong các ứng dụng tốc độ cao như bộ giải mã mầu
trên các màn hình VGA / SVGA, các ứng dụng rada,...

4.3.3/ LẬP TRÌNH CHO CARD ĐIỀU KHIỂN ADC

44
Hai đường điều khiển sẽ đồng bộ việc truyền dữ liệu giữa máy tính và ADC. Chúng là các
đường SC ( bắt đầu chuyển đổi ) và EOC ( kết thúc chuyển đổi ). Đường SC là đường lối vào
ADC và dùng để khởi động một quá trình chuyển dổi. EOC là lối ra từ ADC dùng để chỉ ra
rằng quá trình chuyển đổi đã kết thúc dữ liệu trên ADC là hợp lệ và có thể bắt đầu đọc vào
máy tính. Tín hiệu này ở mức kích hoạt thấp.
Như vậy khi SC ở mức cao, bắt đầu một quá trình chuyển đổi khác với EOC ở mức thấp khi
ADC đã thực hiện xong việc chuyển đổi. PPI có thể được dùng để điều khiển và quan sát các
đường tín hiệu móc nối này bằng cách nối hai đường với 2 bít trên cổng C ( điều khiển SC
và quan sát EOC )

Đường EOC là lối vào với PPI và SC là lối ra. Máy tính khởi động quá trình chuyển đổi ADC
bằng cách đặt SC lên cao. Tiếp theo máy tính sẽ quan sát EOC cho đến khi nào nó xuống
mức thấp. Khi đó sẽ tiến hành đọc tại cổng (A) mà lối ra ADC nối với nó.
Cổng C có thể tách ra thành hai nửa vào và ra C ( cao ) và C (thấp). Khi này C thấp là lối
vào ( nối với EOC ) và C (cao) là lối ra ( SC). lưu đồ như sau :

1/Đặt SC lên cao (PC4 - 1)


2/Quan sát EOC (PC0 ) cho đến khi nó xuống thấp (0)
3/Đọc từ cổng A
4/Đặt SC (PC4) xuống thấp (PC4 - 0 )
5/Trễ một chút
6/Quay trở lại 1

a/Ghép nối với ADC qua PPI với mode 1


Vấn đề chính với Mode 0 là máy tính phải thường xuyên quan sát đường EOC. Kỹ thuật để
cải tiến là cho phép PPI thông báo cho ADC biết dữ liệu ở vùng đệm của cảng chưa được đọc
và đừng viết thêm dữ liệu mới vào. Điều này đạt được nhờ việc sử dụng PPI ở mode 1.
Trong mode này cổng C được dùng để móc nối

Khi gửi số liệu vào máy tính, thiết bị ngoài đặt STB xuống mức kích hoạt thấp (0), dữ liệu
sau đó được đọc vào vùng đệm vào. Tiếp theo PPI tự động đặt IBF lên cao và dữ nguyên
cho đên khi PC đọc xong dữ liệu từ vùng đệm. Đường này được dùng để báo cho ngoại vi
đừng gửi thêm bất kỳ dữ liệu nào đến PPI. Một khi dữ liệu đã được đọc IBF trở lại mức thấp
báo cho ngoại vi (ADC) có thể tiếp tục gửi dữ liệu.

45
Hình vẽ biểu diễn các thiết lập có liên quan đến chương trình điều khiển. đây là hoạt động
móc nối điển hình, chỉ có điều cần đến một bộ đảo giữa IBF và SC để cho phép các tín hiệu
được thích hợp.

Khi vùng đệm của cổng đầy và đường PC5 (IBF) là không ở mức kích hoạt ( thấp ). Kết nối
này thông qua bộ đảo đến SC của ADC. Khởi động nó ở mức cao sẽ bắt đầu quá trình
chuyển đổi của ADC. Khi kết thúc EOC xuống thấp đường này lại nối trực tiếp với PC4 (STB)
khiến cho dữ liệu trên cổng A có thể được nạp vào vùng đệm vào của cổng. PPI sau đó tự
động đặt bít PC5 (IBF) lên cao ( gây ra SC chuyể xuống thấp và reset ADC ) đường này dữ
nguyên cho đến khi PC đọc xong dữ liệu từ vùng đệm vào. Khi đó đường IBF xuống thấp
làm cho SC lên cao. ADC lại bắt đầu một quá trình chuyển đổi mới

b/ Lập trình ở mode 1


Vì PC4 (STB) xuống thấp lối ra của ADC được đọc vào vùng đệm. Khi xảy ra điều này thì
PC5 (IBF) tự động lên mức cao báo hiệu vùng đệm vào đầy. Như vậy PC phải kiểm tra
đường này để phát hiện nếu có số liệu hợp lệ trên vùng đệm vào chưa. Lệnhì
((inportb(PORTC) & 0x20 ) == 0x20) đọc một byte từ cổng C và mặt nạ đó để kiểm tra bit
PC5 (IBF). Nếu bít này là 1 thì đường này là cao và dữ liệu trong vùng đệm là hợp lệ.

46
4.3.4/ CHUYỂN ĐỔI TỪ SỐ THÀNH GIÁ TRỊ TUYỆT ĐỐI
Trong hầu hết các trường hợp giá trị số đọc được từ ADC cần phải chuyển đổi sang giá trị
thực tế như áp suất hay nhiệt độ. Để xác định nhiệt độ tuyệt đối cần thiết phải có đặc trưng
chuyển đổi nhiệt độ sang điện áp của cảm biến (sensor) và hệ số khuyếch đại sử dụng.
Thường thường, thế lối ra từ sensor nhiệt độ đựoc đưa vào bộ khuyếch đại với cả tín hiệu
đơn cực lẫn tín hiệu lưỡng cực.

Hình vẽ biểu diễn đặc tuyến nhiệt độ . Cái đầu là khoảng thế đơn cực với mức thế 5V biểu
diễn cho nhiệt độ 100oC và 0V biểu diễn cho 0oC. chuyển đổi giữa thế lối ra (V) và nhiệt độ
sẽ theo công thức :
T = 20xV oC
Cái thứ hai là giải điện áp lưỡng cực. Thế +5V biểu diễn nhiệt độ 100oC và -5V biểu diễn
0oC. Công thức chuyển đổi sẽ như sau :

47
T = 10xV + 50oC

Thế ra của bộ khuyếch đại được đưa vào ADC hoặc loại đơn cực hoặc loại lưỡng cực. hình vẽ
biểu diễn phép chuyển đổi giữa giá trị số và nhiệt độ. Chuyển đổi này giả thiết rằng thế vào
cực đại mã hoá 255 và cực tiểu là 0. Từ đó có thể có được đồ thị chuyển đổi gữa giá trị lấy
mẫu (số) và nhiệt độ đo được.

Ví dụ : Hệ ROBOT đơn giản


Hai diod nhạy sáng gắn với một trục của một motor bước điện từ có thể thực hiện được
chức năng của một hệ ROBOT đơn giản ( hệ tự động trên cơ sở phản hồi)

Motor bước :
Các xung TTL áp dụng với các cuộn dây của motơ, làm quay trục đi các bước rời rạc, theo
các góc. Các transitor nguồn NPN- (kiểu BD677) sử dụng để điều khiển các cuộn này. Để
điều khiển mô tơ theo một hướng xác định, Các tansitor cần được điều khiển bật tắt (dẫn)
theo một chuỗi tuần từ xác định. Các bước liên tiếp như vậy tạo ra mỗi lần tuần tự bật
nguồn cho cuộn dây tiếp theo và tắt nguồn cho cuộn trước đo. Motơ quay ngược lại khi mã
trứơc đó được đặt lên cuộn. Chuỗi tuần tự các mã cho bốn cuộn dây của mô tơ bước được
cho trong bảng.
Nếu đặt “1” lên lối vào của một transitor nó sẽ dẫn điện và cuộn tương ứng được kích hoạt.
Hệ thống cảm biến :Hai diod ánh sáng được nối với một bộ so sánh analog. Lối ra so sánh
sẽ là “1” hoặc “0” tuỳ thuộc vào photo diod nào được chiếu sáng hơn.

Hệ ROBOT :
Lối ra bộ so sánh được dùng để phản hồi trở lại máy tính để quyết định việc điều khiển
motơ quay trái hay phải. ( theo chiều kim đồng hồ hay ngược lại chính là hướng tới nơi có
nhiều ánh sáng hơn hay sáng ít hơn tuỳ thuộc vào cách lập trình )
Lưu ý : vì hai diod không bao giờ được chiếu sáng như nhau nên MOTOR sẽ không bao giờ
dừng lại ở giữa hai vị trí.
Một hệ thống như thế gọi là hệ SERVO

48
Bài tập điều khiển mô tơ bước: Dùng ngôn ngữ lập trình C để viết chương trình điều khiển mô
tơ bước (4 lối điều khiển) quay phải, quay trái, tăng tốc, giảm tốc dùng bàn phím
1) Khai báo chương trình

Hình : Khai báo biến mảng giữ các giá trị nhị phân dùng để điều khiển 4 bít thấp cổng A, các
biến điều khiển khác

2) Lập 2 hàm điều khiển mô tơ quay phải hoặc quay trái

Hình : Khai báo 2 hàm điều khiển phải, trái dùng 2 vòng lặp xác định, điều kiện thoát khi gõ
phím
3) Khai báo thân chương trình, bắt phím

49
Hình : Khởi tạo chế độ Mod, bẫy phím được gõ

4) Xử lý rẽ nhánh điều khiển

Hình: Điều khiển rẽ nhánh cho các trường hợp bấm phím mũi tên, phím ESC

5) Màn hình kết quả

Hình: Màn hình kết quả trong DOS

4.4/ Chuyển đổi số tương tự (DAC)


Chuyển đổi từ một giá trị số thành mức thế tương tự . Thường dễ thực hiện hơn ADC và có
thể được xây dựng trên cơ sở các chuyển mạch điện tử và một bộ cộng thế.
PC có thể ghép nối với DAC nhờ nối trực tiếp các bít của một cổng PC với các lối vào của
DAC. Ví dụ như khi nối cổng A với các bít của một DAC 8 bít. Lưu ý rằng không cần thiết
xung nhịp ngoài cũng như các phần cứng để đồng bộ.

50
Dạng của một xung tam giác có thể được biểu diễn trên hình vẽ và mô phỏng lại với DAC .
với 256 mức, viết ra cổng PPI các giá trị từ 0 - 255 ra DAC. Hiệu ứng xung tam giác sẽ đạt
được nhờ việc đếm lên từ 0 – 255 rồi ngược lai đến 0. Tiến trình này lặp lại cho đến khi có
một phím được bấm. nếu có thể quan sát dạng sóng trên giao động ký và đo thời gian giữa
các vi bước liên tiếp.

51
Thư viện uiblib.c giúp cho việc lập trình ghép nối trở nên dễ dàng
Sử dụng :
Copy file thư viên uiblib.c thư viện vào thư muc C:\TC\include
Khai báo thư viện đầu chương trình
#include <uiblib.c>
hoặc khai báo
#include "uiblib.c" nếu file này nằm trong thư mục hiện tại (thư mục của sinh viên)
Lưu ý: Các máy tính thực tập tại ITIMS đã cài sẵn thư viện này nên các bạn dùng cách khai báo
thứ nhất để sử dụng các hàm trong thư viên.

Hình : Hàm đọc giá trị một kênh ADC (từ 1.4) trả về giá trị 12 bít

Hình : Hàm kiểm tra trạng thái hiện tại của một bộ đếm bằng cách chốt sử dụng lệnh đọc lại bộ
đếm với 3 bộ đếm C0..2 và kiểm tra bit 7

Hình : Hàm kiểm tra xem một bộ đếm đã được nạp hay chưa bằng cách sử dụng lệnh đọc lại bộ
đếm và kiểm tra bít 6

52
Hình : Hàm đọc và trả về giá trị 1 bộ đếm 16 bít
Ứng dụng thư viện uiblib.c

Hình : Tạo một dao động ký điện tử

Hình : Tạo một dao động ký điện tử cách khác

Dưới đây là các bài tập chính trong phần thực hành môn học, mục đích các bài tập này là giúp
làm quen với một số kỹ thuật thực nghiệm khi ghép nối máy tính với thiết bị ngoại vi, thu thập
dự liệu từ ngoại vi qua các bộ cảm biến, điều khiển ngoại vi, phần xử lý tín hiệu số không phải là
trọng tâm trong phần này.

DANH MỤC BÀI TẬP :


1/ GHÉP NỐI VÀO RA SONG SONG (PPI - 8255)
1.1/ Viết chương trình nhập một số thập phân từ bàn phím và viết giá trị mã nhị phân ra
cổng A (C) của vi mạch vào ra 8255 trên card UIB, quan sát mã số nhị phân lối ra. (tạo mã
GRAY)

53
1.2/ Viết chương trình đọc một số nhị phân từ cổng A (C) của vi mạch 8255 trên card UIB
qua giao diện FRONT-END hiển thi ra dạng số thập phân, hexa, nhị phân trên màn hình
máy tính
1.3/ Viết chương trình điều khiển đèn giao thông tại một ngã tư giả sử dùng 3 bít thấp trên
cổng A để điều khiển một chiều và 3 bít cao điều khiển chiều còn lại.
1.4/ Viết chương trình tạo đèn quảng cáo
- đèn nhấp nháy
- đèn chạy
1.5/ Xây dựng chương trình đọc một số từ cổng A rồi quay các bít của số đó theo chiều kim
đồng hồ và ngược lại.
1.6/ Viết chương trình điều khiển motơ bước : chiều quay, tốc độ

2/ LẬP TRÌNH ĐỊNH THỜI (PIT - 8254 )


2.1/ Viết chương trình đếm sự kiện ( số xung từ một công tắc chống rung anti-bounce)
2.2/ Viết chương trình tạo máy phát xung vuông với tần số nhập vào từ bàn phím.
2.3/ Viết chương trình đo khoảng thời gian ( công tắc chốn rung, xung vuông TTL)
2.4/ Viết chương trình đo tần số sóng vuông

3/ LẬP TRÌNH ĐIỀU KHIỂN ADC


3.1/ Viết chương trình thực hiện chức năng của một đồng hồ hiện số (Volt kế) trong giải
điện áp đo từ 0 – 5V.
3.2/ Viết chương trình thực hiện một máy tự ký (RECORDER ) ghi tín hiệu từ 4 kênh ADC ra
một tệp dữ liệu KQ.DAT và vẽ kết quả ra màn hình.
3.3/ Viết chương trình mô phỏng chức năng của một dao động ký nhớ in ra màn hình ( 1
kênh – 4 kênh )

Hình : Tạo một dao động ký điện tử

4/ LẬP TRÌNH VỚI DAC


4.1/ Viết chương trình cấp điện áp một chiều với giá trị nhập vào từ bàn phím
4.2/ Viết chương trình tạo tín hiệu dạng xung (răng cưa, vuông, sin, tam giác )

5/ Lập trình ghép nối nâng cao


5.1/ Viết chương trình ghép nối hai FRONT-END với nhau qua cổng A sử dụng MODE 1
5.2/ Viết chương trình ghép nối hai FRONT-END với nhau qua cổng A sử dụng MODE 2
5.3/ Viết chương trình đo thời gian phản ứng (PIT)
5.4/ Viết chương trình đo và hiển thị kết quả chuyển đổi ADC kết hợp với bộ đếm 0 định
thời chính xác thời điểm đo
5.5/ Viết chương trình đo cảm ứng từ của một nam châm khi đi qua cuôn dây cảm ứng
5.6/ Viết chương trình đo nhiệt độ sử dụng cảm biến cặp nhiệt điện
5.7/ Viết chương trình đo cường độ sáng sử dụng cảm biến độ sáng
5.8/ Viết chương trình đo cảm ứng từ sử dụng cảm biến HALT
5.9/ Xây dưng hệ ROBOT đơn giản với mô tơ bước điều khiển bằng nguồn sáng
5.10/ Viết chương trình thu tín hiệu từ một máy phát chức năng cùng nhiễu, xây dựng thuật

54
toán lọc nhiễu cửa sổ trượt, trung bình hoá đa kênh, ...
5.11/ Xây dựng chương trình điều khiển đóng hệ thống quạt gió, thay đổi tốc độ theo nhiệt
độ môi trường, điều khiển bật tắt đèn theo độ sáng.
5.12/ Viết chương trình báo động khi nhiệt độ vượt quá một giới hạn nhất định.
5.13/ Viết chương trình điều khiển tốc độ quay của một mô tơ một chiều
5.14/ Viết chương trình thực hiện chức năng một ADC xấp xỉ liên tiếp với một bộ chuyển đổi
DAC, so sánh, và PPI cổng A.
5.15/ Viết chương trình đo đặc trưng phóng điện của một tụ điện trong mạch RC.

Lập trình ghép nối nối tiếp với vi mạch 8251


Viết chương trình cho phép một máy tính truyền thông báo đến một máy tính khác qua giao
diện RS232 (COM2)
Viết chương trình cho phép 2 máy tính nói chuyện với nhau qua giao diện RS232 (COM2)
Viết chương trình cho phép truyền tệp qua giao diện RS232
Lập trình với cổng máy in
Viết chương trình cho phép máy tính in ra các ký tự
Viết chương trình cho phép hai máy tính trao đổi thông tin với nhau qua giao diện máy in
(LPT1)

XÂY DỰNG MỘT SỐ PHÉP ĐO THỰC NGHIỆM

I- PPI-8255A
Thiết lập cổng card ghép nối UIB :
- Sử dụng khoảng địa chỉ chuẩn 300h – 30Fh
- Ngắt chuẩn : ngắt 5
- Nguồn xung nhịp đặt ở 1MHz

1/ Đo điện áp kênh 1 : Nối một chiết áp chia thế với kênh 1 ADC : chạy chương trình đo
điện áp, kiểm tra xem giá trị điện áp 5 V có đúng bắng 255 hay 4095 (UIB, ADC 12bít )
không.

2/ Đọc thế trong vòng lặp : Nối mạch điện như hình vẽ.
Fµ , C = 220Ω Chọn giá trị R = 10K
- Nặp cho tụ bằng công tắc S
- Bật công tắc để chuyển sang chế độ phóng
- Đo và vẽ đặc trưng đường phóng của tụ điện
Trên cơ sở giá trị đo được có thể xác định giá trị R*C = (tkết thúc - tbắt đầu )/ln(Vbắt
đầu/Vkết thúc)
Với giá trị đo được với phép đo không dùng định thời của card, có thể xác định được thời
gian trể tương ứng : tcalc = (tkết thúc - tbắt đầu )/9 = [R*C*ln(Vbắt đầu /Vkết thúc)]/9
Thay đổi hằng số phóng nạp bằng chiết áp R (thay đổi giá trị của R)

3/ Đo điện áp theo thời gian :


Thời gian trên 1000 ms của chương trình trong khi lặp nhiều khi không ổn định, Sử dụng
nguồn xung nhịp nội của card ghép nối (1MHz) để định thời cho việc đọc điện áp trên kênh
1 của ADC . Trước khi tiến hành đo cần nhập thời gian giữa các phép đo liên tiếp.

55
4/ Đo nhiệt độ với điện trở NTC ( điện trở với hệ số nhiệt độ âm) để xác định nhiệt độ
sau những khoảng thời gian xác định
Hình vẽ :

5/ Đo độ sáng với LDR ( điện trở phụ thuộc độ sáng ). đo độ sáng ( hay độ trong suốt )
của chất lỏng trong các phản ứng hoá hay hoá sinh.
Hình vẽ :

6/ Chương trình đo thế kích hoạt bằng xung : Xây dựng mạch điện như hình vẽ : bấm
công tắc để khởi động quá trình đo, điện áp được đọc vào qua kênh 1, điện áp của 1 in ra
màn hình mỗi khi bấm công tắc.

7/ Có thể tiến hành đo độ pH :


Khi có một giọt dung dịch rơi vào chất dung môi, độ pH được đo. Cổng transitor ánh sáng
hoạt động như triger kích hoạt quá trình đo: Khi tia sáng bị che bởi giọt dung dịch, một
xung dương được đưa vào bộ đếm.

8/ Đo trên 2 kênh :
Xây dựng mạch điện chia áp như sơ đồ :
Xây dựng chương trình đo : Mức thế trên kênh 1 và 2 được đọc sau khi bấm 1 phím. Mỗi
phím bấm có 2 phép đo thế được tiến hành (V1 và V2) và in ra màn hình dưới dạng bảng
hay 1 điểm trên đồ thị :
- Đo điện áp tại các điểm khác nhau trên mạch điện
- Với một giá trị R đã biết, dòng I , đặc trưng V có thể đo được với các trường hợp đèn, diod
hay điện trở NTC.

9/ Đo thời gian :
Xây dựng mạch điện, Thời gian đến khi tia sáng chiếu lên phototransitor được đo theo ms :
- Xác định giai đoạn thời gian ( hay tốc độ trung bình ) mà một đối tượng vượt qua một
cổng GATE.
10/ Đếm sự kiện : Xây dựng hệ thống theo sơ đồ : Số giọt dung dịch rơi qua một cổng
sáng sẽ được đếm. ( giáo trình Tin học I phần II - phòng thí nghiệm máy tính – Trung tâm
ITIMS)
11/ Đếm số sự kiện trong một giây : Nối lối ra TTL của một máy phát chức năng với lối
vào bộ đếm. Tần số tín hiệu đo được sẽ được in liên tục ra màn hình
- Đo số vòng quay của một bánh xe : một đĩa với các lỗ được gắn vào bánh xe; Nhờ cổng
ánh sáng, số vòng trong 1 giây có thể đo được.
12/ Hệ thống đo và điều khiển :
Điều hoàn không khí :
- Bật tắt lò sưởi trung tâm (bật/ tắt)
- Nồi đun (bật/tắt)
- Quạt (bật/tắt)
- Airgrid ( mở/đóng )
- Tưới nước (bật/tắt)
- Mở cửa sổ (mở/đóng)
- Dò phương (có/không)
Các quá trình tiếp diễn
- Nhiệt độ tới hạn
- áp suất tới hạn

56
- Nồng độ cồn tới hạn
Thang máy
- Chuyển động (lên/xuống)
- Gọi từ trong ra (lên/xuống)
- Gọi từ ngoài vào (lên/xuống)
- Đếm đến giá trị 0 (có/không)
- Cửa thang máy (mở/đóng)
- Hãm khẩn cấp
- Chuông (bật / tắt )
Cũng có thể xét tới các hệ thống điều khiển cho đèn giao thông, thiết bị gia đình như máy
giặt, máy rửa chén, đun nước sôi, lò nướng, lò sưởi ...

1/ Viết chương trình đọc từ cổng A và viết ra màn hình


2/ ĐIều khiển số : Lưu ý khi sử dụng chức năng điều khiển :
- Lối ra chỉ có thể điều khiển lối vào tương tích TTL
- Nguồn cung cấp 5 V trên cáp chỉ chịu được cỡ 100mA (UIA) – 200mA(UIB)
Nói chung các lối ra này nên được dùng để mở đóng một transitor điều khiển một rơler.
Hình vẽ đèn LED sẽ bật sáng khi transitor dẫn điện.

Các ví dụ điều khiển là :


Đèn (bật/tắt)
điều khiển motor của hệ thống sưởi trung tâm (bật/tắt)
Quạt (bật/tắt)
Cungcấp gas (bật/tắt)
Đánh lửa điện (bật/tắt)
CUng cấp ôxy (bật/tắt)
Cung cấp nước (bật/tắt)
Lựa chọn điện áp
Lựa chọn tần số
Mô tơ bước (bật/tắt)

1/ Viết chương trình nhập một byte từ bàn phím và viết ra cổng C
2/ Hệ phản hồi (FEEDBACK) Trong các quá trình phản hồi : Việc kích hoạt hay tắt
điều khiển bằng tiến trình đo trước nó.
Đọc một giá trị từ cổng A, tính toán sau đó viết ra cổng C (tất cả giá trị đọc được và tính
được đều được viết ra màn hình)
3/ Viết chương trình tạo ra xung tần số cao và thấp trên lối ra của bộ đếm 2. ( có
thể thấy qua đèn chỉ thị trên OUT-2 nhấp nháy)
Móc nối : Các lệnh đọc và viết ra cổng có thể được thực hiện tại những vị trí nhất định trong
chương trình. Cũng có thể được ngắt ra trong chương trình hiện hành nhờ các ngắt và ưu
tiên với một lệnh I/O. Trong các trường hợp như vậy cần đến tín hiệu móc nối. Tín hiệu móc
nối chạy qua 5 đường cao nhất của cổng C (PC3-PC7).

Đo thời gian và tần số


Ta đã biết khi cổng Gate ở mức cao (=1) thì quá trình đếm được tiến hành, nếu lối vào ở
mức thấp (=1) thì giá trị bộ đếm sẽ không thay đổi giá trị xung nhịp lối vào, để đo một
khoảng thời gian người ta dùng tín hiệu giống như ..... với lối vào bộ đếm, nối tín hiệu với
lối vào Cổng gate và nối nguồn xung (với chu kì xác định vào lối vào xung nhịp của bộ
đếm). Hiệu số giữa giá trị bộ đếm trước và sau khi cổng Gate ở mức cao (1) chia cho tần số
của xung nhịp lối vào cho ta giá trị thời gian.
Phép đo tần số:

57
Một đặc trưng của tín hiệu tuần hoàn là tần số của tín hiệu, có 2 cách để đo tần số:
Đo số xung trong 1 khoảng thơi gian đã biết , từ đó tính ra tần số(đo tần số cao).
Đo chu kì: đo 1 chu kì đơn và tính ra tần số (đo tần số thấp) .

Phép đo tần số cao:


Tín hiệu Sensor được nối vào xung nhịp của bộ đếm, bộ đếm thứ 2 được dùng như là bộ
chia tần để điều chỉnh thời gian đo, lối ra của bộ chia tần nên lối vào cỏng vào Gate của bộ
đếm, khi tín hiệu trên cổng Gate =1 thì bộ đếm bắt đầu đếm số xung. Khi tín hiệu trên cổng
gate =0 thì bộ đếm dùng quá trình đếm và máy tính xử lý và tính ra tần số.

Phép đo tần số thấp:


Nếu tín hiệu Sensor có tần số thấp thì phép đo sẽ hiệu quả hơn trong một chu kì, tín hiệu từ
sensor nên được gửi đến bộ chia 2 (VD: Triger JK), lối ra của Triger là 1 trong một chu kì
độc lập với chu kỳ của tín hiệu, lối ra của Triger sẽ nối ra cổng gate của bộ đếm. Với một bộ
chia tần dải đo có thể điều chỉnh, giải pháp tốt nhất là dùng nguồn xung nhịp cao nhất có
thể và ghép nối tiếp các bộ đếm để chia tần.

Bài tập:
1. Viết chương trình sử dụng bộ đếm PIT 82C54 để hiển thị số xung đếm được khi
đưa xung vào Clock 1.

58
2. Viết chương trình sử dụng bộ đếm PIT 82C54 để đo khoảng thời gian giữa 2 lần
nhấn/nhả công tắc.

3. Viết chương trình sử dụng bộ đếm PIT 82C54 để đo tần số ( Máy phát 1Mhz nối với
Clock 0, Clock 1 nối với External)

59
Hình : Khởi tạo bài tập đếm xung

Hình : Thân chương trình bài tập đếm xung

60
61
Hình: Khởi tạo bài tập đo thời gian

Hình: Thân chương trình bài tập đo thời gian

62
Hình : Khởi tạo bài tập đo tần số

63
Hình : Thân chương trình bài tập đo tần số

Hình : Kiểm tra kết nối cổng DAC - 0x210 hoặc 0x310

Hình : Khai báo bài tập tạo dao động ký

Hình : Hàm tạo xung vuông dùng DAC

Hình : Hàm tạo xung tam giác

64
Hình : Hàm tạo sóng SIN

Hình : Chương trình chính gọi đến các hàm tạo dạng sóng dùng DAC

Hướng dẫn

65

You might also like