Tải bản đầy đủ (.doc) (63 trang)

Đồ án quang báo hiển thị led ma trận hình lập phương

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 (1.38 MB, 63 trang )

CHƯƠNG I

DẪN NHẬP
Ngày nay với sự phát triển của xã hội thì ngày càng có nhiều cách tiếp cận
với những thông tin mới. ta có thể biết được thông tin qua báo chí , truyền hình,
mạng internet, qua các pano, áp phích …. Thông tin cần phải truyền đi một cách
nhanh chóng, kịp thời và rộng rãi trong toàn xã hội, và việc thu thập thông tin kịp
thời, chính xác là yếu tố hết sức quan trọng trong sự thành công của mõi lĩnh vực.
Các thiết bị tự động được điều khiển từ xa qua một thiết bị chủ hoặc được điều
khiển trực tiếp qua hệ thống máy tính.
Cũng như trên thế giới công nghệ càng phát triển cao thì đồi hỏi lĩnh vực
điều khiển cần được mở rộng hơn, thông tin được cập nhật nhanh chóng và được
điều khiển một cách chính xác để mang lại nhiều lợi nhuận cho xã hội loài người.
Việc sử dụng vi điều khiển để điều khiển hiển thị có rất nhiều ưu điểm với các
phương pháp truyền thông rất đa dạng như : panô, áp phích. Với những lý do trên
nhóm thực hiện đề tài của chúng em đưa ra cách truyền tải thông tin đó là dùng
quang báo.
NỘI DUNG ĐỀ TÀI
Nghiên cứu và tìm phương pháp điều khiển và xử lý dữ liệu cho bảng led ma
trận hiển thị
Thi công bản quang báo hiển thị
Viết chương trình tạo hiệu ứng và xử lý dữ liệu
MỤC ĐÍCH CỦA ĐỀ TÀI
Trong quá trình nghiên cứu và thực hiện đề tài này nhằm giúp người học:
Tăng khả năng tự nghiên cứu cũng như tự học.
Bước đầu tiếp xúc với môi trường thực tế .
Vận dụng những kiến thức đã có đồng thời tìm tòi những kiến thức mới để
hiểu sâu sắc hơn trong lĩnh vực này.
ĐỐI TƯỢNG NGHIÊN CỨU
Các phương án điều khiển và xử lý dữ liệu cho bảng led ma trận.
Tìm hiểu vi điều khiển PIC 18F4550.


Tìm hiểu phương pháp lập trình C.
Bảng quang báo led ma trận

6


CHƯƠNG II

GIỚI THIỆU MỘT
SỐ QUANG BÁO
Ngày nay, các bảng quang báo ngày càng trở nên phổ biến và rất đa dạng về
chủng loại, dưới đây nhóm xin giới thiệu một số mô hình led cube 3D
LED CUBE 3D 4x4x4
LED CUBE 3D 5x5x5

LED CUBE 3D 8x8x8

LED CUBE 3D 16x16x16

Chúng ta có thể mở rộng khối led 3d cube chẳng hạn như 20x20x20, vv….

7


CHƯƠNG II :

CÁC PHƯƠNG
PHÁP HIỂN THỊ
LED MA TRẬN


8


Led ma trận được coi là một trong các nguồn quang điện tử phổ biến nhất.
Nó không đắt, tiêu thụ ít công suất, và dễ dàng thích hợp cho các mạch điện tử.

1. PHƯƠNG PHÁP HIỂN THỊ SỬ DỤNG THANH GHI DỊCH:
 QUÉT HÀNG:
Giới thiệu chung về phương pháp quét hàng.
Quét hàng là phương pháp mà trong một khoảng thời gian xác định chỉ cho
một hàng được tích cực hiển thị trong khi các hàng khác đều tắt, các hàng được
quét (tích cực) tuần tự ở các khoảng thời gian kế tiếp nhau được lặp lại nhiều lần
với tốc độ lớn hơn 24hình /1s sẽ cho ta một hình ảnh liên tục cần hiển thị lên trên
màn hình led ma trận.
V cc
Vcc

TIP 4 2

C TR L_B9

H 1

1K

V cc

R 30
R 29


Q 4
TIP 4 2

C TR L_B 10

H 2

1K

Vcc

C 1815

27

Q 15

T IP 4 2
H 12

Vcc

C TR L_B5

R 13
1K

C 1815

Q 25


SD I

R 15
R 14

3K3

R 39
R 38

Q 26

27

TIP 4 2
H 5

R 37

C TR L_B 13

1K

Vcc

R 18
R 17
C TR L_B 6


R 16
1K

C 1815

C TR L_B7

1K

C 1815

Q 29

TIP 4 2
H 6

R 40

C TR L_B 14

1K

C TR L_B 8

1K

Q 31

C 1815


8
7
6
5
4
3
2
1

Q 20
T IP 4 2
H 14

R 45
R 44

Q 30
TIP 4 2

R 43

C TR L_B 15

C 1815

Q 21

3K3
Q 22


27

T IP 4 2
H 15
Vcc

3K3
Q 32
TIP 4 2

R 47
C TR L_B 16

R 46
1K

C 1815

Q 23

R 48

27

18
SD O

7
6
5

4
3
2
1
0

3K3

27
Q 19

3K3

1K

27
C 1815

IN
IN
IN
IN
IN
IN
IN
IN

H 13

Vcc


R 22

A
A
A
A
A
A
A
A

T IP 4 2

Vcc

H 7

R 24
R 23

T P IC 6 B 5 9 5 /S O

