코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-08-12 16:21:14
출처 : 노키아 5110 LCD - sparkfun
Nokia 5110 LCD는 84X48의 픽셀수를 지니고 있습니다.
따라서 문자입력 뿐만 아니라 한글이나 도형 표현이 가능한 LCD 입니다.
PCD8544 CMOS LCD 콘트롤러가 내장되어 있으며 Serial bus를 사용해서 아두이노와 통신이 가능합니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 아두이노 | 1 | 아두이노 |
2 | 브레드보드 | 1 | 브레드보드 |
3 | 점퍼 케이블 | 8 | 점퍼 케이블 |
4 | Nokia 5110 LCD | 1 | 84X48 LCD |
5 | 10㏀ 저항 | 1 | 저항 |
6 | 330Ω 저항 | 1 | 저항 |
7 | 1㏀ 저항 | 1 | 저항 |
부품명 | 아두이노 | 브레드보드 | 점퍼케이블 | Nokia 5110 LCD | 10㏀ 저항 |
파트 | x1 | x1 | x8 | x1 | x1 |
부품명 | 330Ω 저항 | 1㏀ 저항 |
파트 | x1 | x1 |
* 배선 연결시 주의사항 *
이 LCD는 기본 3.3V로 동작됩니다.
따라서 3.3V 핀에 VCC 와 BL (Back Light) 혹은 LED를 연결해주세요
핀연결
5110 | Arduino |
VCC | 3.3V |
GND | GND |
Light | GND(330Ω 연결) |
CLK | 8 pin(10kΩ 연결) |
DN(MOSI) | 9 pin(10kΩ 연결) |
D/C | 10 pin(10kΩ 연결) |
SCE | 11 pin(10kΩ 연결) |
RST(Reset) | 12((1kΩ 연결) |
아래의 코드를 아두이노에 업로드 합니다.
/* 출처 : http://www.youtube.com/watch?v=RAlZ1DHw03g byJulian Ilett 한글주석: www.kocoafab.cc #define RST 12 //12번 핀에 RST를 연결합니다. #define CE 11 //11번 핀에 CE를 연결합니다. #define DC 10 //10번 핀에 DC를 연결합니다. #define DIN 9 //9번 핀에 DIN을 연결합니다. #define CLK 8 //8번 핀에 CLK를 연결합니다.
#include <Arduino.h> // Arduino.h 라이브러리를 불러옵니다.
static const byte ASCII[][5] = // 아스키코드의 문자열을 나열합니다. { {0x00, 0x00, 0x00, 0x00, 0x00} // 20 ,{0x00, 0x00, 0x5f, 0x00, 0x00} // 21 ! ,{0x00, 0x07, 0x00, 0x07, 0x00} // 22 " ,{0x14, 0x7f, 0x14, 0x7f, 0x14} // 23 # ,{0x24, 0x2a, 0x7f, 0x2a, 0x12} // 24 $ ,{0x23, 0x13, 0x08, 0x64, 0x62} // 25 % ,{0x36, 0x49, 0x55, 0x22, 0x50} // 26 & ,{0x00, 0x05, 0x03, 0x00, 0x00} // 27 ' ,{0x00, 0x1c, 0x22, 0x41, 0x00} // 28 ( ,{0x00, 0x41, 0x22, 0x1c, 0x00} // 29 ) ,{0x14, 0x08, 0x3e, 0x08, 0x14} // 2a * ,{0x08, 0x08, 0x3e, 0x08, 0x08} // 2b + ,{0x00, 0x50, 0x30, 0x00, 0x00} // 2c , ,{0x08, 0x08, 0x08, 0x08, 0x08} // 2d - ,{0x00, 0x60, 0x60, 0x00, 0x00} // 2e . ,{0x20, 0x10, 0x08, 0x04, 0x02} // 2f / ,{0x3e, 0x51, 0x49, 0x45, 0x3e} // 30 0 ,{0x00, 0x42, 0x7f, 0x40, 0x00} // 31 1 ,{0x42, 0x61, 0x51, 0x49, 0x46} // 32 2 ,{0x21, 0x41, 0x45, 0x4b, 0x31} // 33 3 ,{0x18, 0x14, 0x12, 0x7f, 0x10} // 34 4 ,{0x27, 0x45, 0x45, 0x45, 0x39} // 35 5 ,{0x3c, 0x4a, 0x49, 0x49, 0x30} // 36 6 ,{0x01, 0x71, 0x09, 0x05, 0x03} // 37 7 ,{0x36, 0x49, 0x49, 0x49, 0x36} // 38 8 ,{0x06, 0x49, 0x49, 0x29, 0x1e} // 39 9 ,{0x00, 0x36, 0x36, 0x00, 0x00} // 3a : ,{0x00, 0x56, 0x36, 0x00, 0x00} // 3b ; ,{0x08, 0x14, 0x22, 0x41, 0x00} // 3c < ,{0x14, 0x14, 0x14, 0x14, 0x14} // 3d = ,{0x00, 0x41, 0x22, 0x14, 0x08} // 3e > ,{0x02, 0x01, 0x51, 0x09, 0x06} // 3f ? ,{0x32, 0x49, 0x79, 0x41, 0x3e} // 40 @ ,{0x7e, 0x11, 0x11, 0x11, 0x7e} // 41 A ,{0x7f, 0x49, 0x49, 0x49, 0x36} // 42 B ,{0x3e, 0x41, 0x41, 0x41, 0x22} // 43 C ,{0x7f, 0x41, 0x41, 0x22, 0x1c} // 44 D ,{0x7f, 0x49, 0x49, 0x49, 0x41} // 45 E ,{0x7f, 0x09, 0x09, 0x09, 0x01} // 46 F ,{0x3e, 0x41, 0x49, 0x49, 0x7a} // 47 G ,{0x7f, 0x08, 0x08, 0x08, 0x7f} // 48 H ,{0x00, 0x41, 0x7f, 0x41, 0x00} // 49 I ,{0x20, 0x40, 0x41, 0x3f, 0x01} // 4a J ,{0x7f, 0x08, 0x14, 0x22, 0x41} // 4b K ,{0x7f, 0x40, 0x40, 0x40, 0x40} // 4c L ,{0x7f, 0x02, 0x0c, 0x02, 0x7f} // 4d M ,{0x7f, 0x04, 0x08, 0x10, 0x7f} // 4e N ,{0x3e, 0x41, 0x41, 0x41, 0x3e} // 4f O ,{0x7f, 0x09, 0x09, 0x09, 0x06} // 50 P ,{0x3e, 0x41, 0x51, 0x21, 0x5e} // 51 Q ,{0x7f, 0x09, 0x19, 0x29, 0x46} // 52 R ,{0x46, 0x49, 0x49, 0x49, 0x31} // 53 S ,{0x01, 0x01, 0x7f, 0x01, 0x01} // 54 T ,{0x3f, 0x40, 0x40, 0x40, 0x3f} // 55 U ,{0x1f, 0x20, 0x40, 0x20, 0x1f} // 56 V ,{0x3f, 0x40, 0x38, 0x40, 0x3f} // 57 W ,{0x63, 0x14, 0x08, 0x14, 0x63} // 58 X ,{0x07, 0x08, 0x70, 0x08, 0x07} // 59 Y ,{0x61, 0x51, 0x49, 0x45, 0x43} // 5a Z ,{0x00, 0x7f, 0x41, 0x41, 0x00} // 5b [ ,{0x02, 0x04, 0x08, 0x10, 0x20} // 5c ¥ ,{0x00, 0x41, 0x41, 0x7f, 0x00} // 5d ] ,{0x04, 0x02, 0x01, 0x02, 0x04} // 5e ^ ,{0x40, 0x40, 0x40, 0x40, 0x40} // 5f _ ,{0x00, 0x01, 0x02, 0x04, 0x00} // 60 ` ,{0x20, 0x54, 0x54, 0x54, 0x78} // 61 a ,{0x7f, 0x48, 0x44, 0x44, 0x38} // 62 b ,{0x38, 0x44, 0x44, 0x44, 0x20} // 63 c ,{0x38, 0x44, 0x44, 0x48, 0x7f} // 64 d ,{0x38, 0x54, 0x54, 0x54, 0x18} // 65 e ,{0x08, 0x7e, 0x09, 0x01, 0x02} // 66 f ,{0x0c, 0x52, 0x52, 0x52, 0x3e} // 67 g ,{0x7f, 0x08, 0x04, 0x04, 0x78} // 68 h ,{0x00, 0x44, 0x7d, 0x40, 0x00} // 69 i ,{0x20, 0x40, 0x44, 0x3d, 0x00} // 6a j ,{0x7f, 0x10, 0x28, 0x44, 0x00} // 6b k ,{0x00, 0x41, 0x7f, 0x40, 0x00} // 6c l ,{0x7c, 0x04, 0x18, 0x04, 0x78} // 6d m ,{0x7c, 0x08, 0x04, 0x04, 0x78} // 6e n ,{0x38, 0x44, 0x44, 0x44, 0x38} // 6f o ,{0x7c, 0x14, 0x14, 0x14, 0x08} // 70 p ,{0x08, 0x14, 0x14, 0x18, 0x7c} // 71 q ,{0x7c, 0x08, 0x04, 0x04, 0x08} // 72 r ,{0x48, 0x54, 0x54, 0x54, 0x20} // 73 s ,{0x04, 0x3f, 0x44, 0x40, 0x20} // 74 t ,{0x3c, 0x40, 0x40, 0x20, 0x7c} // 75 u ,{0x1c, 0x20, 0x40, 0x20, 0x1c} // 76 v ,{0x3c, 0x40, 0x30, 0x40, 0x3c} // 77 w ,{0x44, 0x28, 0x10, 0x28, 0x44} // 78 x ,{0x0c, 0x50, 0x50, 0x50, 0x3c} // 79 y ,{0x44, 0x64, 0x54, 0x4c, 0x44} // 7a z ,{0x00, 0x08, 0x36, 0x41, 0x00} // 7b { ,{0x00, 0x00, 0x7f, 0x00, 0x00} // 7c | ,{0x00, 0x41, 0x36, 0x08, 0x00} // 7d } ,{0x10, 0x08, 0x08, 0x10, 0x08} // 7e ← ,{0x78, 0x46, 0x41, 0x46, 0x78} // 7f → }; void LcdWriteString(char *characters) { while(*characters) LcdWriteCharacter(*characters++); } void LcdWriteCharacter(char character) { for(int i=0; i<5; i++) LcdWriteData(ASCII[character - 0x20][i]); LcdWriteData(0x00); } void LcdWriteData(byte dat) { digitalWrite(DC, HIGH); digitalWrite(CE, LOW); shiftOut(DIN, CLK, MSBFIRST, dat); // 시리얼 데이터를 LCD에 전송합니다. digitalWrite(CE, HIGH); } void LcdXY(int x, int y) { LcdWriteCmd(0x80 | x); // 가로크기를 지정합니다. LcdWriteCmd(0x40 | y); // 세로크기를 지정합니다. } void LcdWriteCmd(byte cmd) { digitalWrite(DC, LOW); //커맨드 입력을 위해 LOW로 설정합니다. digitalWrite(CE, LOW); shiftOut(DIN, CLK, MSBFIRST, cmd); //시리얼 데이터를 LCD에 전송합니다. digitalWrite(CE, HIGH); } void setup() { // 각각의 핀모드를 출력으로 설정합니다. pinMode(RST, OUTPUT); pinMode(CE, OUTPUT); pinMode(DC, OUTPUT); pinMode(DIN, OUTPUT); pinMode(CLK, OUTPUT); digitalWrite(RST, LOW); digitalWrite(RST, HIGH); LcdWriteCmd(0x21); // LCD 확장 명령 LcdWriteCmd(0xBF); // LCD의 콘트라스트(명암을 결정합니다) LcdWriteCmd(0x04); LcdWriteCmd(0x14); LcdWriteCmd(0x20); LcdWriteCmd(0x0C); for(int i=0; i<504; i++) LcdWriteData(0x00); //LCD를 초기화 합니다 LcdXY(20,2); LcdWriteString("KOCOA FAB"); // "와" 사이의 문자를 입력합니다. } void loop() { }
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!