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

ĐIỀU KHIỂN MA TRẬN LED MATRIX BẰNG 16F877A - 6 LED MATRIX

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

TRƢỜNG ĐẠI HỌC CÔNG NGHIỆP TPHCM
KHOA CÔNG NGHỆ ĐIỆN TỬ

ĐỀ TÀI

GVHD

: PHẠM QUANG TRÍ

SVTH

: LÊ MINH TÍN

09093121

TRẦN TIẾN

09078691

LỚP

: DHDT5B

TP.HCM, ngày 27 tháng 8 năm 2012


NH N

T CỦA GI O VI N HƢ NG

N



...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................

Điểm số bằng số:___________Điểm số bằng chữ:_______________
TP.HCM, ngày…….tháng………..năm 2012
(GV hướng dẫn ký và ghi rõ họ tên)



NH N XÉT CỦA GIÁO VIÊN PHẢN BIỆN
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
Điểm số bằng số:___________Điểm số bằng chữ:_______________
TP.HCM, ngày…….tháng………..năm 2012
(GV ký và ghi rõ họ tên)



LỜI CẢM ƠN
Lời đầu tiên, chúng em xin gửi lời cảm ơn tới các thầy cô giáo trong trường ĐH
Công nghiệp TpHcm đã truyền đạt cho chúng em những kiến thức quí báu trong suốt
thời gian học tập tại trường vừa qua.
Ch ng m xin ch n thành cảm ơn các thầy cô trong ho Công nghệ điện tử đã
truyền đạt ch ng m những iến thức về chuy n môn và gi p ch ng m định hướng
th o s hiểu iết và hả năng để ch ng m th c hiện tốt đ án
và tạo điều iện thuận

i cho ch ng m

hoàn t t học phần này.
Ch ng m c ng xin gởi ời cảm ơn ch n thành đến thầy Phạm Quang Trí- giáo
vi n hướng

n, đã tạo điều kiện gi p đ ch ng m hoàn thành đ án này.

Sau cùng, chúng em xin gửi lời cảm ơn đến gi đình, ạn è động vi n, đóng góp
ý kiến trong quá trình hoàn thành đ án này.


LỜI MỞ ĐẦU
Ngày nay, những ứng dụng củ vi điều khiển đã đi s u vào đời sống sinh hoạt
và sản xu t củ con người, là một phần t t yếu không thể thiếu trong đời sống hiện
đại. Thế kỷ 21 đư c xem là thế kỷ của khoa học công nghệ, là thế kỷ mà máy móc
đư c thiết kế và lập trình một cách t động để thay thế các hoạt động củ con người
trong sản xu t, c ng như để phục vụ các công việc trong sinh hoạt. Trong một cuộc
sống mang tính t động hoá cao thì các mạch vi xử ý như à một công cụ đắc l c,
quan trọng, hỗ tr cho con người th c hiện nhu cầu ngày càng cao và càng hoàn thiện

của mình.
S u hi đư c học, nghiên cứu về vi điều khiển ở phần lý thuyết. Chúng em có
thể tiến hành các bài thí nghiệm đối với vi điều khiển nhằm mục đích gi p ch ng m
hiểu một cách tường tận hơn về những gì ch ng t đã học trong phần lý thuyết c ng
như cách vận dụng nó vào th c tế.
Trong th c tế, các ứng dụng củ vi điều khiển r t đ

ạng và phong phú. Từ

những ứng dụng đơn giản chỉ vài thiết bị ngoại vi cho đến những hệ thống vi điều
khiển phức tạp. Với những hệ thống ứng dụng rộng rãi, đ

ạng và phong ph như vậy

với những kiến thức đã học và nghiên cứu ch ng m xin trình ày sơ ư c của khối vi
điều khiển PIC 16F877A, cách thức giao tiếp với máy tính và mô hình thí nghiệm ứng
dụng của nó.
Tuy đã cố gắng nhiều nhưng o thời gian và kiến thức có hạn nên chắc chắn
không tránh khỏi những thiếu sót, em trân trọng t t cả những ý kiến ph

ình, đóng

góp của các thầy cô ch m đ án, và những chỉ d n của thầy Nguyễn Minh Ngọc. Em
xin chân thành cảm ơn.


MỤC LỤC
CHƢƠNG I: SƠ LƢỢC PHẦN CỨNG ............................................................. 1
I. PIC 16F877A .................................................................................................. 1
1.Giới thiệu chung về PIC ............................................................................ 1

