Giáo trình Đo lường và điều khiển bằng máy tính - Chương 6: Giao tiếp qua cổng song song

Cổng song song thường dùng để giao tiếp máy vi tính với đối tượng
bên ngoài nhờ các đặc điểm:
- Lập trình đơn giản, dễ kết nối
- Tốc độ nhanh.
Khuyết điểm của cổng song song là khoảng cách ngắn do tính chống
nhiễu kém. Theo tiêu chuẩn IEEE 1284 năm 1994 có 5 chế độ hoạt động
cho cổng song song.
- SPP :cổng song song chuẩn có 3 mode là:
+ Compatibility: xuất 8 bit
+ Nibble: nhập 4 bit
+ Byte: cổng hai chiều
- EPP: cổng song song tăng cường (enhanced parallel port)
- ECP: cổng mở rộng khả năng (extended capability port)
Tùy loại mainboard có thể hỗ trợ cả 5 mode hay chỉ vài mode.
Cổng SPP có thể truyền dữ liệu song song 8 bit từ máy tính ra với
vận tốc 50 Kbytes/sec đến 150 Kbytes/sec. Khi muốn nhập dữ liệu vào
máy tính có thể dùng mode Nibble truyền 4 bit hay mode Byte truyền 8 bit.
Cổng EPP và ECP dùng thêm phần cứng hỗ trợ nên vận tốc truyền
nhanh hơn, có thể đến 2 Mbytes/sec, thu phát song song 8 bit.
Thay đổi chế độ của cổng song song bằng cách vào BIOS SETUP
của máy tính khi khởi động máy 
pdf 24 trang xuanthi 24/12/2022 3960
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Đo lường và điều khiển bằng máy tính - Chương 6: Giao tiếp qua cổng song song", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfgiao_trinh_do_luong_va_dieu_khien_bang_may_tinh_chuong_6_gia.pdf

Nội dung text: Giáo trình Đo lường và điều khiển bằng máy tính - Chương 6: Giao tiếp qua cổng song song

  1. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 2 6.1 CỔNG SPP Cổng song song có đầu nối 25 chân cái thường dùng để kết nối với máy in đầu nối Centronics 34 chân. Bảng 6.1 cho sơ đồ chân và ý nghĩa các chân của cổng SPP khi dùng với máy in, dấu “/” có nghĩa tích cực thấp. Ví dụ, chân 15 là /Error hướng vào, nếu chân này xuống mức 0 là có lỗi. Cột Đảo ghi chữ Có tức là tín hiệu được đảo mức, ví dụ chân 17 khi đưa mức logic 0 ứng với chân này vào thanh ghi điều khiển thì ở chân 17 xuất hiện mức 1. Bảng 6.1: Sơ đồ chân của đầu nối phía máy tính (cổng SPP) và phía máy in Chân Chân Tín hiệu Hướng Thanh ghi Đảo D – 25 Centronics SPP 1 1 /Strobe Vào/Ra Điều khiểnCó 2 2 Data 0 Ra Data 3 3 Data 1 Ra Data 4 4 Data 2 Ra Data 5 5 Data 3 Ra Data 6 6 Data 4 Ra Data 7 7 Data 5 Ra Data 8 8 Data 6 Ra Data 9 9 Data 7 Ra Data 10 10 /Ack Vào Trạng thái 11 11 Busy Vào Trạng tháiCó 12 12 Paper Out Vào Trạng thái 13 13 Select Vào Trạng thái 14 14 /Auto-Linefeed Vào/Ra Điều khiểnCó 15 32 /Error Vào Trạng thái 16 31 /Init Vào/RaĐiều khiển 17 36 /Select Printer Vào/Ra Điều khiển Có 18 - 25 19 - 30 Mass Ngõ ra cổng song song tương thích với cổng TTL, dòng cấp và thu khoảng vài mA đến 16mA tùy loại kết cấu phần cứng (công nghệ ASIC). Giao tiếp cổng song song với máy in thường được thực hiện theo H.6.1 Thành phố Hồ Chí Minh, tháng 4 năm 2006
  2. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 4 Một số máy dùng địa chỉ 03BC. - Thanh ghi dữ liệu có địa chỉ gốc +0, 8 bit, nhận dữ liệu để xuất ra ngoài, dữ liệu được chốt - Thanh ghi trạng thái địa chỉ gốc +1 là thanh ghi chỉ đọc dùng để nhận tín hiệu từ ngoài vào, có 5 tín hiệu vào. D7 D0 Busy /ACK Paper Out Select /Error /IRQ X X 11 10 12 13 15 Chú ý là bit Busy được đảo, nghĩa là nếu chân 11 có điện áp +5V thì bit D7 của thanh ghi trạng thái mức logic 0, bit D2 bằng 0 khi có ngắt từ /ACK. - Thanh ghi điều khiển có bốn đường ra điều khiển, địa chỉ gốc +2, các đường này dùng cực thu hở do đó có thể giao tiếp hai chiều. D7 D0 Cho phép Chọn Cho phép Khởi động Xuống hàng Kích X X cổng hai máy in IRQ qua ACK máy in /Init /Auto Linefeed /Strobe chiều /Select 17 16 14 1 Các chân 1, 11, 14 và 17 được đảo phần cứng, bit D6 thanh ghi trạng thái (chân số 10) từ 1 → 0 thì gây ra ngắt IRQ7 nếu được cho phép bởi D4 của thanh ghi điều khiển =1. Hình 6.2 Sơ đồ thanh ghi dữ liệu hai hướng Một số mainboard (H6.2) hỗ trợ giao tiếp hai chiều qua thanh ghi dữ Thành phố Hồ Chí Minh, tháng 4 năm 2006
  3. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 6 Với sơ đồ này việc xuất nhập dữ liệu 8 bit được thực hiện như sau: 1- Xác định địa chỉ gốc của cổng LPT 2- Muốn xuất dữ liệu, ghi dữ liệu 8 bitvào thanh ghi dữ liệu, muốn xuất nhiều hơn 8 bit có thể dùng kèm các tín hiệu Init, Select bằng cách ghi vào thanh ghi điều khiển byte thích hợp. 3- Muốn đọc dữ liệu, ghi bit D0 = 1 vào thanh ghi điều khiển, đọc 4 bit cao của thanh ghi trạng thái (4 bit thấp của dữ liệu vào), rồi dời phải 4 bit, sau đó cho D0 của thanh ghi điều khiển bằng 0, đọc 4 bit cao của thanh ghi trạng thái (4 bit cao của dữ liệu vào), kết hợp hai lần đọc ta được 1 byte rồi exclusive OR với 88H để đảo hai bit D7 và D3 (do Busy đảo). Hình 6.4: Vào 8 bit với 74LS157 Ví dụ lập trình Xuất trị của biến oval1 ra thanh ghi dữ liệu và oval2 ra thanh ghi điều khiển, nhập giá trị inval từ thanh ghi trạng thái. Trong ngôn ngữ C # define DATA 0X378 # define STATUS DATA + 1 # define CONTROL DATA + 2 int oval1, oval2, inval; oval1 = 0X81; outportb (DATA, oval1); Thành phố Hồ Chí Minh, tháng 4 năm 2006
  4. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 8 int c; int intno; /* Số vectơ ngắt */ int picmask; /* Mặt nạ */ if (IRQ >= 2 && IRQ = 8 && IRQ 15) { printf("IRQ Out of Range\n"); exit(); } outportb(CONTROL, inportb(CONTROL) & 0xDF); /* Chiều xuất */ outportb(DATA,0xFF); oldhandler = getvect(intno); /* Lưu vectơ ngắt cũ */ setvect(intno, parisr); /* Đặt vectơ ngắt mới */ outportb(picaddr+1,inportb(picaddr+1) & (0xFF - picmask)); /* Gỡ mặt nạ */ outportb(CONTROL, inportb(CONTROL) | 0x10); /* Cho phép IRQ */ clrscr(); printf("Parallel Port Interrupt Polarity Tester\n"); printf("IRQ %d : INTNO %02X : PIC Addr 0x%X : Mask 0x%02X\n",IRQ,intno,picaddr,picmask); interflag = 0; /* Reset Interrupt Flag */ delay(10); outportb(DATA,0x00); /* Cho ACK tác động */ delay(10); /* Chờ */ if (interflag == 1) printf("Interrupts Occur on High to Low Transition of ACK.\n"); else { outportb(DATA,0xFF); /* Low to High Transition */ delay(10); /* wait */ if (interflag == 1) printf("Interrupts Occur on Low to High Transition of ACK.\n"); else printf("No Interrupt Activity Occurred. \nCheck IRQ Number, Port Address and Wiring."); } outportb(CONTROL, inportb(CONTROL) & 0xEF); /* Cấm ngắt */ outportb(picaddr+1,inportb(picaddr+1) | picmask); /* Che */ setvect(intno, oldhandler); /* Hồi phục ngắt trước khi thoát */ } Thành phố Hồ Chí Minh, tháng 4 năm 2006
  5. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 10 Hình 6.5 Giản đồ xuất nhập dữ liệu Chân /Write và /Data Strobe tích cực thấp chờ cho đến khi /Wait lên mức cao báo bên kia đã nhận dữ liệu, sau đó /Data Strobe và /Write trở lại mức cao kết thúc truyền. Khi nhận dữ liệu, đầu tiên chương trình đọc thanh ghi gốc +4. Nếu /Wait mức thấp thì /Data Strobe sẽ ở mức thấp chờ khi /Wait ở mức cao bên kia báo đã gởi dữ liệu tới, /Data Strobe sẽ ở mức cao và dữ liệu được đọc vào. Chu kỳ xuất và nhập dữ liệu cũng giống như chu kỳ xuất và nhập địa chỉ. Thường kết hợp địa chỉ và dữ liệu để truy xuất dữ liệu từ các địa chỉ ngoại vi khác nhau. Phần cứng ngoại vi có nhiệm vụ xử lý các chân /Write, /Data Strobe, /Address Strobe đưa vào các mạch cài hay cho phép và xuất tín hiệu /wait phù hợp. Thông qua tín hiệu Interrupt (chân số 10) ngoại vi sẽ tác động đến máy tính, bit 0 của thanh ghi trạng thái là bit báo hết thời gian EPP. Nếu trong khoảng 10μs đường /Wait không tác động khi /Data Strobe hay /Address strobe tác động thì bit này sẽ được đặt lên 1. 6.3 CỔNG ECP Cổng ECP được phát triển bởi Hewlett Packard và Microsoft, sử dụng phần cứng hỗ trợ cho việc truyền dữ liệu nên có vận tốc truyền nhanh, tương tự cổng EPP. Đặc điểm của cổng ECP là nén dữ liệu khi truyền, cho phép tăng tốc độ truyền dữ liệu. Cổng ECP dùng 11 thanh ghi từ gốc+0 đến gốc+7 và gốc+400H đến gốc +402H. Châân cổng ECP được qui định trong bảng 6.4. Thành phố Hồ Chí Minh, tháng 4 năm 2006
  6. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 12 Hình 6.7: Truyền dữ liệu từ ngoại vi vào máy tính Ngoại vi nhận được byte 24 trong chu kỳ lệnh sẽ lặp lại byte ‘A’ ở chu kỳ dữ liệu 25 lần. Tỷ số nén tối đa 64/1. Để tăng tốc độ truyền dữ liệu, cổng ECP dùng các thanh ghi sắp xếp kiểu FIFO và một số thanh ghi phụ. Bảng 6.5 Địa chỉ Tên Đọc / Ghi Thanh ghi dữ liệu (SPP) Ghi Gốc + 0 Địa chỉ FIFO (ECP) Đọc / Ghi Gốc + 1 Thanh ghi trạng thái (mọi mode) Đọc / Ghi Gốc + 2 Thanh ghi điều khiển (mọi mode) Đọc / Ghi Data FIFO (mode FIFO cổng song song) Đọc / Ghi Gốc + 400 H Data FIFO (ECP) Đọc / Ghi Test FIFO (mode Test) Đọc / Ghi Thanh ghi cấu hình A Đọc / Ghi Gốc + 401 H Thanh ghi cấu hình B Đọc / Ghi Gốc + 402 H Thanh ghi điều khiển mở rộng Đọc / Ghi Thanh ghi điều khiển mở rộng cho phép chọn kiểu hoạt động của cổng song song. Thanh ghi cấu hình A và B sử dụng để đặt cấu hình của cổng ECP. Thành phố Hồ Chí Minh, tháng 4 năm 2006
  7. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 14 Paper out 12 ← 4 Select 13 ← 3 Error 15 ← 2 GND 25 ← 25 2- Ghép nối nối tiếp: Dùng cáp nối hai đầu cái DB9 hay DB25 9 chân 25 chân 25 chân 9 chân GND 5 7 7 5 TXD 3 2 3 2 RTS 7 4 5 8 DSR 1, 6 6 20 4 RXD 2 3 2 3 CTS 8 5 4 7 DTR 4 20 6 1 , 6 Truyền bằng đường song song nhanh gấp tám đến mười lần truyền nối tiếp. Nếu cổng song song hai máy có cấu hình ECP thì vận tốc truyền còn nhanh hơn nữa, dưới đây là cáp nối với cổng ECP Chân Chân Chân Chân 1 → 10 15 ← 17 2 ÷ 9 ←>2 ÷ 9 14 → 11 10 ← 1 16 → 12 11 ← 14 17 → 15 12 ← 16 18 ÷ 25 <→ 18 ÷ 25 13 ← 13 6.5 CARD CHUYỂN ĐỔI 8 KÊNH 12 BIT DÙNG CỔNG MÁY IN Sử dụng vi mạch LTC 1290 8 kênh 12 bit ta có thể thực hiện mạch chuyển đổi 12 bit ghép với máy tính qua cổng máy in. Vi mạch LTC 1290 là sản phẩm của hãng Linear technology đổi A/D dùng phương pháp xấp xỉ liên tiếp 12 bit đơn cực hay 11 bit cộng dấu, thời gian đổi 13μs max, kết quả đo đưa ra ngoài dạng nối tiếp. Hình 6.9 cho sơ đồ áp dụng. Thành phố Hồ Chí Minh, tháng 4 năm 2006
  8. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 16 Hình 6.10 Sơ đồ khối LTC1290 và giản đồ thời gian Vi mạch hoạt động với xung đồng bộ SCLK. Khi CS chuyển từ 1 xuống 0, cạnh lên của SCLK đưa 8 bit từ Din vào thanh ghi dời để định chế độ hoạt động của vi mạch, cạnh xuống của SCLK đưa kết quả chuyển đổi lần trước từ thanh ghi dời nối tiếp ra Dout. Khi đã đủ 8 bit Din vào cấu hình chuyển đổi theo bảng sau, B7 là bit Din vào trước. B7 B6 B5 B4 B3 B2 B1 B0 Đơn/ Chọn Chọn Đơn cực/ MSB/ Dấu Chiều dài từ Chiều dài từ visai 1 0 Lưỡng cực LSB B7 = 1: 8 ngõ vào đơn so với chân COM, B6 B5 B4 chọn một trong 8 ngõ vào. B7 = 0: 8 ngõ vào chia thành 4 cặp vi sai 01, 23, 45, 67, bit B5 B4 chọn một trong 4 cặp còn bit B6 = 1 sẽ ấn định các đầu 0, 2, 4, 6 dương so với 1, 3, 5, 7; B6 = 0 ấn định ngược lại. B3 = 1: chọn đổi đơn cực, tín hiệu vào từ 0 đến Vref = +5V B3 = 0: chọn đổi lưỡng cực, tín hiệu vào -Vref (800H) đến Vref - 1LSB (7FFH), bit đầu là bit dấu B2 = 1: cho biết sẽ truyền MSB đầu tiên ra Dout = 0: cho biết sẽ truyền LSB đầu tiên ra Dout B1 và B0 cho biết chiều dài từ của Dout. B1 B0 0 0 8 bit   cắt nguồn 1  12 bit 1 1 16 bit B1= 0, B0= 1: vi mạch ở chế độ cắt nguồn lúc đó CS = 1 dòng tiêu thụ khoảng 10μA. Sau khi đã đủ số xung nhịp SCLK được ấn định bởi chiều dài từ CS được đưa lên mức 1, bắt đầu chuyển đổi theo xung nhịp ACLK, tần số tối đa 4Mhz, sau đó từ 48 đến 52 xung ACLK, nếu CS xuống mức 0 thì kết quả đổi sẽ đưa ra Dout theo cấu hình đã đặt trước còn Din sẽ đưa vào và đặt cấu hình mới. Các thông tin chi tiết hơn về vi mạch có thể tìm trong trang web: www.linear-tech.com. Mạch chuyển đổi H6.10 cho phép đổi tín hiệu đơn 0V ÷ 2,5V hay tín hiệu lưỡng cực (–2,5V) ÷ (+ 2,5V). Xung nhịp SCLK và dữ liệu Din xuất ra từ cổng máy in còn kết quả đổi Dout đưa vào ACK của cổng. Thành phố Hồ Chí Minh, tháng 4 năm 2006
  9. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 18 var i: integer; win: word; result: word; begin for i:= 1 to delay do begin end; win := wconst + chconst [ch]; port [aout] := 0; {drop CS'} { dời word cấu hình vào} for i := 1 to 12 do begin port [aout] := (win and 1)* din; port [aout] := (win and 1)* din + sclk; win := win div 2; port [aout] := 0; end; port [aout] := cs; for i := 1 to delay do begin end; port [aout] := 0; {nhận kết quả chuyển đổi} result := 0; win := wconst + chconst [ch]; for i := 1 to 12 do begin port [aout] := (win and 1)* din; port [aout] := (win and 1)* din + sclk; result := result*2; if port [ain] and dout <> 0 then result := result + 1; port [aout] := 0; end; port [aout] := cs; adc_read := vrel*((result + 2048) and 4095) / 2048 – vref; end; {=== CHƯƠNG TRÌNH DEMO ===} program testltc; uses crt, ltc1290 var i: integer; begin writeln (‘Nhấn phím để thoát’); while not keypressed do begin for i := 0 to 7 do write (adc_read(i) :4:4,’’); writeln (‘V’); delay (1000); end; end. 6.6 MẠCH LẬP TRÌNH VI ĐIỀU KHIỂN ATMEL 89C Máy tính thường dùng để lập trình cho vi điều khiển hay EPROM qua cổng song song hay nối tiếp. Mục này trình bày bộ lập trình cho vi mạch họ Atmel 89C51/52/55/1051/2051/4051. AT89C2051 có Flash ROM 2Kbyte trên chip ở trạng thái xóa FFH, sẵn sàng để lập trình, lập trình từng byte một , khi đã lập trình muốn lập trình lại một byte cũng Thành phố Hồ Chí Minh, tháng 4 năm 2006
  10. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 20 3. cấp một xung vào chân XTAL1 để sang ô nhớ kế 4. Đọc code. 5. Lập lại các bước 3 và 4 . Chip Erase: Bộ nhớ và bit khóa được xóa bởi các mức logic phù hợp như bảng trên và P3.2 có xung thấp 10ms Reading the Signature Bytes: Byte signature được đọc ở địa chỉ 000H, 001H, và 002H, với P3.5 và P3.7 ở mức thấp. (000H) = 1EH ký hiệu Atmel (001H) = 21H ký hiệu 89C2051 Lập trình 89C51: Trên chip có ba bit khoá có thể ở trạng thái không lập trình (U) hay lập trình (P) LB1 LB2 LB3 1 U U U Không khóa chương trình. 2 P U U Cấm đọc chương trình, cấm lập trình thêm 3 P P U Giống trên, cấm kiểm tra 4 P P P Giống trên, Thành phố Hồ Chí Minh, tháng 4 năm 2006
  11. CHƯƠNG 6: GIAO TIẾP QUA CỔNG SONG SONG Trang 24 R14 220R T2,T1 2N3906 T3,T4 2N3904 U1 74HC299 U4,U2 74HC595 U3 74HC573 U5 LM317LZ U6 LM7805 X1 CRYSTAL 4.0 MHz o Bài tập gợi ý 1/ Nghiên cứu ghép 8255 với cổng máy in để tăng số ngõ logic. 2/ Thiết kế và lập trình mạch mở rộng cổng máy in 56 bit ra và 8 bit vào. 3/ Thiết kế mạch điều khiển động cơ bước 4 pha dùng cổng song song và viết chương trình quay n xung với tần số f Hz. 4/Nghiên cứu hoạt động và viết chương trình cho mạch ghi AT89C51. Thành phố Hồ Chí Minh, tháng 4 năm 2006