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

Điều khiển thiết bị điện điện thông qua điện thoại di động và điện thoại bàn

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.37 MB, 59 trang )

LỜI NÓI ĐẦU
Ngày nay ngành công nghệ thông tin đã đạt được những tiến bộ vượt bậc
với sự ra đời của ngành công nghiệp phần cứng cũng như phần mềm việc giải
quyết các công việc giúp con người trở nên dễ dàng , thuận tiện và nhanh chóng.
Cùng với sự phát triển của ngành công nghệ thông tin là sự phát triển mạnh
mẽ của các hệ thống thông tin liên lạc, sự ra đời của các dịch vụ điện thoại mà cụ
thể là điện thoại di động với ưu thế dễ dàng hoạt động khi di chuyển mọi lúc mọi
nơi. Chính vì vậy ngoài việc dùng điện thoại để liên lạc một vấn đề được đặt ra là
chúng ta có thể sử dụng điện thoại như một chiếc Remote để điều khiển các thiết
bị điện từ xa . Từ yêu cầu trên và những kiến thức em được học trên trường em
đã lựa chọn đề tài : “Điều khiển thiết bị điện điện thông qua điện thoại di
động và điện thoại bàn.”
Giới hạn đề tài : Việc thiết kế các ứng dụng của PIC với điện thoại di
động,IC thu phát DTMF rất phong phú và phức tạp, do vậy trong đề tài này em
tập trung giải quyết các vấn đề chính:
 Thiết kế phần cứng điều khiển thiết bị điện thông qua IC MT8870.
 Điều khiển bật/tắt thiết bị điện.
 Hẹn giờ bật/tắt thiết bị điện.
 Hiển thị trên LCD mã điều khiển để kiểm tra.

-1-


MỤC LỤC
LỜI CẢM ƠN .................................................Error! Bookmark not defined.
LỜI NÓI ĐẦU ................................................................................................1
DANH MỤC CÁC TỪ VIẾT TẮT .................................................................5
CHƯƠNG 1 ....................................................................................................6
GIỚI THIỆU ĐỀ TÀI .....................................................................................6
1.1 Ý tưởng. ..............................................................................................6
1.2 Cấu tạo cơ bản và nguyên lý hoạt động của điện thoại. ........................6


1.3 Nguyên lý hoạt động............................................................................7
1.4 Tín hiệu DTMF...................................................................................7
1.4.1 Định nghĩa.............................................................................7
1.4.2 KEYPAD...............................................................................7
1.4.3 IC MT8870 thu tín hiệu DTMF............................................10
CHƯƠNG 2 ..................................................................................................16
TÌM HIỂU VI ĐIỀU KHIỂN PIC 16F877A .................................................16
2.1 Sơ đồ chân của PIC 16F877A..................................................................16
2.2 Một vài thông số về vi điều khiển PIC16F877A................................. 16
2.3 Sơ đồ khối vi điều khiển PIC 16F877A..............................................18
2.4 Tổ chức bộ nhớ..................................................................................19
2.4.2 Bộ nhớ dữ liệu. ....................................................................20
2.4.3 Stack....................................................................................24
2.5 Các cổng xuất nhập của PIC16F877A................................................24
2.5.1 PORTA................................................................................25
2.5.2 PORTB................................................................................25
2.5.3 PORTC................................................................................26
2.5.4 PORTD................................................................................26
2.5.5 PORTE ................................................................................26
2.6 TIMER 0 ...........................................................................................26
2.7 TIMER1 ............................................................................................ 28
2.8 TIMER2 ............................................................................................ 30
2.9 ADC ..................................................................................................32
2.10 NGẮT (INTERRUPT).....................................................................34
2.10.1 Ngắt INT. ..........................................................................35
2.10.2 Ngắt do sự thay đổi trạng thái các Pin trong PORTB. ........36

-2-



