Với kết cấu nội dung gồm 4 chương, đồ án Thiết kế, chế tạo mạch đo nhiệt độ hiển thị trên LCD 16X2 trình bày về các phương pháp đo nhiệt độ, cơ sở lý thuyết đo nhiệt độ hiển thị trên LCD 16X2, thiết kế và chế tạo LCD 16X2,... Đây là tài liệu tham khảo hữu ích cho các bạn chuyên ngành Điện - Điện tử.
Trang 1Giáo viên h ướ ng d n ẫ : Nguy n Vi t Ng ễ ế ư
Sinh viên th c hi n ự ệ : Ph m Văn Th c ạ ự
Thân Th Th ị ươ ng
L p ớ : 112134.1
Trang 2Tháng 10, năm 2015
Trang 3NHÂN XET CUA GIAO VIÊN H ̣ ́ ̉ ́ ƯƠ NG DÂN ́ ̃
Ngày tháng 10 năm 2015 Giáo viên hướng d nẫ
Trang 4M C L C:Ụ Ụ
Table of Contents
Trang 5đi u khi n nh 8051, Motorola 68HC, AVR, ARM, Ngoài h 8051 đề ể ư ọ ượ c
hướng d n m t cách căn b n môi trẫ ộ ả ở ường đ i h c, chúng em đã ch n vi đi uạ ọ ọ ề khi n PIC đ m r ng v n ki n th c và phát tri n các ng d ng trên công cể ể ở ộ ố ế ứ ể ứ ụ ụ này vì các nguyên nhân sau:
H vi đi u khi n nàycó th tìm mua d dàng t i th trọ ề ể ể ễ ạ ị ường Vi t Nam.ệ
Có đ y đ tính năng c a m t vi đi u khi n khi ho t đ ng đ c l p.ầ ủ ủ ộ ề ể ạ ộ ộ ậ
Là s b sung r t t t v ki n th c cũng nh ng d ng cho h vi đi uự ổ ấ ố ề ế ứ ư ứ ụ ọ ề khi n mang tính truy n th ng: h vi đi u khi n 8051. Giá thành khôngể ề ố ọ ề ể
đ t.ắ
S h tr c a nhà s n xu t v trình biên d ch, các công c l p trình, n pự ỗ ợ ủ ả ấ ề ị ụ ậ ạ
chương trình t d n gi n t i ph c t p ừ ơ ả ớ ứ ạ
Các tính năng đa d ng c a vi đi u khi n PIC và các tính năng này khôngạ ủ ề ể
ng ng đừ ược phát tri n.ể
S lố ượng ngườ ử ụi s d ng h vi đi u khi n PIC trên th gi i cũng nhọ ề ể ế ớ ư
Vi t Nam khá nhi u.Đã t o thu n l i trong quá trình tìm hi u và phátệ ề ạ ậ ợ ể tri n các ng d ng nh : s lể ứ ụ ư ố ượng tài li u, s lệ ố ượng các ng d ng mứ ụ ở
đã được phát tri n, d dàng trao đ i, h c t p, d dàng tìm để ễ ổ ọ ậ ễ ược h trỗ ợ khi g p khó khăn.ặ
Trang 6Vì v y, sau m t th i gian h c t p và tìm hi u tài li u v i s gi ng d yậ ộ ờ ọ ậ ể ệ ớ ự ả ạ
c a các th y cô giáo. Cùng v i s d n d t nhi t tình c a giáo viên hủ ầ ớ ự ẫ ắ ệ ủ ướng d nẫ
th y ầ Nguy n Vi t Ngễ ế ư. Chúng em đã ch n đ tài: ọ ề
“thi t k ch t o m ch đo nhi t đ hi n th trên LCD 16x2ế ế ế ạ ạ ệ ộ ể ị ” làm đ án ồtích h p 1 c a mình.ợ ủ
Trang 7 Đ i tố ượng nghiên c uứ
V i đ tài này chúng em t p trung vào:ớ ề ậ
Tìm hi u v vi đi u khiể ề ề ển PIC 16F877A
Nghiên c u và ch t o thi t b đo nhi t đ phòng.ứ ế ạ ế ị ệ ộ
M c đích nghiên c uụ ứ
Khi nghiên c u đ án này chúng em đã:ứ ồ
Hi u để ược cách th c và ch đ ho t đ ng c a VĐK ứ ế ộ ạ ộ ủ PIC 16F877A
Hi u để ược cách th c ho t đ ng c a c m bi n nhi t đ LM 35.ứ ạ ộ ủ ả ế ệ ộ
Thi t k , ch t o đế ế ế ạ ược m ch đo nhi t đ phòng dùng ạ ệ ộ PIC 16F877A
Do ki n th c và trình đ năng l c h n h p nên vi c th c hi n đ tài này khôngế ứ ộ ự ạ ẹ ệ ự ệ ề
th tránh để ược thi u sót, kính mong nh n đế ậ ược s thông c m và góp ý c aự ả ủ
th y giáo, cô giáo và các b n đ đ án này hoàn ch nh h n.ầ ạ ể ồ ỉ ơ
Chúng em xin trân thành c m n!ả ơ
Sinh viên th c hi n:ự ệ Ph m Văn Th cạ ự
Thân Th Thị ương
Trang 8CHƯƠNG I: CÁC PHƯƠNG PHÁP ĐO NHIỆT ĐỘ
1.1 Khái ni m v nhi t đ : ệ ề ệ ộ
1.1.1 Khái ni m: ệ
Nhi t đ là đ i lý đ c tr ng cho cệ ộ ạ ặ ư ường đ chuy n đ ng c a các nguyênộ ể ộ ủ
t , phân t c a m t h v t ch t. Tu theo t ng tr ng thái c a v t ch t ( r n,ử ử ủ ộ ệ ậ ấ ỳ ừ ạ ủ ậ ấ ắ
l ng, khí) mà chuy n đ ng này có khác nhau. tr ng thái láng, các phân t daoỏ ể ộ ở ạ ử
đ ng quanh vi trí cân b ng nh ng vi trí cân b ng c a nó luôn d ch chuy n làmộ ằ ư ằ ủ ị ể cho ch t l ng không có hình d ng nh t đ nh. Còn tr ng thái r n, các ph n t ,ấ ỏ ạ ấ ị ở ạ ắ ầ ử nguyên t ch dao đ ng xung quanh v trí cân b ng. Các d ng v n đ ng này c aử ỉ ộ ị ằ ạ ậ ộ ủ các phân t , nguyên t đử ử ược g i chung là chuy n đ ng nhi t. Khi tọ ể ộ ệ ương tác
v i bên ngoài có trao đ i năng lớ ổ ượng nh ng không sinh công, thì quá trình traoư
đ i năng lổ ượng nói trên g i là s truy n nhi t. Quá trình truy n nhi t trênọ ự ề ệ ề ệ tuân theo 2 nguyên lý:
B o toàn năng lả ượng
Nhi t ch có th t truy n t n i có nhi t đ cao đ n n i có nhi t đệ ỉ ể ự ề ừ ơ ệ ộ ế ơ ệ ộ
th t. tr ng thái r n, s truy n nhi t x y ra ch y u b ng d n nhi t và b cấ Ở ạ ắ ự ề ệ ả ủ ế ằ ẫ ệ ứ
Trang 91.1.2 S l ơ ượ ề c v ph ươ ng pháp đo nhi t đ : ệ ộ
Nhi t đ là đ i lệ ộ ạ ượng ch có th đo gián ti p trên c s tính ch t c aỉ ể ế ơ ở ấ ủ
v t ph thu c nhi t đ Hi n nay chóng ta có nhi u nguyên lí c m bi n khácậ ụ ộ ệ ộ ệ ề ả ế nhau đ ch t o c m bi n nhi t đ nh : nhi t đi n tr , c p nhi t ng u,ể ế ạ ả ế ệ ộ ư ệ ệ ở ặ ệ ẫ
phương pháp quang dùa trên phân b ph b c x nhi t, phố ổ ứ ạ ệ ương pháp dùa trên
s dãn n c a v t r n, l ng, khí ho c dùa trên t c đ âm… Có 2 phự ở ủ ậ ắ ỏ ặ ố ộ ương pháp
1.2 Đo nhi t đ b ng ph ệ ộ ằ ươ ng pháp ti p xúc ế
1.2.1 Đo nhi t đ b ng nhi t đi n tr : ệ ộ ằ ệ ệ ở
Nguyên lý ho t đ ng:ạ ộ
Đi n tr c a m t s kim lo i thay đ i theo nhi t đ và dùa vào s thayệ ở ủ ộ ố ạ ổ ệ ộ ự
đ i đi n tr đó ngổ ệ ở ười ta đo được nhi t đ c n đo.ệ ộ ầ
Nhi t đi n tr dùng trong d ng c đo nhi t đ làm vi c v i dòng ph t i nhệ ệ ở ụ ụ ệ ộ ệ ớ ụ ả ỏ
đ nhi t năng sinh ra do dòng nhi t đi n tr nh h n so v i nhi t năng nh nể ệ ệ ệ ở ỏ ơ ớ ệ ậ
đượ ừc t môi trường thí nghi m.ệ
Yêu c u c b n đ i v i v t li u dùng làm chuy n đ i c a nhi t đi nầ ơ ả ố ớ ậ ệ ể ổ ủ ệ ệ
tr là có h s nhi t đ l n và n đ nh, đi n tr su t khá l n…ở ệ ố ệ ộ ớ ổ ị ệ ở ấ ớ
Trang 10Trong công nghi p nhi t đi n tr đệ ệ ệ ở ược chia thành nhi t đi n tr kimệ ệ ở
lo i và nhi t đi n tr bán d n.ạ ệ ệ ở ẫ
1.2.2 Đo nhi t đ b ng c p nhi t ng u: ệ ộ ằ ặ ệ ẫ
Nguyên lý làm vi c ệ :
B c m bi n c p nhi t ng u là 1 m ch t có 2 hay nhi u thanh d nộ ả ế ặ ệ ẫ ạ ừ ề ẫ
đi n g m 2 dây d n A và B. Sebeck đã ch ng minh r ng n u m i hàn có nhi tệ ồ ẫ ứ ằ ế ố ệ
đ t và tộ 0 khác nhau thì trong m ch khép kín có m t dòng đi n ch y qua. Chi uạ ộ ệ ạ ề
c a dòng đi n này ph thu c vào nhi t đ tủ ệ ụ ộ ệ ộ ương ng c a m i hàn nghĩa là t >ứ ủ ố
t0 thì dòng đi n ch y theo hệ ạ ướng ngượ ạc l i. N u đ h m t đ u thì s xu tế ể ở ộ ầ ẽ ấ
hi n m t s c đi n đ ng nhi t. Khi m i hàn có cùng nhi t đ ( ví d b ng tệ ộ ứ ệ ộ ệ ố ệ ộ ụ ằ 0 ) thì s c đi n đ ng t ng b ng:ứ ệ ộ ổ ằ
EAB = eAB(t0) + eAB(t0) = 0
T đó rót ra: eừ AB = eAB(t0)
Khi t0 và t khác nhau thì s c đi n đ ng t ng b ng:ứ ệ ộ ổ ằ
EAB = eAB(t) – e+AB(t0)
Phương trình trên là phương trình c b n c a c p nhi t ng u ( s c đi nơ ả ủ ặ ệ ẫ ứ ệ
đ ng ph thu c vào h s nhi t đ c a m ch vòng t và tộ ụ ộ ệ ố ệ ộ ủ ạ 0)
Nh v y b ng cách đo s c đi n đ ng ta có th tìm đậ ằ ứ ệ ộ ể ược nhi t đ c a đ iệ ộ ủ ố
tượng
Phương pháp này được s d ng nhi u trong công nghi p khi c n đoử ụ ề ệ ầ
nh ng n i có nhi t đ caoữ ơ ệ ộ .
1.2.3 IC c m bi n nhi t đ ả ế ệ ộ
Có r t nhi u hãng ch t o linh ki n đi n t đã s n xu t ra các lo i ICấ ề ế ạ ệ ệ ử ả ấ ạ
Trang 11c m bi n nhi t thả ế ệ ường là đi n áp c a líp chuy n ti p pn trong m t lo iệ ủ ể ế ộ ạ tranzitor lo i bipola.ạ
1.3 Đo nhi t đ b ng ph ệ ộ ằ ươ ng pháp không ti p xúc ế
Trang 122.1Tìm hi u v c m bi n nhi t đ LM35 ể ề ả ế ệ ộ
LM35 là m t c m bi n nhi t đ analog, thu c h IC c m bi n nhi t độ ả ế ệ ộ ộ ọ ả ế ệ ộ
s n xu t theo công ngh bán d n d a trên các ch t bán d n d b tác đ ng b iả ấ ệ ẫ ự ấ ẫ ễ ị ộ ở
s thay đ i c a nhi t đ , đ u ra c a c m bi n là đi n áp (V) t l v i nhi t đự ổ ủ ệ ộ ầ ủ ả ế ệ ỉ ệ ớ ệ ộ
mà nó được đ t trong môi trặ ường c n đo.ầ
H LM35 có r t nhi u lo i và nhi u ki u đóng v khác nhau:ọ ấ ề ạ ề ể ỏ
Hình 1.1: C m bi n nhi t đ LM35 ả ế ệ ộ
Đ c đi m n i b t: ặ ể ổ ậ
Nhi t đ đệ ộ ược xác đ nh b ng cách đo hi u đi n th ngõ ra c a LM35.ị ằ ệ ệ ế ủ
Đi n áp đ u vào t 4V đ n 30V.ệ ầ ừ ế
Đ phân gi i đi n áp đ u ra là 10mV/ộ ả ệ ầ 0C
Đ chính xác cao, tính năng c m bi n nhi t đ r t nh y.ộ ả ế ệ ộ ấ ạ
Ở nhi t đ 25(ệ ộ 0C) nó có sai s không quá 1%. V i d i đo t 50 đ nố ớ ả ừ ế 150(0C), tín hi u ngõ ra tuy n tính liên t c v i nh ng thay đ i c a tínệ ế ụ ớ ữ ổ ủ
hi u ngõ vào.ệ
Trang 13D i nhi t đ đo đả ệ ộ ượ ủc c a LM35 là t 55ừ 0C đ n 150ế 0C v i các m c đi n ápớ ứ ệ
ra khác nhau. V y ng v i t m ho t đ ng t 0(ậ ứ ớ ầ ạ ộ ừ 0C) đ n 100(ế 0C)ta có s bi nự ế thiên đi n áp ngõ ra là:ệ
Ở 0C thì đi n áp ngõ ra Vệ out = 1500mV
2.2Vi đi u khi n PIC 16F877A ề ể
2.2.1PIC là gì?
PIC là vi t t t c a “Programmable Intelligent Computer”, có th t m d chế ắ ủ ể ạ ị
là “máy tính thông minh kh trình” do hãng Genenral Instrument đ t tên cho viả ặ
đi u khi n đ u tiên c a h Hãng Micrchip ti p t c phát tri n s n ph m nàyề ể ầ ủ ọ ế ụ ể ả ẩ
và cho đ n nay hãng đã t o ra g n 100 lo i s n ph m khác nhau.ế ạ ầ ạ ả ẩ
Các kí hi u c a vi đi u khi n PIC:ệ ủ ề ể
PIC12xxxx: đ dài l nh 12 bitộ ệ
PIC16xxxx: đ dài l nh 14 bitộ ệ
PIC18xxxx: đ dài l nh 16 bitộ ệ
C: PIC có b nh EPROM (ch có 16C84 là EEPROM)ộ ớ ỉ
F: PIC có b nh flashộ ớ
Trang 14LF: PIC có b nh flash ho t đ ng đi n áp th pộ ớ ạ ộ ở ệ ấ
LV: tương t nh LF, đây là kí hi u cũự ư ệ
Bên c nh đó m t s vi đi u khi n có kí hi u xxFxxx là EEPROM, n u cóạ ộ ố ệ ể ệ ế thêm ch A cu i là flash (ví d PIC16F877 là EEPROM, còn PIC16F877A làữ ở ố ụ flash). Ngoài ra còn có thêm m t dòng vi đi u khi n PIC m i là dsPIC. Vi tộ ề ể ớ Ở ệ Nam ph bi n nh t là các h vi đi u khi n PIC do hãng Microchip s n xu t.ổ ế ấ ọ ề ể ả ấCách l a ch n m t vi đi u khi n PIC phù h p:ự ọ ộ ề ể ợ
Trước h t c n chú ý đ n s chân c a vi đi u khi n c n thi t cho ngế ầ ế ố ủ ề ể ầ ế ứ
d ng. Có nhi u vi đi u khi n PIC v i s lụ ề ề ể ớ ố ượng chân khác nhau, th m chí có viậ
đi u khi n ch có 8 chân, ngoài ra còn có các vi đi u khi n 28, 40, 44, … chân.ề ể ỉ ề ể
C n ch n vi đi u khi n PIC có b nh flash đ có th n p xóa chầ ọ ề ể ộ ớ ể ể ạ ương trình
được nhi u l n h n.ề ầ ơ
Ti p theo c n chú ý đ n các kh i ch c năng đế ầ ế ố ứ ược tích h p s n trong viợ ẵ
đi u khi n,các chu n giao ti p bên trong. Sau cùng c n chú ý đ n b nhề ể ẩ ế ầ ế ộ ớ
chương trình mà vi đi u khi n cho phép. Ngoài ra m i thông tin v cách l aề ể ọ ề ự
ch n vi đi u khi n PIC có th đọ ề ể ể ược tìm th y trong cu n sách “Select PICấ ố guide” do nhà s n xu t Microchip cung c p.ả ấ ấ
Do th i gian làm đ án có h n nên chúng em ch t p trung tìm hi u các tínhờ ồ ạ ỉ ậ ể năng c a PIC 16F877A có liên quan đ n đ tài.ủ ế ề
PIC 16F877A là dòng PIC khá ph bi n, khá đ y đ tính năng ph c v choổ ế ầ ủ ụ ụ
h u h t t t c các ng d ng th c t Đây là dòng PIC khá d cho ngầ ế ấ ả ứ ụ ự ế ễ ười m iớ làm quen v i PIC có th h c t p và t o n n t ng v h vi đi u khi n PIC c aớ ể ọ ậ ạ ề ả ề ọ ề ể ủ mình
PIC 16F877A thu c h vi đi u khi n 16Fxxx có các đ c tính ngo i vi sau:ộ ọ ề ể ặ ạ
Ngôn ng l p trình đ n gi n v i 35 l nh có đ dài 14 bit.ữ ậ ơ ả ớ ệ ộ
T t c các câu l nh th c hi n trong m t chu kì l nh ngo i tr m t s câuấ ả ệ ự ệ ộ ệ ạ ừ ộ ố
l nh r nhánh th c hi n trong hai chu kì l nh. Chu kì l nh b ng 4 l n chuệ ẽ ự ệ ệ ệ ằ ầ
kì dao đ ng c a th ch anh.ộ ủ ạ
Trang 15 B nh chộ ớ ương trình Flash 8Kx14 words, v i kh năng ghi xóa kho ng 100ớ ả ả ngàn l n.ầ
B nh chộ ớ ương trình 8Kx14 bit, b nh d li u 368x8byte RAM và b nhộ ớ ữ ệ ộ ớ
d li u EEPROM v i dung lữ ệ ớ ượng 256x8 byte. S PORT I/O là 5 v i 33pinố ớ I/O
Kh năng ng t (lên t i 14 ngu n c ng t trong và ng t ngoài).ả ắ ớ ồ ả ắ ắ
Ngăn nh Stack đớ ược chia làm 8 m c.ứ
Truy c p b nh b ng đ a ch tr c ti p ho c gián ti p.ậ ộ ớ ằ ị ỉ ự ế ặ ế
Timer 0: b đ m 8 bit v i b chia t n s 8 bit.ộ ế ớ ộ ầ ố
Timer 1: b đ m 16 bit v i b chia t n s ,có th th c hi n ch c năngộ ế ớ ộ ầ ố ể ự ệ ứ
đ m d a vào xung clock ngo i vi ngay khi vi đi u khi n ho t đ ng chế ự ạ ề ể ạ ộ ở ế
đ sleep.ộ
Timer 2: b đ m 8 bit v i b chia t n s , b postcaler.ộ ế ớ ộ ầ ố ộ
Hai b Capture/so sánh/đi u ch đ rông xung.ộ ề ế ộ
Các chu n giao ti p n i ti p SSP (Synchronous Serial Port), SPI và I2C.ẩ ế ố ế
Chu n giao ti p n i ti p USART v i 9 bit đ a ch ẩ ế ố ế ớ ị ỉ
C ng giao ti p song song PSP (Parallel Slave Port) v i các chân đi u khi nổ ế ớ ề ể
RD, WR, CS bên ngoài.ở
Các đ c tính Analog: ặ
8 kênh chuy n đ i ADC 10 bit.ể ổ
Hai b so sánh.ộ
Bên c nh đó là m t vài đ c tính khác c a vi đi u khi n nh :ạ ộ ặ ủ ề ể ư
B nh flash v i kh năng ghi xóa độ ớ ớ ả ược 100.000 l n.ầ
B nh EEPROM v i kh năng ghi xóa độ ớ ớ ả ược 1.000.000 l n.ầ
D li u b nh EEPROM có th l u tr trên 40 năm.ữ ệ ộ ớ ể ư ữ
Trang 16 Kh năng t n p chả ự ạ ương trình v i s đi u khi n c a ph n m m.ớ ự ề ể ủ ầ ề
N p đạ ược chương trình ngay trên m ch đi n ICSP (In Circuit Serialạ ệ Programming) thông qua 2 chân
Watchdog Timer v i b dao đ ng trong.ớ ộ ộ
Ch c năng b o m t mã chứ ả ậ ương trình
Ch đ Sleep.ế ộ
Có th ho t đ ng v i nhi u d ng Oscillator khác nhau.ể ạ ộ ớ ề ạ
Trang 17Hình 1.2: Hình nh th c t và s đ chân c a PIC 16F877A ả ự ế ơ ồ ủ
Trang 18Hình 1.3: S đ kh i b vi đi u khi n PIC 16F877A ơ ồ ố ộ ề ể
Trang 19PIC 16F877A có t t c 40 chân,đấ ả ược chia thành 5 PORT, 2 chân c p ngu n,ấ ồ
2 chân GND, 2 chân th ch anh và 1 chân dùng đ RESET vi đi u khi n.ạ ể ề ể
AN 0,1,2: ngõ vào tương t c a kênh th 0,1,2.ự ủ ứ
+ Chân RA2/AN2/VREF/CVREF+(4): xu t nh p s / ngõ vào tấ ậ ố ương tự
c a kênh th 2/ ngõ vào đi n áp chu n th p c a b AD/ ngõ vào đi n áp ch nủ ứ ệ ẩ ấ ủ ộ ệ ẩ cao c a b AD. ủ ộ
+ Chân RA3/AN3/VREF+(5): xu t nh p s / ngõ vào tấ ậ ố ương t kênh 3/ ngõự vào đi n áp chu n (cao) c a b AD.ệ ẩ ủ ộ
+ Chân RA4/TOCK1/C1OUT(6): xu t nh p s / ngõ vào xung clock bênấ ậ ố ngoài cho Timer 0/ ngõ ra b so sánh 1.ộ
+ Chân RA5/AN4/ / C2OUT(7): xu t nh p s / ngõ vào tấ ậ ố ương t kênhự 4/ ngõ vào ch n l a SPI ph / ngõ ra b so sánh 2.ọ ự ụ ộ
+ Chân RB0/INT (33): xu t nh p s / ngõ vào tín hi u ng t ngoài.ấ ậ ố ệ ắ
+ Chân RB1(34), RB2(35): xu t nh p s ấ ậ ố
+ Chân RB3/PGM(36): xu t nh p s / cho phép l p trình đi n áp th pấ ậ ố ậ ệ ấ ICSP
+ Chân RB4(37), RB5(38): xu t nh p s ấ ậ ố
Trang 20+ Chân RB6/PGC(39): xu t nh p s / m ch g r i và xung clock l p trìnhấ ấ ố ạ ỡ ố ậ ICSP.
+ Chân RB7/PGD(40): xu t nh p s / m ch g r i và d li u l p trìnhấ ậ ố ạ ỡ ố ữ ệ ậ ICSP
+ Chân RC0/T1OCO/T1CKI(15): xu t nh p s / ngõ vào b giao đ ngấ ậ ố ộ ộ Timer1/ ngõ vào xung clock bên ngoài Timer 1.
+ Chân RC1/T1OSI/CCP2(16): xu t nh p s / ngõ vào b dao đ ng Timerấ ậ ố ộ ộ 1/ ngõ vào Capture2, ngõ ra compare2, ngõ ra PWM2
+ Chân RC2/CCP1(17): xu t nh p s / ngõ vào Capture1 ,ngõ ra compare1,ấ ậ ố ngõ ra PWM1
+ Chân RC3/SCK/SCL(18): xu t nh p s / ngõ vào xung clock n i ti pấ ậ ố ố ế
đ ng b , ngõ ra ch đ SPI./ ngõ vào xung clock n i ti p đ ng b , ngõ ra c aồ ộ ế ộ ố ế ồ ộ ủ
ch đ I2C. ế ộ
+ Chân RC4/SDI/SDA(23): xu t nh p s / d li u vào SPI/ xu t nh p dấ ậ ố ữ ệ ấ ậ ữ
li u I2C.ệ
+ Chân RC5/SDO(24): xu t nh p s / d li u ra SPI.ấ ậ ố ữ ệ
+ Chân RC6/TX/CK(25): xu t nh p s / truy n b t đ ng b USART/ xungấ ậ ố ề ấ ồ ộ
B nh d li u c a PIC là b nh EFPROM độ ớ ữ ệ ủ ộ ớ ược chia ra làm nhi u bank.ề
Đ i v i PIC16F877A b nh d li u đố ớ ộ ớ ữ ệ ược chia ra làm 4 bank. M i bank cóỗ dung lượng 128 byte, bao g m các thanh ghi có ch c năng đ c bi t SFRồ ứ ặ ệ (Special Funcition Register) n m các vùng đ a ch th p và các thanh ghi m cằ ở ị ỉ ấ ụ
Trang 21thanh ghi SFR thường xuyên đượ ử ục s d ng s đẽ ược đ t t t c các bank c aặ ở ấ ả ủ
b nh d li u giúp thu n ti n trong quá trình truy xu t và làm gi m b t l nhộ ớ ữ ệ ậ ệ ấ ả ớ ệ
c a chủ ương trình. S đ c th c a b nh d li u PIC 16F877A nh sau:ơ ồ ụ ể ủ ộ ớ ữ ệ ư
Hình 1.4: B nh d li u c a PIC ộ ớ ữ ệ ủ
B nh ch ộ ớ ươ ng trình:
B nh chộ ớ ương trình c a vi đi u khi n PIC16F877A là b nh flash, dungủ ề ể ộ ớ
lượng b nh 8K word (1 word = 14 bit) và độ ớ ược phân thành nhi u trang ( tề ừ page 0 đ n page 3) Nh v y b nh chế ư ậ ộ ớ ương trình có th ch a để ứ ượ c8*1024=8192 l nh (vì m i l nh sau khi mã hóa s có dung lệ ỗ ệ ẽ ượng 1 word=14 bit)
Trang 22Đ mã hóa để ược đ a ch c a 8K word b nh chị ỉ ủ ộ ớ ương trình, b đ m chộ ế ươ ngtrình có dung lượng 13 bit. Khi vi đi u khi n đề ể ược reset, b đ m chộ ế ương trình
s ch đ n đ a ch 0000h(reset vector). Khi có ng t x y ra b đ m chẽ ỉ ế ị ỉ ắ ả ộ ế ương trình
Đây là các thanh ghi đượ ử ục s d ng b i CPU ho c đở ặ ược dùng đ thi t l p vàể ế ậ
đi u khi n các kh i ch c năng đề ể ố ứ ược tích h p trong vi đi u khi n. Có th phânợ ề ể ể thanh ghi SFR làm 2 lo i: thanh ghi SFR liên quan đ n ch c năng bênạ ế ứ trong(CPU) và thanh ghi SFR dùng đ thi t l p và đi u khi n các kh i bênể ế ậ ề ể ố ngoài (ví d ADC…). ụ Ph n này s đ c p đ n các thanh ghi liên quan đ n cácầ ẽ ề ậ ế ế
ch c năng bên trong. Các thanh ghi dùng đ thi t l p và đi u khi n các kh iứ ể ế ậ ề ể ố
ch c năng s đứ ẽ ược nh c đ n khi ta đ c p đ n các kh i ch c năng đó.ắ ế ề ậ ế ố ứ
Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi ch a k t qu th cứ ế ả ự
hi n phép toán c a kh i ALU, tr ng thái reset và các bit ch n bank c n truyệ ủ ố ạ ọ ầ
Trang 23Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đ c và ghi,ọ cho phép đi u khi n ch c năng pullup c a các chân trong PORTB, xác l p cácề ể ứ ủ ậ thông s v xung tácố ề đ ng, c nh tác đ ng c a ng t ngo i vi và b đ m Timerộ ạ ộ ủ ắ ạ ộ ế 0.
Thanh ghi INTCON (0Bh, 8Bh,10Bh, 18Bh): thanh ghi cho phép đ c và ghi,ọ
ch a các bit di u khi n và các c hi u khi Timer 0 b tràn, ng t ngo i viứ ề ể ờ ệ ị ắ ạ RB0/INT và ng t interruptonchange t i các chân c a PORTB.ắ ạ ủ
Thanh ghi PIE1 (8Ch): ch a các bit đi u khi n chi ti t các ng t c a cácứ ề ể ế ắ ủ
kh i ch c ố ứ năng ngo i vi.ạ
Thanh ghi PIR1 (0Ch) : ch a c ng t c a các kh i ch c năng ngo i vi, cácứ ờ ắ ủ ố ứ ạ
ng t này đắ ược cho phép b i các bit đi u khi n ch a trong thanh ghi PIE1.ở ề ể ứ
Thanh ghi PIE2 (8Dh): ch a các bit đi u khi n các ng t c a các kh i ch cứ ề ể ắ ủ ố ứ năng CCP2, SSP bus, ng t c a b so sánh và ng t ghi vào b nh EEPROM.ắ ủ ộ ắ ộ ớ
Trang 24Thanh ghi PIR2 (0Dh): ch a các c ng t c a các kh i ch c năng ngo i vi,ứ ờ ắ ủ ố ứ ạ các ng t này đắ ược cho phép b i các bit đi u khi n ch a trong thanh ghi PIE2.ở ề ể ứ
Thanh ghi PCON (8Eh): ch a các c hi u cho bi t tr ng thái các chứ ờ ệ ế ạ ế
đ reset c a vi đi u khi n.ộ ủ ề ể
hi n hay khi m t ng t x y ra làm chệ ộ ắ ả ương trình b r nhánh, giá tr c a b đ mị ẽ ị ủ ộ ế
chương trình PC t đ ng đự ộ ược vi đi u khi n c t vào trong stack. Khi m t trongề ể ấ ộ các l nh RETURN, RETLW khi RETFIE đệ ược th c thi, giá tr PC s t đ ngự ị ẽ ự ộ
l y ra t trong stack, vi đi u khi n s th c hi n ti p chấ ừ ề ể ẽ ự ệ ế ương trình theo đúng quy trình đ nh trị ước
B nh Stack trong vi đi u khi n PIC h 16F887xA có kh năng ch aộ ớ ề ể ọ ả ứ
Trang 25nh Stack l n th 9 s ghi đè lên giá tr Stack l n đ u tiên và giá tr c t vào bớ ầ ứ ẽ ị ầ ầ ị ấ ộ
nh Stack l n th 10 s ghi đè giá tr 6 vào Stack l n th 2.ớ ầ ứ ẽ ị ầ ứ
C n chú ý là không có c hi u nào chi bi t tr ng thái stack, do đó ta khôngầ ờ ệ ế ạ
bi t đế ược khi nào stack tràn. Bên c nh đó t p l nh c a vi đi u khi n dòng PICạ ậ ệ ủ ề ể cũng không có l nh POP hay PUSH, các thao tác v i b nh stack s hoàn toànệ ớ ộ ớ ẽ
được đi u khi n b i CPU.ề ể ở
C ng xu t nh p (I/O port) chính là phổ ấ ậ ương ti n mà vi đi u khi n dùng đệ ề ể ể
tương tác v i th gi i bên ngoài. S tớ ế ớ ự ương tác r t đa d ng và thông qua trìnhấ ạ
tương tác đó, ch c năng c a vi đi u khi n đứ ủ ề ể ược th hi n m t cách rõ ràng.ể ệ ộ
M t c ng xu t nh p c a vi đi u khi n g n nhi u chân (I/O pin), tùy theoộ ổ ấ ậ ủ ề ể ồ ề cách b trí và ch c năng c a vi đi u khi n mà s lố ứ ủ ề ể ố ượng c ng xu t nh p và sổ ấ ậ ố
lượng chân trong m i c ng có th khác nhau. Bên c nh đó, do vi đi u khi nỗ ổ ể ạ ề ể
được tích h p s n bên trong các đ c tính giao ti p ngo i vi bên c nh ch c năngợ ẵ ặ ế ạ ạ ứ
là công xu t nh p thông thấ ậ ường, m t s chân xu t nh p còn có thêm các ch cộ ố ấ ậ ứ năng khác đ th hi n s tác đ ng c a các đ c tính ngo i vi n u trên đ i v iể ể ệ ự ộ ủ ặ ạ ế ố ớ
th gi i bên ngoài. Ch c năng c a t ng chân xu t nh p trong m i c ng hoànế ớ ứ ủ ừ ấ ậ ỗ ổ toàn có th để ược xác l p và đi u khi n đậ ề ể ược thông qua các thanh ghi SFR liên quan đ n các chân xu t nh p đó.ế ấ ậ
Vi đi u khi n PIC16F877A có 5 c ng xu t nh p, bao g m PORTA, PORTB,ề ể ổ ấ ậ ồ PORTC, PORTD, và PORTE. C u trúc và ch c năng c a c ng xu t nh p sấ ứ ủ ổ ấ ậ ẽ
được đ c p ph n sau.ề ậ ở ầ
Port A
PORTA (RPA) bao g m 6 I/O pin. Đây là chân “hai chi u” (bidirectionalồ ề pin),nghĩa là có th xu t và nh p để ấ ậ ược
Ch c năng I/O này đứ ược đi u khi n b i thanh ghi TRISA (đ a ch 85h).ề ể ở ị ỉ
Mu n xác l p ch c năng c a m t chân trong PORTA là input, ta “set” bit đi uố ậ ứ ủ ộ ề khi n tể ương ng v i chân đó trong thanh ghi TRISA và ngứ ớ ượ ạc l i, mu n xácố
l p ch c năng c a m t chân trong PORTA là output, ta “clear” bit đi u khi nậ ứ ủ ộ ề ể
Trang 26tương ng v i chân đó trong thanh ghi TRISA. Thao tác này hoàn toàn tứ ớ ương tự
đ i v i các PORT và các thanh ghi đi u khi n tố ớ ề ể ương ng TRIS.ứ
Bên c nh đó PORTA còn là ngõ ra c a b ADC, b so sánh, ngõ vào analog,ạ ủ ộ ộ ngõ vào xung clock c a Timer0 và ngõ vào c a b giao ti p MSSP (Masterủ ủ ộ ế Synchronous Serial Port)
Các thanh ghi SFR liên quan đ n PORTA bao g m:ế ồ
PORTA(đ a ch 05h) : ch a giá tr các pin trong PORTAị ỉ ứ ị
TRISA (đ a ch 85h) : đi u khi n xu t nh pị ỉ ề ể ấ ậ
CMCON (đ a ch 9Ch) : thanh ghi đi u khi n b so sánhị ỉ ề ể ộ
CVRCON (đ a ch 9Dh) : thanh ghi đi u khi n b so sánh đi n ápị ỉ ề ể ộ ệ
ADCON1 (đ a ch 9Fh) : thanh ghi đi u khi n b ADCị ỉ ề ể ộ
Port B
PORTB (RPB) g m 8 pin I/O. Thanh ghi đi u khi n xu t nh p tồ ề ể ấ ậ ương ng làứ TRISB. Bên c nh đó m t s chân c a PORTB còn đạ ộ ố ủ ược s d ng trong quáử ụ trình n p chạ ương trình cho vi đi u khi n v i các ch đ n p khác nhau.ề ể ớ ế ộ ạ PORTB còn liên quan đ n ng t ngo i vi và b Timer0. PORTB còn đế ắ ạ ộ ược tích
h p ch c năng đi n tr kéo lên đợ ứ ệ ở ược đi u khi n b i chề ể ở ương trình
Các thanh ghi SFR liên quan đ n PORTB bao g m:ế ồ
PORTB(đ a ch 06h,106h) : ch a giá tr các pin trong PORTBị ỉ ứ ị
TRISB(đ a ch 86h, 186h) : đi u khi n xu t nh pị ỉ ề ể ấ ậ
OPTION_REG(đ a ch 81h,181h): đi u khi n ng t ngo i vi và b Timer0.ị ỉ ề ể ắ ạ ộ
Port C
PORTC (RPC) g m 8 pin I/O. Thanh ghi đi u khi n xu t nh p tồ ề ể ấ ậ ương ng làứ TRISC. Bên c nh đó PORTC còn ch a các chân ch c năng c a b so sánh, bạ ứ ứ ủ ộ ộ Timer1, b PWM và các chu n giao ti p n i ti p I2C, SPI, SSP, USART:ộ ẩ ế ố ế
Các thanh ghi đi u khi n liên quan đ n PORTC :ề ể ế
PORTC(đ a ch 07h) : ch a giá tr các pin trong PORTCị ỉ ứ ị
TRISC (đ a ch 87h) : đi u khi n xu t nh p ị ỉ ề ể ấ ậ
Port D
Trang 27PORTD (RPD) g m 8 pin I/O. Thanh ghi đi u khi n xu t nh p tồ ề ể ấ ậ ương ng làứ TRISD. PORTD còn là c ng xu t d li u c a chu giao ti p PSP (parallel slaveổ ấ ữ ệ ủ ẩ ế Port).
Các thanh ghi g m :ồ
PORTD : ch a giá tr các pin trong PORTD.ứ ị
TRISD : đi u khi n xu t nh p.ề ể ấ ậ
Port E
PORTE (RPE)g m 3 pin I/O. Thanh ghi đi u khi n xu t nh p tồ ề ể ấ ậ ương ng làứ TRISE.Các chân c a PORTE có ngõ vào analog. Bên c nh đó PORTE còn là cácủ ạ chân đi u khi n c ag chu n giao ti p PSP ề ể ủ ẩ ế
Các thanh ghi liên quan đ n PORTE bao g m :ế ồ
PORTE : ch a giá tr các chân trong PORTE .ứ ị
TRISE: đi u khi n xu t nh p và xác l p các thông s cho chu nề ể ấ ậ ậ ố ẩ giao ti p. ế
PSP. ADCON1 : thanh ghi đi u khi n kh i ADC.ề ể ố
2.2.7Các Timer.
Timer 0
Đây là m t trong ba b đ m ho c b đ nh th i c a vi đi u khi nộ ộ ế ặ ộ ị ờ ủ ề ể PIC16F877A Timer0 là b đ m 8 bit độ ế ược k t n i v i b chia t n sế ố ớ ộ ầ ố (prescaler) 8 bit. C u trúc c a Timer0 cho phép ta l a ch n xung clock tác đ ngấ ủ ự ọ ộ
và c ch tích c c c a xung clock. Ng t Timer0 s xu t hi n khi Timer 0 b tràn. ạ ự ủ ắ ẽ ấ ệ ịBít TMR0IE (INTCON<5>) là bít đi u khi n c a Timer0. TMR0IE=1 choề ể ủ phép ng t Timer0 tác đ ng. TMR0IE=0 không cho phép ng t Timer0 tác đ ng. ắ ộ ắ ộ
S đ kh i c a Timer0 nh sau :ơ ồ ố ủ ư
Trang 28Hình 1.6: S đ kh i c a Timer0 ơ ồ ố ủ
Mu n Timer 0 ho t đ ng ch đ Timer ta clear bit TOSC, khi đó giá trố ạ ộ ở ế ộ ị thanh ghi TMR0 s tăng theo t ng chu k xung đ ng h (t n s vào Timer0ẽ ừ ỳ ồ ồ ầ ố
b ng ¼ t n s oscillator). Khi giá tr thanh ghi TMR0 t FFh tr v 00h, ng tằ ầ ố ị ừ ở ề ắ Timer0 s xu t hi n. Thanh ghi TMR0 cho phép ghi và xóa đẽ ấ ệ ược giúp ta nấ
đ nh th i đi m ng t Timer0 xu t hi n m t cách linh đ ng.ị ờ ể ắ ấ ệ ộ ộ
Mu n Timer0 ho t đ ng ch đ counter ta set bit TOSC. Khi đó xung tácố ạ ộ ở ế ộ
đ ng lên b đ m độ ộ ế ượ ấ ừc l y t chân RA4/TOCK1. Bit TOSE cho phép l a ch nự ọ
c nh tác đ ng vào b đ m. C nh tác đ ng s là c nh lên n u TOSE=0 và c nhạ ộ ộ ế ạ ộ ẽ ạ ế ạ tác đ ng s là c nh xu ng n u TOSE=1.ộ ẽ ạ ố ế
Thi thanh ghi TMR0 b tràn, bit TMR0IF s đị ẽ ược set. Đây chính là c ng tờ ắ
c a Timer0. C ng t này ph i đủ ờ ắ ả ược xóa b ng chằ ương trình trước khi b đ mộ ế
b t đ u th c hi n l i quá trình đ m. Ng t Timer0 không th “đánh th c” viắ ầ ự ệ ạ ế ắ ể ứ
đi u khi n t ch đ sleep.ề ể ừ ế ộ