1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(TIỂU LUẬN) báo cáo mô PHỎNG GHÉP nối ARDUINO với PPI8255, PIT825354

10 27 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo cáo Mô Phỏng Ghép Nối Arduino Với PPI8255, PIT8253/54
Tác giả Tạ Minh Đức, Bùi Ngọc Minh
Người hướng dẫn PTS. Phạm Duy Hưng
Trường học Trường Đại Học Công Nghệ, Đại Học Quốc Gia Hà Nội
Chuyên ngành Điện Tử Vi Xử Lý
Thể loại Báo cáo mô phỏng
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 10
Dung lượng 296,83 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chân RD khi được đặt ở mức thấp cho phép 8255A gửi dữ liệu hoặc thông tin trạng thái tới CPU trên đường bus dữ liệu Các chân D0→D7.. Chân WR khi được đặt ở mức thấp cho phép CPU viết dữ

Trang 1

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

BÁO CÁO

MÔ PHỎNG GHÉP NỐI ARDUINO VỚI PPI8255, PIT8253/54

Nhóm: 5 Thành viên: Tạ Minh Đức - 19021435

Bùi Ngọc Minh - 19021488 Giảng viên: Phạm Duy Hưng

Lớp tín chỉ: ELT3104_20

Trang 2

I Mô phỏng ghép nối arduino với PPI8255

1 Tổng quan về PPI8255

PPI 8255 là vi mạch ghép nối ngoại vi có thể lập trình được, thường được gọi là mạch ghép nối vào ra song song Trong thực tế, nó là mạch ghép nối được sử dụng rất phổ biến trong các hệ vi xử lý 8 bit, 16 bit và 32 bit

Hình 1.1 Sơ đồ chân PPI8255

Hình 1.1 miêu tả sơ đồ các chân của PPI8255 Vi mạch gồm 40 chân Trong đó, có

24 lối ra xếp thành 3 cổng song song (Port A, Port B, Port C) Một nửa Port C (PC4

PC7) thuộc nhóm A, được gọi là PC H, nửa kia thược nhóm B, được gọi là PC L Chân CS

là "Chip Select", cho phép giao tiếp giữa 8255A và CPU khi được đặt ở mức thấp Chân

RD khi được đặt ở mức thấp cho phép 8255A gửi dữ liệu hoặc thông tin trạng thái tới CPU trên đường bus dữ liệu (Các chân D0D7) Thực chất, chân này cho phép CPU đọc thông tin từ 8255A Chân WR khi được đặt ở mức thấp cho phép CPU viết dữ liệu tới 8255A Chân A0, A1 sẽ chọn ra 4 thanh ghi bên trong 8255: một thanh để ghi từ điều khiển (CWR - Control Word Register) cho hoạt động của 8255 và 3 thanh ghi khác ứng với các Port PA, PB, PC để đọc ghi dữ liệu với các chế độ như trong hình 1.2

Trang 3

Hình 1.2 Các thao tác với PP8255

2 Mô phỏng ghép nối arduino với PPI8255 trên Proteus 2.1 Mô phỏng trên Proteus

Hình 1.3 Mô phỏng trên Proteus

Trang 4

Ta sử dụng Arduino UNO R3 để điều khiển PPI8255 như trên hình 1.3 Chân RESET và

CS để vi mạch luôn hoạt động và giao tiếp với CPU Các đường bus dữ liệu D0D7 được nối lần lượt với chân 07 của Arduino Chân WR RD của vi mạch được nối lần lượt với chân 11

và 12 của Arduino Chân tín hiệu điều khiển A0, A1 được nối với chân 9,10 của Arduino Ta sử dụng Port A làm lối ra khảo sát, tín hiệu tại các lối ra được nối với các đèn LED

2.2 Code Arduino

Đầu tiên, ta định nghĩa các chân điều khiển như đã trình bày ở phần 2.1 Sau đó, ta thực hiện chọn chế độ vào/ra (OUTPUT/INPUT) cho các chân trong hàm setup() như dưới đây

void setup ()

{

pinMode (0 , OUTPUT ); pinMode (1 , OUTPUT );

pinMode (2 , OUTPUT ); pinMode (3 , OUTPUT );

pinMode (4 , OUTPUT ); pinMode (5 , OUTPUT );

pinMode (6 , OUTPUT ); pinMode (7 , OUTPUT );

pinMode (a0 , OUTPUT ); pinMode (a1 , OUTPUT );

pinMode (WR , OUTPUT ); pinMode (RD , OUTPUT );

}

Sau khi chọn thanh ghi điều khiển của 8255A và đặt các Port của vi mạch ở trạng thái OUTPUT, ta chọn Port để ghi dữ liệu ra Đầu tiên, ta cần vô hiệu hoá chân WR , sau đó đặt chân A0 và A1 ở mức tín hiệu 0 (LOW) để lựa chọn Port A làm lối ra theo như bảng trên hình 1.2 Sau

đó, ta đặt tất cả các lối ra ở mức tín hiệu 1 (HIGH) và kích hoạt chân WR để ghi dữ liệu tới các lối ra

digitalWrite (a0 , 1); //Selecting Control

digitalWrite (a1 , 1); //Selecting Control

digitalWrite (7 , 1); //

digitalWrite (6 , 0); //

digitalWrite (5 , 0); //

digitalWrite (4 , 0); // 8255 All Ports as

digitalWrite (3 , 0); //

digitalWrite (2 , 0); //

digitalWrite (1 , 0);

digitalWrite (0 , 0);

digitalWrite (WR , 0);

Sau khi LED sáng được 500ms, ta lại đặt các lối ra ở mức tín hiệu 0 (LOW) Điều này khiến cho 8 LED sáng lên cùng lúc trong 500ms rồi tắt

delay (500);

digitalWrite (WR , 1);

digitalWrite (a0 , 0);

digitalWrite (a1 , 0);

digitalWrite (0 , 1);

digitalWrite (1 , 1);

digitalWrite (2 , 1);

digitalWrite (3 , 1);

digitalWrite (4 , 1);

digitalWrite (5 , 1);

digitalWrite (6 , 1);

digitalWrite (7 , 1);

digitalWrite (WR , 0);

Trang 5

Sau đó 1s, ta cho các đèn từ LED 8 đến LED 1 sáng lần lượt bằng cách sử dụng vòng for, mỗi LED sáng trong 200ms

delay (1000);

digitalWrite (WR , 1); //Deselecting WRITE

for ( int i = 7;i >= 0;i ){

digitalWrite (WR , 1);

digitalWrite (i , 1);

digitalWrite (WR , 0);

delay (200);

}

II Mô phỏng ghép nối arduino với PIT8253

1 Tổng quan về PIT8523

PIT8253/54 là vi mạch định thời có thể lập trình được để thực hiện chức năng định thời

và đếm, sử dụng thanh ghi 16-bit Vi mạch bao gồm 3 bộ đếm lùi 16-bit, có thể đặt trước giá trị đếm ban đầu Dải tần hoạt động của vi mạch từ 10MHz (đối với 8254) 2,6MHz (đối với 8253)

Có thể đếm nhị phân hoặc đếm BCD Có 6 chế độ hoạt động khác nhau Vi mạch 8254 còn có lệnh READ BACK cho phép người dùng có thể kiểm tra giá trị đếm, chế độ được lập trình, trạng thái hiện tại của bộ đếm

Hình 2.1 Sơ đồ chân PIT8523 Hình 2.1 miêu tả các chân cơ bản của vi mạch PIT8253/54 Về cơ bản, các chân lối vào của vi mạch này có chức năng gần giống như vi mạch PPI8255 Ta có thể dùng chân A0, A1 để điều khiển chức năng đọc/ghi của các cổng logic như trong hình 2.2

Trang 6

Hình 2.2 Cổng logic đọc/ghi

2 Mô phỏng ghép nối arduino với PIT8253 trên Proteus

Hình 2.3 Mô phỏng trên Proteus

Trang 7

Ta thực hiện mô phỏng ghép nối trên Proteus như trên hình 2.3 Ta lập trình Counter 2 đếm 101 xung, bắt đầu từ 100 xuống 0 Đầu tiên, ta khởi tạo giá trị ban đầu cho Counter 2 là

100, chọn chế độ đếm BCD và chế độ hoạt động là 0 Ta cho đầu vào CLK là 1 xung clock có tần số 10Hz, Gate = 1 Bộ Counter 2 sẽ đếm 101 xung và sẽ cho đầu ra OUT là điện thế HIGH sau khi đếm xong

Để thực hiện được như vậy, đầu tiên ta ngắt hoạt động bằng cách cho chân Read và Write

có giá trị 1 Sau đó, thực hiện viết câu lệnh thiết lập thanh ghi 2 là thanh ghi hoạt động ở chế độ

0, chỉ viết byte thấp, định dạng đếm nhị phân bằng cách thiết lập cho bus đệm dữ liệu là

10010000 Sau đó, ta nạp lệnh vào bằng cách cho A0 = 1, A1 = 1 và WRITE = 0 Tiếp đó, ta ngắt lệnh bằng cách cho WRITE = 1 Sau đó thiết lập giá trị ban đầu vào bus đệm dữ liệu là 100 (100

= 01100100 ở hệ nhị phân) Cuối cùng, thực hiện nạp lệnh vào bằng cách cho A0 = 0, A1 = 1 và WRITE = 0 Kết quả sau khi chạy mô phỏng khoảng 10 giây, đèn LED sẽ sáng và không tắt, đúng như ý định ban đầu

Trang 8

PHỤ LỤC

1 Code ghép nối arduino với PPI8255

const int a0 = 9;

const int a1 = 10;

const int WR = 11;

const int RD = 12;

void setup ()

{

pinMode (0 , OUTPUT ); pinMode (1 , OUTPUT );

pinMode (2 , OUTPUT ); pinMode (3 , OUTPUT );

pinMode (4 , OUTPUT ); pinMode (5 , OUTPUT );

pinMode (6 , OUTPUT ); pinMode (7 , OUTPUT );

pinMode (a0 , OUTPUT ); pinMode (a1 , OUTPUT );

pinMode (WR , OUTPUT ); pinMode (RD , OUTPUT );

}

void loop (){

digitalWrite (RD , 1);

digitalWrite (WR , 1);

digitalWrite (a0 , 1);

digitalWrite (a1 , 1);

digitalWrite (7 , 1);

digitalWrite (6 , 0);

digitalWrite (5 , 0);

digitalWrite (4 , 0);

digitalWrite (3 , 0);

digitalWrite (2 , 0);

digitalWrite (1 , 0);

digitalWrite (0 , 0);

digitalWrite (WR , 0);

delay (500);

digitalWrite (WR , 1);

digitalWrite (a0 , 0);

digitalWrite (a1 , 0);

digitalWrite (0 , 1);

digitalWrite (1 , 1);

digitalWrite (2 , 1);

digitalWrite (3 , 1);

digitalWrite (4 , 1);

digitalWrite (5 , 1);

digitalWrite (6 , 1);

digitalWrite (7 , 1);

digitalWrite (WR , 0);

delay (500);

digitalWrite (WR , 1);

digitalWrite (0 , 0);

digitalWrite (1 , 0);

digitalWrite (2 , 0);

//Disabling READ //Disabling WRITE

//Selecting Control Register of

8255 //Selecting Control Register of 8255

//

//

//

/ 8255 All Ports as OUTPUT /

/ / / //Enabling WRITE

//Disabling WRITE //Port A is selected //Port A is selected //

//

//

//

//Port-A all pins high //

//

//

//WRITE ENABLED //WRITE Disabled //

//

//

digitalWrite (3 , 0); digitalWrite (4 , 0);

Trang 9

digitalWrite (5 , 0);

digitalWrite (6 , 0);

digitalWrite (7 , 0);

digitalWrite (WR , 0);

//

//Port-A all pins LOW

//

//

//

//WRITE Enabled delay (1000);

digitalWrite (WR , 1); //Deselecting WRITE

for ( int i = 7;i >= 0;i ){

digitalWrite (WR , 1);

digitalWrite (i , 1);

digitalWrite (WR , 0);

delay (200);

}

}

2 Code ghép nối arduino với PIT5234/54

const int a0 = 8;

const int a1 = 9;

const int WR = 11;

const int RD = 10;

void setup ()

{

pinMode (0 , OUTPUT ); pinMode (1 , OUTPUT );

pinMode (2 , OUTPUT ); pinMode (3 , OUTPUT );

pinMode (4 , OUTPUT ); pinMode (5 , OUTPUT );

pinMode (6 , OUTPUT ); pinMode (7 , OUTPUT );

pinMode (a0 , OUTPUT ); pinMode (a1 , OUTPUT );

pinMode (WR , OUTPUT ); pinMode (RD , OUTPUT );

digitalWrite (RD , 1);

digitalWrite (WR , 1);

//INSTRUCTION 1 = MODE 0, Counter 2, Decrement digitalWrite (7 , 1); // INSTRUCTTION

digitalWrite (6 , 0); //

digitalWrite (5 , 0); //

digitalWrite (4 , 1); //

digitalWrite (3 , 0); //

digitalWrite (2 , 0); //

digitalWrite (1 , 0); //

digitalWrite (0 , 0); //

delay (10);

digitalWrite (a0 , 1); //Select Control Register digitalWrite (a1 , 1);

digitalWrite (WR , 0); //Disabling WRITE

delay (100);

//INSTRUCTION 2 = Initialize 100 (in decimal); digitalWrite (WR , 1);

digitalWrite (7 , 0); // INSTRUCTION

digitalWrite (6 , 1); //

digitalWrite (5 , 1); //

digitalWrite (4 , 0); //

digitalWrite (3 , 0); //

Trang 10

digitalWrite (2 , 1); //

digitalWrite (1 , 0); //

digitalWrite (0 , 0);

delay (10);

digitalWrite (a0 , 0); //Select Counter 2 digitalWrite (a1 , 1);

digitalWrite (WR , 0); //Disabling WRITE

delay (100);

digitalWrite (WR , 1); //Deselecting WRITE }

void loop () {

}

Ngày đăng: 02/12/2022, 08:40

HÌNH ẢNH LIÊN QUAN

Hình 1.1. Sơ đồ chân PPI8255 - (TIỂU LUẬN) báo cáo mô PHỎNG GHÉP nối ARDUINO với PPI8255, PIT825354
Hình 1.1. Sơ đồ chân PPI8255 (Trang 2)
Hình 1.2. Các thao tác với PP8255 - (TIỂU LUẬN) báo cáo mô PHỎNG GHÉP nối ARDUINO với PPI8255, PIT825354
Hình 1.2. Các thao tác với PP8255 (Trang 3)
Hình 1.3. Mô phỏng trên Proteus - (TIỂU LUẬN) báo cáo mô PHỎNG GHÉP nối ARDUINO với PPI8255, PIT825354
Hình 1.3. Mô phỏng trên Proteus (Trang 3)
Hình 2.1. Sơ đồ chân PIT8523 - (TIỂU LUẬN) báo cáo mô PHỎNG GHÉP nối ARDUINO với PPI8255, PIT825354
Hình 2.1. Sơ đồ chân PIT8523 (Trang 5)
Hình 2.2. Cổng logic đọc/ghi - (TIỂU LUẬN) báo cáo mô PHỎNG GHÉP nối ARDUINO với PPI8255, PIT825354
Hình 2.2. Cổng logic đọc/ghi (Trang 6)
Hình 2.3. Mơ phỏng trên Proteus - (TIỂU LUẬN) báo cáo mô PHỎNG GHÉP nối ARDUINO với PPI8255, PIT825354
Hình 2.3. Mơ phỏng trên Proteus (Trang 6)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w