1. Trang chủ
  2. » Luận Văn - Báo Cáo

Điều khiển động cơ bước giao tiếp máy tính

88 258 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 88
Dung lượng 1,99 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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... - ADCON1 địa chỉ 9Fh : thanh ghi điều khiển bộ ADC... N u trong kho ng th i gian ny đi n

Trang 2

Ngày nay, k thu t vi đi u khi n đã tr nên quen thu c trong các ngành k thu t và trong dân d ng T các dây chuy n s n xu t l n đ n các thi t b gia d ng, chúng ta

đ u th y s hi n di n c a vi đi u khi n Các b vi đi u khi n có kh n ng x lý nhi u ho t đ ng ph c t p mà ch c n 1 chip vi m ch nh , nó đã thay th các t đi u khi n l n và ph c t p b ng nh ng m ch đi n g n nh , d thao tác s d ng

tìm hi u b vi đi u khi n m t cách khoa h c và mang l i hi u qu cao là n n

t ng cho vi c xâm nh p vào nh ng h th ng t i tân h n Vi c trang b nh ng ki n

th c v vi đi u khi n cho sinh viên là h t s c c n thi t Xu t phát t th c ti n này

em đã đi đ n quy t đ nh “ i u khi n đ ng c b c – giao ti p máy tính” nh m đáp

ng nhu c u h c h i c a b n thân

Do th i gian nghiên c u và th c hi n đ tài ch gi i h n, v n ki n th c và vi c tìm

hi u sâu v m t h vi đi u khi n còn h n ch nên đ án này ch th c hi n trong

ph m vi sau: kh o sát vi đi u khi n PIC bao g m: c u trúc ph n c ng, các ng

d ng, l p trình thi t k và thi công m ch ng d ng PIC đ đi u khi n đ ng c b c

D a trên c s c a các đ tài vi x lý và vi đi u khi n, hi n th và gi i mã… nh m thi t k m t h th ng vi đi u khi n góp ph n làm phong phú thêm cho vi c hi u bi t

v l nh v c này đ ng th i có th m r ng và đ nh h ng cho nh ng đ tài sau

Trang 3

L I C M N

Trong th i gian th c hi n đ tài em đã h c h i đ c nhi u đi u b ích t

th y h ng d n, th y cô Khoa Xây D ng – i n, b môn i n – i n t và các b n sinh viên cùng khóa đã đóng góp nh ng ý ki n quý báu đ em hoàn thành đ án t t nghi p đúng th i gian

Em xin bày t lòng bi t n đ n Th y Phan V n Hi p trên c ng v là ng i

h ng d n đ tài đã t n tình h ng d n và t o đi u ki n thu n l i cho em hoàn thành t t đ tài

Em c ng xin chân thành c m n quí th y, cô trong Khoa cùng các b n đã đóng góp ý ki n và kinh nghi m quý báu trong quá trình th c hi n đ tài này

Sinh vi n th c hi n

Hu nh Trí N ng

Trang 4

L i m đ u

L i c m n

M c l c

CH NG 1 : T NG QUAN V VI I U KHI N PIC 1

1.1 GI I THI U S L C V VI I U KHI N PIC 1

1.2 C U TRÚC C A VI I U KHI N PIC 1

1.3 RISC VÀ CISC 2

1.4 M T VÀI C TÍNH C A VI I U KHI N PIC 2

1.5 CÁC DÒNG PIC VÀ CÁCH L A CH N VI I U KHI N PIC 2

1.6 NGÔN NG L P TRÌNH CHO PIC 3

1.7 M CH N P PIC 3

CH NG 2 : VI I U KHI N PIC16F877A 5

2.1 S CHÂN VI I U KHI N PIC16F877A 5

2.2 M T VÀI THÔNG S V VI I U KHI N PIC16F877A 6

2.3 S KH I VI I U KHI N PIC16F877A 7

2.4 T CH C B NH 8

2.4.1 B NH CH NG TRÌNH 8

2.4.2 B NH STACK 8

2.4.3 B NH D LI U 9

2.5 CH C N NG CÁC CHÂN C A PIC16F877A VÀ CÁC C NG XU T NH P 11

2.5.1 CH C N NG CÁC CHÂN C A PIC16F877A 11

2.5.2 CÁC C NG XU T NH P C A PIC16F877A 12

2.6 M T S C TÍNH KHÁC C A PIC16F877A 14

2.6.1 CONFIGURATION BIT 14

2.6.2 CÁC C TÍNH C A OSCILLATOR 14

2.6.3 CÁC CH RESET 15

2.6.4 WATCHDOG TIMER 16

2.6.5 CH SLEEP 16

CH NG 3: CÁC KH I CH C N NG C A V K PIC16F877A 18

3.1 CÁC B TIMER C A VI I U KHI N 18

3.1.1 TIMER 0 18

3.1.2 TIMER1 18

3.1.3 TIMER2 19

3.2 ADC 20

3.3 COMPARATOR 22

3.3.1 C CH HO T NG C A B COMPARATOR 22

3.3.2 CÁC THANH GHI LIÊN QUAN N COMPARATOR 22

3.4 CCP 23

3.4.1 CÁC THANH GHI C A KH I CCP 23

3.4.2 CAPTURE 23

3.4.3 COMPARE 24

3.4.4 CH C N NG PWM 25

3.5 NG T 26

3.5.1 C I M NG T C A V K PIC16F877A 27

3.5.2 M T S NG T QUAN TR NG C A V K 27

3.5.3 CÁC THANH GHI C S D NG PH C V NG T 28

CH NG 4: CÁC CHU N GIAO TI P C A VI I U KHI N PIC 29

4.1 USART 29

4.1.1 CÁC THANH GHI C S D NG TRONG GIAO TI P USART 29

4.1.2 C CH HO T NG C A GIAO TI P USART 30

4.1.3 CÁC CH GIAO TI P USART 31

4.2 CHU N GIAO TI P MSSP 32

4.2.1 CÁC THANH GHI I U KHI N GIAO TI P MSSP 32

Trang 5

4.3 C NG GIAO TI P SONG SONG 33

CH NG 5: T P L NH C A VI I U KHI N PIC 35

5.1 VÀI NÉT S L C V T P L NH C A V K PIC 35

5.2 T P L NH C A VI I U KHI N PIC 35

CH NG 6 : CÁC THI T B - LINH KI N LIÊN QUAN KHÁC 42

6.1 NG C B C 42

6.1.1 GI I THI U V NG C B C 42

6.1.2 M T S KHÁI NI M KHÁC V NG C B C 44

6.2 NG C DC 45

6.3 MÀN HÌNH LCD 46

6.3.1 GI I THI U 46

6.3.2 HÌNH DÁNG VÀ KÍCH TH C 46

6.3.3 CH C N NG CÁC CHÂN 47

6.3.4 S KH I C A HD44780 47

6.3.5 T P L NH C A LCD 51

6.3.6 ÁNH A CH CHO LCD 54

6.3.7 GIAO TI P GI A LCD VÀ MPU 54

6.3.8 KH I T O LCD 55

6.3.9 M CH KH I T O BÊN TRONG CHIP HD44780 55

6.4 TRANSISTOR H1061 VÀ 2N3055 56

6.5 IC GIAO TI P MAX232 56

