สารบัญ:

HD44780 บอร์ดอะแดปเตอร์ LCD เป็น I2C สำหรับ Bus Pirate: 9 ขั้นตอน
HD44780 บอร์ดอะแดปเตอร์ LCD เป็น I2C สำหรับ Bus Pirate: 9 ขั้นตอน

วีดีโอ: HD44780 บอร์ดอะแดปเตอร์ LCD เป็น I2C สำหรับ Bus Pirate: 9 ขั้นตอน

วีดีโอ: HD44780 บอร์ดอะแดปเตอร์ LCD เป็น I2C สำหรับ Bus Pirate: 9 ขั้นตอน
วีดีโอ: Bus Pirate LCD adapter demo and overview 2024, พฤศจิกายน
Anonim
HD44780 บอร์ดอะแดปเตอร์ LCD ถึง I2C สำหรับ Bus Pirate
HD44780 บอร์ดอะแดปเตอร์ LCD ถึง I2C สำหรับ Bus Pirate
HD44780 บอร์ดอะแดปเตอร์ LCD ถึง I2C สำหรับ Bus Pirate
HD44780 บอร์ดอะแดปเตอร์ LCD ถึง I2C สำหรับ Bus Pirate

LCD ตัวอักษรราคาถูกที่ใช้ชิปเซ็ต HD44780 มีหลายขนาด: 2x16, 4x20 เป็นต้น จอแสดงผลเหล่านี้มีโหมดอินเทอร์เฟซมาตรฐานสองโหมด คือ 4 บิตและ 8 บิตแบบขนาน 8bit ต้องการทั้งหมด 11 สายข้อมูล 4bit ต้องการ 7 (6 สำหรับการเขียนเท่านั้น) LCD บางรุ่นรองรับโหมดข้อมูลซีเรียลเพิ่มเติม เช่น VFD I ที่ครอบคลุมใน Hack a Day โดยทั่วไปแล้ว HD44780 LCD จะเป็นชิ้นส่วน 5 โวลต์ที่มีแหล่งจ่ายไฟแยกต่างหากสำหรับไฟด้านหลัง Bus Pirate มีพิน I/O ที่ทนทานต่อ 5 โวลต์เท่านั้น ดังนั้นเราจึงสร้างบอร์ดอะแดปเตอร์ขนาดเล็กที่มีพินเพียงพอสำหรับควบคุม LCD Bus Pirate ควบคุมบอร์ดอะแดปเตอร์ผ่านไลบรารีอินเทอร์เฟซ LCD อ่านต่อไปเกี่ยวกับบอร์ดอะแดปเตอร์ LCD ตัวละคร Bus Pirate HD44780 และไลบรารีอินเทอร์เฟซ ฉันสามารถมี PCB, ชุดอุปกรณ์ หรือชุดประกอบที่ผลิตโดย Seeed Studio ได้ในราคาประมาณ $15 รวมค่าขนส่งทั่วโลก และอื่นๆ ที่นี่ ฉันไม่สามารถรวมองค์ประกอบการจัดรูปแบบและตาราง HTML ใน Instructable คุณสามารถดูโพสต์ต้นฉบับได้ที่ Dangerous Prototypes บล็อก

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

ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์

