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