Ứng dụng vi điều khiển

56
1 MÔN HC ng dng Vi điu khin (Microcontroller Applications) By Trn Văn Hùng Mechatronics Dept http://www.ntu.edu.vn/ Email: [email protected] Tài liu tham kho 1. Microprofessors and microcpmputers hardware and softwware, Ronaid J.Tocci, Frank J.Ambrosio, Prentice Hall, 2003 2. Interfacing Sensors To The Pc, Willis J.Tompkin, Jonh G.webster, Prentice Hall, 1998 3. Vi xlý, Văn Thế Minh, NXB Giáo Dc. 4. Hvi điu khin 8051, Tng Văn On. 5. Kthut Vi điu khin AVR, Tng Văn On.

Upload: dotu

Post on 31-Dec-2016

234 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Ứng dụng Vi điều khiển

1

MÔN HỌC

Ứng dụng Vi điều khiển(Microcontroller Applications)

By Trần Văn HùngMechatronics Dept

http://www.ntu.edu.vn/Email: [email protected]

Tài liệu tham khảo

1. Microprofessors and microcpmputers hardware and softwware, Ronaid J.Tocci, Frank J.Ambrosio, Prentice Hall, 2003

2. Interfacing Sensors To The Pc, Willis J.Tompkin, Jonh G.webster, Prentice Hall, 19983. Vi xử lý, Văn ThếMinh, NXB Giáo Dục.4. Họ vi điều khiển 8051, Tống Văn On.5. Kỹ thuật Vi điều khiển AVR, Tống Văn On.

Page 2: Ứng dụng Vi điều khiển

2

Nội dung chương trình

n Ch01: Các hệ đếm và mã hoán Ch02: Hệ thống vi xử lýn Ch03: Bộ nhớn Ch04: Họ vi điều khiển AVRn Ch05: Ngôn ngữ lập trình CodevisionAVRn Ch06: Input/Output

Các bài toán1. Thiết kế mạch điều khiển ánh sáng theo chương trình định trước2. Thiết kế mạch trang trí bằng đèn LED3. Thiết kế mạch nhận dạng điểm phục vụ (thêm ít nhất 2IC)4. Thiết kế mạch đo lượng mưa5. Thiết kế mạch điều khiển nhiệt độ không khí6. Thiết kế mạch điều khiển nhiệt độ dung dịch7. Thiết kế mạch đồng hồ điện tử8. Thiết kế mạch tính thời gian cho các môn điền kinh9. Thiết kế bảng quang báo10. Thiết kế mạch khoá điện tử11. Thiết kế mạch điều khiển thiết bị bằng remote12. Kết nối bàn phím máy tính với VXL, hiển thị ký tự lên LCD13. Thiết kế mạch điều khiển Robot chạy theo qũy đạo (sd motor bước)14. Thiết kế mạch điều khiển tốc độ động cơ DC15. Thiết kế mạch điều khiển góc quay của môtơ, ổn tốc cho motor.

Page 3: Ứng dụng Vi điều khiển

1

Chương 1: Các hệ đếm và mã hoá

n Các hệ đếm dùng trong máy tínhn Các phép toán số học đối với hệ hain Mã ASCII

1.1 Các hệ đếm dùng trong máy tính1.1.1 Hệ mười và hệ hai

n Con người thì quen dùng hệ cơ số mười (hệ mười)1234,56 = 1.103 + 2.102 + 3.101 + 4.100 + 5.10-1 + 6.10-2

n Máy tính thì chỉ làm việc với hệ cơ số hai (hệ hai)1011,01 = 1.23 + 0.22 + 1.21 + 1.20 + 0.2-1 + 1.2-2

n Nibble gồm 4 bit

n Byte gồm 8 bit

n Word gồm 16 bit

03

7 0

15 0

MSB LSB

Page 4: Ứng dụng Vi điều khiển

2

1.1.1 Chuyển đổi giữa hệ mười và hệ hain Đổi hệ hai sang hệ mười

1011,012 = 1.23 + 0.22 + 1.21 + 1.20 + 0.2-1 + 1.2-2 = 11,2510

n Đổi hệ mười sang hệ hai4610 = 1011102

Hình 1. Một cách đổi hệ mười sang hệ hai

01

46 223 2

11 25 2

2 21 2

0

11

01

1.1.1 Chuyển đổi giữa hệ mười và hệ hai (tiếp)n Đổi số thập phân hệ mười sang hệ hai

0,12510 = 0,0012

n Số BCD (số hệ mười mã hoá bằng hệ hai)Số BCD thích hợp cho các thiế bị đo có hiển thị số ở đầu ra.

123410 = 0001 0002 0003 0004BCD

n Hệ mười sáu123410 = 0100 1101 00102 = 4D216

0,125 x 2 =

0,250 x 2 =

0,500 x 2 =

,250

,500

,000

0

0

1

Page 5: Ứng dụng Vi điều khiển

3

1.2 Các phép toán số học đối với hệ hai1.2.1 Phép cộng

ana(n-1) ... a2a1a0 + bmb(m-1) ... b2b1b0 = ckc(k-1) ... c2c1c0 (hệ cơ số x)ci = (ai + bi + (ai-1 + bi-1)%x )/x

Ví dụ cộng hệ hai

1.2.2 Phép trừ và số bù haia. Phép trừ

ana(n-1) ... a2a1a0 - bmb(m-1) ... b2b1b0 = ckc(k-1) ... c2c1c0 (hệ cơ số x)ci = (ai – Bi-1) – bi (nếu (ai – Bi-1) >= bi và Bi = 0)ci = (ai – Bi-1 + x) – bi (nếu (ai – Bi-1) < bi và Bi = 1)

Ví dụ trừ hệ hai

1101 1001

0001 1011

1111 0100

+

1101 1001

0001 1011

1011 1110

-

1.2.2 Phép trừ và số bù hai (tiếp)

b. Số bù haiTa có thể thay phép trừ bằng phép cộng: cộng số bị trừ với đối số của số trừ.

Để tìm số bù hai của một số A ta làm theo các bước sau:+ Biểu diễn số A số hệ hai của nó.+ Tìm số bù một (bù logic) của số đó (đảo bít).+ Cộng một vào số bù một ở trên để nhận được số bù hai của A.

1.2.3 Phép nhânVí dụ nhân 2 số hệ hai có độ dài 4 bít

Bảng 1. Quy tắc phép nhân

a.bba

1000

11011000

10110000

1 1

0

0

0111

1

0101

0

0000

1

111

1

Page 6: Ứng dụng Vi điều khiển

4

1.2.2 Phép chiab. Chia trực tiếp

Ví dụ: 35/5 = 7

b. Chia gián tiếpLấy số bị chia trừ đi số chia, kết quả sẽ là số bị chia của phép toán

