標(biāo)題:
Arduino DS3231 1602萬年歷源碼與視頻演示
[打印本頁]
作者:
0阿斯頓0
時間:
2018-10-15 00:12
標(biāo)題:
Arduino DS3231 1602萬年歷源碼與視頻演示
視頻演示:
0.png
(457.3 KB, 下載次數(shù): 64)
下載附件
2018-10-15 01:39 上傳
單片機(jī)源程序如下:
#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);//構(gòu)造函數(shù),創(chuàng)建一個LiquidCrystal的實(shí)例
/*************函數(shù)包裝***************/
void LcdCommandWrite(int value)
{
digitalWrite(12,LOW);//給12腳低電平 單片機(jī)發(fā)送指令
digitalWrite(11,LOW);//給11腳低電平 進(jìn)行寫操作
for(int i=3; i<=10;i++)//利用循環(huán)寫入數(shù)據(jù)
{
digitalWrite(i,value&01);//利用與運(yùn)算傳輸數(shù)據(jù)
value>>=1;//數(shù)據(jù)右移
}
/**************高電平轉(zhuǎn)低電平 液晶模塊執(zhí)行命令******************/
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);//設(shè)置秒
Clock.setMinute(24);//設(shè)置分鐘
Clock.setHour(22);//設(shè)置小時
Clock.setDoW(5);//設(shè)置星期幾
Clock.setDate(17);//設(shè)置日期
Clock.setMonth(8);//設(shè)置月份
Clock.setYear(18);//設(shè)置年份
delay(100);//延時
LcdCommandWrite(0x38);//8位 雙行顯示 5*7點(diǎn)陣
delay(20);//延時
}
/*****************函數(shù)打包*******************/
void LCD_SET_XY(int x,int y)//設(shè)置坐標(biāo)
{
int address;//定義
if(x==0)address = 0x80+y;//判斷 情況一
else address = 0xC0+y;//情況二
LcdCommandWrite(address);//函數(shù)調(diào)用
}
/*******************顯示時間************************/
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);//光標(biāo)移動到第一行第一列
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);//光標(biāo)移動到第一行第六列
if(month>=10)//判斷
{
lcd.print(month,DEC);//顯示月份
}
else
{
lcd.print("0");//顯示0
lcd.print(month,DEC);//顯示月份
}
lcd.print('-');//顯示-
lcd.setCursor(8,0);//光標(biāo)移動到第一行第九列
if(date>=10)//判斷
{
lcd.print(date,DEC);//顯示日期
}
else
{
lcd.print("0");//顯示0
lcd.print(date,DEC);//顯示日期
}
lcd.setCursor(11,0);//光標(biāo)移動到第一行第十二列
switch(dow)//選擇結(jié)構(gòu)
{
case 1:
lcd.print("Mon");//顯示Mon
break;//跳出
case 2:
lcd.print("Tue");//顯示Tue
break;//跳出
case 3:
lcd.print("Wed");//顯示W(wǎng)ed
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);//光標(biāo)移到第二行第一列
if (hour>=10)//判斷
{
lcd.print(hour,DEC);//顯示小時
}
else
{
lcd.print("0");//顯示0
lcd.print(hour,DEC);//顯示小時
}
lcd.print(':');//顯示:
LCD_SET_XY(1,3);//光標(biāo)移到第二行第四列
if (minute>=10)//判斷
{
lcd.print(minute,DEC);//顯示分鐘
}
else
{
lcd.print("0");//顯示0
lcd.print(minute,DEC);//顯示分鐘
}
lcd.print(':');//顯示:
LCD_SET_XY(1,6);//光標(biāo)移到第二行第七列
if (second>=10)//判斷
{
lcd.print(second,DEC);//顯示秒
}
else
{
lcd.print("0");//顯示0
lcd.print(second,DEC);//顯示秒
}
LCD_SET_XY(1,12);//光標(biāo)移到第二行第十三列
lcd.print(temperature);//顯示溫度
lcd.write(0xdf);//顯示溫度單位
lcd.print("C");//顯示C
}
void Tictime()
{
LCD_SET_XY(1,2);//光標(biāo)移到第二行第三列
lcd.print(' ');//顯示' '
LCD_SET_XY(1,5);//光標(biāo)移到第二行第六列
lcd.print(' ');//顯示' '
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long Rt=millis()%1000;
if(Rt<500)//每500ms閃爍一次
{
Pritime();
}
else
{
Tictime();
}
}
復(fù)制代碼
所有資料51hei提供下載:
萬年歷.rar
(5.46 MB, 下載次數(shù): 89)
2018-10-15 00:10 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2018-10-15 01:41
頭文件能分享下嗎?
作者:
0阿斯頓0
時間:
2018-10-15 03:08
admin 發(fā)表于 2018-10-15 01:41
頭文件能分享下嗎?
arduino的頭文件都是可以從編譯工具上下載的,應(yīng)該不需要分享吧。
作者:
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
能用大點(diǎn)的12864屏幕顯示就好了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1