Tải bản đầy đủ (.pdf) (66 trang)

lập Trình C Cho Họ Vi Điều Khiển 8051

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.77 MB, 66 trang )

BỘ CÔNG NGHIỆP
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM
KHOA CÔNG NGHỆ ĐIỆN TỬ

#"
Đồ Án Tốt nghiệp
Đề Tài:

LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

CuuDuongThanCong.com

/>

Đồ Án Tốt Nghiệp

PHẦN I

TỔNG QUAN về ĐỀ TÀI
I. ĐẶT VẤN ĐỀ:
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.

II. NỘI DUNG CỦA ĐỀ TÀI:
9 Sơ lược về vi điều khiển AT89C51.
9 Khảo sát vi điều khiển AT89C2051 của hãng ATMEL.
• Gồm sơ đồ chân linh kiện.
• Sơ đồ khối của AT89C2051.
• Các nội dụng ứng dụng của AT89C2051.
9 Giới thiệu phần mềm Keil Software µViSion 2
9 Ứng dụng ngôn ngữ C và Assembly điều khiển lập trình led.
• Ứng dụng cho led đơn, led 7 đoạn, led ma trận…
9 Kết luận và hướng phát triển của đề tài.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 2
/>

Đồ Án Tốt Nghiệp

PHẦN II


NỘI DUNG ĐỀ TÀI
CHƯƠNG 1: GIỚI THIỆU BỘ VI ĐIỀU KHIỂN 89C2051 và 89C51
I.GIỚI THIỆU BỘ VI ĐIỀU KHIỂN 89C2051
I.1 CÁC ĐẶC ĐIỂM
9 Tương thích với các sản phẩm của họ MSC-51.
9 2K byte bộ nhớ Flash lập trình được.
9 Khả năng :1000 chu kì ghi/xóa.
9 Tầm điện áp hoạt động từ 2,7 V đến 6V
9 Tầm tần số hoạt động từ 0 Hz đến 21 MHz
9 2 mức khóa bộ nhớ chương trình (program memory).
9 RAM bên trong (internal RAM) có dung lượng 128 x 8 bit.
9 15 đường I/O lập trình được.
9 2 bộ định thời /đếm 16 bit.
9 6 nguồn (nguyên nhân ) ngắt.
9 Kênh nối tiếp UART lập trình được.
9 Các ngõ ra kích LED trực tiếp.
9 Mạch so sánh tương tự trên chip (on-chip analog comparator).
9 Các chế độ nghỉ công suất thấp và chế độ giảm công suất.
I.2 MÔ TẢ
Chip AT89C2051 là chip vi điều khiển CMOS 8 bit điện áp thấp, hiệu suất cao có 2K
byte bộ nhớ Flash chỉ đọc, xóa được và lập trình được PEROM (Flash programmable and
erasable readonly memory). Linh kiện này được sản xuất bằng cách sử dụng công nghệ bộ nhớ
không thay đổi mật độ cao của Atmel và tương thích với tập tệp của MCS-51 chuẩn công
nghiệp. Bằng cách kết hợp một CPU 8-bit đa năng và linh hoạt với Flash trên chip đơn tinh thể ,
Atmel AT89C2051 là chip vi điều khiển mạnh cung cấp giải pháp linh động cao và mang lại
hiệu quả về giá thành cho nhiều ứng dụng điều khiển nhúng (embedded control application).
AT89C2051 cung cấp các đặc tính chuẩn sau đây : bộ nhớ Flash 2K byte , 128 byte
RAM , 15 đường I/O, 2 bộ định thời/đếm 16-bit , kiến trúc ngắt hai mức 5 vector, port nối tiếp
hoàn toàn song công , mạch so sánh tương tự chính xác, mạch dao động và tạo xung clock trên
chip . Ngoài ra AT89C2051 được thiết kế có mạch logic tĩnh cho hoạt động giảm đến tần số 0

Hz và hỗ trợ 2 chế độ tiết kiệm công suất lựa chọn được bằng phần mềm.
Chế dộ nghĩ ( idle mode ) sẽ dùng CPU nhưng vẫn cho phép RAM, các bộ định
thời/đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động. Chế độ giảm công suất duy trì nội
dung của RAM nhưng làm dừng mạch dao động, không cho phép mọi chức năng khác của chip
hoạt động cho đến lần reset cứng kế tiếp (nghĩa là ta thiết lập lại trạng thái ban đầu [reset] cho
chiop bằng mạch điện bên ngoài).

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 3
/>

Đồ Án Tốt Nghiệp
I.3 CẤU HÌNH CHÂN

Hình 1.1

I.4 SƠ ĐỒ KHỐI

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 4
/>

Đồ Án Tốt Nghiệp
Hình 1.2
9RAM ADDR. REGISTER: thanh ghi địa chỉ RAM .
9RAM: vùng nhớ truy cập ngẫu nhiên (RAM).

9FLASH: vùng nhớ FLASH.
9B REGISTER:thanh ghi B.
9ACC: thanh chứa.
9STACK POINTER: con trỏ vùng nhớ xếp chồng.
9PROGRAM ADDRESS REGISTER: thanh ghi địa chỉ chương trình.
9TMP1: thanh ghi tạm 1
9TMP2: thanh ghi tạm 2
9ALU: đơn vị số học/logic.
9BUFFER: bộ đệm.
9PC INCREMENTER: bộ tăng thanh ghi đếm chương trình PC.
9INTERRUPT, SERIAL PORT AND TIMER BLOCKS: các khối ngắt, port nối tiếp
và định thời.
9PROGRAM COUNTER: bộ đếm chương trình PC.
9PSW: từ trạng thái chương trình .
9TIMING AND CONTROL:mạch logic điều khiển và định thời.
9INSTRUCTION REGISTERED: thanh ghi lệnh.
9DPTR: con trỏ dữ liệu .
9PORT1 LATCH: bộ chốt port 1.
9PORT3 LATCH: bộ chốt port 3.
9ANALOG COMPARTOR:bộ so sánh tương tự .
9OSC:mạch dao động.
9PORT 1 DRIVERS: các mạch kích port 1.
9PORT 3 DRIVERS: các mạch kích port 3.
I.5 MÔ TẢ CHÂN
VCC
Chân cấp điện áp Vcc cho chip.
GND
Chân nối đất.
Port 1
Port 1 là port I/O (port nhập/xuất: input/output port) hai chiều 8-bit. Các chân của port từ

P1.2 đến P1.7 cung cấp các mạch kéo lên bên trong (internal pull-ups). Các chân P1.0 và P1.1
yêu cầu các mạch kéo lên bên ngoài . P1.0 và P1.1 cũng còn được sử dụng làm ngõ vào dương
(AIN0) và ngõ vào âm (ÁIN), theo thứ tự, của mạch so sánh tương tự chính xác trên chip (on –
chip precision analog comparator).
Các mạch đệm ngõ ra (output buffer) của port 1 có thể hút dòng 20mA và kích trực tiếp
các bộ hiện thị LED. Khi các logic 1 được ghi đến các chân của port 1, các chân này có thể được
sử dụng làm các ngõ vào. Khi các chân từ P1.2 đến P1.7 được sử dụng làm các ngõ vào và được
kéo xuống mức thấp từ bên ngoài, chúng sẽ cung cấp dòng (IIL) do các mạch kéo lên bên trong.
Port 1 cũng nhận dữ liệu chương trình hay dữ kiệu mã (code data) trong thời gian lập trình
và kiểm tra bộ nhớ Flash.
Port 3
Các chân của port 3 từ P3.0 đến P3.5, P3.7 là chân I/O hai chiều với các mạch kéo lên bên
trong. P3.6 được nối dây cứng làm ngõ vào nối đến ngõ ra của mạch so sánh trên chip và không
thể truy cập như một chân I/O có mục đích tổng quát. Các mạch đệm ngõ ra của port 3 có thể hút
dòng 20mA.Khi các logíc được ghi đến các chân của port 3, các chân này được kéo lên mức cao
bởi các mạch kéo lên bên trong và có thể được sử dụng làm các ngõ vào. Khi là các ngõ vào, các
chân nào của port 3 được kéo xuống mức thấp bởi mạch bên ngoài sẽ cung cấp dòng (IIL) do các

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 5
/>

Đồ Án Tốt Nghiệp
mạch kéo lên. Các chân của port 3 còn được sử dụng cho các chức năng đặc biệt khác của
AT89C2051 như được liệt kê dưới đây ( bảng 11,1). Port 3 cũng nhận một số tín hiệu điều khiển
để lập trình và kiểm tra bộ nhớ Flash.

Bảng 1.1

RST
Ngõ vào reset (thiết lập lại trạng thái ban đầu). Tất cả các chân I/O được reset đến mức
logíc ngay sau khi RST lên mức cao. Việc duy trì chân RST ở mức cao trong 2 chu kỳ máy trong
khi mạch dao động đang hoạt động sẽ reset chip.
XTAL 1
Ngõ vào đến mạch khuếch đại dao động đảo và ngõ vào đến mạch tạo xung clock bên
trong.
XTAL 2
Ngõ ra từ mạch khuếch đại dao động đảo.
I.6 CÁC ĐẶC TÍNH CỦA MẠCH DAO ĐỘNG.
XTAL 1 và XTAL 2 là ngõ vào và ngõ ra, theo thứ tự, của
mạch khuếch đại đảo có thể được cấu hình để trở thành mạch dao
động trên chip như được trình bày ở hình 1.3. Một tinh thể thạch
anh hoặc mạch cộng hưởng gốm đều có thể sử dụng được. Để kích
chip từ nguồnxung clock bên ngoài, chân XTAL 2 sẽ không kết
nối trong khi chân ATAL 1 được kích như được trình bày ở hình
1.4. Không có yêu cầu nào về chu kỳ nhiệm vụ (duty cycle) của
tín hiệu xung clock bên ngoài vì ngõ vào đến mạch vì ngõ vào đến
mạch tạo xung clock bên trong sẽ đi qua một flipflop làm nhiệm
vụ chia 2 tần số, nhưng các đặc tính về điện áp tối thiểu và tối đa
của mức cao và mức thấp phải được xem xét.
Hình 1.3 các kết nối của mạch dao động.
Lưu ý: C1,C2=30pF ± 10pF đối với các thạch anh ; C1,C2=40pF ± 10pF đối với các bộ
cộng hưởng gốm.

Hình 1.4: Cấu hình kích xung clock bên ngoài.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com


Trang 6
/>

Đồ Án Tốt Nghiệp
I.7CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT SFR

