Tải bản đầy đủ (.docx) (133 trang)

Bài giảng vi điều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (9.75 MB, 133 trang )

Mục lục
Nội dung
Mục lục.............................................................................................................................. 1
CHƯƠNG 1. HỌ VI ĐIỀU KHIỂN MCS-51....................................................................4
1.1. Tổng quan...................................................................................................................4
1.2. Phân biệt vi xử lý và vi điều khiển..............................................................................4
1.3. Họ vi điều khiển MCS-51...........................................................................................9
1.3.1. Lịch sử phát triển họ MCS-51..................................................................................9
1.3.2. Khảo sát vi điều khiển 89S52.................................................................................12
1.3.2.1. Tổng quát............................................................................................................12
1.3.2.2 Sơ đồ chân............................................................................................................14
1.3.2.3 Cấu trúc của port xuất nhập..................................................................................19
1.3.2.4 Tổ chức bộ nhớ.....................................................................................................19
1.3.2.5. Các thanh ghi có chức năng đặc biệt...................................................................23
1.3.2.6. Bộ nhớ ngoài.......................................................................................................28
1.3.2.7 Hoạt động Reset...................................................................................................29
1.4. Hoạt động định thời...................................................................................................30
1.4.1 Tổng quát................................................................................................................30
1.4.2 Các thanh ghi điều khiển Timer...............................................................................31
1.4.3 Các chế độ hoạt động..............................................................................................33
1.5. Hoạt động của port nối tiếp.......................................................................................37
1.5.1 Tổng quát................................................................................................................37
1.5.2 Thanh ghi điều khiển port nối tiếp - SCON.............................................................38
1.4.3 Các chế độ hoạt động..............................................................................................39
1.6. Hoạt động ngắt..........................................................................................................46
1.6.1 Tổng quát................................................................................................................46
1.6.2 Các thanh ghi điều khiển ngắt.................................................................................47


Bài giảng Vi điều khiển và Ứng dụng
1.6.3 Các hoạt động ngắt..................................................................................................47


CHƯƠNG 2: PHẦN MỀM HỖ TRỢ CHO MÔ ĐUN....................................................53
2.1. Phần mềm mô phỏng phần cứng:..............................................................................53
2.1.1. Cài đặt:................................................................................................................... 53
2.1.2. Hướng dẫn sử dụng:...............................................................................................59
2.1.2.1. Hướng dẫn tạo dự án mới:...................................................................................60
2.1.2.2. Hướng dẫn vẽ mạch nguyên lý và mô phỏng:.....................................................64
2.2. Phần mềm lập trình C cho họ MCS-51……………………………………………..79
2.2.1. Cài đặt phần mềm mikroC for 8051………………………………………………79
2.2.2. Hướng dẫn sử dụng phần mềm mikroC for 8051……………………….………...83
2.2.3. Tập lệnh C cho họ 8051……………………………………………….…….……93
2.2.3.1. Định nghĩa ………………………………………………………….…….……..93
2.2.3.2. Biểu diễn số học………………………………………………….…….………..93
2.2.3.3. Hàm trễ…………………………………………………………….….…………93
2.2.3.4. Khai báo kiểu dữ liệu cho biến…………………………………….……………93
2.2.3.5. Các phép toán……………………………………………………..……………..94
2.2.3.6. Tập lệnh có cấu trúc………………………………………………..……………95
2.3. Phần mềm nạp code cho họ 8051……………………………………..…………….97
2.3.1. Cài đặt………………………………………………………………..……………97
2.3.2. Hướng dẫn sử dụng………………………………………………………………100
CHƯƠNG 3: LẬP TRÌNH ỨNG DỤNG.........................................................................99
3.1. Lập trình điều khiển led đơn.....................................................................................99
3.2. Lập trình điều khiển RELAY...................................................................................102
3.3. Lập trình hiển thị LCD............................................................................................105
3.4. Lập trình điều khiển led 7 đoạn...............................................................................107
3.4.1 Giới thiệu về LED 7 đoạn.....................................................................................107
3.4.2 Mã LED:...............................................................................................................107
3.4.3 Lập trình điều khiển 1 LED 7 đoạn:......................................................................108
3.4.4 Lập trình điều khiển LED 7 đoạn bằng phương pháp quét……………………….109
Đặng Thành Tựu


Trang 2


Bài giảng Vi điều khiển và Ứng dụng
3.5. Lập trình giao tiếp phím ấn......................................................................................113
3.6. Lập trình điều khiển động cơ không đồng bộ 3 pha quay 2 chiều...........................115
3.7. Lập trình điều khiển đèn giao thông hiện số............................................................118
3.8. Lập trình giao tiếp không dây qua Bluetooth..........................................................125
3.8.1. Mô hình giao tiếp.................................................................................................125
3.8.2. Giới thiệu Module HC05:.....................................................................................126
3.8.3. Giao tiếp HC-05 với vi điều khiển họ 8051:.........................................................126
3.8.4. Điều khiển thiết bị từ Windows:...........................................................................129
3.8.4.1. Kết nối Module HC-05 với máy tính:................................................................129
3.8.4.2. Tạo giao diện điều khiển……………………………………………………….131
Tài liệu tham khảo..........................................................................................................135

Đặng Thành Tựu

Trang 3


Bài giảng Vi điều khiển và Ứng dụng

