1. Trang chủ
  2. » Tất cả

26 GT MD 26 KT vi dieu khien

116 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 116
Dung lượng 3,64 MB

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

Nội dung

( BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN TRƯỜNG CAO ĐẲNG CƠ GIỚI NINH BÌNH * * * GIÁO TRÌNH M Ô ĐUN KỸ THUẬT VI ĐIỀU KHIỂN NGHỀ ĐIỆN DÂN DỤNG Trình đ ộ CAO ĐẲNG NGHỀ (Ban hành kèm theo Quyết định số /[.]

Trang 1

TUYÊN BỐ BẢN QUYỀN Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể được

0

BỘ NÔNG NGHIỆP VÀ PHÁT TRIỂN NÔNG THÔN

TRƯỜNG CAO ĐẲNG CƠ GIỚI NINH BÌNH

* * *

-GIÁO TRÌNH

MÔ ĐUN: KỸ THUẬT VI ĐIỀU KHIỂN

NGHỀ ĐIỆN DÂN DỤNG Trình độ: CAO ĐẲNG NGHỀ

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

của Hiệu trưởng trường Cao đẳng Cơ giới Ninh Bình)

Trang 3

LỜI GIỚI THIỆU

Giáo trình Kỹ thuật vi điều khiển được biên soạn trên cơ sở chương trình giảngdạy theo chương trình khung của trường Cao Đẳng Cơ Giới Ninh Bình

Khi biên soạn, nhóm biên soạn đã cố gắng cập nhật những kiến thức mới cóliên quan đến nội dung chương trình đào tạo và phù hợp với mục tiêu đào tạo, nộidung lý thuyết và thực hành được biên soạn gắn với nhu cầu thực tế trong sản xuấtđồng thời có tính thực tiễn cao

Nội dung giáo trình được biên soạn với dung lượng thời gian đào tạo 60 giờgồm có:

Bài 1: Tổng quan về vi xử lý - vi điều khiển

Bài 2: Họ vi điều khiển 8051

Bài 3: Ngôn ngữ lập trình

Bài 4: Hoạt động ngắt và hoạt động định thời

Bài 5: Lập trinh ứng dụng vi điều khiển 8051

Trong quá trình sử dụng giáo trình, tuỳ theo yêu cầu cũng như khoa học vàcông nghệ phát triển có thể điều chỉnh thời gian và bổ sung những kiên thức mới chophù hợp Trong giáo trình, chúng tôi có đề ra nội dung thực tập của từng bài để ngườihọc cũng cố và áp dụng kiến thức phù hợp với kỹ năng Tuy nhiên, tuy theo điều kiện

cơ sở vật chất và trang thiết bị, các trường có thề sử dụng cho phù hợp

Mặc dù đã cố gắng tổ chức biên soạn để đáp ứng được mục tiêu đào tạo nhưngkhông tránh được những khiếm khuyết Rất mong nhận được đóng góp ý kiến củangười sử dụng, người đọc để nhóm biên soạn sẽ hiện chỉnh hoàn thiện hơn sau thờigian sử dụng

Ninh Bình, ngày tháng năm

Nhóm tác giả Tống Thanh Bình

Trang 4

Mục Lục

TUYÊN BỐ BẢN QUYỀN 1

LỜI GIỚI THIỆU 2

Mục Lục 3

BÀI 1: TỔNG QUAN VỀ VI XỬ LÝ – VI ĐIỀU KHIỂN 7

1.1.Giới thiệu chung về Vi xử lý – Vi điều khiển 8

1.1.1 Một số khái niệm 8

1.1.2 Lịch sử phát triển của các bộ Vi xử lý – Vi điều khiển 10

1.1.3 Ứng dụng của Vi xử lý – vi điều khiển 12

1.2.Cấu trúc chung của hệ vi xử lý – vi điều khiển 13

1.2.1 Khối xử lý trung tâm (CPU) 14

1.2.3 Cổng vào/ra song song 18

1.2.4 Cổng vào/ra nối tiếp 19

1.2.5 Bộ đếm/Bộ định thời 19

1.2.6 Hệ thống bus 20

1.3.Định dạng dữ liệu và biểu diễn thông tin trong hệ vi xử lý – vi điều khiển 20

1.4 Các hệ đếm 20

BÀI 2: HỌ VI ĐIỀU KHIỂN 8051 25

2.1 Giới thiệu chung 26

2.1.1 Những thành cơ bản của vi điều khiển 27

2.1.2 Hoạt động của vi điều khiển 27

2.2 Kiến trúc vi điều khiển 8051 33

2.2.1 Chuẩn 8051 33

2.2.2 Data sheet vi điều khiển 8051 35

2.2.4 Bộ đếm và bộ định thời 45

2.2.5 Truyền thông không đồng bộ (UART) 46

2.2.6 Ngắt vi điều khiển 8051 46

BÀI 3: NGÔN NGỮ LẬP TRÌNH 47

3.1 Biến (variables) 48

3.2 Hằng (Constant) 48

3.3 Mảng (Array) 48

3.4 Các toán tử 48

3.5 Các kiểu dữ liệu 50

Trang 5

3.6 Cấu trúc của một chương trình 51

3.7 Một số lệnh cơ bản 52

3.8 Hướng dẫn sử dụng phần mềm KeilC 57

BÀI 4: HOẠT ĐỘNG NGẮT VÀ HOẠT ĐỘNG ĐỊNH THỜI 65

4.1 Các bộ định thời (Timer) 66

4.1.1 Timer là gì? 66

4.1.2 Các thanh ghi timer trong 8051 66

4.1.3 Các chế độ hoạt động của timer 69

4.1.4 Cách tính giá trị để nạp vào TH và TL 72

4.1.5 Lập trình cho timer 72

4.2 Các Ngắt (INTERRUPT) 74

4.2.1 Ngắt là gì? 74

4.2.2 Các ngắt của 8051 75

4.2.3 Các thanh ghi của “ NGẮT” 75

BÀI 5: LẬP TRÌNH ỨNG DỤNG VI ĐIỀU KHIỂN 8051 81

5.1 Giao tiếp các cổng vào/ra (I/O) với LED 82

5.2 Giao tiếp vào/ra (I/O) với LED 7 thanh 86

5.3 Giao tiếp vào/ra với LED Matrix 94

5.4 Giao tiếp vào/ra (I/O) với keypad 100

5.5 Giao tiếp vào/ra (I/O) với LCD 108

TÀI LIỆU THAM KHẢO 115

Trang 6

CHƯƠNG TRÌNH MÔ ĐUN

Tên mô đun : Kỹ thuật vi điều khiển

Mã mô đun: MĐ 26

Thời gian thực hiện mô đun: 60 giờ; (Lý thuyết: 17 giờ; Thực hành, thí nghiệm,

thảo luận, bài tập: 40 giờ; Kiểm tra: 03 giờ.)

I Vị trí tính chất của mô đun:

- Vị trí: Mô đun được bố trí dạy sau khi học xong môn học mô đun: Kỹ thuậtxung số; Kỹ thuật điện tử; PLC cơ bản

- Tính chất: Là mô đun chuyên môn nghề

II Mục tiêu mô đun:

Sau khi học xong mô đun, người học có khả năng:

- Về kiến thức:

+ Hiểu được các kiến thức cơ bản về Họ vi điều khiển 8051

+ Giải thích được nguyên lý hoạt động của hệ dùng vi điều khiển

- Về kỹ năng:

+ Kiểm tra và viết được các chương trình ứng dụng dùng vi điều khiển

+ Vận hành được các thiết bị và dây chuyền sản xuất dùng vi điều khiển

- Về năng lực tự chủ và trách nhiệm: Phát huy tính tích cực, chủ động, sáng tạo

và tư duy khoa học trong công việc

Trang 7

III Nội dung mô đun:

1 Nội dung tổng quát và phân bổ thời gian:

Lý thuyết

Thực hành, thí nghiệm, thảo luận, Bài tập

Kiểm tra*

1 Bài 1: Tổng quan về Vi xử lý – Viđiều khiển 2 2

1 Giới thiệu chung về Vi xử lý – Vi

2 Cấu trúc chung của hệ vi xử lý –

3 Định dạng dữ liệu và biểu diễn

thông tin trong hệ Vi xử lý – Vi điều

khiển

0,5

2 Bài 2: Họ vi điều khiển 8051 2 2

2 Kiến trúc vi điều khiển 8051 1

Trang 8

Lý thuyết

Thực hành, thí nghiệm, thảo luận, Bài tập

Kiểm tra*

3 Giao tiếp vào/ra với LED Matrix 2 6

4 Giao tiếp vào/ra (I/O) với Keypad 1 7

5 Giao tiếp vào/ra (I/O) với LCD 1 9

BÀI 1: TỔNG QUAN VỀ VI XỬ LÝ – VI ĐIỀU KHIỂN

1 Mục tiêu của bài:

- Hiểu lịch sử phát triển của vi điều khiển;

Trang 9

- Hiểu được cấu trúc chung của vi điều khiển;

- Biết được các lĩnh vực ứng dụng và hướng phát triển trong tương lai của vi điều khiển

2 Nội dung bài:

2.1.Giới thiệu chung về Vi xử lý – Vi điều khiển

2.1.1 Một số khái niệm

2.1.2 Lịch sử phát triển của các bộ Vi xử lý – Vi điều khiển

2.1.3 Ứng dụng của Vi xử lý – vi điều khiển

2.2 Cấu trúc chung của hệ vi xử lý – vi điều khiển

2.2.1 Khối xử lý trung tâm (CPU)

2.2.2 Bộ nhớ

2.2.3 Cổng vào/ra song song

2.2.4 Cổng vào/ra nối tiếp

2.2.5 Bộ đếm/Bộ định thời

2.2.6 Hệ thống bus

2.3 Định dạng dữ liệu và biểu diễn thông tin trong hệ Vi xử lý – Vi điều khiển2.3.1 Các hệ đếm

2.3.2 Mã ký tự - Alphanumeric CODE (ASCII, EBCDIC)

2.3.3 Các phép toán số học trên hệ đếm nhị phân

1.1.Giới thiệu chung về Vi xử lý – Vi điều khiển

1.1.1 Một số khái niệm

Trang 10

Khái niệm “vi xử lý” (microprocessor) và “vi điều khiển”(microcontroller) Về cơ bản hai khái niệm này không khác nhau nhiều, “vi

xử lý” là thuật ngữ chung dùng để đề cập đến kỹ thuật ứng dụng các côngnghệ vi điện tử, công nghệ tích hợp và khả năng xử lý theo chương trìnhvào các lĩnh vực khác nhau Vào những giai đoạn đầu trong quá trình pháttriển của công nghệ vi xử lý, các chip (hay các vi xử lý) được chế tạo chỉtích hợp những phần cứng thiết yếu như CPU cùng các mạch giao tiếp giữaCPU và các phần cứng khác Trong giai đoạn này, các phần cứng (kể cả bộnhớ) thường không được tích hợp trên chip mà phải ghép nối thêm bênngoài Các phần cứng này được gọi là các ngoại vi (Peripherals)

Về sau, nhờ sự phát triển vượt bậc của công nghệ tích hợp, các ngoại

vi cũng được tích hợp vào bên trong IC và người ta gọi các vi xử lý đãđược tích hợp thêm các ngoại vi là các “vi điều khiển” Vi xử lý có các khốichức năng cần thiết để lấy dữ liệu, xử lý dữ liệu và xuất dữ liệu ra ngoàisau khi đã xử lý Và chức năng chính của Vi xử lý chính là xử lý dữ liệu,chẳng hạn như cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý không có khảnăng giao tiếp trực tiếp với các thiết bị ngoại vi, nó chỉ có khả năng nhận

và xử lý dữ liệu Để vi xử lý hoạt động cần có chương trình kèm theo, cácchương trình này điều khiển các mạch logic và từ đó vi xử lý xử lý các dữliệu cần thiết theo yêu cầu

Chương trình là tập hợp các lệnh để xử lý dữ liệu thực hiện từng lệnhđược lưu trữ trong bộ nhớ, công việc thực hành lệnh bao gồm: nhận lệnh từ

bộ nhớ, giải mã lệnh và thực hiện lệnh sau khi đã giải mã Để thực hiện cáccông việc với các thiết bị cuối cùng, chẳng hạn điều khiển động cơ, hiểnthị kí tự trên màn hình

đòi hỏi phải kết hợp vi xử lý với các mạch điện giao tiếp với bên ngoàiđược gọi là các thiết bị I/O (nhập/xuất) hay còn gọi là các thiết bị ngoại vi.Bản thân các vi xử lý khi đứng một mình không có nhiều hiệu quả sửdụng, nhưng khi là một phần của một bộ vi điều khiển, thì hiệu quả ứngdụng của Vi xử lý là rất lớn Vi xử lý kết hợp với các thiết bị khác được

sử trong các hệ thống lớn, phức tạp đòi hỏi phải xử lý một lượng lớn cácphép tính phức tạp, có tốc độ nhanh Chẳng hạn như các hệ thống sản xuất

tự động trong công nghiệp, các tổng đài điện thoại, hoặc ở các robot có khảnăng hoạt động phức tạp v.v Bộ Vi xử lý có khả năng vượt bậc so vớicác hệ thống khác về khả năng tính toán, xử lý, và thay đổi chương trìnhlinh hoạt theo mục đích người dùng, đặc biệt hiệu quả đối với các bài toán

và hệ thống lớn Tuy nhiên đối với các ứng dụng nhỏ, tầm tính toánkhông đòi hỏi khả năng tính toán lớn thì việc ứng dụng vi xử lý cần cânnhắc Bởi vì hệ thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏicác khối mạch điện giao tiếp phức tạp như nhau Các khối này bao gồm bộnhớ để chứa dữ liệu và chương trình thực hiện, các mạch điện giao tiếp

Trang 11

ngoại vi để xuất nhập và điều khiển trở lại, các khối này cùng liên kết với

vi xử lý thì mới thực hiện được công việc Để kết nối các khối này đòi hỏingười thiết kế phải hiểu biết tinh tường về các thành phần vi xử lý, bộ nhớ,các thiết bị ngoại vi Hệ thống được tạo ra khá phức tạp, chiếm nhiềukhông gian, mạch in phức tạp và vấn đề chính là trình độ người thiết kế.Kết quả là giá thành sản phẩm cuối cùng rất cao, không phù hợp để ápdụng cho các hệ thống nhỏ Vì một số nhược điểm trên nên các nhà chế tạotích hợp một ít bộ nhớ và một số mạch giao tiếp ngoại vi cùng với vi xử lývào một IC duy nhất được gọi là Microcontroller-Vi điều khiển, vi điềukhiển có khả năng tương tự như khả năng của vi xử lý, nhưng cấu trúcphần cứng đơn giản hơn nhiều Vi điều khiển ra đời mang lại sự tiện lợi đốivới người dùng, họ không cần nắm vững một khối lượng kiến thức quá lớnnhư khi làm việc với vi xử lý, việc thiết kế mạch điện cũng trở nên đơngiản hơn nhiều và có khả năng giao tiếp trực tiếp với các thiết bị bênngoài Vi điều khiển tuy được xây dựng với phần cứng đơn giản hơn,nhưng thay vào ưu điểm này là khả năng xử lý bị giới hạn (tốc độ xử lýchậm hơn và khả năng tính toán ít hơn, dung lượng chương trình bị giớihạn) Vì vậy, vi điều khiển có giá thành rẻ hơn nhiều so với vi xử lý, việc

sử dụng đơn giản, nên nó được ứng dụng vào nhiều, không đòi hỏi tínhtoán phức tạp Vi điều khiển được ứng dụng trong các dây chuyền tự độngloại nhỏ, các robot có chức năng đơn giản, trong máy giặt, ôtô v.v Năm

1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, một chiptương tự như các bộ vi xử lý và là chip đầu tiên trong họ MCS-48 Độ phứctạp, kích thước và khả năng của Vi điều khiển tăng thêm một bậc quantrọng vào năm 1980 khi intel tung ra chip 8051, bộ Vi điều khiển đầu tiêncủa họ MCS-51 và là chuẩn công nghệ cho nhiều họ Vi điều khiển đượcsản xuất sau này Sau đó rất nhiều họ Vi điều khiển của nhiều nhà chế tạokhác nhau lần lượt được đưa ra thị trường với tính năng được cải tiến ngàycàng mạnh Trong tài liệu này, ranh giới giữa hai khái niệm “vi xử lý” và

“vi điều khiển” thực sự không cần phải phân biệt rõ ràng Ta dùng thuậtngữ “vi xử lý” khi đề cập đến các khái niệm cơ bản của kỹ thuật vi xử lýnói chung và sẽ dùng thuật ngữ “vi điều khiển” khi đi sâu nghiên cứu một

họ chip cụ thể

1.1.2 Lịch sử phát triển của các bộ Vi xử lý – Vi điều khiển

Trang 12

Hình 1.1 Lịch sử phát triển của Vi xử lý – Vi điều khiển

- Thế hệ 1 (1971 - 1973): vi xử lý 4 bit, đại diện là 4004, 4040, 8080 (Intel)

hay IPM-16 (National Semiconductor)

+ Độ dài word thường là 4 bit (có thể lớn hơn)

+ Tốc độ 10 - 60 μs / lệnh với tần số xung nhịp 0.1 - 0.8 MHz + Tập lệnh s / lệnh với tần số xung nhịp 0.1 - 0.8 MHz + Tập lệnh đơn giản và phải cần nhiều vi mạch phụ trợ

- Thế hệ 2 (1974 - 1977): vi xử lý 8 bit, đại diện là 8080, 8085 (Intel) hay Z80

+ Tập lệnh phong phú hơn

+ Địa chỉ có thể đến 64 KB Một số bộ vi xử lý có thể phân biệt 256 địa

chỉ cho thiết bị ngoại vi

+ Sử dụng công nghệ NMOS hay CMOS

+ Tốc độ 1 - 8 μs / lệnh với tần số xung nhịp 0.1 - 0.8 MHz + Tập lệnh s / lệnh với tần số xung nhịp 1 - 5 MHz

- Thế hệ 3 (1978 - 1982): vi xử lý 16 bit, đại diện là 68000/68010

(Motorola) hay 8086/ 80286/ 80386 (Intel)

+ Tập lệnh đa dạng với các lệnh nhân, chia và xử lý chuỗi

+ Địa chỉ bộ nhớ có thể từ 1 - 16 MB và có thể phân biệt tới 64KB địa chỉ cho ngoại vi

+ Sử dụng công nghệ HMOS

+ Tốc độ 0.1 - 1 μs / lệnh với tần số xung nhịp 0.1 - 0.8 MHz + Tập lệnh s / lệnh với tần số xung nhịp 5 - 10 MHz

- Thế hệ 4: vi xử lý 32 bit 68020/68030/68040/68060 (Motorola) hay

80386/80486 (Intel) và vi xử lý 32 bit Pentium (Intel)

+ Bus địa chỉ 32 bit, phân biệt 4 GB bộ nhớ + Có thể dùng thêm các bộ đồng

xử lý (coprocessor) + Có khả năng làm việc với bộ nhớ ảo

+ Có các cơ chế pipeline, bộ nhớ cache

Trang 13

+ Sử dụng công nghệ HCMOS.

- Thế hệ 5: vi xử lý 64

1.1.3 Ứng dụng của Vi xử lý – vi điều khiển

Vi xử lý, chính là chip của các loại máy tính ngày nay Ở đây, ta chỉnói đên ứng dụng của vi điều khiển Vi điều khiển có thể dùng trong thiết

kế các loại hệ thống nhúng Hệ thống nhúng có trong hầu hết các thiết bị tựđộng, thông minh ngày nay Chúng ta có thể dùng vi điều khiển để thiết kế

bộ điều khiển cho các sản phẩm như:

- Điều khiển các thiết bị từ xa (qua điều khiển, qua tiếng vỗ tay, )

- Điều tiết hơi ẩm, điều tiết nhiệt độ, điều tiết không khí, gió

- Hệ thống vệ sinh thông minh,

Trong quảng cáo:

- Các loại biển quảng cáo nháy chữ

- Quảng cáo ma trận LED (một màu, 3 màu, đa màu)

- Điều khiển máy cuốn bạt quảng cáo,

- Máy chơi game

- Đầu thu kỹ thuật số, đầu thu set-top-box,

Trong các thiết bị y tế:

- Máy móc thiết bị hỗ trợ: máy đo nhịp tim, máy đo đường huyết, máy đohuyết áp, điện tim đồ, điện não đồ,…

- Máy cắt/mài kính

Trang 14

- Máy chụp chiếu (city, X-quang, )

Các sản phẩm công nghiệp:

- Điều khiển động cơ

- Điều khiển số (PID, mờ, )

- Đo lường (đo điện áp, đo dòng điện, áp suất, nhiệt độ, )

- Cân băng tải, cân toa xe, cân ô tô,

- Máy cán thép: điều khiển động cơ máy cán, điều khiển máy quấn thép,

- Làm bộ điều khiển trung tâm cho RoBot

- Ổn định tốc độ động cơ

- Đếm sản phẩm của 1 nhà máy, xí nghiệp,…

- Máy vận hành tự động (dạng CNC)

1.2.Cấu trúc chung của hệ vi xử lý – vi điều khiển

Sơ đồ khối một máy tính cổ điển

Hình 1.2 Sơ đồ khối một máy tính cổ điển

- ALU (đơn vị logic số học): thực hiện các bài toán cho máy tính bao gồm:cộng (+), trừ (-), nhân (*), chia (/), phép toán logic, …

- Control (điều khiển): điều khiển, kiểm soát các đường dữ liệu giữa các thành phần của máy tính

- Memory (bộ nhớ): lưu trữ chương trình hay các kết quả trung gian

- Input (nhập), Output (Xuất): xuất nhập dữ liệu (còn gọi là thiết bị ngoại vi)

Về cơ bản kiến trúc của một vi điều khiển gồm những phần cứng sau:

- Đơn vị xử lý trung tâm CPU (Central Processing Unit)

Trang 15

Ngoài ra với mỗi loại vi điều khiển cụ thể còn có thể có thêm một số phần cứng khác như bộ biến đổi tương tự - số ADC, bộ biến đổi số - tương

tự DAC, các mạch điều chế dạng sóng WG, điều chế độ rộng xung PWM…

Bộ não của mỗi vi điều khiển chính là CPU, các phần cứng khác chỉ là các cơ quan chấp hành dưới quyền của CPU Mỗi cơ quan này đều có một

cơ chế hoạt động nhất định mà CPU phải tuân theo khi giao tiếp với chúng

Hình 1.3 Sơ đồ khối hệ vi điều khiển

Để có thể giao tiếp và điều khiển các cơ quan chấp hành (các ngoại vi), CPU sử dụng 03 loại tín hiệu cơ bản là tín hiệu địa chỉ (Address), tín hiệu dữ liệu (Data) và tín hiệu điều khiển (Control) Về mặt vật lý thì các tín hiệu này là các đường dây dẫn điện nối từ CPU đến các ngoại vi hoặc thậm chí là giữa các ngoại vi với nhau Tập hợp các đường tín hiệu có cùng chức năng gọi là các bus Như vậy ta có các bus địa chỉ, bus dữ liệu và bus điều khiển

1.2.1 Khối xử lý trung tâm (CPU)

CPU có cấu tạo gồm có đơn vị xử lý số học và lôgic (ALU), các thanhghi, các khối lôgic và các mạch giao tiếp Chức năng của CPU là tiến hànhcác thao tác tính toán xử lý, đưa ra các tín hiệu địa chỉ, dữ liệu và điều khiểnnhằm thực hiện một nhiệm vụ nào đó do người lập trình đưa ra thông quacác lệnh (Instructions)

Trang 16

Hình 1.4 Khối xử lý trung tâm

1.2.2 Bộ nhớ

Nhìn chung có hai loại bộ nhớ là bộ nhớ chương trình và bộ nhớ dữliệu Bộ nhớ chương trình dùng để chứa mã chương trình hướng dẫn CPUthực hiện một nhiệm vụ nào đó Thông thường thì bộ nhớ chương trình làcác loại bộ nhớ “không bay hơi” (non-volatile), nghĩa là không bị mất nộidung chứa bên trong khi ngừng cung cấp nguồn nuôi Có thể kể ra một số bộnhớ thuộc loại này như: ROM, PROM, EPROM, EEPROM, Flash Bộ nhớ dữliệu là bộ nhớ dùng để chứa dữ liệu (bao gồm các tham số, các biến tạmthời…) Tùy thuộc loại dữ liệu mà bộ nhớ loại này có thể là loại “không bayhơi” hoặc “bay hơi” (mất dữ liệu khi cắt nguồn nuôi) Loại “bay hơi” thườngthấylà các bộ nhớ SRAM

Trang 17

Bộ nhớ chương trình (Program memory): Là bộ nhớ Flash lập trình

được, trong các chip vi điều khiển cũ (như AT90S1200 hay AT()2313…) bộnhớ chương trình chỉ gồm 1 phần là Application Flash Section nhưng trongcác chip mới chúng ta có thêm phần Boot Flash setion Trong tài liệu nàychúng ta hiểu bộ nhớ chương trình là Application section Thực chất,application section bao gồm 2 phần: phần chứa các instruction (mã lệnh chohoạt động của chip) và phần chứa các vector ngắt (interrupt vectors) Cácvector ngắt nằm ở phần đầu của application section (từ địa chỉ 0x0000) và dàiđến bao nhiêu tùy thuộc vào loại chip Phần chứa instruction nằm liền sau đó,chương trình viết cho chip phải được load vào phần này

Hình 1.5 Cấu trúc của bộ nhớ

Bộ nhớ dữ liệu (data memory): Đây là phần chứa các thanh ghi quan

trọng nhất của chip, việc lập trình cho chip phần lớn là truy cập bộ nhớ này

Bộ nhớ dữ liệu trên các chip AVR có độ lớn khác nhau tùy theo mỗi chip,tuy nhiên về cơ bản phần bộ nhớ này được chia thành 5 phần:

Phần 1: là phần đầu tiên trong bộ nhớ dữ liệu, như mô tả tronh hình 2,

phần này bao gồm 32 thanh ghi có tên gọi là register file (RF), hay GeneralPurpose Rgegister

– GPR, hoặc đơn giản là các Thanh ghi Tất cả các thanh ghi này đều là cácthanh ghi 8 bits

Hầu hết các chíp đều bao gồm 32 thanh ghi Register File có địa chỉ tuyệtđối từ 0x0000 đến 0x001F Mỗi thanh ghi có thể chứa giá trị dương từ 0 đến

Trang 18

255 hoặc các giá trị có dấu từ -128 đến 127 hoặc mã ASCII của một ký tựnào đó…Các thanh ghi này được đặt tên theo thứ tự là R0 đến R31 Chúngđược chia thành 2 phần, phần 1 bao gồm các thanh ghi từ R0 đến R15 vàphần 2 là các thanh ghi R16 đến R31 Các thanh ghi này có các đặc điểm sau:

- Được truy cập trực tiếp trong các instruction

- Các toán tử, phép toán thực hiện trên các thanh ghi này chỉ cần 1 chu kỳxung clock

- Register File được kết nối trực tiếp với bộ xử lí trung tâm – CPU của chip

- Chúng là nguồn chứa các số hạng trong các phép toán và cũng là đíchchứa kết quả trả lại của phép toán

Tất cả các instruction sử dụng RF làm toán hạng đều có thể truy nhậptất cả các RF một cách trực tiếp trong 1 chu kỳ xung clock, ngoại trừ SBCI,SUBI, CPI, ANDI và LDI, các instruction này chỉ có thể truy nhập các thanhghi từ R16 đến R31

Thanh ghi R0 là thanh ghi duy nhất được sử dụng trong instructionLPM (Load Program Memory) Các thanh ghi R26, R27, R28, R29, R30 vàR31 ngoài chức năng thông thường còn được sử dụng như các con trỏ(Pointer register) trong một số instruction truy xuất gián tiếp

Tóm lại 32 RF của AVR được xem là 1 phần của CPU, vì thế chúngđược CPU sử dụng trực tiếp và nhanh chóng, để gọi các thanh ghi này,chúng ta không cần gọi địa chỉ mà chỉ cần gọi trực tiếp tên của chúng RFthường được sử dụng như các toán hạng (operand) của các phép toán tronglúc lập trình

Hình 1.6 Mô tả các chức năng phụ của các RF.

Trang 19

Phần 2: là phần nằm ngay sau register file, phần này bao gồm 64 thanh

ghi được gọi là 64 thanh ghi nhập/xuất (64 I/O register) hay còn gọi là vùngnhớ I/O (I/O Memory) Vùng nhớ I/O là cửa ngõ giao tiếp giữa CPU và thiết

bị ngoại vi Tất cả các thanh ghi điều khiển, trạng thái…của thiết bị ngoại viđều nằm ở đây Xem lại ví dụ trong bài 1, trong đó tôi có đề cập về việc điềukhiển các PORT của chíp Vi điều khiển Xa hơn, nếu muốn truy xuất các thiết

bị ngoại vi khác như Timer, chuyển đổi Analog/Digital, giao tiếp USART…đều thực hiện thông qua việc điều khiển các thanh ghi trong vùng nhớnày.Vùng nhớ I/O có thể được truy cập như SRAM hay như các thanh ghi I/

O Nếu sử dụng instruction truy xuất SRAM để truy xuất vùng nhớ này thìđịa chỉ của chúng được tính từ 0x0020 đến 0x005F Nhưng nếu truy xuất nhưcác thanh ghi I/O thì địa chỉ của chúng đựơc tính từ 0x0000 đến 0x003F

Để thống nhất cách sử dụng thuật ngữ, ta dùng khái niệm “địa chỉ I/O”cho các thanh ghi trong vùng nhớ I/O để nói đến địa chỉ không tính phầnRegister File, khái niệm “địa chỉ bộ nhớ” của thanh ghi là chỉ địa chỉ tuyệt đốicủa chúng trong SRAM

Phần 3: RAM tĩnh, nội (internal SRAM), là vùng không gian cho chứa

các biến (tạm thời hoặc toàn cục) trong lúc thực thi chương trình

Phần 4: RAM ngoại (external SRAM), các chip vi xử lý đều cho phép

người sử dụng gắn thêm các bộ nhớ ngoài để chứa biến, vùng này thực chấtchỉ tồn tại khi nào người sử dụng gắn thêm bộ nhớ ngoài vào chip

Phần 5: EEPROM (Electrically Ereasable Programmable ROM) là một

phần quan trọng của

các chip mới, vì là ROM nên bộ nhớ này không bị xóa ngay cả khi khôngcung cấp nguồn nuôi cho chip, rất thích hợp cho các ứng dụng lưu trữ dữ liệu.EEPROM được tách riêng và có địa chỉ tính từ 0x0000

1.2.3 Cổng vào/ra song song

Đây là các đường tín hiệu được nối với một số chân của IC dùng để giaotiếp với thế giới bên ngoài IC Giao tiếp ở đây là đưa điện áp ra hoặc đọc vàogiá trị điện áp tại chân cổng Các giá trị điện áp đưa ra hay đọc vào chỉ cóthể được biểu diễn bởi một trong hai giá trị lôgic (0 hoặc 1) Trong kỹ thuật

vi xử lý, người ta thường dùng quy ước lôgic dương: giá trị lôgic 0 ứng vớimức điện áp thấp xấp xỉ 0VDC, giá trị lôgic 1 ứng với mức điện áp cao xấp

xỉ +5VDC Tùy loại vi xử lý mà “khoảng xấp xỉ” đó là khác nhau nhưngnhìn chung là tương thích với mức lôgic TTL Mỗi cổng vào/ra song songthường gồm 08 đường vào/ra khác nhau và gọi là các cổng 08 bit Các đườngtín hiệu vào/ra của các cổng và thuộc cùng một cổng là độc lập với nhau.Điều đó có nghĩa là ta có thể đưa ra hay đọc vào các giá trị lôgic khác nhauđối với từng chân cổng (từng đường tín hiệu vào/ra) Một điều cần chú ý nữa

Trang 20

đối với ác cổng vào/ra đó là chúng có thể được tích hợp thêm (nói đúng hơn

là kiêm thêm) các chức năng đặc biệt liên quan đến các ngoại vi khác

1.2.4 Cổng vào/ra nối tiếp

Khác với cổng song song, với cổng nối tiếp các bit dữ liệu được truyềnlần lượt trên cùng một đường tín hiệu thay vì truyền cùng một lúc trên cácđường tín hiệu khác nhau Thông thường thì việc truyền dữ liệu bằng cổngnối tiếp

phải tuân theo một cơ chế, một giao thức hay một nguyên tắc nhất định Cóthể kể ra một số giao thức như SPI, I2C, SCI…

Cổng nối tiếp có 02 kiểu truyền dữ liệu chính:

Truyền đồng bộ (synchronous): thiết bị truyền và thiết bị nhận đều dùngchung một xung nhịp (clock).Truyền dị bộ (asynchronous): thiết bị truyền vàthiết bị nhận sử dụng hai nguồn xung nhịp riêng Tuy nhiên hai nguồn xungnhịp này không được khác nhau quá nhiều.Xung nhịp là yếu tố không thểthiếu trong truyền dữ liệu nối tiếp và nó có vai trò xác định giá trị của bit dữliệu (hay nói đúng hơn là xác định thời điểm đọc mức lôgic trên đườngtruyền dữ liệu)

Cổng nối tiếp có thể có một trong các tính năng sau:

Đơn công: thiết bị chỉ có thể hoặc truyền hoặc nhận dữ liệu

Bán song công: thiết bị có thể truyền và nhận dữ liệu nhưng tại một thời

điểm chỉ có thể làm một trong hai việc đó

Song công: thiết bị có thể truyền và nhận dữ liệu đồng thời.

1.2.5 Bộ đếm/Bộ định thời

Đây là các ngoại vi được thiết kế để thực hiện một nhiệm vụ đơn giản:đếm các xung nhịp Mỗi khi có thêm một xung nhịp tại đầu vào đếm thì giá trịcủa bộ đếm sẽ được tăng lên 01 đơn vị (trong chế độ đếm tiến/đếm lên) haygiảm đi 01 đơn vị (trong chế độ đếm lùi/đếm xuống)

Xung nhịp đưa vào đếm có thể là một trong hai loại:

Xung nhịp bên trong IC Đó là xung nhịp được tạo ra nhờ kết hợp mạch

daođộng bên trong IC và các linh kiện phụ bên ngoài nối với IC Ta có thể ví

đó là “nhịp tim” để toàn bộ các phần cứng bên trong vi xử lý (bao gồm cảCPU và các ngoại vi) có thể hoạt động được Trong trường hợp sử dụng xungnhịp loại này, người ta gọi là các bộ định thời (timers) Do xung nhịp bên loạinày thường đều đặn nên ta có thể dùng để đếm thời gian một cách khá chínhxác

Xung nhịp bên ngoài IC Đó là các tín hiệu lôgic thay đổi liên tục giữa 02

mức0-1và không nhất thiết phải là đều đặn Trong trường hợp này người tagọi là các bộ đếm (counters) Ứng dụng phổ biến của các bộ đếm là đếm các

Trang 21

sự kiện bên ngoài như đếm các sản phầm chạy trên băng chuyền, đếm xe ra/vào kho bãi… Một khái niệm quan trọng cần phải nói đến là sự kiện “tràn”(overflow) Nó được hiểu là sự kiện bộ đếm đếm vượt quá giá trị tối đa mà nó

có thể biểu diễn và quaytrở về giá trị 0 Với bộ đếm 8 bit, giá trị tối đa là 255

và là 65535 với bộ đếm 16bit

1.2.6 Hệ thống bus

Bus địa chỉ - Address bus

Là các đường tín hiệu song song 1 chiều nối từ CPU đến bộ nhớ Độ rộngbus: là số các đường tín hiệu, có thể là 8, 18, 20, 24, 32 hay 64 CPU gửi giátrị địa chỉ của ô nhớ cần truy nhập (đọc/ghi) trên các đường tín hiệu này 1CPU với n đường địa chỉ sẽ có thể địa chỉ hoá được 2n ô nhớ Ví dụ, 1 CPU

có 16 đường địa chỉ có thể địa chỉ hoá được 216 hay 65,536 (64K) ô nhớ

Bus dữ liệu - Data bus

Độ rộng Bus: 4, 8, 16, 32 hay 64 bits Là các đường tín hiệu song song 2chiều, nhiều thiết bị khác nhau có thể được nối với bus dữ liệu; nhưng tạimột thời điểm, chỉ có 1 thiết bị duy nhất có thể được phép đưa dữ liệu lênbus dữ liệu Bất kỳ thiết bị nào đợc kết nối đến bus dữ liệu phải có đầu ra ởdạng 3 trạng thái, sao cho nó có thể ở trạng thái treo (trở kháng cao) nếukhông được sử dụng

Bus điều khiển - Control bus

Bao gồm 4 đến 10 đường tín hiệu song song CPU gửi tín hiệu ra bus điềukhiển để cho phép các đầu ra của ô nhớ hay các cổng I/O đã được địa chỉhoá Các tín hiệu điều khiển thường là: đọc/ ghi bộ nhớ - memory read,memory write, đọc/ ghi cổng

vào/ra - I/O read, I/O write Ví dụ, để đọc 1 byte dữ liệu từ ô nhớ sẽ cần đếncác hoạt động sau:

CPU đưa ra địa chỉ của ô nhớ cần đọc lên bus địa chỉ

CPU đưa ra tín hiệu đọc bộ nhớ - Memory Read trên bus điều khiển

Tín hiệu điều khiển này sẽ cho phép thiết bị nhớ đã được địa chỉ hoáđưa byte dữ liệu lên bus dữ liệu Byte dữ liệu từ ô nhớ sẽ được truyềntải qua bus dữ liệu đến CPU

1.3.Định dạng dữ liệu và biểu diễn thông tin trong hệ vi xử lý – vi điều khiển

1.4 Các hệ đếm

- Hệ thập phân - Decimal

- Hệ nhị phân - Binary

- Hệ16 - Hexadecimal

Trang 22

- Mã BCD (standard BCD, gray code): (Binary Coded Decimal)

Trong thực tế, đối với một số ứng dụng như đếm tần, đo điện áp, … ngõ ra

ở dạng số thập phân, ta dùng mã BCD Mã BCD dùng 4 bit nhị phân để mãhoá cho một số thập phân 0 9 Như vậy, các số hex A F không tồn tại trong

- Mã hiển thị 7 đoạn (7-segment display code)

Hình 1.7 LED 7 thanh và cách mã hóa

Trang 23

Bảng 1.1 Cách chuyển đổi sang mã hiển thị 7 đoạn

- Các mã hệ đếm thông dụng

Bảng 1.2 Giá trị tương ứng giữa các hệ số

Trang 24

1.1.4 Mã ký tự - Alphanumeric CODE (ASCII, EBCDIC)

Bảng 1.3 Bảng mã ASCII

Trang 25

Bảng 1.4 Bảng mã ASCII có cả ký tự trong phần mở

rộng

1.1.5 Các phép toán số học trên hệ đếm nhị phân

Phép trừ nhị phân, chính là phép cộng nhị phân với số bù 2 của số trừ

Trang 26

BÀI 2: HỌ VI ĐIỀU KHIỂN 8051

1 Mục tiêu của bài:

- Hiểu được cấu trúc phần cứng Họ vi điều khiển 8051;

- Hiểu được cấu trúc bộ nhớ, biết được cách truy xuất bộ nhớ dữ liệu và bộ nhớchương trình;

- Hiểu được đặc tính của các thanh ghi đặc biệt;

- Biết cách mở rộng thêm bộ nhớ ngoài;

- Hiểu nguyên lý hoạt động của mạch reset

2 Nội dung bài:

2.1 Giới thiệu chung

2.1.1 Những thành cơ bản của vi điều khiển

2.1.2 Hoạt động của vi điều khiển

2.1.3 Cấu trúc chung của vi điều khiển

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

2.2.1 Chuẩn 8051

2.2.2 Data sheet vi điều khiển 8051

2.2.3 Các thanh ghi chức năng đặc biệt (SFRs - Special Function Registers)

2.2.4 Bộ đếm và bộ định thời

2.2.5 Truyền thông không đồng bộ (UART)

2.2.6 Ngắt vi điều khiển 8051

Trang 27

2.1 Giới thiệu chung

Bộ Vi xử lý có khả năng vượt bậc so với các hệ thống khác về khảnăng tính toán, xử lý, và thay đổi chương trình linh hoạt theo mục đíchngười dùng, đặc biệt hiệu quả đối với các bài toán và hệ thống lớn.Tuynhiên đối với các ứng dụng nhỏ, tầm tính toán không đòi hỏi khả năng tínhtoán lớn thì việc ứng dụng vi xử lý cần cân nhắc Bởi vì hệ thống dù lớnhay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi các khối mạch điện giao tiếpphức tạp như nhau Các khối này bao gồm bộ nhớ để chứa dữ liệu vàchương trình thực hiện, các mạch điện giao tiếp ngoại vi để xuất nhập vàđiều khiển trở lại, các khối này cùng liên kết với vi xử lý thì mới thực hiệnđược công việc Để kết nối các khối này đòi hỏi người thiết kế phải hiểubiết một cách đầy đủ về các thành phần vi xử lý, bộ nhớ, các thiết bịngoại vi Hệ thống được tạo ra khá phức tạp, chiếm nhiều không gian,mạch in phức tạp và vấn đề chính là trình độ người thiết kế Kết quả là giáthành sản phẩm cuối cùng rất cao, không phù hợp để áp dụng cho các hệthống nhỏ

Vì một số nhược điểm trên nên các nhà chế tạo tích hợp một ít bộnhớ và một số mạch giao tiếp ngoại vi cùng với vi xử lý vào một IC duynhất được gọi là Microcontroller-Vi điều khiển Vi điều khiển có khả năngtương tự như khả năng của vi xử lý, nhưng cấu trúc phần cứng dành chongười dùng đơn giản hơn nhiều Vi điều khiển ra đời mang lại sự tiện lợiđối với người dùng, họ không cần nắm vững một khối lượng kiến thức quálớn như người dùng vi xử lý, kết cấu mạch điện dành cho người dùng cũngtrở nên đơn giản hơn nhiều và có khả năng giao tiếp trực tiếp với các thiết

bị bên ngoài Vi điều khiển tuy được xây dựng với phần cứng dành chongười sử dụng đơn giản hơn, nhưng thay vào lợi điểm này là khả năng xử

lý bị giới hạn (tốc độ xử lý chậm hơn và khả năng tính toán ít hơn, dunglượng chương trình bị giới hạn) Thay vào đó, Vi điều khiển có giá thành

rẻ hơn nhiều so với vi xử lý, việc sử dụng đơn giản, do đó nó được ứngdụng rộng rãi vào nhiều ứng dụng có chức năng đơn giản, không đòi hỏitính toán phức tạp

Vi điều khiển được ứng dụng trong 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ô v.v

Năm 1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, mộtchip tương tự như các bộ vi xử lý và là chip đầu tiên trong họ MCS-48

Độ phức tạp, kích thước và khả năng của Vi điều khiển tăng thêm một bậcquan trọng vào năm 1980 khi intel tung ra chip 8051, bộ Vi điều khiển đầu

Trang 28

tiên của họ MCS-51 và là chuẩn công nghệ cho nhiều họ Vi điều khiểnđược sản xuất sau này Sau đó rất nhiều họ Vi điều

khiển của nhiều nhà chế tạo khác nhau lần lượt được đưa ra thị trường vớitính năng được cải tiến ngày càng mạnh

2.1.1 Những thành cơ bản của vi điều khiển

Về cơ bản, vi điều khiển rất đơn giản Chúng chỉ bao gồm tối thiểumột số thành phần sau:

- Một bộ vi xử lý tối giản được sử dụng như bộ não của hệ thống

- Tùy theo công nghệ của mỗi hãng sản xuất, có thể có thêm bộ nhớ, cácchân nhập/xuất tín hiệu, bộ đếm, bộ định thời, các bộ chuyển đổi tươngtự/số (A/D), v.v tất cả chúng được đặt trong một vỏ chíp tiêu chuẩn

- Một phần mềm đơn giản có thể điều khiển được toàn bộ hoạt động của

vi điều khiển và có thể dễ dàng cho người sử dụng nắm bắt

Dựa trên nguyên tắc cơ bản trên, rất nhiều họ vi điều khiển đã đượcphát triển và ứng dụng một cách mạnh mẽ vào mọi mặt của đời sống củacon người Một số ứng dụng cơ bản thành công có thể kể ra sau đây:

- Những thành phần điện tử được nhúng vào vi điều khiển có thể trực tiếphoặc qua các thiết bị vào ra (công tắc, nút bấm, cảm biến, LCD, rơ le,

…) điều khiển rất nhiều thiết bị và hệ thống như thiết bị tự động trongcông nghiệp, điều khiển nhiệt độ, dòng điện, động cơ, …

- Giá thành rất thấp khiến cho chúng được nhúng vào rất nhiều thiết bịthông minh trong đời sống con người như ti vi, máy giặt, điều hòa nhiệt

độ, máy nghe nhạc, …

2.1.2 Hoạt động của vi điều khiển.

Mặc dù đã có rất nhiều họ vi điều khiển được phát triển cũng nhưnhiều chương trình điều khiển tạo ra cho chúng, nhưng tất cả chúng vẫn cómột số điểm chung cơ bản Do đó nếu ta hiểu cặn kẽ một họ thì việc tìmhiểu thêm một họ vi điều khiển mới là hoàn toàn đơn giản Các thông sốchung cho hoạt động của một vi điều khiển như sau:

1 Khi không có nguồn điện cung cấp, vi điều khiển chỉ là một con chipcó

chương trình nạp sẵn vào trong đó và không có hoạt động gì xảy ra

2 Khi có nguồn điện, mọi hoạt động bắt đầu được xảy ra với tốc độ cao.Đơn vị điều khiển logic có nhiệm vụ điều khiển tất cả mọi hoạt động Nókhóa tất cả các mạch khác, trừ mạch giao động thạch anh Sau mini giâyđầu tiên tất cả đã sẵn sàng hoạt động

3 Điện áp nguồn nuôi đạt đến giá trị tối đa của nó và tần số giao độngtrở nên ổn định Các bit của các thanh ghi SFR cho biết trạng thái của tất

Trang 29

cả các mạch trong vi điều khiển Toàn bộ vi điều khiển hoạt động theochu kỳ của chuỗi xung chính.

4 Thanh ghi bộ đếm chương trình (Program Counter) được xóa về 0.Câu lệnh từ địa chỉ này được gửi tới bộ giải mã lệnh sau đó được thực thingay lập tức

5 Giá trị trong thanh ghi PC được tăng lên 1 và toàn bộ quá trình đượclặp lại vài triệu lần trong một giây

Hình 2.1 Cấu trúc chung họ VĐK

2.1.3 Cấu trúc chung của vi điều khiển

Như ta thấy, tất cả các hoạt động trong các vi điều khiển được thựchiện ở tốc độ cao và khá đơn giản, nhưng vi điều khiển chính nó sẽ khôngđược thật sự hữu ích nếu không có mạch đặc biệt làm cho nó hoàn thiện

Có một số mạch cụ thể sau đây

Read Only Memory (ROM)

Read Only Memory (ROM) là một loại bộ nhớ được sử dụng để lưuvĩnh viễn các chương trình được thực thi Kích cỡ của chương trình có thểđược viết phụ thuộc vào kích cỡ của bộ nhớ này ROM có thể được tíchhợp trong vi điều khiển hay thêm vào như là một chip gắn bên ngoài, tùythuộc vào loại vi điều khiển Cả hai tùy chọn có một số nhược điểm NếuROM được thêm vào như là một chip bên ngoài, các vi điều khiển là rẻhơn và các chương trình có thể tồn tại lâu hơn đáng kể Nhưng đồng thời,làm giảm số lượng các chân vào/ra để vi điều khiển sử dụng với mục đíchkhác ROM nội thường là nhỏ hơn và đắt tiền hơn, nhưng lá ghim thêm

Trang 30

có sẵn để kết nối với môi trường ngoại vi Kích thước của dãy ROM từ512B đến 64KB

Random Access Memory (RAM)

Random Access Memory (RAM) là một loại bộ nhớ sử dụng cho các dữ liệulưu trữ tạm thời và kết quả trung gian được tạo ra và được sử dụng trongquá trình

hoạt động của bộ vi điều khiển Nội dung của bộ nhớ này bị xóa một khinguồn cung cấp bị tắt

Electrically Erasable Programmable ROM (EEPROM)

EEPROM là một kiểu đặc biệt của bộ nhớ chỉ có ở một số loại viđiều khiển Nội dung của nó có thể được thay đổi trong quá trình thực hiệnchương trình (tương tự như RAM), nhưng vẫn còn lưu giữ vĩnh viễn, ngay

cả sau khi mất điện (tương tự như ROM) Nó thường được dùng để lưu trữcác giá trị được tạo ra và được sử dụng trong quá trình hoạt động (như cácgiá trị hiệu chuẩn, mã, các giá trị để đếm, v.v ), mà cần phải được lưu saukhi nguồn cung cấp ngắt Một bất lợi của bộ nhớ này là quá trình ghi vào

là tương đối chậm

Hình 2.2 Giao tiếp bộ nhớ

Các thanh ghi chức năng đặc biệt (SFR)

Thanh ghi chức năng đặc biệt (Special Function Registers) là mộtphần của bộ nhớ RAM Mục đích của chúng được định trước bởi nhà sảnxuất và không thể thay đổi được Các bit của chúng được liên kết vật lý tới

Trang 31

các mạch trong vi điều khiển như bộ chuyển đổi A/D, modul truyền thôngnối tiếp,… Mỗi sự thay đổi trạng thái của các bit sẽ tác động tới hoạt độngcủa vi điều khiển hoặc các vi mạch.

Bộ đếm chương trình (PC:Program Counter)

Bộ đếm chương trình chứa địa chỉ chỉ đến ô nhớ chứa câu lệnh tiếptheo sẽ được kích hoạt Sau mỗi khi thực hiện lệnh, giá trị của bộ đếmđược tăng lên 1 Vì lý do đó nên chương trình chỉ thực hiện được đượctừng lệnh trong một thời điểm

Central Processor Unit (CPU)

Đây là một đơn vị có nhiệm vụ điều khiển và giám sát tất cả các hoạtđộng bên trong vi điều khiển và người sử dụng không thể tác động vàohoạt động của nó Nó bao gồm một số đơn vị con nhỏ hơn, trong đó quantrọng nhất là:

Bộ giải mã lệnh có nhiệm vụ nhận dạng câu lệnh và điều khiển cácmạch khác theo lệnh đã giải mã Việc giải mã được thực hiện nhờ có tậplệnh “instruction set” Mỗi họ vi điều khiển thường có các tập lệnh khácnhau

Arithmetical Logical Unit (ALU) Thực thi tất cả các thao tác tínhtoán số học và logic

Thanh ghi tích lũy (Accumulator) là một thanh ghi SFR liên quanmật thiết với hoạt động của ALU Nó lưu trữ tất cả các dữ liệu cho quátrình tính toán và lưu giá trị kết quả để chuẩn bị cho các tính toán tiếptheo Một trong các thanh ghi SFR khác được gọi là thanh ghi trạng thái(Status Register) cho biết trạng thái của các giá trị lưu trong thanh ghitích lũy

Các cổng vào/ra (I/O Ports)

Để vi điều khiển có thể hoạt động hữu ích, nó cần có sự kết nối vớicác thiết bị ngoại vi Mỗi vi điều khiển sẽ có một hoặc một số thanh ghi(được gọi là cổng) được kết nối với các chân của vi điều khiển

Trang 32

Hình 2.3 Vào ra với thiết bị ngoại vi

Chúng được gọi là cổng vào/ra (I/O port) bởi vì chúng có thể thay đổi chức năng,chiều vào/ra theo yêu cầu của người dùng

Bộ dao động (Oscillator)

Hình 2.4 Ghép nối bộ dao động

Bộ dao động đóng vai trò nhạc trưởng làm nhiệm vụ đồng bộ hóa

hoạt động của tất cả các mạch bên trong vi điều khiển Nó thường được

tạo bởi thạch anh hoặc gốm để ổn định tần số Các lệnh không được thực

Trang 33

thi theo tốc độ của bộ dao động mà thường chậm hơn, bởi vì mỗi câulệnh được thực hiện qua nhiều bước Mỗi loại vi điều khiển cần số chu kỳkhác nhau để thực hiện lệnh.

Bộ định thời/đếm (Timers/Counters)

Hầu hết các chương trình sử dụng các bộ định thời trong hoạt độngcủa mình Chúng thường là các thanh ghi SFR 8 hoặc 16 bit, sau mỗi xungdao động clock, giá trị của chúng được tăng lên Ngay khi thanh ghi tràn,một ngắt sẽ được phát sinh

Hình 2.5 Bộ định thời/đếm

Truyền thông nối tiếp

Hình 2.6 Truyền nhận nối tiếp

Kết nối song song giữa vi điều khiển và thiết bị ngoại vi được thực hiệnqua các cổng vào/ra là giải pháp lý tưởng với khoảng cách ngắn trong vàimét Tuy nhiên khi cần truyền thông giữa các thiết bị ở khoảng cách xathì không thể dùng kết nối song song, vì vậy truyền thông nối tiếp là giảipháp tốt nhất

Trang 34

Ngày nay, hầu hết các vi điều khiển có một số bộ điều khiển truyền thôngnối tiếp như một trang bị tiêu chuẩn Chúng được sử dụng phụ thuộc vàonhiều yếu tố khác nhau như:

- Bao nhiêu thiết bị vi điều khiển muốn trao đổi dữ liệu

- Tốc độ trao đổi dữ liệu

Có rất nhiều phần mềm chạy trên môi trường Windows cho phép xây dựngcác chương trình hoàn chỉnh cho các họ vi điều khiển như Assembler,KIT, KeilC, AVR Sudio hay Codevision AVR…

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

2.2.1 Chuẩn 8051

Họ vi điều khiển MCS-51 do Intel sản xuất đầu tiên vào năm 1980

là các IC thiết kế cho các ứng dụng hướng điều khiển Các IC này chính

là một hệ thống vi điều khiển hoàn chỉnh bao gồm các các thành phầnnhư: CPU, bộ nhớ, các mạch giao tiếp, điều khiển ngắt.MCS-51 là họ viđiều khiển sử dụng cơ chế CISC (Complex Instruction Set Computer), có

độ dài và thời gian thực thi của các lệnh khác nhau Tập lệnh cung cấpcho MCS-51 có các lệnh dùng cho điều khiển

xuất/nhập tác động đến từng bit MCS-51 bao gồm nhiều vi điều khiểnkhác nhau, bộ vi điều khiển đầu tiên là 8051 có 4KB ROM, 128 byteRAM và 8031, không có ROM nội, phải sử dụng bộ nhớ ngoài Sau này,các nhà sản xuất khác như Siemens, Fujitsu, Motorola, Atmel… cũngđược cấp phép làm nhà cung cấp thứ hai MCS-51 bao gồm nhiều phiênbản khác nhau, mỗi phiên bản sau tăng thêm một số thanh ghi điềukhiển hoạt động của MCS-51

Trang 35

Hình 2.7 Kiến trúc vi điều khiển 8051

AT89C51 là vi điều khiển do Atmel sản xuất, chế tạo theo công nghệ CMOS có

các

đặc tính như sau:

- 4 KB Flash ROM (Flash Programmable and Erasable Read Only

Memory), có khả năng tới 1000 chu kỳ ghi xoá

- Tần số hoạt động từ: 0Hz đến 24 MHz

- 3 mức khóa bộ nhớ lập trình

- 128 Byte RAM nội

- 4 Port xuất /nhập I/O 8 bit

(Power Ngoài ra, một số IC khác của họ MCS(Power 51 có thêm bộ định thời thứ 3 và

256 byte RAM nội

Trang 36

2.2.2 Data sheet vi điều khiển 8051

Sơ đồ chân của AT98C51/AT89S51

Sơ đồ chân của AT98C51/AT89S51

Trang 37

Sơ đồ chân của AT98C52/AT89S52

Sơ đồ chân của AT98C52/AT89S52

Trang 38

Sơ đồ chân của AT98C52/AT89S52

Chức năng các chân của AT89C51:

Trang 39

Chân /EA: Tín hiệu vào /EA trên chân 31 thường đặt lên mức cao

( +5V) hoặc mức thấp (GND) Nếu ở mức cao, 8951 thi hành chươngtrình từ ROM nội trong khoảng địa chỉ thấp (4K hoặc tối đa 8k đối với89C52) Nếu ở mức thấp, chương trình được thi hành từ bộ nhớ mở rộng(tối đa đến 64Kbyte) Ngoài ra người ta còn dùng /EA làm chân cấp điện

áp 12V khi lập trình EEPROM trong 8051

Chân PSEN (Program store enable):

PSEN là chân tín hiệu ra trên chân 29

Nó là tín hiệu điều khiển cho phép chương trình mở rộng, PSEN thườngđược nối đến chân /OE (Output Enable) của một EPROM hoặc ROM đểcho phép đọc các bytes mã lệnh Bình thường chân /PSEN sẽ được bỏtrống (No Connect) Chỉ khi nào cho /EA ở mức thấp thì lúc đó: /PSEN sẽ

ở mức thấp trong thời gian lấy lệnh Các mã nhị phân của chương trìnhđược lấy từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh của

8951 để giải mã lệnh /PSEN ở mức thụ động (mức cao) nếu thi hànhchương trình trong ROM nội của 8951

ALE/ PROG (Address Latch Enable / Program): ALE/ PROG

(chân 30) cho phép tách các đường địa chỉ và dữ liệu tại Port 0 khitruy xuất bộ nhớ ngoài ALE thường nối với chân Clock của ICchốt (74373, 74573) Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần

số dao động trên chip và có thể được dùng làm tín hiệu clock cho cácphần khác của hệ thống Xung này có thể cấm bằng cách set bit 0của SFR tại địa chỉ 8Eh lên 1 Khi đó, ALE chỉ có tác dụng khi dùnglệnh MOVX hay MOVC Ngoài ra, chân này còn được dùng làmngõ vào xung lập trình cho ROM nội ( /PROG )

Chân XTAL1 và XTAL2: 8051 có một bộ giao động trên chíp nhưng nó

yêu cầu có một xung đồng hồ ngoài để chạy nó Bộ giao động thạch anhthường xuyên nhất được nối tới các chân đầu vào XTAL1 (chân 19) vàXTAL2 (chân 18) Bộ giao động thạch anh được nối tới XTAL1 và XTAL2cũng cần hai tụ điện giá trị 30pF Một phía của tụ điện được nối xuống đấtCần phải lưu ý rằng có nhiều tốc độ khác nhau của họ 8051 Tốc độ đượccoi như là tần số cực đại của bộ giao động được nối tới chân XTAL

Trang 40

Chân RST: Chân số 9 là chân tái lập RESET Nó là một đầu vào và có

mức tích cực cao (bình thường ở mức thấp) Khi cấp xung cao tới chân nàythì bộ vi điều khiển sẽ tái lập và kết thúc mọi hoạt động Điều này thườngđược coi như là sự tái bật nguồn Khi kích hoạt tái bật nguồn sẽ làm mấtmọi giá trị trên các thanh ghi Bảng 4.1 cung cấp một cách liệt kê các thanhghi của 8051 và các giá trị của chúng sau khi tái bật nguồn

Các chân cấp nguồn: AT89C51 hoạt động ở nguồn đơn +5V Vcc được

nối

vào chân 40, và Vss (GND) được nối vào chân 20

Cổng vào/ra (I/O): Tất cả các vi điều khiển 8051 đều có 4 cổng vào/ra 8

bit có thể thiết lập như cổng vào hoặc ra Như vậy có tất cả 32 chân I/O chophép vi điều khiển có thể kết nối với các thiết bị ngoại vi

Hình 2.9 Cổng vào/ra

Ngày đăng: 22/11/2022, 15:52

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

w