LCD液晶显示屏的应用
LCD显示器需要由驱动芯片控制,控制芯片已经集成还在显示器中了。LCD由灰色的像素组成。一个典型的16x2LCD可在两行中显示16个字符,每个字符由5个像素宽、8个像素高组成。如果在显示器上把对比度设的很高,32组5x7像素将变得可见
-
1602液晶显示文字试验
-
两组电源。一组是模块的电源,一组是背光板的电源,一般均适用5v供电,本次试验背光使用3.3v供电也可以工作
-
VL是调节对比率的引脚,串联不大于5k欧的电位器进行调节。本次实验使用1k欧的电阻来设定对比度。其连接分高电位与低电位接法,本次使用低电位接法,串联1k欧电阻后接GND
-
RS是很多液晶上都有的引脚,是命令/数据选择引脚。该脚电平为高时表示将进行数据操作;为低时表示进行命令操作
-
RW也是很多液晶上都有的引脚,是读写选择端。该脚电平为高时表示要对液晶进行读操作;为低时表示要进行写操作
-
E同样也是很多液晶模块上都有的引脚,通常在总线上。信号稳定后给一正脉冲通知把数据读走,在此脚为高电平的时候总线不允许变化
-
D0~D7。8位双向并行总线,用来传送命令和数据
-
BLA是背光源正极,BLK是背光源负极
-
int DI=12; int RW=11; int DB[]={3,4,5,6,7,8,9,10}; //使用数组来定义总线需要的引脚 int Enable=2; void LcdCommandWrite(int value) { //定义所有引脚 int i=0; for (i=DB[0];1<=DI;I++) //总线赋值 { digitalWrite(i,value & 01); //因为1602流经信号识别是D7~D0,这里用来反转信号 value>>=1; } digitalWrite(Enable,LOW); delayMicroseconds(1); digitalWrite(Enable,HIGH); delayMicroseconds(1); //延时1ms digitalWrite(ENable,LOW); delayMicroseconds(1); //延时1ms } Void LcdDataWrite(int value) { //定义所有引脚 int i=0; digitalWrite(DI,HIGH); digitalWrite(RW,HIGH); for(i=DB[0];I<=DB[7];i++){ digitalWrite(i,value & 01); Value>>=1; } digitalWrite(Enable,LOW); delayMicroseconds(1); digitalWrite(Enable,HIGH); delayMicroseconds(1); digitalWrite(Enable,LOW); delayMicroseconds(1); //延时1ms } void setup (void) { int i=0; for(i=Enable;i<=DI;i++){ pinMode(i,OUTPUT); } delay(100); //短暂的停顿后初始化LCD //用于LCD控制需要 LcdCommandWrite(0x38);//设置为8-bit接口,2行显示,5x7文字大小 delay(64); LcdCommandWrite(0x38); dealy(50); LcdCommandWrite(0x38); delay(50); LcdCommandWrite(0x06); //输入式设定 //自动增量,没有显示不移位 delay(20); LcdCommandWrite(0x0E); //显示设置 //开启显示屏,光标显示,无闪烁 delay(20); LcdCommandWrite(0x01); //屏幕清空,光标位置归零 delay(20); LcdCommandWrite(0x80); //显示设置 //开启显示屏,光标显示,无闪烁 delay(20); } void loop(void); { LedCommandWrite(0x01); delay(10); LedCommandWrite(0x80+3); dealy(10); //写入欢迎信息 LedCommandWrite(W); LedCommandWrite(e); LedCommandWrite(l); LedCommandWrite(c); LedCommandWrite(o); LedCommandWrite(m); LedCommandWrite(e); LedCommandWrite(); LedCommandWrite(t); LedCommandWrite(o); delay(10); LedCommandWrite(0xc0+1);//屏幕清空,光标位置归零 delay(10); LedDataWrite(g); LedDataWrite(e); LedDataWrite(e); LedDataWrite(k); LedDataWrite(-); LedDataWrite(w); LedDataWrite(o); LedDataWrite(r); LedDataWrite(k); LedDataWrite(s); LedDataWrite(h); LedDataWrite(0); LedDataWrite(p); delay(10); LcdCommandWrite(0x01); //屏幕清空,光标位置归零 delay(10); LedDataWrite(I); LedDataWrite(); LedDataWrite(s); LedDataWrite(m); LedDataWrite(); LedDataWrite(h); LedDataWrite(o); LedDataWrite(n); LedDataWrite(g); LedDataWrite(y); LedDataWrite(i); delay(3000); LcdCommandWrite(0x02); //设置模式为新文字替换老文字,无新文字的地方显示不变 delay(10); LcdCommandWrite(0x80+5); //定义光标的位置为第一行第六个位置 delay(10); LedDataWrite(t); LedDataWrite(h); LedDataWrite(e); LedDataWrite(); LedDataWrite(a); LedDataWrite(d); LedDataWrite(m); LedDataWrite(i); LedDataWrite(n); delay(5000); }
-