tiếp theo, lặp lại đến khi số bị chia nhỏ hơn số chia hoặc bằng 0.

0101

10

11

1

101111

1

0000

0

10

0

1

1 10101

10100

Page 7: Ứng dụng Vi điều khiển

1

Chương 2: Hệ thống vi xử lý

n Ưu và nhược điểm hệ nhúng

n Vi xử lý, vi điều khiển

n Các họ vi điều khiển

n Ngắt và xử lý ngắt

2.1 Tại sao lại sử dụng hệ nhúng?2.1.1 Ưu điểm

n Khả năng thích nghi caon Tính linh độngn Khả năng thay đổi dễ dàngn Khả năng tái sử dụng tài nguyên (thư viện,…)n Giá thành rẻn . . .

2.1.2 Nhược điểmn Tốc độ phản ứng chậmn Độ ổn định thấpn Không xử lý được gía trị liên tụcn . . .

Page 8: Ứng dụng Vi điều khiển

2

2.2 Vi điều khiển, vi xử lý

CPU

General-PurposeMicro-

processor

RAM ROM I/O PORT

Timer, Wdg,ADC, DAC,

USB, UARST, I2C,…

Data bus

Address bus

TERMINOLOGYn Microcontroller vs. Microprocessor vs. Microcomputern A microprocessor is a central processing unit on a

single chip. n A microprocessor combined with support circuitry ,

peripheral I/O components and memory (RAM & ROM) used to be called a “microcomputer.”

n A microprocessor where all the components mentioned above are combined on the same single chip that the microprocessor is on, is called a microcontroller.

Page 9: Ứng dụng Vi điều khiển

3

2.3 Kiến trúc vi điều khiển

n Đơn vị sử lý số học (ALU)

n Bộ nhớ

n Input

n Output

n Đơn vị điều khiển

2.3.1 Đơn vị xử lý số học (ALU)n Thực hiện phép toán và phép logic trên dữ liệun Dữ liệu có thể lấy trên bộ nhớ hoặc I/On Kết quả có thể được đưa ra ngoài hoặc vào bộ nhớ

(kết quả được lưu lại)

GeneralPurpose

Registrers

ALU

Page 10: Ứng dụng Vi điều khiển

4

2.3.2 Bộ nhớn Lưu trữ lệnh hay dữ liệun Có thể để lưu trữ dữ liệu tạm thờin Có thể ghi/đọc được bởi bộ điều khiển

Program Flash

(4K x 16)

Program Memory$000

$FFF

32 Gen. PurposeWorking Resisters

64 I/O Resisters

Internal SRAM(512 x 8)

$025F

$005F$0060

$001F$0020

$0000Data Memory

EEPROM(512 x 8)

Data Memory$000

$1FF

2.3.3 Input

n Thiết bị cho phép thông tin và dữ liệu vào bên trongbộ vi điều khiển

n Ví dụ: ADC, I2C, UART, …

2.3.4 Output

n Thiết bị chuyển đổi thông tin và dữ liệu từ bộ nhớ rathiết bị ngoại vi.

n Thiết bị ngoại vi: LED, LCD, máy in, …

Page 11: Ứng dụng Vi điều khiển

5

2.3.5 Đơn vị điều khiển

n Cung cấp xung nhịp và điều khiển tín hiệu

n Tìm nạp lệnh và dữ liệu

n Chuyển dữ liệu tới/từ I/O

n Giải mã lệnh

n Thực hiện phép tính số học/logic

n Đáp ứng tín hiệu ngoài (Reset/Ngắt)

2.3.6 Một số họ vi điều khiển

n Vi điều khiển 8051

n 8051, 89Cxx, 89Sxx, 89Dxx,…

n Vi điều khiển AVR

n AVR 8 bít, AVR 16 bít,…

n Vi điều khiển PIC

n PIC 8 bít, PIC 16 bít,…

n Vi điều khiển MCUs của Philips

n P8xCxx,…

n …

Page 12: Ứng dụng Vi điều khiển

6

2.3.6 Các họ vi điều khiển (tiếp – so sánh)n Tốc độ xử lý (clock, clock cycle execution)

n Khả năng tích hợp (ADC, DAC, UART, I2C,…)

n Dải điện áp hoạt động (Operating Voltages)

n Công suất đầu ra (DC current per I/O pin)

n Khả năng chống nhiễu (Noise Reduction)

n Tập lệnh (Instruction)

n Công suất IC (Power consumption)

n . . .

2.4 Ngắt và xử lý ngắt (Interrupt)2.4.1 Khái niệm

n Ngắt là sự dừng thực hiện chương trình chính (CTC) đểthực hiện chương trình con phụ vụ ngắt(ctc)

n: IRQin + 1:

m: IRQjm + 1:

Main Prog

ISRiISRj

iret iret

Page 13: Ứng dụng Vi điều khiển

7

2.4.2 Cấu trúc ngắt

nXuất hiện không được báo trước

nPhục vụ gần giống chương trình con

nTích hợp nhiều loại ngắt

nCó ưu tiên ngắt

2.4.3 Xử lý ngắtn Xuất hiện và cho phép ngắt

n Hoàn thành lệnh hiện tại

n Lưu trữ địa chỉ lệnh tiếp theo vào ngăn xếp

n Nạp địa chỉ ISR vào PC

n Thực hiện ISR

n Kết thúc ISR là lệnh RETI

n Khôi phục địa chỉ lệnh tiếp theo trong ngăn xếp, chương trình tiếp tục thực hiện

Page 14: Ứng dụng Vi điều khiển

8

2.4.4 Phân loại ngắtn Ngắt mềm (software interrupt)

Là việc gọi 1 ctc (Subroutine) được xây dựng riêng mà ctcnày còn có thể được gọi bởi thiết bị ngoại vi

n Ngắt cứng (hardware interrupt)Do port phát tín hiệu đến CPU

n Ngắt trong (internal interrupt)Trong một số CPU để bẫy/xử lý các sự kiện trong khi thựchiện

n Ngoại lệ (exceptions)Là vấn đề hay điều kiện để CPU dừng công việc đang thựchiện, tìm địa chỉ và thực hiện 1 ctc, được thiết kế để xử lý sựkiện này.

Page 15: Ứng dụng Vi điều khiển

1

Chương Chương 3: B3: Bộộ nhnhớớ

nn BBộộ nhnhớớ bbáán dn dẫẫnn

nn GiGiảải mã đi mã địịa cha chỉỉ cho bcho bộộ nhnhớớ

nn PhPhốối ghi ghéép bp bộộ nhnhớớ

nn MMởở rrộộng bng bộộ nhnhớớ

