版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 單片機 課 程 設(shè) 計 報 告</p><p> 院系: 信息工程學院</p><p> 專業(yè): 電子信息工程</p><p> 課程設(shè)計題目: 基于51單片機的定時鬧鐘設(shè)計</p><p> 2
2、014年12月29日</p><p> 目 錄</p><p> 概述---------------------------------------------------------------------------------------------------3</p><p> 原理圖的繪制----------------------
3、-----------------------------------------------------------------3</p><p> 2-1原理及工作過程說明---------------------------------------------------------------------4</p><p> 2-2原理圖--------------------
4、-------------------------------------------------------------------4</p><p> 2-3元器件功能說明---------------------------------------------------------------------------5</p><p> 2-3-1 STC89C52單片機引
5、腳功能說明--------------------------------------------------5</p><p> 2-3-2 LCD1602液晶顯示器--------------------------------------------------------------7</p><p> 2-3-3 其它重要元件---------------------
6、---------------------------------------------------9</p><p> 流程圖繪制以及說明------------------------------------------------------------------------------10</p><p> Proteus仿真說明----------------------
7、--------------------------------------------------------------11</p><p> 課程設(shè)計體會----------------------------------------------------------------------------------------11</p><p> 參考文獻----------
8、------------------------------------------------------------------------------------12</p><p> 原理圖及程序-----------------------------------------------------------------------------------------13</p>&l
9、t;p><b> 一、概述</b></p><p> 本設(shè)計師定時鬧鐘的設(shè)計,由單片機STC89C52芯片和LCD、LED顯示器,輔以必要的的電路,構(gòu)成一個單片機定時鬧鐘。電子鐘可采用數(shù)字電路實現(xiàn),也可以采用單片機來完成。LCD顯示“時”,“分”,LED閃動來做秒計數(shù),定時時間到能發(fā)出警報聲或者啟動繼電器,從而控制電器的啟?!,F(xiàn)在是自動化高度發(fā)達的時代,特別是電子類產(chǎn)品都是靠內(nèi)部的
10、控制電路來實現(xiàn)對產(chǎn)品的控制,達到自動運行的目的,這就需要我們這里要做的設(shè)計中的電器元件及電路的支持。</p><p> 在這次設(shè)計中主要是用STC89S52來進行定時,也結(jié)合著其他輔助電路實施控制,在定時的時候,按一下控制小時的鍵對小時加一;按一下控制分鐘的鍵對分鐘加一;到達預(yù)設(shè)的時間,此電路就會發(fā)出報警聲音提示已經(jīng)到點。</p><p><b> 二、原理圖繪制說明<
11、/b></p><p> 1、原理及工作過程說明</p><p> ?。?)定時鬧鐘的基本功能如下 :</p><p> ?。╝)使用LCD液晶顯示器來顯示現(xiàn)在的時間 。</p><p> (b)程序執(zhí)行之后顯示“Time:00:00” ; 并且LED閃爍,表示開始已經(jīng)計時。</p><p> (c)由L
12、ED閃動來做秒計數(shù)表示。</p><p> ?。?)按鍵功能如下 :</p><p> 按鍵K1設(shè)置現(xiàn)在的時間和時調(diào)整;按鍵K2顯示鬧鐘設(shè)置的時間和分調(diào)整;按鍵K3設(shè)置鬧鈴的時間和設(shè)置完成;按鍵K4鬧鈴ON/OFF的狀態(tài)設(shè)置,設(shè)置為ON時連續(xù)三次發(fā)出“嘩”的一聲,設(shè)置為OFF發(fā)出“嘩”的一聲和鬧鈴時間到時,發(fā)出一陣聲響,按下本鍵可以停止聲響。</p><p>
13、(3)調(diào)整計時器時間如下 :</p><p> 按下K1鍵,然后按K1調(diào)整小時,K2調(diào)整分鐘,按下K3表示時間設(shè)置完成。</p><p> ?。?)調(diào)整鬧鐘時間設(shè)置如下 :</p><p> 再次按下K3開始鬧中設(shè)置,LCD下一行顯示“Alarm:00:00”按下K1設(shè)置小時,按一下K2設(shè)置分鐘,再次按下K3設(shè)置完成,并且設(shè)置時間消失,當再次按一下K2時“Ala
14、rm:00:00再次顯示并馬上消失。按一下K4關(guān)閉鬧鐘,再次按下打開鬧鐘。</p><p><b> 2、原理圖</b></p><p><b> 圖1 總原理圖</b></p><p><b> 3、元器件功能說明</b></p><p> 3.1 STC89C5
15、1單片機引腳功能說明</p><p> 本設(shè)計的核心硬件就是8051芯片,這里選擇了STC89C51,STC89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。
16、由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,STC89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。</p><p> P0口:P0口為一個8位漏級開路雙 向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時
17、,P0輸出原碼,此時P0外部必須被拉高。</p><p> P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。</p><p> P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口
18、,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號
19、。</p><p> P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。</p><p> P3口也可作為STC89C52的一些特殊功能口,如下所示:</p><p> P3口管腳 備選功能&l
20、t;/p><p> P3.0 RXD(串行輸入口)</p><p> P3.1 TXD(串行輸出口)</p><p> P3.2 /INT0(外部中斷0)</p><p> P3.3 /INT1(外部中斷1)</p><p> P3.4 T0(記時器0外部輸入)</p><p> P3.
21、5 T1(記時器1外部輸入)</p><p> P3.6 /WR(外部數(shù)據(jù)存儲器寫選通)</p><p> P3.7 /RD(外部數(shù)據(jù)存儲器讀選通)</p><p> P3口同時為閃爍編程和編程校驗接收一些控制信號。</p><p> RST:復(fù)位輸入。當振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。</p>
22、<p> ALE/PROG:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE
23、才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p> PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。</p><p> EA/VPP:當/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存
24、儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。</p><p> XTAL2:來自反向振蕩器的輸出。</p><p> 圖2 STC89C52引腳圖</p>
25、<p> 3.21602LCD液晶顯示器</p><p> 圖3 LCD1602引腳圖</p><p><b> 功能說明</b></p><p> 圖4 LCD引腳圖說明</p><p> 第1腳:VSS為地電源。</p><p> 第2腳:VDD接5V正電源。
26、</p><p> 第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。</p><p> 第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。</p><p> 第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R
27、/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。</p><p> 第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。</p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。</p><p> 第15腳:背光源正極。</p><p&
28、gt; 第16腳:背光源負極。</p><p> 3.3 其他重要元件</p><p> 獨立式鍵盤的接口電路:在單片機應(yīng)用系統(tǒng)中,有時只需要幾個簡單的按鍵向系統(tǒng)輸入信息。這時,可將每個按鍵接在一根I/O接口線上,這種方式的連接稱為獨立式鍵盤。每個獨立式按鍵單獨占有一根 I/O接口線,每根I/O接口線的工作狀態(tài)不 會影響到其他 I/O接口線 。這種按鍵接口電路配置靈活,硬件結(jié)構(gòu)簡單
29、,但每個按鍵必須占用一根I/O接口線,I/O接口線浪費較大。故只在按鍵數(shù)量不多時采用這種按鍵電路。在此電路中,按鍵輸入都采用低電平有效。上拉電阻保證了按鍵斷開時,I/O接口線有確定的高電平。當I/O接口內(nèi)部有上拉電阻時,外電路可以不配置上拉電阻。</p><p><b> 圖5 鍵盤</b></p><p> 三、流程圖繪制以及說明</p>
30、<p> 本次課程設(shè)計實驗程序中,用單片機的外部中斷定時器來計時,然后通過來判斷計時器和鬧鈴時間來使鬧鈴響,通過對單片機的一些端口進行掃描來判斷時分秒的調(diào)整,選擇計時器調(diào)時還是定時鬧鐘的調(diào)時以及是否鬧鈴。</p><p><b> 程序流程圖</b></p><p><b> 初始化變量</b></p><p&
31、gt; 初始化計時器,初始化鬧鈴</p><p> 掃描顯示器更新時間數(shù)據(jù),</p><p> 鬧鐘時間是不是到了?</p><p> 是否按下4個按鍵 NO</p><p><b> YSE</b></p><p><b> K1:調(diào)時</b>&
32、lt;/p><p><b> K2:調(diào)分</b></p><p><b> K3:完成</b></p><p><b> K4:打開鬧鈴</b></p><p><b> 圖6 程序流程圖</b></p><p> 四、pr
33、oteus仿真說明</p><p> 1,開始程序 </p><p> 圖7 顯示器開始及定時 </p><p> 圖8 定時鬧鈴開并調(diào)定時鬧鐘的時間</p><
34、;p> 2.當鬧鈴打開,計時時間到了定時鬧鈴的時間后,喇叭開始叫</p><p><b> 圖9 仿真結(jié)果</b></p><p><b> 五、課程設(shè)計體會</b></p><p> 這次課程設(shè)計一個星期,剛知道課程設(shè)計的時候感覺題目很簡單,應(yīng)該花很少的時間就可以完成課程設(shè)計,感覺如果用匯編語言的話感覺程
35、序會有點多,所以我決定用C語言編程,開始編程時,發(fā)現(xiàn)編程的時候就有些問題了。要學會怎么用KEIL,然后把生成的HEX文檔,把它加載到Proteus里的89C52芯片,使芯片能工作。這次仿真要用到單片機種最重要的兩個部分,外部中斷和外部計時器,另外學會了如何驅(qū)動1602液晶顯示器。這次課程設(shè)計讓我學會了怎么用C語言來編寫程序以供單片機使用,對單片機中的外部中斷還有一些P0,P1,P2口的使用,P0需要添加上拉電阻,對單片有了更加深入的了解
36、,對Proteus,keil的使用更加熟練了。實驗中同樣出現(xiàn)些問題,比如鬧鐘的設(shè)定以及K4功能的實現(xiàn),還有延時功能的實現(xiàn),所以要對單片機的執(zhí)行程序需要的機器周期得完全了解清楚,用匯編語言容易計算所用的機器周期,用C語言的話就難些,這次課程設(shè)計使單片機能夠?qū)崿F(xiàn)定時鬧鐘的功能,實現(xiàn)了這次設(shè)計的要求。這次課程設(shè)計讓我更加認真的自己做了些以前想做想學的東西,并且認識到要多請教同學。</p><p><b>
37、參考文獻</b></p><p> [1]余發(fā)山.單片機原理及應(yīng)用技術(shù).中國礦業(yè)大學出版社</p><p> [2]劉和平. 單片機編程與入門.重慶大學出版社</p><p> [3]郭天祥、51單片機C語言教程、電子工業(yè)出版社、</p><p> [4]劉瑞新. 單片機原理及應(yīng)用教程.北京機械工業(yè)出版社</p>
38、;<p><b> 程序</b></p><p><b> 源程序代碼</b></p><p> #include<reg52.h></p><p> #define uchar unsigned char</p><p> #define uint unsign
39、ed int</p><p> uchar code shuzi[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39, </p><p> 0x20};//阿拉伯數(shù)字-9 0x2a表示:*</p><p> uchar kongbai=0x20;</p><p> sbi
40、t rs=P2^5;</p><p> sbit rw=P2^6;</p><p> sbit en=P2^7;</p><p> sbit k1=P1^0;</p><p> sbit k2=P1^1;</p><p> sbit k3=P1^2;</p><p> sbit k4
41、=P1^3;sbit led_miao=P1^7;</p><p> sbit buzz=P2^3;</p><p> sbit lamp=P2^4;</p><p> uchar shi1=0x85,shi2=0x86;</p><p> uchar fen1=0x88,fen2=0x89;</p><p>
42、 uchar ns1=0xcb,ns2=0xcc;</p><p> uchar nf1=0xce,nf2=0xcf;</p><p> uchar aaak1=1,aaak2=1,aaak3=1,aaak4=1,clockon,ringoff;</p><p> uchar b,c,d,e,ch,hou=10;</p><p>
43、uchar bn,cn,dn,chn,houn=10;</p><p> uchar tt0,tt1,tt2,tt3,tt4,change,ho=10;</p><p> int tt5,a,an;</p><p><b> uchar pt;</b></p><p> //-----時鐘說明-----//<
44、;/p><p> // a b : c d //</p><p> //-----------------//</p><p> //-----鬧鐘說明-----//</p><p> // an bn : cn dn //</p><p> //-----------------//&l
45、t;/p><p> void delay(uint z)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);
46、</p><p><b> }</b></p><p> void wc(uchar com)</p><p><b> {</b></p><p><b> rs=0;</b></p><p><b> P0=com;</b&
47、gt;</p><p><b> delay(5);</b></p><p><b> en=1;</b></p><p><b> delay(5);</b></p><p><b> en=0;</b></p><p>
48、<b> }</b></p><p> void wd(uchar date)</p><p><b> {</b></p><p><b> rs=1;</b></p><p><b> P0=date;</b></p><
49、p><b> delay(5);</b></p><p><b> en=1;</b></p><p><b> delay(5);</b></p><p><b> en=0;</b></p><p><b> }</b&
50、gt;</p><p> void init()</p><p><b> {</b></p><p><b> en=0;</b></p><p><b> rs=0;</b></p><p> rw=0; //寫數(shù)據(jù)或指令時,的口必須為
51、低電平</p><p><b> wc(0x38);</b></p><p><b> wc(0x0c);</b></p><p> wc(0x06);//寫一個字符后地址指針加</p><p><b> wc(0x01);</b></p><p&g
52、t;<b> }</b></p><p> void showtime(uchar fen_1,uchar fen_2,uchar f1,uchar f2)</p><p><b> {</b></p><p> wc(fen_1);delay(1);wd(shuzi[f1]);delay(1);</p>
53、;<p> wc(fen_2);delay(1);wd(shuzi[f2]);delay(1);</p><p><b> }</b></p><p> void showmao(uchar kkkkk)</p><p><b> {</b></p><p> if(kkkk
54、k==0)</p><p> {wc(0x87);delay(1);wd(0x3a);delay(1);}</p><p> else if(kkkkk==1)</p><p> {wc(0xcd);delay(1);wd(0x3a);delay(1);}</p><p><b> else</b></
55、p><p> {wc(0xcd);delay(1);wd(kongbai);delay(1);}</p><p><b> }</b></p><p> void key()</p><p><b> {</b></p><p> if(k1==0)//1 start
56、</p><p><b> {</b></p><p> delay(100);</p><p><b> if(k1==0)</b></p><p><b> {</b></p><p> wc(0x80+0x40);delay(1);wd(
57、0x59);delay(1);</p><p> delay(100);</p><p><b> while(1)</b></p><p><b> {</b></p><p> if(k1==0)//1-1 start</p><p><b> {&l
58、t;/b></p><p> delay(100);</p><p><b> if(k1==0)</b></p><p><b> {</b></p><p><b> b++;</b></p><p> if(b>=hou)&l
59、t;/p><p><b> {</b></p><p><b> ch++;</b></p><p><b> if(ch>=2)</b></p><p><b> hou=4;</b></p><p><b>
60、 else</b></p><p><b> hou=10;</b></p><p> if(a>=2&&b>=hou)</p><p><b> {</b></p><p><b> a=(-1);</b></p>
61、<p><b> b=0;</b></p><p><b> ch=0;</b></p><p><b> hou=10;</b></p><p><b> }</b></p><p><b> a++;</b>
62、;</p><p><b> b=0;</b></p><p><b> }</b></p><p> showtime(shi1,shi2,a,b);</p><p><b> }</b></p><p> }//1-1 end</p&
63、gt;<p> if(k2==0)//1-2 start</p><p><b> {</b></p><p> delay(100);</p><p><b> if(k2==0)</b></p><p><b> {</b></p>&
64、lt;p><b> d++;</b></p><p><b> if(d>=10)</b></p><p><b> {</b></p><p><b> d=0;</b></p><p><b> c++;</b&g
65、t;</p><p><b> if(c>=6)</b></p><p><b> c=0;</b></p><p><b> }</b></p><p> showtime(fen1,fen2,c,d);</p><p><b>
66、; }</b></p><p> }//1-2 end</p><p> if(k3==0)//1-3 start</p><p><b> {</b></p><p> wc(0x80+0x40);delay(1);wd(kongbai);delay(1);</p><p>
67、; tt5=a;tt4=b;tt3=c;tt2=d;</p><p> EA=1;ET0=1;TR0=1;</p><p><b> break;</b></p><p> }//1-3 end</p><p> if(k4==0)//1-4 start</p><p><b>
68、; {</b></p><p><b> //待定</b></p><p> }//1-4 end</p><p><b> }</b></p><p><b> }</b></p><p><b> }//1 end&
69、lt;/b></p><p> if(k2==0)//2 start</p><p><b> {</b></p><p> delay(100);</p><p><b> if(k2==0)</b></p><p><b> {</b>
70、;</p><p> if(aaak1==1)</p><p><b> {</b></p><p><b> aaak1++;</b></p><p> wc(0x80+0x41);delay(1);wd(0x59);delay(1);</p><p> show
71、time(ns1,ns2,an,bn);</p><p> showmao(1);</p><p> showtime(nf1,nf2,cn,dn);</p><p><b> }</b></p><p><b> else</b></p><p><b>
72、 {</b></p><p> wc(0x80+0x41);delay(1);wd(kongbai);delay(1);</p><p> showtime(ns1,ns2,10,10);</p><p> showtime(nf1,nf2,10,10);</p><p> showmao(2);</p>
73、<p><b> aaak1=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }//2 end</b></p><p> if(k3==0)//3 start</
74、p><p><b> {</b></p><p> delay(100);</p><p><b> if(k3==0)</b></p><p><b> {</b></p><p> showtime(ns1,ns2,an,bn);</p&
75、gt;<p> showmao(1);</p><p> showtime(nf1,nf2,cn,dn);</p><p> wc(0x80+0x42);delay(1);wd(0x59);delay(1);</p><p> delay(100);</p><p><b> while(1)</b&g
76、t;</p><p><b> {</b></p><p> if(k1==0)//3-1 start</p><p><b> {</b></p><p> delay(100);</p><p><b> if(k1==0)</b><
77、/p><p><b> {</b></p><p><b> bn++;</b></p><p> if(bn>=houn)</p><p><b> {</b></p><p><b> chn++;</b></
78、p><p> if(chn>=2)</p><p><b> houn=4;</b></p><p><b> else</b></p><p><b> houn=10;</b></p><p> if(an>=2&&
79、bn>=houn)</p><p><b> {</b></p><p><b> an=(-1);</b></p><p><b> bn=0;</b></p><p><b> chn=0;</b></p><p>
80、;<b> houn=10;</b></p><p><b> }</b></p><p><b> an++;</b></p><p><b> bn=0;</b></p><p><b> }</b></p>
81、<p> showtime(ns1,ns2,an,bn);</p><p><b> }</b></p><p> }//3-1 end</p><p> if(k2==0)//3-2 start</p><p><b> {</b></p><p>
82、 delay(100);</p><p><b> if(k2==0)</b></p><p><b> {</b></p><p><b> dn++;</b></p><p> if(dn>=10)</p><p><b>
83、 {</b></p><p><b> dn=0;</b></p><p><b> cn++;</b></p><p><b> if(cn>=6)</b></p><p><b> cn=0;</b></p>
84、<p><b> }</b></p><p> showtime(nf1,nf2,cn,dn);</p><p><b> }</b></p><p> }//3-2 end</p><p> if(k3==0)//3-3 start</p><p>&l
85、t;b> {</b></p><p> wc(0x80+0x42);delay(1);wd(kongbai);delay(1);</p><p> showtime(ns1,ns2,10,10);</p><p> showtime(nf1,nf2,10,10);</p><p> showmao(2);</
86、p><p><b> break;</b></p><p> }//3-3 end</p><p> if(k4==0)//1-4 start</p><p><b> {</b></p><p> delay(100);</p><p><
87、;b> if(k4==0)</b></p><p><b> {</b></p><p> if(aaak3==1)</p><p> {aaak3++;ringoff=1;</p><p> wc(0x80+0x43);delay(1);wd(0x52);delay(1);}</p&g
88、t;<p><b> else</b></p><p> {aaak3=1;ringoff=0;</p><p> wc(0x80+0x43);delay(1);wd(kongbai);delay(1);}</p><p><b> }</b></p><p> }//3-4
89、 end</p><p><b> }</b></p><p><b> }</b></p><p><b> }//3 end</b></p><p> if(k4==0)//4 start</p><p><b> {</b
90、></p><p> delay(100);</p><p><b> if(k4==0)</b></p><p><b> {</b></p><p> if(aaak4==1)</p><p><b> {</b></p>
91、<p><b> aaak4++;</b></p><p><b> lamp=1;</b></p><p> clockon=1;</p><p> wc(0x80+0x4a);delay(1);wd(0xef);delay(1);</p><p> buzz=0;dela
92、y(50);buzz=1;delay(50);</p><p> buzz=0;delay(50);buzz=1;delay(50);</p><p> buzz=0;delay(50);buzz=1;</p><p><b> }</b></p><p><b> else</b><
93、/p><p><b> {</b></p><p><b> aaak4=1;</b></p><p><b> lamp=0;</b></p><p> clockon=0;</p><p> wc(0x80+0x4a);delay(1);wd
94、(kongbai);delay(1);</p><p> buzz=0;delay(50);buzz=1;</p><p><b> }</b></p><p><b> }</b></p><p><b> }//4 end</b></p><p&
95、gt;<b> }</b></p><p> void time0()</p><p><b> {</b></p><p> TH0=(65536-50000)/256;//50ms</p><p> TL0=(65536-50000)%256;</p><p&
96、gt;<b> }</b></p><p> void main()</p><p><b> {</b></p><p> TMOD = 0x01;</p><p><b> init();</b></p><p> showtime(sh
97、i1,shi2,0,0);</p><p> showtime(fen1,fen2,0,0);</p><p> showmao(0);</p><p> showtime(ns1,ns2,10,10);</p><p> showtime(nf1,nf2,10,10);</p><p> showmao(2
98、);</p><p><b> time0();</b></p><p><b> lamp=0;</b></p><p><b> while(1)</b></p><p><b> {</b></p><p><b
99、> key();</b></p><p><b> }</b></p><p><b> }</b></p><p> void t0() interrupt 1</p><p><b> {</b></p><p><
100、b> time0();</b></p><p><b> tt0++;</b></p><p><b> if(k1==0)</b></p><p><b> {</b></p><p> delay(5);//硬件實現(xiàn)時,延時-10</p&g
101、t;<p><b> if(k1==0)</b></p><p><b> {</b></p><p> a=tt5;b=tt4;c=tt3;d=tt2;</p><p> EA=0;ET0=0;TR0=0;</p><p><b> }</b><
102、/p><p><b> }</b></p><p><b> if(k2==0)</b></p><p><b> {</b></p><p> delay(5);//硬件實施時,延時-10</p><p><b> if(k2==0)&
103、lt;/b></p><p><b> {</b></p><p> if(aaak1==1)</p><p><b> {</b></p><p><b> aaak1++;</b></p><p> wc(0x80+0x41);del
104、ay(1);wd(0x59);delay(1);</p><p> showtime(ns1,ns2,an,bn);</p><p> showmao(1);</p><p> showtime(nf1,nf2,cn,dn);</p><p><b> }</b></p><p><
105、b> else</b></p><p><b> {</b></p><p> wc(0x80+0x41);delay(1);wd(kongbai);delay(1);</p><p> showtime(ns1,ns2,10,10);</p><p> showtime(nf1,nf2,10
106、,10);</p><p> showmao(2);</p><p><b> aaak1=1;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>&l
107、t;/p><p><b> if(k4==0)</b></p><p><b> {</b></p><p><b> delay(5);</b></p><p><b> if(k4==0)</b></p><p><b
108、> {</b></p><p> if(aaak4==1)</p><p><b> {</b></p><p><b> aaak4++;</b></p><p><b> lamp=1;</b></p><p> clo
109、ckon=1;</p><p> wc(0x80+0x4a);delay(1);wd(0xef);delay(1);</p><p> buzz=0;delay(50);buzz=1;delay(50);</p><p> buzz=0;delay(50);buzz=1;delay(50);</p><p> buzz=0;delay
110、(50);buzz=1;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> aaak4=1;</b></p><p><
111、b> lamp=0;</b></p><p> clockon=0;</p><p> wc(0x80+0x4a);delay(1);wd(kongbai);delay(1);</p><p> buzz=0;delay(50);buzz=1;</p><p><b> }</b></p
112、><p><b> }</b></p><p><b> }</b></p><p> if(tt0>=1)//20</p><p><b> {</b></p><p><b> tt0=0;</b></p>
113、;<p> led_miao=~led_miao;</p><p><b> tt1++;</b></p><p> if(tt1>=1)//判斷是否夠秒</p><p><b> {</b></p><p><b> tt2++;</b><
114、/p><p> if(tt2>=10)//判斷分鐘的個位是否滿</p><p><b> {</b></p><p><b> tt2=0;</b></p><p><b> tt3++;</b></p><p> if(tt3>=6)
115、//判斷分鐘的十位是否滿</p><p><b> {</b></p><p><b> tt3=0;</b></p><p><b> tt4++;</b></p><p> if(tt4>=hou)//判斷小時的個位是否滿或</p><p&
116、gt;<b> {</b></p><p><b> ch++;</b></p><p> if(ch>=2)//當?shù)搅藭r以上時,判斷條件變?yōu)?lt;/p><p><b> {</b></p><p><b> hou=4;</b></p
117、><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> hou=10;</b></p><p><b> }</b>&l
118、t;/p><p> if(tt5>=2&&tt4>=hou)//當滿小時的時候,全部清零,從頭算起</p><p><b> {</b></p><p><b> tt5=(-1);</b></p><p><b> tt4=0;</b><
119、/p><p><b> ch=0;</b></p><p><b> hou=10;</b></p><p><b> }</b></p><p><b> tt5++;</b></p><p><b> tt4=0
120、;</b></p><p> showtime(shi1,shi2,tt5,tt4);//小時十位加一</p><p><b> }</b></p><p> showtime(shi1,shi2,tt5,tt4);//小時個位加一</p><p><b> }</b></
121、p><p> showtime(fen1,fen2,tt3,tt2);//分鐘十位加一</p><p><b> }</b></p><p> showtime(fen1,fen2,tt3,tt2);//分鐘個位加一</p><p><b> tt1=0;</b></p><
122、p><b> }</b></p><p><b> }</b></p><p> if(clockon==1&&tt5==an&&tt4==bn&&tt3==cn&&tt2==dn&&pt<=60)//ring for 3s</p>&
123、lt;p> {buzz=0;e=1;lamp=0;pt++;}</p><p> if((k4==0&&e==1)|pt>=60)//if ring more than 3s,it will stop </p><p> {buzz=1;e=0;clockon=0;wc(0x80+0x4a);delay(1);wd(kongbai);delay(1);pt
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機定時鬧鐘課程設(shè)計
- c51單片機課程設(shè)計定時鬧鐘
- 單片機定時鬧鐘課程設(shè)計
- 定時鬧鐘—單片機課程設(shè)計
- 單片機課程設(shè)計—定時鬧鐘設(shè)計
- 單片機課程設(shè)計—定時鬧鐘設(shè)計
- 單片機課程設(shè)計---定時鬧鐘設(shè)計
- 單片機課程設(shè)計--定時鬧鐘設(shè)計
- 基于單片機的定時鬧鐘課程設(shè)計
- 單片機課程設(shè)計---定時鬧鐘的設(shè)計
- 單片機課程設(shè)計——定時鬧鐘的設(shè)計
- 課程設(shè)計--單片機定時鬧鐘設(shè)計報告
- 單片機課程設(shè)計--簡單定時鬧鐘系統(tǒng)
- 單片機課程設(shè)計---- lcd電子定時鬧鐘設(shè)計
- 單片機課程設(shè)計—帶有l(wèi)cd的定時鬧鐘
- 基于at89c51單片機定時鬧鐘設(shè)計
- 51單片機課程設(shè)計--鬧鐘程序設(shè)計
- 單片機課程設(shè)計--定時鬧鐘報告書
- 基于51單片機課程設(shè)計--基于51單片機的紅外線設(shè)計
- 基于51單片機課程設(shè)計
評論
0/150
提交評論