12
GLCD-XT 1 GLCD-XT คุณสมบัติทางเทคนิค มีโมดูลแสดงผลแบบกราฟกสี ความละเอียด 128 x 160 จุด ขนาด 1.8 นิ้ว แสดงภาพกราฟกลายเสนและพื้นสี (ไมรองรับไฟลรูปภาพใดๆ) 65,536 สี พรอมไฟสองหลัง แสดงผลเปนตัวอักษรขนาดปกติ (5x7 จุด) ได 21 ตัวอักษร 16 บรรทัด (หรือ 21x16) มีสวิตชกดติดปลอยดับพรอมใชงาน (สวิตช OK) 1 จุด โดยตอรวมกับตัวตานทานปรับคา ได (KNOB) ทําใหอานคาสัญญาณดิจิตอลและอะนาลอกไดในขาพอรตเดียวกัน วงจรสมบูรณของบอรด GLCD-XT แสดงในรูปที่ 1 N/C GND CS Vcc Vcc CLK MISO D/C /RST GND LEDA LEDK GND N/C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 SW3 RESET +3.3V R10 4.7k D1 1N4148 +3.3V +3.3V R9 4.7 R11 4.7k R13 4.7k R12 4.7k R14 4.7k R16 4.7k R15 4.7k R17 4.7k R18 4.7k 31 PE2 16 PB2 15 PB1 17 PB0 RST GLCD 128x160 pixel 21-character 16-line IC5 LM1117-3.3V +5V +3.3V C14 10F 16V C15 0.1F C16 10F 16V R11 1k VR1 KNOB R11 1k SW5 OK +5V 8 PB4 C18 0.1F C17 0.1F CS CS CLK MISO D/C PORT xx YYY รูปที่ 1 วงจรของบอรด GLCD-XT

glcd-xt

Embed Size (px)

DESCRIPTION

The color Graphic LCD top-board for Unicon microcontroller board technical manual

Citation preview

GLCD-XT 1

GLCD-XT

คุ ณสมบั ติ ทางเทคนิ ค

มี โมดู ลแสดงผลแบบกราฟ กสี ความละเอี ยด 128 x 160 จุ ด ขนาด 1.8 นิ้ ว

แสดงภาพกราฟ กลายเส นและพื ้นส ี (ไม รองร ับไฟล ร ูปภาพใดๆ) 65,536 ส ี พร อมไฟส องหล ัง

แสดงผลเป นตั วอั กษรขนาดปกติ (5x7 จุ ด) ได 21 ตั วอั กษร 16 บรรทั ด (หรื อ 21x16)

มี สวิ ตช กดติ ดปล อยดั บพร อมใช งาน (สวิ ตช OK) 1 จุ ด โดยต อร วมกั บตั วต านทานปรั บค าได (KNOB) ทํ าให อ านค าสั ญญาณดิ จิ ตอลและอะนาลอกได ในขาพอร ตเดี ยวกั น

วงจรสมบู รณ ของบอร ด GLCD-XT แสดงในรู ปท่ี 1

N/CGND

CSVcc

Vcc

CLK

MISO

D/C/RST

GND

LEDA

LEDK

GND

N/C

1 2 3 4 5 6 7 8 9 10 11 12 13 14

SW3RESET

+3.3V

R104.7k

D11N4148

+3.3V

+3.3V

R94.7

R114.7k

R134.7k

R124.7k

R144.7k

R164.7k

R154.7k

R174.7k

R184.7k

31 PE2

16 PB2

15 PB1

17 PB0

RST

GLCD128x160 pixel

21-character16-line

IC5LM1117-3.3V

+5V +3.3V

C1410F16V

C150.1F

C1610F16V

R111k

VR1KNOB

R111k

SW5OK

+5V

8 PB4

C180.1F

C170.1F

CSCS

CLK

MISO

D/C

PORT

xx YYY

รู ปที่ 1 วงจรของบอร ด GLCD-XT

2GLCD-XT

รู ปที่ 2 การจั ดขาของบอร ด GLCD-XT (N/C เป นขาที่ ไม มี การใช งาน)

การจั ดขาและการจั ดการเชื่ อมต อกั บบอร ด Union และ POP-XT

