1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo Cáo Bài Tập Lớn Môn Vxl Thiết Kế Mạch Điện Tử Sử Dụng Vi Xử Lý 8051 Và Một Vi Mạch 74’138.Pdf

23 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế mạch điện tử sử dụng vi xử lý 8051 và một vi mạch 74’138 cùng các cổng logic, vi mạch cần thiết khác để điều khiển 10 đèn LED và giao tiếp với 10 nút nhấn
Tác giả Hoàng Văn Huy, Lê Trung Hiếu, Phạm Đăng Bảo
Chuyên ngành VXL
Thể loại Bài tập lớn
Định dạng
Số trang 23
Dung lượng 643,81 KB

Nội dung

Yêu cầu khi làm trên Proteus: Vẽ mô phỏng trên Proteus, lập trình cho 8051 thực hiện chương trình đọc trạng tháicủa các nút nhấn và bật tắt các đèn LED tương ứng tương ứng là nút nhấn vớ

Trang 1

BÁO CÁO BÀI TẬP LỚN

MÔN VXL LỚP L16 – NHÓM 10 – ĐỀ TÀI 7

Họ tên – MSSV:

BẢNG PHÂN CHIA CÔNG VIỆC CỦA CÁC THÀNH VIÊN TRONG

NHÓM

1 2013288 Hoàng Văn Huy Viết thuật toán cho chương trình+Code

chính

100%

2 2013143 Lê Trung Hiếu Giãi mã địa chỉ,Thiết kế phần cứng, dò và

điều chỉnh lại code để hoàn thành BTL 100%

3 2012674 Phạm Đăng Bảo Giãi mã địa chỉ, Thiết kế phần cứng 100%

Trang 2

1 ĐỀ TÀI [SỐ THỨ TỰ CỦA ĐỀ TÀI]

Thiết kế mạch điện tử sử dụng vi xử lý 8051 và một vi mạch 74’138 cùng các cổng logic, vi mạch cần thiết khác để điều khiển 10 đèn LED và giao tiếp với 10 nút nhấn đượccho tại địa chỉ sau

1.1 Yêu cầu khi làm trên Proteus:

Vẽ mô phỏng trên Proteus, lập trình cho 8051 thực hiện chương trình đọc trạng tháicủa các nút nhấn và bật tắt các đèn LED tương ứng (tương ứng là nút nhấn với LED có sốgiống nhau) Nút nhấn khi nhấn vào sẽ bật đèn, nhấn vào lần nữa sẽ tắt đèn Nếu không

có lệnh tắt đèn trong vòng 10 giây thì sau 10 giây đèn sẽ tự động tắt

Trang 3

2 THIẾT KẾ MÔ PHỎNG TRÊN PROTEUS.

2.1 Sơ đồ khối tổng quan

2.1.1 Sơ đồ khối tổng quan

Trang 4

Chân (Pin) Kiểu chân Chức năng

Port 0 Inout (Theo sơ đồ mũi tên

Port 2 Output (theo sơ đồ mũi

tên chỉ đi qua EPROM) Xuất ra tín hiệu giải mã địa chỉ để chọnvùng địa chỉ cần truy xuấtOUTPUT Xuất tín hiệu cho phép ra các Led

OUTPUT Xuất tín hiệu cho phép khi nhận dữ liệu từ

các Switch

2.2.2 Chống rung nút nhấn

- Vì nút nhấn thường có hiện tượng rung phím Do phần cứng phản xạ cực nhanh với các tiếp xúc,nên khi trong quá trình nhấn nút như trên thì phần cứng nó

Trang 5

hiểu rằng bạn nhấn công tắc nhiều lần nên ta dùng tụ 1nF để khắc phục hiện tượng trên

2.2.2.2: 74HC573(2)

Trang 6

Chân (Pin) Kiểu chân Chức năng

Trang 7

Từ bảng phân vùng trên, ta thấy CS0, CS1,CS2 thì A15 đều = 0 , chỉ có CS3 có phân vùng chứa A15=1 nên ta chọn A15 làm ngõ vào chân E2 và E3 cho thuận tiện, chân E1 cho tích cực cao , 3 ngõ vào C B A của IC 74LS138 là A14,A13,A12

Để thuận tiện cho việc thiết kế mạch giải mã địa chỉ một cách đơn giản, ta lập bảng phân chia nhỏ phân vùng của các /CS phụ thuộc vào các ngõ ra của IC 74LS138 như sau:

Dựa vào bảng trên , ta tiến hành thiết kế các /CS như sau:

-Để có thể tách vùng địa chỉ ta dùng cổng OR cho tín hiệu tích cực thấp.

-Để có thể gộp vùng địa chỉ ta dùng cổng AND cho tín hiệu tích cực thấp.

 Thiết kế /CS0:

Trang 8

Vùng địa chỉ /CS0 bao gồm 2 phân vùng gộp lại gồm:

 Từ 0000H - 1FFFH : phân vùng này bao gồm 2 vùng /Y0 và /Y1 gộp lại

Vùng địa chỉ /CS1 bao gồm 3 phân vùng gộp lại gồm:

 Từ 2400H-2FFFH : phân vùng này tách ra từ vùng /Y2 với điều kiện 1 trong 2địa chỉ A10 và A11 bằng 1

Vùng địa chỉ này bao gồm 4 phân vùng gộp lại gồm:

 Từ 4600H – 4FFFFH :đây là phân vùng còn lại của /Y4 sau khi dùng cho vùngCS1

=>

Trang 9

 Từ 5000H – 5FFFH : đây là phân vùng của toàn bộ /Y5

 Từ 6000H -6FFFFH :đây là phân vùng của toàn bộ /Y6

 Từ 7000H – 77FFH : đây là phần vùng của /Y7 với điều kiện A11 tích cực thấp

=>

=> /CS2 = ( ). (

 Thiết kế /CS3

Vùng địa chỉ này bao gồm 4 phân vùng gộp lại gồm:

 Từ 7800H – 7FFFH:đây là phân vùng của /Y7 với điều kiện A11 tích cực cao

Trang 10

3 ASSEMBLY CODE FOR 8051

3.1 Sơ đồ giải thuật chương trình chính.

Trang 11

Sau khi Reset (là mới nạp lại code, chạy từ đầu), chương trình chạy qua phần Setup -

là bước cấu hình cho các đèn tắt , khai báo ngắt Timer 1 , chọn ô nhớ có địa chỉ 41H và 42H để lưu trạng thái hoạt động của các LED 0- 9 Với 5 bit thấp của ô nhớ 41H dùng để lưu trạng thái hoạt động của các LED 0-4, 5 bit thấp của ô nhớ 42H dùng để lưu trạng thái hoạt động của các LED 5-9

+ Quy tắc : bit 0 là trạng thái LED tắt , bit 1 là trạng thái LED bật

- Sau đó chương trình vào vòng lập vô tận, trong vòng lập này làm nhiệm vụ:

+ Thực hiện đọc tín hiệu từ các SW về vi xử lí bằng 2 dòng lệnh :

MOV DPTR, #S1ADR ( S1ADR là địa chỉ giao tiếp ngoại vi với SW)

MOVX A,@DPTR

Trang 12

+ Dùng Port P1 để lưu tín hiệu từ các SW , sau đó kiểm tra lần lượt các SW nào được nhấn Dùng ô nhớ 40H ( biến mặt nạ ) để đánh dấu SW nào được tác động, bit tương ứng của ô nhớ 40H với SW sẽ được SETB lên 1.

+ Khi nhận thấy có SW được tác động, ta sẽ chuyển đến phần xử lí tín hiệu bằng các dòng lệnh

MOV A,40H ; cho A = MASK

XRL A,41H ; tiến hành XOR với MASK

MOV 41H,A ; cập nhật lại trạng thái mới của các LED

Bit mask BIT trạng thái Bit trạng thái mới

Trang 13

3.2 Sơ đồ giải thuật các chương trình ngắt (nếu có)

- Sau khi nhận được tín hiệu cờ báo tràn TF1 = 1, chương trình sẽ chuyển đến phần

ngắt, ta tiến hành cấu hình lại cho Timer 1 với thời gian delay là 50ms

- Tiến hành kiểm tra trạng thái của các đèn LED Dùng các ô nhớ từ 21H đến 2AH

làm biến để đếm số lần sáng của LED ( 1 lần tương ứng khoảng 50ms )

- Đèn có bit tương ứng có giá trị bằng 1 ( tức đang được bật ) sẽ được tăng biến đếm

lên 1 Đèn có bit tương ứng có giá trị bằng 0 ( tức đã tắt ) sẽ bị xóa về 0

Trang 14

- Sau đó chương trình kiểm tra các biến đếm nào đạt giá trị khoảng 200 lần ( tức

khoảng thời gian đèn sáng 10s, vì lí do sai số nên ta chỉ chọn giá trị gần bằng 200 lần ) thì chương trình sẽ nhảy đến phần xử lí dữ liệu để tiến hành tắt LED tương ứng

- Sau khi kết thúc chương trình phục vụ ngắt sẽ quay về chương trình chính đang

thực hiện trước đó để tiếp tục thực hiện công việc của mình

Trang 16

ORG 2000H

INIT: ; khởi tạo các giá trị ban đầu

MOV 41H,#0 ; ô nhớ 41H để đánh dấu trạng thái bật tắt của led 0-4

MOV 42H,#0 ; ô nhớ 42H để đánh dấu trạng thái bật tắt của led 5-9

MOV A,#0FFH

MOV DPTR,#L1ADR ; điều chỉnh ban đầu tất cả các đèn 0-4 đều tắt

MOVX @DPTR,A

MOV DPTR,#L2ADR

MOVX @DPTR,A ; điều chỉnh ban đầu tất cả các đèn 5-9 đều tắt

MOV TMOD,#10H ; khai báo ngắt timer1

MOVX A,@DPTR ; cập nhật trạng thái các nút nhấn lưu vào thanh ghi A

MOV P1,A ; cho P1= A

MOV A,#0

JB P1.0,NEXT1 ; xét Sw0 có được nhấn hay không , nếu = 1 tức không được nhấn,nhảy đến xét Sw kế tiếp

MOV 40H,#01H ; nếu được nhấn thì cho MASH = 01H

LOOP0: ; Vòng lặp kiểm tra liên tục xem SW0 được nhả hay chưa

MOVX A,@DPTR

MOV P1,A

JNB P1.0,LOOP0

JMP ON1 ; khi được nhả rồi thì nhảy đến bước truyền tín hiệu để bật LED0

NEXT1: ; tương tự như SW0

Trang 17

ON1: ; Bước truyền tín hiệu cho các LED 0-4

MOV A,40H ; Cho A = MASK

XRL A,41H ; Cho ( MASK) XOR ( TRẠNG THÁI CÁC LED) Khi XOR vớiMASK thì các bit trạng thái của LED XOR với 0 thì sẽ giữ nguyên trạng thái, XOR với 1thì bị đảo bit

Nên đèn đang bật bị tác động sẽ tắt và ngược lại Các đèn không tác động thì giữnguyên trạng thái

MOV 41H,A ; lưu lại giá trị trạng thái vừa cập nhật vào ô nhớ 41H

CPL A ; Vì các led là anot chung nên phải đảo bit các trạng thái

MOV DPTR,#L1ADR ; cập nhật tín hiệu cho các LED 0 -4

Trang 19

MOVX @DPTR,A

NEXT10:

JMP START

ISR_T1: ; phần ngắt ứng dụng đếm thời gian 10s

PUSH ACC ; cất giá trị A trong CTR chính vào ngăn xếp

CLR TR1

MOV TH1,#HIGH(-50000)

MOV TL1,#LOW(-50000)

SETB TR1

MOV A,41H ; xét trạng thái của LED 0 hiện tại

JNB ACC.0,SW1 ; nếu LED đang tắt thì nhảy đến nhãn SW1 để xóa bộ đếm số lần về0

MOV R0,#21H ; nếu LED vẫn bật thì tăng giá trị lên 1

CJNE @R0,#0C4H,LED2 ; nếu chưa đủ thì xét đèn kế tiếp

MOV A,41H ; nếu đủ rồi thì tiến hành tắt LED

JMP EXIT ; thoát khỏi ngắt

LED2: ; tương tự LED 0

Ngày đăng: 08/03/2024, 16:33

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w