6.6 IC C M BI N NHI T LM35 56

6.7 OPTP 4N35 57

CH NG 7 : THI T K - THI CÔNG M CH 58

7.1 GI I THI U T NG QUÁT 58

7.1.1 S KH I 58

7.1.2 CH C N NG C A CÁC KH I 58

7.2 CÁC S M CH I N 58

7.3 H NG D N S D NG M CH 61

7.4 THI CÔNG M CH 62

7.4.1 HÌNH M CH SAU KHI HOÀN CH NH 62

7.4.2 S M CH IN 63

CH NG 8 : L P TRÌNH CHO PIC16F877A 64

8.1 L U GI I THU T C A CH NG TRÌNH 64

8.2 MÃ NGU N C A CH NG TRÌNH TRONG PIC16F877A 65

CH NG 9 : L P TRÌNH I U KHI N TRÊN PC 76

9.1 C B N V GIAO TI P RS232 76

9.2 VI T CH NG TRÌNH I U KHI N TRÊN PC 76

9.2.1 GI I THI U VISUAL BASIC 76

9.2.2 M T S THU C TÍNH C B N C A MSCOMM 77

9.2.3 MÃ NGU N C A CH NG TRÌNH TRÊN PC 78

9.2.4 GIAO DI N CH NG TRÌNH TRÊN PC 81

K T LU N

TÀI LI U THAM KH O

Trang 6

CH NG 1 : T NG QUAN V VI I U KHI N PIC

1.1 GI I THI U S L C V VI I U KHI N PIC

PIC b t ngu n là ch vi t t t c a “Programmable Intelligent Computer” (Máy tính kh trình thông minh) là m t s n ph m c a hãng General Instruments đ t cho dòng s n ph m đ u tiên c a h là PIC1650 Lúc này, PIC1650 đ c dùng đ giao

ti p v i các thi t b ngo i vi cho máy ch 16bit CP1600 N m 1985 General Instruments bán b ph n vi đi n t c a h , và ch s h u m i là công ty Microchip Technology Sau này PIC đ c b sung EEPROM đ t o thành m t b đi u khi n vào ra kh trình Ngày nay r t nhi u dòng PIC đ c xu t x ng v i hàng lo t các module ngo i vi tích h p s n (nh USART, PWM, ADC,…), v i b nh ch ng trình t 512 Word đ n 32K Word

do đó ta có th t ch c, cân đ i m t cách linh ho t b nh ch ng trình và b nh

d li u Tuy nhiên đi u này ch có ý ngh a khi t c đ x lý c a CPU ph i r t cao, vì

v i c u trúc đó, trong cùng m t th i đi m CPU ch có th t ng tác v i b nh d

ki u ho c b nh ch ng trình i v i ki n trúc Havard, b nh d li u và b nh

ch ng trình tách ra thành hai 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 a vi đi u khi n

đ c c i thi n đáng k M t chú ý n a là t p l nh trong ki n trúc Havard có th

đ c t i u tùy theo yêu c u ki n trúc c a 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 dòng 16F, đ dài l nh luôn là 14 bit (trong khi d li u đ c t ch c thành t ng byte), còn đ i v i ki n trúc Von-Neuman, đ dài l nh luôn là b i s c a 1 byte (do d li u đ c t ch c thanh t ng byte)

Trang 7

1.3 RISC VÀ CISC

Do vi đi u khi n PIC có ki n trúc Havard nên CPU có th cùng m t lúc truy

xu t c b nh ch ng trình và b nh d li u, giúp t ng t c đ x lý c a vi đi u khi n Và đ ti p t c c i ti n t c đ th c thi l nh, t p l nh c a h vi đi u khi n PIC

đ c thi t k sao cho chi u dài mã l nh luôn c đ nh (ví d đ i v i h 16Fxxxx chi u dài mã l nh luôn là 14 bit) và cho phép th c thi l nh trong m t chu k l nh (m t chu k l nh b ng 4 chu k c a xung clock), ngo i tr m t s tr ng h p đ c

bi t nh l nh nh y, l nh g i ch ng trình con … c n hai chu k l nh i u này có ngh a t p l nh c a vi đi u khi n thu c c u trúc Havard 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 l ng bit nh t đ nh Vi đi u khi n đ c t ch c theo ki n trúc Havard còn đ c g i là vi đi u khi n RISC (Reduced Instruction Set Computer) hay 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-Neuman còn đ c g i là vi đi u khi n CISC (Complex Instruction Set Computer) hay 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)

1.4 M T VÀI C TÍNH C A VI I U KHI N PIC

Hi n nay có khá nhi u dòng PIC và có r t nhi u khác bi t v ph n c ng nh ng chúng ta co th đi m qua m t vài nét nh sau:

- CPU 8/16 bit, xây d ng theo ki n trúc Havard có s a đ i

- Flash và ROM có th tùy ch n t 256 byte đ n 256Kbyte

- Các c ng xu t/nh p (I/O ports)

- Timer 8/16 bit

- Các chu n giao ti p (n i ti p ho c xong xong, đ ng b ho c b t đ ng b )

- B chuy n đ i ADC (Analog to Digital Converters) 10/12 bit

- B so sánh đi n áp (Voltage Comparators)

- Các module Capture/Compare/PWM

- Module đi u khi n đ ng c , đ c Encoder

- H tr giao ti p USB

- H tr đi u khi n Ethernet

1.5 CÁC DÒNG PIC VÀ CÁCH L A CH N VI I U KHI 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 là kí 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 dòng vi đi u khi n PIC m i là dsPIC

Trang 8

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 m t vi đi u khi n PIC phù h p:

- Tr c h t c n chú ý đ n s chân c a 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 l ng chân khác nhau, th m chí có vi

đi u khi n ch có 8 chân, ngoài ra 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 flash đ có th n p xóa 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 “Select PIC guide” do nhà s n xu t Microchip cung c p

đ tìm ra cách l a ch n vi đi u khi n PIC phù h p v i m c đích s d ng

1.6 NGÔN NG L P TRÌNH CHO PIC

Ngôn ng l p trình cho PIC r t đa d 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 h n bao g m C, Basic, Pascal, … Ngoài ra còn có m t s ngôn ng

l p trình đ c phát tri n dành riêng cho PIC nh PICBasic, MikroBasic,…

1.7 M CH N P PIC

ây c ng là m t dòng s n ph m r t đa d ng dành cho vi đi u khi n PIC Có th

s d ng các m ch n p đ c cung c p b i nhà s n xu t là hãng Microchip nh : PICSTART plus, MPLAB ICD 2, MPLAB PM 3, PRO MATE II Có th dùng các

s n ph m này đ n p cho vi đi u khi n khác thông qua ch ng trình MPLAB Dòng

s n ph m chính th ng này có u th là n p đ c cho t t c các vi đi u khi n PIC, tuy nhiên giá thành r t cao và th ng g p r t nhi u khó kh n trong quá trình mua

s n ph m

Ngoài ra do tính n ng cho phép nhi u ch đ n p khác nhau, còn có r t nhi u

m ch n p đ c thi t k dành cho vi đi u khi n PIC Có th s l c m t s m ch

n p cho PIC nh sau:

- JDM programmer: m ch n p này dùng ch ng trình n p Icprog cho phép n p các vi đi u khi n PIC có h tr tính n ng n p ch ng trình đi n áp th p ICSP (In Circuit Serial Programming) H u h t các m ch n p đ u h tr tính n ng n p

ch ng trình này

- WARP-13A và MCP-USB: hai m ch n p này gi ng v i m ch n p PICSTART PLUS do nhà s n xu t Microchip cung c p, t ng thích v i trình biên d ch MPLAB, ngh a là ta có th tr c ti p dùng ch ng trình MPLAB đ n p cho vi

đi u khi n PIC mà không c n s d ng m t ch ng trình n p khác, ch ng h n

nh ICprog

- P16PRO40: m ch n p này do Nigel thi t k và c ng khá n i ti ng Ông còn thi t

k c ch ng trình n p, tuy nhiên ta c ng có th s d ng ch ng trình n p Icprog

- M ch n p Universal c a Williem: đây không ph i là m ch n p chuyên d ng dành cho PIC nh P16PRO40

Trang 9

Các m ch n p k trên có u đi m r t l n là đ n gi n, r ti n, hoàn toàn có th t

l p ráp m t cách d dàng, và m i thông tin v s đ m ch n p, cách thi t k , thi công, ki m tra và ch ng trình n p đ u d dàng tìm đ c và download mi n phí thông qua m ng Internet Tuy nhiên các m ch n p trên có nh c đi m là h n ch v

s vi đi u khi n đ c h tr , bên c nh đó m i m ch n p c n đ c s d ng v i m t

ch ng trình n p thích h p

Trang 10

CH NG 2 : VI I U KHI N PIC16F877A 2.1 S CHÂN VI I U KHI N PIC16F877A

Hình 2.1: Vi đi u khi n PIC16F877A/PIC16F874A và các d ng s đ chân

Trang 11

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ó 8 kênh chuy n đ i A/D

Ü Các đ c tính ngo i vi bao g mcá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

- 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

Ü 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

- B t o xung th i gian (PWRT) và b t o dao đ ng (OST)

- C ng ngh CMOS FLASH/EEPROM tiêu th công su t th p t c đ cao

Trang 12

2.3 S KH I VI I U KHI N PIC16F877A

Hình 2.2: S đ kh i vi đi u khi n PIC16F877A

- Kh i ALU – Arithmetic Logic Unit

- Kh i b nh ch a ch ng trình – Flash Program Memory

- Kh i b nh ch a d li u EPROM – Data EPROM

Trang 13

- Kh i b nh file thanh ghi RAM – RAM file Register

- Kh i gi i mã l nh và đi u khi n – Instruction Decode Control

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)

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

Trang 14

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

2.4.3 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:

Trang 15

Hình 2.4 S đ b nh d li u PIC16F877A

a) Thanh ghi ch c n ng đ c bi t

â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)

Trang 16

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 đó

b) Thanh ghi m c đích chung

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 đ

- Vpp: ngõ vào nh n đi n áp l p trình khi l p trình cho PIC

• Chân RA0/AN0(2), RA1/AN1(3), RA2/AN2(3): có 2 ch c n ng

- RA0,1,2: xu t/ nh p s

- AN 0,1,2: ngõ vào t ng t c a kênh th 0,1,2

Trang 17

• Chân RA2/AN2/VREF-/CVREF+(4): xu t nh p s / ngõ vào t ng t c a kênh th 2/ nhõ vào đi n áp chu n th p c a b AD/ ngõ vào đi n áp ch n cao

c a b AD

• Chân RA3/AN3/VREF+(5): xu t nh p s / ngõ vào t ng t kênh 3/ ngõ vào

đi n áp chu n (cao) c a b AD

• Chân RA4/TOCK1/C1OUT(6): xu t nh p s / ngõ vào xung clock bên ngoài cho Timer 0/ ngõ ra b so sánh 1

• Chân RA5/AN4/ / C2OUT(7): xu t nh p s / ngõ vào t ng t kênh 4/ ngõ vào ch n l a SPI ph / ngõ ra b so sánh 2

• Chân RB0/INT (33): xu t nh p s / ngõ vào tín hi u ng t ngoài

• Chân RC3/SCK/SCL(18): xu t nh p s / ngõ vào xung clock n i ti p đ ng

b , ngõ ra ch đ SPI./ ngõ vào xung clock n i ti p đ ng b , ngõ ra c a ch

đ I2C

• Chân RC4/SDI/SDA(23): xu t nh p s / d li u vào SPI/ xu t nh p d li u I2C

• Chân RC5/SDO(24): xu t nh p s / d li u ra SPI

• Chân RC6/TX/CK(25): xu t nh p s / truy n b t đ ng b USART/ xung

đ ng b USART

• Chân RC7/RX/DT(26): xu t nh p s / nh n b t đ ng b USART

• Chân RD0-7/PSP0-7(19-30): xu t nh p s / d li u port song song

• Chân RE0/ /AN5(8): xu t nh p s / đi u khi n port song song/ ngõ vào

Trang 18

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 ngồi Ch c

n ng c a t ng chân xu t nh p trong m i c ng hồn tồ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 đĩ

Vi đi u khi n PIC16F877A cĩ 5 c ng xu t nh p, bao g m PORTA, PORTB, PORTC, PORTD và PORTE C u trúc và ch c n ng c a t ng c ng xu t nh p s

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 hồn tồ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 tính này s đ c trình bày c th trong ph n sau 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) : ch a giá tr các pin trong PORTA

- 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

b) 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

- 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

c) PORTC

PORTC (RPC) g m 8 pin I/O Thanh 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 thanh ghi đi u khi n liên quan đ n PORTC:

Trang 19

- 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

d) PORTD

PORTD (RPD) g m 8 chân I/O, thanh 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 thanh ghi liên quan đ n PORTD bao g m:

- Thanh ghi PORTD : ch a giá tr các pin trong PORTD

- Thanh ghi TRISD : đi u khi n xu t nh p

e) PORTE

PORTE (RPE) g m 3 chân I/O Thanh 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 là các chân đi u khi n c a chu n giao ti p PSP

Các thanh ghi liên quan đ 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 : thanh ghi đi u khi n kh i ADC

2.6 M T S C TÍNH KHÁC C A PIC16F877A

2.6.1 CONFIGURATION BIT

ây là bit dùng đ l a ch n các đ c tính c a CPU Các bit này đ c ch a trong

b nh ch ng trình t i đ a ch 2007h và ch cĩ th đ c truy xu t trong quá trình

l p trình cho vi đi u khi n

2.6.2 CÁC C TÍNH C A OSCILLATOR

PIC16F877A cĩ kh n ng s d ng m t trong 4 lo i oscillator, đĩ là:

- LP: (Low Power Crystal)

- XT: Th ch anh bình th ng

- HS: (High-Speed Crystal)

- RC: (Resistor/Capacitor) dao đ ng do m ch RC t o ra

i v i các lo i oscillator LP, HS, XT, oscillator đ c g n vào vi đi u khi n thơng

qua các pin OSC1/CLKI và OSC2/CLKO

i v i các ng d ng khơng c n các lo i oscillator t c đ cao, ta cĩ th s d ng

m ch dao đ ng RC làm ngu n cung c p xung ho t đ ng cho vi vi đi u khi n T n

