Tải bản đầy đủ (.pdf) (86 trang)

ứng dụng pic16f877a điều khiển thiết bị trong nhà

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.97 MB, 86 trang )

LỜI NÓI ĐẦU
Với xu hướng xã hội ngày càng phát triển trình độ con người ngày
càng cao thì nhu cầu của con người cũng tăng theo .Vì vậy áp dụng trình độ
khoa hoc kỹ thuật công nghệ vào trong sinh hoạt và đời sống là rất cần
thiết.Với đề tài ứng dụng pic16f877A điều khiển thiết bị trong nhà,
chúng em hy vọng nó sẽ ứng dụng vào cuộc sống và đáp ứng được một
phần nhỏ nhu cầu của xã hội.
Đề tài của chúng em không lớn và còn khuyết điểm chưa đạt, nhưng
đó là sự nổ lực làm việc của chúng em. Chúng em đã cố gắng tìm tòi học
hỏi để hoàn thành tốt đề tài , nhưng do vốn kiến thức còn hạn chế nên sẽ
không tránh khỏi những sai xót và khuyết điểm trong quá trình tính toán
cũng như thi công mô hình. Rất mong quí thầy cô và các bạn thông cảm và
góp ý thêm để đề tài ngày càng hoàn thiện hơn và áp dụng rộng rải trong
cuộc sống.

ii


IC M

N

Sau th i gian th c hi n
án t t nghi p,
c s giúp , h tr c a th y
cô, b n bè chúng em ã hoàn thành
án t t nghi p v i y
các nhi m v
c giao. Em xin g i l i c m n chân thành n:
-Các Th y , Cô tr ng Cao ng K Thu t Cao Th ng.
-Th y Võ Xuân Nam, ng i tr c ti p h ng d n chúng em trong su t quá


trình làm vi c.
Và c ng xin g i l i cám n các b n cùng khoá v vi c trao i tài li u,
óng góp ý ki n giúp chúng tôi hoàn thành t t tài.

iii


MỤC LỤC
Đề mục
Trang bìa
Lời nói đầu
Lời cảm ơn
Nhận xét của giáo viên hướng dẫn
Nhận xét của giáo viên phản biện
Nhận xét của Hội đồng chấm đồ án tốt nghiệp
Mục lục
Phụ lục các bảng và hình ảnh
Lời dẫn nhập
Chƣơng 1 GIỚI THIỆU ĐỀ TÀI VÀ PHƢƠNG PHÁP NGHIÊN CỨU
1.1 Giới thiệu về đề tài
1.2 Ý nghĩa đề tài
1.3 Giới hạn nghiên cứu
1.4 Phương pháp nghiên cứu
Chƣơng 2 TỔNG QUÁT VỀ LINH KIỆN TRONG MẠCH
2.1 Giới thiệu về pic 16f877A
2.2 Giới thiệu về LCD 16x02
2.3 Giới thiệu về IC LM 35
2.4 Giới thiệu về transitor
2.5 Giới thiệu về điện trở
2.6 Giới thiệu về tụ

2.7 Giới thiệu về diot
2.8 Giới thiệu về IC NE555
Chƣơng 3 SƠ ĐỒ
3.1 Sơ đồ khối
3.2 Sơ đồ nguyên lý
3.3 Sơ đồ mạch in
3.5 Sơ đồ bố trí linh kiện
3.6 Lưu đồ giải thuật
Chƣơng 4 NGUYÊN LÝ HOẠT ĐỘNG
Chƣơng 5 ĐOẠN CODE CHƢƠNG TRÌNH
Chƣơng 6 ĐÁNH GIÁ VÀ HƢỚNG PHÁT TRIỂN
6.1 Những phần đã thực hiện
6.1.1 Ưu điểm:
6.1.2 Khuyết điểm:
6.2 Hướng phát triển
TÀI LIỆU THAM KHẢO

iv

trang
i
ii
iii

iv
v
vi
1
1
1

1
1
2
2
27
39
40
43
45
47
48
51
51
53
54
55
57
63
65
79
79

79
80


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM


Chƣơng 1 GIỚI THIỆU ĐỀ TÀI VÀ PHƢƠNG PHÁP NGHIÊN
CỨU
1.1 Giới thiệu về đề tài :
Đề tài “Ứng dụng Pic16f877A điều khiển thiết bị trong nhà” bao gồm các
thành phần chính:
 Cảm biến người được thay thế bằng nút nhấn khi có người vào thì bắt đầu
đọc nhiệt độ và quét phím; khi không có người chỉ hiển thị trên LCD 16x02
như sau “school:CDKTCT”, “street:H_T_K”.
 Đọc nhiệt độ từ IC LM35DZ qua PIC16f877A , hiển thị nhiệt độ trên LCD
16x02 và điều khiển quạt.
 Nhận giá trị thông tin vừa nhập từ khối bàn phím qua Pic16f877A ( xử lý
tín hiệu có đúng mật mã cài định sẵn hay không ) hiển thị quét phím số lần
đã nhập trên LCD 16x02 và điều khiển (đóng mở cửa, loa, led).
1.2 Ý nghĩa đề tài:
Đề tài “Ứng dụng Pic16F877A điều khiển thiết bị trong nhà” là một ứng
dụng thực tế mà hiện nay đang phát triển mạnh mẽ, đa dạng và sinh động, nó được
ứng dụng rộng rãi không chỉ trong nhà mà còn có trong các nhà máy sản xuất
nhằm giảm bớt sự tác động của con người vào trong thiết bị.
1.3 Giới hạn nghiên cứu:
 Vi điều khiển Pic16f877A.
 Phần mềm CCS( ngôn ngữ C) hỗ trợ lập trình và biên dịch chương trình vi
