功能:陽歷+陰歷+星期+鬧鐘+多點溫度無線傳輸+紅外+掉電走時
0.png (10.03 KB, 下載次數: 18)
下載附件
2019-2-21 03:30 上傳
單片機源程序如下:
- #include <reg52.h>
- #include "12864B.h"
- #include "ds1302.h"
- #include "DS18B20.h"
- #include"NRF2401.h"
- #include "delay.h"
- #include "clock.h"
- #include "ziku.h"
- #include "gongli.h"
- extern uchar week_value[2];
- extern char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; //秒,分,時到日,月,年位閃的計數
- extern unsigned char hi_sec,hi_min,hi_hour,hi_day,hi_month;
- extern unsigned char clock_shi,clock_fen,clock_miao,clock_month,clock_day; //鬧鐘秒,分,時到日,月,年位閃的計數
- extern bit flag2;
- extern CLOCKTIME clock_time;
- unsigned char count,count1,temp,flag,up_flag,down_flag,shi,fen,miao,week,day,month,year;
- unsigned char IrValue[6];
- unsigned char Time;
- bit done,flag1,flag2;
- SYSTEMTIME CurrentTime;
- sbit clock_Set=P2^3;
- sbit Set = P2^4; //功能按鍵
- sbit Up = P2^2; //加法按鈕
- sbit Down = P2^0; //減法按鈕
- sbit Out = P2^1; //立刻跳出調整模式按鈕
- sbit Beep = P1^5; //蜂鳴器
- sbit IRIN = P3^2; //紅外
- void Setkey();
- void timer0_1()
- {
- TMOD=0x01; //設置定時器0為工作方式1
- TH0 = (65536 - 45872)/256; //裝初值
- TL0 = (65536 - 45872)%256;
- EA=1; //開總中斷
- ET0=1; //開定時器0中斷
- TR0=1; //啟動定時器0
- }
- void show_time() //液晶顯示程序
- {
- DS1302_GetTime(&CurrentTime); //獲取時鐘芯片的時間數據
- TimeToStr(&CurrentTime); //時間數據轉換液晶字符
- DateToStr(&CurrentTime); //日期數據轉換液晶字符
- LCD12864_SetWindow(2,0); //設置顯示坐標
- Print(CurrentTime.TimeString); //顯示時間
- LCD12864_SetWindow(0,1);
- Print(CurrentTime.DateString); //顯示日期
- LCD12864_SetWindow(2,7);
- change(); //顯示星期幾
- lcm_w_nl(); //農歷顯示
-
- Delay10ms(5); //掃描延時
- }
- void outkey() //跳出調整模式,返回默認顯示
- {
- uchar Second;
- if(Out==0)
- {
- mdelay(8);
- if(Out==0)
- {
- if(flag1==0)
- {
- count=0;
- flag1=0;
- hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0;
- Second=Read1302(DS1302_SECOND);
- Write1302(0x8e,0x00); //寫入允許
- Write1302(0x80,Second&0x7f); //啟動計時
- Write1302(0x8E,0x80); //禁止寫入
- done=0;
- }
- else
- {
- count1=0;flag2=0;flag1=0;done=0;
- hi_sec=0,hi_min=0,hi_hour=0,hi_day=0,hi_month=0;
- LCD12864_WriteCmd(0x30);
- LCD12864_WriteCmd(0x01); //清屏命令
- LCD12864_WriteCmd(0x34); //擴展模式命令,關顯示
- gui_line(72,32,72,48); //內部線框
- gui_line(0,15,127,15);
- gui_line(0,32,127,32);
- gui_line(0,48,127,48);
- gui_line(62,48,62,63);
-
- gui_line(0,0,127,0); //四周線框
- gui_line(0,1,0,63);
- gui_line(0,63,127,63);
- gui_line(127,0,127,63);
- GUI_Put_Area(81,33,&uMod[0][0],16,14,0); //固定顯示“星”
- GUI_Put_Area(96,33,&uMod[1][0],16,14,0); //固定顯示“期”
- GUI_Put_Area(3,18,&uMod[2][0],16,12,0); //固定顯示“農”
- GUI_Put_Area(19,18,&uMod[3][0],16,12,0); //固定顯示“歷”
- LCD12864_WriteCmd(0x36); //開顯示
- LCD12864_WriteCmd(0x30); //基本模式命令
- }
- }
- while(Out==0);
- }
- }
- void Upkey() //升序按鍵
- {
- if(Up==0)
- {
- mdelay(8);
- if(Up==0)
- {
- if(flag1==0)
- {
- switch(count)
- {
- case 1:
- DS1302_change(0x81,&miao); //讀取DS1302秒地址的數據給miao
- miao=miao+1;
- if(miao>=60)
- miao=0;
- down_flag=1;
- break;
- case 2:
- DS1302_change(0x83,&fen); //讀取DS1302分地址的數據給fen
- fen=fen+1;
- if(fen>=60)
- fen=0;
- down_flag=1;
- break;
- case 3:
- DS1302_change(0x85,&shi);
- shi=shi+1;
- if(shi>=24)
- shi=0;
- down_flag=1;
- break;
-
- case 4:
- DS1302_change(0x87,&day);
- DS1302_change(0x89,&month);
- day=day+1;
- if(day==31&&((month==4)||(month==6)||(month==9)||(month==11)))
- day=1;
- if(day==30&&(month==2))
- day=1;
- if(day==32&&((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12)))
- day=1;
- down_flag=1;
- break;
- case 5:
- DS1302_change(0x89,&month);
- month=month+1;
- if(month==13)
- month=1;
- down_flag=1;
- break;
- case 6:
- DS1302_change(0x8d,&year);
- year=year+1;
- if(year==100)
- year=0;
- down_flag=1;
- break;
- default: break;
- }
- }
- else
- {
- switch(count1)
- {
- case 1:
- clock_miao=clock_miao+1; //鬧鐘的秒加1
- if(clock_miao>=60)
- clock_miao=0;
- break;
- case 2:
- clock_fen=clock_fen+1;
- if(clock_fen>=60)
- clock_fen=0;
- break;
- case 3:
- clock_shi=clock_shi+1;
- if(clock_shi>=24)
- clock_shi=0;
- break;
- case 4:
- clock_day=clock_day+1;
- if(clock_day==31&&((clock_month==4)||(clock_month==6)||(clock_month==9)||(clock_month==11)))
- clock_day=1;
- if(clock_day==30&&(clock_month==2))
- clock_day=1;
- if(clock_day==32&&((clock_month==1)||(clock_month==3)||(clock_month==5)||(clock_month==7)||(clock_month==8)||(clock_month==10)||(clock_month==12)))
- clock_day=1;
- break;
- case 5:
- clock_month=clock_month+1;
- if(clock_month==13)
- clock_month=1;
- break;
- default: break;
- }
- }
- }
- while(Up==0);
- }
- }
- void Downkey() //降序按鍵
- {
- if(Down==0)
- {
- mdelay(8);
- if(Down==0)
- {
- if(flag1==0)
- {
- switch(count)
- {
- case 1:
- DS1302_change(0x81,&miao);
- miao=miao-1;
- if(miao==-1)
- miao=59;
- down_flag=1;
- break;
- case 2:
- DS1302_change(0x83,&fen);
- fen=fen-1;
- if(fen==-1)
- fen=59;
- down_flag=1;
- break;
- case 3:
- DS1302_change(0x85,&shi);
- shi=shi-1;
- if(shi==-1)
- shi=23;
- down_flag=1;
- break;
-
- case 4:
- DS1302_change(0x87,&day);
- DS1302_change(0x89,&month);
- day=day-1;
- if(day==0&&((month==4)||(month==6)||(month==9)||(month==11)))
- day=30;
- if(day==0&&(month==2))
- day=29;
- if(day==0&&((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12)))
- day=31;
- down_flag=1;
- break;
- case 5:
- DS1302_change(0x89,&month);
- month=month-1;
- if(month==0)
- month=12;
- down_flag=1;
- break;
- case 6:
- DS1302_change(0x8d,&year);
- year=year-1;
- if(year==-1)
- year=99;
- down_flag=1;
- break;
- default: break;
- }
- }
- else
- {
- switch(count1)
- {
- case 1:
- clock_miao=clock_miao-1; //鬧鐘秒減1
- if(clock_miao==-1)
- clock_miao=59;
- break;
- case 2:
- clock_fen=clock_fen-1;
- if(clock_fen==-1)
- clock_fen=59;
- break;
- case 3:
- clock_shi=clock_shi-1;
- if(clock_shi==-1)
- clock_shi=23;
- break;
- case 4:
- clock_day=clock_day-1;
- if(clock_day==0&&((clock_month==4)||(clock_month==6)||(clock_month==9)||(clock_month==11)))
- clock_day=30;
- if(clock_day==0&&(clock_month==2))
- clock_day=29;
- if(clock_day==0&&((clock_month==1)||(clock_month==3)||(clock_month==5)||(clock_month==7)||(clock_month==8)||(clock_month==10)||(clock_month==12)))
- clock_day=31;
- break;
- case 5:
- clock_month=clock_month-1;
- if(clock_month==0)
- clock_month=12;
- break;
- default: break;
- }
- }
- }
- while(Down==0);
- }
- }
- void keydone() //按鍵功能執行
- {
- if(flag1==0)
- {
- uchar Second;
- if(flag==0) //關閉時鐘,停止計時
- {
- DS1302_SetProtect(0); //寫入允許
- temp=Read1302(0x81); //將秒地址的數據讀出來
- Write1302(0x80,temp|0x80); //停止計時,秒寄存器最高位為1時停止計時
- DS1302_SetProtect(1); //禁止寫入
- flag=1;
- }
- Setkey(); //掃描模式切換按鍵
- switch(count)
- {
- case 1: //count=1,調整秒
- do
- {
- outkey(); //掃描跳出按鈕
- Upkey(); //掃描加按鈕
- Downkey(); //掃描減按鈕
- if(up_flag==1||down_flag==1) //數據更新,重新寫入新的數據
- {
- DS1302_SetProtect(0); //寫入允許
- DS1302_SetTime1(DS1302_SECOND,miao); //將新的時間寫入
- DS1302_SetProtect(1); //禁止寫入
- up_flag=0;
- down_flag=0;
- }
- hide_sec++; //位閃計數
- if(hide_sec>3)
- hide_sec=0;
- show_time(); //液晶顯示數據
- }
- while(count==2); //count=2,調整分
- break;
- case 2:
- do
- {
- hide_sec=0;
- outkey();
- Upkey();
- Downkey();
- if(up_flag==1||down_flag==1)
- {
- DS1302_SetProtect(0); //寫入允許
- DS1302_SetTime(DS1302_MINUTE,fen);
- DS1302_SetProtect(1); //禁止寫入
- up_flag=0;
- down_flag=0;
- }
- hide_min++;
- if(hide_min>3)
- hide_min=0;
- show_time();
- }
- while(count==3); //count=3,調整小時
- break;
- case 3:
- do
- {
- hide_min=0;
- outkey();
- Upkey();
- Downkey();
- if(up_flag==1||down_flag==1)
- {
- DS1302_SetProtect(0); //寫入允許
- DS1302_SetTime(DS1302_HOUR,shi);
- DS1302_SetProtect(1); //禁止寫入
- up_flag=0;
- down_flag=0;
- }
- hide_hour++;
- if(hide_hour>3)
- hide_hour=0;
- show_time();
- }
- while(count==4);
- break;
- case 4:
- do //count=5,調整日
- {
- hide_week=0;
- outkey();
- Upkey();
- Downkey();
- if(up_flag==1||down_flag==1)
- {
- DS1302_SetProtect(0); //寫入允許
- DS1302_SetTime(DS1302_DAY,day);
- DS1302_SetProtect(1); //寫入禁止
- up_flag=0;
- down_flag=0;
- }
- hide_day++;
- if(hide_day>3)
- hide_day=0;
- show_time();
- }
- while(count==6); //count=6,調整月
- break;
- case 5:
- do
- {
- hide_day=0;
- outkey();
- Upkey();
- Downkey();
- if(up_flag==1||down_flag==1)
- {
- DS1302_SetProtect(0); //寫入允許
- DS1302_SetTime(DS1302_MONTH,month);
- DS1302_SetProtect(1); //禁止寫入
- up_flag=0;
- down_flag=0;
- }
- hide_month++;
- if(hide_month>3)
- hide_month=0;
- show_time();
- }
- while(count==7); //count=7,調整年
- break;
- case 6:
- do
- {
- hide_month=0;
- outkey();
- Upkey();
- Downkey();
- if(up_flag==1||down_flag==1)
- {
- DS1302_SetProtect(0); //寫入允許
- DS1302_SetTime(DS1302_YEAR,year);
- DS1302_SetProtect(1);
- up_flag=0;
- down_flag=0;
- }
- hide_year++;
- if(hide_year>3)
- hide_year=0;
- show_time();
- }
- while(count==8); //count8, 跳出調整模式,
- break;
- case 7:
- count=0;hide_year=0; //返回默認顯示狀態
- DS1302_SetProtect(0); //寫入允許
- Second=Read1302(0x81); //讀取秒地址的最新數據
- Write1302(0x80,Second&0x7f); //開始計時
- DS1302_SetProtect(1); //寫入禁止
- done=0;
- flag1=0;flag2=0;
- break;
- default: break;
- }
- }
- else
- {
- Setkey(); //掃描模式切換按鍵
- switch(count1)
- {
- case 1: //count=1,調整秒
- do
- {
- outkey(); //掃描跳出按鈕
- Upkey(); //掃描加按鈕
- Downkey(); //掃描減按鈕
- hi_sec++; //位閃計數
- if(hi_sec>3)
- hi_sec=0;
- clock_dispaly(); //液晶顯示數據
- }
- while(count1==2);
- break;
- case 2: //count=2,調整分
- do
- {
- hi_sec=0;
- outkey();
- Upkey();
- Downkey();
- hi_min++;
- if(hi_min>3)
- hi_min=0;
- clock_dispaly();
- }
- while(count==3);
- break;
- case 3: //count=3,調整小時
- do
- {
- hi_min=0;
- outkey();
- Upkey();
- Downkey();
- hi_hour++;
- if(hi_hour>3)
- hi_hour=0;
- clock_dispaly();
- }
- while(count==4);
- break;
-
- case 4: //count=4,調整日
- do
- {
- hi_hour=0;
- outkey();
- Upkey();
- Downkey();
- hi_day++;
- if(hi_day>3)
- hi_day=0;
- clock_dispaly();
- }
- while(count==5);
- break;
- case 5: //count=5,調整月
- do
- {
- hi_day=0;
- outkey();
- Upkey();
- Downkey();
- hi_month++;
- if(hi_month>3)
- hi_month=0;
- clock_dispaly();
- }
- while(count==6);
- break;
- case 6: //count=6,退出調整模式
- count1=0;
- hi_month=0;
- flag1=0,flag2=0;
- done=0;
-
- LCD12864_WriteCmd(0x01); //清屏命令
- LCD12864_WriteCmd(0x34); //擴展模式指令,關閉顯示
- LCD12864_ClearScreen(); //清除繪圖
- gui_line(72,32,72,48); //內部線框
- gui_line(0,15,127,15);
- gui_line(0,32,127,32);
- gui_line(0,48,127,48);
- gui_line(62,48,62,63);
-
- gui_line(0,0,127,0); //四周線框
- gui_line(0,1,0,63);
- gui_line(0,63,127,63);
- gui_line(127,0,127,63);
- GUI_Put_Area(81,33,&uMod[0][0],16,14,0); //固定顯示“星”
- GUI_Put_Area(96,33,&uMod[1][0],16,14,0); //固定顯示“期”
- GUI_Put_Area(3,18,&uMod[2][0],16,12,0); //固定顯示“農”
- GUI_Put_Area(19,18,&uMod[3][0],16,12,0); //固定顯示“歷”
- LCD12864_WriteCmd(0x36); //開顯示
- LCD12864_WriteCmd(0x30); //基本指令
- break;
- default: break;
- }
- }
- }
- void Setkey() //模式選擇按鍵
- {
- if(Set==0) //時間調整模式
- {
- mdelay(8);
- if(Set==0)
- {
- count=count+1; //Setkey按一次,count就加1
- done=1; //進入調整模式
- flag=0;
- }
- while(Set==0);
- }
- else if(clock_Set==0) //鬧鐘設置模式
- {
- mdelay(8);
- if(clock_Set==0)
- {
- if(flag2==0)
- {
- flag2=~flag2;
- LCD12864_WriteCmd(0x01); //清屏
- }
- flag1=1;
- count1=count1+1;
- done=1;
- }
- while(clock_Set==0);
- }
- else ;
- }
- void clock_than(SYSTEMTIME *time , CLOCKTIME *Time) //鬧鐘函數,響鈴5秒
- {
- if((Time->Sec<=time->Second)&&(Time->Sec+5>=time->Second)&&(Time->Min==time->Minute)&&(Time->Hou==time->Hour)&&(Time->tian==time->Day)&&(Time->yue==time->Month))
- {
- Beep= 0; //響
- }
- else
- {
- Beep= 1; //不響
- }
- }
- void init() //初始化函數
- {
- uchar Second;
- Out=1;
- Set=1;
- Down=1;
- Up=1;
- Beep=1;
- clock_Set=1;
- up_flag=0;
- down_flag=0;
- done=0;
- flag=0;
- flag1=0,flag2=0;
- count=0,count1=0;
- hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0;
- hi_sec=0,hi_min=0,hi_hour=0,hi_day=0,hi_month=0;
- shi=0,fen=0,miao=0,week=0,day=0,year=0,month=0;
- clock_shi=0,clock_fen=0,clock_miao=0,clock_month=10,clock_day=7;
-
- IrValue[2]=0;
-
- IT0=1; //下降沿觸發
- EX0=1; //打開中斷0允許
- EA=1; //打開總中斷
- IRIN=1; //初始化紅外數據端口
-
- LCD12864_Init(); //液晶初始化
- DS18B20_init(); //溫度傳感器初始化函數
- NRF24L01Int(); //無線模塊初始化函數
-
- gui_line(72,32,72,48); //內部線框
- gui_line(0,15,127,15);
- gui_line(0,32,127,32);
- gui_line(0,48,127,48);
- gui_line(62,48,62,63);
- gui_line(0,0,127,0); //四周線框
- gui_line(0,1,0,63);
- gui_line(0,63,127,63);
- gui_line(127,0,127,63);
- GUI_Put_Area(81,33,&uMod[0][0],16,14,0); //固定顯示“星”
- GUI_Put_Area(96,33,&uMod[1][0],16,14,0); //固定顯示“期”
- GUI_Put_Area(3,18,&uMod[2][0],16,12,0); //固定顯示“農”
- GUI_Put_Area(19,18,&uMod[3][0],16,12,0); //固定顯示“歷”
- LCD12864_WriteCmd(0x32); //繪圖顯示開
- LCD12864_WriteCmd(0x30); //基本指令
- DS1302_SetProtect(0); //寫入允許
- Second=Read1302(0x81);
- Write1302(0x80,Second&0x7f); //開始計時
- DS1302_SetProtect(1); //寫入禁止
- timer0_1(); //定時器初始化
- //Initial_DS1302(); //時鐘芯片初始化,第一次使用DS1302時可以初始化一下,以后就不用了
- }
- void main()
- {
- init();
- while(1){
- }
- }
- void T0_time() interrupt 1 //定時器0
- {
- uchar i;
- TH0 = (65536 - 45872)/256;
- TL0 = (65536 - 45872)%256;
- i++;
- if(i==5) //0.25秒
- {
- i=0;
- if(done==1)
- {
- keydone(); //進入調整模式
- }
- if(done==0)
- {
- if(flag1==0)
- show_time(); //時間顯示
- else
- clock_(); //鬧鐘顯示
- clock_than(&CurrentTime ,&clock_time); //比較鬧鐘時間和實時時間
- }
- DS18B20_get(); //得到溫度
- NRF_rx(); //無線接收溫度
- Setkey(); //掃描設置按鍵
- }
- }
- void ReadIr() interrupt 0 //外部中斷0,紅外數據接收
- {
- unsigned char j,k;
- unsigned int err;
- uchar Second;
- Time=0;
- DelayMs(70);
- if(IRIN==0) //確認是否真的接收到正確的信號
- {
- err=1000; //1000*10us=10ms,超過說明接收到錯誤的信號
- /*當兩個條件都為真是循環,如果有一個條件為假的時候跳出循環,免得程序出錯的時
- 侯,程序死在這里*/
- while((IRIN==0)&&(err>0)) //等待前面9ms的低電平過去
- {
- DelayMs(1);
- err--;
- }
- if(IRIN==1) //如果正確等到9ms低電平
- {
- err=500;
- while((IRIN==1)&&(err>0)) //等待4.5ms的起始高電平過去
- {
- DelayMs(1);
- err--;
- }
- for(k=0;k<4;k++) //共有4組數據
- {
- for(j=0;j<8;j++) //接收一組數據
- {
- err=60;
- while((IRIN==0)&&(err>0))//等待信號前面的560us低電平過去
- {
- DelayMs(1);
- err--;
- }
- err=500;
- while((IRIN==1)&&(err>0)) //計算高電平的時間長度。
- {
- DelayMs(1);//0.14ms
- Time++;
- err--;
- if(Time>30)
- {
- EX0=1;
- return;
- }
- }
- IrValue[k]>>=1; //k表示第幾組數據
- if(Time>=8) //如果高電平出現大于565us,那么是1
- {
- IrValue[k]|=0x80;
- }
- Time=0; //用完時間要重新賦值
- }
- }
- }
- if(IrValue[2]!=~IrValue[3])
- {
- return;
- }
- if((IrValue[2]==0x0c)) //按鍵1
- {
- done=1; //進入調整模式
- flag=0;
- count=count+1; //Setkey按一次,count就加1
- }
- if((IrValue[2]==0x18)) //按鍵2
- {
- if(flag2==0)
- {
- flag2=~flag2;
- LCD12864_WriteCmd(0x01);
- }
- flag1=1;
- count1=count1+1;
- done=1;
- }
- if((IrValue[2]==0x15)) //按鍵VOL-
- {
- if(flag1==0)
- {
- switch(count)
- {
- case 1:
- DS1302_change(0x81,&miao);
- miao=miao-1;
- if(miao==-1)
- miao=59;
- down_flag=1;
- break;
- case 2:
- DS1302_change(0x83,&fen);
- fen=fen-1;
- if(fen==-1)
- fen=59;
- down_flag=1;
- break;
- case 3:
- DS1302_change(0x85,&shi);
- shi=shi-1;
- if(shi==-1)
- shi=23;
- down_flag=1;
- break;
-
- case 4:
- DS1302_change(0x87,&day);
- DS1302_change(0x89,&month);
- day=day-1;
- if(day==0&&((month==4)||(month==6)||(month==9)||(month==11)))
- day=30;
- if(day==0&&(month==2))
- day=29;
- if(day==0&&((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12)))
- day=31;
- down_flag=1;
- break;
- case 5:
- DS1302_change(0x89,&month);
- month=month-1;
- if(month==0)
- month=12;
- down_flag=1;
- break;
- case 6:
- DS1302_change(0x8d,&year);
- year=year-1;
- if(year==-1)
- year=99;
- down_flag=1;
- break;
- default: break;
- }
- }
- else
- {
- switch(count1)
- {
- case 1:
- clock_miao=clock_miao-1;
- if(clock_miao==-1)
- clock_miao=59;
- break;
- case 2:
- clock_fen=clock_fen-1;
- if(clock_fen==-1)
- clock_fen=59;
- break;
- case 3:
- clock_shi=clock_shi-1;
- if(clock_shi==-1)
- clock_shi=23;
- break;
- case 4:
- clock_day=clock_day-1;
- if(clock_day==0&&((clock_month==4)||(clock_month==6)||(clock_month==9)||(clock_month==11)))
- clock_day=30;
- if(clock_day==0&&(clock_month==2))
- clock_day=29;
- if(clock_day==0&&((clock_month==1)||(clock_month==3)||(clock_month==5)||(clock_month==7)||(clock_month==8)||(clock_month==10)||(clock_month==12)))
- clock_day=31;
- break;
- case 5:
- clock_month=clock_month-1;
- if(clock_month==0)
- clock_month=12;
- break;
- default: break;
- }
- }
- }
- if((IrValue[2]==0x09)) //按鍵VOL+
- {
- if(flag1==0)
- {
- switch(count)
- {
- case 1:
- DS1302_change(0x81,&miao);
- miao=miao+1;
- if(miao>=60)
- miao=0;
- down_flag=1;
- break;
- case 2:
- DS1302_change(0x83,&fen);
- fen=fen+1;
- if(fen>=60)
- fen=0;
- down_flag=1;
- break;
- case 3:
- DS1302_change(0x85,&shi);
- shi=shi+1;
- if(shi>=24)
- shi=0;
- down_flag=1;
- break;
-
- case 4:
- DS1302_change(0x87,&day);
- DS1302_change(0x89,&month);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
電子萬年歷.7z
(167.33 KB, 下載次數: 23)
2019-2-19 13:36 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|