2.PIC 16F877A ............................................................................................ 5
II.LED Ma trận................................................................................................. 21
1.Giới thiệu về led ma trận ......................................................................... 21
2.Các phương pháp hiển thị cho quang báo ............................................... 23
III. IC GHI DỊCH 6B595 ................................................................................. 29
IV. KHẢO SÁT TRANSISTOR A1015.......................................................... 32
V. KHẢO SÁT IC ULN2803 .......................................................................... 33
VI. GIAO TIẾP RS-232 ................................................................................... 34
CHƢƠNG II: GI I THIỆU VỀ NGÔN NGỮ L P TRÌNH ......................... 37
1.Tổng quan về C HI-TECH ...................................................................... 37
2.Mô tả nội ung chương trình ................................................................... 38
CHƢƠNG III:THIẾT KẾ HỆ THỐNG .......................................................... 40
I. THIẾT KẾ PHẦN CỨNG ........................................................................... 40
1.Mạch module PIC .................................................................................... 40
2.Mạch RS232 ............................................................................................ 41
3.Mạch led ma trận ..................................................................................... 42
II. THIẾT KẾ PHẦN MỀM............................................................................. 43
1.Lưu đ giải thuật C HI – TECH .............................................................. 43
2.Chương trình vi xử lý .............................................................................. 46
CHƢƠNG IV: KẾT LU N ............................................................................... 52
I. ƯU VÀ NHƯỢC ĐIỂM CỦA THI CÔNG MẠCH .................................... 52
II.CÁC HƯỚNG PHÁT TRIỂN ĐỀ TÀI ....................................................... 52
III.KẾT LUẬN ................................................................................................. 52
IV. TÀI LIỆU THAM KHẢO ......................................................................... 53


ĐỒ N 1

GVH : PHẠM QUANG TRÍ


CHƢƠNG I : SƠ LƢỢC PHẦN CỨNG
I. GI I THIỆU VỀ PIC 16F877A
1. GI I THIỆU CHUNG VỀ PIC
PIC là viết tắt củ

Progr m

Int

ig nt Comput r , do hãng General

Instrum nt đặt t n cho vi điều khiển đầu tiên của họ: PIC1650 đư c thiết kế để dùng
làm các thiết bị ngoại vi cho vi điều khiển CPU1600. Vi điều khiển này s u đó đư c
nghiên cứu phát triển thêm và từ đó hình thành n n òng vi điều khiển PIC ngày nay.
1.1 SỰ PHỔ IẾN CỦA VI ĐIỀU KHIỂN PIC
Trên thị trường có r t nhiều họ vi điều khiển như 8051, Motoro

68HC, AVR,

ARM... Tuy nhiên, hiện n y PIC đ ng đư c sử dụng rộng rãi ở Việt Nam vì những
nguyên nhân 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 hô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à 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.
- Hiện nay tại Việt N m c ng như tr n thế giới, PIC đư 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
- S hỗ tr của nhà sản xu t về 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 đ

ạng của vi điều khiển PIC không ngừng đư c phát triển.

1 2 KIẾN TR C PIC
C u trúc phần cứng của một vi điều khiển đư c thiết kế theo hai dạng kiến trúc:
Kiến trúc Von-Neumann và kiến trúc Harvard.

1


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

Hình 3.1: Kiến trúc Harvard và kiến trúc Von-Neuman
Tổ chức phần cứng củ PIC đư c thiết kế theo kiến tr c H rv r . Điểm khác biệt
giữa kiến trúc Harvard và kiến trúc Von-Neumann là c u trúc bộ nhớ dữ liệu và bộ
nhớ chương trình.
Đối với kiến trúc Von-Neuman, bộ nhớ dữ liệu và bộ nhớ chương trình nằm chung
trong một bộ nhớ, o đó trong cùng một thời điểm CPU chỉ tương tác với bộ nhớ dữ
liệu hoặc bộ nhớ chương trình. Như vậy có thể nói kiến trúc Von-Neumann không
thích h p với c u trúc của một vi điều khiển.
Đối với kiến trúc Harvard, bộ nhớ dữ liệu và bộ nhớ chương trình tách r thành h i
bộ nhớ riêng biệt. Do đó trong cùng một thời điểm CPU có thể tương tác với cả hai
bộ nhớ, như vậy tốc độ xử lí củ vi điều khiển đư c cải thiện đáng ể. Một điểm cần
chú ý nữa là tập lệnh trong kiến trúc Harvard có thể đư c tối ưu tùy th o y u cầu kiến
trúc củ vi điều khiển mà không phụ thuộc vào c u trúc dữ liệu. Ví dụ, đối với vi điều
khiển òng 16Fxxx, độ dài lệnh luôn là 14 bit (trong khi dữ liệu đư c tổ chức thành
từng yt ), còn đối với kiến trúc Von-Neum nn, độ dài lệnh luôn là bội số của 1 byte

