Khóa luận Thiết kế mạch điều khiển thiết bị điện qua điện thoại di động

Ngày nay, ngành công nghệ thông tin đã đạt được những tiến bộ vượt bậc với sự ra đời của ngành công nghiệp phần cứng, cũng như phần mềm việc giải quyết các công việc giúp con người trở nên dễ dàng, thuận tiện và nhanh chóng. Cùng với sự phát triển của ngành công nghệ thông tin là sự phát triển mạnh mẽ của các hệ thống thông tin liên lạc, sự ra đời của các dịch vụ điện thoại mà cụ thể là điện thoại di động với ưu thế dễ dàng hoạt động khi di chuyển mọi lúc mọi nơi. Chính vì vậy ngoài việc dùng điện thoại để liên lạc một vấn đề được đặt ra là chúng ta có thể sử dụng điện thoại như một chiếc Remote để điều khiển các thiết bị điện từ xa. Từ yêu cầu trên và những kiến thức em được học ở trường em đã lựa chọn đề tài: “Điều khiển thiết bị điện điện sử dụng điện thoại di động.” Giới hạn đề tài: Việc thiết kế các ứng dụng của PIC với điện thoại di động, IC thu phát DTMF rất phong phú và phức tạp, do vậy trong đề tài này em tập trung giải quyết các vấn đề chính:  Thiết kế phần cứng điều khiển thiết bị điện thông qua IC MT8870.  Điều khiển bật/tắt thiết bị điện.  Hẹn giờ bật/tắt thiết bị điện.  Hiển thị trên LCD mã điều khiển để kiểm tra.