CHƯƠNG 1. HỌ VI ĐIỀU KHIỂN MCS-51
1.1. Tổng quan
Trong những thập niên cuối thế kỷ XX, từ sự ra đời của công nghệ bán dẫn, kỹ
thuật điện tử đã có sự phát triển vượt bậc. Các thiết bị điện tử sau đó đã được tích hợp với
mật độ cao và rất cao trong các diện tích nhỏ,nhờ vậy các thiết bị nhỏ hơn và nhiều chức
năng hơn. Các thiết bị điện tử ngày càng nhiều chức năng trong khi giá thành ngày càng
rẻ hơn, chính vì vậy điện tử có mặt khắp nơi. Bước đột phát mới trong kỹ thuật điện tử là

tạo ra một thiết bị điện tử mới là Vi điều khiển.
Một bộ vi điều khiển (microcontroller) được xem như là “một máy tính trong một
chip” – nó là một mạch điện tích hợp trên một chip, có thể lập trình được, dùng để điều
khiển hoạt động của một hệ thống.
Vi điều khiển được ứng dụng rất rộng rãi hiện nay. Đa số các lĩnh vực đều có thể
ứng dụng vi điều khiển. Và đối với nền cơ khí tự động hoá bây giờ thì có lẽ nó đã gắn
liền với vi xử lý. Vi điều khiển là một câu trúc siêu nhỏ, gồm các linh kiện điện tử có kích
thước micro hoặc nano kết hợp với nhau, và được nối với các thiết bị bên ngoài qua các
chân vi điều khiển. Vì vậy hiểu rõ cấu trúc của nó, ta sẽ hiểu được mình đang làm việc
với cái gì? Và nó hoạt động như thế nào?
1.2. Phân biệt vi xử lý và vi điều khiển
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ông nghệ vi điện tử, công nghệ tích hợp và
khả năng xử lý theo chương trình vào các lĩnh vực khác nhau. Vào những giai đoạn đầu
trong quá trình phát triể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ữa CPU và
các phần cứng khác. Trong giai đoạn này, các phần cứng khác (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ên ngoà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”.
Đặng Thành Tựu

Trang 4


Bài giảng Vi điều khiển và Ứng dụng
Vi xử lý có các khối chứ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ài sau 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 mà thôi.
Để vi xử lý hoạt động cần có chương trình kèm theo, các chươ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ác cô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ển thị 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 máy tính, thì hiệu quả ứng dụ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ác phé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ớ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 đí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án
khô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ân nhắc. Bởi vì hệ
thống dù lớn hay nhỏ, nếu dùng vi xử lý thì cũng đòi hỏi cá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 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ể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ề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
Đặng Thành Tựu

Trang 5



Bài giảng Vi điều khiển và Ứng dụng
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 duy nhất được gọi là Microcontroller-Vi điều khiển. Vi điều khiển có khả
năng tương tự như khả năng của vi xử lý, nhưng cấu trúc phần cứng dành cho ngườ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ũng trở 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 cho ngườ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, dung lượ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 ứng dụng rộng rãi vào nhiều ứng dụng có chức năng đơn giản, không đòi hỏi
tí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...
Các dòng vi điều khiển thông dụng:
Họ vi điều khiển AMCC: (do tập đoàn "Applied Micro Circuits Corporation" sản
xuất). Từ tháng 5 năm 2004, họ vi điều khiển này được phát triển và tung ra thị trường
bởi IBM.
• 403 PowerPC CPU
• PPC 403GCX
• 405 PowerPC CPU
• PPC 405EP
• PPC 405GP/CR
• PPC 405GPr
• PPC NPe405H/L
• 440 PowerPC Book-E CPU
• PPC 440GP

• PPC 440GX
Đặng Thành Tựu

Trang 6


Bài giảng Vi điều khiển và Ứng dụng
• PPC 440EP/EPx/GRx
• PPC 440SP/SPe
Họ vi điều khiển Atmel:
• Dòng 8051 (8031, 8051, 8751, 8951, 8032, 8052, 8752, 8952)
• Dòng Atmel AT91 (Kiến trúc ARM THUMB)
• Dòng AT90, Tiny & Mega – AVR (Atmel Norway design)
• Dòng Atmel AT89 (Kiến trúc Intel 8051/MCS51)
• Dòng MARC4
Họ vi điều khiển Cypress MicroSystems
• CY8C2xxxx (PSoC)
Họ vi điều khiển Freescale Semiconductor. Từ năm 2004, những vi điều khiển này
được phát triển và tung ra thị trường bởi Motorola.
• Dòng 8-bit
• 68HC05 (CPU05)
• 68HC08 (CPU08)
• 68HC11 (CPU11)
• Dòng 16-bit
• 68HC12 (CPU12)
• 68HC16 (CPU16)
• Freescale DSP56800 (DSPcontroller)
• Dòng 32-bit
• Freescale 683XX (CPU32)
• MPC500

• MPC 860 (PowerQUICC)
• MPC 8240/8250 (PowerQUICC II)
• MPC 8540/8555/8560 (PowerQUICC III)
Họ vi điều khiển Fujitsu
• F²MC Family (8/16 bit)
• FR Family (32 bit)
Đặng Thành Tựu

Trang 7


Bài giảng Vi điều khiển và Ứng dụng
• FR-V Family (32 bit RISC)
Họ vi điều khiển Intel
• Dòng 8-bit
• 8XC42
• MCS48
• MCS51
• 8061
• 8xC251
• Dòng 16-bit
• 80186/88
• MCS96
• MXS296
• Dòng 32-bit
• 386EX
• i960
Họ vi điều khiển Microchip
• PIC 8-bit (xử lý dữ liệu 8-bit, 8-bit data bus)
• Từ lệnh dài 12-bit (Base-line): PIC10F, PIC12F và một vài PIC16F

• Từ lệnh dài 14-bit (Mid-Range và Enhance Mid-Range): PIC16Fxxx,
PIC16F1xxx
• Từ lệnh dài 16-bit (High Performance): PIC18F
• PIC 16-bit (xử lý dữ liệu 16-bit)
• PIC điều khiển động cơ: dsPIC30F
• PIC có DSC: dsPIC33F
• Phổ thông: PIC24F, PIC24E, PIC24H
• PIC 32-bit (xử lý dữ liệu 32-bit): PIC32MX
Họ vi điều khiển National Semiconductor
• COP8
• CR16
Đặng Thành Tựu

Trang 8


Bài giảng Vi điều khiển và Ứng dụng

Họ vi điều khiển STMicroelectronics
• ST 62
• ST7
• STM8
• STM32 (Cortex-Mx)
Họ vi điều khiển Philips Semiconductors
• LPC2000
• LPC900
• LPC700
1.3. Họ vi điều khiển MCS-51
1.3.1. Lịch sử phát triển họ MCS-51
Năm 1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, một chip 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ậc quan trọng vào năm 1980 khi intel tung ra
chip 8051, bộ Vi điều khiển đầu 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. Chip 8051 chứa trên 60000 transistor bao gồm 4K
byte ROM, 128 byte RAM, 32 đường xuất nhập, 1 port nối tiếp và 2 bộ định thời 16 bit.
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ới tính năng được cải tiến ngày càng mạnh.
Hiện nay có rất nhiều họ Vi điều khiển trên thị trường với nhiều ứng dụng khác
nhau, trong đó họ Vi điều khiển họ MCS-51 được sử dụng rất rộng rãi trên thế giới và ở
Việt Nam.
Vào năm 1980 Intel công bố chíp 8051(80C51), bộ vi điều khiển đầu tiên của họ
vi điều khiển MCS-51. Nó bao gồm 4KB ROM, 128 byte RAM, 32 đường xuất nhập, 1
port nối tiếp và 2 bộ định thời 16 bit. Tiếp theo sau đó là sự ra đời của chip 8052, 8053,
8055 với nhiều tính năng được cải tiến.
Hiện nay Intel không còn cung cấp các loại Vi điều khiển họ MCS-51 nữa, thay
vào đó các nhà sản xuất khác như Atmel, Philips/signetics, AMD, Siemens,
Đặng Thành Tựu

Trang 9


Bài giảng Vi điều khiển và Ứng dụng
Matra&Dallas, Semiconductors được cấp phép làm nhà cung cấp thứ hai cho các chip của
họ MSC-51. Chip Vi điều khiển được sử dụng rộng rãi trên thế giới cũng như ở Việt Nam
hiện nay là Vi điều khiển của hãng Atmel với nhiều chủng loại vi điều khiển khác nhau.
Hãng Atmel có các chip Vi điều khiển có tính năng tương tự như chip Vi điều
khiển MCS-51 của Intel, các mã số chip được thay đổi chút ít khi được Atmel sản xuất.
Mã số 80 chuyển thành 89, chẳng hạn 80C52 của Intel khi sản xuất ở Atmel mã số thành
89C52 (Mã số đầy đủ: AT89C52) với tính năng chương trình tương tự như nhau. Tương
tự 8051,8053,8055 có mã số tương đương ở Atmel là 89S52,89C53,89C55. Vi điều khiển

Atmel sau này ngày càng được cải tiến và được bổ sung thêm nhiều chức năng tiện lợi
hơn cho người dùng.
Sau khoảng thời gian cải tiến và phát triển, hãng Atmel tung ra thị trường dòng Vi
điều khiển mang số hiệu 89Sxx với nhiều cải tiến và đặc biệt là có thêm khả năng nạp
chương trình theo chế độ nối tiếp rất đơn giản và tiện lợi cho người sử dụng.
Tất cả các Vi điều khiển trên đều có đặc tính cơ bản giống nhau về phần mềm (các
tập lệnh lập trình như nhau), còn phần cứng được bổ sung với chip có mã số ở hai số cuối
cao hơn, các Vi điều khiển sau này có nhiều tính năng vượt trội hơn Vi điều khiển thế hệ
trước. Các Vi điều khiển 89Cxx như trong bảng 1 có cấu tạo ROM và RAM như 98Sxx
trong bảng 2, tuy nhiên 98Sxx được bổ sung một số tính năng và có thêm chế độ nạp nối
tiếp.
8051 là bộ vi điều khiển 8 bit tức là CPU chỉ có thể làm việc với 8 bit
dữ liệu. Dữ liệu lớn hơn 8 bit được chia thành các dữ liệu 8 bit để xử lý.
8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác (Siemens,
Atmel, Philips, AMD, Matra, Dallas, Semiconductor …) sản xuất và bán bất kỳ dạng biến
thể nào của 8051 mà họ muốn với điều kiện họ phải để mã chương trình tương thích với
8051. Từ đó dẫn đến sự ra đời của nhiều phiên bản của 8051 với các tốc độ và dung
lượng ROM trên chip khác nhau.
Tuy nhiên, điều quan trọng là mặc dù có nhiều biến thể của 8051, cũng như khác
nhau về tốc độ, dung lượng ROM nhưng tất cả các lệnh đều tương thích với 8051 ban

Đặng Thành Tựu

Trang 10


Bài giảng Vi điều khiển và Ứng dụng
đầu. Điều này có nghĩa là nếu chương trình được viết cho một phiên bản 8051 nào đó thì
cũng sẽ chạy được với mọi phiên bản khác không phụ thuộc vào hãng sản xuất.
Các loại vi điều khiển khác: vi điều khiển AVR, vi điều khiển PIC, vi điều khiển

MCUs của Philips,...Ngoài ra, các loại vi điều khiển chuyên dụng của các hãng sản xuất
khác: các loại vi điều khiển này được sử dụng chuyên dụng theo chức năng cần điều
khiển.
Bảng 1.1. Tóm tắt các vi điều khiển dòng 8051.
Loại
8031

ROM

RA
M

Timer Ngắt

O

2

0

256B

2

8051

4KB

128B


2

6

5V

40

32

Bộ nhớ PROM chỉ

8052

8KB

256B

3

8

5V

40

32

nạp 1 lần.


8751

4KB

128B

2

8752

8KB

256B

4KB

128B

2

6

5V

40

32

8KB


256B

3

8

5V

40

32

1KB

128B

1

3

3V

20

15

2KB

128B


2

6

5V

20

15

89S51
89C52
89S52
89C1051
89C2051
89S2051
89C2052
89S2052

32

Chú ý

128B

89S52

5V

I/


0

8032

6

Vcc Đóng vỏ

5V

Sử dụng ROM ngoại

Bộ nhớ EPROM nạp

5V

xóa nhiều lần bằng

5V

tia cực tím

Bộ nhớ FLASH
2KB

256B

3


8

5V

20

15 ROM nạp xóa nhiều
lần bằng xung điện

89LV51

4KB

128B

3

6

3V

40

32

89LV52

8KB

256B


3

8

3V

40

32

Đặng Thành Tựu

Trang 11


Bài giảng Vi điều khiển và Ứng dụng
Tóm lại:

Có 3 vùng để phân biệt (trừ 8031 và 8032 không có ROM nội):

- Thứ nhất là 2 số đầu tiên:
+ 80: ROM chỉ nạp duy nhất 1 lần.
+ 87: ROM nạp xóa nhiều lần bằng tia cực tím.
+ 89: ROM nạp xóa nhiều lần bằng xung điện (được ưa chuộng nhất).
- Thứ hai là chữ kế:
+ Chữ C và chữ S: đặt trưng cho cách nạp (C nạp song song, S nạp nối tiếp).
+ Chữ LV: nguồn cung cấp thấp khoảng 3V.
- Thứ ba là 2 số cuối:
+ 52 có bộ nhớ ROM và RAM gấp đôi so với 51.

+ 52 có 3 timer còn 51 có 2 timer.
Các phiên bản 8051 với tốc độ khác nhau của Atmel.
Bảng 1.2. Vi điều khiển họ 8051 dòng thương mại
Mã linh kiện

Tốc độ

Số chân

Đóng vỏ

Mục đích

AT89S52-12PC

42MHZ

40

DTP

Thương mại

Bảng 1.3. Các phiên bản 8051 từ hãng Dallas Semiconductor
Mã linh kiện
DS5000-8

ROM
8K


RAM
128

Chân I/O
32

Timer
2

Ngắt
6

Vcc
5V

Đóng vỏ
40

DS5000-32

32K

128

32

2

6


5V

40

DS5000T-8

8K

128

32

2

6

5V

40

6

5V

40

DS5000T-8
32K
128
32

2
Chữ “T” đứng sau 5000 là có đồng hồ thời gian thực.

Lưu ý rằng đồng hồ thời gian thực RTC là khác với bộ định thời Timer. RTC tạo và
giữ thời gian l phút giờ, ngày, tháng - năm kể cả khi tắt nguồn.
1.3.2. Khảo sát vi điều khiển 89S52
1.3.2.1. Tổng quát
Vi điều khiển 89S52 là vi điều khiển thuộc dòng 8051 có các đặc tính sau:
 Tương thích với tất cả các sản phẩm thuộc dòng 8051.
 Có 8KB Flash ROM và có thể nạp/xóa 1000 lần.
 Nguồn nuôi: 4.0V đến 5.0V.
 Có 256x8 bit RAM nội.
 Có 4 port xuất/nhập dữ liệu 8 bit.
Đặng Thành Tựu

Trang 12


Bài giảng Vi điều khiển và Ứng dụng
Có 3 bộ Timer/Counters 16 bit.
Có 8 nguồn ngắt.
Có khả năng giao tiếp truyền dữ liệu nối tiếp.
Có chế độ ngủ đông để tiết kiệm điện năng.
Có thể giao tiếp với 64 kbyte bộ nhớ bên ngoài để lưu chương trình điều
khiển hoặc lưu dữ liệu.
 Có 210 bit ( có thể truy xuất từng bit theo các lệnh xử lý bit).
 Nạp code ở cả 2 chế độ song song và nối tiếp.
- Sơ đồ cấu trúc bên trong của vi điều khiển 89S52







Hình 1. 1 Sơ đồ cấu trúc bên trong

Đặng Thành Tựu

Trang 13


Bài giảng Vi điều khiển và Ứng dụng
1.3.2.2 Sơ đồ chân

Hình 1.2. Sơ đồ chân 89S52.
Xét kiểu chân PDIP:


Port 0: có 2 chức năng với số thứ tự chân 32÷39.
+ Trong các hệ thống điều khiển đơn giản sử dụng bộ nhớ bên trong không dùng bộ

nhớ mở rộng bên ngoài thì port 0 được dùng làm các đường điều khiển IO (Input –
Output).

Đặng Thành Tựu

Trang 14


Bài giảng Vi điều khiển và Ứng dụng

+ Trong các hệ thống điều khiển lớn sử dụng bộ nhớ mở rộng bên ngoài thì port 0 có
chức năng là bus địa chỉ và bus dữ liệu AD7 ÷ AD0. (Address: địa chỉ byte thấp A0 đến
A7, Data: dữ liệu 8 bit D0 đến D7).


Port 1: với số thứ tự chân 1÷ 8. Port1 có chức năng dùng làm các đường điều khiển
xuất nhập IO. Ngoài ra, còn có chức năng:
Bảng 1.4. Chức năng thứ 2 của Port 1.



Port 2: Port 2 là port có 2 chức năng với số thứ tự chân 21÷ 28.
+ Trong các hệ thống điều khiển đơn giản sử dụng bộ nhớ bên trong không dùng bộ

nhớ mở rộng bên ngoài thì port 2 được dùng làm các đường điều khiển IO.
+ Trong các hệ thống điều khiển lớn sử dụng bộ nhớ mở rộng bên ngoài thì port 2 có
chức năng là bus địa chỉ cao A8÷A15.


Port 3: với số thứ tự chân 10÷17 có chức năng dùng làm các đường điều khiển xuất
nhập IO. Ngoài ra, còn có chức năng:
Bảng 1.5. Chức năng thứ 2 của Port 3.



Tín hiệu PSEN\ (Program Store Enable): chân 29

Đặng Thành Tựu

Trang 15



Bài giảng Vi điều khiển và Ứng dụng
+ PSEN là tín hiệu ngõ ra có tác dụng cho phép bộ nhớ chương trình mở rộng thường
nối đến chân OE\ (Output enable hoặc RD\ ) của EPROM cho phép độc các byte mã lệnh.
+ Khi có giao tiếp với bộ nhớ chương trình bên ngoài thì mới dùng đến PSEN\ , nếu
không có giao tiếp chân thì PSEN\ bỏ trống.
+ Khi PSEN\ ở mức thấp trong thời gian vi điều khiển lấy lệnh. Các mã lệnh của
chương trình từ EPROM qua bus dữ liệu được chốt vào thanh ghi lệnh bên trong VĐK để
giải mã lệnh. Khi VĐK thi hành chương trình trong EPROM nội thì ở mức logic 1.


Tín hiệu điều khiển ALE (Address Latch Enable): chân 30
+ Khi VĐK truy suất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus dữ

liệu [AD7÷AD0] do đó phải tách các đường địa chỉ và dữ liệu. Tín hiệu ra ALE dùng làm
tín hiệu điều khiển để giải hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt
như hình 1.3.

Hình 1.3. Sơ đồ vi điều khiển truy suất bộ nhớ bên ngoài
+ Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là
địa chỉ thấp nên việc chốt địa chỉ được thực hiện một cách hoàn toàn tự động.
+ Các xung tín hiệu ALE có tầng số bằng 1/6 tầng số dao động thạch anh gắn vào vi
điều khiển à có thể dùng tín hiệu xung ngõ ra ALE làm xung clock cung cấp cho các phần
tử của hệ.

Đặng Thành Tựu

Trang 16



Bài giảng Vi điều khiển và Ứng dụng
+ Trong chế độ lập trình cho bộ nhớ trong của vi điều khiển hì chân ALE được dùng
làm ngõ vào nhận xung lập trình từ bên ngoài để lập trình cho bộ nhớ Flash ROM trong
VĐK.


Tín hiệu EA\ (External Access): chân 31 có 2 cách kết nối:
+ Nếu nối EA\ lên mức logic 1 (+5V) thì vi điều khiển sẽ thi hành chương trình từ bộ

nhớ nội.
+ Nếu nối EA\ với mức logic 0 (0V) thì vi điều khiển sẽ thi hành chương trình từ bộ
nhớ ngoài.


Tín hiệu RST ( Reset): chân 9
+ Ngõ vào chân RST là ngõ vào Reset của VĐK.



Hình 1.4. Mạch reset của VĐK
Các ngõ vào bộ dao động Xtal1, Xtal2: chân 18 và chân 19
Bộ dao động được tích hợp bên trong VĐK, khi sử dụng 89S52 người thiết kế chỉ

cần kết nối thạch anh và tụ điện.
Thạch anh: từ 0-33MHz.
Tụ điện: 30pF ± 10pF.

Đặng Thành Tựu


Trang 17


Bài giảng Vi điều khiển và Ứng dụng

Hình 1.5. Mạch dao động của 8051


Chân 40 (Vcc) được nối lên nguồn 5V, chân 20 GND nối mass.

Hình 1.6. Mạch cơ bản cho vi điều khiển họ MCS-51.
Lưu ý: khi thiết kế phần cứng sử dụng vi điều khiển họ MCS-51
- Kiểm tra nguồn: chân 40 (+5V) và chân 20 (GND: 0V).
- Kiểm tra mạch reset: chân 9 (khi bị reset: +5V, khi ổn định 0V).
- Kiểm tra mạch sử dụng code nội hay code ngoại: chân 31 (+5v nếu nạp code
ROM nội, 0V nếu nạp code ROM ngoại).
- Kiểm tra mạch dao động.

Đặng Thành Tựu

Trang 18


Bài giảng Vi điều khiển và Ứng dụng
1.3.2.3 Cấu trúc của port xuất nhập
Việc ghi dữ liệu đến các chân của port này sẽ được nạp qua bộ chốt dữ liệu (Latch)
và ngõ ra Q của bộ chốt sẽ điều khiển transistor trường và transitor này nối với chân của
port. Trong đó, các port 1, 2 và 3 có khả năng điều khiển tải ( fanout) khi cấu trúc bên
trong có điện trở kéo lên ( pull-up resistor). Bên cạnh đó, port 0 dùng điều khiển tải khi
đó port 0 phải có điện trở kéo lên bên ngoài bởi vì port này dùng để truyền dữ liệu hay

định địa chỉ nên cấu trúc bên trong không có điện trở kéo lên.

a) Cấu trúc port 0