ในร ูปที ่ 2 แสดงการจ ัดขาเชื ่อมต อทั ้งหมด จะม ีขาท่ี ใช งานจร ิงเพ ียง 11 ขา ค ือ CS, CLK, MISO,D/C, PORT (OK/KNOB), RESET, +5V (2 ขา) และ GND หร ือกราวด (3 ขา) เมื ่อนํ ามาต อก ับบอร ดUnicon และ POP-XT (ในช ุดหุ นยนต POP-BOT XT) ขาท้ั งหมดจะได ร ับการเชื ่อมต อก ับขาพอร ตด ังนี ้

ขา GLCD-XT ขาพอร ตตามมาตรฐาน Arduino ขาพอร ตตามมาตรฐาน Atmel

CS 17 PB0

CLK 15 PB2

MISO 16 PB1

D/C 11 PB0

PORT 8 PB1

R RESET RESET

+ +5V +5V

G GND GND

GLCD-XT 3

(ก) ต อใช งาน GLCD-XT กั บบอร ด Unicon (ข) บอร ด POP-XT ที ่ม ี GLCD-XT เป นส วนประกอบ

ร ูปที ่ 3 แสดงการต อใช งาน GLCD-XT ร วมก ับบอร ด Unicon และเป นส วนหนึ ่งของ POP-XT บอร ดควบค ุมหุ นยนต POP-BOT XT

สํ าหรั บบอร ด POP-XT จะติ ดตั้ ง GLCD-XT มาในตั วแล ว จึ งไม ต องมี ขั้ นตอนในการเชื่ อมต อใดๆ เพิ่ มเติ ม ส วนการใช งาน GLCD-XT กั บบอร ด Unicon ให ดํ าเนิ นการดั งนี้

1. ป ดไฟเลี้ ยง

2. นํ า GLCD-XT มาติ ดต้ั งบนคอนเน็ กเตอร IDC ตั วเม ียที ่ล อมรอบต ัวช ิปไมโครคอนโทรลเลอร ATmega32U4 โดยมี ทิ ศทางตามรู ปที่ 3 (ก) หลั งจากติ ดตั้ งเพื่ อเชื่ อมต อเสร็ จแล ว สวิ ตช RESETของบอร เด Unicon เดิ มจะถู กบั ง ต องเปลี่ ยนมาใช สวิ ตช RESET บนบอร ด GLCD-XT แทน

3. ในการเชื่ อมต อกั บพอร ต USB จะต องเป ดสวิ ตช เพ่ื อจ ายไฟให แก บอร ด Unicon แล วรอสั กครู เพื่ อให ตั วควบคุ มพร อมทํ างานเสี ยก อน สั งเกตจาก LED สี นํ้ าเงิ นจะติ ดกะพริ บถี่ ๆ อยู ครู หนึ่ งจากนั้ นจะติ ดค าง

ไฟล ไลบรารี สํ าหรั บ GLCD-XT

ทาง inex ได เตร ียมไฟล ไลบราร ีสํ าหรั บใช งานก ับ GLCD-XT ไว แล ว หลั งจากติ ดต้ั งซอฟต แวร Arduino1.0x สํ าหรั บบอร ด Unicon แล ว ไฟล ไลบรารี นี้ จะได รั บการคั ดลอกลงในโฟลเดอร C:\arduino\libraries\popxt โดยประกอบด วย 3ไฟล หลั กคื อ glcd.h, GCLCD.h และ glcdfont.c

ในการประกาศเพ่ื อผนวกไฟล ไลบรารี นี้ ในโปรแกรมหรื อสเก็ ตช ของ Arduino1.0 ทํ าได ดั งนี้

#include <glcd.h> หรื อ #include <popxt.h>

4GLCD-XT

#include <popxt.h> // ผนวกไลบรารี หลั กvoid setup(){

glcd(1,0,"Hello World"); // แสดงข อความบนจอแสดงผล}void loop(){}คํ าอธิ บายโปรแกรม

โปรแกรมนี้ จะทํ างานโดยส งข อความ Hello World ออกไปแสดงผลที่ บรรทั ด 1 คอลั มน 0 ของจอแสดงผล จะทํ างานเพี ยงครั้ งเดี ยว จึ งเขี ยนโปรแกรมไว ที่ ตํ าแหน งของ void setup() เท านั้ น

