Tải bản đầy đủ (.doc) (46 trang)

đồ án tốt nghiệp lập trình đèn giao thông

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 (971.33 KB, 46 trang )

Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA ĐIỆN TỬ VIỄN THÔNG
ĐỒ ÁN TỐT NGHIỆP
LẬP TRÌNH VĐK 8051
BẰNG NGÔN NGỮ C
Giáo viên hướng dẫn : Lê Thanh Xuyến
Sinh viên thực hiện : Đỗ Quốc Phương
Lớp : CĐ 21.5 – K56
Hà Nội 17/05/2014
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
1
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
ĐỒ ÁN
TỐT NGHIỆP CAO ĐẲNG
Đề tài: LẬP TRÌNH CHO VI ĐIỀU KHIỂN
8051
BẰNG NGÔN NGỮ C.
Giảng viên hướng dẫn : TH.S LÊ THANH XUYẾN
Sinh viên thực hiện: ĐỖ QUỐC PHƯƠNG
Lớp : CĐ 21.5
Khoá : K56 (2011-2014)
Hệ : CAO ĐẲNG
Hà Nội, tháng 06 /2014
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
2
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
ĐẠI HỌC BÁCH KHOA HÀ NỘI CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do – Hạnh phúc
KHOA ĐIỆN TỬ VIỄN THÔNG
ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP CAO ĐẲNG


Họ và tên sinh viên: ĐỖ QUỐC PHƯƠNG
Lớpp: CĐ 21.5 Khoá: K56 (2011-2014)
Ngành đào tạo: Điện Tử - Viễn Thông Hệ đào tạo: Cao Đẳng
1/ Tên đồ án tốt nghiệp:
LẬP TRÌNH VI ĐIỀU KHIỂN 8051 BẰNG NGÔN NGỮ C
2/ Nội dung chính của đồ án:
1/…………… ……… ……….……………………………………………………………….
2/………………… … ……….……………………………………………………………….
3/……………………… ……….……………………………………………………………….
4/……………………… ……….……………………………………………………………….
………………… … ……….………………………………………………………………….
………………… … ……….………………………………………………………………….
3/ Cơ sở dữ liệu ban đầu
…………… ……… ……….………………………………………………………………….
…………………… ……….………………………………………………………………….
…………………… ……….………………………………………………………………….
…………………… ……….………………………………………………………………….
4/ Ngày giao đồ án: /11/2008
5/ Ngày nộp đồ án : /02/2009
TRƯỞNG BỘ MÔN (Duyệt) GIÁO VIÊN HƯỚNG DẪN
(Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên)

TRƯỞNG KHOA
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
3
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
MỞ ĐẦU
(Bold, size 14, xếp sau trang nhiệm vụ- đề tài)
Trong những năm gần đây trên thế giới cùng với sự phát triển mạnh mẽ của ngành
công nghiệp chế tạo linh kiện bán dẫn và vi mạch tổng hợp, một hướng phát triển

