Arduino due 1602液晶显示程序(鼓捣了三个小时终于成功了...)-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8163|回复: 4

Arduino due 1602液晶显示程序(鼓捣了三个小时终于成功了...)

[复制链接]
发表于 2013-2-22 11:06 | 显示全部楼层 |阅读模式
int VDD=53;
int VL=51;
int Enable = 45;
int BLA=27;
int BLK=25;

int DI = 49;
int RW = 47;
int DB[] = {43, 41, 39, 37, 35, 33, 31, 29};//使用数组来定义总线需要的管脚


void LcdCommandWrite(int value) {
// 定义所有引脚
int i = 0;
for (i=DB[0]; i >= DB[7]; i=i-2) //总线赋值
{
   digitalWrite(i,value & 01);//因为1602液晶信号识别是D7-D0(不是D0-D7),这里是用来反转信号。
   value >>= 1;
}
digitalWrite(RW,value & 01);
value>>=1;
digitalWrite(DI,value & 01);
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, LOW);
for (i=DB[0]; i >= DB[7]; i=i-2) {
   digitalWrite(i,value & 01);
   value >>= 1;
}
digitalWrite(Enable,LOW);
delayMicroseconds(1);
digitalWrite(Enable,HIGH);
delayMicroseconds(1);
digitalWrite(Enable,LOW);
delayMicroseconds(1);  // 延时1ms
}

void LcdDataWriteString(char *pData)
{
  while(*pData)
  {
    LcdDataWrite(*pData++);
  }
}


void setup (void) {
int i = 0;
for (i=BLK; i <= VDD; i=i+2) {
   pinMode(i,OUTPUT);
}
  digitalWrite(VDD,HIGH);
  digitalWrite(BLA,HIGH);
  digitalWrite(BLK,LOW);
  digitalWrite(VL,LOW);
delay(100);
// 短暂的停顿后初始化LCD
// 用于LCD控制需要
LcdCommandWrite(0x38);  // 设置为8-bit接口,2行显示,5x7文字大小                     
delay(64);                     
LcdCommandWrite(0x38);  // 设置为8-bit接口,2行显示,5x7文字大小                        
delay(50);                     
LcdCommandWrite(0x38);  // 设置为8-bit接口,2行显示,5x7文字大小                        
delay(20);                     
LcdCommandWrite(0x06);  // 输入方式设定
                         // 自动增量,没有显示移位
delay(20);                     
LcdCommandWrite(0x0E);  // 显示设置
                         // 开启显示屏,光标显示,无闪烁
delay(20);                     
LcdCommandWrite(0x01);  // 屏幕清空,光标位置归零  
delay(100);                     
LcdCommandWrite(0x80);  // 显示设置
                         // 开启显示屏,光标显示,无闪烁
delay(20);                     
}

void loop (void) {
  LcdCommandWrite(0x01);  // 屏幕清空,光标位置归零  
  delay(10);
  LcdCommandWrite(0x80+3);
  delay(10);                     
  // 写入欢迎信息
LcdDataWriteString("hello , world");
  delay(5000);
  LcdCommandWrite(0x01);  // 屏幕清空,光标位置归零  
  delay(10);
  LcdDataWriteString("I am lee");
  delay(3000);
}

发表于 2013-2-22 14:35 | 显示全部楼层
这么麻烦干啥,用库很简单
发表于 2013-2-22 20:32 | 显示全部楼层
用串口触屏多简单啊,有需要的联系我,软件界面交互可定制,QQ:469783402
 楼主| 发表于 2013-2-22 21:19 | 显示全部楼层
我也想用库来着,但现在不提供lcd库了,Arduino网站又出问题了
发表于 2013-2-26 12:57 | 显示全部楼层
J精神可嘉
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-27 22:56 , Processed in 0.092356 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表