xử lí.
 Phần mềm Orcad hổ trợ vẽ mạch nguyên lý .
 Phần mềm Protues hỗ trợ mô phỏng và mạch in.
1.4 Phƣơng pháp nghiên cứu:
 Tìm hiểu vi xử lí Pic16f877A phần cứng và tập lệnh.
 Tìm hiểu màn hình LCD.
 Tìm hiểu về cảm biến người và cảm biến nhiệt độ LM35DZ.
 Tìm hiểu ngôn ngữ lập trình và biên dịch CCS.
 Tìm hiểu và thiết kế mạch công suất điều khiển (loa, đóng mở cửa, quạt và

led).
 Lập trình và hoàn thiện đề tài”Ứng dụng Pic16f877A điều khiển thiết bị
trong nhà”.

Trang:1


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Chƣơng 2 TỔNG QUÁT VỀ LINH KIỆN TRONG MẠCH
2.1 GIỚI THIỆU VỀ PIC 16F877A
2.1.1 Giới thiệu chung :
PIC là tên viết tắt của Máy tính khả trình thông minh (Programable
Intelligent Computer) do hãng General Instrument đặt tên, con vi điều khiển đầu
tiên của họ là PIC1650. Hãng Microchip tiếp tục phát triển các dòng sản phẩm
này. Cho đến nay, các sản phẩm vi điều khiển PIC của Microchip đã gần 100 loại,
từ họ 10Fxxx đến các họ 12Cxxx, 17Cxx, 16Fxx, 16Fxxx, 16FxxxA, 16LFxxxA,
18Fxxx 18LFxxx.

Hình 2.1: Sơ đồ chân của PIC16F877A
2.1.2 Tại sao là PIC mà không là các họ vi điều khiển khác?
Hiện nay trên thị trường có rất nhiều họ vi điều khiển như 8051, Motorola
68HC, AVR, ….Ngoài họ 8051 được hướng dẫn một cách căn bản ở môi trường
đại học, bản thân người viết đã chọn họ vi điều khiển Pic để mở rộng vốn kiến
thức và phát triển các ứng dụng trên công cụ này vì nguyên nhân như sau:
 Họ vi điều khiển này có thể tìm mua dễ dàng tại thị trường Việt Nam.
 Giá thành không quá đắt.
 Có đầy đủ các tính năng của một vi điều khiển khi hoạt động độc lập.

 Là một sự bổ sung rất tốt về kiến thức cũng như về ứng dụng cho họ vi
điều khiển mang tính truyền thống: họ vi điều khiển 8051.
 Số lượng người sử dụng họ vi điều khiển Pic. Hiện nay tại Việt Nam cũng
như trên thế giới, họ vi điều khiển này được sử dụng khá rộng rãi. Điều này tạo
nhiều thuận lợi trong quá trình tìm hiểu và phát triển các ứng dụng như: số lượng

Trang:2


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

tài liệu, số lượng các ứng dụng mở đã được phát triển thành công, dễ dàng trao
đổi, học tập, dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn….
 Sự hỗ trợ của nhà sãn xuất về các trình biên dịch, các công cụ lập trình, nạp
chương trình từ đơn giản đến phức tạp,…
 Các tính năng đa dạng của vi điều khiển Pic và các tính năng này không
ngừng được phát triển.
2.1.3 Phân loại PIC theo ký tự:
 Nhóm thứ nhất có ký tự C, họ PIC xxCxxx được đưa vào một nhóm, gọi là
OTP (One Time Programable) chỉ có thể lập trình một lần duy nhất.
 Nhóm thứ hai có ký tự F, LF, họ PIC xxFxxx, xxFxxx, gọi là Flash, cho
phép ghi/xóa nhiều lần bắng các mạch điện thông thường.
2.1.4 Phân loại PIC theo ký số:
 Loại thứ nhất là dòng PIC cơ bản (Base-Line), gồm các PIC 12Cxxx, có độ
dài lệnh là 12 bit.
 Loại thứ hai là các dòng Pic 10F, 12F, và 16F, gọi là dòng phổ thông (MidRange), có độ dài lệnh là 14 bit.
 Loại thứ ba là dòng Pic18F (High-End), có độ dài lệnh là 16 bit.
PIC là một vi điều khiển với kiến trúc RISC, sử dụng microcode đơn giản đặt

trong ROM, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động). PIC nhờ
có EEPROM nên tạo thành 1 bộ điều khiển vào ra khả trình, có rất nhiều dòng PIC
với hàng loạt các mô-đun ngoại vi tích hợp sẵn (như USART, PWM, ADC...), với
bộ nhớ chương trình từ 512 Word đến 32K Word. Pic16F877A là dòng Pic phổ
biến nhất, đủ mạnh về tính năng, 40 chân, bộ nhớ đủ lớn cho hầu hết các ứng dụng
thông thuờng.
2.1.5 Cấu trúc tổng quát PIC16F877A gồm:
 8 K Flash ROM
 368 bytes RAM
 256 bytes EEPROM
 5 Port I/O (A, B, C, D, E), ngõ vào/ra với tín hiệu điều khiển độc lập
 2 bộ định thời 8 bit Timer 0 và Timer 2
 1 bộ định thời 16 bit Timer 1, có thể hoạt động trong cả chế độ tiết kiệm