3.1 B3.1 Bộộ nhnhớớ bbáán dn dẫẫnnnn CCáác nhc nhóóm tm tíín hin hiệệuunn ROM (ROM (read only memoryread only memory))nn RAM (RAM (random access memoryrandom access memory))

ROMReadOnlyMemory

RAMRadomAccessMemory

PROMEPROMEEPROM

Programmable ROM

Erasable PROM

Electrically EPROM

SRAMStatic RAM

DRAMDynamic RAM

CACHEL1, L2, L3

Memory

Page 16: Ứng dụng Vi điều khiển

2

3.1.1 C3.1.1 Cáác nhc nhóóm tm tíín hin hiệệuu

A0A1A2

An

...

D0D1D2

Dm

...

CS

WE

OE

RD

WR

Select IC

Address Data

Hình 3. Sơ đồ khối của bộ nhớ

a. Nha. Nhóóm tm tíín hin hiệệu đu địịa cha chỉỉ

nn CCóó ttáác dc dụụng chng chọọn ra mn ra mộột ô nht ô nhớớ ccụụ ththểể

nn SSốố đư đườờng đng địịa cha chỉỉ ssẽẽ quyquyếết đt địịnh cnh cóó ttốối đa bao nhiêu ô i đa bao nhiêu ô nhnhớớ. V. Víí ddụụ ccóó m đư m đườờng đng địịa cha chỉỉ vvậậy thy thìì ttốối đa i đa 22mm ô nhô nhớớ..

b. Nhb. Nhóóm tm tíín hin hiệệu du dữữ liliệệuu

nn ThưThườờng lng làà đ đầầu ra cu ra củủa ROM va ROM vàà llàà vvàào/rao/ra đ đốối vi vớới RAMi RAM

nn CCáác mc mạạch nhch nhớớ thư thườờng cng cóó đ đầầu vu vàào/ra lo/ra làà 3 tr3 trạạng thng tháái.i.

nn SSốố đư đườờng dây dng dây dữữ liliệệu quyu quyếết đt địịnh đnh độộ ddàài ti từừ nhnhớớ ccủủa a mmỗỗi ô nhi ô nhớớ..

Page 17: Ứng dụng Vi điều khiển

3

c. Nhc. Nhóóm tm tíín hin hiệệu chu chọọn vi mn vi mạạchchnn ChChọọn vi mn vi mạạch sch sẽẽ trao đ trao đổổi di dữữ liliệệu.u.nn CCáác tc tíín hin hiệệu nu nàày thưy thườờng đưng đượợc nc nốối vi vớới đi đầầu ra cu ra củủa ba bộộ

gigiảải mã đi mã địịa cha chỉỉ..nn Vi mVi mạạch không đưch không đượợc chc chọọn thn thìì bus dbus dữữ liliệệu cu củủa na nóó bbịị

treo (treo (ởở trtrạạng thng tháái tri trởở khkhááng cao).ng cao).

d. Nhd. Nhóóm tm tíín hin hiệệu điu điềều khiu khiểểnnnn Cho phCho phéép dp dữữ liliệệu ra bus.u ra bus.nn Bus dBus dữữ liliệệu bu bịị treo ntreo nếếu không cu không cóó ttíín hin hiệệu điu điềều khiu khiểển.n.nn MMạạch thưch thườờng chng chỉỉ ccóó mmộột tt tíín hin hiệệu điu điềều khiu khiểển đn đọọc/ghi.c/ghi.

3.1.2 ROM3.1.2 ROMnn BBộộ nhnhớớ ccóó nnộội dung đã ghi si dung đã ghi sẵẵn chn chỉỉ đ đểể đ đọọc rac rann ChChỉỉ nnạạp vp vàào mo mộột lt lầần duy nhn duy nhấấttnn Không bKhông bịị mmấất thông tin khi mt thông tin khi mấất đit điệệnn

A0A1A2

An

...

D0D1D2

Dm

...

CSWE

OE

RD

WR

Select IC

Address Data

Hình 3. Bộ nhớ ROM

Page 18: Ứng dụng Vi điều khiển

4

3.1.3 ROM c3.1.3 ROM cóó ththểể llậập trp trìình đưnh đượợcc

a. PROM (a. PROM (Programmable ROMProgrammable ROM))nn ThThờời gian truy ci gian truy cậập nhanh 120p nhanh 120--250ns250nsnn ChChỉỉ nnạạp mp mộột lt lầần duy nhn duy nhấất bt bằằng cng cáác đc đốốt cht chááy cy cáác cc cầầu chu chììnn ĐiĐiệện n ááp khi lp khi lậập trp trìình khonh khoảảng 10ng 10--13V13V

A0

D0

Addressdecoder

AddressBus

A1

A2

VCC

D2 D1

b. EPROM (b. EPROM (erasable PROMerasable PROM))nn ThThờời gian truy ci gian truy cậập khop khoảảng 120 ng 120 –– 450 450 nsnsnn ĐiĐiệện n ááp lp lậập trp trìình khonh khoảảng 10ng 10--25V25Vnn NNóó ccóó ththểể đư đượợc xoc xoáá totoààn bn bộộ bbằằng tia cng tia cựực tc tíím.m.nn ThThờời gian li gian lậập trp trìình cho mnh cho mộột ô nht ô nhớớ lâu (kholâu (khoảảng 50ms)ng 50ms)

Page 19: Ứng dụng Vi điều khiển

5

c. EEPROM (c. EEPROM (electrically EPROMelectrically EPROM))

nn XoXoáá ttừừng đơn vng đơn vịị nhnhớớ bbằằng đing điệện, không cn, không cầần tia cn tia cựực tc tíím.m.

nn ThThờời gian li gian lậập trp trìình cho mnh cho mộột ô nht ô nhớớ khokhoảảng 5ms.ng 5ms.

d. Flash memoryd. Flash memory

n Thời gian truy cập nhanh (khoảng 120ns).

n Thời gian ghi nhanh 10µs

n Xóa từng khối nhớ

Page 20: Ứng dụng Vi điều khiển

6

3.1.4 RAM3.1.4 RAMn Bị mất dữ liệu khi mất điện.n Thời gian truy cập nhanh (có loại 15ns).

Register 62Register 62Register 63Register 63

..

....

Register 2Register 2Register 1Register 1Register 0Register 0

Decoder

6 line to 64 lineAdd

ress

in

put

R/WInput buffers

Output buffers

CS

Hình 3. Cấu tạo bên trong của 64 x 4 RAM

3.1.4 RAM (3.1.4 RAM (titiếếpp))

n SRAM (static RAM)

n Chế tạo đơn giản

n Dễ dàng bảo trì

n Thường được sử dụng trong hệ thống có bộ nhớ nhỏ

n DRAM (dynamic RAM)

n Giá thành thấp

n Đòi hỏi mạch phụ trợ