Q 18

27

R 42
R 41


Q 28

27

3K3

U 2

Vcc

Vcc

R 19

C 1815

Q 17

3K3

27
Q 27

R 21
R 20

T P IC 6 B 5 9 5 /S O

Vcc


3K3
Q 24
T IP 4 2
H 16

Sơ đồ mạch thanh ghi.
9

SD I

1K

S R C LK
R C LK

C TR L_B 12

Q 16

3

H 4

R 34

SR C LR
G

Q 7


TIP 4 2

R
R
R
R
R
R
R
R

27

3K3

13
12

C 1815

R 36
R 35

Q 8

8
9

1K


3K3

D
D
D
D
D
D
D
D

C TR L_B4

R 10

Vcc

G
SR C LR

R 12
R 11

12
9
6
3
13
16
19

22
1
2
3
4
5
6
7
8
H 11

Vcc

hx
hx
hx
hx
hx
hx
hx
hx

T IP 4 2

23
20
17
14
2
5

8
11

C 1815

Q 14

27

17
16
15
14
7
6
5
4

1K

Q 13

4
5
6
7

R 31

C TR L_B 11


H 3

hd8
hd7
hd6
hd5
hd4
hd3
hd2
hd1

TIP 4 2

m a t r ix _ 3 m a u

3K3

24
21
18
15
1
4
7
10

R 33
R 32


Q 6
27

U 7

c
c
c
c
c
c
c
c

3K3

4
5
6
7
1
1
1
1

C 1815

H 10
Vcc


9
8

1K

Q 5

TIP 4 2

18

R 7

Q 11

Q 12

27

0
1
2
3
4
5
6
7

C TR L_B3


C 1815

3K3

IN
IN
IN
IN
IN
IN
IN
IN

R 9
R 8

R 28

8
7
6
5
4
3
2
1

C 1815

H 9


H
H
H
H
H
H
H
H

1K

TIP 4 2

Vcc

3K3

27

Q 3

Q 9

SD O

R 4

C TR L_B2


C 1815

Q 10

27

A
A
A
A
A
A
A
A

R 6
R 5

R 25

R
R
R
R
R
R
R
R

C 1815


27

3K3

D
D
D
D
D
D
D
D

1K

Q 1

R 27
R 26

Q 2

R C LK
SR C LK

C TR L_B 1

3K3


12
13

R 2
R 1

3

R 3

U 1


Quá trình thực hiện quét hàng:
Quét hàng sử dụng thanh ghi dịch là tương đối phức tạp cho người lập trình
trong việc đưa dữ liệu ra cột. Dữ liệu lần lượt được đưa vào chân Data_in của thanh
ghi dịch sau đó tác động xung clock dữ liệu đươc dịch đi.
VD: Đưa dữ liệu ra 8 cột được diễn ra như sau:

Sơ đồ qui trình đưa dữ liệu ra 8 cột cho led ma trận.
Dữ liệu của hàng thứ nhất được đưa ra cột sau đó tích cực hàng thứ nhất như
vây dữ liệu của hàng thứ nhất được hiển thị trên màn hình led ma trận, tiếp tục dữ
liệu của hàng thứ hai được đưa ra cột sau đó tích cực hàng thứ hai lúc này dữ liệu
của hàng thứ hai được hiển thị trên màn hình led ma trận, cứ như vậy cho đến dữ
liệu của hàng cuối cùng được đưa ra cột sau đó tích cực hàng cuối cùng. Cứ như
thế quá trình trên được lặp đi lặp lại > 24lần/1s, đến đây chúng ta quan sát được
một hình ảnh liên tục hiển thị trên màn hình led ma trận.
Ví dụ: Hiển thị chữ B lên màn hình led ma trận (hàng được tích cực ở mức 1, cột
được tích cực ở mức 0).
Hàng 1


Hàng 8
Cột 1

Cột 8

Sơ đồ hiển thị chữ B trên led ma trận dùng phương pháp quét hàng.

10


Dữ liệu thứ nhất có giá trị: 11111111 được đưa ra cột tích cực hàng thứ nhất
(điều khiển hàng thứ nhất cho ra giá trị là 1); dữ liệu thứ hai có giá trị: 00001111
đưa ra cột, tích cực hàng thứ hai; dữ liệu thứ 3 có giá trị: 01110111 đưa ra cột, tích
cực hàng thứ 3; dữ liệu thứ 4 có giá trị: 01110111 đưa ra cột, tích cực hàng thứ 4;
tiếp tục đữ liệu hàng thứ 5 có giá trị: 00001111 đưa ra cột, tích cực hàng thứ 5; kế
tiếp là dữ liệu của hàng thứ 6 có giá trị: 01110111 được đưa ra cột, tích cực hàng
thứ 6 ; dữ liệu của hàng thứ 7 có giá trị: 01110111 đưa ra cột, tích cực hàng thứ 7;
dữ liệu thứ 8 có giá trị: 00001111 đưa ra cột, tích cực hàng thứ 8. Như vậy toàn bộ
dữ liệu của chữ B đã được đưa ra hiển thị trên màn hình led ma trận. Quá trình trên
được diễn ra rất nhanh > 24lần/ 1s nên chúng ta có cảm giác nó diễn ra một cách
đồng thời nhờ đó mà chúng ta quan sát được trên màn hình led ma trậnlà một chữ B
liên tục.

 Quét cột:
Giới thiệu chung về phương pháp quét cột.
Phương pháp quét cột là phương pháp mà trong một khoảng thời gian xác
định chỉ cho một cột được tích cực hiển thị trong khi các cột khác đều tắt, các cột
được quét (tích cực) tuần tự ở các khoảng thời gian kế tiếp nhau được lặp lại nhiều
lần với tốc độ > 24 hình/1s sẽ cho ta một hình ảnh liên tục cần hiển thị lên trên màn

hình led ma trận.
Quá trình thực hiện quét cột.
Dữ liệu của cột thứ nhất được đưa ra hàng sau đó tích cực cột thứ nhất như
vây dữ liệu của cột thứ nhất được hiển thị trên màn hình led ma trận, tiếp tục dữ
liệu của cột thứ hai được đưa ra hàng sau đó tích cực cột thứ hai lúc này dữ liệu của
hàng thứ hai được hiển thị trên man hình led ma trận, cứ như vậy cho đến dữ liệu
của cột cuối cùng được đưa ra hàng sau đó tích cực cột cuối cùng. Cứ như thế quá
trình trên được lặp đi lặp lại > 24lần/1s, đến đây chúng ta quan sát được một hình
ảnh liên tục hiển thị trên màn hình led ma trận.
Ví dụ: Hiển thị chữ B lên màn hình led ma trận (hàng được tích cực ở mức1,
cột được tích cực ở mức 0).
Hàng
1

Hàng
8
Cột 1

Cột 8

Sơ đồ hiển thị chữ B trên led ma trận dùng phương pháp quét cột.

11


Dữ liệu thứ nhất có gía trị: 11111110 được đưa ra hàng, tích cực cột thứ nhất
(điều khiển cột thứ nhất cho ra giá trị là 0); dữ liệu thứ hai có giá trị: 10010010 đưa
ra hàng, tích cực cột thứ hai; dữ liệu thứ 3 có giá trị:10010010 đưa ra hàng, tích cực
cột thứ 3; dữ liệu thứ 4 có giá trị: 10010010 đưa ra hàng, tích cực cột thứ 4; tiếp tục
đữ liệu hàng thứ 5 có giá trị: 01101100 đưa ra hàng, tích cực cột thứ 5; kế tiếp là dữ

liệu của cột thứ 6 có giá trị: 00000000 được đưa ra hang, tích cực côt thứ 6 ; dữ liệu
của cột thứ 7 có giá trị: 00000000 đưa ra hàng, tích cực cột thứ 7; dữ liệu thứ 8 có
giá trị: 00000000 đưa ra hàng, tích cực cột thứ 8. Như vậy toàn bộ dữ liệu của chữ
B đã được đưa ra hiển thị trên màn hình led ma trận. Quá trình trên được diễn ra rất
nhanh > 24lần/ 1s nên chúng ta có cảm giác nó diễn ra một cách đồng thời, nhờ đó
chúng ta quan sát được trên màn hình led ma trận là một chữ B liên tục.
Ưu, nhược điểm của phương pháp hiền thị led ma trận sử dụng thanh ghi
dịch:
Ưu điểm:
Tiết kiệm đường truyền, hiệu quả kinh tế.
Tiết kiệm chân PORT.
Truyền dữ liệu đi xa hơn.
Mở rộng bảng ma trận lên một cách dễ dàng.
Lập trình dễ dàng trong phương pháp quét cột.
Nhược điểm:
Tốn thời gian để thực hiện việc truyền dữ liệu đến các cột.
Chuyển đổi không linh hoạt bằng sử dụng phương pháp chốt.
Lập trình khó khăn hơn khi sử dụng phương pháp quét hàng.

2. PHƯƠNG PHÁP HIỂN THỊ SỬ DỤNG IC CHỐT:
Hiển thị led ma trận bằng phương pháp chốt giúp cho người lập trình thay đổi
cách thức quét và hiển thị một cách linh hoạt và nhanh chóng.
0
1
2
3
4
5
6
7


1
1
1
1
1
1
1
1

9
8
7
6
5
4
3
2

c
c
c
c
c
c
c
c

1
2

3
4
5
6
7
8

1
9
6
3
1
1
1
2

LE
O E

3
6
9
2

Q
Q
Q
Q
Q
Q

Q
Q

2

0
1
2
3
4
5
6
7

x
x
x
x
x
x
x
x
1

h
h
h
h
h
h

h
h
3
0
7
4

9
8
7
6
5
4
3
2
0
1
2
3
4
5
6
7
Q
Q
Q
Q
Q
Q
Q

Q
LE
O E

D
D
D
D
D
D
D
D

0
1
2
3
4
5
6
7

D M 74LS 573

2
3
4
5
6
7

8
9

9
8
7
6
5
4
3
2

D
D
D
D
D
D
D
D

7
6
5
4
3
2
1
0


D M 74LS 573

11
1

0

1
1
1
1
1
1
1
1

2
2
1
1
2
5
8
1

8
7
6
5
4

3
2
1
d
d
d
d
d
d
d
d
h
h
h
h
h
h
h
h
4
1
8
5

2
3
4
5
6
7

8
9
7
6
5
4
3
2
1
0

U 7

Q
Q
Q
Q
Q
Q
Q
Q

1
1
1
1
1
1
1
1


2
2
1
1
1
4
7
1

8
7
6
5
4
3
2
1

m a t r ix _ 3 m a u

D M 74LS 573

O E
LE

11
1

D

D
D
D
D
D
D
D

1
11

2
3
4
5
6
7
8
9

Sơ đồ giao tiếp led ma trận dùng phương pháp chốt.

12


 CHỐT HÀNG