(do dữ liệu đư c tổ chức thành từng byte). Điều này có nghĩ tập lệnh củ vi điều
khiển thuộc c u trúc Harvard sẽ ít lệnh hơn, ngắn hơn, đơn giản hơn để đáp ứng yêu
cầu mã hóa lệnh bằng một số ư ng bit nh t định.
Vi điều khiển đư c tổ chức theo kiến tr c H rv r còn đư c gọi à vi điều khiển
RISC (R uc

Instruction S t Comput r) h y vi điều khiển có tập lệnh rút gọn.

Vi điều khiển đư c thiết kế theo kiến trúc Von-N um n còn đư c gọi à vi điều
khiển CISC (Comp x Instruction S t Comput r) h y vi điều khiển có tập lệnh phức
tạp vì mã lệnh của nó không phải là một số cố định mà luôn là bội số của 8 bit (1
byte).
2


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

1.3 PIPELINING
Đ y chính à cơ chế xử lí lệnh củ các vi điều khiển PIC. Một chu kì lệnh của vi
điều khiển sẽ bao g m 4 xung clock. Ví dụ ta sử dụng oscillator có tần số 4 MHZ, thì
xung lệnh sẽ có tần số 1 MHz (chu kì lệnh sẽ là 1 us). Giả sử ta có một đoạn chương
trình như s u:
1. MOVLW 55h
2. MOVWF PORTB
3. CALL

SUB_1


4. BSF PORTA,BIT3
5. instruction @ address SUB_1
Ở đ y t chỉ àn đến qui trình vi điều khiển xử í đoạn chương trình tr n thông qu
từng chu kì lệnh. Quá trình trên sẽ đư c th c thi như s u:

TCY0: đọc lệnh
TCY1:th c thi lệnh 1, đọc lệnh 2
TCY2: th c thi lệnh 2, đọc lệnh 3
TCY3: th c thi lệnh 3, đọc lệnh 4.
TCY4: vì lệnh 4 không phải là lệnh sẽ đư c th c thi theo qui trình th c thi của
chương trình ( ệnh tiếp th o đư c th c thi phải là lệnh đầu tiên tại label SUB_1) nên
chu kì th c thi lệnh này chỉ đư c ùng để đọc lệnh đầu tiên tại

SUB_1. Như vậy

có thể xem lênh 3 cần 2 chu ì xung c oc để th c thi.
TCY5: th c thi lệnh đầu tiên củ SUB_1 và đọc lệnh tiếp theo của SUB_1.
Quá trình này đư c th c hiện tương t cho các lệnh tiếp theo củ chương trình.
Thông thường, để th c thi một lệnh, ta cần một chu kì lệnh để gọi lệnh đó, và một
chu kì xung clock nữ để giải mã và th c thi lệnh. Với cơ chế pip ining đư c trình
3


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

bày ở trên, mỗi lệnh x m như chỉ đư c th c thi trong một chu kì lệnh. Đối với các
lệnh mà quá trình th c thi nó àm th y đổi giá trị thanh ghi PC (Program Counter) cần
hai chu kì lệnh để th c thi vì phải th c hiện việc gọi lệnh ở địa chỉ thanh ghi PC chỉ

tới. S u hi đã xác định đ ng vị trí lệnh trong thanh ghi PC, mỗi lệnh chỉ cần một chu
kì lệnh để th c thi xong.
1.4 C C

NG PIC V C CH LỰA CHỌN PIC

* Các kí hiệu của vi điều khiển PIC
- PIC12xxxx: độ dài lệnh 12 bit
- PIC16xxxx: độ dài lệnh 14 bit
- PIC18xxxx: độ dài lệnh 16 bit
- C: PIC có bộ nhớ EPROM (chỉ có 16C84 là EEPROM)
- F: PIC có bộ nhớ flash
- LF: PIC có bộ nhớ flash hoạt động ở điện áp th p LV: tương t như LF, đ y à í
hiệu c .
Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM, nếu có thêm
chữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là
flash).Ngoài ra còn có thêm một òng vi điều khiển PIC mới là dsPIC. Ở Việt Nam
phổ biến nh t là các họ vi điều khiển PIC do hãng Microchip sản xu t.
*Cách lựa chọn PIC
Trước hết cần ch ý đến số chân củ vi điều khiển cần thiết cho ứng dụng. Có
nhiều vi điều khiển PIC với số ư ng chân khác nhau, thậm chí có vi điều khiển chỉ
có 8 ch n, ngoài r còn có các vi điều khiển 28, 40, 44 … ch n.
Cần chọn vi điều khiển PIC có bộ nhớ f sh để có thể nạp xó chương trình đư c
nhiều lần hơn. Tiếp theo cần ch ý đến các khối chức năng đư c tích h p sẵn trong vi
điều khiển, các chuẩn giao tiếp bên trong. Sau cùng cần ch ý đến bộ nhớ chương
trình mà vi điều khiển cho phép. Ngoài ra mọi thông tin về cách l a chọn vi điều
khiển PIC có thể đư c tìm th y trong cuốn sách S

ct PIC gui


o nhà sản xu t

Microchip cung c p.
1.5 NGÔN NGỮ L P TR NH PIC
Ngôn ngữ lập trình cho PIC r t đ

ạng. Ngôn ngữ lập trình c p th p có MPLAB

(đư c cung c p miễn phí bởi nhà sản xu t Microchip), các ngôn ngữ lập trình c p cao
4


ĐỒ N 1

hơn

GVH : PHẠM QUANG TRÍ

o g m C, B sic, P sc , … Ngoài r còn có một số ngôn ngữ lập trình đư c

phát triển ành ri ng cho PIC như PICB sic, Mi roB sic…
2.PIC16F877A
H NH ẠNG V SƠ ĐỒ CH N

Hình 3.2: Vi điều khiển PIC16F877A/PIC16F874A và các dạng sơ đồ chân
2.1 M T V I THÔNG SỐ VỀ PIC 1

A

Đ y à 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 đ
cho phép là 20 MHz với một chu kì lệnh là 200ns. Bộ nhớ chương trình 8Kx14 it,
bộ nhớ dữ liệu 368 byte RAM và bộ nhớ dữ liệu EEPROM với ung ư ng 256 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 s u:
- 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 ng y hi 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ộ C ptur /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.
- Chuẩn giao tiếp nối tiếp USART với 9 it đị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.
5


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

Các đặc tính Analog:
- 8 kênh chuyển đổi ADC 10 bit.
- Hai bộ so sánh.
Bên cạnh đó à một vài đặc tính khác củ vi điều khiển như:
- Bộ nhớ flash với khả năng ghi xó đư c 100.000 lần.
- Bộ nhớ EEPROM với khả năng ghi xó đư c 1.000.000 lần.
- Dữ liệu bộ nhớ EEPROM có thể ư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 ng y tr n mạch điện ICSP (In Circuit Serial

Programming) thông qua 2 chân.
- Watchdog Timer với bộ

o động trong.

- Chức năng ả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.
2.2 SƠ ĐỒ KHỐI CỦA PIC1

A

6


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

Hình 3.3: Sơ đồ khối vi điều khiển PIC16F877A.
2.3 TỔ CHỨC

NH

C u trúc bộ nhớ củ 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).
* Bộ nhớ chƣơng trình
Bộ nhớ chương trình củ vi điều khiển PIC16F877A là bộ nhớ f sh, ung ư ng
bộ nhớ 8K wor (1 wor = 14 it) và đư c phân thành nhiều trang (từ p g 0 đến page
3) . Như vậy bộ nhớ chương trình có hả năng chứ đư c 8*1024 = 8192 lệnh (vì

một lệnh sau khi mã hóa sẽ có ung ư ng 1 word (14 bit).
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
7


ĐỒ N 1

vector). Bộ nhớ chương trình hông

GVH : PHẠM QUANG TRÍ

o g m bộ nhớ st c và hông đư c địa chỉ hóa

bởi bộ đếm chương trình.
* Bộ nhớ dữ liệu
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM đư c chia ra làm nhiều
PIC16F877A bộ nhớ dữ liệu đư c chia ra làm 4 bank. Mỗi

n . Đối với

n có ung ư 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 (G n r
Register) nằm ở vùng địa chỉ còn lại trong

Purpos

n . Các th nh ghi SFR thường xuyên


đư c sử dụng (ví dụ như th nh 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ư s u:

8


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

nh

: Sơ đồ

nhớ

i u

** THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR:
9


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

Đ y à các th nh ghi đư c sử dụng bởi CPU hoặc đư c ùng để thiết lập và điều
khiển các khối chức năng đư c tích h p


n trong vi điều khiển. Có thể phân thanh

ghi SFR làm hai lọ i: th nh ghi SFR i n qu n đến các chức năng

n trong (CPU) và

thanh ghi SRF ùng để thiết lập và điều khiển các khối chức năng

n ngoài (ví ụ

như ADC, PWM …).
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.

Th nh ghi OPTION_REG (81h, 181h): th nh ghi này cho phép đọc và ghi, cho
phép điều khiển chức năng pu -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):th nh ghi cho phép đọc và ghi, chứa
các it đ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 interrputon- change tại các chân của PORTB.

Thanh ghi PIE1 (8Ch): chứ các it điều khiển chi tiết các ngắt của các 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 it điều khiển chứa trong thanh ghi PIE1.


Thanh ghi PIE2 (8Dh): chứ các it đ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.
10


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

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 it đ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.

** 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 (Fi

S

ct R gist r). Đ y à 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ể ùng các th nh 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.
* 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 hông cho phép đọc hay ghi.
Khi lệnh CALL đư c th c hiện hay khi một ngắt xảy r


àm chương trình ị 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 h t RETFIE đư c th c thi, giá trị
PC sẽ t động đư c l y ra từ trong st c , vi điều khiển sẽ th c hiện tiếp chương trình
th o đ ng qui trình định trước.
Bộ nhớ St c trong vi điều khiển PIC họ 16F87xA có khả năng chứ đư c 8 địa
chỉ và hoạt động th o cơ chế xo y vòng. Nghĩ à 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 đè n giá trị 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 st c , o đó t

hông iết

đư c khi nào stack tràn. Bên cạnh đó tập lệnh củ vi điều khiển òng PIC c ng hông

11


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

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.4 C C CỔNG UẤT NH P CỦA PIC1

A

Cổng xu t nhập (I/O port) chính à phương tiện mà vi điều khiển ùng để tương

tác với thế giới bên ngoài. Bên cạnh đó, o 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 à 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 hác để thể hiện s tác
động củ các đặc tính ngoại vi n u tr n đối với thế giới bên ngoài.
Vi điều khiển PIC16F877A có 5 cổng xu t nhập, bao g m PORTA, PORTB,
PORTC, PORTD và PORTE.
*PORT A:
PORTA (RPA) bao g m 6 I/O pin. Đ y à các ch n h i chiều ( i ir ction pin),
nghĩ

à 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,
t

s t

it điều khiển tương ứng với ch n đó trong th nh ghi TRISA và ngư c lại.

Chức năng I/O hoàn toàn tương t đối với các PORT còn lại. 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 th nh ghi SFR i n qu n đế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) : th nh ghi điều khiển bộ so sánh.
- CVRCON (địa chỉ 9Dh) : th nh ghi điều khiển bộ so sánh điện áp.
- ADCON1 (địa chỉ 9Fh) : th nh ghi điều khiển bộ ADC.
* PORT B:
PORTB (RPB) g m 8 pin I/O. Th nh ghi điều khiển xu t nhập tương ứng là

TRISB. Bên cạnh đó một số chân củ 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ộ Tim r0. PORTB còn đư c tích h p chức năng điện trở kéo
n đư c điều khiển bởi chương trình.
12


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

Các th nh ghi SFR i n qu n đến PORTB bao g m:
- PORTB (địa chỉ 06h,106h) : chứa giá trị các pin trong PORTB
- TRISB (địa chỉ 86h,186h) : điều khiển xu t nhập
- OPTION_REG (địa chỉ 81h,181h) : điều khiển ngắt ngoại vi và bộ Timer0.
* PORT C:
PORTC (RPC) g m 8 pin I/O. Th nh ghi điều khiển xu t nhập tương ứng là
TRISC. Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh, bộ
Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USART.
Các th nh ghi điều khiển i n qu n đến PORTC:
- PORTC (địa chỉ 07h) : chứa giá trị các pin trong PORTC
- TRISC (địa chỉ 87h) : điều khiển xu t nhập.
* PORT D:
PORTD (RPD) g m 8 ch n I/O, th nh ghi điều khiển xu t nhập tương ứng là
TRISD. PORTD còn là cổng xu t dữ liệu của chuẩn giao tiếp PSP (Parallel Slave
Port).
Các th nh ghi i n qu n đến PORTD bao g m:
- Thanh ghi PORTD : chứa giá trị các pin trong PORTD.
- Th nh ghi TRISD : điều khiển xu t nhập.
* PORT E:

