- Trang Chủ
- Điện - Điện tử
- 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
Xem mẫu
- 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)
- LỜI NÓI ĐẦU
ờ n ut nt xn lờ o n n sn sn v n
n n t u o Đ n–Đ nt C n n n n Ar u no ?V y
Ar u no l ? Ar u no t t r l m t o m v x lý ợ ùn ể l p tr n
t ơn t vớ t t ị p n ứn n m n, n ơ, èn oặ t t
ịk Đặ ểm nổ t ủ Ar u no l mô tr ờn p t tr ển ứn ụn ự
kỳ ễ s ụn , vớ m t n ôn n ữ l p tr n t ể m t n n n
n y vớ n ờ ít m ểu về n t v l p tr n V ều l m n n n
t ợn Ar u no ín l mứ rất t ấp v tín ất n uồn mở từ p n ứn tớ
p n mềm
Sự r ờ ủ m Ar u no t ú ẩy sự y u t í , t m tò n n ứu, ứn
ụn tự n a , ro ot v o ờ sốn v ôn n p Vớ n ữn u ểm
r n ủ m n , Ar u no ã n n n nổ t n to n t ớ v ợ ớ
s n , s n v n, ớ n n ứu, n ữn n ờ y u t í kỹ t u t, n ữn
n ờ t í l m ồ tự s ụn r n rã T V t N m, số l ợn n ờ s
ụn m Ar u no n y n tăn Để úp n t m ểu Ar u no, t l u
n y ã ợ n so n T l u ồm 3 p n, ợ n so n từ ơn n n
p ứ t p T l u ợ v tm t n ắn n, ễ ểu, v o n ữn vấn ề
ốt lõ tron v s ụn Ar u no o u sốn
ặ ù ã ố ắn tron qu tr n n so n t l u, n n ắ ắn tài
l u k ôn t ể tr n k ỏ s s t tron qu tr n n so n Rất mon n n ợ
sự p ý ân t n ủ n ểt t ể o n t n ơn nữ t l u
này.
2
- Mục lục
LỜI NÓI ĐẦU ..................................................................................................... 1
T NG QUAN .................................................................................................. 1
11 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
15C ặt IDE.................................................................................................... 10
16C ặ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
22V or ữ l u ................................................................................................ 20
2 2 1 xuất ữ l u r m t p n ............................................................................... 20
23C 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 no on d no ......................................... 47
T N ÀI: G o p An lo o p PWM on d no.......................... 56
I
- 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
II
- 1. T NG QUAN
1.1 Khái niệm
V đ ề kh ển l m t máy tính ợ tí ợp tr n m t chíp, n t ờn ợ s ụn
ể ều k ển thi t bị nt V ều k ển, t ự ất, l m t t ốn o ồm m t vi
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ác mô 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 nk
n ều tron dụng cụ nt ,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
1
- 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
l mã l n ể pt ự t , ơn tr n v t o p sẽ lo v op nn y
B n ớ ữ l u (D t m mory): Đây l n ớ qu n tr n n ất ủ p, k l p
tr n ủ y u truy p n ớ n y D t m mory ồm 5 p n:
C t n ứ năn (R st r f l ): tất p AVR ều 32 t n
(từ 0x00 -> 0x1F) v ều l t n 8 t C R st r f l ợ ặt t n t o
t ứ tự R0-R31 C t n n y ùn ể truy p trự t p nstru t on, ùn
ểt ự n p ép to n,
C t n xuất n p (I/O R st r): I/O R st r ồm 60 t n ,l
n õ ot pv ều k ển vớ t t ị n o v , tất t n tr n
t , ều k ển, ủ t t ịn o v ều nằm ở ây Ví ụ n t n
DDRB,DDRC,DDRD ùn ểk o tr n t I/O o Port B,C,D.
R m tĩn (Int rn l SRA ): l k ôn n ứ n tron qu tr n t ự
t ơn tr n
R mn o (Ext rn l SRA ): p AVR t ể ắn t m n ớn o
ểs ụn t m n, v p n n ớn y ỉ tồn t k ps ụn t m
nhớ n o
2
- 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 nn n ợ
ùn ể l u trữ ữ l u B n ớ EEPRO ợ t r n vớ 4 p n tr n v ị ỉ ắt
u 0x00.
1.2.2.2 ALU
Theo Hình 3.1 ểu ễn ấu tron n tron ủ 1 AVR B n t ấy rằn 32 t n
tron R st r F l ợ k t nố trự t p vớ Ar t m t o Un t -ALU (ALU
ũn ợ x m l CPU ủ AVR) ằn 2 l n , v t A U t ể truy xuất trự t p
ùn lú 2 t n RF ỉ tron 1 u kỳ xun lo k (vùn ợ k o n tròn m u ỏ
trong hình 4).
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ự nr st r f l ũn n RA oA 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
n ủ AVR
AVR u ểm l u t nstru t on ều ợ t ự t tron 1 u kỳ
xun lo k, v v y t ể n uồn lo k lớn n ất o AVR t ể n ỏ ơn 1 số v ều
k ển k n PIC n n t ờ nt ự t vẫn n n ơn
1.2.2.3 I/O
x m xét n ổn I/O ủ AVR t t p xét tớ 3 t n t
DDxn,PORTxn,PINxn.
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
3
- „0‟ v o ất k tn o ủ t n n yt n sẽ trở t n lố v o, òn „1‟ v o t
t n trở t n lố r
C t PORTxn ể truy pt ị ỉ xuất n p PORTx PORTx ợ
trị 1 k ân ấu t o n ổn r t n trở kéo l ủ n ( ợ nố vớ
ổ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 pt ị ỉ 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 ot ự 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
ổ
1.3 Cấu trúc của một kit arduino
P nn yn về p n ứn ủ Ar u no Uno R3, m t o m t ôn ụn n
n y Do ây l t l u ớn ẫn n n n nt ỉ r n ữn k n t ứ ơ
n nt t ov s ụn o r m n y N un ờ n n ữn k n t ứ
uy n sâu ơn t t ểt mk ot w st ín t ứ ủ Ar u no: r u no
4
- H n 3 2 Cấu t o ủ r u no uno r3
1. Cáp USB Đây l ây pt ờn ợ n kèm t o o, ây p ùn ể ắm
v o m y tín ển p ơn tr n o ov ây ồn t ờ ũn lấy n uồn từ n uồn us
ủ m y tín ể o o o t n N o r p USB òn ợ ùn ể truyền ữ l u
từ o Ar u no l n m y tín Dây p 2 u, u1 ợ ùn ể ắm v o ổn USB
tr n o Ar u no, u1 ùn ể ắm v o ổn USB tr n m y tín
2. IC Atmega 16U2 IC n y ợ l p tr n n m t uyển ổ USB –to-Serial
ùn ể o t p vớ m y tín t ôn qu o t ứ S r l ( ùn ổn CO )
3 Cổn n ồn n oà Cổn n uồn n o n ằm s ụn n uồn n nn o n
p n, n quy y pt r o o Ar u no o t n N uồn n ấp v o ổn
n y l n uồn DC u nt từ 6V n 20V, tuy n n u nt tốt n ất m
n s n xuất k uy n ùn l từ 7 n 12V
4 Cổn US Cổn USB tr n o Ar u no ùn ể k t nố vớ p USB
5
- 5. Nút reset Nút r s t ợ s ụn ểr s tl ơn tr n n y Đô k
ơn tr n y ặp lỗ , n ờ ùn t ểr s tl ơ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 ủ om Ar u no Uno, IC n y
ợ s ụn tron v t u t p ữ l u từ m n, x lý ữ l u, xuất tín u r ,…
9 Chân ICSP củ ATme 3 8C ân ICSP ủ ATm 328 ợ s ụn
o o t p SPI (S r l P r p r l Int rf ), m t số ứn ụn ủ Ar u no s
ụn ân n y, ví ụ n s ụn mo ul RFID RC522 vớ Ar u no y Et rn t
S l vớ Ar u no
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
ị nn 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 nt t ị n ổ nk ấ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
6
- Các l nh k ện khác n bo d A d no Uno N o ln k n ãl tk
n tr n, Ar u no Uno òn 1 số l n k n n úýk Tr n o tất 4 èn l ,
o ồm 1 l n uồn (l ON n ằm o t o ã ợ ấp n uồn), 2 l Tx v Rx, 1
l C l Tx v Rx sẽ n ấp n y k ữ l u truyền từ o r l n m y tín oặ
n ợ l t ôn qu ổn USB ợ ợ k t nố vớ ân số 13 n y ợ
l l on o r (tứ l tr n o), l n y úp n ờ ùn t ểt ự n
ơn n m k ôn n ùn t m l n o
Hình 3.3: các chân trên arduino uno r3
7
- H n 3 4 C ứ năn ân tr n r u no uno r3
1.4 Arduino IDE
T r u no IDE
B ớ 1: v o tr n w r u no ( n 3 5)
H n 3 5: Tr n u ủ r u no
8
- 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 on ờ l mn ủ
m y, tùy nt ứ2 on ờ k ôn p m n ủ m y T ôn t ờn số
n tùy n t ứ n ất, tứ W n ows nst ll r
B ớ 4: T IDE
Ar u no r 2 lự n, o ồm ỉ ownlo về (just ownlo ) v
ownlo về ùn quy n p ( ontr ut n ownlo ), n ợ t ể nở
n 6 Ar u no mon muốn n ờ ùn n u ều k n ãy quy n p ủn
ãn , mứ quy n p t ấp n ất l 3USD ( n 3 7)
H n 3 7: tùy n ownlo IDE
9
- 5 Cà đặt IDE
S uk t về t ợn f l Ar u noForV su lStu o ms yfl v l mn
n n ớ (hình 3.8)
H n 3 8: ớ ặt IDE
10
- 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 rv r n n ủ r u no
Cl k u tp v o "Unknown v " oặ "Ar u no *Bo r N m *" v n
"Update Driver Software". (hình 3.11)
11
- 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 pn t rv r
Cuố ùn on Brows v t m n t mụ ứ fl 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)
12
- H n 3 13: ờn ẫn n rv r
N u w n ows n t ôn o n y ãy n "Install this driver software anyway".
(hình 3.14)
H n 3 14: pn t rv r
t qu s u k pn tt n ôn
H n 3 15: pn tt n ôn
13
- 2. NGÔN NGỮ LẬP TRÌNH
2.1 Cấu trúc ngôn ngữ lập trình
2.1.1 Cấu trúc chương trình
ơn tr n Ar u no ợ t ot n ở ít n ất fun t on
Đ u t n l fun t on s tup N sẽ y v o lú k ở t o - ỉ m t l n uy n ất và
ợ s ụn ể o o Ar u no t n ữn ã ợ k t nố v ở âu, ũn n
l k ở t o n n n tron ơn tr n
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 nk 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 op 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:
14
- C ún t ãy ùn x m o ơn tr n Bl nk v x m function setup và loop
ợ v tn t n o n é!
D ớ ây l n un fun t on s tup:
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
}
C òn ắt u vớ // ỉ ơn nl òn omm nt t í on ờ ,v
ún k ôn ợ t l n Ar u no V v y tron t ự t , ỉ m t òn o tron
fun t on s tup n y Đ l òn l n "T tl p ân 13 t n u r (output)"
C ân 13 ín l ân m t èn ED built-in.
S u ,t x m n fun t on loop():
void loop() {
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
}
2.1.2 Biên dịch và nạp chương trình
B n sẽ n 3 t ứ s u:
Arduino IDE
Mạch Arduino UNO R3
15
- 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 om 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, np 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
16
nguon tai.lieu . vn