Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với các thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 và bàn phím số HEX - pdf 15

Download miễn phí Đồ án Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với các thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 và bàn phím số HEX



Mục Lục
 
Lời cảm ơn.7
MỞ ĐẦU .8
Phần I: Tổng quan về VđK 8051 và Các thiết bị ngoại vi.9
CHƯƠNG I: VI ĐIỀU KHIỂN 8051.9
I. KHÁI NIỆM CHUNG VỀ VI ĐIỀU KHIỂN.9
I.1 Sù ra đời.9
I.2 Điểm khác biệt giữa VĐK và VXL dùng chung.9
I.3 Tiêu chuẩn lùa chọn 1 bé vi điều khiển.10
II. VI ĐIỀU KHIỂN 8051.10
II.1 Sơ đồ khối của 8051.10
II.2 Sơ đồ và chức năng các chân của 8051.11
II.2.1 Sơ đồ các chân.11
II.2.2 Chức năng của các chân.11
II.2.3 Cấu trúc của các cổng xuất/nhập.14
II.3 Tổ chức bộ nhớ 8051.14
II.3.1 Vùng RAM đa mục đích.15
II.3.2 Vùng RAM định địa chỉ bit.15
II.3.3 Các dãy thanh ghi.15
II.3.4 Các thanh ghi chức năng đặc biệt.15
II.3.4.1 Từ trạng thái chương trình PSW.15
II.3.4.2 Thanh ghi B.16
II.3.4.3 Con trá stack.16
II.3.4.4 Con trỏ dữ liệu.17
II.3.4.5 Các thanh ghi port.17
II.3.4.6 Các thanh ghi định thời TMOD và TCON.17
II.3.4.7 Thanh ghi của cổng nối tiếp.19
II.3.4.8 Các thanh ghi ngắt.20
II.3.4.9 Thanh ghi điều khiển nguồn.20
II.4 Bộ nhớ ngoài.21
II.4.1 Truy xuất bộ nhớ chương trình ngoài.21
II.4.2 Truy xuất bé nhớ dữ liệu ngoài.22
II.4.3 Hoạt động Reset.23
III. TẬP LỆNH CỦA 8051.24
III.1 Các kiểu định địa chỉ.24
III.1.1 Định địa chỉ thanh ghi.24
III.1.2 Định địa chỉ trực tiếp.24
III.1.3 Định địa chỉ gián tiếp.25
III.1.4 Định địa chỉ tức thời.26
III.1.5 Định địa chỉ tương đối.26
III.1.6 Định địa chỉ tuyệt đối.26
III.1.7 Định địa chỉ dài.27
III.1.8 Định địa chỉ chỉ số.27
III.2 Các loại lệnh.27
III.2.1 Lệnh số học.27
III.2.2 Các lệnh Logic.28
III.2.3 Nhóm lệnh di chuyển dữ liệu.30
III.2.4 Các lệnh xử lý bit.31
III.2.5 Các lệnh rẽ nhánh.31
III.2.6 Nhóm lệnh dịch, quay.33
III.2.7 Các lệnh làm việc với Stack.33
IV. HOẠT ĐỘNG ĐỊNH THỜI.33
IV.1 Các bộ định thời của 8051.33
IV.2 Thanh ghi chế độ bộ định thời.34
IV.2.1 Các chế độ định thời và cờ tràn.34
IV.2.1.1 Chế độ định thời 13-bit.34
IV.2.1.2 Chế độ định thời 16-bit.34
IV.2.1.3 Chế độ tự nạp lại 8-bit.34
IV.2.1.4 Chế độ định thời chia xẻ.35
IV.3 Nguồn xung clock định thời .35
V. HOẠT ĐỘNG NGẮT.35
V.1 Tổ chức ngắt của 8051.35
V.1.1 Cho phép và không cho phép ngắt. .35
V.1.2 Ưu tiên ngắt.35
V.1.3 Chuỗi vòng.36
V.2 Xử lý ngắt.36
V.3 Các vector ngắt.36
V.4 Các ngắt do port nối tiếp .36
V.5 Các ngắt ngoài.37
VI. LẬP TRÌNH HỢP NGỮ.37
VI.1 Trình dịch hợp ngữ.37
VI.2 Khuôn dạng của chương trình hợp ngữ.37
VI.3 Cấu trúc chương trình.38
VI.4. Tổ chức chương trình.38
CHƯƠNG II: CÁC THIẾT BỊ NGOẠI VI.39
I. ĐỒNG HỒ THỜI GIAN THỰC DS12887.39
I.1 Hoạt động.40
I.2 Chức năng các chân .41
I.3 Bản đồ địa chỉ. .43
I.4 Các thanh ghi điều khiển.46
I.5 Minh họa ghép nối giữa DS12887 với 8051.49
II. THIẾT BỊ HIỂN THỊ LCD.49
II.1 LCD.49
II.2 Minh họa ghép nối giữa LCD với 8051.52
III. ADC0809.52
III.1 Sơ đồ các chân của ADC0809.53
III.2 Các bước lập trình cho ADC0809.54
III.3 Minh họa ghép nối ADC0809 với 8051.55
IV.BÀN PHÍM HEX.55
IV.1 Minh họa ghép nối bàn phím với 8051.56
V. GIẢI MÃ ĐỊA CHỈ 74LS138.57
VI. CHỐT ĐỊA CHỈ 74HC373.57
V.1.Sơ đồ chân của 74HC373.57
V.2 Hoạt động của 74LS373.57
PHẦN II. THIẾT KẾ.59
CHƯƠNG I: THIẾT KẾ PHẦN CỨNG.59
I. Mạch nguyên lý.59
II.Sơ đồ mạch.61
CHƯƠNG II: THIẾT KẾ PHẦN MỀM.62
I. Chuơng trình quét bàn phím HEX.62
II. Đọc thời gian từ đồng hồ thời gian thực RTC DS12887.67
III. ĐiÒu khiển ADC0809 để thực hiện chuyển đổi.74
KẾT LUẬN.78
TÀI LIỆU THAM KHẢO.79
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

hay các thanh ghi trên chip. Mét byte thêm vào tiếp theo opcode dùng để xác định địa chỉ. Trong 8051 có 128 byte bộ nhớ RAM. Bộ nhớ RAM được gán địa chỉ từ 00H đến FFH và được phân chia nh­ sau:
- Các ngăn nhớ từ 00H đến 1FH được gán cho các dãy thanh ghi và ngăn xếp.
- Các ngăn nhớ từ 20H đến 2FH được dành cho không gian định địa chỉ bit để lưu dữ liệu theo từng bit.
- Các ngăn nhớ từ 30H đến 7FH là không gian để lưu dữ liệu có kích thước 1 byte.
Chế độ định địa chỉ trực tiếp có thể truy cập toàn bộ không gian của bộ nhớ RAM. Tuy nhiên, chế độ này thường được dùng để truy cập các ngăn nhớ RAM từ 30H đến 7FH, vì thực tế đối với không gian nhớ dành cho dãy thanh ghi thì đã được truy cập bằng tên thanh ghi nh­ R0- R7. Ở chế độ định địa chỉ trực tiếp , địa chỉ ngăn nhớ RAM chứa dữ liệu là toán hạng của lệnh .
Ví dô :
MOV R0, 40 ; sao nội dung ngăn nhớ 40H của RAM vào R0
MOV R4, 7FH ; chuyển nội dung ngăn nhớ 7FH vào R4 .
Một ứng dụng quan trọng của chế độ định địa chỉ trực tiếp là ngăn xếp. Trong họ 8051, chỉ có chế độ định địa chỉ trực tiếp là được phép cất và lấy dữ liệu từ ngăn xếp.
III.1.3 Định địa chỉ gián tiếp (Indirect addressing)
Ở chế độ này, thanh ghi được dùng để trỏ đến dữ liệu có trong bộ nhớ. Nếu dữ liệu có trên chip CPU thì chỉ các thanh ghi R0 và R1 mới được sử dụng, và như vậy cũng có nghĩa là không thể dùng các thanh ghi R2-R7 để trỏ đến địa chỉ của toán hạng ở chế độ định địa chỉ này. Nếu R0 và R1 được dùng làm con trỏ, nghĩa là chúng lưu địa chỉ của ngăn nhớ RAM thì trước các thanh ghi cần đặt dấu "@" như các ví dụ sau:
MOV A, @R0 ; chuyển ngăn nhớ RAM có địa chỉ ở R0 vào A
MOV @R1, B ; chuyển B vào ngăn nhớ RAM có địa chỉ ở R1
Chó ý: ở đây R0 còng nh­ R1 đều có dấu "@" đứng trước. Nếu không có dấu "@" đứng trước thì đó là lệnh chuyển nội dung thanh ghi R0 và R1 chứ không phải dữ liệu ngăn nhớ có địa chỉ trong R0 và R1. Mét trong những ưu điểm của chế độ định địa chỉ gián tiếp là cho phép truy cập dữ liệu linh hoạt hơn so với chế độ định địa chỉ trực tiếp. Tuy nhiên R0 và R1 là các thanh ghi 8 bit, nên chúng chỉ được phép truy cập đến các ngăn nhớ RAM trong, từ địa chỉ 30H đến 7FH và các thanh ghi SFR. Trong thực tế, có nhiều trường hợp cần truy cập dữ liệu được cất ở RAM ngoài hay không gian ROM trên chip. Trong những trường hợp đó chúng ta cần sử dụng thanh ghi 16 bit DPTR.
III.1.4 Định địa chỉ tức thời (Immediate addressing)
Khi toán hạng là một hằng số thay vì là một biến, hằng số này có thể đưa vào lệnh và đây là byte dữ liệu tức thời.
Trong hợp ngữ, các toàn hạng tức thời được nhận biết nhờ vào ký tù '# ' đặt trước chúng. Toán hạng này có thể là một hằng số học, một biến hay một biểu thức số học sử dụng các hằng số, các ký hiệu và các toán tử. Trình dịch hợp ngữ tính giá trị và thay thế dữ liệu tức thời vào trong lệnh.
Ví dụ lệnh : MOV A, #12 ; ;Nạp giá trị 12(OCH) vào thanh chứa A
Tất cả các lệnh sử dụng kiểu định địa chỉ tức thời đều sử dụng hằng dữ liệu 8 bit làm dữ liệu tức thời. Có một ngoại lệ khi ta khởi động con trỏ dữ liệu 16-bit DPTR, hằng địa chỉ 16 bit được cần đến.
III.1.5 Định địa chỉ tương đối (Relative addressing)
Kiểu định địa chỉ tương đối chỉ được sử dụng cho các lệnh nhảy. Một địa chỉ tương đối là một giá trị 8 bit có dấu. Giá trị này được cộng với một bộ đếm chương trình để tạo ra địa chỉ của lệnh tiếp theo cần thực thi. Định địa chỉ tương đối có điểm lợi là cung cấp cho ta mã không phụ thuộc vào vị trí, nhưng lại có điểm bất lợi là các đích nhảy bị giới hạn trong tầm.
III.1.6 Định địa chỉ tuyệt đối (Absolute addressing)
Kiểu định địa chỉ này được sử dụng với các lệnh ACALL và AJMP. Đây là các lệnh 2 byte cho phép rẽ nhánh chương trình trong trang 2k hiện hành của bộ nhớ chương trình bằng cách cung cấp 11 bit thấp của địa chỉ đích. Trong đó có 3 bit cao (A8-A10) và 8 bit thấp (A0-A7) thành lập byte thứ 2 của lệnh.
III.1.7 Định địa chỉ dài (Long addressing)
Kiểu định địa chỉ dài chỉ được dùng cho các lệnh LCALL và LJMP. Các lệnh 3 byte này chứa địa chỉ đích 16 bit. Lợi Ých của kiểu định địa chỉ này là sử dụng hết toàn bộ không gian nhớ chương trình 64K, nhưng lại có điểm bất lợi là lệnh dài đến 3-byte và phụ thuộc vào vị trí.
III.1.8 Định địa chỉ chỉ sè (Indexed addressing)
Chế độ định địa chỉ chỉ số được sử dụng rộng rãi khi truy cập các phần tử dữ liệu của bảng trong không gian ROM chương trình của 8051. Lệnh được dùng cho mục đích này là "MOVC A, @A+DPTR". Thanh ghi 16 bit DPTR và thanh ghi A được dùng để tạo ra địa chỉ của phần tử dữ liệu được lưu trong ROM trên chip. Ở lệnh này, nội dung của A được cộng với nội dung thanh ghi 16- bit DPTR để tạo ra địa chỉ 16 bit.
III.2 CÁC LOẠI LỆNH
III.2.1 Lệnh số học
ADD
A, source
Cộng toán hạng A với nguồn.
A, Rn
(A)¬ (A) + (Rn)
A, Direct
(A)¬ (A) + (Direct)
A, @Ri
(A)¬ (A) + ((Ri))
A, #data
(A)¬ (A) + #data
ADDC
A, source
Cộng có cờ nhí (add with carry)
A, Rn
(A)¬ (A) + (C)+ (Rn)
A, Direct
(A)¬ (A) + (C)+ (Direct)
A, @Ri
(A)¬ (A) + (C)+ ((Ri))
A, #data
(A)¬ (A) + (C)+ #data
SUBB
A, source
Trừ số có mượn
A, Rn
(A)¬ (A) - (C) - (Rn)
A, Direct
(A)¬ (A) - (C) - (Direct)
A, @Ri
(A)¬ (A) - (C) - ((Ri))
A, #data
(A)¬ (A) - (C) - #data
INC
Byte
Tăng bởi 1
A
(A) ¬ (A) + 1
Rn
(Rn) ¬ (Rn) + 1
Direct
(Direct) ¬ (Direct) + 1
@Ri
((Ri)) ¬ ((Ri)) + 1
DEC
Byte
Giảm bởi 1
A
(A) ¬ (A) - 1
Rn
(Rn) ¬ (Rn) - 1
Direct
(Direct) ¬ (Direct) - 1
@Ri
((Ri)) ¬ ((Ri)) – 1
MUL
A B
Nhân
(B) ¬ High byte of (A) x (B) : byte cao của kết quả phép nhân được chứa trong thanh ghi B
(A) ¬ Low byte of (A) x (B) : byte thấp của kết quả nhân được chứa trong thanh ghi A.
DIV
A B
Chia
(A) ¬ Quotient of (A) / (B) : thương số của phép chia được chứa trong thanh ghi A.
(B) ¬ Remainder of (A) / (B) : phần dư được chứa trong thanh ghi B.
III.2.2 Các lệnh Logic
ANL
ANL
A, #data
A, Direct
(A)¬ (A) AND + (source)
A, @Ri
A, Rn
Direct , A
(Direct) ¬ (Direct) AND (A)
Direct, #data
(Direct) ¬ (Direct) AND #data
ANL
C, bit
(C) ¬ (C) AND (bit)
C, /bit
(C) ¬ (C) AND NOT(bit)
ORL
ORL
A, #data
A, Direct
(A)¬ (A) OR + (source)
A, @Ri
A, Rn
Direct , A
(Direct) ¬ (Direct) OR (A)
Direct, #data
(Direct) ¬ (Direct) OR #data
ORL
C, bit
(C) ¬ (C) OR (bit)
C, /bit
(C) ¬ (C) OR NOT(bit)
XRL
XRL
A, #data
A, Direct
(A)¬ (A) XOR + (source)
A, @Ri
A, Rn
Direct , A
(Direct) ¬ (Direct) XOR (A)
Direct, #data
(Direct) ¬ (Direct) XOR #data
CLR
CLR
A
(A) ¬ 0
C
(C) ¬ 0
CPL
CPL
A
(A) ¬ NOT (A)
C
(C) ¬ NOT (C)
SWAP
A
(A3 - A0) ¨ (A7 - A4)
III.2.3 Nhóm lệnh di chuyển dữ liệu
MOV
MOV
A, #data
(A) ¬ #data
A, Direct
(A) ¬ (Direct)
A, @Ri
(A) ¬ ((Ri))
A, Rn
(A) ¬ (Rn)
MOV
Rn, #data
(Rn) ¬ #data
Rn, Direct
(Rn) ¬ (Direct)
Rn, A
(Rn) ¬ (Rn)
MOV
Direct, #data
(Direct) ¬ #data
Direct, Direct
(Direct) ¬ (Direct)
Direct, @Ri
(Direct) ¬ ((Ri))
Direct, Rn
(Direct) ¬ (Rn)
MOV
@Ri, A
((Ri)) ¬ (A)
@Ri, Direct
((Ri)) ¬ (Direct)
@Ri, #data
((Ri)) ¬ #data
MOV
C, bit
(C) ¬ (bit)
Bit, C
(bit) ¬ (C)
MOV
DPTR, #data16
(DPTR) ¬ #data 16
MOVC
MOVC
A, @A + DPTR
(A) ¬ ((A) + (DPTR))
A, @A + PC
(A) ¬ ((A) + (PC))
MOVX
MOVX
A, @Ri
(A) ¬ ((Ri))
A, @DPTR
(A) ¬ ((DPTR))
@Ri, A
((Ri)) ¬ (A)
@DPTR, A
((DPTR)) ¬ (A)...
Music ♫

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