ภาพรวมในบทความนี้ เราจะสรุปเกี่ยวกับบอร์ดอะแดปเตอร์ I2C สำหรับ LCD ที่ใช้ HD44780 เราสาธิตด้วยอินเทอร์เฟซอนุกรมสากลของ Bus Pirate ซอร์สโค้ด Bus Pirate สำหรับไลบรารีอินเทอร์เฟซ HD44780 ที่ใช้ I2C เป็นสาธารณสมบัติ ดังนั้นจึงสามารถปรับให้เข้ากับโปรเจ็กต์ของคุณเองได้ฟรี ฮาร์ดแวร์อิมเมจวงจรขนาดเต็ม [PNG] วงจรและ PCB ได้รับการออกแบบด้วย Cadsoft Eagle เวอร์ชันฟรี ไฟล์การออกแบบสามารถดาวน์โหลดได้จาก Bus Pirate SVN ก่อนใช้บอร์ดอะแดปเตอร์ ตรวจสอบให้แน่ใจว่าได้ตรวจสอบแผ่นข้อมูลสำหรับ LCD ของคุณกับพินอะแดปเตอร์ LCD ทั้งหมดไม่เหมือนกัน PCF8574 I/O expander IC นี่คือชิปขยาย 8 I/O แบบธรรมดาที่ควบคุมผ่านอินเทอร์เฟซ I2C แบบสองสาย อินเทอร์เฟซ I2C สามารถเข้าถึงได้จากส่วนหัว JP1 PCF8574 ทำงานได้ตั้งแต่ 2.5 ถึง 5 โวลต์ พิน I/O ทำงานที่แรงดันไฟฟ้า ดังนั้นหากเราป้อน 5 โวลต์ พินจะเชื่อมต่อ LCD ที่ 5 โวลต์ C1 (0.1uF) แยกไอซีออกจากความผันผวนของแหล่งจ่ายไฟ PCF8574 หนึ่งพินควบคุม LED 3 มม. (LED1) ผ่านตัวต้านทานจำกัดกระแส R2 (1000 โอห์ม) ไฟ LED แสดงการสื่อสารที่ประสบความสำเร็จระหว่าง Bus Pirate และอะแดปเตอร์ PCF8574 ไม่สามารถจ่ายกระแสไฟได้เพียงพอที่จะจ่ายไฟให้กับ LED ดังนั้นเราจึงจ่ายไฟ LED จากแหล่งจ่าย 5 โวลต์และเปลี่ยนกราวด์ LCD บอร์ดอะแดปเตอร์จะสื่อสารกับ LCD แบบอักขระที่ใช้ HD44780 ในโหมดอินเทอร์เฟซแบบขนาน 4 บิต พินอินเทอร์เฟซ 4 บิต - RS, RW, EN และ D4-D7 - เชื่อมต่อกับพิน PCF8574 I/O เจ็ดพิน เราชอบที่จะใช้หัวพินตัวผู้ขนาด 0.1" เพื่อเชื่อมต่ออะแดปเตอร์กับ LCD โดยปกติแล้ว คุณสามารถพิง LCD กับหมุดเพื่อสร้างหน้าสัมผัสที่เพียงพอสำหรับการทดสอบอย่างรวดเร็ว ตัวต้านทานทริมเมอร์ R1 (10K) ให้แรงดันปรับความคมชัดที่พิน 3 ของ ส่วนหัวของ LCD เราไม่ได้เชื่อมต่อหมุดแบ็คไลท์เพราะมีรูปแบบแบ็คไลท์ที่แตกต่างกันมากมาย การจ่ายไฟให้กับไฟแบ็คไลท์ LED อาจทำให้หน้าจอที่ต้องใช้แรงดันลบเสียหายได้ แหล่งจ่ายไฟ LCD ส่วนใหญ่ต้องใช้ไฟ 5 โวลต์ โดยให้แหล่งจ่ายไฟภายนอกผ่าน ส่วนหัว JP2 เราจัดเตรียมพินพาวเวอร์ซัพพลายตัวที่สองเพื่อเชื่อมต่อตัวต้านทานแบบดึงขึ้นของ Bus Pirate PCB วงจรและ PCB ได้รับการออกแบบด้วย Cadsoft Eagle เวอร์ชันฟรี ไฟล์การออกแบบสามารถดาวน์โหลดได้จาก Bus Pirate SVN PCB คือ แบบด้านเดียวแบบเจาะรูทั้งหมดด้วยสายจัมเปอร์เส้นเดียว (แสดงเป็นสีแดง) เราสามารถมี PCB, ชุดอุปกรณ์ หรือชุดประกอบที่ผลิตโดย Seeed Studio ได้ในราคาประมาณ $15 รวมค่าขนส่งทั่วโลก ดูรายละเอียดเพิ่มเติมได้ที่นี่ ทั้งหมด รูหยาบ) C10.1uF/10volts+R110000 (10K) ohm single-turn trimmer/potentiometer, 6mmR21000 (1K) ohm resistor, 1/4 wattLED13mm (T1) LED, redJP1+JP20.1" male header, 5 pinsIC1PCF8574N, 8bit I2C I/O expander DIP16ICS116 pin DIP socket สำหรับ IC1I ไม่สามารถรวมองค์ประกอบการจัดรูปแบบและตาราง HTML ใน Instructable คุณสามารถดูโพสต์ต้นฉบับได้ที่บล็อก Dangerous Prototypes

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