n Phải làm tươi (refresh) thường xuyên

n Thường được sử dụng trong hệ thống có bộ nhớ lớn

Page 21: Ứng dụng Vi điều khiển

7

3.2 Gi3.2 Giảải mã đi mã địịa cha chỉỉ cho bcho bộộ nhnhớớnn Phân đPhân địịnh không gian tnh không gian tổổng thng thểể ththàành cnh cáác vc vùùng nhng nhớớ khkháác nhauc nhau

nn ĐĐảảm bm bảảo to tíính đơn trnh đơn trịị ccủủa xung cha xung chọọnn

nn Khi thiKhi thiếết kt kếế thư thườờng cng cóó ddựự phòng (phòng (sparespare) ) đđểể ccóó ththểể mmởở rrộộng ng mmàà không phkhông phảải thii thiếết kt kếế llạại mi mạạch.ch.

Mạch giảimã địa chỉ

Tín hiệu địa chỉ

Tín hiệu điều khiển

Các tín hiệu chon chip

Hình 3. Mạch giải mã địa chỉ

3.2.1 Gi3.2.1 Giảải mã bi mã bằằng cng cáác mc mạạch NANDch NANDnn MMạạch gich giảải mã đi mã địịa cha chỉỉ đơn gi đơn giảản vn vớới đi đầầu ra hu ra hạạn chn chếế

Memory

A0 – A10

D0 - D7

A11 – A19

IO/M

CE OE

RD

Hình 3. Mạch giải mã đơn giản dùng NAND

Page 22: Ứng dụng Vi điều khiển

8

3.2.2 Gi3.2.2 Giảải mã bi mã bằằng cng cáác mc mạạch 74138ch 74138nn LLàà mmạạch gich giảải mã 3i mã 3 đ đầầu vu vàào, o, 8 8 đđầầu rau ra

MemoryA0 – A12

D0 – D7

A13 – A15

IO/M

CE OE

RD

74LS138

ABC

G1

6G2A

4G2B

5

Y0 15

Y1 14

Y2 13

Y3 12

Y4 11

Y5 10

Y6 9

Y7 7A19

A16 – A18

Hình 3. Sơ đồ giải mã dùng 74LS138

3.2.2 Gi3.2.2 Giảải mã bi mã bằằng cng cáác mc mạạch 74138 ch 74138 ((titiếếpp))nn MMứức tc tíích cch cựực lc làà mmứức 0c 0nn ChChỉỉ duy nhduy nhấất mt mộột đt đầầu ra u ra ởở mmứức tc tíích cch cựựcc

Page 23: Ứng dụng Vi điều khiển

9

3.2.3 Gi3.2.3 Giảải mã di mã dùùng ROMng ROMnn CCùùng mng mộột cht chứức năng như c năng như 7413874138nn GiGiảảm thim thiểểu su sốố mmạạch phch phụụ trtrợợ

MemoryA0 – A12

D0 – D7

A13 – A19

IO/M

CE OE

RD

G1

Y0 15

Y1 14

Y2 13

Y3 12

Y4 11

Y5 10

Y6 9

Y7 7

A0A1A2A3A4A5A6A7

Hình 3. Sơ đồ giải mã dùng PROM

3.2.3 Gi3.2.3 Giảải mã di mã dùùng ROM (ng ROM (titiếếpp))nn ChChỉỉ ssửử ddụụng 8 ng 8 byte đbyte đầầu tiên, cu tiên, cáác byte khc byte kháác đc đềều chu chứứa ca cùùng ng

mmộột git giáá trtrịị FFhFFh

1111111111111111CCáác đc địịa cha chỉỉ khkháác c 0000111111111111111111111111111100001100111111111111001111111111110000111100111111111111001111111111000011111100111111110000111111111100001111111100111111111100111111110000111111111100111100110011111111000011111111111100111100001111111100001111111111111100000000111111110000

OO00OO11OO22OO33OO44OO55OO66OO77AA00AA11AA22AA33AA44AA55AA66AA77GGCCáác đc đầầu rau raCCáác đc đầầu vu vààoo

Page 24: Ứng dụng Vi điều khiển

10

RDIO/M

MemoryA0 – A11

A12 – A14

74LS138

ABC

G1

6G2A

4G2B

5

Y0 15

Y1 14

Y2 13

Y3 12

Y4 11

Y5 10

Y6 9

Y7 7+Vcc

A15 – A19

D0 – D7

FF000-FFFFF

F8000-F8FFF

Hình 3. Phối ghép bộ nhớ

Bộ tạo xung trễReady

CS

3.3 Gh3.3 Ghéép np nốối bi bộộ nhnhớớnn ĐĐịịnh đnh địịa cha chỉỉ ccáác ô nhc ô nhớớ..nn Dung lưDung lượợng bng bộộ nhnhớớ..nn TTốốc đc độộ bbộộ nhnhớớ ko đ ko đááp p ứứng đươc tng đươc tốốc đc độộ VĐK th VĐK thìì ta phta phảải ci cóó

mmạạch tăng thêm chu kch tăng thêm chu kỳỳ đ đợợii

CE OE

3.3 Gh3.3 Ghéép np nốối bi bộộ nhnhớớ ((titiếếpp))nn SSửử ddụụng bng bộộ ddồồn kênh đn kênh đểể gigiảảm sm sốố chân chân, , tăng dung lưtăng dung lượợng bng bộộ

nhnhớớ lênlên

128 x 128Cell array

R/W

Data in

Data out

Column address decoder

7 bitColumn address register

Rowaddressdecoder

7 bitRow

addressregister

A0

A1

A2

A3

A4

A5

A6

A7 A8 A9 A10 A11 A12 A13

-----------

||||||||

A0/ A7 – A6/A13

A0/A7-------

A6/A13

RAS

CAS

Hình 3. Kiến trúc của bộ nhớ 4116

Page 25: Ứng dụng Vi điều khiển

11

3.4 M3.4 Mởở rrộộng bng bộộ nhnhớớ3.4.1 M3.4.1 Mởở rrộộng kng kíích thưch thướớc ô nhc ô nhớớ

Hình 3. Kết hợp hai bộ nhớ 16 x 4 thành 16 x 8

Address bus (AB0 – AB3)

Data bus (DB0 – DB7)

RAM-016 x 4

R/W

CS

I/03 I/02 I/01 I/00

A3 A2 A1 A0

RAM-116 x 4

R/W

CS

I/03 I/02 I/01 I/00

A3 A2 A1 A0

R/W

CS

3.4.1 M3.4.1 Mởở rrộộng kng kíích thưch thướớc ô nhc ô nhớớ ((titiếếpp))

Hình 3. Kết hợp bốn bộ nhớ 2K x 8 thành 2K x 32

