สารบัญ:

LCD COG สำหรับ Arduino Nano: 3 ขั้นตอน
LCD COG สำหรับ Arduino Nano: 3 ขั้นตอน

วีดีโอ: LCD COG สำหรับ Arduino Nano: 3 ขั้นตอน

วีดีโอ: LCD COG สำหรับ Arduino Nano: 3 ขั้นตอน
วีดีโอ: วิธีใช้ Arduino รุ่น Nano 3.0 จากเริ่มต้น ถึงใช้งานได้ ภายใน 5 นาที 2024, พฤศจิกายน
Anonim
LCD COG สำหรับ Arduino Nano
LCD COG สำหรับ Arduino Nano

คำแนะนำนี้จะอธิบายวิธีใช้ COG LCD กับ Arduino Nano

จอแสดงผล COG LCD มีราคาถูก แต่เชื่อมต่อได้ยากกว่าเล็กน้อย (COG ย่อมาจาก "Chip On Glass") ที่ฉันใช้อยู่มีชิปไดรเวอร์ UC1701 Arduino ต้องการเพียง 4 ขา: SPI-clock, SPI-data, chip-select และ command/data

UC1701 ถูกควบคุมโดยบัส SPI และทำงานที่ 3.3V

ที่นี่ฉันอธิบายวิธีใช้งานกับ Arduino Nano มันควรทำงานกับ Arduino Mini หรือ Uno ด้วย - ฉันจะลองในไม่ช้า

นี่เป็นโครงการ Arduino แรกของฉันและฉันไม่ได้เขียน C มาหลายสิบปีแล้ว ดังนั้นหากฉันทำผิดพลาดอย่างเห็นได้ชัด โปรดแจ้งให้เราทราบ

ขั้นตอนที่ 1: สร้างฮาร์ดแวร์

การสร้างฮาร์ดแวร์
การสร้างฮาร์ดแวร์
การสร้างฮาร์ดแวร์
การสร้างฮาร์ดแวร์
การสร้างฮาร์ดแวร์
การสร้างฮาร์ดแวร์

ซื้อ COG LCD ที่มีชิป UC1701 ควรใช้บัส SPI แทนอินเทอร์เฟซแบบขนาน โดยจะมีพินประมาณ 14 พิน ซึ่งจะมีป้ายชื่อตามรายการด้านล่าง (คุณไม่ต้องการอินเทอร์เฟซแบบขนานที่มีพินจำนวนมากที่มีป้ายกำกับว่า D0, D1, D2 …)

ที่ฉันซื้อคือ: https://www.ebay.co.uk/itm/132138390168 หรือคุณสามารถค้นหา "12864 LCD COG" ใน eBay

เลือกอันที่มีหางค่อนข้างกว้างโดยมีหมุดเว้นระยะห่าง 1.27 มม. - หมุดที่ละเอียดกว่าจะบัดกรีได้ยาก ตรวจสอบให้แน่ใจว่ามีชิป UC1701 สังเกตว่าในรูปที่หกบนหน้าอีเบย์มันบอกว่า "CONNECTOR: COG/UC1701"

จอแสดงผลเป็นแบบโปร่งใสและยากที่จะทราบว่าส่วนใดเป็นด้านหน้าและด้านหลัง ศึกษารูปภาพของฉันอย่างระมัดระวัง สังเกตว่าหมุด 1 และ 14 อยู่ที่ไหน - ทำเครื่องหมายไว้ที่หาง

หางที่ยืดหยุ่นนั้นง่ายต่อการบัดกรี แต่ต้องใช้อะแดปเตอร์เพื่อให้คุณสามารถเสียบเข้ากับเขียงหั่นขนม ฉันซื้อแล้ว: https://www.ebay.co.uk/itm/132166865767 หรือคุณสามารถค้นหา "Adapter Smd SSOP28 DIP28" ใน eBay

อะแดปเตอร์ใช้ชิป SOP 28 พินที่ด้านหนึ่งหรือชิป SSOP 28 พินที่อีกด้านหนึ่ง ชิป SOP มีระยะห่างพิน 0.05 (1.27 มม.) ซึ่งเท่ากับส่วนท้ายของ LCD

คุณจะต้องมีหมุดส่วนหัวด้วย เมื่อใดก็ตามที่ฉันซื้อ Arduino หรือโมดูลอื่น ๆ มันมาพร้อมกับหมุดส่วนหัวมากกว่าที่จำเป็น ดังนั้นคุณอาจมีบางส่วนอยู่แล้ว มิฉะนั้น ให้ค้นหา "หมุดส่วนหัว 2.54 มม." ใน eBay

บัดกรีหมุดส่วนหัว 14 เข้ากับอะแดปเตอร์ อย่าดันเข้าไปจนสุด จะดีกว่าถ้าด้านหลังของอะแดปเตอร์แบน วางราบบนม้านั่งของคุณเพื่อไม่ให้หมุดถูกผลักเข้าไปในรูมากเกินไป ตรวจสอบให้แน่ใจว่าหมุดอยู่ด้าน SOP ของบอร์ด (เช่น ชิปที่ใหญ่กว่า)