Bảng 1.2 Các giá trị khi reset và bản đồ các SFR của AT89C2051
Một bản đồ vùng nhớ trên chip được gọi là không gian thanh ghi chức năng đặc biệt SFR
(special function registor) được trình bày ở bản trên đây (bảng 1.2). Lưu ý rằng không phải tất cả
địa chỉ đều bị chiếm bởi các thanh ghi này, các địa chỉ không bị chiếm có thể không được thực
hiện trên chip. Các truy cập đọc đến các địa chỉ này trong trường hợp tổng quát, sẽ trả về dữ liệu
ngẫu nhiên và các truy cập ghi sẽ có tác động không rõ ràng.
Phần mêm của người sử dụng không nên ghi các logic 1 đến các vị trí nhớ không được liệt
kê vì chúng có thể được sử dụng trong các sản phẩm tương lai để đáp ứng các đặt tính mới.
Trong trường hợp đó, các giá trị do reset hoặc các giá trị không tích cực của các bit mới sẽ luôn
luôn bằng 0.
I.8 CÁC GIỚI HẠN TRÊN MỘT SỐ LỆNH
AT89C2051 là một thành viên tiết kiệm và có hiệu quả về giá thành của họ vi đièu khiển
đang phát triển của Atmel. Chip này chứa 2K bộ nhớ chương trình Flash. Chip này hoàn toàn
tương thích với kiến trúc MCS-51và có thể được lập trình bằng cấch sử dụng tập lệnh MCS-51.
tuy nhiên, có vài cân nhắc mà ta ohải chú ý khi sử dụng một số lập trình của chip này.
Tất cả các lệnh liên quan đến các hoạt động nhảy và rẽ nhánh sẽ bị giới hạn, chẳn hạn như địa
chỉ đíh rơi vào trong không gian nhớ của chip, không gian này là 2K byte với AT89C2051. Vấn
đề này là trách nhiệm của nguowif lập trình phần mềm.
Thí dụ, lệnh LJMP 7E0H sẽ là lệnh hợp lệ đối với AT89C2051 (có 2K byte bộ nhớ chương
trình)trong khi đó lệnh LJMP 900H là lệnh không hợp lệ.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com


Trang 7
/>

Đồ Án Tốt Nghiệp
Các lệnh rẽ nhánh
LCALL,LMJP, ACALL, AJMP,SJMP ,JMP@A+DPTR- Các lệnh rẽ nhánh không điều
kiện này sẽ thực thi đúng miễn là người lập trình lưu ý rằng địa chỉ đích rẽ nhánh phải nằm trong
giới hạn vật lý của kích thước bộ nhớ chương trình (các vị trí nhớ từ 00H đến 7FFH đối với
AT89C2051). Việc vi phạm các giới hạn khong gian vật lý có thể gây ra hành vi không biết
được của chương trình
CJNE [. . . ], DJNZ [. . . ], JB, JNB, JC, JNC, JBC, JZ, JNZ - Với các lệnh rẽ nhánh có
điều kiện này, các quy luật giống như ở trên cũng được áp dụng. Một lần nữa, việc vi phạm các
giơis hạn bộ nhớ vật lý sẽ làm cho chương trình thực hti không đúng.
Đối với các ứng dụng bao gồm các cách ngắt, các vị trí địa chỉ của chương trình phục vụ ngắt
(interrupt service rountine) bình thường của cấu trúc họ 89C2051 được bảo toàn.
Các lệnh liên quan đến MOVX, bộ nhớ dữ liệu
AT89C2051 chứa 128 byte bộ nhớ dữ liệu bên trong (intenal data memory). Như vậy
trong AT89C2051,kích thước của bộ xếp chồng (stack depth) được giới hạn tới 128 byte, đay là
dung lượng của RAM có sẳn. Việc truy cạp bộ nhớ bên ngoài không được hỗ trợ trong chip này
và việc thưc thi chương trình bên ngoài cũng không được hỗ trợ.
Như vậy không có lệnh MOVX [. . . ] nào chứa trong chương trình.
Một trình dịch hợp ngữ (assembler) điển hình của 89C51 vẫn dịch các lệnh này,ngay cả
khi chúng được viết dưới dạng vi phạm các giới hạn đã đề cập ở trên. Người sử dụng bộ vi điều
khiển phải có trách nhiệm phải biết các tính chất vật lý và giới hạn của linh kiện đang được sử
dụng và điều chỉnh các lệnh được sử dụng một cách thích hợp.
Các giới hạn trên đây cho ta thấy các khuyết điểm của At89C2051.
I.9 CÁC BIT KHOÁ BỘ NHỚ CHƯƠNG TRÌNH
Với chip AT89C2051 ta có 2 bit khoá (lock bit), các bit này có thể để lại không lập trình
(U) hoặc có thể lập trình (P) đẻ nhận thêm được các tính chất được liệt kê ở bảng 11.3.
Các bit khoá chương trình

LB1 LB2
1
U
U
2
P
U
3
U
U

Loại bảo vệ
Không có tính chất khoá chương trình.
Việc lập trình thêm nữa cho bộ nhớ Flash bị cấm.
Tương tự chế độ 2, việc kiểm tra cũng bị cấm.

Lưu ý: các bit khoá chỉ có thể bị xoá bằng thao tác xoá chip
Bảng 1.3:Các chế độ bảo vệ của bit khoá.
I.10 CHẾ ĐỘ NGHỈ
Trong chế đọ nghỉ CPU sẽ tự ngủ, trong khi tất cả các ngoại vi khác trên chip điều hoạt
động và điều duy trì trạng thái ở chế độ tích cực. Chế đọ này được yêu cầu bởi phần mềm. Nội
dung của RAM trên chip và tất cả tren các thanh ghi chức năng đặc biệt điều giữ nguyên không
thay đổi trong thời gian ở chế độ này. Chế độ nghỉ có thể được kết thúc bởi cách ngắt bất kì được
phép hoăc bằng cách reset phần cứng.
Các chân P1.0 và P1.1 sẽ được thiết lập bằng 0 nếu không sử dụng các mạch kéo lên
bên ngoài hoặc được thiết lập bằng 1 nếu có mạch kéo lên bên ngoài.
Cũng cần lưu ý rằng khi chế độ nghỉ được kết thúc bởi một reset cứng, chip sẽ tiếp tục
thực thi chương trình bình thường từ nơi chương trình bị rời bỏ, đến 2 chu kỳ máy trước giải
thuật reset bên trong lấy quyền điều khiển. Phần cứng trên chip ngăm cản việc truy cập đến
RAM bên trong ở chế độ này nhưng không cấm việc truy cập đến cá chân của port. Để laọi bỏ

khả năng có một thao tác không mong đợi đến một chân của port khi chế độ nghỉ được kết thúc
bằng reset, lẹnh theo sau lệnh yêu cầu chế nghỉ sẽ không thể là lệnh ghi đến một chân port hoặc
bộ nhớ ngoài.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 8
/>

Đồ Án Tốt Nghiệp
I.11 CHẾ ĐỘ GIẢM CÔNG SUẤT
Trong chế độ giảm công suất, mạch dao động bị dừng và lệnh yêu cầu chế độ giảm công
suất là lệnh sau cùng được thực thi. RAM trên chip và các thanh ghi chức năng đặc biệt giữ lại
các giá trị của chúng cho đén khi các chế độ giảm công suất được kết thúc.Lối thoát duy nhất ra
khỏi chế độ giảm công suất là sử dụng reset cứng. Reset sẽ định nghĩa lại các thanh ghi chua\cứ
năng đặc biệt nhưng không làm thay đổi Ram trên chip. Reset không nên được kích hoạt trươc
khi điện áp VCC được khôi phục đến mức hoạt động bình thường và reset phải duy trì tích cực đủ
lâu để cho phép mạch hoạt động trở lại và trở nên ổn định.
Các chân P1.0 và P1.1 sẽ được thiết lập bằng 0 nếu không sử dụng các mạch kéo lên bên
ngoài hoặc được thiết lập bằng 1 nếu có mạch kéo lên bên ngoài.
I.12 LẬP TRÌNH FLASH
AT89C2051 trên thị trường có dải nhớ chương trình PEROM trên chip la 2K byte ở
trạng thái đã được xóa (nghĩa là toàn bộ nội dung của các byte là FFH) và sẳn sàng được lập
trình. Dải nhớ chương trình được lập trình một byte cho mỗi thời điểm. Một khi dãi này đã được
lập trình, để lập trình lại bất kì byte nào không trống, toàn bộ dải nhớ được xóa bằng điện.
Bộ điếm địa chỉ bên trong
AT89C2051 có một bộ đếm địa chỉ PEROM bên trong, bộ đếm này luôn luôn được thiết
lập là 00H ở cạnh lên của RST và được tăng lên bằng cách áp dụng xung đang trở thành mức
dương (positve going pluse) đến chân XTAL1.

Giải thuật chương trình
Để lập trình AT89C2051, theo trình tự sau đây.
1. Trình tự cấp điện:
Cấp điện giữa các chân VCC và GND
Thiêt lập RST và XTLA1 đến mức thấp (GND)
2. Thiết lâp RST lên mức cao (‘H’)
Thiết lập chân P3.2 lên mức cao (‘H’)
3. Áp dụng tổ hợp các mức logic ‘H’ và ‘L’ thích hợp đên các chân P3.3, P3.4, P3.5 và P3.7 để
chọn 1 trong các thao tác lập trình được trình bày trong bảng các chế độ lập trình PEROM
(PEROM proramming modes table).
Để lập trình và kiểm tra dải nhớ chương trình:
4. Đặt dữ liệu của byte chhương trình ( hay còn gọi là byte mã) ở vị trí 00h đến các chân từ P1.0
đến P1.7.
5. Tăng RST lên 12V để cho phép lập trình.
6. Đưa một xung đến chân P3.2 để lập trình một byte trong dải PEROM hoặc các bit khóa. Chu
kỳ ghi byte được tự định thời và điển hình chiếm 1.2ms.
7. Để kiểm tra dữ liệu đã lập trình, giảm thấp RST từ 12V xuống mức logic cao ‘H’ và thiết lập
các chân từ P3.3 đến P3.7 đến các mức logic thích hợp. Dữ liệu xuất có thể được đọc ở các chân
của port 1.
8. Để lập trình một byte ở vị trí địa chỉ kế tiếp, đưa một xung đến XTAL1 để tăng bộ đếm địa
chỉ bên trong (internal address counter). đặt dữ liệu mới đến các chân của port 1.
9. Lập lại các bước từ 6 đến 8, thay đổi dữ liệu và tăng bộ đếm địa chỉ cho toàn bộ dải byte
hoăc cho đến khi kết thúc tập tin đối tượng (object file).
10.Trình tự ngắt nguồn điện.
Thiết lập XTLA1 đến mức thấp (‘L’)
Thiết lập RST đến mức thấp (‘L’)
Tắt nguồn cấp điện cho VCC.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com


Trang 9
/>