2.10.3 Watchdog Timer (WDT)....................................................36
2.10.4 Chế độ Sleep......................................................................37
2.10.5 “Đánh thức” Vi điều khiển.................................................37
CHƯƠNG 3 ..................................................................................................40
THIẾT KẾ PHẦN CỨNG.............................................................................40
3.1 Sơ đồ khối của mạch..........................................................................40
3.2 Nguyên lý hoạt động..........................................................................40
3.3 Chức năng của từng khối. ..................................................................44
3.3.1 Khối xử lý trung tâm............................................................44
3.3.2 Khối thu và giải mã DTMF..................................................44
3.3.3 Khối hiển thị........................................................................44
3.3.4 Khối nguồn nuôi. .................................................................45
3.3.5 Khối bật/tắt thiết bị điện. .....................................................45
3.3.6 Khối tín hiệu phản hồi. ........................................................45
3.4 Thiết kế mạch nguyên lý..................................................................46
3.4.1 Khối xử lý trung tâm............................................................46
3.4.3 Khối hiển thị thông tin. ........................................................48
3.4.4 Khối nguồn nuôi. .................................................................49
3.4.5 Khối điều khiển thiết bị điện................................................50
3.4.6 Khối tín hiệu phản hồi. ........................................................50
3.4.7 Mạch in thực tế sau khi thiết kế. ..........................................51
3.4.8 Mạch thực tế sau khi thiết kế và chạy thử. ...........................52
CHƯƠNG 4 ..................................................................................................53
THIẾT KẾ PHẦN MỀM...............................................................................53
4.1 Lập trình............................................................................................53
4.2 Lý do chọn PIC 16F877A. .................................................................54
4.3 Thuật toán điều khiển. ......................................................................56
CHƯƠNG 5 ..................................................................................................57
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI........................................57
5.1 Đánh giá kết quả thực nghiệm............................................................57

5.2 Hướng phát triển đề tài. .....................................................................58
TÀI LIỆU THAM KHẢO .............................................................................59
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪNError! Bookmark not defined.

-3-


DANH MỤC CÁC HÌNH VẼ
Hình 1.1: Dạng tín hiệu DTMF. ......................................................................8
Hình 1.2: Bàn phím chuẩn 12 nút. ...................................................................9
Hình 1.3: Bàn phím mở rộng 16 phím. ............................................................9
Hình 1.4: IC thu DTMF MT8870. .................................................................10
Hình 1.5: Sơ đồ khối của MT8870. ............................................................... 12
Hình 1.6: Sơ đồ thực nghiệm với IC MT8870. ..............................................14
Hình 2.1: Sơ đồ chân của PIC16F877A.........................................................16
Hình 2.2: Sơ đồ khối của PIC16F877A. ........................................................18
Hình 2.3: Bộ nhớ chương trình PIC16F877A. ...............................................19
Hình 2.4: Bộ nhớ dữ liệu của PIC 16F877A. .................................................21
Hình 2.5: Sơ đồ khối của Timer 0..................................................................27
Hình 2.6: Sơ đồ khối của Timer1. .................................................................29
Hình 2.7: Sơ đồi khối của Timer2. ................................................................ 31
Hình 2.8: Sơ đồ khối bộ chuyển đổi ADC. ....................................................34
Hình 2.9: Sơ đồ logic của tất cả các ngắt trong PIC16F877A. .......................35
Hình 3.1: Sơ đồ khối của mạch......................................................................40
Hình 3.2: Sơ đồ mạch nguyên lý hệ thống. ....................................................46
Hình 3.3: Sơ đồ nguyên lý của PIC16F877A trong mạch. ............................. 47
Hình 3.4: Sơ đồ nguyên lý kết nối trong mạch của IC MT8870. ....................48
Hình 3.5: Sơ đồ nguyên lý kết nối của LCD1602 trong mạch điện. ...............49
Hình 3.6: Sơ đồ nguyên lý nguồn nuôi của mạch...........................................49
Hình 3.7 : Sơ đồ nguyên lý khối đóng ngắt thiết bị điện. ............................... 50

Hình 3.8: Sơ đồ nguyên lý khối tín hiệu phản hồi..........................................50
Hình 3.9: Sơ đồ mạch in thực tế sau thiết kế..................................................51
Hình 3.10: Mạch thực tế sau khi thiết kế và chạy thử. ...................................52
Hình 4.1: Giao diện của PIC C Compiler. .....................................................53
Hình 4.2: Giao diện phần mềm nạp WinPic800.............................................54
Hình 4.3: Lưu đồ thuật toán điều khiển. ........................................................56

-4-


DANH MỤC CÁC TỪ VIẾT TẮT

STT

Ý nghĩa

Thuật ngữ

1.

DTMF