s t o ra ph thu c vào các giá tr đi n áp, giá tr đi n tr và t đi n, bên c nh đĩ là

s nh h ng c a các y u t nh nhi t đ , ch t

l ng c a các linh ki n

Các linh ki n s d ng cho m ch RC oscillator ph i b o đ m các giá tr sau:

Trang 20

3 K < REXT < 100 K Hình 2.5: RC oscillator

CEXT >20 pF

2.6.3 CÁC CH RESET

Cĩ nhi u ch đ reset vi đi u khi n, bao g m:

- Power-on Reset POR (Reset khi c p ngu n ho t đ ng cho vi đi u khi n)

- reset trong quá trình ho t đ ng

- reset t ch đ sleep

- WDT reset (reset do kh i WDT t o ra trong quá trình ho t đ ng)

- WDT wake up t ch đ sleep

- Brown-out reset (BOR)

reset: Khi pin m c logic th p, vi đi u khi n s đ c reset Tín

hi u reset đ c cung c p b i m t m ch ngo i vi v i các yêu c u c th sau:

Hình 2.6 Mạch Reset qua pin

- Khơng n i pin tr c ti p lên ngu n VDD

- R1 ph i nh h n 40 K đ đ m b o các đ c tính đi n c a vi đi u khi n

- R2 ph i l n h n 1 K đ h n dịng đi vào vi đi u khi n reset cịn đ c

ch ng nhi u b i m t b l c đ tránh các tín hi u nh tác đ ng lên pin

Power-on reset (POR): ây là xung reset do vi đi u khi n t o ra khi phát hi n ngu n cung c p VDD Khi ho t đ ng ch đ bình th ng, vi đi u khi n c n đ c

đ m b o các thơng s v dịng đi n, đi n áp đ ho t đ ng bình th ng Nh ng n u các tham s này khơng đ c đ m b o, xung reset do POR t o ra s đ a vi đi u khi n v tr ng thái reset và ch ti p t c ho t đ ng khi nào các tham s trên đ c

đ m b o

Power-up Timer (PWRT): đây là b đ nh th i ho t đ ng d a vào m ch RC bên trong vi đi u khi n Khi PWRT đ c kích ho t, vi đi u khi n s đ c đ a v tr ng thái reset PWRT s t o ra m t kho ng th i gian delay (kho ng 72 ms) đ VDD

t ng đ n giá tr thích h p

Oscillator Start-up Timer (OST): OST cung c p m t kho ng th i gian delay

Trang 21

b ng 1024 chu kì xung c a oscillator sau khi PWRT ng ng tác đ ng (vi đi u khi n

đã đ đi u ki n ho t đ ng) đ đ m b o s n đ nh c a xung do oscillator phát ra Tác đ ng c a OST cịn x y ra đ i v i POR reset và khi vi đi u khi n đ c đánh

th c t ch đ sleep OST ch tác đ ng đ i v i các l ai oscillator là XT, HS và LP Brown-out reset (BOR): N u VDD h xu ng th p h n gi tr VBOR (kho ng 4V) khơng đi trong kho ng th i gian l n h n TBOR (kho ng 100 us), BOR đ c kích

ho t vi đi u khi n đ c đ a v tr ng thi BOR reset N u đi n p cung c p cho vi

đi u khi n h xu ng th p h n VBOR trong kho ng th i gian ng n h n TBOR, vi đi u khi n s kh ng đ c reset Khi đi n p cung c p đ cho vi đi u khi n ho t đ ng, PWRT đ c kích ho t đ t o ra m t kho ng th i gian delay (kho ng 72ms) N u trong kho ng th i gian ny đi n p cung c p cho vi điều khiển lại tiếp tục hạ xuống dưới mức điện áp VBOR, BOR reset sẽ lại được kích hoạt khi vi điều khiển đủ điện áp hoạt động Một điểm cần chú ý là khi BOR reset được cho phép, PWRT cũng sẽ hoạt động bất chấp trạng thái của bit PWRT

Tĩm l i đ vi đi u khi n ho t đ ng đ c t khi c p ngu n c n tr i qua các b c sau:

- n th i đi m này vi đi u khi n m i b t đ u ho t đ ng bình th ng

- Thanh ghi đi u khi n và ch th tr ng thái ngu n cung c p cho vi đi u khi n là thanh ghi PCON

2.6.4 WATCHDOG TIMER (WDT)

Watchdog timer (WDT) là b đ m đ c l p dùng ngu n xung đ m t b t o xung

đ c tích h p s n trong vi đi u khi n và khơng ph thu c vào b t kì ngu n xung clock ngo i vi nào i u đĩ cĩ ngh a là WDT v n ho t đ ng ngay c khi xung clock

đ c l y t pin OSC1/CLKI và pin OSC2/CLKO c a vi đi u khi n ng ng ho t

đ ng (ch ng h n nh do tác đ ng c a l nh sleep) Bit đi u khi n c a WDT là bit WDTE n m trong b nh ch ng trình đ a ch 2007h (Configuration bit)

2.6.5 CH SLEEP

ây là ch đ ho t đ ng c a vi đi u khi n khi l nh SLEEP đ c th c thi Khi đĩ

n u đ c cho phép ho t đ ng, b đ m c a WDT s b xĩa nh ng WDT v n ti p t c

ho t đ ng, bit (STATUS<3>) đ c reset v 0, bit đ c set, oscillator

ng ng tác đ ng và các PORT gi nguyên tr ng thái nh tr c khi l nh SLEEP đ c

th c thi

Do khi ch đ SLEEP, dịng cung c p cho vi đi u khi n là r t nh nên ta c n

th c hi n các b c sau tr c khi vi đi u khi n th c thi l nh SLEEP:

- a t t c các pin v tr ng thái VDD ho c VSS

- C n b o đ m r ng khơng cĩ m ch ngo i vi nào đ c đi u khi n b i dịng đi n

c a vi đi u khi n vì dịng đi n nh khơng đ kh n ng cung c p cho các m ch ngo i vi ho t đ ng

- T m ng ng ho t đ ng c a kh i A/D và khơng cho phép các xung clock t bên ngồi tác đ ng vào vi đi u khi n

Trang 22

- ý đ n ch c n ng kéo lên đi n tr PORTB

- Pin ph i m c logic cao

Trang 23

CH NG 3 : CÁC KH I CH C N NG C A V K PIC16F877A

3.1 CÁC B TIMER C A VI I U KHI N

3.1.1 TIMER 0

ây là m t trong ba b đ m ho c b đ nh th i c a vi đi u khi n PIC16F877A

Timer0 là b đ m 8 bit đ c k t n i v i b chia t n s (prescaler) 8 bit C u trúc

c a Timer0 cho phép ta l a ch n xung clock 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 Bit TMR0IE

(INTCON<5>) là bit đi u khi n c a Timer0 TMR0IE=1 cho phép ng t Timer0 tác

đ ng, TMR0IF= 0 không cho phép ng t Timer0 tác đ ng S đ kh i c a Timer0

nh sau:

Hình 3.1 S đ kh i c a Timer0

Các thanh ghi đi u khi n liên quan đ n Timer0 bao g m:

Timer1 là b đ nh th i 16 bit, giá tr c a Timer1 s đ c l u trong hai thanh ghi