năng lượng (Sleep Mode) với nguồn xung clock ngoài
 2 bộ CCP, Capture/Compare/PWM - tạm gọi là: Bắt giữ / So sánh / Điều
biến xung
 1 bộ biến đổi tương tự – số (ADC) 10 bit, 8 ngõ vào
 2 bộ so sánh tương tự (Comparator)
 1 bộ định thời giám sát (WDT – Watch Dog Timer)
 1 cổng song song (Parallel Port) 8 bit với các tín hiệu điều khiển
 1 cổng nối tiếp (Serial Port)

Trang:3


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

 15 nguồn ngắt (Interrupt)

 Chế độ tiết kiệm năng lượng (Sleep Mode)
TM

 Nạp chương trình bằng cổng nối tiếp ICSP (In-Circuit Serial rograming)
 Nguồn dao động lập trình được tạo bằng công nghệ CMOS
 35 tập lệnh có độ dài 14 bit
 Tần số hoạt động tối đa là 20 MHz
* Cấu trúc phần cứng Pic16F877A:
Pic là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy
(4 chu kỳ của bộ dao động).
Pic16F877A là họ vi điều khiển có 40 chân, mỗi chân có một chức năng
khác nhau. Trong đó có một số chân đa công dụng (đa hợp), mỗi chân có thể hoạt
động như một đường xuất/nhập (I/O) độc lập hoặc là một chức năng đặc biệt dùng
để giao tiếp với các thiết bị ngoại vi.

Hình 2.2. Sơ đồ khối của PIC16F877A
2.1.6 Các Port x và thanh ghi TRISx [ x={A,B,C,D,E} ]
2.1.6.1 Port A và thanh ghi TRISA

Trang:4


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Bảng 2.1. Các thanh ghi liên quan đến Port A

Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi. Các ô tô bóng không được
dùng bởi Port A

Port A gồm 6 chân RA0-RA5, việc ghi các giá trị nào vào thanh ghi TRISA
sẽ quy định các chân của Port A là Input hay Output, 0 = Output, 1 = Input.
Việc đọc thanh ghi Port A sẽ đọc các trạng thái chân của Port A. Việc ghi
giá trị vào thanh ghi Port A sẽ thay đổi các trạng thái của các chân của Port A.
Riêng chân RA4 được tích hợp thêm chức năng cung cấp xung clock ngoài
cho Timer 0 (RA4/T0CLKI).
Các chân khác của Port A được đa hợp với các chân Analog của bộ ADC
và chân ngõ vào điện thế so sánh của bộ so sánh Comparator. Hoạt động của các
chân này được quy định bằng các bit ADCON1 và CMCON1.
Khi các chân của Port A được sử dụng là ngõ vào thì các bit của thanh ghi TRISA
phải luôn bằng 1.
Chi tiết sơ đồ khối các chân của port A sẽ được trình bày cụ thể trong phụ
lục.
2.1.6.2 Port B và thanh ghi TRISB

Trang:5


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Bảng 2.2. Các thanh ghi liên quan đến Port B

Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi. Các ô tô bóng không được
dùng bởi Port B
Port B gồm 8 chân RB0-RB7, việc ghi các giá trị nào vào thanh ghi TRISB
sẽ quy định các chân của Port B là Input hay Output, 0 = Output, 1 = Input.
Việc đọc thanh ghi Port B sẽ đọc các trạng thái chân của Port B. Việc ghi
giá trị vào thanh ghi Port B sẽ thay đổi các trạng thái của các chân của Port B.

Ba chân của Port B được đa hợp với chức năng In-Circuit Debugger và
Low Voltage Programing Function là RB3/PGM, RB6/PGC, RB7/PGD. Việc thay
đổi chức năng của ba thanh ghi này được đề cập trong phần các thanh ghi chức
năng đặc biệt.
Mỗi chân của Port B có một transistor kéo lên nguồn V , chức năng này
dd

hoạt động khi bit RBPU OPTION<7> được xóa, chức năng này sẽ tự động tắt khi
chân Port B được quy định là Input. Bốn chân RB4-RB7 có chức năng ngắt
(interrupt) khi trạng thái chân Port thay đổi (khi chân Port được quy định là output
thì chức năng này không hoạt động), giá trị chân Port được so sánh với giá trị
được lưu lại trước đó, khi có 2 trạng thái sai lệch giữa 2 giá trị này, ngắt sẽ xảy ra
với cờ ngắt RBIF INTCON<0> bật lên, ngắt có thể làm cho vi điều khiển thoát
khỏi trạng thái Sleep Mode.
Bất cứ hoạt động truy xuất nào trên Port B sẽ xóa trạng thái sai lệch, kết
thúc ngắt và cho phép xóa cờ RBIF.
Chi tiết sơ đồ khối các chân của port B sẽ được trình bày cụ thể trong phụ
lục.
2.1.6.3 Port C và thanh ghi TRISC
Bảng 2.3. Các thanh ghi liên quan đến Port C

Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi.

Trang:6


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM


Port C gồm 8 chân từ RC0-RC7, việc ghi các giá trị nào vào thanh ghi
TRISC sẽ quy định các chân của Port C là Input hay Output, 0 = Output, 1 = Input.
Việc đọc thanh ghi Port C sẽ đọc các trạng thái chân của Port C. Việc ghi
giá trị vào thanh ghi Port C sẽ thay đổi các trạng thái của các chân của Port C.
Các chân của Port C được đa hợp với các chức năng ngoại vi. Khi các hàm
chức năng ngoại vi được cho phép, thì cần quan tâm chặt chẽ tới giá trị các bit của
thanh ghi TRISC. Một số chức năng ngoại vi sẽ ghi các giá trị 0 đè lên các bit của
thanh ghi TRISC và mặc định các chân là ngõ vào. Do đó cần phải xem xét kỹ các
tính năng của các hàm ngoại vi để thiết lập giá trị các bit trong thanh ghi TRISC
cho chính xác.
Chi tiết sơ đồ khối các chân của port C sẽ được trình bày cụ thể trong phụ
lục.
2.1.6.4 Port D và thanh ghi TRISD
Bảng 2.4. Các thanh ghi liên quan đến Port D

Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi. Các ô tô bóng không được
dùng bởi Port D.
Port D gồm 8 chân từ RD0-RD7. Ngoài việc Port D được cấu trúc là một
Port xuất nhập, nó còn có thể hoạt động như một cổng song song phụ tá (Parallel
Slave Port) bằng cách đặt bit PSPMODE(TRIS<4>) lên 1, trong chế độ này buffer
của ngõ vào là linh kiện TTL.
Chi tiết sơ đồ khối các chân của port D sẽ được trình bày cụ thể trong phụ
lục.
2.1.6.5 Port E và thanh ghi TRISE
Bảng 2.5. Các thanh ghi liên quan đến Port E

Trang:7


ĐỒ ÁN TỐT NGHIỆP


GVHD: VÕ XUÂN NAM

Ghi chú: x – giá trị không rõ, u – giá trị không thay đổi. Các ô tô bóng không được
dùng bởi Port E
Port E có 3 chân RE0/RD/AN5, RE1/WR/AN6, và RE2/CS/AN7 có thể
được cấu hình là các chân xuất nhập.
Các chân của Port E có thể trở thành các chân điều khiển cho các cổng của vi xử
lý khi bit PSPMODE(TRISE<4>) được đặt lên 1. Trong chế độ này, phải đảm bảo
rằng các bit từ 0 đến 2 của thanh ghi TRISE phải được đặt lên 1 để các chân này
được cấu hình như là chân ngõ vào.
Ngoài ra, các chân của Port E còn được cấu hình như các ngõ vào Analog,
ở chế độ này khi đọc trạng thái các chân của Port E sẽ cho ta giá trị 0.
Thanh ghi TRISE quy định chức năng xuất nhập của các chân Port E ngay
cả khi nó được sử dụng là các ngõ vào Analog, khi đó các chân Port E phải là ngõ
vào.
Chi tiết sơ đồ khối các chân của port E sẽ được trình bày cụ thể trong phụ
lục.
2.1.7 OSC1 và OSC2 – Dao động thạch anh cho vi điều khiển PIC:
Mỗi vi điều khiển hoạt động đều cần một xung clock nhất định. Hai chân
OSC1 và OSC2 (chân 13 và chân 14) cung cấp dao động cho vi điều khiển PIC
hoạt động.
Pic16F877A có thể hoạt động trong 4 chế độ dao động khác nhau Ở chế độ
LP, XT, HS, thì dùng thạch anh nối vào 2 chân OSC1 và OSC2 để thiếp lập dao
động. Việc mắc thêm các tụ lọc giúp tăng tính ổn định của bộ dao động, tuy nhiên
giá trị của tụ không quá lớn hay quá nhỏ để dao động ổn định và thời gian khởi
động ngắn. Với điện thế V > 4.5V thì nên dùng tụ có trị số 33pF.
dd

Đối với một số ứng dụng mà độ chính xác của thời gian không quan trọng,

có thể dùng dao động RC như một giải pháp tiết kiệm. Tần số dao động được xác
định bởi giá trị của điện trở R và tụ C.
2.1.8 MCLR (Master Clear):
Ngõ vào Master Clear (RESET PIC) trên chân số 1 của vi điều khiển PIC.
Khi đưa MCLR xuống thấp, các thanh ghi bên trong vi điều khiển PIC sẻ được tải
những giá trị thích hợp để khởi động lại hệ thống.

Trang:8


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Hình 2.3. Sơ đồ mạch Master Clear (Reset PIC)
2.1.9 Nguồn cấp cho PIC16F877A:
Pic16F877A vận hành với nguồn đơn 5V. Vdd (chân nguồn dương) được
nối váo chân số 11 và 32 của PIC. Vss (chân mass) được nối vào chân số 12 và 31
của PIC. Cả 4 chân này phải được nối nguồn thì PIC mới hoạt động được.
2.1.10 Tổ chức bộ nhớ:
Cấu trúc bộ nhớ của vi điều khiển Pic16f877A bao gồm bộ nhớ chương
trình (Program memory ) và bộ nhớ dữ liệu (Data Memory).
2.1.10.1 Bộ nhớ chƣơng trình:

Trang:9


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM


Hình 2.4 bộ nhớ chương trình Pic16f877A
Bộ nhớ chương trình của vi điều khiển Pic16f877A là bộ nhớ flash, dung
lượng bộ nhớ 8K word (1 Word= 14 bit). Như vậy bộ nhớ chương trình có khả
năng chứa được 8*1024=8192 lệnh (vì một lệnh sau khi mã hoá sẽ có dung lượng
1 word ( 14 bit).
Để mã hoá được địa chỉ của 8K word bộ nhớ chương trình, bộ nhớ đệm có
dung lượng 13 bit (PC<12:0>).
Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset
vector). Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h
(Interrupt vector).
Bộ nhớ chương trình không bao gồm bộ nhớ stack và không được địa chỉ
hoá bởi bộ đếm chương trình. Bộ nhớ stack sẽ được đề cập cụ thể trong phần sau.
2.1.10.2 Bộ nhớ dữ liệu:

Trang:10


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Bộ nhớ dữ liệu của Pic là bộ nhớ EFPROM được chia ra thành nhiều Bank.
Đối với Pic16f877A bộ nhớ dữ liệu được chia làm 4 bank. Mỗi bank có
dung lượng 128 byte, bao gồm các thanh ghi có chức năng đặt biệt SFG (Special
Function Register) nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung
SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS)
Bảng 2.6 Lựa chọn Bank của bộ nhớ dữ liệu trong Pic

sẽ được đặt ở tất cả các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình

truy xuất và làm giảm bớt lệnh của chương trình. Sơ đồ cụ thể của bộ nhớ dữ liệu
Pic 16f877A như sau:

Trang:11


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Hình 2.5 Sơ đồ bộ nhớ dữ liệu pic 16f877A
 Thanh ghi chức năng đặt biệt SFR:
Đây là các thanh ghi được sử dụng bởi CPU hoặc được dùng để thiết lập và
điều khiển các khối chức năng được tích hợp bên trong vi điều khiển. Có thể phân
thanh ghi SFR làm hai loại: thanh ghi SFR liên quan đến các chức năng bên trong
(CPU) và thanh ghi SFR dùng để thiết lập và diều khiển các khối chức năng bên
ngoài.

Trang:12


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

 Thanh ghi STATUS (03h, 83h, 103h, 183h): thanh ghi chứa kết quả thực
hiện phép toán của khối ALU, trạng thái reset và các bit chọn Bank cần truy xuất
trong bộ nhớ dữ liệu.

 Thanh ghi OPTION_REC (81h, 181h): thanh ghi này cho phép đọc và ghi,

cho phép điều khiển chức năng pull-up của các chân trong PortB, xác lập các tham
số về xung tác động, cạnh tác động của ngắt ngoại vi và bộ đém Timer0.

 Thanh ghi INTCON (0Bh, 8Bh, 10Bh,18Bh): thanh ghi này cho phép đọc
và ghi, chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt ngoại vi
RB0/INT và ngắt interrupt-on-change tại các chân của protB.

 Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của khối
chức năng ngoại vi.

 Thanh ghi PIR1 (0Ch): chứa cờ ngắt của các khối chức năng ngoại vi, các
ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE1

 Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức
năng CCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EFPROM.

 Thanh ghi PIR2 (0Dh): chứa các cờ ngắt của các khối chức năng ngoại vi,
các ngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2.

 Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ
reset của vi điều khiển.

Trang:13


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

2.2.10 ADC:

ADC (Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạng
tương tự và số. Pic 16f877A có 8 ngõ vào analog( RA4:RA0 và RE2:RE0). Hiệu
điện thế chuẩn VREF có thể được lựa chọn là VDD, VSS hay hiệu điện thế
chuẩn được xác lập trên hai chân RA2 và RA3. Kết quả chuyển đổi từ tín hiệu
tương tự sang tín hiệu số là 10 bit số tương ứng và được lưu trong hai thanh ghi
ADRESH:ADRESL. Khi không sử dụng bộ chuyển đổi ADC, các thanh ghi này
có thể được sử dụng như các yhanh ghi thông thường khác. Khi quá trình chuyển
đổi hoàn tất, kết quả sẽ được lưu vào hai thanh ghi ADRESH:ADRESL, bit
(ADCONO<2>)được xoá về 0 và cờ ngắt ADIF được set.
Qui trình chuyển đổi từ tương tự sang số bao gồm các bước sau:
1.Thiết lập các thông số cho bộ chuyển đổi ADC:
 Chọn ngõ vào analog, chọn điện áp mẫu (dựa trên các thông số của
thanh ghi ADCON1).
 Chọn kênh chuyển đổi AD (thanh ghi ADCON0).
 Chọn xung clock cho kênh chuyển đổi AD (thanh ghi ADCON).
 Cho phép bộ chuyển đổi AD hoạt động(thanh ghi ADCON).
2. Thiết lập các cờ ngắt cho bộ AD:
 Clear bit ADIF.
 Set bit ADIE.
 Set bit PEIE.
 Set bit GIE.
3. Đợi cho tới khi quá trình lấy mẫu hoàn tất.
4. Bắt đầu quá trình chuyển đổi set bit
)
5. Đợi cho tới khi quá trình chuyển đổi hoàn tất bằng cách:
 Khiểm tra bit
hoàn tất.
 Kiểm tra cờ ngắt.

. Nếu


=0, quá trình chuyển đổi đã

6. Đọc kết quả chuyển đổi và xoá cờ ngắt, set bit
(nếu cần tiếp tục
chuyển đổi).
7. Tiếp tục thực hiện các bước 1 và 2 cho quá trình chuyển đổi tiếp theo.

Trang:14


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Hình 2.6. Sơ đồ khối bộ chuyển đổi ADC.
Cần chú ý là có hai cách lưu kết quả chuyển AD, việc lựa chọn cách lưu được điều
khiển bởi bit ADFM và được minh hoạ cụ thể trong hình sau:

Hình 2.7 Các cách lưu kết quả chuyển đổi AD.
Các thanh ghi liên quan đến bộ chuyển đổi ADC gồm:
 Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt
(các bit GIE, PEIE).
Thanh ghi chứa các bit điều khiển và các bit cờ hiệu khi timer0 bị tràn, ngắt
ngoại vi RB0/INT và ngắt interrput-on-change tại các chân của port B.

Trang:15


ĐỒ ÁN TỐT NGHIỆP


GVHD: VÕ XUÂN NAM

Bit 7 GIE Global Interrupt Enable bit
GIE = 1 cho phép tất cả các ngắt.
GIE = 0 không cho phép tất cả các ngắt.
Bit 6 PEIE Pheripheral Interrupt Enable bit
PEIE = 1 cho phép tất cả các ngắt ngoại vi.
PEIE = 0 không cho phép tất cả các ngắt ngoại vi.
Bit 5 TMR0IE Timer0 Overflow Interrupt Enable bit
TMR0IE = 1 cho phép ngắt Timer0.
TMR0IE = 0 không cho phép ngắt Timer0.
Bit 4 RBIE RB0/INT External Interrupt Enable bit
RBIE = 1 cho phép ngắt ngoại vi RB0/INT.
RBIE = 0 không cho phép ngắt ngoại vi RB0/INT.
Bit 3 RBIE RB Port change Interrupt Enable bit
RBIE = 1 cho phép ngắt RB Port change.
RBIE = 0 không cho phép ngắt RB Port change.
Bit 2 TMR0IF Timer0 Interrupt Flag bit
TMR0IF = 1 thanh ghi TMR0 bị tràn (phải xoá bằng chương trình).
TMR0IF = 0 thanh ghi TMR0 chưa bị tràn..
Bit 1 INTF BR0/INT External Interrupt Flag bit
INTF = 1 ngắt RB0/INT xảy ra (phải xoá cờ hiệu bằng chương trình).
INTF = 0 ngắt RB0/INT chưa xảy ra.
Bit 0 RBIF RB Port Change Interrupt Flag bit
RBIF = 1 ít nhất có một chân RB7:RB4 có sự thay đổi trạng thái. Bit
này phải được xoá bằng chương trình sau khi đã kiểm tra lại các giá trị của các
chân tại port B.
RBIF = 0 không có sự thay đổi trạng thái các chân RB7:RB4.
 Thanh ghi PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF).


Bit 7 PSPIF
Parallel Slave Port Read/Write Interrupt Flag bit
PSPIF = 1 vừa hoàn tất thao tác đọc hoặc ghi PSP (phải xoá bằng
chương trình).
PSPIF = 0 không có thao tác đọc ghi PSP nào diễn ra.
Bit 6 ADIF
ADC Interrupt Flag bit
ADIF = 1 hoàn tất chuyển đổi ADC.
ADIF = 0 chưa hoàn tất chuyển đổi ADC.

Trang:16


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Bit 5 RCIF
USART Receive Interrupt Flag bit
RCIF = 1 buffer nhận qua chuẩn giao tiếp USART đã đầy.
RCIF = 0 buffer nhận qua chuẩn giao tiếp USART rỗng.
Bit 4 TXIF
USART Transmit Interrupt Flag bit
TXIF = 1 buffer truyền qua chuẩn giao tiếp USART rỗng.
TXIF = 0 buffer truyền qua chuẩn giao tiếp USART đầy.
Bit 3 SSPIF
Synchronous Serial Port (SSP) Interrupt Flag bit
SSPIF = 1 ngắt truyền nhận SSP xảy ra.
SSPIF = 0 ngắt truyền nhận SSP chưa xảy ra.

Bit 2 CCP1IF CCP1 Interrupt Flag bit
Khi CCP1 ở chế độ Capture
CCP1IF=1 đã cập nhật giá trị trong thanh ghi TMR1.
CCP1IF=0 chưa cập nhật giá trị trong thanh ghi TMR1.
Khi CCP1 ở chế độ Compare
CCP1IF=1 giá trị cần so sánh bằng với giá trị chứa trong TMR1.
CCP1IF=0 giá trị cần so sánh không bằng với giá trị trong TMR1.
Bit 1 TMR2IF TMR2 to PR2 Match Interrupt Flag bit
TRM2IF = 1 giá trị chứa trong thanh ghi TMR2 bằng với giá trị chứa
trong thanh ghi PR2.
TRM2IF = 0 giá trị chứa trong thanh ghi TMR2 chưa bằng với giá trị
chứa trong thanh ghi PR2
Bit 0 TMR1IF TMR1 Overflow Interrupt Flag bit
TMR1IF = 1 thanh ghi TMR1 bị tràn (phải xoá bằng chưa trình).
TMR1IF = 0 thanh ghi TMR1 chưa bị tràn.
 Thanh ghi PIE1 (địa chỉ 8Ch): chứa bit điều khiển AD (ADIE).

Bit 7 PSPIE Parallel Slave Port Read/Write Interrupt Enable bit
PSPIE = 1 cho phép ngắt PSP read/write.
PSPIE = 0 không cho phép ngắt PSP read/write.
Bit 6 ADIE ADC (A/D converter) Interrupt Enable bit
ADIE = 1 cho phép ngắt ADC.
ADIE = 0 không cho phép ngắt ADC.
Bit 5 RCIE USART Receive Interrupt Enable bit
RCIE = 1 cho phép ngắt nhận USART
RCIE = 0 không cho phép ngắt nhận USART
Bit 4 TXIE USART Transmit Interrupt Enable bit
TXIE = 1 cho phép ngắt truyền USART
TXIE = 0 không cho phép ngắt truyền USART


Trang:17


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Bit 3 SSPIE Synchronous Serial Port Interrupt Enable bit
SSPIE = 1 cho phép ngắt SSP.
SSPIE = 0 không cho phép ngắt SSP.
Bit 2 CCP1IE CCP1 Interrupt Enable bit
CCP1IE = 1 cho phép ngắt CCP1.
CCP1IE = 0 không cho phép ngắt CCP1.
Bít 1 TMR2IE TMR2 to PR2 Match Interrupt Enable bit
TMR2IE = 1 cho phép ngắt.
TMR2IE = 0 không cho phép ngắt.
Bit 0 TMR1IE TMR1 Overflow Interrupt Enable bit
TMR1IE = 1 cho phép ngắt.
TMR1IE = 0 không cho phép ngắt.
 Thanh ghi ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh
ghi chứa kết quả chuyển đổi AD.
 Thanh ghi ADCON0 (địa chỉ 1Fh) :
Đây là một trong hai thanh ghi điều khiển khối chuyển đổi ADC(ADC có hai
thanh ghi điều khiển là ADCON1 và ADCON0).

Bit 7,6 ADCS1:ADCS0 A/D Conversion Clock Select bit

Bit 5-3 CHS2:CHS0 Analog Channel Select bit
Các bit này dùng để chọn kênh chuyển đổi ADC
000 kênh 0 (AN0)

001 kênh 1 (AN1)
010 kênh 2 (AN2)
011 kênh 3 (AN3)
100 kênh 4 (AN4)
101 kênh 5 (AN5)
110 kênh 6 (AN6)
111 kênh 7 (AN7)

Trang:18


ĐỒ ÁN TỐT NGHIỆP

Bit 2

GVHD: VÕ XUÂN NAM

A/D Conversion Status bit
Khi ADON = 1

= 1 A/D đang hoạt động (set bit này sẽ làm khởi động
ADC và tự xoá khi quá trình chuyển đổi kết thúc).
= 0 A/D không hoạt động.
Bit 1 không cần quan tâm và mặc định mang giá trị 0.
Bit 0 ADON A/D On bit
ADON = 1 bật A/D
ADON = 0 tắt A/D
 ADCON1 (địa chỉ 9Fh): Đây là một trong hai thanh ghi điều khiển khối
chuyển đổi ADC(ADC có hai thanh ghi điều khiển là ADCON1 và ADCON0).


Bit 7 ADFM A/D Result Format Select bit
ADFM = 1 kết quả được lưu về phía bên phải 2 thanh ghi
ADRESH:ADRESL (6 bit cao mang giá trị 0).
ADFM = 0 kết quả được lưu về phía bên trái 2 thanh ghi
ADRESH:ADRESL (6 bit thấp mang giá trị 0).
Bit 6 ADCS2 A/D Conversion Clock Select bit
ADCS2 kết hợp với 2 bit ADCS1:ADCS0 trong thanh ghi ADCON0 để
điều khiển việc chọn xung clock cho khối chuyển đổi ADC.

Bit 5,4 không cần quan tâm và mặc định mang giá trị 0.
Bit 3-0 PCFG3:PCFG0 A/D Port Configuration Control bit
Các bit này điều khiển việc chọn cấu hình hoạt động các cổng của bộ chuyển đổi
ADC.
 Thanh ghi PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các
ngõ vào analog ở PORTA.

Trang:19


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

 Thanh ghi PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): liên quan đến các
ngõ vào analog ở PORTE.
2.2.12 Vài nét sơ lƣợc về tập lệnh của vi điều khiển:
Pic là vi điều khiển có tập lệnh rút gọn RISC (Reduced Instruction Set
Computer), bao gồm 35 lệnh và có thể được phân ra thành 3 nhóm cơ bản:
 Nhóm lệnh thao tác trên bit.
 Nhóm lệnh thao tác trên byte.

 Nhóm lệnh điều khiển.
Đối với dòng vi điều khiển píc6fxxx, mỗi lệnh được mã hoá thành 14 bit
word, bao gồm các bit opcode (dùng để xác định lệnh nào được mã hoá) và các bit
mô tả một hay vài thamsố của lệnh.
Đối với nhóm lệnh thao tác trên byte, ta có 2 tham số f (xác định địa chỉ byte cần
thao tác) và d (xác định nơi chứa kết quả thực thi lệnh). Nếu d=0, kết quả sẽ được
đưa vào thanh ghi W. Nếu d=1, kết quả đươc đưa vào thanh ghi mô tả bởi tham số
f.
Đối với nhóm lệnh thao tác trên bit, ta có hai tham số b (xác định bit cần
thao tác) và f( xác định byte dữ liệu cần thao tác).
Đối với nhóm lệnh điều khiển chỉ có một tham số duy nhất là k (k có thể là 8 bit
trong trường hợp các lệnh bình thường hay 11 bit trong trường hợp là lệnh CALL
và lệnh GOTO) dùng để mô tả đối tương tác động của vi điều khiển( một label,
một hằng số nào đó).
Mổi lệnh sẽ được vi điều khiển thực thi xong trong một chu kỳ lệnh, ngoài
trừ các lệnh làm thay đổi giá trị bộ đếm chgương trình PC cần 2 chu kỳ lệnh. Một
chu kỳ lệnh gồm 4 xung clock của oscillator.
Các lệnh thao tác trên một thanh ghi bất kì đều được thực hiện cơ chế
Read-modify-Write, tức là thanh ghi sẽ được đọc, dữ liệu được thao tác và kết quả
đưa vào thanh ghi chứa kết quả (nơi chứa kết quả tuỳ thuộc vào lệnh thực thi và
tham số d).
Sau đây ta sẽ tìm hiểu một số cấu trúc, cú pháp và tác động cụ thể của từng
lệnh:
 Lệnh BCF
Cú pháp: BCF f,b (0  f  127, 0  b  7)
Tác dụng: xoá bit B trong thanh ghi f về giá trị 0.
Bit trạng thái : không có.
 Lệnh BSF
Cú pháp: BSF f,b (0  f  127, 0  b  7)
Tác dụng: sdet bit b trong thanh ghi f.

Bit trạng thái : không có.
 Lệnh BTFSS
Cú pháp: BTFSS f,b (0  f  127, 0  b  7)

Trang:20


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Tác dụng: Kiểm tra bit b trong thanh gjhi f. Nếu bit b bằng 0, lệnh tiếp theo được
thực thi. Nếu bit b bằng 1, lệnh tiếp theo được bỏ qua và thay vào đó là lệnh NOP.
Bit trạng thái :không có.
 Lệnh BTFSC
Cú pháp: BTFSC f,b (0  f  127, 0  b  7)
Tác dụng: Kiểm tra bit b trong thanh gjhi f. Nếu bit b bằng 1, lệnh tiếp theo được
thực thi. Nếu bit b bằng 0, lệnh tiếp theo được bỏ qua và thay vào đó là lệnh NOP.
Bit trạng thái :không có.
 Lệnh CALL
Cú pháp: CALL k (0  k  2047)
Tác dụng: gọi một chương trình con. Trước hết địa chỉ quay trở về từ chương
trìnhcon (PC+1) được cất vào Stack, giá trị địa chỉ mới được đưa vào bộ đếm gồm
11 bit của biến k và 2 bit PCLATH<4:3>.
Bit trạng thái: không có.
 Lệnh GOTO
Cú pháp: GOTO k (0  k  2047)
Tác dụng: nhảy tới một label được địng nghĩa bởi tham số k và 2 bit
PCLATH<4:3>.
Bit trạng thái: không có.

 Lệnh ANDWF
Cú pháp: thực thi phép toán AND giữa các giá trị chứa trong thanh ghi W và f. Kết
quả được đưa vào thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái:Z
 Lệnh IORWF
Cú pháp: IORWF f,d (0  f  127, d [0,1])
Tác dụng: thực hiện phép toán OR giữa 2 thanh ghi W và f. Kết quả được đưa vào
thanh ghi W nếu d=0 hoặc thanh ghi f nếu d=1.
Bit trạng thái:Z.
 Lệnh INCLUDE
Cú pháp: # INCLUDE<filename>hoặc #INCLUDE”filename”
Tác dụng: đính kèm một file khác vào chương trình, tương tự như việc ta copy file
đó vào vị trí xuất hiện INCLUDE. Nếu dùng cú pháp<filename> thì file đính kèm
là file hệ thống (sytem file), nếu dùng cú pháp “filename” thì file đính kèm là file
của người sử dụng.
 Lệnh #DIFINE
Cú pháp: #DIFINE <text1><text2>
Tác dụng: thay thế một chuổi kí tự bằng một chuỗi kí tự khác, có nghĩa là mỗi khi
chuỗi kí tự text1 xuất hiện trong chương trình, trình biên dịch sẽ tự động thay thế
chuỗi kí tự đó bằng chuỗi kí tự<text2>.
 Lệnh END

Trang:21


ĐỒ ÁN TỐT NGHIỆP

GVHD: VÕ XUÂN NAM

Cú pháp: END

Tác dụng: đánh dấu kết thúc chương trình.
Phần thông tin cơ bản về vi điều khiển PIC16F877A tạm gác ở đây, thông
tin thêm về Các thanh ghi chức năng đặc biệt SFR, bộ định thời, Các chế độ ngắt,
Sử dng EEPROM, Tập lệnh hợp ngữ của PIC,.. có thể tra cứu, tham khảo trong
datasheet PIC16F87xA của Microchip (microchip.com).
Phụ lục : Sơ đồ khối các port của vi diều khiển pic 16f877A:
P.1 PortA

Hình 2.8. Sơ đồ khối RA3:RA0

Hình 2.9 Sơ đồ khối RA4

Trang:22


×