การเชื่อมต่อ
การเชื่อมต่อ

อุปกรณ์: LCD อักขระ HD44780 บัส: ขนาน 4 บิต พร้อมบอร์ดอะแดปเตอร์ PCF8574 I2C ข้อกำหนดด้านพลังงาน: 5volts. References:example datasheet [PDF], HD44780 command reference, HD44780 LCD uber-site. Complete Bus Pirate session log สำหรับการสาธิตนี้เรา ออกแบบอะแดปเตอร์สำหรับไลบรารี LCD ของอินเทอร์เฟซอนุกรมสากล Bus Pirate แต่จะใช้ได้กับทุกอย่างที่สามารถพูดโปรโตคอล I2C ได้ ดูซอร์สโค้ด Bus Pirate สำหรับตัวอย่างการใช้งาน I2C->HD44780 เชื่อมต่อ Bus Pirate กับบอร์ดอะแดปเตอร์ตามที่แสดงในตาราง ตารางนี้ยังแสดงการเชื่อมต่อแบบ raw กับ PCF8574 IC หากคุณติดตามโดยไม่มีบอร์ดอะแดปเตอร์เชื่อมต่ออะแดปเตอร์กับแหล่งจ่ายไฟที่เพียงพอสำหรับ LCD โดยทั่วไปคือ 5 โวลต์ การเชื่อมต่อ I2C ระหว่างอะแดปเตอร์และ Bus Pirate ต้องใช้ตัวต้านทานแบบดึงขึ้นระหว่าง 2 ถึง 10K ต่อไปนี้เป็นข้อมูลเพิ่มเติมเกี่ยวกับการเชื่อมต่อแรงดันไฟฟ้าผสมกับ pull-ups และตัวต้านทานแบบดึงขึ้นบน Bus Pirate ฉันไม่สามารถรวมองค์ประกอบการจัดรูปแบบและตาราง HTML ใน Instructable คุณสามารถดูโพสต์ต้นฉบับได้ที่บล็อก Dangerous Prototypes.

ขั้นตอนที่ 3: ขั้นตอนที่ 1. ตั้งค่าไลบรารี

ขั้นตอนที่ 1. ตั้งค่าไลบรารี
ขั้นตอนที่ 1. ตั้งค่าไลบรารี

การเชื่อมต่อ เราได้ครอบคลุมการออกแบบอะแดปเตอร์และวิธีเชื่อมต่อกับ Bus Pirate ตอนนี้ก็ถึงเวลาเขียนบางอย่างไปยัง LCD แล้ว HiZ>m <<11 <<1 <<ว <

พี <<2 <<v <<<รับรายงานแรงดันไฟฟ้าVOLTAGE MONITOR: 5V: 4.9 | 3.3V: 3.3 | VPULLUP: 5.0 <<กด 'm' ในเทอร์มินัล Bus Pirate และเลือกไลบรารี LCD ปัจจุบันรองรับเฉพาะ LCD แบบอักขระ HD44780 โดยใช้อะแดปเตอร์ PFC8574 ที่อธิบายไว้ในครึ่งแรกของบทความนี้ (ตัวเลือกที่ 1) เปิดใช้งานแหล่งจ่ายไฟ ('W' ขนาดใหญ่) และตัวต้านทานแบบดึงขึ้น (เมนู 'p') ตรวจสอบตัวตรวจสอบแรงดันไฟฟ้า (เมนู 'v') และตรวจสอบว่าแรงดันดึงขึ้น (Vpullup) อ่านได้ประมาณ 5 โวลต์