PORTE (RPE) g m 3 ch n I/O. Th nh ghi điều khiển xu t nhập tương ứng là
TRISE. Các chân của PORTE có ngõ vào analog. Bên cạnh đó PORTE còn à các
ch n điều khiển của chuẩn giao tiếp PSP.
Các th nh ghi i n qu n đến PORTE bao g m:
- PORTE : chứa giá trị các chân trong PORTE.
- TRISE : điều khiển xu t nhập và xác lập các thông số cho chuẩn giao tiếp PSP.
- ADCON1 : th nh ghi điều khiển khối ADC.
2.5 TIMER 0
Đ y à một trong ba bộ đếm hoặc bộ định thời củ vi điều khiển PIC16F877A.
Timer0 là bộ đếm 8 it đư c kết nối với bộ chia tần số (prescaler) 8 bit. C u trúc của
13


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

Timer0 cho phép ta l a chọn xung c oc tác động và cạnh tích c c của xung clock.
Ngắt Timer0 sẽ xu t hiện khi Timer0 bị tràn.

nh

: Sơ đồ khối c a timer 0

Muốn Timer0 hoạt động ở chế độ Timer ta clear bit TOSC
(OPTION_REG<5>), hi đó giá trị thanh ghi TMR0 sẽ tăng th o từng chu kì xung
đ ng h (tần số vào Timer0 bằng ¼ tần số oscillator). Khi giá trị thanh ghi TMR0 từ
FFh trở về 00h, ngắt Timer0 sẽ xu t hiện. Thanh ghi TMR0 cho phép ghi và xóa
đư c giúp ta n định thời điểm ngắt Timer0 xu t hiện một cách inh động. Muốn
Timer0 hoạt động ở chế độ count r t s t it TOSC (OPTION_REG<5>). Khi đó

xung tác động lên bộ đếm đư c l y từ chân RA4/TOCK1. Bit TOSE
(OPTION_REG<4>) cho phép l a chọn cạnh tác động vào bột đếm. Cạnh tác động
sẽ là cạnh lên nếu TOSE=0 và cạnh tác động sẽ là cạnh xuống nếu TOSE=1. Khi
thanh ghi TMR0 bị tràn, bit TMR0IF (INTCON<2>) sẽ đư c s t. Đ y chính à cờ
ngắt của Timer0. Cờ ngắt này phải đư c xóa bằng chương trình trước khi bộ đếm bắt
đầu th c hiện lại quá trình đếm. Ngắt Timer0 không thể đánh thức vi điều khiển từ
chế độ sleep.

14


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

Các lệnh tác động lên giá trị thanh ghi TMR0 sẽ xóa chế độ hoạt động của
prescaler.
Khi đối tư ng tác động à Tim r0, tác động lên giá trị thanh ghi TMR0 sẽ xóa
prescaler nhưng hông àm th y đổi đối tư ng tác động củ pr sc
tác động là WDT, lệnh CLRWDT sẽ xó pr sc

r. Khi đối tư ng

r, đ ng thời prescaler sẽ ngưng tác

vụ hỗ tr cho WDT.
Các th nh ghi điều khiển i n qu n đến Timer0 bao g m:
- TMR0 (địa chỉ 01h, 101h) : chứa giá trị đếm của Timer0.
- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và
PEIE).

- OPTION_REG (địa chỉ 81h, 181h): điều khiển prescaler.
2.6 TIMER 1
Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ đư c ưu trong h i th nh ghi
(TMR1H:TMR1L). Cờ ngắt củ Tim r1 à it TMR1IF (PIR1<0>). Bit điều khiển
của Timer1 sẽ à TMR1IE (PIE<0>). Tương t như Tim r0, Tim r1 c ng có h i chế
độ hoạt động: chế độ định thời (timer) với xung kích là xung clock của oscillator (tần
số của timer bằng ¼ tần số của oscillator) và chế độ đếm (counter) với xung kích là
xung phản ánh các s

kiện cần đếm l y từ bên ngoài thông qua chân

RC0/T1OSO/T1CKI (cạnh tác động là cạnh lên). Việc l a chọn xung tác động (tương
ứng với việc l a chọn chế độ hoạt động à tim r h y count r) đư c điều khiển bởi bit
TMR1CS (T1CON<1>). S u đ y à sơ đ khối của Timer1:

nh

: Sơ đồ hối

i

r
15


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

Các thanh ghi liên qu n đến Timer1 bao g m:

- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép ngắt hoạt động (GIE và
PEIE).
- PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer1 (TMR1IF).
- PIE1( địa chỉ 8Ch): cho phép ngắt Timer1 (TMR1IE).
- TMR1L (địa chỉ 0Eh): chứa giá trị 8 bit th p của bộ đếm Timer1.
- TMR1H (địa chỉ 0Eh): chứa giá trị 8 bit cao của bộ đếm Timer1.
- T1CON (địa chỉ 10h): xác lập các thông số cho Timer1.
2.7 TIMER 2
Timer2 là bộ định thời 8 it và đư c hỗ tr bởi hai bộ chia tần số prescaler và
postscaler. Thanh ghi chứa giá trị đếm của Timer2 là TMR2. Bit cho phép ngắt
Tim r2 tác động là TMR2ON (T2CON<2>). Cờ ngắt của Timer2 là bit TMR2IF
(PIR1<1>). Xung ngõ vào (tần số bằng ¼ tần số osci

tor) đư c đư qu

ộ chia tần

số prescaler 4 bit (với các tỉ số chia tần số là 1:1, 1:4 hoặc 1:16 và đư c điều khiển
bởi các bit T2CKPS1:T2CKPS0 (T2CON<1:0>)).

nh

: Sơ đồ khối c a Timer 2

Ngoài ra ngõ ra củ Tim r2 còn đư c kết nối với khối SSP, o đó Tim r2 còn đóng
vai trò tạo r xung c oc đ ng bộ cho khối giao tiếp SSP.
Các th nh ghi i n qu n đến Timer2 bao g m:
- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép toàn bộ các ngắt (GIE và
PEIE).
- PIR1 (địa chỉ 0Ch): chứa cờ ngắt Timer2 (TMR2IF).

- PIE1 (địa chị 8Ch): chứ

it điều khiển Timer2 (TMR2IE).
16


ĐỒ N 1

GVH : PHẠM QUANG TRÍ

- TMR2 (địa chỉ 11h): chứa giá trị đếm của Timer2.
- T2CON (địa chỉ 12h): xác lập các thông số cho Timer2.
- PR2 (địa chỉ 92h): thanh ghi hỗ tr cho Timer2.
Timer0 và Timer2 là bộ đếm 8 bit (giá trị đếm tối đ
bộ đếm 16 bit (giá trị đếm tối đ

à FFh), trong hi Tim r1 à

à FFFFh). Tim r0, Tim r1 và Tim r2 đều có hai

chế độ hoạt động là timer và counter. Xung clock có tần số bằng ¼ tần số của
osci tor. Xung tác động

n Tim r0 đư c hỗ tr bởi prescaler và có thể đư c thiết

lập ở nhiều chế độ khác nhau (tần số tác động, cạnh tác động) trong khi các thông số
củ xung tác động lên Timer1 là cố định. Tim r2 đư c hỗ tr bởi hai bộ chia tần số
pr sc

r và postc


r độc lập, tuy nhiên cạnh tác động v n đư c cố định là cạnh lên.

Timer1 có quan hệ với khối CCP, trong hi Tim r2 đư c kết nối với khối SSP.
2.8 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ố. PIC16F877A 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 tiệu tương t sang tín hiệu
số là 10 bit số tương ứng và đư c ưu trong h i th nh ghi ADRESH:ADRESL.
Các th nh ghi i n qu n đến bộ chuyển đổi ADC bao g m:
- INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép các ngắt (các bit GIE,
PEIE).
- PIR1 (địa chỉ 0Ch): chứa cờ ngắt AD (bit ADIF).
- PIE1 (địa chỉ 8Ch): chứ

it điều khiển AD (ADIE).

- ADRESH (địa chỉ 1Eh) và ADRESL (địa chỉ 9Eh): các thanh ghi chứa kết quả
chuyển đổi AD.
- ADCON0 (địa chỉ 1Fh) và ADCON1 (địa chỉ 9Fh): xác lập các thông số cho bộ
chuyển đổi AD.
- PORTA (địa chỉ 05h) và TRISA (địa chỉ 85h): liên quan đến các ngõ vào analog
ở PORTA.
- PORTE (địa chỉ 09h) và TRISE (địa chỉ 89h): i n qu n đến các ngõ vào analog
ở PORTE.
17


ĐỒ N 1


GVH : PHẠM QUANG TRÍ

