KHOA CÔNG NGHỆ THÔNG TIN
Bộ Môn Điện Tử Viễn Thông
&
Báo Cáo Kết Quả Nghiên Cứu
LỚP : Lập trình chuyên dụng trong ĐTVT-2-10 (N04)
Giảng viên: NGÔ THỊ VINH
Thái nguyên 2-2011
1
Môn :
lẬP TRÌNH CHUYÊN DỤNG TRONG ĐTVT
Chủ đề:
Tìm hiểu về cổng LPT-Line Printer Terminal
Các thành viên trong nhóm
1. Nguyễn Chung Lực ĐTVT-K8B (nhóm trưởng)
2. Thân Văn Khương ĐTVT-K8B
3. Lê Văn Tiến ĐTVT-K8B
4. Nguyễn Thị Hường ĐTVT-K8A
5. Mạc Văn Dũng ĐTVT-K8B
2
1. Mục Đích chung
- Trong thời đại công nghiệp hóa hiện đại hóa hiện nay, máy tính đã thiết bị phổ
biến được sử dụng với rất nhiều những lĩnh vực với những mục đích khác nhau
(soạn thảo văn bản, tính toán, thiết kế, 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.
Trong chủ đề này, ta chỉ nghiên cứu quá trình xuất nhập,và ứng dụng điều khiển
thiết bị ngoại vi qua cổng song song (cổng LPT).
3
- Cng song song( Parallel Port) l tp hp cỏc ng tớn hiu m vi x lớ hoc l
CPU dựng trao i d liu vi cỏc thit b, thnh phn khỏc. in hỡnh nht ca
loi giao din ny l dựng giao tip vi mỏy in, modems, keyboards v mn
hỡnh, Cng song song truyn nhiu bớt mt ln, trong khi cng ni tip ch truyn
mt bớt mt mt thi im(cú th truyn 2 chiu cựng mt thi im).
- Cng song song ca PC ban u cú 8 ng ra, 5 ng vo v 4 ng vo
ra. Nhng ng ny l giao tip vi nhiu dng ca cỏc thit b ngoi vi.
nhiu mỏy tớnh mi hn, 8 ng ra cú th thc hin chc nng nh l ng
Input t giao tip vi tc cao vi mỏy scaner,thit b v cỏc thit b khỏc
gi d liu ti PC.
B) Giao tip qua cng Print ( Cng mỏy in):
- IBM PC cho phép sử dụng đến 3 cổng song song có tên là LP1,
LP2,LPT3 và LP4. Kiểu giao tiếp song song đợc dùng để truyền dữ liệu
giữa máy tính và máy in. Khác với cách giao tiếp qua Port Com, ở cách
giao tiếp này dữ liệu đợc truyền song song cùng một lúc 8 bit. Vì thế nó có
thể đạt tốc độ cao. Connector của Port này có 25 chân bao gồm 8
chân dữ liệu và các đng tín hiệu bắt tay (Handshaking). Tất cả các
đờng Data và tín hiệu điều khiển đều ở mức logic hoàn toàn tơng thích
vơi mức TTL. Hơn nữa, ngi lập trình có thể điều khiển cho phép hoặc
không cho phép các tín hiệu tạo Interrupt từ ngõ vào nên việc giao tiếp đơn
giản và dễ dàng. Tuy nhiên, giao tiếp với mức logic TTL nên khoảng cách
truyền bị hạn chế so với cách truyền qua Port Com, đồng thời cáp truyền
cũng phức tạp hơn. Đó là nhc điểm của cách giao tiếp này.
5
Cæng m¸y in LPT - Line Printer Terminal
1.2. Sơ đồ giao tiếp qua cổng máy in
+ Khái niệm: Cổng song song, cổng cái, cổng máy in - LPT viết tắt từ Line Printer
Terminal.
-Cổng song song( Parallel Port) là tập hợp các đường tín hiệu mà vi xử lí hoặc là CPU
dùng để trao đổi dữ liệu với các thiết bị, thành phần khác. Điển hình nhất của loại
hoặc có một byte để truyền.
- Để dùng ngắt, cổng song song phải có một mức yêu cầu ngắt (Interrupt request -
IRQ) xác định
-Theo qui ước LPT1 dùng IRQ7 và LPT2 dùng IRQ5. Thế nhưng IRQ5 được dùng
bởi nhiều card âm thanh, và bởi vì các mức IRQ không được dùng bởi các thành phần
hệ thống nào rất là hiếm trong hệ thống, thậm chí IRQ7 có thể được dành cho các
thiết bị khác. Một vài cổng cho phép chọn các mức IRQ khác 2 mức trên.
-Rất nhiều driver máy in hoặc nhiều ứng dụng và thiết bị khác truy nhập cổng song
song không yêu cầu ngắt cổng song song. Nếu không chọn mức báo ngắt cho cổng
song song thì cổng này vẫn hoạt động trong hầu hết các trường hợp rất là hiệu quả và
bạn có thể dành mức báo ngắt IRQ cho công việc khác.
Công dụng: Thường dành riêng cho cắm máy in. Tuy nhiên đối với những máy in thế
hệ mới hầu hết cắm vào cổng USB thay vì cổng COM hay LPT.
Nhận dạng: Là cổng dài nhất trên mainboard.
7
II. Cấu tạo và nguyên lý cổng LPT
2.1. Sơ đồ,chức năng của các chân:
-Cổng LPT là loại cổng rất dễ sử dụng.Thông thường loại cổng này chỉ dùng để ghép
nối với máy in. Sơ đồ ghép nối song song như hình sau:
8
- Cổng LPT 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:
9
+ Chân số 1(STROBE): Chân ra, khi máy tính đa tín hiệu này ra thì nó báo cho máy in
đọc dữ liệu vào để in. Xung tác động ở mức thấp.
+ Chân 2 - 9 (DATA): Các chân ra dữ liệu của máy tính.
+ Chân 10 ( ACK): Chân vào để báo cho máy tính biết là dữ liệu đã nhận đ ợc và yêu
cầu máy tính gởi dữ liệu tiếp theo.
+ Chân 11 (BUSY): Chân vào để báo cho máy tính biết là máy in đang bận không thể
nhận tiếp dữ liệu từ máy tính gởi ra. Chân này tác động ở mức cao.
Thanh ghi dữ liệu 378h
Thanh ghi trạng thái 379h
Thanh ghi điều khiển 37Ah
11
Địa chỉ cơ sở của cổng LPT2:
Với các địa chỉ LPT3, LPT4 đều tương tự. Tuy nhiên trong một số trường hợp, địa
chỉ của cổng LPT có thể khác do quá trình khởi động của BIOS. BIOS sẽ lưu trữ các
địa chỉ này như sau:
Địa chỉ Chức năng
0000h:0408h Địa chỉ cơ sở của LPT1
0000h:040Ah Địa chỉ cơ sở của LPT2
0000h:040Ch Địa chỉ cơ sở của LPT3
Định dạng các thanh ghi như sau:
Thanh ghi dữ liệu 278h
Thanh ghi trạng thái 279h
Thanh ghi điều khiển 27Ah
12
Thứ tự bít 7 6 5 4 3 2 1 0
Tín hiệu máy in D7 D6 D5 D4 D3 D2 D1 D0
Chân số 9 8 7 6 5 4 3 2
Thanh ghi trạng thái máy in (chỉ đọc):
1513121011Chân số
XX
SELE
CT
PAPER
EMPTY
BU
SY
ble
DI
R
XX
Tín hiệu máy
in
01234567Thứ tự bít
Chú ý rằng chân BUSY được nối với cổng đảo trước khi đưa vào thanh ghi trạng thái,
các bit , SELECTIN , AUTUFEED và STROBE được đưa qua cổng đảo trước khi đưa
ra các chân của cổng máy in.
- Thông thường tốc độ xử lý dữ liệu của các thiết bị ngoại vi như máy in chậm hơn
PC nhiều nên các đường ACK, BUSY
STR được sử dụng cho kỹ thuật bắt tay. Khởi đầu, PC đặt dữ liệu lên bus sau đó kích
hoạt đường STR xuống mức thấp để thông tin cho máy in biết rằng dữ liệu đã ổn định
trên bus. Khi máy in xử lý xong dữ liệu, nó sẽ trả lại tín hiệu ACK xuống mức thấp để
ghi nhận. PC đợi cho đến khi đường BUSY từ máy in xuống thấp (máy in không bận)
thì sẽ đưa tiếp dữ liệu lên bus.
2.3.Thiết lập cổng LPT trên BIOS
Như chúng ta đã biết,các máy tính được nhà sản xuất đưa vào 4 công LPT là
:LPT1,LPT2,LPT3,LPT4. Nhưng do yêu cầu cần phải thiết kế thật nhỏ gọn nên người thiết
kế chỉ đưa ra 1 cổng ra ngoài để sử dụng còn 3 cổng còn lại được thiết kế trong Mainboard,
vì vậy việc thiết lập địa chỉ cổng LPT trong BIOS cũng đã được các nhà sản suất cài đặt
sẵn(mặc định là đưa cổng LPT1 có địa chỉ là 378h ra sử dụng).Vậy nếu chúng ta thiết lập sai
thì việc truy xuất dữ liệu sẽ không chính xác và những lập trình ứng dụng sẽ không thực hiện
được.Sau đây là cách thiết lập địa chỉ cổng LPT trên BIOS:
Bước 1: Chúng ta khởi động máy tính Bạn sẽ thấy trên màn hình sẽ có câu thông báo gợiý
cho bạn bấm phím nào để vàođược CMOS như:
Press <F2> to enter BIOS setup
Đối với một số máy cũ hay máy bộ, có thể phải nhấn tổ hợp phím khác như:
• CTRL + ALT + ESC
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.
17
Trao đổi dữ liệu qua cổng LPT
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 ?
Turbo C++ cung cÊp 2 hµm cã thÓ dïng ®Ó trao ®æi d÷ liÖu qua cæng
song song:
Hµm nhËp d÷ liÖu theo byte
unsigned char inportb(int portadd)
int inp(unsigned portadd)
Hµm xuÊt d÷ liÖu theo byte
void outportb(int portadd, unsigned char giatri)
int outp(unsigned portadd, int giatri)
C¸c hµm inportb vµ outportb n»m trong th viÖn <dos.h>. C¸c hµm inp
vµ outp n»m trong th viÖn <conio.h>.
• §Ó xuÊt d÷ liÖu ra qua 8 ®êng dÉn d÷ liÖu:
outportb(0x378,d÷ liÖu); //d÷ liÖu xuÊt ra lµ c¸c sè nguyªn tõ 0 tíi 255.
• §Ó xuÊt d÷ liÖu ra qua 4 ®êng dÉn ®iÒu khiÓn:
outportb(0x37A, dl ^ 11); //d÷ liÖu lµ c¸c sè nguyªn tõ 0 ®Õn 15
• §Ó nhËp d÷ liÖu vµo qua 4 ®êng dÉn ®iÒu khiÓn:
outportb(0x37A, 15 ^ 11);
delay(1);
dl = inportb(0x37A) &15^ 11;
void main()
{
outportb(portadd,0x3F); //hien so 0
delay(1000);
outportb(portadd,0x6); //hien so 1
delay(1000);
outportb(portadd,0x5B); //hien so 2
delay(1000);
outportb(portadd,0x4F); //hien so 3
delay(1000);
outportb(portadd,0x66); //hien so 4
delay(1000);
outportb(portadd,0x6D); //hien so 5
delay(1000);
outportb(portadd,0x7D); //hien so 6
delay(1000);
outportb(portadd,0x7); //hien so 7
delay(1000);
outportb(portadd,0x7F); //hien so 8
23
delay(1000);
outportb(portadd,0x6F); //hien so 9
delay(1000);
outportb(portadd,0); // Xoa du dieu cong LPT
}
• Trong ví dụ ta dùng led 7 đoạn cathode chung(a là LSB, dp là MSB)
LED cathode chung
- Đối với led cathode chung thì cổng COM luôn ở mức 0. Muốn sáng led thì tương
ứng các chân tương ứng từ a =>f,dp sẽ ở mức logic 1
24