|
干貨,上代碼。
- #include <reg52.h>
- #include"1602.h"
- #include"delay.h"
- #include "ds1302.h"
- #include "key.h"
- #include"dh11.h"
- #include <intrins.h>
- sbit BEEP=P3^7;
- extern uchar S1num,flag,second,minute,hour,week,day,month,year;//秒、分、時、星期、日、月、年
- extern bit keyflag;
- /////////////////////////////////////////////////////
- extern uchar RHL,RHH,CL,CH;
- extern uint m,n;
- /////////////////////////////////////////////////////////
- uchar num;
- //uchar fan;
- ////////////////////////////////////////////////////////////////
- uchar code line1_data[] = {" : : "}; //定義第2行顯示的字符
- extern bit k4flag;
- extern uchar second1,minute1,hour1;
- /////////////////////////////////////////////////////
- void beep()
- {
- BEEP=!BEEP;
- Delay_ms(200);
- BEEP=!BEEP;
- Delay_ms(200);
- }
- /*****************讀出秒的十進制數(shù)***************************/
- uchar readsecond()
- {
- uchar dat;
- dat=read_1302add(0x81);
- second=((dat&0x70)>>4)*10+(dat&0x0f);
- return second;
- }
- /*****************讀出分的十進制數(shù)***************************/
- uchar readminute()
- {
- uchar dat;
- dat=read_1302add(0x83);
- minute=((dat&0x70)>>4)*10+(dat&0x0f);
- return minute;
- }
- /*****************讀出小時的十進制數(shù)***************************/
- uchar readhour()
- {
- uchar dat;
- dat=read_1302add(0x85);
- hour=((dat&0x70)>>4)*10+(dat&0x0f);
- return hour;
- }
- /*****************讀出天的十進制數(shù)***************************/
- uchar readday()
- {
- uchar dat;
- dat=read_1302add(0x87);
- day=((dat&0x70)>>4)*10+(dat&0x0f);
- return day;
- }
- /*****************讀出月的十進制數(shù)***************************/
- uchar readmonth()
- {
- uchar dat;
- dat=read_1302add(0x89);
- month=((dat&0x70)>>4)*10+(dat&0x0f);
- return month;
- }
- /*****************讀出周的十進制數(shù)***************************/
- //uchar readweek()
- //{
- //uchar dat;
- //dat=read_1302add(0x8b);
- //week=((dat&0x70)>>4)*10+(dat&0x0f);
- //return week;
- //}
- /*****************讀出年的十進制數(shù)***************************/
- uchar readyear()
- {
- uchar dat;
- dat=read_1302add(0x8d);
- year=((dat&0xf0)>>4)*10+(dat&0x0f);
- return year;
- }
- /************************讀出所有時間**********************/
- void readtime()
- {
- readsecond();
- readminute();
- readhour();
- // readday();
- // readmonth();
- // readweek();
- // readyear();
- }
- void Init_Timer0(void)
- {
- TMOD |= 0x01; //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響
- TH0=0xb0; //給定初值,這里使用定時器最大值從0開始計數(shù)一直到65535溢出
- TL0=0xc3;
- EA=1; //總中斷打開
- ET0=1; //定時器中斷打開
- // TR0=1; //定時器開關(guān)打開
- }
- void main()
- {
- uchar i;
- Init_Timer0();
- LCD_Init(); //初始化液晶
- Delay_ms(20); //延時有助于穩(wěn)定
- LCD_Clear(); //清屏
- init_1302();
- LCD_Write_Com(0x40|0x80); //設(shè)置顯示位置為第2行第0列
- i = 0;
- while(line1_data[i] != '\0') //在第2行0~3列顯示"****"
- {
- LCD_Write_Data(line1_data[i]); //顯示第2行字符
- i++; //指向下一字符
- }
- Delay_ms(1000);
- while(1)
- {
-
- if(k4==0)
- {
- Delay_ms(10);
- if(k4==0)
- {
- while(!k4);
- k4flag=~k4flag;
- }
- }
- if(k4flag==1)
- {
-
- TR0=1;
- if(((second1==0)&minute1==0)&hour1==0)
- {
-
- beep();
- }
-
- }
-
- else TR0=0;
-
-
-
- keyscan();
- if(keyflag==0)
- {
-
- readtime(); //讀取年,月,日,時,分,秒
- // write_DTC();
- write_second(); //寫秒
- write_minute(); //寫分
- write_hour(); //寫時
- // write_day(); //寫日
- // write_month(); //寫月
- // write_year(); //寫年
- // write_week();
-
- // write_second1(); //寫秒
- // write_minute1(); //寫分
- // write_hour1(); //寫時
-
- disp_nz();
-
- }
- Delay_ms(100);
- receive();
-
- }
- }
復(fù)制代碼 |
-
-
時鐘溫室度.rar
2017-6-10 09:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
90.42 KB, 下載次數(shù): 6, 下載積分: 黑幣 -5
|