2.9 GIAO TIẾP NỐI TIẾP
USART (Universal Synchronous Asynchronous Receiver Transmitter) là một
trong hai chuẩn giao tiếp nối tiếp.USART còn đư c gọi là giao diện giao tiếp nối tiếp
SCI (Serial Communication Interface). Có thể sử dụng giao diện này cho các giao
tiếp với các thiết bị ngoại vi, với các vi điều khiển khác hay với máy tính. Các dạng
của giao diện USART ngoại vi bao g m:
- B t động bộ (Asynchronous).
- Đ ng bộ_ Master mode.
- Đ ng bộ_ Slave mode.
PIC16F877A đư c tích h p sẵn bộ tạo tốc độ baud BRG (Baud Rate Genetator) 8
bit dùng cho giao diện USART. BRG th c ch t là một bộ đếm có thể đư c sử dụng
cho cả hai dạng đ ng bộ và b t đ ng bộ và đư c điều khiển bởi thanh ghi PSBRG. Ở
dạng b t đ ng bộ, BRG còn đư c điều khiển bởi bit BRGH ( TXSTA<2>). Ở dạng
đ ng bộ tác động củ

it BRGH đư c bỏ qua. Tốc độ baud do BRG tạo r đư c tính

theo công thức sau:

Trong đó X à giá trị của thanh ghi RSBRG ( X là số nguyên và 0Các th nh ghi i n qu n đến BRG bao g m:
- TXSTA (địa chỉ 98h): chọn chế độ đòng ộ hay b t đ ng bộ ( bit SYNC) và
chọn mức
tốc độ baud (bit BRGH).
- RCSTA (địa chỉ 18h): cho phép hoạt động cổng nối tiếp (bit SPEN).
- RSBRG (địa chỉ 99h): quyết định tốc độ baud.
* USART bất đồng bộ: Ở chế độ truyền này USART hoạt động theo chuẩn NRZ

(None-Return-to-Z ro), nghĩ

à các it truyền đi sẽ bao g m 1 bit Start, 8 hay 9 bit

dữ liệu (thông thường là 8 bit) và 1 bit Stop. Bit LSB sẽ đư c truyền đi trước. Các
khối truyền và nhận

t độc lập với nhau sẽ dùng chung tần số tương ứng với tốc độ

baud cho quá trình dịch dữ liệu (tốc độ baud g p 16 hay 64 lần tốc độ dịch dữ liệu tùy
18


ĐỒ N 1

theo giá trị củ

GVH : PHẠM QUANG TRÍ

it BRGH), và để đảm bảo tính hiệu quả của dữ liệu thì hai khối

truyền và nhận phải dùng chung một định dạng dữ liệu.
Các th nh ghi i n qu n đến quá trình truyền dữ liệu bằng giao diện USART b t
đ ng bộ:
- Thanh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép t t cả các ngắt.
- Th nh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF.
- Th nh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE.
- Th nh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai pin
RC6/TX/CK và RC7/RX/DT).
- Th nh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền.

- Th nh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện.
- Th nh ghi SPBRG (địa chỉ 99h): quyết định tốc độ baud.
* USART đồng bộ: Giao diện USART đ ng bộ đư c kích hoạt bằng cách set bit
SYNC. Cổng giao tiếp nối tiếp v n à h i ch n RC7/RX/DT, RC6/TX/CK và đư c
cho phép bằng cách set bit SPEN. USART cho phép hai chế độ truyền nhận dữ liệu là
Master mode và Slave mo . M st r mo
(TXSTA<7>), S v mo

đư c kích hoạt bằng cách set bit CSRC

đư c kích hoạt bằng cách c

r it CSRC. Điểm khác biệt

duy nh t giữa hai chế độ này là Master mode sẽ l y xung c oc đ ng bộ từ bộ tao
xung baud BRG còn Slave mode l y xung cloc đ ng bộ từ bên ngoài qua chân
RC6/TX/CK. Điều này cho phép Slave mode hoạt động ngay cả hi vi điều khiển
đ ng ở chế độ sleep.
Các th nh ghi i n qu n đến quá trình truyền dữ liệu bằng giao diện USART đ ng
bộ Master mode:
- Th nh ghi INTCON (địa chỉ 0Bh, 8Bh, 10Bh, 18Bh): cho phép t t cả các ngắt.
- Th nh ghi PIR1 (địa chỉ 0Ch): chứa cờ hiệu TXIF.
- Th nh ghi PIE1 (địa chỉ 8Ch): chứa bit cho phép ngắt truyền TXIE.
- Th nh ghi RCSTA (địa chỉ 18h): chứa bit cho phép cổng truyền dữ liệu (hai pin
RC6/TX/CK và RC7/RX/DT).
- Th nh ghi TXREG (địa chỉ 19h): thanh ghi chứa dữ liệu cần truyền.
- Th nh ghi TXSTA (địa chỉ 98h): xác lập các thông số cho giao diện.
19



×