Tải bản đầy đủ (.pdf) (26 trang)

BÀI TẬP NHÓM LẬP TRÌNH GHÉP NỐI ĐIỀU KHIỂN QUA CỔNG LPT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.25 MB, 26 trang )

KHOA CÔNG NGH THÔNG TINỆ
Đ I H C THÁI NGUYÊNẠ Ọ

BÀI T P NHÓMẬ
Thái nguyên 2-2011
K THU T L P TRÌNH CHUYÊNỸ Ậ Ậ
D NG CHO ĐTVTỤ
Ch đ :L p trình ghép n i & đi uủ ề ậ ố ề
khi n qua c ng LPTể ổ
Thành viên:
1. Ngô Văn Thóc
2. Ph m Văn Tuyênạ
3. T ng Xuân Tuy nố ề
4. Nguy n Ti n Th ngễ ế ươ
5. Nguy n Văn T ngễ ườ
2
M c l c:ụ ụ
Tiêu đ Trangề
L i m đ u …………………………………………………….ờ ở ầ 4
Gi i thi u chung v LPT ……………………………………………… ớ ệ ề 4
Phân tích thi t k ……………………………………………………….ế ế 14
1. S đ kh i …………………………………………………… ơ ồ ố 14
2. Các linh ki n s d ng trong m ch ………………………….ệ ử ụ ạ 14
3. M ch nguyên lýạ 16
4. L u đư ồ 17
5. L p trình cài đ tậ ặ 19
6. K t qu ế ả 24
K t lu n và h ng phát tri nế ậ ướ ể 24
Tài li u tham kh o 25ệ ả
3
L I M Đ U:Ờ Ở Ầ


Ngày nay v i s phát tri n c a khoa h c k thu t và công nghớ ự ể ủ ọ ỹ ậ ệ
trên th gi i nhi u lĩnh v c khác nhau đang di n ra. Đ c bi t s phátế ớ ở ề ự ễ ặ ệ ự
tri n nh vũ b o c a khoa h c máy tính là m t công c h tr đ c l cể ư ả ủ ọ ộ ụ ỗ ợ ắ ự
và quan tr ng trong các ngành Công ngh thông tin và t đ ng hoá. Nóọ ệ ự ộ
giúp con ng i l u tr , x lý thông tin, tính toán, đi u khi n. H n thườ ư ữ ử ề ể ơ ế
n a nó có th n i k t v i nhau t o thành m t m ng máy tính toàn c uữ ể ố ế ớ ạ ộ ạ ầ
đ chia s thông tin gi a các vùng trên th gi i.ể ẻ ữ ế ớ
Và đúng nh v y, vi c l p trình cho ph n c ng và chip đi u khi nư ậ ệ ậ ầ ứ ề ể
là đi u không th ph nh n đ c, và t m quan tr ng c a nó là r tề ể ủ ậ ượ ầ ọ ủ ấ
l n.Và vi c ghép n i v i máy tính là đi u b t bu c,vì ng i ta dùngớ ệ ố ớ ề ắ ộ ườ
ghép n i đ m r ng c u hình và kh năng ng d ng c a máy tính vàoố ể ở ộ ấ ả ứ ụ ủ
th c t .VD:Có th xây d ng các h đo l ng hoàn toàn t đ ng có thự ế ể ự ệ ườ ự ộ ể
th c hi n vi c giao ti p t 2 máy tính t Châu l c này sang Châu l cự ệ ệ ế ừ ừ ụ ụ
khác.
Vi c ghép n i máy tính v i các thi t b ngo i vi có nhi u cách l aệ ố ớ ế ị ạ ề ự
ch n:ọ
-Ghép n i máy in hay ghép n i c ng song song.ố ố ổ
-Ghép n i qua c ng RS 232 hay là c ng n i ti p.ố ổ ổ ố ế
-Ghép n i qua khe m r ng trên bo m ch ch .ố ở ộ ạ ủ
-Ghép n i qua c ng USB.ố ổ
M i kh năng trên đ u có u và nh c đi m, vì v y tùy thu c vàoỗ ả ề ư ượ ể ậ ộ
kh m c đích mà ta dùng cách nào. Tuy nhiên đây chúng ta s nghiênả ụ ở ẽ
c u bày v cách ghép n i song song. ng d ng vi c l p trình C trênứ ề ố Ứ ụ ệ ậ
dos đ th c hi n giao ti p.Vì C là ngôn ng l p trình m nh,g n gũi v iể ự ệ ế ữ ậ ạ ầ ớ
ph n c ng và kh năng ng d ng cao.ầ ứ ả ứ ụ
Gi i thi u chung v c ng LPT:ớ ệ ề ổ
4
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ả ề ổ
5
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ớ ệ ạ ổ ắ ố
6
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)ạ ạ
7
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ườ ề ể ớ ổ ả ể
8
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ề ể

