Đồ án Thiết kế và thi công hệ thống điều khiển nhiệt độ

Hiện nay, ngành kỹ thuật điện tử và công nghệ thông tin tiến bộ không ngừng. Chúng đang ngày càng phát triển và được ứng dụng trong tất cả các mặt của đời sống. Các thiết bị điện tử dùng Vi Điều Khiển được sử dụng rộng rãi khắp trong các ứng dụng tự động. Nó giúp chúng ta trong mọi công việc cũng như giải trí. Các bộ Vi Điều Khiển ngày càng hiện đại, tốc độ xử lý nhanh hơn, và có ứng dụng rộng hơn. Một trong những ứng dụng quan trọng của Vi Điển Khiển đó là dùng trong đo lường và điều khiển. Nhờ các loại cảm biến, ứng dụng của đo lường bằng Vi Điều Khiển không chỉ giới hạn trong các đại lượng điện mà còn mở rộng ra các tín hiệu không phải điện. Sử dụng Vi Điều Khiển chúng ta thu thập các đại lượng cần đo dễ dàng hơn, có thể xử lý ngay các đại lượng đó và đưa ra được những kết quả như mong muốn. Với tầm quan trọng của đo lường bằng Vi Điều Khiển nên, em đã nhận đề tài này làm đồ án tốt nghiệp để nghiên cứu, và hiểu biết thêm về Vi Điều Khiển và các ứng dụng hay của nó trong cuộc sống thường ngày của chúng ta. Trong quá trình làm đồ án tốt nghiệp, do sự hạn chế về thời gian, tài liệu và trình độ có hạn nên không tránh khỏi có thiếu sót. Em rất mong được sự đóng góp ý kiến của thầy cô và các bạn để đồ án tốt nghiệp của em được hoàn thiện hơn. Em xin gửi lời cảm ơn chân thành đến các thầy cô trong Khoa Điện-Điện tử, đặc biệt là thầy Nguyễn Văn Dương đã giúp đỡ em hoàn thành tốt đồ án này.

doc80 trang | Chia sẻ: ngtr9097 | Lượt xem: 1880 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Đồ án Thiết kế và thi công hệ thống điều khiển nhiệt độ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC DÂN LẬP HẢI PHÒNG KHOA ĐIỆN - ĐIỆN TỬ NGÀNH ĐIỆN TỬ - VIỄN THÔNG LUẬN VĂN TỐT NGHIỆP. ĐỀ TÀI: Thiết kế và thi công hệ thống điều khiển nhiệt độ. Sinh viên thực hiện: ĐỖ VĂN ĐẠT. Giáo viên hướng dẫn: NGUYỄN VĂN DƯƠNG. LỜI MỞ ĐẦU Hiện nay, ngành kỹ thuật điện tử và công nghệ thông tin tiến bộ không ngừng. Chúng đang ngày càng phát triển và được ứng dụng trong tất cả các mặt của đời sống. Các thiết bị điện tử dùng Vi Điều Khiển được sử dụng rộng rãi khắp trong các ứng dụng tự động. Nó giúp chúng ta trong mọi công việc cũng như giải trí. Các bộ Vi Điều Khiển ngày càng hiện đại, tốc độ xử lý nhanh hơn, và có ứng dụng rộng hơn. Một trong những ứng dụng quan trọng của Vi Điển Khiển đó là dùng trong đo lường và điều khiển. Nhờ các loại cảm biến, ứng dụng của đo lường bằng Vi Điều Khiển không chỉ giới hạn trong các đại lượng điện mà còn mở rộng ra các tín hiệu không phải điện. Sử dụng Vi Điều Khiển chúng ta thu thập các đại lượng cần đo dễ dàng hơn, có thể xử lý ngay các đại lượng đó và đưa ra được những kết quả như mong muốn. Với tầm quan trọng của đo lường bằng Vi Điều Khiển nên, em đã nhận đề tài này làm đồ án tốt nghiệp để nghiên cứu, và hiểu biết thêm về Vi Điều Khiển và các ứng dụng hay của nó trong cuộc sống thường ngày của chúng ta. Trong quá trình làm đồ án tốt nghiệp, do sự hạn chế về thời gian, tài liệu và trình độ có hạn nên không tránh khỏi có thiếu sót. Em rất mong được sự đóng góp ý kiến của thầy cô và các bạn để đồ án tốt nghiệp của em được hoàn thiện hơn. Em xin gửi lời cảm ơn chân thành đến các thầy cô trong Khoa Điện-Điện tử, đặc biệt là thầy Nguyễn Văn Dương đã giúp đỡ em hoàn thành tốt đồ án này. Hải phòng, 8 tháng 7 năm2009 Sinh viên thực hiện ĐỖ VĂN ĐẠT Mục lục Chương 1: TỔNG QUAN VỀ VI ĐIỀU KHIỂN 6 1.1. Bộ vi điều khiển 8051 7 1.2. Bộ vi điều khiển 8052 13 1.3. Bộ vi điều khiển 8031 13 Chương 2:VI ĐIỀU KHIỂN PIC16F877A 15 2.1. Tổng quan về thiết bị 15 2.1.1. Hình dạng và bố trí chân của Pic16F877A 15 2.1.2. Đặc tính nổi bật của bộ xử lý 15 2.1.3. Sơ đồ khối bộ vi điều khiển Pic16F877A 16 2.2. Mô tả các chân chức năng của Pic16F877A 17 2.3. Tổ chức bộ nhớ 19 2.3.1. Tổ chức bộ nhớ chương trình Flash 19 2.3.2. Tổ chức bộ nhớ dữ liệu RAM 21 2.3.3. Bộ nhớ dữ liệu EEPROM 24 2.3.4. Đọc và ghi vào bộ nhớ dữ liệu EEPROM .16 2.3.5. Đọc và ghi chương trình FLASH .26 2.4. Cổng vào ra 26 2.4.1. Cổng A và thanh ghi TRISA 27 2.4.2. Cổng B và thanh ghi TRISB 28 2.4.3. Cổng C và thanh ghi TRISC 29 2.4.4. Cổng D và thanh ghi TRISD 31 2.4.5. Cổng E và thanh ghi TRISE 31 2.5. Các bộ Timer của chip. 33 2.5.1. Bộ Timer0 33 2.5.2. Bộ Timer1 36 2.5.3. Bộ Timer2 39 2.6. Bộ chuyển đổi tương tự sang số. 41 2.6.1. Bộ chuyển đổi tương tự sang số 41 2.6.2. Lựa chọn tốc độ chuyển đổi. 43 2.7. Các ngắt của PIC16F877 44 2.8. So sánh với Vi Điều Khiển 8051 44 Chương 3:THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN NHIỆT ĐỘ 45 3.1. Sơ đồ khối tổng quát. 45 3.2. Khối cảm biến. 46 3.3. Khối chuyển đổi tương tự sang số 47 3.4. Khối điều khiển. 52 3.5. Khối chuyển đổi số sang tương tự. 52 3.6. Khối điều khiển thyristor. 54 3.6.1. Sơ đồ cấu trúc 54 3.6.2. Nguyên tắc điều khiển 55 3.6.3. Sơ đồ nguyên lý 56 3.7. Khối hiển thị LCD. 57 3.7.1. Các chân chức năng. 58 3.7.2. Sơ đồ khối của HD44780. 59 3.7.3. Tập lệnh của LCD. 63 3.8. Sơ đồ mạch hệ thống điều khiển nhiệt độ. 69 3.9. Phần mềm điều khiển 70 3.9.1. Lưu đồ thuật toán. 70 3.9.2. Chương trình. 72 Kêt luân 77 Tài liệu tham khảo 78 Chương 1 TỔNG QUAN VỀ VI ĐIỀU KHIỂN Có 4 bộ vi điều khiển 8 bit chính. Đó là 6811 của Motorola, 8051 của Intel, z8 của Xilog và Pic 16 của Microchip Technology. Mỗi một kiểu loại trên đây đều có một tập lệnh và thanh ghi riêng duy nhất, nếu chúng đều không tương thích lẫn nhau. Cũng có những bộ vi điều khiển 16 bit và 32 bit được sản xuất bởi các hãng sản xuất chíp khác nhau. Với tất cả những bộ vi điều khiển khác nhau thì tiêu chuẩn để lựa chọn các bộ vi điều khiển là: *) Đáp ứng được nhu cầu tính toán của bài toán một cách hiệu quả về mặt giá thành và đầy đủ chức năng có thể nhìn thấy được. Trong khi phân tích các nhu cầu của một dự án dựa trên bộ vi điều khiển chúng ta phải biết bộ vi điều khiển nào là 8 bit, 16 bit hay 32 bit có thể đáp ứng tôt nhất nhu cầu của bài toán một cách hiệu quả. Nhứng tiêu chuẩn đó là: - Tốc độ: tốc độ lớn nhất mà vi điều khiển hỗ trợ lạ bao nhiêu. - Kiểu đóng vỏ: Đóng vỏ kiểu DIP 40 chân hay QFP. Đây là yêu cầu quan trọng đối với yêu cầu về không gian, kiểu láp ráp và tạo mẫu thử cho sản phẩm cuối cùng. - Công suất tiêu thụ: Điều này đặc biệt khắt khe đối với các sản phẩm dùng pin, ắc quy. - dung lượng bộ nhớ Rom và Ram trên chíp. - Số chân vào ra và bộ định thời trên chíp. - Khả năng dễ dàng nângh cấp cho hiệu suất cao hoặc giảm công suất tiêu thụ. - Giá thành cho một đơn vị: Điều này quan trọng quyết định giá thành sản phẩm mà một bộ vi điều khiển được sử dụng. *) Cóp sẵn các công cụ phát triển phần mềm như các trình biên dịch, trình hợp ngữ và gỡ rối. *) Nguồn các bộ vi điều khiển có sẵn nhiều và tin cậy. Khả năng sẵn sàng đáp ứng về số lượng trong hiện tại tương lai. Hiện nay các bộ vi điều khiển 8 bit họ 8051 là có số lượng lớn nhất các nhà cung cấp đa dạng như Intel, Atmel, Philip… 1.1. Bộ vi điều khiển 8051 Vào năm 1981 hãng Intel giới thiệu một số bộ vi điều khiển được gọi là 8051. Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ định thời, một cổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt trên một chíp. Lúc ấy nó được coi là một ‘hệ thống trên chíp’. 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thẻ làm việc với 8 bit dữ liệu tại một thời điểm. Dữ liệu lớn hơn 8 bit được chia ra thành các dữ liệu 8 bit để cho xử lý. 8051 có tất cả 4 cổng vào ra I/O mỗi cổng rộng 8 bit (hình vẽ). Mặc dù 8051 có một ROM trên chíp cực đại là 64Kbyte, nhưng các nhà sản xuất lúc đó đã xuất xưởng chỉ với 4Kbyte Rom trên chíp. 8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác nhau sản xuất và bán bất kỳ dạng biến thể nào của 8051 mà họ thích với điều kiện họ phải để lại mã tương thích với 8051. Điều này dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc độ khác nhau và dung lượng Rom trên chíp khác nhau. Điều này quan trọng là mặc dù có nhiều biến thể khác nhau của 8051 về tốc độ và dung lượng nhớ ROM trên chíp nhưng tất cả chúng đều tương thích với 8051 ban đầu về các lệnh. Điều này có nghĩa là nếu ta viết chương trình cho một phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà không phân biệt nó từ hãng sản xuất nào. Bảng 1.1. Các đặc tính của 8051 đầu tiên. Đặc tính Số lượng ROM trên chíp RAM Bộ định thời Các chân vào ra Cổng nối tiếp Nguồn ngắt 4Kbyte 128 byte 2 32 1 6 Bộ vi điều khiển 8051 là thành viên đầu tiên của họ 8051, hãng Intel ký hiệu nó là MSC51. Bảng trên là các đặc tính của họ 8051. COUNTER INPUTS OSC INTERRUPT CONTROL 4 I/O PORTS BUS CONTROL SERIAL PORT EXTERNAL INTERRUPTS CPU ON - CHIP RAM ETC TIMER 0 TIMER 1 ADDRESS/DATA TXD RXD P0 P1 P2 P3 Hình 1.1. Bố trí bên trong của 8051 Mô tả chân của 8051như hình 1.2. Các thành viên của họ 8051( ví dụ 8751, 89C51, DS5000) đều có các kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP dạng vỏ dẹp vuông QFP và dạng chip không có chân đỡ LLC thì chúng đều có 40 chân cho các chức năng khác nhau như vào ra I/O, đọc , ghi , địa chỉ, dữ liệu và ngắt. Cần lưu ý rằng một số hãng cung cấp phiên bản 8051 có 20 chân với số cổng vào ra ít hơn cho các ứng dụng yêu cầu thấp hơn. Tuy nhiên, vì hầu hết các nhà phát triển chính sử dụng chíp đóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tập chung mô tả phiên bản này. P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST P0.0 (AD0) Vcc 1 2 3 5 6 4 7 8 9 11 12 10 13 14 15 17 18 16 19 20 40 39 38 35 37 34 33 32 30 29 31 28 27 26 24 23 25 22 21 8051 (8031) P0.1 (AD1) P0.2 (AD2) P0.4 (AD4) P0.5 (AD5) P0.3 (AD3) PSEN P0.6 (AD6) P2.5 (A13) P2.3 (A11) P2.1 (A9) P2.7 (A15) P2.4(A12) P2.6 (A14) P2.0 (AB) P2.2 (A10) (RXD) P3.0 (TXD) P3.1 (NT0) P3.2 (NT1) P3.3 (T0) P3.4 (T1) P3.5 (WR) P3.6 (RD) P3.7 XTAL2 XTAL1 GND P0.6 (AD6) EA/CPP ALE/PROG 36 Hình 1.2. Sơ đồ chân của 8051 Từ hình 1.2. ta thấy trong 40 chân có 32 chân dùng cho các cổng P0, P1, P2, P3 với mỗi cổng có 8 chân. Các chân còn lại dành cho nguồn Vcc, đất GND, các chân dao động XTAL1 và XTAL2, khởi động lại RST cho phép chốt địa chỉ ngoài , cho ngắt cất chương trình . Trong 8 chân này thì 6 chân Vcc, GND, XTAL1, XTAL2, RST và được các họ 8031 và 8051 sử dụng. Hay nói cách khác là chúng phải được nối để cho hệ thống làm việc mà không cần biết bộ vi điều khiển thuộc họ 8051 hay 8031. Còn chân và chân ALE được sử dụng trong các hệ thống dựa trên 8031. Chân Vcc và chân GND tương ứng với chân số 40 và chân số 20 cung cấp nguồn (+5V) và nối mass. Chân XTAL1 (chân 19) và XTAL2 (chân 18): 8051 có bộ dao động trên chíp nhưng nó yêu cầu có một xung đồng hồ ngoài để chạy nó. Bộ dao động thạch anh được nối với XTAL1 và XTAL2 cùng hai tụ điện có giá trị 30pF. Một phía tụ được nối xuống đất như hình 1.3. Cần phải lưu ý rằng có nhiều tốc độ khác nhau của họ 8051. Tốc độ được coi như là tần số cực đại của bộ giao động được nối tới chân XTAL. Ta có thể sử dụng một nguồn tần số khác dao động thạch anh chẳng hạn như bộ dao động TTL thì nó sẽ được nối tới chân XTAL1 còn chân XTAL2 để hở như hình 1.4. C2 C1 30pF XTAL2 XTAL1 GND XTAL2 XTAL1 GND NC EXTERRNAL OSCILLATAOR SIGNAL Hình 1.3. XTAL nối với 8051 Hình 1.4. XTAL nối với dao đông ngoài Chân RST: Chân số 9 là chân tái lập RESET. Nó là chân đầu vào có mức tích cực cao. Khi cấp xung cao tới chân này thì bộ vi điều khiển sẽ tái lập và kết thúc mọi hoạt động. Nó có thể coi như sự tái bật nguồn. Vcc Vcc 10mF 8.2K RST 30mF X2 31 EA/Vpp 19 9 18 + 30mF 31 9 EA/Vpp X1 X1 X2 RST 8.2K 10mF 11.0592 MHz Hình 1.5. Mạch tái bật nguồn RESET Hình 1.6. Mạch tái bật nguồn với Debounce. Muốn mạch RESET làm việc có hiệu quả thì nó phải có tối thiểu 2 chu kì máy. Hay nói cách khác, xung cao phải kéo dài tối thiểu 2 chu kì máy trước khi nó xuống thấp. Chân (là chân IN): Truy cập bộ nhớ ngoài, chân số 31 trên vỏ chíp như 8751, 89C51 hoặc DS5000 thì chân được nối với nguồn Vcc. Trường hợp không có ROM trên chíp như 8031 và 8051 thì mã chương trình được lưu cất ở bộ nhớ ngoài, khi đó chân được nối đất. Như vậy chân này không bao giờ được để hở. Chân là chân có chức năng cho phép lưu chương trình. Ở hệ thống 8031, khi chương trình cất ở bộ nhớ ROM ngoài thì chân này được nối tới chân OE của ROM. ALE cho phép chốt địa chỉ là chân có mức tích cực cao. Khi nối 8031 tới bộ nhớ ngoài thì cổng 0 cũng được cấp địa chỉ và dữ liệu. Hay nói cách khác, 8031 dồn địa chỉ và dữ liệu qua cổng 0 để tiết kiệm số chân. Chân ALE được sử dụng để phân kênh địa chỉ và dữ liệu bằng cách nối tới chân G của của chíp 73LS373. Nhóm chân cổng vào ra I/O: bốn cổng P0, P1, P2, P3 đều có 8 chân và tạo thành cổng 8 bít. Tất cả các cổng khi RESET đều được cấu hình làm cổng ra. Để làm đầu vào thì cần được lập trình. Các cổng bình thường là cổng ra. Cổng P0 có thể vừa làm đầu ra, vừa làm đầu vào cổng P0 từ chân 32 đến 39 phải được nối với điện trở kéo 10K bên ngoài. Cổng P1 cũng có 8 chân, từ chân 1 đến chân 8, và có thể sử dụng làm đầu vào hoặc ra. Khác với cổng P0, cổng P1 không cần đến điện trở kéo bên ngoài vì nó đã có điện trở kéo bên trong. Cổng P2 cũng có 8 chân từ chân 21đến 28, và có thể sử dụng làm đầu vào hoặc ra. Cũng giống như cổng P1, cổng P2 không cần điện trở kéo vì bên trong đã có các điện trở kéo. Cổng P3 có 8 chân từ chân 10 đến chân 17. Cổng này có thể sử dụng làm đầu vào hoặc ra. Cũng như chân P1và P2, cổng P3 cũng không cần điện trở kéo. Bảng 1.2. Chức năng các chân cổng P3. Bít cổng P3 Chức năng Chân số P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Nhận dữ liệu (RXD) Phát dữ liệu (TXD) Ngắt 0(INT0) Ngắt 1(INT1) Bộ định thời 0 (TO) Bộ định thời 1(T1) Ghi (WR) Đọc (RD) 10 11 12 13 14 15 16 17 Có hai bộ vi điều khiển thành viên khác của họ 8051 là 8052 và 8031. 1.2. Bộ vi điều khiển 8052 Bộ vi điều khiển 8052 là thành viên khác của họ 8051, 8052 có tất cả các đặc tính chuẩn của 8051 ngoài ra nó có thêm 128 byte RAM và một bộ định thời nữa. Hay nói cách khác là 8052 có 256 byte RAM và 3 bộ định thời, nó cũng có 8K byte ROM trên chíp thay vì 4K byte như 8051. Bảng 1.3. So sánh các đặc tính của các thành viên họ 8051. Đặc tính 8051 8052 8031 ROM trên chíp 4K byte 8K byte OK RAM 128 byte 256 byte 128 byte Bộ định thời 2 3 2 Chân vào - ra 32 32 32 Cổng nối tiếp 1 1 1 Nguồn ngắt 6 8 6 Qua bảng trên ta thấy thì 8051 là tập con của 8052, nên mọi chương trình viết cho 8051 đều chạy được trên 8052 nhưng điều ngược lại là không đúng. 1.3. Bộ vi điều khiển 8031 Một thành viên khác của 8051 là chíp 8031. Chíp này không có ROM trên chíp nên để sử dụng chíp này ta phải bổ sung ROM ngoài cho nó, ROM ngoài phải chứa chương trình mà 8031 sẽ nạp và thực hiện. So với 8051 mà chương trình được chứa trong ROM trên chíp bị giới hạn bởi 4K byte, còn ROM ngoài chứa chương trình được gắn vào 8031 thì có thể lớn đến 64K byte. Khi bổ xung cổng, như vậy chỉ còn lại hai cổng để thao tác. Để giải quyết vấn đề này ta có thể bổ xung cổng vào ra cho 8031 bằng cách phối ghép 8031 với bộ nhớ và cổng vào ra chẳng hạn với chíp 8255. Ngoài ra còn có các phiên bản khác nhau về tốc độ của 8031 từ các hãng sản xuất khác nhau. Bảng 1.4. Các phiên bản của 8051 từ Atmel Số linh kiện ROM RAM Chân I/O Timer Ngắt Vcc Đóng vỏ AT89C51 4K 128 32 2 6 5V 40 AT89LV51 4K 128 32 2 6 3V 40 AT89C1051 1K 64 15 1 3 3V 20 AT89C2051 2K 128 15 2 6 3V 20 AT89C52 8K 128 32 3 8 5V 40 AT89LV52 8K 128 32 3 8 3V 40 Chương 2. VI ĐIỀU KHIỂN PIC16F877A Ngày nay, các bộ điều khiển đang có ứng dụng rộng rãi trong các lĩnh vực khoa học kỹ thuật và đời sống xã hội, đặc biệt là trong tự động hoá và điều khiển. Giờ đây với nhu cầu chuyên dụng hoá, tối ưu hoá về thời gian không gian giá thành, bảo mật, tính chủ động trong công việc, ... ngày càng đòi hỏi khắt khe. Và dòng vi điều khiển Pic đã đáp ứng tốt các yêu cầu đó. 2.1. Tổng quan về thiết bị 2.1.1. Hình dạng và bố trí chân của Pic16F877A Hình 2.1. Hình dạng Pic16F877A 2.1.2. Đặc tính nổi bật của bộ xử lý. Sử dụng công nghệ tích hợp cao RICSC CPU Người sử dụng có thể lập trình với các câu lệnh đơn giản Tất cả các câu lệnh thực hiện trong 1 chu kì ngoại trừ một số lệnh rẽ nhánh thực hiện trong 2 chu kì. Tốc độ hoạt động là : - Xung đồng hồ vào la DC-20MHz - Chu kì lệnh thực hiện trong 200ns Bộ nhớ chương trình Flash 8Kx14 Words Bộ nhớ Ram 368x8 bytes Bộ nhớ EFPROM 256x8 bytes. 2.1.3. Sơ đồ khối bộ vi điều khiển Pic16F877A Hình 2.2. Sơ đồ khối của Pic16F877A 2.2. Mô tả các chân chức năng của Pic16F877A Bảng 2.1. Bảng chân chức năng của Pic16F877A Tên chân Chân số Chức năng của chân OSC1/CLKIN 13 I Đầu vào của dao động thạch anh/ngõ vào xung clock ngoại. OSC2/CLKOUT 14 O Đầu ra của bộ dao động thạch anh. Nối với thạch anh hay cộng hưởng trong chế độ dao động của thạch anh. Trong chế độ RC, ngõ ra của chân OSC2 MCLR /VPP 1 I/P Ngõ vào của Master Clear (Reset) hoặc ngõ vào điện thế được lập trình. Chân này cho phép tín hiệu RESET thiết bị tác động ở mức thấp. RA0/AN0 RA1/AN1 RA2/AN2/VREF – RA3/AN3/VREF + RA4/T0CKI RA5/ SS /AN4 2 3 4 5 6 7 I/O I/O I/O I/O I/O I/O PORTA là port vào ra hai chiều. RA0 có thể làm ngõ vào tương tự thứ 0. RA1 có thể làm ngõ vào tương tự thứ 1. RA2 có thể làm ngõ vào tương tự thứ 2 hoặc điện áp chuẩn tương tự âm. RA3 có thể làm ngõ vào tương tự thứ 3 hoặc điện áp chuẩn tương tự dương. RA4 có thể làm ngõ vào xung clock cho bộ định thời Timer0. Hoặc làm đầu ra. RA5 có thể làm ngõ vào tương tự thứ 4 hoặc làm đầu ra. RB0/INT RB1 RB2 RB3/PGM RB4 RB5 RB6/PGC RB7/PGD 33 34 35 36 37 38 39 40 I/O I/O I/O I/O I/O I/O I/O I/O PORTB là port vào ra hai chiều. RB0 có thể làm chân ngắt ngoài. RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCK/SC RC4/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT 15 16 17 18 23 24 25 26 I/O I/O I/O I/O I/O I/O I/O I/O PORTC là port vào ra hai chiều. RC0 có thể là ngõ ra của bộ dao động Timer1 hoặc ngõ vào xung clock cho Timer1. RC1 có thể là ngõ vào của bộ dao động Timer1 hoặc ngõ vào Capture2/ngõ ra compare2/ngõ ra PWM2. RC2 có thể là ngõ vào Capture1/ngõ ra compare1/ngõ vào PWM1. RC3 có thể là ngõ vào xung clock đồng bộ nối tiếp/ngõ ra trong cả hai chế độ SPI và I2C. RC4 có thể là dữ liệu bên trong SPI (chế độ SPI) hoặc dữ liệu I/O (chế độ I2C). RC5 có thể là dữ liệu ngoài SPI (chế độ SPI). RC6 có thể là chân truyền không đồng bộ USART hoặc đồng bộ với xung đồng hồ. RC7 có thể là chân nhận không đồng bộ USART hoặc đồng bộ với dữ liệu. RD0/PSP0 RD1/PSP1 RD2/PSP2 RD3/PSP3 RD4/PSP4 RD5/PSP5 RD6/PSP6 RD7/PSP7 19 20 21 22 27 28 29 30 I/O I/O I/O I/O I/O I/O I/O I/O PORT là port vào ra hai chiều hoặc là parallel slave port khi giao tiếp với bus của bộ vi xử lý. RE0/ RD/AN5 RE1/WR /AN6 RE2/CS /AN7 8 9 10 I/O I/O I/O PORTE là port vào ra hai chiều. RE0 có thể điều khiển việc đọc parallel slave port hoặc là ngõ vào tương tự thứ 5. RE1 có thể điều khiển việc ghi parallel slave port hoặc là ngõ vào tương tự thứ 6. RE2 có thể điều khiển việc chọn parallel slave port hoặc là ngõ vào tương tự thứ 7. VSS 12,31 P mass VDD 11,32 P Cung cấp nguồn dương cho các mức logic và những chân I/O. Các kí hiệu: I: input O: output I/O:input/output P: power 2.3. Tổ chức bộ nhớ Pic16F877A có 3 khối bộ nhớ: Bộ nhớ chương trình Flash, bộ nhớ dữ liệu RAM, bộ nhớ EEPROM. 2.3.1. Tổ chức bộ nhớ chương trình Flash Vi điều khiển Pic16F877A có bộ nhớ chương trình 13 bit và có 8Kx14 từ mã của bộ nhớ chương trình Flash, được chia thành 4 trang mỗi trang 2Kx14 từ mã. Khi Reset địa chỉ bắt đầu thực hiện chạy là 0000h, vector ngắt bắt đầu từ 0004h. Stack có 8 mức dùng để lưu địa chỉ lệnh thực hiện tiếp theo sau lệnh CALL và khi xẩy ra ngắt. 0000H 0004H 0005H 07FFH 0800H 0FFFH 17FFH 1800H 1FFFH On_chip Program memmory PC Stack level 1 Stack level 2 Stack level 8 Stack level 8 Reset vector Interput vector Page0 Page1 Page2 Page3 Hình 2.3. Bản đồ bộ nhớ chương trình và các ngăn xếp 2.3.2. Tổ chức bộ nhớ dữ liệu RAM RAM là bộ nhớ có thể đọc/ghi, nó không lưu dữ liệu khi mất điện, bộ nhớ RAM của Pic16F877A có 4 Bank, mỗi Bank có dải địa chỉ 0-7FH (128 byte) trên các Bank những thanh ghi đa mục đích, nó hoạt động như một RAM tĩnh và những thanh ghi chức năng đặc biệt ở vùng địa chỉ thấp. Hình 2.4. Hình ảnh các Bank Các Thanh ghi đa mục đích (General Purpose Register), các thanh ghi này được truy cập bằng cả hai cách trực tiếp hoặc gián tiếp qua thanh ghi FSR, tổng cộng có 368 bytes. Các thanh ghi chức năng đặc biệt: các thanh ghi này được dùng bởi CPU và các khối ngoại vi để điều khiển sự hoạt động theo yêu cầu của thiết bị. Các thanh ghi này có thể phân loại vào bộ phận trung tâm (CPU) và ngoại vi. Các thanh ghi trạng thái STATUS: có 4 thanh ghi trạng thái trên 4 dãy, tại các địa chỉ 03h, 83h, 103h, 108h. Các thanh này cho biết trạng thái của phần tử logic toán học ALU, trạng thái Reset, trạng thái của các bít lựa chọn dãy thanh ghi cho bộ nhớ dữ liệu. Thanh ghi trạng thái có thể là kết quả của một số lệnh như là với một số thanh ghi khác. Nếu thanh ghi trạng thái là kết quả bởi một lệnh mà tác động đến các bít Z, DC, C thì việc ghi vào các bit này là không thể. Các thanh ghi lựa chọn OPTION_REG: có hai thanh ghi lựa chọn tai các địa chỉ 81h và 181h, các thanh ghi này có thể đọc hoặc ghi, nó chứa đựng nhiều bits điều khiển khác nhau để xác địn