实验一:
1. 实验原理
LCD显示原理:通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光射出的目的。
LCD1602指令集说明:https://www.cnblogs.com/aslmer/p/5801363.html
2. 材料清单
| 元器件名称 |
信号参数规格 |
数量 |
参考实物图 |
| Arduino开发板 |
Uno R3 |
1 |
|
| 面包包 |
840孔无焊板 |
1 |
|
| LCD显示屏 |
LCD1602 |
1 |
|
| 面板包专用插线 |
- |
1 |
|
3. 硬件连接
4. 程序设计
4.1 流程图
4.2 程序源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
const int DI = 12; const int RW = 11;
const int DB[8] = {3, 4, 5, 6, 7, 8, 9, 10};
const int Enable = 2;
int i;
void LcdCommadWrite(int value) { for (i = DB[0]; i < DI; i ++) { digitalWrite(i, value & 01); value >>= 1; }
digitalWrite(Enable, LOW); delayMicroseconds(1); digitalWrite(Enable, HIGH); delayMicroseconds(1); digitalWrite(Enable, LOW); delayMicroseconds(1); }
void LcdDataWrite(int value) { digitalWrite(DI, HIGH); digitalWrite(RW, LOW);
for (int di : DB) { digitalWrite(di, value & 01); value >>= 1; }
digitalWrite(Enable, LOW); delayMicroseconds(1); digitalWrite(Enable, HIGH); delayMicroseconds(1); digitalWrite(Enable, LOW); delayMicroseconds(1); }
void setup() { for (i = Enable; i <= DI; i ++) { pinMode(i, OUTPUT); }
delay(100);
LcdCommadWrite(0x38); delay(64); LcdCommadWrite(0x38); delay(50); LcdCommadWrite(0x38); delay(20);
LcdCommadWrite(0x06); delay(20); LcdCommadWrite(0x0E); delay(20);
delay(20); LcdCommadWrite(0x01); delay(100); LcdCommadWrite(0x80); delay(20); }
void loop() { LcdCommadWrite(0x01); delay(10);
LcdCommadWrite(0x80 + 4); char wc[] = "Wellcome!"; for (char ch : wc) { LcdDataWrite(ch); }
delay(10); char ila[] = "I Love Arduino!"; for (char ch : ila) { LcdDataWrite(ch); } delay(10000); }
|
5. 调试及实验现象
6. 代码回顾
7. 扩展实验