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

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-sig
n-displa
y-with-led-dot-matrix-16x16.html
ความคิดเห็น
แสดงความคิดเห็น