Hệ thống kiểm tra sức khỏe
MỤC LỤC LỜI NÓI ĐẦU Ngay với phát triển khoa học công nghệ, hệ thống tích hợp đa chức phát triển nhiều lĩnh vực Trong lĩnh vực không gian vũ trụ cố máy tồn không gian, tham dò phân tích truyền liệu tự động cho trạm thu Trái Đất Trong lĩnh vực quân robot làm nhiều chức khác thám, sử dụng loại vũ khí, bảo vệ mục tiêu định điển hình loại máy bay không người lái Trong lĩnh vực thiết bị y tế loại robot giúp người phẫu thuật chúng điều khiển từ xa Với dẫn chứng phải xu hệ thống, thông minh, tích hợp đa chức năng, nhỏ gọn, tinh giản xu phát triển khoa học công nghệ giới May mắn nhận đề tài “Hệ thống kiểm tra sức khỏe” hội để chúng em có thời gian để tìm hiểu, thiết kế, chế tạo hệ thống tích hợp Bởi với hệ thống nhỏ gọn, thông minh, giá phù hợp hoạt động hiệu quả, có ích Đất Nước có tới 83 triệu dân cần phải kiểm tra sức khỏe thường xuyên qua góp phần nâng cao sức khỏe người Việt Vì kiến thức thời gian tìm hiểu nhiều hạn chế nên khó tránh khỏi sai sót, đồ án chưa phát huy tưởng nhóm vào mô hình Rất mong bảo, giúp đỡ Thầy giáo khoa đặc biệt giúp đỡ Thầy Duy người trực tiếp bảo chúng em thực đồ án Thành viên nhóm gồm thành viên: Nguyễn Văn Hậu, Trần Xuân Hoàng, Trịnh Quốc Hoàng, Võ Trọng Hoàng, Nguyễn Văn Luân, Vũ Văn Nghĩa, Đồng Đức Nghiệp Hà Nội ngày 01 tháng 03 năm 2014 CHƯƠNG 1: GIỚI THIỆU CHUNG 1.1 Giới thiệu chung Ngày thiết bị kiểm tra tình trạng sức khỏe cá nhân nhiệt độ chiều cao, cân nặng, nhịp tim, huyết áp ngày quan tâm phát triển với nhiều chủng loại khác mẫu giá cả, chất lương, tích hợp nhiều chức nhiều hãng công nghệ nước giới Việt Nam thiết bị tích hợp chưa quan tâm nghiên cứu phát triển nhóm chúng em phát triển đề tài nghiên cứu: “Hệ thống kiểm tra sức khỏe” Nhiệm vụ nhóm chế tạo mô hình có khả thực thu thập dự liệu tử cảm biến khác sau đưa liệu thị lên hình máy tính 1.2 Mục đích nghiên cứu Với đề tài nghiên cứu “Hệ thống kiểm tra sức khỏe” vấn đề đặt cần phải giải là: - Thiết kế hệ thống nhỏ gọn, chắn, đảm bảo tính thẩm mỹ - chức sử dụng Lập trình vi điều khiển PIC 16F877A để thu thập liệu từ cảm biến riêng biệt nhiệt độ, siêu âm, IR, huyết áp, loadcell - Lập trình vi điều khiển để giao tiếp truyền nhận liệu vi điều khiển giao tiếp I2C truyền thông qua cổng RS232 1.3 Phương pháp nghiên cứu Từ vấn đề phương pháp thiết kế phù hợp xây dựng phần thiết kế sau ghép nối, thử nghiệm sửa lỗi để thu thiết kế có kết tối ưu với phương pháp thiết kế trên, cụ thể công việc là: - Bước đầu tìm hiểu vi điều khiển PIC 16F877A cấu trúc phần cứng phần mềm, sau ghép nối với loại cảm biển siêu âm để đo chiều cao, cảm biến nhiệt độ để đo nhiệt độ, cảm biến hồng ngoại đo nhịp tim, cảm biến loadcell để đo khối lượng, cảm biến áp suất để đo huyết áp thị lên LCD - Bước hai tìm hiểu vể chuẩn giao tiếp I2C PIC 16F877A để biết cách vi điều khiển trao đổi liệu - Bước ba tìm hiểu chuẩn giao tiếp UART PIC 16F877A để truyền liệu từ vi điều khiển lên giao diện hình máy tính - Bước bốn tổng hợp, ghép lối để thu hệ thống hoàn chỉnh, sau thí nghiệm, sửa chữa để có phương án tối ưu 1.4 Phạm vi giới hạn đề tài Do thời gian, tài tầm hiểu biết nhóm chế tạo mô hình với đặc điểm sau: + Mô hình khung chế tạo đơn giản vật liệu sắt + Sử dụng cảm biến siêu âm HC-SR04, cảm biến nhiệt độ LM35, cảm biến hồng ngoại IR, cảm biến loadcell L6E 300kg, cảm biến áp suất MPXx5050 + Lập trình I2C giao tiếp vi điều khiển + Lập trình truyền thông nối tiếp RS232 CHƯƠNG 2: TỔNG QUAN HỆ THỐNG 2.1 Giới thiệu sơ lược loại cảm biến 2.1.1 Module cảm biến siêu âm HC-SR04 - Module cảm biến siêu âm HC-SR04 dùng để đo khoảng cách đến vật chắn sóng siêu âm Module có đầu thu phát sóng, khoảng cách xác định cách đo khoảng thời gian mà sóng siêu âm phát từ module truyền đến vật chắn phản hồi - Sử dụng cách truyền xung vào chân trigger module, sau chờ xung trả chân echo, độ dài xung phản hồi tương ứng với thời gian sóng siêu âm truyền không khí, từ tính khoảng cách đến vật thể chắn Hình 2.1: Cảm biến HC-SR04 - Thông số bản: + Điện áp hoạt động: 5V + Dòng cấp: 30mA, 50mA Max + Tần số: 40KHz + Khoảng cách đo xa nhất: 3m + Phát vật cản khoảng: 3cm đến 3m + Kích thước nhỏ gọn: 43mm x 20mm x 17mm - Sơ đồ chân modul cảm biến HC-SR04 có chân bao gồm chân VCC, GND, TRIGE, ECHO 2.1.2 Cảm biến nhiệt độ LM35 LM35 loại cảm biến analog, nhiệt độ xác định cách đo hiệu điện ngõ LM35, nhiệt độ thay đổi tuyến tính 10mV/1 độ C, không cần phải chỉnh sử dụng Hình 2.2: Cảm biến LM35 - Thông số bản: + Điện áp đầu vào từ 4V đến 30V + Độ phân giải điện áp đầu 10mV/oC + Độ xác cao 25oC 0.5oC + Điện áp đầu vào từ 4V đến 30V - Sơ đồ chân có chân: + Chân 1: chân nguồn + Chân 2: Chân tín hiệu Vout + Chân 3: Chân nối đất GND 2.1.3 Cảm biến khối lượng loadcell L6E 300kg - Cảm biến khối lượng loadcell L6E loại cảm biến analog, hoạt động dựa thay đổi điện áp đầu cảm biến - Thông số bản: + + + + + + Khối lượng đo lớn nhất: 300kg Cấp xác: OIML R60 C3 Điện áp biến đổi (2 ± 0.002)mV/V Điện trở đầu vào : (381 ± 4) Ω Điện trở đầu : ( 350 ± ) Ω Điện trở cách điện : ≥ 5000 (ở 50VDC) MΩ - Sơ đồ chân loadcell L6E có chân: + chân input (dây đỏ + dây đen -) + output (dây xanh +, dây trắng -) Hình 2.3: Cảm biến loadcell HL-8 2.1.4 Cảm biến hồng ngoại RPR-359F - Cảm biến hồng ngoại RPR-359F cảm biến phản xạ quang học, với phát diode GaAS phát ánh ánh sáng hồng ngoại, thu transitor quang học có độ nhạy cao - Thông số bản: + Một thấu kính nhựa dùng có độ nhạy cao + Điện áp bão hòa cực emitor colector nhỏ + Ánh sáng mạnh - Sơ đồ chân cảm biến có chân anode, chân cathode, chân colector, chân emitor Hình 2.4: Cảm biến hông ngoại RPR-359F 2.1.5 Cảm biến áp suất loại MPXx5050 - Cảm biến áp suất loại MPXx5050 hoạt động dựa hiệu ứng piezoresistive tượng thay đổi điện trở suất chất bán dẫn loại cảm biến khối silicon thiết kế cho nhiều loại ứng dụng đặc biết sử dụng loại vi điều khiển có chuyển đổi A/D mà tín hiệu đầu tín hiệu xác cao từ cảm biến tỉ lệ với áp suất tác dụng - Thông số bản: + Dải áp suất: 0- 50kPa tương ứng điện áp đầu 0.2-4.7 V + Sai số 2.5% nhiệt độ vượt qua dải 0-85oC Hình 2.5: Cảm biến áp suất MPXx5050 2.2 Tổng quan chuẩn giao tiếp I2C 2.2.1 Định nghĩa I2C tên viết tắt cụm từ Inter Intergrated Circuit-Bus giao tiếp IC với Đây chuẩn giao tiếp nối dây Dùng để giao tiếp IC hay thiết bị ngoại vi cần giao tiếp với IC hay thiết bị khác (tức giao tiếp với giới bên ngoài) Bus I2C sử dụng làm bus giao tiếp ngoại vi cho nhiều loai IC khác loại: Vi điều khiển 8051, PIC, AVR, ARM, chip nhớ RAM tĩnh (Static Ram), EEPROM, chuyển đổi tương tự số (ADC), số tương tự (DAC), IC điều khiển LED, LCD… Hình 2.6: Ví dụ I2C sử dụng vi điều khiển 2.2.2 Đặc điểm giao tiếp I2C - Một giao tiếp I2C gồm dây: Serial Data(SDA) Serial Clock (SCL) + SDA đường truyền liệu hướng, SCL đường truyền xung đồng hồ theo hướng + Khi thiết bị ngoại vi kết nối vào đường I2C chân SDA nối dây SDA bus, chân SCL nối với dây SCL Hình 2.7: Kết nối thiết bị vào Bus I2C chế độ chuẩn - Mỗi dây SDA hay SCL nối với điện áp dương nguồn cấp thông qua điện trở kéo lên (Pull up resistor) điều cần thiết chân giao tiếp I2C thiết bị ngoại vi thường dạng cực máng hở (open dranin or open collector) Giá trị điện trở khác tùy vào thiết bị chuẩn giao tiếp, thường dao động khoảng 1KΩ đến 4.7KΩ - Quy ước : + Một thiết bị hay IC kết nối với bus I2C, địa (duy nhất) để phân biệt, cấu hình thiết bị chủ (master) hay tớ (slave) Mỗi thiết bị nhận địa với quan hệ chủ/tớ tồn suốt thời gian kết nối + Trên bus I2C quyền điều khiển thuộc thiết bị chủ (master) Thiết bị chủ đóng vai trò tạo xung đồng hồ cho toàn hệ thống, thiết bị chủ/tớ giao tiếp thiết bị chủ có nhiệm vụ tạo xung đồng hồ quản lý địa thiết bị tớ suốt trình giao tiếp Thiết bị chủ giữ vai trò chủ động, thiết bị tớ giữ vai trò bị động việc giao tiếp + Mỗi thiết bị hoạt động thiết bị nhận liệu hay vừa truyền vừa nhận Hoạt động truyền hay nhận tùy thuộc vào việc thiết bị chủ (master) hay tớ (slave) 10 Hình 4.11: Khối cảm biến nhiệt độ LM35 4.2.6 Mạch cảm biến HC-SR04 Hình 4.12: Khối cảm biến siêu âm HC-SR04 - Chân VCC: chân nguồn Chân TRIGE: chân TRIGE vi điều khiển Chân ECHO: với chân ECHO vi điều khiển Chân GND nối với chân GND 4.2.7 Mạch cảm biến IR RPR-359F 36 Hình 4.13: Khối cảm biến IR RPR-359F + Chân chân 4: GND + Chân 2: Nối với emitor transistor 2N3904 Transistor đóng vai trò nhu công tắc đóng mở cảm biến + Chân 3: Nối với nguồn thông qua trở điện trở 10k tín hiệu đầu cảm biến - Trong trương hợp tín hiệu qua trình trước vào vi điều khiển xử lý + Quá trình 1: tín hiệu qua tầng thứ khuếch đại lọc nhiễu 37 Hình 4.14: Khối khuếch đại tin hiệu lọc nhiễu lần1 + Quá trình thứ 2: Sau tín hiệu khỏi trình xử lý tín hiệu tiếp tục lọc nhiễu trình thứ Hình 4.15: Khối khuếch đại tin hiệu lọc nhiễu lần 38 + Quá trình thứ ba: Tín hiệu xử lý để thu tín hiêu đầu tín hiệu số Hình 4.15: Khối thu tín hiêu số sau lọc nhiễu 4.2.8 Mạch cảm biến khối lượng L6E Cảm biến khối lượng L6E kết nối với ADC24bit HX711 Điện áp so sánh lấy chân E+ E- HX711 Khi có thay đổi trọng lượng Loadcell có thay đổi điện áp chân A+ A- HX711 đo thay đổi trả giá trị ADC 24 bit vi điều khiển xử lý 39 Hình 4.16: Khối cảm biến loadcell HX711 4.3 Code sử dụng mạch 4.3.1 Code mạch đo chịp tim //khai bao ket noi lcd #define LCD_RS_PIN PIN_D1 #define LCD_RW_PIN PIN_D2 #define LCD_ENABLE_PIN PIN_D3 #define LCD_DATA4 PIN_D4 #define LCD_DATA5 PIN_D5 #define LCD_DATA6 PIN_D6 #define LCD_DATA7 PIN_D7 // ket thuc khai bao ket noi LCD // khai bao cong tac dieu khien #include #include unsigned int8 count=0,bpm=0; #int_ext void puse_hearth_irs(void) { count++ ; } #int_timer1 void timer1_irs(void) { unsigned int16 x=0; x++; if(x==100) 40 { bpm=count; x=0; count=0; } } void main() { setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED);//setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); setup_timer_1(T1_INTERNAL|T1_DIV_BY_1); enable_interrupts(INT_TIMER1); enable_interrupts(INT_EXT_L2H); enable_interrupts(GLOBAL); // TODO: USER CODE!! while(TRUE) { delay_ms(100); lcd_init(); lcd_gotoxy(1,1); lcd_putc("Hello "); 41 delay_ms(1000); lcd_putc("\f"); lcd_gotoxy(1,1); lcd_putc("Place your"); lcd_gotoxy(1,2); lcd_putc("finger "); delay_ms(4000); lcd_putc("\f"); count=0; set_timer1(15535); lcd_gotoxy(1,1); lcd_putc("processing "); delay_ms(5500); //delay_ms(5000); lcd_putc("\f"); lcd_gotoxy(1,2); bpm=count; printf(lcd_putc,"Heart Rate: %d",bpm*12); while(input(PIN_A2)); delay_ms(500); bpm=0; } } 4.3.2 Code mạch đo nhiệt độ chiều cao #define trig pin_B1 #define echo pin_B0 //khai bao ket noi lcd 42 #define LCD_RS_PIN PIN_D1 #define LCD_RW_PIN PIN_D2 #define LCD_ENABLE_PIN PIN_D3 #define LCD_DATA4 PIN_D4 #define LCD_DATA5 PIN_D5 #define LCD_DATA6 PIN_D6 #define LCD_DATA7 PIN_D7 // ket thuc khai bao ket noi LCD #include #include void high_person(void); void temperature(void) ; void main() { setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); set_tris_b(0xfd);// cau hinh dau vao rb1 ouput, lai la input setup_adc(ADC_CLOCK_INTERNAL); // chon bo dao dong cho adc setup_adc_ports(ALL_ANALOG); // bat tat ca port a la bo chuyen doi anlanog set_adc_channel(0); // chon kenh ra0 lcd_init(); // khoi tao lcd printf(LCD_PUTC, "\f HIG-TEM"); delay_ms(2000); while(TRUE) { if(input(PIN_B4)==0) { delay_us(20); 43 if(input(PIN_B4)==0) { high_person(); } } if(input(PIN_B5)==0) { delay_us(20); if(input(PIN_B5)==0) { temperature(); } } } } void high_person(void) { float distance, time; output_high(trig); // dua chan trig len cao delay_us(20); // tao 20u output_low(trig); while(!input(ECHO)) {} ; set_timer1(0); while(input(ECHO)) time=get_timer1(); //cho cho toi chan echo len cao // bat timer {}; // cho cho toi chan echo xuong thap //doc timer distance=(time*0.028+1.093); // tinh khoang cach lcd_gotoxy(1,1); 44 lcd_putc("your high:"); lcd_gotoxy(1,2); printf(lcd_putc,"%6.3f cm",200-distance); delay_ms(1000); while(input(PIN_B5))||while(input(PIN_B4));// CHO CHO TOI KHI CONG TAC B4 HOAC B5 DC NHAN lcd_putc("\f"); } void temperature(void) { float vin0, temp; // bien dau vao vin0 =read_adc(); temp= vin0*1.95; lcd_gotoxy(1,1); lcd_putc("your temper:"); lcd_gotoxy(1,2); printf(lcd_putc,"%6.3f C ",temp); delay_ms(1000); while(input(PIN_B4))|| while(input(PIN_B5));// CHO CHO TOI KHI CONG TAC B4 HOAC B5 DC NHAN lcd_putc("\f"); } 4.3.3 Code mạch đo khối lượng //khai bao ket noi lcd #define LCD_RS_PIN PIN_D1 #define LCD_RW_PIN PIN_D2 #define LCD_ENABLE_PIN PIN_D3 #define LCD_DATA4 PIN_D4 45 #define LCD_DATA5 PIN_D5 #define LCD_DATA6 PIN_D6 #define LCD_DATA7 PIN_D7 // ket thuc khai bao ket noi LCD // khai bao chan giao tiep : Dout va SCK #define HX711_DOUT PIN_A0// input #define HX711_SCK PIN_A1// output #define Uee 4.05 // (volt) #define Weight_Max 300000 // (gam) #include #include // khai bao ham nguyen mau unsigned int32 HX711_Read(void); float Get_Weight(unsigned int32 Weight_ZeroPoint); unsigned int32 Get_ZeroWeight(void); void Delay hx711_us(void); // ket thuc khai bao ham nguyen mau void main() { unsigned int32 Zero_ADC; //float WEIGHT ; setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); set_tris_a(0xFD); // port_b_pullups(0x00); lcd_init(); delay_ms(100); 46 lcd_putc('\f'); lcd_gotoxy(1,1); lcd_putc(" load cell"); delay_ms(2000); // cho de on dinh loadCell Zero_ADC=Get_ZeroWeight(); // lay diem gram //delay_ms(100); lcd_putc('\f'); while(TRUE) { lcd_gotoxy(1,2); printf(lcd_putc,"%9.2f KG ",(float)Get_Weight(Zero_ADC)); delay_ms(2000); while(input(PIN_A2)); } } void Delay hx711_us(void) { delay_ms(2); } unsigned int32 HX711_Read(void) { unsigned int32 count; unsigned char i; while(!input(HX711_DOUT));//=1 Delay hx711_us(); 47 output_low(HX711_SCK); count=0; while(input(HX711_DOUT)); for(i=0;i[...]... liệu 25 CHƯƠNG 3: MÔ HÌNH HÓA HỆ THỐNG 3.1 Mô hình hệ thống cơ khí 3.2 Hình 3.1: Mô hình cân đo sức khỏe 1 Hộp đựng mạch điện tử và màn hình LCD 2 Trụ đỡ hộp mạch 3 Bệ đỡ (2 chiếc), nơi lắp ghép cân với thanh đo chiều cao vào trụ đỡ 4 Chân đỡ cân (4 chiếc) 5 Khung chịu lực của cân (2 chiếc) 6 Mặt cân, cũng là là vỏ của cân 7 Thanh đo chiều cao 26 3.3 Mô hình tổng quan hệ thống điều khiển giao tiếp I2C... Chứa đựng những mảng mạch điện tử điều khiển, hệ thống nút bấm và màn hình hiển thị LCD - Vật liệu: Tôn 32 - Cấu tạo: Hình hộp chữ nhật có nắp đậy - Kích thước: 30x20x10mm 4.2 Sơ đồ mạch trong đồ án Từ sơ đồ thiết kế tổng quan về hệ thống điều khiển ta thấy rằng hệ thống bao gồm 6 con vi điều khiển PIC 16F877A hoạt động theo kiểu truyền thông I2C trong hệ thống này sẽ có 1 con đóng vai trò là chủ và... ta sẽ tiếp tục tìm hiểu các thanh phần mạch cấu tao lên hệ thống 4.2.1 Mạch điều khiển trung tâm Để tiện lợi cho quá trình kết nối của hệ thống mạch điều khiển trung tâm sử dụng với vai trò là chủ và tớ, ta sẽ dùng mạch kit PIC 16F877A được thiết kế theo dạng module, sau đây ta sẽ nói rõ hơn về các thành phần của kít mà ta sẽ sử dụng trong hệ thống 33 Hình 4.7: Mạch điều khiển trung tâm Khối điều khiển... ghi dữ liệu 16 2.3 Khối điều khiển trung tâm Trong hệ thống mạch điện tử vi điều khiển trung tâm đóng vai trò là bộ não, tiếp nhận, xử lí và đưa ra thông tin cho toàn hệ thống Dựa trên yêu cầu về chức năng và tốc độ xử lí nhóm đã lựa chon vi điều khiển PIC 16F877A của hãng Microchip sản xuất, với một số chức năng và thông số cơ bản sau: - Sử dụng công nghệ tích hợp RISC CPU - Người sử dụng có thể lập... động Công nghệ CMOS FLASH/EFPRO nguồn mức thấp tốc độ cao Thiết kế hoàn toàn tĩnh Mạch chương trình nối tiếp có 2 chân Mạch xử lý đọc ghi tới bộ nhớ chương trình Dải điện thế hoạt động 2.0 đến 5.5V Nguồn điện sử dụng 25mA Dãy nhiệt độ công nghiệp và thuận lợi Công suất tiêu thụ thấp TIMER0: 8 bits của bộ định thời, bộ đếm với hệ số tỉ lệ trước TIMER1: 16 bits của bộ định thời, bộ đếm với hệ số tỉ lệ... tổng quan hệ thống điều khiển giao tiếp I2C và truyền thông nối tiếp Lm24vf LM35 PIC16F877A SCL SDA HL-8 PIC16F877A PIC16F877A HC-SR04 PIC16F877A MÀN HÌNH LCD PIC16F877A RPR-359F Hình 3.2: Tổng quan hệ thống điều khiển 27 CHƯƠNG 4: THIẾT KẾ VÀ THI CÔNG 4.1 Thiết kế cơ khí Yêu cầu của cân là phải chắc chắn, chịu được trọng tải lớn, tận dụng được những chi tiết có sẵn trên thị trường để tiết kiệm tối... việc với UART chúng ta phải quan tâm đến các thông số sau: + + + + Tốc độ Baud: thường là 9600 Số bít được dùng để truyền Data: thường là 8 bít Bit Stop 1, hay 2 thường chọn 1 Bit chẵn lẻ mục đích để kiểm tra dữ liệu truyền hoặc gửi có đúng hay không - PIC 16F877A có tất cả 5 thanh ghi cho quá trình điều khiển UART: Bao gồm 2 thanh ghi chức năng TXSTA, RCSTA, 2 thanh ghi dữ liệu RCREG và TXREG Thanh... bits của bộ định thời, bộ đếm với hệ số tỉ lệ trước, có khả năng tăng trong khi ở chế độ sleep qua xung đồng hồ được cung cấp bên ngoài TIMER2: 8 bits của bộ định thời, bộ đếm với 8 bits của hệ số tỉ lệ trước, hệ số tỉ lệ sau 17 Hình 2.18: Sơ đồ chân của PIC 16F877A + Chân 13, 14 là các chân kết nối với thạch anh tạo dao động cho chip Ta mắc thêm + + + + + + + + vào 2 tụ điện có điện dung 33pF để tăng... dao động Các chân RC3, RC4 dùng để kết nối I2C + + Các chân RC6, RC7 là chân kết nối RS232 2.3.1 Truyền thông nối tiếp UART trong PIC 16F877A - UART được viết tắt của Universal Asynchronous Receiver – Transmitter thường là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy 18 tính và thiết bị ngoại vi thông qua cổng nối tiếp Rất nhiều vi điều khiển hiện nay đã tích hợp UART... (quay vòng) - Quá trình truyền dữ liệu: Trong quá trình truyền dữ liệu cũng có hai chế độ sử dụng ngắt và Polling, tuy nhiên quá trình truyền dữ liệu lên PC không phải là thời điểm bất kỳ mà dặt dưới sự kiểm soát của chương trình cho nên người ta thưòng sử dụng kiểu polling khi cần truyền thì truyền đi 2.3.2 Giao tiếp I2C trong PIC 16F877A a Tổng quát 19 - RC3/SCK/SCL: chân truyền dân xung clock - RC4/SDI/SDA: