![單片機實現(xiàn)萬年歷程序_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/8b03bf7b-b81f-41a6-9741-838aa6887197/8b03bf7b-b81f-41a6-9741-838aa68871971.gif)
![單片機實現(xiàn)萬年歷程序_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/8b03bf7b-b81f-41a6-9741-838aa6887197/8b03bf7b-b81f-41a6-9741-838aa68871972.gif)
![單片機實現(xiàn)萬年歷程序_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/8b03bf7b-b81f-41a6-9741-838aa6887197/8b03bf7b-b81f-41a6-9741-838aa68871973.gif)
![單片機實現(xiàn)萬年歷程序_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/8b03bf7b-b81f-41a6-9741-838aa6887197/8b03bf7b-b81f-41a6-9741-838aa68871974.gif)
![單片機實現(xiàn)萬年歷程序_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/8b03bf7b-b81f-41a6-9741-838aa6887197/8b03bf7b-b81f-41a6-9741-838aa68871975.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、51單片機實現(xiàn)萬年歷 利用AT89S52單片機的P0口來和另外幾個口來控制1602液晶的顯示和P1口還有其它口來控制ds12887時鐘芯片。設置四個按鍵,1個定義為時間設置功能鍵,一個定義為鬧鐘設置功能鍵,另外兩個用來調(diào)節(jié)時間的增減。 原理圖: pcb圖: 源程序: #include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit beep=P20;/蜂鳴器控制口 sbit timeadd=P21;/調(diào)節(jié)時間加 sbit timesub=P22;/調(diào)節(jié)時間減 sbit timeclk=P23;/鬧鐘設
2、定鍵 sbit timefun=P24;/時間設定鍵 sbit lcdrs=P25;/液晶的命令和數(shù)據(jù)控制口 sbit ledrw=P26;/液晶的寫數(shù)據(jù)口 sbit lcden=P27;/液晶顯示模塊的使能端 sbit timeds=P33;/時鐘芯片地址閘 sbit timerw=P34;/時鐘芯片讀寫 sbit timeas=P35;/時鐘芯片地址閘 sbit timeen=P36;/時鐘芯片片選 uchar code table="20 - - week "uchar code table1=&qu
3、ot; : : "/要顯示的字符串 char num,shi,fen,miao,nian=2000,yue,ri,week,numfun,anumfun,flag,flag1;uchar leap;void delay(uint x) uchar i,j; for(i=x;i>0;i-) for(j=110;j>0;j-);void didi()
4、160; beep=0; delay(1000); beep=1; delay(1000);void write_com(uchar com) lcdrs=0; P0=com; delay(5); lcden=1; delay(20); lcden=0; void write_date(uchar date) lcdrs=1; P
5、0=date; delay(5); lcden=1; delay(20); lcden=0;void write_sfm(uchar add,uchar date) uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_dat
6、e(0x30+ge);void write_nyr(uchar add,uchar date) uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+add); write_date(0x30+shi); write_date(0x30+ge);void write_zhou(uchar add,uchar date) write_com(0x80+add); &
7、#160; write_date(0x30+date);void write_ds(uchar add,uchar date) timeen=0; timeas=1; timeds=1; timerw=1; P1=add; timeas=0; timerw=0; P1=date; timerw=1; timeas=1; timeen
8、=1; uchar read_ds(uchar add) uchar ds_date; timeas=1; timeds=1; timerw=1; timeen=0; P1=add; timeas=0; timeds=0; P1=0xff;
9、 ds_date=P1; timeds=1; timeas=1; timeen=1; return ds_date; void keyscan() if(flag1=1)/用來關(guān)閉鬧鐘鈴聲 if(timeadd=0)
10、0; delay(5); if(timeadd=0)
11、 while(!timeadd=0);
12、; flag1=0; if(timesub=0)
13、 delay(5); if(timesub=0)
14、160; while(!timesub=0); &
15、#160; flag1=0; if(
16、timefun=0) delay(5); if(timefun=0)
17、160; while(!timefun); flag=1; numfun+; &
18、#160; if(numfun=1)
19、 write_com(0x80+0x40+0x0a); write_com(0x0f);
20、; if(numfun=2)
21、0; write_com(0x80+0x40+0x07); write_com(0x0f);
22、0; if(numfun=3)
23、160; write_com(0x80+0x40+0x04); write_com(0x0f);
24、160; if(numfun=4)
25、 write_com(0x80+0x0f); write_com(0x0f);
26、; if(numfun=5)
27、60; write_com(0x80+0x09); write_com(0x0f);
28、160; if(numfun=6) &
29、#160; write_com(0x80+0x06);
30、60; write_com(0x0f); if(numfun=7)
31、0; write_com(0x80+0x03);
32、 write_com(0x0f); if(numfun=8) &
33、#160; numfun=0;
34、60; flag=0; if(numfun!=0
35、) if(timeadd=0) delay(5);
36、 while(!timeadd); if(numfun=1)
37、160; miao+; if(miao=60)
38、160; miao=0; write_sfm(9,miao);
39、 write_com(0x80+0x40+9); write_ds(0,miao);
40、160; if(numfun=2) &
41、#160; fen+; if(fen=60)
42、60; fen=0; write_sfm(6,fen);
43、60; write_com(0x80+0x40+6); write_ds(2,fen);
44、 if(numfun=3)
45、; shi+; if(sh
46、i=24) shi=0; write_sfm(3,
47、shi); write_com(0x80+0x40+3); write_ds
48、(4,shi); if(numfun=4)
49、60; week+;
50、160;if(week=8) week=1; wr
51、ite_zhou(0x0f,week); write_com(0x80+0x0f); &
52、#160;write_ds(6,week); if(numfun=5) &
53、#160; if(nian=0)
54、160; switch(yue) &
55、#160; case 1:ri+;if(ri=32) ri=1;break; case 2:ri+;if(ri=30) ri=1;break;
56、60; case 3:ri+;if(ri=32) ri=1;break; &
57、#160; case 4:ri+;if(ri=31) ri=1;break; case 5:ri+;if(ri=32) ri=1;break;
58、60; case 6:ri+;if(ri=31) ri=1;break; &
59、#160; case 7:ri+;if(ri=32) ri=1;break; case 8:ri+;if(ri=32) ri=1;break;
60、60; case 9:ri+;if(ri=31) ri=1;break; &
61、#160; case 10:ri+;if(ri=32) ri=1;break; case 11:ri+;if(ri=31) ri=1;break; &
62、#160; case 12:ri+;if(ri=32) ri=1;break;
63、0;
64、160; else if(leap&&yue=2)
65、60; ri+; if(ri=30)
66、160; ri=1;
67、160; else if(yue=2&&leap=0) &
68、#160; ri+;
69、160; if(ri=29) ri=1;
70、; else
71、; switch(yue) case 1:ri+;if(ri=32) ri=1;break;
72、60; case 3:ri+;if(ri=32) ri=1;break; case 4:ri+;if(ri=31) ri=1;bre
73、ak; case 5:ri+;if(ri=32) ri=1;break;
74、 case 6:ri+;if(ri=31) ri=1;break; case 7:ri+;if(ri=32) ri=1;break;
75、 case 8:ri+;if(ri=32) ri=1;break; case 9:ri+;if(ri=31) ri=1;break;
76、 case 10:ri+;if(ri=32) ri=1;break;
77、160; case 11:ri+;if(ri=31) ri=1;break; case 12:ri+;if(ri=32) ri=1;break;
78、 write_nyr(8,ri); &
79、#160; write_com(0x80+0x08); write_ds(7,ri); &
80、#160; if(numfun=6)
81、; yue+; if(yue=13)
82、160; yue=0; write_nyr(5,yue);
83、160; write_com(0x80+0x05); write_ds(8,yue); &
84、#160; if(numfun=7)
85、; nian+; if(nian=100)
86、; nian=0; leap=nian%4=0&&nian%100!=0;
87、0; write_nyr(2,nian); write_com(0x80+2);
88、0; write_ds(9,nian);
89、0; if(timesub=0) delay(5);
90、; while(!timesub); if(numfun=1)
91、 miao-; if(miao=-1) &
92、#160; miao=59; write_sfm(9,miao);
93、0; write_com(0x80+0x40+9); write_ds(0,miao);
94、 if(numfun=2)
95、0; fen-; if(fen=-1) &
96、#160; fen=59; write_sfm(6,fen);
97、 write_com(0x80+0x40+6); write_ds(2,fen);
98、160; if(numfun=3)
99、 shi-; if(shi=-1)
100、60; shi=23; write_sfm(3,shi);
101、160; write_com(0x80+0x40+3); write_ds(4,shi);
102、; if(numfun=4)
103、0; week-; if(week=0)
104、; week=7; write_zhou(0x0f,week);
105、; write_com(0x80+0x0f); write_ds(6,week);
106、60; if(numfun=5)
107、160; if(nian=0)
108、60; switch(yue)
109、160; case 1:ri-;if(ri=0) ri=31;break; case 2:ri-;if(ri=0) ri=29;break;
110、0; case 3:ri-;if(ri=0) ri=31;break;
111、160; case 4:ri-;if(ri=0) ri=30;break; case 5:ri-;if(ri=0) ri=31;break;
112、0; case 6:ri-;if(ri=0) ri=30;break;
113、160; case 7:ri-;if(ri=0) ri=31;break; case 8:ri-;if(ri=0) ri=31;break;
114、0; case 9:ri-;if(ri=0) ri=30;break;
115、160; case 10:ri-;if(ri=0) ri=31;break; case 11:ri-;if(ri=0) ri=30;break;
116、160; case 12:ri-;if(ri=0) ri=31;break;
117、;
118、60; else if(leap&&yue=2)
119、; ri-; if(ri=0)
120、; ri=29;
121、60; else if(yue=2&&leap=0)
122、160; ri-;
123、0; if(ri=0) ri=28; &
124、#160; else &
125、#160; switch(yue) case 1:ri-;if(ri=0) ri=31;break;
126、; case 3:ri-;if(ri=0) ri=31;break; case 4:ri-;if(ri=0) ri=30;break;
127、; case 5:ri-;if(ri=0) ri=31;break; case 6:
128、ri-;if(ri=0) ri=30;break; case 7:ri-;if(ri=0) ri=31;break;
129、160; case 8:ri-;if(ri=0) ri=31;break; case 9:ri-;if(ri=0) ri=30;break;
130、160; case 10:ri-;if(ri=0) ri=31;break; case 11:ri-;if(ri=0)
131、ri=30;break; case 12:ri-;if(ri=0) ri=31;break;
132、160; write_nyr(8,ri);
133、60; write_com(0x80+0x08); write_ds(7,ri);
134、60; if(numfun=6) &
135、#160; yue-; if(yue=-1)
136、0; yue=12; write_nyr(5,yue);
137、60; write_com(0x80+0x05); write_ds(8,yue);
138、160; if(numfun=7)
139、 nian-; if(nian=-1) &
140、#160; nian=99; leap=nian%4=0&&nian%100!=0;
141、; write_nyr(2,nian); write_com(0x80+2);
142、; write_ds(9,nian);
143、; void set_alarm() uchar ashi,afen,amiao;if(timeclk=0)/判斷是否按下鬧鐘設定鍵 delay(5);/延時消抖 if(timeclk=0)
144、 while(!timeclk); anumfun+;/按鍵次數(shù)加1 if(anumfun=1)
145、160; flag=1; write_com(0x80+0x40+0x0a);
146、60; write_com(0x0f); if(anumfun=2)
147、60; flag=1; write_com(0x80+0x4
148、0+0x07); write_com(0x0f);
149、;if(anumfun=3) flag=1;
150、160; write_com(0x80+0x40+0x04); write_com(0x0f);
151、 if(anumfun=4) flag=0;
152、60; anumfun=0; if(anumfun!=0)
153、; if(timeadd=0)/如果加功能鍵按下 delay(5); while(!timeadd);
154、0; if(anumfun=1) /設定秒 amiao+; &
155、#160; if(amiao=60) amiao=0;
156、0; write_sfm(9,amiao); write_com(0x80+0x40+9); write_d
157、s(1,amiao); if(anumfun=2)
158、 afen+; if(afen=60)
159、; afen=0; write_sfm(6,afen); wr
160、ite_com(0x80+0x40+6); write_ds(3,afen);
161、60; if(anumfun=3) ashi+; &
162、#160; if(ashi=24) ashi=0;
163、 write_sfm(3,ashi); write_com(0x80+0x40+3); write_ds(5,ashi);
164、; if(anumfun!=0) if(timesub=0)
165、0; delay(5); while(!timesub); if(anumfun=1) amiao-;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- LY/T 3405-2024竹材弧形原態(tài)重組材
- 人教版數(shù)學七年級下冊第7課時《平行線的性質(zhì)(一)》聽評課記錄
- 2025年造紙色漿合作協(xié)議書
- 湘教版數(shù)學七年級上冊《3.4一元一次方程模型的應用(1)》聽評課記錄
- 蘇人版道德與法治九年級上冊7.2《違法要受法律處罰》聽課評課記錄
- 生態(tài)保護資源共享合同(2篇)
- 環(huán)境監(jiān)測設備合作開發(fā)合同(2篇)
- 六年級上冊聽評課記錄
- (人教版)七年級下冊數(shù)學配套聽評課記錄:5.1.3 《同位角、內(nèi)錯角、同旁內(nèi)角》
- 四年級科學聽評課記錄
- 塑料加工碎料指導書
- 海南省儋州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細及行政區(qū)劃代碼居民村民委員會
- 人力資源管理專業(yè)畢業(yè)設計論文
- 法理學-(第五版)完整版ppt全套教學教程課件(最新)
- 香港地圖高清矢量可填充編輯PPT模板(精美)
- 《朝天子-詠喇叭》
- 氧化還原反應方程式的配平(八大配平技巧)-PPT課件
- 天津人社局解除勞動合同證明書
- (高清正版)JJF(浙)1090—2014薄片千分尺校準規(guī)范
- 2020年采購部年度目標計劃 采購部工作目標
- 陽光分級閱讀高一上The Emperor Penguin課件
評論
0/150
提交評論