Download miễn phí Giáo trình Đo lường và điều khiển bằng máy tính - Giao tiếp qua cổng nối tiếp





Với chuẩn RS485 ta có thể nối32 thiết bị thu phát trên hai
dây có khoảng cách tối đa 1200m và vận tốc truyền đến 10Mbit/s.
Hai điện trở kết thúc 120Ođược nối với hai đầuxa nhất của mạng,
dây dẫn là loại dây xoắn đôi 26AWG. Chuẩn này dùng vi mạch lái
SN75176 hay họ Maxim MAX481, 483, 485 , 487, 488, 489, 490,
1487. Tiêu biểu là vi mạch MAX485 chuyển đổi từ tín hiệu đơn
sang tín hiệu vi sai, có chân điều khiển cho ngõ ra vi mạch ở tổng
trở cao, nhờ vậy có thể nối chung nhiều vi mạch lái với nhau.



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

được vận tốc baud
mong muốn.
UART dùng tinh thể dao động 1,8432 MHz chia cho 16 được
tần số 115200Hz. Tần số này được chia bởi bộ đếm lập trình được
16 bit, số chia chứa trong hai thanh ghi địa chỉ gốc +1 (byte cao)
và gốc +0 (byte thấp) được sử dụng khi DLAB = 1.
Nếu muốn vận tốc truyền 9600 thì số chia là 12 hay 000CH,
Chương 7: GIAO TIẾP QUA CỔNG NỐI TIẾP Trang 186
Thành phố Hồ Chí Minh, tháng 4 năm 2006
byte cao là 00H, byte thấp là 0CH
Khi DLAB = 0 ghi vào địa chỉ gốc +0 để truyền đi 8 bit nối
tiếp, đọc địa chỉ gốc +0 nhận được 8 bit dữ liệu truyền đến.
Thanh ghi IER (gốc +1) cho phép ngắt vi xử lý khi có biến cố
trên đường truyền.
Khi có ngắt xảy ra, bit 0 của IIR ở mức 0, loại ngắt chỉ bởi
bit 1 và 2, ngắt lỗi truyền thu có ưu tiên cao nhất còn ngắt do
modem ưu tiên thấp nhất.
Bảng 7.8: Thanh ghi điều khiển đường truyền LCR
xác định khung truyền
1 : cài đặt số chia DLAB Bit 7
0 : truy xuất RBR, THR, IER
Bit 6 Khi bằng 1 cho phép truyền tín hiệu BREAK, đường dây ở mức 0 (+12V) trong thời
gian lớn hơn một khung
Bit 5 Bit 4 Bit
3
X X 0
Không kiểm tra cờ chẵn/lẻ
0 0 1 Khi lẻ
0 1 1 Khi chẵn
1 0 1 Bit kiểm tra cờ chẵn lẻ là 1
Bit 3 ÷
5
1 1 1 Bit kiểm tra cờ chẵn lẻ là 0
0 Một bit stop Bit 2
1 Hai bit stop khi số bit dữ liệu là 6, 7, 8. Khi số bit dữ liệu là 5 thì dùng 1,5
bit stop
Bit 1 Bit 0
0 0 5 bit dữ liệu
0 1 6 bit dữ liệu
1 0 7 bit dữ liệu
Bit 0,
1
1 1 8 bit dữ liệu
Bảng 7.9: Thanh ghi điều khiển modem MCR
Bit 5 Dùng cho 16750
Bit 4 Mode loopback dùng để kiểm tra hoạt động UART
Bit 3 Điều khiển ngõ ra Aux Output 2
Tác giả: TS Nguyễn Đức Thành Trang 187
Bit 2 Điều khiển ngõ ra Aux Output 1
Bit 1 Cho RTS lên 1
Bit 0 Cho DTR lên 1
Bảng 7.10: Thanh ghi trạng thái đường dây LSR
Bit 7 Sai trong FIFO
Bit 6 Thanh ghi giữ truyền THR và thanh ghi dời trống
Bit 5 THR trống
Bit 4 Ngắt Break, đường truyền ở logic 0 thời gian dài hơn truyền một byte
Bit 3 Sai khung truyền, bit cuối không phải là bit stop
Bit 2 Sai parity
Bit 1 Khi dữ liệu tới không đọc kịp làm ghi chồng lên RBR
Bit 0 Báo có dữ liệu ở RBR
Bảng 7.11: Thanh ghi trạng thái modem MSR
Bit 7 Logic của CD, báo có sóng mang
Bit 6 Logic của RI, báo có chuông
Bit 5 Logic của DSR
Bit 4 Logic của CTS
Bit 3 Mức 1 khi có CD đổi trạng thái
Bit 2 Mức 1 khi RI đổi từ thấp lên cao
Bit 1 Mức 1 khi DSR thay đổi
Bit 0 Mức 1 khi CTS thay đổi
7.2 MẠCH CHUYỂN MỨC
Khi ghép cổng COM máy tính với vi điều khiển hay mạch TTL
cần có mạch chuyển mức TTL Ỉ 232 và ngược lại. Các vi
mạch thường dùng là cập MC1488-MC1489, MAX232 (Maxim) hay
DS275 (Dallas) (Hình 7.6), SN75150- SN75154 (Hình 7.4). Loại
MAX232 thông dụng hơn cả vì chỉ cần nguồn 5V, nguồn ±10V do
mạch dao động 16KHz bên trong cung cấp.
Chương 7: GIAO TIẾP QUA CỔNG NỐI TIẾP Trang 188
Thành phố Hồ Chí Minh, tháng 4 năm 2006
Tác giả: TS Nguyễn Đức Thành Trang 189
Hình 7.6: Một số vi mạch chuyển đổi TTL ---RS232 thông dụng
7.3 CARD MỞ RỘNG NỐI TIẾP
Trong trường hợp cần có thêm cổng nối tiếp có thể dùng sơ đồ
Hình 7.4c. Các tín hiệu ở bên trái lấy từ rãnh cắm của máy tính
sau khi qua mạch đệm và các mạch logic khác phù hợp. Tín hiệu
ra DTR , RTS , TX qua mạch đệm 75150 đổi sang mức điện áp
±12V. Các tín hiệu vào của cổng nối tiếp qua mạch đệm 75154 đổi
từ mức điện áp ±12V ra mức điện áp TTL. Trên card có thể gắn
nhiều vi mạch 8250 lựa chọn chip nhờ 2CS , nhờ vậy có thể tạo
nhiều cổng COM. Một số hãng bán card mở rộng ISA, PCI cho
thêm cổng COM và cổng LPT (xem chương 3).
Chương 7: GIAO TIẾP QUA CỔNG NỐI TIẾP Trang 190
Thành phố Hồ Chí Minh, tháng 4 năm 2006
7.4 MẠCH GIAO TIẾP CỔNG NỐI TIẾP
Sử dụng vi mạch CDP6402 ta có thể chuyển đổi số liệu song
song ở ngoại vi ra tín hiệu nối tiếp và ngược lại để ghép nối với
cổng nối tiếp. Vi mạch này chuyển đổi dữ liệu song song ra nối
tiếp và ngược lại theo chuẩn RS232. Có hai tuyến dữ liệu song
song riêng cho phần thu và phát.
Tín hiệu TXD từ cổng COM được đổi sang mức TTL nhờ vi
mạch MAX 232 đưa vào chân RRI (Receiver Register In) của 6402
và đổi thành tín hiệu song song 8 bit RBR1 ÷ RBR8 (Receiver
Register) Tín hiệu song song 8 bit TBR1 ÷ TBR8 (Transmitter
Buffer Register) được đổi thành tín hiệu nối tiếp ra chân TRO
(Transmitter Register Out) sau đó nhờ MAX 232 đổi sang điện áp
thích hợp vào chân RXD. Vận tốc truyền được xác định bởi tần số
tín hiệu ở chân RRC (Receiver Register Clock), TRC (Transmitter
Register Clock). Nhờ vi mạch dao động chia tần 74HC4060 có thể
thay đổi các vận tốc truyền khác nhau.
Khuôn dạng truyền được xác định bởi các chân PI (Parity
Inhibit) SBS (Stop Bit Select) CLS1, 2 (Character Length Select)
và EPE (Even Parity Select), các tín hiệu vào được cài bởi CRL
(Control Register Load)
Hình 7.7:
UART CDP6402
Tác giả: TS Nguyễn Đức Thành Trang 191
Khi một byte được truyền tới vi mạch 6402 từ TXD, chân DR
(Data Received) sẽ chuyển sang mức 1, byte truyền tới được xuất
ra song song ở RBR1 ÷ RBR8, muốn xóa DR ta cho DRR (Data
Received Reset) ở mức 0. Chân TBRL (Transmitter Buffer
Register Load) ở mức 0 sẽ nạp data song song ở TBR1÷TBR8 vào
thanh ghi đệm truyền, khi chân này chuyển sang mức cao sẽ
truyền dữ liệu đi nối tiếp ở TRO.
Bảng 7.13: Trạng thái bộ truyền thu nối tiếp
thông báo ra ngoài nhờ các chân
PE Cờ lỗi 1 Có lỗi
OE Overrun error 1 Đã nhận dữ liệu nhưng DRR chưa tác động
SFD Status flag disable 1 Cấm các cờ báo
TRE Transmitter Register empty 1 Thanh ghi truyền trống
DR Data received 1 Đã nhận dữ liệu
TBRE Transmitter buffer Register emply 1 Thanh ghi đệm truyền trống
Trong sơ đồ Hình 7.8, một vi mạch ADC0804 1 kênh 8 bit
được dùng để đổi áp tương đồng ra số 8 bit đưa vào TBR1÷TBR8,
khi 6402 nhận 1 byte từ TXD nó sẽ cho DR ở mức cao đưa vào
chân WR của ADC0804 bắt đầu chuyển đổi AD. Đổi xong INTR
tác động đưa vào TBRL nạp 8 bit đã đổi vào thanh ghi đệm
truyền và truyền đi nối tiếp, đồng thời đưa vào DRR làm xóa DR
ngưng đổi cho đến khi có một byte mới vào RRI.
Chương trình sau viết bằng ngôn ngữ C minh họa hoạt động
của mạch.
/* Chương trình đổi AD nối tiếp */
#include
#include
#include
#define PORT1 0x3F8
#define INTVECT 0x0C
int bufferin = 0;
int bufferout = 0;
unsigned char ch;
char buffer [1025];
void interrupt (*oldport1isr) ();
void interrupt PORT1INT /*IRS cho PORT1 */
Chương 7: GIAO TIẾP QUA CỔNG NỐI TIẾP Trang 192
Thành phố Hồ Chí Minh, tháng 4 năm 2006
{
int c;
do {c = inportb(PORT1 +5);
Hình 7.8: Chuyển đổi AD dùng cổng nối tiếp 9600, 8, E, 1
if (c & 1) {buffer[bufferin] = inportb(PORT1);
bufferin++;
if (bufferin == 1024) {bufferin = 0;}}
} while (c & 1);
outportb (0x10, 0x20);
}
void main (void)
{
int c;
outportb (PORT1 + 1, 0); /* Cấm ngắt port 1 */
oldport1isr = getvect (INTVECT);
setvect (INTVECT, PORT1INT);
/*PORT 1 - Đặt chế độ*/
outportb (PORT1 + 3, 0x80); /* SET DLAB ON */
outportb (PORT1 + 0, 0x0C); /* đặt Baud rate 9600 BPS */
outportb (PORT1 + 1, 0x00);
outportb (PORT1 + 3, 0x03); /* 8 bits, No Parity, 1 Stop Bit */
outportb (PORT1 + 2, 0xC7); /*FIFO Control Register*/
outportb (PORT1 + 4, 0x0B); /*Cho DTR, RTS, và OUT2 ON*/
outportb (0x21, (inportb (0x21) & 0xEF);
Tác giả: TS Nguyễn Đức Thành Trang 193
outportb (PORT1 + 1, 0x01); /* Interrupt khi nhận data */
printf (“\n\chương trình đổi ADC nối ti...
 

Các chủ đề có liên quan khác

Top