This shows you the differences between two versions of the page.
|
tutorials:arduino:lcd_display [2014/02/27 21:27] aaron |
tutorials:arduino:lcd_display [2014/02/28 10:19] (current) sam |
||
|---|---|---|---|
| Line 9: | Line 9: | ||
| ===== Abstract ===== | ===== Abstract ===== | ||
| + | How to do this,please refer to [[http://docs.cubieboard.org/tutorials/arduino/controlling_led |light led]] and [[http://docs.cubieboard.org/tutorials/arduino/connecting|how to connect cubieboard and arduino]] | ||
| + | |||
| {{:tutorials:arduino:照片_4_.jpg|400}} | {{:tutorials:arduino:照片_4_.jpg|400}} | ||
| =====Schematics===== | =====Schematics===== | ||
| - | {{:tutorials:arduino:dd.jpg|400}} | + | {{:tutorials:arduino:dd.jpg|200}} |
| ====Source Code==== | ====Source Code==== | ||
| Line 21: | Line 23: | ||
| int DI = 12; | int DI = 12; | ||
| int RW = 11; | int RW = 11; | ||
| - | int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};//使用数组来定义总线需要的管脚 | + | int DB[] = {3, 4, 5, 6, 7, 8, 9, 10}; |
| int Enable = 2; | int Enable = 2; | ||
| void LcdCommandWrite(int value) { | void LcdCommandWrite(int value) { | ||
| - | // 定义所有引脚 | + | |
| int i = 0; | int i = 0; | ||
| - | for (i=DB[0]; i <= DI; i++) //总线赋值 | + | for (i=DB[0]; i <= DI; i++){ |
| - | { | + | digitalWrite(i,value & 01); |
| - | digitalWrite(i,value & 01);//因为1602液晶信号识别是D7-D0(不是D0-D7),这里是用来反转信号。 | + | |
| value >>= 1; | value >>= 1; | ||
| } | } | ||
| Line 35: | Line 37: | ||
| delayMicroseconds(1); | delayMicroseconds(1); | ||
| digitalWrite(Enable,HIGH); | digitalWrite(Enable,HIGH); | ||
| - | delayMicroseconds(1); // 延时1ms | + | delayMicroseconds(1); |
| digitalWrite(Enable,LOW); | digitalWrite(Enable,LOW); | ||
| - | delayMicroseconds(1); // 延时1ms | + | delayMicroseconds(1); |
| } | } | ||
| void LcdDataWrite(int value) { | void LcdDataWrite(int value) { | ||
| - | // 定义所有引脚 | ||
| int i = 0; | int i = 0; | ||
| digitalWrite(DI, HIGH); | digitalWrite(DI, HIGH); | ||
| Line 54: | Line 55: | ||
| delayMicroseconds(1); | delayMicroseconds(1); | ||
| digitalWrite(Enable,LOW); | digitalWrite(Enable,LOW); | ||
| - | delayMicroseconds(1); // 延时1ms | + | delayMicroseconds(1); |
| } | } | ||
| Line 63: | Line 64: | ||
| } | } | ||
| delay(100); | delay(100); | ||
| - | // 短暂的停顿后初始化LCD | + | |
| - | // 用于LCD控制需要 | + | LcdCommandWrite(0x38); |
| - | LcdCommandWrite(0x38); // 设置为8-bit接口,2行显示,5x7文字大小 | + | |
| delay(64); | delay(64); | ||
| - | LcdCommandWrite(0x38); // 设置为8-bit接口,2行显示,5x7文字大小 | + | LcdCommandWrite(0x38); |
| delay(50); | delay(50); | ||
| - | LcdCommandWrite(0x38); // 设置为8-bit接口,2行显示,5x7文字大小 | + | LcdCommandWrite(0x38); |
| delay(20); | delay(20); | ||
| - | LcdCommandWrite(0x06); // 输入方式设定 | + | LcdCommandWrite(0x06); |
| - | // 自动增量,没有显示移位 | + | |
| delay(20); | delay(20); | ||
| - | LcdCommandWrite(0x0E); // 显示设置 | + | LcdCommandWrite(0x0E); |
| - | // 开启显示屏,光标显示,无闪烁 | + | |
| delay(20); | delay(20); | ||
| - | LcdCommandWrite(0x01); // 屏幕清空,光标位置归零 | + | LcdCommandWrite(0x01); |
| delay(100); | delay(100); | ||
| - | LcdCommandWrite(0x80); // 显示设置 | + | LcdCommandWrite(0x80); |
| - | // 开启显示屏,光标显示,无闪烁 | + | |
| delay(20); | delay(20); | ||
| } | } | ||
| void loop (void) { | void loop (void) { | ||
| - | LcdCommandWrite(0x01); // 屏幕清空,光标位置归零 | + | LcdCommandWrite(0x01); |
| delay(10); | delay(10); | ||
| LcdCommandWrite(0x80+3); | LcdCommandWrite(0x80+3); | ||
| delay(10); | delay(10); | ||
| - | // 写入欢迎信息 | + | |
| LcdDataWrite('W'); | LcdDataWrite('W'); | ||
| LcdDataWrite('e'); | LcdDataWrite('e'); | ||
| Line 101: | Line 101: | ||
| LcdDataWrite('o'); | LcdDataWrite('o'); | ||
| delay(10); | delay(10); | ||
| - | LcdCommandWrite(0xc0+1); // 定义光标位置为第二行第二个位置 | + | LcdCommandWrite(0xc0+1); |
| delay(10); | delay(10); | ||
| LcdDataWrite('g'); | LcdDataWrite('g'); | ||
| Line 117: | Line 117: | ||
| LcdDataWrite('p'); | LcdDataWrite('p'); | ||
| delay(5000); | delay(5000); | ||
| - | LcdCommandWrite(0x01); // 屏幕清空,光标位置归零 | + | LcdCommandWrite(0x01); |
| delay(10); | delay(10); | ||
| LcdDataWrite('I'); | LcdDataWrite('I'); | ||
| Line 131: | Line 131: | ||
| LcdDataWrite('i'); | LcdDataWrite('i'); | ||
| delay(3000); | delay(3000); | ||
| - | LcdCommandWrite(0x02); //设置模式为新文字替换老文字,无新文字的地方显示不变。 | + | LcdCommandWrite(0x02); |
| delay(10); | delay(10); | ||
| - | LcdCommandWrite(0x80+5); //定义光标位置为第一行第六个位置 | + | LcdCommandWrite(0x80+5); |
| delay(10); | delay(10); | ||
| LcdDataWrite('t'); | LcdDataWrite('t'); | ||