版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 實(shí)時(shí)數(shù)字電子時(shí)鐘設(shè)計(jì)</p><p><b> 第一章 前言</b></p><p> 在信息技術(shù)急速發(fā)展的今天,計(jì)算機(jī)科學(xué)日新月異。而單片機(jī)作為計(jì)算機(jī)科學(xué)的一個(gè)分支,在微機(jī)控制領(lǐng)域得到長足的發(fā)展。隨著單片機(jī)的發(fā)展與科學(xué)技術(shù)的提高,單片機(jī)已經(jīng)成為人類生產(chǎn)生活中不可缺少的工具。現(xiàn)在,單片機(jī)的應(yīng)用已經(jīng)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域
2、沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置、飛機(jī)上各種儀表的控制、計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸、工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理、廣泛使用的各種智能IC卡、民用豪華轎車的安全保障系統(tǒng)、錄象機(jī)、攝象機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。</p><p> 單片機(jī)要解決的問題多數(shù)是仍是老問題,新穎之處是比以前用較少的元件。尤其是設(shè)計(jì)邏輯關(guān)系
3、復(fù)雜的控制系統(tǒng),過去用通用的邏輯門集成電路芯片將需要幾十片甚至上百片,而現(xiàn)在只用幾片就能夠?qū)崿F(xiàn),而且方便靈活,做設(shè)計(jì)修改或改動(dòng)功能時(shí),只需改寫軟件原文件重寫芯片,免去了在硬件線路上大動(dòng)干戈的苦差事。大連減少芯片個(gè)數(shù)主要是靠單片機(jī)的可編程性和高度集成化。使開發(fā)周期更短,制造成本更低,用電更省和可靠性更高。要求用各種邏輯門芯片實(shí)現(xiàn)的邏輯電路,可以用一片單片機(jī)芯片加上相應(yīng)的控制軟件就可以實(shí)現(xiàn)。</p><p> 用單
4、片機(jī)的另一個(gè)優(yōu)點(diǎn)是設(shè)計(jì)軟件將不斷積累,不斷模塊化,形成標(biāo)準(zhǔn)化軟件,大大提高了開發(fā)效率。</p><p> 數(shù)字電子鐘的設(shè)計(jì)方法有很多種,例如可以用中小規(guī)模的集成電路組成電子鐘;也可以用專用的電子鐘芯片配以顯示電路及所需要的外圍電路組成電子鐘;還可以利用單片機(jī)來實(shí)現(xiàn)電子鐘。這些方法各有特點(diǎn),其中利用單片機(jī)實(shí)現(xiàn)的電子鐘具有編程靈活,便于電子鐘功能的擴(kuò)充,即可以使用該電電子鐘發(fā)出控制信號(hào),精度高的特點(diǎn)。</p&
5、gt;<p> 在本次畢業(yè)設(shè)計(jì)的任務(wù)及要求為:</p><p> 一、本系統(tǒng)四個(gè)數(shù)碼管DIS1-DIS4從左至右,顯示“小時(shí)”“分鐘”。</p><p> 二、本系統(tǒng)有一組報(bào)警定時(shí)。</p><p> 三、P3.7為報(bào)警輸出端,平時(shí)輸出高電平,當(dāng)電子鐘的時(shí)間和設(shè)定的時(shí)間相同時(shí),系統(tǒng)輸出報(bào)警信號(hào)1秒鐘的低電平。</p><p&
6、gt; 四、系統(tǒng)有三個(gè)按鍵:SET、TURN、ADD 用作修改“電子鐘時(shí)間”和設(shè)定“定時(shí)時(shí)間”。具體操作如下:</p><p><b> 第五章 總結(jié)</b></p><p> 在本次畢業(yè)設(shè)計(jì)中我做的課題是實(shí)時(shí)數(shù)字電子時(shí)鐘。一開始拿到這個(gè)題目的時(shí)候,就覺得很熟悉,電子時(shí)鐘是經(jīng)??梢砸姷降臇|西,后來自己在網(wǎng)上找資料、看書,總算完成了。通過這次的畢業(yè)設(shè)計(jì)
7、,使我對(duì)單片機(jī)有了更深的認(rèn)識(shí),從理論和實(shí)踐上都得到了很大的提高,所以這次任務(wù)的完成是我學(xué)到了很多東西。首先,豐富了自己的知識(shí)面,學(xué)到了以前沒能學(xué)通的東西,具體了解了怎樣去完成一個(gè)電路的設(shè)計(jì):從流程圖、用Protel畫出電路圖等一整套東西。從畢業(yè)設(shè)計(jì)中,學(xué)到了單片機(jī)AT89C2051的內(nèi)部結(jié)構(gòu)及其工作原理,了解了時(shí)鐘電路和控制電路的工作原理,還有共陰極數(shù)碼管的工作原理,鞏固了C51語言的使用能力,提高了自己動(dòng)手的能力,學(xué)到了很多知識(shí),并且
8、提高了自己分析問題的能力和解決問題的能力。使自己在硬件設(shè)計(jì)方面樹立了信心,為以后從事這方面的工作打好了基礎(chǔ),這也是這次畢業(yè)設(shè)計(jì)的最大收獲。</p><p> 這次畢業(yè)設(shè)計(jì)中我要了解單片機(jī)AT89C2051、數(shù)碼顯示管的有關(guān)知識(shí),學(xué)習(xí)時(shí)鐘電路、控制電路的設(shè)計(jì)原理。有些看不懂的地方就去問同學(xué)或者去網(wǎng)上找資料。在這些都搞得比較明白后就開始畫設(shè)計(jì)流程圖和電路圖,最后用了很長時(shí)間才畫出自己的電路圖。</p>
9、<p> 從這次畢業(yè)設(shè)計(jì)中自己從中學(xué)到很多,也發(fā)現(xiàn)了不少問題,為自己以后的學(xué)習(xí)和工作打下了不錯(cuò)的基礎(chǔ)。</p><p><b> 致謝</b></p><p> 在這次的畢業(yè)設(shè)計(jì)中,同組的同學(xué)給予了我許多幫助,大家一起討論,分工合作,才使這次的畢業(yè)設(shè)計(jì)能夠順利完成,這應(yīng)該是同學(xué)們最后一次完成作業(yè)了,也給予我美好的回憶。在這里,十分感謝他們。</
10、p><p> 在本次畢業(yè)設(shè)計(jì)中,先要感謝學(xué)校給予我們這個(gè)鍛煉的機(jī)會(huì),還要感謝指導(dǎo)老師,為此她為我們花費(fèi)了好多時(shí)間和精力。</p><p><b> 參考文獻(xiàn)</b></p><p> 1. Micrel Inc. QwikRadio TM UHF ASK Transmitter[A] .2001,8</p><p>
11、 2. Micrel Inc. QwikRadio TM Low Power UHF Receiver[A] .2001,8</p><p> 3. 薛曉書. 單片微機(jī)原理及接口技術(shù)[M].西安石油大學(xué) 2002,3</p><p> 4. 黃智偉,朱衛(wèi)華. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用[M].南華大學(xué).2005,3</p><p> 5. 付浩.AT89C2051
12、單片機(jī)高速串行輸出口設(shè)計(jì)[A].淮陰師范學(xué)院 2004,10</p><p> 6. 周志德 單片機(jī)原理及應(yīng)用 高等教育出版社 2001,6</p><p> 7. 徐淑華 單片微型機(jī)原理及應(yīng)用 哈爾濱工業(yè)大學(xué)出版社 1990</p><p> 8. 吳微,文軍. 單片機(jī)原理及制作 武漢大學(xué)出版社 1991</p><p> 9. 薛
13、鈞義,張彥斌. MCS-51、96系列單片微型計(jì)算機(jī)及其應(yīng)用 西安交通大學(xué)出版社 1990</p><p> 10.何立民. MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù) 北京航空航天大學(xué)出版社 1990</p><p> 附錄一 系統(tǒng)硬件電路圖</p><p><b> 附錄二:程序清單</b></p><p
14、> void main(void)</p><p><b> {</b></p><p> sys_init();/* 系統(tǒng)初始化 */</p><p> t0_init();/* 定時(shí)器初始化 */</p><p> t1_init();</p><p>
15、uart_init();/* 串口初始化 */</p><p> buf[0]=0x0a;/* "P."的段碼送顯示緩沖區(qū) */</p><p> buf[1]=0x0b;</p><p> buf[2]=0x0b;</p><p> buf[3]=0x0b;</p><p>
16、; display();/* 顯示待機(jī)符P. */</p><p> settime();/* 等待設(shè)置當(dāng)前時(shí)間 */</p><p> display();/* 帶閃爍后要加顯,否則會(huì)出現(xiàn)尾位不顯的現(xiàn)象 */</p><p> TR0=1;/* 設(shè)置完后開始走時(shí),啟動(dòng)定時(shí)器T0 */</p><
17、p> ET0=1;/* 允許T0溢出中斷 */</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(fresh)/* 判是否要刷新顯示(分或時(shí)變化) */</p><p><b> {<
18、/b></p><p> buf[0]=hourh;/* 是,則新的時(shí)間送顯示緩沖區(qū) */</p><p> buf[1]=hourl;</p><p> buf[2]=minuh;</p><p> buf[3]=minul;</p><p> display();/* 顯示刷新 */<
19、;/p><p> if(sec)/* 判秒指示要刷新否 */</p><p><b> {</b></p><p> sec=0;/* 是,則刷新(閃爍) */</p><p><b> L1=!L1;</b></p><p><b> L2=!
20、L2;</b></p><p> delay20ms();/* 點(diǎn)亮?xí)r間不能太長,否則影響秒指示,短則太暗 */</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p>
21、<p><b> {</b></p><p><b> if(sec)</b></p><p><b> {</b></p><p><b> sec=0;</b></p><p><b> L1=!L1;</b>
22、</p><p><b> L2=!L2;</b></p><p> delay20ms();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&
23、gt;<p><b> }</b></p><p> void display(void)</p><p><b> {</b></p><p> uchar out;</p><p> DISPCON=1;/* 關(guān)閉顯示,防止傳送數(shù)據(jù)期間閃爍 */</p&g
24、t;<p> out=seg[buf[0]];/* 取出高位時(shí)段碼 */</p><p> SBUF=out;/* 送入74LS164 */</p><p> while(!TI);/* 等待發(fā)送完成 */</p><p><b> TI=0;</b></p><p> out
25、=seg[buf[1]];/* 取出低位時(shí)段碼 */</p><p> out&=0xfe;/* 顯示時(shí)分分隔符:(這里用.代替)*/</p><p><b> SBUF=out;</b></p><p> while(!TI);</p><p><b> TI=0;</b&g
26、t;</p><p> out=seg[buf[2]];/* 分*/</p><p><b> SBUF=out;</b></p><p> while(!TI);</p><p><b> TI=0;</b></p><p> out=seg[buf[3]];
27、</p><p><b> SBUF=out;</b></p><p> while(!TI);</p><p><b> TI=0;</b></p><p> DISPCON=0;/* 所有數(shù)據(jù)已送入后開顯示*/</p><p><b> }&l
28、t;/b></p><p> buf[0]=hourh;/* 將目前設(shè)定的參數(shù)送顯示緩沖區(qū) */</p><p> buf[1]=hourl;</p><p> buf[2]=minuh;</p><p> buf[3]=minul;</p><p> if(ss) /* 這部分
29、程序?qū)崿F(xiàn)了當(dāng)前位閃爍 */</p><p><b> {</b></p><p> switch(setflag)/* 判當(dāng)前設(shè)定位 */</p><p><b> {</b></p><p> case 0x01: buf[0]=0x0b;/* 全暗代碼 */</p>
30、<p><b> break;</b></p><p> case 0x02: buf[1]=0x0b;</p><p><b> break;</b></p><p> case 0x04: buf[2]=0x0b;</p><p><b> break;&l
31、t;/b></p><p> case 0x08: buf[3]=0x0b;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> display(
32、);</p><p> void timer1(void) interrupt 3 using 1 </p><p><b> {</b></p><p> TH1=0x3c;/* 100ms定時(shí)常數(shù) */</p><p><b> TL1=0xb0;</b></p>
33、<p> count++;/* 中斷次數(shù)加1*/</p><p> if(count!=5)/* 判到10次(1s)否,不到直接返回 */</p><p><b> return;</b></p><p> ss=!ss;/* ss閃爍標(biāo)志求反 */</p><p><b&
34、gt; count=0;</b></p><p><b> }</b></p><p> void settime(void)</p><p><b> {</b></p><p><b> uchar i;</b></p><p>
35、; while(S1);/* 等待S1鍵開始設(shè)置 */</p><p> for(i=0;i<4;i++)</p><p> delay20ms();/* 延時(shí)去抖動(dòng) */</p><p> while(S1);</p><p> setflag=0;</p><p><b>
36、ss=0;</b></p><p> hh=1;/* 設(shè)置當(dāng)前位標(biāo)志 */</p><p> TR1=1;/* 啟動(dòng)定時(shí)器T1 */</p><p> ET1=1;/* 允許T1溢出中斷 */</p><p> void settime(void)</p><p>&l
37、t;b> {</b></p><p><b> uchar i;</b></p><p> while(S1);/* 等待S1鍵開始設(shè)置 */</p><p> for(i=0;i<4;i++)</p><p> delay20ms();/* 延時(shí)去抖動(dòng) */</p&g
38、t;<p> while(S1);</p><p> setflag=0;</p><p><b> ss=0;</b></p><p> hh=1;/* 設(shè)置當(dāng)前位標(biāo)志 */</p><p> TR1=1;/* 啟動(dòng)定時(shí)器T1 */</p><p>
39、 ET1=1;/* 允許T1溢出中斷 */</p><p><b> break;</b></p><p> case 0x04: buf[2]=0x0b;</p><p><b> break;</b></p><p> case 0x08: buf[3]=0x0b;<
40、/p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> /****************************************************/</p>&
41、lt;p> display();</p><p> if(S1) goto sett_1;</p><p> for(i=0;i<4;i++)</p><p> delay20ms();/* 延時(shí)去抖動(dòng) */</p><p> if(S1) goto sett_1;</p><p><b&
42、gt; if(ml) </b></p><p><b> {</b></p><p> TR1=0;/* 關(guān)閉定時(shí)器T1 */</p><p> ET1=0;/* 禁止T1溢出中斷 */</p><p> buf[0]=hourh;</p><p>
43、buf[1]=hourl;</p><p> buf[2]=minuh;</p><p> buf[3]=minul;</p><p> return;/* 如果當(dāng)前編輯的份低位,則按S1鍵結(jié)束設(shè)定 */</p><p><b> }</b></p><p> setflag<
44、<=1;/* 當(dāng)前位右移(標(biāo)志左移1位) */</p><p><b> continue;</b></p><p> sett_1:if(S2)continue;</p><p> for(i=0;i<4;i++)</p><p> delay20ms();/* 延時(shí)去抖動(dòng) */</
45、p><p> if(S2)continue;</p><p> if(!hh) goto sett_2;</p><p> {hourh++;/* 時(shí)高位加1處理 */</p><p> if(hourh!=2) continue;</p><p> hourh=0;/* 時(shí)高位只能是0,1 */&l
46、t;/p><p><b> continue;</b></p><p><b> }</b></p><p> sett_2:if(!hl) goto sett_3;</p><p><b> {</b></p><p> hourl++;/*
47、時(shí)低位加1處理,高位為0,可以是0~9,否則,只能0~2 */</p><p> if(hourh) goto sett_20;</p><p> if(hourl==10) goto sett_21;</p><p><b> continue;</b></p><p> sett_21:hourl=0;&l
48、t;/p><p><b> continue;</b></p><p> sett_20:if(hourl==3) goto sett_22;</p><p><b> continue;</b></p><p> sett_22:hourl=0;</p><p>&
49、lt;b> continue;</b></p><p><b> }</b></p><p> sett_3:if(!mh)goto sett_4;</p><p> {minuh++;/* 分高位加1處理,只能是0~5 */</p><p> if(minuh==6) goto s
50、ett_30;</p><p><b> continue;</b></p><p> sett_30:minuh=0;</p><p><b> continue;</b></p><p><b> }</b></p><p> sett_
51、4:minul++;/* 分低位加1處理,只能是0~9 */</p><p> if(minul==10) goto sett_40;</p><p><b> continue;</b></p><p> sett_40:minul=0;</p><p><b> continue;<
52、/b></p><p><b> }</b></p><p><b> }</b></p><p> #include "REG51.H"</p><p> #defineucharunsigned char</p><p> #
53、definePSEG0x30/* P.的段碼 */</p><p> /* 0~9和P,暗的的段碼(共陽數(shù)碼管) */</p><p> uchar code seg[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x30,0xff}; </p><p> /*****************
54、************************************************</p><p> ;74LS164的3 4 5 6 10 11 12 13 對(duì)應(yīng)數(shù)碼管的A,B,C,D,E,F(xiàn),G,DP</p><p> DB0C0h,0F9H,0A4H,0B0H,99H</p><p> ;DB92H,82H,0F8H,80H,9
55、0H</p><p> *****************************************************************/</p><p> /* 輸入輸出定義 */</p><p> sbit DISPCON=P3^2;/* 顯示控制 */</p><p> sbit S1=P1^3;
56、/* 設(shè)置鍵 */</p><p> sbit S2=P1^2;/* 數(shù)字+1鍵 */</p><p> sbit L1=P1^7;/* L1,L2構(gòu)成秒指示":" */</p><p> sbit L2=P1^6;</p><p> /* 全局變量定義 */</p>
57、<p> ucharbuf[4];/* 顯示緩沖區(qū) */</p><p> ucharhourh;/* BCD時(shí)鐘各位 */</p><p> ucharhourl;</p><p> ucharminuh;</p><p> ucharminul;</p><p> u
58、char second;/* 秒變量 */</p><p> ucharcount;/* 溢出中斷計(jì)數(shù)器 */</p><p> ucharbdata setflag;/* 設(shè)置用標(biāo)志字節(jié) */</p><p> ucharbdata uflag;/* 通用標(biāo)志字節(jié) */ </p><p>
59、/* 位變量定義 */</p><p> /* 以下4個(gè)位變量在setflag中,便于移位處理 */</p><p> sbithh =setflag^0;/* 當(dāng)前設(shè)置位標(biāo)志 */</p><p> sbithl =setflag^1;</p><p> sbitmh =setflag^2;</p><
60、;p> sbitml =setflag^3;</p><p> /* 以下位變量在uflag */</p><p> sbitfresh=uflag^0;/* 顯示刷新標(biāo)志 */</p><p> sbitss=uflag^1;/* 位閃爍標(biāo)志 */</p><p> sbitsec=uflag^2;/
61、* 秒指示標(biāo)志 */</p><p> sbitwarning=uflag^3;/* 定時(shí)標(biāo)志 */</p><p> /*-----------------------------------------------------------------*/</p><p> sbittfix=uflag^4;/* 開始修正標(biāo)志 */</p&
62、gt;<p> #define N60/* 誤差值,單位:1/10秒,默認(rèn)為0,即不修正 */</p><p> /*-----------------------------------------------------------------*/</p><p> /* 函數(shù)說明 */</p><p> void sys_ini
63、t(void);</p><p> void t0_init(void);</p><p> void uart_init(void);</p><p> void display(void);</p><p> void delay20ms(void) ;</p><p> void settime(voi
64、d);</p><p> void t1_init(void);</p><p> /*****************************************************************</p><p> ;時(shí)鐘主函數(shù):main()</p><p> ;定時(shí)器T0工作于中斷方式</p>&l
65、t;p> ;一旦走時(shí)開始,無法進(jìn)行設(shè)置。如要重新設(shè)置,則必須復(fù)位</p><p><b> ;24小時(shí)制</b></p><p> ;如果某74LS164的1,2腳與其他74LS164的1,2腳錯(cuò)連了,則會(huì)出現(xiàn)同顯示的狀態(tài)</p><p><b> ;</b></p><p> ;帶
66、編輯設(shè)定位閃爍功能和走時(shí)誤差自動(dòng)糾正功能.與此相關(guān)的函數(shù)是:</p><p> ; settime(),位閃爍標(biāo)志ss</p><p> ; timer1(),在settime()中啟動(dòng),每1s將標(biāo)志ss求反,達(dá)到閃爍目的</p><p> ;*********************************************************
67、**********</p><p> ;******************************************************************/</p><p> void main(void) </p><p><b> {</b></p><p> sys_init();
68、</p><p> t0_init();</p><p> t1_init();</p><p> uart_init();</p><p> buf[0]=0x0a;</p><p> buf[1]=0x0b;</p><p> buf[2]=0x0b
69、;</p><p> buf[3]=0x0b;</p><p> display();</p><p> settime();</p><p> display();</p><p> TR0=1;</p><p> ET0=1;
70、</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(fresh)</p><p><b> {</b></p><p> buf[0]=hourh;</p>
71、<p> buf[1]=hourl;</p><p> buf[2]=minuh;</p><p> buf[3]=minul;</p><p> display();</p><p> if(sec) </p><p><b> {</b></p&g
72、t;<p><b> sec=0;</b></p><p><b> L1=!L1;</b></p><p><b> L2=!L2;</b></p><p> delay20ms();</p><p><b> }</b>
73、</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> if(sec)</b></p><p><b> {</b
74、></p><p><b> sec=0; </b></p><p><b> L1=!L1;</b></p><p><b> L2=!L2;</b></p><p> delay20ms();</p><p><b> }&
75、lt;/b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /**********************************************************
76、*******</p><p> ;****************************************************************/</p><p> void display(void) </p><p><b> {</b></p><p> uchar out;</
77、p><p> DISPCON=1;</p><p> out=seg[buf[0]];</p><p> SBUF=out;</p><p> while(!TI);</p><p><b> TI=0;</b></p><p> out
78、=seg[buf[1]];</p><p> out&=0xfe;</p><p><b> SBUF=out;</b></p><p> while(!TI);</p><p><b> TI=0; </b></p><p> out=seg[
79、buf[2]];</p><p><b> SBUF=out;</b></p><p> while(!TI);</p><p><b> TI=0;</b></p><p> out=seg[buf[3]];</p><p><b> SBUF=ou
80、t;</b></p><p> while(!TI);</p><p><b> TI=0;</b></p><p> DISPCON=0;</p><p><b> }</b></p><p> /***********************
81、******************************************</p><p> ;****************************************************************/</p><p> void timer0(void) interrupt 1 using 1 </p><p><b&
82、gt; {</b></p><p><b> ucharx;</b></p><p> fresh=0;</p><p> sec=0;</p><p> TH0=0x3c;</p><p><b> TL0=0xb0;</b&g
83、t;</p><p> count++;</p><p> /*------------------------------*/</p><p> if(tfix)</p><p><b> x=N;</b></p><p><b> else</b>
84、;</p><p><b> x=10;</b></p><p> /*------------------------------*/</p><p> if(count!=x)</p><p><b> return;</b></p><p><b&g
85、t; else</b></p><p><b> {</b></p><p> /*-----------------------------*/</p><p> tfix=0;/* 修正完后清修正標(biāo)志 */</p><p> /*------------------------
86、-----*/</p><p><b> sec=1;</b></p><p><b> count=0;</b></p><p><b> second++;</b></p><p> if(second!=60)</p><p><
87、b> return;</b></p><p><b> else</b></p><p><b> {</b></p><p> fresh=1;</p><p> second=0;</p><p><b> minul+
88、+;</b></p><p> if(minul!=10)</p><p><b> return;</b></p><p><b> else</b></p><p><b> {</b></p><p><b> m
89、inul=0;</b></p><p><b> minuh++;</b></p><p> if(minuh!=6)</p><p><b> return;</b></p><p><b> else</b></p><p>&l
90、t;b> {</b></p><p><b> minuh=0;</b></p><p><b> hourl++;</b></p><p> if(hourh==0)</p><p><b> {</b></p><p>
91、 if(hourl!=10)</p><p><b> return;</b></p><p><b> else</b></p><p><b> hourl=0;</b></p><p><b> hourh++;</b></p>
92、<p> if(hourh!=2) </p><p><b> return;</b></p><p><b> else</b></p><p><b> {</b></p><p><b> hourh=1;</b></
93、p><p><b> return;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b>
94、</p><p> if(hourl!=3)</p><p><b> return;</b></p><p><b> else</b></p><p><b> {</b></p><p><b> hourl=0;</b&
95、gt;</p><p><b> hourh++;</b></p><p> if(hourh!=2)</p><p><b> return;</b></p><p><b> else</b></p><p><b> {<
96、/b></p><p><b> hourl=1;</b></p><p><b> hourh=0;</b></p><p> tfix=1;</p><p><b> return;</b></p><p><b>
97、}</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
98、; }</b></p><p><b> }</b></p><p><b> }</b></p><p> /*****************************************************************</p><p> ;******
99、**********************************************************/</p><p> void t0_init(void)</p><p><b> {</b></p><p> TMOD=0x11;/* T0定時(shí)方式1 */</p><p><b
100、> TH0=0x3c;</b></p><p><b> TL0=0xb0;</b></p><p><b> }</b></p><p> /*****************************************************************</p>
101、<p> ;***************************************************************/</p><p> void uart_init(void)</p><p><b> {</b></p><p> SCON=0;/* 串口工作方式0輸出(不允許接收) */&
102、lt;/p><p><b> }</b></p><p> /*****************************************************************</p><p> ;****************************************************************/
103、</p><p> void sys_init(void)</p><p><b> {</b></p><p> IE=0;/* 關(guān)閉所有中斷 */</p><p> buf[0]=0;/* 各變量初始化為0 */</p><p> buf[1]=0;<
104、;/p><p><b> buf[2]=0;</b></p><p><b> buf[3]=0;</b></p><p> hourh=0;</p><p><b> hourl=0;</b></p><p><b> minu
105、h=0;</b></p><p><b> minul=0;</b></p><p> second=0;</p><p> count=0;</p><p> setflag=0;/* 標(biāo)志所在字節(jié)清0 */</p><p><b> uf
106、lag=0;</b></p><p> EA=1;/* 開放中斷 */</p><p><b> }</b></p><p> /*****************************************************************</p><p> ;*
107、***************************************************************/</p><p> void settime(void)</p><p><b> {</b></p><p><b> uchar i;</b></p><p>
108、 while(S1);</p><p> for(i=0;i<4;i++)</p><p> delay20ms();</p><p> while(S1);</p><p> setflag=0;</p><p><b> ss=0;</b></p>&
109、lt;p> hh=1;</p><p> TR1=1;</p><p> ET1=1;</p><p><b> while(1)</b></p><p><b> {</b></p><p> buf[0]=hourh;<
110、;/p><p> buf[1]=hourl;</p><p> buf[2]=minuh;</p><p> buf[3]=minul;</p><p> /*****************************************************/</p><p> if(ss) <
111、;/p><p><b> {</b></p><p> switch(setflag)</p><p><b> {</b></p><p> case 0x01: buf[0]=0x0b;</p><p><b> break;</b><
112、;/p><p> case 0x02: buf[1]=0x0b;</p><p><b> break;</b></p><p> case 0x04: buf[2]=0x0b;</p><p><b> break;</b></p><p> case 0x08:
113、 buf[3]=0x0b;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> /************************************************
114、****/</p><p> display();</p><p> if(S1) goto sett_1;</p><p> for(i=0;i<4;i++)</p><p> delay20ms();</p><p> if(S1) goto sett_1;</p><p>
115、;<b> if(ml) </b></p><p><b> {</b></p><p> TR1=0;</p><p> ET1=0;</p><p> buf[0]=hourh;</p><p> buf[1]=hourl;</p&
116、gt;<p> buf[2]=minuh;</p><p> buf[3]=minul;</p><p><b> return;</b></p><p><b> }</b></p><p> setflag<<=1;</p><p&
117、gt;<b> continue;</b></p><p> sett_1:if(S2)continue;</p><p> for(i=0;i<4;i++)</p><p> delay20ms();</p><p> if(S2)continue;</p><p>
118、if(!hh) goto sett_2;</p><p> {hourh++;</p><p> if(hourh!=2) continue;</p><p> hourh=0;</p><p><b> continue;</b></p><p><b> }<
119、;/b></p><p> sett_2:if(!hl) goto sett_3;</p><p><b> {</b></p><p> hourl++;</p><p> if(hourh) goto sett_20;</p><p> if(hourl==10) got
120、o sett_21;</p><p><b> continue;</b></p><p> sett_21:hourl=0;</p><p><b> continue;</b></p><p> sett_20:if(hourl==3) goto sett_22;</p>
121、<p><b> continue;</b></p><p> sett_22:hourl=0;</p><p><b> continue;</b></p><p><b> }</b></p><p> sett_3:if(!mh)goto s
122、ett_4;</p><p> {minuh++;</p><p> if(minuh==6) goto sett_30;</p><p><b> continue;</b></p><p> sett_30:minuh=0;</p><p><b> continu
123、e;</b></p><p><b> }</b></p><p> sett_4:minul++;</p><p> if(minul==10) goto sett_40;</p><p><b> continue;</b></p><p>
124、 sett_40:minul=0;</p><p><b> continue;</b></p><p><b> }</b></p><p><b> }</b></p><p> /****************************************
125、*************************</p><p> ;****************************************************************/</p><p> void delay20ms(void)</p><p><b> {</b></p><p>
126、; uchar i,j;</p><p> for(i=0;i<20;i++)</p><p> for(j=0;j<255;j++) ;</p><p><b> }</b></p><p> /***************************************************
127、**************</p><p> ;****************************************************************/</p><p> void timer1(void) interrupt 3 using 1 </p><p><b> {</b></p>&
128、lt;p> TH1=0x3c;/* 100ms定時(shí)常數(shù) */</p><p><b> TL1=0xb0;</b></p><p> count++;/* 中斷次數(shù)加1*/</p><p> if(count!=5)/* 判到10次(1s)否,不到直接返回 */</p><p><
129、;b> return;</b></p><p> ss=!ss;/* ss閃爍標(biāo)志求反 */</p><p><b> count=0;</b></p><p><b> }</b></p><p> /*****************************
130、************************************</p><p> ;****************************************************************/</p><p> void t1_init(void)</p><p><b> {</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電子時(shí)鐘畢業(yè)設(shè)計(jì)
- 數(shù)字顯示電子時(shí)鐘畢業(yè)設(shè)計(jì)
- 數(shù)字電子時(shí)鐘的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 電子時(shí)鐘畢業(yè)設(shè)計(jì)
- 數(shù)字顯示電子時(shí)鐘畢業(yè)設(shè)計(jì)論文(修訂)
- 數(shù)字顯示電子時(shí)鐘畢業(yè)設(shè)計(jì)論文(修訂)
- 數(shù)字電子時(shí)鐘設(shè)計(jì)
- 秒表電子時(shí)鐘畢業(yè)設(shè)計(jì)
- 電子時(shí)鐘畢業(yè)設(shè)計(jì)論文
- 電子時(shí)鐘畢業(yè)設(shè)計(jì)論文
- 電子時(shí)鐘——畢業(yè)設(shè)計(jì)論文
- 電子時(shí)鐘——畢業(yè)設(shè)計(jì)論文
- 電子時(shí)鐘畢業(yè)設(shè)計(jì)--多功能數(shù)字鐘設(shè)計(jì)
- 電子畢業(yè)設(shè)計(jì)---多功能電子時(shí)鐘
- 電子時(shí)鐘設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)設(shè)計(jì)】
- 多功能電子時(shí)鐘畢業(yè)設(shè)計(jì)
- 數(shù)字電子時(shí)鐘的設(shè)計(jì) 畢業(yè)論文
- 畢業(yè)論文--數(shù)字電子時(shí)鐘的設(shè)計(jì)
- 電子時(shí)鐘課程設(shè)計(jì)--數(shù)字電子時(shí)鐘焊接調(diào)試報(bào)告
- 數(shù)字電子課程設(shè)計(jì)--數(shù)字電子時(shí)鐘
評(píng)論
0/150
提交評(píng)論