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

Thực tập tốt nghiệp nghiên cứu lý thuyết và lắp ráp modul điều khiển nhà thông minh

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 (1.19 MB, 60 trang )

ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ
--------------

Thực tập tốt nghiệp
Đề tài: Nghiên cứu lý thuyết và lắp ráp modul điều khiển
nhà thông minh

Giáo viên hướng dẫn: Lê Việt Tiến
Sinh viên thực hiện: Nguyễn Bách Khoa

Lớp: CNKT Điện Tử 3 Khóa 7
1


Hà Nội 03-2016
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................
...........................................................................................................................


...........................................................................................................................
...........................................................................................................................
Hà Nội, Ngày……..tháng……..năm 2016
Giảng viên hướng dẫn
(Ký và ghi rõ họ tên)

2


Lời cảm ơn

Trước tiên em xin gửi lời cảm ơn chân thành sâu sắc tới các thầy
cô giáo trong trường Đại Học Công Nghiệp Hà Nội nói chung và các
thầy cô giáo trong khoa Điện Tử nói riêng đã tận tình giảng dạy, truyền
đạt cho chúng em những kiến thức, kinh nghiệm quý báu trong suốt 4
năm ngồi trên giảng đường qua.
Đặc biệt em xin gửi lời cảm ơn đến thầy Lê Việt Tiến, thầy đã tận
tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm
thực tập tốt nghiệp. Trong thời gian làm việc với thầy, em không ngừng
tiếp thu thêm nhiều kiến thức bổ ích mà còn học tập được tinh thần làm
việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu quả, đây là những
điều rất cần thiết cho em trong quá trình học tập và công tác sau này.
Sau cùng em xin gửi lời cảm ơn chân thành tới gia đình, bạn bè
đã động viên, đóng góp ý kiến và giúp đỡ trong quá trình học tâp,
nghiên cứu và hoàn thành thực tập tốt nghiệp.
Đề tài này được hoàn thành không thể tránh khỏi những thiếu sót
nhất định. Em mong nhận được sự góp ý quý báu của các thầy cô giáo
và các bạn.
Em xin chân thành cảm ơn.
Hà Nội 03-2016


3


Mục lục

Bảng ký hiệu viết tắt
Ký hiệu

Viết đầy đủ

Giải thích

VĐK

Vi Điều Khiển

PIC

Máy tính khả trình thông minh

CPU

Programmable Intelligent
Computer
Central Processing Unit

ROM

Read-only Memory


Bộ nhớ chỉ đọc

RAM

Random Access Memory

Bộ nhớ truy cập ngẫu nhiên

4

Bộ xử lý trung tâm


CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
I.

Cơ sở lý thuyết

Khi cuộc sống con người càng được nâng cao, những nhu cầu cuộc sống
ngày càng đòi hỏi phải được hỗ trợ tốt hơn. Và từ những nhu cầu thực tế đó ý
tưởng về một ngôi nhà thông minh mà nơi đó ngoài sự ấm áp của tình yêu
hạnh phúc, mọi hoạt động của con người đều được hỗ trợ và giúp đỡ một cách
linh hoạt, không những được giúp đỡ mà ngôi nhà còn tự động quản lý một
cách thông minh
Ngày nay với sự phát triển mạnh mẽ vượt bậc của khoa học kỹ thuật, đặc
biệt là sự phát triển của vi điều khiển thì ý tưởng về một ngôi nhà thông minh
không còn vướng bởi rào cản công nghệ. Khi đó con người sẽ có cảm giác an
toàn hơn khi ngôi nhà của chúng ta sẽ được tích hợp của các hệ thống như hệ
thống điều khiển và giám sát môi trường: hệ thống đảm bỏa nhiệt độ, hệ thống

đảm bảo ánh sáng…, mạch đóng ngắt, điều khiển ra vào, giám sát cảnh báo
cháy…, thành một hệ thống mạng thống nhất.
II.

Ý nghĩa thực tiễn

Chúng ta không thể phủ nhận lợi ích của việc nghiên cứu và phát triển nhà
thông minh tới đời sống hiện tại, nó mang lại tính tiện nghi, thoải mái, sang
trọng, an toàn cho cuộc sống nhiều âu lo, vất vả hằng ngày. Không những vậy
nhà thông minh còn là giải pháp tiết kiệm nguồn năng lượng, đang là vấn đề
làm đau đầu các nhà khoa học.
Con người sẽ có cuộc sống tốt đẹp hơn, không phải dành quá nhiều tâm trí
trong việc quản lý ngôi nhà, mà con người có thể dành thời giờ cho nhiều việc
khác. Chúng ta gần như tương tác đươc những vật liệu mà trước đây gần như là
không thể.
5


