Luận văn Nghiên cứu các ứng dụng cảm biến quang

Ngày nay trên thế giới, cảm biến quang học đã được sử dụng rất nhiều trong đời sống, nhất là trong lĩnh vực y học, một lĩnh vực đòi hỏi sự chính xác, nhanh chóng và ít gây tổn thương cho bệnh nhân. Vì vậy cảm biến quang học là thiết bị dùng cho những xét nghiệm và trong hỗ trợ trong điều trị cho bệnh nhân, là một lựa chọn hợp lý và kinh tế. Trong khóa luận này, em sử dụng một đèn led có độ chiếu sáng mạnh chiếu vào ngón tay của bệnh nhân và ánh sáng truyền qua được thu vào cảm biến quang học TSL 230, với mục đích thu nhận những biến đổi trong máu qua đầu ngón tay người bệnh.Cảm biến quang học TSL230 sẽ biến đổi tín hiệu đó tần số và đưa vào vi điều khiển PIC 16F877A để xử lý tìm ra chính xác nhịp tim của bệnh nhân. Nội dung của bản khóa luận “Nghiên cứu các ứng dụng cảm biến quang” gồm 3 chương : Chương 1 : Giới thiệu về cảm biến quang học TSL230 Chương 2: Cấu trục vi điều khiển PIC 16F877A Chương 3: Xây dựng hệ đo nhịp tim. Sau một thời gian nghiên cứu, tìm hiểu và được sự giúp đỡ của GS TSKH Nguyễn Phú Thùy em đã hoàn thành khóa luận trong thời gian ngắn. Em xin chân thành cảm ơn sự giúp đỡ của Thầy Cô trong khoa điện tử -viễn thông và các cán bộ trẻ trong phòng thí nghiệm MEMS bộ môn vi cơ điện tử và vi hệ thống và đặc biệt là thầy Nguyễn Phú Thùy đã trực tiếp hướng dẫn em hoàn thành khóa luận này

doc53 trang | Chia sẻ: ngtr9097 | Lượt xem: 2735 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu các ứng dụng cảm biến quang, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MỞ ĐẦU Ngày nay trên thế giới, cảm biến quang học đã được sử dụng rất nhiều trong đời sống, nhất là trong lĩnh vực y học, một lĩnh vực đòi hỏi sự chính xác, nhanh chóng và ít gây tổn thương cho bệnh nhân. Vì vậy cảm biến quang học là thiết bị dùng cho những xét nghiệm và trong hỗ trợ trong điều trị cho bệnh nhân, là một lựa chọn hợp lý và kinh tế. Trong khóa luận này, em sử dụng một đèn led có độ chiếu sáng mạnh chiếu vào ngón tay của bệnh nhân và ánh sáng truyền qua được thu vào cảm biến quang học TSL 230, với mục đích thu nhận những biến đổi trong máu qua đầu ngón tay người bệnh.Cảm biến quang học TSL230 sẽ biến đổi tín hiệu đó tần số và đưa vào vi điều khiển PIC 16F877A để xử lý tìm ra chính xác nhịp tim của bệnh nhân. Nội dung của bản khóa luận “Nghiên cứu các ứng dụng cảm biến quang” gồm 3 chương : Chương 1 : Giới thiệu về cảm biến quang học TSL230 Chương 2: Cấu trục vi điều khiển PIC 16F877A Chương 3: Xây dựng hệ đo nhịp tim. Sau một thời gian nghiên cứu, tìm hiểu và được sự giúp đỡ của GS TSKH Nguyễn Phú Thùy em đã hoàn thành khóa luận trong thời gian ngắn. Em xin chân thành cảm ơn sự giúp đỡ của Thầy Cô trong khoa điện tử -viễn thông và các cán bộ trẻ trong phòng thí nghiệm MEMS bộ môn vi cơ điện tử và vi hệ thống và đặc biệt là thầy Nguyễn Phú Thùy đã trực tiếp hướng dẫn em hoàn thành khóa luận này CHƯƠNG 1 - GIỚI THIỆU VỀ CẢM BIẾN QUANG HỌC TSL230 1.1. Cấu tạo của cảm biến quang học TSL230. 1.1.1 Mô tả Thiết bị TSL230 là một tập hợp các cảm biến quang học có khả năng chuyển ánh sáng thành tín hiệu điện. Nó được tích hợp với khối CMOS và chuyển dòng điện thành tần số.Đầu ra có thể là một chuỗi xung hoặc là sóng hình vuông (50% chu kỳ) với tần số tỷ lệ với cường độ sáng. Độ nhạy cảm của thiết bị chúng ta có thể điều chỉnh được qua các chân của thiết bị. Tất cả đầu vào và đầu ra đều ở mức TTL, cho phép đo thông tin hai chiều của vi điều khiển của chương trình và đầu ra của cường độ ánh sáng. Đầu ra được cho phép bởi chân (OE) nó cung cấp điều kiện đặc điểm của đầu ra trong tình trạng trở kháng cao cho sự chia nhỏ tín hiệu vào vi điều khiển. Thiết bị có giá tri ra hoàn toàn là tần số với hệ dung sai của TSL230 là 20% và là 5% so với TSL230A Mỗi mạch điện có bề mặt phân cách nhiệt cho phép hoạt động trong dải ánh sáng từ bức xạ tử ngoại đến ánh sáng nhìn thấy với cả với bước sóng từ 300nm đến 700nm. Thiết bị có thể hoạt động tốt trong nhiệt độ cho phép từ -25oC đến 70oC. 1.1.2 Cấu tạo Hình 1 là ảnh cụp của cảm biến quang học TL230.  Hình 1: Ảnh chụp của cảm biến quang học dùng trong khóa luận (TSL 230) Đầu thu ánh sáng khả trình là một linh kiện rất thuận lợi cho ta trong quá trình đo đạc, nó có khả năng biến ánh sáng nhận được theo tín hiệu tương tự và biến đổi nó thành xung vuông ở lối ra. Ta có thể lập trình hay thiết lập được các thông số ví dụ như độ nhạy sáng , tỷ lệ của xung lối ra. Ta có thể truyền trực tiếp đến vi xử lý và dùng để xử lý dữ liệu được truyền tới. Nguồn cung cấp cho cảm biến là 6V- 2,7V. Tỷ lệ sai số của xung lối ra vào cỡ ±5% Cấu hình của TSL230 gồm có một loạt các photodiot được đóng gói trong một vỏ nhựa trong suốt có hai hàng chân . Dãy photodiot đặt bên trong có kích thước vào khoảng 1,36. Các chân của TSL230 được trình bày trên hình 2. Hình 2: Chân cụ thể của TSL 230. Chân số 1 : S0 (Chân dùng đặt tỉ lệ độ nhạy của photodiot) Chân số 2 : S1 (Chân dùng đặt tỉ lệ độ nhạy của photodiot) Chân số 3 : OE (Enable for f0 , ative low) Chân số 4 : GND (Chân nối đất ) Chân số 5 : VCC (Chân nối lên nguồn ) Chấn số 6 : OUT (Chân cho xung ra khi có ánh sáng đựơc thu trên photodiot). Chân số 7 : S2 (Chân chia tỉ lệ của tần số lối vào ) Chấn số 8 : S3 (Chân chia tỉ lệ của tần số lối vào ) 1.2. Nguyên tắc hoạt động 1.2.1 Cấu hình đầu ra của TSL230 Cấu hình cho các chân của TSL 230 cho phép ta thu được một dãy các xung vuông ra theo như ý muốn của chúng ta. S1  S0  S3  S2  Độ nhạy  Tần số chia   L  L  L  L  Power Down  1   H  L  L  H  1x  2   H  L  H  L  10x  10   H  H  H  H  100x  100    Hình 3: Giản đồ xung tại chân ra. 1.2.2 chức năng các chân Xung ra của TSL 230 sẽ tỉ lệ với cường độ ánh sáng nhận được trên bề mặt của TSL 230. Xung sẽ đưa được trực tiếp đến vi điều khiển để xử lý dữ liệu vào và đưa ra hiển thị kết quả trên LCD. Bảng dưới là biểu đồ biểu thị các trường hợp cài đặt các chân và sự phối hợp các chân như thế nào . Tên chân  Ký hiệu(số)  I/O  Chức năng   GND  4   Chân đất   OE  3  I  Enable for fO   OUT  6  O  Chân cho xung ra   S0, S1  1, 2  I  Chỉnh độ nhạy   S2, S3  7, 8  I  Chân chia tỉ lệ tần số nối vào   1.2.3 Khối chức năng Sơ đồ khối chức năng của thiết bị đo nhịp tim dùng trong khóa luận được trình bày trong hình 4.  Hình 4 Sơ đồ khối chức năng. 1.2.4 Giới thiệu về điều kiện vận hành 1.2.4.1 Những đặc tính hoạt động khi VDD= 5V, TA=25oC Bảng dưới trình bày đặc tính hoạt động của các cảm biến quang học khác nhau khi hoạt động ở thế VDD= 5V và nhiệt độ TA= 25oC. Tham số  Điều kiện Chạy  TSL230  TSL230A  TSL230B  Đơn vị đo     Min Typ Max  Min Typ Max  Min Typ Max     S0=H, S1=S2=S3=L Ee=130nW/cm2 λ P =670 nm  0.8 1 1.2  0.9 1 1.1  0.95 1 1.05  MHz    S0=H,Ee=0 S1=S2=S3=L  0.1 10  0.1 10  0.1 10  Hz    S1=H, S0=S2=S3=L Ee=130nW/cm2 λ P =670 nm  0.8 1 1.2  0.9 1 1.1  0.95 1 1.05  MHz   fO  S1=H,Ee=0 S0=S2=S3=L  0.13 10  0.13 10  0.13 10  Hz    S0=S1=H, S2=S3=L Ee=130nW/cm2 λ P =670 nm  0.8 1 1.2  0.9 1 1.1  0.95 1 1.05  MHz    S0=S1=H, S2=S3=L Ee=0;  0.5 10  0.5 10  0.5 10  Hz   TW  S2=S3  125 550  125 550  125 550  ns    S2orS3=H  1/2fO  1/2fO  1/2fO  s    fO=0 to 10kHz  ±0.1%  ±0.1%  ±0.1%  %F.S   Dung sai  fO=0 to 10kHz  ±0.2%  ±0.2%  ±0.2%  %F.S    fO=0 to 10kHz  ±0.5%  ±0.5%  ±0.5%  %F.S   Nguồn Tắt   100  100  100  µs   Tỉ lệ  Cho phép OE  50 150  50 150  50 150  ns   1.2.4.2 Điều kiện nguồn nuôi Các dữ liệu  đầu vào  MIN  NOM  MAX  Đơn vị đo   Điện áp  nguồn, Vdd  2.7  5  6  V   Mức cao input, VIH  Vdd=4.5Vđến 5.5V  2   Vdd  V   Mức thấp input, VIL  Vdd=4.5Vđến 5.5V  0   0.8  V   Khoảng nhiệt độ  hoạt động  -25   70  oC   1.2.4.3 Đặc trưng về điện tại TA= 25oC và Vdd= 5V Thông số  Điều kiện chạy thử  Min  Nom  Max  Đơn vị đo   VOH  IOH= -4mA  4  4.3   V   VOL  IOL=4mA   0.17  0.28  V   IIH     1  µA   IIL     1  µA   IDD  Nguồn mở   2  3  mA    Nguồn tắt    10  µA   Tần số cao nhất   1.1  ±100   MHz   Hệ số nhiệt độ của đầu ra  λ ≤700nm -25oC≤ TA≤70oC     Ppm/oC   KSVS độ nhạy nguồn  VDD= 5V±10%       1.2.5 Biểu đồ đặc trưng Dưới đây là một số biểu đồ đặc trưng của cảm biến loại TSL 230A sử dụng trong khóa luận. 1.2.5.1 Tần số và độ sáng  Hình 5: biểu đồ tần số và độ sáng. 1.2.5.2 Độ nhạy đáp ứng phổ  Hình 6: Độ nhạy và đáp ứng phổ. 1.2.5.3 Tần số khi không có ánh sáng  Hình 7: Tần số và nhiệt độ. 1.2.5.4 Hệ số nhiệt độ và bước sóng của ánh sáng tới  Hình 8: hệ số nhiệt độ và chiều dài bước sóng. 1.2.5.5 Tần số đầu ra và nguồn nuôi  Hình 9: Tần số đầu ra và nguồn nuôi 1.3. Một số thông tin cho vấn đề ứng dụng Trong việc sử dụng bộ cảm biến TSL 230 cần lưu ý các vấn đề sau đây. 1.3.1 Chú ý đến nguồn nuôi Khi thiết bị làm việc ở điều kiện tốt nhất, nguồn nuôi được nối với một tụ 0.01µ đến 0.1µ. 1.3.2 Đầu ra chung Đầu ra của thiết bị được thiết kế theo định dạng TTL hoặc CMOS trên cơ sở đầu vào khoảng cách ngắn. Nếu kết nối trên 30 cm thì sử dụng bên ngoài của đầu ra sử dụng bộ đệm hoặc một thiết bị ngoài. 1.3.2.1 Sự hiệu chỉnh độ nhạy Độ nhạy được điều khiển bởi hai nối vào S0, S1. Độ nhạy sử dụng điều chỉnh được dòng điện một cách rất hiệu quả, bằng cách điều chỉnh độ mở và điều chỉnh bộ đáp ứng của thiết bị đối với số lượng ánh sáng. Độ nhạy có thể chia thành 3 mức 1x, 10x, 100x. Với sự điều chỉnh này cho phép thiết bị hoạt động tối ưu hóa đối với những sự thay đổi nhỏ mà vẫn giữ tín hiệu đầu ra trên giải tần số cho phép. Sự thay đổi độ nhạy này rất có hiệu quả vì chúng ta có thể kiểm soát được hệ số nhân đó. 1.3.1.2 Chia tần số đâu ra Tỷ số chia tần số đầu ra được điều khiển bởi hai chân S2 và S3. Chia tần số bằng cách đưa tần số tới bộ biến đổi và được cắt thành những xung theo tỉ lệ chia. Tỉ lệ chia có sẵn ở tùy theo ta chọn 1, 2, 10, 100. Sự chia cắt đầu ra là 50% thành những sóng vuông đưa ra trực tiếp và là nhưng sóng cố định có độ rộng xung được tính toán trước. Đầu ra được hiệu chỉnh nhờ điều chỉnh các mức tại chân S0, S1, S2, S3, để cho ra tần số tùy theo ý đồ của người thiết kế, hoặc có thể sử dụng chân tần số hoạt động ở chân OE. Sự chia cắt đầu ra làm tối ưu hóa về kĩ thuật đo tần số. Chia cắt bởi 1 hoặc đưa thẳng qua đầu ra thì chỉ cần sử dụng máy đếm tần số hoặc ắc quy xung, hoặc thiết bị bấm giờ cao tốc. Chia cắt thấp hơn có thể dùng những thiết bị đo đơn giản hơn mà vẫn chính xác mà chỉ cần những kỹ thuật đo đơn giản hơn. 1.3.1.3 Cách đo tần số Việc lựa chọn kỹ thuật đo và giao diện phụ thuộc vào nhịp độ thu nhận quyết định và dữ liệu mong muốn. Cho dữ liệu cực đại, nhịp độ thu nhận dữ liệu và kỹ thuất đo được sử dụng. Nếu sử dụng hệ số chia 2, thì ta được dữ liệu có tân số băng một nửa đầu ra hoặc một dữ liệu tại mọi thời điểm trong mỗi micro giây cho độ lớn tự nhiên ở đầu ra. Chúng ta có thể sử dụng trong phép đo có sự thay đổi của ánh sáng với hệ số chia của đầu ra cao hơn để bắt kịp với sự thay đổi của đầu vào. Ta dùng máy đếm và có thể quy định trước thời gian đếm khi đó ta có thể tính được giá trị của tần số. Phép đo chỉ thực hiện tốt cho những thay đổi chậm chạp của tín hiệu và mức ánh sáng trung bình trong những vùng ánh sáng nhìn thấy. Định chuẩn: Ưu điểm đầu tiên mà TSL230 cung cấp là đầu ra biến đổi được. Nếu ta lập trình cho S1 ở mức cao chứ không phải ở mức thấp thì ta có kết quả đầu ra lớn gấp 100 lần so với lúc đầu không chọn. Nếu lấy mẫu trong mỗi mili giây là 10000 lớn hơn là 1000, chúng ta có thể tăng thêm cả thời gian lấy mẫu. CHƯƠNG 2 - CẤU TRÚC VI ĐIỀU KHIỂN PIC 16F877A 2.1 Mô tả khái quát chung về tính năng của vi điều khiển PIC 16F877A + Bộ xử lý trung tâm CPU RISC. Tập lệnh chỉ gồm 35 lệnh RISC. Các tập lệnh thực hiện trong 1 chu kỳ máy , trừ các lệnh rẽ nhánh chiếm 2 chu kỳ . Tốc độ hoạt động : tần số xung nhịp từ 0 Hz đến 20 MHz nhờ thiết kế hoàn toàn tĩnh. Bộ nhớ chương trình 8k x 14 bit. Bộ nhớ dữ liệu RAM 368 x b bít. Bộ nhớ dữ liệu EEPROM 256 x 8 bit. + Các thiết bị ngoại vi giao tiếp số Timer0: bộ đếm / timer 8 bit , có bộ chia trước 8 bit. Timer1: bộ đếm 16 bit, có bộ chia trước hệ số 1,4,16. đếm xung được trong trạng thái SLEEP với xung đồng nhịp đưa từ bên ngoài . Timer2 : bộ đếm 8 bit chia trước ,chia sau. Hai khối compare/capture/PWM thực hiện chức năng so sánh/bắt giữ số xung và điều chế độ rộng xung. Cổng nối tiếp đồng bộ theo chuẩn giao thức SPI và I2C. Bộ thu/phát đồng bộ vạn năng URAT có phần cứng phân biệt địa chỉ. Cổng song song PSP 8bit có chan điều khiển RD,WR,CS. Có mạch phát hiện sự suy giảm điện áp nguồn, chức năng BOR. + Khả năng giao tiếp với tín hiệu tương tự. Bộ biến đổi tương tự /số 10 bit, 8 kênh và có 2 bộ so sánh tương tự. + Khối tạo điện áp chuẩn bên trong lập trình được. + Lối ra của so sánh có thể truy nhập từ bên ngoài. + Các đặc tính riêng Đảm bảo 100.000 lần ghi/xóa vào bộ nhớ chương trình flash. Đảm bảo 1.000.000 lần ghi/xóa vào bộ nhớ dữ liệu EEPROM. Bộ nhớ dữ liệu kiểu EEPROM lưu được dữ liệu trên 40 năm. Tự nạp trình dưới sự điều khiển của phần mềm bootstrap qua giao diện nối tiếp. Nạp trình nối tiếp ICSP. Điện áp nạp trình 5 V ở chế độ LVP. Bộ đếm giám sát Watchdog có mạch tạo nhịp RC bên trong , độ lập. Có cơ chế xóa chống sao chép chương trình. Chế độ SLEEP tiết kiệm năng lượng. Nhiều lựa chọn về bộ giao động tạo nhịp RC, LP, XT, HS. Chức năng gỡ rối chương trình ICD qua 2 chân. Chế tạo bằng công nghệ CMOS, tiêu thụ ít năng lượng, tốc độ cao. 2.2 Sơ đồ khối chức năng và các chân vào ra Vi điều khiển PIC có kiến trúc Harvard, trong đó CPU truy cập chương trình và dữ liệu được trên hai bus riêng biệt, nên làm tăng đáng kể băng thông so với kiến trúc Von Neumann trong đó CPU truy cập chương trình và dữ liệu trên cùng một bus. Việc tách riêng bộ nhớ chương trình và bộ nhớ dữ liệu cho phép số bit của từ lệnh có thể khác với số bit của dữ liệu. Ở PIC 16F877A, từ lệnh dài 14 bit , từ dữ liệu 8 bit. PIC 16F877A chứa một bộ ALU 8 bit và thanh ghi làm việc WR (working register). ALU là đơn vị tính toán số học và logic, nó thực hiên các phép tình số và đại số Boole trên thanh ghi làm việc WR và các thanh ghi dữ liệu. ALU có thể thực hiện các phép cộng, trừ, dịch bit và các phép toán logic. Vi điều khiển PIC 16F877A được đóng trong vỏ nhựa hai hàng 40 chân DIP, việc bố trí các lối ra mô tả trong hình10 :  Hinh10: Bố trí chân PIC 16F877A  Hình11 : Sơ đồ khối chức năng của PIC 16F877A. Hình 11 là sơ đồ khối chức năng của các chân vào ra của vi điều khiển . Ở PIC 16F877A đa số các chân vào ra được sử dụng cho nhiều chức năng . Các khối chức năng cụ thể cho từng chân vào ra được xác lập khi lập trình qua các thanh ghi chức năng thuộc các khối liên quan chân này. Tên  Chân  Loại  Mô tả chức năng   OSC1/CLKI  13  I  Dao động tinh thể lối vào dao động ngoài   OSC2/CLKO  14  O  Dao động tinh thể hoặc lối ra xung nhịp   MCLR/Vpp  1  I/P  Lối vào reset. Lối vào điện áp nạp trình Vpp   RA0/AN0  2  I/O  Vào/ ra số. Lối vào analog 0   RA1/AN1  3  I/O  Vào/ ra số. Lối vào analog 1   RA2/AN2/V-reff/CVRef  4  I/O  Vào ra số. lối vào analog 2. Lối vào điện áp chuẩn V-ref của ADC. Lối ra Vref so sánh   RA3/AN3/V+Ref  5  I/O  Vào/ ra số. Lối vào analog 3. Lối vào điện áp chuẩn V-ref của ADC   RA4/TOCKI/C1OUT  6  I/O  Vào/ra số cực máng ngỏ. Lối vào xung ngoài cho timer. Lối ra bộ so sánh 1   RA5/SS/AN4/C2OUT  7  I/O  Vào/ra số. lối vào chọn SOI. Lối vào analog 4. lối ra bộ so sánh 2   RB0/INT  33  I/O  Vào/ra số. Lối vào ngắt ngoài.   RB1  34  I/O  Vào/ra số.   RB2  35  I/O  Vào/ra số.   RB3/PGM  36  I/O  Vào/ra số. Nạp trình LVP   RB4  37  I/O  Vào/ra số   RB5  38  I/O  Vào/ra số   RB6  39  I/O  Vào/ra số. Xung nhịp nạp trình ICSP   RB7  40  I/O  Vào/ra số. Dữ nạp trình ICSP   RC0/T1OSO/T1CKI  15  I/O  Vào/ra số. Tạo dao động timer. Xung nhịp ngoài cho timer 1   RC1/T1OSI/CCP2  16  I/O  Vào/ra số. Tạo timer1. Lối vào Capture. Lối ra Compare2. Lối ra PWM2   RC2/CCP1  17  I/O  Vào/ra số. Lối vào Vào/ra số Capture1. Lối ra PWM1   RC3/SCK/SCL  18  I/O  Vào/ra số. Nhịp đồng bộ choSPI và I2C   RC4/SDI/SDA  23  I/O  Vào/ra số. Vào dữ liệu SPI. Vào/ra dữ liệu I2C   RC5/SDO  24  I/O  Vào/ra số. Ra dữ liệu SPI   RC6/TX/CK  25  I/O  Vào/ra số. Cổng truyền thông không đồng bộ. Xung nhịp truyền đồng bộ   RC7/RX/DT  26  I/O  Vào/ra số. Cổng nhận không đồng bộ. Dữ liệu đồng bộ   RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7  19 20 21 22 27 28 29 30  I/O I/O I/O I/O I/O I/O I/O I/O  Vào/ra số. Cổng song song tớ Vào/ra số. Cổng song song tớ Vào/ra số. Cổng song song tớ Vào/ra số. Cổng song song tớ Vào/ra số. Cổng song song tớ Vào/ra số. Cổng song song tớ Vào/ra số. Cổng song song tớ Vào/ra sô. Cổng song song tớ   RE0/RD/AN5  7  I/O  Vào/ra số. Điều khiển RD cổng song song   RE1/WR/AN6  8  I/O  Vào/ra số. Điều khiên WR cổng song song   RE2/CS/AN7  9  I/O  Vào/ra số. Điều khiển CS cổng song song   Vss  12,31  I/O  Đất chung cho lối vàp/ra và analog   Vdd  11,32  I/O  Cấp nguồn dương   2.3 Tổ chức bộ nhớ và các thanh ghi chức năng đặc biệt Tổ chức bộ nhớ của vi điều khiển PIC 16F877A được trình bày hình 12.  Hình 12: Tổ chức bộ nhớ Có 3 loại bộ nhớ trong vi điều khiển 16F877A: bộ nhớ chương trình, bộ nhớ dữ liệu RAM, bộ nhớ dữ liệu EEPROM. Bộ nhớ dữ liệu và bộ nhớ chương trình và bộ nhớ dữ liệu có hai bus riêng lên có thể truy nhập đồng thời. 2.3.1 bộ nhớ chương trình Flash. Vi điều khiển 16F877A có bộ nhớ chương trình flash với dung lượng 8k x 14 bit, chia thanh 4 bank. Thanh ghi của bộ đếm chương trinh PC (Program Counter ) 13 bit , đủ định nghĩa địa chỉ cho 8 k không gian bộ nhớ. Khi khởi động, bộ đếm chương trình bắt đâu từ địa chỉ 0000h, vector ngắt có địa chỉ 0004h. Bộ nhớ dữ liệu được ghi vào trong khi lập trình cho vi điều khiển qua bộ nạp trình. Do khả năng tự ghi vào bộ nhớ chương trình nên vi điều khiển 16F877A còn có thể nạp chương trình qua cổng UART dưới sự điều khiển của chương trình Bootstrap. 2.3.2 Bộ nhớ dữ liệu RAM Bộ nhớ dữ liệu được chia thanh 4 bank trong đó có các thanh ghi đa năng GPR (General Purpose Register ) và các thanh ghi chức năng đặc biệt SER(Specail Function Register). Việc lựa chon các bank được xác định bằng các bit RP1, RP0 của thanh ghi STATUS. Tổng dung lượng của các GPR RAM là 368 byte, lớn hơn nhiều so với vi điều khiển khác như ở họ 8051 chỉ có 128 byte. Các thanh ghi GPR được sử dụng để lưu giá trị các biến trong chương trình. Các thanh ghi đặc biệt SFR dùng để quản lý, điều khiển chức năng của tất cả các khối thành phần bên trong vi điều khiển. Tổ chức của các thanh ghi chức năng SFR được trình bày trên hình 13.  Hình 13: Tổ chức thanh ghi chức năng SFR 2.3.3 Bộ nhớ dữ liệu EEPROM Một bộ nhớ dữ liệu đặc biệt kiểu EEPROM dung lương 256 byte được tích hợp trong PIC 16F877A và được xem như thiết bị ngoại vi được nối vào bus dữ liệu, bộ nhớ này có thể ghi đọc trong quá trình hoạt động dưới sự điều khiển của chương trình. Bộ nhớ EEPROM thường dùng các lưu trữ các chương trình không bị thay đổi như các hằng chuẩn, các dữ liệu của người sử dụng. và không bị mất đi khi ngắt nguồn nuôi. Các thanh ghi chức năng đặc biệt EECON, EECON2, EEADR, EEADRH được sử dụng để truy cập đến bộ nhớ này. 2.4 Các cổng vào/ra 2.4.1 Cổng A Cổng A là cổng vào/ ra 6 bit, 2 hướng xem hình 14. Thanh ghi định hướng cổng là TRISA. Bít “1” trong thanh ghi TRISA đặt bộ điều khiển lối ra tương ứng về trạng thái trở kháng cao. Bít “0” trong thanh ghi TRISA đặt nội dung của thanh ghi chốt ra lên chân tương ứng. Việc đọc cổng A là đọc mức logic của các chân vào bus. Việc ghi ra cổng là ghi vào thanh ghi chốt lối ra PORTA.RA4 là lối vào trigger Schmitt và lối ra cực máng ngỏ.  Hình 14:Cổng A Chân RA4 dùng chung với lối vào xung nhịp cho timer0 khi dùng bộ đếm xung từ bên ngoài. Các chân khác của cổng A được ghép lối vào của các bộ so sánh tương tự và bộ biến đổi ADC 8 kênh. Việc lựa chọn vào cho ADC được chọn bởi bit điều khiển trên hai thanh ghi ADCON1 và ADCON2. 2.4.2 Cổng B Cổng B là cổng 8 bit vào/ra hai hướng xem hình 15. Thanh ghi định hướng cổng là TRISB. Thanh ghi chốt lối ra cổng B là PORTB. Chân RB0 có thể lựa chọn là lối vào của ngắt ngoài Extint, lối vào này lập cờ ngắt INTF khi có sườn lên hoặc sườn xuống của xung tùy thuộc vào giá trị bít INTEDG trong thanh ghi OPTION.   Hình 15: Cổng RB và RB Có 3 chân của cổng B được ghép lối với chức năng ICSP là RB6, RB7, RB3 tương ứng với lối vào PGC, PGD, LVP khi nạp trình. Mỗi chân trong cổng B được nố