Đồ Án Tốt Nghiệp
Data Polling: AT89C2051 có Data Polling để chỉ ra việc kết thúc một chu kỳ ghi.
Trong thời gian của một chu kỳ ghi, việc thử đọc byte sau cùng được ghi sẽ dẫn đến việc lấy bù
dữ liệu được ghi trên chân P1.7. Một khi chu kỳ ghi đã kết thúc, dữ liệu sẽ có hiệu lực trên tất cả
các ngõ ra và chu kỳ kế tiếp có thể bắt đầu. Data Polling có thể bắt đầu bất cứ lúc nào sau khki
một chu kỳ ghi được khởi động.
Ready/ Busy : Tiến trình lập trình byte cũng có thể giám sát bằng tín hiệu ngõ ra RDY/
BSY . Chân P3.1 được kéo xuống mức thấp sau khi chân P3.2 trở thành mức cao trong thời gian
lập trình sẽ chỉ ra trạng thái bận (BUSY).
Chân P3.1 được kéo lên mức cao lấn nữa khi việc lập trình kết thúc sẽ chhỉ ra trạng thái
sẳn sàng (READY).
Program verify ( kiểm tra chưong trình ): Nếu các bit khóa LB1 và LB2 đã không được
lập trình, dữ liệu chương trình có thể đọc ngược về thông qua các đường dữ liệu để kiểm tra:
1. Reset bộ đếm địa chỉ bên trong về 00H để mang RST từ ‘L’ lên ‘H’.
2. Đặt các tín hiệu thích hợp để đọc dữ liệu chương trình và đọc dữ liệu ngõ ra ở các chân của
port 1.
3. Đưa một xung đến chân XTAL 1 để tăng bộ đếm địa chỉ bên trong.
4. Đọc byte dữ liệu kế tiếp ở các chân của port 1.
5. Lập lại các bước 3 và 4 cho đến khi toàn bộ dải nhớ chương trình được đọc.
Các bit khóa khong thể được kiểm tra trực tiếp. Việc kiểm tra các bit khóa sẽ nhận được bằng
cách tuân theo các tính chất được cho phép của chúng.
Chip erase (xóa chip): Toàn bộ dải PEROM (2K byte) và hai bit khóa đựơc xóa bằng
điện bằng sử dụng tổ hợp thích hợp các tín hiệu điều khiển và bằng cách giữ cho chân P3.2 ở
mức thấp trong 10ms. Dải nhớ chương trinhd được ghi với tất cả các bit điều là 1 trong thao tác
xóa chip va phải được thực hiện trước khi bất kỳ byte nhớ không trống nào có thể được lập trình
lại.

Reading the signature bytes (đọc các byte chữ ký ): Các byte chữ ký được đọc với cùng
thủ tục như viêc kiểm tra bình thường các vị trí nhớ 000H, 001H, 002H, ngoại trừ các chân P3.3
và chân P3.5 phải được kéo xuống mức logic thấp. Các giá trị được trả về như sau:
(000H) = 1EH chỉ ra được sản xuất bởi Atmel.
(001H) = 21H chỉ ra 89C2051.
I.13CÁC CHẾ ĐỘ LẬP TRÌNH FLASH
Các chế độ lập trình Flash được tóm tắt ở bảng 1.4.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 10
/>

Đồ Án Tốt Nghiệp
Lưu ý: 1. Bộ đếm địa chỉ PEROM bên trong được reset về 000H ở cạnh lên của RST và được
tăng bởi xung dương ở chân XTAL 1.
2. việc xóa chip yêu cầu xung PROG kéo dài 10ms.
3. Chân P3.1 được kéo xuống mức thấp trong thời gian lập trình để chỉ ra RDY/BSY
Write code data: ghi dữ liệu chương trình.
Read code data: đọc dữ liệu chương trình.
Write lock : ghi các bit khóa.
Chip erase : xóa chip.
Read signature byte : đọc byte chữ ký

SEE FLASH PROGRAMMING MODE TABLE:xem bảng chế độ lập trình Flash.
PGM DATA: dữ liệu chương trình.
TO INCREMENT ADDRESS COUTER: để tăng bộ đếm địa chỉ.

I.14 CÁC ĐẶC ĐIỂM LẬP TRÌNH FLASH



hiệu
VPP
IPP
tDVGL
tGHDX
t EHSH
tSHGL
tGHSL
tGLGH
tELQV

Thông số

Min

Max

Điện áp cho phép lập trình.
Dòng điện cho phép lập trình.
Thời gian từ lúc dữ liệu đến khi PROG ở mức thấp.
Thời gian giữ dữ liệu sau khi PROG tích cực.
Thời gian P3.4 ( NABLE ) từ ‘H’ lên VPP.
Thời gian từ lúc thiết lập VPP đến khi PROG ở mức thấp.
Thời gian giữa VPP sau khi PROG tích cực.
Độ rộng của PROG.
Thời gian từ lúc ENABLE ở mức thấp cho đến khi dữ liệu có

11.5


12.5
250

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

1.0
1.0
1.0
10
10
1

110
1.0

Đơn
vị
V
µA
µs
µs
µs
µs
µs
µs
µs

Trang 11

/>

Đồ Án Tốt Nghiệp
tEHQZ
tGHBL
tWC
tBHIH
tHIL

hiệu lực.
Thời gian thả nổi dữ liệu sau khi ENABLE tích cực.
Thời gian từ khi PROG ở mức cao cho đén khi BUSY o mức
thấp.
Thời gian của chu kỳ ghi byte.
Trì hoãn từ RDY/BSY đến khi clock tăng.
Thời gian c0lock ở mức cao.

0

1.0
200

1.0
50

µs
ns

2.0


ms
µs
ns

Bảng 11.5 Các đặt điểm lập trình và kiểm tra Flash.
TA = 00C đến 700 C, VCC = 5.0 ± 10%.
Chỉ sử dụng ở chế độ lập trình 12 V.
I.15 CÁC ƯỚC LƯỢNG CỰC ĐẠI TUYỆT ĐỐI
Tầm nhiệt độ hoạt động:
Tầm nhiệt độ tích trữ:
Điện áp trên bất kì chân nào so với đất (GND):
Điện áp cấp điện cực đại:
Dòng DC ngõ ra:

từ -550C đến +1250C.
từ -660C đến +1500C.
-1.0 V đến +7 V.
6.6 V.
25.0 mA.

CÁC DẠNG SÓNG LẬP TRÌNH VÀ KIỂM TRA FLASH

Hình 1.5 Các dạng sóng lập trình và kiểm tra Flash.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 12
/>


Đồ Án Tốt Nghiệp
DẠNG SÓNG MẠCH KÍCH XUNG CLOCK BÊN NGOÀI

Hình 1.6:Dạng sóng mạch kích xung clock bên ngoài.
MẠCH KÍCH XUNG CLOCK BÊN NGOÀI
Ký hiệu
1/tCLCL
tCLCL
tCHCX
tCLCX
tCLCH
tCHCL