Và ngôi nhà của chúng ta cũng có một cái nhìn hoàn toàn mới, thực sự như
một vật thể tự vận hành để phục vụ con người. Giờ đây ta hoàn toàn hãnh diện
với ngôi nhà thể hiện dẳng cấp của sự chuyên nghiệp, hiện đại, phong cách mà
bất cứ đặc trưng nào ta muốn có. Với tiêu chí đó khóa luận lần này em sẽ trình
vày về cách xây dựng và thiết kế modul điều khiển nhiệt độ và ánh sáng trong
nhà thông minh.
CHƯƠNG 2: CÁC HỌ VI ĐIỀU KHIỂN THÔNG DỤNG
Vi điều khiển là một máy tính được tích hợp trên một chíp, nó thường được
sử dụng để điều khiển các thiết bị điện tử. Vi điều khiển, thực chất, là một hệ
thống bao gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với
các bộ vi xử lý đa năng dùng trong máy tính) kết hợp với các khối ngoại vi
như bộ nhớ, các mô đun vào/ra, các mô đun biến đổi số sang tương tự và tương

tự sang số,... Ở máy tính thì các mô đun thường được xây dựng bởi các chíp và
mạch ngoài.
Vi điều khiển thường được dùng để xây dựng các hệ thống nhúng. Nó xuất
hiện khá nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi
sóng, điện thoại, đầu đọc DVD,thiết bị đa phương tiện, dây chuyền tự động, v.v.
Các họ vi điều khiển hiện nay:
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
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)
6


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
Họ vi điều khiển Fujitsu
+ F²MC Family (8/16 bit)
+ FR Family (32 bit)
+ FR-V Family (32 bit RISC)
Họ vi điều khiển Intel
+ Dòng 8-bit
+ Dòng 16-bit
+ Dòng 32-bit

Họ vi điều khiển Microchip
+ PIC 8-bit (xử lý dữ liệu 8-bit, 8-bit data bus)
+ PIC 16-bit (xử lý dữ liệu 16-bit)
+ PIC 32-bit (xử lý dữ liệu 32-bit): PIC32MX
Trong bài báo cáo này em xin trình bày về 3 họ vi điều khiển thông dụng và
được nhiều người sử sụng nhất hiện nay là: Họ VĐK 8051 (bao gồm vđk 8051,
8052, 8031) , họ VĐK PIC ( PIC16F877A) và họ VĐK AVR.
I.

Họ vi điều khiển 8051

1. Vi điều khiển 8051
a. Tóm tắt về lịch sử của 8051

Vào năm 1981 hãng Intel giới thiệu một số bộ vi điều khiển được gọi là
8051. Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chíp, hai bộ
định thời, một cổng nối tiếp và 4 cổng (đều rộng 8 bit) vào ra tất cả được đặt
trên một chíp. Lúc ấy nó được coi là một „hệ thống trên chíp‟. 8051 là một bộ
xử lý 8 bit có nghĩa là CPU chỉ có thẻ làm việc với 8 bit dữ liệu tại một thời
điểm. Dữ liệu lớn hơn 8 bit đƣợc chia ra thành các dữ liệu 8 bit để cho xử lý.
8051 có tất cả 4 cổng vào ra I/O mỗi cổng rộng 8 bit (hình vẽ). Mặc dù 8051 có
7


một ROM trên chíp cực đại là 64Kbyte, nhưng các nhà sản xuất lúc đó đã xuất
xưởng chỉ với 4Kbyte Rom trên chíp.
8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác
nhau sản xuất và bán bất kỳ dạng biến thể nào của 8051 mà họ thích với điều
kiện họ phải để lại mã tương thích với 8051. Điều này dẫn đến sự ra đời nhiều
phiên bản của 8051 với các tốc độ khác nhau và dung lượng Rom trên chíp khác

nhau. Điều này quan trọng là mặc dù có nhiều biến thể khác nhau của 8051 về
tốc độ và dung lượng nhớ ROM trên chíp nhưng tất cả chúng đều tương thích
với 8051 ban đầu về các lệnh. Điều này có nghĩa là nếu ta viết chương trình cho
một phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mà
không phân biệt nó từ hãng sản xuất nào.
Bảng 2.1. Các đặc tính của 8051 đầu tiên.
Đặc tính
ROM trên chip
RAM
Bộ định thời
Các chân vào ra

Số lượng
4Kbyte
128 byte
2
32
1
6

Cổng nối tiếp
Nguồn cắt