mới của các vi xử lý đã hình thành đó là các vi điều khiển. Với nhiều ưu điểm, vi
điều khiển đã được sử dụng rộng rãi trên nhiều lĩnh vực khác nhau. Bằng cách áp
dụng vi đều khiển trong quá trình sản xuất và xử lý, vi điều khiển đã thực sự thể hiện
được ưu thế của mình so với các thiết bị điều khiển thông thường.Vì những lý do
trên, trong nhiều trường Đại Học, Cao Đẳng, vi xử lý thực sự trở thành một môn học
hết sức quan trọng, vi xử lý 8051 gần như là một môn học sử dụng để trang bị cho
chúng ta những kiến thức cơ bản về vi xử lý, từ đó mở rộng ra các loại vi xử lý khác
có cấu trúc phức tạp hơn như AVR, PIC, Qua Bài tập này, đã giúp chúng em có được
hình dung thực tế vi xử lý được áp dụng như thế nào trong cuộc sống hiện đại, cụ thể
chính là hệ thống đèn giao thông dùng vi điều khiển AT89C51
Ngày nay, những ứng dụng của Vi điều khiển đã đi sâu vào đời sống sinh hoạt
và sản xuất của con người. Thực tế hiện nay là hầu hết các thiết bị điện dân dụng
hiện nay đều có sự góp mặt của Vi Điều Khiển và vi xử lí . Ứng dụng vi điều khiển
trong thiết kế hệ thống làm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời
nâng cao tính ổn định của thiết bị và hệ thống.Trên thị trường có rất nhiều họ vi điều
khiển: họ 8051 của Intel, 68HC11 của Motorola, Z80 của hãng Zilog, PIC của hãng
Microchip, H8 của Hitachi,vv…
Việc phát triển ứng dụng các hệ vi xử lý đòi hỏi những hiểu biết cả về phần
cứng cũng như phần mềm, nhưng cũng chính vì vậy mà các hệ vi xử lý được sử dụng
để giải quyết những bài toán rất khác nhau. Tính đa dạng của các ứng dụng phụ
thuộc vào việc lựa chọn các hệ vi xử lý cụ thể cũng như vào kỹ thuật lập trình.
Ngày nay các bộ vi xử lý có mặt trong rất nhiều thiết bị điện tử hiện đại: từ
đầu đĩa CD, máy thu hình, máy ghi hình, dàn âm thanh HiFi, bộ điều khiển lò sưởi
cho đến các thiết bị điều khiển dùng trong công nghiệp. Lĩnh vực ứng dụng của các
hệ vi xử lý cũng rất rộng lớn: từ nguyên cứu khoa học, truyền dữ liệu, đến công
nghiệp, năng lượng, giao thông và y tế…
Tùy theo kinh nghiệm và mức độ thông thạo mà chúng ta có thể sử dụng các
ngôn ngữ khác ngoài hợp ngữ như: C, C
++
, Visual basic để có những chương trình

chất lượng cao hơn.
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
4
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với những
sự hỗ trợ, giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người
khác. Trong suốt thời gian từ khi bắt đầu học tập ở giảng đường đại học
đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô,
gia đình và bạn bè.
Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô ở Khoa
Điện Tử Viễn Thông – Trường Đại Học Bách Khoa Hà Nội với
tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho
chúng em trong suốt thời gian học tập tại trường. Và đặc biệt, trong học kỳ
này, Khoa đã tổ chức cho chúng em được tiếp cận với môn học mà theo em
là rất hữu ích đối với sinh viên ngành Điện Tử - Viễn Thông cũng như tất cả
các sinh viên thuộc các chuyên ngành Khoa Học Kĩ Thuật khác. Đó là môn
học “Lập Trình Vi Điều Khiển”.
Em xin chân thành cảm ơn TH.S LÊ THANH XUYẾN đã tận tâm
hướng dẫn chúng em qua từng buổi học trên lớp cũng như những buổi nói
chuyện, thảo luận về lĩnh vực lập trình vi điều khiển. Nếu không có những lời
hướng dẫn, dạy bảo của cô thì em nghĩ bài thu hoạch
này của em rất khó có thể hoàn thiện được. Một lần nữa, em xin chân thành
cảm ơn cô.
Bài thu hoạch được thực hiện trong khoảng thời gian gần 3 tuần. Bước
đầu đi vào thực tế, tìm hiểu về lĩnh vực lập trình cho vi điều khiển ,do kiến thức
của em còn hạn chế và còn nhiều bỡ ngỡ. Do vậy, không
tránh khỏi những thiếu sót là điều chắc chắn, em rất mong nhận được
những ý kiến đóng góp quý báu của quý Thầy Cô và các bạn học cùng lớp
để kiến thức của em trong lĩnh vực này được hoàn thiện hơn.

Lời Cảm Tạ
GVHD : TH.S LÊ THANH XUYẾN
|
SVTH : ĐỖ QUỐC PHƯƠNG
Sau cùng, em xin kính chúc quý Thầy Cô trong Khoa ĐIỆN TỬ VIỄN THÔNG
và Thầy Hiệu Trưởng - GS. TSKH. Hoàng Văn Kiếm cùng tất cả thầy cô trong
Trường Đại Học Bách Khoa Hà Nội thật dồi dào sức
khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt
kiến thức cho thế hệ mai sau.
Trân trọng.
HÀ NỘI, ngày 01 tháng 06 năm 2014
Sinh viên thực hiện
(ký và ghi họ tên)
Đỗ Quốc Phương
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
5
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
NHẬN XÉT
(Của giảng viên hướng dẫn)
… ……………… …………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
……………………… …………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
6
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
NHẬN XÉT
(Của giảng viên phản biện)
……………………… …………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
……………………… …………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
7
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
MỤC LỤC
Mở đầu:
/hi chú:
- In đậm và in hoa tiêu đề của các chương, mục lớn (toàn bộ size: 12)
- Chữ số thứ nhất chỉ thứ tự chương
- Chữ số thứ 2 chỉ thứ tự mục trong chương
- Chữ số thứ 3,…,chỉ thứ tự các tiểu mục
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
8
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
BÁNG 1.1
BẢNG 1.2
……
……
……
SƠ ĐỒ 1.1
……
……
……
HÌNH 1.1
……
……