โปรแกรมที่ 1 ไฟล HelloWorld.ino สํ าหร ับทดสอบการแสดงผลของแผงวงจร POP-XT และ Unicon กั บGLCD-XT

(1.1) เป ดโปรแกรม Arduino1.0 พิ มพ โปรแกรมที่ 1 แล วบั นทึ กไฟล

(1.2) ติ ดตั้ งบอร ด GLCD-XT บนบอร ด Unicon เป ดสวิ ตช จ ายไฟแก บอร ด Unicon แล ว เชื่ อมต อสาย USB เข ากั บคอมพ ิวเตอร

GLCD-XT 5

(1.3) เล ือกชน ิดหร ือรุ นของฮาร ดแวร ให ถ ูกต อง โดยเล ือกที ่เมนู Tools > Board > Unicon หร ือ POP-XT ด ังร ูป

(1.4) เล ือกพอร ตอน ุกรมส ําหร ับติ ดต อก ับบอร ด Unicon หรื อ POP-XT โดยเล ือกที ่เมน ู Tools > Serial Port ด ังร ูป(ตํ าแหน งของพอร ตที่ ใช เชื ่อมต ออาจแตกต างกั นในคอมพิ วเตอร แต ละเครื่ อง)

(1.5) คอมไพล และอั ปโหลดไปยั งบอร ด Unoicon หร ือ POP-XT โดยคล ิกที ่ปุ ม หรื อเล ือกที ่เมนู File > Upload

ที่ หน าจอแสดงผลกราฟ ก LCD แสดงข อความ Hello World

6GLCD-XT

จอแสดงผลของ GLCD-XT ม ีขนาด 128 x 160 พิ กเซล แสดงตั วอั กษรความละเอี ยด 5 x 7 จุ ด จํ านวน 21ตั วอ ักษร 16 บรรท ัด ผู ใช งานสามารถระบุ ตํ าแหน งบรรทั ดและต ําแหน งคอลั มน ที่ ต องการแสดงผลได โดยกํ าหนดผ านคํ าสั่ ง glcd ซึ่ งมี อยู ในไฟล ไลบรารี glcd.h หรื อ popxt.h

นอกจากนั ้นค ําสั ่ง glcd ย ังม ีอ ักขระพ ิเศษเพื ่อระบ ุต ําแหน งแทนการใช ค าต ัวเลข ด ังในโปรแกรมที ่ 2

#include <popxt.h> // ผนวกไฟล ไลบรารี หลั กint i,j;void setup(){

glcdFillScreen(GLCD_WHITE); // กํ าหนดให สี ของพื้ นหลั งของจอแสดงผลเป นสี ขาวsetTextColor(GLCD_BLACK); // กํ าหนดสี ตั วอั กษรเป นสี ดํ าsetTextBackgroundColor(GLCD_WHITE); // กํ าหนดสี พื้ นหลั งของตั วอั กษรเป นสี ขาวfor (i=0;i<16;i++) // วนลู ป 16 รอบเพ่ื อแสดงข อความ{

glcd(i,i,"Row %d ",i); // แสดงข อความที่ จอแสดงผล}

}void loop(){}

โปรแกรมที ่ 2 ไฟล MultipleTextline.ino สํ าหรั บทดสอบการแสดงผลอั กษรหลายบรรทั ดของ GLCD-XT

คํ าอธิ บายโปรแกรม

ในโปรแกรมนี้ เพิ่ มเติ มคํ าสั่ งสํ าหรั บการใช งานจอแสดงผลอี ก 3 คํ าสั่ งคื อ

1. glcdFillScreen เป นคํ าสั่ งกํ าหนดสี พื้ นหลั งของจอแสดงผล

2. setTextColor สํ าหรั บกํ าหนดสี ให แก ตั วอั กษร

3. setTextBackground สํ าหร ับกํ าหนดสี พื้ นหลั งของตั วอั กษร