Chốt hàng là phương pháp trong một khoảng thời gian xác định chỉ có một cột
được tích cực, dữ liệu được đưa ra 8 hàng rồi chốt lại, dữ liệu được hiển thị trên
màn hình led ma trận. Sau đó dữ liệu kế tiếp được đưa ra 8 hàng và được chốt lại
bởi một IC chốt khác, trong khi đó dữ liệu trước đó vẫn hiện diện tại ngõ ra của IC

chốt. Như vậy dữ liệu của hàng nào được đưa ra đúng địa chỉ của hàng đó trong khi
các dữ liệu của các hàng khác vẫn hiện diện trên hàng mà không bị mất đi. Việc
thực hiện chốt hàng được thể hiện ở lưu đồ như sau:

Sơ đồ qui trình hiển thị chốt hàng.
 CHỐT CỘT:
Chốt cột là phương pháp trong một khoảng thời gian xác định chỉ có một hàng
được tích cực, dữ liệu được đưa ra 8 cột rồi chốt lại, dữ liệu được hiển thị trên màn
hình led ma trận. Sau đó dữ liệu được đưa ra 8 cột kế tiếp và được chốt lại bởi một
IC chốt khác, trong khi đó dữ liệu trước đó vẫn hiện diện tại ngõ ra của IC chốt (dữ
liệu vẫn hiện diện tại các cột). Như vậy dữ liệu của cột nào được đưa ra đúng địa
chỉ của cột đó trong khi các dữ liệu của các cột khác vẫn hiện diện trên cột mà
không bị mất đi. Việc thực hiện chốt cột được thể hiện ở lưu đồ như sau:

Sơ đồ qui trình hiển thị chốt cột..

13


Ưu, nhược điểm của phương pháp hiền thị led ma trận sử dụng IC chốt:
Ưu điểm:
Mở rộng số hàng, số cột của bảng quang báo.
Dữ liệu được truyền đi nhanh.
Chuyển đổi cách quét hàng, cột một cách linh hoạt.
Nhược điểm:
Tạo bảng mã khó khăn.
Khó khăn trong việc lập trình xuất dữ liệu ra.

14



CHƯƠNG III

TÌM HIỂU VÀ
KHẢO SÁT VỀ
LINH KIỆN

15


I. PIC 18F4550
1. Sơ đồ khối của Pic18F4550 và những họ tương tự:

16


17


Một vài thông số về Pic 18F455
Đặc tính bus nối tiếp:
Tuân thủ chuẩn giao tiếp USB V2.0
Tốc độ thấp (1.5Mb/s) và tốc độ đầy đủ(12Mb/s)
Hỗ trợ điều khiển,ngắt,bất đồng bộ và khối truyền số lượng lớn.
Hỗ trợ tối đa 32 điểm cuối(16 kết nối đôi).
2Kbyte truy cập bộ nhớ Ram cho các cổng USB.
Chế độ quản lí nguồn:
Chạy(run):CPU on,thiết bị ngoại vi on.
Rảnh rỗi(idle):CPU off,thiết bị ngoại vi on.
Ngủ(sleep):CPU off,thiết bị ngoại vi off.

Chế độ rảnh rỗi dòng điện hạ xuống 5,8uA
Chế độ ngủ dòng điện hạ xuống 0,1uA.
Bộ dao động timer1:1,1uA,33kHz,2V.
Watchdog timer:2,1uA.
Cơ cấu tổ chức linh hoạt của oscillator:
4 chế độ thach anh trong đó bao gồm chuẩn PLL cho USB.
2 chế độ xung ngoài lên đến 48MHz.
Khối dao động bên trong có 8 lựa chọn tần số từ 31kHz lên đến 8MHz.
Hai khối oscillator như vậy cho phép lựa chọn để microcontroller và các module
usb có thể hoạt động ớ các xung clock khác nhau.
Đặc tính nổi bật của thiết bị ngoại vi:
High-Current Sink/Source: 25 mA/25 mA.
3 ngắt ngoại vi
4 chuẩn timer(timer0-timer3)
Lên đến 2chuẩn Capture/Compare/PWM (CCP):
Capture is 16-bit, max. resolution 5.2 ns (TCY/16)
Compare is 16-bit, max. resolution 83.3 ns (TCY)
PWM output: PWM resolution is 1 to 10-bit
Tăng cường(Enhanced) Capture/Compare/PWM (ECCP) module:
cấp số nhân chế độ ngõ ra.
có thể chọn ưu tiên
chương trình thời gian chết
tự động shut-down và tự động restart
Tăng cường chuẩn USART:
hỗ trợ bus LIN
Master Synchronous Serial Port (MSSP) module
Hỗ trợ 3 đường dây như chuẩn SPI (tất cả 4 chế độ)và I2C™ chế độ chủ và tớ
10-bit, lên đến 13kênh chuyển đổi Analog-to-Digital(A/D)
So sánh đôi Analog với nhiều ngõ vào.
Đặc tính đặc biệt của vi điều khiển:

Bộ nhớ chương trình có thể ghi/xóa lên đến 100.000 lần
Bộ nhớ dữ liệu EEPROM có thể ghi/xóa đến 1.000.000 lần
Flash/Data EEPROM có thể duy trì đến 40 năm.
Bản thân có thể lập trình được dưới sự điều khiển của phần mềm.
Ưu tiên cho các chế độ ngắt. Hoạt động rộng dưới điện áp từ (2V-5.5V)

18


Đặc tính

Pic18F2455

Pic18F2550

Pic18f4455

Pic18F4550

Tần số hoạt động
Bộ nhớ chương
trình(bytes)
//(instruction)
Data Memory (Bytes)
Data EEPROM Memory
(Bytes)
Ngắt chính
I/O port

48MHz

24576

48MHz
32768

48MHz
24576

48MHz
32768

12288
2048
256

16384
2048
256

12288
2048
256

16384
2048
256

timers
Capture/Compare/PWM
Modules

Enhanced Capture/
Compare/PWM
Modules
Serial Communications
Universal Serial Bus
(USB)
Module
Streaming Parallel Port
(SPP)
10-Bit Analog-to-Digital
Module
Comparators
Resets (and Delays)

Programmable LowVoltage
Detect
Programmable Brownout Reset
Hướng dẫn cài đặt

19
19
20
20
Ports A, B, C, Ports A, B, C, Ports A, B, C, Ports A, B, C,
(E)
(E)
D,E
D,E
4
4

4
4
2
2
1
1
0

0

1

1

MSSP,
Enhanced
USART
1

MSSP,
Enhanced
USART
1

MSSP,
Enhanced
USART
1

MSSP,

Enhanced
USART
1

0

0

1

1

10 ngõ vào

10 ngõ vào

13 ngõ vào

13 ngõ vào

2
POR, BOR,
RESET
Instruction,
Stack Full,
Stack
Underflow
(PWRT, OST),
MCLR
(optional),

WDT
Yes

2
POR, BOR,
RESET
Instruction,
Stack Full,
Stack
Underflow
(PWRT, OST),
MCLR
(optional),
WDT
Yes

2
POR, BOR,
RESET
Instruction,
Stack Full,
Stack
Underflow
(PWRT, OST),
MCLR
(optional),
WDT
Yes

2

POR, BOR,
RESET
Instruction,
Stack Full,
Stack
Underflow
(PWRT, OST),
MCLR
(optional),
WDT
yes

Yes

Yes

Yes

Yes

75
hướng 75
hướng 75
hướng 75
hướng
dẫn,và với 83 dẫn,và với 83 dẫn,và với 83 dẫn,và với 83


packages


hướng
dẫn
kích hoạt bên
ngoài
28-pin PDIP
28-pin SOIC

hướng
dẫn
kích hoạt bên
ngoài
28-pin PDIP
28-pin SOIC

hướng
dẫn
kích hoạt bên
ngoài
40-pin PDIP
44-pin QFN
44-pin TQFP

hướng
dẫn
kích hoạt bên
ngoài
40-pin PDIP
44-pin QFN
44-pin TQFP


Bảng đặc tính của PIC

2. SƠ ĐỒ KHỐI CỦA PIC18F4455/4550(40PIN):

20


3. Bộ nhớ chương trình và stack của pic18f2455/2550/4455/4550
 Bộ nhớ chương trình:
Bộ nhớ chương trình của pic18Fx455 và pic 18Fx4550 là bộ nhớ flash,dung lượng bộ
nhớ của pic 18Fx455 là 24K word(1word=16bit) và của pic 18Fx550 là 32K word.
Để mã hóa được địa chỉ của bộ nhớ chương trình,bộ đếm chương trình(program
counter) có dung lượng 21bit(PC<20:0>)
Pic 18 này có 2vector ngắt đó là vector Reset địa chỉ 0000h và vector ngắt địa chỉ ở
0008h và 0018h.

SƠ ĐỒ BỘ NHỚ CHƯƠNG TRÌNH

21


 STACK CỦA IC18F2455/2550/4455/4550:
Địa chỉ trả về và những thanh ghi liên kết

STKPTR: STACK POINTER REGISTER(thanh ghi chọn stack)

bit 7 STKFUL: Stack Full Flag bit(cờ báo stack đầy)
1 = Stack became full or overflowed (stack đầy hoặc tràn)
0 = Stack has not become full or overflowed(stack chưa đầy)
bit 6 STKUNF: Stack Underflow Flag bit (1)

1 = Stack underflow occurred (stack uderflow xảy ra)
0 = Stack underflow did not occur(stack unserflow không xảy ra)
bit 5 Unimplemented: Read as ‘0’(không quan tâm và được xem như là “0”)
bit 4-0 SP4:SP0: Stack Pointer Location bits(những bit chọn vị trí stack)
Note 1: Bit 7 and bit 6 are cleared by user software or by a POR.(bit7 và bit6 chỉ
được xóa bởi phần mềm bởi POR)
Bộ nhớ dữ liệu:bộ nhớ dữ liệu trên thiết bị pic18 thì được bổ sung thêm Ram
tĩnh.Mỗi thanh ghi trên bộ nhớ chương trình có 12bit địa chỉ ,cho phép lưu trữ dữ liệu
lên tới 4096byte.Bộ nhớ dữ liệu được cất giữ vào 16 bank mỗi bank chứa 256byte.
Một số thanh ghi chức năng đặc biệt(special function registers):
Đây là các thanh ghi được sử 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 và bên ngoài vi điều khiển.

22


4. CÁC THANH GHI ĐẶC BIỆT
SƠ ĐỐ CÁC THANH GHI ĐẶC BIỆT (SPECIAL FUNCTION REGISTER)

 Thanh ghi STATUS(FD8h):
Thanh ghi có chứa kết quả thực hiện phép toán của khối ALU

23


