MỤC LỤC
LỜI MỞ ĐẦU 2
GIỚI THIỆU ĐỀ TÀI 3
1.1.1.Giới thiệu chung: 4
Sơ đồ khối và chức năng các khối của vi điều khiển 8051: 5
1.1.3.Cấu trúc các port xuất nhập vi điều khiển 8051: 13
1.2. Giao tiếp cổng nối tiếp 15
1.3. Giới thiệu các linh kiện sử dụng trong mạch 34
CHƯƠNG 2 . PHÂN TÍCH HỆ THỐNG 43
2.1. Yêu cầu bài toán 43
2.2. Sơ đồ khối: 43
2.3. Phân tích mô hình hệ thống 44
2.4. Khung truyền dữ liệu 44
2.5. Thuật toán điều khiển 44
CHƯƠNG 3 . XÂY DỰNG HỆ THỐNG 48
3.1. Thiết kế phần cứng 48
3.1.1. Khối tạo xung dao động 48
3.1.2.Mạch giao tiếp RS232: 48
3.1.3.Mạch kết nối vi điều khiển với led 7 thanh: 50
3.2. Hệ thống trên máy tính 54
KẾT LUẬN VÀ HƯỚNG PHẤT TRIỂN 56
LỜI MỞ ĐẦU
Trong lĩnh vực kỹ thuật ngày nay thì lĩnh vực điện tử đóng vai trò vô cùng quan
trọng trong thời đại công nghiệp hoá, hiện đại hoá đất nước.Nói đến lĩnh vực điện tử
thì chúng ta không thể không nhắc đến ngành kỹ thuật điện tử - vi điện tử.Đó là chiếc
chìa khoá vàng mở ra một kỷ nguyên mới - kỷ nguyên của ngành công nghệ thông tin.
Tuy chỉ mới thâm nhập vào nước ta gần đây nhưng công nghệ thông tin đã phát
triễn rất nhanh và ngày càng giữ vai trò quan trọng trong nền công nghiệp hoá nước
nhà.Với sự phát triển nhanh chóng của ngành công nghệ thông tin và những lợi ích
thấy rõ thì việc điều khiển các thiết bị thông qua máy tính đóng vai trò quan trọng
trong cuộc công nghiệp hoá. Lấy ví dụ trong các ngân hàng làm việc về tiền tệ thì tỷ
giá của các đồng tiền trên thế giới luôn có sự biến động thay đổi.Nên để niêm yết tỷ
giá được nhanh chóng, thường xuyên thì họ sử dụng các bảng hiển thị để niêm tỷ giá
kết nối với máy tính,và có thể thay đổi tỷ giá từ máy tính của ngân hàng. Xuất phát từ
thực tiễn này, em đã quyết định chọn đề tài: “Thiết kế hệ thống bảng hiển thị tỷ giá
ngân hàng”. Đây chỉ là một trong rất nhiều các ứng dụng của việc giao tiếp giữa máy
tính với các thiết bị sử dụng vi điều khiển và sử dụng máy tính để điều khiển các thiết
bị đó.Nhưng nó là cơ sở để có thể phát triển trong các hệ thống lớn khác.
Em xin được cảm ơn thầy giáo Lê Hùng Linh,người đã hướng dẫn nhiệt tình cho
em trong quá trình từ ý tưởng trở thành sản phẩm như hiện nay.
Do giới hạn về thời gian cũng như kiến thức, quy mô trong bài báo cáo nên nội
dung còn nhiều thiếu sót.Rất mong sự đóng góp ý kiến của quý thầy cô và các bạn
sinh viên để bài báo cáo được hoàn thiện hơn.
Xin chân thành cảm ơn!
GIỚI THIỆU ĐỀ TÀI
Đặt vấn đề
Với sự phát triển mạnh mẽ về khoa học kỹ thuật trong những thập niên gần đây
ngành công nghệ thông tin đã tạo ra bước ngoặt quan trọng trong việc đáp ứng
nhưng nhu cầu của con người. Hiện nay ứng dụng của công nghệ thông tin đã trở
nên gần gũi và quen thuộc với con người hơn, và có lẽ đó là một phần thiết yếu của
cuộc sống .Với sự phát triển của khoa học kỹ thuật, nhu cầu ngày càng cao của đời
sống nhân dân, các sản phẩm ngày càng phải tân tiến hơn để đáp ứng những nhu cầu
trên. Xuất phát từ thực tế nói trên, cùng với các kiến thức đã học tập được ở nhà
trường và kế thừa những kinh nghiệm và thành tựu của các anh chị sinh viên khóa
trước, nên em xin chọn đề tài “Hệ thống hiển thị tỷ giá ngân hàng trên” sử dụng vi
điều khiển họ 8051.
Lý do chọn đề tài
Hiện nay, đất nước ta đang trong giai đoạn phát triển mạnh mẽ, nền kinh tế ngày
càng phát triển.Các hoạt động phát triển kinh tế của cá nhân và tập thể cũng phát
triển rất nhanh.Để phục vụ cho việc phát triển kinh tế các ngân hàng xuất hiện rất
nhiều hoạt động trong lĩnh vực tiền tệ , hỗ trợ về vốn cho các cá nhân tập thể trong
việc kinh doanh.Không chỉ là các hoạt động kinh doanh, buôn bán trong nước mà
còn các hoạt động kinh doanh hợp tác đầu tư quốc tế.Vì thế các ngân hàng luôn cập
nhật tỷ giá của đồng tiền trong nước với các nước khác để phục vụ cho việc trao đổi
tiền tệ,kinh doanh với nước ngoài.Để phục vụ cho việc cập nhật tỷ giá được dễ dàng
hơn thì các hệ thống bảng hiển thị tỷ giá kết nối với hệ thống máy tính của ngân
hàng có tác dụng rất lớn.
Mục đích nghiên cứu
Mục đích của đề tài là thiết kế một sản phẩm giúp cho việc cập nhật tỷ giá giữa
các đồng tiền trên thế giới hoặc hiển thị số trên bảng hiển thị tùy ý theo mục đích.
Khi thực hiện đề tài này sinh viên có khả năng vận dụng các kiến thức đã học và tìm
hiểu sâu hơn về vi điều khiển, các linh kiện điện tử và có thêm kinh nghiệm thao tác
với mạch điện.
Giới hạn nghiên cứu
Do điều kiện thời gian có hạn, kinh phí eo hẹp và năng lực còn hạn chế nên trong
phạm vi của để tài em chỉ có thể trình bày nội dung như sau: Sử dụng vi điều khiển
AT89C52 làm trung tâm điều khiển, kết hợp với một số linh kiện khác để máy tính
và vi điều khiển có thể giao tiếp với nhau,truyền nhận dữ liệu hiển thị lên led 7
thanh.
Ý nghĩa khoa học và thực tiễn của đề tài
Đề tài này thực hiện nhằm mục đích giúp sinh viên tim hiểu về kỹ thuật lập trình
vi điều khiển, nghiên cứu sâu hơn về các thiết kế phần cứng. Về mặt ý nghĩa thực
tiễn, đề tài này có thể mở rộng theo nhiều hướng nghiên cứu khác nhau nhằm đáp
ứng nhu cầu khác nhau.
Phương pháp nghiên cứu và phương tiện nghiên cứu
Phương pháp nghiên cứu chủ yếu là tham khảo tài liệu: chủ yếu là các tài liệu về
vi điều khiển, vi xử lý, điện tử số… Ngoài ra còn tham khảo trên một số trang web
và diễn đàn.
Phương tiện nghiên cứu:chủ yếu là sách giáo khoa, giáo trình và máy tính.
CHƯƠNG 1.CƠ SỞ LÝ THUYẾT
1.1 . Giới thiệu về vi điều khiển họ 8051
Với mục đích chủ yếu là tìm hiểu về họ vi điều khiển 8051 (MSC-51)nên em xin
trình bày một số nội dung về họ vi điều khiển này.
1.1.1. Giới thiệu chung:
MCS-51 là họ vi điều khiển của hãng Intel. Vi mạch tổng quát của họ MCS-51 là
chip 8051.
Chip 8051 có một số đặc trưng cơ bản sau:
•
•
•
•
•
•
•
•
•
•
Bộ nhớ chương trình bên trong: 4 KB (ROM).
Bộ nhớ dữ liệu bên trong: 128 byte (RAM).
Bộ nhớ chương trình bên ngoài: 64 KB (ROM).
Bộ nhớ dữ liệu bên ngoài: 64 KB (RAM).
4 port xuất nhập (I/O port) 8 bit.
2 bộ định thời 16 bit.
Mạch giao tiếp nối tiếp.
Bộ xử lý bit (thao tác trên các bit riêng lẻ).
210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit.
Nhân / Chia trong 4 µs.
Ngoài ra, trong họ MCS-51 còn có một số chip vi điều khiển khác có cấu trúc
tương đương như sau:
1.1.2. Các chân của vi điều khiển 8051:
Sơ đồ khối và chức năng các khối của vi điều khiển 8051:
Sơ đồ khối vi điều khiển 8051
- CPU (Central Processing Unit): Đơn vị xử lý trung tâm tính toán và điều khiển quá
trình hoạt động của hệ thống.
- OSC (Oscillator): Mạch dao động tạo tín hiệu xung clock cung cấp cho các khối
trong chip hoạt động.
- Interrupt control: Điều khiển ngắt nhận tín hiệu ngắt từ bên ngoài (INT0\, INT1\), từ
bộ định thời (Timer 0, Timer 1) và từ cổng nối tiếp (Serial port), lần luợt đua các tín
hiệu ngắt này đến CPU để xử lý.
- Other registers: Các thanh ghi khác Lưu trữ dữ liệu của các port xuất/nhập, trạng
thái làm việc của các khối trong chip trong suốt quá trình hoạt động của hệ thống.
- RAM (Random Access Memory): Bộ nhớ dữ liệu trong chip lưu trữ các dữ liệu.
- ROM (Read Only Memory): Bộ nhớ chương trình trong chip lưu trữ chương trình
hoạt động của chip.
- I/O ports (In/Out ports): Các port xuất/nhập điều khiển việc xuất nhập dữ liệu duới
dạng song song giữa trong và ngoài chip thông qua các port P0, P1, P2, P3.
- Serial port: Port nối tiếp điều khiển việc xuất nhập dữ liệu duới dạng nối tiếp giữa
trong và ngoài chip thông qua các chân TxD, RxD.
- Timer 0, Timer 1: Bộ định thời 0, 1 dùng để định thời gian hoặc đếm sự kiện (đếm
xung) thông qua các chân T0, T1.
- Bus control: Điều khiển bus điều khiển hoạt động của hệ thống bus và việc di
chuyển
thông tin trên hệ thống bus.
- Bus system: Hệ thống bus liên kết các khối trong chip lại với nhau.
Sơ đồ chân và chức năng các chân của vi điều khiển 8051:
Sơ đồ chân của vi điều khiển 8051
a. Port 0:
- Port 0 (P0.0 – P0.7) có số chân từ 32 – 39.
- Port 0 có hai chức năng:
•
Port xuất nhập dữ liệu (P0.0 - P0.7) không sử dụng bộ nhớ ngoài.
•
Bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) có sử dụng bộ nhớ
ngoài.
Lưu ý: Khi Port 0 đóng vai trò là port xuất nhập dữ liệu thì phải sử dụng các điện trở
kéo lên bên ngoài.
- Ở chế độ mặc định (khi reset) thì các chân Port 0 (P0.0 - P0.7) được cấu hình là
port xuất dữ liệu. Muốn các chân Port 0 làm port nhập dữ liệu thì cần phải lập trình
lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port truớc khi bắt đầu
nhập dữ liệu từ port (vấn đề này được trình bày ở phần kế tiếp).
- Khi lập trình cho ROM trong chip thì Port 0 đóng vai trò là ngõ vào của dữ liệu
(D0 – D7).
b. Port 1:
- Port 1 (P1.0 – P1.7) có số chân từ 1 – 8.
- Port 1 có một chức năng:
Port xuất nhập dữ liệu (P1.0 – P1.7) sử dụng hoặc không sử dụng bộ nhớ ngoài.
- Ở chế độ mặc định (khi reset) thì các chân Port 1 (P1.0 – P1.7) được cấu hình là
port xuất
dữ liệu. Muốn các chân Port 1 làm port nhập dữ liệu thì cần phải lập trình lại, bằng
cách ghi mức logic cao (mức 1) đến tất cả các bit của port truớc khi bắt đầu nhập dữ
liệu từ port (vấn đề này được trình bày ở phần kế tiếp).
- Khi lập trình cho ROM trong chip thì Port 1 đóng vai trò là ngõ vào của địa chỉ byte
thấp (A0 – A7).
c. Port 2:
- Port 2 (P2.0 – P2.7) có số chân từ 21 – 28.
- Port 2 có hai chức năng:
•
•
Port xuất nhập dữ liệu (P2.0 – P2.7) không sử dụng bộ nhớ ngoài.
Bus địa chỉ byte cao (A8 – A15) có sử dụng bộ nhớ ngoài.
- Ở chế độ mặc định (khi reset) thì các chân Port 2 (P2.0 – P2.7) được cấu hình là port
xuất dữ liệu. Muốn các chân Port 2 làm port nhập dữ liệu thì cần phải lập trình lại,
bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port truớc khi bắt đầu nhập
dữ liệu từ port (vấn đề này được trình bày ở phần kế tiếp).
- Khi lập trình cho ROM trong chip thì Port 2 đóng vai trò là ngõ vào của địa chỉ byte
cao (A8 – A11) và các tín hiệu điều khiển.
d. Port 3:
- Port 3 (P3.0 – P3.7) có số chân từ 10 – 17.
- Port 3 có hai chức năng:
•
Port xuất nhập dữ liệu (P3.0 – P3.7) không sử dụng bộ nhớ ngoài hoặc các
chức năng đặc biệt.
•
Các tín hiệu điều khiển có sử dụng bộ nhớ ngoài hoặc các chức năng đặc
biệt.
- Ở chế độ mặc định (khi reset) thì các chân Port 3 (P3.0 – P3.7) được cấu hình là
port xuất
dữ liệu. Muốn các chân Port 3 làm port nhập dữ liệu thì cần phải lập trình lại, bằng
cách ghi mức logic cao (mức 1) đến tất cả các bit của port truớc khi bắt đầu nhập dữ
liệu từ port (vấn đề này được trình bày ở phần kế tiếp).
- Khi lập trình cho ROM trong chip thì Port 3 đóng vai trò là ngõ vào của các tín hiệu
điều khiển (xem sách “Họ vi điều khiển 8051” trang 333-352).
- Chức năng của các chân Port 3:
Bit
Tên
Địa chỉ bit
Chức năng
P3.0
RxD
B0H
Chân nhận dữ liệu của port nối
tiếp.
P3.1
TxD
B1H
Chân phát dữ liệu của port nối tiếp.
P3.2
INT0\
B2H
Ngõ vào ngắt ngoài 0.
P3.3
INT1\
B3H
Ngõ vào ngắt ngoài 1.
B4H
Ngõ vào của bộ định thời/đếm 0.
P3.4
T0
P3.5
T1
B5H
Ngõ vào của bộ định thời/đếm 1.
P3.6
WR\
B6H
ðiều khiển ghi vào RAM ngoài.
P3.7
RD\
B7H
điều khiển đọc từ RAM ngoài.
e. Chân PSEN\:
- PSEN (Program Store Enable): cho phép bộ nhớ chương trình, chân số 29.
- Chức năng:
•
•
Là tín hiệu cho phép truy xuất (đọc) bộ nhớ chương trình (ROM) ngoài.
Là tín hiệu xuất, tích cực mức thấp.
PSEN\ = 0 trong thời gian CPU tìm - nạp lệnh từ ROM ngoài.
PSEN\ = 1 CPU sử dụng ROM trong (không sử dụng ROM ngoài).
- Khi sử dụng bộ nhớ chương trình bên ngoài, chân PSEN\ thường được nối với chân
OE\ của ROM ngoài để cho phép CPU đọc mã lệnh từ ROM ngoài.
f. Chân ALE:
- ALE (Address Latch Enable): cho phép chốt địa chỉ, chân số 30.
- Chức năng:
•
Là tín hiệu cho phép chốt địa chỉ để thực hiện việc giải đa hợp cho bus địa chỉ
byte thấp và bus dữ liệu đa hợp (AD0 – AD7).
•
Là tín hiệu xuất, tích cực mức cao.
ALE = 0 trong thời gian bus AD0 - AD7 đóng vai trò là bus D0 - D7.
ALE = 1 trong thời gian bus AD0 - AD7 đóng vai trò là bus A0 - A7.
- Khi lập trình cho ROM trong chip thì chân ALE đóng vai trò là ngõ vào của xung
lập trình (PGM\).
Lưu ý: fALE=fOSC/6 có thể dùng làm xung clock cho các mạch khác.
(MHz): tần số xung tại chân ALE. f
(MHz): tần số dao động trên chip (tần số thạch anh).
- Khi lệnh lấy dữ liệu từ RAM ngoài (MOVX) được thực hiện thì một xung ALE bị
bỏ qua.
g. Chân EA\:
- EA (External Access): truy xuất ngoài, chân số 31.
- Chức năng:
•
•
Là tín hiệu cho phép truy xuất (sử dụng) bộ nhớ chương trình (ROM) ngoài.
Là tín hiệu nhập, tích cực mức thấp.
EA\ = 0 Chip 8051 sử dụng chương trình của ROM ngoài.
EA\ = 1 Chip 8051 sử dụng chương trình của ROM trong.
- Khi lập trình cho ROM trong chip thì chân EA đóng vai trò là ngõ vào của điện áp
lập trình(Vpp = 12V – 12,5V cho họ 89xx; 21V cho họ 80xx, 87xx).
Lưu ý: Chân EA\ phải được nối lên Vcc (nếu sử dụng chương trình của ROM trong)
hoặc nối xuống GND (nếu sử dụng chương trình của ROM ngoài), không bao giờ
được phép bỏ trống chân này.
h.Chân XTAL1, XTAL2:
- XTAL (Crystal): tinh thể thạch anh, chân số 18-19.
- Chức năng:
•
Dùng để nối với thạch anh hoặc mạch dao động tạo xung clock bên ngoài,
cung cấp tín hiệu xung clock cho chip hoạt động.
•
XTAL1 ngõ vào mạch tạo xung clock trong chip.
•
XTAL2 ngõ ra mạch tạo xung clock trong chip.
Lưu ý: fTYP=12MHz
fTYP (MHz): tần số danh định.
i. Chân RST:
- RST (Reset): thiết lập lại, chân số 9.
- Chức năng:
•
Là tín hiệu cho phép thiết lặp (đặt) lại trạng thái ban đầu cho hệ thống.
•
Là tín hiệu nhập, tích cực mức cao.
RST = 0 Chip 8051 hoạt động bình thường.
RST = 1 Chip 8051 được thiết lặp lại trạng thái ban đầu.
Lưu ý: tReset≥2×TMachine
tRESET(µs):thời gian reset.
TMACHINE(µs):chu kỳ máy.
k. Chân Vcc, GND:
TMachine=12/fOSC.
fOSC=(MHz):tần số thạch anh.
- Vcc, GND: nguồn cấp ñiện, chân số 40 và 20.
- Chức năng:
•
•
Cung cấp nguồn điện cho chip 8051 hoạt động.
Vcc = +5V 10% và GND = 0V.
1.1.3. Cấu trúc các port xuất nhập vi điều khiển 8051:
Khả năng fanout (số luợng tải đầu ra) của các từng chân port chip 8051 là:
•
•
•
•
Port 0: 8 tải TTL.
Port 1: 4 tải TTL.
Port 2: 4 tải TTL.
Port 3: 4 tải TTL.
Lưu ý:
Khi Port 0 đóng vai trò là port xuất nhập thì sẽ không có điện trở kéo lên bên trong
do đó nguời sử dụng cần thêm vào điện trở kéo lên bên ngoài (xem Hình III.1).
Ở chế độ mặc định (khi reset) thì tất cả các chân của các port (P0 – P3) đuợc cấu
hình là port xuất dữ liệu.
Muốn các chân port của chip 8015 làm port nhập dữ liệu thì ta cần phải đuợc lập
trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit (các chân) của port
truớc khi bắt đầu nhập dữ liệu từ port (vấn đề này đuợc trình bày ở phần kế tiếp).
Các chân trong cùng một port không nhất thiết phải có cùng kiểu cấu hình (port
xuất hoặc port nhập).Nghĩa là trong cùng một port có thể có chân dùng để nhập dữ
liệu, có thể có chân dùng để xuất dữ liệu.Điều này là tùy thuộc vào nhu cầu và mục
đích của nguời lập trình.
Quá trình ghi chân port (xuất dữ liệu ra chân port)
Thao tác ghi chân port.
Quá trình đọc chân port (nhập dữ liệu từ chân port).
Thao tác đọc chân port
Quá trình đọc bộ chốt (kiểm tra dữ liệu tại chân port)
Thao tác đọc bộ chốt
Lưu ý: Việc đọc dữ liệu của bất kỳ một port nào có thể cho ta hai giá trị khác nhau
tùy thuộc vào lệnh mà ta sử dụng để đọc dữ liệu từ port (xem thêm trong phần tập
lệnh). Xảy ra hiện tượng không mong muốn này là do quá trình đọc dữ liệu của chip
8051 gồm hai quá trình khác nhau: quá trình đọc chân port và quá trình đọc bộ chốt.
Quá trình đọc chân port: Khi ta sử dụng các lệnh MOV, ADD,…Dữ liệu nhận
đuợc sau khi thực hiện quá trình đọc là dữ liệu hiện tại ở các chân port.
Quá trình đọc bộ chốt: Khi ta sử dụng các lệnh ANL, ORL, XRL, CPL, INC,
DEC, DJNZ, JBC, CLR bit, SETB bit, MOV bit.Dữ liệu nhận được sau khi thực hiện
quá trình đọc là dữ liệu hiện tại ở các bộ chốt (là các dữ liệu đã được ghi ra port tại
thời điểm truớc đó bởi quá trình ghi chân port), chứ không phải là dữ liệu hiện tại ở
các chân port.Cho nên, nếu tại thời điểm thực hiện quá trình đọc mà dữ liệu tại các
chân port có bị thay đổi đi chăng nữa thì dữ liệu đọc về cũng không được cập nhật.
1.2. Giao tiếp cổng nối tiếp
1.2.1. Cấu trúc cổng nối tiếp
Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và ngoại vi, có
các ưu điểm sau:
- Khoảng cách truyền xa hơn truyền song song.
- Số dây kết nối ít.
- Có thể truyền không dây dùng hồng ngoại.
- Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic Device).
- Cho phép nối mạng.
- Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc.
- Có thể cung cấp nguồn cho các mạch điện đơn giản
Các thiết bị ghép nối chia thành 2 loại: DTE (Data Terminal Equipment) và DCE
(Data Communication Equipment). DCE là các thiết bị trung gian như MODEM còn
DTE là các thiết bị tiếp nhận hay truyền dữ liệu như máy tính, PLC, vi điều khiển,…
Việc trao đổi tín hiệu thông thường qua 2 chân RxD (nhận) và TxD (truyền).Các tín
hiệu còn lại có chức năng hỗ trợ để thiết lập và điều khiển quá trình truyền, được gọi
là các tín hiệu bắt tay (handshake).Ưu điểm của quá trình truyền dùng tín hiệu bắt tay
là có thể kiểm soát đường truyền.
Tín hiệu truyền theo chuẩn RS-232 của EIA (Electronics Industry Associations).
Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến -25V (mark),mức
logic 0 ứng với điện áp từ 3V đến 25V (space) và có khả năng cung cấp dòng từ 10
mA đến 20 mA.Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch.
Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20000 bps nhưng nếu cáp
truyền đủ ngắn có thể lên đến 115200 bps.
Các phương thức nối giữa DTE và DCE:
- Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng.
- Bán song công (half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời điểm chỉ
được truyền theo 1 hướng.
- Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng.
Định dạng của khung truyền dữ liệu theo chuẩn RS-232 như sau:
Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V).Khi
bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượt truyền từ D0
đến D7 và Parity, cuối cùng là xung Stop (mark: -10V) để khôi phục trạng thái đường
truyền. Dạng tín hiệu truyền mô tả như sau (truyền ký tự A):
Tín hiệu truyền của ký tự ‘A’
Các đặc tính kỹ thuật của chuẩn RS-232 như sau:
Chiều dài cable cực đại
15m
Tốc độ dữ liệu cực đại
20 Kbps
Điện áp ngõ ra cực đại
± 25V
Điện áp ngõ ra có tải
± 5V đến ±
15V
Trở kháng tải
3K đến 7K
Điện áp ngõ vào
±15V
Độ nhạy ngõ vào
±3V
Trở kháng ngõ vào
3K đến 7K
Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200 bps, 4800 bps,
9600 bps và 19200 bps.
Sơ đồ chân:
Sơ đồ chân cổng nối tiếp
Cổng COM có hai dạng: đầu nối DB25 (25 chân) và đầu nối DB9 (9 chân) mô tả
như hình trên.
Ý nghĩa của các chân mô tả như sau:
D25 D9
Tín
Hướng truyền
Mô tả
hiệu
1
-
-
-
Protected ground: nối đất bảo vệ
2
3
TxD
DTE->DCE
Transmitted data: dữ liệu truyền
3
2
RxD
DCE->DTE
Received data: dữ liệu nhận
4
7
RTS
DTE->DCE
Request to send: DTE yêu cầu truyền dữ
liệu
5
8
CTS
DCE->DTE
Clear to send: DCE sẵn sàng nhận dữ liệu
6
6
DSR
DCE->DTE
Data set ready: DCE sẵn sàng làm việc
7
5
GND
-
8
1
DCD
DCE->DTE
Ground: nối đất (0V)
Data carier detect: DCE phát hiện sóng
mang
20
4
DTR
DTE->DCE
Data terminal ready: DTE sẵn sàng làm
việc
22
9
RI
DCE->DTE
Ring indicator: báo chuông
23
-
DSRD
DCE->DTE
Data signal rate detector: dò tốc độ truyền
24
-
TSET
DTE->DCE
Transmit Signal Element Timing: tín hiệu
định thời truyền đi từ DTE
15
-
TSET
DCE->DTE
Transmitter Signal Element Timing: tín
hiệu định thời truyền từ DCE để truyền dữ
liệu
17
-
RSET
DCE->DTE
Receiver Signal Element Timing: tín hiệu
định thời truyền từ DCE để truyền dữ liệu
18
-
LL
21
-
RL
Local Loopback: kiểm tra cổng
DCE->DTE
Remote Loopback: Tạo ra bởi DCE khi tín
hiệu nhận từ DCE lỗi
14
-
STxD
DTE->DCE
Secondary Transmitted Data
16
-
SRxD
DCE->DTE
Secondary Received Data
19
-
SRTS
DTE->DCE
Secondary Request To Send
13
-
SCTS
DCE->DTE
Secondary Clear To Send
12
-
SDSRD
DCE ->DTE
Secondary Received Line Signal Detector
25
-
TM
9
-
Dành riêng cho chế độ test
10
-
Dành riêng cho chế độ test
Test Mode
11
Không dùng
1.2.2. Truyền thông giữa hai nút
Các sơ đồ khi kết nối dùng cổng nối tiếp:
Kết nối đơn giản trong truyền thông nối tiếp
Khi thực hiện kết nối như trên, quá trình truyền phải bảo đảm tốc độ ở đầu phát và
thu giống nhau. Khi có dữ liệu đến DTE,dữ liệu này sẽ được đưa vào bộ đệm và tạo
ngắt.
Ngoài ra, khi thực hiện kết nối giữa hai DTE, ta còn dùng sơ đồ sau:
Kết nối trong truyền thông nối tiếp dùng tín hiệu bắt tay
Khi DTE1 cần truyền dữ liệu thì cho DTR tích cực tác động lên DSR của DTE2
cho biết sẵn sàng nhận dữ liệu và cho biết đã nhận được sóng mang của MODEM
(ảo). Sau đó, DTE1 tích cực chân RTS để tác động đến chân CTS của DTE2 cho biết
DTE1 có thể nhận dữ liệu.Khi thực hiện kết nối giữa DTE và DCE, do tốc độ truyền
khác nhau nên phải thực hiện điều khiển lưu lượng. Quá trinh điều khiển này có thể
thực hiện bằng phần mềm hay phần cứng.Quá trình điều khiển bằng phần mềm thực
hiện bằng hai ký tự Xon và Xoff. Ký tự Xon được DCE gởi đi khi rảnh ( có thể nhận
dữ liệu ). Nếu DCE bận thì sẽ gởi ký tự Xoff. Quá trình điều khiển bằng phần cứng
dùng hai chân RTS và CTS. Nếu DTE muốn truyền dữ liệu thì sẽ gởi RTS để yêu cầu
truyền, DCE nếu có khả năng nhận dữ liệu (đang rảnh) thì gởi lại CTS.
1.2.3. Truy xuất trực tiếp thông qua cổng
Các cổng nối tiếp trong máy tính được đánh số là COM1, COM2, COM3, COM4
với các địa chỉ như sau:
Tên
Địa chỉ
Ngắt
Vị trí chứa địa chỉ
COM1
3F8h
4
0000h:0400h
COM2
2F8h
3
0000h:0402h
COM3
3E8h
4
0000h:0404h
COM4
2E8h
3
0000h:0406h
Giao tiếp nối tiếp trong máy tính sử dụng vi mạch UART với các thanh ghi cho
trong bảng sau:
Offse DLAB
R/W
Tên
Chức năng
0
W
THR
Transmitter Holding Register (đệm truyền)
0
R
RBR
Receiver Buffer Register (đệm thu)
1
R/W
0
R/W
1
R/W
t
0
1
2
R
BRDL Baud Rate Divisor Latch (số chia byte thấp)
IER
Interrupt Enable Register (cho phép ngắt) Số
BRDH chia byte cao
IIR
Interrupt Identification Register (nhận dạng ngắt)
W
FCR
FIFO Control Register
3
R/W
LCR
Line Control Register (điều khiển đường dây)
4
R/W
MCR
Modem Control Register (điều khiển MODEM)
5
R
LSR
Line Status Register (trạng thái đường dây)
6
R
MSR
Modem Status Register (trạng thái MODEM)
7
R/W
Scratch Register (thanh ghi tạm)
Các thanh ghi này có thể truy xuất trực tiếp kết hợp với địa chỉ cổng (ví dụ như
thanh ghi cho phép ngắt của COM1 có địa chỉ là BACOM1 + 1 = 3F9h.
IIR (Interrupt Identification):
IIR xác định mức ưu tiên và nguồn gốc của yêu cầu ngắt mà UART đang chờ phục
vụ.Khi cần xử lý ngắt, CPU thực hiện đọc các bit tương ứng để xác định nguồn gốc
của ngắt. Định dạng của IIR như sau:
D7
D6
D5
00: Không
Cho phép FIFO 64
có FIFO
byte (trong 16750)
11: Cho
phép FIFO
D4
-
D3
D2
D1
D0
1: Ngắt time-
Xác định
0: Có
out
nguồn gốc
ngắt
(trong 16550) ngắt
1: Không
ngắt
D2D1Ưu tiênTênNguồnD2-D0 bị xóa khi004Đường truyềnLỗi khung, thu đè, lỗi
parity, gián đoạn khi thuĐọc LSR013Đệm thuĐệm thu đầyĐọc RBR102Đệm phátĐệm
phát rỗngĐọc IIR, ghi THR111ModermCTS, DSR, RI, RLSDĐọc MSR(Mức 1 ưu tiên
cao nhất)
IER (Interrupt Enable Register):
IER cho phép hay cấm các nguyên nhân ngắt khác nhau (1: cho phép, 0: cầm ngắt)
D7
D6
D5
D4
D3
- - POW HBR MODEM
D2
LIN
D1
D0
TxEMPTY RxRDY
E
Cho phép kiểu
công suất thấp
Cho phép khi
THR rỗng
Cho phép khi
lỗi moderm
Cho phép kiểu
nghỉ hibermate
Cho phép khi
lỗi thu, phát
Cho phép khi
RBR đầy
MCR (Modem Control register):
D7
D6
D5
-
-
-
D4
LOOP
Mode
loopback:
Kiểm tra hoạt
động của
UART
D3
D2
OUT
OUT
2
1
D1
D0
RTS DTR
Điều khiển 2 ngõ
ra OUT 1 OUT 2
của UART
Điều khiển tín
hiệu RTS và DTR
MSR (Modem Status Register):
D7
D6
RLSD
RI
D5
D4
D3
D2
D1
D0
RLSD RI
DSR
CTS
DSR CTS
Trạng thái của CD,
RI, DSR và CTS
LSR (Line Status Register):
1: nếu có thay đổi các tín hiệu so với lần
đọc trước
RI:= 1 nếu có xung dương
tại RI
D7
FIE
D6
TSRE
D5
D4
THRE
BI
D3
FE
D2
D1
PE
D0
OE
RxDR
FIE: FIFO Error - sai trong FIFO
TSRE: Transmitter Shift Register Empty - thanh ghi dịch rỗng (=1 khi đã phát 1
ký tự và bị xoá khi có 1 ký tự chuyển đến từ THR.
THRE: Transmitter Holding Register Empty (=1 khi có 1 ký tự đã chuyển từ THR
-TSR và bị xoá khi CPU đưa ký tự tới THR).
BI: Break Interrupt (=1 khicó sự gián đoạn khi truyền, nghĩa là tồn tại mức logic 0
trong khoảng thời gian dài hơn khoảng thời gian truyền 1 byte và bị xoá khi CPU đọc
LSR)
FE: Frame Error (=1 khi có lỗi khung truyền và bị xoá khi CPU đọc LSR)
PE: Parity Error (=1 khi có lỗi parity và bị xoá khi CPU đọc LSR)
OE: Overrun Error (=1 khi có lỗi thu đè, nghĩa là CPU không đọc kịp dữ liệu làm
cho quá trình ghi chồng lên RBR xảy ra và bị xoá khi CPU đọc LSR)
RxDR: Receiver Data Ready (=1 khi đã nhận 1 ký tự và đưa vào RBR và bị xoá
khi CPU đọc RBR).
LCR (Line Control Register):
D7
D6
D5
DLAB
SBCB
PS2
D4
PS1
D3
PS0
D2
STB
D1
WLS1
D0
WLS0
DLAB (Divisor Latch Access Bit) = 0: truy xuất RBR, THR, IER, = 1 cho phép
đặt bộ chia tần trong UART để cho phép đạt tốc độ truyền mong muốn.
UART dùng dao động thạch anh với tần số 1.8432 MHz đưa qua bộ chia 16 thành
tần số 115,200 Hz. Khi đó, tuỳ theo giá trị trong BRDL và BRDH, ta sẽ có tốc độ
mong muốn. Ví dụ như đường truyền có tốc độ truyền 2,400 bps có giá trị chia
115,200 / 2,400 = 48d = 0030h BRDL = 30h, BRDH = 00h.
Một số giá trị thông dụng xác định tốc độ truyền cho như sau:
Tốc độ (bps) BRDH
BRDL
1,200
00h
60h
2,400
00h
30h
4,800
00h
18h
9,600
00h
0Ch
19,200
00h
06h
38,400
00h
03h
57,600
00h
02h
115,200
00h
01h
SBCB (Set Break Control Bit) =1: cho phép truyền tín hiệu Break (=0) trong khoảng
thời gian lớn hơn một khung
PS (Parity Select):
PS2 PS1 PS0
Mô tả
X
X
0
Không kiểm tra
0
0
1
Kiểm tra lẻ
0
1
1
Kiểm tra chẵn
1
0
1
Parity là mark
1
1
1
Parity là space
STB (Stop Bit) = 0: 1 bit stop, =1: 1.5 bit stop (khi dùng 5 bit dữ liệu) hay 2 bit stop
(khi dùng 6, 7, 8 bit dữ liệu).
WLS (Word Length Select):
WLS1 WLS0
Độ dài dữ liệu
0
0
5 bit
0
1
6 bit