เมื่ อตั้ งค าของจอแสดงผลแล ว จึ งทํ าการส งข อความ Row ตามด วยหมายเลขบรรทั ดซึ่ งมาจากการเพิ ่มค าของตั วแปร i และมี การเลื ่อนต ําแหน งตามค าของ i ด วย ด ังน้ั นที ่บรรท ัดแรก ข อความ Row0 ถ ูกแสดงที่ คอลั มน 0 ที่ บรรทั ด 2 แสดงข อความ Row 1 ที่ คอลั มน 1 ไล ไปตามลํ าดั บจนถึ งบรรทั ด 15 (บรรทั ดที่ 16)จะแสดงเป น Row 15 ที่ คอลั มน 15

GLCD-XT 7

(A1.2.1) เป ดโปรแกรม Arduino1.0 พิ มพ โปรแกรมที่ A1-2 แล วบั นทึ กไฟล

(A1.2.2) เป ดสวิ ตช จ ายไฟแก บอร ด Unicon ที่ ติ ดตั้ ง GLCD-XT แล วหรื อบอร ด POP-XT เชื่ อมต อสาย USB เข ากั บคอมพ ิวเตอร

(A1.2.3) คอมไพล และอั ปโหลดโปรแกรม โดยคล ิกที ่ปุ ม หร ือเล ือกที ่เมนู File > Upload

ที่ หน าจอแสดงผลกราฟ ก LCD แสดงข อความ Row 0 ถึ ง Row 15 เรี ยงไปบรรทั ดละข อความ

8GLCD-XT

ขนาดตั วอั กษรปกติ ที่ แสดงบนจอแสดงผลของ GLCD-XT เมื่ อเริ่ มต นทํ างานเป นขนาดเล็ กสุ ด ใช จํ านวนจุ ดต อตั วอั กษรคื อ 6 x 10 จุ ด (อั กษรจริ งมี ขนาด 5 x 7 จุ ด) ถ าต องการปรั บขนาดตั วอั กษรให ใหญ ขึ้ น จะมี คํ าสั่ งsetTextSize ไว สํ าหร ับปรั บขนาด โดยค าที่ กํ าหนดจะเป นจํ านวนเท าของตั วอั กษรปกติ เช น

setTextSize(2) หมายถึ งขนาดตั วอั กษรใหญ ขึ้ นเป น 2 เท า ใช 12 x 20 พิ กเซลต อ 1 ตั วอั กษร

setTextSize(3) หมายถึ งขนาดตั วอั กษรใหญ ขึ้ นเป น 3 เท า ใช 18 x 30 พิ กเซลต อ 1 ตั วอั กษร

เมื่ อปรั บขนาดต ัวอั กษรมี ขนาดใหญ ขึ้ น จํ านวนตั วอ ักษรต อบรรทั ดก็ ต องลดลง จากเด ิม 21 ตั วอั กษร 16บรรทั ด เมื่ อขนาดของต ัวอั กษรเพิ่ มข้ึ นเป นสองเท า ก็ จะทํ าให แสดงได 10 ตั วอ ักษร 8 บรรทั ดแทน ดั งนั้ นเม่ื อเขี ยนโปรแกรมจะต องคํ านึ งถึ งค าเหล านี ้ด วย

นอกจากขนาดต ัวอ ักษรแล ว ย ังก ําหนดท ิศทางการแสดงผลของจอแสดงผลได โดยใช คํ าสั ่ง glcdMode()โดยมี ค าตั้ งต นคื อ โหมด 0 (glcdMode(0)) นั่ นคื อ แสดงผลในแนวตั้ ง สํ าหรั บอี ก 3 โหมดคื อ โหมด 1, 2 และ 3ใช ปรั บให การแสดงผลหมถนไปโหมดละ 90 องศา นั่ นคื อ โหมด 1 หมุ นไป 90 องศา, โหมด 2 หมุ นไป 180 องศาและโหมด 3 หมุ นไป 270 องศา

#include <popxt.h>int x,m;void setup(){

setTextColor(GLCD_RED); // กํ าหนดสี ตั วอั กษรเป นสี แดง}void loop(){

for (x=1;x<6;x++){

setTextSize(x); // กํ าหนดขนาดตั วอั กษรfor(m=0;m<4;m++){

glcdClear(); // เคลี ยร หน าจอglcdMode(m); // กํ าหนดทิ ศทางglcd(0,0,"%dX",x); // แสดงขนาดตั วอั กษรglcd(1,0,"M=%d",m); // แสดงโหมดทิ ศทางsleep(500);

}}

}

