arduino uno + nokia 5110
2013-04-20 19:06
204 查看
现在外面风雨交加,中午一盒隆江猪脚饭都没吃完的我饿得已经看不动QT的文档了,于是翻出实验室昨天入货的nokia5110玩下,显示个求救信号。
看图:NOKIA 5110
亲爱的arduino就不要爆照了
下面上过程,对于懒人来说,最好的选择就是arduino,使用arduino有两个方法:第一直接抄别人代码,此之谓开源,第二直接找库,此之谓第三方库丰富,哈哈哈
看第一种方法:
抄代码:源地址是arduino学习笔记32
- Arduino nokia 5110 PCD8544驱动实验
不爽可以直接看人家的原文。
先上接线图:
这幅图不是上面地址给的,主要几个地方接对就行了,按照下面代码来接:
使能SCE 7
复位RECET 6
片选DC 5
数据Din/DN 4
时钟 SCL/CLK 3
其他的按照上面的接,注意led那里要先接个100欧的电阻再接5v,或者直接找个PWM输出端口给个高点的值接上去也可以。
代码还是要贴一下,给懒人用>>>>>>.
作者是直接看datasheet写的,膜拜一下,自从上次看datasheet写过一两次驱动的之后,已经隔了大半年了没看过这类东西了,网上的活雷锋很多,做为懒人只能是拿来主义,自己看又不知道要搞多久。。。。。
上面代码中要注意的一点是,看下面这一行:
下面看第二种方法:
库,世界上有很多好人,为我们写了库这种东西,先表示一下感激之情。
从网上下载库文件后就可以直接用了。
库文件地址:
nokia5110.rar
虽然文件里面有个ino文件,但是比较坑的是他的对比度可能不适合所有人。。。。反正不适合我,于是把库文件里面的
附上参考来源地址:
2
arduino学习笔记32 - Arduino nokia 5110 PCD8544驱动实验
看图:NOKIA 5110
亲爱的arduino就不要爆照了
下面上过程,对于懒人来说,最好的选择就是arduino,使用arduino有两个方法:第一直接抄别人代码,此之谓开源,第二直接找库,此之谓第三方库丰富,哈哈哈
看第一种方法:
抄代码:源地址是arduino学习笔记32
- Arduino nokia 5110 PCD8544驱动实验
不爽可以直接看人家的原文。
先上接线图:
这幅图不是上面地址给的,主要几个地方接对就行了,按照下面代码来接:
使能SCE 7
复位RECET 6
片选DC 5
数据Din/DN 4
时钟 SCL/CLK 3
其他的按照上面的接,注意led那里要先接个100欧的电阻再接5v,或者直接找个PWM输出端口给个高点的值接上去也可以。
代码还是要贴一下,给懒人用>>>>>>.
// The pins to use on the arduino #define PIN_SCE 7 #define PIN_RESET 6 #define PIN_DC 5 #define PIN_SDIN 4 #define PIN_SCLK 3 // COnfiguration for the LCD #define LCD_C LOW #define LCD_D HIGH #define LCD_CMD 0 // Size of the LCD #define LCD_X 84 #define LCD_Y 48 int scrollPosition = -10; 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 ← ,{0x00, 0x06, 0x09, 0x09, 0x06} // 7f → }; void LcdCharacter(char character) { LcdWrite(LCD_D, 0x00); for (int index = 0; index < 5; index++) { LcdWrite(LCD_D, ASCII[character - 0x20][index]); } LcdWrite(LCD_D, 0x00); } void LcdClear(void) { for (int index = 0; index < LCD_X * LCD_Y / 8; index++) { LcdWrite(LCD_D, 0x00); } } void LcdInitialise(void) { pinMode(PIN_SCE, OUTPUT); pinMode(PIN_RESET, OUTPUT); pinMode(PIN_DC, OUTPUT); pinMode(PIN_SDIN, OUTPUT); pinMode(PIN_SCLK, OUTPUT); digitalWrite(PIN_RESET, LOW); digitalWrite(PIN_RESET, HIGH); LcdWrite(LCD_CMD, 0x21); // LCD Extended Commands. LcdWrite(LCD_CMD, 0xBf); // Set LCD Vop (Contrast). //B1 LcdWrite(LCD_CMD, 0x04); // Set Temp coefficent. //0x04 LcdWrite(LCD_CMD, 0x10); // LCD bias mode 1:48. //0x13 LcdWrite(LCD_CMD, 0x0C); // LCD in normal mode. 0x0d for inverse LcdWrite(LCD_C, 0x20); LcdWrite(LCD_C, 0x0C); } void LcdString(char *characters) { while (*characters) { LcdCharacter(*characters++); } } void LcdWrite(byte dc, byte data) { digitalWrite(PIN_DC, dc); digitalWrite(PIN_SCE, LOW); shiftOut(PIN_SDIN, PIN_SCLK, MSBFIRST, data); digitalWrite(PIN_SCE, HIGH); } /** * gotoXY routine to position cursor * x - range: 0 to 84 * y - range: 0 to 5 */ void gotoXY(int x, int y) { LcdWrite( 0, 0x80 | x); // Column. LcdWrite( 0, 0x40 | y); // Row. } void drawBox(void) { int j; for(j = 0; j < 84; j++) // top { gotoXY(j, 0); LcdWrite(1, 0x01); } for(j = 0; j < 84; j++) //Bottom { gotoXY(j, 5); LcdWrite(1, 0x80); } for(j = 0; j < 6; j++) // Right { gotoXY(83, j); LcdWrite(1, 0xff); } for(j = 0; j < 6; j++) // Left { gotoXY(0, j); LcdWrite(1, 0xff); } } void Scroll(String message) { for (int i = scrollPosition; i < scrollPosition + 11; i++) { if ((i >= message.length()) || (i < 0)) { LcdCharacter(' '); } else { LcdCharacter(message.charAt(i)); } } scrollPosition++; if ((scrollPosition >= message.length()) && (scrollPosition > 0)) { scrollPosition = -10; } } void setup(void) { LcdInitialise(); LcdClear(); drawBox(); gotoXY(7,1); LcdString("HELP ME!!!"); gotoXY(4,2); LcdString("Heavy Rain"); } void loop(void) { gotoXY(4,4); LcdString("MOONCAKE in 709"); delay(200); }
作者是直接看datasheet写的,膜拜一下,自从上次看datasheet写过一两次驱动的之后,已经隔了大半年了没看过这类东西了,网上的活雷锋很多,做为懒人只能是拿来主义,自己看又不知道要搞多久。。。。。
上面代码中要注意的一点是,看下面这一行:
LcdWrite(LCD_CMD, 0x10); // LCD bias mode 1:48. //0x13这一行是调节对比度的,如果发现满屏的话,大多是这里设置的问题了,默认是写0x13,我这里改为0x10后效果才看得过去,如果不行的话,随便试点数字,我也没看datasheet不知道这个具体是在什么范围内调节。。。。。
下面看第二种方法:
库,世界上有很多好人,为我们写了库这种东西,先表示一下感激之情。
从网上下载库文件后就可以直接用了。
库文件地址:
nokia5110.rar
虽然文件里面有个ino文件,但是比较坑的是他的对比度可能不适合所有人。。。。反正不适合我,于是把库文件里面的
this->send(nokia5110_CMD, 0x13);改一下,和上面说的一样,我的改成0x10就可以了。
附上参考来源地址:
0 How to use the Nokia 5110 LCD Module
at Arduino
1 arduino使用诺基亚5110液晶屏
2arduino学习笔记32 - Arduino nokia 5110 PCD8544驱动实验
相关文章推荐
- Nokia 5110 LCD资料
- Arduino UNO的原理图
- 认识 Arduino UNO
- PS2游戏摇杆joystick与arduino uno简单实验
- How to run arduino uno blink demo on Fedora 24?
- Arduino UNO R3面板接口的介绍----记录学习Arduino
- Arduino Uno 连接 接近开关
- Arduino Uno 无声无息的开关 固态继电器(四引脚)的实验
- Arduino UNO 键盘记录器中时钟接到2口或3口,其它接口不行。马上就要放弃了。要修改例子中时钟的引脚。
- Arduino Mega 2560与Arduino Uno R3——nRF24L01通信
- NOKIA 5110 LCD液晶显示屏
- Arduino uno 引脚说明
- Arduino Uno 驱动OLED进阶 显示图片
- Mega16_CN3083 and NOKIA_5110实现太阳嫩充电器
- 【笔记】Google ADK与arduino 开发环境搭建(USB HOST SHIELD + ARDUINO ROMEO兼容控制板(mega、uno同样适用))
- Nokia 5110液晶驱动
- Arduino Uno 硬件电路
- Arduino uno LED灯实验
- arduino UNO、arduino 2560和can总线-基于mcp2515的一些基础通讯
- Java 与 Arduino uno 使用 RXTX串口通信