Address bus (AB0 – AB10)

Data bus (DB0 – DB31)

RAM-02K x 8

I/00 - I/07

R/W

CS

RAM-12K x 8

I/08 - I/015

R/W

CS

RAM-22K x 8

I/016 - I/023

R/W

CS

RAM-32K x 8

I/024 - I/031

R/W

CS

Page 26: Ứng dụng Vi điều khiển

12

3.4.2 M3.4.2 Mởở rrộộng dung lưng dung lượợng nhng nhớớ

Hình 3. Kết hợp hai bộ nhớ 16 x 4 thành 32 x 4

Address bus (AB0 – AB3)

Data bus (DB0 – DB3)

RAM-016 x 4

R/W

CS

I/03 I/02 I/01 I/00

A3 A2 A1 A0

RAM-116 x 4

R/W

CS

I/03 I/02 I/01 I/00

A3 A2 A1 A0

R/W

AB4

Page 27: Ứng dụng Vi điều khiển

1

Chương 4: Họ vi điều khiển AVR

n Giới thiệu chungn Các chức năng điều khiểnn Tập lệnh và ngôn ngữ lập trình

4.1 Giới thiệu chungn AVR - Kiến trúc RISC

n Khoảng hơn 100 lệnh, hầu hết thực hiện một chu kỳ máyn 32 thanh ghi đa năng 8 bitn Có thể lên tới 16 MIPS tại tần số 16MHz

n Bộ nhớ :n 8..256K Flash Mem cho chương trình, ghi/xoá được 10.000

lầnn 512..4K Byte EEPROM, ghi/xoá 100.000n 512…8K Byte SRAM

Page 28: Ứng dụng Vi điều khiển

2

4.1 Giới thiệu chung (tiếp)n Các modul vào ra (I/O moduls)

n ADC 10bit và từ 8..16 kênh Analogn 1 đến 2 Programmable UARTn Master/Slave ISP Serial Interfacen 3..4 Timer/Counter: 1 x 16 bit, 2 x 8 bitn WatchDog Timern Analog Comparatorn PWM

n Công suất (Power Management):- 3 chế độ nghỉ (Sleep Mode):n Idle : 1.9 mAn Power-Down: <1µAn PowerSaven (chế độ chạy bình thường: 6mA)

4.1 Giới thiệu chung (tiếp)– Điện áp làm việc :n Vcc 4.0-6.0V với AT90S8535n Vcc 2.7-6.0V với AT90LS8535

– Tần số CLOCK n 0-8MHz với AT90S8535n 0-4MHz với AT90LS8535n 0-16MHz với Atmegaxx

Page 29: Ứng dụng Vi điều khiển

3

4.1 Giới thiệu chung (tiếp)

4.1.1 Các bộ nhớ

Program Flash

(4K x 16)

Program Memory$000

$FFF

32 Gen. PurposeWorking Resisters

64 I/O Resisters

Internal SRAM(512 x 8)

$025F

$005F$0060

$001F$0020

$0000Data Memory

EEPROM(512 x 8)

Data Memory$000

$1FF

Page 30: Ứng dụng Vi điều khiển

4

4.1.1 Các bộ nhớ (tiếp)Data Address Space

$001F$001E

…$0001$0000

$005F$005E

…$0021$0020

Internal SRAM

$085F$085E

…$0061$0060

Register File

R31R30…R2R1

I/O Register

$3F$3E…

$01$00

ZLZH

SRAM Organization

4.1.2 Các thanh ghi đa nănga. Các thanh ghi đa năngn Bao gồm 32 thanh ghi 8 bitn Được thực hiện trực tiếp từ ALU

n Các cặp thanh ghi R26, 27; R28, 29; R30, 31 tạo thành các thanh ghi 16 bit

Page 31: Ứng dụng Vi điều khiển

5

b. Các thanh ghi ngăn xếpn Để lưu trữ dữ liệu tam thời, vị trí biến và địa chỉ trở

về sau khi phục vụ chương trình con ngắt và chương trình con

n Luôn trỏ vào đỉnh của ngăn xếpn Ngăn xếp luôn bắt đầu từ vị trí cao của bộ nhớ

c. Các thanh ghi trạng tháin Chứa thông tin hiện tại của CPUn Có 8 bit chứa thông tinn Thông tin có thể bị thay đổi khi có chương trình con

phục vụ ngắt

Page 32: Ứng dụng Vi điều khiển

6

d. Thanh ghi che ngắt và cờ ngắtn Cho phép hay không cho phép một ngắt bất kỳn Thông báo khi có ngắt, nếu ngắt đó đã được phépn Thanh ghi che ngắt được thiết lập bằng phần mềm

e. Thanh ghi điều khiểnn Cho phép điều khiển toàn bộ vi điều khiểnn Chức năng này gồm:

n Truy cập bộ nhớ SRAMn Chế độ ngủn Chế độ ngắt ngoài

Page 33: Ứng dụng Vi điều khiển

7

f. Một số thanh ghi khácn Thanh ghi trạng thái bộ xử lýn Các thanh ghi điều khiển timer/counter0n Các thanh ghi điều khiển timer/counter1n Thanh ghi điều khiển Watchdogn Các thanh ghi điều khiển vào ra EEPROMn Các thanh ghi điều khiển SPIn Các thanh ghi điều khiển UARTn Các thanh ghi điều khiển bộ ADC

4.1.3 Ngắt và xử lý ngắt

Store Program Memory ReadySPM_RDY$02821

Two-wire Serial InterfaceTWI$02620

Analog ComparatorANA_COMP$02419

EEPROM ReadyEE_RDY$02218

ADC Conversion CompleteADC$02017USART, Tx CompleteUSART, TXC$01E16USART Data Register EmptyUSART, UDRE$01C15USART, Rx CompleteUSART, RXC$01A14Serial Transfer CompleteSPI, STC$01813Timer/Counter0 OverflowTIMER0 OVF$01612Timer/Counter0 Compare MatchTIMER0 COMP$01411Timer/Counter1 OverflowTIMER1 OVF$01210Timer/Counter1 Capture Match BTIMER1 COMPB$0109Timer/Counter1 Capture Match ATIMER1 COMPA$00E8Timer/Counter1 Capture EventTIMER1 CAPT$00C7Timer/Counter2 OverflowTIMER2 OVF$00A6Timer/Counter2 Compare MatchTIMER2 COMP$0085External Interrupt Request 2INT2$0064External Interrupt Request 1INT1$0043External Interrupt Request 0INT0$0022

External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR ResetReset$0001

Interrupt DifinitionSourceProgramAddressVector No.

Page 34: Ứng dụng Vi điều khiển

8