b) Cấu trúc port 1,2 và 3

Hình 1. 2 Mạch bên trong các port xuất/ nhập của IC 89S52
1.3.2.4 Tổ chức bộ nhớ
- Vi điều khiển 89S52 có bộ nhớ nội bên trong và có thêm khả năng giao tiếp với
bộ nhớ bên ngoài nếu bộ nhớ bên trong không đủ khả năng lưu trữ chương trình.
 Bộ nhớ nội bên trong gồm có 2 loại bộ nhớ: bộ nhớ dữ liệu và bộ nhớ chương
trình. Bộ nhớ dữ liệu có 256 byte, bộ nhớ chương trình có dung lượng 8kbyte
 Bộ nhớ mở rộng bên ngoài cũng được chia ra làm 2 bộ nhớ: bộ nhớ dữ liệu và
bộ nhớ chương trình. Khả năng giao tiếp là 64 kbyte cho mỗi loại
- Bộ nhớ mở rộng bên ngoài và bộ nhớ chương trình bên trong không có gì đặc biệt –
chỉ có chức năng lưu trữ dữ liệu và mã chương trình nên không cần phải khảo sát.
- Bộ nhớ chương trình bên trong của vi điều khiển huộc loại bộ nhớ Flash ROM cho
phép xóa bằng xung điện và lập trình lại.