bit 7-5 Unimplemented: Read as ‘0’(không quan tâm nên mặc định là “0”
bit 4 N: Negative bit (bit phủ định) (ALU MSB = 1).
1 = Result was negative (kết quả phủ định)
0 = Result was positive(kết quả tích cực)
bit 3 OV: Overflow bit (bit tràn)

bit này chỉ ra sự tràn của 7 bit quan trọng là nguyên nhân dẫn đến sự thay đổi
trạng thái bit OV.
1 = Overflow occurred for signed arithmetic (có tràn xảy ra)
0 = No overflow occurred(không có tràn xảy ra)
bit 2 Z: Zero bit
1 = The result of an arithmetic or logic operation is zero(kết quả của thuật toán
là “0”)
0 = The result of an arithmetic //
(kết quả của thuật toán
khác “0”)
bit 1 DC: Digit Carry/Borrow bit(bit số mang theo/bit mượn)
từ các thanh ghi sau ADDWF, ADDLW, SUBLW and SUBWF
1 = được thêm vào từ kết quả của sự thay đổi trạng thái từ các thanh ghi trên
0 = có nghĩa trạng của các thanh ghi trên không thay đổi.
bit 0 C: Carry/Borrow bit:( bit mang theo/bit mượn)
của các thanh ghi ADDWF, ADDLW, SUBLW and SUBWF:
1 = được thêm vào MSB của kết quả xảy ra.
0 = được thêm vào MSB của kết quả xảy ra.
• Việc truy xuất bộ nhớ dữ liệu EEPROM được điều khiển bởi hai thanh ghi
EECON1 và EECON2 nhưng do thanh ghi EECON2 không phải là thanh ghi
vật lí nên chúng ta chỉ đề cập đến thanh ghi EECON1
 EECON1: Data EEPROM control register 1(thanh ghi kiểm soát dữ liệu
eeprom 1)

bit 7 EEPGD: bit chọn bộ nhớ chương trình hay bộ nhớ dữ liệu
1 = truy xuất bộ nhớ chương trình
0 = truy xuất bộ nhớ dữ liệu
bit 6 CFGS:bit chọn Flash Program/Data EEPROM hay là thanh ghi cấu hình
1 = truy xuất thanh ghi cấu hình
0 = truy xuất bộ nhớ chương trình hay là bộ nhớ dữ liệu

bit 5 :bit này không quan tâm nên mặc định là “0”
bit 4 FREE: bit cờ báo hiệu cho phép xóa
24


1 = xóa bộ nhớ chương trình bằng TBLPTR và tiếp theo là lệnh WR
0 = chỉ thực hiện lệnh ghi
bit 3 WRERR: bit cờ báo hiệu lỗi chương trình/dữ liệu EEPROM
1 = hoạt động bị lỗi nên phải kết thúc sớm
0 = hoạt động ghi hoàn tất
bit 2 WREN: bit cờ báo hiệu việc ghi chương trình/dữ liệu EEPROM
1 = cho phép ghi đến Flash program/data EEPROM
0 = cản trở không cho lệnh ghi đến Flash program/data EEPROM
bit 1 WR: bit điều khiển lệnh ghi
1 = bắt đầu thì dữ liệu EEPROM được xóa và ghi hoặc có thể chỉ xóa hoặc chỉ
ghi(bit này chỉ có thể set bằng phần mềm)
0 = việc ghi đã hoàn thành
bit 0 RD: bit điều khiển lệnh đọc
1 = lệnh đọc dữ liệu EEPROM bắt đầu (RD được xóa bằng phần cứng. RD bit
chỉ có thể set bằng phần mềm.RD bit không thể set được khi EEPGD = 1
or CFGS = 1.)
0 = không thực hiện lệnh đọc
 Thanh ghi INTCON(interrupt control register):

bit 7 GIE/GIEH: Global Interrupt Enable bit(bit ngắt toàn cục)
khi IPEN = 0:
1 = cho phép tất cả các ngắt
0 = không cho phép ngắt nào hoạt động khi IPEN = 1:
1 = cho phép các ngắt ưu tiên cao hoạt động
0 = không cho các ngắt ưu tiên cao hoạt động

bit 6 PEIE/GIEL: Peripheral Interrupt Enable bit(bit cho phép các ngắt ngoại vi hoạt
động)
khi IPEN = 0:
1 = cho phép các ngắt ngoại vi hoạt động
0 = không cho phép các ngắt ngoại vi hoạt động
khi IPEN = 1:
1 = cho phép các ngắt ưu tiên thấp hoạt động
0 = không cho phép các ngắt ưu tiên thấp hoạt động
bit 5 TMR0IE: TMR0 Overflow Interrupt Enable bit (bit cho phép ngắt tràn timer0
hoạt động)
1 = cho phép ngắt tràn timer0 hoạt động
0 = không cho phép ngắt tràn timer0 hoạt động
bit 4 INT0IE: INT0 External Interrupt Enable bit (bit cho phép ngắt ngoài hoạt động)
1 = cho phép ngắt ngoài
0 = không cho phép ngắt ngoài
25


bit 3 RBIE: RB Port Change Interrupt Enable bit(bit cho phép ngắt dựa vào thay đổi
trên portB hoạt động)
1 = cho phép ngắt hoạt động
0 = không cho phép ngắt hoạt động
bit 2 TMR0IF: TMR0 Overflow Interrupt Flag bit(bit cờ báo hiệu ngắt tràn timer0)
1 = thanh ghi timer0 bị tràn(chỉ có thể xóa bằng phần mềm)
0 = thanh ghi timer0 không bị tràn
bit 1 INT0IF: INT0 External Interrupt Flag bit (bit cờ báo hiệu có ngắt ngoài)
1 = ngắt ngoài đang diễn ra(chỉ có thể xóa bằng phần mềm)
0 = ngắt ngoài không có diễn ra
bit 0 RBIF: RB Port Change Interrupt Flag bit(bit cờ báo hiệu có ngắt dựa vào sự
thay đổi portB)

1 = có sự thay đổi từ pinB7-B4 (phải xóa bằng phần mềm)
0 = có sự thay đổi trạng thái từ pinB7-B4
 Thanh ghi INTCON2(interrupt control register 2):

bit 7 RBPU: PORTB Pull-up Enable bit(bit cho phép portB kéo lên)
1 = tất cả portB không được phép kéo lên
0 = chỉ cho phép riêng portB được phép chốt giá trị
bit 6 INTEDG0: ngắt ngoài(0) phụ thuộc vào cạnh tác động được chọn
1 = ngắt ở cạnh lên
0 = ngắt ở cạnh xuống
bit 5 INTEDG1: ngắt ngoài(1)phụ thuộc vào cạnh tác động được chọn
1 = ngắt ở cạnh lên
0 = ngắt ở cạnh xuống
bit 4 INTEDG2: ngắt ngoài (2) phụ thuộc vào cạnh tác động được chọn
1 = ngắt ở cạnh lên
0 = ngắt ở cạnh xuống
bit 3 không dùng đến nên mặc định là “0”
bit 2 TMR0IP: ngắt ưu tiên của tràn timer0
1 = ưu tiên cao
0 = ưu tiên thấp
bit 1 không dùng đến nên mặc định là “0”
bit 0 RBIP: ngắt ưu tiên phụ thuộc vào sự thay đổi trên portB
1 = ưu tiên cao
0 = ưu tiên thấp
 Thanh ghi INTCON3(interrupt control register 3):

26


bit 7 INT2IP: bit ưu tiên ngắt ngoài INT2

1 = ưu tiên cao
0 = ưu tiên thấp
bit 6 INT1IP: bit ưu tiên ngắt ngoài INT1
1 = ưu tiên cao
0 = ưu tiên thấp
bit 5 không dùng đến nên mặc định là “0”
bit 4 INT2IE: bit cho phép ngắt ngoài INT2
1 = cho phép ngắt ngoài INT2 hoạt động
0 = không cho phép ngắt ngoài INT2 hoạt động
bit 3 INT1IE: bit cho phép ngắt ngoài INT1
1 = cho phép ngắt ngoài INT1 hoạt động
0 = không cho phép ngắt ngoài INT1 hoạt động
bit 2 không dùng nên mặc định là “0”
bit 1 INT2IF:bit cờ của ngắt ngoài INT2
1 = ngắt ngoài INT2 đã thực thi(chỉ có thể xóa bit này bằng phần mềm)
0 = ngắt ngoài INT2 chưa thực thi
bit 0 INT1IF: bit cờ của ngắt ngoài INT1
1 = ngắt ngoài INT1 đã thực thi(chỉ có thể xóa bit này bằng phần mềm)
0 = ngắt ngoài INT1 chưa thực thi

• Thanh ghi PIR:là thanh ghi chứa các bit cờ ngắt của các thiết bị ngoại vi.Ở đây
chúng ta có 2 thanh ghi thuộc loại này đó là PIR1 và PIR2.
 Thanh ghi PIR1(peripheral interrupt request(flag)register 1)

bit 7 SPPIF: bit cờ ngắt song song chức năng đọc/ghi
1 = đọc hoặc ghi vừa mới được thực thi (phải xóa bằng phần mềm)
0 = không có việc đọc /ghi được thực thi
bit 6 ADIF: bit cờ ngắt của khối chuyển đổi A/D
1 = việc chuyển đổi A/D hoàn tất (phải xóa bằng phần mềm)
0 = việc chuyển đổi A/D chưa hoàn tất

bit 5 RCIF: bit cờ ngắt của việc nhận dữ liệu qua chuẩn UESART

27


1 = nhận dữ liệu qua chuẩn UESART vào bộ đệm đến RCREG đã đầy(xóa bit
này khi RCREG đã đọc xong)
0 = bộ đệm đang trống
bit 4 TXIF: bít cờ ngắt của việc truyền dữ liệu qua chuẩn UESART
1 = truyền dữ liệu qua chuẩn UESART từ bộ đệm đến TXREG đang rỗng(chỉ
có thể xóa bit này khi TXREG đã ghi xong)
0 = bộ đệm đang đầy
bit 3 SSPIF: bit cờ ngắt của Master Synchronous Serial Port
1 = việc truyền/nhận đã hoàn tất(bit này phải xóa bằng phần mềm)
0 = chờ để truyền/nhận
bit 2 CCP1IF: bit cờ ngắt của CCP1
Chế độ Capture:
1 = việc cập nhật giá trị trong thanh ghi TMR1 đã thực thi (phải xóa bit này
bằng phần mềm)
0 = chưa cập nhật giá trị vào thanh ghi TMR1
Chế độ Compare:
1 = giá trị cần so sánh bằng với giá trị trong thanh ghi TMR1(phải xóa bằng
phần mềm)
0 = giá trị cần so sánh không bằng với giá trị trong thanh ghi TMR1
Chế độ PWM: (không được dùng ở chế độ này).
bit 1 TMR2IF: TMR2 to PR2 Match Interrupt Flag bit
1 = giá trị trong thanh ghi TMR2 bằng với giá trị trong thanh ghi PIR2(phải
xóa bằng phần mềm)
0 = giá trị giữa hai thanh ghi TMR2 và PIR2 không bằng nhau
bit 0 TMR1IF: bit cờ ngắt tràn timer1

1 = thanh ghi timer1 tràn(phải xóa bằng phần mềm)
0 = thanh ghi timer1 chưa tràn
 Thanh ghi PIR2(peripheral interrupt request(flag)register 2)

bit 7 OSCFIF: Oscillator Fail Interrupt Flag bit
1 = hệ thống dao động đã bị đứt,xung clock ngõ vào có thể thay thế bằng
INTOSC (phải được xóa bằng phần mềm)
0 = hệ thống xung clock hoạt động
bit 6 CMIF: bit cờ ngắt của Comparator
1 = ngõ vào của Comparator bị thay đổi(phải xóa bằng phần mềm)
0 = ngõ vào của Comparator không thay đổi
bit 5 USBIF: bit cờ ngắt của USB
1 = USB có yêu cầu ngắt (phải xóa bằng phần mềm)
0 = không có ngắt được yêu cầu
bit 4 EEIF: bit cờ ngắt của hoạt động ghi Data EEPROM/Flash

28


1 = việc ghi dữ liệu đã hoàn tất(phải xóa bằng phần mềm)
0 = việc ghi dữ liệu chưa hoàn tất hoặc có thể chưa bắt đầu
bit 3 BCLIF: bit cờ ngắt của việc xung đột bus
1 = có xung đột bus diễn ra(phải được xóa bằng phần mềm)
0 = không có xung đột bus
bit 2 HLVDIF: bit cờ ngắt của việc phát hiện điện áp cao/thấp
1 = có diện áp cao/thấp diễn ra(phải xóa bằng phần mềm)
0 = không có điện áp cao/thấp diễn ra
bit 1 TMR3IF: bit cờ ngắt tràn timer3
1 = thanh ghi TMR3 tràn(phải xóa bằng phần mềm)
0 = thanh ghi TMR3 không tràn

bit 0 CCP2IF: bit cờ ngắt CCP2
Chế độ Capture:
1 = thanh ghi TMR1 hoặc thanh ghi TMR3 đang cập nhật dữ liệu (phải xóa
bằng phần mềm)
0 = không có việc cập nhật dữ liệu ở thanh ghi TMR1 và TMR3
Chế độ Compare:
1 = giá trị cần so sánh bằng với giá trị trong thanh ghi TMR1 hoặc thanh ghi
TMR3 (phải xóa bằng phần mềm)
0 = giá trị cần so sánh không bằng với giá trị trong thanh ghi TMR1 hoặc
TMR3
Chế độ PWM:không được sử dụng cho chế độ này.
• Thanh ghi PIE:là thanh ghi chứa riêng các bit cho phép các ngắt ngoại vi.Khi
IPEN=0,bit PEIE phải được set để cho phép các ngắt ngoại vi hoạt động.Ở đây
chúng ta có 2 thanh ghi cho phép ngắt ngoại vi hoat động đó là PIE1 và PIE2.
 Thanh ghi PIE1(peripheral interrupt enable 1):

bit 7 SPPIE: bit cho phép ngắt SPP read/write
1 = cho phép ngắt SPP read/write
0 = không cho phép ngắt SPP read/write
bit 6 ADIE: bit cho phép ngắt khối chuyển đổi A/D
1 = cho phép ngắt A/D
0 = không cho phép ngắt A/D
bit 5 RCIE: bit cho phép ngắt nhận dữ liệu theo chuẩn EUSART
1 = cho phép ngắt
0 = không cho phép ngắt
bit 4 TXIE: bit cho phép ngắt truyền dữ liệu theo chuẩn EUSART
29


1 = cho phép ngắt

0 = không cho phép ngắt
bit 3 SSPIE: bit cho phép ngắt Master Synchronous Serial Port
1 = cho phép ngắt MSSP
0 = không cho phép ngắt MSSP
bit 2 CCP1IE:bit cho phép ngắt CCP1
1 = cho phép ngắt CCP1
0 = không cho phép ngắt CCP1
bit 1 TMR2IE: TMR2 to PR2 Match Interrupt Enable bit
1 = cho phép ngắt
0 = không cho phép ngắt
bit 0 TMR1IE: bit cho phép ngắt tràn TMR1
1 = cho phép ngắt
0 = không cho phép ngắt
 Thanh ghi PIE2(peripheral interrupt enable 2):

bit 7 OSCFIE: bit cho phép ngắt khi oscillator bi đứt
1 = cho phép ngắt
0 =không cho phép ngắt
bit 6 CMIE: bit cho phép ngắt Comparator
1 = cho phép ngắt
0 = không cho phép
bit 5 USBIE: bit cho phép ngắt USB
1 = cho phép ngắt
0 =không cho phép ngắt
bit 4 EEIE:bit cho phép ngắt hoạt động read/write data EEPROM/Flash Write
1 = cho phép ngắt
0 =không cho phép ngắt
bit 3 BCLIE: bit cho phép ngắt xung đột bus
1 = cho phép ngắt
0 =không cho phép ngắt

bit 2 HLVDIE: bit cho phép ngắt High/Low-Voltage Detect
1 = cho phép ngắt
0 =không cho phép ngắt
bit 1 TMR3IE: bit cho phép ngắt tràn TMR3
1 = cho phép ngắt
0 =không cho phép ngắt
bit 0 CCP2IE: bit cho phép ngắt CCP2
1 = cho phép ngắt
30


×