Mục lục:
Video: Cách giao diện Ma trận LED điều khiển MAX7219 8x8 với Vi điều khiển ATtiny85: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Bộ điều khiển MAX7219 được sản xuất bởi Maxim Integrated là trình điều khiển màn hình cathode chung đầu vào / đầu ra nối tiếp có thể giao tiếp vi điều khiển với 64 đèn LED riêng lẻ, màn hình LED số 7 đoạn lên đến 8 chữ số, màn hình biểu đồ thanh, v.v. Bao gồm trên -chip là một bộ giải mã BCD mã-B, mạch quét đa hợp, trình điều khiển phân đoạn và chữ số và một RAM tĩnh 8 × 8 lưu trữ từng chữ số.
Các mô-đun MAX7219 rất thuận tiện để sử dụng với các bộ vi điều khiển như ATtiny85, hoặc trong trường hợp của chúng tôi là Bảng Tinusaur.
Bước 1: Phần cứng
Các mô-đun MAX7219 thường trông như thế này. Chúng có một xe buýt đầu vào ở một bên và xe buýt đầu ra ở bên kia. Điều này cho phép bạn tạo chuỗi 2 hoặc nhiều mô-đun, tức là cái khác, để tạo ra các thiết lập phức tạp hơn.
Các mô-đun mà chúng tôi đang sử dụng có khả năng kết nối trong một chuỗi bằng cách sử dụng 5 jumper nhỏ. Xem hình bên dưới.
Bước 2: Sơ đồ chân và tín hiệu
Mô-đun MAX7219 có 5 chân:
- VCC - nguồn (+)
- GND - mặt bằng (-)
- DIN - Đầu vào dữ liệu
- CS - Chọn chip
- CLK - Đồng hồ
Điều đó có nghĩa là chúng ta cần 3 chân ở phía vi điều khiển ATtiny85 để điều khiển mô-đun. Đó sẽ là:
- PB0 - kết nối với CLK
- PB1 - kết nối với CS
- PB2 - được kết nối với DIN
Điều này là đủ để kết nối với mô-đun MAX7219 và lập trình nó.
Bước 3: Giao thức
Giao tiếp với MAX7219 tương đối dễ dàng - nó sử dụng giao thức đồng bộ có nghĩa là đối với mỗi bit dữ liệu chúng tôi gửi đi sẽ có một chu kỳ đồng hồ biểu thị sự hiện diện của bit dữ liệu đó.
Nói cách khác, chúng tôi gửi 2 chuỗi song song cho các bit - một cho đồng hồ và một cho dữ liệu. Đây là những gì phần mềm làm.
Bước 4: Phần mềm
Cách hoạt động của mô-đun MAX7219 này là:
- Chúng tôi ghi các byte vào thanh ghi nội bộ của nó.
- MAX7219 diễn giải dữ liệu.
- MAX7219 điều khiển các đèn LED trong ma trận.
Điều đó cũng có nghĩa là chúng ta không phải luôn luôn xem xét các dãy đèn LED để thắp sáng chúng - bộ điều khiển MAX7219 đảm nhiệm việc đó. Nó cũng có thể quản lý cường độ của đèn LED.
Vì vậy, để sử dụng mô-đun MAX7219 một cách thuận tiện, chúng ta cần một thư viện các chức năng để phục vụ mục đích đó.
Đầu tiên, chúng ta cần một số hàm cơ bản để ghi vào các thanh ghi MAX7219.
- Ghi một byte vào MAX7219.
- Viết một từ (2 byte) vào MAX7219.
Hàm ghi một byte vào bộ điều khiển trông giống như sau:
void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Đặt CLK thành LOW if (data & 0x80) // Che MSB của dữ liệu PORTB | = (1 << MAX7219_DIN); // Đặt DIN thành CAO else PORTB & = ~ (1 << MAX7219_DIN); // Đặt DIN thành LOW PORTB | = (1 << MAX7219_CLK); // Đặt CLK thành dữ liệu CAO << = 1; // Dịch sang trái}}
Bây giờ chúng ta có thể gửi byte đến MAX7219, chúng ta có thể bắt đầu gửi lệnh. Điều này được thực hiện bằng cách gửi 2 lần - lần 1 cho địa chỉ của sổ đăng ký nội bộ và lần 2 cho dữ liệu chúng tôi muốn gửi.
Có hơn một tá thanh ghi trong bộ điều khiển MAX7219.
Gửi một lệnh hoặc một từ về cơ bản là gửi 2 byte liên tiếp. Việc thực hiện chức năng đó rất đơn giản.
void max7219_word (địa chỉ uint8_t, dữ liệu uint8_t) {PORTB & = ~ (1 << MAX7219_CS); // Đặt CS thành LOW max7219_byte (address); // Gửi địa chỉ max7219_byte (data); // Gửi dữ liệu PORTB | = (1 << MAX7219_CS); // Đặt CS thành HIGH PORTB & = ~ (1 << MAX7219_CLK); // Đặt CLK thành LOW}
Điều quan trọng cần lưu ý ở đây là dòng nơi chúng ta đưa tín hiệu CS trở lại mức CAO - điều này đánh dấu sự kết thúc của chuỗi - trong trường hợp này là sự kết thúc của lệnh. Một kỹ thuật tương tự được sử dụng khi điều khiển nhiều ma trận được kết nối trong một chuỗi. Bước tiếp theo, trước khi chúng ta bắt đầu bật và tắt đèn LED, là khởi tạo bộ điều khiển MAX7219. Điều này được thực hiện bằng cách ghi các giá trị nhất định vào các thanh ghi nhất định. Để thuận tiện, trong khi mã hóa nó, chúng ta có thể đặt trình tự khởi tạo trong một mảng.
uint8_t initseq = {0x09, 0x00, // Đăng ký chế độ giải mã, 00 = Không giải mã 0x0a, 0x01, // Đăng ký cường độ, 0x00.. 0x0f 0x0b, 0x07, // Thanh ghi giới hạn quét, 0x07 để hiển thị tất cả các dòng 0x0c, 0x01, // Thanh ghi tắt máy, 0x01 = Hoạt động bình thường 0x0f, 0x00, // Thanh ghi hiển thị-kiểm tra, 0x00 = Hoạt động bình thường};
Chúng ta chỉ cần gửi 5 lệnh trên theo thứ tự dưới dạng các cặp địa chỉ / dữ liệu. Bước tiếp theo - thắp sáng một hàng đèn LED.
Điều này rất đơn giản - chúng tôi chỉ viết một lệnh trong đó byte đầu tiên là địa chỉ (từ 0 đến 7) và byte thứ 2 là 8 bit đại diện cho 8 đèn LED trong hàng.
void max7219_row (uint8_t address, uint8_t data) {if (address> = 1 && address <= 8) max7219_word (address, data); }
Điều quan trọng cần lưu ý là điều này sẽ chỉ hoạt động cho 1 ma trận. Nếu chúng ta kết nối nhiều ma trận hơn trong một chuỗi, tất cả chúng sẽ hiển thị cùng một dữ liệu. Lý do cho điều này là sau khi gửi lệnh, chúng tôi đưa tín hiệu CS trở lại HIGH, điều này khiến tất cả các bộ điều khiển MAX7219 trong chuỗi chốt lại và hiển thị bất kỳ lệnh cuối cùng nào.
Đề xuất:
Bắt đầu với giao diện cảm biến I2C ?? - Giao diện MMA8451 của bạn bằng ESP32s: 8 bước
Bắt đầu với giao diện cảm biến I2C ?? - Giao diện MMA8451 của bạn bằng cách sử dụng ESP32s: Trong hướng dẫn này, bạn sẽ tìm hiểu tất cả về Cách khởi động, kết nối và nhận thiết bị I2C (Gia tốc kế) hoạt động với bộ điều khiển (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Ma trận chấm 32x8 Max7219 Giao diện với Ardiuno: 5 bước (có hình ảnh)
Giao diện ma trận chấm 32x8 Max7219 với Ardiuno: Xin chào tất cả, dựa trên ma trận chấm o Max7219 không phải là mới vào năm 2020, cho đến gần đây, quá trình thiết lập đã được ghi lại rõ ràng, người ta sẽ tải xuống thư viện phần cứng từ MajicDesigns. và thay đổi một vài dòng trong các tệp tiêu đề và FC16 đã hoạt động như một sự quyến rũ. Điều này cho đến khi
Giao diện vi điều khiển Atmega16 với màn hình LED ma trận chấm: 5 bước
Giao diện vi điều khiển Atmega16 với màn hình LED ma trận chấm: Trong dự án này, chúng tôi sẽ giao diện một màn hình LED ma trận điểm với vi điều khiển AVR (Atmega16). Ở đây chúng tôi sẽ hiển thị mô phỏng trong proteus, bạn có thể áp dụng điều tương tự trong phần cứng của mình. Vì vậy, ở đây, đầu tiên chúng ta sẽ in một ký tự, giả sử là 'A' trong t
ESP8266 RGB LED STRIP Điều khiển WIFI - NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi - Điều khiển điện thoại thông minh RGB LED STRIP: 4 bước
ESP8266 RGB LED STRIP Điều khiển WIFI | NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi | Điều khiển bằng điện thoại thông minh RGB LED STRIP: Xin chào các bạn trong hướng dẫn này, chúng ta sẽ học cách sử dụng gật đầu hoặc esp8266 làm điều khiển từ xa IR để điều khiển dải LED RGB và Nodemcu sẽ được điều khiển bằng điện thoại thông minh qua wifi. Vì vậy, về cơ bản bạn có thể điều khiển DÂY CHUYỀN LED RGB bằng điện thoại thông minh của mình
Giao diện màn hình LED ma trận chấm với vi điều khiển 8051: 5 bước
Giao diện màn hình LED ma trận điểm với vi điều khiển 8051: Trong dự án này, chúng ta sẽ giao tiếp một màn hình LED ma trận điểm với vi điều khiển 8051. Ở đây chúng tôi sẽ hiển thị mô phỏng trong proteus, bạn có thể áp dụng điều tương tự trong phần cứng của mình. Vì vậy, ở đây đầu tiên chúng ta sẽ in một ký tự, giả sử là 'A' trong điều này