*. Đ a ch các thanh ghi.ị ỉ
C ng LPT có ba thanh ghi có th truy n d li u và đi u khi n máyổ ể ề ữ ệ ề ể
in. Đ a ch c s c a các thanh ghi cho t t c c ng LPT (line printer) tị ỉ ơ ở ủ ấ ả ổ ừ
LPT1 đ n LPT4 đ c l u tr trong vùng d li u c a BIOS.ế ượ ư ữ ữ ệ ủ
- Thanh ghi d li u đ c đ nh v offset 00h.ữ ệ ượ ị ị ở
- Thanh ghi tr ng thái 01h.ạ ở
- Thanh ghi đi u khi n 02h.ề ể ở
Thông th ng, đ a ch c s c a LPT1 là 378h. Do đó, đ a chườ ị ỉ ơ ở ủ ị ỉ
c a các thanh nghi l n l t nh sau:ủ ầ ượ ư
Thanh ghi d li uữ ệ 378h
Thanh ghi tr ng tháiạ 379h
Thanh ghi đi u khi nề ể 37Ah
Đ a ch c a c ng LPT2 là 278h, do đó đ a ch c a thanh ghi nhị ỉ ủ ổ ị ỉ ủ ư
sau:
Thanh ghi d li uữ ệ 278h
Thanh ghi tr ng tháiạ 279h
Thanh ghi đi u khi nề ể 27Ah
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:ủ ẽ ư ữ ị ỉ ư
9
Đ 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 (hai chi u):ữ ệ ề

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):ạ ỉ ọ
Th t bítứ ự
7 6 5 4 3 2 1 0
Tín hi u máy inệ
BUSY
ACK
PAPER EMPTY SELECT
ERROR
IRQ
X X
Chân số
11 10 12 13 15 - - -
Thanh ghi đi u khi n máy in:ề ể
Th t bítứ ự 7 6 5 4 3 2 1 0
Tín hi u máy inệ X X DIR
IRQ
Enabl
e
SELECTIN
INIT
AUTOFEED
STROBE
Chân số
- - - - 17 16 14 1
x: không s d ngử ụ
IRQ Enable: yêu c u ng t c ng; 1 = cho phép; 0 = không cho phép ầ ắ ứ

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
,
AUTOFEED

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 và
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.
* . thi t l p đ a ch trong biosế ậ ị ỉ
Có th thi t l p đ c đ a ch trong bios ể ế ậ ượ ị ỉ thông qua hai cách :
Cách 1 : thi t l p th công trong mainboadế ậ ủ
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ả ẳ ị ị ộ ổ

10
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…ỉ ị
Cách 2 : thi t l p b ng ngôn ng l p trìnhế ậ ằ ữ ậ
Ví d : đ c đ a ch c a printer port qua BIOSụ ọ ị ỉ ủ
#include
#include
void main(void)
{
unsigned int far *ptraddr; /* Pointer to location of Port Addresses */
unsigned int address; /* Address of Port */
int a;
ptraddr=(unsigned int far *)0x00000408;
for (a = 0; a < 3; a++)
{
address = *ptraddr;
if (address == 0)
printf("No port found for LPT%d ",a+1);
else
printf("Address assigned to LPT%d is %Xh ",a+1,address);
*ptraddr++;
}
}
*.K thu t l p trình ghép n i.ỹ ậ ậ ố
Ngôn ng l p trình C là m t ngôn ng m nh l nh đ c phát tri nữ ậ ộ ữ ệ ệ ượ ể
t đ u th p niên 1970 b i Ken Thompson và Dennis Ritchie.T đó,ngônừ ầ ậ ở ừ
ng này đã lan r ng ra nhi u h đi u hành khác và tr thành m t nh ngữ ộ ề ệ ề ở ộ ữ
ngôn ng ph d ng nh t. C là ngôn ng r t có hi u qu và đ c aữ ổ ụ ấ ữ ấ ệ ả ượ ư
chu ng nh t đ vi t các ph n m m h th ng,m c dù nó cũng đ cộ ấ ể ế ầ ề ệ ố ặ ượ
dung cho vi c vi t cac ng d ng. Ngoài ra, C cũng th ng đ c dungệ ế ứ ụ ườ ượ