Ghi chú:
- Xếp sau trang Mục lục
- Chữ số thứ nhất chỉ tên chương
- Chữ số thứ hai chỉ thứ tự bảng biểu, sơ đồ, hình,…trong mỗi chương
- Ở cuối mỗi bảng biểu, sơ đồ, hình,…trong mỗi chương phải có ghi chú, giải thích, nêu
rõ nguồn trích hoặc sao chụp,…
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
9
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
KÍ HIỆU CÁC CỤM TỪ VIẾT TẮT
TDM: Time Division Multiplexing Ghép kênh theo thời gian
TĐĐTS: Tổng đài điện tử số
Ghi chú:
Cụm từ viết viết tắt là các chữ cái và các ký hiệu thay chữ được viết liền nhau, để thay cho
một cụm từ có nghĩa thường được lặp nhiều lần trong văn bản hoặc được mọi người mặc nhiên
chấp nhận.
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
10
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
CHƯƠNG 1:
…………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
11
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
I. CHƯƠNG 1.
Giới thiệu về vi điều khiển 8051
Giới thiệu họ Vi điều khiển 8051
I - Tổng quan về họ 8051
1.1 Tóm tắt về lịch sử của 8051
Intel 8051 — là vi điều khiển đơn tinh thể (không nhầm với CPU) kiến trúc Harvard, lần đầu tiên
được sản xuất bởi Intel năm 1980, để dùng trong các hệ thống nhúng. Trong những năm 1980 và
đầu những năm 1990 đã rất nổi tiếng. Tuy nhiên hiện tại đã cũ và được thay thế bằng các thiết bị
hiện đại hơn, với các lõi phối hợp 8051, được sản xuất bởi hơn 20 nhà sản xuất độc lập, như
Atmel, Maxim IC (công ty con của Dallas Semiconductor), NXP Semiconductors (Philips
Semiconductor trước đây), Winbond, Silicon Laboratories, Texas Instruments và Cypress
Semiconductor. Tên gọi chính thức của họ vi điều khiển Intel 8051 — MCS 51.
Những vi điều khiển Intel 8051 được sản xuất với việc dùng công nghệ MOSFET, những những
bản sau, chứa kí hiệu «C» trong tên, như 80C51, dùng công nghệ CMOS và yêu cầu công suất
thấp, hơn những cái MOSFET trước (điều này cho phép trang bị cho các thiết bị với nguồn là pin).
Những đặc tính và ứng dụng quan trọng
Kiến trúc cơ bản bên trong 8051 bao gồm các đặt tính sau:
• Một ALU 8-bit, một thanh tích lũy và một thanh ghi 8-bit, do đó nó là một vi điều khiển 8-
bit
• bus dữ liệu 8-bit - có thể truy cập 8 bits dữ liệu trong một hoạt động.
• bus địa chỉ 16-bit - có thể truy cập 2
16

vị trí nhớ 64kB (65536 vị trí)cho mỗi bộ nhớ RAM
và ROM
• RAM trên chip - 128 bytes (bộ nhớ dữ liệu)
• ROM trên chip - 4 kbytes (bộ nhớ chương trình)
• 32 chân I/O riêng biệt (4 nhóm mỗi nhóm 8 chân I/O) có thể được truy cập riêng rẽ.
• Hai bộ định thời/đếm 16-bit
• Đơn vị thu/phát bất đồng bộ phổ biến UART hoàn toàn song công.
• Sáu nguyên nhân ngắt với 2 mức ưu tiên.
• Chế độ tiết kiệm năng lượng (trên 1 số phiên bản)
Lập trình
Đối với 8051 cho phép vài trình biên dịch từ ngôn ngữ lập trình C, phần lớn chúng hỗ trợ mở rộng
ngôn ngữ để dùng hiệu quả hơn các đặc tính của 8051. Ví dụ như, lập trình viên có thể cho biết,
trong kiểu nào từ 6 kiểu bộ nhớ 8051 cần giữ biến; có thể cho trình biên dịch biết, bằng cách nào
dùng các khối đăng ký chuyển và các chỉ dẫn để манипулирования các bậc registr riêng biệt. Để
lập trình 8051 có thể dùng các ngôn ngữ bậc cao khác: Forth, BASIC, Pascal, PL/M и Modula 2,
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
12
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
nhưng chúng không phổ biến như C và Assembler.
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 (xem hình 1). Mặc dù 8051 có thể có một ROM trên chíp
cực đại là 64 K byte, nhưng các nhà sản xuất lúc đó đã cho xuất xưởng chỉ với 4K byte ROM trên
chíp. Điều này sẽ được bàn chi tiết hơn sau này.
8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất khác 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 để mã lại 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 được bán bởi hơn nửa các nhà sản xuất. Đ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
của mì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.
Đặc tính Số lượng
ROM trên chíp
RAM
Bộ định thời
Các chân vào - ra
Cổng nối tiếp
Nguồn ngắt
4K byte
128 byte
2
32
1
6
Bảng 1: Các đặc tính cơ bản của 8051.
1.2 Bộ ví điều khiển 8051
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ó như là
MCS51. Bảng 1 trình bày các đặc tính của 8051.
1.3 Các thành viên khác của họ 8051
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
13
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
Có hai bộ vi điều khiển thành viên khác của họ 8051 là 8052 và 8031.
a- Bộ vi điều khiển 8052
Bộ vi điều khiển 8052 là một 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.
Đặc tính 8051 8052 8031
ROM trên chíp 4K byte 8K byte OK
RAM 128 byte 256 byte 128 byte
Bộ định thời 2 3 2
Chân vào ra 32 32 32
Cổng nối tiếp 1 1 1
Nguồn ngắt 6 8 6
Bảng 2: so sánh các đặc tính của các thành viên họ 8051.
Như nhìn thấy từ bảng 2 thì 8051 là tập con của 8052. Do vậy tất cả mọi chương trình viết
cho 8051 đều chạy trên 8052 nhưng điều ngược lại là không đúng.
b- Bộ vi điều khiển 8031
Một thành viên khác nữa của 8051 là chíp 8031. Chíp này thường được coi như là 8051
không có ROM trên chíp vì nó có OK byte ROM trên chíp. Để sử dụng chíp này ta phải bổ xung
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 trinh đượ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 2 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. Phối
phép 8031 với bộ nhớ và cổng vào - ra chẳng hạn với chíp 8255 được trình bày ở chương 14.
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.
1.4 Các bộ vi điều khiển 8051 từ các hãng khác nhau
Mặc dù 8051 là thành viên phổi biến nhất của họ 8051 nhưng chúng ta sẽ thấy nó trong
kho linh kiện. Đó là do 8051 có dưới nhiều dạng kiểu bộ nhớ khác nhau như UV - PROM, Flash
và NV - RAM mà chúng đều có số đăng ký linh kiện khác nhau. Việc bàn luận về các kiểu dạng
bộ nhớ ROM khác nhau sẽ được trình bày ở chương 14. Phiên bản UV-PROM của 8051 là 8751.
Phiên bản Flash ROM được bán bởi nhiều hãng khác nhau chẳng hạn của Atmel corp với tên gọi
là AT89C51 còn phiên bản NV-RAM của 8051 do Dalas Semi Conductor cung cấp thì được gọi là
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
14

Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
DS5000. Ngoài ra còn có phiên bản OTP (khả trình một lần) của 8051 được sản xuất bởi rất nhiều
hãng.
a- Bộ vi điều khiển 8751
Chíp 8751 chỉ có 4K byte bộ nhớ UV-EPROM trên chíp. Để sử dụng chíp này để phát
triển yêu cầu truy cập đến một bộ đốt PROM cũng như bộ xoá UV- EPROM để xoá nội dung của
bộ nhớ UV-EPROM bên trong 8751 trước khi ta có thể lập trình lại nó. Do một thực tế là ROM
trên chíp đối với 8751 là UV-EPROM nên cần phải mất 20 phút để xoá 8751 trước khi nó có thể
được lập trình trở lại. Điều này đã dẫn đến nhiều nhà sản xuất giới thiệu các phiên bản Flash Rom
và UV-RAM của 8051. Ngoài ra còn có nhiều phiên bản với các tốc độ khác nhau của 8751 từ
nhiều hãng khác nhau.
b- Bộ vi điều khiển AT8951 từ Atmel Corporation
Chíp 8051 phổ biến này có ROM trên chíp ở dạng bộ nhớ Flash. Điều này là lý tưởng đối
với những phát triển nhanh vì bộ nhớ Flash có thể được xoá trong vài giây trong tương quan so với
20 phút hoặc hơn mà 8751 yêu cầu. Vì lý do này mà AT89C51 để phát triển một hệ thống dựa trên
bộ vi điều khiển yêu cầu một bộ đốt ROM mà có hỗ trợ bộ nhớ Flash. Tuy nhiên lại không yêu cầu
bộ xoá ROM. Lưu ý rằng trong bộ nhớ Flash ta phải xoá toàn bộ nội dung của ROM nhằm để lập
trình lại cho nó. Việc xoá bộ nhớ Flash được thực hiện bởi chính bộ đốt PROM và đây chính là lý
do tại sao lại không cần đến bộ xoá. Để loại trừ nhu cầu đối với một bộ đốt PROM hãng Atmel
đang nghiên cứu một phiên bản của AT 89C51 có thể được lập trình qua cổng truyền thông COM
của máy tính IBM PC .
Số linh kiện ROM RAM Chân I/O Timer Ngắt Vcc Đóng vỏ
AT89C51 4K 128 32 2 6 5V 40
AT89LV51 4K 128 32 2 6 3V 40
AT89C1051 1K 64 15 1 3 3V 20
AT89C2051 2K 128 15 2 6 3V 20
AT89C52 8K 128 32 3 8 5V 40
AT89LV52 8K 128 32 3 8 3V 40
Bảng 3: Các phiên bản của 8051 từ Atmel (Flash ROM).
Chữ C trong ký hiệu AT89C51 là CMOS.

