TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM
KHOA ĐiỆN – ĐiỆN TỬ
ĐỀ TÀI :
ĐO NHIỆT ĐỘ DÙNG CẢM BiẾN LM35 VỚI PIC 16F877A
DÙNG NGÔN NGỮ ASSEMBLY
TRÌNH BÀY : NHÓM 9
BÁO CÁO VI XỬ LÍ 2
LƯU ĐỒ VÀ
CHƯƠNG TRÌNH
LƯU ĐỒ VÀ
CHƯƠNG TRÌNH
THANH GHI VÀ
TRÌNH BIÊN DỊCH
THANH GHI VÀ
TRÌNH BIÊN DỊCH
BỘ CHUYỂN ĐỔI
ADC
BỘ CHUYỂN ĐỔI
ADC
NGUYÊN LÝ MẠCH
VÀ MÔ PHỎNG
NGUYÊN LÝ MẠCH
VÀ MÔ PHỎNG
TỔNG QUAN
TỔNG QUAN
NỘI DUNG
NỘI DUNG
LIÊN HỆ
LIÊN HỆ
PHÂN CÔNG
NHIỆM VỤ
PHÂN CÔNG
NHIỆM VỤ
QUÁ TRÌNH HOẠT
ĐỘNG
QUÁ TRÌNH HOẠT
ĐỘNG
TỔNG KẾT RÚT KINH
NGHIỆM
TỔNG KẾT RÚT KINH
NGHIỆM
THÀNH VIÊN
THÀNH VIÊN
THÔNG TIN
CHUNG
THÔNG TIN
CHUNG
!"#$%&"'#(&")*
!"#$%&"'#(&")*
TRANG LIÊN KẾT
+
THÀNH VIÊN
THÔNG TIN NHÓM:
Trương Quang Phúc (C) 06117054
Huỳnh Minh Khả 06117029
Hà Thị Thu Hòa 06117026
Nguyễn Trí Luân 06117042
Phan Hiếu Nhân 06117049
PHÂN CÔNG NHIỆM VỤ
Nhiệm vụ của từng thành viên :
Phúc(trưởng nhóm): giới thiệu tổng quan về đề tài báo cáo , giới thiệu cấu trúc PIC 16F877A và cảm biến nhiệt
LM35.
Khả (TV): Giới thiệu sơ lược các thanh ghi cần dùng và một số cấu trúc lệnh quan trọng sử dụng trong chương
trình.
Hòa (TV): Trình bày sơ lược về bộ chuyển đổi ADC trong PIC
Luân (TV): Trình bày nguyên lý mạch ứng dụng và mô phỏng hoạt động của mạch trên Proteus .
Nhân (TV): Giải thích lưu đồ và chương trình nạp cho PIC để điều khiển mạch .
,
QUÁ TRÌNH HOẠT ĐỘNG
Giai đoạn đầu : thu thập tài liệu , nghiên cứu lý thuyết
Giai đoạn giữa : triển khai đề tài ,soạn thảo nội dung , viết báo cáo
Giai đoạn cuối : check lỗi , tập dược chuẩn bị cho mọi tình huống .
*
/01234523
678
( (
ỨNG DỤNG
9
Một số đặc tính PIC
(programmable intelligent computer)
Là CPU 8/16 bit xây dựng theo kiến trúc Havard có sửa đổi
Có bộ nhớ Flash và Rom có thể tùy chọn 256byte đến 256Kbyte.
Có các cổng xuất nhập (I/O ports)
Có timer 8/16 bit
Có các chuẩn giao tiếp nối tiếp đồng bộ /không đồng bộ
Có hỗ trợ điều khiển Ethernet
Có hỗ trợ giao tiếp CAN
:
Một số đặc tính PIC
(programmable intelligent computer)
Các bộ chuyển đổi ADC 10/12 bit
Có các bộ so sánh điện áp (Voltage comparators)
Có các khối Capture /Compare/PWM
Có hỗ trợ giao tiếp LCD
Có MSSP peripheral dùng cho giao tiếp I2C ,SP
và I2S.
Có khối điều khiển động cơ và đọc encoder
Có hỗ trợ giao tiếp USB
;
Một số đặc tính PIC
(programmable intelligent computer)
Đặc điểm thực thi tốc độ cao CPU RISC của họ VĐK PIC 16F87XA:
Gồm 35 lệnh đơn
Tất cả các lệnh là 1 chu kỳ ,chương trình con là 2 chu kỳ
Tốc độ hoạt động DC - 20MHz ngõ vào xung clock DC - 200ns chu kì lệnh
Dung lượng của bộ nhớ chương trình Flash 8Kx14 words
Dung lượng của bộ nhớ dữ liệu RAM là 368x8bytes
Dung lượng của bộ nhớ dữ liệu EEPROM 256x8bytes
Một số đặc tính PIC
(programmable intelligent computer)
Các đặc tính về tương tự:
Có 8 kênh chuyển đổi tín hiệu tương tự thành tín hiệu số 10 bit
Có reset BOR (Brown – on reset )
Khối so sánh điện áp tương tự
Hai bộ so sánh tương tự
Khối tạo điện áp chuẩn Vref tích hợp bên trong có thể lập trình
Đa hợp ngõ vào lập trình từ ngõ vào của CPU với điện áp chuẩn bên trong .
Các ngõ ra của bộ so sánh có thể truy xuất từ bên ngoài.
SƠ ĐỒ CHÂN
PIC 16F877A
(2) RA0 :xuất/ nhập số
AN0 : ngõ vào tương tự của kênh thứ 0
(3) RA1 :xuất/ nhập số
AN1:ngõ vào tương tự của kênh thứ 1
(4) RA2 :xuất/ nhập số
AN2:ngõ vào tương tự kênh thứ 2
Vref- : ngõ vào điện áp chuẩn thấp của bộ A/D
CVref:điện áp tham chiếu Vref ngõ ra bộ so sánh
(5) RA3 :xuất/ nhập số
(7)RA5: xuất/ nhập số
AN4:Ngõ vào tương tự kênh thứ 4
(8)AN5: Ngõ vào tương tự 5
(9)AN6: Ngõ vào tương tự 6
(10)AN7:Ngõ vào tương tự 7
CẤU TRÚC PIC16F877A
+
CẢM BIẾN NHIỆT ĐỘ LM35
+ Điện áp cung cấp:4V20V
+ Điện áp ngõ ra : -1V +6V
+ Dòng ngõ ra : 10mA
Gồm :
LM35 ,LM35A : -55°C 150°C
LM35C,LM35CA:
-40°C110°C
LM35D :0°C 100°C
Hoạt Động Chuyển Đổi Và Kết Nối LM35
Hoạt động chuyển đổi :
Chuyển đổi sang °C
Mức chuyển đổi tuyến tính tương ứng 10mV/°C
Điện áp hoạt động từ 4 30V
Không tuyến tính ở mức ±¼°C
Trở kháng ngõ ra 0.1Ω đối với 10mA
,
Kết Nối LM35
Thang nhiệt độ cơ bản
Toàn thang nhiệt độ
<6=6.>82>3>?@AB>C26=6DE.6>@A:F.
DE.GHDE.HDE.)
>#IJ.>KDE.I.LM23123N<DE.2>OP
>#IJ.>KDE.I.LM23123N<DE.IAQ.
<.>82>3>6>18:F..>QP678.>82>3>F-?RS6>LM23
.EK2>&-4A23.>82>3>6T.>C?U6V<3>?LW6
<.>82>3>6>18:F..>QP678.>82>3>F-?RS6>LM23
.EK2>&-4A23.>82>3>6T.>C?U6V<3>?LW6
>82>3>PCLXProgram Counter Least Signicant ByteY
*
CÁC THANH GHI LIÊN QUAN
>82>3>PIR1
>82>3>ADCON1
>82>3>ADRESH & ADRESL
<6=6.>82>3>TRISB, TRISC, TRISD
>82>3>PIE1
>82>3>.EZ23.>=XStatus RegisterY
>82>3>ADCON0
9
THANH GHI TRẠNG THÁI
Thanh ghi trạng thái (Status register) :
Có địa chỉ lần lượt là 03h, 83h,103h, 183h tại 4 bank thanh ghi.
TGTT chứa trạng thái của khối ALU, trạng thái reset và các bit chọn Bank
bộ nhớ dữ liệu.
IRP RP1 RP0 T0 PD Z DC C
R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-X R/W-X R/W-X
RP1 RP0 C
=6G.6>U2G82B.>82>3>
=6G.6>U2G82B.>82>3>
G.6[.E<2X4\236>D())]!H())]HG]!HG]Y
JB>BR.^A_P>`P.D=26T.E<2
JB>BR.^A_P>`P.D=2B>a23.E<2
G.6[.E<2X4\236>D())]!H())]HG]!HG]Y
JB>BR.^A_P>`P.D=26T.E<2
JB>BR.^A_P>`P.D=2B>a23.E<2
Chọn bank thanh ghi
G82B+X:>b!!>Y
G82BX>b9!>Y
G82BX:>b!!>Y
G82BX>b9!>Y
:
Thanh ghi PIE1 : Địa chỉ 8Ch
Là thanh ghi chứa các bit cho phép ngắt độc lập cho các ngắt ngoại vi
PSPIE RCIE TXIE SSPIE CCP1IE
TMR2IE TMR1IE
ADIE
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
G.9$6>DP>`P23c.?U63>dPDE.2>=2>/D23/D23
J6>DP>`P23c.?U63>
JB>a236>DP>`P23c.?U63>
G.9$6>DP>`P23c.?U63>dPDE.2>=2>/D23/D23
J6>DP>`P23c.?U63>
JB>a236>DP>`P23c.?U63>
TXIE
CCP1IE
TMR1IE
RCIE
SSPIE
PSPIE
TMR2IE
G.*$6>DP>`P23c.F-6>AeC2?f()
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.*$6>DP>`P23c.F-6>AeC2?f()
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.,$6>DP>`P23c.2>O24gNhA(#
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.,$6>DP>`P23c.2>O24gNhA(#
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.$6>DP>`P23c.P>=.4gNhA(#
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.$6>DP>`P23c.P>=.4gNhA(#
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.+$6>DP>`P23c.PDE.20iRP?j23F-
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.+$6>DP>`P23c.PDE.20iRP?j23F-
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.$6>DP>`P23c.
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.$6>DP>`P23c.
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.$6>DP>`P23c..LM23.>k6>123#Vl#
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.$6>DP>`P23c..LM23.>k6>123#Vl#
J6>DP>`P23c.
JB>a236>DP>`P23c.
G.$6>DP>`P23c..E<2#
J6>DP>`P23c.#.E<2
JB>a236>DP>`P23c.#.E<2
G.$6>DP>`P23c..E<2#
J6>DP>`P23c.#.E<2
JB>a236>DP>`P23c.#.E<2
THANH GHI PIE1
G.,$6[F=D23c.2>O2(#
J(#2>O2ID23
J(#2>O26>L8ID23
G.,$6[F=D23c.2>O2(#
J(#2>O2ID23
J(#2>O26>L8ID23
G.$6[F=D23c..EAe@2(#
J.EAe@2?hS678(#6m2.E023
J.EAe@2?hS678(#?ne
G.$6[F=D23c..EAe@2(#
J.EAe@2?hS678(#6m2.E023
J.EAe@2?hS678(#?ne
G.+$6[F=D23c.PDE.20iRP?j23F-
G.+$6[F=D23c.PDE.20iRP?j23F-
G.$6[F=D23c.
>R?-68P.AEo$
J.>82>3>Fc.2>pP#6TI_eE8XIT8Fq23P>n2S@SY
J.>82>3>Fc.2>pP#B>a23I_eE8
>R?-/D/=2>$
J.>k6>123/D/=2>.>82>3>#6TI_eE8
J.>k6>123/D/=2>.>82>3>#B>a23I_eE8
G.$6[F=D23c.
>R?-68P.AEo$
J.>82>3>Fc.2>pP#6TI_eE8XIT8Fq23P>n2S@SY
J.>82>3>Fc.2>pP#B>a23I_eE8
>R?-/D/=2>$
J.>k6>123/D/=2>.>82>3>#6TI_eE8
J.>k6>123/D/=2>.>82>3>#B>a23I_eE8
G.$6[F=D23c..LM23.>k6>#Vl#
J#.LM23.>k6>Vl#XIT8Fq23P>n2S@SY
J#B>a23.LM23.>k6>Vl#
G.$6[F=D23c..LM23.>k6>#Vl#
J#.LM23.>k6>Vl#XIT8Fq23P>n2S@SY
J#B>a23.LM23.>k6>Vl#
G.$[F=D23c..E<2#
J.>82>3>#?r.E<2
J.>82>3>#B>a23.E<2
G.$[F=D23c..E<2#
J.>82>3>#?r.E<2
J.>82>3>#B>a23.E<2
;
Thanh ghi PIR1 : Địa chỉ 0Ch
Là thanh ghi chứa các bit cờ cho các ngắt ngoài
PSPIE RCIE TXIE SSPIE CCP1IE
TMR2IE TMR1IE
ADIF
R/W-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-0 R/W-0
G.9$6[F=D23c.PDE.2>=2>/D23/D23?U63>
J>DZ.?-23?U6>Ds63>?LW6.>t6.>
J>DZ.?-23?U6>Ds63>B>a23I_eE8
G.9$6[F=D23c.PDE.2>=2>/D23/D23?U63>
J>DZ.?-23?U6>Ds63>?LW6.>t6.>
J>DZ.?-23?U6>Ds63>B>a23I_eE8
TXIF
CCP1IF
TMR1IF
RCIF
SSPIF
PSPIF
TMR2IF
G.*$6[F=D23c.F-6>AeC2?f()
J6>AeC2?f()?r?LW6>D<2.><2>
J6>AeC2?f()6>L8?LW6>D<2.><2>
G.*$6[F=D23c.F-6>AeC2?f()
J6>AeC2?f()?r?LW6>D<2.><2>
J6>AeC2?f()6>L8?LW6>D<2.><2>
THANH GHI PIR1
Thanh ghi ADCON0(A/D Control Register 0) :
Địa chỉ 1Fh
Điều khiển hoạt động của khối ADC.
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0
G.Sd23Aj26>D()>DZ.?-23
J6>AeC2?f()?LW6Sd23Aj2
JB>0()?LW6.c.23Aj2?C3_S6a23/AQ.iuA.>5
G.Sd23Aj26>D()>DZ.?-23
J6>AeC2?f()?LW6Sd23Aj2
JB>0()?LW6.c.23Aj2?C3_S6a23/AQ.iuA.>5
G.F=D.EZ23.>=6>AeC2?f()
J>AeC2?f()?8234v2E8
J6>AeC2?f()B>a234v2E8
G.F=D.EZ23.>=6>AeC2?f()
J>AeC2?f()?8234v2E8
J6>AeC2?f()B>a234v2E8
=6G.Nt86>U2Bu2>.LM23.t
=6G.Nt86>U2Bu2>.LM23.t
=6G.Nt86>U2IA236>AeC2?f()
=6G.Nt86>U2IA236>AeC2?f()
ADCS1
RP1 RP0
CHS1 CHS0
GO/
DONE
C
THANH GHI ADCON0
ADCS0
CHS2
ADON
ADCS0ADCS1
CHS2 CHS1 CHS0
"
)"'
ADCON1
<ADCS2>
ADCON0
<ADCS1:ADCS0>
Clock Conversion
!D/6
!D/6:
!D/6+
!E6XND6B4oEVo4wDES2.oE28N()#"/6NN8.DEY
!D/6
!/6*
!D/6*
!E6
000 Kênh 0(AN0)
u2>X(Y
u2>X(Y
u2>+X(+Y
u2>X(Y
u2>,X(,Y
u2>*X(*Y
u2>9X(9Y
ADCS1
RP1 RP0
CHS1 CHS0
C
THANH GHI ADCON1
Thanh ghi ADCON1(A/D Control Register 1) :
Có địa chỉ 9Fh
Thiết lập chức năng cho các chân của Port là các ngõ vào nhận tương tự
hoặc các chân xuất nhập IO.
R/W-0 R/W-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0
ADCS0
PCFG0
ADCS2ADFM
PCFG3 PCFG2
PCFG1
bb
G.?@AB>C2()
G.?@AB>C2()
G.Nt86>U2IA236ND6B6>D6>AeC2?f()
XR.>WPVl6=6F.()V<()d.>82>3>()"Y
G.Nt86>U2IA236ND6B6>D6>AeC2?f()
XR.>WPVl6=6F.()V<()d.>82>3>()"Y
G.Nt86>U2?p2>4Z23BR.^A_()
J82>N@P>_H()#'JxIIy
J82>N@.E=H()#'JxIIy
G.Nt86>U2?p2>4Z23BR.^A_()
J82>N@P>_H()#'JxIIy
J82>N@.E=H()#'JxIIy
PCFG<3:0> AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 Vref+ Vref- C/R
( ( ( ( ( ( ( ( )) :
( ( ( ( Eowz ( ( ( (+ 9
) ) ) ( ( ( ( ( )) ,
) ) ) ( Eowz ( ( ( (+ +
) ) ) ) ( ) ( ( )) +
) ) ) ) Eowz ) ( ( (+
{ ) ) ) ) ) ) ) ) bb bb
( ( ( ( Eowz Eowb ( ( (+ ( *
) ) ( ( ( ( ( ( )) *
) ) ( ( Eowz ( ( ( (+ ,
) ) ( ( Eowz Eowb ( ( (+ (
) ) ) ( Eowz Eowb ( ( (+ ( +
) ) ) ) Eowz Eowb ( ( (+ (
) ) ) ) ) ) ) ( ))
) ) ) ) Eowz Eowb ) ( (+ (
THANH GHI ADRESH VÀ ADRESL
(địa chỉ 1Eh,9Eh)
G.BR.^A_
G.BR.^A_
2 1 0 77
0
0 7 6 5
7
0
ADRESH ADRESL ADRESH ADRESL
10 Bit kết quả
10 Bit kết quả
Canh trái
Canh phải
ADFM=1 ADFM=0
Lưu kết quả chuyển đổi ADC
8.>82>3>2<eB>a23Fp_2>>Ld23Fd#''N|66QP?h2
>?TH4gNhA.ED23.>82>3>N<B>a23I=6?p2>
KHỐI CHUYỂN ĐỔI A/D
Mộtsốđặcđiểm:
Có 8 kênh ngõ vào,mỗi kênh là 10 bit.
Các chân điện áp thấp và cao có thể lập trình bằng phần mềm.
Có thể hoạt động khi vi điều khiển ở chế độ sleep với điều kiện chọn xung cung cấp là RC.
Được điều khiển chủ yếu bằng 4 thanh ghi ADRESH,ADRESL, ADCON0 và ADCON1.
Khi reset PIC, khối ADC tắt và hủy bỏ quá trình ADC đang chuyển đổi.
Thời gian chuyển đổi 1 bit là T
AD
. Để chuyển đổi chính xác chọn T
AD
=1.6US.
,
h2>NooP
h2>NooP
Go=0
Go=0
Chế độ
Sleep
Chế độ
Sleep
Chọn kênh ngõ vào
Chọn kênh ngõ vào
Chuyển đổi xongGo=0
ADIF=1
Chờ 2T
AD
>[
()
Chuyển đổi xong Go=0
ADIF=1
Chuyển đổi xong Go=0
ADIF=1
}2/NooPH.c.23Aj2()
}2/NooPH.c.23Aj2()
Pic được đánh
thức?
Pic được đánh
thức?
>[
()
ADON=0
ADON=0
Chờ 1 chu kì lệnh
Chờ 1 chu kì lệnh
Hủy chuyển đổi
Go=0
ADIF=1
Hủy chuyển đổi
Go=0
ADIF=1
Sleep
tắt A/D
Sleep
tắt A/D
ADCLK=RC
ADCLK=RC
Đ
S
Đ
Đ
S
S
Đ
S
S
Đ
S
ADON=0
Đ
LƯU ĐỒ HOẠT ĐỘNG CHUYỂN ĐỔI A/D
THIẾT LẬP CHUYỂN ĐỔI A/D
CácbướcthiếtlậpquátrìnhchuyểnđổiADC:
Bước 1: Thiết lập cấu hình ADC
Định cấu hình cho các chân tương tự/điện áp chuẩn và xuất/nhập số (ADCON1).
Chọn lựa kênh ngõ vào ADC (ADCON0)
Chọn lựa xung clock cho chuyển đổi ADC (ADCON0).
Mở điện cho ADC (ADCON0)
Bước 2: Thiết lập cấu hình ngắt ADC (nếu có)
Xóa bit ADIF
Set bit ADIE
Set bit GIE
Set bit PEIE
Bước 3: Chờ hết thời gian nhận giá trị thiết lập (2T
ad
)
Bước 4: Bắt đầu chuyển đổi: set bit GO/DONE
Bước 5: Chờ chuyển đổi xong
Kiểm tra liên tục bit GO/DONE về 0 hay chưa hoặc ADIF bằng 1 hay không.
Chờ ngắt adc xảy ra
Bước 6: Đọc cặp thanh ghi kết quả (ADRESH:ADRESL).
Bước 7: Thực hiện chuyển đổi kế tiếp, chuyển đến bước 1 hoặc 2 tùy theo yêu cầu.
*