ขั้นตอนที่ 4: ขั้นตอนที่ 2. รีเซ็ตและเริ่มต้น

ขั้นตอนที่ 2. รีเซ็ตและเริ่มต้น
ขั้นตอนที่ 2. รีเซ็ตและเริ่มต้น
ขั้นตอนที่ 2. รีเซ็ตและเริ่มต้น
ขั้นตอนที่ 2. รีเซ็ตและเริ่มต้น

ตารางนี้สรุปคำสั่งแบบไบต์เดี่ยวที่ควบคุม HD44780 LCD ต่อไปนี้คือข้อมูลอ้างอิงโดยละเอียด คำสั่งเหล่านี้สามารถป้อนได้จากบรรทัดคำสั่ง Bus Pirate แต่เราได้สร้างมาโครสำหรับคำสั่งส่วนใหญ่เพื่อประหยัดเวลา LCD>(0) <<<แสดงเมนูมาโคร0.เมนูมาโคร <<<เมนูนี้1.รีเซ็ต LCD << <รีเซ็ต LCD2. Init LCD <<< รีเซ็ตและเริ่มต้น LCD3. Clear LCD <<< LCD ชัดเจน เลื่อนเคอร์เซอร์กลับไปที่ 04.ตำแหน่งเคอร์เซอร์ เช่น:(4:0) <<<กำหนดตำแหน่งเคอร์เซอร์5.เขียนข้อความทดสอบ <<Macro 0 แสดงเมนูมาโครสำหรับโหมด Bus Pirate LCD>(2) <<< เริ่มต้นมาโคร LCD Display lines:1. 1 <<< การแสดงบรรทัดเดียว2. หลายรายการ <<2 ' RESET <<<มาโคร 2 รวมถึงลำดับการรีเซ็ตINIT <<เริ่มต้นมาโคร LCD (2) กำหนดค่าหน้าจอสำหรับโหมดอินเทอร์เฟซ 4 บิต เปิดใช้งานการแสดงเคอร์เซอร์ และตั้งค่าตัวเลือกที่เป็นประโยชน์อื่นๆ กำหนดค่าจำนวนบรรทัดแสดงผล เลือก 1 สำหรับการแสดงบรรทัดเดียว หรือ 2 สำหรับจอภาพอื่นทั้งหมด หลังจากเริ่มต้น หน้าจอควรมีความชัดเจนโดยมีเคอร์เซอร์ปรากฏอยู่ที่มุม หากไม่ได้ผล ให้ตรวจสอบการเชื่อมต่อ I2C ตัวต้านทานแบบดึงขึ้น และแหล่งจ่ายไฟ แล้วลองอีกครั้ง LCD HD44780 จำเป็นต้องรีเซ็ตด้วยลำดับสัญญาณพิเศษก่อนจึงจะสามารถเริ่มต้นสำหรับโหมดอินเทอร์เฟซ 4 บิตหรือ 8 บิตได้ Macro 1 สร้างลำดับนี้ มาโคร 2 มีลำดับการรีเซ็ต ดังนั้นจึงไม่จำเป็นต้องใช้มาโคร 1 ก่อนมาโคร 2

ขั้นตอนที่ 5: ขั้นตอนที่ 3 เขียนอักขระทดสอบ

ขั้นตอนที่ 3 เขียนอักขระทดสอบ
ขั้นตอนที่ 3 เขียนอักขระทดสอบ
ขั้นตอนที่ 3 เขียนอักขระทดสอบ
ขั้นตอนที่ 3 เขียนอักขระทดสอบ

จอแอลซีดี>(6:80) <<มาโครการเขียนตัวเลขจะเติม LCD ด้วยตัวเลขทดสอบระหว่าง 0 ถึง 9 ตัวเลขหลังเครื่องหมายทวิภาคบอก Bus Pirate ว่าต้องเขียนหมายเลขทดสอบกี่หมายเลข เราใช้ 4x20LCD ดังนั้นเราจึงเขียนตัวเลข 80 ตัวเพื่อเติม สังเกตว่าเคอร์เซอร์สิ้นสุดที่ตำแหน่ง 0 ใต้ '0'. LCD>(7:80) <<มาโครอักขระเขียนจะเติม LCD ด้วยอักขระ ASCII ป้อนปริมาณหลังเครื่องหมายทวิภาค สังเกตว่าเส้นกำปั้นจะดำเนินต่อไปในเส้นที่สาม เส้นที่สามในเส้นที่สอง และเส้นที่สองในเส้นสุดท้าย อักขระไม่ต่อเนื่องเนื่องจาก LCD อักขระไม่ตัดจากบรรทัดหนึ่งไปยังบรรทัดถัดไป เราจะพูดถึงเรื่องนี้อีกเล็กน้อยในภายหลัง

ขั้นตอนที่ 6: ขั้นตอนที่ 4 ล้าง LCD

ขั้นตอนที่ 4. ล้าง LCD
ขั้นตอนที่ 4. ล้าง LCD

จอแอลซีดี>(3) <<มาโคร LCD ที่ชัดเจนจะส่งคำสั่ง HD44780 ที่จะลบหน้าจอและคืนเคอร์เซอร์ไปที่ตำแหน่งแรก คุณยังสามารถดำเนินการใดๆ เหล่านี้ได้โดยไม่ต้องใช้มาโคร โปรดดูตารางคำสั่งที่ตอนต้นของส่วนนี้ ป้อน '[0b1' ใน Bus Pirate เพื่อตั้งค่าอินเทอร์เฟซเป็นโหมดคำสั่ง ([) และส่งคำสั่งล้างหน้าจอ HD44780 (0b00000001) โดยไม่มีมาโคร]

ขั้นตอนที่ 7: ขั้นตอนที่ 5. พิมพ์ Text

ขั้นตอนที่ 5. พิมพ์ Text
ขั้นตอนที่ 5. พิมพ์ Text
ขั้นตอนที่ 5. พิมพ์ Text
ขั้นตอนที่ 5. พิมพ์ Text

LCD>(8) <<<ใส่ข้อความผู้ใช้ป้อนข้อความที่จะแทรกที่ตำแหน่งเคอร์เซอร์การสาธิต LCD HD44780 <<หลังจากล้าง LCD ในขั้นตอนที่ 4 เคอร์เซอร์จะอยู่ที่บล็อกแรก เราสามารถตั้งค่าด้วยมาโคร (4:0) ซึ่งย้ายเคอร์เซอร์ไปที่อักขระตัวแรกได้ แทรกข้อความที่แมโครเคอร์เซอร์จะขอป้อนข้อความ จากนั้นคัดลอกไปที่ LCD เมื่อคุณกด Enter. LCD>(4:0x40) <&lt

LCD>(8) <<<ใส่ข้อความป้อนข้อความที่จะแทรกที่ตำแหน่งเคอร์เซอร์ Bus Pirate v2go <<การเขียนบรรทัดที่สองนั้นซับซ้อนกว่าเล็กน้อย จริงๆ แล้วเริ่มต้นที่อักขระ 64 บน LCD 4x20 ถ้าคุณเขียนต่อจากท้ายบรรทัดที่ 1 (อักขระที่ 20) คุณจะจบลงที่จุดเริ่มต้นของบรรทัดที่สาม! หน้านี้มีคอลเลกชันแผนที่หน่วยความจำที่ดีสำหรับขนาด LCD ของตัวละครส่วนใหญ่ อันดับแรก เราวางเคอร์เซอร์ไว้ที่บรรทัดที่สอง (4:0x40) ถัดไป มาโคร 'แทรกข้อความ' จะจับอินพุตของเราและคัดลอกไปยัง LCD. LCD>(4:0x14)(8)(4:0x54)(8) <<<ไวยากรณ์มาโครหลายรายการป้อนข้อความที่จะแทรกที่ตำแหน่งเคอร์เซอร์ Firmware v2.0+ <<<เราพิมพ์ข้อความนี้เพื่อแทรกที่ตำแหน่งเคอร์เซอร์DangerousPrototypes <<Bus Pirate ยอมรับมาโครหลายตัวในบรรทัดเดียวกัน จึงสามารถเขียนทั้งหน้าจอพร้อมกันได้ เราเขียนถึงสองบรรทัดสุดท้ายด้วยไวยากรณ์บรรทัดเดียว เราสามารถใช้ '(3)(4:0)(8)(4:0x40)(8)(4:0x14)(8)(4:0x54) (8)' เพื่อล้าง LCD และเขียนทั้งสี่บรรทัดด้วยรายการไวยากรณ์เดียว

