ทำป้ายตัวอักษรวิ่งด้วย LED Dot Matrix 16x16 โดยส่งข้อมูลผ่าน Serial Communication

07
4HC595 เป็นตัวเลื่อนบิตขนาด 8 บิต (8-bit Shift Register) โดยรับข้อมูลเข้าและส่งออกที่ละบิต (Serial-In & Serial-Out) และมีเอาต์พุตแบบ 8 บิต (Parallel Data Output) ถ้าต้องการจะส่งข้อมูลไปกำหนดสถานะลอจิกให้ขาเอาต์พุตทั้ง 8 ขา (Q0…Q7) จะต้องใช้วิธีเลื่อนบิตทีละบิตเข้าทางอินพุต DS และสร้างสัญญาณ Clock ป้อนเข้าที่ขา SHCP เพื่อกำหนดจังหวะในการทำงานและสามารถเลือกใช้ความถี่ของสัญญาณอินพุต SHCP ได้เกินกว่า 10 MHz การเลื่อนบิตหนึ่งครั้ง ดังนั้นจึงต้องใช้ทั้งหมด 8 ไซเคิล ถ้าเลื่อนมากกว่า 8 ไซเคิล ข้อมูลในรีจิสเตอร์จะถูกส่งออกตามลำดับที่ขา Q7S
          การเลื่อนบิตเพื่อส่งข้อมูลจะส่งแบบ MSB First เมื่อข้อมูลถูกนำไปใส่ไว้ในรีจิสเตอร์ภายในจนครบ 8 บิตแล้ว และต้องการให้ขาเอาต์พุต Q0..Q7 มีสถานะลอจิกตรงตามข้อมูลในรีจิสเตอร์ จะต้องสร้างสัญญาณแบบ Pulse เข้าที่ขา STCP (Storage Clock Input) และต้องกำหนดขาอินพุตที่ขา OE (Output Enable) ให้เป็นลอจิก LOW ถ้าต้องการจะเคลียร์ข้อมูลในรีจิสเตอร์ ให้ป้อนอินพุตที่ขา MR (Master Reset) เป็น LOW แล้วจึงเปลี่ยนเป็น HIGH
#include <Arduino.h>
#include <avr/pgmspace.h>
 
#include <SPI.h>
const byte STCP_PIN = 7;     // Latch
const byte DS_PIN   = 11;    // Data In
const byte SHCP_PIN = 13;    // CLK
 
#define LEDARRAY_D 2         // ขาที่ใช้ในการควบคุมแถวแนวนอน
#define LEDARRAY_C 3         // ขาที่ใช้ในการควบคุมแถวแนวนอน
#define LEDARRAY_B 4         // ขาที่ใช้ในการควบคุมแถวแนวนอน
#define LEDARRAY_A 5         // ขาที่ใช้ในการควบคุมแถวแนวนอน
#define LEDARRAY_G 6         // ขาที่ใช้ในการควบคุมการส่งข้อมูล ขา EN
 
#define runs 1000 // ยิ่งน้อย = Fast : ยิ่งมาก = Slow
 
#define Display_Num_Word 7 //จำนวนโมดูลที่ใช้นการต่อ
unsigned char Display_Buffer[Display_Num_Word*2];
unsigned char Display_Swap_Buffer[Display_Num_Word][32];
bool Shift_Bit = 0;
bool Flag_Shift = 0;
unsigned int Timer0_Count = 0;
unsigned char temp = 0x80;
unsigned int Shift_Count = 0;
unsigned int Display_Word_Count = 0;
unsigned char Message_index = 0;
unsigned char serial_pos[100] = {10,10,10,10,10}; //ข้อมูลเริ่มต้อนการทำงาน
unsigned char serial_index = 5;

https://www.thaieasyelec.com/article-wiki/review-product-article/
moving-sign-display-with-led-dot-matrix-16x16.html

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Coin Validator เครื่องรับเหรียญ เครื่องหยอดเหรียญ Multi Coin รุ่น SG-6

Learning 7 Segment + Arduino