用NANO,LED1602显示DS3231时钟为什么显示不出来第二行-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1993|回复: 9

[未解决] 用NANO,LED1602显示DS3231时钟为什么显示不出来第二行

[复制链接]
发表于 2020-12-23 13:44 | 显示全部楼层 |阅读模式
#include <Wire.h>
#include <DS3231.h>
#include <LiquidCrystal.h>


DS3231 Clock;
bool h12,PM,Century=false;
byte year,month,date,DoW,hour,minute,second;
LiquidCrystal lcd(12,3,7,8,9,10);


void setup() {
  Wire.begin();
  Clock.setSecond(50);
  Clock.setMinute(59);
  Clock.setHour(11);
  Clock.setDoW(5);
  Clock.setDate(31);
  Clock.setMonth(5);
  Clock.setYear(13);

}
void Pritime()
{
  int second,minute,hour,date,month,year,dow,temperature;
  second=Clock.getSecond();
  minute=Clock.getMinute();
  hour=Clock.getHour(h12,PM);
  date=Clock.getDate();
  month=Clock.getMonth(Century);
  year=Clock.getYear();
  dow=Clock.getDoW();
  temperature=Clock.getTemperature();
  lcd.setCursor(0,0);
  lcd.print("20");
  if(year>=10)
  {
    lcd.print(year,DEC);
  }
  else
  {
    lcd.print("0");
    lcd.print(year,DEC);
  }
  lcd.print('-');
  lcd.setCursor(5,0);
  if (month>=10)
  {
    lcd.print(month,DEC);
  }
  else
  {
    lcd.print("0");
    lcd.print(month,DEC);

  }
  lcd.print('-');
  lcd.setCursor(8,0);
  if(date>=10)
  {
    lcd.print(date,DEC);
  }
  else
  {
    lcd.print("0");
    lcd.print(date,DEC);
  }
lcd.setCursor(11,0);
switch (dow)
{
  case 1:
  lcd.print("Mon");
  break;
  case2:
  lcd.print("Tue");
  break;
  case 3:
  lcd.print("Wed");
  break;
  case 4:
  lcd.print("Thu");
  break;
  case 5:
  lcd.print("Fri");
  break;
  case 6:
  lcd.print("Sat");
  break;
  case 7:
  lcd.print("Sun");
  break;
}
lcd.setCursor(1,0);
if (hour>=10)
{
  lcd.print(hour,DEC);
}
else
{
  lcd.print("0");
  lcd.print(hour,DEC);
}
lcd.print(':');
lcd.setCursor(1,3);
if(minute>=10)
{
  lcd.print(minute,DEC);
}
else
{
  lcd.print("0");
  lcd.print(minute,DEC);
}
lcd.print(':');
lcd.setCursor(1,6);
if(second>=10)
{
  lcd.print(second,DEC);
}
else
{
  lcd.print("0");
  lcd.print(second,DEC);
}
lcd.setCursor(1,12);
lcd.print(temperature);
lcd.write(0xdf);
lcd.print("C");

}

void Tictime() {
  lcd.setCursor(1,2);
  lcd.print(' ');
  lcd.setCursor(1,5);
  lcd.print(' ');


}

void loop()
{  Serial.print('a');
  unsigned long Rt=millis()%1000;
  if(Rt<500)
  {
    Pritime();

  }
  else
  {
    Tictime();
  }
}
而且前边几个格位一直再闪最近刚刚接触ARDUINO不太上手感谢大神指导
7ed60250705e88336042e4c4f282e17.jpg
发表于 2020-12-23 15:40 | 显示全部楼层
lcd.setCursor(x, 0);第一行,lcd.setCursor(y, 1);第二行.
 楼主| 发表于 2020-12-24 10:40 | 显示全部楼层
lwq1947 发表于 2020-12-23 15:40
lcd.setCursor(x, 0);第一行,lcd.setCursor(y, 1);第二行.

#include <Wire.h>
#include <DS3231.h>
#include <LiquidCrystal.h>


DS3231 Clock;
bool h12,PM,Century=false;
byte year,month,date,DoW,hour,minute,second;
LiquidCrystal lcd(12,3,7,8,9,10);