(TMR1H:TMR1L) C ng t c a Timer1 là bit TMR1IF (PIR1<0>) Bit đi u khi n

c a Timer1 s là TMR1IE (PIE<0>)

T ng t nh Timer0, Timer1 c ng có hai 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à

Trang 24

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 là timer hay counter) đ c đi u khi n b i bit TMR1CS (T1CON<1>)

Sau đây là s đ kh i c a Timer1:

Hình 3.2 S đ kh i c a Timer1

Các thanh ghi liên quan đ 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

3.1.3 TIMER2

Timer2 là b đ nh th i 8 bit 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 Timer2 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 oscillator) đ c đ a qua b 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>))

Trang 25

Hình 3.3 S đ kh i Timer2

Timer2 còn đ c h tr b i thanh ghi PR2 Giá tr đ m trong thanh ghi TMR2

s t ng t 00h đ n giá tr ch a trong thanh ghi PR2, sau đó đ c reset v 00h Khi reset thanh ghi PR2 đ c nh n giá tr m c đ nh FFh

Các thanh ghi liên quan đ 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 a bit đi u khi n Timer2 (TMR2IE)

- 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

3.2 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 l u trong hai thanh ghi ADRESH:ADRESL Khi không s d ng b chuy n đ i ADC, các thanh ghi này có

th đ c s d ng nh các thanh ghi thông th ng khác Khi quá trình chuy n đ i hoàn t t, k t qu s đ c l u vào hai thanh ghi ADRESH:ADRESL, bit

(ADCON0<2>) đ c xóa v 0 và c ng t ADIF đ c set

Quy trình chuy n đ i t t ng t sang s bao g m các b c sau:

1 Thi t l p các thông s cho b chuy n đ i ADC:

- Ch n ngõ vào analog, ch n đi n áp m u (d a trên các thông s c a thanh ghi ADCON1)

- Ch nh kênh chuy n đ i AD (thanh ghi ADCON0)

- Ch nh xung clock cho kênh chuy n đ i AD (thanh ghi ADCON0)

- Cho phép b chuy n đ i AD ho t đ ng (thanh ghi ADCON0)

2 Thi t l p các c ng t cho b AD

- Clear bit ADIF

- Set bit ADIE

- Set bit PEIE

- Set bit GIE

3 i cho t i khi quá trình l y m u hoàn t t

4 B t đ u quá trình chuy n đ i (set bit )

5 i cho t i khi qu trình chuy n đ i h n t t b ng cch:

- Ki m tra bit N u =0, quá trình chuy n đ i đã hoàn t t

Trang 26

Hình 3.4 S đ kh i b chuy n đ i ADC

C n chú ý là có hai cách l u k t qu chuy n đ i AD, vi c l a ch n cách l u đ c

đi u khi n b i bit ADFM và đ c minh h a c th trong hình sau:

Hình 3.5 Các cách l u k t qu chuy n đ i AD

Các thanh ghi liên quan đ n b chuy n đ i ADC 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 a bit đ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

Trang 27

- 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): liên quan đ n các ngõ vào analog PORTE

3.3 COMPARATOR

B so sánh bao g m hai b so so sánh tín hi u analog và đ c đ t PORTA Ngõ vào b so sánh là các chân RA3:RA0, ngõ ra là hai chân RA4 và RA5 Thanh ghi đi u khi n b so sánh là CMCON Các bit CM2:CM0 trong thanh ghi CMCON đóng vai trò ch n l a các ch đ ho t đ ng cho b Comparator

D a vào hình v ta th y đáp ng t i ngõ ra không ph i là t c th i so v i thay đ i

t i ngõ vào mà c n có m t kho ng th i gian nh t đ nh đ ngõ ra thay đ i tr ng thái (t i đa là 10 us) C n chú ý đ n kho ng th i gian đáp ng này khi s d ng b so sánh

C c tính c a các b so sánh có th thay đ i d a vào các giá tr đ t vào các bit C2INV và C1INV (CMCON<4:5>)

3.3.2 CÁC THANH GHI LIÊN QUAN N COMPARATOR

Các thanh ghi liên quan đ n b so sánh bao g m:

- CMCON (đ a ch 9Ch) và CVRCON (đ a ch 9Dh): xác l p các thông s cho b so sánh

- Thanh ghi INTCON (đ a ch 0Bh, 8Bh, 10Bh, 18Bh): ch a các bit cho phép các ng t (GIE và PEIE)

- Thanh ghi PIR2 (đ a ch 0Dh): ch a c ng t c a b so sánh (CMIF)

- Thanh ghi PIE2 (đ a ch 8Dh): ch a bit cho phép b so sánh (CNIE)

- Thanh ghi PORTA (đ a ch 05h) và TRISA (đ a ch 85h): các thanh ghi

Trang 28

đi u khi n PORTA

3.4 CCP (CAPTURE/COMPARE/PWM)

CCP (Capture/Compare/PWM) bao g m các thao tác trên các xung đ m cung

c p b i các b đ m Timer1 và Timer2 PIC16F877A đ c tích h p s n hai kh i CCP : CCP1 và CCP2.M i CCP có m t thanh ghi 16 bit (CCPR1H:CCPR1L và CCPR2H:CCPR2L), pin đi u khi n dung cho kh i CCPx là RC2/CCP1 và RC1/T1OSI/CCP2 Các ch c n ng c a CCP bao g m:

li t kê trong b ng sau:

T b ng trên cho th y: n u c hai module dùng cùng ch c n ng Capture thì s dùng chung b đ m Timer1, ngh a là m i ho t đ ng và đi u ch nh Timer1 đ u nh

h ng đ n hai module T ng t , n u dùng cùng ch c n ng PWM s dùng chung Timer2 Còn n u m t module là Capture, module kia là Compare thì ph i l u ý

ch c n ng Compare có th clear Timer1 và c ng nh h ng đ n ch c n ng c a CCP còn l i, hai tr ng h p cu i thì bình th ng

3.4.1 CÁC THANH GHI C A KH I CCP

Thanh ghi CCPR1L (đ a ch 15h): thanh ghi ch a 8 bit th p c a kh i CCP1

Thanh ghi CCPR1H (đ a ch 16h): thanh ghi ch a 8 bit cao c a kh i CCP1

Thanh ghi CCPR2L (đ a ch 1Bh): thanh ghi ch a 8 bit th p c a kh i CCP2

Thanh ghi CCPR2H (đ a ch 1Ch): thanh ghi ch a 8 bit cao c a kh i CCP2

Thanh ghi CCP1CON và thanh ghi CCP2CON (đ a ch 17h và 1Dh): dùng đ

đi u khi n kh i CCP1 và CCP2

3.4.2 CAPTURE

Khi ho t đ ng ch đ Capture thì khi có m t “hi n t ng” x y ra t i pin RC2/CCP1 (ho c RC1/T1OSI/CCP2), giá tr c a thanh ghi TMR1 s đ c đ a vào thanh ghi CCPR1 (CCPR2) Các “hi n t ng” đ c đ nh ngh a b i các bit CCPxM3:CCPxM0 (CCPxCON<3:0>) và có th là m t trong các hi n t ng sau:

- M i khi có c nh xu ng t i các pin CCP

Trang 29

ra mà giá tr trong thanh ghi CCPRx ch a đ c x lí, giá tr ti p theo nh n đ c s

