标题:
Arduino DS3231 1602万年历源码与视频演示
[打印本页]
作者:
0阿斯顿0
时间:
2018-10-15 00:12
标题:
Arduino DS3231 1602万年历源码与视频演示
视频演示:
0.png
(457.3 KB, 下载次数: 64)
下载附件
2018-10-15 01:39 上传
单片机源程序如下:
#include <LiquidCrystal.h>//文件包含
#include <DS3231.h>//文件包含
#include <Wire.h>//文件包含
/***********定义**********/
DS3231 Clock;
bool Century = false;
bool h12;
bool PM;
byte year,month,date,DoW,hour,minute,second;
LiquidCrystal lcd(12,11,2,3,4,5,6,7,8,9,10);//构造函数,创建一个LiquidCrystal的实例
/*************函数包装***************/
void LcdCommandWrite(int value)
{
digitalWrite(12,LOW);//给12脚低电平 单片机发送指令
digitalWrite(11,LOW);//给11脚低电平 进行写操作
for(int i=3; i<=10;i++)//利用循环写入数据
{
digitalWrite(i,value&01);//利用与运算传输数据
value>>=1;//数据右移
}
/**************高电平转低电平 液晶模块执行命令******************/
digitalWrite(2,LOW);//给2脚低电平
delayMicroseconds(1);//使程序暂停指定的一段时间(单位:微秒)
digitalWrite(2,HIGH);//给2脚高电平
delayMicroseconds(1);//使程序暂停指定的一段时间(单位:微秒)
digitalWrite(2,LOW);//给2脚低电平
delayMicroseconds(1);//使程序暂停指定的一段时间(单位:微秒)
}
/****************************************************************/
void setup() {
// put your setup code here, to run once:
Wire.begin();//启动I2C(IIC)
Clock.setSecond(0);//设置秒
Clock.setMinute(24);//设置分钟
Clock.setHour(22);//设置小时
Clock.setDoW(5);//设置星期几
Clock.setDate(17);//设置日期
Clock.setMonth(8);//设置月份
Clock.setYear(18);//设置年份
delay(100);//延时
LcdCommandWrite(0x38);//8位 双行显示 5*7点阵
delay(20);//延时
}
/*****************函数打包*******************/
void LCD_SET_XY(int x,int y)//设置坐标
{
int address;//定义
if(x==0)address = 0x80+y;//判断 情况一
else address = 0xC0+y;//情况二
LcdCommandWrite(address);//函数调用
}
/*******************显示时间************************/
void Pritime()
{
int second,minute,hour,data,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");//显示20
if(year>=10)//判断
{
lcd.print(year,DEC);//显示年份
}
else
{
lcd.print("0");//显示0
lcd.print(year,DEC);//显示年份
}
lcd.print('-');//显示-
lcd.setCursor(5,0);//光标移动到第一行第六列
if(month>=10)//判断
{
lcd.print(month,DEC);//显示月份
}
else
{
lcd.print("0");//显示0
lcd.print(month,DEC);//显示月份
}
lcd.print('-');//显示-
lcd.setCursor(8,0);//光标移动到第一行第九列
if(date>=10)//判断
{
lcd.print(date,DEC);//显示日期
}
else
{
lcd.print("0");//显示0
lcd.print(date,DEC);//显示日期
}
lcd.setCursor(11,0);//光标移动到第一行第十二列
switch(dow)//选择结构
{
case 1:
lcd.print("Mon");//显示Mon
break;//跳出
case 2:
lcd.print("Tue");//显示Tue
break;//跳出
case 3:
lcd.print("Wed");//显示Wed
break;//跳出
case 4:
lcd.print("Thu");//显示Thu
break; //跳出
case 5:
lcd.print("Fri");//显示Fri
break; // 跳出
case 6:
lcd.print("Sat");//显示Sat
break; //跳出
case 7:
lcd.print("Sun");//显示Sun
break; //跳出
}
LCD_SET_XY(1,0);//光标移到第二行第一列
if (hour>=10)//判断
{
lcd.print(hour,DEC);//显示小时
}
else
{
lcd.print("0");//显示0
lcd.print(hour,DEC);//显示小时
}
lcd.print(':');//显示:
LCD_SET_XY(1,3);//光标移到第二行第四列
if (minute>=10)//判断
{
lcd.print(minute,DEC);//显示分钟
}
else
{
lcd.print("0");//显示0
lcd.print(minute,DEC);//显示分钟
}
lcd.print(':');//显示:
LCD_SET_XY(1,6);//光标移到第二行第七列
if (second>=10)//判断
{
lcd.print(second,DEC);//显示秒
}
else
{
lcd.print("0");//显示0
lcd.print(second,DEC);//显示秒
}
LCD_SET_XY(1,12);//光标移到第二行第十三列
lcd.print(temperature);//显示温度
lcd.write(0xdf);//显示温度单位
lcd.print("C");//显示C
}
void Tictime()
{
LCD_SET_XY(1,2);//光标移到第二行第三列
lcd.print(' ');//显示' '
LCD_SET_XY(1,5);//光标移到第二行第六列
lcd.print(' ');//显示' '
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long Rt=millis()%1000;
if(Rt<500)//每500ms闪烁一次
{
Pritime();
}
else
{
Tictime();
}
}
复制代码
所有资料51hei提供下载:
万年历.rar
(5.46 MB, 下载次数: 89)
2018-10-15 00:10 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2018-10-15 01:41
头文件能分享下吗?
作者:
0阿斯顿0
时间:
2018-10-15 03:08
admin 发表于 2018-10-15 01:41
头文件能分享下吗?
arduino的头文件都是可以从编译工具上下载的,应该不需要分享吧。
作者:
jemery1030
时间:
2020-10-14 08:19
arduino做萬年曆比較少,很棒,我收藏囉。
作者:
18212609409
时间:
2020-10-23 13:25
大神!有没有原理图或者电路图,元器件列表什么的一看就懂的,小白路过!!!
作者:
carlson-chuo
时间:
2020-11-14 19:17
感謝大神分享,收藏。
作者:
yun89708
时间:
2024-7-25 20:52
能用大点的12864屏幕显示就好了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1