void setup() {
  Wire.begin();
  Clock.setSecond(50);
  Clock.setMinute(59);
  Clock.setHour(11);
  Clock.setDoW(5);
  Clock.setDate(31);
  Clock.setMonth(5);
  Clock.setYear(13);

}
void Pritime()
{
  int second,minute,hour,date,month,year,dow,temperature;
  second=Clock.getSecond();
  minute=Clock.getMinute();
  hour=Clock.getHour(h12,PM);
  date=Clock.getDate();
  month=Clock.getMonth(Century);
  year=Clock.getYear();
  dow=Clock.getDoW();
  temperature=Clock.getTemperature();
  lcd.setCursor(0,0);
  lcd.print("20");
  if(year>=10)
  {
    lcd.print(year,DEC);
  }
  else
  {
    lcd.print("0");
    lcd.print(year,DEC);
  }
  lcd.print('-');
  lcd.setCursor(5,0);
  if (month>=10)
  {
    lcd.print(month,DEC);
  }
  else
  {
    lcd.print("0");
    lcd.print(month,DEC);
   
  }
  lcd.print('-');
  lcd.setCursor(8,0);
  if(date>=10)
  {
    lcd.print(date,DEC);
  }
  else
  {
    lcd.print("0");
    lcd.print(date,DEC);
  }
lcd.setCursor(11,0);
switch (dow)
{
  case 1:
  lcd.print("Mon");
  break;
  case2:
  lcd.print("Tue");
  break;
  case 3:
  lcd.print("Wed");
  break;
  case 4:
  lcd.print("Thu");
  break;
  case 5:
  lcd.print("Fri");
  break;
  case 6:
  lcd.print("Sat");
  break;
  case 7:
  lcd.print("Sun");
  break;
}
lcd.setCursor(0,1);
if (hour>=10)
{
  lcd.print(hour,DEC);
}
else
{
  lcd.print("0");
  lcd.print(hour,DEC);
}
lcd.print(':');
lcd.setCursor(3,1);
if(minute>=10)
{
  lcd.print(minute,DEC);
}
else
{
  lcd.print("0");
  lcd.print(minute,DEC);
}
lcd.print(':');
lcd.setCursor(6,1);
if(second>=10)
{
  lcd.print(second,DEC);
}
else
{
  lcd.print("0");
  lcd.print(second,DEC);
}
lcd.setCursor(12,1);
lcd.print(temperature);
lcd.write(0xdf);
lcd.print("C");

}

void Tictime() {
  lcd.setCursor(2,1);
  lcd.print(' ');
  lcd.setCursor(5,1);
  lcd.print(' ');

  
}

void loop()
{  
  unsigned long Rt=millis()%1000;
  if(Rt<500)
  {
    Pritime();
   
  }
  else
  {
    Tictime();
  }
}
]改了这样后为什么上传总是出错
发表于 2020-12-24 12:19 | 显示全部楼层
本帖最后由 lwq1947 于 2020-12-24 12:32 编辑
yangfan1 发表于 2020-12-24 10:40
#include
#include
#include

你的程序可以上传到我的NANO板上.看看贴子https://www.arduino.cn/thread-99762-1-1.html
 楼主| 发表于 2020-12-25 16:32 | 显示全部楼层
lwq1947 发表于 2020-12-24 12:19
你的程序可以上传到我的NANO板上.看看贴子https://www.arduino.cn/thread-99762-1-1.html ...

上传成功了,可还是老样子,是不是程序的问题
发表于 2020-12-25 16:46 | 显示全部楼层
yangfan1 发表于 2020-12-25 16:32
上传成功了,可还是老样子,是不是程序的问题

setup 函数里加一行:

lcd.begin(16, 2);
发表于 2020-12-25 19:56 | 显示全部楼层
本帖最后由 lwq1947 于 2020-12-25 19:58 编辑
yangfan1 发表于 2020-12-25 16:32
上传成功了,可还是老样子,是不是程序的问题

楼上说的对,要加lcd.begin(16, 2);
 楼主| 发表于 2020-12-26 08:06 | 显示全部楼层
t3486784401 发表于 2020-12-25 16:46
setup 函数里加一行:

lcd.begin(16, 2);

哦哦,可以了。感谢感谢
 楼主| 发表于 2020-12-26 08:08 | 显示全部楼层
lwq1947 发表于 2020-12-25 19:56
楼上说的对,要加lcd.begin(16, 2);

哦哦,可以了。感谢感谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-29 16:27 , Processed in 0.100128 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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