t đ ng đ c ghi đè lên giá tr c

M t s đi m c n chú ý khi s d ng CCP nh sau:

- Các pin dùng cho kh i CCP ph i đ c n đ nh là input (set các bit t ng

ng trong

- thanh ghi TRISC) Khi n đ nh các pin dùng cho kh i CCP là output, vi c

đ a giá tr vào PORTC c ng có th gây ra các “hi n t ng” tác đ ng lên

kh i CCP do tr ng thái c a pin thay đ i

- Timer1 ph i đ c ho t đ ng ch đ Timer ho c ch đ đ m đ ng b

- Tránh s d ng ng t CCP b ng cách clear bit CCPxIE (thanh ghi PIE1), c

ng t CCPIF nên đ c xóa b ng ph n m m m i khi đ c set đ ti p t c

Ch c n ng c a Compare đ c mô t trong hình d i đây:

Trang 30

Hình 3.8 S đ kh i CCP (Compare mode)

T ng t nh ch đ Capture, Timer1 ph i đ c n đ nh ch đ ho t đ ng là timer

ho c đ m đ ng b Ngoài ra, khi ch đ Compare, CCP có kh n ng t o ra hi n

t ng đ c bi t (Special Event trigger) làm reset giá tr thanh ghi TMR1 và kh i

đ ng b chuy n đ i ADC i u này cho phép ta đi u khi n giá tr thanh ghi TMR1

m t cách linh đ ng h n

3.4.4 CH C N NG PWM ( I U CH R NG XUNG)

Khi ho t đ ng ch đ PWM (Pulse Width Modulation _ kh i đi u ch đ r ng xung), tín hi u sau khi đi u ch s đ c đ a ra các pin c a kh i CCP (c n n đ nh các pin này là output) s d ng ch c n ng đi u ch này tr c tiên ta c n ti n hành các b c cài đ t sau:

1 Thi t l p th i gian c a 1 chu kì c a xung đi u ch cho PWM (period) b ng cách đ a giá tr thích h p vào thanh ghi PR2

2 Thi t l p đ r ng xung c n đi u ch (duty cycle) b ng cách đ a giá tr vào thanh ghi CCPRxL và các bit CCP1CON<5:4>

3 i u khi n các pin c a CCP là output b ng cách clear các bit t ng ng trong thanh ghi TRISC

4 Thi t l p giá tr b chia t n s prescaler c a Timer2 và cho phép Timer2 ho t

đ ng b ng cách đ a giá tr thích h p vào thanh ghi T2CON

5 Cho phép CCP ho t đ ng ch đ PWM

Hình sau đây mô t ch c n ng và ho t đ ng c a PWM :

Trang 31

Hình 3.9 S đ kh i CCP (PWM mode)

Trong đó giá tr 1 chu kì (period) c a xung đi u ch đ c tính b ng công th c:

r ng c a xung đi u ch (duty cycle) đ c tính theo công th c:

Nh v y 2 bit CCPxCON<5:4> s ch a 2 bit LSB Thanh ghi CCPRxL ch a byte cao c a giá tr quy t đ nh đ r ng xung Thanh ghi CCPRxH đóng vai trò là buffer cho kh i PWM Khi giá tr trong thanh ghi CCPRxH b ng v i giá tr trong thanh ghi TMR2 và hai bit CCPxCON<5:4> b ng v i giá tr 2 bit c a b chia t n s prescaler, pin c a kh i CCP l i đ c đ a v m c th p, nh v y ta có đ c hình nh

Trang 32

ch p tr ng thái c a bit GIE, tuy nhiên ho t đ ng ng t v n ph thuôc vào bit GIE và các bit đi u khi n khác Bit đi u khi n ng t RB0/INT và TMR0 n m trong thanh ghi INTCON, thanh ghi này còn ch a bit cho phép các ng t ngo i vi PEIE Bit đi u khi n các ng t n m trong thanh ghi PIE1 và PIE2 C ng t c a các ng t n m trong thanh ghi PIR1 và PIR2

Trong m t th i đi m ch có m t ch ng trình ng t đ c th c thi, ch ng trình

ng t đ c k t thúc b ng l nh RETFIE Khi ch ng trình ng t đ c th c thi, bit GIE

t đ ng đ c xóa, đ a ch l nh ti p theo c a ch ng trình chính đ c c t vào trong

b nh Stack và b đ m ch ng trình s ch đ n đ a ch 0004h L nh RETFIE đ c dùng đ thoát kh i ch ng trình ng t và quay tr v ch ng trình chính, đ ng th i bit GIE c ng s đ c set đ cho phép các ng t ho t đ ng tr l i Các c hi u đ c dùng đ ki m tra ng t nào đang x y ra và ph i đ c xóa b ng ch ng trình tr c khi cho phép ng t ti p t c ho t đ ng tr l i đ ta có th phát hi n đ c th i đi m

Ng t này d a trên s thay đ i tr ng thái c a pin RB0/INT C nh tác đ ng gây ra

ng t có th là c nh lên hay c nh xu ng và đ c đi u khi n b i bit INTEDG (thanh ghi OPTION_REG<6>) Khi có c nh tác đ ng thích h p xu t hi n t i pin RB0/INT,

c ng t INTF đ c set Ng t này có kh n ng đánh th c vi đi u khi n t ch đ sleep n u bit cho phép ng t đ c set tr c khi l nh SLEEP đ c th c thi

b) Ng t RB

Ng t này ch ho t đ ng khi các chân t RB4 đ n RB7 b thay đ i tr ng thái so

v i làn ch t tr c đó c a vi đi u khi n Ng t này đ c đi u khi n b i bit RBIE trong thanh ghi INTCON<4> Khi m t trong các chân t RB4 đ n RB7 b thay đ i

tr ng thái thì bit RBIF (INTCON<0>) s đ c set lên m c 1

Cách ho t đ ng c a 2 ng t này c ng gi ng nh ng t Timer0 Các bit đi u khi n

ng t là TMR1IE và TMR2IE Khi đó ng t x y ra thì các c ng t TMR1IF và

Trang 33

TMR2IF s đ c set

e) Ng t ADC

Khi quá trình chuy n đ i ADC hoàn t t thì vi đi u khi n s set bit ADIF và ng t

s x y ra Bit đi u khi n cho ng t này là ADIE

3.5.3 CÁC THANH GHI C S D NG PH C V NG T

1 Thanh ghi INTCON (đ a ch 0Bh, 8Bh, 10Bh, 18Bh): thanh ghi ch a các bit

đi u khi n và các bit c hi u khi Timer0 b tràn, ng t ngo i vi RB0/INT và ng t interrupt-on-change t i các chân c a PORTB

2 Thanh ghi PIR1 (đ a ch 0Ch): thanh ghi ch a c ng t c a các kh i ngo i vi

3 Thanh ghi PIR2 (đ a ch 0Dh)

4 Thanh ghi PIE1 (đ a ch 8Ch): ch a các bit cho phép các ng t ngo i vi

5 Thanh ghi PIE2 (đ a ch 8Dh): ch a các bit cho phép các ng t ngo i vi

Trang 34

CH NG 4 : CÁC CHU N GIAO TI P C A V K PIC16F877A 4.1 USART

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 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 ng ai 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 ng ai vi bao g m:

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 a bit BRGH đ c b qua