Đặng Thành Tựu

Trang 19


Bài giảng Vi điều khiển và Ứng dụng
- Bộ nhớ RAM nội bên trong là bộ nhớ đặc biệt người sử dụng vi điều khiển ần phải
nắm rõ các tổ chức và chức năng đặc biệt của bộ nhớ này.
- Cấu trúc RAM bên trong 89S52 được phân chia như sau:






Các bank thanh ghi có địa chỉ từ 00H đến 1FH.
RAM truy xuất từng bit có địa chỉ từ 20H đến 2FH.
RAM đa dụng từ 30H đến 7FH.
Các thanh ghi chức năng đặc biệt từ 80H đến FFH.

0FFFF

00

DATA
momery

0000

0FFFF
CODE
momery

Enable
Via
RD &WR

1FFF
FF

DATA
momery


CODE
momery

0000

0000

Enable
Via
PSEN

Hình 1.3 Sơ đồ các vùng nhớ


Các bank thanh ghi: 32 byte thấp của bộ nhớ nội được dành cho 4 bank thanh ghi.
+ Bộ lệnh 89S52 hỗ trợ thêm 8 thanh ghi có tên từ R0 đến R7 và theo mặc định sau

khi reset hệ thống thì các thanh ghi R0 đến R7 được gán cho 8 ô nhớ có địa chỉ từ 00H
đến 07H được minh họa bởi bảng 1.4, khi đó bank 0 có 2 cách truy xuất bằng địa chỉ trực
tiếp và bằng thanh ghi R.
+ Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi được truy
xuất bởi các thanh ghi R0 đến R7, để chuyển đổi việc truy xuất các bank thanh ghi ta phải
thay đổi các bit chọn bank trong thanh ghi trạng thái.