Bộ vi điều khiển 8051 là thành viên đầu tiên của họ 8051, hãng Intel ký hiệu nó
là MSC51.
b. Sơ đồ chân

8



Hình 2.1 Sơ đồ chân 8051
Từ hình 2.1. ta thấy trong 40 chân có 32 chân dùng cho các cổng P0, P1,
P2, P3 với mỗi cổng có 8 chân. Các chân còn lại dành cho nguồn Vcc, đất
GND, các chân dao động XTAL1 và XTAL2, khởi động lại RST cho phép chốt
địa chỉ ngoài EA , cho ngắt cất chƣơng trình PSEN . Trong 8 chân này thì 6
chân Vcc, GND, XTAL1, XTAL2, RST và EA đƣợc các họ 8031 và 8051 sử
dụng. Hay nói cách khác là chúng phải được nối để cho hệ thống làm việc mà
không cần biết bộ vi điều khiển thuộc họ 8051 hay 8031. Còn chân PSEN và
chân ALE được sử dụng trong các hệ thống dựa trên 8031.
+ Chân Vcc và chân GND tương ứng với chân số 40 và chân số 20 cung
cấp nguồn (+5V) và nối mass
+ Chân XTAL1 (chân 19) và XTAL2 (chân 18): 8051 có bộ dao động trên
chíp nhưng nó yêu cầu có một xung đồng hồ ngoài để chạy nó. Bộ dao
động thạch anh được nối với XTAL1 và XTAL2 cùng hai tụ điện có giá
trị 30pF
9


+ Chân RST: Chân số 9 là chân tái lập RESET. Nó là chân đầu vào có
mức tích cực cao. Khi cấp xung cao tới chân này thì bộ vi điều khiển sẽ
tái lập và kết thúc mọi hoạt động. Nó có thể coi như sự tái bật nguồn.
+ Chân EA (là chân IN): Truy cập bộ nhớ ngoài, chân số 31 trên vỏ chíp
như 8751, 89C51 hoặc DS5000 thì chân EA được nối với nguồn Vcc.
Trường hợp không có ROM trên chíp như 8031 và 8051 thì mã chương
trình được lưu cất ở bộ nhớ ngoài, khi đó chân EA được nối đất. Như vậy
chân này không bao giờ được để hở.
+ Chân PSEN là chân có chức năng cho phép lưu chƣơng trình. Ở hệ
thống 8031, khi chương trình cất ở bộ nhớ ROM ngoài thì chân này được
nối tới chân OE của ROM.
+ ALE cho phép chốt địa chỉ là chân có mức tích cực cao. Khi nối 8031

tới bộ nhớ ngoài thì cổng 0 cũng được cấp địa chỉ và dữ liệu. Hay nói
cách khác, 8031 dồn địa chỉ và dữ liệu qua cổng 0 để tiết kiệm số chân.
Chân ALE được sử dụng để phân kênh địa chỉ và dữ liệu bằng cách nối
tới chân G của của chíp 73LS373.
+ Nhóm chân cổng vào ra I/O: bốn cổng P0, P1, P2, P3 đều có 8 chân và
tạo thành cổng 8 bít. Tất cả các cổng khi RESET đều được cấu hình làm
cổng ra. Để làm đầu vào thì cần được lập trình.
Các cổng bình thường là cổng ra. Cổng P0 có thể vừa làm đầu ra,
vừa làm đầu vào cổng P0 từ chân 32 đến 39 phải được nối với điện
trở kéo 10K bên ngoài. Cổng P1 cũng có 8 chân, từ chân 1 đến
chân 8, và có thể sử dụng làm đầu vào hoặc ra. Khác với cổng P0,
cổng P1 không cần đến điện trở kéo bên ngoài vì nó đã có điện trở
kéo bên trong. Cổng P2 cũng có 8 chân từ chân 21đến 28, và có thể
sử dụng làm đầu vào hoặc ra. Cũng giống như cổng P1, cổng P2
không cần điện trở kéo vì bên trong đã có các điện trở kéo. Cổng
P3 có 8 chân từ chân 10 đến chân 17. Cổng này có thể sử dụng làm
đầu vào hoặc ra. Cũng như chân P1và P2, cổng P3 cũng không cần
điện trở kéo.
Bảng 2.2. Chức năng các chân cổng P3.
10


Bít cổng P3
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6

P3.7

Chức năng
Nhận dữ liệu (RXD)
Phát dữ liệu (TXD)
Ngắt 0(INT0)
Ngắt 1(INT1)
Bộ định thời 0 (TO)
Bộ định thời 1(T1)
Ghi (WR)
Đọc (RD)