4.1.3 Ngắt và xử lý ngắt (tiếp)n 16 vectơ ngắt (2 Byte)n Từ địa chỉ $000 trong bộ nhớ chương trìnhn Ngắt có chỉ số thấp, độ ưu tiên càng caon Mỗi ngắt có một bít cho phép ngắt riêngn Để sử dụng một ngắt thì bit này phải thiết lập cùng

với cờ I (Global Interrupt Enable) trong thanh ghi SREG được thiết lập

n Mất 4 chu kỳ đồng hồ để vào (hoặc ra khỏi) chương trình con phực vụ ngắt

4.1.3 Ngắt và xử lý ngắt (tiếp)

n I – Global Interrupt Enablen T – Bit Copy Storagen H – Haft Carry Flagn S – Sign Bit S = N Vn V – Overflow Flagn N – Negative Flagn Z – Zero Flagn C – Carry Flag

00000000Initial ValueR/WR/WR/WR/WR/WR/WR/WR/WRead/Write

SREGCZNVSHTI$3F ($5F)01234567Bit

Page 35: Ứng dụng Vi điều khiển

9

4.2 Các chức năng điều khiển

n Timer/Counter

n WatchDog Timer

n Các cổng vào ra

n ADC

n UART

n EEPROM

4.2.1 Timer/CounterCó 3 bộ đếm/định thời giann T/C0 :

n 8 bitn Nguồn đồng hồ từ mạch chia thời gian hoặc từ chân T0

(theo sườn lên/xuống)n Ngắt tràn

n T/C1:n 16 bitn Nguồn đồng hồ từ mạch chia thời gian hoặc từ chân T1

(theo sườn lên/xuống)n Có ngắt tràn, ngắt thích ứng so sánh và ngắt cho phép bắt

tín hiệu từ chân ICP

Page 36: Ứng dụng Vi điều khiển

10

4.2.1 Timer/Counter (tiếp)

n T/C2:

n 8 bit

n Nguồn đồng hồ từ mạch chia thời gian hoặc từ dao động bên ngoài (chân TOSC1 và TOSC2 nối với tụ thạch anh 32768Hz)

n Có ngắt tràn và ngắt thích ứng so sánh

n Cho phép đưa tín hiệu ra chân OC2 khi có tín hiệu thích ứng so sánh

4.2.2 WatchDog Timer

Processor

Watchdog Timer

Clock

Restart

Reset

Page 37: Ứng dụng Vi điều khiển

11

4.2.2 WatchDog Timer (tiếp)n Hoạt động từ bộ dao động độc lập trên chipn Lệnh WDR để Reset lại WatchDog Timern Sau khoảng thời gian > time_out chương trình sẽ bị

Reset lạin Thanh ghi điều khiển: WDTCR

00000000Initial Value

R/WR/WR/WR/WR/WRRRRead/Write

WDTCRWDP0WDP1WDP2WDEWDTOE───$21 ($41)

01234567Bit

4.2.2 WatchDog Timer (tiếp)n WDP2, WDP1, WDP0 : xác định thời gian time_out

2.1s2.2s2M111

1.0s1.1s1M011

0.52s0.55s512K101

0.26s0.27s256K001

0.13s0.14s128K110

65ms68.564K010

32.5ms34.3ms32K100

16.3ms17.1ms16K000

Typical Time_outat Vcc = 5.0V

Typical Time_outat Vcc = 3.0V

Number of WDTOscillator Cycles

WDP0WDP1WDP2

Page 38: Ứng dụng Vi điều khiển

12

4.2.2 Các cổng vào ra

4.2.2 Các cổng vào ra (tiếp)n Có 4 cổng vào ra 8 bit PA, PB, PC, PDn Mỗi cổng đều có 3 thanh ghi (8 bit), ví dụ cổng A :

n Thanh ghi dữ liệu : PORTAn Thanh ghi điều khiển hướng dữ liệu : DDRAn Thanh ghi địa chỉ các chân vào : PINA

n Cho phép thao tác vào ra trên từng bít (một cổng cóthể vừa có bit vào vừa có bit ra)n bit DDRAi=1, chân PAi là chân ra ( = PORTAi)n bit DDRAi=0, chân PAi là chân vào (= PINAi)

Page 39: Ứng dụng Vi điều khiển

13

4.2.2 Các cổng vào ra (tiếp)n Phải định nghĩa cổng trước khi sử dụngn Khả năng chịu tải cao (Isink khoảng 20mA/Pin)n Vào ra ba trạng tháin Có khả năng vào tương tựn Pull_up, I = 33µA÷160µA

4.2.3 ADCn Đặc điểm:

n Độ phân giải tối đa 10 bit, xấp xỉ liên tiếpn Độ chính xác tuyệt đối đến ±2 LSBn Thời gian chuyển đổi: 65-260 µs, 13 chu kỳ cho một lần

chuyển đổin 2 chế độ hoạt động: chuyển đổi đơn và chuyển đổi tự do

n Các thanh ghin Thanh ghi dữ liệu: ADCL, ADCH

Page 40: Ứng dụng Vi điều khiển

14

4.2.3 ADC (tiếp)n Thanh ghi chọn kênh : ADMUX

n Thanh ghi điều khiển trạng thái: ADCSRA

00000000Initial Value

R/WR/WR/WR/WR/WR/WR/WR/WRead/Write

ADMUXMUX0MUX1MUX2MUX3MUX4ADLARREFS0REFS1$21 ($41)

01234567Bit

00000000Initial Value

R/WR/WR/WR/WR/WR/WR/WR/WRead/Write

ADCSRAADPS0ADPS1ADPS2ADIEADIFADATEADSCADEN$21 ($41)

01234567Bit

4.2.4 USARTn Đặc điểm:

n Truyền song côngn Truyền đồng bộ hoặc không đồng bộnMaster hoặc Slave cấp xung nhịpn Khuân dạng dữ liệu đa dạng (5=>9 bit dữ liệu, 1 hoặc 2

bít dừng)n Kiểm tra bit chẵn lẻ bằng phần cứngn Tự phát hiện lỗi tràn dữ liệu, khung dữ liệu lỗin Khả năng lọc nhiễun 3 ngắt truyền, nhận và truyền hếtn Nhiều chế độ kết nốin Khả năng nhân đôi tốc độ truyền thông

Page 41: Ứng dụng Vi điều khiển

15

4.2.4 USART (tiếp)n Các thanh ghinThanh ghi tốc độ Baud : UBRR

nVD: fck = 4MHz,cần tốc độ 14400bpsnUBRR =16 (16.3), tốc độ thực tế là 14705bps, lỗi 2.1%nKhông nên sử dụng tốc độ có lỗi > 1%

16 * (UBRR + 1)

FclkBaudRate =

