Giới thiệu chung về cổng LPT:
A. Mục đích sử dụng:
Trong quá trình lao động sản xuất, máy tính đã được sử dụng với rất nhiều những mục đích khác nhau (soạn thảo văn bản, tính toán, thiết kết, giả lập hoạt động của một số vấn đề thực tế, đo đạc, điều khiển các thiết bị…). Máy tính có ứng dụng nhiều như vậy do nó có thể ghép nối với các thiết bị ngoại vi (máy in, modem, một số mạch điều khiển…). Các thiết bị ngoại có thể kết nối với máy tính thông qua cổng nối tiếp (Serial port), cổng song song (Paralell port), cổng RS-232, cổng COM, cổng USB.ta sẽ nghiên cứu quá trình xuất nhập qua cổng song song (cổng LPT).
B. Cấu trúc cổng song song:
Cổng song song có 2 loại:
- Ổ cắm 36 chân
- Ổ cắm 25 chân
Ngày nay, loại ổ cắm 36 chân không còn được sử dụng, hầu hết các máy tính PC đều trang bị cổng song song 25 chân nên ta chỉ cần quan tâm đến loại 25 chân.
Đây là hình ảnh về cổng LPT
Cổng LPT 25 chân là loại cổng song song gồm có 4 đường điều khiển, 5 đường trạng thái và 8 đường dữ liệu. Các chân trong cổng như sau:
Hình trên giới thiệu loại ổ cắm 25 chân và cách bố trí các chân
Tín hiệu ở các chân trên ổ cắm 25 và 36 chân để trong trường hợp cần thiết có thể so sánh
Chức năng của các đường dẫn tín hiệu:
Strobe (1): Với một mức logic thấp ở chân này, máy tính thông báo cho máy in biết có một byte đang sẵn sàng trên các đường dẫn tín hiệu để được truyền.
D0 đến D7: Các đường dẫn dữ liệu
Acknowledge: với một mức logic thấp ở chân này, máy in thông báo cho máy tính biết là đã nhận được kí tự vừa gửi và có thể tiếp tục nhận.
Busy (bận – 11): máy in gửi đến chân này mức logic cao trong khi đang đón nhận hoặc in ra dữ liệu để thông báo cho máy tính biết là các bộ đệm trong máy tính biết là các bộ đệm trong máy tính đã bị đầy hoặc máy in trong trạn thái Off-line.
Paper empty (hết giấy – 12): Mức cao ở chân này có nghĩa là giấy đã dùng hết.
Select (13): Một mức cao ở chân này, có nghĩa là máy in đang trong trạng thái kích hoạt (On-line)
Auto Linefeed (tự nạp dòng): Có khi còn gọi là Auto Feed. Bằng một mức thấp ở chân này máy tính PC nhắc máy in tự động nạp một dòng mới mỗi khi kết thúc một dòng.
Error (có lỗi): Bằng một mức thấp ở chân này, máy in thông báo cho máy tính là đã xuất hiện một lỗi, chẳng hạn kẹt giấy hoặc máy in đang trong trạng thái Off-Line.
Reset (đặt lại): Bằng một mức thấp ở chân này, máy in được đặt lại trạng thái được xác định lúc ban đầu.
Select Input: bằng một mức thấp ở chân này, máy in được lựa chọn bởi máy tính.
Với số lượng đường dẫn nhiều, một số phép thử trở nên đặc biệt đơn giản. Điểm đáng chú ý là khi tiến hành ghép nối cổng song song cần hết sức thận trọng. Do các đường dẫn tương thích TTL không được bảo vệ chống quá tải, nên khi tiến hành ghép nối ta cần chứ ý tới những quy tắc an toàn sau đây:
- Thiết bị chỉ được phép đấu nối với cổng song song khi máy tính ở trạng thái ngắt điện.
- Các lối vào chỉ được phép tiếp nhận điện áp giữa 0V và 5V.
- Các lối ra không được phép ngắn mạch hoặc đấu nối với các lối ra khác và các lối ra không được phép nối với các nguồn tín hiệu điện áp không biết rõ thông số.
Qua cách mô tả chức năng của từng tín hiệu riêng lẽ ta có thể nhận thấy các đương dẫn dữ liệu có thể chia thành 3 nhóm:
- Các đường dẫn tín hiệu, xuất ra từ máy tính PC và điều khiển máy tính, được gọi là các đường dẫn điều khiển.
- Các đường dẫn tín hiệu, đưa các thông tin thông báo ngược lại từ máy in về máy tính, được gọi là các đường dẫn trạng thái.
- Đường dẫn dữ liệu, truyền các bit riêng lẽ của các ký tự cần in.
Từ cách mô tả các tín hiệu và mức tín hiệu ta có thể nhận thấy là: các tín hiệu Acknowledge, Auto Linefeed, Error, Reset và Select Input kích hoạt ở mức thấp. Thông qua chức năng của các chân này ta cũng hình dung được điều khiển cổng máy in.
Đáng chú ý là 8 đường dẫn song song đều được dùng để chuyển dữ liệu từ máy tính sang máy in. Trong những trường hợp này, khi chuyển sang các ứng dụng để thực hiện nhiệm vụ đo lường ta phải chuyển dữ liệu từ mạch ngọa vi vào máy tính để thu thập và xử lý.
Vì vậy ta phải tận dụng một trong năm đường dẫn theo hướng ngược lại, nghĩa là từ bên ngoài về máy tính để truyền số liệu đo lường. Dưới đây đề cập chi tiết hơn đến các đặc tính một hướng và hai hướng của các đường dẫn này.
Để có thể ghép nối các thiết bị ngoại vi, các mạch điện ứng dụng trong đo lường và điều khiển với cổng song song ta phải tìm hiểu cách trao đổi với các thanh ghi thông qua cách sắp xếp và địa chỉ các thanh ghi cũng như phần mềm.
Các đường dẫn của cổng song song được nối với ba thanh ghi 8bit khác nhau:
- Thanh ghi dữ liệu
- Thanh ghi trạng thái
- Thanh ghi điều khiển
Tám đường dẫn dữ liệu dẫn tới 8 ô nhớ trên thanh ghi dữ liệu còn bốn đường dẫn điều khiển Strobe, Auto Linefeed, Reset, Select Input dẫn tới bốn ô nhớ trên thanh ghi điều khiển, cuối cùng là năm đường dẫn trạng thái Acknowledge, Busy, Paper empty, Select, Error nối tới năm ô trên thanh ghi trạng thái. Riêng ở thanh ghi điều khiển còn phải chú ý tới một bit nữa được sử dụng cho mục đích ghép nối nhưng không được nối với ổ cắm 25 chân. Bit này có thể được sử dụng để xóa một bit ngắt liên quan với đường dẫn Acknowledge, vì vậy chưa đề cập đến đây.
Trên hình, thanh ghi dữ liệu được chỉ rõ là hai hướng dữ liệu có thể được xuất ra các chân D0 đến D7 hoặc đọc vào. Thanh ghi điều khiển cũng là hai hướng, thanh ghi trạng thái chỉ có thể được đọc và vì vậy gọi là một hướng.
Ta có thể trao đổi với 3 thanh ghi này như thế nào? Hệ điều hành DOS dự tính đến bốn cổng song song và đặt tên là: LPT1, LPT2, LPT3 và LPT4. Tuy vậy, hầu hết các máy tính PC đều chỉ có nhiều nhất hai cổng song song, và cho đến nay với lí do giảm giá thành, cổng song song chỉ còn lại một (Thậm chí không còn cổng LPT trong các máy tính đời mới). Về mặt phần cứng, các nhà sản xuất đã dự tính bốn nhóm, mỗi nhóm 3 địa chỉ, để trao đổi với từng ô nhớ trên thanh ghi của mỗi giao diện. Ta có thể nhận thấy các địa chỉ thanh ghi nằm kế tiếp nhau.
Khi bật máy tính, BIOS kiểm tra kế tiếp nhau các địa chỉ được ghi trong bảng và khẳng định xem trên máy có trang bị một vài cổng song song. Các cổng song song được BIOS tìm thấy sẽ được sắp xếp theo các tên mà DOS đã chỉ định là: LPT1, LPT2…
Điều này giải thích vì sao trong các tài liệu khác nhau các địa chỉ được ấn định cho LPT1, LPT2… lại sai lệch nhau. Phần lớn trong các phiên bản của BIOS chạy trong giai đoạn khởi động (boot phase) của máy tính, trong đó phần cứng của máy tính được kiểm tra và cấu hình của máy tính, cụ thể ở đây địa chỉ các giao diện song song, đang tồn tại được xuất ra màn hình (trong một khung hình chữ nhật). Ta có thể làm dừng quá trình khới động máy tính bằng phím
(Hình này hình như có chỗ sai nào đó ^^!. Lâu rồi mình ko nhớ lắm. Hình như địa chỉ của LPT1 là 378H mới đúng)
C. Kỹ thuật lập trình ghép nối qua cổng LPT:
Đây là nhiệm vụ mà bất kỳ khi nào muốn viết mới hoặc sửa đổi một phần mềm dùng cho mạch ghép nối với cổng song song đều phải nghĩ cách giải quyết. Câu hỏi đặt ra là làm thế nào để đọc được các tín hiệu điện trên các đường dẫn tín hiệu của cổng song song hoặc để xuất dữ liệu ra các đường dẫn này.
Việc truy nhập trực tiếp lên các giao diện của máy tính PC, cụ thể là lên các đường dẫn riêng lẻ được tiến hành thuận lợi nhất là bằng hợp ngữ, các ngôn ngữ bậc cao như C cũng có những lệnh đơn giản để thực hiện việc truy nhập lên các cổng tuy rằng tốc độ truy nhập có thấp hơn đôi chút.
Trước hết ta cần biết địa chỉ của các cổng mà qua đó các giao diện song song có thể được trao đổi. Sau đó sẽ quyết định đọc dữ liệu trong thanh ghi nào hoặc xuất dữ liệu ra thanh ghi nào?
Để xuất dữ liệu: Outportb(Địa chỉ cổng,Giá trị)
Để nhập dữ liệu: Inportb(Địa chỉ cổng)
CHÚ Ý: Là khi lập trình trên C phải khai báo thư viện: dos.h
Lưu ý với các bạn SV K8: Hiện nay mình thấy giáo viên dạy các bạn có yêu cầu mua cổng LPT. Mình phải nói thật là có mua về các bạn cũng chỉ để "nhìn" thôi, chứ chẳng lập trình qua nó được. Mình nghĩ khi cắm vào cổng USB thì địa chỉ cổng của nó ko phải là địa chỉ của 4 cổng trên nên chúng ta ko lập trình qua đó được. Nên mình khuyên các bạn nên kiếm 1 máy tính có cổng LPT để học và lập trình. Nếu giáo viên chỉ cần mô hình cổng LPT thì các bạn có thể mua riêng cổng cái với giá dao động từ 15-20K. Còn giá cổng LPT cắm USB là tầm từ 55-60K.
Khi lập trình cho cổng LPT, chạy chương trình phải chạy trên Dos thì cổng LPT mới có tác dụng. nếu các bạn chạy trên windows thì ko điều khiển dc cổng LPT đâu. Vào dos các bạn có thể dùng đĩa boot rồi chạy trực tiếp file exe đã built hoặc chạy qua file C.