Thông số
Tần số dao động.
Chu kỳ xung clock.
Thời gian mức cao.
Thời gian mức thấp.
Thời gian tăng (cạnh lên).
Thơi gian giảm (cạnh xuống).

VCC=2.7V đến 6.0V
Min
Max
0
12
83.3
30
30
20

20

VCC=4.0V đến 6.0V
Min
Max
0
24
41.6
15
15
20
20

Đơn vị
MHZ
ns
ns
ns
ns
ns

Bảng 1.5 Các thông số của mạch kích xung clock bên ngoài.
ĐỊNH THỜI PORT NỐI TIẾP: ĐIỀU KIỆN KIỂM TRA CHẾ ĐỘ THANH GHI DỊCH
VCC = 5.0 ± 20%; điện dung tải = 80 pF.

Thông số
hiệu
Thời gian chu kỳ xung clock port
nối tiếp.
Thời gian từ lúc thiết lập dữ liệu

xuất đến cạnh lên của xung clock
Thời gian giữ dữ liệu xuất sau cạnh
lên của xung clock.
Thời gian giữ dữ liệu nhập sau cạnh
lên của xung clock
Thời gian từ cạnh lên xung clock
đến khi dữ liệu nhậpcó hiệu lực.

Dao động 12 MHZ
Min
Max
1.0

Dao động thay đổi
Min
Max
12tCLCL

Đơn
vị
µs

700

10tCLCL
– 133
2tCLCL –
177
0


ns

50
0
700

ns
ns
10tCLCL
– 133

ns

Bảng 1.6 Các điều kiện kiểm tra chế độ định thời thanh ghi dịch

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 13
/>

Đồ Án Tốt Nghiệp
CÁC DẠNG SÓNG ĐỊNH THỜI CHẾ ĐỘ THANH GHI DỊCH

Hình 1.7 Dạng sóng định thời chế độ thanh ghi dịch.

DẠNG SÓNG NGÕ VÀO/NGÕ RA KIỂM TRA AC1

Hình 1.8:Dạng sóng ngõ vào/ngõ ra kiểm tra AC.
Lưu ý: 1. Các ngõ vào AC trong thời gian kiểm tra được kích ở (VCC – 0.5) V đối với logic 1 và

0.45 V đối với logic 0. Các phép đo định thời được thực hiện ở VIHmin đối với logic 1và VILmax
đối với logic 0.
DẠNG SÓNG THẢ NỔI1

Hình 1.9 Dạng sóng thả nổi.
Timing reference points: các điểm tham chiếu định thời.
Lưu ý: 1. Đối với mục đích định thời, một chân port sẽ không còn thả nổi kho có sự thay đổi
100mV từ điện áp trên tải. Một chân port bắt đầu thả nổi khi có sự thay đổi 100mV từ mức
VOH/VOL (có tải).

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 14
/>

Đồ Án Tốt Nghiệp
ICC Ở CHẾ ĐỘ TÍCH CỰC

Hình 1.10: ICC ở chế độ tích cực.
ICC Ở CHẾ ĐỘ NGHỈ VÀ CHẾ ĐỘ GIẢM CÔNG SUẤT

Hình 1.11: (a) ICC ở chế độ nghỉ ,(b) ICC ở chế độ giảm công suất.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 15
/>


Đồ Án Tốt Nghiệp
Packaging Information

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 16
/>

Đồ Án Tốt Nghiệp

II.Giới thiệu về Vi Điều Khiển AT89C51
™ MSC51 là một họ Vi Điều Khiển (Microcontroller) do hãng Intel sản
xuất.Các IC của họ MSC51 tiêu biểu là 8051 và 8031. Đặc biệt, vi điều
khiển 89C51 sản xuất gần đây mang các đặc điểm sau:
9 4Kbytes EEPROM.
9 128 bytes RAM.
9 4 Port I/O (Input/Output).
9 2 bộ định thời Timer 16 bits.
9 Giao tiếp nối tiếp.
9 64Kbytes không gian bộ nhớ chương trình mở rộng.
9 64Kbytes không gian bộ nhớ dữ liệu mở rộng.
9 Một bộ xử lý luận lí (thao tác trên các bits đơn).
9 210 bits được địa chỉ hóa.
9 Bộ nhân chia 4µs.

™ HỆ THỐNG GIAO TIẾP PORT.
• Port 0: port 0 là một port hai chức năng trên các chân 32-39.
Hãy nhớ rằng : trên các chân này chưa có điện trở kéo dương, do đó khi
cần chúng ta cần nhớ đến đặc điểm này.

• Port 1: port 1 là một port I/O trên các chân 1-8.
• Port 2: port 2 là một port công dụng kép trên các chân 21-28.
• Port 3: port 3 là một port công dụng kép trên các chân 10-17. Các
chân này đều có nhiều chức năng, các công dụng chuyển đổi có liên
hệ tới các đặc tính đặc biệt của 8051 ở bảng sau:

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 17
/>

Đồ Án Tốt Nghiệp

™ CÁC TÍN HIỆU ĐIỀU KHIỂN:
Chip AT89C51 có các tín hiệu điều khiển cần phải lưu ý như sau:
• Tín hiệu vào EA\ trên chân 31 thường đặt lên mức cao ( +5V) hoặc
mức thấp (GND)
Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong
khoảng địa chỉ thấp (4K hoặc tối đa 8k đối với 89C52).
Nếu ở mức thấp, chương trình được thi hành từ bộ nhớ mở rộng (tối
đa đến 64Kbyte).
Ngoài ra người ta còn dùng EA\ làm chân cấp điện áp 12V khi lập
trình EEPROM trong 8051.
• CHÂN PSEN (Program store enable):
PSEN là chân tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển cho
phép chương trình mở rộng, PSEN thường được nối đến chân OE\
(Output Enable) của một EPROM hoặc ROM để cho phép đọc các
bytes mã lệnh.
Hãy nhớ rằng : bình thường chân PSEN\ sẽ được thả trống ( No

Connect).Chỉ khi nào cho EA\ ở mức thấp thì lúc đó:
PSEN\ sẽ ở mức thấp trong thời gian lấy lệnh. Các mã nhị phân của
chương trình được lấy từ EPROM qua bus dữ liệu và được chốt vào
thanh ghi lệnh của 8951 để giải mã lệnh.
PSEN\ ở mức thụ động (mức cao) nếu thi hành chương trình trong
ROM nội của 8951.
™ CÁC CHÂN NGUỒN:
AT8951 hoạt động ở nguồn đơn +5V.Vcc được nối vào chân 40, và Vss
(GND) được nối vào chân 20.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 18
/>

Đồ Án Tốt Nghiệp

Chương 2: Giới thiệu chung về phần mềm Keil Software
Phần mềm Keil SoftWare 8051 công cụ phát triển được liệt kê ở dưới là những
chương trình mà để biên tập mã C, tập hợp những tập tin assembly, liên kết và định vị
những đoạn chương trình hướng đối tượng, những thư viện , khởi tạo file HEX, và trình
gỡ lỗi.
• µVision® là một môi trường phát triển tích hợp mà kết hợp quản lý project ,soạn
thảo mã nguồn và trình gỡ lỗi trong môi trường mạnh.
• Cx51 ANSI tối ưu bộ biên dịch C và tạo ra những đoạn chương trình hướng đối
tượng định vị lại từ mã nguồn C.
• Ax51 Macro Assembler tạo ra những đaọn chương trình hướng đối tượng định vị
lại 8051 mã nguồn assembly.
• BL51 bộ kết nối / dò tìm định vị lại những đoạn chương trình hướng đối tượng

được tạo ra từ C51 và A51 vào những đoạn chương rình hướng đối tượng tuyệt
đối.
• LX51 mở rộng bộ kết nối / bộ dò tìm hộ trợ những phương án thiết bị mở rộng và
cung cấp nhựng đặc tính bổ sung.LX51 hỗ trợ tất cả các phương án của Cx51 và
Ax51.
• LIBx51 trình quản lý thư viện kết hợp những đoạn chương trình hướng đối tượng
vào trong những thư viện mà có thể được sử dụng bởi bộ kết nối.
• OHx51 bộ biến đổi sang file HEX . tạo ra những file HEX từ những đoạn
chương trình hướng đối tượng tuyệt đối.
• RTX51 Tiny hệ thống thời gian thực RTX51 , thiết kế đơn giản những dự án
phần mềm phức tạp, định thời.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 19
/>

Đồ Án Tốt Nghiệp

II.1 CHU TRÌNH PHÁT TRIỂN PHẦN MỀM
Khi chúng ta sử dụng phần mềm Keil µVision , chu trình phát triển phần mềm
cũng giống như chu trình phát triển bao phần mểm khác.
1. Khởi tạo project , lựa chọn chip từ cơ sở dữ liệu thiết bị , thiết đặt những công cụ
định hình.
2. Tạo ra những tập tin nguồn C hoặc assembly.
3. Xây dựng những ứng dụng với Project Manager.
4. Kiểm tra lỗi tập tin nguồn.
5. Kiểm tra những ứng dụng được liên kết.
Sơ đồ khối sau đây minh họa chu trình phát triển phần mểm µVision/ARM đầy

đủ .Mỗi phần được mô tả ở bên dưới.

II.2 µVision IDE
µVision IDE kết hợp quản lý dự án , trình biên tập với sự sửa chữa lỗi, cài đặt tùy
chọn, phương tiện, và giúp đỡ trực tuyến. Sử dụng µVision để tạo ra những tập tin nguồn
và tổ chức chúng vào trong những dự án ứng dụng. µVision IDE tự dộng biên tập, lắp
ráp, và liên kết những ứng dụng nhúng.
C51 Compiler & A51 Macro Assembler (Trình biên tập C51 và trình hợp ngữ A51 )
Những tập tin nguồn được tạo ra bởi µVision IDE và được đưa qua C51 hoặc
A51.Trình biên tập và trình lắp ráp xử lý những tập tin nguồn và tạo ra những tập tin đối
tượng định vị lại được.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 20
/>

Đồ Án Tốt Nghiệp
Trình biên dich Keil C51 là một sự thi hành mã ANSI đầy đủ của ngôn ngữ lập
trình mà hỗ trợ tất cả các đặc tính chuẩn của ngôn ngữ C. Ngoài ra , nhiều đặc tính hỗ trợ
trực tiếp kiến trúc 8051 đã được thêm.
Chương trình Keil A51 hỗ trợ tập lệnh đầy đủ của 8051.
LIB51 Library Manager (trình quản lý thư viện LIB51)
LIB51 cho phép chúng ta tạo ra thư viện mục tiêu từ những tập tin đối tượng được
tạo ra từ trình biên tập và trình lắp ráp. Những thư viện được định dạng đặc biệt, sắp đặt
cho chương trình những tập hợp của những đoạn chương trình hướng đối tượng mà có
thể được kết nối những lần sau.Khi bộ kết nối xử lý một thư viện , chỉ những đoạn
chương trình hướng đối tượng cần thiết để tạo ra chương trình mới được sử dụng.
BL51 Linker/Locator ( Bộ kết nối BL51/dò tìm)