Đặng Thành Tựu

Trang 20



Bài giảng Vi điều khiển và Ứng dụng
Bảng 1. 1 Bảng địa chỉ RAM nội của 89S52
Địa
chỉ
byte

Địa chỉ bit

Địa
chỉ
byte

7F

30
2F
2E
2D
2C
2B
2A
29
28
27
26
25
24
23
22
21

20
1F

18
17

10
0F


08

7F 7E 7D 7
C
77 76 75 74
6F 6E 6D 6
C
67 66 65 64
5F 5E 5D 5
C
57 56 55 54
4F 4E 4D 4
C
47 46 45 44
3F 3E 3D 3
C
37 36 35 34
2F 2E 2D 2
C
27 26 25 24

1F 1E 1D 1
C
17 16 15 14
0F 0E 0D 0
C
07 06 05 04

Địa chỉ bit

FF
F0

F7

E0

E7 E6

7B 7A 79 78

D0

D7 D6

73 72 71 70
6B 6A 69 68

B8

63 62 61 60

5B 5A 59 58
53 52 51 50
4B 4A 49 48
43 42 41 40
3B 3A 39 38
33 32 31 30
2B 2A 29 28
23 22 21 20
1B 1A 19 18
13 12 11 10
0B 0A 09 08
03 02 01 00

Bank3

Bank 2

-

F6 F5

-

F4

F3 F2 F1 F0

B

E5


E4

E3 E2 E1 E0

ACC

D5

D4

D3 D2 D1 D0

PSW

-

IP

B4

B3 B2 B1 B0

P3

AC AB AA A9 A8

IE
P2


B0

B7 B6

A8

AF

A0

A7 A6

A5

A4

A3 A2 A1 A0

99
98

9F 9E

9D

9C

9B 9A 99

98


SBUF
SCON

90

97

95

94

93

90

PI

96

B5

BC BB BA B9 B8

92

91

8D
8C

8B
8A
89
88
87

8F 8E 8D 8C 8B 8A 89

88

83
82
81
80

TH1
TH0
TL1
TL0
TMO
D
TCON
PCON
DPH
DPL
SP

87

86


85

84

83

82 81

80

P0

Bank 1

07
Đặng
Tựughi 0
… Thành
Bank thanh
( mặc định gán cho R0-R7)
00

Trang 21


Bài giảng Vi điều khiển và Ứng dụng

+ Chức năng chính của 4 bank thanh ghi này là nếu trong hệ thống có sử dụng nhiều
chương trình thì chương trình thứ nhất bạn có thể sử dụng hết các thanh ghi R0 đến R7