Chân số
Nhận dữ liệu (RXD)
Phát dữ liệu (TXD)
Ngắt 0(INT0)
Ngắt 1(INT1)
Bộ định thời 0 (TO)
Bộ định thời 1(T1)
Ghi (WR)
Đọc (RD)

Có hai bộ vi điều khiển thành viên khác của họ 8051 là 8052 và 8031.
c. Tổ chức bộ nhớ

Các vi điều khiển thuộc họ 8051 đều tổ chức thành 2 không gian chương
trình và dữ liệu, hình 2.2 và hình 1.3 sẽ mô tả điều này. Kiến trúc vi xử lý 8 bit
của 8051 này cho phép truy nhập và tính toán nhanh hơn đối với không gian dữ
liệu nhờ việc phân chia 2 không gian bộ nhớ chương trình và dữ liệu như trên.
Tuy nhiên bộ nhớ ngoài được truy nhập bởi hệ thống 16 bit địa chỉ vẫn có thể

thực hiện nhờ thanh ghi con trỏ.
Bộ nhớ chương trình (ROM, EPROM) là bộ nhớ chỉ đọc, có thể mở rộng
tối đa 64Kbyte. Với họ vi điều khiển 89xx, bộ nhớ chương trình được tích hợp
sẵn trong chip có kích thước nhỏ nhất là 4kByte. Với các vi điều khiển không
tích hợp sẵn bộ nhớ chương trình trên chip, buộc phải thiết kế bộ nhớ chương
trình bên ngoài. Ví dụ sử dụng EPROM: 2764 (64Kbyte), khi đó chân PSEN
phải ở mức tích cực (5V).

11


Hình 2.2: Cấu trúc chương trình vi điều khiển 89C51
Bộ nhớ dữ liệu (RAM) tồn tại độc lập so với bộ nhớ chương trình. Họ vi
điều khiển 8051 có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là 128byte và có
thể mở rộng với bộ nhớ dữ liệu ngoài lên tới 64kByte. Với những vi điều khiển
không tích hợp ROM trên chip thì vẫn có RAM trên chip là 128byte. Khi sử
dụng RAM ngoài, CPU đọc và ghi dữ liệu nhờ tín hiệu trên các chân RD và
12


WR. Khi sử dụng cả bộ nhớ chương trình và bộ nhớ dữ liệu bên ngoài thì buộc
phải kết hợp chân RD và PSEN bởi cổng logic AND để phân biệt tín hiệu truy
xuất dữ liệu trên ROM hay RAM ngoài.

Hình 2.3: Địa chỉ các ngắt trên bộ nhớ chương trình
Hình 2.2 mô tả cấu trúc bộ nhớ chương trình. Sau khi khởi động, CPU
bắt đầu thực hiện chương trình ở vị trí 0000H. Hình 2.3 mô tả địa chỉ ngắt mặc
định trên bộ nhớ chương trình. Mối khi xảy ra ngắt, con trỏ của CPU sẽ nhảy
đến đúng địa chỉ ngắt tương ứng và thực thi chương trình tại đó. Ví dụ ngắt
ngoài 0 sẽ có địa chỉ là 0003H, khi xảy ra ngắt ngoài 0 thì con trỏ chương trình

sẽ nhảy đến đúng địa chỉ 0003H để thực thi chương trình tại đó. Nếu trong
chương trình ứng dụng không xử dụng đến ngắt ngoài 0 thì địa chỉ 0003H vẫn
có thể dùng cho mục đích khác (sử dụng cho bộ nhớ chương trình).

13


Hình 2.4: Cấu trúc bộ nhớ dữ liệu
Hình 2.4 mô tả cấu trúc bộ nhớ dữ liệu trong và bộ nhớ dữ liệu ngoài của
họ vi điều khiển 8051. CPU sẽ dùng đến các chân RD và WR khi truy cập đến
bộ nhớ dữ liệu ngoài.
Hình 2.5 mô tả cấu trúc bộ nhớ dữ liệu trong chip, được chia thành 3
khối là 128 byte thấp, 128 byte cao và 128 byte đặc biệt.

Hình 2.5: Cấu trúc bộ nhớ trong
8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong
các byte ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại
chứa trong các thanh ghi đặc biệt. Ngoài ra 8051 còn có các port xuất/nhập có

14


thể định địa chỉ từng bit, điều này làm đơn giản việc giao tiếp bằng phần mềm
với các thiết bị xuất/nhập đơn bit.
Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên
dưới vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể được sử dụng tương
tự. Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy
xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp.
Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy
xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp.

Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng đặc
biệt SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH. Cần lưu ý là
không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có 21
địa chỉ được định nghĩa.
d. Các thanh ghi đặc biệt

