/***************************************************************** ;****************************************************************/ void timer0(void) interrupt 1 using 1 { uchar x; fresh=0; sec=0; TH0=0x3c; TL0=0xb0; count++;
/*------------------------------*/ if(tfix) x=N; else x=10; /*------------------------------*/
if(count!=x) return; else { /*-----------------------------*/ tfix=0; /* 修正完后清修正標(biāo)志 */ /*-----------------------------*/ sec=1; count=0; second++; if(second!=60) return; else { fresh=1; second=0; minul++; if(minul!=10) return; else { minul=0; minuh++; if(minuh!=6) return; else { minuh=0; hourl++; if(hourh==0) { if(hourl!=10) return; else hourl=0; hourh++; if(hourh!=2) return; else { hourh=1; return; } } else { if(hourl!=3) return; else { hourl=0; hourh++; if(hourh!=2) return; else { hourl=1; hourh=0; tfix=1; return; } } } } } } } }
/***************************************************************** ;****************************************************************/ void t0_init(void) { TMOD=0x11; /* T0定時(shí)方式1 */ TH0=0x3c; TL0=0xb0; }
/***************************************************************** ;***************************************************************/ void uart_init(void) { SCON=0; /* 串口工作方式0輸出(不允許接收) */ } /***************************************************************** ;****************************************************************/ void sys_init(void) { IE=0; /* 關(guān)閉所有中斷 */ buf[0]=0; /* 各變量初始化為0 */ buf[1]=0; buf[2]=0; buf[3]=0; hourh=0; hourl=0; minuh=0; minul=0; second=0; count=0; setflag=0; /* 標(biāo)志所在字節(jié)清0 */ uflag=0; EA=1; /* 開(kāi)放中斷 */ }
/***************************************************************** ;****************************************************************/ void settime(void) { uchar i; while(S1); for(i=0;i<4;i++) delay20ms(); while(S1); setflag=0; ss=0; hh=1;
TR1=1; ET1=1; while(1) { buf[0]=hourh; buf[1]=hourl; buf[2]=minuh; buf[3]=minul; /*****************************************************/ if(ss) { switch(setflag) { case 0x01: buf[0]=0x0b; break; case 0x02: buf[1]=0x0b; break; case 0x04: buf[2]=0x0b; break; case 0x08: buf[3]=0x0b; break; } } /****************************************************/ display(); if(S1) goto sett_1; for(i=0;i<4;i++) delay20ms(); if(S1) goto sett_1; if(ml) { TR1=0; ET1=0; buf[0]=hourh; buf[1]=hourl; buf[2]=minuh; buf[3]=minul; return; } setflag<<=1; continue; sett_1: if(S2) continue; for(i=0;i<4;i++) delay20ms(); if(S2) continue; if(!hh) goto sett_2; { hourh++; if(hourh!=2) continue; hourh=0; continue; } sett_2: if(!hl) goto sett_3; { hourl++; if(hourh) goto sett_20; if(hourl==10) goto sett_21; continue; sett_21: hourl=0; continue; sett_20: if(hourl==3) goto sett_22; continue; sett_22: hourl=0; continue; } sett_3: if(!mh) goto sett_4; { minuh++; if(minuh==6) goto sett_30; continue; sett_30: minuh=0; continue; } sett_4: minul++; if(minul==10) goto sett_40; continue; sett_40: minul=0; continue; }
}
/***************************************************************** ;****************************************************************/ void delay20ms(void) { uchar i,j; for(i=0;i<20;i++) for(j=0;j<255;j++) ; }
/***************************************************************** ;****************************************************************/ void timer1(void) interrupt 3 using 1 { TH1=0x3c; /* 100ms定時(shí)常數(shù) */ TL1=0xb0; count++; /* 中斷次數(shù)加1*/ if(count!=5) /* 判到10次(1s)否,不到直接返回 */ return; ss=!ss; /* ss閃爍標(biāo)志求反 */ count=0; }
/***************************************************************** ;****************************************************************/ void t1_init(void) { ; TMOD=0x11; /* T1定時(shí)方式1 */ TH1=0x3c; TL1=0xb0; }
畢業(yè)設(shè)計(jì)總結(jié) 經(jīng)過(guò)了兩個(gè)月的時(shí)間,畢業(yè)設(shè)計(jì)已經(jīng)結(jié)束。在這期間我也經(jīng)歷了很多困難和痛苦。拿到題目我就在網(wǎng)上查閱了大量的資料,也查閱了很多的相關(guān)書(shū)籍,找到了很多月畢業(yè)設(shè)計(jì)有關(guān)的內(nèi)容,從中篩選了寫(xiě)比較貼近的內(nèi)容。 用AT89C2051單片機(jī)來(lái)控制數(shù)字電子鐘,采用單片機(jī)實(shí)現(xiàn)的電子鐘具有成本低、開(kāi)發(fā)周期短、易于實(shí)現(xiàn)和擴(kuò)展的優(yōu)點(diǎn),本設(shè)計(jì)采用軟件方法完成數(shù)字電子時(shí)鐘的設(shè)計(jì)。該設(shè)計(jì)能夠?qū)崿F(xiàn)實(shí)時(shí)時(shí)間顯示功能、定時(shí)報(bào)警功能、時(shí)間修改功能和定時(shí)功能。 通過(guò)這次的畢業(yè)設(shè)計(jì),使我對(duì)單片機(jī)有了更深的認(rèn)識(shí),從理論和實(shí)踐上都得到了很大的提高,所以這次任務(wù)的完成是我學(xué)到了很多東西。首先,豐富了自己的知識(shí)面,學(xué)到了以前沒(méi)能學(xué)通的東西,具體了解了怎樣去完成一個(gè)電路的設(shè)計(jì):從流程圖、用PROTEL畫(huà)出電路圖等一整套東西。從畢業(yè)設(shè)計(jì)中,學(xué)到了單片機(jī)AT89C2051的內(nèi)部結(jié)構(gòu)及其工作原理,了解了時(shí)鐘電路和控制電路的工作原理,還有共陰極數(shù)碼管的工作原理,鞏固了C語(yǔ)言的使用能力,提高了自己動(dòng)手的能力,學(xué)到了很多知識(shí),并且提高了自己分析問(wèn)題的能力。使自己在硬件設(shè)計(jì)方面樹(shù)立了信心,為以后從事這方面的工作打好了基礎(chǔ),這也是這次畢業(yè)設(shè)計(jì)的最大收獲。 在這些都搞得比較明白后就開(kāi)始畫(huà)設(shè)計(jì)流程圖和電路圖,最后用了很長(zhǎng)時(shí)間才畫(huà)出自己的電路圖,給老師看后,在老師的幫助下,改正了幾處有問(wèn)題的地方。 這次的畢業(yè)設(shè)計(jì)總的來(lái)說(shuō)還是很成功的,自己從中學(xué)到很多,也發(fā)現(xiàn)了不少問(wèn)題,為自己以后的學(xué)習(xí)、進(jìn)步打下了不錯(cuò)的基礎(chǔ)。
首頁(yè) 上一頁(yè) 1 2 3 下一頁(yè) 尾頁(yè) 3/3/3
本站部分文章來(lái)自網(wǎng)絡(luò),如發(fā)現(xiàn)侵犯了您的權(quán)益,請(qǐng)聯(lián)系指出,本站及時(shí)確認(rèn)刪除 E-mail:349991040@qq.com
論文格式網(wǎng)(www.donglienglish.cn--論文格式網(wǎng)拼音首字母組合)提供其他論文畢業(yè)論文格式,論文格式范文,畢業(yè)論文范文