You are on page 1of 9

Bài 05

CÁC CHUẨN TRUYỀN


THÔNG THÔNG DỤNG

1
Sơ đồ chân PIC16F877A
PIC16F877A  RS232:

32

31
U2
1 40 - RC6 (TxD): truyền data

VCC

GND
MCLR/Vpp RB7/PGD 39
RB6/PGC 38
2 RB5 37 - RC7(RxD); nhận data
3 RA0/AN0 RB4 36
RA1/AN1 RB3/PGM
4
RA2/AN2/Vref - RB2
35 - Tín hiệu chuẩn GND
5 34
6 RA3/AN3/Vref + RB1 33
7 RA4/TOCKI RB0/INT  I2C
RA5/AN4/SS
- RC3(SCL): xung clock

13 8 - RC4(SDA): data
OSC1/CLKIN RE0/RD/AN5 9
RE1/WR/AN6
RE2/CS/AN7
10 - Tín hiệu chuẩn GND
14
OSC2/CLKO
30  SPI
15 RD7/PSP7 29
RC0/T1OSO/T1CKI RD6/PSP6
16
RC1/T1OSI/CCP2 RD5/PSP5
28 - RC3(SCL): xung clock
17 27
18 RC2/CCP1 RD4/PSP4 22
23 RC3/SCL RD3/PSP3 21 - RC4(SDA): data input
24 RC4/SDA RD2/PSP2 20
RC5/SDO RD1/PSP1
25 19 - RC5(SDO): data output
GND
VCC

26 RC6/TX/CK RD0/PSP0
RC7/RX/DT
- SS: chân tùy ý
11

12

- Tín hiệu chuẩn GND


2
1. RS232:

Tốc độ
truyền/nhận:
Vi điều khiển 1. 1200bps
2. 2400bps
3. 4800bps
4. 9600bps
5. 19200bps
6. 38400bps
PC 7. 115200bps

CCS

3
- Thiết lập giao tiếp RS232

TxD RxD
RxD TxD
VĐK 01 VĐK 02
GND

TxD Tin Tout RxD (2)


RxD Rout MAX232/ Rin TxD (3)
VĐK PC
MAX3232

CCS
GND GND (5)
4
- Giao tiếp giữa 2 vi điều khiển:

VDD VDD
4.7uF - 10uF 4.7uF - 10uF

R1 VDD C2 R1 VDD C2
10K 10K

RST RST
PIC16F877A PIC16F877A

32

31

32

31
U2 U2
RESET

RESET
C3 C3
1 40 1 40

VCC

GND

VCC

GND
MCLR/Vpp RB7/PGD 34 MCLR/Vpp RB7/PGD 34
1uF RB1 38 1uF RB1 38
2 RB5 37 2 RB5 37
3 RA0/AN0 RB4 36 3 RA0/AN0 RB4 36
4 RA1/AN1 RB3/PGM 35 4 RA1/AN1 RB3/PGM 35
5 RA2/AN2/Vref - RB2 39 5 RA2/AN2/Vref - RB2 39
6 RA3/AN3/Vref + RB6/PGC 33 6 RA3/AN3/Vref + RB6/PGC 33
7 RA4/TOCKI RB0/INT 7 RA4/TOCKI RB0/INT
RA5/AN4/SS RA5/AN4/SS

C6 33P C6 33P
13 8 13 8
OSC1/CLKIN RE0/RD/AN5 9 OSC1/CLKIN RE0/RD/AN5 9
Y1 RE1/WR/AN6 10 Y1 RE1/WR/AN6 10
14 RE2/CS/AN7 14 RE2/CS/AN7
4M OSC2/CLKO 4M OSC2/CLKO
30 30
C11 33P 15 RD7/PSP7 29 C11 33P 15 RD7/PSP7 29
16 RC0/T1OSO/T1CKI RD6/PSP6 28 16 RC0/T1OSO/T1CKI RD6/PSP6 28
17 RC1/T1OSI/CCP2 RD5/PSP5 27 17 RC1/T1OSI/CCP2 RD5/PSP5 27
18 RC2/CCP1 RD4/PSP4 22 18 RC2/CCP1 RD4/PSP4 22
23 RC3/SCL RD3/PSP3 21 23 RC3/SCL RD3/PSP3 21
24 RC4/SDA RD2/PSP2 20 24 RC4/SDA RD2/PSP2 20
25 RC5/SDO RD1/PSP1 19 25 RC5/SDO RD1/PSP1 19
GND

GND
VCC

VCC
26 RC6/TX/CK RD0/PSP0 26 RC6/TX/CK RD0/PSP0
RC7/RX/DT RC7/RX/DT
11

12

11

12
CCS
VDD VDD

5
- Giao tiếp giữa vi điều khiển và PC:

CCS

6
- Giao tiếp giữa vi điều khiển và PC:

VDD
4.7uF - 10uF

R1 VDD C2
10K

RST
PIC16F877A

32

31
U2
RESET

C3
1 40

GND
VCC
MCLR/Vpp RB7/PGD 34
1uF RB1 38 U4 MAX232 J4
2 RB5 37
3 RA0/AN0 RB4 36 12 13 1
4 RA1/AN1 RB3/PGM 35 R1OUT R1IN 2
5 RA2/AN2/Vref - RB2 39 11 14 3
6 RA3/AN3/Vref + RB6/PGC 33 T1IN T1OUT
7 RA4/TOCKI RB0/INT 10 7
RA5/AN4/SS T2IN T2OUT
1 9 PC interface
3 C1+ R2OUT
C6 33P C13 C14 4 C1- 8
13 8 5 C2+ R2IN
OSC1/CLKIN RE0/RD/AN5 9 1u 1u 2 C2-

GND

VCC
Y1 RE1/WR/AN6 10 6 V+
14 RE2/CS/AN7 V-
4M OSC2/CLKO

15

16
30
C11 33P 15 RD7/PSP7 29
16 RC0/T1OSO/T1CKI RD6/PSP6 28 C15
17 RC1/T1OSI/CCP2 RD5/PSP5 27 C16 VDD
18 RC2/CCP1 RD4/PSP4 22 1u
23 RC3/SCL RD3/PSP3 21 1u
24 RC4/SDA RD2/PSP2 20 VDD
25 RC5/SDO RD1/PSP1 19
GND
VCC

26 RC6/TX/CK RD0/PSP0
RC7/RX/DT
11

12

CCS VDD

7
Các lệnh liên quan RS232:

- Khai báo tốc độ truyền


#include <16F887.h>
#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 truyền/nhận:


1. Putc(byte): truyền 1 byte
2. Printf(“chuỗi kí tự”): truyền 1 chuỗi kí tự
3. Value = Getc(): đọc 1 byte
4. Kbhit(): kiểm tra xem có 1 byte đã nhận chưa

- Sử dụng ngắt nhận:


#INT_RDA
CCS
void Reiceive()
{
value = getc();
}
8
2. I2C:

3. SPI:

CCS

You might also like