4.2.4 USART (tiếp)n Thanh ghi dữ liệu: UDR (gồm hai thanh ghi độc lập có cùng địa chỉ vào ra): chứa dữ liệu nhận và truyền

n Thanh ghi điều khiển và trạng thái: UCSR(Control and Status Register)

0

R/W

MPCM

0

UCSRA

0000100Initial Value

R/WRRRRR/WRRead/Write

U2XPEDORFEUDRETXCRXC$0B ($2B)

1234567Bit

0

R/W

TXB8

0

UCSRB

0000000Initial Value

RR/WR/WR/WR/WR/WR/WRead/Write

RXB8UCSZ2TXENRXENUDRUETSCIERXCIE$0A ($2A)

1234567Bit

Page 42: Ứng dụng Vi điều khiển

16

4.2.4 USART (tiếp)

Hoạt động:

n Thiết lập tốc độ truyền, 8/9 bit dữ liệu, truyền/nhận hoặc cả hai, có sử dụng ngắt hay không?

n Truyền dữ liệu:

n Đưa byte dữ liệu cần truyền vào UDR

n Đợi đến khi UDRE = 1 (hoặc sử dụng ngắt) thì truyền tếp byte tiếp theo

4.2.4 USART (tiếp)n Nhận dữ liệu:

n Đợi đến khi cờ RXC=1 (hoặc sử dụng ngắt) báo hiệu nhận được byte dữ liệu

n Kiểm tra cờ FE và OR

n Đọc byte dữ liệu từ UDR

St (St/IDLE)Sp1 [Sp2][P][8][7][6][5]43210(IDLE)

Page 43: Ứng dụng Vi điều khiển

17

4.2.5 EEPROMn EERIE (EEPROM Ready Intr En)

n EEMWE (EEPROM Master Write En) : cho phép ghi. Bit này sẽ tự động bị xoá sau 4 chu kỳ đồng hồ

n EEWE (EEPROM Write En) : khi bit này được thiết lập vàEEMWE=1 thì thao tác ghi mới được thực hiện

n EERE (EEPROM Read En): cho phép đọc

n EEPROM. Khi đọc xong, bit này sẽ tự động bị xoá và CPU sẽdừng 4 chu kỳ đồng hồ trước khi lệnh tiếp theo được thực hiện

4.2.5 EEPROM (tiếp)

n Quy trình ghi:

n Đợi đến khi EEWE=0

n Ghi địa chỉ mới vào EEARL và EEARH

n Ghi dữ liệu mới vào EEDR

n Ghi mức logic 1 vào bit EEMWE và mức logic 0 vào EEWE đồng thời

n Trong vòng 4 chu kỳ đồng hồ sau ghi giá trị logic 1 vào EEWE

Page 44: Ứng dụng Vi điều khiển

18

4.2.6 SPI (Serial Peripheral Interface)

4.2.6 SPI (Serial Peripheral Interface – tiếp)

n Truyền song công

nChọn chế độ chủ hoặc tớ

nBit cao hoặc bit thấp truyền trước

nBảy bít thiết lập tốc độ truyền

nCờ ngắt truyền hết

nCờ bảo vệ xung đột ghi

nĐánh thúc từ chế độ nghỉ

nChế độ nhân đôi tốc độ

Page 45: Ứng dụng Vi điều khiển

19

4.2.7 So sánh tín hiệu tương tự (Analog Comparator)n Mạch so sánh tín hiệu tương tự: so sánh tín hiệu

analog giữa hai chân AIN1 và AIN2

S1

Reset+5V

Reset

MOSI

C4 22p

+5V

+5V

CON8

R110K

+5V

SCK

J5

Program

123456 MISO

U1

ATMEGA32

12345678

9

10

11 12

13

1415161718192021

2223242526272829

30

31

32

3334353637383940PB0/XCK/T0

PB1/T1PB2/INT2/AIN0PB3/OC0/AIN1PB4/SSPB5/MOSIPB6/MISOPB7/SCK

RESET

VCC

GND XTAL2

XTAL1

PD0/RXDPD1/TXDPD2/INT0PD3/INT1PD4/OC1BPD5/OC1APD6/ICPPD7/OC2

PC0/SCLPC1/SDAPC2/TCKPC3/TMSPC4/TDOPC5/TDI

PC6/TOSC1PC7/TOSC2

AVCC

AGND

AREF

PA7/ADC7PA6/ADC6PA5/ADC5PA4/ADC4PA3/ADC3PA2/ADC2PA1/ADC1PA0/ADC0

Y18MHz

Reset

C5

22p

MISO

+ C34.7u

MOSI

SCK

4.1 Giới thiệu chung (tiếp)

Page 46: Ứng dụng Vi điều khiển

20

4.3 Tập lệnh và ngôn ngữ lập trình4.3.1 Tập lệnhn 109 lệnh

n Toán học và logic (22)n Lệnh rẽ nhánh (34)n Lệnh chuyển đổi dữ liệu (31)n Lệnh bít và kiểm tra bít (31)

4.3.1 Tập lệnh (tiếp)Các chế độ định địa chỉnĐịa chỉ trực tiếp (Direct Addressing)nĐịa chỉ qua chỉ số (Indexed Addressing)nĐịa chỉ tức thời (Immediate Addressing)nĐịa chỉ tương đối (Relative Addressing)n….

Page 47: Ứng dụng Vi điều khiển

21

4.3.2 Một số ngôn ngữ lập trìnhnAVR AssemblernAVR Edit 3.5 (lập trình C)nCodeVisionAVR (lập trình C)

Page 48: Ứng dụng Vi điều khiển

1

Chương Chương 5: CodevisionAVR5: CodevisionAVR

nn IDE (IDE (Integrated Development EnvironmentIntegrated Development Environment))

nn TrTrìình dnh dịịch (ch (CompilerCompiler))

nn HHààm thư vim thư việện (n (Library Functions)Library Functions)

nn TTựự đ độộng sinh mã (ng sinh mã (Automatic Program GeneratorAutomatic Program Generator))

Hình 5. Giao diện chính của CodevisionAVR

Page 49: Ứng dụng Vi điều khiển

2

5.1 IDE5.1 IDE

5.1.1 File5.1.1 File

nnTTạạo fileo file

nnMMởở filefile

nnChChỉỉnh snh sửửaa

nnLưuLưu

5.1.2 Project5.1.2 Project

nn TTạạo mo mộột projectt project

nn MMởở ProjectProject

nn Thêm chThêm chúú ththíích/dich/diễễn gin giảảii

nn CCấấu hu hìình cho Projectnh cho Project

nn Quan sQuan sáát chương trrt chương trrìình dnh dịịchch

Page 50: Ứng dụng Vi điều khiển

3

5.1.3 Công c5.1.3 Công cụụ

nn GGỡỡ rrốối (i (debuggerdebugger))

