求大神帮忙解释-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2886|回复: 3

求大神帮忙解释

[复制链接]
发表于 2013-7-15 17:36 | 显示全部楼层 |阅读模式
我是一个白鸟,这个程序是书上的一个LCD1602的简单实验,就是直接用Arduino控制LCD输出字。但是我连接好电路后,运行发现没反应,不知道是不是程序错了。麻烦大神帮忙解释一下红色字体的程序。顺便告诉我一下,程序有错吗?谢谢!!!

int LCD1602_RS=12;
int LCD1602_RW=11;
int LCD1602_EN=10;
int DB[]={6,7,8,9};
char str1[]="Welcome to";
char str2[]="geek-workshop";
char str3[]="this is the";
char str4[]="4-bit interface";
void LCD_Command_Write(int command)
{
  inti,temp;
digitalWrite(LCD1602_RS,LOW);
digitalWrite(LCD1602_RW,LOW);
digitalWrite(LCD1602_EN,LOW);
temp=command &0xf0;
for(i=DB[0];i<=9;i++)
{
  digitalWrite(i,temp & 0x80);
   temp<<=1;
}
digitalWrite(LCD1602_EN,HIGH);
delayMicroseconds(1);
digitalWrite(LCD1602_EN,LOW);
temp=(command &0x0f)<<4;
for(i=DB[0];i<=10;i++)
{
  digitalWrite(i,temp & 0x80);
   temp<<=1;
}
digitalWrite(LCD1602_EN,HIGH);
delayMicroseconds(1);
digitalWrite(LCD1602_EN,LOW);
}
void LCD_Data_Write(int dat)
{
  inti=0,temp;
digitalWrite(LCD1602_RS,HIGH);
digitalWrite(LCD1602_RW,LOW);
digitalWrite(LCD1602_EN,LOW);
temp=dat & 0xf0;
for(i=DB[0];i<=9;i++)
  {
   digitalWrite(i,temp & 0x80);
   temp<<=1;
  }
digitalWrite(LCD1602_EN,HIGH);
delayMicroseconds(1);
digitalWrite(LCD1602_EN,LOW);
  temp=(dat &0x0f)<<4;
for(i=DB[0];i<=10;i++)
  {
   digitalWrite(i,temp & 0x80);
   temp<<=1;
  }
digitalWrite(LCD1602_EN,HIGH);
delayMicroseconds(1);
digitalWrite(LCD1602_EN,LOW);
}
void LCD_SET_XY(int x,int y)
{
  intaddress;
if(y==0) address=0x80+x;
else address=0xc0+x;
   LCD_Command_Write(address);
}
void LCD_Write_Char(int x,int y,int dat)
{
LCD_SET_XY(x,y);
LCD_Data_Write(dat);
}
void LCD_Write_String(int X,int Y,char *s)
{
LCD_SET_XY(X,Y);
while(*s)
  {
   LCD_Data_Write(*s);
   s++;
  }
}
void setup(void)
{
  inti=0;
for(i=6;i<=12;i++)
  {
   pinMode(i,OUTPUT);
  }
delay(100);
LCD_Command_Write(0x28);
delay(50);
LCD_Command_Write(0x06);
delay(50);
   LCD_Command_Write(0x0c);
  delay(50);
   LCD_Command_Write(0x80);
   delay(50);
    LCD_Command_Write(0x01);
    delay(50);
}
void loop(void)
{
LCD_Command_Write(0x01);
delay(50);
LCD_Write_String(3,0,str1);
delay(50);
LCD_Write_String(1,1,str2);
delay(5000);
LCD_Command_Write(0x01);
delay(50);
LCD_Write_String(0,0,str3);
delay(50);
LCD_Write_String(0,1,str4);
delay(5000);
}

发表于 2013-7-15 19:32 | 显示全部楼层
你贴的这个程序太古老了,新的方法见  示例中 LiquidCrystal 类库的例程
 楼主| 发表于 2013-7-16 20:28 | 显示全部楼层
奈何col 发表于 2013-7-15 19:32
你贴的这个程序太古老了,新的方法见  示例中 LiquidCrystal 类库的例程

那你说的那个示例在哪里啊?
发表于 2013-7-16 21:00 | 显示全部楼层
IDE文件菜单》示例程序。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-29 07:25 , Processed in 0.070783 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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