ขั้นตอนที่ 8: ขั้นตอนที่ 6 การอ่านจาก LCD

ขั้นตอนที่ 6. การอ่านจาก LCD
ขั้นตอนที่ 6. การอ่านจาก LCD

บอร์ดอะแดปเตอร์ Bus Pirate และ LCD สามารถอ่านได้จาก LCD เราจะอ่านข้อความที่เราเขียนบนหน้าจอ (DDRAM) แต่คุณยังสามารถอ่านการตั้งค่าและ RAM อักขระที่กำหนดเอง (CGRAM) ได้ด้วยการตั้งค่าที่อยู่ที่ถูกต้อง LCD>[0b10000000 '''<<<set the read pointer'' ']HD44780 RS LOW, COMMAND MODE <<<ลงทะเบียนเลือกพิน lowCMD WRITE: 0x80 <<ขั้นแรก เราบอกให้ Bus Pirate ส่งข้อมูลไปยังรีจิสเตอร์คำสั่ง LCD ([) ต่อไป เราใช้คำสั่ง set DDRAM address (0b1xxxxxxx) เพื่อตั้งค่าตัวชี้การอ่านเป็นจุดเริ่มต้นของ DDRAM (xxxxxxx=0000000)]LCD>]rrrrrrr <<<read data memoryHD44780 RS HIGH, DATA MODE <<<ลงทะเบียนเลือก ปักหมุดสูงอ่าน: 0x48 <<< 'อ่าน: 0x44 <<< 'อ่าน: 0x34 <<< '4' อ่าน: 0x34 <<< '4' อ่าน: 0x37 <<< '7' อ่าน: 0x38 < << '8'READ: 0x30 <<< '0'LCD>สุดท้าย บอก Bus Pirate ให้อ่านจากหน่วยความจำข้อมูล (]) แล้วอ่านสองสามไบต์ (rrrrrrr) เราได้รับ "HD44780" ข้อความที่เราเขียนไปยังหน้าจอในขั้นตอนที่ 5 คุณควรสามารถใช้ทางลัด r:7 เพื่ออ่านเจ็ดไบต์ได้ แต่มันไม่ทำงานในเฟิร์มแวร์ปัจจุบัน - เราจะแก้ไขปัญหานี้ก่อน รุ่นถัดไป

ขั้นตอนที่ 9: ทำมากขึ้น

ทำมากขึ้น
ทำมากขึ้น

ให้คำอธิบายทั่วไปเกี่ยวกับอแดปเตอร์ LCD อักขระ StepThe HD44780 เป็นอุปกรณ์เสริมที่มีประโยชน์สำหรับ Bus Pirate สามารถใช้สำหรับการทดสอบอย่างรวดเร็วหรือการพัฒนาลอจิกขั้นสูงได้ นอกจาก LCD แล้ว พิน I/O 2.5 โวลต์-5 โวลต์แปดตัวอาจมีประโยชน์สำหรับแอพพลิเคชั่น Bus Pirate ที่มีจำนวนพินสูงอื่นๆ เราสามารถมี PCB, ชุดอุปกรณ์, หรือชุดประกอบที่ผลิตโดย Seeed Studio ในราคาประมาณ $15 รวมทั้งการจัดส่งทั่วโลก เพิ่มเติมที่นี่ ฉันไม่สามารถรวมองค์ประกอบการจัดรูปแบบและตาราง HTML ใน Instructable คุณสามารถดูโพสต์ต้นฉบับได้ที่บล็อก Dangerous Prototypes

แนะนำ: