Sơ đồ khối mạch điều khiển LCD 3 dây sử dụng thanh ghi dịch.
Sơ đồ khối mạch điều khiển LCD 3 dây sử dụng thanh ghi dịch.

การป้อนข้อมูลอนุกรมไปยัง Shift Register TivaC

ไมโครคอนโทรลเลอร์ TivaC มักใช้ในแอปพลิเคชันแบบฝังที่ต้องสื่อสารกับอุปกรณ์ต่อพ่วง รวมถึง shift register บทความนี้จะแนะนำวิธีการป้อนข้อมูลอนุกรมไปยัง shift register 74HC595 โดยใช้ TivaC

74HC595 shift register เป็น IC ที่นิยมใช้ในการแปลงข้อมูลอนุกรมเป็นข้อมูลขนาน มีขาออก 8 บิตที่สามารถใช้ควบคุมอุปกรณ์ต่างๆ เช่น LED, จอ LCD และอุปกรณ์ต่อพ่วงอื่นๆ การใช้ shift register ช่วยลดจำนวนขา I/O ที่จำเป็นบนไมโครคอนโทรลเลอร์

เพื่อป้อนข้อมูลอนุกรมไปยัง 74HC595 TivaC ต้องสร้างสัญญาณสามสัญญาณ: ข้อมูลอนุกรม (DS), พัลส์สัญญาณนาฬิกา (SH_CP) และสัญญาณ latch (ST_CP)

ข้อมูลอนุกรมจะถูกส่งทีละบิตบนขา DS แต่ละพัลส์สัญญาณนาฬิกาบนขา SH_CP จะเลื่อนข้อมูลเข้าสู่ shift register ทีละบิต เมื่อเลื่อนข้อมูลครบ 8 บิตแล้ว พัลส์สัญญาณบนขา ST_CP จะ latch ข้อมูลจาก shift register ไปยัง register จัดเก็บ และข้อมูลจะปรากฏบนขาออกแบบขนาน (Q0-Q7)

การกำหนดค่าขาบน TivaC เพื่อสื่อสารกับ 74HC595 จะต้องดำเนินการในส่วนการเริ่มต้น ขาสามขาที่เลือกสำหรับ DS, SH_CP และ ST_CP จะต้องกำหนดค่าเป็นเอาต์พุตดิจิทัล ตัวอย่างเช่น หากใช้ขา PA2 สำหรับ DS, PA3 สำหรับ SH_CP และ PA4 สำหรับ ST_CP โค้ดการเริ่มต้นอาจเป็นดังนี้ (โดยใช้ไลบรารี TivaWare):

// ประกาศขา
#define DATA_PIN GPIO_PIN_2
#define CLOCK_PIN GPIO_PIN_3
#define LATCH_PIN GPIO_PIN_4

// เริ่มต้น GPIO Port A
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA));

// กำหนดค่าขาเป็นเอาต์พุตดิจิทัล
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, DATA_PIN | CLOCK_PIN | LATCH_PIN);

หลังจากกำหนดค่าขาแล้ว ข้อมูลสามารถส่งไปยัง 74HC595 ได้โดยใช้วงวนเพื่อส่งทีละบิตและสร้างพัลส์สัญญาณนาฬิกาที่สอดคล้องกัน

ตัวอย่างเช่น ในการส่งค่า 0x55 (01010101 ไบนารี) ไปยัง shift register:

uint8_t data = 0x55;

// Latch ข้อมูลที่ระดับต่ำ
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, 0);

// ส่งทีละบิต
for (int i = 7; i >= 0; i--) {
  // ตั้งค่าข้อมูล
  GPIOPinWrite(GPIO_PORTA_BASE, DATA_PIN, (data >> i) & 1);

  // สร้างพัลส์สัญญาณนาฬิกา
  GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 1);
  GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 0);
}


// Latch ข้อมูลที่ระดับสูงเพื่ออัพเดตเอาต์พุต
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, LATCH_PIN);

โค้ดด้านบนจะวนซ้ำทีละบิตของข้อมูล เริ่มต้นจากบิตที่มีน้ำหนักมากที่สุด (MSB) แต่ละบิตจะถูกเขียนลงในขา DATA_PIN จากนั้นพัลส์สัญญาณนาฬิกาจะถูกสร้างขึ้นบนขา CLOCK_PIN เพื่อเลื่อนบิตเข้าสู่ shift register สุดท้าย ขา LATCH_PIN จะถูกตั้งค่าที่ระดับสูงเพื่อ latch ข้อมูลและอัพเดตเอาต์พุตของ 74HC595

การควบคุมอุปกรณ์ต่อพ่วงผ่าน shift register 74HC595 ด้วย TivaC ต้องการความเข้าใจอย่างถ่องแท้เกี่ยวกับวิธีการทำงานของ shift register และวิธีการกำหนดค่าขา GPIO บน TivaC โดยการใช้ฟังก์ชันไลบรารี TivaWare และตรรกะการควบคุมแบบง่าย คุณสามารถสื่อสารกับอุปกรณ์ต่อพ่วงประเภทต่างๆ ได้อย่างง่ายดาย

Comments

No comments yet. Why don’t you start the discussion?

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *