JUTF43 Initial Version
1. LCD 세팅
USER DEFINE모드로 사용을 해야 내가 UART로 전송한 데이터를 사용합니다.
참고로!! MASS STORAGE 모드로 선택을 할 경우에는 Boot모드이다. ICBanq의 로고의 BMP파일을 볼수 있습니다.
2. LCD와 TEST board연결
TFTLCD에서는 5V/TX1/RX1/GND만 연결하면 사용할수 있습니다.
PC에서 바로 시리얼로 보내려면 컨버터가 있어야해서 나의 경우는 MCU borad(WIZwiki-W7500)를 사용합니다.
WIZwiki-W7500의 Datasheet는 아래의 링크를 가서 확인 하면됩니다.
http://wizwiki.net/wiki/doku.php?id=products:w7500:documents
Test board와 연결은 다음과 같습니다.
3. 코드
Command설명입니다
ex ) $l,1,10,10,100,100,#
Cmd | description |
$(0x24) | START |
l(L의 소문자),1 | Line 그리기 |
1,1 | 시작 x,y 좌표 |
100,100 | 끝 x,y좌표 |
#(0x63) | STOP |
mbed코드
mbed가 궁금하다면?
4. 결과
484 x 272인 TFT LCD에 (10,10) -> (100,100)까지만 선을 그어봤습니다.
Diff: JUTF43/lcd_cmd.cpp
- Revision:
- 0:e4340e1e2d7f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/JUTF43/lcd_cmd.cpp Wed Aug 26 04:38:43 2015 +0000 @@ -0,0 +1,271 @@ +//#include <stdio.h> +// +//#include "lcd_cmd.h" +//#define MAX_PACKET 1024 +//static char cmd_buf[MAX_PACKET]; +// +//bool lcd_connect(int portnum) +//{ +// TCHAR portname[128]; +// wsprintf(portname, _T("\\\\.\\COM%d"),portnum); +// serial.OpenCom(portname, 115200, 8,0,1); +// if(serial.IsActive()) +// { +// serial.ClearCommBlock(); +// serial.ThreadReceiveSet(); +// } +// else +// { +// TCHAR msg[128]; +// wsprintf(msg, _T("Failed to open Serial Port(%d)"), portnum); +// OutputDebugString(msg); +// return false; +// } +// +// lcd_connect_check(); +// +// return true; +//} +//void lcd_disconnect() +//{ +// serial.ThreadReceiveRelease(); +// serial.CloseCom(); +//} +//bool lcd_is_open() +//{ +// if(serial.IsActive()) return true; +// else return false; +//} +//void set_receive_window(HWND h, UINT msg) +//{ +// serial.SetReceiveWindow(h, msg); +//} +// +//bool send_command(char* str) +//{ +// char ch = '-'; +// if(serial.IsActive()) +// { +// unsigned char sop = '$'; +// unsigned char eop = '#'; +// +// //start of packet +// serial.WriteCommBlock(&sop, 1); +// +// //command body +// serial.WriteCommBlock((unsigned char*) str, strlen(str)); +// +// ///end of packet +// serial.WriteCommBlock(&eop, 1); +// return true; +// } +// return false; +//} +// +//bool lcd_connect_check() +//{ +// return send_command("s,0"); +//} +//bool lcd_set_double_buffer_mode() +//{ +// return send_command("s,3"); +//} +//bool lcd_set_single_buffer_mode() +//{ +// return send_command("s,4"); +//} +//bool lcd_brightness(int val) +//{ +// if (val > 99) +// val = 99; +// else if (val < 0) +// val = 0; +// sprintf_s(cmd_buf,MAX_PACKET, "s,5,%d", val); +// return send_command(cmd_buf); +//} +//bool lcd_flip() +//{ +// return send_command("s,6"); +//} +//bool lcd_usb_mass_storage() +//{ +// return send_command("s,7"); +//} +//bool lcd_reset() +//{ +// return send_command("s,9"); +//} +// +// +//bool lcd_set_color(unsigned char r, unsigned char g, unsigned char b) +//{ +// sprintf_s(cmd_buf,MAX_PACKET, "l,0,%d,%d,%d", r, g, b); +// return send_command(cmd_buf); +//} +// +//bool lcd_draw_line(int x, int y, int endx, int endy) +//{ +// sprintf_s(cmd_buf,MAX_PACKET, "l,1,%d,%d,%d,%d", x, y, endx, endy); +// return send_command(cmd_buf); +//} +// +//bool lcd_draw_rect(int x, int y, int w, int h, bool bfill) +//{ +// sprintf_s(cmd_buf,MAX_PACKET, "l,2,%d,%d,%d,%d,%d", x, y, w, h, bfill == true ? 1 : 0); +// return send_command(cmd_buf); +//} +//bool lcd_draw_rect_gradient(int x, int y, int w, int h, unsigned char sr, unsigned char sg, unsigned char sb, unsigned char er, unsigned char eg, unsigned char eb) +//{ +// sprintf_s(cmd_buf,MAX_PACKET, "l,3,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d", x, y, w, h, sr, sg, sb, er, eg, eb); +// return send_command(cmd_buf); +//} +//bool lcd_draw_rect_rounded(int x, int y, int w, int h, int rad, bool bfill) +//{ +// sprintf_s(cmd_buf,MAX_PACKET, "l,4,%d,%d,%d,%d,%d,%d", x, y, w, h, rad, bfill == true ? 1 : 0); +// return send_command(cmd_buf); +//} +//bool lcd_draw_thickline(int x, int y, int endx, int endy, int thick) +//{ +// sprintf_s(cmd_buf,MAX_PACKET, "l,5,%d,%d,%d,%d,%d", x, y, endx, endy, thick); +// return send_command(cmd_buf); +//} +//bool lcd_draw_circle(int x, int y, int r, bool bfill) +//{ +// sprintf_s(cmd_buf,MAX_PACKET, "l,6,%d,%d,%d,%d", x, y, r, bfill == true ? 1 : 0); +// return send_command(cmd_buf); +//} +// +//bool lcd_draw_ellipse(int x, int y, int rx, int ry, bool bfill) +//{ +// sprintf_s(cmd_buf,MAX_PACKET, "l,7,%d,%d,%d,%d,%d", x, y, rx, ry, bfill == true ? 1 : 0); +// return send_command(cmd_buf); +//} +//bool lcd_image_load(int index, char* fname) +//{ +// if (index >= 1024) +// return false; +// else if (index < 0) +// return false; +// +// sprintf_s(cmd_buf,MAX_PACKET, "i,1,%d,%s", index, fname); +// return send_command(cmd_buf); +//} +// +//bool lcd_image_draw(int index, int x, int y) +//{ +// if (index >= 1024) +// return false; +// else if (index < 0) +// return false; +// +// sprintf_s(cmd_buf,MAX_PACKET, "i,2,%d,%d,%d", index, x, y); +// return send_command(cmd_buf); +//} +// +//bool lcd_image_draw_rect(int index, int x, int y, int sx, int sy, int w, int h) +//{ +// if (index >= 1024) +// return false; +// else if (index < 0) +// return false; +// +// sprintf_s(cmd_buf,MAX_PACKET, "i,3,%d,%d,%d,%d,%d,%d,%d", index, x, y, sx, sy, w, h); +// return send_command(cmd_buf); +//} +// +//bool lcd_image_draw_scale(int index, int x, int y, int w, int h) +//{ +// if (index >= 1024) +// return false; +// else if (index < 0) +// return false; +// +// sprintf_s(cmd_buf,MAX_PACKET, "i,4,%d,%d,%d,%d,%d", index, x, y, w, h); +// return send_command(cmd_buf); +//} +// +//bool lcd_image_draw_scale_rect(int index, int dx, int dy, int dw, int dh, int sx, int sy, int sw, int sh) +//{ +// if (index >= 1024) +// return false; +// else if (index < 0) +// return false; +// +// sprintf_s(cmd_buf,MAX_PACKET, "i,5,%d,%d,%d,%d,%d,%d,%d,%d,%d", index, dx, dy, dw, dh, sx, sy, sw, sh); +// return send_command(cmd_buf); +//} +// +//bool lcd_image_release(int index) +//{ +// if (index >= 1024) +// return false; +// else if (index < 0) +// return false; +// +// sprintf_s(cmd_buf, MAX_PACKET, "i,6,%d", index); +// return send_command(cmd_buf); +//} +// +//bool lcd_textcolor(unsigned char r, unsigned char g, unsigned char b) +//{ +// sprintf_s(cmd_buf,MAX_PACKET, "f,1,%d,%d,%d", r, g, b); +// return send_command(cmd_buf); +//} +// +//bool lcd_textout(char* str, int x, int y) +//{ +// if (strlen(str) > 1000) +// return false; +// +// sprintf_s(cmd_buf,MAX_PACKET, "f,0,%s,%d,%d", str, x, y); +// return send_command(cmd_buf); +//} +// +//bool lcd_set_touchmode(bool bAsync) +//{ +// +// if (bAsync) +// return send_command("t,0,1"); +// else +// return send_command("t,0,0"); +// +//} +// +//bool lcd_get_touch(unsigned short *x, unsigned short *y) +//{ +// /* +// char* cmd = "$t,1#"; +// DWORD nRead; +// unsigned char res[5]; +// serial.Write(cmd, strlen(cmd)); +// if (serial.Read(res, 5, &nRead) != ERROR_SUCCESS) +// return false; +// if (nRead != 5) +// return false; +// if (res[4] != '+') +// return false; +// *x = (unsigned short)(res[0] << 8) + res[1]; +// *y = (unsigned short)(res[2] << 8) + res[3]; +// */ +// return true; +//} +// +//bool lcd_run_script(char* fname) +//{ +// if (strlen(fname) > 1000) +// return false; +// +// sprintf_s(cmd_buf, MAX_PACKET, "c,0,%s", fname); +// return send_command(cmd_buf); +//} +// +////Read data from the serial port +//int lcd_get_serial_data(unsigned char* buf) +//{ +// int res = 0; +// if(serial.IsActive()) +// { +// res = serial.GetReceiveData(buf); +// } +// return res; +//}