Đây là đồ án tốt nghiệp của mình, có đầy đủ code, mô phỏng, schematic và layout các khối và mạch nạp.
Mục Lục
PHẦN I KHẢO SÁT VI ĐIỀU KHIỂN PIC 16F877A 12
PHẦN II CÁC THÀNH PHẦN CỦA KIT THỰC TÂP PIC 16F877A . 67
+ led đơn
+ led 7 đoạn
+đèn giao thông
+led ma trận
+LCD
+ADC ( Analog to Digital)
+Đo nhiệt độ dung Lm35
+I2C
PHẦN III CÁC BÀI TẬP THỰC HÀNH 120
PHẦN VI GIẢI CÁC BÀI TẬP THỰC HÀNH 141
+BÀI 1 HIỂN THỊ TRẠNG THÁI PORT TRÊN LED ĐƠN 142
+BÀI 2 HIỂN THỊ TRẠNG THÁI CÁC PORT VÀ THAY ĐỔI THỜI GIAN DELAY 144
+BÀI 3 HIỂN THỊ NGÀY THÁNG NĂM SINH TRÊN LED 7 . 146
+BÀI 4 HIỂN THỊ ĐỒNG HỒ TRÊN LED 7 149
+BÀI 5 CHƯƠNG TRÌNH ĐÈN GIAO THÔNG 151
+BÀI 6 CHẠY CHỮ LED MA TRẬN 153
+BÀI 7 HIỂN THỊ KÝ TỰ TRÊN LCD 156
+BÀI 8 GIAO TIẾP BÀN PHÍM SỐ HEX HIỂN THỊ LCD .161
+BÀI 9 ĐIỀU CHỈNH ADC HIỂN THỊ LED ĐƠN 165
+BÀI 10 ĐO NHIỆT ĐỘ 166
PHẦN VI PHỤ LỤC 170
Phụ lục 1 : 16F877A 171
Phụ lục 2 : DEFS_16F877A . 177
180 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 8230 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Kit Thực Tập Pic 16f887a, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SƠ ĐỒ MẠCH:
L6
1
2
L5
1
2
4R2
330
1
23456789
L2
1
2
L3
1
2
VCC
L7
1
2
L1
1
2
LEDDON
12345678
L0
1
2
L4
1
2
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 124
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 3: HIỂN THỊ NGÀY THÁNG NĂM SINH TRÊN LED 7
Ngày …… Tháng…….Năm 2008
Thời Gian Thực Hiện : 4 Giờ
Sinh Viên Thực Hiện :
ĐÁNH GIÁ - ĐIỂM
¾ Kỹ thuật
¾ Thao tác
¾ Tổ chức
NHẬN XÉT
MỤC ĐÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào
VĐK và sử dụng mô hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các Port của VĐK.
• Điều khiển việc hiển thị bằng cách sử dụng LED 7 đoạn theo nhiều phương pháp
khác nhau.
• Điều khiển việc hiển thị các thông tin và số liệu bằng cách sử dụng các bộ hiển thị
dùng LED 7 đoạn.
YÊU CẨU:
• Nắm vững các tập lệnh của VĐK PIC16F877A.
• Biết cách viết các chương trình điều khiển LED 7 đoạn.
• Nắm được sơ đồ và nguyên lý hoạt động của khối LED 7 đoạn trên mô hình thí
nghiệm.
• Nắm được nguyên lý điều khiển LED 7 đoạn ở các chế độ khác nhau.
TRÌNH TỰ TIẾN HÀNH THÍ NGHIỆM:
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 6 nối Port A với chân B transistor
• Dùng dây bus 8 nối Port B với LED 7.
ỨNG DỤNG:
Sử dụng phương pháp quét thể hiện ngày, tháng , năm ( 2 số cuối) từng số chạy từ
LED 1 đến LED 6 và hiển thị đầy đủ trên 6 LED.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 125
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SƠ ĐỒ MẠCH :
Q4
A1015
g
6LED1
A B C D E F G H
VC
C
VC
C
f b af
6LED5
A B C D E F G H
VC
C
VC
C
eggc hd h
a
6LED3
A B C D E F G H
VC
C
VC
C
e
6LED4
A B C D E F G H
VC
C
VC
C
b
Q1
A1015
fc e
60PC
1
2
3
4
5
6
7
8
dd ce f
Q5
A1015
d g
60PA
1 2 3 4 5 6
e ea c g
6LED2
A B C D E F G H
VC
C
VC
C
c
aca
6RN3
4.7K
123456
7 8 9 10 11 12
h
b b
Q3
A1015
e
g
6RN2
330
1
2
3
4
5
6
7
8 9
10
11
12
13
14
15
16
fh a c
Q2
A1015
VCC
h a
d
d
b
bh
Q6
A1015
hf gb d
6LED6
A B C D E F G H
VC
C
VC
C
f
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 126
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 4: HIỂN THỊ ĐỒNG HỒ TRÊN LED 7
Ngày …… Tháng…….Năm 2008
Thời Gian Thực Hiện : 4 Giờ
Sinh Viên Thực Hiện :
ĐÁNH GIÁ - ĐIỂM
¾ Kỹ thuật
¾ Thao tác
¾ Tổ chức
NHẬN XÉT
MỤC ĐÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào
VĐK và sử dụng mô hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các Port của VĐK.
• Điều khiển việc hiển thị bằng cách sử dụng LED 7 đoạn theo nhiều phương pháp
khác nhau.
• Điều khiển việc hiển thị các thông tin và số liệu bằng cách sử dụng các bộ hiển thị
dùng LED 7 đoạn.
YÊU CẨU:
• Nắm vững các tập lệnh của VĐK PIC16F877A.
• Biết cách viết các chương trình điều khiển LED 7 đoạn.
• Nắm được sơ đồ và nguyên lý hoạt động của khối LED 7 đoạn trên mô hình thí
nghiệm.
• Nắm được nguyên lý điều khiển LED 7 đoạn ở các chế độ khác nhau.
TRÌNH TỰ TIẾN HÀNH THÍ NGHIỆM:
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 6 nối Port A với chân B transistor
• Dùng dây bus 8 nối Port B với LED 7.
ỨNG DỤNG:
Viết chương trình đồng hồ đơn giản xuất ra led 7(hai led đầu hiển thị giờ, hai led
kế hiển thị phút , hai led cuối hiển thị giây).
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 127
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SƠ ĐỒ MẠCH :
Q4
A1015
g
6LED1
A B C D E F G H
VC
C
VC
C
f b af
6LED5
A B C D E F G H
VC
C
VC
C
eggc hd h
a
6LED3
A B C D E F G H
VC
C
VC
C
e
6LED4
A B C D E F G H
VC
C
VC
C
b
Q1
A1015
fc e
60PC
1
2
3
4
5
6
7
8
dd ce f
Q5
A1015
d g
60PA
1 2 3 4 5 6
e ea c g
6LED2
A B C D E F G H
VC
C
VC
C
c
aca
6RN3
4.7K
123456
7 8 9 10 11 12
h
b b
Q3
A1015
e
g
6RN2
330
1
2
3
4
5
6
7
8 9
10
11
12
13
14
15
16
fh a c
Q2
A1015
VCC
h a
d
d
b
bh
Q6
A1015
hf gb d
6LED6
A B C D E F G H
VC
C
VC
C
f
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 128
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 5: CHƯƠNG TRÌNH ĐÈN GIAO THÔNG
Ngày …… Tháng…….Năm 2008
Thời Gian Thực Hiện : 5 Giờ
Sinh Viên Thực Hiện :
ĐÁNH GIÁ - ĐIỂM
¾ Kỹ thuật
¾ Thao tác
¾ Tổ chức
NHẬN XÉT
MỤC ĐÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào
VĐK và sử dụng mô hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các Port của VĐK.
• Điều khiển việc hiển thị bằng cách sử dụng LED đơn và LED 7 đoạn.
YÊU CẨU:
• Nắm vững các tập lệnh của VĐK PIC16F877A.
• Nắm được sơ đồ và nguyên lý hoạt động của khối mạch đèn giao thông trên mô
hình thí nghiệm.
• Nắm được nguyên lý điều khiển mạch đèn giao thông.
TRÌNH TỰ TIẾN HÀNH THÍ NGHIỆM
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 6 nối PortA với các LED đơn.
• Dùng dây bus 8 nối PortB với LED 7 đoạn phía dưới.
• Dùng dây bus 8 nối PortD với LED 7 đoạn phía trên.
ỨNG DỤNG:
Viết chương trình điều khiển mạch đèn giao thông có đếm ngược.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 129
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SƠ ĐỒ MẠCH :
H
G
F
E
D
C
B
AVC
C
VCC
PORTD
1
2
3
4
5
6
7
8D1
PORTB
1
2
3
4
5
6
7
8
330
X2 V1
330
4R2
330
1
23456789
D2
PORTA
123456
X1V2
A
B
C
D
E
F
G
H
VC
C
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 130
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 6 : CHẠY CHỮ TRÊN LED MA TRẬN
Ngày …… Tháng…….Năm 2008
Thời Gian Thực Hiện : 5 Giờ
Sinh Viên Thực Hiện :
ĐÁNH GIÁ - ĐIỂM
¾ Kỹ thuật
¾ Thao tác
¾ Tổ chức
NHẬN XÉT
MỤC ĐÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào
VĐK và sử dụng mô hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các Port của VĐK.
• Điều khiển việc hiển thị bằng cách sử dụng LED ma trận.
• Ứng dụng thực hiện việc hiển thị các thông tin tĩnh và động trên LED ma trận
dạng quang báo.
YÊU CẨU:
• Nắm vững các tập lệnh của VĐK PIC16F877A.
• Biết cách viết các chương trình điều khiển LED ma trận ở các chế độ khác nhau.
• Nắm được sơ đồ và nguyên lý hoạt động của khối LED ma trận trên mô hình thí
nghiệm.
• Nắm được nguyên lý điều khiển LED ma trận ở các chế độ khác nhau.
• Biết cách viết chương trình quang báo để hiển thị các thông tin được yêu cầu
(thông tin dạng tĩnh và dạng động).
TRÌNH TỰ TIẾN HÀNH THÍ NGHIỆM
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 8 nối PortB với hàng của Led Ma Trận.
• Dùng dây bus 8 nối PortC với cột của Led Ma Trận 1.
• Dùng dây bus 8 nối PortD với cột Led Ma Trận 2.
ỨNG DỤNG:
Viết chương trình chạy chữ “ KIT THUC TAP PIC KHOA DIEN TU – TIN
HOC ”.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 131
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SƠ ĐỒ MẠCH :
h1
h3
b14
h5
c6
c16
b2
h6
c1
Q5
A1015
c2
h7
c6
MTRAN2
16
15
14
13
12
11
10
987
6
5
4
3
2 1
b8
Q14
A1015
b3
b12
c11
c11
9RN3
330
1
2
3
4
5
6
7
8 9
10
11
12
13
14
15
16
b4
h3
90PC
1
2
3
4
5
6
7
8
Q6
A1015
Q11
A1015
90PB
1
2
3
4
5
6
7
8
c16
b10
h2
Q12
A1015
c2
h1
Q9
A1015
c15
h6
b16
VCC
c5
c10
c12
h1
h4
b13
c7
Q13
A1015
b4
c8
b11Q10
A1015
b1
h7
Q15
A1015
b6
h8
c3
Q16
A1015
b11
h4
b3
h2
b9
b15
c9
c13
MTRAN1
16
15
14
13
12
11
10
987
6
5
4
3
2 1
c14
b15
c8
b5
9RN2
4k7
1
2
3
4
5
6
7
8 9
10
11
12
13
14
15
16
Q3
A1015
b10
h8
h6
b1
b12
c1 c4
Q4
A1015
h4
c4
90PD
1
2
3
4
5
6
7
8
b14
b7
b16
Q2
A1015
c7
Q7
A1015
Q8
A1015
c13
b6
c9
Q1
A1015
c14
h2
h5
h3
b9
c5
b8
h5
9RN
4k7
1
2
3
4
5
6
7
8 9
10
11
12
13
14
15
16
h8
b13
b2
c3
VCC
c15
b5
b7
c12
c10
h7
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 132
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 7: HIỂN THỊ KÍ TỰ TRÊN LCD
Ngày …… Tháng…….Năm 2008
Thời Gian Thực Hiện : 5 Giờ
Sinh Viên Thực Hiện :
ĐÁNH GIÁ - ĐIỂM
¾ Kỹ thuật
¾ Thao tác
¾ Tổ chức
NHẬN XÉT
MỤC ĐÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào
VĐK và sử dụng mô hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các Port của VĐK.
• Khảo sát nguyên lý hoạt động và nguyên lý điều khiển LCD.
• Điều khiển để hiển thị các thông tin trên màn hình tinh thể lỏng LCD ( loại 2 hàng
x 16 ký tự).
YÊU CẨU:
• Nắm vững các tập lệnh của VĐK PIC16F877A.
• Biết cách viết các chương trình điều khiển LCD.
• Nắm được sơ đồ và nguyên lý hoạt động của khối LCD trên mô hình thí nghiệm.
• Nắm được nguyên lý và các kỹ thuật điều khiển để hiển thị các thông tin trên
LCD.
• Biết cách viết các chương trình ứng dụng để hiển thị các dạng thông tin khác nhau
trên LCD tùy theo nhu cầu sử dụng.
TRÌNH TỰ TIẾN HÀNH THÍ NGHIỆM
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 3 nối PortE với RS,RW,E ( RS = RE0, RW = RE1, E = RE2 )
• Dùng dây bus 8 nối PortB với D0 đến D7.
ỨNG DỤNG:
Viết chương trình xuất dữ liệu lên LCD
Line 1 : “ DO AN TOT NGHIEP “
Line 2 : “ KIT THUC TAP PIC 16F877A”
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 133
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SƠ ĐỒ MẠCH :
J3
CON8
1
2
3
4
5
6
7
8
J4
CON5
1
2
3
4
5
3VR
10K
1
3
2
VSS
VDD
V0
RS
R/W
E
A
K
D0
D1
D2
D3
D4
D5
D6
D7
LCD
LCD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
VCC
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 134
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 8: GIAO TIẾP BÀN PHÍM SỐ HEX HIỂN THỊ LCD
Ngày …… Tháng…….Năm 2008
Thời Gian Thực Hiện : 5 Giờ
Sinh Viên Thực Hiện :
ĐÁNH GIÁ - ĐIỂM
¾ Kỹ thuật
¾ Thao tác
¾ Tổ chức
NHẬN XÉT
MỤC ĐÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào
VĐK và sử dụng mô hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các Port của VĐK.
• Điều khiển thiết bị ngoại vi bằng bàn phím (bàn phím thiết kế theo kiểu ma trận).
• Trình bày kỹ thuật quét phím cho dạng bàn phím ma trận 16 phím ( 4 hàng x 4
cột).
• Trình bày một số ứng dụng trong kỹ thuật điều khiển bàn phím.
YÊU CẨU:
• Nắm vững các tập lệnh của VĐK PIC16F877A.
• Biết cách viết các chương trình điều khiển bàn phím ma trận.
• Nắm được sơ đồ và nguyên lý hoạt động của khối bàn phím ma trận trên mô hình
thí nghiệm.
• Nắm được nguyên lý và kỹ thuật quét phím cho các dạng bàn phím ma trận.
• Biết cách viết các chương trình ứng dụng có sử dụng bàn phím ma trận để điều
khiển các thiết bị ngoại vi khác nhau.
TRÌNH TỰ TIẾN HÀNH THÍ NGHIỆM
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 3 nối PortE với RS, RW, E ( RS = RE0, RW = RE1, E = RE2 )
• Dùng dây bus 8 nối PortB với D0 đến D7
• Dùng dây bus 8 nối PortD với bàn phím số hex
ỨNG DỤNG:
Viết chương trình mỗi khi có phím nhấn thì hiển thị số đó lên LCD.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 135
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SƠ ĐỒ MẠCH :
SW2
VCC
R4
R
VCC
SW4
1R47
100
R5
R
R6
R
SW3
SW10
SW13
1DX
1Y1
VCC
1C8
33p
1C9
33p
1RS
1C7
104
SW14
R7
10k
SW8
SW15
R6
R
SW1
U1
lcd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1R46
10K
SW6
SW1
SW5 SW7
1U1
PIC16F877A
15
16
17
18
23
24 25
26
31
12
1
13
11
32
2
3
4
5
6
7
33
34
35
36
37
38
39
40
19
20
21
22
27
28
29
30
8
9
10
14
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL
RC4/SDI/SDA
RC5/SDO RC6/TX/CK
RC7/RX/DT
GND
GND
MCLR/VPP
OSC1/CLKI
VDD
VDD
RA0/AN0
RA1/AN1
RA2/AN2/VRef -/CVRef
RA3/AN3/VRef +
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
RE0/RD/AN5
RE1/WR/AN6
RE2/CSAN7
OSC2/CLKO
SW11
SW12
VCC
SW9
VCC
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 136
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 9: ĐIỀU CHỈNH ADC HIỂN THỊ LED ĐƠN
Ngày …… Tháng…….Năm 2008
Thời Gian Thực Hiện : 5 Giờ
Sinh Viên Thực Hiện :
ĐÁNH GIÁ - ĐIỂM
¾ Kỹ thuật
¾ Thao tác
¾ Tổ chức
NHẬN XÉT
MỤC ĐÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào
VĐK và sử dụng mô hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các Port của VĐK.
• Giả lập tín hiệu tương tự cung cấp cho khối ADC.
YÊU CẨU:
• Nắm vững các tập lệnh của VĐK PIC16F877A.
• Biết cách viết các chương trình điều khiển ADC.
• Nắm được sơ đồ và nguyên lý hoạt động của khối ADC trên mô hình thí nghiệm.
TRÌNH TỰ TIẾN HÀNH THÍ NGHIỆM:
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 2 nối khối ADC với PortA.0 (chân AN0).
• Dùng dây bus 8 nối PortB với LED đơn.
ỨNG DỤNG:
Tạo mức điện áp thay đổi liên tục từ 0V đến 5V cho VĐK xử lý sau đó hiển thị ra
LED đơn.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 137
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SƠ ĐỒ MẠCH :
1R47
1001C7
104
1C9
33p
1Y1
1C8
33p
VR 10K
L5
12
VCC
1U1
PIC16F877A
15
16
17
18 23
24
25
26
31
12
1
13
11
32
2
3
4
5
6
7
33
34
35
36
37
38
39
40
19
20 21
22
27
28
29
30
8
9
10
14
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
RC2/CCP1
RC3/SCK/SCL RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
GND
GND
MCLR/VPP
OSC1/CLKI
VDD
VDD
RA0/AN0
RA1/AN1
RA2/AN2/VRef -/CVRef
RA3/AN3/VRef +
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD
RD0/PSP0
RD1/PSP1 RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
RE0/RD/AN5
RE1/WR/AN6
RE2/CSAN7
OSC2/CLKO
L7
12
L0
12
L4
12
L2
12
1RS
1R46
10K
VCC1DX
4R2
330
1
2
3
4
5
6
7
8
9
L6
12
VCC
VCC
L1
12
L3
12
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 138
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 10: ĐO NHIỆT ĐỘ DÙNG LM35
Ngày …… Tháng…….Năm 2008
Thời Gian Thực Hiện : 5 Giờ
Sinh Viên Thực Hiện :
ĐÁNH GIÁ - ĐIỂM
¾ Kỹ thuật
¾ Thao tác
¾ Tổ chức
NHẬN XÉT
MỤC ĐÍCH:
• Thực hành lập trình ứng dụng trên máy tính, biên dịch chương trình, nạp vào
VĐK và sử dụng mô hình thí nghiệm để kiểm chứng.
• Điều khiển thiết bị ngoại vi bằng các Port của VĐK.
• Đo nhiệt độ môi trương và khống chế nhiệt độ bằng VĐK.
YÊU CẨU:
• Nắm vững các tập lệnh của VĐK PIC16F877A.
• Biết cách viết các chương trình ứng dụng có sử dụng LM35 để điều khiển các
thiết bị ngoại vi khác nhau.
• Nắm được sơ đồ và nguyên lý hoạt động của khối đo nhiệt độ trên mô hình thí
nghiệm.
• Nắm được nguyên lý nguyên lý hoạt động của LM35.
TRÌNH TỰ TIẾN HÀNH THÍ NGHIỆM
• Tắt nguồn cấp cho mô hình thí nghiệm.
• Dùng dây bus 2 nối chân 2 của LM35 với PortA.0 (chân AN0).
• Dùng dây bus 3 nối PortE với RS,RW,E ( RS = RE0, RW = RE1, E = RE2 )
• Dùng dây bus 8 nối PortB với D0 đến D7.
ỨNG DỤNG:
Viết chương trình hiển thị nhiệt độ trên LCD.
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 139
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
SƠ ĐỒ MẠCH:
VCC
J2
CON1
1
U1403
LM35
1
2
3
VDD
VOUT
GND
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 140
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
PHẦN IV
GIẢI CÁC BÀI TẬP THỰC HÀNH
¾ BÀI 1 : HIỂN THỊ TRẠNG THÁI PORT TRÊN LED ĐƠN.
¾ BÀI 2 : HIỂN THỊ TRẠNG THÁI PORT TRÊN LED
VÀ THAY ĐỔI THỜI GIAN DELAY
¾ BÀI 3: HIỂN THỊ NGÀY THÁNG NĂM SINH TRÊN LED 7
¾ BÀI 4: HIỂN THỊ ĐỒNG HỒ TRÊN LED 7
¾ BÀI 5 : CHƯƠNG TRÌNH ĐÈN GIAO THÔNG
¾ BÀI 6: CHẠY CHỮ TRÊN LED MA TRẬN
¾ BÀI 7 : HIỂN THỊ KÍ TỰ TRÊN LCD
¾ BÀI 8 : GIAO TIẾP BÀN PHÍM SỐ HEX HIỂN THỊ LCD
¾ BÀI 9 : ĐIỀU CHỈNH ADC HIỂN THỊ LED ĐƠN
¾ BÀI 10: ĐỘ NHIỆT ĐỘ DÙNG LM35
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 141
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 1 : HIỂN THỊ TRẠNG THÁI PORT TRÊN LED ĐƠN
//***********CHUONG TRINH LED DON **********
//***************XUAT RA PORTB ***************
//***********************************************
#include
#fuses nowdt,noprotect,nolvp,xt,put
#use delay(clock=4000000)
#use fast_io(b)
void main()
{
set_tris_b(0);
output_b(0);
while(true)
{
output_b(0b11111110);
delay_ms(250);
output_b(0b11111101);
delay_ms(250);
output_b(0b11111011);
delay_ms(250);
output_b(0b11110111);
delay_ms(250);
output_b(0b11101111);
delay_ms(250);
output_b(0b11011111);
delay_ms(250);
output_b(0b10111111);
delay_ms(250);
output_b(0b01111111);
delay_ms(250);
output_b(0b10111111);
delay_ms(250);
output_b(0b11011111);
delay_ms(250);
output_b(0b11101111);
delay_ms(250);
output_b(0b11110111);
delay_ms(250);
output_b(0b11110111);
delay_ms(250);
output_b(0b11111011);
delay_ms(250);
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 142
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
output_b(0b11111101);
delay_ms(250);
output_b(0b11111110);
delay_ms(250);
output_b(0b01111110);
delay_ms(250);
output_b(0b10111101);
delay_ms(250);
output_b(0b11011011);
delay_ms(250);
output_b(0b11100111);
delay_ms(250);
output_b(0b11011011);
delay_ms(250);
output_b(0b10111101);
delay_ms(250);
output_b(0b01111110);
delay_ms(250);
output_b(0b11111111);
output_b(0b00000000);
}
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 143
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 2 : HIỂN THỊ TRẠNG THÁI PORT TRÊN LED
VÀ THAY ĐỔI THỜI GIAN DELAY
//********CHUONG TRINH LED DON******
//**********CO THAY DOI DELAY*********
//*********XUAT DU LIEU RA PORTC*****
//***************************************
#include
#fuses XT,NOWDT
#use delay(clock = 4000000)
#use fast_io(c)
int a=300;
int i;
void main()
{
set_tris_c(0);
output_c(255);
while (true)
{
for(i=10;i>=1;i--)
{
output_c(0b11111110);
delay_ms(a);
output_c(0b11111100);
delay_ms(a);
output_c(0b11111000);
delay_ms(a);
output_c(0b11110000);
delay_ms(a);
output_c(0b11100000);
delay_ms(a);
output_c(0b11000000);
delay_ms(a);
output_c(0b10000000);
delay_ms(a);
output_c(0x00);
delay_ms(a);
a=a-30;
}
a=300;
for(i=10;i>=1;i--)
{
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 144
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
output_c(0b01111111);
delay_ms(a);
output_c(0b00111111);
delay_ms(a);
output_c(0b00011111);
delay_ms(a);
output_c(0b00001111);
delay_ms(a);
output_c(0b00000111);
delay_ms(a);
output_c(0b00000011);
delay_ms(a);
output_c(0b00000001);
delay_ms(a);
output_c(0x00);
delay_ms(a);
a=a-30;
}
a=300;
for(i=10;i>=1;i--)
{
output_c(0b01010101);
delay_ms(a);
output_c(0b10101010);
delay_ms(a);
a=a-30;
}
}
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 145
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 3: HIỂN THỊ NGÀY THÁNG NĂM SINH TRÊN LED 7
//********CHUONG TRINH LED 7***********
//*****PORTA QUET, PORTB DU LIEU*******
//*************************************
#include
#fuses xt,nowdt
#use delay (clock =4000000)
#use fast_io(a)
#use fast_io(b)
int so[] =
{255,255,255,255,255,255,192,144,249,192,192,128,255,255,255,255,255,
255};
int a,b,c,d=1,e,f;
void main()
{
set_tris_b(0);
set_tris_a(0);
while (true)
{
a=0;
//*****kieu_1, nhap nhay 5 lan*****
while(a<5)
{
for (b=0;b<=150;b++)
{
d=1;
for (c=0;c<=5;c++)
{
e=63-d;
output_b(so[c+6]);
output_a(e);
delay_us(500);
output_b(255);
d=d*2;
}
}
output_b(255);
delay_ms(300);
a++;
}
//*****kieu_2; dich so sang trai*****
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 146
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
a=0;
f=0;
while(a<13)
{
for (b=0;b<=200;b++)
{
d=1;
for (c=0;c<=5;c++)
{
e=63-d;
output_b(so[c+f]);
output_a(e);
delay_us(500);
output_b(255);
d=d*2;
}
}
a++;
f++;
}
output_b(255);
delay_ms(300);
//*****kieu_3; nhap nhay 3 lan*****
a=0;
while(a<5)
{
for (b=0;b<=150;b++)
{
d=1;
for (c=0;c<=5;c++)
{
e=63-d;
output_b(so[c+6]);
output_a(e);
delay_us(500);
output_b(255);
d=d*2;
}
}
output_b(255);
delay_ms(300);
a++;
}
//******kieu_3; dich so sang phai*****
a=0;
f=12;
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 147
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
while(a<13)
{
for (b=0;b<=200;b++)
{
d=1;
for (c=0;c<=5;c++)
{
e=63-d;
output_b(so[c+f]);
output_a(e);
delay_us(500);
output_b(255);
d=d*2;
}
}
a++;
f--;
}
}
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 148
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 4: HIỂN THỊ ĐỒNG HỒ TRÊN LED 7
//***********CHUONG TRINH DONG HO**********
//*************HIEN THI TREN LED 7*************
//*********QUET PORTA, DU LIEU PORTC*********
//***********************************************
#include
#use delay (clock=4000000)
#fuses xt,nowdt
#use fast_io(a)
#use fast_io( b)
int a,b,c,d,e,f,g,h;
int const so[]={64,121,36,48,25,18,2,120,0,16};
void main ()
{set_tris_b(0);
set_tris_a(0);
while(true)
{
for (a=0;a<=2;a++)//h
{
for (b=0;b<=h;b++)//h
{
for (c=0;c<=5;c++)//m
{
for (d=0;d<=9;d++)//m
{
for (e=0;e<=5;e++)//s
{
for (f=0;f<=9;f++)//s
{
for (g=0;g<=100;g++)
{
output_b(so[f]);
output_a(0b011111);
delay_us(1500);
output_b(255);
output_b(so[e]);
output_a(0b101111);
delay_us(1500);
output_b(255);
output_b(so[d]);
output_a(0b110111);
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 149
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
delay_us(1500);
output_b(255);
output_b(so[c]);
output_a(0b111011);
delay_us(1500);
output_b(255);
output_b(so[b]);
output_a(0b111101);
delay_us(1500);
output_b(255);
output_b(so[a]);
output_a(0b111110);
delay_us(1500);
output_b(255);
if (a==2)
h=3;
else
h=9;
}
}
}
}
}
}
}
}
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 150
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 5 : CHƯƠNG TRÌNH ĐÈN GIAO THÔNG
//******CHUONG TRINH DEN GIAO THONG ********
//******QUET PORTA, DU LIEU RTB,PORTD********
//*************************************************
#include
#fuses NOWDT,XT
#use delay(clock=4000000)
#use fast_io(b)
#use fast_io(A)
#use fast_io(d)
int8 i;
int const led_tren[]={0b00001001,0b10011111,0b00110001,
0b00010101,0b10000111 ,0b01000101,0b01000001,
0b00011111,0b00000001,0b00000101};
int const led_duoi[]={0b00001100,0b11001111,0b10011000,
0b10001010,0b01001011,0b00101010,0b00101000,
0b10001111,0b00001000,0b00001010};
void main ()
{ set_tris_A(0);output_A(255);
set_tris_b(0);output_b(255);
set_tris_d(0);output_d(255);
while(true)
{
output_a(0b11011011);
for (i=9;i>=3;i--)
{
output_b(led_duoi[i-3]);
output_d(led_tren[i]);
delay_ms(1500);
output_b(255);
output_d(255);
} //xanh1 + do2
output_a(0b11011101);
for (i=3;i>=1;i--)
{
output_b(led_duoi[i-1]);
output_d(led_tren[i-1]);
delay_ms(1500);
output_b(255);
output_d(255);
} //vang1 + do2
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 151
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
if (i=0)
{
i=9;
}
output_a(0b11110110);
for (i=9;i>=3;i--)
{
output_b(led_duoi[i]);
output_d(led_tren[i-3]);
delay_ms(1500);
output_b(255);
output_d(255);
} //xanh2 + do1
output_a(0b11101110);
for (i=3;i>=1;i--)
{
output_b(led_duoi[i-1]);
output_d(led_tren[i-1]);
delay_ms(1500);
output_b(255);
output_d(255);
} //vang2 + do1
}
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 152
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 6: CHẠY CHỮ TRÊN LED MA TRẬN
//******CHAY CHU TREN LED MA TRAN*******
//***************PORTB DU LIEU**************
//************PORTD,PORTC QUET*************
#include
#fuses xt,nowdt
#use delay(clock = 4000000)
#use fast_io(c)
#use fast_io(b)
#use fast_io(d)
int16 i,j,a=0,b=0,c=1,d=0,e=1,f=0;
int8 const kytu[] = {
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF
0XE1,0XDE,0XDE,0XED,0XFF, //CHU C
0XF0,0XEB,0XDB,0XEB,0XF0,0XFF //CHU A
0XE1,0XDE,0XDE,0XE1,0XFF //CHU O
0XFF,0XFF,0XFF,0XFF
0XDF,0XDF,0XC0,0XDF,0XDF,0XFF //CHU T
0XC0,0XF7,0XF7,0XC0,0XFF //CHU H
0XF0,0XEB,0XDB,0XEB,0XF0,0XFF //CHU A
0XC0,0XEF,0XF7,0XC0,0XFF //CHU N
0XE1,0XDE,0XDA,0XC8,0XFB,0XFF //CHU G
0XFF,0XFF,0XFF,0XFF
0XC0,0XD6,0XD6,0XE9,0XFF //CHU B
0XF0,0XEB,0XDB,0XEB,0XF0,0XFF //CHU A
0XC0,0XEF,0XF7,0XC0,0XFF //CHU N
0XFF,0XFF,0XFF,0XFF
0XC0,0XF7,0XF7,0XC0,0XFF //CHU H
0XC1,0XFE,0XFE,0XC1,0XFF // CHU U
0XC0,0XEF,0XF7,0XC0,0XFF //CHU N
0XE1,0XDE,0XDA,0XC8,0XFB,0XFF // CHU G
0XFF,0XFF,0XFF,0XFF
0XE1,0XDE,0XDE,0XED,0XFF, //CHU C
0XF0,0XEB,0XDB,0XEB,0XF0,0XFF //CHU A
0XFF,0XFF,0XFF,0XFF
0XC0,0XEF,0XF7,0XEF,0XC0,0XFF //CHU M
0XF0,0XEB,0XDB,0XEB,0XF0,0XFF //CHU A
0XC1,0XFE,0XFE,0XC1,0XFF //CHU U
0XFF,0XFF,0XFF,0XFF
0XCE,0XF5,0XFB,0XF5,0XCE,0XFF //CHU X
0XF0,0XEB,0XDB,0XEB,0XF0,0XFF //CHU A
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 153
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
0XC0,0XEF,0XF7,0XC0,0XFF //CHU N
0XC0,0XF7,0XF7,0XC0,0XFF //CHU H
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF};
void hienthi();
void main()
{
set_tris_b(0); output_b(0);
set_tris_d(0);output_d(0);
set_tris_c(0);output_c(0);
while (true)
{
for (i =0;i<17*10;i++)
{hienthi();}
if (b==170)
b=0;
else
b++;
}
}
void hienthi()
{ e=255-c;
f=255-d;
output_b(kytu[a]);
output_d(e);
output_c(f);
c=c*2;
d=d*2;
if (c>=1)
d=0;
if (c==256)
{
c=0;
d=1;
}
if (d>=1)
c=0;
if (d==256)
{
d=0;
c=1;
a=b;
}
if (a==170)
a=0;
else
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 154
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
a++;
delay_us(1500);
output_d(255);
output_c(255);
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 155
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 7 : HIỂN THỊ KÍ TỰ TRÊN LCD
//*********CHUONG TRINH CHAY CHU TREN LCD*********
//*******PORTB XUAT DU LIEU, PORTD,PORTC QUET******
//********************************************************
#include
#include
#fuses XT,NOWDT
#use delay(clock=4000000)
#define RS RE0
#define RW RE1
#define E RE2
#define LCD PORTB
const unsigned char line1[]={'D','O',' ','A','N'
,' ','T','O','T',' ', 'N','G','H','I','E','P','#'};
const unsigned char line2[]={'K','I','T',' ','T','H','U','C'
,' ','T','A','P', ' ','P','I','C',' ', '1','6','F','8','7','7','A','#'};
const unsigned char line3[]={' ',' ','K','H','O','A'
,' ','D','T',' ','-',' ','T','H','#'};
const unsigned char line4[]={' ',' ','G','V','H','D',':'
,' ','L','E',' ','D','I','N','H',' ','K','H','A','#'} ;
const unsigned char line5[]={ 'S','V',' ','T','H','U','C'
,' ','H','I','E','N','#'};
const unsigned char line6[]={'H','A',' ','X','U','A','N'
,' ','B','I','N','H',' ','&'} ;
const unsigned char line7[]={'V','U',' ,'T','H','A','N','H'
,' ','H','U','N','G','#'};
/**************************/
void command(void)
{
RS = 0; // GHI LENH
RW = 0;
E = 1;
E = 0;
delay_ms(6);
}
/**************************/
void send(void)
{
RS = 1;// GHI DU LIEU
RW = 0;
E = 1;
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 156
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
E = 0;
delay_ms(6);
}
/*************************/
void main(void)
{
while(true)
{ int i = 0,y=0,k=0,z=0,a=0,b=0,c=0,d=0,e=0,f=0;
set_tris_B(0);
set_tris_E(0);
delay_ms(100);
LCD = 0x38;
command();
LCD = 0x0C;
command();
LCD = 0x80;
command();
while (line1[y]!='#')
{
LCD=line1[y];
send();
delay_ms(100);
y++;
}
lcd=0xC0;
command();
while(i<16)
{
lcd=line2[i];
send();
i++;
delay_ms(200);
}
i=2;
while (line2[z]!='#')
{
LCD = 0x38;
command();
LCD = 0x0C;
command();
LCD = 0x80;
command();
y=0;
while (line1[y]!='#')
{
lcd=line1[y];
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 157
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
send();
y++;
}
lcd=0xc0;
command();
k=i+16;
for(z=i;z<k;z++)
{
lcd=line2[z];
send();
}
delay_ms(100);
i++;
delay_ms(500);
lcd=0x01;
command();
LCD = 0x82;
command();
}
while (line3[d]!='#')
{
LCD=line3[d];
send();
delay_ms(100);
d++;
}
i=0;
while (line4[e]!='#')
{
LCD = 0x80;
command();
a=0;
while (line3[d]!='#')
{
lcd=line3[d];
send();
d++;
}
lcd=0xc0;
command();
k=i+16;
for(e=i;e<k;e++)
{
lcd=line4[e];
send();}
delay_ms(100);
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 158
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
i++;
delay_ms(500);
}
lcd=0x01;
command();
lcd=0x0e;
command();
LCD = 0x82;
command();
while (line5[a]!='#')
{
LCD=line5[a];
send();
delay_ms(100);
a++;
}
lcd=0xC2;
command();
while(b<12)
{
lcd=line6[b];
send();
b++;
delay_ms(100);
}
lcd=0x01;
command();
lcd=0x38;
command();
LCD = 0x0C;
command();
LCD = 0x88;
command();
lcd=line6[b+1];
send();
delay_ms(200);
lcd=0x38;
command();
LCD = 0x0C;
command();
lcd=0xc2;
command();
while (line7[c]!='#')
{
LCD=line7[c];
send();
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 159
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
delay_ms(200);
c++;
}
delay_ms(500);
lcd=0x01;
command();
}
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 160
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 8 : GIAO TIẾP BÀN PHÍM SỐ HEX HIỂN THỊ LCD
// ******GIAO TIEP BAN PHIM VOI LCD******
// *********RS,RW,E POTRE*****************
// ***********LCD PORT B******************
// **********KEYPAD PORT D***************
//*****************************************
#include "16F877A.h"
#include
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#byte portD=0x08
#byte portB=0x06
#byte portE=0x09
const unsigned char dig[]= {'X','I','N',' ','N','H','A','P',' ','S','O','#'};
int8 i,j,a=0;
void lenh(void)
{
output_low(pin_e0);
output_low(pin_e1);
output_high(pin_e2);
output_low(pin_e2);
delay_ms(6);
}
void du_lieu(void)
{
output_high(pin_e0);
output_low(pin_e1);
output_high(pin_e2);
output_low(pin_e2);
delay_ms(6);
}
void main(void)
{
output_b(0x38);
lenh();
output_b(0x0E);
lenh();
output_b(0x80);
lenh();
While (dig[a]!='#')
{
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 161
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
portb=dig[a];
du_lieu();
delay_ms(100);
a++;
}
output_b(0XC0);
lenh();
delay_ms(100);
output_d(0b11111111);
while(1)
{
//****************************************************
output_d(0b11111110);
delay_ms(10);
if( input(pin_D4)==0 )
{
output_b(0x37); //ghi 7
du_lieu();
delay_ms(150);
}
if( input(PIN_D5)==0 ) //cho khi D5 xuong 0
{
output_b(0x38); //ghi 8
du_lieu();
delay_ms(150);
}
if( input(PIN_D6)==0 ) //cho khi D6 xuong 0
{
output_b(0x39); //ghi 9
du_lieu();
delay_ms(150);
}
if( input(PIN_D7)==0 ) //cho khi D7 xuong 0
{
output_b('A'); // ghi a
du_lieu();
delay_ms(150);
}
//****************************************************
output_D(0b11111101);
delay_ms(10);
if( input(PIN_D4)==0 ) //cho khi D4 xuong 0
{
output_b(0x34); //ghi 4
du_lieu();
delay_ms(150);
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 162
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
}
if( input(PIN_D5)==0 ) //cho khi D5 xuong 0
{
output_b(0x35); //ghi 5
du_lieu();
delay_ms(150);
}
if( input(PIN_D6)==0 ) //cho khi D6 xuong 0
{
output_b(0x36); //ghi 6
du_lieu();
delay_ms(150);
}
if( input(PIN_D7)==0 ) //cho khi D7 xuong 0
{
output_b('B'); //ghi b
du_lieu();
delay_ms(150);
}
//****************************************************
output_D(0b11111011);
delay_ms(10);
if( input(PIN_D4)==0 ) //cho khi D4 xuong 0
{
output_b(0x31); //ghi 1
du_lieu();
delay_ms(150);
}
if( input(PIN_D5)==0 ) //cho khi D5 xuong 0
{
output_b(0x32); //ghi 2
du_lieu();
delay_ms(150);
}
if( input(PIN_D6)==0 ) //cho khi D6 xuong 0
{
output_b(0x33); //ghi 3
du_lieu();
delay_ms(150);
}
if( input(PIN_D7)==0 ) //cho khi D7 xuong 0
{
output_b('C'); //ghi c
du_lieu();
delay_ms(150);
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 163
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
//****************************************************
output_D(0b11110111);
delay_ms(10);
if( input(PIN_D4)==0 ) //cho khi D4 xuong 0
{
output_b('*'); //ghi *
du_lieu();
delay_ms(150);
}
if( input(PIN_D5)==0 ) //cho khi D5 xuong 0
{
output_b(0x30); //ghi 0
du_lieu();
delay_ms(150);
}
if( input(PIN_D6)==0 ) //cho khi D6 xuong 0
{
output_b(0X01); //CLEAR
lenh();
delay_ms(150);
}
if( input(PIN_D7)==0 ) //cho khi D7 xuong 0
{
portb='D'; //ghi d
du_lieu();
delay_ms(150);
}
}
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 164
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 9 : ĐIỀU CHỈNH ADC HIỂN THỊ LED ĐƠN
//***********ADC Hien Thi Led Don*************
//*********** Led noi voi portB******************
//**** ********AN0 lay mau tin hieu**************
#include
#fuses XT,NOWDT,NOPROTECT,NOLVP
#device 16F877*=16 ADC=8
#use delay(clock=4000000)
Int8 adc;
main()
{
setup_adc(adc_clock_internal);
setup_adc_ports(AN0);
set_adc_channel(0);
delay_ms(10);
while(true)
{
adc=read_adc();
output_B(adc);
}
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 165
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
BÀI 10: ĐO NHIỆT ĐỘ DÙNG LM35
//*****CHUONG TRINH DO NHIET DO DUNG LM35*********
//*****************HIEN THI LCD*************************
//***PORTB DU LIEU,PORTE DIEU KHIEN,AN0 LAY MAU***
//********************************************************
#include
#fuses xt,nowdt
#device *=16 adc =8
#use delay (clock=4000000)
#use fast_io(e)
#use fast_io(b)
#bit rs = 0x09.0
#bit rw = 0x09.1
#bit e = 0x09.2
#byte LCD = 0X06
const char line_1[ ]="CHUONG TRINH DO NHIET DO SU DUNG LM35 #";
const char line_2[ ]="0001020304050607080910111213141516 17181920
212223242526272829303132333435363738394041424344454647484950";
const char line_3[]="NHIET DO:#";
const char line_4[]=" DO C#";
int i,b,a,adc;
//**********************************************
void command()
{
rs = 0;
rw =0;
e=1;
e=0;
delay_ms(1);
}
//**********************************************
void write_data()
{
rs =1;
RW = 0;
e=1;
e=0;
delay_ms(1);
}
//**********************************************
void main()
{
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 166
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
Setup_ADC ( ADC_clock_internal ) ;
Setup_ADC_ports (AN0);
Set_ADC_channel ( 0 ) ;
Delay_us (10 ); // delay 10 us
set_tris_e(0);output_e(0);
set_tris_b(0);output_b(0);
set_tris_c(0);output_c(0);
WHILE(TRUE)
{
lcd=0x38;
command();
lcd =0x0e;
command();
lcd=0X01;
command();
LCD =0x80;
command();
a=0;
LCD =0xc0;
command();
while(line_3[a]!='#')
{
lcd = line_3[a];
write_data();
delay_ms(50);
a++;
}
adc =4* read_adc ( ) ;//doc gia tri adc
lcd=0xc9;
command();
for (i=1;i<=2;i++)
{
lcd = line_2[adc];
write_data();
delay_us(50);
adc++;
}
lcd=0xcb;
command();
a=0;
while(line_4[a]!='#')
{
lcd = line_4[a];
write_data();
delay_ms(100);
a++;
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 167
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
}
lcd=0x80;
command();
a=0;
while (a<=16)
{
LCD = line_1[a];
write_data();
delay_ms(100);
a++;
}
b=0;
LCD =0xc0;
command();
while (line_1[a]!='#')
{
a=0;
while(line_3[a]!='#')
{
lcd = line_3[a];
write_data();
a++;
}
adc = 4*read_adc ( ) ;
lcd=0xc9;
command();
for (i=1;i<=2;i++)
{
lcd = line_2[adc];
write_data();
adc++;
}
lcd=0xcb;
command();
a=0;
while(line_4[a]!='#')
{
lcd = line_4[a];
write_data();
a++;
}
b++;
a=b;
i=0;
LCD =0X80;
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 168
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
command();
while (I<=16)
{
LCD = line_1[a];
write_data();
a++;
i++;
}
delay_ms(300);
}
a=0;
}
}
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 169
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
PHẦN V
PHỤ LỤC
¾ Phụ lục 1 : 16F877A.H
¾ Phụ lục 2 : DEFS_16F877A.H
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 170
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
16FF877A.H
//////// Standard Header file for the PIC16F877 device ////////////////
#device PIC16F877
#nolist
//////// Program memory: 8192x14 Data RAM: 367 Stack: 8
//////// I/O: 33 Analog Pins: 8
//////// Data EEPROM: 256
//////// C Scratch area: 77 ID Location: 2000
//////// Fuses: LP,XT,HS,RC,NOWDT,WDT,NOPUT,PUT,PROTECT,PROTECT_5%
//////// Fuses:
PROTECT_50%,NOPROTECT,NOBROWNOUT,BROWNOUT,LVP,NOLVP,CPD
//////// Fuses: NOCPD,WRT,NOWRT,DEBUG,NODEBUG
////////
////////////////////////////////////////////////////////////////// I/O
// Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),
// PORT_x_PULLUPS(), INPUT(),
// OUTPUT_LOW(), OUTPUT_HIGH(),
// OUTPUT_FLOAT(), OUTPUT_BIT()
// Constants used to identify pins in the above are:
#define PIN_A0 40
#define PIN_A1 41
#define PIN_A2 42
#define PIN_A3 43
#define PIN_A4 44
#define PIN_A5 45
#define PIN_B0 48
#define PIN_B1 49
#define PIN_B2 50
#define PIN_B3 51
#define PIN_B4 52
#define PIN_B5 53
#define PIN_B6 54
#define PIN_B7 55
#define PIN_C0 56
#define PIN_C1 57
#define PIN_C2 58
#define PIN_C3 59
#define PIN_C4 60
#define PIN_C5 61
#define PIN_C6 62
#define PIN_C7 63
#define PIN_D0 64
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 171
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
#define PIN_D1 65
#define PIN_D2 66
#define PIN_D3 67
#define PIN_D4 68
#define PIN_D5 69
#define PIN_D6 70
#define PIN_D7 71
#define PIN_E0 72
#define PIN_E1 73
#define PIN_E2 74
////////////////////////////////////////////////////////////////// Useful defines
#define FALSE 0
#define TRUE 1
#define BYTE int
#define BOOLEAN short int
#define getc getch
#define fgetc getch
#define getchar getch
#define putc putchar
#define fputc putchar
#define fgets gets
#define fputs puts
////////////////////////////////////////////////////////////////// Control
// Control Functions: RESET_CPU(), SLEEP(), RESTART_CAUSE()
// Constants returned from RESTART_CAUSE() are:
#define WDT_FROM_SLEEP 3
#define WDT_TIMEOUT 11
#define MCLR_FROM_SLEEP 19
#define MCLR_FROM_RUN 27
#define NORMAL_POWER_UP 24
#define BROWNOUT_RESTART 26
////////////////////////////////////////////////////////////////// Timer 0
// Timer 0 (AKA RTCC)Functions: SETUP_COUNTERS() or
SETUP_TIMER_0(),
// SET_TIMER0() or SET_RTCC(),
// GET_TIMER0() or GET_RTCC()
// Constants used for SETUP_TIMER_0() are:
#define RTCC_INTERNAL 0
#define RTCC_EXT_L_TO_H 32
#define RTCC_EXT_H_TO_L 48
#define RTCC_DIV_1 8
#define RTCC_DIV_2 0
#define RTCC_DIV_4 1
#define RTCC_DIV_8 2
#define RTCC_DIV_16 3
#define RTCC_DIV_32 4
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 172
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
#define RTCC_DIV_64 5
#define RTCC_DIV_128 6
#define RTCC_DIV_256 7
#define RTCC_8_BIT 0
// Constants used for SETUP_COUNTERS() are the above
// constants for the 1st param and the following for
// the 2nd param:
////////////////////////////////////////////////////////////////// WDT
// Watch Dog Timer Functions: SETUP_WDT() or SETUP_COUNTERS()
(see above)
// RESTART_WDT()
#define WDT_18MS 0x8008
#define WDT_36MS 9
#define WDT_72MS 10
#define WDT_144MS 11
#define WDT_288MS 12
#define WDT_576MS 13
#define WDT_1152MS 14
#define WDT_2304MS 15
////////////////////////////////////////////////////////////////// Timer 1
// Timer 1 Functions: SETUP_TIMER_1, GET_TIMER1, SET_TIMER1
// Constants used for SETUP_TIMER_1() are:
// (or (via |) together constants from each group)
#define T1_DISABLED 0
#define T1_INTERNAL 0x85
#define T1_EXTERNAL 0x87
#define T1_EXTERNAL_SYNC 0x83
#define T1_CLK_OUT 8
#define T1_DIV_BY_1 0
#define T1_DIV_BY_2 0x10
#define T1_DIV_BY_4 0x20
#define T1_DIV_BY_8 0x30
////////////////////////////////////////////////////////////////// Timer 2
// Timer 2 Functions: SETUP_TIMER_2, GET_TIMER2, SET_TIMER2
// Constants used for SETUP_TIMER_2() are:
#define T2_DISABLED 0
#define T2_DIV_BY_1 4
#define T2_DIV_BY_4 5
#define T2_DIV_BY_16 6
////////////////////////////////////////////////////////////////// CCP
// CCP Functions: SETUP_CCPx, SET_PWMx_DUTY
// CCP Variables: CCP_x, CCP_x_LOW, CCP_x_HIGH
// Constants used for SETUP_CCPx() are:
#define CCP_OFF 0
#define CCP_CAPTURE_FE 4
#define CCP_CAPTURE_RE 5
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 173
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
#define CCP_CAPTURE_DIV_4 6
#define CCP_CAPTURE_DIV_16 7
#define CCP_COMPARE_SET_ON_MATCH 8
#define CCP_COMPARE_CLR_ON_MATCH 9
#define CCP_COMPARE_INT 0xA
#define CCP_COMPARE_RESET_TIMER 0xB
#define CCP_PWM 0xC
#define CCP_PWM_PLUS_1 0x1c
#define CCP_PWM_PLUS_2 0x2c
#define CCP_PWM_PLUS_3 0x3c
long CCP_1;
#byte CCP_1 = 0x15
#byte CCP_1_LOW= 0x15
#byte CCP_1_HIGH= 0x16
long CCP_2;
#byte CCP_2 = 0x1B
#byte CCP_2_LOW= 0x1B
#byte CCP_2_HIGH= 0x1C
////////////////////////////////////////////////////////////////// PSP
// PSP Functions: SETUP_PSP, PSP_INPUT_FULL(),
PSP_OUTPUT_FULL(),
// PSP_OVERFLOW(), INPUT_D(), OUTPUT_D()
// PSP Variables: PSP_DATA
// Constants used in SETUP_PSP() are:
#define PSP_ENABLED 0x10
#define PSP_DISABLED 0
#byte PSP_DATA= 8
////////////////////////////////////////////////////////////////// SPI
// SPI Functions: SETUP_SPI, SPI_WRITE, SPI_READ, SPI_DATA_IN
// Constants used in SETUP_SPI() are:
#define SPI_MASTER 0x20
#define SPI_SLAVE 0x24
#define SPI_L_TO_H 0
#define SPI_H_TO_L 0x10
#define SPI_CLK_DIV_4 0
#define SPI_CLK_DIV_16 1
#define SPI_CLK_DIV_64 2
#define SPI_CLK_T2 3
#define SPI_SS_DISABLED 1
#define SPI_SAMPLE_AT_END 0x8000
#define SPI_XMIT_L_TO_H 0x4000
////////////////////////////////////////////////////////////////// UART
// Constants used in setup_uart() are:
// FALSE - Turn UART off
// TRUE - Turn UART on
#define UART_ADDRESS 2
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 174
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
#define UART_DATA 4
////////////////////////////////////////////////////////////////// ADC
// ADC Functions: SETUP_ADC(), SETUP_ADC_PORTS() (aka
SETUP_PORT_A),
// SET_ADC_CHANNEL(), READ_ADC()
// Constants used for SETUP_ADC() are:
#define ADC_OFF 0 // ADC Off
#define ADC_CLOCK_DIV_2 0x100
#define ADC_CLOCK_DIV_8 0x40
#define ADC_CLOCK_DIV_32 0x80
#define ADC_CLOCK_INTERNAL 0xc0 // Internal 2-6us
// Constants used in SETUP_ADC_PORTS() are:
#define NO_ANALOGS 7 // None
#define ALL_ANALOG 0 // A0 A1 A2 A3 A5 E0 E1 E2
#define AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF 1 // A0
A1 A2 A5 E0 E1 E2 VRefh=A3
#define AN0_AN1_AN2_AN3_AN4 2 // A0 A1 A2 A3 A5
#define AN0_AN1_AN2_AN4_VSS_VREF 3 // A0 A1 A2 A4
VRefh=A3
#define AN0_AN1_AN3 4 // A0 A1 A3
#define AN0_AN1_VSS_VREF 5 // A0 A1 VRefh=A3
#define AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF 0x08 // A0 A1
A5 E0 E1 E2 VRefh=A3 VRefl=A2
#define AN0_AN1_AN2_AN3_AN4_AN5 0x09 // A0 A1 A2 A3
A5 E0
#define AN0_AN1_AN2_AN4_AN5_VSS_VREF 0x0A // A0 A1 A2
A5 E0 VRefh=A3
#define AN0_AN1_AN4_AN5_VREF_VREF 0x0B // A0 A1 A5
E0 VRefh=A3 VRefl=A2
#define AN0_AN1_AN4_VREF_VREF 0x0C // A0 A1 A4
VRefh=A3 VRefl=A2
#define AN0_AN1_VREF_VREF 0x0D // A0 A1 VRefh=A3
VRefl=A2
#define AN0 0x0E // A0
#define AN0_VREF_VREF 0x0F // A0 VRefh=A3
VRefl=A2
#define ANALOG_RA3_REF 0x1 //!old only provided for
compatibility
#define A_ANALOG 0x2 //!old only provided for
compatibility
#define A_ANALOG_RA3_REF 0x3 //!old only provided for
compatibility
#define RA0_RA1_RA3_ANALOG 0x4 //!old only provided for
compatibility
#define RA0_RA1_ANALOG_RA3_REF 0x5 //!old only provided
for compatibility
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 175
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
#define ANALOG_RA3_RA2_REF 0x8 //!old only provided for
compatibility
#define ANALOG_NOT_RE1_RE2 0x9 //!old only provided for
compatibility
#define ANALOG_NOT_RE1_RE2_REF_RA3 0xA //!old only
provided for compatibility
#define ANALOG_NOT_RE1_RE2_REF_RA3_RA2 0xB //!old only
provided for compatibility
#define A_ANALOG_RA3_RA2_REF 0xC //!old only provided
for compatibility
#define RA0_RA1_ANALOG_RA3_RA2_REF 0xD //!old only
provided for compatibility
#define RA0_ANALOG 0xE //!old only provided for
compatibility
#define RA0_ANALOG_RA3_RA2_REF 0xF //!old only provided
for compatibility
// Constants used in READ_ADC() are:
#define ADC_START_AND_READ 7 // This is the default if nothing
is specified
#define ADC_START_ONLY 1
#define ADC_READ_ONLY 6
////////////////////////////////////////////////////////////////// INT
// Interrupt Functions: ENABLE_INTERRUPTS(),
DISABLE_INTERRUPTS(),
// EXT_INT_EDGE()
// Constants used in EXT_INT_EDGE() are:
#define L_TO_H 0x40
#define H_TO_L 0
// Constants used in ENABLE/DISABLE_INTERRUPTS() are:
#define GLOBAL 0x0BC0
#define INT_RTCC 0x0B20
#define INT_RB 0xFF0B08
#define INT_EXT 0x0B10
#define INT_AD 0x8C40
#define INT_TBE 0x8C10
#define INT_RDA 0x8C20
#define INT_TIMER1 0x8C01
#define INT_TIMER2 0x8C02
#define INT_CCP1 0x8C04
#define INT_CCP2 0x8D01
#define INT_SSP 0x8C08
#define INT_PSP 0x8C80
#define INT_BUSCOL 0x8D08
#define INT_EEPROM 0x8D10
#define INT_TIMER0 0x0B20
#list
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 176
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
DEFS_16F877A.H
//======== Register Definitions =============
//-----Register Files----------------------------------------
#byte PORTA = 0x05
#byte PORTB = 0x06
#byte PORTC = 0x07
#byte PORTD = 0x08
#byte PORTE = 0x09
#byte EEDATA = 0x10C
#byte EEADR = 0x10D
#byte EEDATH = 0x10E
#byte EEADRH = 0x10F
#byte EECON1 = 0x18C
#byte EECON2 = 0x18D
#byte PR2 = 0x92
#bit RA4 = 0x05.4
#bit RA3 = 0x05.3
#bit RA2 = 0x05.2
#bit RA1 = 0x05.1
#bit RA0 = 0x05.0
#bit RB7 = 0x06.7
#bit RB6 = 0x06.6
#bit RB5 = 0x06.5
#bit RB4 = 0x06.4
#bit RB3 = 0x06.3
#bit RB2 = 0x06.2
#bit RB1 = 0x06.1
#bit RB0 = 0x06.0
#bit RC7 = 0x07.7
#bit RC6 = 0x07.6
#bit RC5 = 0x07.5
#bit RC4 = 0x07.4
#bit RC3 = 0x07.3
#bit RC2 = 0x07.2
#bit RC1 = 0x07.1
#bit RC0 = 0x07.0
#bit RD7 = 0x08.7
#bit RD6 = 0x08.6
#bit RD5 = 0x08.5
#bit RD4 = 0x08.4
#bit RD3 = 0x08.3
#bit RD2 = 0x08.2
#bit RD1 = 0x08.1
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 177
Đồ Án Tốt Nghiệp Khóa 2005 – 2008 GVHD:Thạc sỹ Lê Đình Kha
#bit RD0 = 0x08.0
#bit RE2 = 0x09.2
#bit RE1 = 0x09.1
#bit RE0 = 0x09.0
//----- INTCON ------------------------------------------
#bit GIE = 0x0b.7
#bit PEIE = 0x0b.6
#bit TMR0IE = 0x0b.5
#bit INTE = 0x0b.4
#bit RBIE = 0x0b.3
#bit TMR0IF = 0x0b.2
#bit INTF = 0x0b.1
#bit RBIF = 0x0b.0
//----- PIR1 -------------------------------------------------
#bit PSPIF = 0x0c.7
#bit ADIF = 0x0c.6
#bit RCIF = 0x0c.5
#bit TXIF = 0x0c.4
#bit SSPIF = 0x0c.3
#bit CCP1IF = 0x0c.2
#bit TMR2IF = 0x0c.1
#bit TMR1IF = 0x0c.0
//----- PIR2 ------------------------------------------
#bit CMIF = 0x0d.6
#bit EEIF = 0x0d.4
#bit BCLIF = 0x0d.3
#bit CCP2IF = 0x0d.0
//----- PIE1 ------------------------------------------
#bit PSPIE = 0x8c.7
#bit ADIE = 0x8c.6
#bit RCIE = 0x8c.5
#bit TXIE = 0x8c.4
#bit SSPIE = 0x8c.3
#bit CCP1IE = 0x8c.2
#bit TMR2IE = 0x8c.1
#bit TMR1IE = 0x8c.0
//----- PIE2 -------------------------------------------
#bit CMIE = 0x8d.6
#bit EEIE = 0x8d.4
#bit BCLIE = 0x8d.3
#bit CCP2IE = 0x8d.0
SVTH :Hà Xuân Bình & Vũ Thanh Hưng Trang 178