Bộ kết nối BL51/dò tìm tạo ra file LF/DWARF tuyệt đối sử dụng những đoạn
chương trình hướng đối tượng từ những thư viện và được tạo ra từ trình biên tâp và trình
lắp ráp.Một tập tin đối tượng tuyệt đối hoặc mođun chứa đựng những mã và dữ liệu
không xác định, Tất cả các đoạn mã và dữ liệu hiện có tại những vị trí bộ nhớ cố định.
ELF/DWARF có thể được sử dụng
• Lập trình một Flash Rom hoặc những thiết bị bô nhớ khác
• Với trình gỡ lỗi
• Chương trình chạy thử
Vision Debugger (Trình gỡ lỗi )
Trình gỡ lỗi có tính chất tượng trưng, mức mức nguồn gỡ lối lý tưởng phù hợp và
tin cậy.Trình gỡ lỗi bao gồm một simulator high-speed để chúng ta mô phỏng 8051.
Những thuộc tính của chip mà chúng` ta sử dụng thì tự động định hình khi chúng ta lụa
chọn từ Device Database. Trình sửa lỗi cung cấp vài phương pháp để cho chúng ta kiểm
tra các thiết bị phần cứng
• Thiết đặt MON51 trên hệ thống và tải chương trình của bạn sử dụng giao diện
Monitor-51 tới trình gỡ lỗi.
• Sử dụng giao diện GDI để kèm theo trình gỡ lỗi tới hệ thống
Bản dưới đây liệt kê những thư mục công cụ phát triển phần mềm Keil .

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 21
/>

Đồ Án Tốt Nghiệp
Assembler Source Template and Include files for the Macro Assembler.( file nguồn
assembly và những file cho trình dịch Macro Assembler)
Executable files of the µVision/C51 tool chain.( những tập tin chạy của µVision/C51)
Example programs ( những chương trình ví dụ)

Configuration files for Flash Monitor and pre-configured versions.( Cấu hình cho
Flash Monitor và những phiên bản định hình
On-Line documentation for µVision/C51.(tài liệu trực tuyến cho µVision/C51)
Include files for the C compiler.(những tập tin cho trình biên tập C)
Files for ISD51 In-System Debugger and pre-configured versions.(những file hỗ trợ
ISD51 trình gỡ lỗi
Run-time libraries and CPU startup files.(thư viện và CPU khởi động sắp xếp nhưng
file)
Configuration files for Monitor-51 (for Classic 8051 Devices).(cấu hình cho Monitor51)
Configuration files for Monitor-390 (for Dallas Contiguous Mode) .(cấu hình cho
monitor-390)
RTX51 Tiny Version 2 Real-Time Operation System.(hệ thống bộ định thời)

Thư mục µVision

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 22
/>

Đồ Án Tốt Nghiệp

II.3 GIAO DIỆN NGƯỜI DÙNG

II.4 Create a Procject (Tạo một Procject )
µVision là một ứng dụng Windows và chương trình được kích hoạt khi click lên
biểu tượng (icon)
Create a Project File (tạo ra một dự án)
Để tạo một hồ sơ mới ta lựa chọn từ µVision menu Project – New Project…một

hội thoại Windows hiện ra và hỏi bạn đặt tên cho cho Project mới vừa khởi tạo.Chúng
gợi ý rằng ta nên sử dụng một Folder riêng cho mỗi Project.Đơn giản hơn để tạo một
Project mới chọn biểu tượng để tạo ra một Procject mới . µVision tạo ra một Procject
mới với tên PROCJECT1.UV2 chứa đựng một tên nhóm và hồ sơ mặc định. Ta có thể
thấy tên này trong Project Workspace – Files .
Khi ta tạo ra một Procject mới uVision hỏi ta lựa chọn CPU cho Procject .hộp thoại
lựa chọn thiết bị xuất hiện cho ta thấy cơ sở dữ liệu thiết bị uVision , chỉ cần lụa chọn bộ
điều khiển mà ta sử dụng . Ví dụ như ta chọn Bộ điều khiển Philips 80C51RD+ .Những
tùy chọn công cụ này cho Philips 80C51RD+ được rút gọn bên cấu hình công cụ.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 23
/>

Đồ Án Tốt Nghiệp

Chú ý:
• Ta có thể lựa chọn Bộ kết nối mở rộng (LX51) và trình Assembler mở rộng
(AX51) trong hộp thoại.Linker và Assembler mở rộng sẵn sàng trong the Keil
Professional Developer's Kit và đưa cho chúng ta những đặc tính bổ sung .
• Khi ta tạo ra một Procject mới , uVision có thể tự động thêm mã khởi động CPU
• Trên một vài thiết bị , môi trường uVision cần những tham số bổ sung mà ta phải
thiết lập.Đọc những thông tin này một cách cẩn thận được cung cấp dưới sụ mô tả
của hộp thoại này, từ đó có thể có những chỉ dẫn bổ sung cho cấu hình thiết bị.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com


Trang 24
/>

Đồ Án Tốt Nghiệp

Ta có thể tạo ra một tập tin nguồn mới với menu option File – New. Điều này mở
một cửa sổ biên tập, nơi mà ta có thể biên soạn mã nguồn. uVision những cú pháp màu
khi ta lưu file với hộp thoại (File –Save As…) dưới tên *.C. Ví dụ chúng ta lưu dưới tên
Main.C

Khi ta đã tạo tập tin nguồn , ta có thể thêm file tới Procject . Những đề xuất
uVision vài cách để thêm tập tin nguồnvào một Procject. Ví dụ như ta có thể lựa chọn
nhóm Procject Workspace-Files và click chuột phải để mở menu. Tùy chọn Add files
được mở ra. Chọn file MAIN.C mà ta đã tạo ra.

SVTH:Lê Văn Long & Đặng Đức Trung CDDT6K
CuuDuongThanCong.com

Trang 25
/>

×