Dual Tone Multi Frequency

2.

I2C

Inter Intergrated Circuit


3.

ICSP

In-Circuit Serial Programming

4.

MCLR

Master Clear

5.

PIC

Programmable Intergrated Circuit

6.

LCD

Liquid Crytal Display

7.

SPI

Serial Pripheral Interface


8.

SFG

Special Function Register

9.

SSP

Synchronous Serial Port

10.

GPR

General Purpose Register

11.

FSG

File Select Register

12.

WDT

Watchdog Timer


13.

CCP

Capture/Compare/PWM

14.

ADC

Analog-to-Digital Converter

15.

PWM

Pulse Width Modulation

16.

CCS

Custom Computer Services

-5-


CHƯƠNG 1

GIỚI THIỆU ĐỀ TÀI

1.1 Ý tưởng.
Ngày nay công nghệ điện thoại di động ngày một phát triển mạnh.Điện
thoại trở thành một nhu cầu không thể thiếu được của con người trong nhịp sống
hiện đại chiếc điện thoại gần như lúc nào cũng được chúng ta mang theo bên
người.Bởi vậy ngoài khả năng nghe, gọi, nhắn tin , truy cập internet , giải trí…vv
thì một câu hỏi được đặt ra là : Có thể dùng điện thoại di động để điều khiển các
thiết bị điện như Tủ lạnh , TV , điều hoà nhiệt độ , máy tính , lò vi sóng , quạt
điện , đèn chiếu sáng , bình nóng lạnh….vv không?
Trong thực tế cuộc sống có không ít lần chúng ta đi đến công ty hay đi ra
ngoài mà quên không tắt máy tính, điều hoà ,bình nóng lạnh …vv và nhiều khi
chúng ta phải trở về nhà chỉ để tắt các thiết bị này bởi nhiều lý do như : nguy cơ
cháy nổ , nguy hiểm , hỏng hóc , tốn điện…Trong những ngày mùa đông lạnh
trước khi đi làm về chúng ta muốn có sẵn nước nóng để tắm cho thoải mái sau
một ngày làm việc hay chúng ta muốn ngồi một chỗ để điều khiển công việc từ
xa....vv.
Xuất phát từ những yêu cầu thực tế cuộc sống đề tài của em nghiên cứu
thu tín hiệu DTMF từ điện thoại di động để từ đó giải mã và đưa ra được các tín
hiệu điều khiển bật /tắt thiết bị điện.Với khả năng này chúng ta chỉ cần mang
điện thoại ra và gọi điện nhập mã điều khiển là có thể yên tâm các thiết bị điện
chúng ta đã ở trạng thái tắt/bật như ý muốn. Để làm được việc đó em đã nghiên
cứu các vấn đề sau:
1.2 Cấu tạo cơ bản và nguyên lý hoạt động của điện thoại.
Một chiếc máy điện thoại cơ bản là gồm ba phần chính sau:
 Phần chuyển đổi mạch điện: Phần này gồm hệ thống lá mạ tiếp điểm và
có nhiệm vụ đóng mở mạch điện khi có yêu cầu.

-6-


 Phần thu và phát tín hiệu gọi: Phần này gồm hai phần chính là máy điện

quay tay có nhiệm vụ phát tín hiệu gọi lên đường chuyền và phần
chuông máy có nhiệm vụ biến dòng tín hiệu gọi thành tín hiệu gọi.
 Phần thu phát thoại: Gồm có loa và mic. Loa có nhiệm vụ biến đổi tín
