2.1 Tì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 độ
Trang 1ề tài:
THIẾT KẾ, CHẾ TẠO MẠCH ĐO NHIỆT ĐỘ HIỂN THỊ TRÊN LCD 16X2
Giá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 3
Ngày tháng 10 năm
2015 Giáo viên hướng dẫn
Trang 5 Lý do chọn đề tài
MỞ ĐẦU
Ngày nay khoa học công nghệ hiện đại đã có những bước tiến nhanh và xa
đi theo nó là những thành tựu ứng dụng trong các lĩnh vực đời sống, côngnghiệp Kỹ thuật điều khiển trong tiến trình hoàn thiện lý thuyết cũng đã tạocho mình nhiều phát triển có ý nghĩa Bây giờ khi nhắc tới điều khiển conngười dường như hình dung tới độ chính xác, tốc độ xử lý và thuật toánthông minh đồng nghĩa là lượng chất xám cao hơn Hiện nay trên thị trường
có rất nhiều loại viđiều khiển như 8051, Motorola 68HC, AVR, ARM, Ngoài họ 8051 đượchướ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êncô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ềukhiể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ạpchươ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ôngngừ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áttriể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ảngdạ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
Phương pháp nghiên cứu
Do đây là một đồ án sản phẩm, nên chúng em đã áp dụng phương phápnghiên cứu lý thuyết, nghiên cứu thực nghiệm trực tiếp trên sản phẩm thật,chạy thử và hoàn thiện chương trình
Ý nghĩa nghiên cứu
Như đã nói ở trên thì nếu thực hiện thành công đề tài này sẽ mang lại ýnghĩa to lớn về cả thực tiễn và lý luận
Ý nghĩa lý luận:
Toàn bộ chương trình và bản thuyết minh của đề tài sẽ trở thành tài liệunghiên cứu, tham khảo nhanh, dễ hiểu, thiết thực cho các bạn sinh viên, nhữngngười thích tìm hiểu về đề tài này của chúng em
Ý nghĩa thực tiễn:
Với sự thành công của đề tài sẽ góp phần giúp cho các bạn sinh viên mới nóichung và các bạn sinh viên khoa Điện Điện Tử nói riêng thấy rõ được ýnghĩa thực tế và thêm yêu thích chuyên ngành mình đã chọn
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ôngthể tránh được thiếu sót, kính mong nhận được sự thông cảm và góp ý củathầ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
Phạm Văn Thực
Trang 8T h â n
T h ị
T h ư ơ n g
Trang 9CHƯƠ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ểnlà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ácphầ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ìnhtruyề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
xạ nhiệt
Đối với các chất lỏng và khí ngoài dẫn nhiệt và bức xạ nhiệt còn cótruyền nhiệt bằng đối lưu Đó là hiện tượng vận chuyển năng lượng nhiệtbằng cách vận chuyển các phần của khối vật chất giữa các vùng khác nhaucủa hệ do chênh lệch về tỉ trọng
Trang 101.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ácnhau để 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ươngpháp đo chính:
Ở dải nhiệt độ thấp và trung bình phương pháp đo là phương pháp tiếpxúc, nghĩa là các chuyển đổi được đặt trực tiếp ngay trong môi trường đo
Thiết bị đo như: nhiệt điện trở, cặp nhiệt, bán dẫn
Ở dải nhiệt độ cao phương pháp đo là phương pháp không tiếp xúc( dông cụ dặt ngoài môi trường đo) Các thiết bị đo nh: cảm biến quang, hoảquang kế ( hoả quang kế phát xạ, hoả quang kế cường độ sáng, hoả quang kếmàu sắc)…
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 11Trong 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:
EAB = eAB(t0) + eAB(t0) = 0
Từ đó rót ra: eAB = 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à t0)
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ửnhững nơi có nhiệt độ cao
dụng nhiều trong công nghiệp khi cần đo
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 bán dẫn dùng để đo dải nhiệt độ từ 55‚ 150 0C Trong các mạch tổ hợp IC,
Trang 12độ dài của sóng.
Quan hệ giữa mật độ bức xạ của vật đen tuyệt đối với nhiệt độ và độ dài sóng được biểu diễn bởi công thức:
l = C1.l (e 2/l T1)Trong đó: C1: Hằng số và C1= 37,03.107 (Jm2/s)
C2: Hằng số vá C2= 1,432.102 (m.độ)
l : Độ dài sóngT: Nhiết độ tuyệt đối
CH
ƯƠ NG II: C Ơ S Ở LÝ THUY Ế T
Trang 132.1 Tì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 đến150(0C), tín hiệu ngõ ra tuyến tính liên tục với những thay đổi của tínhiệu ngõ vào
Thông s ố k ỹ thu ậ t:
Trang 14- Tiêu tán công suất thấp.
- Dòng làm việc từ 400µA đến 5mA
- Dòng ngược 15mA
- Dòng thuận 10mA
- Độ chính xác cao: khi làm việc ở nhiệt độ 250C là 0,50C
- Trở kháng đầu ra thấp 0,1 cho 1mA tải
Đ
ặ c tính đi ệ n:
Dải nhiệt độ đo được của LM35 là từ 550C đến 1500C 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à:
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
2.2.2Các dòng PIC và cách lựa chọn vi điều khiển PIC.
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 bitC: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)F: PIC có bộ nhớ flash
Trang 15LF: PIC có bộ nhớ flash hoạt động ở điện áp thấpLV: 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ệtNam 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 ứngdụ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ớ được nhiều lần hơn
flash để có thể nạp xóa chương trình
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ựachọn vi điều khiển PIC có thể được tìm thấy trong cuốn sách “Select PICguide” 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
2.2.3Các dòng PIC và cách lựa chọn vi điều khiển PIC.
PIC 16F877A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ chohầ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ớilà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ủamì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âulệ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 16- Bộ nhớ chương trình Flash 8Kx14 words, với khả năng ghi xóa khoảng 100ngà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ới33pin 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
- Dải điện thế hoạt động rộng: 2.0V đến 5.5V
- Nguồn sử dụng 25mA
- Công suất tiêu thụ thấp:<0.6mA với 5V, 4MHz ; 20µA với nguồn 3V, 32 KHz
- Có 3 timer:
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 17- 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 18Hình 1.2: Hình ảnh thực tế và sơ đồ chân của PIC 16F877A.
Trang 19Hình 1.3: Sơ đồ khối bộ vi điều khiển PIC 16F877A.
Trang 20PIC 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
- Vpp: ngõ vào nhận điện áp lập trình khi lập trình cho PIC
+ Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(3): có 2 chức năng
- RA0,1,2: xuất/ nhập số
- 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ẩncao 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ênh4/ 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ấpICSP
+ Chân RB4(37), RB5(38): xuất nhập số
Trang 21+ 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ữ ICSP
+ 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đồng bộ USART
+ Chân RC7/RX/DT(26): xuất nhập số/ nhận bất đồng bộ USART
+ Chân RD07/PSP07(1930): xuất nhập số/ dữ liệu port song song
2.2.4Tổ chức bộ nhớ.
Cấu trúc bộ nhớ của vi điều khiển PIC16F877A bao gồm bộ nhớ dữ liệu(Data memory) và bộ nhớ chương trình (Program memory)
- ộ nh B ớ d ữ li ệ u:
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đích chung GPR(General Purpose Register) nằm ở vùng địa chỉ trong bank.các
Trang 22thanh 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ệnhcủ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 23Để 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
sẽ chỉ đến địa chỉ 0004h(interrupt vector)
Bộ nhớ chương trình không bao gồm bộ nhớ stack và không được địa chỉhóa bởi bộ đếm chương trình
Hình 1.5: Bộ nhớ chương trình PIC 16F877A.
Thanh ghi ch ứ c năng đ ặ c bi ệ t sfr
Đâ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ứcnă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ênngoài (ví dụ ADC…) Phần này sẽ đề cập đến các thanh ghi liên quan đến cácchức năng bên trong Các thanh ghi dùng để thiết lập và điều khiển các khốichứ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 24xuất trong bộ nhớ dữ liệu.
Trang 25Thanh 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ácthông số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Timer0
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 viRB0/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 26Thanh 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
Thanh ghi m ụ c đích chung gpr
Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông quathanh ghi FSG(File Select Register) Đây là các thanh ghi dữ liệu thôngthường, người sử dụng có thể tùy theo mục đích chương trình mà có thể dùngcác thanh ghi này để chứa các biến số, hằng số, kết quả hoặc các tham sốphục vụ cho chương trình
2.2.5Stack.
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là mộtvùng nhớ đặc biệt không cho phép đọc hay ghi Khi lệnh CALL được thựchiệ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ộ đếmchương trình PC tự động được vi điều khiển cất vào trong stack Khi mộttrong 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
Trang 27được 8 địa chỉ và hoạt động theo cơ chế xoay vòng Nghĩa là giá trị cất vào bộ
Trang 28nhớ 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ôngbiế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 PICcũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ stack sẽ hoàntoàn được điều khiển bởi CPU
2.2.6Các cổng xuất, nhập của PIC 16F877A.
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ìnhtươ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 theocá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ứcnă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ácchứ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ỗicổng hoàn toàn có thể được xác lập và điều khiển được thông qua các thanhghi 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” (bidirectionalpin),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ềukhiển tương ứng với chân đó trong thanh ghi TRISA và ngược lại, muốn xáclập chức năng của một chân trong PORTA là output, ta “clear” bit điều khiển
Trang 29tươ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ộ
Synchronous Serial Port)
Các thanh ghi SFR liên quan đến PORTA bao gồm:
giao tiếp MSSP (Master
- 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 30PORTD (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 slavePort).
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ểnPIC16F877A 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 31Hì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 Timer0bằng ¼ tần số oscillator) Khi giá trị thanh ghi TMR0 từ FFh trở về 00h, ngắtTimer0 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ọncạ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ắtcủa Timer0 Cờ ngắt này phải được xóa bằng chương trình trước khi bộ đếmbắ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
Trang 32Bộ chia tần
số (prescaler) được chia sẻ giữa Timer0 và WDT(watchdogtimer) Điều đó có nghĩa là nếu prescaler được sử dụng cho Timer0 thì WDT sẽkhông có được hỗ trợ của prescaler và ngược lại
Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xóa chế độ hoạt động củaprescaler nhưng không làm thay đổi đối tượng tác động của prescaler Khi đốitượng tác động là WDT, lệnh CLRWDT sẽ xóa prescaler, đồng thời prescaler
sẽ ngưng tác vụ hỗ trợ cho WDT
Các thanh ghi điều khiển liên quan đến Timer0 bao gồm:
- TMR0(địa chỉ 01h, 101h): chứa giá trị đếm của Timer0
- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động(GIE
Tương tự như Timer0, Timer1 cũng có 2 chế độ hoạt động: chế độ địnhthời và chế độ đếm