nn LLậập trp trìình (nh (programmerprogrammer))

nn TerminalTerminal

nn CCấấu hu hìình (nh (ConfiguringConfiguring))

5.1.4 Thi5.1.4 Thiếết lt lậập môi trưp môi trườờngng

nn TTổổng quanng quan

nn SoSoạạn thn thảảoo

nn HiHiệện ln lỗỗii

nn ĐưĐườờng dng dẫẫn trn trìình gnh gỡỡ llỗỗii

nn CCấấu hu hìình nnh nạạpp

Page 51: Ứng dụng Vi điều khiển

4

5.2 Tr5.2 Trìình dnh dịịchchn Tiền xử lýn Chú thíchn Từ khoán Dữ liệu chuẩn, dữ liệu tự định nghĩan Hằng, biếnn Chuyển kiểun Phép toánn Hàmn Con trỏn Thanh ghi I/On Truy cập EEPROMn Ngắtn Assembly

5.3 H5.3 Hààm chum chuẩẩnn

nn HHààm IO chum IO chuẩẩnnnn char char getchargetchar(void) (void)

Returns a character received by the UART, using polling.Returns a character received by the UART, using polling.

nn void void putcharputchar(char c) (char c) Transmits the character c using the UART, using polling.Transmits the character c using the UART, using polling.

nn ……

nn HHààm tom toáán hn họọccnn unsigned char unsigned char cabscabs(signed char x)(signed char x)

returns the absolute value of the byte x.returns the absolute value of the byte x.

nn unsigned int unsigned int absabs(int x)(int x)returns the absolute value of the integer x.returns the absolute value of the integer x.

nn ……

Page 52: Ứng dụng Vi điều khiển

5

nn LCDLCDnn void void lcd_write_bytelcd_write_byte (unsigned char addr, unsigned char data)(unsigned char addr, unsigned char data)

write a byte to the LCD character generator or display RAMwrite a byte to the LCD character generator or display RAMnn unsigned char unsigned char lcd_read_bytelcd_read_byte(unsigned char addr);(unsigned char addr);

read a byte from the LCD character generator or display RAMread a byte from the LCD character generator or display RAMnn void void lcd_gotoxylcd_gotoxy(unsigned char x, unsigned char y);(unsigned char x, unsigned char y);

set the LCD display position x=0..39 y=0..3set the LCD display position x=0..39 y=0..3

nn . . .. . .

nn II22CCnn void void i2c_initi2c_init(void)(void)

this function initializes the I2C bus.this function initializes the I2C bus.nn unsigned char unsigned char i2c_start i2c_start (void)(void)

issues a START condition. Returns 1 if bus is free or 0 if the Iissues a START condition. Returns 1 if bus is free or 0 if the I2C bus is 2C bus is busy.busy.

nn void void i2c_stop i2c_stop (void)(void)issues a STOP condition.issues a STOP condition.

nn . . .. . .

5.4 T5.4 Tựự đ độộng sinh mãng sinh mãnn CCàài đi đặặt ct cáác thông sc thông sốốnn ThiThiếết lt lậập RAM ngop RAM ngoààiinn ThiThiếết lt lậập cp cổổng vng vàào rao rann ThiThiếết lt lậập ngp ngắắttnn ThiThiếết lt lậập bp bộộ đ đếếmm//đđịịnh thnh thờờiinn ThiThiếết lt lậập UART/USARTp UART/USARTnn ThiThiếết lt lậập bp bộộ so sso sáánh tương tnh tương tựựnn ThiThiếết lt lậập ADCp ADCnn ThiThiếết lt lậập SPIp SPInn ThiThiếết lt lậập USIp USInn ThiThiếết lt lậập Ip I22CCnn ThiThiếết lt lậập LCDp LCDnn . . .. . .

Page 53: Ứng dụng Vi điều khiển

1

ChươngChương 6: Input/Output6: Input/Output

nn TTổổngng quanquannn MMộộtt ssốố vvíí ddụụ vvàào/rao/rann LLậậpp trtrììnhnh điđiềềuu khikhiểểnn thithiếếtt bbịịnn ThiThiếếtt bbịị vvààoo rara chuchuẩẩnn

TTổổngng quanquan

nn VVààoo rara ssốốVVààoo nnốốii titiếếppVVààoo rara song song songsong

nn VVààoo rara tươngtương ttựựADCADCDACDAC

Page 54: Ứng dụng Vi điều khiển

2

VVààoo rara ccủủaa 80518051

VVààoo rara ccủủaa AVRAVR

Page 55: Ứng dụng Vi điều khiển

3

BBàànn phphíímm 4x4 4x4

S932

K3

S921

K5

S934

S922 S924

S902

S913

S933

S901K2

S911

S903

S914

K6

K7

S904K0

K4

S912

S931

K1

S923

BBàànn phphíímm 4x44x4

nn ĐĐọọcc bbàànn phphíímmnn ChChốốngng rungrung

Page 56: Ứng dụng Vi điều khiển

4

Key BoardKey Board

Key BoardKey Board

nn AT keyboard AT keyboard gogoààmm momoäätt ma ma tratraäänn lôlôùùnn cacaùùcc phphíímm, , tataáátt cacaûûñöñöôôïïcc giagiaùùmm sasaùùtt bôbôûûii momoäätt boboää xxöûöû lylyùù onon--board. board. BoBoää xxöûöû lylyùùkhakhaùùcc biebieäätt nhaunhau ttöøöø babaøønn phphíímm nanaøøyy ññeeáánn babaøønn phphíímmkhakhaùùcc( chip ( chip thoângthoâng duduïïngng gogoààmm 8048, 8049, 6868 8048, 8049, 6868 vavaøø6805) 6805) nhnhööngng tataáátt chuchuùùngng côcô babaûûnn lalaøømm giogioáángng momoäätt vievieääcc : : GiaGiaùùmm sasaùùtt nhnhööõngõng phphíímm ñöñöôôïïcc nhanhaáánn / / thathaûû vavaøø gôgôûûii ddööõõlielieääuu ttööôngông xxöùöùngng tôtôùùii mamaùùyy chuchuûû. . BoBoää xxöûöû lylyùù nanaøøyy chaêmchaêmsosoùùcc tataáátt cacaûû ddööõõ lielieääuu rara vavaøø ññeeäämm babaáátt ccöùöù ddööõõ lielieääuu nanaøøoo vavaøøooboboää ññeeäämm 1616--byte byte cucuûûaa nonoùù neneááuu cacaàànn. . TaTaáátt cacaûû vievieääcc giaogiaotietieáápp gigiööõaõa mamaùùyy chuchuûû vavaøø babaøønn phphíímm duduøøngng PS/2 protocol. PS/2 protocol.