แผ่นรองหางอยู่ในหน้าต่างประเภทหนึ่ง ดีบุกทั้งสองด้านของพวกเขาด้วยบัดกรี ดีบุกแผ่นของอะแดปเตอร์ จับส่วนท้ายของอะแดปเตอร์ให้เข้าที่ จากนั้นแตะแต่ละแผ่นด้วยหัวแร้ง (คุณจะต้องใช้ปลายที่ละเอียดพอสมควร)

มัดด้ายผ่านรูในอะแดปเตอร์เพื่อทำหน้าที่บรรเทาความเครียด (ฉันใช้ "สายหม้อแปลง")

หากคุณบัดกรีผิดทางอย่าพยายามปลดหาง ดึงหมุดออกทีละอันแล้วย้ายไปอีกด้านหนึ่งของกระดาน (ใช่ ฉันทำพลาดและบัดกรีหางใหม่ นั่นเป็นสาเหตุที่ทำให้ภาพดูเลอะเทอะเล็กน้อย)

ขั้นตอนที่ 2: การเชื่อมต่อกับ Arduino

การเชื่อมต่อกับ Arduino
การเชื่อมต่อกับ Arduino
การเชื่อมต่อกับ Arduino
การเชื่อมต่อกับ Arduino

ส่วนนี้อธิบายวิธีเชื่อมต่อกับ Arduino Nano มันจะคล้ายกันมากสำหรับ Mini หรือ Uno แต่ฉันยังไม่ได้ลอง

ศึกษาแผนภาพวงจร

Arduino Nano ที่เชื่อมต่อกับพอร์ต USB ทำงานที่ 5V LCD ทำงานที่ 3.3V ดังนั้น คุณต้องจ่ายไฟให้ LCD จากพิน 3V3 ของ Nano และลดแรงดันไฟบนพินควบคุมแต่ละอันจาก 5V เป็น 3.3V

Pinout ของ LCD คือ:

  • 1 CS
  • 2 RST
  • 3 CD
  • 4
  • 5 CLK
  • 6 SDA
  • 7 3V3
  • 8 0V Gnd
  • 9 VB0+
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS คือ Chip-Select ดึงต่ำเพื่อเลือก (เปิดใช้งาน) ชิป UC1701 (CS อาจเรียกว่า CS0 หรือ En หรือคล้ายกัน)

RST ถูกรีเซ็ต มันถูกดึงให้ต่ำเพื่อรีเซ็ตชิป (RST อาจเรียกว่ารีเซ็ต)

ซีดีคือคำสั่ง/ข้อมูล มันถูกดึงต่ำเมื่อส่งคำสั่งไปยังชิปผ่าน SPI สูงเมื่อส่งข้อมูล (ซีดีอาจจะเรียกว่า A0)

CLK และ SDA เป็นพินบัส SPI (SDA อาจเรียกว่า SPI-Data CLK อาจเป็น SCL หรือ SPI-Clock)

VB0+ และ VB0- ถูกใช้โดยปั๊มประจุภายในของ UC1701 ปั๊มชาร์จจะสร้างแรงดันไฟฟ้าที่จอ LCD ต้องการ เชื่อมต่อตัวเก็บประจุ 100n ระหว่าง VB0+ และ VB0- เอกสารประกอบ UC1701 แนะนำ 2uF แต่ฉันไม่เห็นความแตกต่างกับ LCD นี้โดยเฉพาะ

หาก LCD ของคุณมีพิน VB1+ และ VB1- ให้เชื่อมต่อตัวเก็บประจุ 100n ระหว่างกัน (หาก LCD ของคุณมีพิน VLCD คุณสามารถลองเชื่อมต่อตัวเก็บประจุ 100n ระหว่าง VLCD และ Gnd มันไม่ได้สร้างความแตกต่างกับ LCD ของฉันเลย)

เชื่อมต่อ LCD กับนาโนดังนี้:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 ซีดี = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0V = Gnd

("*" หมายถึงใช้ตัวแบ่งศักย์ไฟฟ้าเพื่อลดแรงดันไฟฟ้า หาก Arduino ทำงานที่ 3V3 จากแหล่งจ่ายอิสระ คุณไม่จำเป็นต้องมีตัวต้านทาน)

3.3V เป็นเอาต์พุตโดย Nano และสามารถให้กระแสไฟเพียงพอสำหรับ LCD (จอแสดงผลวาดประมาณ 250uA.)

5V นั้นส่งออกโดย Nano และสามารถใช้เพื่อจ่ายไฟให้กับแบ็คไลท์ได้ จำกัดกระแสไฟไว้ที่แบ็คไลท์ด้วยตัวต้านทาน 100 โอห์ม

หากคุณไม่มีพินบน Nano คุณสามารถเชื่อมต่อ RST กับ 3V3 - จากนั้นคุณสามารถใช้ D6 เพื่ออย่างอื่นได้ U1701 สามารถรีเซ็ตในซอฟต์แวร์ได้ด้วยคำสั่งบน SPI ฉันไม่เคยมีปัญหากับเรื่องนั้นมาก่อน แต่ถ้าคุณใช้วงจรของคุณเองในสภาพแวดล้อมที่มีเสียงดัง อาจเป็นการดีกว่าถ้าใช้การรีเซ็ตฮาร์ดแวร์

