vi điều khiển với lập trình c

119 0 0
vi điều khiển với lập trình c

Đ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

Các xung tín hi u PSEN... Interrupt, Ram, Timer, Serial prort... nh file m*c dù chưa có gì... Ch n Add files to Group “Source Group1” add file vào project... Các b n nên chia chư ng trìn

Trang 2

M C L C

1.1.Tiêu chu n trong l a ch n m t b vi i u khi n 3

Bài 2.Ngôn ng l p trình cho vi i u khi n (Ph n 1) 12

Trang 4

Chú ý : ây hoàn toàn là ph n lí thuy t, mình ã rút g n t i a, do ó các b n nên c h t Chưa nên th c hành v i vì tôi s hư ng dân sau

1.1 Tiêu chu n trong l a ch n m t b vi i u khi n

Là kh n ng s n sàng áp !ng v s lư"ng trong hi n t i và tư ng lai i v i m t s nhà thi t k i u này là quan trong h n c Hi n nay, các b vi i u khi n 8 bit !ng u là h 8051 có s lư ng l n nh t các nhà cung c p a d ng (nhi u ngu n) Nhà cung c p có ngh a là nhà s n xu t bên c nh nhà sáng ch c a b vi i u khi n Trong trư#ng h"p 8051 thì nhà sáng ch c a nó là Intel, nhưng hi n nay có r t nhi u hãng s n xu t nó (c$ng như trư c kia ã s n xu t)

Các hãng này bao g m: Intel, Atmel, Philips/signe-tics, AMD, Siemens, Matra

8051 là m t b x lý 8 bit có ngh a là CPU ch% có th làm vi c v i 8 bit d& li u t i m t th#i i m D& li u l n h n 8 bit ư"c chia ra thành các d& li u 8 bit cho x lý 8051 có t t c 4 c'ng vào - ra I/O m(i c'ng r ng 8 bit Các nhà s n xu t ã cho xu t xư)ng ch% v i 4K byte ROM trên chíp

Xin nh c n cái máy tính c a b n, con chíp Intel hay ADM c a b n là 1 b vi x lí, nó không có RAM, ROM,c'ng IO và các thi t b ngo i vi on Chip Còn vi i u khi n ch!a 1 b vi x lí và RAM,ROM, c'ng IO, và có th có các thi t b ngo i vi

1.3 Sơ chân vi i u khi n 8051:

Là IC óng v d ng DIP có 40 chân, m(i chân có m t kí hi u tên và có các ch!c n ng như sau:

Chân 40: n i v i ngu n nuôI +5V Chân 20: n i v i t(Mass, GND)

Chân 29 (PSEN)(program store enable) là tín hi u i u khi n xu t ra c a 8051, nó cho phép ch n b nh ngoài và ư"c n i chung v i chân c a OE (Outout Enable) c a EPROM ngoài cho phép c các byte c a chư ng trình Các xung tín hi u PSEN

Trang 5

c t EPROM i qua bus d& li u và ư"c ch t vào thanh ghi l nh c a 8051 b)i mã l nh.(chú ý vi c c ) ây là c các l nh (khác v i c d& li u), khi ó VXL ch% c các bit opcode c a l nh và ưa chúng vào hàng "i l nh thông qua các Bus a ch% và d& li u)

Chân 30 (ALE : Adress Latch Enable) là tín hi u i u khi n xu t ra c a 8051, nó cho phép phân kênh bus a ch% và bus d& li u c a Port 0

Chân 31 (EA : Eternal Acess) ư"c ưa xu ng th p cho phép ch n b nh mã ngoàI i v i 8051

i v i 8051 thì : EA = 5V : Ch n ROM n i EA = 0V : Ch n ROM ngo i 32 chân còn l i chia làm 4 c'ng vào ra:

Vào ra t!c là có th dùng chân ó c m!c logic (0;1 tư ng !ng v i 0V ; 5V)vào hay xu t m!c logic ra(0;1)

P0 t chân 39 32 tư ng !ng là các chân P0_0 P0_7 P1 t chân 1 8 tư ng !ng là các chân P1_0 P1_7 P2 t chân 21 28 tư ng !ng là các chân P2_0 P2_7 P3 t chân 10 17 tư ng !ng là các chân P3_0 P3_7

Riêng c'ng 3 có 2 ch!c n ng ) m(i chân như trên hình v :

P3.0 – RxD : chân nh n d& li u n i ti p khi giao ti p RS232(C'ng COM ) P3.1 _ TxD : phân truy n d& li u n i ti p khi giao ti p RS232

P3.2 _ INTO : interrupt 0 , ng t ngoài 0 P3.3 _ INT1: interrupt 1, ng t ngoài 1 P3.4 _T0 : Timer0 , u vào timer0 P3.5_T1 : Timer1, u vào timer 1 P3.6_ WR: Write, i u khi n ghi d! li u P3.7 _RD: Read , i u khi n c d& li u

Trang 6

T n s th ch anh thư#ng dùng trong các !ng d ng là : 11.0592Mhz(giao ti p v i c'ng

Riêng c'ng 3 có thêm ch!c n ng như dư i ây

P3.0 – RxD : chân nh n d& li u n i ti p khi giao ti p RS232(C'ng COM ) P3.1 _ TxD : ph n truy n d& li u n i ti p khi giao ti p RS232

P3.2 _ INTO : interrupt 0 , ng t ngoài 0 P3.3 _ INT1: interrupt 1, ng t ngoài 1 P3.4 _T0 : Timer0 , u vào timer0 P3.5_T1 : Timer1, u vào timer 1 P3.6_ WR: Write, i u khi n ghi d! li u P3.7 _RD: Read , i u khi n c d& li u

Chân 18, 19 n i v i th ch anh t o thành m ch t o dao ng cho V K

T n s th ch anh thư#ng ư"c dùng trong các !ng d ng là : 11.0592Mhz(giao ti p

Trang 7

M ch này chưa có kh i ngu n t o ngu n 5V các b n dùng con IC sau:

Sơ chân:

Gi i thi u IC 'n áp 7805 : u vào > 7V u ra 5V 500mA M ch 'n áp: c n cho V K vì n u ngu n cho V K không 'n nh thì s treo V K, không ch y úng, ho*c

Trang 8

1.5 C u trúc vi i u khi n 89c51

Chú ý:S kh i bên trong con 8051 có nh&ng tài nguy n Interrupt, Ram, Timer, Serial prort

1.6.Các thành viên khác c a h 8051:

Có hai b vi i u khi n thành viên khác c a h 8051 là 8052 và 8031

B vi i u khi n 8052: 8052 có t t c các *c tính chu n c a 8051 ngoài ra nó có thêm 128 byte RAM và m t b nh th#i n&a Hay nói cách khác là 8052 có 256 byte RAM và 3 b nh th#i Nó c$ng có 8K byte ROM Trên chíp thay vì 4K byte như 8051

B ng : So sánh các *c tính c a các thành viên h 8051

ROM trên chip 4K byte 8K byte

Do v y t t c m i chư ng trình vi t cho 8051 u ch y trên 8052 nhưng i u ngư"c l i là không úng *c bi t : M t nhà s n xu t chính c a h 8051 khác n&a là

Trang 9

h 8051 Nhi u s n ph m c a hãng ã có kèm theo các *c tính như các b chuy n 'i ADC, DAC, chân PWM, c'ng I/0 m) r ng

Update s n ph m 8051 m i t i các trang web c a các nhà s n xu t a ch% ã

Trang 10

) trên 80H, vì các a ch% t 00 n 7FH là a ch% c a b nh RAM bên trong

7 GATE Bít i u khi n c ng Khi ư%c set lên 1, b nh th i ch ho t ng trong khi INT1 & m#c cao

Thanh ghi / Bit Ký hi u Ch#c n$ng

TCON.7 TF1 C tràn c a b nh th i 1 C này ư%c set b&i ph n c#ng khi có tràn, ư%c xoá b&i ph n m m, ho c b&i ph n c#ng khi b vi x lý tr( n trình

ph c v ng t

TCON.6 TR1 Bit i u khi n ho t ng c a b nh th i 1 Bit này ư%c set ho c xoá b&i ph n m m i u

khi n b nh th i ho t ng hay ngưng TCON.5 TF0 C tràn c a b nh th i 0

TCON.4 TR0 Bit i u khi n ho t ng c a b nh th i 0 TCON.3 IE1 C ng t bên ngoài 1 (kích kh&i c nh) C này

ư%c set b&i ph n c#ng khi có c nh âm (cu ng) xu t hi n trên chân INT1, ư%c xoá b&i ph n

m m, ho c ph n c#ng khi CPU tr( n trình

Trang 11

TCON.2 IT1 C ng t bên ngoài 1 (kích kh&i c nh ho c m#c) C này ư%c set ho c xoá b&i ph n m m khi x y ra c nh âm ho c m#c th p t i chân ng t ngoài TCON.1 IE0 C ng t bên ngoài 0 (kích kh&i c nh) TCON.0 IT0 C ng t bên ngoài 0 ( kích kh&i c nh ho c m#c)

i u khi n các ngu n ng t

IE.7 EA Cho phép/ không cho phép toàn c c

IE.5 ET2 Cho phép ng t do b nh th i 2 IE.4 ES Cho phép ng t do port n i ti p IE.3 ET1 Cho phép ng t cho b nh th i 1 IE.2 EX1 Cho phép ng t t bên ngoài (ng t ngoài 1) IE.1 EX0 Cho phép ng t t bên ngoài (ng t ngoài 0) IE.0 ET0 Cho phép ng t do b nh th i 0

CHÚ Ý

3 thanh ghi này c$ng r t c b n, nh tên thanh ghi, tên các bít trong thanh ghi, ch!c n ng t ng thanh ghi và t ng bít trong thanh ghi

1.8.Gi i thi u sơ qua các ngu n ng t:

Trang 12

M t chư ng trình chính không có ng t thì ch y liên t c, còn chư ng trình có ng t thì c! khi nào i u ki n ng t ư"c m bào thì con tr s nh y sang hàm ng t th c hi n xong hàm ng t l i quay v úng ch( c$ và th c hi n ti p chư ng trình Ta có 1 ví d như sau: B n ang n c m , có ti ng i n tho i , b n t bát c m ra nghe i n tho i , nghe xong l i quay v bưng bát c m lên n ti p Thì quá trình n c m c a b n là chư ng trình chính,có i n tho i g i n là i u ki n ng t, b n ra nghe i n tho i là th c hi n chư ng trình ng t(Interrupt Service Rountine),quay v n c m ti p là ti p t c th c hi n chư ng trình chính

Ng t i v i ngư#i m i h c vi i u khi n là r t khó hi u, vì a s các tài li u u không gi i thích ng t làm gì Có nhi u lo i ng t khác nhau nhưng t t c u có chung 1 *c i m, ng t dùng cho m c ích a nhi m a t!c là nhi u, nhi m t!c là nhi m v Th c hi n nhi u nhi m v Các b n nhìn vào ti n trình c a hàm main v i chư ng trình có ng t :

Chư ng trình chính ang ch y, ng t x y ra, th c hi n hàm ng t r i quay l i chư ng trình chính Chư ng trình trong vi i u khi n khác v i ví d n c m nghe i n tho i c a tôi ) ch( , th#i gian th c hi n hàm chính là r t l n,th#i gian th c hi n hàm ng t là r t nh , cho nên th#i gian th c thi hàm ng t không nh hư)ng nhi u l m ên ch!c n ng hàm chính Như v y trong hàm ng t các b n làm 1 vi c, trong hàm chính các b n làm 1 vi c

như v y coi như các b n làm ư"c 2 vi c( a nhi m) trong 1 quang th#i gian tư ng i

ng n cõ mS, ch! th c ra t i 1 th#i i m vi i u khi n ch% th c thi 1 l nh

Ví d : B n th ngh xem làm th nào v a i u ch xung PWM i u ch%nh t c ng c , v a c các c m bi n u vào mà t c ng c ph thu c u vào c m //Khai báo bi n toàn c c unsigned char x,y;

Trang 13

Khi có l#i g i hàm nào thì chư ng trình nh y n hàm ó th c hi n hàm ó xong con tr l i quay v chư ng trình chính(hàm main) th c hi n ti p các hàm ho*c câu l nh

Có th khai báo nhi u bi n cùng m t ki u m t lúc VD: unsigned int x,y,z;

Ngoài ra dùng cho vi i u khi n trình d ch chuyên d ng còn h( tr" các lo i bi n sau:

D ng bi n S Bit S Byte Mi n giá tr

Trang 14

Hàm không có bi n truy n vào: unsigned char Tênhàm(void) {

// Các câu l nh x lí ) ây }

Trang 15

Không tính ng t reset h th ng b t u m t ng t ngoài 0 B ng thanh ghi trên ram ch n t 0 n 3

Trang 16

case giatr 1: { // Các câu l nh break; } case giatr 2: { // Các câu l nh break; } case giatr 3: { // Các câu l nh break; } …

case giatr n: { // Các câu l nh break; } }

Gi i thích : Tùy vào Bi n có giatr 1 thì th c hi n các câu l nh sau ó tư ng !ng r i thoát kh i c u trúc nh# câu l nh break;

Bi n có giatr 2 thì th c hi n các câu l nh sau ó tư ng !ng r i

Trang 17

Sau khi cài t

1> Kh&i t o cho Project:

Trang 18

t o 1 project m i ch n Project New project như sau:

Trang 19

ư"c hình sau:

Trang 20

ánh tên và chuy n n thư m c b n lưu project B n nên t o m(i m t thư m c cho 1 project R i ch n Save

Trang 21

ư"c hình sau:

Trang 22

Trong này có 1 lo t các hãng i n t s n xu t 8051 B n l p trình cho con nào thì ch n con y ,kích chu t vào các d u + m) r ng các con IC c a các hãng - ây ta l p trình cho

AT89C51 c a hãng Atmel nên ta ch n như sau:

Trang 23

Khi ch n chip thì ngay l p t!c cái b ng hi n ra 1 s tính n ng c a chíp các b n có th nhìn th y 8051 based Fully Static 24Mhz … Nhap OK ư"c c a s' như sau:

Trang 24

Ch n No Ch n Yes ch% làm cho file l p trình c a b n thêm n*ng ư"c c a s' sau:

Trang 25

t o 1 file code các b n ch n File New ho*c n Ctrl+N Như sau:

Trang 26

ư"c c a s' như sau:

Trang 27

Cho c a s' Text 1 to ra ư"c như sau:

Trang 28

Ti p theo b n ch n File Save As… ho*c Ctrl+S nh file m*c dù chưa có gì Như sau:

Trang 29

ư"c c a s' sau:

Trang 30

Các b n nh p tên vào text box file name Chú ý tên gì c$ng ư"c nhưng không ư"c thi u uôi m) r ng C Nh n Save ư"c c a s' sau:

Trang 31

Trong ô bên trái màn hình, c a s' project workspace, các b n m) r ng cái target 1 ra ư"c như sau:

Trang 32

Nh p chu t ph i vào thư m c Suorce Group1 ư"c hình như trên Ch n Add files to Group “Source Group1” add file vào project ư"c như sau:

Trang 33

Ch n file C mà các b n v a nh C a tôi là Dieukhienled_IO Nh n Add 1 l n r i n Close N u b n n Add 2 l n nó s thông báo là file ã add b n ch% vi c OK r i nh n Close ư"c như sau:

Trang 34

Bây gi# nhìn trong Source Group 1 ã th y file Dieukhienled_IO.C Các b n nh p chu t ph i vào vùng so n th o file Dieukhienled_IO.C như sau, thêm file thư vi n.Ch n Insert

‘#include <AT89X51.H>”

Trang 35

Các b n ã bi t file ó là gì n u các b n ã h c bài trư c kí theo yêu c u c a tôi ư"c như sau:

Trang 36

Ph n cu i cùng c a công vi c kh)i t o là các b n vi t l#i gi i thích cho d án c a mình Ph n này r t c n thi t vì nó ngư#i khác hi u mình làm gì tron project này và khi mình c n s d ng l i code c l i mình còn bi t nó là cái gì

Các b n t o l#i gi i thích theo m.u sau:

Trang 37

2> So n th o chương trình:

Các b n vi t chư ng trình c a bài 3 vào ây làm ví d Khi vi t xong 1 dòng l nh nên gi i thích dòng l nh ó làm gì Như sau:

Trang 38

Các b n nên chia chư ng trình như tôi làm V i 1 file nh thì nó h i rư#m rà Nhưng v i 1 file l n kho ng 1000 dòng code thì nó l i r t sáng s a Các b n nên t o 1 file m.u r i nh vào 1 file text ) âu ó m(i l n dùng ch% vi c copy r i paste qua ch! không nên m(i l n t o m t cái như v y l i ph n tác d ng Phía trên là ph n b ti n x lí và khai báo bi n Ti p theo là vi t hàm tr,

Trang 39

Ti p theo là vi t hàm main Như sau:

Trang 40

R i nh n Ctrl+S Ho*c ch n File Save nh file v a so n th o

Các b n nhìn vào code có th các b n ã hi u con AT89C51 nó làm gì n u các b n ã n m

Trang 41

ây là s nguyên lí c a 1 led Project là 8 led(vì ph c v cho bài 3) nhưng tôi ch% gi i thích 1 led là các b n hi u M c ích là làm con led nh p nháy.

Bi n Led1 ư"c khai báo (gán cho) ch n P0_1 c a vi i u khi n b+ng câu l nh sbit Led1=P1^0; Giá tr b t bat ư"c nh ngh a là 0

Khi các b n gán : Led1=bat; trong hàm main thì chân P1_0 c a AT89C51 có m!c logic là 0V Theo s nguyên lí: 5V Tr) 470 Led1 P1_0 (0 V) Có chênh l ch áp có dòng

i n qua led Led sáng Các b n có th tính tóan ch( này d, dàng là t i sao l i là tr) 470 Ôm i n áp m t ) led là Uak (0,6 n 0,7V) l y =0,6V i n áp chân P1_0 là 0V i n áp hai u tr) : 5V -0,6V = 4,4V Dòng qua tr) = dòng qua led = 4,4V/470 Ôm x p x% 10 mA V i dòng 10mA n 15mA là led dòng sáng và sáng r t /p N u dòng y u thì led m#, còn dòng l n thì các b n bi t sao r i y

Khi các b n gán: Led1= tat; t!c là chân P1_0 có giá tr 1 tư ng !ng i n áp c a nó là 5V Hi u i n th gi&a hai u +5V và P1_0 là 0V Nên không có dòng qua led Led t t.Nhưng n u trong hàm main các b n vi t ch% có như sau:

Khi ch y debug thì v.n th y led nh p nháy Nhưng khi n p chư ng trình vào chíp l p vào m ch thì led không nháy ho*c ch% sáng m# ho*c t t ngóm Vì l nh Led1=bat; là l nh 1 chu kì máy , t n s th ch anh là 12 Mhz, 1 chu kì máy có th#i gian là 1uS V a b t lên 1 uS r i l i t t ngay Led không áp !ng ư"c t n s cao v y nên không nh p nháy Do ó c n t i hàm tr, B t led lên tr, 1 th#i gian khá lâu(0,5 gi y), r i t t led i khá lâu(0,5s) r i l i b t l i t o thành vòng l*p s ư"c led nh p nháy

Trang 42

vì h t chư ng trình r i còn âu Ph n này n u b n nào m i h c i n t th nào c$ng có câu h i th c m c c! nh n tin ho*c g i mail

3> D ch chương trình:

So n th o song nh n Ctrl +S nh Nh xong các b n biên d ch chư ng trình b+ng cách n phím F7 ho*c ch n Build target là bi u tư"ng ngay trên c a s' workspace như trên hình:

Các b n s th y như sau:

Trang 43

Trong c a s' Output Window ngay phía trên dòng ch& này có các dòng ch& Compiling … Linking…

Program Size: data =17.0 code =96 … 0 error , 0 Warning

Như v y là OK N u không ư"c như v y nó s báo l(i và các b n ki m tra xem so n th o úng chưa Tôi ví d xóa 1 d u ; ) trong hàm main ) dòng : Led1=bat; , gi# b i thành Led1= bat .R i d ch l i ( n F7) trình biên d ch s báo như sau:

Trang 44

Syntax error near tre Sai cú pháp g n tr, Các b n nh p úp trái chu t vào dòng thông báo này con tr s ) ngay dòng dư i dòng có l(i thêm d u nhìn d u m$i tên màu xanh ) hình dư i ây, gõ vào d u ; và d ch l i là OK.” Trong chư ng trình l n ôi khi con tr ch% n g n ch( có l(i thôi và b n ph i t tìm ra l(i.”

Trang 45

Sau khi d ch l i ư"c hình sau:

Trang 46

4> Ch y mô ph(ng và s a l*i

Trư c khi debug chúng ta kh)i t o như sau Các ban vào Option for target 1

Ngày đăng: 27/04/2024, 02:19

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan