- ส่วนประกอบที่ต้องการ:
- จอ LCD แบบกราฟิก:
- การแสดงภาพบนจอ LCD แบบกราฟิกโดยใช้ 8051:
- คำอธิบายวงจร:
- คำอธิบายการเขียนโปรแกรม:
ในชีวิตประจำวันของเราเราเห็นอุปกรณ์หลายประเภทสำหรับแสดงข้อความรูปภาพและกราฟิก LCD เป็นหนึ่งในอุปกรณ์แสดงผลที่ได้รับความนิยมมากที่สุดในอุปกรณ์อิเล็กทรอนิกส์และส่วนใหญ่ใช้ในโครงการทั้งหมดที่แสดงข้อมูลบางประเภท LCD ที่ใช้ในโครงการอิเล็กทรอนิกส์มีหลายประเภท เราได้ใช้ 16X2 LCD ในหลายโครงการของเราแล้วและยังใช้ TFT LCD กับ Arduino คุณสามารถค้นหาโครงการที่เกี่ยวข้องกับ LCD 16X2 ทั้งหมดของเราได้โดยไปที่ลิงค์นี้รวมถึงการเชื่อมต่อกับ 8051, AVR, Arduinoและอื่น ๆ อีกมากมาย
ในการกวดวิชานี้เราจะไปทำ กราฟฟิคแอลซีดีเชื่อมต่อกับไมโครคอนโทรลเลอร์ 8051 ในโครงการนี้เราจะแสดงวิธีการแสดงภาพบนจอ LCD แบบกราฟิก (GLCD)
ส่วนประกอบที่ต้องการ:
- LCD แบบกราฟิก
- ไมโครคอนโทรลเลอร์ AT89c52 8051
- ตัวควบคุมแรงดันไฟฟ้า 7805
- ตัวเก็บประจุ 1000uf
- ตัวเก็บประจุ 10 uF
- ตัวต้านทาน 10K
- 10K พอต
- คริสตัลออสซิลเลเตอร์ 12 MH
- สายเชื่อมต่อ
- คณะกรรมการขนมปัง
- Burg แถบชาย
- แหล่งจ่ายไฟ
- LED
- ตัวต้านทาน 220 โอห์ม
- ตัวต้านทาน 1K
จอ LCD แบบกราฟิก:
LCD 16x2 แบบธรรมดามี 16 พิน แต่กราฟิก LCDมี 20 พิน คำอธิบายพินได้รับด้านล่างตามแผ่นข้อมูล:
หมายเลขพิน | ชื่อพิน | คำอธิบาย | ฟังก์ชัน |
1 | VSS | พื้น | 0 โวลต์ |
2 | VDD | พาวเวอร์ซัพพลาย | 5 โวลต์ |
3 | V0 | การปรับความคมชัดของ LCD | |
4 | อาร์เอส | คำสั่ง / ข้อมูลลงทะเบียนการเลือก | RS = 0: การเลือกคำสั่งและ RS = 1: การเลือกข้อมูล |
5 | R / W | อ่าน / เขียนลงทะเบียน | R / W = 0: Write Selection และ R / W = 1: Read Selection |
6 | จ | เปิดใช้งานสัญญาณ | |
7 | DB0 | พินอินพุต / เอาต์พุตข้อมูล (DB0-DB7) | 8 บิต (DB0-DB7) |
8 | DB1 | ||
9 | DB2 | ||
10 | DB3 | ||
11 | DB4 | ||
12 | DB5 | ||
13 | DB6 | ||
14 | DB7 | ||
15 | CS1 | ชิปเลือก | CS1 = 1, สัญญาณเลือกชิปสำหรับ IC1 |
16 | CS2 | ชิปเลือก | CS2 = 1, สัญญาณเลือกชิปสำหรับ IC2 |
17 | RST | รีเซ็ต | รีเซ็ต GLCD |
18 | วี | แรงดันไฟฟ้าเชิงลบสำหรับไดรเวอร์ LCD | |
19 | ก | ไฟหลัง LED | 5 โวลต์ |
20 | เค | ไฟหลัง LED | พื้น |
การแสดงภาพบนจอ LCD แบบกราฟิกโดยใช้ 8051:
ในการแสดงภาพบนจอ LCD แบบกราฟิกอันดับแรกเราต้องแปลงภาพนั้นเป็นรหัสแอสเซมบลีเพื่อให้ไมโครคอนโทรลเลอร์ 8051 เข้าใจและอ่านได้ ดังนั้นเราต้องทำตามขั้นตอนด้านล่างสำหรับการแปลงรูปภาพเป็นรหัส HEX:
ขั้นตอนที่ 1:ก่อนอื่นเราต้องดาวน์โหลดแอปพลิเคชันที่แปลงรูปภาพ (รูปแบบ BMP) เป็น Assembly Code ดังนั้นดาวน์โหลดแอปพลิเคชัน BMP2ASM Image Conversionจากลิงค์นี้เพียงคลิกขวาที่ลิงค์จากนั้นคลิกบันทึกลิงก์เป็น…
ขั้นตอนที่ 2:จากนั้นเลือกภาพที่คุณต้องการแสดงบนจอ LCD แบบกราฟิกและแปลงเป็น BMP (หากยังไม่ได้อยู่ในรูปแบบ BMP) โดยใช้แอปพลิเคชันใด ๆ เช่น MS Paint, Photoshop เป็นต้นหรือคุณสามารถค้นหาเว็บไซต์ออนไลน์มากมาย สำหรับการแปลงรูปแบบภาพ เรามีภาพ BMP ด้านล่างขนาด 128x64:
ขั้นตอนที่ 3:ตอนนี้แยกแฟ้ม BMP2ASM.zip ซึ่งเราได้ดาวน์โหลดในขั้นตอนที่ 1 และเปิด Bmp2asm.exe ภายในมันและเลือกภาพ BMP
ขั้นตอนที่ 4:ตอนนี้กด“ Convert” ในหน้าต่างแอปพลิเคชัน BMP2ASM
ขั้นตอนที่ 5:จากนั้นคัดลอกโค้ดที่สร้างขึ้นและวางในโปรแกรม 8051 ใน Keil uVision ทำการเปลี่ยนแปลงและคอมไพล์โค้ด
ตอนนี้รหัสของคุณพร้อมที่จะอัปโหลดในไมโครคอนโทรลเลอร์ 8051 แล้ว
คำอธิบายวงจร:
การเชื่อมต่อวงจรสำหรับการเชื่อมต่อกราฟิก LCD กับไมโครคอนโทรลเลอร์ 8051นั้นง่ายและเกือบจะเหมือนกับการเชื่อมต่อ LCD 16x2 กับ 8051 แต่ LCD 16x2 มี 16 พินและ GLCD มี 20 พิน
หม้อ 10K ใช้สำหรับตั้งค่าคอนทราสต์สำหรับ GLCD พินควบคุมของ GLCD RS, R / W และ E เชื่อมต่อโดยตรงกับหมายเลขพิน89C52 P1.0, P1.1 และ P1.2 หมุดเลือกชิป CS1 และ CS2 ของ LCD เชื่อมต่อกับพิน P1.3 และ P1.4 ตามลำดับ หมุดข้อมูล DB0-DB7 เชื่อมต่อโดยตรงที่ PORT P2 ตัวควบคุมแรงดันไฟฟ้า 7805 ใช้สำหรับแหล่งจ่ายไฟ 5 โวลต์ปกติ ในวิดีโอสาธิตฉันใช้แหล่งจ่ายไฟ Arduino
คำอธิบายการเขียนโปรแกรม:
ก่อนอื่นเรารวมไฟล์ส่วนหัวที่จำเป็นในโปรแกรมและกำหนดบิตสำหรับ Control และ Data Pins ของ GLCD
# รวม
หลังจากนั้นเราได้สร้างฟังก์ชันหน่วงเวลา
ความล่าช้าเป็นโมฆะ (int itime) {int i, j; สำหรับ (i = 0; i
ฟังก์ชัน void lcd_disp_on () ใช้สำหรับการเปิดการแสดงผล
ฟังก์ชัน void setCursorY (int y) ถูกสร้างขึ้นสำหรับการตั้งค่าคอลัมน์ใน GLCD และฟังก์ชัน void setCursorX (int x) ถูกสร้างขึ้นสำหรับการตั้งค่าเพจบน GLCD ไฟล์รหัสที่สมบูรณ์มีให้ในส่วนรหัสด้านล่าง
หลังจากตั้งค่า Column และ Page เราได้เขียนฟังก์ชันสำหรับส่งคำสั่งและข้อมูลไปยัง GLCD
เป็นโมฆะ lcdprint (char dat ขนาด int) {int ไม่ได้ลงนาม สำหรับ (i = 0; i
ในฟังก์ชัน void main () เราได้ล้าง GLCD จากนั้นตั้งค่าคอลัมน์และหน้า หลังจากนั้นส่งข้อมูลไปยังจอแอลซีดีโดยใช้ โมฆะ lcdprint (ถ่านดาดขนาด int) ฟังก์ชั่น
เป็นโมฆะ main () {int x, y; P3 = 0xff; ในขณะที่ (1) {lcdclear (); สำหรับ (y = 0; y <8; y ++) {สำหรับ (x = 0; x <128; x ++) {lcd_disp_on (); setCursorX (y); setCursorY (x); lcdprint (ภาพ x); }}…………………..
การไหลของรหัส:
- ขั้นแรกเมื่อเราเปิดระบบโปรแกรมจะล้าง GLCD และเปิดจอแสดงผล
- จากนั้นตั้งค่าเคอร์เซอร์เป็นคอลัมน์จากจุดที่เราต้องการเขียนข้อมูล
- จากนั้นตั้งค่าเคอร์เซอร์ไปที่หน้าจากจุดที่เราต้องการเขียนข้อมูล
- ตอนนี้โปรแกรมส่งข้อมูลไปยังตำแหน่งที่เลือกทีละรายการจนถึง 128X8 ครั้ง เนื่องจาก GLCD มี 8 หน้าและ 128 คอลัมน์