nghiên cứu và thiết kế kit phát triển đa năng sử dụng vi điều khiển avr - Pdf 25



B
B
Á
Á
O
OC
C
Á
Á
O
ON
N
G
G
H
H
I
I


M
M
Chủ nhiệm đề tài: NGUYỄN CHÍ NHÂN
Cơ quan chủ trì: TRUNG TÂM PHÁT TRIỂN
KHOA HỌC VÀ CÔNG NGHỆ TRẺ

TP. Hồ Chí Minh, tháng 04 năm 2010
NGHIÊN CỨU VÀ THIẾT KẾ
KIT PHÁT TRIỂN ĐA NĂNG
SỬ DỤNG VI ĐIỀU KHIỂN AVR
v

M
M


C
CL
L


C
C Trang

vi

2.3. KIT DE PIC 26
2.4. BỘ MÔ HÌNH THÍ NGHIỆM VI ĐIỀU KHIỂN (KDD-2007) 27
2.5. MÔ HÌNH THÍ NGHIỆM VI ĐIỀU KHIỂN HỌ AVR
28
Phần 3: KẾT QUẢ VÀ THẢO LUẬN
Chương 1: BỘ KIT AVR HOÀN CHỈNH 30
1.1. GIỚI THIỆU BỘ KIT AVR 30
1.2. CÁC CÔNG CỤ LÀM VIỆC VỚI VI ĐIỀU KHIỂN AVR 30
1.3. CÁC YÊU CẦU TRƯỚC KHI SỬ DỤNG KIT 32
1.4. GHÉP NỐI GIỮ MÁY TÍNH VỚI KIT AVR 32
1.5. CÁC BÀI THỰC HÀNH ĐI KÈM THEO KIT AVR 34
Chương 2: MÔ HÌNH XE ĐUA TỰ HÀNH SỬ DỤNG VI ĐIỀU KHIỂN AVR
2.1. GIỚI THIỆU XE ĐUA TỰ HÀNH 37
2.2. NGUYÊN TẮC HOẠT ĐỘNG CỦA XE ĐUA TỰ
HÀNH 38

KẾT LUẬN VÀ ĐỀ NGHỊ 40
TÀI LIỆU THAM KHẢO
vii

DANH SÁCH CÁC CHỮ VIẾT TẮT
PCB Print Circuit Board
RISC Reduced Intruction Set Computer
CPU Central Processing Unit
RTC Real Time Clock

Hình P2_2.1: Kit thực tập vi điều khi
ển LD1 23
Hình P2_2.2: EasyPIC-PRO Development KIT 24
Hình P2_2.3: EasyAVR Devlopment KIT 25
Hình P2_2.4: KIT DE PIC 27
Hình P2_2.5: Bộ mô hình thí nghiệm vi điều khiển (KDD-2007) 28
Hình P2_2.6: Mô hình thí nghiệm vi điều khiển họ AVR 28
Hình P3_1.1: Bộ Kit AVR hoàn chỉnh 30
Hình P3_1.2: Đầu nối ISP 32
Hình P3_1.3: Cáp chuyển từ 6-PIN sang 10-PIN 33

viii

Hình P3_1.4:Cổng COM ảo kết nối giữ máy tính với STK500 33
Hình P3_1.5: Chọn cấu hình STK500 trong CodeVision 34
Hình P3_1.6: Kết nối giữa KIT AVR với máy tính 34
Hình P3_2.1: Mô hình xe đua tự hành 37
Hình P3_2.2: Mô hình đường đua 38 iii

GIỚI THIỆU

Hiện nay vi điều khiển đã rất phổ biến ở Việt Nam. Việc thiết kế những Kit
phát triển cho vi điều khiển là vấn đề ngày càng được quan tâm của nhiều nhóm tác
giả. Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng. Nó xuất hiện
khá nhiều trong các ứng dụng như: các dây chuyền tự động loại nhỏ, các robot có
chức năng đơn giản, trong máy giặt, ôtô, lò vi sóng, điện thoại, các máy tính bỏ túi
v.v Việc nghiên cứu học tập kỹ thuật vi xử lý nói chung, các họ vi điều khiển nói