làm ph ng ti n gi ng d y trong khoa h c máy tính m c dù ngôn ngươ ệ ả ạ ọ ặ ữ
này không đ c thi t k dành cho ng i nh p môn.ượ ế ế ườ ậ
- C là m t ngôn ng l p trình t ng đ i nh g n v n hành g nộ ữ ậ ươ ố ỏ ọ ậ ầ
gi ng ph n c ng và nó gi ng ngôn ng Assembler h n h u h t cácố ầ ứ ố ữ ơ ầ ế
ngôn ng b c cao.C đôi khi đ c đánh giá nh là “có kh năng diữ ậ ượ ư ả
đ ng”,cho th y s khác nhau quan tr ng gi a nó và ngôn ng b c th pộ ấ ự ọ ữ ữ ậ ấ
11
nh la Assembler, đó là vi c mã C có th đ c dich và thi hành trongư ệ ể ượ
h u h t các máy tính, h n h n các ngôn ng hi n t i trong khi đóầ ế ơ ẳ ữ ệ ạ
Assembler ch có th ch y trong m t s máy tính đ c bi t. Vì v y Cỉ ể ạ ộ ố ặ ệ ậ
đ c xem là ngôn ng b c trung.ượ ữ ậ
- C đã đ c t o ra v i m t m c tiêu là làm cho nó thu n ti n đượ ạ ớ ộ ụ ậ ệ ể
vi t các ch ng trình l n v i s l i ít h n trong m u hình l p trình thế ươ ớ ớ ố ỗ ơ ẫ ậ ủ
t c mà l i không đ t gánh n ng lên vai ng i vi t ra trình d ch C, làụ ạ ặ ặ ườ ế ị
nh ng ng i b b n v i các đ c t ph c t p c a ngôn ng .ữ ườ ề ộ ớ ặ ả ứ ạ ủ ữ
- C có thêm nh ng ch c năng sau:ữ ứ
+ M t ngôn ng c t lõi đ n gi n, v i các ch c năng quan tr ng: xộ ữ ố ơ ả ớ ứ ọ ử
lý hàm hay vi c x lý t p tin s đ c cung c p b i các b th vi n cácệ ử ậ ẽ ượ ấ ở ộ ư ệ
th t c.ủ ụ
+ T p trung trên m u hình ậ ẫ l p trình th t cậ ủ ụ , v i các ph ng ti nớ ươ ệ
l p trình theo ki u ậ ể c u trúcấ .
+ M t h th ng ki u đ n gi n nh m lo i b nhi u phép toánộ ệ ố ể ơ ả ằ ạ ỏ ề
không có ý nghĩa th c d ng. ự ụ
+ Dùng ngôn ng ữ ti n x lýề ử , t c là các câu l nh ứ ệ ti n x lý Cề ử , cho
các nhi m v nh là đ nh nghĩa các ệ ụ ư ị macro và hàm ch a nhi u t p tinứ ề ậ
mã ngu nồ (b ng cách dùng câu l nh ti n x lý d ng ằ ệ ề ử ạ #include ch ng h n). ẳ ạ
+ M c th p c a ngôn ng cho phép dùng t i ứ ấ ủ ữ ớ b nh máy tínhộ ớ qua
vi c x d ng ki u d li u ệ ử ụ ể ữ ệ pointer.
+ S l ng t khóa r t nh g n. ố ượ ừ ấ ỏ ọ
+ Các tham số đ a vào các hàm b ng giá tr , không b ng đ a ch . ư ằ ị ằ ị ỉ

+ Hàm các con tr cho phép hình thành m t n n t ng ban đ u choỏ ộ ề ả ầ
tính đóng và tính đa hình.
+ H tr các ổ ợ b n ghiả hay các ki u d li u k t h p do ng i dùngể ữ ệ ế ợ ườ
t khóa đ nh nghĩa ừ ị struct cho phép các d li u liên h nhau có th đ cữ ệ ệ ể ượ
t p h p l i và đ c đi u ch nh nh là toàn b .ậ ợ ạ ượ ề ỉ ư ộ
- M t s ch c năng khác mà C không có (hay còn thi u) nh ng cóộ ố ứ ế ư
th tìm th y các ngôn ng khác bao g m:ể ấ ở ữ ồ
+ An toàn ki uể ,
+ T đ ng ự ộ Thu d n rácọ ,
+ Các l pớ hay các đ i t ngố ượ cùng v i các ng x c a chúng (xemớ ứ ử ủ
thêm OOP),
12
<a class="l" href=" />>>
endobj
128 0 obj
<</Type/Annot/Subtype/Link/Border[0 0 0]/Rect[176 301.7 228.1 322.7]/A<</Type/Action/S/URI/URI( />>>
endobj
129 0 obj
<</Type/Annot/Subtype/Link/Border[0 0 0]/Rect[417.4 364.7 520.8 385.7]/A<</Type/Action/S/URI/URI( />>>
endobj
130 0 obj
<</Type/Annot/Subtype/Link/Border[0 0 0]/Rect[99.1 385.7 163.6 406.7]/A<</Type/Action/S/URI/URI( />>>
endobj
131 0 obj
<</Type/Annot/Subtype/Link/Border[0 0 0]/Rect[326.3 406.7 366.7 427.7]/A<</Type/Action/S/URI/URI( />>>
endobj
132 0 obj
<</Type/Annot/Subtype/Link/Border[0 0 0]/Rect[434.6 427.7 507.2 448.7]/A<</Type/Action/S/URI/URI( />>>
endobj
133 0 obj

<</Type/Annot/Subtype/Link/Border[0 0 0]/Rect[247.9 427.7 306.5 448.7]/A<</Type/Action/S/URI/URI( />>>
endobj
134 0 obj
<</Type/Annot/Subtype/Link/Border[0 0 0]/Rect[215.9 490.7 268 511.7]/A<</Type/Action/S/URI/URI( />>>
endobj
135 0 obj
<</Type/Annot/Subtype/Link/Border[0 0 0]/Rect[302.9 511.7 403.9 532.7]/A<</Type/Action/S/URI/URI( />>>
endobj
210 0 obj
<</Type/Catalog/Pages 136 0 R
/OpenAction[1 0 R /XYZ null null 0]
/ViewerPreferences<</DisplayDocTitle true
>>
/Lang(en-US)
>>
endobj
211 0 obj
<</Title<FEFF0020002000200020002000200020002000200020>
/Author<FEFF0055006C0079007300730065007300200052002E00200047006F0074006500720061>
/Keywords<FEFF0046006F0078004300680069007400200053004F00460054005700410052004500200053004F004C005500540049004F004E0053>
/Creator<FEFF005700720069007400650072>
/Producer<FEFF004F00700065006E004F00660066006900630065002E006F0072006700200033002E0030>
/CreationDate(D:20110310195945+07'00')>>
endobj
xref
0 212
0000000000 65535 f
0001293175 00000 n
0000000019 00000 n
0000020654 00000 n

0000115061 00000 n
0000108515 00000 n
0000101802 00000 n
0000095596 00000 n
0000020676 00000 n
0000026076 00000 n
0000026054 00000 n
0001293321 00000 n
0000120953 00000 n
0000121799 00000 n
0001293469 00000 n
0000121820 00000 n
0000123048 00000 n
0001293617 00000 n
0000123070 00000 n
0000126074 00000 n
0001293765 00000 n
0000126096 00000 n
0000128266 00000 n
0000128288 00000 n
0001293913 00000 n
0000153004 00000 n
0000153825 00000 n
0000190502 00000 n
0000153846 00000 n
0001294061 00000 n
0000224615 00000 n
0000226694 00000 n
0000226716 00000 n
0001294209 00000 n

0000264438 00000 n
0000268873 00000 n
0001294357 00000 n
0000268895 00000 n
0000271599 00000 n
0000271621 00000 n
0001294505 00000 n
0000296181 00000 n
0000303163 00000 n
0001294653 00000 n
0000303185 00000 n
0000306028 00000 n
0001294801 00000 n
0000306050 00000 n
0000310074 00000 n
0001295088 00000 n
0000310096 00000 n
0000314007 00000 n
0001295335 00000 n
0000314029 00000 n
0000314937 00000 n
0000314958 00000 n
0001295483 00000 n
0000328542 00000 n
0000330152 00000 n
0000330174 00000 n
0000335036 00000 n
0000334434 00000 n
0000334456 00000 n
0000335015 00000 n

0001295631 00000 n
0000346035 00000 n
0000347403 00000 n
0000366288 00000 n
0000357854 00000 n
0000352754 00000 n
0000347425 00000 n
0000352509 00000 n
0000352531 00000 n
0000352734 00000 n
0001295779 00000 n
0000370627 00000 n
0000372510 00000 n
0000372532 00000 n
0001295927 00000 n
0000405388 00000 n
0000405735 00000 n
0001296075 00000 n
0000405756 00000 n
0000406040 00000 n
0000406061 00000 n
0001296223 00000 n
0000456533 00000 n
0000457810 00000 n
0001296371 00000 n
0000457832 00000 n
0000458666 00000 n
0001296519 00000 n
0000458687 00000 n
0000459354 00000 n

0001296667 00000 n
0000459375 00000 n
0000460257 00000 n
0001296815 00000 n
0000460278 00000 n
0000461223 00000 n
0001296963 00000 n
0000461244 00000 n
0000461958 00000 n
0000461980 00000 n
0001297113 00000 n
0001096574 00000 n
0001098516 00000 n
0001297570 00000 n
0001297717 00000 n
0001297865 00000 n
0001298018 00000 n
0001298207 00000 n
0001298396 00000 n
0001298586 00000 n
0001298791 00000 n
0001298998 00000 n
0001299225 00000 n
0001299484 00000 n
0001299714 00000 n
0001299944 00000 n
0001300154 00000 n
0001300306 00000 n
0001300538 00000 n
0001300709 00000 n

0001300972 00000 n
0001301183 00000 n
0001301437 00000 n
0001301650 00000 n
0001301906 00000 n
0001302123 00000 n
0001302315 00000 n
0001302486 00000 n
0001302677 00000 n
0001302861 00000 n
0001303078 00000 n
0001303271 00000 n
0001297290 00000 n
0001098539 00000 n
0001107468 00000 n
0001107491 00000 n
0001107702 00000 n
0001108106 00000 n
0001108373 00000 n
0001117977 00000 n
0001118000 00000 n
0001118201 00000 n
0001118632 00000 n
0001118926 00000 n
0001128328 00000 n
0001128351 00000 n
0001128547 00000 n
0001129038 00000 n
0001129375 00000 n
0001130341 00000 n

0001130363 00000 n
0001130556 00000 n
0001130847 00000 n
0001131011 00000 n
0001140251 00000 n
0001140274 00000 n
0001140481 00000 n
0001140929 00000 n
0001141238 00000 n
0001147059 00000 n
0001147082 00000 n
0001147277 00000 n
0001147612 00000 n
0001147817 00000 n
0001163094 00000 n
0001163118 00000 n
0001163331 00000 n
0001163902 00000 n
0001164330 00000 n
0001171751 00000 n
0001171774 00000 n
0001171986 00000 n
0001172357 00000 n
0001172598 00000 n
0001195727 00000 n
0001195751 00000 n
0001195948 00000 n
0001196702 00000 n
0001197281 00000 n
0001200482 00000 n

0001200505 00000 n
0001200703 00000 n
0001200995 00000 n
0001201164 00000 n
0001219380 00000 n
0001219404 00000 n
0001219613 00000 n
0001220231 00000 n
0001220699 00000 n
0001227434 00000 n
0001227457 00000 n
0001227665 00000 n
0001228030 00000 n
0001228267 00000 n
0001249014 00000 n
0001249038 00000 n
0001249242 00000 n
0001249956 00000 n
0001250518 00000 n
0001290446 00000 n
0001290470 00000 n
0001290665 00000 n
0001291611 00000 n
0001292580 00000 n
0001292644 00000 n
0001292840 00000 n
0001303468 00000 n
0001303613 00000 n
trailer
<</Size 212/Root 210 0 R

/Info 211 0 R
/ID [ <D53A8D1A61F6376921E0C179710FBC44>
<D53A8D1A61F6376921E0C179710FBC44> ]
/DocChecksum /48F15F66E3DDF96E237F61036E0F1A9B
>>
startxref
1304056
%%EOF
">
+ Các hàm l ng nhauồ ,
+ L p trình tiêu b nậ ả hay L p trình ph d ngậ ổ ụ ,
+ Quá t iả và Quá t i toán tả ử,
+ Các h tr cho ỗ ợ đa lu ngồ , đa nhi mệ và m ngạ .
- M c dù C còn thi u nhi u ch c năng h u ích nh ng lý do quanặ ế ề ứ ữ ư
tr ng đ C đ c ch p nh n vì nó cho phép các trình d ch m i đ c t oọ ể ượ ấ ậ ị ớ ượ ạ
ra m t cách nhanh chóng trên các n n t ng m i và vì nó cho phépộ ề ả ớ
ng i l p trìnhườ ậ d ki m soát đ c nh ng gì mà ch ong trình (do hễ ể ượ ữ ư ọ
vi t) th c thi. Đây là đi m th ng làm cho mã C ch y hi u qu h n cácế ự ể ườ ạ ệ ả ơ
ngôn ng khác. Th ng thì ch có ngôn ng ữ ườ ỉ ữ ASM ch nh b ng tay ch yỉ ằ ạ
nhanh h n (ngôn ng C), b i vì ASM ki m soát đ c toàn b máy. M cơ ữ ở ể ưọ ộ ặ
dù v y, v i s phát tri n các trình d ch C, và v i s ph c t p c a cácậ ớ ự ể ị ớ ự ứ ạ ủ
CPU hi n đ i, C đã d n thu nh kho ng cách khác bi t v v n t c này.ệ ạ ầ ỏ ả ệ ề ậ ố
M t lý do n a cho vi c C đ c x d ng r ng rãi và hi u qu là doộ ữ ệ ượ ử ụ ộ ệ ả
các trình d ch, các th vi n và các ph n m m thông d ch c a các ngônị ư ệ ầ ề ị ủ
ng b c cao khác l i th ng đ c t o nên t Cữ ậ ạ ườ ượ ạ ừ
*. Xu t nh p b ng ngôn ng C.ấ ậ ằ ữ
Ngôn ng l p trình C h tr m t s hàm làm nhi m v xu t, nh pữ ậ ỗ ợ ộ ố ệ ụ ấ ậ
d li u v i các thi t b ngo i vi.ữ ệ ớ ế ị ạ
Turbo C cung c p hàm xu t d li u qua c ng LPT là:ấ ấ ữ ệ ổ
Outport(0x378,d li u)ữ ệ

Và hàm nh p d li u là:ậ ữ ệ
Inport(0x378,d li u)ữ ệ
Các hàm import và outport n m trong th vi n ằ ư ệ <dos.h>
- int inport (int portid)
- unsigned char inportb (int portid)
- void outport (int portid, int value)
- void outportb (int portid, unsigned char value)
Nh v y, đ xu t nh p d li u qua c ng LPT1 thì ta c n đ nh đ aư ậ ể ấ ậ ữ ệ ổ ầ ị ị
ch c a portid là 378h ng v i thanh ghi d li u, 379h ng v i thanh ghiỉ ủ ứ ớ ữ ệ ứ ớ
tr ng thái (ch d c), 37Ah ng v i thanh ghi đi u khi n.ạ ỉ ọ ứ ớ ề ể
Các giá tr nh p vào đ c chuy n thành các giá tr nh phân vàị ậ ượ ể ị ị
đ c truy n ra các chân ng v i bít nh phân t ng ng.ượ ề ứ ớ ị ươ ứ .
Sau đây là ví d ụ : H n gi b t t t bóng đen 220V – 40Wẹ ờ ậ ắ ̀
13

Phân Tích Thi t Kế ế
1. S đ kh iơ ồ ố
2. Các linh ki n s d ng trong m ch:ệ ử ụ ạ
- 1 Transistor C1815
- 1 Relay 5V DC
- 1 đi n tr 470Ωệ ở
- Bóng đèn 220V - 40W
a) Transistor C1815
Hình d ng và kí hi u:ạ ệ
14

C1815 là lo i Transistor NPN công su t th p. Các thông s c b n:ạ ấ ấ ố ơ ả
• V
CBO
= 60V (MAX)

• V
CEO
= 50V (MAX)
• V
EBO
= 5V (MAX)
• I
C
= 150mA (MAX)
• I
B
= 50 mA
• P
C
= 40 mW
• h
FE
= 70 - 140 ( Min 25, Max 700 tùy thu c vào Vộ
CE
và I
C
)
• f
T
= 80MHz (T n s ho t đ ng. MIN)ầ ố ạ ộ
C c B c a transistor C1815 đ c n i v i c ng d li u c a LPTự ủ ượ ố ớ ổ ữ ệ ủ
qua đi n tr 470Ω. C c C đ c n i vào m t chân đi u khi n c a Relayệ ở ự ượ ố ộ ề ể ủ
(Chân s 1). C c E n i Mass (Mass và ngu n 5V DC đ c l y tr c ti pố ự ố ồ ượ ấ ự ế
t máy tính qua c ng USB).ừ ổ
b) Relay 5V DC

15

Hình d ngạ Kí hi u S đ chânệ ơ ồ
th c tự ế
V i 1 và 2 là hai chân đi u khi n, chân 1 n i v i c c C c aớ ề ể ố ớ ự ủ
C1815, chân 2 n i lên ngu n 5V DC. Chân 3 và 4 th ng tr c n i nhauố ồ ườ ự ố
qua khóa K. Chân 3 và 5 đ c n i vào m ch bóng đèn 220V 40W. ượ ố ạ
Đi n th đi u khi n Relay vào chân 1 và 2 là 5V DC. Relay đóngệ ế ề ể
ng t t i đa dòng 25A - 250V AC (28V DC) qua chân 3 và 5.ắ ố
c) Tr 470Ωở
16
Tác d ng: phân c c cho transistor C1815 và h n ch dòng đi n điụ ự ạ ế ệ
vào LPT
3. M ch nguyên lý:ạ
 Gi i thích ho t đ ng c a m ch:ả ạ ộ ủ ạ
Nh s đ nguyên lý trên ta th y: Khi d li u đ c đ a ra chân D0 – D7ư ơ ồ ấ ữ ệ ượ ư
(L p trình xu t d li u ra t t c các chân cùng m t lúc), dòng đi n tậ ấ ữ ệ ấ ả ộ ệ ừ
LPT s kích thích vào c c B c a Transistor C1815 khi n transistor thôngẽ ự ủ ế
CE, khi đó đi n s đi qua cu n c m trong Relay (hai chân 1 và 2), t o tệ ẽ ộ ả ạ ừ
tr ng khi n khóa K chuy n tr ng thái t chân 4 nh y v chân 5, m chườ ế ể ạ ử ả ề ạ
ngoài 220V s đóng, đèn sáng. Khi không có d li u xu t ra LPT,ẽ ữ ệ ấ
transistor s ngăn dòng đi t C xu ng E d n đ n không có đi n đi quaẽ ừ ố ẫ ế ệ
cu n c m, t tr ng không đ c sinh ra d n đ n khóa K nh y l i v trí 4ộ ả ừ ườ ượ ẫ ế ả ạ ị
ban đ u, m ch ngoài 220V m , không có đi n qua bóng đèn.ầ ạ ở ệ
17
4. L u đư ồ
18
19
5. L p Trình Cài đ tậ ặ
#include<stdio.h>

#include<conio.h>
#include<time.h>
#include<dos.h>
#define a 0x80
#define b 0x40
#define c 0x20
void main()
{
clrscr();
char
time[10],ngay[10],d1b[6],d2b[6],d3b[6],d1t[6],d2t[6],d3t[6],dt[6],ds[6];
int n; long b1,t1,b2,t2,b3,t3;
_strdate(ngay);
printf("\n\tChuong trinh dieu khien bat tat bong den 22V 40W\t
%s",ngay);
printf("\n\t ");
printf("\n\t1.Duong Vu Kien\t\t4.Nguyen Van Hien");
printf("\n\t2.Vu Thuy Hang\t\t5.Phung Thi Bich Lien");
printf("\n\t3.nong Le Thuy\t\t6.Pham Thanh Thong");
printf("\n\t ");
printf("\n\t\tBan hay lua chon phuong thuc hen gio:\n");
printf("\n\t1.Hen gio theo dong ho he thong");
printf("\n\t2.Hen gio theo thoi gian dinh san");
printf("\n\t ");
printf("\n");
scanf("%d",&n);
if(n==1)
20
{goto gioht;}
if(n==2)

{goto giobt;}
else goto exit;
gioht:
{
printf("Ban hay nhap vao thoi gian:");
printf("\nBat den 1:");
fflush(stdin);
gets(d1b);
printf("\tTat den 1:");
gets(d1t);
printf("Bat den 2:");
gets(d2b);
printf("\tTat den 2:");
gets(d2t);
printf("Bat den 3:");
gets(d3b);
// printf("Bat ca 3 den:");
// gets(ds);
printf("Tat den 3:");
gets(d3t);
do
{
gotoxy(50,23);
_strtime(time);
printf("Gio hien tai:%s",time);
21
if((time[3]==d1b[0])&(time[4]==d1b[1])&(time[6]==d1b[3])&(time[7]==d1b[4])
)
{
outportb(0x378,(inportb(0x378))|(0x80));

}
if((time[3]==d1t[0])&(time[4]==d1t[1])&(time[6]==d1t[3])&(time[7]==d1t[4]))
{
outportb(0x378,(inportb(0x378))&(0x7f));
}
if((time[3]==d2b[0])&(time[4]==d2b[1])&(time[6]==d2b[3])&(time[7]==d2b[4])
)
{
outportb(0x378,(inportb(0x378))|(0x40));
}
if((time[3]==d2t[0])&(time[4]==d2t[1])&(time[6]==d2t[3])&(time[7]==d2t[4]))
{
outportb(0x378,(inportb(0x378))&(0xbf));
}
if((time[3]==d3b[0])&(time[4]==d3b[1])&(time[6]==d3b[3])&(time[7]==d3b[4])
)
{
outportb(0x378,(inportb(0x378))|(0x20));
}
22
if((time[3]==d3t[0])&(time[4]==d3t[1])&(time[6]==d3t[3])&(time[7]==d3t[4]))
{
outportb(0x378,(inportb(0x378))&(0xdf));
}
if((time[3]==dt[0])&(time[4]==dt[1])&(time[6]==dt[3])&(time[7]==dt[4]))
{
outportb(0x378,0);
}
if((time[3]==ds[0])&(time[4]==ds[1])&(time[6]==ds[3])&(time[7]==ds[4]))
{

outportb(0x378,0xff);
}
}
while(!kbhit());
goto exit2;
}
giobt:
{
printf("\nBan hay nhap vao thoi gian den 1 sang:");
scanf("%ld",&b1);
// printf("\nBan hay nhap vao thoi gian den 1 tat:");
// scanf("%ld",&t1);
printf("\nBan hay nhap vao thoi gian den 2 sang:");
scanf("%ld",&b2);
// printf("\nBan hay nhap vao thoi gian den 2 tat:");
// scanf("%ld",&t2);
printf("\nBan hay nhap vao thoi gian den 3 sang:");
23
scanf("%ld",&b3);
printf("\nBan hay nhap vao thoi gian den tat:");
scanf("%ld",&t3);
printf("\nBat dau chuong trinh hen gio.Bam phim bat ki de ket thuc
chuong trinh");
do
{
outportb(0x378,a);
delay(b1);
// outportb(0x378,!a);
// delay(t1);
outportb(0x378,b);

delay(b2);
// outportb(0x378,!b);
// delay(t2);
outportb(0x378,c);
delay(b3);
outportb(0x378,0);
delay(t3);
}
while(!kbhit());
goto exit2;
}
exit:
clrscr();
printf("\nKhong co lua chon thu %d. Bam phim bat ki de ket thuc
chuong trinh !!",n);
outportb(0x378,0);
getch();
exit2:
clrscr();
24
printf("\nChuong trinh hen gio ket thuc !!!");
outportb(0x378,0);
getch();
getch();
}
6. K t Qu D t Đ cế ả ạ ượ
K t Lu n Và H ng Phát Tri nế ậ ướ ể
25

×