Cũng có những phiên bản đóng vỏ và tốc độ khác nhau của những sản phẩm trên đây. Xem
bảng 1.6. Ví dụ để ý rằng chữ “C” đứng trước số 51 trong AT 89C51 -12PC là ký hiệu cho CMOS
“12” ký hiệu cho 12 MHZ và “P” là kiểu đóng vỏ DIP và chữ “C” cuối cùng là ký hiệu cho thương
mại (ngược với chữ “M” là quân sự ). Thông thường AT89C51 - 12PC rất lý tưởng cho các dự án
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
15
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
của học sinh, sinh viên.
Mã linh kiện Tốc độ Số chân Đóng vỏ Mục đích
AT89C51-12PC 42MHZ 40 DTP Thương mại
Bảng 4: Các phiên bản 8051 với tốc độ khác nhau của Atmel.
c- Bộ vi điều khiển DS5000 từ hãng Dallas Semiconductor
Một phiên bản phổ biến khác nữa của 8051 là DS5000 của hãng Dallas Semiconductor. Bộ
nhớ ROM trên chíp của DS5000 ở dưới dạng NV-RAM. Khả năng đọc/ ghi của nó cho phép
chương trình được nạp vào ROM trên chíp trong khi nó vẫn ở trong hệ thống (không cần phải lấy
ra). Điều này còn có thể được thực hiện thông qua cổng nối tiếp của máy tính IBM PC. Việc nạp
chương trình trong hệ thống (in-system) của DS5000 thông qua cổng nối tiếp của PC làm cho nó
trở thành một hệ thống phát triển tại chỗ lý tưởng. Một ưu việt của NV-RAM là khả năng thay đổi
nội dung của ROM theo từng byte tại một thời điểm. Điều này tương phản với bộ nhớ Flash và
EPROM mà bộ nhớ của chúng phải được xoá sạch trước khi lập trình lại cho chúng.
Mã linh kiện ROM RAM Chân I/O Timer Ngắt Vcc Đóng vỏ
DS5000-8
DS5000-32
DS5000T-8
DS5000T-8
8K
32K
8K
32K
128

128
128
128
32
32
32
32
2
2
2
2
6
6
6
6
5V
5V
5V
5V
40
40
40
40
Bảng 5: Các phiên bản 8051 từ hãng Dallas Semiconductor.
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.
Còn có nhiều phiên bản DS5000 với những tốc độ và kiểu đóng gói khác nhau.( Xem bảng
1.8). Ví dụ DS5000-8-8 có 8K NV-RAM và tốc đọ 8MHZ. Thông thường DS5000-8-12 hoặc
DS5000T-8-12 là lý tưởng đối với các dự án của sinh viên.

Mã linh kiện NV- RAM Tốc độ
DS5000-8-8
DS5000-8-12
DS5000-32-8
DS5000T-32-12
DS5000-32-12
8K
8K
32K
32K
32K
8MHz
12MHz
8MHz
8MHz (with RTC)
12MHz
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
16
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
DS5000-8-12 8K 12MHz (with RTC)
Bảng 6:Các phiên bản của DS5000 với các tốc độ khác nhau
d- Phiên bản OTP của 8051
Các phiên bản OTP của 8051 là các chíp 8051 có thể lập trình được một lần và được cung
cấp từ nhiều hãng sản xuất khác nhau. Các phiên bản Flash và NV-RAM thường được dùng để
phát triển sản phẩm mẫu. Khi một sản pohẩm được thiết kế và được hoàn thiện tuyệt đối thì phiên
bản OTP của 8051 được dùng để sản hàng loạt vì nó rẻ hơn rất nhiều theo giá thành một đơn vị sản
phẩm.
e- Họ 8051 từ Hãng Philips
Một nhà sản xuất chính của họ 8051 khác nữa là Philips Corporation. Thật vậy, hãng này
có một dải lựa chọn rộng lớn cho các bộ vi điều khiển họ 8051. Nhiều sản phẩm của hãng đã có

kèm theo các đặc tính như các bộ chuyển đổi ADC, DAC, cổng I/0 mở rộng và cả các phiên bản
OTP và Flash.
II - Giới thiệu Kiến trúc Vi điều khiển 8051
2.1 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 1 và hình 2 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).
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
17
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
Hình 1: Cấu trúc 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à 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.
Bộ nhớ chương trình:
Hình 2: Cấu trúc bộ nhớ chương trình
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
18
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN

Hình 3: Địa chỉ các ngắt trên bộ nhớ chương trình
Hình 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 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).
Bộ nhớ dữ liệu:
Hình 4: Cấu trúc bộ nhớ dữ liệu
Hình 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 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.
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
19
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
Hình 5: Cấu trúc bộ nhớ trong
Hình 6 mô tả cấu trúc 128 byte thấp của bộ nhớ dữ liệu của họ vi điều khiển 8051. 32 byte
đầu tiên (00H-1FH) được sử dụng cho 4 bộ 8 thanh ghi R0-R7. Hai bit của thanh ghi đặc biệt PSW
sẽ lựa chọn 1 trong 4 bộ thanh ghi mà vi điều khiển sẽ dùng trong khi thực thi chương trình.
Hình 6: Cấu trúc 128 byte thấp của bộ nhớ dữ liệu 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ó 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
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang

20
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
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.
Hình 7: 128 byte cao của bộ nhớ dữ liệu
2.2 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 8 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.
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
21
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
Hình 8: 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 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
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
22
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
chương trình đang hoạt động của hệ thống. Bảng 7 và Bảng 8 sẽ mô tả thanh ghi này.
7 6 5 4 3 2 1 0
CY AC F0 RS1 RS0 OV - P
Bảng 7: Thanh ghi trạng thái chương trình PSW
Bit Ký Hiệu Địa Chỉ Mô tả Bit
PSW.7 CY D7H
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ừ.
PSW.6 AC D6H
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.
PSW.5 FO D5H Cờ O: dành cho người sử dụng.
PSW.4 RS1 D4H Chọn dãy thanh ghi (Bit 1)
PSW.3 RS0 D3H
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
PSW.2 OV D2H
Cờ tràn (Overflow Flag): được Set khi phép toán có dấu có
kết quả > +127 hoặc < -128.
PSW.1 - D1H Chưa dùng
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 8: 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
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
23
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
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 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.
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
24
Đồ Án Tốt Nghiệp GVHD : LÊ THANH XUYẾN
, Một số chip 8051 thông dụng:
SVTH: Đỗ Quốc Phương MSV : C1100663 – LỚP CĐ21.5 - K56 Trang
25

×