




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.51單片機(jī)實(shí)現(xiàn)萬(wàn)年歷 利用AT89S52單片機(jī)的P0口來(lái)和另外幾個(gè)口來(lái)控制1602液晶的顯示和P1口還有其它口來(lái)控制ds12887時(shí)鐘芯片。設(shè)置四個(gè)按鍵,1個(gè)定義為時(shí)間設(shè)置功能鍵,一個(gè)定義為鬧鐘設(shè)置功能鍵,另外兩個(gè)用來(lái)調(diào)節(jié)時(shí)間的增減。 原理圖: pcb圖: 源程序: #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit beep=P20;/蜂鳴器控制口 sbit timeadd=P21;/調(diào)節(jié)時(shí)間加 sbit timesub=P22;/調(diào)節(jié)時(shí)間減 sbit timeclk=P23;
2、/鬧鐘設(shè)定鍵 sbit timefun=P24;/時(shí)間設(shè)定鍵 sbit lcdrs=P25;/液晶的命令和數(shù)據(jù)控制口 sbit ledrw=P26;/液晶的寫(xiě)數(shù)據(jù)口 sbit lcden=P27;/液晶顯示模塊的使能端 sbit timeds=P33;/時(shí)鐘芯片地址閘 sbit timerw=P34;/時(shí)鐘芯片讀寫(xiě) sbit timeas=P35;/時(shí)鐘芯片地址閘 sbit timeen=P36;/時(shí)鐘芯片片選 uchar code table="20 - - week " uchar code table
3、1=" : : "/要顯示的字符串 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、) 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) lcd
5、rs=1; P0=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(0x3
6、0+shi); write_date(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)
7、160; write_com(0x80+add); 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; ti
8、merw=1; timeas=1; timeen=1; uchar read_ds(uchar add) uchar ds_date; timeas=1; timeds=1; timerw=1; timeen=0; P1=add; timeas=
9、0; timeds=0; P1=0xff; ds_date=P1; timeds=1; timeas=1; timeen=1; return ds_date; void keyscan() if(flag1=1)/用來(lái)關(guān)閉鬧鐘鈴聲 &
10、#160; if(timeadd=0) delay(5); if(ti
11、meadd=0) while(!timeadd=0); &
12、#160; flag1=0;
13、160; if(timesub=0) delay(5);
14、 if(timesub=0) while(!timesub=
15、0); flag1=0;
16、0; if(timefun=0) delay(5); if(timefun=0)
17、160; while(!timefun); flag=1;
18、 numfun+; if(numfun=1) &
19、#160; write_com(0x80+0x40+0x0a); write_com(0x0f);
20、; if(numfun=2)
21、160; write_com(0x80+0x40+0x07); write_com(0
22、x0f); if(numfun=3)
23、0; write_com(0x80+0x40+0x04);
24、 write_com(0x0f); if(numfun=4)
25、; write_com(0x80+0x0f);
26、 write_com(0x0f); if(numfun=5)
27、; write_com(0x80+0x09);
28、 write_com(0x0f);
29、 if(numfun=6) write_com(0x80+0x06);
30、 write_com(0x0f);
31、 if(numfun=7) write_com(
32、0x80+0x03); write_com(0x0f);
33、 if(numfun=8)
34、0; numfun=0; flag=0;
35、60; if(numfun!=0) if(timeadd=0)
36、; delay(5); while(!timeadd);
37、160;if(numfun=1) miao+;
38、; if(miao=60) miao=0;
39、160; write_sfm(9,miao); write_com(0x80+0x40+9); &
40、#160; write_ds(0,miao);
41、 if(numfun=2) fen+;
42、0; if(fen=60) fen=0;
43、60; write_sfm(6,fen); write_com(0x80+0x40+6);
44、60; write_ds(2,fen);
45、60; if(numfun=3) shi+; &
46、#160; if(shi=24) shi=0;
47、 write_sfm(3,shi); write_com(0x80+0x40+3);
48、 write_ds(4,shi);
49、 if(numfun=4)
50、0; week+; if(week=8)
51、0; week=1; write_zhou(0x0f,week); wr
52、ite_com(0x80+0x0f); write_ds(6,week);
53、60; if(numfun=5) &
54、#160; if(nian=0) &
55、#160; switch(yue) case 1:ri+;if(ri=32) ri=1;break;
56、60; case 2:ri+;if(ri=30) ri=1;break;
57、 case 3:ri+;if(ri=32) ri=1;break; case 4:ri+;if(ri=31) ri=1;break;
58、 case 5:ri+;if(ri=32) ri=1;break;
59、60; case 6:ri+;if(ri=31) ri=1;break; case 7:ri+;if(ri=32) ri=1;break;
60、60; case 8:ri+;if(ri=32) ri=1;break;
61、 case 9:ri+;if(ri=31) ri=1;break; case 10:ri+;if(ri=32) ri=1;break;
62、; case 11:ri+;if(ri=31) ri=1;break; &
63、#160; case 12:ri+;if(ri=32) ri=1;break;
64、160; else if(leap&&yue=2)
65、160; ri+;
66、160; if(ri=30)
67、0; ri=1;
68、160;else if(yue=2&&leap=0)
69、 ri+; if(ri=29)
70、60; ri=1; &
71、#160; else switch(yue)
72、160; case 1:ri+;if(ri=32) ri=1;break; case 3:ri+;if(ri=32) ri=1;break;
73、 case 4:ri+;if(ri=31) ri=1;break;
74、160; case 5:ri+;if(ri=32) ri=1;break; case 6:ri+;if(ri=31) ri=1;break;
75、 case 7:ri+;if(ri=32) ri=1;break; case 8:ri+;if(ri=32) ri=1;break;
76、0; case 9:ri+;if(ri=31) ri=1;break;
77、 case 10:ri+;if(ri=32) ri=1;break; case 11:ri+;if(ri=31) ri=1;break;
78、160; case 12:ri+;if(ri=32) ri=1;break;
79、160; write_nyr(8,ri); write_com(0x80+0x08);
80、; write_ds(7,ri);
81、 if(numfun=6) yue+
82、; if(yue=13) yue=0;
83、60; write_nyr(5,yue); write_com(0x80+0x05);
84、 write_ds(8,yue);
85、; if(numfun=7)
86、60; nian+; if(nian=100) &
87、#160; nian=0; leap=nian%4=0&&nian%100!=0;
88、0; write_nyr(2,nian); write_com(0x80+2);
89、160; write_ds(9,nian); if(timesub=0)
90、60; delay(5); while(!timesub);
91、; if(numfun=1)
92、60; miao-; if(miao=-1)
93、160; miao=59; write_sfm(9,miao);
94、60; write_com(0x80+0x40+9); write_ds(0,miao);
95、160; if(numfun=2)
96、 fen-; if(fen=-1) &
97、#160; fen=59; write_sfm(6,fen);
98、0; write_com(0x80+0x40+6); write_ds(2,fen);
99、60; if(numfun=3) &
100、#160; shi-; if(shi=-1)
101、160; shi=23; write_sfm(3,shi);
102、; write_com(0x80+0x40+3); write_ds(4,shi);
103、 if(numfun=4)
104、60; week-; if(week=0)
105、60; week=7; write_zhou(0x0f,week); &
106、#160; write_com(0x80+0x0f); write_ds(6,week);
107、60; if(numfun=5)
108、 if(nian=0)
109、 switch(yue) case 1:ri-;if(ri=0) ri=31;break;
110、160; case 2:ri-;if(ri=0) ri=29;break;
111、; case 3:ri-;if(ri=0) ri=31;break; case 4:ri-;if(ri=0) ri=30;break;
112、 case 5:ri-;if(ri=0) ri=31;break;
113、160; case 6:ri-;if(ri=0) ri=30;break; case 7:ri-;if(ri=0) ri=31;bre
114、ak; case 8:ri-;if(ri=0) ri=31;break;
115、; case 9:ri-;if(ri=0) ri=30;break; case 10:ri-;if(ri=0) ri=31
116、;break; case 11:ri-;if(ri=0) ri=30;break;
117、 case 12:ri-;if(ri=0) ri=31;break; &
118、#160; else if(leap&&yue=2) &
119、#160;
120、 ri-; if(ri=0)
121、0; ri=29; &
122、#160; else if(yue=2&&leap=0)
123、; ri-; if(ri=0)
124、60; ri=28; &
125、#160; else switch(yue) &
126、#160; case 1:ri-;if(ri=0) ri=31;break;
127、60; case 3:ri-;if(ri=0) ri=31;break; case 4:ri-;if(ri=0) ri=30;break; &
128、#160; case 5:ri-;if(ri=0) ri=31;break; case 6:ri-;if(ri=0) ri=30;break;
129、; case 7:ri-;if(ri=0) ri=31;break; &
130、#160; case 8:ri-;if(ri=0) ri=31;break; case 9:ri-;if(ri=0) ri=30;break;
131、; case 10:ri-;if(ri=0) ri=31;break; case 11:ri-;if(ri=0) ri=30;break; &
132、#160; case 12:ri-;if(ri=0) ri=31;break;
133、160; write_nyr(8,ri);
134、160; write_com(0x80+0x08); write_ds(7,ri);
135、 if(numfun=6)
136、60; yue-; if(yue=-1)
137、0; yue=12; write_nyr(5,yue); &
138、#160; write_com(0x80+0x05); write_ds(8,yue);
139、0; if(numfun=7) &
140、#160; nian-; if(nian=-1)
141、 nian=99; leap=nian%4=0&&nian%100!=0;
142、160; write_nyr(2,nian); write_com(0x80+2);
143、 write_ds(9,nian);
144、0; void set_alarm() uchar ashi,afen,amiao; if(timeclk=0)/判斷是否按下鬧鐘設(shè)定鍵 delay(5);/延時(shí)消抖 if(timeclk=0)
145、160; while(!timeclk); anumfun+;/按鍵次數(shù)加1 if(anumfun=1) &
146、#160; flag=1; write_com(0x80+0x40+0x0a);
147、 write_com(0x0f); if(anumfun=2)
148、60; flag=1; write_com(0x80+0
149、x40+0x07); write_com(0x0f);
150、 if(anumfun=3) flag=1;
151、 write_com(0x80+0x40+0x04); write_com(0x0f); &
152、#160; if(anumfun=4) flag=0; &
153、#160; anumfun=0; if(anumfun!=0)
154、 if(timeadd=0)/如果加功能鍵按下 delay(5); while(!timeadd);
155、60; if(anumfun=1) /設(shè)定秒 amiao+;
156、0; if(amiao=60) amiao=0;
157、; write_sfm(9,amiao); write_com(0x80+0x40+9); &
158、#160; write_ds(1,amiao); if(anumfun=2)
159、160; afen+; if(afen=60)
160、0; afen=0; write_sfm(6,afen);
161、 write_com(0x80+0x40+6); write_ds(3,afen);
162、60; if(anumfun=3) ashi+;
163、0; if(ashi=24) ashi=0; &
164、#160; write_sfm(3,ashi); write_com(0x80+0x40+3);
165、0; write_ds(5,ashi); if(anumfun!=0) if(timesub=0)
166、 delay(5); while(!timesub); if(anumfun=1) amiao-; &
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TS 20428:2024 EN Genomics Informatics - Data elements and their metadata for describing structured clinical genomic sequence information in electronic health records
- 【正版授權(quán)】 ISO 6900:2025 EN Dried red jujubes - Specification and test methods
- 2025年度大型企事業(yè)單位公務(wù)車(chē)輛租賃服務(wù)協(xié)議合同范本
- 2025年變配電保護(hù)自動(dòng)化項(xiàng)目合作計(jì)劃書(shū)
- 離職管理與退出面談流程計(jì)劃
- 秋季信息化教學(xué)推進(jìn)計(jì)劃
- 2025年酸堿平衡調(diào)節(jié)藥合作協(xié)議書(shū)
- 智研咨詢發(fā)布-2025年中國(guó)智慧環(huán)保行業(yè)產(chǎn)業(yè)鏈全景分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2025年特異性植物源農(nóng)藥項(xiàng)目合作計(jì)劃書(shū)
- 2025年醫(yī)用氧化亞氮系統(tǒng)合作協(xié)議書(shū)
- TSG11-2020鍋爐安全技術(shù)規(guī)程(現(xiàn)行)
- 一年級(jí)20以內(nèi)加減及混合口算練習(xí)題
- 中南大學(xué)《藥理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 機(jī)電隊(duì)技術(shù)員安全生產(chǎn)責(zé)任制(3篇)
- 血透機(jī)常見(jiàn)報(bào)警原因及處理課件
- 2024快手非遺生態(tài)報(bào)告
- 第三章企業(yè)的生產(chǎn)和成本
- 統(tǒng)編版 高中語(yǔ)文 必修下冊(cè) 《祝?!贰读纸填^風(fēng)雪山神廟》
- 2024年職教高考《機(jī)械制圖》考試題庫(kù)
- 房地產(chǎn)行業(yè)房地產(chǎn)銷(xiāo)售業(yè)績(jī)考核方案
- 2025屆高校畢業(yè)生公開(kāi)招聘工作人員報(bào)名登記表
評(píng)論
0/150
提交評(píng)論