8051 có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên của Ram
nội từ địa chỉ 80H đến FFH. Cần lưu ý là không phải tất cả 128 địa chỉ từ 80H
đến FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa. Hình
2.6 mô tả các thanh ghi đặc biệt trong vùng nhớ dữ liệu 80H đến FFH và giá trị
của chúng sau khi Reset.

15


Hình 2.6: Các thanh ghi đặc biệt
Thanh ghi chính:
Thanh ghi tính toán chính của vi điều khiển 8051 ACC (Accumulator).
Là thanh ghi đặc biệt của 8051 dùng để thực hiện các phép toán của CPU,
thường kí hiệu là A.
Thanh ghi phụ:
Thanh ghi tính toán phụ của vi điều khiển 8051 là B. Thanh ghi B ở địa
chỉ F0H được dùng chung với thanh chứa A trong các phép toán nhân, chia.
Lệnh MUL AB nhân 2 số 8 bit không dấu chứa trong A và B và chứa kết quả

16


16 bit vào cặp thanh ghi B, A (thanh chứa A cất byte thấp và thanh ghi B cất
byte cao).

Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư
số cất trong thanh ghi B. Thanh ghi B còn được xử lý như một thanh ghi nháp.
Các bit được định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H.
Thanh ghi trạng thái chương trình (PSW):
Thanh ghi trạng thái chương trình PSW (địa chỉ: D0H) là thanh ghi mô tả
toàn bộ trạng thái chương trình đang hoạt động của hệ thống. Bảng 2.2 và Bảng
2.3 sẽ mô tả thanh ghi này.
7

6

5

4

3

2

1

0

CY

AC

F0

RS1


RS0

0V

-

P

Bảng 2.2: Thanh ghi trạng thái chương trình PSW
Bit

Mô tả bit
Ký Hiệu

Địa Chỉ

PSW.7

CY

D7H

PSW.6

AY

D6H

PSW.5


FO

D5H

PSW.4

RS1

D4H

PSW.3

RS0

D3H

PSW.2

0V

D2H

PSW.1

-

D1H

Cờ nhớ (Carry Flag): được Set nếu có Bit

nhớ từ Bit 7 trong phép cộng hoặc có Bit
mượn cho Bit 7 trong phép trừ.
Cờ nhớ phụ: được Set trong phép cộng nếu
có Bit nhớ từ Bit 3 sang Bit 4 hoặc kết quả
trong 4 Bit thấp nằm trong khoảng 0AH>0FH.
Cờ O: dành cho người sử dụng.
Chọn dãy thanh ghi (Bit 1)
Chọn dãy thanh ghi (Bit 0)
00=Bank 0: Địa chỉ 00H->07H
01=Bank 1: Địa chỉ 08H->0FH
10=Bank 2: Địa chỉ 10H->17H
11=Bank 3: Địa chỉ 18H->1FH
Cờ tràn (Overflow Flag): được Set khi phép
toán có dấu có kết quả > +127 hoặc < -128.
Chưa dùng

17


PSW.0

P

D0H

Cờ kiểm tra chẵn lẻ: được Set hoặc Clear
bởi phần cứng sau mỗi 1 chu kỳ lệnh, để chỉ
ra rằng có 1 số chẵn hoặc số lẻ Bit 1 trong
thanh chứa.


Bảng 2.3: Chi tiết các bit trong thanh ghi PSW
Thanh ghi ngăn xếp (Stack Pointer):
Con trỏ stack SP (stack pointer) là 1 thanh ghi 8 bit ở địa chỉ 81H. SP
chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack. Các lệnh liên quan đến
satck bao gồm lệnh cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack. Việc
cất vào stack làm tăng SP trước khi ghi dữ liệu và việc lấy dữ liệu ra khỏi stack
sẽ giảm SP. Vùng stack của 8051 được giữ trong RAM nội và được giới hạn
đến các địa chỉ truy xuất được bởi kiểu định địa chỉ gián tiếp. Các lệnh PUSH
và POP sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack, các lệnh gọi chương
trình con (ACALL, LCALL) và lệnh trở về (RET, RETI) cũng cất và phục hồi
nội dung của bộ đếm chương trình PC (Program counter)
Con trỏ dữ liệu DPTR:
Con trỏ dữ liệu DPTR (data pointer) được dùng để truy xuất bộ nhớ
chương trình ngoài hoặc bộ nhớ dữ liệu ngoài. DPTR là một thanh ghi 16 bit có
địa chỉ là 82H (DPL, byte thấp) và 83H (DPH, byte cao).
Thanh ghi các cổng P0-P3:
Các port xuất/nhập của 8051 bao gồm Port 0 tại địa chỉ 80H, Port 1 tại
địa chỉ 90H, Port 2 tại địa chỉ A0H và Port 3 tại địa chỉ B0H. Tất cả các port đều
được định địa chỉ từng bit nhằm cung cấp các khả năng giao tiếp mạnh.
Thanh ghi bộ đệm truyền thông nối tiếp (Serial Data Buffer):
Bộ đệm truyền thông được chia thành hai bộ đệm, bộ đệm truyền dữ liệu
và bộ đệm nhận dữ liệu. Khi dữ liệu được chuyển vào thanh ghi SBUF, dữ liệu
18


sẽ được chuyển vào bộ đệm truyền dữ liệu và sẽ được lưu giữ ở đó cho đến khi
quá trình truyền dữ liệu qua truyền thông nối tiếp kết thúc. Khi thực hiện việc
chuyển dữ liệu từ SBUF ra ngoài, dữ liệu sẽ được lấy từ bộ đệm nhận dữ liệu
của truyền thông nối tiếp.
Thanh ghi của bộ định thời/bộ đếm:

8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng
thời gian hoặc để đếm các sự kiện. Các cặp thanh ghi (TH0, TL0) và (TH1,
TL1) là các thanh ghi của bộ đếm thời gian. Bộ định thời 0 có địa chỉ 8AH
(TL0, byte thấp) và 8CH (TH0, byte cao). Bộ định thời 1 có địa chỉ 8BH (TL1,
byte thấp) và 8DH (TH1, byte cao).
Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời
TMOD (Timer Mode Register) ở địa chỉ 88H. Chỉ có TCON được định địa chỉ
từng bit.
Các thanh ghi điều khiển:
Các thanh ghi điều khiển đặc biệt như IP, IE, TMOD, TCON, SCON và
PCON là các thanh ghi điều khiển và ghi nhận trạng thái của hệ thống ngắt, bộ
đếm/định thời, truyền thông nối tiếp. Chi tiết của các thanh ghi này sẽ được mô
tả sau.
e. Các bộ định thời của 8051

8051 có hai bộ định thời là Timer 0 và Timer 1, ở phần này chúng ta
bàn về các thanh ghi của chúng và sau đó trình bày cách lập trình chúng như thế
nào để tạo ra các độ trễ thời gian.
Cả hai bộ định thời Timer 0 và Timer 1 đều có độ dài 16 bit được truy
cập như hai thanh ghi tách biệt byte thấp và byte cao. Chúng ta sẽ bàn riêng về
từng thanh ghi.
Các thanh ghi của bộ Timer 0
19


Thanh ghi 16 bit của bộ Timer 0 được truy cập như byte thấp và byte cao:
 Thanh ghi byte thấp được gọi là TL0 (Timer0 Low byte).
 Thanh ghi byte cao được gọi là TH0 (Timer0 High byte).
Các thanh ghi này có thể được truy cập, hoặc được đọc như mọi thanh ghi
khác chẳng hạn như A, B, R0, R1, R2 v.v...

Các thanh ghi của bộ Timer 1
Giống như timer 0, bộ định thời gian Timer 1 cũng dài 16 bit và thanh
ghi 16 bit của nó cũng được chia ra thành hai byte là TL1 và TH1. Các thanh
ghi này được truy cập và đọc giống như các thanh ghi của bộ Timer 0 ở trên.

Thanh ghi TMOD
Cả hai bộ định thời Timer 0 và Timer 1 đều dùng chung một thanh ghi được
gọi là TMOD: để thiết lập các chế độ làm việc khác nhau của bộ định thời.
Thanh ghi TMOD là thanh ghi 8 bit gồm có:
 4 bit thấp để thiết lập cho bộ Timer 0.
 4 bit cao để thiết lập cho Timer 1.
Trong đó:
 2 bit thấp của chúng dùng để thiết lập chế độ của bộ định thời.
 2 bit cao dùng để xác định phép toán.
2. Vi điều khiển 8052

Bộ vi điều khiển 8052 là thành viên khác của họ 8051, 8052 có tất cả các
đặc tính chuẩn của 8051 ngoài ra nó có thêm 128 byte RAM và một bộ định
thời nữa. Hay nói cách khác là 8052 có 256 byte RAM và 3 bộ định thời, nó
cũng có 8K byte ROM trên chíp thay vì 4K byte như 8051.
Bảng 2.4. So sánh các đặc tính của các thành viên họ 8051.

