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

Đồ Á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

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

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
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
……
……

…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
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

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à

Đồ Á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.

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.

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

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):

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 để


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status