Học vi xử lý 89c51 với led đơn

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
NGHIÊN CỨU SỬ DỤNG CHÍP VI ĐIỀU KHIỂN
ATMEL 89C51 DÙNG NGẮT ĐIỀU KHIỂN LED
ĐƠN
Giáo viên hướng dẫn: Nguyễn Thị Huế
Sinh viên thực hiện:
1. Nguyễn Văn Tú – 20115747
2. Chu Duy Tú – 20115744
3. Mai Anh Tuấn - 20115812
Hà Nôi Tháng 1 Năm 2014
1
ĐỒ ÁN I
LỜI CẢM ƠN
Xin chân thành cảm ơn tất cả các Thầy Cô trong Trường Đại Học Bách Khoa Hà
Nội đã dạy dỗ chúng em cho đến ngày hôm nay, Xin chân thành cảm ơn các Thầy Cô của
Viện Điện.
Xin chân thành cảm ơn cô Nguyễn Thị Huế, người đã gợi ý và hướng dẫn thảo luận
và giúp đỡ chúng em thực hiện môn học Đồ Án I này.
Và xin cảm ơn tất cả những người đã gián tiếp tạo điều kiện thuận lợi trong quá
trình thực hiện môn học này.
Dù đã cố rất gắng nhưng vẫn không tránh khỏi sai sót, xin được học hỏi những lời
chỉ dẫn. Xin chân thành cảm ơn!

Người thực hiện:
1. Nguyễn Văn Tú- 20115747
2. Chu Duy Tú- 20115744
3. Mai Anh Tuấn-20115812
2

MỤC LỤC
3
GIỚI THIỆU ĐỀ TÀI
1. LỜI NÓI ĐẦU
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. Vi điều được ứng dụng trong các dây chuyên tự động, các Robot, trong máy
giặt, ô tô, mạch chống trộm, mạch báo cháy, mạch điều khiển động cơ v.v
Vi điều khiển 89C51 [VĐK8051] là sự tích hợp một bộ nhớ, 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. Họ
8051 là một trong những bộ vi điều khiển 8-bit mạnh và linh hoạt nhất, đã trở thành bộ
vi điều khiển hàng đầu trong những năm gần đây. VĐK8051 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ự liệ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, kết cấu mạch điện danh 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 có giá thành rẻ 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 phức tạp.
2. ĐẶT VẤN ĐỀ
Trong những năm gần đây, quang báo là một trong những hình thức quảng cáo
hiệu quả, đầy sinh động và được ứng dụng rộng rãi trong nhiều lĩnh vực. Việc hằng
ngày đi ra đường và bắt gặp những biển quảng cáo xanh đỏ nhiều màu sắc, chớp nháy
với nhiều hình thức, gây cho ta những ấn tượng. Đẹp và sinh động, gây ra sự chú ý, đó
chính là công dụng của các biển quang báo quảng cáo mà bạn bắt gặp hằng ngày.
Quảng cáo cho một thương hiệu, một cái tên, một dịch vụ hay là bảng thông báo ở nơi
công cộng giờ đây đã trở nên rất gần gủi với chúng ta trong cuộc sống hiện đại,cuôc
sống công nghệ điện tử. Xuất phát điểm từ những kiến thức được học từ ghế nhà
trường, môn Vi điều khiển và ứng dụng đã phần nào giải đáp những thắc mắc về công
nghệ, những kỹ thuật được ứng dụng để tạo nên những sản phẩm bắt mắt đầy công
dụng. Đó là những ứng dụng cơ bản nhất của việc ứng dụng vi điều khiển. Học, nghiên
cứu vi điều khiển, với mong muốn được tiếp cận gần hơn với các ứng dụng , đặc biệt là

gần hơn với lĩnh vực quang báo, quảng cáo.
4
Vì vậy, nhóm em chọn đề tài “NGHIÊN CỨU SỬ DỤNG CHÍP VI ĐIỀU
KHIỂN ATMEL 89C51 DÙNG NGẮT ĐIỀU KHIỂN LED ĐƠN” để thực hiện.
CHƯƠNG I: GIỚI THIỆU TỔNG QUAN
VỀ VI ĐIỀU KHIỂN 89C51
1. GIỚI THIỆU CẤU TRÚC PHẦN CỨNG HỌ MSC-51 [8951]
Đặc điểm và chức năng hoạt động của các IC 8951 là một họ IC vi điều khiển do
hãng Intel
Mỹ sản xuất. Chúng có các đặc điểm chung như sau:
Các đặc điểm của 8951 được tóm tắt như sau :
- 8 KB EPROM bên trong.
- 128 Byte RAM nội.
- 4 Port xuất /nhập I/O 8 bit.
- Giao tiếp nối tiếp.
- 64 KB vùng nhớ mã ngoài
- 64 KB vùng nhớ dữ liệu ngoại.
- Xử lí Boolean [hoạt động trên bit đơn].
- 210 vị trí nhớ có thể định vị bit.
- 4 µs cho hoạt động nhân hoặc chia.
5
6
2. KHẢO SÁT SƠ ĐỒ CHÂN 8951, CHỨC NĂNG TỪNG CHÂN
2.1 SƠ ĐỒ CHÂN 8951

Sơ đồ chân IC 8951
2.2 CHỨC NĂNG CÁC CHÂN CỦA 8951:
7
- 8951 có tất cả 40 chân có chức năng như các đường xuất nhập. Trong đó có 24
chân có tác dụng kép [có nghĩa 1 chân có 2 chức năng], mỗi đường có thể hoạt động

như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ
liệu và bus địa chỉ.
a.Các Port:
■ Port 0 : Port 0 là port có 2 chức năng ở các chân 32 – 39 của 8951. Trong các
thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO. Đối
với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ
liệu.
■ Port 1: Port 1 là port IO trên các chân 1-8. Các chân được ký hiệu P1.0, P1.1,
P1.2, … có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. Port 1 không có chức
năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài.
■ Port 2 : Port 2 là 1 port có tác dụng kép trên các chân 21- 28 được dùng như
các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ
mở rộng.
■ Port 3: Port 3 là port có tác dụng kép trên các chân 10 - 17. Các chân của port
này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt
của 8951 như ở bảng sau:
Các ngõ tín hiệu điều khiển :
■ Ngõ tín hiệu PSEN [Program store enable]:
- PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương
trình mở rộng thường được nói đến chân 0E\ [output enable] của Eprom cho phép đọc
các byte mã lệnh.
8
- PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh. Các mã lệnh
của chương trình được đọc từ Eprom qua bus dữ liệu và được chốt vào thanh ghi lệnh
bên trong 8951 để giải mã lệnh. Khi 8951 thi hành chương trình trong ROM nội PSEN
sẽ ở mức logic 1.
■ Ngõ tín hiệu điều khiển ALE [Address Latch Enable ] :
- Khi 8951 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus
dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30
dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối

chúng với IC chốt.
- 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 chốt địa chỉ hoàn toàn tự động. Các xung tín hiệu ALE có tốc độ
bằng 1/6 lần tần số dao động trên chip và có thể được dùng làm tín hiệu clock cho các
phần khác của hệ thống. Chân ALE được dùng làm ngõ vào xung lập trình cho Eprom
trong 8951.
■ Ngõ tín hiệu EA\[External Access]:
- Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0. Nếu ở
mức 1, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8 Kbyte.
Nếu ở mức 0, 8951 sẽ thi hành chương trình từ bộ nhớ mở rộng. Chân EA\ được lấy
làm chân cấp nguồn 21V khi lập trình cho Eprom trong 8951.
■ Ngõ tín hiệu RST [Reset] :
-Ngõ vào RST ở chân 9 là ngõ vào Reset của 8951. Khi ngõ vào tín hiệu này đưa
lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích
hợp để khởi động hệ thống. Khi cấp điện mạch tự động Reset.
■ Các ngõ vào bộ dao động X1, X2:
- Bộ dao động được tích hợp bên trong 8951, khi sử dụng 8951 người thiết kế chỉ
cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường
sử dụng cho 8951 là 12Mhz.
■ Chân 40 [Vcc] được nối lên nguồn 5V.
9
3 CẤU TRÚC BÊN TRONG VI ĐIỀU KHIỂN
3.1 TỔ CHỨC BỘ NHỚ
Bảng tóm tắt các vùng nhớ 89C51.
Bản đồ bộ nhớ Data trên Chip như sau :
10
RAM CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT
Bộ nhớ trong 8951 bao gồm ROM và RAM. RAM trong 8951 bao gồm nhiều
thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi
và các thanh ghi chức năng đặc biệt.

- 8951 có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt cho
chương trình và dữ liệu. Chương trình và dữ liệu có thể chứa bên trong 8951 nhưng
8951 vẫn có thể kết nối với 64K byte bộ nhớ chương trình và 64K byte dữ liệu.
Hai đặc tính cần chú ý là :
■ Các thanh ghi và các port xuất nhập đã được định vị [xác định] trong bộ nhớ
và có thể truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác.
■ Ngăn xếp bên trong Ram nội nhỏ hơn so với Ram ngoại như trong các bộ
Microcontroller khác.
11
RAM bên trong 8951 được Phân chia như sau:
■ Các bank thanh ghi có địa chỉ từ 00H đến 1FH.
■ RAM địa chỉ hóa 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.
■ RAM đa dụng:
- Mặc dù trên hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ từ 30H đến
7FH, 32 byte dưới từ 00H đến 1FH cũng có thể dùng với mục đích tương tự [mặc dù
các địa chỉ này đã có mục đích khác].
- Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng kiểu địa
chỉ trực tiếp hoặc gián tiếp.
■ RAM có thể truy xuất từng bit:
- 8951 chứa 210 bit được địa chỉ hóa, trong đó có 128 bit có chứa các byte có
chứa các địa chỉ từ 20F đế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.
- Ý tưởng truy xuất từng bit bằng phần mềm là các đặc tính mạnh của
microcontroller xử lý chung. Các bit có thể được đặt, xóa, AND, OR, . . . , với 1 lệnh
đơn. Đa số các microcontroller xử lý đòi hỏi một chuổi lệnh đọc – sửa - ghi để đạt
được mục đích tương tự. Ngoài ra các port cũng có thể truy xuất được từng bit.
- 128 bit truy xuất từng bit này cũng có thể truy xuất như các byte hoặc như các
bit phụ thuộc vào lệnh được dùng.

■ Các bank thanh ghi:
- 32 byte thấp của bộ nhớ nội được dành cho các bank thanh ghi. Bộ lệnh 8951
hổ trợ 8 thanh ghi có tên là R0 đến R7 và theo mặc định sau khi reset hệ thống, các
thanh ghi này có các địa chỉ từ 00H đến 07H.
- Các lệnh dùng các thanh ghi RO đến R7 sẽ ngắn hơn và nhanh hơn so với các
lệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp. Các dữ liệu được dùng
thường xuyên nên dùng một trong các thanh ghi này.
12
- 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 RO đế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. hổ trợ 8 thanh ghi có tên
là R0 đến R7 và theo mặc định sau khi reset hệ thống, các thanh ghi này có các địa chỉ
từ 00H đến 07H.
- Các lệnh dùng các thanh ghi RO đến R7 sẽ ngắn hơn và nhanh hơn so với các
lệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp. Các dữ liệu được dùng
thường xuyên nên dùng một trong các thanh ghi này.
- 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 RO đế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.
3.2 CÁC THANH GHI CÓ CHỨC NĂNG ĐẶC BIỆT:
- Các thanh ghi nội của 8951 được truy xuất ngầm định bởi bộ lệnh.
- Các thanh ghi trong 8951 đượ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ệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp]. Cũng như R0 đến R7,
8951 có 21 thanh ghi có chức năng đặc biệt [SFR: Special Function Register] ở vùng
trên của RAM nội từ địa chỉ 80H đến FFH. Chú ý: tất cả 128 địa chỉ từ 80H đến FFH
không được định nghĩa, chỉ có 21 thanh ghi có chức năng đặc biệt được định nghĩa sẵn
các địa chỉ.
- Ngoại trừ thanh ghi A có thể được truy xuất ngầm như đã nói, đ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.

■ Thanh ghi trạng thái chương trình [PSW: Program Status Word]:
Từ trạng thái chương trình ở địa chỉ D0H được tóm tắt như sau:
13

Chức năng từng bit trạng thái chương trình
■ Cờ Carry CY [Carry Flag]: Cờ nhớ có tác dụng kép. Thông thường nó được
dùng cho các lệnh toán học: C=1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn
và ngược lại C= 0 nếu phép toán cộng không tràn và phép trừ không có mượn.
■ Cờ Carry phụ AC [Auxiliary Carry Flag]: Khi cộng những giá trị BCD
[Binary Code Decimal], cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằm trong
phạm vi điều khiển 0AH■ 0FH. Ngược lại AC= 0.
■ Cờ 0 [Flag 0]: Cờ 0 [F0] là 1 bit cờ đa dụng dùng cho các ứng dụng của người
dùng.
■ Những bit chọn bank thanh ghi truy xuất:
- RS1 và RS0 quyết định dãy thanh ghi tích cực. Chúng được xóa sau khi reset hệ
thống và được thay đổi bởi phần mềm khi cần thiết.
- Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tương ứng là
Bank 0, Bank1, Bank2, Bank3.
14
■ Cờ tràn OV [Over Flag] : Cờ tràn được set sau một hoạt động cộng hoặc trừ
nếu có sự tràn toán học. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có
thể kiểm tra bit này để xác định xem kết quả có nằm trong tầm xác định không. Khi các
số không có dấu được cộng bit OV được bỏ qua. Các kết quả lớn hơn +127 hoặc nhỏ
hơn –128 thì bit OV = 1.
■ Bit Parity [P]: Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity
chẳn với thanh ghi A. Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luôn luôn
chẵn.
■ Thanh ghi B: Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi A cho
các phép toán nhân chia. Lệnh MUL AB

Chủ Đề