20


Đặc tính

ROM trên chip
RAM
Bộ định thời

Chân vào – ra

8051

4K byte
128 byte
2
32
1
6

8052

8K byte
256 byte
3
32
1
8

8031

0K
128 byte
2
32
1
6

Cổng nối tiếp

Nguồn cắt

Qua bảng trên ta thấy thì 8051 là tập con của 8052, nên mọi chương trình
viết cho 8051 đều chạy được trên 8052 nhưng điều ngược lại là không đúng.
3. Vi điều khiển 8031

Một thành viên khác của 8051 là chíp 8031. Chíp này không có ROM
trên chíp nên để sử dụng chíp này ta phải bổ sung ROM ngoài cho nó, ROM
ngoài phải chứa chương trình mà 8031 sẽ nạp và thực hiện. So với 8051 mà
chương trình được chứa trong ROM trên chíp bị giới hạn bởi 4K byte, còn
ROM ngoài chứa chƣơng trình được gắn vào 8031 thì có thể lớn đến 64K byte.
Khi bổ xung cổng, như vậy chỉ còn lại hai cổng để thao tác. Để giải quyết vấn
đề này ta có thể bổ xung cổng vào ra cho 8031 bằng cách phối ghép 8031 với bộ
nhớ và cổng vào ra chẳng hạn với chíp 8255. Ngoài ra còn có các phiên bản
khác nhau về tốc độ của 8031 từ các hãng sản xuất khác nhau.
II.

HỌ VI ĐIỀU KHIỂN PIC
PIC là viết tắt của “Programable Intelligent Computer”, có thể tạm dịch

là “máy tính thông minh khả trình” do hãng Genenral Instrument đặt tên cho
vi điều khiển đầu tiên của họ: PIC1650 được thiết kế để dùng làm các thiết bị
ngoại vi cho vi điều khiển CP1600. Vi điều khiển này sau đó được nghiên cứu
phát triển thêm và từ đó hình thành nên dòng vi điều khiển PIC ngày nay.
21


Hiện nay trên thị trường có rất nhiều họ vi điều khiển như 8051,
Motorola 68HC, AVR, ARM,... Ngoài họ 8051 được hướng dẫn một cách căn
bản ở môi trường đại học, bản thân người viết đã chọn họ vi điều khiển PIC để mở

rộng vốn kiến thức và phát triển các ứng dụng trên công cụ này vì các nguyên
nhân sau:
+ Họ vi điều khiển này có thể tìm mua dễ dàng tại thị
trường Việt Nam. Giá thành không quá đắt
+ Có đầy đủ các tính năng của một vi điều khiển khi hoạt động độc lập.
Là một sự bổ sung rất tốt về kiến thức cũng như về ứng dụng cho họ vi
điều khiển mang tính truyền thống: họ vi điều khiển 8051.
Số lượng người sử dụng họ vi điều khiển PIC. Hiện nay tại Việt Nam cũng
như trên thế giới, họ vi điều khiển này được sử dụng khá rộng rãi. Điều này tạo nhiều
thuận lợi trong quá trình tìm hiểu và phát triển các ứng dụng như: số lượng tài liệu,
số lượng các ứng dụng mở đã được phát triển thành công, dễ dàng trao đổi, học tập,
dễ dàng tìm được sự chỉ dẫn khi gặp khó khăn,…
Sự hỗ trợ của nhà sản xuất về trình biên dịch, các công cụ lập trình, nạp
chương trình từ đơn giản đến phức tạp,…
Các tính năng đa dạng của vi điều khiển PIC, và các tính năng này không
ngừng được phát triển.
1.

Kiến trúc PIC
Cấu trúc phần cứng của một vi điều khiển được thiết kế theo hai dạng kiến

trúc: kiến trúc Von Neuman và kiến trúc Havard.

22


Hình 2.7: Kiến trúc Havard và kiến trúc Von-Neuman
Tổ chức phần cứng của PIC được thiết kế theo kiến trúc Havard. Điểm khác
biệt giữa kiến trúc Havard và kiến trúc Von-Neuman là cấu trúc bộ nhớ dữ liệu và bộ
nhớ chương trình.