hiệu âm thanh thành tín hiệu điện và mic thì có nhiệm vụ ngược lại biến
tín hiệu điện thành tín hiệu âm thanh.
1.3 Nguyên lý hoạt động.
Khi ta thực hiện cuộc gọi dao động âm thanh của tiếng nói sẽ tác động vào
màng rung của mic làm xuất hiện dòng điện biến đổi tương ứng trong mạch.
Dòng điện biến đổi này được truyền trên đường dây điện thoại và được chuyển
mạch đến máy điện thoại được gọi, làm cho màng rung của loa dao động, lớp
không khí trước màng sẽ dao động theo phát ra âm thanh tác động đến tai người
nghe và quá trình truyền dẫn ngược lại cũng tương tự.
1.4 Tín hiệu DTMF.
1.4.1 Định nghĩa.
DTMF(Dual Tone Multi Frequency): là tín hiệu gồm có hai tần số xếp trồng
lên nhau. Mỗi tần số được lựa chọn sao cho có lợi cho việc thiết kế bộ lọc và dễ
dàng truyền đi trên đường dây điện thoại có băng thông khoảng chừng 3,5KHz.
DTMF phát ra là 1 tín hiệu âm thanh ghép của 2 tín hiệu trong dải tần số từ
697Hz đến 1633Hz.
Phiên bản của DTMF sử dụng cho tín hiệu điện thoại được biết đến như
hãng Touch-Tone, và được tiêu chuẩn hoá bởi ITU-T là Q.23. Tín hiệu DTMF có
thể được phát hoặc thu bằng một IC chuyên dụng (VD: MTD887X)
Hệ thống DTMF đang phát triển và trở thành phổ biến trong hệ thống điện
thoại hiện nay. Hệ thống này được hình thành vào năm 1960 nhưng mãi đến năm
1970 mới được phát triển rộng rãi.
1.4.2 KEYPAD.

-7-



Trong DTMF mỗi chữ số chọn lựa có tín hiệu dưới dạng tổ hợp của hai tần
số xoay chiều :

Hình 1.1: Dạng tín hiệu DTMF.
Khi một nút được bấm, hai tần số mô tả chữ số được phát ra và được gửi
một cách đồng thời. Đặc biệt là hai âm thanh này không cùng âm, tức là tần số
của âm thanh này không có cùng ước số chung với âm thanh kia, điều này để
tránh sự nhầm lẫn vô tình với âm hiệu nói, sự phân tách rõ ràng giữa hai loại này
là rất cần thiết.Ví dụ như hai tần số 750 và 500 là hai tần số không thể kết hợp
thành tín hiệu DTMF vì có cùng ước số chung là 250, hai tần số này là hai âm
thanh cùng âm.
Keypad chuẩn là một ma trận chữ nhật gồm ba cột và bốn hàng (3x4) tạo
nên tổng cộng là 12 phím nhấn: trong đó có 10 phím cho chữ số (từ 0 đến 9), hai
phím đặc biệt là ‘*’ và ‘#’. Mỗi hàng trên bàn phím bấm được gán cho một tần số
tín hiệu thấp, mỗi cột được gán cho tần số tín hiệu cao. Mỗi một phím sẽ có một
tín hiệu DTMF riêng được tổng hợp bởi hai tần số tương ứng với hàng và cột mà
phím đó đang đứng . Những tần số này đã được lựa chọn cẩn thận sao cho có lợi
cho việc thiết kế bộ lọc và dễ dàng truyền đi trên đường dây điện thoại.

-8-


Hình 1.2: Bàn phím chuẩn 12 nút.
Ngày nay người ta còn cho thêm một vài phím để tạo nên bảng mã được
nằm trong một ma trận (4x4) với mỗi hàng miêu tả bằng một tần số thấp và mỗi
cột miêu tả bằng một tần số cao.

Hình 1.3: Bàn phím mở rộng 16 phím.

-9-



1.4.3 IC MT8870 thu tín hiệu DTMF.

Hình 1.4: IC thu DTMF MT8870.
+ Định nghĩa các chân như sau:
-

PIN 1 (IN+) Non- Investing op-amp. Ngõ vào không đảo.

-

PIN 2 (IN-) Investing op-amp . Ngõ vào đảo.

-

PIN 3 (GS) Gain Select .Giúp truy xuất ngõ ra của bộ
khuếch đại vi sai đầu cuối qua điện trở hồi tiếp.

-

PIN 4 (Vref ) Reference Voltage. Ngõ ra. Thông thường
bằng VDD/2

-

PIN 5 (INH) Inhibit. Ngõ vào.Khi chân này ở mức logic cao
thì không nhận được ký tự A,B,C ở ngõ ra.

-


