1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Báo cáo bài tập lớn Vi Xử Lý- Đề tài Lập trình 8 led dùng IC HC595 [Hiệu ứng Snake(), Cánh bướm()]

7 0 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập trình 8 led dùng IC HC595
Tác giả Phạm Văn Chính, Nguyễn Đức Anh, Phạm Tiến Anh, Trần Gia Bảo
Người hướng dẫn Nguyễn Trung Hiếu
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành Vi Xử Lý
Thể loại Báo cáo Bài Tập Lớn
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 7
Dung lượng 2,35 MB

Nội dung

Đề tài: Cho biết rằng IC HC595 là IC ghi dịch. Cho 8 led nối với đầu ra của con IC này . Đầu vào IC là 3 chân A0,A1,A2 được nối tương ứng với SCK , RCK, SDI ( SDI chân dữ liệu , SCK chân clock , RCK: chốt DL) . Lập trình 8 led dùng IC HC595. Bao gồm các hiệu ứng. Snake(), canh_buom(),:

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG



BÁO CÁO BÀI TẬP LỚN MÔN HỌC VI XỬ LÝ

NHÓM 2 Phạm Văn Chính-B20DCVT429 (Nhóm trưởng)

Nguyễn Đức Anh-B19DCDT009 Phạm Tiến Anh-B18DCDT012 Trần Gia Bảo-B19DCDT018 Giảng viên giảng dạy: Nguyễn Trung Hiếu

HÀ NỘI - 2023

Trang 2

Đề tài: Cho biết rằng IC HC595 là IC ghi dịch Cho 8 led nối với đầu ra của con IC này Đầu vào IC là 3 chân A0,A1,A2 được nối tương ứng với SCK , RCK, SDI ( SDI chân dữ liệu , SCK chân clock , RCK: chốt DL) Lập trình 8 led dùng IC HC595 Bao gồm các hiệu ứng Snake(), canh_buom(),:

-A Mô tả đề tài

Bài toán điều khiển đèn LED thông qua vi điều khiển STM32F103R6 và

IC 74HC595 là một phần trong dự án nhúng Báo cáo này tập trung vào việc phân tích và giải thích cách sử dụng IC 74HC595 để mở rộng số lượng đèn LED điều khiển thông qua một số chân GPIO hạn chế của vi điều khiển STM32F103R6

Mục tiêu của dự án là hiện thực hai hiệu ứng LED đơn giản là "Snake"

và "Canh_buom" sử dụng IC 74HC595 để di chuyển và thay đổi trạng thái của các đèn LED Bên cạnh đó, chúng ta cũng sẽ tối ưu thời gian thực hiện của hai hiệu ứng này để đạt được hiệu năng cao và mượt mà trong việc điều khiển LED

B Tổng quan về IC ghi 74HC595 và vi điều khiển

STM32F103R6

I. IC ghi dịch 74HC595

1. Nguyên lý hoạt động: IC 74HC595 là một loại IC đa chức năng được sử dụng để mở rộng số lượng đầu ra của vi điều khiển thông qua giao tiếp nối tiếp (Serial-In-Parallel-Out - SIPO) IC này có khả năng điều khiển 8 đầu ra song song và chỉ cần 3 chân điều khiển từ vi điều khiển để điều khiển 8 đèn LED

2. Đặc điểm và chức năng: Số đầu ra: 8 đầu ra song song, giúp

mở rộng số lượng đèn LED hoặc các thiết bị ngoại vi khác Đầu vào: Hỗ trợ giao tiếp nối tiếp thông qua 3 chân: SDI (Chốt dữ liệu), SCK (Chân dữ liệu), RCK (Chân clock)

Trang 3

o Chân SDA: nó set (đặt giá trị 1) hoặc reset (đặt giá trị 0) chân SDI tương ứng với bit dữ liệu muốn gửi Sau khi đã gửi tất cả

8 bit dữ liệu, vi điều khiển thực hiện xung clock (SCK) để chốt dữ liệu vào thanh ghi dịch

o Chân SCK Khi vi điều khiển muốn gửi dữ liệu, nó thực hiện xung clock bằng cách set (lên mức logic cao) chân SCK và sau đó reset (xuống mức logic thấp) chân SCK

o Chân RCK: Sau khi đã gửi tất cả 8 bit dữ liệu vào thanh ghi dịch của IC 74HC595 thông qua các xung clock SCK, vi điều khiển thực hiện xung chốt bằng cách set (lên mức logic cao) chân RCK và sau đó reset (xuống mức logic thấp) chân RCK Khi chân RCK được chốt, dữ liệu từ thanh ghi dịch của IC 74HC595 được lưu vào các đầu ra song song Q0 đến Q7, từ

đó điều khiển các đèn LED tương ứng

II. Vi điều khiển STM32F103R6

1. Vi điều khiển STM32F103R6 là một vi điều khiển ARM Cortex-M3 cung cấp bởi STMicroelectronics Nó có hiệu suất cao và được sử dụng phổ biến trong các ứng dụng nhúng

và điều khiển

2 Đặc điểm và chức năng:

o Vi xử lý: ARM Cortex-M3 với tốc độ xung nhịp cao

o Bộ nhớ: Bộ nhớ Flash tích hợp và bộ nhớ RAM để lưu trữ chương trình và dữ liệu

o Giao tiếp: Hỗ trợ nhiều giao tiếp như GPIO, SPI, I2C,

UART

o Đầu vào/Đầu ra: Có nhiều chân GPIO để giao tiếp với các thiết bị ngoại vi như IC 74HC595

o Điều khiển: Được lập trình bằng các ngôn ngữ lập trình như C/C++ và hỗ trợ nhiều công cụ lập trình

III. Tương quan giữa IC 74HC595 và vi điều khiển STM32F103R6

Vi điều khiển STM32F103R6 sẽ gửi dữ liệu đến IC 74HC595 thông qua các chân giao tiếp SPI như SDI và SCK Dữ liệu này sau đó được lưu trữ trong thanh ghi dịch của IC 74HC595 và điều khiển các đèn LED thông qua các chân Q0 đến Q7 Vi điều khiển STM32F103R6 sẽ cũng điều khiển chân RCK của IC 74HC595 để chốt dữ liệu và làm cho các đèn LED sáng hoặc tắt theo trạng thái dữ liệu đã được lưu trữ

Trang 4

Điều này cho phép vi điều khiển STM32F103R6 mở rộng số lượng đèn LED điều khiển mà không cần nhiều chân GPIO, giúp tiết kiệm tài

nguyên và quản lý dễ dàng các đèn LED trong ứng dụng nhúng

C Giải thích code, cách hoạt động

1 Khai báo và cấu hình các chân GPIO của vi điều khiển

STM32F103R6:

o Chân GPIOA0 được sử dụng để giao tiếp với chân SDI của

IC 74HC595

o Chân GPIOA1 được sử dụng để giao tiếp với chân SCK của

IC 74HC595

o Chân GPIOA2 được sử dụng để giao tiếp với chân RCK của

IC 74HC595

2 Hàm delay():

o Hàm delay() được sử dụng để tạo trễ thời gian trong mã lệnh

o Đối số 'time' là số lần lặp để tạo trễ Mỗi lần lặp tương đương với một khoảng thời gian nhỏ (trong trường hợp này, 1ms)

3 Hàm shiftout(int val):

o Hàm shiftout() được sử dụng để gửi dữ liệu (val) từ vi điều khiển STM32F103R6 tới IC 74HC595 thông qua giao tiếp SPI

o Hàm này gửi 8 bit dữ liệu (byte) từ bit cao nhất (MSB) đến bit thấp nhất (LSB) thông qua chân SDI của IC 74HC595

o Sau khi gửi mỗi bit dữ liệu, vi điều khiển đẩy bit dữ liệu ra chân SCK (Serial Clock) của IC 74HC595 bằng cách set bit SCK lên rồi reset lại

o Dữ liệu được chốt vào thanh ghi dịch của IC 74HC595 sau khi gửi xong cả 8 bit

4 Hàm setLed(int index, int state):

o Hàm setLed() được sử dụng để bật hoặc tắt một đèn LED cụ thể (index) thông qua vi điều khiển IC 74HC595

o Biến 'output' là biến lưu trữ dữ liệu để gửi tới IC 74HC595 Mỗi bit của biến 'output' tương ứng với một đèn LED Khi bit

là 1, đèn LED sẽ được bật; khi bit là 0, đèn LED sẽ được tắt

o Biến 'state' được sử dụng để xác định trạng thái bật (state = 1) hoặc tắt (state = 0) của đèn LED cụ thể (index)

o Hàm shiftout() được gọi để gửi dữ liệu 'output' tới IC

74HC595 sau khi thay đổi trạng thái của đèn LED

Trang 5

5 Hàm Buffterfly():

o Hàm Buffterfly() được sử dụng để thực hiện hiệu ứng

"Buffterfly" (hiệu ứng con bướm)

o Trong hiệu ứng này, hai đèn LED ở hai vị trí đối diện của thanh LED sẽ tắt và bật đồng thời, tạo ra hiệu ứng con bướm

di chuyển

6 Hàm snake():

o Hàm snake() được sử dụng để thực hiện hiệu ứng "snake" (hiệu ứng con rắn)

o Trong hiệu ứng này, một đèn LED sẽ di chuyển từ trái qua phải và quay lại Đèn LED sẽ di chuyển theo một hướng và chuyển đổi trạng thái bật/tắt của các đèn LED liên tiếp để tạo

ra hiệu ứng con rắn di chuyển

7 Hàm main():

o Trong hàm main(), các hiệu ứng Buffterfly() và snake() được lặp lại vô hạn để thực hiện liên tục các hiệu ứng LED trên mạch Hiệu ứng Buffterfly() sẽ được thực hiện 3 lần trước khi thực hiện hiệu ứng snake() 4 lần, sau đó lại quay lại tiếp tục thực hiện Buffterfly() và snake()

D Mô phỏng trên Proteus

Nhận xét: Vi điều khiển STM32F103R6 và IC 74HC595 cho phép mở rộng số lượng đèn LED điều khiển mà không cần nhiều chân GPIO của

vi điều khiển Hiệu ứng LED được điều khiển mượt mà và ổn định, không gặp tình trạng đèn LED bị đứng hoặc không hoạt động đúng cách

Để có cải thiện hiệu quả, có thể tối ưu hóa mã lệnh và sử dụng các

phương pháp tăng tốc độ xử lý để thực hiện các hiệu ứng LED nhanh hơn và mượt mà hơn

Với IC 74HC59 giúp cho chúng ta có thể giao tiếp nối tiếp với nhiều với

IC 74HC595

Trang 6

E Code trên KeilC 5

Ngày đăng: 10/07/2024, 10:43

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

TÀI LIỆU LIÊN QUAN

w