โปรแกรมที่ 3 ไฟล SetText_FlipDisplay.ino สํ าหรั บทดสอบการเพิ่ มขนาดตั วอั กษรในการแสดงผลและการเปลี ่ยนทิ ศทางของการแสดงผลของ GLCD-XT

GLCD-XT 9

(.3.1) เป ดโปรแกรม Arduino1.0 พิ มพ โปรแกรมที่ 3 แล วบั นทึ กไฟล

(3.2) เป ดสวิ ตช จ ายไฟแก บอร ด Unicon ที่ ติ ดตั้ ง GLCD-XT แล วหรื อบอร ด POP-XT เชื่ อมต อสาย USB เข ากั บคอมพิ วเตอร

(3.3) คอมไพล และอ ัปโหลดโปรแกรม โดยคล ิกที ่ปุ ม หร ือเล ือกที ่เมนู File > Upload

ที่ หน าจอแสดงผลกราฟ ก LCD แสดงข อความแจ งขนาดของตั วอั กษรและโหมดของการแสดงผลในทิ ศทางที่ ต างกั น เริ ่มจากม ุมบนซ าย, ม ุมบนขวา, ม ุมล างขวา และม ุมล างซ าย โดยรอบการแสดงผลจะเริ ่มจากขนาด1X, 2X, 3X , 4X และ 5X แต ละรอบจะมี การแสดงผล 4 ทิ ศทาง โดยดู จากค า M

M = 0 จอแสดงข อความแนวตั้ ง M = 1 หมุ นการแสดงผลไป 90 องศาทางขวาตั วอั กษรขนาด 3 เท า ตั วอั กษรขนาด 4 เท า

M = 2 หมุ นการการแสดงผลไป 180 องศา M = 3 หมุ นการแสดงผลไป 270 องศา จะได ภาพที่ กลั บหั วเมื่ อเที ยบกั บ M = 0 ตั วอั กษรขนาด 5 เท า

ตั วอั กษรขนาด 4 เท า

10GLCD-XT

ฟ งก ชั่ น glcd เป นฟ งก ชั่ นหลั กในการติ ดต อกั บจอแสดงผลกราฟ ก LCD นอกจากมี คํ าสั่ งแสดงข อความแล ว ยั งมี คํ าสั ่งในการวาดลายเส นกราฟ กอี กหลายค ําสั่ ง ประกอบด วย

glcdRect(int x1,int y1,int width,int height,uint color) เป นคํ าสั่ งสร างรู ปสี่ เหลี่ ยม

glcdFillRect(int x1,int y1,int width,int height,uint color) เป นคํ าสั่ งสร างพื้ นสี่ เหลี่ ยม

glcdLine(int x1, int y1, int x2, int y2,uint color) เป นคํ าสั่ งลากเส น

glcdCircle(int x, int y, int radius,uint color) เป นคํ าสั่ งวาดเส นวงกลม

glcdFillCircle(int x, int y, int radius,uint color) เป นค ําสั ่งสร างพื ้นที ่วงกลม

glcdClear(uint color) เป นการเคลี ยร หน าจอแสดงผล

โดยทดสอบเขี ยนโปรแกรมได ดั งโปรแกรมที่ 4 แล วอั ปโหลดเพื่ อทดสอบการทํ างานไปยั งแผงวงจร POP-XT หรื อ Unicon จะได ผลดั งรู ป

#include <popxt.h> // ผนวกไฟล ไลบรารี หลั กint i,j;void setup(){}void loop(){

glcdClear; // เคลี ยร หน าจอและพ้ื นหลั งเป นสี ดํ าsleep(300);for (i=0;i<160;i+=4){

glcdLine(0,0,128,i,GLCD_WHITE); // วาดเส นสี ขาวจากพิ กั ด 0,0 ไปยั งจุ ดที่ กํ าหนด}

GLCD-XT 11