typically AVR is necessary for students whose major related to engineering. To be
able to study, research, and have good design of the microcontroller, we need
laboratory equipment as well as practical tools to support design microcontroller.
Based on actual demand, we conduct research and design development Kit which
use AVR microcontroller with the aim of:
- In order for effective teaching at the university also helps students with
learning opportunities both practical subjects microcontroller .
- Opportunity to explore and learn for students, help students grasp the lesson
most effectively.
- Wish to give students a solid knowledge can use at work or during the study
later. 1
Phần 1:
TỔNG QUAN VỀ ĐỀ TÀI

1.Tổng quan tình hình nghiên cứu
Hầu hết các sản phẩm điện tử thương mại và công nghiệp trên Thế giới hiện nay
đều ứng dụng vi điều khiển có kiến trúc RISC. Ở Việt Nam, nhu cầu nghiên cứu, đào
tạo về vi điều khiển RISC cũng đang được quan tâm trong thời gian gần đây.
Các trường đại học, trong đó các trường đầu ngành như Bách Khoa, Khoa học Tự
nhiên, và mộ
t số trường kỹ thuật khác đang có khuynh hướng thành lập các phòng thí
nghiệm về hệ thống nhúng mà trong đó một phần tập trung vào nghiên cứu sử dụng và
lập trình ứng dụng cho vi điều khiển có kiến trúc RISC. Chẳng hạn :
- Khoa Điện-Điện tử, Trường Đại học Bách Khoa-TP.HCM xây dựng dự án phòng
thí nghiệm hệ thống nhúng và thiết kế vi mạch. Trong đó một phần dự án sẽ trang b

các thiết bị và kit thí nghiệm về các họ vi điều khiển PIC và ARM.

hiệu quả cao. Hoàn chỉnh các tài liệu hướng dẫn thực hành cho môn học vi xử lý, vi
điều khiển, đây là công cụ hữu hiệu để nghiên cứu, giảng dạy chuyên ngành về vi điều
khiển và đồng thời hỗ trợ tốt cho sinh viên trong quá trình học tập, nghiên cứu về các
họ
vi điều khiển nói chung, họ vi điều khiển AVR nói riêng. Kết quả đạt được từ công
trình nghiên cứu này có ý nghĩa thực tiễn cao trong việc học tập, nghiên cứu về lĩnh vực
vi điều khiển.
2. Nội dung thực hiện
Trong đề tài này chúng tôi thực hiện một số nội dung nghiên cứu như sau:
2.1. Tìm hiểu kiến trúc, tập lệnh và các công cụ dùng của họ vi điều khiển AVR. Bên
c
ạnh đó nghiên cứu các Kit thí nghiệm giảng dạy thông dụng trên thị trường. Phân tích
thiết kế phần cứng, phần mềm và các bài thí nghiệm.
2.2. Giao tiếp với AVR
- Bằng phần cứng: kết nối truyền thông với vi điều khiển AVR thông qua cổng
RS-232.
- Bằng phần mềm: lập trình nhúng cho vi điều khiển (sử dụng ngôn ngữ lập trình
truyền thống như: hợp ngữ hay lập trình C).
2.3. Thiết k
ế kit phát triển đa năng và các môđun ứng dụng trên vi điều khiển AVR
- Môđun chính: Đơn vị xử lý trung tâm (CENTRAL PROCESSING UNIT)
- Môđun giao tiếp vào/ra (I/O) gồm: các port của vi điều khiển Atmega32, màn hình
hiển thị-LCD 16x2, Led đơn, Led 7 đoạn, công tắc gạt DIP 8x2, và ma trận LED 5x7.
- Môđun giao tiếp theo chuẩn UART
- Môđun điều khiển động cơ DC và động cơ bước (STEP MOTOR)
- Môđun giao tiếp theo chuẩn I
2
C
- Môđun bàn phím (Key pad)
- Môđun cấp nguồn

: ĐIỀU KHIỂN LED MA TRẬN 5x7
Trong môđun này chúng tôi dự kiến xây dựng bài thực hành liên quan đến những nội
dung như: giải mã và phương pháp hiển thị trên LED ma trận, điều khiển các LED ma
trận trên KIT theo ý muốn thông qua các port vào/ra của AVR.
- Môđun 5
: HIỂN THỊ LCD 16x2
Trong môđun này chúng tôi dự kiến xây dựng bài thực hành liên quan đến những nội
dung như: giao tiếp được với LCD 16x2 để có thể ứng dụng cho những mục đích hiển
thị cụ thể. Từ module LCD 16x2 có thể mở rộng sang những module tương tự, ví dụ
như module LCD 16x4, 40x2, … 4
- Môđun 6:HOẠT ĐỘNG NGẮT VÀ ĐỊNH THỜI CỦA AVR
Trong môđun này chúng tôi dự kiến xây dựng bài thực hành liên quan đến những nội
dung như: vận dụng được hoạt động ngắt trong AVR là một tính năng quan trọng và
cần thiết nhất trong mọi ứng dụng. Những hoạt động và tính năng của timer trong AVR.
Cấu hình và truy xuất được các thanh ghi trong timer và các thanh ghi liên quan đến
hoạt động ngắt của timer.
- Môđun 7
: HOẠT ĐỘNG NỐI TIẾP CỦA AVR,TRUYỀN THÔNG VỚI MÁY TÍNH
Trong môđun này chúng tôi dự kiến xây dựng bài thực hành liên quan đến những nội
dung như: ứng dụng được tính năng cơ bản, cần thiết và quan trọng nhất của truyền
thông nối tiếp.Giao tiếp để trao đổi dữ liệu giữa AVR với bên ngoài thông qua một máy
tính và một chương trình truyền thông cho máy tính Hyper Terminal.
- Môđun 8
: GIAO TIẾP VỚI BÀN PHÍM (KEY PAD)
Trong môđun này chúng tôi dự kiến xây dựng bài thực hành liên quan đến những nội
dung như: cấu trúc của Keypad 4x4, quá trình đọc Keypad, Kỹ thuật quét Keypad cơ
bản, cách đọc và hiển thị giá trị từ keypad 4x4 lên LCD.

p với việc học tập,
nghiên cứu, thiết kế ứng dụng vi xử lý nói chung, và các họ vi điều khiển nói riêng. Kit
được thiết kế theo cấu trúc mở cho phép mở rộng thêm nhiều ứng dụng khác nữa mà
không phải thiết kế lại khối CPU.
6

Phần 2:
NỘI DUNG NGHIÊN CỨU

Chương 1:

HỌ VI ĐIỀU KHIỂN AVR

1.1. TỔNG QUAN VỀ VI ĐIỀU KHIỂN AVR
Vi điều khiển AVR thuộc họ vi điều khiển do Atmel sản xuất (Atmel cũng là nhà sản
xuất các vi điều khiển họ 89C51). Đây là họ vi điều khiển được chế tạo theo kiến trúc
RISC (Reduced Intruction Set Computer) có cấu trúc tập lệnh rút gọn. Ngoài các tính
năng như các họ họ vi điều khiển khác, nó còn tích hợp nhiều tính năng mới rất ti
ện lợi
cho người thiết kế và lập trình. Sự ra đời của AVR bắt nguồn từ yêu cầu thực tế là hầu
hết khi cần lập trình cho vi điều khiển, chúng ta thường dùng những ngôn ngữ bậc cao
HLL (Hight Level Language) để lập trình ngay cả với loại chip xử lí 8 bit trong đó ngôn
ngữ C là ngôn ngữ phổ biến nhất. Tuy nhiên khi biên dịch thì kích thước đoạn mã sẽ
tăng nhiều so với dùng ngôn ngữ Assembly. Hãng Atmel nhận th
ấy rằng cần phải phát
triển một cấu trúc đặc biệt cho ngôn ngữ C để giảm thiểu sự chênh lệch kích thước mã
đã nói trên. Và kết quả là họ vi điều khiển AVR ra đời với việc làm giảm kích thước
đoạn mã khi biên dịch và thêm vào đó là thực hiện lệnh đúng đơn chu kỳ máy với 32
thanh ghi tích lũy và đạt tốc độ nhanh hơn các họ vi điều khiển khác từ 4 đế
n 12 lần.

- Thiết bị lập trình (mạch nạp) cho AVR rất đơn giản, có loại mạch nạp chỉ cần vài điện
trở là có thể làm được. Một số AVR còn hỗ trợ lập trình on-chip bằng bootloader không
cần mạch nạp.
- Bên cạnh lập trình bằng ASM, cấu trúc AVR được thiế
t kế tương thích với C
1.2.2. Một số chip AVR
- AT90S8535: Không có lệnh nhân hoặc chia trên thanh ghi.
- ATmega 8, 16, 32, 64, 128 (AVR loại 8 bit, 16 bit, 32 bit): Là loại AVR tốc độ cao,
tích hợp sẵn ADC 10 bit.
- Atmega169, 329: AVR tích hợp sẵn LCD driver
- AT90PWM: Là loại AVR có tích hợp SC (power stage controller), thường dùng trong
các ứng dụng điều khiển động cơ hay chiếu sáng nên còn gọi là lighting AVR.
- Attiny11, 12, 15: AVR loại nhỏ.

1.3. KIẾN TRÚC CỦA VI ĐIỀU KHIỂN AVR
Các bộ xử lý AVR có kiến trúc Harvard, nghĩa là có bộ nhớ dữ liệu và bộ nh
ớ chương
trình tách biệt nhau. Bus dữ liệu dùng cho bộ nhớ dữ liệu và một bus 8bit, cho phép nối
hầu hết các bộ phận ngoại vi với tập thanh ghi. Bus dữ liệu dùng cho bộ nhớ chương
trình có độ rộng 16 bit và chỉ nối với thanh ghi lệnh.
1.3.1. Hoạt động của AVR
Với 32 thanh ghi trong tệp thanh ghi được kết nối trực tiếp với ALU (Arithmetic Logic
Unit) – đơn vị luận lý số học và nó cũng được xem như
là CPU(Central Processing Unit
– đơn vị xử lý trung tâm) của AVR bằng hai đường. Vì thế ALU có thể truy xuất cùng
8

lúc hai thanh ghi trong tệp thanh ghi chỉ trong một chu kỳ xung clock. Còn các lệnh
được chứa trong bộ nhớ chương trình dưới dạng các thanh ghi 16 bit và được truy cập
trong mỗi chu kỳ xung clock. Một lệnh sẽ được nạp vào thanh ghi lệnh, thanh ghi lệnh

trên chip.
- Tốc độ xử lý lớn hơn đến 12 lần so với các vi điều khiển thông thường, vi điều
10

khiển AVR có khả năng đạt đến tốc độ xử lý 12MPIS(triệu lệnh trong một giây)
- Khả năng lập trình được và hỗ trợ cho việc lập trình bằng ngôn ngữ cấp cao.
- Có trên thị trường ở Việt Nam.
- Chi phí thấp.
1.5. KIẾN TRÚC VI ĐIỀU KHIỂN ATMEGA32
Cũng giống như các loại chip AVR khác, chip ATmega32 cũng được thiết kế
dựa trên kiến trúc RISC( viết tắt của Reduced Instructions Set
Computer- dịch là máy
tính với tập lệnh đơn giản hóa), khác với kiến trúc CISC(viết tắt của Complex
Instructions Set Computer- dịch là máy tính với tập lệnh phức tạp) kiến trúc RISC với
tập lệnh ngắn gọn và đơn giản hơn, thời gian thực thi nhanh hơn. Hiện nay các bộ vi xử
lý và vi điều khiển có kiến trúc RISC phổ biến là PIC, ARM. DEC Alpha, AVR của
Atmel . . .
Kiến trúc RISC có những chức năng thích hợ
p cho việc sử dụng phần mềm hơn là phần
cứng vì phần mềm dễ thay đổi, dễ cập nhật và tạo ra nhanh hơn so với phần cứng. Do
đó các máy tính dựa trên kiến trúc RISC có thể được nâng cấp nhanh hơn,
các chương trình và các thuật toán có thể điều chỉnh và cải tiến một cách hiệu quả.
1.5.1. Một số đặc tính của ATmega32

• Vi điều khiển 8 bit công suất thấ
p, hiệu năng cao.
• Kiến trúc RISC mở rộng
- Tập lệnh với 131 lệnh, hầu hết mỗi lệnh đều được thực thi trong một chu
kỳ xung clock.
- Một tập thanh ghi với 32 thanh ghi 8 bit, tất cả các chip thuộc họ AVR

• Điện thế hoạt động
- 2.7 – 5.5V cho ATmega32L
- 4.5- 5.5V cho ATmega32
1.5.2. Tổ chức bộ nhớ trong AVR
1.5.2.1. Bộ nhớ chương trình (Program Memory): là bộ nhớ Flash lập trình được có
chứa Application Flash Section, phần này lại bao gồm hai phần nhỏ: phần chứa mã lệnh
lập trình cho chip, phần còn lại chứa các vector ngắt. Các vector ngắt nằm ở phần đầu
của Application Flash Section (từ địa chỉ 0x0000) và dài đến bao nhiêu thì tuỳ loại chip,
riêng chip Atmega32 thì các vector ngắt từ địa chỉ 0x0000 đến 0x0028, phần chứa lệnh
lập trình cho chip nằ
m ngay sau đó, chương trình viết cho chip bắt buộc phải nạp vào
phần này.
12 Hình P2_1.3: Tổ chức bộ nhớ chương trình của ATmega32
Bảng P2_1.1:
Các vector ngắt của ATmega32 1.5.2.2. Bộ nhớ dữ liệu (Data Memory): Đây là phần chứa các thanh ghi quan trọng
của chip, việc lập trình cho chip phần lớn truy cập vào bộ nhớ này. Bộ nhớ dữ liệu với
2144 vị trí dùng để định địa chỉ cho tập thanh ghi, bộ nhớ vào ra và bộ nhớ SRAM nội
96 vị trí đầu tiên định địa chỉ cho tập thanh ghi và bộ nhớ vào ra (32 cho tập thanh ghi
và 64 cho bộ nhớ vào ra) và 2048 vị trí còn lại dùng để đị
nh địa chỉ SRAM nội.

13
PORTx và PINx tất cả 3 thanh ghi này đều nằm trong vùng nhớ I/O. Vì ATmega32 có 4
PORT(A,B,C,D) nên x = A,B,C,D.
- Phầ
n 3: SRAM nội (internal SRAM), là vùng không gian cho chứa các biến (toàn cục
hoặc cục bộ) trong lúc thực thi chương trình, vùng này tương tự RAM trong máy tính
nhưng có dung lượng khá nhỏ, chip ATmega32 có dung lượng 2Kbytes.
- Phần 4: SRAM ngoại (external SRAM) vùng này chỉ tồn tại khi người sử dụng gắn
thêm bộ nhớ ngoài vào chip.
15

- Phần 5: EEPROM (Electrical Ereasable Programmable ROM) là một phần quan trọng
của các chip AVR, vì là ROM nên bộ nhớ này không bị xóa ngay cả khi không có
nguồn nuôi cho chip, rất thích hợp cho các ứng dụng lưu trữ dữ liệu. Bộ nhớ này
thường được tách riêng với bộ nhớ dữ liệu nhưng vẫn là một phần trong bộ nhớ dữ liệu.

Hình P2_1.6: Bộ nhớ dữ liệu EEPROM

1.5.3. Các thanh ghi chức năng
a.Thanh ghi trạng thái- SREG (Status Register)

Đây là một trong những thanh ghi quan trọng nhất của chip AVR, có 8 bit cờ báo hiệu
trạng thái hiện tại của vi điều khiển, tất cả các bit này sẽ bị xóa khi
reset.

Bit 7 – I: Global Interrupt Enable: cho phép ngắt toàn cục hoặc cấm tất cả các ngắt
Bit 6–T : Bit Copy Storage : dùng nạp bit BLD (bit load) và lưu trữ bit BST (bit store)
để nạp và lưu trữ các bit từ một thanh ghi này vào thanh ghi khác
Bit 5 – H: Half Carry Flag: báo cho thấy sự nhớ một nửa trong một số lệnh số học
Bit 4- S: Sing Flag: cờ dấu, bit này là kết quả EX-OR giữa cờ phủ định N và cờ tràn
(overflow)

d.Thanh ghi các PORT
Đối với mỗi cổng (PORT) của vi điều khiển đều chứa 3 thanh ghi chức năng liên quan
đến các cổng
- Thanh ghi DDRx( thanh ghi hướng dữ liệu ): là thanh ghi 8 bit có tác dụng điều
khiển hướng của cổng (cổng ra hay cổng vào). Nếu có 1 bit nào đó trong thanh
17

ghi này bật lên 1 thì cổng này được định nghĩa là cổng ra, ngược lại nếu không
có bit nào được bật lên 1 thì quy định đó là cổng vào.
VD: DDRA=0xFF có nghĩa là PORTA được định nghĩa là PORT xuất
DDRA=0x00 có nghĩa là PORTA được định nghĩa là PORT nhập
- Thanh ghi PORTx(thanh ghi dữ liệu cổng): là một thanh ghi 8 bit, nếu bit nào
trong thanh ghi mà được set lên 1 thì giá trị đưa ra tại bit đó là mức logic 1
VD: PORTA = 0x01 có nghĩa là giá trị xuất ra PORTA.0 là 1
- Thanh ghi PINx(thanh ghi địa chỉ chân vào): cho phép truy nhập trực tiếp đế
n
các chân của vi điều khiển, chỉ cho phép đọc dữ liệu mà không thể ghi.

1.5.4. Hoạt động ngắt-Interrrupt
Ngắt là một cơ cấu điều khiển dòng lệnh, khi có một hoạt động ngắt xảy ra, tín hiệu
khẩn cấp sẽ được gởi đến bộ xử lý để yêu cầu bộ xử lý tạm ngừng các hoạt động hiện
tại ngay lập tức để nhả
y đến nơi khác thực hiện một nhiệm vụ khẩn cấp nào đó, nhiệm
vụ này là trình phục vụ ngắt – isr (interrupt service routine ). Chương trình ngắt chỉ đơn
giản giống hệt như một chương trình con, ngoại trừ một đặc điểm là việc thực thi của
đoạn chương trình ngắt này không bị bộ xử lý đoán trước là sẽ xuất hiện ở thời đi
ểm cũ
thể nào. Sau khi kết thúc nhiệm vụ trong isr, bộ đếm chương trình PC sẽ được trả về
giá trị trước đó để bộ xử lý quay về thực hiện các nhiệm vụ còn dang dở. Như vậy ngắt
có mức độ ưu tiên xử lý cao nhất, được dùng để xử lý các sự kiện bất ngờ nhưng không

vector ngắt đó. Cờ được xóa khi mà chương trình con ngắt được thực thi. Cờ có thể
được đặt lại bằng cách ghi giá trị 1 vào nó.
Khi sử dụng ngắt nên cẩn thận việ
c hai hay nhiều ngắt xảy ra cùng lúc, vì khi đó CPU
thực hiện xong một ngắt rồi sau đó bỏ qua tất cả các ngắt khác cho dù các ngắt khác
chưa thực hiện. Do vậy chúng ta nên hạn chế việc dùng ngắt trong việc lập trình cho
AVR.

Trích đoạn CÁC CÔNG CỤ LÀM VIỆC VỚI VI ĐIỀU KHIỂN AVR CÁC BÀI THỰC HÀNH ĐI KÈM THEO KIT AVR
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status