PIN 6 ( PWDN) :Power down (ngõ vào tác động mức
cao.Khi chân này tác động thì sẽ cấm mạch dao động và IC
8870 hoạt động.

-

PIN 7 (OSC 1) : Clock ngõ vào MHz

-

PIN 8 (OSC 2) : Clock ngõ ra.Nối hai chân 7 và 8 với thạch
anh 3.579545 MHz. để tạo một mạch dao động nội.

-

PIN 9 (Vss): Nối GND.

- 10 -


-

PIN 10(TOE): Three Stage Output Enable(ngõ vào,Ngõ ra
Q1-Q4 hoạt động khi TOE ở mức cao.

-

PIN 11-14 từ Q1-Q4 ngõ ra, khi TOE ở mức cao các chân
này cung cấp mã tương ứng với các cặp Tone dò tìm được

(theo bảng chức năng) Khi TOE ở mức thấp dữ liệu ngõ ra ở
trạng thái trở kháng cao.

-

PIN 15 (STD): Delayed Steering (ngõ ra), ở mức cao khi
gặp tần số Tone đã được ghi nhận và gõ ra chốt thích hợp,
trở về mức thấp khi điện áp trên ST/GT nhỏ hơn điện áp
ngưỡng VTST.

-

PIN 16 (EST) : Early Steering (ngõ ra), chân này lên mức
[1] khi bộ thuật toán nhận được cặp tone và trở về mức[0]
khi mất Tone.

-

PIN 17 (ST/GT) : Steering Input /Guard tune output (ngõ
ra), khi điện áp Vc lớn hơn VTST thì ST sẽ điều khiển dò tìm
cặp Tone và chốt ngõ ra.

-

PIN 18 (VDD): Điện áp cung cấp, thường là +5V.

IC nhận tín hiệu DTMF từ đường điện thoại qua chân 2 (IN -), sau khi
thực hiện giải mã nó đưa dữ liệu ra 4 chân (từ chân 11 đến chân 14) dưới dạng 4
bit nhị phân.


- 11 -


Hình 1.5: Sơ đồ khối của MT8870.

- 12 -


+ MT8870 hoạt động theo nguyên lý:

Digit

TOE

ANY

INH

Est

Q4

Q3

Q2

Q1

L


X

H

Z

Z

Z

Z

1

H

X

H

0

0

0

1

2


H

X

H

0

0

1

0

3

H

X

H

0

0

1

1


4

H

X

H

0

1

0

0

5

H

X

H

0

1

0


1

6

H

X

H

0

1

1

0

7

H

X

H

0

1


1

1

8

H

X

H

1

0

0

0

9

H

X

H

1


0

0

1

0

H

X

H

1

0

1

0

*

H

X

H


1

0

1

1

#

H

X

H

1

1

0

0

A

H

L


H

1

1

0

1

B

H

L

H

1

1

1

0

C

H


L

H

1

1

1

1

D

H

L

H

0

0

0

0

- 13 -



Sơ đồ thực nghiệm với MT8870:

Hình 1.6: Sơ đồ thực nghiệm với IC MT8870.
Khi không bấm nút:
TOE: Logic 0
Q3: Logic 0
Q2: Logic 0
Q1: Logic 0
Khi bấm và giữ nút ‘1’:
TOE: Logic 1
Q4: Logic 0
Q3: Logic 0
Q2: Logic 0
Q1: Logic 1
Thả nút ‘1’:

- 14 -


TOE: Logic 0
Q4: Logic 0
Q3: Logic 0
Q2: Logic 0
Q1: Logic 1
Khi bấm và giữ nút ‘2’:
TOE: Logic 1
Q4: Logic 0
Q3: Logic 0
Q2: Logic 1

Q1: Logic 0
Thả nút ‘2’:
TOE: Logic 0
Q4: Logic 0
Q3: Logic 0
Q2: Logic 1
Q1: Logic 0
Khi bấm số điện thoại thì StD có mức logic là ‘1’, còn khi ta không bấm thì StD
có mức logic là ‘0’. Còn các chân Q1, Q2, Q3, Q4 là mã BCD của số điện thoại.

- 15 -


CHƯƠNG 2
TÌM HIỂU VI ĐIỀU KHIỂN PIC 16F877A
2.1 Sơ đồ chân của PIC 16F877A.

Hình 2.1: Sơ đồ chân của PIC16F877A.

2.2 Một vài thông số về vi điều khiển PIC16F877A.
Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ
dài 14 bit.Mỗi lệnh đều được thực thi trong một chu kì xung clock. Tốc độ hoạt
động tối đa cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương
trình 8Kx14 bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM
với dung lượng 256x8 byte. Số PORT I/O là 5 với 33 pin I/O.
Các đặc tính ngoại vi bao gồm các khối chức năng sau:
Timer0: bộ đếm 8 bit với bộ chia tần số 8 bit.
Timer1: bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm
dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế độ sleep.
Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler.

Hai bộ Capture/so sánh/điều chế độ rộng xung.
Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C.

- 16 -


Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều
khiển RD,WR,CS ở bên ngoài.
Các đặc tính Analog:
8 kênh chuyển đổi ADC 10 bit.
Hai bộ so sánh.
Bên cạnh đó là một vài đặc tính khác của vi điều khiển như :
Bộ nhớ Flash với khả năng ghi xóa được 100.000 lần.
Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần.
Dữ liệu bộ nhớ EEPROM có thể lưu trữ trên 40 năm.
Khả năng tự nạp chương trình với sự điều khiển của phần mềm.
Nạp được chương trình ngay trên mạch điện ICSP (In Circuit Serial
Programming) thông qua 2 chân.
Watchdog Timer với bộ dao động trong.
Chức năng bảo mật mã chương trình.
Chế độ Sleep.
Có thể hoạt động với nhiều dạng Oscillator khác nhau.

- 17 -


2.3 Sơ đồ khối vi điều khiển PIC 16F877A.

Hình 2.2: Sơ đồ khối của PIC16F877A.


- 18 -


2.4 Tổ chức bộ nhớ.

Hình 2.3: 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) và được phân thành nhiều trang (từ
page0 đến page 3) . 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ã hóa sẽ có dung lượng 1 word (14 bit).
Để mã hóa được địa chỉ của 8K word bộ nhớ chương trình, bộ đếm
chương trình có dung lượng 13 bit (PC<12:0>). Khi vi điều khiển được reset, bộ

- 19 -


đế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ỉ
hóa bởi bộ đếm chương trình.

2.4.2 Bộ nhớ dữ liệu.
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank.
Đối với PIC16F877A bộ nhớ dữ liệu được chia ra 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 đặc 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
GPR (General Purpose Register) nằm ở vùng địa chỉ còn lại trong bank. Các
thanh ghi SFR thường xuyên được sử dụng (ví dụ như thanh ghi STATUS) 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
PIC16F877A như sau:

- 20 -


Hình 2.4: Bộ nhớ dữ liệu của PIC 16F877A.

- 21 -


2.4.2.1 Thanh ghi chức năng đặc 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 lọai: thanh ghi SFR liên quan đến các chức năng bên
trong (CPU) và thanh ghi SRF dùng để thiết lập và điều khiển các khối chức
năng bên ngoài (ví dụ như ADC, PWM, …). Phần này sẽ đề cập đến các thanh
ghi liên quan đến các chức năng bên trong. Các thanh ghi dùng để thiết lập và
điều khiển các khối chức năng sẽ được nhắc đến khi ta đề cập đến các khối chức
năng đó.
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_REG (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 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 interrput-on-change tại các chân của PORTB.

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

- 22 -


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ớ EEPROM.

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.

2.4.2.2 Thanh ghi mục đích chung GPR.
Các thanh ghi này có thể được truy xuất trực tiếp hoặc gián tiếp thông qua
thanh ghi FSG (File Select Register). Đây là các thanh ghi dữ liệu thông thường,
người sử dụng có thể tùy theo mục đích chương trình mà có thể dùng các thanh
ghi này để chứa các biến số, hằng số, kết quả hoặc các tham số phục vụ cho
chương trình.

- 23 -



2.4.3 Stack.
Stack không nằm trong bộ nhớ chương trình hay bộ nhớ dữ liệu mà là một
vùng nhớ đặc biệt không cho phép đọc hay ghi. Khi lệnh CALL được thực hiện
hay khi một ngắt xảy ra làm chương trình bị rẽ nhánh, giá trị của bộ đếm chương
trình PC tự động được vi điều khiển cất vào trong Stack. Khi một trong các lệnh
RETURN, RETLW hat RETFIE được thực thi, giá trị PC sẽ tự động được lấy ra
từ trong Stack, vi điều khiển sẽ thực hiện tiếp chương trình theo đúng qui trình
định trước.
Bộ nhớ Stack trong vi điều khiển PIC họ 16F87xA có khả năng chứa được
8 địa chỉ và hoạt động theo cơ chế xoay vòng. Nghĩa là giá trị cất vào bộ nhớ
Stack lần thứ 9 sẽ ghi đè lên giá trị cất vào Stack lần đầu tiên và giá trị cất vào bộ
nhớ Stack lần thứ 10 sẽ ghi đè lên giá trị 6 cất vào Stack lần thứ 2.
Cần chú ý là không có cờ hiệu nào cho biết trạng thái Stack, do đó ta
không biết được khi nào Stack tràn. Bên cạnh đó tập lệnh của vi điều khiển dòng
PIC cũng không có lệnh POP hay PUSH, các thao tác với bộ nhớ Stack sẽ hoàn
toàn được điều khiển bởi CPU.

2.5 Các cổng xuất nhập của PIC16F877A.
Cổng xuất nhập (I/O port) chính là phương tiện mà vi điều khiển dùng để
tương tác với thế giới bên ngoài. Sự tương tác này rất đa dạng và thông qua quá
trình tương tác đó, chức năng của vi điều khiển được thể hiện một cách rõ ràng.
Một cổng xuất nhập của vi điều khiển bao gồm nhiều chân (I/O pin), tùy
theo cách bố trí và chức năng của vi điều khiển mà số lượng cổng xuất nhập và
số lượng chân trong mỗi cổng có thể khác nhau. Bên cạnh đó, do vi điều khiển
được tích hợp sẵn bên trong các đặc tính giao tiếp ngoại vi nên bên cạnh chức
năng là cổng xuất nhập thông thường, một số chân xuất nhập còn có thêm các
chức năng khác để thể hiện sự tác động của các đặc tính ngoại vi nêu trên đối với
thế giới bên ngoài. Chức năng của từng chân xuất nhập trong mỗi cổng hoàn toàn

có thể được xác lập và điều khiển được thông qua các thanh ghi SFR liên quan
đến chân xuất nhập đó.

- 24 -


Vi điều khiển PIC16F877A có 5 cổng xuất nhập, bao gồm PORTA,
PORTB, PORTC, PORTD và PORTE.

2.5.1 PORTA
PORTA (RPA) bao gồm 6 I/O pin. Đây là các chân “hai chiều”
(bidirectional pin), nghĩa là có thể xuất và nhập được. Chức năng I/O này được
điều khiển bởi thanh ghi TRISA (địa chỉ 85h). Muốn xác lập chức năng của một
chân trong PORTA là input, ta “set” bit điều khiển tương ứng với chân đó trong
thanh ghi TRISA và ngược lại, muốn xác lập chức năng của một chân trong
PORTA là output, ta “clear” bit điều khiển tương ứng với chân đó trong thanh
ghi TRISA. Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi
điều khiển tương ứng TRIS (đối với PORTA là TRISA, đối với PORTB là
TRISB, đối với PORTC là TRISC, đối với PORTD là TRISD và đối với PORTE
là TRISE). Bên cạnh đó PORTA còn là ngõ ra của bộ ADC, bộ so sánh, ngõ vào
analog ngõ vào xung clock của Timer0 và ngõ vào của bộ giao tiếp MSSP
(Master Synchronous Serial Port).
Các thanh ghi SFR liên quan đến PORTA bao gồm:
PORTA (địa chỉ 05h)

: chứa giá trị các pin trong PORTA.

TRISA (địa chỉ 85h)

: điều khiển xuất nhập.


CMCON (địa chỉ 9Ch) : thanh ghi điều khiển bộ so sánh.
CVRCON (địa chỉ 9Dh): thanh ghi điều khiển bộ so sánh điện áp.
ADCON1 (địa chỉ 9Fh) : thanh ghi điều khiển bộ ADC.

2.5.2 PORTB
PORTB (RPB) gồm 8 pin I/O. Thanh ghi điều khiển xuất nhập tương ứng
là TRISB. Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá
trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau. PORTB
còn liên quan đến ngắt ngoại vi và bộ Timer0. PORTB còn được tích hợp chức
năng điện trở kéo lên được điều khiển bởi chương trình.
Các thanh ghi SFR liên quan đến PORTB bao gồm:
PORTB (địa chỉ 06h,106h)

: chứa giá trị các pin trong PORTB

- 25 -


×