for (i=0;i<128;i+=4){

glcdLine(0,0,i,160,GLCD_RED); // วาดเส นสี แดงจากพิ กั ด 0,0 ไปยั งจุ ดที่ กํ าหนด}sleep(2000);glcdRect(32,40,64,80,GLCD_BLUE); // วาดเส นกรอบส่ี เหลี่ ยมสี นํ้ าเงิ นsleep(300);glcdFillCircle(32,40,31,GLCD_GREEN); // สร างวงกลมพื้ นสี เขี ยวglcdFillCircle(96,40,31,GLCD_YELLOW); // สร างวงกลมพื้ นสี เหลื องglcdFillCircle(32,120,31,GLCD_MAGENTA); // สร างวงกลมพื้ นสี บานเย็ นglcdFillCircle(96,120,31,GLCD_SKY); // สร างวงกลมพื้ นสี ฟ าsleep(1000);glcdCircle(64,40,31,GLCD_GREEN); // วาดเส นรอบวงกลมสี เขี ยวglcdCircle(32,80,31,GLCD_BLUE); // วาดเส นรอบวงกลมสี นํ้ าเงิ นglcdCircle(64,120,31,GLCD_YELLOW); // วาดเส นรอบวงกลมสี เหลื องglcdCircle(96,80,31,GLCD_SKY); // วาดเส นรอบวงกลมเส นสี ฟ าsleep(1000);glcdFillRect(0,0,128,160,GLCD_YELLOW); // สร างรู ปส่ี เหลี่ ยมสี เหลื องsleep(1000);

}

โปรแกรมที่ 4 ไฟล Simplegraphic.ino สํ าหรั บทดสอบการแสดงผลภาพลายเส นของ GLCD-XT

นอกจากวงกลมและสี ่เหลี่ ยมแล ว เส นโค งก็ เป นส วนประกอบสํ าคั ญในการสร างภาพกราฟ ก ในชุ ดคํ าสั ่งเกี่ ยวกั บการแสดงผลจอภาพแบบกราฟ กสี ของ GLCD-XT ยั งมี คํ าสั่ ง glcdArc() สํ าหรั บสร างเส นโค ง โดยมี พาราม ิเตอร หร ือต ัวแปรที ่ต องกํ าหนดอยู พอสมควร ด ูรายละเอ ียดเพิ ่มเต ิมในเอกสารไฟล ไลบราร ี glcd (ดาวน โหลดได ที่ www.inex.co.th หรื อ www.uniconboard.com) ซึ่ งบรรจุ คํ าสั่ งพิ เศษเหล านี้ ไว

(5.1) เป ดโปรแกรม Arduino1.0 พิ มพ โปรแกรมที่ 5 แล วบั นทึ กไฟล

(5.2) เป ดสวิ ตช จ ายไฟแก บอร ด Unicon ที่ ติ ดตั้ ง GLCD-XT แล วหรื อบอร ด POP-XT เชื่ อมต อสาย USB เข ากั บคอมพิ วเตอร

12GLCD-XT

(5.3) คอมไพล และอ ัปโหลดโปรแกรม โดยคล ิกที ่ปุ ม หร ือเล ือกที ่เมนู File > Upload

(5.4) รั นโปรแกรม ดู ผลการทํ างานที่ จอแสดงผลของ GLCD-XT

ที่ จอแสดงผลแสดงเป นรู ปการ ตู นหน ายิ้ มนาน 1 วิ นาที แล วหมุ นไปครั้ งละ 90 องศา แล ววนกลั บมาที่ หน าเริ่ มต น จะวนแสดงผลไปตลอดเวลา

#include <popxt.h>int i;void face(){

glcdFillCircle(64,70,50,GLCD_WHITE);glcdArc(48,60,16,30,150,GLCD_RED);glcdCircle(48,55,5,GLCD_BLUE);glcdCircle(80,55,5,GLCD_BLUE);glcdArc(80,60,16,30,150,GLCD_RED);glcdFillCircle(64,70,7,GLCD_YELLOW);glcdArc(64,80,30,220,320,GLCD_RED);glcdArc(64,80,29,220,320,GLCD_RED);

}void setup(){}void loop(){

for(i=0;i<4;i++){

glcdClear();glcdMode(i); // สั่ งหมุ นการแสดงผลface();sleep(1000);

}}

โปรแกรมที่ A1-5 ไฟล SmileFace_ArcTest.ino สํ าหรั บทดสอบการวาดเส นโค งของแผงวงจร POP-XT