|
視頻演示:
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)建一個(gè)LiquidCrystal的實(shí)例
- /*************函數(shù)包裝***************/
- void LcdCommandWrite(int value)
- {
- digitalWrite(12,LOW);//給12腳低電平 單片機(jī)發(fā)送指令
- digitalWrite(11,LOW);//給11腳低電平 進(jìn)行寫(xiě)操作
- for(int i=3; i<=10;i++)//利用循環(huán)寫(xiě)入數(shù)據(jù)
- {
- digitalWrite(i,value&01);//利用與運(yùn)算傳輸數(shù)據(jù)
- value>>=1;//數(shù)據(jù)右移
- }
- /**************高電平轉(zhuǎn)低電平 液晶模塊執(zhí)行命令******************/
- digitalWrite(2,LOW);//給2腳低電平
- delayMicroseconds(1);//使程序暫停指定的一段時(shí)間(單位:微秒)
- digitalWrite(2,HIGH);//給2腳高電平
- delayMicroseconds(1);//使程序暫停指定的一段時(shí)間(單位:微秒)
- digitalWrite(2,LOW);//給2腳低電平
- delayMicroseconds(1);//使程序暫停指定的一段時(shí)間(單位:微秒)
- }
- /****************************************************************/
- void setup() {
- // put your setup code here, to run once:
- Wire.begin();//啟動(dòng)I2C(IIC)
- Clock.setSecond(0);//設(shè)置秒
- Clock.setMinute(24);//設(shè)置分鐘
- Clock.setHour(22);//設(shè)置小時(shí)
- Clock.setDoW(5);//設(shè)置星期幾
- Clock.setDate(17);//設(shè)置日期
- Clock.setMonth(8);//設(shè)置月份
- Clock.setYear(18);//設(shè)置年份
- delay(100);//延時(shí)
- LcdCommandWrite(0x38);//8位 雙行顯示 5*7點(diǎn)陣
- delay(20);//延時(shí)
- }
- /*****************函數(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)用
- }
- /*******************顯示時(shí)間************************/
- void Pritime()
- {
- int second,minute,hour,data,month,year,dow,temperature;//定義
- second=Clock.getSecond();//返回時(shí)間的秒
- minute=Clock.getMinute();//返回時(shí)間的分鐘
- hour=Clock.getHour(h12,PM);//返回時(shí)間的小時(shí)
- date=Clock.getDate();//返回時(shí)間的日期
- month=Clock.getMonth(Century);//返回時(shí)間的月份
- year=Clock.getYear();//返回時(shí)間的年份
- dow=Clock.getDoW();//返回時(shí)間的星期
- temperature=Clock.getTemperature();//溫度的返回值
- lcd.setCursor(0,0);//光標(biāo)移動(dòng)到第一行第一列
- 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)移動(dòng)到第一行第六列
- if(month>=10)//判斷
- {
- lcd.print(month,DEC);//顯示月份
- }
- else
- {
- lcd.print("0");//顯示0
- lcd.print(month,DEC);//顯示月份
- }
- lcd.print('-');//顯示-
- lcd.setCursor(8,0);//光標(biāo)移動(dòng)到第一行第九列
- if(date>=10)//判斷
- {
- lcd.print(date,DEC);//顯示日期
- }
- else
- {
- lcd.print("0");//顯示0
- lcd.print(date,DEC);//顯示日期
- }
- lcd.setCursor(11,0);//光標(biāo)移動(dòng)到第一行第十二列
- 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);//顯示小時(shí)
- }
- else
- {
- lcd.print("0");//顯示0
- lcd.print(hour,DEC);//顯示小時(shí)
- }
- 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提供下載:
萬(wàn)年歷.rar
(5.46 MB, 下載次數(shù): 89)
2018-10-15 00:10 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|