Đối với kiến trúc Von-Neuman, bộ nhớ dữ liệu và bộ nhớ chương trình nằm
chung trong một bộ nhớ, do đó ta có thể tổ chức, cân đối một cách linh hoạt bộ nhớ
chương trình và bộ nhớ dữ liệu. Tuy nhiên điều này chỉ có ý nghĩa khi tốc độ xử lí của
CPU phải rất cao, vì với cấu trúc đó, trong cùng một thời điểm CPU chỉ có thể
tương tác với bộ nhớ dữ liệu hoặc bộ nhớ chương trình. Như vậy có thể nói kiến
trúc Von-Neuman không thích hợp với cấu trúc của một vi điều khiển.
Đối với kiến trúc Havard, bộ nhớ dữ liệu và bộ nhớ chương trình tách ra
thành hai bộ nhớ riêng biệt. Do đó trong cùng một thời điểm CPU có thể tương
tác với cả hai bộ nhớ, như vậy tốc độ xử lí của vi điều khiển được cải thiện đáng kể.
Một điểm cần chú ý nữa là tập lệnh trong kiến trúc Havard có thể được tối
ưu tùy theo yêu cầu kiến trúc của vi điều khiển mà không phụ thuộc vào cấu trúc dữ
liệu. Ví dụ, đối với vi điều khiển dòng 16F, độ dài lệnh luôn là 14 bit (trong khi dữ
liệu được tổ chức thành từng byte), còn đối với kiến trúc Von-Neuman, độ dài
lệnh luôn là bội số của 1 byte (do dữ liệu được tổ chức thành từng byte).
Các dòng PIC và cách lựa chọn vi điều khiển PIC
Các kí hiệu của vi điều
khiển PIC:
PIC12xxxx: độ dài
23


lệnh 12 bit
PIC16xxxx: độ dài
lệnh 14 bit
PIC18xxxx: độ dài
lệnh 16 bit
C: PIC có bộ nhớ EPROM (chỉ có 16C84 là
EEPROM) F:
PIC có bộ nhớ flash
LF: PIC có bộ nhớ flash hoạt động ở điện

áp thấp LV: tương tự như LF, đây là kí
hiệu cũ
Bên cạnh đó một số vi điệu khiển có kí hiệu xxFxxx là EEPROM, nếu có thêm
chữ A ở cuối là flash (ví dụ PIC16F877 là EEPROM, còn PIC16F877A là flash).
Ngoài ra còn có thêm một dòng vi điều khiển PIC mới là dsPIC.
ở Việt Nam phổ biến nhất là các họ vi điều khiển PIC do hãng Microchip sản
xuất.
Cách lựa chọn một vi điều khiển PIC phù hợp:
Trước hết cần chú ý đến số chân của vi điều khiển cần thiết cho ứng dụng. Có
nhiều vi điều khiển PIC với số lượng chân khác nhau, thậm chí có vi điều khiển
chỉ có 8 chân, ngoài ra còn có các vi điều khiển 28, 40, 44, … chân.
Cần chọn vi điều khiển PIC có bộ nhớ flash để có thể nạp xóa chương
trình được nhiều lần hơn.
Tiếp theo cần chú ý đến các khối chức năng được tích hợp sẵn trong vi điều
khiển, các chuẩn giao tiếp bên trong.
Sau cùng cần chú ý đến bộ nhớ chương trình mà vi điều khiển cho phép.
Ngoài ra mọi thông tin về cách lựa chọn vi điều khiển PIC có thể được tìm
thấy trong cuốn sách “Select PIC guide” do nhà sản xuất Microchip cung cấp.
2. Ngôn ngữ lập trình cho PIC

Ngôn ngữ lập trình cho PIC rất đa dạng. Ngôn ngữ lập trình cấp thấp có
MPLAB (được cung cấp miễn phí bởi nhà sản xuất Microchip), các ngôn ngữ lập
trình cấp cao hơn bao gồm C, Basic, Pascal, … Ngoài ra còn có một số ngôn ngữ
lập trình được phát triển dành riêng cho PIC như PICBasic, MikroBasic,…
24


3.

Vi điều khiển PIC16F877A

a. Hình dạng và bố trí chân của Pic16F877A

b. Đặc tính nổi bật của bộ xử lý.

Sử dụng công nghệ tích hợp cao RICSC CPU
Người sử dụng có thể lập trình với các câu lệnh đơn giản
Tất cả các câu lệnh thực hiện trong 1 chu kì ngoại trừ một số lệnh rẽ
nhánh thực hiện trong 2 chu kì.
Tốc độ hoạt động là : - Xung đồng hồ vào la DC-20MHz
- Chu kì lệnh thực hiện trong 200ns
Bộ nhớ chương trình Flash 8Kx14 Words
Bộ nhớ Ram 368x8 bytes
Bộ nhớ EFPROM 256x8 bytes.
c. Sơ đồ khối

25


×