Giáo trình vi điều khiển AVR | Trường Đại học sư phạm kỹ thuật TP Hồ Chí Minh

Khái ni m vi u khi n (microcontroller – MC) ã khá quen thuộc với các sinh viên CNTT, điện tử, điều khiển tự động cũng như Cơ điện tử . Tài liệu giúp bạn tham khảo, ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

GIÁO TRÌNH VI U KHI N AVRĐI
1 www.dks.edu.vn
GIÁO TRÌNH VI U KHI N AVRĐI
2 www.dks.edu.vn
Mc L c
BÀI 1 : GI I THI U V VI ĐIU KHIN AVR.................................................. 5
1. Gi i thi u v vi u khi n............................................................................. 5 đi
2. Gi i thi u v vi u khi n AVR ................................................................... 7 đi
3. L p trình cho AVR....................................................................................... 10
BÀI 2 : GIAO TI P VÀO RA I/O ........................................................................ 17
1. Gi i thi u giao ti p vào ra I/O ..................................................................... 17 ế
2. Cách c u hình ch c n ng IO ........................................................................ 18 ă
3. Ví d minh h a............................................................................................. 19
BÀI 3 : GIAO TI P V I LED 7 THANH............................................................ 24
1. C b n v led 7 thanh................................................................................... 24 ơ
2. Nguyên lí l p trình cho led 7 thanh.............................................................. 26
3. Ví d minh h a............................................................................................. 27
BÀI 4 : GIAO TI P V I BÀN PHÍM .................................................................. 31
1. C b n v phím b m .................................................................................... 31 ơ
2. Ch ng trình ví d ....................................................................................... 32 ươ
3. K thu t ch ng rung bàn phím...................................................................... 34 ĩ
BÀI 5 : B CHUY N ĐỔI ADC.......................................................................... 36
1. Gi i thi u v ADC ....................................................................................... 36
2. Cách c u hình ADC trong Code Vision cho Atmega32. ............................. 38
3. Ví d minh h a............................................................................................. 39
BÀI 6 : GIAO TI P LCD...................................................................................... 41
1. Gi i thi u v LCD 16x2............................................................................... 41
2. Cách c u hình cho LCD trong Code Vision cho Atmega32........................ 47
3. Ví d .......................................................................................................... 49
BÀI 7 : GIAO TI P V I LED MA TR N........................................................... 51
1. C b n v led ma tr n................................................................................... 51 ơ
2. T o font cho led ma tr n .............................................................................. 53
GIÁO TRÌNH VI U KHI N AVRĐI
3 www.dks.edu.vn
3. Ví d minh h a............................................................................................. 54
BÀI 8: GIAO TI P MÁY TÍNH........................................................................... 55
1. C b n v giao ti p RS232........................................................................... 55 ơ ế
2. Cách c u hình module UART trong Code Vision ....................................... 57
3. Ví d ............................................................................................................. 58
BÀI 9 : GIAO TI P I
2
C......................................................................................... 66
1. Gi i thi u chung v I2C............................................................................... 66
2. Module I
2
C trong Atmega32........................................................................ 74
3. Ví d ............................................................................................................. 76
BÀI 10 : NG C B C.................................................................................. 80 ĐỘ Ơ ƯỚ
1. C b n v ng c b c............................................................................... 80 ơ độ ơ ướ
2. Các m ch u khi n đi độ ướng cơ b c ............................................................. 82
3. Ví d ............................................................................................................. 85
BÀI 11 : GIAO TI P V I C NG LPT ................................................................ 87
1. C b n v c ng LPT..................................................................................... 87 ơ
2. Ví d minh h a............................................................................................. 90
BÀI 12 : GIAO TI P V I MA TR N PHÍM ...................................................... 92
1. C b n v ma tr n phím............................................................................... 92 ơ
2. Ví d minh h a............................................................................................. 94
BÀI 13 : TIMER.................................................................................................... 96
1. Gi i thi u v timer ....................................................................................... 96
2. Ví d minh h a........................................................................................... 100
BÀI 14 : NG T ................................................................................................... 101
1. Gi i thi u v ng t....................................................................................... 101
2. Các b c c u hình cho ng t ho t ng ...................................................... 104 ướ độ
3. Ví d ........................................................................................................ 105
BÀI 15 : U KHI N NG CĐI ĐỘ Ơ M T CHI U............................................. 107
1. Gi i thi u v ng c m độ ơ t chiu................................................................ 107
GIÁO TRÌNH VI U KHI N AVRĐI
4 www.dks.edu.vn
2. Ví d minh h a........................................................................................... 109
BÀI 16 : GIAO TI P V I GLCD....................................................................... 111
1. C b n v GLCD........................................................................................ 111 ơ
2. Ví d minh h a........................................................................................... 116
GIÁO TRÌNH VI U KHI N AVRĐI
5 www.dks.edu.vn
BÀI 1 : GI I THI U V VI ĐIU KHI N AVR
- Gii thi u chung v vi u khi đi n.
- Gii thi u v vi điu khi n Atmega32.
- Lp trình cho Atmega32.
1. Gii thi u v vi u khi n đi
Khái ni m vi u khi n (microcontroller MC) ã khá quen thu c v i các đi đ
sinh viên CNTT, n t , u khi n t ng c ng nh C n t m t đi đi độ ũ ư ơ đi
trong nhng IC thích h p nh t thay th các IC s trong vi c thi t k m ch để ế ế ế
logic. Ngày nay ã có nh ng MC tích h p t t c các ch c n ng c a m ch logic. đ đủ ă
Nói nh v y không có ngh a là các IC s c ng nh các IC m ch s l p trình c ư ĩ ũ ư đượ
khác nh PLC… không c n dùng n a. MC c ng nh ng h n ch ràng ư ũ ế
nht t c ch m h n các m ch logic… MC c ng m t máy tính máy tính độ ơ ũ
nhúng y ch c n ng c a m t máy tính. CPU, b nh ch ng đầ đủ ă ươ
trình, b nh d li u, có I/O và các bus trao i d li u. đổ
Cn phân bi t khái ni m MC v i khái ni m vi x (microprocessor – MP)
như 8088 ch ng h n. MP ch CPU không các thành ph n khác nh b ư
nh I/O, b nh . Mu n s d ng MP c n thêm các ch c n ng này, lúc này ng i ta ă ườ
gi h vi x (microprocessor system). Do c m này nên n u l a đặ đi ế để
chn gi a MC và MP trong m t m ch đi n t nào đó thì t t nhiên ng i ta s ch n ườ
MC vì nó s r ti n h n nhi ơ u do ã tích h p các ch c n ng khác vào trong chip. đ ă
Vy m t vi để điu khi n ch y c thì c n nh ng u ki n gì : đượ đi
GIÁO TRÌNH VI U KHI N AVRĐI
6 www.dks.edu.vn
- Th ngu nh t n c p, ngu n c p cái đu tiên, c b n nh t trong các ơ
mch n t , v n v ngu n 1 trong nhđi đề ng v n r t au u. đề đ đầ
Không ngu n thì không th g i 1 m ch n c. Ngu n c p cho vi đi đượ
đi u khi n là ngu n 1 chi u.
- Th hai là m ch dao ng, m ch dao ng làm ? Gi s các b n l đ độ đ p
trình cho con AVR : n th i m A m 1 công vi c ó, th thì l y đế đi đ ế
cái xác nh để đị đượ đ Đc th i im nào th i đim A ? ó chính là m ch
dao ng. d nh m i ng i u th ng nh t vào m t gi chu n làm đ ư ườ đ để
vic. C h th ng vi u khi n c ng v y, c h th ng khi ó u l y xung đi ũ đ đề
nhp clock – xung nh p m ch dao ng làm xung nh p chu n ho t ng. độ để độ
- Th ba ngo i vi, ngo i vi ây các thi t b giao ti đ ế để ế đ p v i vi i u
khin th c hi n 1 nhi m v nào ó vi u khi n a ra. d nh để đ đi đư ư
các bn mu n u khi n ng c 1 chi u, nh ng vì vi đi độ ơ ư điu khi n ch a ra đư
các m c đi n áp 0-5V, và dòng u khi n c mđi y ch c mA, v i ngu n c p
này thì ko th n i tr ế độ để đ c ti p ng cơ vào vi đi u khin i u khi n,
phi qua 1 thi t b khác g i là ngoế i vi, chính xác h n ây là driver, ngơ đ ười
ta dùng driver th u khi n c các dòng n l n t các ngu n để đi đượ đi
đ in nh . Các bàn phím, công t c… là các ngo i vi.
- Th i 4 ch ng trình, ây file .hex n p cho vi ươ đ để đ u khi n, ch ng ươ
trình chính là thu t toán b n tri n khai thành các câu l nh r i biên d ch
thành mã hex n p vào vi u khi n. để đi
Các công c h c AVR : để
- Ngôn ng l p trình : C, ASM…
- Phn m m l p trình : IAR, CodeVisionAVR…
- Mch n p : STK200/300/500, Burn-E…
- Mch phát tri n : Board tr ng, ph n m m mô ph ng, kit…
GIÁO TRÌNH VI U KHI N AVRĐI
7 www.dks.edu.vn
2. Gii thi u v vi u khi n AVR đi
AVR là h vi u khi n 8 bit theo công ngh m i, v i nh ng tính n ng r t đi ă
mnh c tích h p trong chip c a hãng Atmel theo công nghđượ RISC, nó mnh
ngang hàng vi các h vi u khi đi n 8 bit khác nh PIC, PSoC. Do ra i mu n ư đ
hơn nên h vi u khi n AVR có nhi u tính n ng m i áp ng t i a nhu c u c a đi ă đ đ
người s d ng, so v i h 8051, 89xx s n nh, kh n ng tích h p, s độ đị ă
mm d o trong vi c l p trình và r t ti n l i.
Các tính n ng m i c a h AVR: ă
Giao di n SPI ng b . đồ
Các ng d n vào/ra (I/O) l p trình c. đườ đượ
Giao ti p I2C. ế
B bi n i ADC 10 bit. ế đổ
Các kênh b m xung PWM. ă
Các ch ti t ki m n ng l ng nh sleep, stand by..vv. ế độ ế ă ượ ư
M đị t b nh th i Watchdog.
3 b Timer/Counter 8 bit.
1 b Timer/Counter 16 bit.
1 b so sánh analog.
B nh EEPROM.
Giao ti p USART..vv. ế
Atmelga32 y tính n ng c a h AVR, v giá thành so v i các lo i khác đầ đủ ă
thì giá thành là v a ph i khi nghiên c u và làm các công vi c ng d ng t i vi u đi
khin. Tính n ng : ă
B nh 32KB Flash có kh n ng ă đọ c, ghi 10000 l n
1024 byte EEPROM có kh n ăng đọc, ghi 100000 ln.
2KB SRAM.
8 kênh u vào ADC 10 bit. đầ
Đ đ óng v 40 chân , trong ó 32 chân vào ra d li u chia làm 4 PORT
A,B,C,D. Các chân này u có ch pull_up resistors. đề ế độ
GIÁO TRÌNH VI U KHI N AVRĐI
8 www.dks.edu.vn
H tr các giao ti p UART, SPI, I2C. ế
1 b so sánh analog, 4 kênh PWM.
2 b timer/counter 8 bit, 1 b timer/counter1 16 bit.
1 b nh th i Watchdog. đị
Sơ chân Atmega32 đồ
Mô t ch c n ng các chân c a atmega32 ă
- Vcc và GND 2 chân c p ngu n cho vi u khi n ho t ng. đi độ
- Reset ây là chân reset c ng kh i ng lđ độ i m i ho t ng c a h độ th ng.
- 2 chân XTAL1, XTAL2 các chân t o b dao ng ngoài cho vi u khi n, độ đi
các chân này c n i v i th ch anh (hay s d ng lo i 4M), t g m (22p). đượ
- Chân Vref th ng n i lên 5v(Vcc), nhườ ưng khi s d ng b ADC thì chân
này c s d ng làm n th so sánh, khi ó chân này ph i c p cho đượ đi ế đ
đ in áp c đị nh, có th s dng diode zener:
GIÁO TRÌNH VI U KHI N AVRĐI
9 www.dks.edu.vn
- Chân Avcc thường c n i lên Vcc nh ng khi s d ng b ADC thì chân đượ ư
này c n i qua 1 cu n c m lên Vcc v i m c ích n nh n áp cho b đượ đ đị đi
biến i. đổ
GIÁO TRÌNH VI U KHI N AVRĐI
10 www.dks.edu.vn
3. Lp trình cho AVR
Gii thi u
Để ơ lp trình cho AVR, chúng ta th s d ng 2 ngôn ng c b n C
ASM. Nhìn chung, 2 ngôn ng này có nh ng ư ượ đu và nh c im riêng.
Ngôn ng ASM u m g n nh , giúp ng i l p trình n m b t sâu ư đi ườ
hơn v ph n c ng. Tuy nhiên l i có nh c ượ đim là ph c t p, khó tri n khai v m t
thut toán, không thu n ti n xây d ng các ch ng trình l n. để ươ
Ngược l i ngôn ng C l i d dung, ti n l i, d debug, thu n ti n xây để
dng các ch ng trình l n. Nh ng nh c ươ ư ượ đim c a ngôn ng C là khó giúp ng i ườ
lp trình hi u bi ết sâu v ph n c ng, các thanh ghi, t p l nh c a vi u khi n, h n đi ơ
na, xét v t c , ch ng trình vi t b ng ngôn ng C ch y ch m h n ch ng độ ươ ế ơ ươ
trình vi t b ng ngôn ng ASM. ế
Tùy vào t ng bài toán, t ng yêu c u c th ta ch n l a ngôn ng l p
trình cho phù h p.
r t nhi u ph n m m l p trình cho AVR, nh Code Vision, IAR, ư
AVRStudio…, trong ó Code Vision là m t trong nh ng ph n m m khá n i ti ng đ ế
ph bi n. Trong khuôn kh ế giáo trình này, chúng ta s s d ng ph n mm
Code Vision l p trình cho AVR. để
GIÁO TRÌNH VI U KHI N AVRĐI
11 www.dks.edu.vn
Giao di n ph n m m Code Vision
To project trong Code Vision :
Để to Project mi chn trên menu: File -> New c nh sau: đượ ư
GIÁO TRÌNH VI U KHI N AVRĐI
12 www.dks.edu.vn
Chn Project sau ó click chu t vào OK c c a s h i xem s d ng đ đượ
Code Winzard không:
Chn Yes c c a s CodeWinzardAVR nh sau : đượ ư
GIÁO TRÌNH VI U KHI N AVRĐI
13 www.dks.edu.vn
- S d ng chíp AVR nào và th ch anh t n s bao nhiêu ta nh p vào tab Chip.
Để kh i to cho các cng IO ta chuy n qua tab Ports.
- Các chân IO c a AVR m c nh tr ng thái IN, mu n chuy n thành tr ng đị
thái OUT có thđể đưa các mc logic ra ta click chu t vào các nút IN (m u
trng) chuy n thành OUT trong các Tab Port. Sau ó ch n để đ File ->
Generate, Save and Exit.
GIÁO TRÌNH VI U KHI N AVRĐI
14 www.dks.edu.vn
Sau ó ta save project l i : đ
GIÁO TRÌNH VI U KHI N AVRĐI
15 www.dks.edu.vn
Ta c nh sau : đượ ư
GIÁO TRÌNH VI U KHI N AVRĐI
16 www.dks.edu.vn
Như v y là chúng ta ã t o xong project trong Code Vision. đ
GIÁO TRÌNH VI U KHI N AVRĐI
17 www.dks.edu.vn
BÀI 2 : GIAO TI P VÀO RA I/O
- Cơ b n v giao tiếp vào ra I/O
- Các c ng trong atmega32 và c b n v ch c n ng c a các c ơ ă ng
- Cách c u hình vào ra I/O
- Viết ch ng trình nháy led ươ
1. Gii thi u giao ti p vào ra I/O ế
Lp trình I/O l p trình n gi đơ n c b n nh t, nh ng l i c s d ng ơ ư đượ
nhiu nh t, chúng ta u khi n on/off bóng èn, ng c , hay 1 thi t b nào ó đi đ độ ơ ế đ
cũng là 1 d ng c a u khi n I/O. đi
gi m b t s chân ra, m t s chân c a AVR là các chân a ch c n ng, nó Để đ ă
phc v cho các thi t b ngo i vi. ây khái ni m thi t b ngo i vi không ế đ ế
nghĩa là 1 chip khác mua r i bên ngoài mà là các mô un c tích h p s đ đượ n trong
chip nh các un ADC.... Khi các thi t b ngo i vi này c enable thì các ư đ ế đượ
chân này không c s d ng nh các chân cđượ ư a các cng I/O thông th ng n a. ườ
GIÁO TRÌNH VI U KHI N AVRĐI
18 www.dks.edu.vn
2. Cách c u hình ch c n ng IO ă
Atmega32 4 c ng vào ra PORTA, PORTB, PORTC, PORTD. Khi
xem xét n các c ng I/O c a AVR thì ta ph i xét t i 3 thanh ghi đế
DDxn,PORTxn,PINxn.
- Các bit DDxn truy c p cho a ch xu t nh p DDRx. Bit DDxn trong để đị
thanh ghi DDRx dùng đ điu khi n h ng d liướ u c a các chân c a c ng
này.Khi ghi giá tr logic ‘0’ vào b t bit nào c a thanh ghi này thì s
tr thành l i vào,còn ghi ‘1’ vào bit ó thì nó tr thành l i ra. đ
- Các bit PORTxn truy c p t i a ch xu t nh p PORTx. Khi PORTx để đị
đượ ư c ghi giá tr 1 khi các chân có c u t o nh c ng ra thì đin tr kéo là ch
độ đượ đ đượng( c ni vi cng). Ng t i n tr kéo ra, PORTx c ghi giá tr 0
hoc các chân d ng nh c ng ra.Các chân c a c ng 3 tr ng thái khi 1 ư
đi u ki n reset là tích c c th m chí xung ng h không ho t ng. đồ độ
- Các bit PINxn truy c p t i a ch xu t nh p PINx. PINx các c ng ch để đị
để đọ đọ c,các c ng này th c trng thái logic ca PORTx.PINx không
phi thanh ghi,vi c c PINx cho phép ta c giá tr logic trên c chân đọ đ
ca PORTx.chú ý PINx không ph i thanh ghi,vi c c PINx cho phép ta đọ
đọc giá tr logic trên các chân ca PORTx.
- Nếu PORTxn c ghi giá tr logic ‘1’ khi các chân c a c ng d ng nhđượ ư
chân ra ,các chân có giá tr ‘1’.N u PORTxn ghi giá tr ‘0’ khi các chân c a ế
cng có d ng nh chân ra thì các chân ó có giá tr ‘0’. ư đ
- Các c ng c a AVR u th c, ghi. thi t l p 1 c ng là c ng vào, ra đề đọ Để ế
thì ta tác ng t i các bit DDxn, PORTxn, PINxn. Ta th thi t l p độ ế để
tng bit làm c ng vào, ra c không ch v i cng, nh vư y ta có th x lý t i
tng bit, ây chính là m m nh c a các dòng Vi đ đi điu khi n 8 bit.
GIÁO TRÌNH VI U KHI N AVRĐI
19 www.dks.edu.vn
3. Ví d minh h a
Chương trình sau s làm nh p nháy c 8 led, led n i vào port A.
Phân tích
Ch ng trình trên r t n gi n, s thu t toán c a ch ng trình trên nh ươ đơ ơ đồ ươ ư
sau :
GIÁO TRÌNH VI U KHI N AVRĐI
20 www.dks.edu.vn
Sau khi vi t xong ch ng trình, chúng ta nh n Shift+F9 biên d ch. N u ế ươ để ế
chương trình không có l i và biên d ch thành công, s có thông báo nh sau : ư
| 1/116