doc82 trang | Chia sẻ: ngtr9097 | Lượt xem: 6352 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Khóa luận Thiết kế mạch điều khiển thiết bị điện qua điện thoại di động, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA KĨ THUẬT ĐIỆN TỬ I KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC Đề tài: “ THIẾT KẾ MẠCH ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA ĐIỆN THOẠI DI ĐỘNG ” Giảng viên hướng dẫn : ThS. NGUYỄN HỒNG HOA Sinh viên thực hiện : NGUYỄN TRUNG KIÊN Lớp : Đ07-KTĐT1 Khoá : 2007-2012 Hệ : Chính quy Hà Nội, tháng 12 năm 2011 LỜI NÓI ĐẦU Ngày nay, ngành công nghệ thông tin đã đạt được những tiến bộ vượt bậc với sự ra đời của ngành công nghiệp phần cứng, cũng như phần mềm việc giải quyết các công việc giúp con người trở nên dễ dàng, thuận tiện và nhanh chóng. Cùng với sự phát triển của ngành công nghệ thông tin là sự phát triển mạnh mẽ của các hệ thống thông tin liên lạc, sự ra đời của các dịch vụ điện thoại mà cụ thể là điện thoại di động với ưu thế dễ dàng hoạt động khi di chuyển mọi lúc mọi nơi. Chính vì vậy ngoài việc dùng điện thoại để liên lạc một vấn đề được đặt ra là chúng ta có thể sử dụng điện thoại như một chiếc Remote để điều khiển các thiết bị điện từ xa. Từ yêu cầu trên và những kiến thức em được học ở trường em đã lựa chọn đề tài: “Điều khiển thiết bị điện điện sử dụng điện thoại di động.” Giới hạn đề tài: Việc thiết kế các ứng dụng của PIC với điện thoại di động, IC thu phát DTMF rất phong phú và phức tạp, do vậy trong đề tài này em tập trung giải quyết các vấn đề chính: Thiết kế phần cứng điều khiển thiết bị điện thông qua IC MT8870. Điều khiển bật/tắt thiết bị điện. Hẹn giờ bật/tắt thiết bị điện. Hiển thị trên LCD mã điều khiển để kiểm tra. LỜI CẢM ƠN Lời đầu tiên trong khoá luận em xin bày tỏ lòng biết ơn tới toàn thể các thầy, cô giáo trong Khoa Kĩ Thuật Điện Tử - Học Viện Công Nghệ Bưu Chính Viễn Thông đã nhiệt tình chỉ bảo, dạy dỗ em trong suốt những năm học vừa qua. Em xin chân thành cảm ơn cô giáo Nguyễn Hồng Hoa đã hướng dẫn, quan tâm, chỉ bảo tận tình để em hoàn thành khoá luận tốt nghiệp này. Cảm ơn gia đình, bạn bè đã động viên, khích lệ, giúp đỡ về mọi mặt trong quá trình em hoàn thành đồ án tốt nghiệp. Hà Nội, tháng 12 năm 2011 Sinh viên thực hiện Nguyễn Trung Kiên NHẬN XÉT, ĐÁNH GIÁ, CHO ĐIỂM ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. ………………………………………………………………………………………….. Điểm: …………………….………(bằng chữ: …..…………….….) Đồng ý/Không đồng ý cho sinh viên bảo vệ trước hội đồng chấm đồ án tốt nghiệp?. …………, ngày tháng năm 20 CÁN BỘ- GIẢNG VIÊN HƯỚNG DẪN (ký, họ tên) NGUYỄN HỒNG HOA MỤC LỤC DANH MỤC CÁC HÌNH VẼ Hình 1.1: Dạng tín hiệu DTMF 3 Hình 1.2: Bàn phím chuẩn 12 nút 4 Hình 1.3: Bàn phím mở rộng 16 phím 4 Hình 1.4: IC thu DTMF MT8870 5 Hình 1.5: Sơ đồ khối của MT8870 7 Hình 1.6: Sơ đồ mạch test thử với IC MT8870 9 Hình 2.1: Sơ đồ chân của PIC16F877A 11 Hình 2.2: Sơ đồ khối của PIC16F877A 13 Hình 2.3: Bộ nhớ chương trình PIC16F877A 15 Hình 2.4: Bộ nhớ dữ liệu của PIC 16F877A 17 Hình 2.5: Sơ đồ khối của Timer 0 23 Hình 2.6: Sơ đồ khối của Timer1 25 Hình 2.7: Sơ đồi khối của Timer2 27 Hình 2.8: Sơ đồ khối bộ chuyển đổi ADC 29 Hình 2.9: Sơ đồ logic của tất cả các ngắt trong PIC16F877A 30 Hình 3.1: Sơ đồ khối của mạch. 36 Hình 3.2: Sơ đồ mạch nguyên lý hệ thống 41 Hình 3.3: Sơ đồ nguyên lý của PIC16F877A trong mạch 42 Hình 3.4: Sơ đồ nguyên lý kết nối trong mạch của IC MT8870. 43 Hình 3.5: Sơ đồ nguyên lý kết nối của LCD1602 trong mạch điện 44 Hình 3.6: Sơ đồ nguyên lý nguồn nuôi của mạch 44 Hình 3.7 : Sơ đồ nguyên lý khối đóng ngắt thiết bị điện. 45 Hình 3.8: Sơ đồ nguyên lý khối tín hiệu phản hồi 45 Hình 3.9: Sơ đồ mạch in thực tế sau thiết kế 46 Hình 3.10: Giao diện của PIC C Compiler 47 Hình 3.11: Tạo Project bằng PIC Wizard 49 Hình 3.12: Cửa sổ Save As 49 Hình 3.13: Tab General 50 Hình 3.14: Tab Communications 51 Hình 3.15: Tab SPI and LCD. 52 Hình 3.16: Tab Timer 53 Hình 3.17: Tab Analog 54 Hình 3.18: Tab Other 55 Hình 3.19: Tab Interrupts 56 Hình 3.20 : TabDriver 56 Hình 3.21: PG2C mạch nạp PIC qua cổng COM 57 Hình 3.22: Giao diện phần mềm nạp WinPic800. 58 Hình 3.23: Test cable 59 Hình 3.24: Test Hardware 60 Hình 3.25:Vi điều khiển PIC 40 chân 61 Hình 3.26:Vi điều khiển PIC 18 chân 61 Hình 3.27:Vi điều khiển PIC 28chân 62 Hình 3.28:Vi điều khiển PIC 8 chân 62 Hình 3.29: Quá trình Dectect Vi điều khiển 63 Hình 3.30:Quá trình nạp file .Hex vào Vi điều khiển PIC 64 Hình 3.31:Đọc chương trình ra từ Vi điều khiển PIC 65 Hình 3.32: So sánh để kiểm tra quá trình nạp file .Hex . 66 Hình 3.33: Lưu đồ thuật toán điều khiển 67 Hình 4.1: Mạch thực tế sau khi thiết kế và chạy thử 69 DANH MỤC CÁC TỪ VIẾT TẮT STT Thuật ngữ Ý nghĩa ADC Analog-to-Digital Converter CCP Capture/Compare/PWM CCS Custom Computer Services DTMF Dual Tone Multi Frequency FSG File Select Register GPR General Purpose Register I2C Inter Intergrated Circuit ICSP In-Circuit Serial Programming LCD Liquid Crytal Display MCLR Master Clear PIC Programmable Intergrated Circuit PWM Pulse Width Modulation SFG Special Function Register SPI Serial Pripheral Interface SSP Synchronous Serial Port WDT Watchdog Timer CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 1.1 Ý tưởng bài toán Ngày nay, công nghệ điện thoại di động ngày một phát triển mạnh. Điện thoại trở thành một nhu cầu không thể thiếu được của con người trong nhịp sống hiện đại chiếc điện thoại gần như lúc nào cũng được chúng ta mang theo bên người. Bởi vậy ngoài khả năng nghe, gọi, nhắn tin, truy cập internet, giải trí…vv thì một câu hỏi được đặt ra là: Có thể dùng điện thoại di động để điều khiển các thiết bị điện như Tủ lạnh, TV, điều hoà nhiệt độ, máy tính, lò vi sóng, quạt điện, đèn chiếu sáng, bình nóng lạnh….vv không? Trong thực tế cuộc sống có không ít lần chúng ta đi đến công ty hay đi ra ngoài mà quên không tắt máy tính, điều hoà, bình nóng lạnh …vv và nhiều khi chúng ta phải trở về nhà chỉ để tắt các thiết bị này bởi nhiều lý do như: nguy cơ cháy nổ, nguy hiểm, hỏng hóc, tốn điện…Trong những ngày mùa đông lạnh trước khi đi làm về chúng ta muốn có sẵn nước nóng để tắm cho thoải mái sau một ngày làm việc hay chúng ta muốn ngồi một chỗ để điều khiển công việc từ xa....vv. Xuất phát từ những yêu cầu thực tế cuộc sống đề tài của em nghiên cứu thu tín hiệu DTMF từ điện thoại di động để từ đó giải mã và đưa ra được các tín hiệu điều khiển bật /tắt thiết bị điện.Với khả năng này chúng ta chỉ cần mang điện thoại ra và gọi điện nhập mã điều khiển là có thể yên tâm các thiết bị điện chúng ta đã ở trạng thái tắt/bật như ý muốn. 1.2 Cấu tạo cơ bản và nguyên lý hoạt động của điện thoại 1.2.1 cấu tạo cơ bản Gồm ba phần chính sau: Phần chuyển đổi mạch điện: Phần này gồm hệ thống lá mạ tiếp điểm và có nhiệm vụ đóng mở mạch điện khi có yêu cầu. Phần thu và phát tín hiệu gọi: Phần này gồm hai phần chính là máy điện quay tay có nhiệm vụ phát tín hiệu gọi lên đường truyền và phần chuông máy có nhiệm vụ biến dòng tín hiệu gọi thành tín hiệu gọi. Phần thu phát thoại: Gồm có loa và mic. Loa có nhiệm vụ biến đổi tín hiệu âm thanh thành tín hiệu điện và mic thì có nhiệm vụ ngược lại biến tín hiệu điện thành tín hiệu âm thanh. 1.2.2 Nguyên lý hoạt động Khi ta thực hiện cuộc gọi dao động âm thanh của tiếng nói sẽ tác động vào màng rung của mic làm xuất hiện dòng điện biến đổi tương ứng trong mạch. Dòng điện biến đổi này được truyền trên đường dây điện thoại và được chuyển mạch đến máy điện thoại được gọi, làm cho màng rung của loa dao động, lớp không khí trước màng sẽ dao động theo phát ra âm thanh tác động đến tai người nghe và quá trình truyền dẫn ngược lại cũng tương tự. 1.3 Tín hiệu DTMF 1.3.1 Định nghĩa DTMF(Dual Tone Multi Frequency): là tín hiệu gồm có hai tần số xếp trồng lên nhau. Mỗi tần số được lựa chọn sao cho có lợi cho việc thiết kế bộ lọc và dễ dàng truyền đi trên đường dây điện thoại có băng thông khoảng chừng 3,5KHz. DTMF phát ra là 1 tín hiệu âm thanh ghép của 2 tín hiệu trong dải tần số từ 697Hz đến 1633Hz. Phiên bản của DTMF sử dụng cho tín hiệu điện thoại được biết đến như hãng Touch-Tone, và được tiêu chuẩn hoá bởi ITU-T là Q.23. Tín hiệu DTMF có thể được phát hoặc thu bằng một IC chuyên dụng (VD: MTD887X). Hệ thống DTMF đang phát triển và trở thành phổ biến trong hệ thống điện thoại hiện nay. Hệ thống này được hình thành vào năm 1960 nhưng mãi đến năm 1970 mới được phát triển rộng rãi. 1.3.2 KEYPAD Trong DTMF mỗi chữ số chọn lựa có tín hiệu dưới dạng tổ hợp của hai tần số xoay chiều: Hình 1.1: Dạng tín hiệu DTMF Khi một nút được bấm, hai tần số mô tả chữ số được phát ra và được gửi một cách đồng thời. Đặc biệt là hai âm thanh này không cùng âm, tức là tần số của âm thanh này không có cùng ước số chung với âm thanh kia, điều này để tránh sự nhầm lẫn vô tình với âm hiệu nói, sự phân tách rõ ràng giữa hai loại này là rất cần thiết. Ví dụ như hai tần số 750 và 500 là hai tần số không thể kết hợp thành tín hiệu DTMF vì có cùng ước số chung là 250, hai tần số này là hai âm thanh cùng âm. Keypad chuẩn là một ma trận chữ nhật gồm ba cột và bốn hàng (3x4) tạo nên tổng cộng là 12 phím nhấn: trong đó có 10 phím cho chữ số (từ 0 đến 9), hai phím đặc biệt là ‘*’ và ‘#’. Mỗi hàng trên bàn phím bấm được gán cho một tần số tín hiệu thấp, mỗi cột được gán cho tần số tín hiệu cao. Mỗi một phím sẽ có một tín hiệu DTMF riêng được tổng hợp bởi hai tần số tương ứng với hàng và cột mà phím đó đang đứng. Những tần số này đã được lựa chọn cẩn thận sao cho có lợi cho việc thiết kế bộ lọc và dễ dàng truyền đi trên đường dây điện thoại. Hình 1.2: Bàn phím chuẩn 12 nút Ngày nay, người ta còn cho thêm một vài phím để tạo nên bảng mã được nằm trong một ma trận (4x4) với mỗi hàng miêu tả bằng một tần số thấp và mỗi cột miêu tả bằng một tần số cao. Hình 1.3: Bàn phím mở rộng 16 phím 1.3.3 IC MT8870 thu tín hiệu DTMF Hình 1.4: IC thu DTMF MT8870 Định nghĩa các chân như sau: PIN 1 (IN+) Non- Investing op-amp: Ngõ vào không đảo. PIN 2 (IN-) Investing op-amp: Ngõ vào đảo. PIN 3 (GS) Gain Select: Giúp truy xuất ngõ ra của bộ khuếch đại vi sai đầu cuối qua điện trở hồi tiếp. PIN 4 (Vref ) Reference Voltage: Ngõ ra (Thông thường bằng VDD/2). PIN 5 (INH) Inhibit: Ngõ vào (Khi chân này ở mức logic cao thì không nhận được ký tự A,B,C ở ngõ ra). PIN 6 ( PWDN) Power down: Ngõ vào tác động mức cao (Khi chân này tác động thì sẽ cấm mạch dao động và IC 8870 hoạt động). PIN 7 (OSC 1): Clock ngõ vào MHz PIN 8 (OSC 2): Clock ngõ ra (Nối hai chân 7 và 8 với thạch anh 3.579545 MHz, để tạo một mạch dao động nội). PIN 9 (Vss): Nối GND. PIN 10(TOE) Three Stage Output Enable: Ngõ vào, Ngõ ra Q1-Q4 hoạt động khi TOE ở mức cao. PIN 11-14 từ Q1-Q4: Ngõ ra (khi TOE ở mức cao các chân này cung cấp mã tương ứng với các cặp Tone dò tìm được theo bảng chức năng. Khi TOE ở mức thấp dữ liệu ngõ ra ở trạng thái trở kháng cao). PIN 15 (STD) Delayed Steering: Ngõ ra, ở mức cao khi gặp tần số Tone đã được ghi nhận và gõ ra chốt thích hợp, trở về mức thấp khi điện áp trên ST/GT nhỏ hơn điện áp ngưỡng VTST. PIN 16 (EST): Early Steering (ngõ ra), chân này lên mức [1] khi bộ thuật toán nhận được cặp tone và trở về mức[0] khi mất Tone. PIN 17 (ST/GT): Steering Input /Guard tune output (ngõ ra), khi điện áp Vc lớn hơn VTST thì ST sẽ điều khiển dò tìm cặp Tone và chốt ngõ ra. PIN 18 (VDD): Điện áp cung cấp, thường là +5V. IC nhận tín hiệu DTMF từ đường điện thoại qua chân 2 (IN -), sau khi thực hiện giải mã nó đưa dữ liệu ra 4 chân (từ chân 11 đến chân 14) dưới dạng 4 bit nhị phân. Hình 1.5: Sơ đồ khối của MT8870 Bảng trạng thái MT8870: Digit TOE INH Est Q4 Q3 Q2 Q1 ANY L X H Z Z Z Z 1 H X H 0 0 0 1 2 H X H 0 0 1 0 3 H X H 0 0 1 1 4 H X H 0 1 0 0 5 H X H 0 1 0 1 6 H X H 0 1 1 0 7 H X H 0 1 1 1 8 H X H 1 0 0 0 9 H X H 1 0 0 1 0 H X H 1 0 1 0 * H X H 1 0 1 1 # H X H 1 1 0 0 A H L H 1 1 0 1 B H L H 1 1 1 0 C H L H 1 1 1 1 D H L H 0 0 0 0 Mạch Test thử với MT8870: Hình 1.6: Sơ đồ mạch test thử với IC MT8870 Khi không bấm nút: TOE: Logic 0 Q3: Logic 0 Q2: Logic 0 Q1: Logic 0 Khi bấm và giữ nút ‘1’: TOE: Logic 1 Q4: Logic 0 Q3: Logic 0 Q2: Logic 0 Q1: Logic 1 Thả nút ‘1’: TOE: Logic 0 Q4: Logic 0 Q3: Logic 0 Q2: Logic 0 Q1: Logic 1  Khi bấm và giữ nút ‘2’: TOE: Logic 1 Q4: Logic 0 Q3: Logic 0 Q2: Logic 1 Q1: Logic 0 Thả nút ‘2’: TOE: Logic 0 Q4: Logic 0 Q3: Logic 0 Q2: Logic 1 Q1: Logic 0 Khi bấm số điện thoại thì StD có mức logic là ‘1’, còn khi ta không bấm thì StD có mức logic là ‘0’. Còn các chân Q1, Q2, Q3, Q4 là mã BCD của số điện thoại. CHƯƠNG 2 TÌM HIỂU VI ĐIỀU KHIỂN PIC 16F877A 2.1 Giới thiệu PIC 16F877A Vi điều khiển với chức năng là bộ sử lý trung tâm, nhận tín hiệu từ bộ thu và giải mã DTMF đưa ra tín hiệu điều khiển thiết bị. Sơ đồ chân VĐK PIC 16F877A: Hình 2.1: Sơ đồ chân của PIC16F877A Chức năng các chân VĐK: Chân OSC1/CLK1(13): Ngõ vào kết nối với dao động thạch anh hoặc ngõ vào nhận xung clock từ bên ngoài. Chân OSC2/CLK0(14): Ngõ ra dao động thạch anh hoặc ngõ cấp xung clock. Chân /Vpp(1) Có 2 chức năng: : Ngõ vào reset tích cực ở mức thấp. 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 có 2 chức năng: RA0, 1, 2: Ngõ vào xuất/nhập số. AN0, 1, 2: Ngõ vào tương tự của kênh 0, 1, 2. Chân RA2/AN2/VREF-/VREF+(4): xuất nhập số/ ngõ vào tương tự kênh thứ 2/ ngõ vào điện áp chuẩn thấp bộ AD/ ngõ vào điện áp chuẩn cao bộ AD. Chân RA3/AN3/VREF+(5): xuất nhập số/ ngõ vào kênh tương tự 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 TIMER0/ 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 lựa chọn 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ố. 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 dao động Timer1/ ngõ vào xung clock bên ngoài Timer1. Chân RC1/T1OSI/CCP2(16): xuất nhập số/ ngõ vào bộ dao động Timer1/ 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 PWN1. 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 đồng bộ, ngõ ra chế độ I2C. Chân RC4/SDI/SDA(23): xuất nhập số/ dữ liệu vào SPI/ xuất nhập 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 RD0¸ 7/PSP0¸ 7(19¸ 30): xuất nhập số/ dữ liệu port song song. Chân RE0/ /AN5(8): xuất nhập số/ điều khiển port song song/ ngõ vào tương tự kênh 5. Chân RE1/ /AN6(9): xuất nhập số/ điều khiển ghi port song song/ ngõ vào tương tự kênh 6. Chân RE2/ /AN7(10): xuất nhập số/ chân chọn lựa điều khiển port song song/ ngõ vào tương tự kênh 7. Chân VDD(11, 32) và VSS(12, 31): là chân nguồn của Pic. 2.2 Các thành phần chính trong vi điều khiển PIC 16F877A Sơ đồ khối: Hình 2.2: Sơ đồ khối của PIC16F877A Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit. Mỗi lệnh đều được thực thi trong một chu kì xung clock. Tốc độ hoạt động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte. Số PORT I/O là 5 với 33 pin I/O. Các đặc tính ngoại vi bao gồm các khối chức năng sau: Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit. Timer1: 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. Timer2: 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. 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. 2.3 Tổ chức bộ nhớ Hình 2.3: Bộ nhớ chương trình PIC16F877A 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ừ page0 đến page 3). Như vậy, bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14 bit). Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm chương trình có dung lượng 13 bit (PC). 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. Bộ nhớ dữ liệu: Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM đượ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 SFG (Special Function 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ỉ còn lại trong bank. Các thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) 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 PIC16F877A như sau: Hình 2.4: Bộ nhớ dữ liệu của PIC 16F877A 2.3.1 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 bên trong vi điều khiển. Có thể phân thanh ghi SFR làm hai lọai: thanh ghi SFR liên quan đến các chức năng bên trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiển các khối chức năng bên ngoài (ví dụ như ADC, PWM, …). 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 xuất trong bộ nhớ dữ liệu. Thanh 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 pull-up của các châ