




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機電子鐘c程序時間:2010-06-25 07:16來源:未知 作者:電路圖網(wǎng) 點擊:536次/*單片機SST89E58RD 8位共陽數(shù)碼管 12M晶振*/*P0段選,P2位選*/#include "at89x52.h"#define uchar unsigned char#define uint unsigned intuchar codetab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff; uchar n;uchar hh,mm,ss;uchar nhh,nmm,nss;uint year;
2、uchar day,mon,week;uchar hhs,hhg,mms,mmg,sss,ssg;uchar days,dayg,mons,mong;uchar nhhs,nhhg,nmms,nmmg,nsss,nssg;uchar set1=1,set2=1;sbit fm=P32;sbit k1=P34;sbit k2=P35;sbit k3=P36;sbit k4=P37;uchar table1=31,31,29,31,30,31,30,31,31,30,31,30,31; /閏年 uchar table2=31,31,28,31,30,31,30,31,31,30,31,30,31;
3、 /非閏年 void jishi();void baoshi();void alarm();void set_time();void set_alarm();void set_mdw();void key_change();void key_set();void delay(int m) /延時程序,延時m*0.5msuint i;uint j;for (i=0;i<m;i+)for(j=0;j<500;j+)void timer0() interrupt 1 TMOD=0x01;TH0=0x3c;TL0=0xb1;n+;jishi();main()TMOD=0x01;TH0=0x
4、3c;TL0=0xb1;TR0=1;EA=1;ET0=1;hh=12;mm=00;ss=00;nhh=7;nmm=30;nss=0;year=2008;mon=12;day=1;week=1; while(1)hhs=hh/10%10;/時分秒 hhg=hh%10;mms=mm/10%10;mmg=mm%10;sss=ss/10%10;ssg=ss%10;nhhs=nhh/10%10;/鬧鐘 nhhg=nhh%10;nmms=nmm/10%10;nmmg=nmm%10;nsss=nss/10%10;nssg=nss%10;days=day/10%10;/月日 dayg=day%10;mons=
5、mon/10%10;mong=mon%10;key_change(); /k1按鍵掃描key_set(); /k2按鍵掃描set_time(); /設(shè)置時間set_mdw(); /設(shè)置月日星期set_alarm(); /設(shè)置鬧鐘if(set1=1) /正常走時顯示P0=tabhhs;P2_7=0;delay(1);P2_7=1;/時十位 P0=tabhhg;P2_5=0;delay(1);P2_5=1;/時個位 P0=tab10;P2_3=0;delay(1);P2_3=1;/"-"P0=tabmms;P2_1=0;delay(1);P2_1=1;/分十位 P0=tabmm
6、g;P2_6=0;delay(1);P2_6=1;/分個位 P0=tab10;P2_4=0;delay(1);P2_4=1;/"-"P0=tabsss;P2_2=0;delay(1);P2_2=1;/秒十位 P0=tabssg;P2_0=0;delay(1);P2_0=1;/秒個位 if(set1=2) /設(shè)置時間P0=tabhhs;P2_7=0;delay(1);P2_7=1;/時十位 P0=tabhhg;P2_5=0;delay(1);P2_5=1;/時個位 P0=tab10;P2_3=0;delay(1);P2_3=1;/"-"P0=tabmms;
7、P2_1=0;delay(1);P2_1=1;/分十位 P0=tabmmg;P2_6=0;delay(1);P2_6=1;/分個位 P0=tab10;P2_4=0;delay(1);P2_4=1;/"-"P0=tabsss;P2_2=0;delay(1);P2_2=1;/秒十位 P0=tabssg;P2_0=0;delay(1);P2_0=1;/秒個位 if(set1=3) /正常顯示月日-星期P0=tabmons;P2_7=0;delay(1);P2_7=1;/時十位 P0=tabmong;P2_5=0;delay(1);P2_5=1;/時個位 P0=tab10;P2_3
8、=0;delay(1);P2_3=1;/"-"P0=tabdays;P2_1=0;delay(1);P2_1=1;/分十位 P0=tabdayg;P2_6=0;delay(1);P2_6=1;/分個位 P0=tab11;P2_4=0;delay(1);P2_4=1;/"-" P0=tab11;P2_2=0;delay(1);P2_2=1;/秒十位 P0=tabweek;P2_0=0;delay(1);P2_0=1;/秒個位 if(set1=4) /設(shè)置月日-星期P0=tabmons;P2_7=0;delay(1);P2_7=1;/時十位 P0=tabmo
9、ng;P2_5=0;delay(1);P2_5=1;/時個位 P0=tab10;P2_3=0;delay(1);P2_3=1;/"-"P0=tabdays;P2_1=0;delay(1);P2_1=1;/分十位 P0=tabdayg;P2_6=0;delay(1);P2_6=1;/分個位 P0=tab11;P2_4=0;delay(1);P2_4=1;/"-" P0=tab11;P2_2=0;delay(1);P2_2=1;/秒十位 P0=tabweek;P2_0=0;delay(1);P2_0=1;/秒個位 if(set1=5) /正常顯示定時P0=t
10、abnhhs;P2_7=0;delay(1);P2_7=1;/時十位 P0=tabnhhg;P2_5=0;delay(1);P2_5=1;/時個位 P0=tab10;P2_3=0;delay(1);P2_3=1;/"-"P0=tabnmms;P2_1=0;delay(1);P2_1=1;/分十位 P0=tabnmmg;P2_6=0;delay(1);P2_6=1;/分個位 P0=tab10;P2_4=0;delay(1);P2_4=1;/"-"P0=tabnsss;P2_2=0;delay(1);P2_2=1;/秒十位 P0=tabnssg;P2_0=0
11、;delay(1);P2_0=1;/秒個位 if(set1=6) /設(shè)置鬧鐘定時P0=tabnhhs;P2_7=0;delay(1);P2_7=1;/時十位 P0=tabnhhg;P2_5=0;delay(1);P2_5=1;/時個位 P0=tab10;P2_3=0;delay(1);P2_3=1;/"-"P0=tabnmms;P2_1=0;delay(1);P2_1=1;/分十位 P0=tabnmmg;P2_6=0;delay(1);P2_6=1;/分個位 P0=tab10;P2_4=0;delay(1);P2_4=1;/"-"P0=tabnsss;P
12、2_2=0;delay(1);P2_2=1;/秒十位 P0=tabnssg;P2_0=0;delay(1);P2_0=1;/秒個位 baoshi(); /整點報時alarm(); /鬧鐘void jishi() /計時函數(shù)if(n=20)n=0;ss+;if(ss=60)ss=0;mm+;if(mm=60)mm=0;hh+;if(hh=24)hh=0;day+;week+;if(week=8)week=0;if(year%4=0&&year%100!=0|year%400=0) /閏年 if(day=table1mon+1)day=0;mon+;if(mon=13)mon=0;
13、year+;else /非閏年if(day=table2mon+1)day=0;mon+;if(mon=13)mon=0;year+;uchar incone(uchar n) /加1函數(shù)if(k3=0)delay(20);if(k3=0)n+;while(!k3);return(n);uchar decone(uchar m) /減1函數(shù)if(k4=0)delay(20);if(k4=0)m-;while(!k4);if(m<0)m=0;return(m);void key_change() /k1按鍵掃描 if(k1=0)delay(20);if(k1=0)set1+;while(!
14、k1);if(set1=7)set1=1;void key_set() /k2按鍵掃描 if(k2=0)delay(20);if(k2=0)set2+;while(!k2);if(set2=4)set2=1;void baoshi() /整點報時函數(shù) if(mm=00&&ss=00)fm=0;if(ss=1)fm=1;void alarm() /鬧鐘函數(shù) uchar x;if(nhh=0)goto end;if(hh=nhh&&mm=nmm&&ss=nss) for(x=0;x<6;x+)fm=0;delay(30);fm=1;delay(
15、20);fm=0;delay(30);fm=1;delay(20);fm=0;delay(30);fm=1;delay(20);fm=0;delay(30);fm=1;delay(180);end:;void set_time() /設(shè)置時間函數(shù) if(set1=2)if(set2=1)hh=incone(hh);if(hh=24)hh=0;if(hh=-1)hh=23;hh=decone(hh);if(set2=2)mm=incone(mm);if(mm=60)mm=0;if(mm=-1)mm=59;mm=decone(mm);if(set2=3)ss=incone(ss);if(ss=60
16、)ss=0;if(ss=-1)ss=59;ss=decone(ss);void set_mdw() /設(shè)置月日星期函數(shù) if(set1=4)if(set2=1)mon=incone(mon);if(mon=13)mon=1;mon=decone(mon);if(mon=0)mon=12;if(set2=2)day=incone(day);if(day=32)day=1;day=decone(day);if(day=0)day=31;if(set2=3)week=incone(week);if(week=8)week=1;week=decone(week);if(week=0)week=7;void set_alarm() /設(shè)置鬧鐘函數(shù) if(set1=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45784.1-2025農(nóng)業(yè)車輛維修保養(yǎng)信息的標準接口第1部分:基于Web的用戶界面要求
- 2023安徽省合肥市八校聯(lián)考高一上學期集中練習-高一政治參考答案
- 北師大版三年級數(shù)學上冊練習第一單元《混合運算》(學生版+解析)
- 江蘇泰興一中2025年高二下化學期末教學質(zhì)量檢測模擬試題含解析
- 安全員-A證考試題庫及答案 (二)
- 工會職工系列活動方案
- 展廳改造活動方案
- 少兒活動轉(zhuǎn)卡活動方案
- 小手拍拍音樂活動方案
- 居民體檢活動方案
- 2025年廣東省中考地理試題卷(標準含答案)
- 2025年 北京門頭溝大峪街道社區(qū)儲備人才招募考試試題附答案
- Unit 2 Home Sweet Home 第4課時(Section B 1a-1e) 2025-2026學年人教版英語八年級下冊
- 危險性較大工程管理制度
- 智慧檢驗與大數(shù)據(jù)分析知到智慧樹期末考試答案題庫2025年溫州醫(yī)科大學
- 2024北京西城區(qū)四年級(下)期末數(shù)學試題及答案
- 中國慢性阻塞性肺疾病基層診療指南(2024年)解讀
- 湖北省宜昌市(2024年-2025年小學三年級語文)部編版期末考試(下學期)試卷(含答案)
- DB52∕T 046-2018 貴州省建筑巖土工程技術(shù)規(guī)范
- 大健康生活館運營手冊
- YS-T439-2001_鋁及鋁合金擠壓扁棒
評論
0/150
提交評論