t máy tính qua c ng USB.ừ ổb Relay 5V DC.
Trang 1KHOA 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
Trang 3M 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ệ ả
Trang 4L 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: ớ ệ ề ổ
Trang 5A 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).ổ
Đây là hình nh v c ng LPT ả ề ổ
Trang 6C 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 ớ ệ ạ ổ ắ ố
Trang 7Tí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 ế ể
Trang 8Auto 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ả ứ ủ ừ ệ ẽ ể
Đá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ề ể ớ ổ ả ể
Trang 9trao đ 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ữ ệ 378hThanh ghi tr ng tháiạ 379hThanh 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ữ ệ 278hThanh ghi tr ng tháiạ 279hThanh 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:ủ ẽ ư ữ ị ỉ ư
Trang 10Đ a ch ị ỉ Ch c năng ứ
0000h:0408h Đ a ch c s c aị ỉ ơ ở ủ
LPT10000h:040Ah Đ a ch c s c aị ỉ ơ ở ủ
LPT20000h: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): ữ ệ ề
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 đậ ơ ề ườngACK, 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ả ẳ ị ị ộ ổ
Trang 11song 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…ỉ ị
unsigned int far *ptraddr; /* Pointer to location of Port Addresses */
unsigned int address; /* Address of Port */
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 achu ng nh t đ vi t các ph n m m h th ng,m c dù nó cũng độ ấ ể ế ầ ề ệ ố ặ ượ cdung cho vi c vi t cac ng d ng Ngoài ra, C cũng thệ ế ứ ụ ường được dunglà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ộ ấ ự ọ ữ ữ ậ ấ
Trang 12nh 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ấ ở ộ ư ệ
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
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óộ ố ứ ế ư
Trang 13+ 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 ẹ ờ ậ ắ ̀
Trang 15t máy tính qua c ng USB).ừ ổ
b) Relay 5V DC
Trang 16
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Ω ở
Trang 17Tác d ng: phân c c cho transistor C1815 và h n ch dòng đi n điụ ự ạ ế ệvào LPT
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.ầ ạ ở ệ
Trang 184 L u đ ư ồ
Trang 20printf("\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)
Trang 22if((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));
}