ขั้นตอนที่ 3: ซอฟต์แวร์

ซอฟต์แวร์
ซอฟต์แวร์

ตามทฤษฎีแล้ว คุณสามารถขับ UC1701 จากไลบรารี U8g2 (หรือ Ucglib หรือไลบรารีอื่นๆ ที่มีได้) ฉันพยายามอยู่หลายวันเพื่อให้มันทำงานและล้มเหลว ไลบรารี U8g2 เป็นสัตว์ประหลาดเพราะสามารถขับเคลื่อนชิปได้หลากหลายและติดตามโค้ดได้ยาก ดังนั้นฉันจึงเลิกและเขียนห้องสมุดขนาดเล็กของตัวเอง ใช้พื้นที่น้อยกว่ามากใน Arduino (ประมาณ 3400 ไบต์บวกฟอนต์)

คุณสามารถดาวน์โหลดห้องสมุดของฉันได้จากที่นี่ (ปุ่มดาวน์โหลดในหน้านี้) รวมภาพร่างตัวอย่างและคู่มือผู้ใช้ หน้าเว็บ https://www.arduino.cc/en/Guide/Libraries อธิบายวิธีการนำเข้าไลบรารี ไปที่ส่วน "การนำเข้าไลบรารี.zip"

เริ่มต้น LCD ด้วย

UC1701เริ่มต้น();

UC1701Begin สามารถใช้พารามิเตอร์เพื่อเปลี่ยนพินหรือเพิกเฉยต่อพิน RST ไลบรารีใช้เฉพาะฮาร์ดแวร์ SPI (ไม่ได้จัดเตรียมซอฟต์แวร์ SPI) จอแสดงผลสามารถพลิกในแกน x และ y ได้ มีประโยชน์หากคุณต้องการติดตั้ง LCD ในทิศทางอื่น

มีหลายขั้นตอนที่ซ้ำกันจากไลบรารี U8g2:

  • DrawLine
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • DrawFrame
  • DrawCircle
  • DrawDisc
  • DrawFilledEllipse
  • วาดวงรี
  • วาดสามเหลี่ยม
  • UC1701SetCursor
  • UC1701ClearDisplay

ขั้นตอนบางอย่างแตกต่างกันเล็กน้อย:

  • เป็นโมฆะ DrawChar (uint8_t c, อักษรคำ);
  • เป็นโมฆะ DrawString(char * s, word Font);
  • เป็นโมฆะ DrawInt (int i, word Font);

ขั้นตอนการวาดสตริงจะถูกส่งผ่านดัชนีของฟอนต์ ฟอนต์ถูกประกาศในหน่วยความจำแฟลชของ Arduino ดังนั้นจึงไม่ได้ครอบครอง SRAM อันล้ำค่า มีฟอนต์ให้เลือก 3 แบบ (เล็ก กลาง และใหญ่) พวกมันจะถูกเชื่อมโยงและครอบครองหน่วยความจำแฟลชหากคุณใช้งาน (แต่ละอันประมาณ 500 ถึง 2,000 ไบต์)

"สี" ได้รับการจัดการแตกต่างจากไลบรารี U8g2 เมื่อล้าง LCD จะมีพื้นหลังสีเข้ม หาก MakeMark (ตัวแปรส่วนกลาง) เป็นจริง การวาดจะเป็นสีขาว หาก MakeMark เป็นเท็จ การวาดจะทำในที่มืด

ขั้นตอนบางอย่างมีลักษณะเฉพาะสำหรับ UC1701:

SetInverted วาดเป็นขาวดำแทนที่จะเป็นขาวดำ

เป็นโมฆะ SetInverted (bool inv);

ความสว่างและคอนทราสต์ของ UC1701 กำหนดโดย:

  • เป็นโมฆะ SetContrast (ค่า uint8_t); // ที่แนะนำคือ 14
  • เป็นโมฆะ SetResistor (ค่า uint8_t); // ที่แนะนำคือ 7

พวกเขาทำงานร่วมกันในทางที่ค่อนข้างไม่น่าพอใจ

SetEnabled ปิดจอ LCD:

เป็นโมฆะ SetEnabled (bool en);

จอแสดงผลใช้เวลา 4uA เมื่อนอนหลับ คุณควรปิดไฟแบ็คไลท์ด้วย - ขับจากพินของนาโน หลังจากเปิดใช้งานอีกครั้ง UC1701 จะถูกรีเซ็ต จอแสดงผลจะถูกล้างและคอนทราสต์และตัวต้านทานจะถูกรีเซ็ตเป็นค่าเริ่มต้น

สรุปได้ว่าจอแสดงผล COG มีราคาถูกและมีขนาดพอเหมาะ ง่ายต่อการเชื่อมต่อกับ Arduino

แนะนำ: