1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Giáo trình Lập trình vi điều khiển nâng cao (Nghề: Công nghệ kỹ thuật Điện-Điện tử - CĐ/TC) - Trường Cao đẳng nghề Đồng Tháp

81 7 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

Tiêu đề Giáo trình Lập trình vi điều khiển nâng cao (Nghề: Công nghệ kỹ thuật Điện-Điện tử - CĐ/TC)
Trường học Trường Cao Đẳng Nghề Đồng Tháp
Chuyên ngành Công nghệ kỹ thuật Điện-Điện tử
Thể loại Giáo trình
Năm xuất bản 2018
Thành phố Đồng Tháp
Định dạng
Số trang 81
Dung lượng 3,26 MB

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

Nội dung

Giáo trình Lập trình vi điều khiển nâng cao cung cấp cho người học những kiến thức như: ngôn ngữ lập trình; lập trình giao diện arduino với các linh kiện, cảm biến, board. Mời các bạn cùng tham khảo!

Trang 1

TRƯỜNG CAO ĐẲNG NGHỀ ĐỒNG THÁP

KHOA ĐIỆN – ĐIỆN TỬ

GIÁO TRÌNH MÔN HỌC: LẬP TRÌNH VI ĐIỀU KHIỂN NÂNG CAO

NGÀNH, NGHỀ: CN T ĐI N, ĐI N T

TRÌNH ĐỘ: CAO ĐẲNG/TRUNG CẤP

(Ban hành kèm theo Quyết định Số: /QĐ-CĐNĐT ngày… tháng…năm 2018

của Hiệu trưởng Trường Cao đẳng nghề Đồng Tháp)

Trang 3

I

Mục lục

LỜI NÓI ĐẦU 1

T NG QUAN 1

1 1 n m 1

1 2 Cấu trú v ứ năn k ố 1

1 3 Cấu trú ủ m t k t r u no 4

1.4 Arduino IDE 8

1 5 C ặt IDE 10

1 6 C ặt driver arduino uno r3 11

NGÔN NGỮ LẬP TRÌNH 14

2 1 Cấu trú n ôn n ữ l p tr n 14

2 2 V o r ữ l u 20

2 2 1 xuất ữ l u r m t p n 20

2 3 C n ắt 23

2.4 ADC 28

2 5 G o t p I2C, UART, SPI 30

3 LẬP TRÌNH GIAO TI P AR UINO VỚI C C LINH KIỆN, C M I N, OAR 46

T N ÀI: G o p d l n o on d no 47

T N ÀI: G o p An lo o p PWM on d no 56

Trang 4

II

T N ÀI: G o p n lo np n A d no Uno 62

T N ÀI: G o p Uart, I2C 68

T N ÀI: N on A d no I MỤC TIÊU CỦA BÀI: 73

T N ÀI: Th k hệ hốn đ ề kh ển vớ d no 76

Trang 5

1

1 T NG QUAN 1.1 Khái niệm

V đ ề kh ểnl m tmáy tính ợ tí ợp tr n m tchíp, n t ờn ợ s ụn

ể ều k ển thi t bị n t V ều k ển, t ự ất, l m t t ốn o ồm m tvi

x lý u suất ủ ùn v t n t ấp (k vớ v x lý năn ùn tron

m y tín ) k t ợp vớ k ố n o v n b nhớ, cácmô un v o/r , mô un n ổ

số s n t ơn tự v t ơn tự s n số, Ở m y tín t mô un t ờn ợ xây

ựn ở íp v m n o

V ều k ển t ờn ợ ùn ể xây ựn h thống nhúng N xuất n k

n ều tron dụng cụ n t , t t ị n,máy giặt,lò vi sóng, n tho i, u c DVD,thi t bị a

p ơn t n,dây chuyền tự ng, v.v

1.2 Cấu trúc và chức năn các khối

1.2.1 Cấu trúc

H n 3 1: ấu trú ủ v ều k ển AVG

Trang 6

2

1.2.2 chức năng các khối

1.2.2.1 Bộ nhớ

B n ớ ủ v ều k ển AVR ợ tổ ứ n s u:

B n ớ ơn tr n (Pro r m m mory) : n ớ Fl s l p tr n v x ợ

B n ớ ơn tr n ồm 2 p n: v tor n ắt( nt rrupts v tors) v mã l n

ơn tr n ( nstru t on) C nt rrupts v tors nằm ở p n u ủ n ớ ơn

tr n v tùy v o từn lo p T p s u nt rrupts v tors l nstru t on, ây

Trang 7

3

EEPRO (El tr lly Er s l Pro r mm l RO ) : l n ớ k qu n tr n

ủ v ều k ển AVR, n ớ n y l RO n n k ôn ị x k mất n n n ợ

C nstru t on ợ ứ tron n ớ ơn tr n Fl s m mory ớ n

t n 16 t B n ớ ơn tr n ợ truy p tron mỗ u kỳ xung clock

và 1 nstru t on ứ tron pro r m m mory sẽ ợ lo v o tron nstru t on

r st r, nstru t on r st r t n v lự n r st r f l ũn n RA o A U

t ự t Tron lú t ự t ơn tr n , ị ỉ ủ òn l n n t ự t ợ quy t

ịn ở m t m ơn tr n – PC (Pro r m ount r) Đ ín l t ứ o t

C t DDxn ể truy p o ị ỉ xuất n p DDRx B t DDxn tron t n hi DDRx ùn ể ều k ển ớn ữ l u ủ ân ủ ổn n y trị lo

Trang 8

ổn ) N ắt n trở kéo r , PORTx ợ trị 0 oặ ân n n ổn

r C ân ủ ổn l 3 tr n t k 1 ều k n r s t l tí ự t m í xun ồn

ồ k ôn o t n

C t PINxn ể truy p t ị ỉ xuất n p PINx PINx l ổn ỉ ể , ổn n y t ể tr n t lo ủ PORTx PINx k ôn p l t n ,v PINx o p ép t trị lo tr n ân ủ PORTx ú ý PINx

k ôn p l t n ,v PINx o p ép t trị lo tr n ân ủ PORTx

1.2.2.4 Các khối khác

ADC: C o p ép uyển ổ tín u từ t ơn tự s n tín u số

SPI, I2C, Us rt: l k ố ợ xây n o p ép o t p vớ m y tín , mo ul

uy n ụn , … t ôn qu o t ự uẩn Us rt, I2C, SPI

PW : o p ép t o r xun o t n số 50Hz n n rôn xun t ể t y

Trang 9

5

H n 3 2 Cấu t o ủ r u no uno r3

1 Cáp USB Đây l ây p t ờn ợ n kèm t o o, ây p ùn ể ắm

v o m y tín ể n p ơn tr n o o v ây ồn t ờ ũn lấy n uồn từ n uồn us

Trang 10

6

5 Nút reset Nút r s t ợ s ụn ể r s t l ơn tr n n y Đô k

ơn tr n y ặp lỗ , n ờ ùn t ể r s t l ơn tr n

6 ICSP củ ATme 6U ICSP l ữ v t tắt ủ In-Circuit Serial

Pro r mm n Đây l ân o t p SPI ủ p Atm 16U2 C ân n y

t ờn ít ợ s tron ự n về Ar u no

7 Chân x ấ ín h ệ C tất 14 ân xuất tín u r tron Ar u no Uno,

n ữn ân ấu ~ l n ữn ân t ể ăm xun (PW ), tứ t ể ều k ển tố

n ơ oặ s n ủ èn H n 2 t ể n rất rõ n ữn ân ể ăm xung này

8 IC ATmega 328 IC Atm 328 l l n ồn ủ o m Ar u no Uno, IC n y

0 Chân lấy ín h ệ An lo C ân n y lấy tín u An lo (tín u t ơn tự)

từ m n ể IC Atm 328 x lý C tất 6 ân lấy tín u An lo , từ A0 n A5

Chân cấp n ồn cho cảm b n C ân n y ùn ể ấp n uồn o t t

ị n n o n rol , m n, RC s rvo,…tr n k u vự n y sẵn ân GND ( ân nố ất, ân âm), ân 5V, ân 3 3V n ợ t ể n ở n 2 N ờ n ữn

ân n y m n ờ s ụn k ôn n t t ị n ổ n k ấp n uồn o m

n, rol , r s rvo,…N o r tr n k u vự n y òn có chân Vin và chân reset, chân IOREF Tuy n n ân n y t ờn ít ợ s ụn n n tron t l u n y x n k ôn sâu về n

Trang 13

9

B ớ 2: C n mụ ownlo ể l n ơn tr n IDE t í ợp ( n 3 6)

H n 3 6: m n n l n ơn tr n IDE t í ợp

B ớ 3: C n ều n t í ợp

C 2 tùy n o ều n W n ows l W n ows nst ll r v W n ows

z p f l for non m n nst ll Tùy n t ứ n ất ùn o n ờ l m n ủ

m y, tùy n t ứ 2 o n ờ k ôn p m n ủ m y T ôn t ờn số

Trang 15

11

6 Cà đặt driver arduino uno r3

T ớn ẫn ặt tr n r v r o r u no o r ã ợ sẵn n n p n

ớn ẫn n y ỉ n o n n o ùn t mụ ặt sẵn tron f l nén ZIP

Chọn Start Menu, click chuột phải "Computer", và chọn "Manage" (hình 3.9)

Hình 3.9: vào trình cài đặt driver

C n "D v n r" p í n tr , t m òn "Unknown v " oặ "Ar u no

*Bo r N m *" p í ớ "Ot r v s" (Hình 3.10)

H n 3 10: n r v r n n ủ r u no

Cl k u t p v o "Unknown v " oặ "Ar u no *Bo r N m *" v n

"Update Driver Software" (hình 3.11)

Trang 16

12

H n 3 11: C p n t r v r

S u n "Brows my omput r for Dr v r softw r "

H n 3 12: x ịn ờn ẫn p n t r v r Cuố ùn on Brows v t m n t mụ ứ f l r v r tron t mu

r u no( ví ụ tr n m y ủ tô l F:\Program Files\arduino-1.0.5\drivers) (hình 3.13)

Trang 18

14

2 NGÔN NGỮ LẬP TRÌNH 2.1 Cấu trúc ngôn ngữ lập trình

Fun t on t ứ l loop Đây l ốt lõ ủ m ơn tr n Ar u no Ar u no

n y, s u k fun t on s tup ã y xon , fun t on loop sẽ y qu tất o ,

s u t ự n l to n - o n k oặ l ị mất n uồn oặ ôn tắ r s t ợ

n ấn C ều t ờ n n ể o n t n m t loop p ụ t u v o p n o ợ

ứ tron n

D ớ ây l m t sơ ồ m n ớ tron m t ơn tr n :

H n 3 16: ấu trú ủ ơn tr n v ều k ển ùn r u no

Ví ụ 3 1:

Trang 19

// initialize the digital pin as an output

// Pin 13 has an LED connected on most Arduino boards:

digitalWrite(13, HIGH); // set the LED on

delay(1000); // wait for a second

digitalWrite(13, LOW); // set the LED off

delay(1000); // wait for a second

Trang 20

16

Dây cáp USB 2 đầu Type A-B

Hãy tu n tự t ự n t o từn ớ t o ớn ẫn s u

Bước 1: Kết nối Arduino UNO R3 vào máy tính

Hình 3.17: kết nối arduino với pc

Bước 2: Tìm cổng kết nối của Arduino Uno R3 với máy tính

Ar u no Uno R3 k t nố vớ m y tín , n sẽ s ụn m t ổn CO (Communication port - ổn ữ l u o) ể m y tín v o m t ể truyền t ữ l u

qu l t ôn qu ổn này W n ows t ể qu n lí n 256 ổn CO Để t m ợ

ổn CO n ợ s ụn ể m y tín v m Ar u no UNO R3 o t p vớ nhau, n p mở ứ năn D v n r ủ W n ows

B n mở sổ Run v õ l n mmc devmgmt.msc

Hình 3.18: khởi động msc

Trang 21

17

S u ấm Ent r, sổ Device Manager sẽ n l n

Hình 3.18: cửa sổ msc device manager

ở mụ Ports (COM & LPT), n sẽ t ấy ổn CO Ar u no Uno R3 n k t

nố

Hình 3.19: Xác định tên cổng com giao tiếp với arduino uno

Cổn k t nố ở ây l COM3

Trang 22

18

T ôn t ờn , tron n ữn l n k t nố t p t o, W n ows sẽ s ụn l ổn

CO 3 ể k t nố n n n k ôn n t ự n t m t o t t m ổn CO n y nữ Bước 3: Cấu hình phiên làm việc cho Arduino IDE

Vào menu Tools -> Board -> n Arduino Uno

Hình 3.20: chọn loại kit arduino đang sử dụng

Vào menu Tools -> Serial Port -> n ổn Ar u no n k t nố vớ m y tín Ở

m y ủ m n l COM3

Trang 24

P n: l ân muôn xuất ữ l u

v lu : trị l 0( OW) oặ 1(HIGHT)

Ví ụ 3 2:

void setup() {

Trang 27

Ho t n : t ự n l n n ắt, CPU sẽ t m k m tron n v tor n ắt

ị ỉ ủ ơn tr n p ụ vụ n ắt N ờ s ụn ũn t ể xây ựn môt ơn

T m r 0, 2 l 2 t m r 8 t, y n k n ỉ t ể m từ 0 n 255 v vớ Timer1 là t m r 16 t, n t ể m từ 0 n 65535 mà thôi Arduino UNO có xung

n ịp l 16 Hz, t ơn ơn 1/16000000s, ~63ns N u T m r m xun n ịp

n y t vớ T m r 0,2 ỉ t ể m 256*63ns ~16us v vớ T m r 1 l ~4 ms

uốn ặt n ắt, n p ặt l n tron m setup(){}

Trang 28

 pwm( r p n, nt uty, lon m ros on s) // Băm xun r ân p n vớ số

u kỳ l uty Xun r n l microseconds

 s l Pwm( r p n) //Hủy ăm xun

const int led = LED_BUILTIN;

// ịn n ĩ ân ED, B n ED_BUI TIN ùn ể ỉ ED ợ // ắn

tr n Bo r m Ví ụ vớ Ar u no UNO t // ED_BUI TIN=13 void setup(void)

Trang 29

// x y r n ắt ơn tr n sẽ m l nk ED() }

int ledState = LOW;

volatile unsigned long blinkCount = 0;

Trang 31

int ledPin = 13;

void tatled()

{

t lWr t (l P n, OW); // tắt èn l

Trang 32

// m t tl l n tụ k òn n ấn nút }

Tron ứn ụn o l ờn v ều k ển ằn v ều k ển uyển ổ

t ơn tự-số (ADC) l m t t n p n rất qu n tr n Dữ l u tron t ớ ủ ún t

l ữ l u t ơn tự ( n lo ) Ví ụ n t k ôn k í uổ s n l 25oC v uổ

Trang 33

29

t n 8 t t ể ứ tố 256 (28) trị n uy n từ 0 n 255, n t mứ

n t k ôn n uy n n 28 123 oC sẽ k ôn ợ l N k , ún t ã

“số ” ( t l z ) m t ữ l u n lo t n m t ữ l u t l Qu tr n “số ”

n y t ờn ợ t ự n ở m t t t ị l “ uyển ổ t ơn tự - số y ơn

n l ADC (An lo to D t l Converter)

Tron r u no ể uyển 1 tín u v t ly ớ n tín u n t n tín u số

t s ụn ân từ A0 n A5

Cú pháp

n lo R ([ ân n p]);

N m vụ ủ analogRead() l trị n p từ m t ân An lo (ADC)

Tr n m Ar u no UNO 6 ân An lo In, ợ kí u từ A0 n A5 Tr n

m k ũn n ữn ân t ơn tự n v y vớ t ền tố "A" ứn u, s u l số

Trang 34

I²C, vi t tắt ủ từ t n An “Inter-Integrated Circuit”, là m t lo bus nố

t p ợ p t triển ở ãng s n xuất l n k n n t Philips Ban u, lo us n y chỉ ợ ùng trong các linh ki n n t củ P l ps S u , do tính u v t v ơn n

Trang 35

C m t l u ý n ỏ về xun lo k B n ất ủ I2C l ữ l u tr n ờn SDA ỉ

ợ n n ở s ờn l n ủ ân C Do v y xun lo k t ể k ôn n ín x

tố l 1 Hz y 3 4 z ợ ụn ểm n y t ể s ụn 2 ân GPIO ể l m

ân o t p I2C mềm m k ôn n ất t t n m t ân C t o xun vớ tố

ín x ( t ể ỉ n ùn l y v t tắt mứ lo , t m k o p n o ở uố bài :D)

SCL và SDA luôn ợ kéo lên n uồn ằn m t n trở kéo lên có giá trị xấp xỉ 4,7 KOhm (tùy vào từn t t ị và chuẩn o t p, ó thể o n tron k o n

Trang 36

32

1KOhm n 4 7 o m C ú ý rằn t o ấu ình này, m t t t ị ó thể ở mứ lo

OW y o trở n n ko thể ở n HIGH => C ính trở pull up t o r mứ lo HIGH)

H n 3 28: trị n trở tr o n uồn tron I2C

Lý do là các chân này có d n op n r n ể ó thể hoạ độn ở các mức đ ệnáp

Trang 37

Hình 3.29: Hai chân I2C trên arduino

Đ s ụn I2C us tr n Ar u no, ún t sẽ n s ụn t v n W r ( ây l built- n l r ry ủ Ar u no)

n sẽ ớ t u m t số m tron t v n W r :

 Wire.begin(address (optional));

Trang 38

34

ở t o t v n W r v t m v o I2C us address: 7- t ị ỉ ủ t t ị "Sl v " (opt on l); n u k ôn

Trang 39

35

C ún t sẽ lắp mo ul R l t m lo k vớ Ar u no n s u: (trong module real

t m lo k ã sẵn 2 n trở pull-up 3.3k)

H n 3 30: k t nố r u no uno vớ DS1307 Đây l T m k p r r st rs ủ DS1307, ún t sẽ ự v o n n y ể read/write IC DS1307 qua I2C

Trang 41

/* C uyển từ form t BCD (B n ry-Coded Decimal) sang Decimal */

int bcd2dec(byte num)

Trang 43

n p Tín u từ p UART t ờn t o mứ TT : mứ lo l 5, mứ low l 0V Tron k , tín u t o uẩn RS232 tr n m y tín n ân t ờn l -12V cho

Trang 44

40

mứ lo v +12 o mứ low (t m k o n 1) C ú ý l t í tron t

l u n y t o mứ lo TT ủ USART, k ôn t o RS232

Hình 3.31: Tín u t ơn ơn ủ UART v RS232

T yền hôn nố p: s n n xây ựn m t ứn ụn p ứ t p n s

ụn n ều v ều k ển ( oặ v ều k ển v m y tín ) k t nố vớ n u Tron qu

tr n l m v v ều k ển n tr o ổ ữ l u o n u, ví ụ t n uốn st r truyền l n o Sl v r oặ Sl v r ở tín u t u t p ợ về st r x lí…G s

ữ l u n tr o ổ l mã ều 8 ts, n t ể sẽ n ĩ n k t nố ơn

n n ất l k t nố 1 PORT (8 t) ủ mỗ v ều k ển vớ n u, mỗ l n tr n PORT

sẽ ịu tr n m truyền/n n 1 t ữ l u Đây l o t p son son ,

n y l ơn n n ất v ữ l u ợ xuất v n n trự t p k ôn t ôn qu ất kỳ

m t t u t n ổ n o v v t tố truyền ũn rất n n Tuy n n, n n

t ấy, n ợ ểm ủ truyền n y l số ờn truyền qu n ều, n ãy t ởn

t ợn n u ữ l u ủ n trị n lớn t số ờn truyền ũn sẽ n ều t m

H t ốn truyền t ôn son son t ờn rất ồn kền v v t kém u qu Truyền

t ôn nố t p sẽ quy t v n ề n y, tron tuyền t ôn nố t p ữ l u ợ truyền từn t tr n 1 ( oặ m t ít) ờn truyền V lý o n y, o ù ữ l u ủ n lớn

n âu n ũn ỉ ùn rất ít ờn truyền H n 2 mô t sự so s n ữ 2

Ngày đăng: 19/08/2022, 10:48

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

w