4.1.1 CÁC THANH GHI C S D NG TRONG GIAO TI P USART

Trong PIC16F877A có t t c 5 thanh ghi liên quan đ n quá trình đi u khi n USART: trong đó có hai thanh ghi ch c n ng TXSTA, RCSTA, hai thanh ghi d

li u RCREG, TXREG và thanh ghi đ nh t c đ Baund: SPBRG

a) Thanh ghi TXSTA (đ a ch 98h)

Ch a các bit tr ng thái và đi u khi n vi c truy n d li u thông qua chu n giao ti p USART

b) Thanh ghi RCSTA (đ a ch 18h)

Thanh ghi ch a các bit tr ng thái và các bit đi u khi n quá trình nh n d li u qua chu n giao ti p USART

c) Thanh ghi TXREG (đ a ch 19h)

Thanh ghi đóng vai trò là buffer đ m 8 bit trong quá trình truy n d li u thông qua chu n giao ti p USART

d) Thanh ghi RCREG (đ a ch 1Ah)

Thanh ghi đóng vai trò là buffer đ m trong quá trình nh n d li u thông qua chu n giao ti p USART

Trang 35

đ c đi u khi n b i bit TXIE (PIE1<4>) C hi u TXIF v n đ c set b t ch p tr ng thái c a bit TXIE hay tác đ ng c a ch ng trình (không th xóa TXIF b ng ch ng trình) mà ch reset v 0 khi có d li u m i đ c đ a vào thanh ghi TXREG

truy n d li u theo giao di n USART, ta c n th c hi n các b c sau:

- T o xung truy n Baud b ng cách đ a các giá tr c n thi t vào thanh ghi RSBRG và bit đi u khi n m c t c đ baud BRGH

- Thi t l p ch đ giao ti p: đ ng b ho c b t đ ng b , master hay slave

- Set bit TXIE n u c n s d ng ng t truy n

- Set bit TX9 n u đ nh d ng d li u c n truy n là 9 bit

- Set bit TXEN đ cho phép truy n d li u

- N u đ nh d ng d li u là 9 bit, đ a bit d li u th 9 vào bit TX9D

- a 8 bit d li u c n truy n vào thanh ghi TXREG

- N u s d ng ng t truy n, c n ki m tra l i các bit GIE và PEIE (thanh ghi INTCON)

b) Ch đ nh n d li u

Bit đi u khi n cho phép kh i nh n d li u là bit RCEN (RCSTA<4>) Thành

ph n quan tr ng nh t c a kh i nh n d li u là thanh ghi nh n d li u RSR (Receive Shift Register) Sau khi nh n di n bit Stop c a d li u truy n đ n, d li u nh n

đ c trong thanh ghi RSR s đ c đ a vào thanh ghi RCGER, sau đó c hi u RCIF (PIR1<5>) s đ c set và ng t nh n đ c kích ho t Ng t này đ c đi u khi n b i bit RCIE (PIE1<5>) Bit c hi u RCIF là bit ch đ c và không th b tác đ ng b i

ch ng trình RCIF ch reset v 0 khi d li u nh n vào thanh ghi RCREG đã đ c

đ c và khi đó thanh ghi RCREG r ng

Trang 36

Hình 4.2 S đ kh i c a kh i nh n d li u USART

Khi s d ng giao di n nh n d li u USART c n ti n hành tu n t các b c sau:

- Thi t l p t c đ Baud (đ a giá tr thích h p vào thanh ghi SPBRG và bit BRGH)

- Ch n ch đ giao ti p cho USART

- N u c n s d ng ng t nh n d li u, set bit RCIE

- N u d li u truy n nh n có đ nh d ng là 9 bit, set bit RX9

- Cho phép nh n d li u b ng cách set bit CREN

- Sau khi d li u đ c nh n, bit RCIF s đ c set và ng t đ c kích ho t

- c giá tr thanh ghi RCSTA đ đ c bit d li u th 9 và ki m tra xem quá trình nh n d li u có b l i không

- c 8 bit d li u t thanh ghi RCREG

- N u quá trình truy n nh n có l i x y ra, xóa l i b ng cách xóa bit CREN

- N u s d ng ng t nh n c n set bit GIE và PEIE (thanh ghi INTCON)

4.1.3 CÁC CH GIAO TI P USART

a) Ch đ USART b t đ ng b

ch đ truy n này các bit 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 data đ 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 theo giá tr c a bit 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

b) Ch đ 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 là hai 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 mode Master mode đ c kích ho t b ng cách set bit CSRC (TXSTA<7>), Slave mode đ c kích ho t b ng cách clear bit CSRC i m khác bi t duy nh t

gi a hai ch đ này là Master mode s l y xung clock đ ng b t b t o xung baud BRG còn Slave mode l y xung clock đ ng b t bên ngoài qua chân RC6/TX/CK

Trang 37

i u này cho phép Slave mode ho t đ ng ngay c khi vi đi u khi n đang ch đ sleep

Khi nh n đ c d li u, vi đi u khi n th c hi n các công vi c gi ng nh giao

ti p USART b t đ ng b , k c các c hi u, ng t nh n và các thao tác trên các thành

ph n đó i m khác bi t duy nh t là giao di n này cho phép hai ch đ nh n d

li u, đó là ch nh n 1 word d li u (set bit SCEN) hay nh n m t chu i d li u (set bit CREN) cho đ n khi ta clear bit CREN

4.2 CHU N GIAO TI P MSSP

MSSP ( Master Synchronous Serial Port) là giao di n đ ng b n i ti p dùng đ giao ti p v i các thi t b ngo i vi (EEPROM, ghi d ch, chuy n đ i ADC,…) hay các

vi đi u khi n khác MSSP có th ho t đ ng d i hai d ng giao ti p:

+ SPI (Serial Pheripheral Interface)

+ I2C (Inter-Intergrated Circuit)

4.2.1 CÁC THANH GHI I U KHI N GIAO TI P MSSP

a) Thanh ghi SSPSTAT

Thanh ghi này có đ a ch 94h, ch a các bit tr ng thái c a chu n giao ti p MSSP

b) Thanh ghi SSPCON1

SSPCON1 có đ a ch 14h, đ c dùng đ đi u khi n chu n giao ti p MSSP

c) Thanh ghi SSPBUF

Thanh ghi đ m d li u 8 bit cho chu n giao ti p MSSP và có đ a ch 13h

d) Thanh ghi SSPCON2

Thanh ghi này có đ a ch 91h, đ c s d ng đ đi u khi n các ch đ ho t đ ng

c a chu n giao ti p I2C

e) Thanh ghi SSPADD

SSPADD có đ a ch 93h, đây là thanh ghi ch a đ a ch c a vi đi u khi n khi ho t

đ ng chu n giao ti p I2C Slave mode Khi không dùng đ ch a đ a ch (I2C Master mode) SSPADD đ c dùng đ ch a giá tr t o ra xung clock đ ng b t i pin SCL

4.2.2 GIAO TI P SPI

Chu n giao ti p SPI cho phép truy n nh n đ ng b Ta c n s d ng 4 pin cho chu n giao ti p này:

Trang 38

RC5/SDO: ngõ ra d li u d ng n i ti p (Serial Data output)

RC4/SDI/SDA: ngõ vào d li u d ng n i ti p (Serial data input)

RC3/SCK/SCL: xung đ ng b n i ti p (Serial Clock)

RA5/AN4/SS/C2OUT: ch n đ i t ng giao ti p (Serial Select) khi giao ti p

ch đ Slave mode

Khi giao ti p v i các thi t b khác dùng chu n MSSP ta ph i ch nh các thông s sau:

- Master mode hay Slave mode ch đ Master mode, xung clock đ ng b

s đi ra t chân RC3/SCK/SCL i v i ch đ Slave mode, xung clock đ ng b

s đ c nh n t bên ngoài qua chân RC3/SCK/SCL

- M c logic c a xung clock khi tr ng thái t m ng ng quá trình truy n nh n (Idle)

S đ k t n i c a chu n giao ti p SPI nh sau:

Hình 4.3 S đ k t n i c a chu n giao ti p SPI

Theo s đ k t n i này, kh i Master s b t đ u quá trình truy n nh n d li u

b ng cách g i tín hi u xung đ ng b SCK D li u s d ch t thanh ghi SSPSR đ a

ra ngoài n u có m t c nh c a xung đ ng b tác đ ng và ng ng d ch khi có tác đ ng

c a c nh còn l i

C hai kh i Master và Slave nên đ c n đ nh chung các qui t c tác đ ng c a xung clock đ ng b đ d li u có th d ch chuy n đ ng th i

4.3 C NG GIAO TI P SONG SONG PSP (PARALLEL SLAVE PORT)

Ngoài các c ng n i ti p và các giao đi n n i ti p đ c trình bày ph n trên, vi

đi u

khi n PIC16F877A còn đ c h tr m t c ng giao ti p song song và chu n giao

Trang 39

ti p song song thông qua PORTD và PORTE Do c ng song song ch ho t đ ng

ch đ Slave mode nên vi đi u khi n khi giao ti p qua giao di n này s ch u s đi u khi n c a thi t b bên ngoài thông qua các pin c a PORTE, trong khi d li u s

đ c đ c ho c ghi theo d ng b t đ ng b thông qua 8 pin c a PORTD

Bit đi u khi n PSP là PSPMODE (TRISE<4>) PSPMODE đ c set s thi t l p

ch c n ng các pin c a PORTE là các pin cho phép đ c d li u , cho pheùp ghi d li u và pin ch n vi đi u khi n ph c v cho vi c truy n nh n d li u song song thông qua bus d li u 8 bit c a PORTD PORTD lúc này đóng vai trò là thanh ghi ch t d li u 8 bit, đ ng th i tác đ ng c a thanh ghi TRISD c ng s đ c b qua do PORTD lúc này ch u s đi u khi n c a các thi t b bên ngoài PORTE v n ch u s tác đ ng c a thanh ghi TRISE, do đó c n xác l p tr ng thái các pin PORTE là input b ng các set các bit TRISE<2:0> Ngoài

ra c n đ a giá tr thích h p các bit PCFG3:PCFG0 (thanh ghi ADCON1<3:0>) đ

n đ nh các pin c a PORTE là các pin I/O d ng digital (PORTE còn là các pin ch c

n ng c a kh i ADC)

Trang 40

CH NG 5 : T P L NH C A VI I U KHI N PIC

5.1 VÀI NÉT S L C V T P L NH C A VI I U KHI N PIC

Do PIC16F877A là vi đi u khi n có t p l nh rút g n RISC (Reduced Information Set Computer), bao g m 35 l nh và có th đ c phân ra thành 3 nhóm

c b n:

- Nhóm l nh thao tác trên bit

- Nhóm l nh thao tác trên byte

- Nhóm l nh đi u khi n

i v i dòng vi đi u khi n PIC16Fxxx, m i l nh đ c mã hóa thành 14 bit, bao

g m các bit opcode (xác đ nh l nh mã hóa) và các bit mô t m t hay vài tham s

Tác d ng: th c hi n phép toán AND gi a thanh ghi và giá tr k, k t qu đ c

ch a trong thanh ghi W

Bit tr ng thái: Z

Ngày đăng: 23/11/2015, 19:36

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Ki n trúc Havard và ki n trúc Von-Neuman. - Điều khiển động cơ bước giao tiếp máy tính
Hình 1.1 Ki n trúc Havard và ki n trúc Von-Neuman (Trang 6)
Hình 2.2: S  đ  kh i vi đi u khi n PIC16F877A. - Điều khiển động cơ bước giao tiếp máy tính
Hình 2.2 S đ kh i vi đi u khi n PIC16F877A (Trang 12)
Hình 2.4  S  đ  b  nh  d  li u PIC16F877A - Điều khiển động cơ bước giao tiếp máy tính
Hình 2.4 S đ b nh d li u PIC16F877A (Trang 15)
Hình 3.2 S  đ  kh i c a Timer1. - Điều khiển động cơ bước giao tiếp máy tính
Hình 3.2 S đ kh i c a Timer1 (Trang 24)
Hình 3.4 S  đ  kh i b  chuy n đ i ADC. - Điều khiển động cơ bước giao tiếp máy tính
Hình 3.4 S đ kh i b chuy n đ i ADC (Trang 26)
Hình 3.8 S   đ  kh i CCP (Compare mode). - Điều khiển động cơ bước giao tiếp máy tính
Hình 3.8 S đ kh i CCP (Compare mode) (Trang 30)
Hình 3.9 S   đ  kh i CCP (PWM mode). - Điều khiển động cơ bước giao tiếp máy tính
Hình 3.9 S đ kh i CCP (PWM mode) (Trang 31)
Hình 4.2 S  đ  kh i c a kh i nh n d  li u USART. - Điều khiển động cơ bước giao tiếp máy tính
Hình 4.2 S đ kh i c a kh i nh n d li u USART (Trang 36)
Hình 4.3 S  đ  k t n i c a chu n giao ti p SPI. - Điều khiển động cơ bước giao tiếp máy tính
Hình 4.3 S đ k t n i c a chu n giao ti p SPI (Trang 38)
Hình 6.1 C u t o c a đ ng c  b c l ng c c - Điều khiển động cơ bước giao tiếp máy tính
Hình 6.1 C u t o c a đ ng c b c l ng c c (Trang 47)
Hình 6.4 Ch  đ  ch y n a b c. - Điều khiển động cơ bước giao tiếp máy tính
Hình 6.4 Ch đ ch y n a b c (Trang 48)
Hình 6.9 S  đ  kh i c a HDD44780. - Điều khiển động cơ bước giao tiếp máy tính
Hình 6.9 S đ kh i c a HDD44780 (Trang 53)
Hình 7.1 S  đ  m ch kh i c p ngu n - Điều khiển động cơ bước giao tiếp máy tính
Hình 7.1 S đ m ch kh i c p ngu n (Trang 64)
Hình 7.2 S   đ  m ch các phím nh n cài  đ t - Điều khiển động cơ bước giao tiếp máy tính
Hình 7.2 S đ m ch các phím nh n cài đ t (Trang 64)
Hình 7.3 S  đ  m ch giao ti p máy tính - Điều khiển động cơ bước giao tiếp máy tính
Hình 7.3 S đ m ch giao ti p máy tính (Trang 65)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w