Preview text:


GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
1 www.dks.edu.vn Mục Lục
BÀI 1 : GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AVR.................................................. 5
1. Giới thiệu về vi điều khiển............................................................................. 5
2. Giới thiệu về vi điều khiển AVR ................................................................... 7
3. Lập trình cho AVR....................................................................................... 10
BÀI 2 : GIAO TIẾP VÀO RA I/O ........................................................................ 17
1. Giới thiệu giao tiếp vào ra I/O ..................................................................... 17
2. Cách cấu hình chức năng IO ........................................................................ 18
3. Ví dụ minh họa............................................................................................. 19
BÀI 3 : GIAO TIẾP VỚI LED 7 THANH............................................................ 24
1. Cơ bản về led 7 thanh................................................................................... 24
2. Nguyên lí lập trình cho led 7 thanh.............................................................. 26
3. Ví dụ minh họa............................................................................................. 27
BÀI 4 : GIAO TIẾP VỚI BÀN PHÍM .................................................................. 31
1. Cơ bản về phím bấm .................................................................................... 31
2. Chương trình ví dụ ....................................................................................... 32
3. Kĩ thuật chống rung bàn phím...................................................................... 34
BÀI 5 : BỘ CHUYỂN ĐỔI ADC.......................................................................... 36
1. Giới thiệu về ADC ....................................................................................... 36
2. Cách cấu hình ADC trong Code Vision cho Atmega32. ............................. 38
3. Ví dụ minh họa............................................................................................. 39
BÀI 6 : GIAO TIẾP LCD...................................................................................... 41
1. Giới thiệu về LCD 16x2............................................................................... 41
2. Cách cấu hình cho LCD trong Code Vision cho Atmega32........................ 47 3.
Ví dụ.......................................................................................................... 49
BÀI 7 : GIAO TIẾP VỚI LED MA TRẬN........................................................... 51
1. Cơ bản về led ma trận................................................................................... 51
2. Tạo font cho led ma trận .............................................................................. 53
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
2 www.dks.edu.vn
3. Ví dụ minh họa............................................................................................. 54
BÀI 8: GIAO TIẾP MÁY TÍNH ........................................................................... 55
1. Cơ bản về giao tiếp RS232........................................................................... 55
2. Cách cấu hình module UART trong Code Vision ....................................... 57
3. Ví dụ. ............................................................................................................ 58
BÀI 9 : GIAO TIẾP I2C......................................................................................... 66
1. Giới thiệu chung về I2C ............................................................................... 66
2. Module I2C trong Atmega32........................................................................ 74
3. Ví dụ ............................................................................................................. 76
BÀI 10 : ĐỘNG CƠ BƯỚC.................................................................................. 80
1. Cơ bản về động cơ bước............................................................................... 80
2. Các mạch điều khiển động cơ bước ............................................................. 82
3. Ví dụ ............................................................................................................. 85
BÀI 11 : GIAO TIẾP VỚI CỔNG LPT ................................................................ 87
1. Cơ bản về cổng LPT..................................................................................... 87
2. Ví dụ minh họa............................................................................................. 90
BÀI 12 : GIAO TIẾP VỚI MA TRẬN PHÍM ...................................................... 92
1. Cơ bản về ma trận phím ............................................................................... 92
2. Ví dụ minh họa............................................................................................. 94
BÀI 13 : TIMER.................................................................................................... 96
1. Giới thiệu về timer ....................................................................................... 96
2. Ví dụ minh họa........................................................................................... 100
BÀI 14 : NGẮT ................................................................................................... 101
1. Giới thiệu về ngắt ....................................................................................... 101
2. Các bước cấu hình cho ngắt hoạt động ...................................................... 104 3.
Ví dụ........................................................................................................ 105
BÀI 15 : ĐIỀU KHIỂN ĐỘNG CƠ MỘT CHIỀU............................................. 107
1. Giới thiệu về động cơ một chiều ................................................................ 107
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
3 www.dks.edu.vn
2. Ví dụ minh họa........................................................................................... 109
BÀI 16 : GIAO TIẾP VỚI GLCD....................................................................... 111
1. Cơ bản về GLCD........................................................................................ 111
2. Ví dụ minh họa........................................................................................... 116
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
4 www.dks.edu.vn
BÀI 1 : GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AVR
- Giới thiệu chung về vi điều khiển.
- Giới thiệu về vi điều khiển Atmega32.
- Lập trình cho Atmega32.
1. Giới thiệu về vi điều khiển
Khái niệm vi điều khiển (microcontroller – MC) đã khá quen thuộc với các
sinh viên CNTT, điện tử, điều khiển tự động cũng như Cơ điện tử… Nó là một
trong những IC thích hợp nhất để thay thế các IC số trong việc thiết kế mạch
logic. Ngày nay đã có những MC tích hợp đủ tất cả các chức năng của mạch logic.
Nói như vậy không có nghĩa là các IC số cũng như các IC mạch số lập trình được
khác như PLC… không cần dùng nữa. MC cũng có những hạn chế mà rõ ràng
nhất là tốc độ chậm hơn các mạch logic… MC cũng là một máy tính – máy tính
nhúng vì nó có đầy đủ chức năng của một máy tính. Có CPU, bộ nhớ chương
trình, bộ nhớ dữ liệu, có I/O và các bus trao đổi dữ liệu.
Cần phân biệt khái niệm MC với khái niệm vi xử lý (microprocessor – MP)
như 8088 chẳng hạn. MP chỉ là CPU mà không có các thành phần khác như bộ
nhớ I/O, bộ nhớ. Muốn sử dụng MP cần thêm các chức năng này, lúc này người ta
gọi nó là hệ vi xử lý (microprocessor system). Do đặc điểm này nên nếu để lựa
chọn giữa MC và MP trong một mạch điện tử nào đó thì tất nhiên người ta sẽ chọn
MC vì nó sẽ rẻ tiền hơn nhiều do đã tích hợp các chức năng khác vào trong chip.
Vậy để một vi điều khiển chạy được thì cần những điều kiện gì :
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
5 www.dks.edu.vn
- Thứ nhất là nguồn cấp, nguồn cấp là cái đầu tiên, cơ bản nhất trong các
mạch điện tử, và vấn đề về nguồn là 1 trong những vấn đề rất đau đầu.
Không có nguồn thì không thể gọi là 1 mạch điện được. Nguồn cấp cho vi
điều khiển là nguồn 1 chiều.
- Thứ hai là mạch dao động, mạch dao động để làm gì ? Giả sử các bạn lập
trình cho con AVR : đến thời điểm A làm 1 công việc gì đó, thế thì nó lấy
cái gì để xác định được thời điểm nào là thời điểm A ? Đó chính là mạch
dao động. Ví dụ như mọi người đều thống nhất vào một giờ chuẩn để làm
việc. Cả hệ thống vi điều khiển cũng vậy, cả hệ thống khi đó đều lấy xung
nhịp clock – xung nhịp mạch dao động làm xung nhịp chuẩn để hoạt động.
- Thứ ba là ngoại vi, ngoại vi ở đây là các thiết bị để giao tiếp với vi điều
khiển để thực hiện 1 nhiệm vụ nào đó mà vi điều khiển đưa ra. Ví dụ như
các bạn muốn điều khiển động cơ 1 chiều, nhưng vì vi điều khiển chỉ đưa ra
các mức điện áp 0-5V, và dòng điều khiển cỡ mấy chục mA, với nguồn cấp
này thì ko thể nối trực tiếp động cơ vào vi điều khiển để điều khiển, mà
phải qua 1 thiết bị khác gọi là ngoại vi, chính xác hơn ở đây là driver, người
ta dùng driver để có thể điều khiển được các dòng điện lớn từ các nguồn
điện nhỏ. Các bàn phím, công tắc… là các ngoại vi.
- Thứ 4 là chương trình, ở đây là file .hex để nạp cho vi điều khiển, chương
trình chính là thuật toán mà bạn triển khai thành các câu lệnh rồi biên dịch
thành mã hex để nạp vào vi điều khiển.
Các công cụ để học AVR :
- Ngôn ngữ lập trình : C, ASM…
- Phần mềm lập trình : IAR, CodeVisionAVR…
- Mạch nạp : STK200/300/500, Burn-E…
- Mạch phát triển : Board trắng, phần mềm mô phỏng, kit…
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
6 www.dks.edu.vn
2. Giới thiệu về vi điều khiển AVR
AVR là họ vi điều khiển 8 bit theo công nghệ mới, với những tính năng rất
mạnh được tích hợp trong chip của hãng Atmel theo công nghệ RISC, nó mạnh
ngang hàng với các họ vi điều khiển 8 bit khác như PIC, PSoC. Do ra đời muộn
hơn nên họ vi điều khiển AVR có nhiều tính năng mới đáp ứng tối đa nhu cầu của
người sử dụng, so với họ 8051, 89xx sẽ có độ ổn định, khả năng tích hợp, sự
mềm dẻo trong việc lập trình và rất tiện lợi.
Các tính năng mới của họ AVR:
 Giao diện SPI đồng bộ.
 Các đường dẫn vào/ra (I/O) lập trình được.  Giao tiếp I2C.
 Bộ biến đổi ADC 10 bit.  Các kênh băm xung PWM.
 Các chế độ tiết kiệm năng lượng như sleep, stand by..vv.
 Một bộ định thời Watchdog.
 3 bộ Timer/Counter 8 bit.
 1 bộ Timer/Counter 16 bit.  1 bộ so sánh analog.  Bộ nhớ EEPROM.  Giao tiếp USART..vv.
Atmelga32 có đầy đủ tính năng của họ AVR, về giá thành so với các loại khác
thì giá thành là vừa phải khi nghiên cứu và làm các công việc ứng dụng tới vi điều khiển. Tính năng :
 Bộ nhớ 32KB Flash có khả năng đọc, ghi 10000 lần
 1024 byte EEPROM có khả năng đọc, ghi 100000 lần.  2KB SRAM.
 8 kênh đầu vào ADC 10 bit.
 Đóng vỏ 40 chân , trong đó có 32 chân vào ra dữ liệu chia làm 4 PORT
A,B,C,D. Các chân này đều có chế độ pull_up resistors.
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
7 www.dks.edu.vn
 Hỗ trợ các giao tiếp UART, SPI, I2C.
 1 bộ so sánh analog, 4 kênh PWM.
 2 bộ timer/counter 8 bit, 1 bộ timer/counter1 16 bit.
 1 bộ định thời Watchdog.
Sơ đồ chân Atmega32
Mô tả chức năng các chân của atmega32
- Vcc và GND 2 chân cấp nguồn cho vi điều khiển hoạt động.
- Reset đây là chân reset cứng khởi động lại mọi hoạt động của hệ thống.
- 2 chân XTAL1, XTAL2 các chân tạo bộ dao động ngoài cho vi điều khiển,
các chân này được nối với thạch anh (hay sử dụng loại 4M), tụ gốm (22p).
- Chân Vref thường nối lên 5v(Vcc), nhưng khi sử dụng bộ ADC thì chân
này được sử dụng làm điện thế so sánh, khi đó chân này phải cấp cho nó
điện áp cố định, có thể sử dụng diode zener:
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
8 www.dks.edu.vn
- Chân Avcc thường được nối lên Vcc nhưng khi sử dụng bộ ADC thì chân
này được nối qua 1 cuộn cảm lên Vcc với mục đích ổn định điện áp cho bộ biến đổi.
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
9 www.dks.edu.vn
3. Lập trình cho AVR Giới thiệu
Để lập trình cho AVR, chúng ta có thể sử dụng 2 ngôn ngữ cơ bản là C và
ASM. Nhìn chung, 2 ngôn ngữ này có những ưu và nhược điểm riêng.
Ngôn ngữ ASM có ưu điểm là gọn nhẹ, giúp người lập trình nắm bắt sâu
hơn về phần cứng. Tuy nhiên lại có nhược điểm là phức tạp, khó triển khai về mặt
thuật toán, không thuận tiện để xây dựng các chương trình lớn.
Ngược lại ngôn ngữ C lại dễ dung, tiện lợi, dễ debug, thuận tiện để xây
dựng các chương trình lớn. Nhưng nhược điểm của ngôn ngữ C là khó giúp người
lập trình hiểu biết sâu về phần cứng, các thanh ghi, tập lệnh của vi điều khiển, hơn
nữa, xét về tốc độ, chương trình viết bằng ngôn ngữ C chạy chậm hơn chương
trình viết bằng ngôn ngữ ASM.
Tùy vào từng bài toán, từng yêu cầu cụ thể mà ta chọn lựa ngôn ngữ lập trình cho phù hợp.
Có rất nhiều phần mềm lập trình cho AVR, như Code Vision, IAR,
AVRStudio…, trong đó Code Vision là một trong những phần mềm khá nổi tiếng
và phổ biến. Trong khuôn khổ giáo trình này, chúng ta sẽ sử dụng phần mềm
Code Vision để lập trình cho AVR.
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
10 www.dks.edu.vn
Giao diện phần mềm Code Vision
Tạo project trong Code Vision :
Để tạo Project mới chọn trên menu: File -> New được như sau:
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
11 www.dks.edu.vn
Chọn Project sau đó click chuột vào OK được cửa sổ hỏi xem có sử dụng Code Winzard không:
Chọn Yes được cửa sổ CodeWinzardAVR như sau :
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
12 www.dks.edu.vn
- Sử dụng chíp AVR nào và thạch anh tần số bao nhiêu ta nhập vào tab Chip.
Để khởi tạo cho các cổng IO ta chuyển qua tab Ports.
- Các chân IO của AVR mặc định trạng thái IN, muốn chuyển thành trạng
thái OUT để có thể đưa các mức logic ra ta click chuột vào các nút IN (mầu
trắng) để nó chuyển thành OUT trong các Tab Port. Sau đó chọn File ->
Generate, Save and Exit.
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
13 www.dks.edu.vn
Sau đó ta save project lại :
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
14 www.dks.edu.vn Ta được như sau :
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
15 www.dks.edu.vn
Như vậy là chúng ta đã tạo xong project trong Code Vision.
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
16 www.dks.edu.vn
BÀI 2 : GIAO TIẾP VÀO RA I/O
- Cơ bản về giao tiếp vào ra I/O
- Các cổng trong atmega32 và cơ bản về chức năng của các cổng
- Cách cấu hình vào ra I/O
- Viết chương trình nháy led
1. Giới thiệu giao tiếp vào ra I/O
Lập trình I/O là lập trình đơn giản và cơ bản nhất, nhưng lại được sử dụng
nhiều nhất, chúng ta điều khiển on/off bóng đèn, động cơ, hay 1 thiết bị nào đó
cũng là 1 dạng của điều khiển I/O.
Để giảm bớt số chân ra, một số chân của AVR là các chân đa chức năng, nó
phục vụ cho các thiết bị ngoại vi. Ở đây khái niệm thiết bị ngoại vi không có
nghĩa là 1 chip khác mua rời bên ngoài mà là các mô đun được tích hợp sẵn trong
chip như các mô đun ADC.... Khi các thiết bị ngoại vi này được enable thì các
chân này không được sử dụng như các chân của các cổng I/O thông thường nữa.
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
17 www.dks.edu.vn
2. Cách cấu hình chức năng IO
Atmega32 có 4 cổng vào ra là PORTA, PORTB, PORTC, PORTD. Khi
xem xét đến các cổng I/O của AVR thì ta phải xét tới 3 thanh ghi DDxn,PORTxn,PINxn.
- Các bit DDxn để truy cập cho địa chỉ xuất nhập DDRx. Bit DDxn trong
thanh ghi DDRx dùng để điều khiển hướng dữ liệu của các chân của cổng
này.Khi ghi giá trị logic ‘0’ vào bất kì bit nào của thanh ghi này thì nó sẽ
trở thành lối vào,còn ghi ‘1’ vào bit đó thì nó trở thành lối ra.
- Các bit PORTxn để truy cập tại địa chỉ xuất nhập PORTx. Khi PORTx
được ghi giá trị 1 khi các chân có cấu tạo như cổng ra thì điện trở kéo là chủ
động(được nối với cổng). Ngắt điện trở kéo ra, PORTx được ghi giá trị 0
hoặc các chân có dạng như cổng ra.Các chân của cổng là 3 trạng thái khi 1
điều kiện reset là tích cực thậm chí xung đồng hồ không hoạt động.
- Các bit PINxn để truy cập tại địa chỉ xuất nhập PINx. PINx là các cổng chỉ
để đọc,các cổng này có thể đọc trạng thái logic của PORTx.PINx không
phải là thanh ghi,việc đọc PINx cho phép ta đọc giá trị logic trên các chân
của PORTx.chú ý PINx không phải là thanh ghi,việc đọc PINx cho phép ta
đọc giá trị logic trên các chân của PORTx.
- Nếu PORTxn được ghi giá trị logic ‘1’ khi các chân của cổng có dạng như
chân ra ,các chân có giá trị ‘1’.Nếu PORTxn ghi giá trị ‘0’ khi các chân của
cổng có dạng như chân ra thì các chân đó có giá trị ‘0’.
- Các cổng của AVR đều có thể đọc, ghi. Để thiết lập 1 cổng là cổng vào, ra
thì ta tác động tới các bit DDxn, PORTxn, PINxn. Ta có thể thiết lập để
từng bit làm cổng vào, ra cứ không chỉ với cổng, như vậy ta có thể xử lý tới
từng bit, đây chính là điểm mạnh của các dòng Vi điều khiển 8 bit.
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
18 www.dks.edu.vn 3. Ví dụ minh họa
Chương trình sau sẽ làm nhấp nháy cả 8 led, led nối vào port A. Phân tích
Chương trình trên rất đơn giản, sơ đồ thuật toán của chương trình trên như sau :
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
19 www.dks.edu.vn
Sau khi viết xong chương trình, chúng ta nhấn Shift+F9 để biên dịch. Nếu
chương trình không có lỗi và biên dịch thành công, sẽ có thông báo như sau :
GIÁO TRÌNH VI ĐIỀU KHIỂN AVR
20 www.dks.edu.vn