การแสดงภาพบนจอ LCD แบบกราฟิกโดยใช้ไมโครคอนโทรลเลอร์ 8051
ที่ฝัง
ในชีวิตประจำวันของเราเราเห็นอุปกรณ์หลายประเภทสำหรับแสดงข้อความรูปภาพและกราฟิก LCD เป็นอุปกรณ์แสดงผลที่ได้รับความนิยมมากที่สุดในอุปกรณ์อิเล็กทรอนิกส์และใช้ในโครงการส่วนใหญ่ที่แสดงข้อมูลบางประเภท มี LCD หลายประเภทที่ใช้ในโครงการอิเล็กทรอนิกส์ เรามีใช้อยู่แล้ว 16X2 LCD ในหลายโครงการของเราและยังใช้TFT LCD กับ Arduino คุณสามารถค้นหาโครงการที่เกี่ยวข้องกับ LCD 16X2 ของเราได้โดยไปที่ลิงค์นี้รวมถึงการเชื่อมต่อกับ 8051, AVR, Arduinoและอีกมากมาย
ในการกวดวิชานี้เราจะไปทำ จอแอลซีดีกราฟิกการเชื่อมต่อกับไมโครคอนโทรลเลอร์ 8051 ในโครงการนี้เราจะแสดงวิธีการแสดงภาพบน Graphical LCD (GLCD)
ส่วนประกอบที่จำเป็น:
- จอแอลซีดีแบบกราฟิก
- AT89c52 8051 ไมโครคอนโทรลเลอร์
- ตัวควบคุมแรงดันไฟฟ้า 7805
- ตัวเก็บประจุ 1000 ยูเอฟ
- ตัวเก็บประจุ 10 ยูเอฟ
- ตัวต้านทาน 10K
- 10K POT
- Crystal Oscillator 12 MH
- สายเชื่อมต่อ
- คณะขนมปัง
- แถบแถบชาย
- แหล่งจ่ายไฟ
- LED
- ตัวต้านทาน 220 โอห์ม
- ตัวต้านทาน 1K
จอแอลซีดีแบบกราฟิก:
จอ LCD ขนาด 16x2 ที่เรียบง่ายมี 16 พิน แต่จอแอลซีดีแบบกราฟิกมี 20 พิน คำอธิบายพินระบุไว้ด้านล่างตามแผ่นข้อมูล:
หมายเลขพิน | ชื่อพิน | ลักษณะ | ฟังก์ชัน |
1 | VSS | พื้น | 0 โวลต์ |
2 | VDD | พาวเวอร์ซัพพลาย | 5 โวลต์ |
3 | V0 | การปรับความคมชัดของ LCD | |
4 | อาร์เอส | การเลือกคำสั่ง / ข้อมูลลงทะเบียน | RS = 0: การเลือกคำสั่งและ RS = 1: การเลือกข้อมูล |
5 | R / W | อ่าน / เขียนลงทะเบียน | R / W = 0: การเลือกเขียนและ R / W = 1: อ่านรายการที่เลือก |
6 | E | เปิดใช้งานสัญญาณ | |
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, Chip Select Signal สำหรับ IC1 |
16 | CS2 | เลือกชิป | CS2 = 1, Chip Select Signal สำหรับ IC2 |
17 | RST | รีเซ็ต | รีเซ็ต GLCD |
18 | VEE | แรงดันไฟฟ้าลบสำหรับไดรเวอร์ LCD | |
19 | A | ไฟ LED ด้านหลัง | 5 โวลต์ |
20 | K | ไฟ LED ด้านหลัง | พื้น |
แสดงรูปภาพบน LCD แบบกราฟิกโดยใช้ 8051:
ในการแสดงภาพบนจอ LCD แบบกราฟิกอันดับแรกเราจำเป็นต้องแปลงภาพนั้นเป็นรหัสแอสเซมบลีเพื่อให้ไมโครคอนโทรลเลอร์ 8051 สามารถเข้าใจและอ่านได้ ดังนั้นเราต้องทำตามขั้นตอนด้านล่างสำหรับการแปลงอิมเมจให้เป็นรหัส HEX:
ขั้นตอนที่ 1:ก่อนอื่นเราต้องดาวน์โหลดแอปพลิเคชั่นที่แปลงอิมเมจ (รูปแบบ BMP) เป็นรหัสแอสเซมบลี ดังนั้นดาวน์โหลดBMP2ASM Image Conversion Applicationจากลิงค์นี้เพียงคลิกขวาที่ลิงก์จากนั้นคลิกบันทึกลิงก์เป็น ...
ขั้นตอนที่ 2:จากนั้นเลือกภาพที่คุณต้องการแสดงบนGraphical LCDและแปลงเป็น BMP (หากยังไม่อยู่ในรูปแบบ BMP) โดยใช้แอปพลิเคชันใด ๆ เช่น MS Paint, Photoshop ฯลฯ หรือคุณสามารถหาเว็บไซต์ออนไลน์มากมาย สำหรับการแปลงรูปแบบภาพ เรามีภาพ BMP ด้านล่างที่มีขนาด 128x64:
ขั้นตอนที่ 3:ตอนนี้แยกแฟ้ม BMP2ASM.zip ซึ่งเราได้ดาวน์โหลดในขั้นตอนที่ 1 และเปิด Bmp2asm.exe ภายในมันและเลือกภาพBMP
ขั้นตอนที่ 4:ตอนนี้กด“ แปลง” ในหน้าต่างแอปพลิเคชัน BMP2ASM
ขั้นตอนที่ 5:จากนั้นคัดลอกรหัสที่สร้างและวางในโปรแกรม 8051 ใน Keil uVision ทำการเปลี่ยนแปลงบางอย่างและรวบรวมรหัส
ตอนนี้โค้ดของคุณพร้อมที่จะอัพโหลดใน 8051 Microcontroller แล้ว
คำอธิบายวงจร:
การเชื่อมต่อวงจรสำหรับการเชื่อมต่อจอแอลซีดีแบบกราฟิกเพื่อ 8051 ไมโครคอนโทรลเลอร์เป็นเรื่องง่ายและเกือบเดียวกันเช่นการเชื่อมต่อ 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 ตามลำดับ Data pins DB0-DB7 เชื่อมต่อโดยตรงที่ PORT P2 ตัวควบคุมแรงดัน 7805 ใช้สำหรับแหล่งจ่ายไฟปกติ 5 โวลต์ ในวิดีโอสาธิตฉันใช้แหล่งจ่ายไฟ Arduino
คำอธิบายการเขียนโปรแกรม:
ก่อนอื่นเรารวมไฟล์ส่วนหัวที่จำเป็นในโปรแกรมและกำหนดบิตสำหรับส่วนควบคุมและ Data Pins ของ GLCD
#include <reg51.h> #include <intrins.h> #define lcdport P2 sbit rs = P1 ^ 0; sbit rw = P1 ^ 1; sbit en = P1 ^ 2; sbit cs1 = P1 ^ 3; sbit cs2 = P1 ^ 4;
หลังจากนั้นเราได้สร้างฟังก์ชั่นการหน่วงเวลา
โมฆะล่าช้า (int itime) { int i, j; สำหรับ (i = 0; i <iTime; i ++) สำหรับ (ญ = 0; J <125; J ++); }
Function void lcd_disp_on ()ใช้สำหรับเปิดการทำงานของจอแสดงผล
Function void setCursorY (int y)ถูกสร้างขึ้นเพื่อตั้งค่าคอลัมน์ใน GLCD และสร้างโมฆะฟังก์ชั่นsetCursorX (int x)สำหรับการตั้งค่าหน้าใน GLCD ไฟล์รหัสที่สมบูรณ์จะได้รับในด้านล่างส่วนรหัส
หลังจากตั้งค่าคอลัมน์และหน้าเราได้เขียนฟังก์ชันสำหรับส่งคำสั่งและข้อมูลไปยัง GLCD
lcdprint เป็นโมฆะ (char dat ขนาด int) { int i ที่ไม่ได้ลงชื่อ สำหรับ (i = 0; i <ขนาด; i ++) { ถ้า (c <64) { lcdport = ดาด; CS1 = 1; .... ....
ในฟังก์ชั่นโมฆะ main ()เราได้ทำการล้าง GLCD แล้วตั้งค่าคอลัมน์และหน้า หลังจากนั้นส่งข้อมูลไปยังจอแอลซีดีโดยใช้โมฆะ lcdprint (ถ่านดาดขนาด int)ฟังก์ชั่น
โมฆะหลัก () { 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 (ภาพที่ [Y] [x], x); } } ........ ..... .......
ไม่มีความคิดเห็น:
แสดงความคิดเห็น