- วัสดุที่จำเป็น
- แผนภูมิวงจรรวม
- 128 * 64 กราฟิก LCD
- การแปลงรูปภาพเป็น Hex Code:
- รหัส Arduino และคำอธิบายการทำงาน
LCD ที่ใช้ในโครงการอิเล็กทรอนิกส์มีหลายประเภท เราได้ใช้ 16X2 LCD ในหลายโครงการของเราแล้วและยังใช้ TFT LCD กับ Arduino คุณสามารถค้นหาโครงการที่เกี่ยวข้องกับ LCD 16X2 ทั้งหมดของเราได้โดยไปที่ลิงค์นี้รวมถึงการ เชื่อมต่อกับ 8051, AVR, Arduino และอื่น ๆ อีกมากมาย
ST9720 กราฟิกจอแอลซีดีจะแตกต่างจากแอลซีดีสามัญ จอ LCD ธรรมดาสามารถพิมพ์ข้อความธรรมดาหรือตัวเลขได้ในขนาดคงที่เท่านั้น แต่ใน LCD แบบกราฟิกเรามี 128 * 64 ซึ่งเท่ากับ 8192 จุดหรือ 8192/8 = 1024 พิกเซลดังนั้นนอกเหนือจากตัวอักษรแล้วเรายังสามารถแสดงภาพกราฟิกใด ๆ บน GLCD นี้ได้
เรารู้อยู่แล้วเชื่อมต่อกับ GLCD 8051 วันนี้เราจะติดต่อกับจอแอลซีดีแบบกราฟิก Arduino เพื่อแสดงข้อความและภาพเกี่ยวกับมัน
วัสดุที่จำเป็น
- Arduino UNO
- 128 * 64 กราฟิก LCD ST9720
- โพเทนชิออมิเตอร์ -10k
- การเชื่อมต่อสายไฟ
- เขียงหั่นขนม
แผนภูมิวงจรรวม
128 * 64 กราฟิก LCD
จอ LCD แบบกราฟิกนี้ใช้พลังงานต่ำและยังเหมาะสำหรับอุปกรณ์พกพาที่ใช้พลังงานแบตเตอรี่ มันได้กว้างปฏิบัติการ 2.2V ช่วงแรงดัน 5.5V และสนับสนุนทั้งแบบอนุกรมและการสื่อสารแบบขนาน 04/08 บิตและมาพร้อมกับST7290 ควบคุมแอลซีดี / driver IC โหมดการสื่อสารอินเทอร์เฟซสามารถสลับระหว่างขนานและอนุกรมโดยใช้ PSB PIN 15 จอ LCD แบบกราฟิกนี้มีฟังก์ชันรีเซ็ตอัตโนมัติและสามารถควบคุมโดย MCU เช่น 8051, AVR, ARM, Arduino และ Raspberry Pi
คุณสามารถอ่านแผ่นข้อมูลสำหรับข้อมูลโดยละเอียดเกี่ยวกับ ST7290 128 * 64 Graphical LCD
การกำหนดค่าพิน
หมายเลขพิน |
ชื่อพิน |
คำอธิบาย |
1 |
Gnd |
ขั้วกราวด์ |
2 |
Vcc |
แรงดันไฟฟ้าอินพุต (2.7v ถึง 5.5v) |
3 |
Vo |
ความคมชัดของ LCD |
4 |
อาร์เอส |
ลงทะเบียนเลือก RS = 0: การลงทะเบียนคำสั่ง RS = 1: การลงทะเบียนข้อมูล |
5 |
R / W |
การควบคุมการอ่าน / เขียน |
6 |
จ |
เปิดใช้งาน |
7,8,9,10,11,12,13,14 |
DB0, DB1, DB2, DB3, DB4, DB5, DB6, DB7 |
หมุดข้อมูล (ใช้ในโหมดการสื่อสาร 8/4 บิตแบบขนาน) |
15 |
PSB |
การเลือกอินเทอร์เฟซ: ต่ำ (0) สำหรับโหมดการสื่อสารแบบอนุกรม สูง (1) สำหรับโหมดบัสขนาน 8/4 บิต |
16 |
NC |
ไม่ได้เชื่อมต่อ |
17 |
RST |
รีเซ็ตพิน |
18 |
Vout |
เอาท์พุทแรงดันไฟฟ้า LCD สองเท่า VOUT ≦ 7V. |
19 |
BLA |
Backlight บวกอุปทาน |
20 |
BLK |
Backlight Negative อุปทาน |
การใช้งาน
- อุปกรณ์อุตสาหกรรม
- ระบบฝังตัว
- ความปลอดภัย
- การแพทย์
- อุปกรณ์มือถือ
การแปลงรูปภาพเป็น Hex Code:
ในการแสดงภาพใด ๆ บนจอ LCD แบบกราฟิกเราต้องใช้รหัส HEX ของภาพนั้นดังนั้นขั้นตอนไม่กี่ขั้นตอนในการแปลงภาพเป็นรหัส HEX ก่อนหน้านั้นคุณต้องแน่ใจว่าขนาดของภาพไม่ควรเกิน 128 * 64
ขั้นตอนที่ 1:ลดขนาดของภาพปกติเป็น 128 * 64 หรือน้อยกว่าซึ่งคุณสามารถทำได้โดยใช้ซอฟต์แวร์แก้ไขภาพเช่น MS paint
ดังที่แสดงในภาพด้านบนเรากำลังตั้งค่าความกว้างและความสูงของภาพเป็น 128 * 64
ขั้นตอนที่ 2:จากนั้นคุณต้องบันทึกภาพในรูปแบบ“ image_name .bmp ”
เลือกรูปแบบที่แสดงในภาพด้านบนและบันทึกไฟล์เพื่อดำเนินการต่อไป
ขั้นตอนที่ 3:หลังจากบันทึกลงในรูปแบบ“.bmp” แล้วคุณจะต้องแปลงภาพเป็นรหัสฐานสิบหกสำหรับการพิมพ์ สำหรับสิ่งนี้ฉันใช้ซอฟต์แวร์ชื่อ GIMP 2 ซึ่งแปลงไฟล์ Bmp เป็นรหัสฐานสิบหก
ดังที่แสดงในภาพด้านบนเราได้เปิดไฟล์รูปแบบ“.bmp” ในซอฟต์แวร์ GIMP 2
ขั้นตอนที่ 4:หลังจากดาวน์โหลดซอฟต์แวร์แล้วให้เปิดไฟล์รูปภาพรูปแบบ BMP ที่คุณต้องการพิมพ์จากนั้น บันทึก ในรูปแบบ“ .xbm ” (X BitMap ) หลังจากบันทึกแล้วให้เปิดไฟล์นั้นโดยใช้ Notepad และคุณจะได้รับรหัส Hex ของรูปภาพ
ดังที่แสดงในภาพด้านล่างเลือกตัวเลือกส่งออกเพื่อบันทึกไฟล์ในรูปแบบ xbm :
เลือกรูปแบบที่แสดงในรูปภาพด้านล่างและส่งออกไฟล์รูปภาพ
หลังจากส่งออกไฟล์คุณจะได้รับไฟล์ในรูปแบบ“.xbm” เปิดไฟล์ xbm โดยใช้ Notepadและคุณจะได้รับรหัส HEX ดังแสดงในภาพด้านล่าง
รหัส Arduino และคำอธิบายการทำงาน
ในการเชื่อมต่อ LCD แบบกราฟิกกับ Arduino ก่อนอื่นเราต้องกำหนดไลบรารีที่ใช้สำหรับ LCD แบบกราฟิก Arduino ไม่มีไลบรารีนี้คุณต้องดาวน์โหลดและติดตั้งไลบรารีนี้จากลิงค์นี้ จากนั้นคุณสามารถรวมไลบรารีดังต่อไปนี้:
# รวม "U8glib.h"
ที่นี่ ' u8g (10) ' กำลังกำหนดการเชื่อมต่อของพิน RS (Register Select) ของจอ LCD แบบกราฟิกกับพินที่ 10 ของ Arduino UNO RS pin ใช้เป็น 'chip select' และ 'Register Select' เมื่อใช้ในโหมด Serial และ Parallel ตามลำดับ ดังนั้นเราจึงใช้โหมดอนุกรมและตั้งพิน RS เป็น High (1) สำหรับชิปที่เปิดใช้งานและต่ำ (0) สำหรับชิปที่ปิดใช้
U8GLIB_ST7920_128X64_4X u8g (10);
ตอนนี้สำหรับการพิมพ์ภาพเราต้องวางรหัส Hex ของภาพในรหัสด้านล่าง คุณสามารถพิมพ์ภาพอื่น ๆ ได้ทั้งหมดที่คุณต้องทำคือวางรหัสฐานสิบหกของรูปภาพ
const uint8_t rook_bitmap U8G_PROGMEM = { วางรหัส Hex ของรูปภาพที่นี่ };
ตรวจสอบรหัส Arduino แบบเต็มที่ท้ายบทความนี้
ด้านล่างนี้ฟังก์ชั่นที่ใช้สำหรับการพิมพ์ภาพคำสั่งที่ใช้สำหรับการพิมพ์ “u8g.drawXBMP (x, y, ความกว้างของภาพ, ความสูงของภาพ)” โดยที่ X และ Y คือตำแหน่งเริ่มต้นของภาพบน LCD และเราต้องเขียนขนาดของภาพที่ไม่ควรเกิน 128 * 64 และในอาร์กิวเมนต์สุดท้ายเราเรียกว่าฟังก์ชันที่เราวางรหัส HEX ของภาพ
ภาพเป็นโมฆะ (โมฆะ) {u8g.drawXBMP (0, 0, 128, 64, rook_bitmap); }
เราได้สร้างฟังก์ชันสองอย่างที่เรียกว่า "draw" และ "next" ซึ่งโค้ดสำหรับพิมพ์เนื้อหานั้นเขียนโดยใช้คำสั่ง "u8g.drawStr (x, y," abcd ")" ที่นี่ x และ y คือตำแหน่งใน LCD ที่จะพิมพ์เนื้อหาและ ' abcd ' คือเนื้อหาที่จะพิมพ์
วาดโมฆะ (โมฆะ) {u8g.setFont (u8g_font_unifont); u8g.drawStr (07, 35, "CIRCUIT DIGEST"); } โมฆะถัดไป (โมฆะ) {u8g.setFont (u8g_font_unifont); u8g.drawStr (0, 15, "การเชื่อมต่อ"); u8g.drawStr (0, 35, "กราฟิก LCD"); u8g.drawStr (0, 55, "กับ Arduino"); }
ฟังก์ชั่น clearLCD () สร้างขึ้นสำหรับการล้าง LCDโดยเพียงแค่ให้ค่า null ให้กับฟังก์ชัน
เป็นโมฆะ clearLCD () {u8g.firstPage (); ทำ {} while (u8g.nextPage ()); }
การตั้งค่าพิกเซลสีและความเข้มโดยใช้โค้ดด้านล่าง
การตั้งค่าเป็นโมฆะ (โมฆะ) {if (u8g.getMode () == U8G_MODE_R3G3B2) {u8g.setColorIndex (255); // white} else if (u8g.getMode () == U8G_MODE_GRAY2BIT) {u8g.setColorIndex (3); // ความเข้มสูงสุด} else if (u8g.getMode () == U8G_MODE_BW) {u8g.setColorIndex (1); // พิกเซลบน} else if (u8g.getMode () == U8G_MODE_HICOLOR) {u8g.setHiColorByRGB (255,255,255); }}
ห่วงโมฆะ ยังคงพิมพ์ข้อความและภาพหลังจากที่ล่าช้าที่กำหนด ขั้นแรกเราได้พิมพ์ "Circuit Digest" โดยใช้ฟังก์ชัน draw และหลังจากผ่านไป 2 วินาที เราล้างหน้าจอโดยใช้ฟังก์ชั่น clearLCD จากนั้นพิมพ์“ Interfacing Graphical LCD โดยใช้ Arduino ” โดยใช้ฟังก์ชัน ถัดไป จากนั้นเราได้พิมพ์ภาพโดยใช้ฟังก์ชั่น picture () ซึ่งจะอยู่บนหน้าจอเป็นเวลา 3 วินาที สิ่งนี้จะดำเนินต่อไปจนกว่าแหล่งจ่ายไฟจะเปิดขึ้น
ห่วงเป็นโมฆะ (โมฆะ) {u8g.firstPage (); ทำ {วาด (); } ในขณะที่ (u8g.nextPage ()); ล่าช้า (2000); clearLCD (); u8g.firstPage (); ทำ {next (); } ในขณะที่ (u8g.nextPage ()); ล่าช้า (2000); clearLCD (); u8g.firstPage (); ทำ {ภาพ (); } ในขณะที่ (u8g.nextPage ()); ล่าช้า (3000); clearLCD (); ล่าช้า (50); }
หลังจากเขียนโปรแกรม Arduino โดยใช้รหัสที่กำหนดให้เชื่อมต่อ LCD แบบกราฟิกตามแผนภาพวงจรกับ Arduino และจัดหา Arduino โดยใช้อะแดปเตอร์หรือ USB คุณจะได้รับเนื้อหาและภาพที่พิมพ์บนจอ LCD แบบกราฟิกดังที่แสดงในวิดีโอด้านล่าง
ตรวจสอบการเชื่อมต่อ Nokia 5110 Graphical LCD กับ Arduino