Bài 05 CÁC CHUẨN TRUYỀN THÔNG THÔNG DỤNG MCLR/Vpp 31 GND VCC U2 32 Sơ đồ chân PIC16F877A RA0/AN0 RA1/AN1 RA2/AN2/Vref RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS PIC16F877A RB7/PGD RB6/PGC RB5 RB4 RB3/PGM RB2 RB1 RB0/INT 40 39 38 37 36 35 34 33 RS232: - RC6 (TxD): truyền data - RC7(RxD); nhận data - Tín hiệu chuẩn GND I2C - RC3(SCL): xung clock 10 RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL RC4/SDA RC5/SDO RC6/TX/CK RC7/RX/DT GND OSC2/CLKO RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 30 29 28 27 22 21 20 19 - RC4(SDA): data - Tín hiệu chuẩn GND SPI - RC3(SCL): xung clock - RC4(SDA): data input - RC5(SDO): data output - SS: chân tùy ý 12 15 16 17 18 23 24 25 26 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 VCC 14 OSC1/CLKIN 11 13 - Tín hiệu chuẩn GND RS232: Vi điều khiển PC Tốc độ truyền/nhận: 1200bps 2400bps 4800bps 9600bps 19200bps 38400bps 115200bps CCS - Thiết lập giao tiếp RS232 VĐK 01 TxD RxD RxD TxD VĐK 02 GND VĐK TxD Tin RxD Rout MAX232/ MAX3232 Tout Rin RxD (2) TxD (3) PC CCS GND GND (5) - Giao tiếp vi điều khiển: VDD VDD 4.7uF - 10uF VDD R1 10K 4.7uF - 10uF C2 R1 10K C2 MCLR/Vpp 1uF 31 RA0/AN0 RA1/AN1 RA2/AN2/Vref RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS PIC16F877A RB7/PGD RB1 RB5 RB4 RB3/PGM RB2 RB6/PGC RB0/INT 40 34 38 37 36 35 39 33 C6 33P 15 16 17 18 23 24 25 26 14 4M RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL RC4/SDA RC5/SDO RC6/TX/CK RC7/RX/DT GND 4M RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 30 29 28 27 22 21 20 19 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 Y1 OSC2/CLKO VCC 14 OSC1/CLKIN C11 33P 15 16 17 18 23 24 25 26 10 OSC2/CLKO RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL RC4/SDA RC5/SDO RC6/TX/CK RC7/RX/DT GND Y1 13 RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 30 29 28 27 22 21 20 19 12 RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 10 VCC OSC1/CLKIN 12 13 11 C6 33P 32 31 RA0/AN0 RA1/AN1 RA2/AN2/Vref RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS 40 34 38 37 36 35 39 33 GND 1uF RB7/PGD RB1 RB5 RB4 RB3/PGM RB2 RB6/PGC RB0/INT U2 C3 VCC MCLR/Vpp PIC16F877A RESET VCC C3 GND 32 RST U2 11 RESET RST C11 33P VDD CCS VDD VDD - Giao tiếp vi điều khiển PC: CCS - Giao tiếp vi điều khiển PC: VDD 4.7uF - 10uF VDD R1 10K C2 40 34 38 37 36 35 39 33 U4 12 11 10 C6 33P OSC1/CLKIN RE0/RD/AN5 RE1/WR/AN6 RE2/CS/AN7 Y1 15 16 17 18 23 24 25 26 RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RC2/CCP1 RC3/SCL RC4/SDA RC5/SDO RC6/TX/CK RC7/RX/DT CCS GND C11 33P 1u 1u R1IN T1IN T1OUT T2IN T2OUT C1+ C1C2+ C2V+ V- R2OUT R2IN 13 14 PC interface RD7/PSP7 RD6/PSP6 RD5/PSP5 RD4/PSP4 RD3/PSP3 RD2/PSP2 RD1/PSP1 RD0/PSP0 30 29 28 27 22 21 20 19 15 OSC2/CLKO VCC 14 4M 10 C14 R1OUT J4 C15 C16 1u VDD 1u VDD 12 13 C13 MAX232 VCC RA0/AN0 RA1/AN1 RA2/AN2/Vref RA3/AN3/Vref + RA4/TOCKI RA5/AN4/SS RB7/PGD RB1 RB5 RB4 RB3/PGM RB2 RB6/PGC RB0/INT 16 PIC16F877A GND 1uF 31 32 MCLR/Vpp GND VCC U2 C3 11 RESET RST VDD Các lệnh liên quan RS232: - Khai báo tốc độ truyền #include #FUSES NOWDT, HS, NOPUT, PROTECT, NODEBUG, NOBROWNOUT, NOLVP #use delay(clock=4000000) #use rs232(baud=1200, xmit=PIN_C6, rcv=PIN_C7) - Các hàm truuyền/nhận: Putc(byte): truyền byte Printf(“chuỗi kí tự”): truyền chuỗi kí tự Value = Getc(): đọc byte Kbhit(): kiểm tra xem có byte nhận chưa - Sử dụng ngắt nhận: #INT_RDA void Reiceive() CCS { value = getc(); } I2C: SPI: CCS