Arduino简单数字时钟

上传人:ji****72 文档编号:37503399 上传时间:2018-04-17 格式:DOCX 页数:6 大小:13.47KB
返回 下载 相关 举报
Arduino简单数字时钟_第1页
第1页 / 共6页
Arduino简单数字时钟_第2页
第2页 / 共6页
Arduino简单数字时钟_第3页
第3页 / 共6页
Arduino简单数字时钟_第4页
第4页 / 共6页
Arduino简单数字时钟_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《Arduino简单数字时钟》由会员分享,可在线阅读,更多相关《Arduino简单数字时钟(6页珍藏版)》请在金锄头文库上搜索。

1、显示时间原理:使用 arduino 的 mills()函数,其功能是获取系统运行的时间长度,通过运行的秒数计算分、时、进而计算天、月、年程序如下:/* * LCD RS pin to digital pin 12* LCD Enable pin to digital pin 11* LCD D4 pin to digital pin 5* LCD D5 pin to digital pin 4* LCD D6 pin to digital pin 3* LCD D7 pin to digital pin 2* LCD R/W pin to ground* LCD VSS pin to grou

2、nd* LCD VCC pin to 5V */#include /LCD1602 显示头文件LiquidCrystal lcd(12, 11, 5, 4, 3, 2); unsigned long seconds;int s = 0, m = 0, h = 0, d = 0, mon = 0, y = 0; /时间进位int second = 0, minute = 0, hour = 0, day = 0, month = 0, year = 0; /当前时间int SECOND = 0, MINUTE = 0, HOUR = 0, DAY = 0, MONTH = 0, YEAR = 0

3、; /初始时间void setup() lcd.begin(16, 2); lcd.setCursor(2, 1); lcd.print(“:“); lcd.setCursor(5, 1); lcd.print(“:“); lcd.setCursor(4, 0); lcd.print(-); lcd.setCursor(7, 0); lcd.print(-); for(int i = 2;i = 13; i+) pinMode(i,OUTPUT); set(2015,5,15,22,19,32); /设置初始时间void FormatDisplay(int col, int row,int n

4、um) /格式化输出lcd.setCursor(col, row); if(num 10) lcd.print(“0“);lcd.print(num); void time() /计算时间 second = ( SECOND + seconds ) % 60; /计算秒m = ( SECOND + seconds ) / 60; /分钟进位FormatDisplay(6,1,second);minute = ( MINUTE + m ) % 60; /计算分钟h = ( MINUTE + m ) / 60; /小时进位FormatDisplay(3,1,minute); hour = ( HO

5、UR + h ) % 24; /计算小时d = ( HOUR + h ) / 24; /天数进位FormatDisplay(0,1,hour); int Days(int year, int month) /根据年月计算当月天数int days = 0;if (month != 2) switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break;case 4: case 6: case 9: case 11: days = 30; break; else /闰年if (year

6、 % 4 = 0 else days = 28; return days; void Day() /计算当月天数 int days = Days(year,month);int days_up;if( month = 1 ) days_up = Days( year - 1, 12 ); else days_up = Days( year, month - 1 );day = ( DAY + d ) % days;if( day = 0 ) day = days; if( ( DAY + d ) = days + 1 )DAY -= days;mon+;if( DAY + d ) = 0)DA

7、Y += days_up;mon-;FormatDisplay(8,0,day); void Month() /计算月份 month = ( MONTH + mon ) % 12;if( month = 0 ) month = 12;y = ( MONTH + mon - 1) / 12;FormatDisplay(5,0,month); void Year() /计算年份 year = ( YEAR + y ) % 9999;if( year = 0 ) year = 9999;lcd.setCursor(0, 0); if(year 1000) lcd.print(“0“); if(yea

8、r 100) lcd.print(“0“); if(year 10) lcd.print(“0“); lcd.print(year);void Week(int y,int m, int d) /根据年月日计算星期几 if(m=1) m=13;if(m=2) m=14;int week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1; String weekstr=“;switch(week)case 1: weekstr=“Mon. “; break;case 2: weekstr=“Tues. “; break;case 3: weekstr=“Wed. “

9、; break;case 4: weekstr=“Thur. “; break;case 5: weekstr=“Fri. “; break;case 6: weekstr=“Sat. “; break;case 7: weekstr=“Sun. “; break; lcd.setCursor(11, 0); lcd.print(weekstr);void set(int y, int mon, int d, int h, int m, int s)YEAR = y;MONTH = mon;DAY = d; HOUR = h;MINUTE = m;SECOND = s; void Display() /显示时间、日期、星期 time();Day(); Month();Year();Week(year,month,day); void loop() seconds = millis()/1000; Display();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号