của bank0, khi chuyển sang chương trình thứ 2 để quản lý một công việc gì đó và vẫn sử
dụng các thanh ghi R0 đến R7 để lưu trữ cho việc xử lý dữ liệu mà không làm ảnh hưởng
đến các dữ liệu R0 đến R7 trước đây và không cần phải thực hiện công việc cất dữ liệu
thì cách nhanh nhất là gán cho nhóm thanh ghi R0 đến R7 cho bank 1 là xong. Tương tự
có thể mở thêm hai chương trình nữa và gán cho các bank 3 và 4.
Bảng 1. 2 Các địa chỉ thanh ghi tại các bank thanh ghi
Địa chỉ trực tiếp

Vùng nhớ 4 bank thanh ghi

1F
...
18
17
...
10
0F
...
08
07
06
05
04
03
02
01
00




Bank 3

Bank 2

Bank 1

Bank 0

R7
….
R0
R7
…..
R0
R7
….
R0
R7
R6
R5
R4
R3
R2
R1
R0

RAM có thể truy xuất từng bit:
+ Vi điều khiển 89S52 có 210 ô nhớ bit có thể truy xuất từng bit, trong đó có 128 bit

nằm ở các ô nhớ byte có địa chỉ từ 20H đến 2FH và các bit còn lại chứa trong nhóm

thanh ghi có chức năng đặc biệt.
Đặng Thành Tựu

Trang 22


Bài giảng Vi điều khiển và Ứng dụng
+ Các ô nhớ cho phép truy xuất từng bit và các lệnh xử lý bit là 1 thế mạnh của vi
điều khiển. Các bit có thể đặt, xóa, AND, OR bằng 1 lệnh duy nhất, trong khi đó để xử lý
các bit thì vi xử lý vẫn có thể xử lý được nhưng phải tốn rất nhiều lệnh để đạt được cùng
một kết quả vì vi xử lý thường xử lý byte.
+ Các port cũng có thể truy xuất được từng bit.
+ Có 128 ô nhớ bit cho phép truy xuất từng bit và cũng có thể truy xuất byte phụ
thuộc vào lệnh được dùng là lệnh xử lý bit hay xử lý byte. Chú ý địa chỉ của ô nhớ byte
và bit trùng nhau.
 Chú ý: các ô nhớ nào mà chia ra làm 8 và có các con số bên trong là các ô nhớ vừa
cho truy xuất byte và cả truy xuất bit. Những ô nhớ còn lại thì không thể truy xuất


bit. Các số nằm bên trong từng ô bit là địa chỉ của từng bit.
RAM da dụng :
+ Vùng nhớ ram da dụng gồm có 80 byte có địa chỉ từ 30H đến 7FH – vùng nhớ này

không có gì đặc biệt so với 2 vùng nhớ trên. Vùng nhớ bank thanh ghi 32byte từ 00H đến
1FH cũng có thể làm vùng nhớ ram da dụng mặc dù các ô nhớ này có chức năng như đã
trình bày.
+ Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng kiểu định địa
chỉ trực tiếp hay gián tiếp.
+ Bộ nhớ ngăn xếp của vi điều khiểndùng RAM nội nên dung lượng bộ nhớ ngăn xếp
nhỏ, trong khi đó các vi xử lý dùng bộ nhớ bên ngoài làm bộ nhớ ngăn xếp nên dung

lượng tùy ý mở rộng.
1.3.2.5. Các thanh ghi có chức năng đặc biệt
- Các thanh ghi nội của 89S52 được truy xuất ngầm định bởi bộ lệnh.
- Các thanh ghi trong 89S52 được định dạng như một phần của RAM trên chip vì vậy
mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình và thanh ghi
lưu trữ mã lệnh vì các thanh ghi này đã có chức năng cố định). Cũng như các thanh ghi từ
R0 đến R7, vi điều khiển 89S52 có 21 thanh ghi chức năng đặc biệt nằm ở vùng trên của
RAM nội có địa chỉ từ 80H đến FFH.


Các ô nhớ có địa chỉ 80H, 90H, A0H, B0H:

Đặng Thành Tựu

Trang 23


Bài giảng Vi điều khiển và Ứng dụng
+ Là các Port của 89S52 bao gồm Port0 có địa chỉ 80H, Port1 có địa chỉ 90H, Port2
có địa chỉ A0H và Port có địa chỉ B0H. Tất cả các Port này đều có thể truy xuất trên từng
bit nên rất thuận tiện trong điều khiển. Địa chỉ của các bit được đặt tên với ô bắt đầu
chính là địa chỉ của Port tương ứng ví dụ như bit đầu tiên của Port là 80H cũng chính là
địa chỉ bắt đầu của Port0. Người lập trình không cần nhớ địa chỉ các bit trong các port vì
phần mềm lập trình cho phép truy xuất bằng tên từng bit dễ nhớ như sau: P0.0 chính là bit
80H của Port 0.
+ Ngoại trừ thanh ghi A có thể truy xuất ngầm, đa số các thanh ghi có chức năng đặc
biệt SFR có thể địa chỉ hóa từng bit hoặc byte.
 Ô nhớ có địa chỉ 81H:
+ Là thanh ghi con trỏ ngăn xếp SP (Stack Pointer) – có chức năng quản lý địa chỉ
của bộ nhớ ngăn xếp. Bộ nhớ ngăn xếp dùng để lưu trữ tạm thời các dữ liệu trong quá

trình thực hiện chương trình của vi điều khiển.
+ Các lệnh liên quan đến ngăn xếp bao gồm các lệnh cất dữ liệu vào ngăn xếp (lệnh
Push) và lấy dữ liệu ra khỏi ngăn xếp (lệnh Pop).
+ Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu vào.
+ Sau lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ làm giảm SP.
+ Bộ nhớ ngăn xếp của 89S52 nằm trong RAM nội và bị giới hạn về cách truy xuất
địa chỉ - chỉ cho phép truy xuất địa chỉ gián tiếp. Dung lượng bộ nhớ ngăn xếp lớn nhất là
128byte RAM nội của 89S52.
+ Khi reset 89S52 thì thanh ghi SP sẽ mang giá trị mặc định là 07H và dữ liệu đầu
tiên sẽ được cất vào ô nhớ ngăn xếp có địa chỉ 08H.
+ Nếu phần mềm ứng dụng không khởi tạo SP một giá trị mới thì bank 1 và có thể cả
bank 2, bank 3 sẽ không dùng được vì vùng nhớ này đã được dùng làm ngăn xếp.
+ Ngăn xuất được truy xuất trực tiếp bằng các lệnh PUSH và POP để lưu trữ tạm thời
và lấy lại dữ liệu, hoặc truy xuất ngầm bằng lệnh gọi chương trình con (ACALL,
LCALL) và các lệnh trở về (RET, RETI) để lưu trữ địa chỉ của bộ đếm chương trình khi
bắt đầu thực hiện chương trình con và lấy lại địa chỉ khi kết thúc chương trình con.
 Ô nhớ có địa chỉ 82H và 83H:
Đặng Thành Tựu

Trang 24


Bài giảng Vi điều khiển và Ứng dụng
Là thanh ghi DPL (byte thấp) có địa chỉ là 82H và DPH (byte cao) có địa chỉ 83H.
Hai thanh ghi này có thể sử dụng độc lập để lưu trữ dữ liệu và có thể kết hợp lại tạo thành
một thanh ghi 16 bit có tên là DPTR và gọi là con trỏ dữ liệu – được dùng để lưu địa chỉ
khi truy xuất dữ liệu của bộ nhớ dữ liệu bên ngoài. Các vi điều khiển sau này có thêm
thanh ghi DPTR1.
 Ô nhớ có địa chỉ 87H:
Là thanh ghi PCON (power control) có chức năng điều khiển công suất khi vi điều

khiểnlàm việc hay ở chế độ chờ. Khi vi điều khiển không còn xử lý gì nữa thì người lập
trình có thể lập trình cho vi điều khiển huyển sang chế độ chờ để giảm bớt công suất tiêu
thụ nhất là khi nguồn cung cấp cho vi điều khiểnlà pin.
 Các ô nhớ có địa chỉ từ 88H đến 8DH:
+ Là các thanh ghi phục vụ cho 2 timer/counter T1, T0.
+ Thanh ghi TCON (timer control): thanh ghi điều khiển timer/counter.
+ Thanh ghi TMOD (timer mode): thanh ghi lựa chọn mode hoạt động cho
timer/counter.
+ Thanh ghi TH0 và TL0 kết hợp lại tạo thành thanh ghi 16 bit có chức năng lưu trữ
xung đếm cho timer/counter T0. Tương tự cho 2 thanh ghi TH1 và TL1 kết hợp lại để lưu
trữ xung đếm cho timer/counter T1. Khả năng lưu trữ số lượng xung đếm được là 65536
xung.
 Các ô nhớ địa chỉ 98H và 99H:
Là 2 thanh ghi SCON và SBUF.SCON (serial control): thanh ghi điều khiển truyền
dữ liệu nối tiếp. SBUF (serial buffer): thanh ghi đệm dữ liệu truyền nối tiếp. Dữ liệu
muốn truyền đi phải lưu vào thanh ghi SBUF và dữ liệu nhận về nối tiếp cũng lưu ở
thanh ghi này. Khi có sử dụng truyền dữ liệu thì phải sử dụng 2 thanh ghi này.
 Các ô nhớ A8H và B8H:
Là 2 thanh ghi IE và IP. Thanh ghi IE (Interrupt Enable): thanh ghi điều khiển cho
phép / không cho phép ngắt. Thanh ghi IP (Interrupt Priority): thanh điều khiển ưu tiên
ngắt. Khi có sử dụng đến ngắt thì phải dùng đến 2 thanh ghi này. Mặc nhiên các thanh ghi
này được khởi tạo ở chế độ cấm ngắt.
Đặng Thành Tựu

Trang 25


×