版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 單片機應(yīng)用課程設(shè)計</b></p><p><b> 電子時鐘</b></p><p> 專 業(yè): 電氣工程及其自動化 </p><p> 班 級: </p><p> 姓 名: &l
2、t;/p><p> 指導教師: </p><p><b> 電子時鐘設(shè)計報告</b></p><p><b> 一、課題設(shè)計目的</b></p><p> 數(shù)字電子鐘具有走時準確,一鐘多用等特點,在生活中已經(jīng)得到廣泛的應(yīng)用。另外數(shù)字鐘還具備秒表和鬧鐘的功能,且鬧鐘鈴聲
3、可自選,使一款電子鐘具備了多媒體的色彩。單片機STC89C51在Proteus軟件中實現(xiàn)數(shù)字時鐘的定時、時間調(diào)整、鬧正設(shè)置等功能。具有體積小、功能強可靠性高、價格低廉等一系列優(yōu)點,不僅已成為工業(yè)測控領(lǐng)域普遍采用的智能化控制工具,而且已滲入到人們工作和和生活的各個角落,有力地推動了各行業(yè)的技術(shù)改造和產(chǎn)品的更新?lián)Q代,應(yīng)用前景廣闊。時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的含義:
4、一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間。</p><p> 二、實驗?zāi)康募耙饬x:</p><p> 1. 理解學習LED數(shù)碼管顯示、以及硬件各引腳的含義</p><p> 2. 學習C51語言的應(yīng)用。</p><p> 3.
5、學習Proteus、KEIL軟件的應(yīng)用。</p><p> 4. 培養(yǎng)解決實際問題的能力。</p><p> 三、設(shè)計任務(wù)及要求 (系統(tǒng)的主要功能)</p><p> 1.具有時、分、秒計數(shù)顯示功能,以24小時循環(huán)</p><p> 2.LED數(shù)碼管顯示時、分、秒的個位和十位</p><p> 3.可以在任意
6、時刻校準時間</p><p> 4.能夠完成時間的顯示、定時鬧鐘、復位等功能</p><p> 四、工作原理及設(shè)計流程圖</p><p> 主程序是先開始,然后啟動定時器,定時器啟動后在進行按鍵檢測,檢測完后,就可以顯示時間。按鍵處理是先檢測秒按鍵是否按下,秒按鍵如果按下,秒就加1;如果沒有按下,就檢測分按鍵是否按下,分按鍵如果按下,分就加1;如果沒有按下,就
7、檢測時按鍵是否按下,時按鍵如果按下,時就加1;如果沒有按下,就把時間顯示出來。 </p><p> 定時器中斷時是先檢測1秒是否到,1秒如果到,秒單元就加1;如果沒到,就檢測1分鐘是否到,1分鐘如果到,分單元就加1;如果沒到,就檢測1小時是否到,1小時如果到,時單元就加1,如果沒到,就顯示時間。</p><p><b> 五、硬件原理圖</b></p>
8、;<p><b> 六、程序源代碼</b></p><p> /***************************************</p><p><b> 硬件連接:</b></p><p> 數(shù)碼管:段碼為:P1</p><p> 位碼分別為:P2.5~P2.
9、0</p><p><b> 蜂鳴器:P2.7</b></p><p> 功能鍵k1:P3.4</p><p><b> 加建k2:P3.5</b></p><p> 減鍵k3:P3.6 </p><p> ***********************
10、****************/</p><p> #include<reg51.h> //51頭文件</p><p> sbit smg1=P2^5;//位碼1聲明</p><p> sbit smg2=P2^4;//位碼2聲明</p><p> sbit smg3=P2^3;//位碼3聲明</p>&l
11、t;p> sbit smg4=P2^2;//位碼4聲明</p><p> sbit smg5=P2^1;//位碼5聲明</p><p> sbit smg6=P2^0;//位碼6聲明</p><p> sbit k1=P3^4; //按鍵k1的聲明</p><p> sbit k2=P3^5; //按鍵k2的聲明</p&
12、gt;<p> sbit k3=P3^6; //按鍵k3的聲明</p><p> sbit beep=P2^7;//蜂鳴器聲明</p><p> /*定義一些變量*/</p><p> char d=0,e=0,a=0,b=0,n=0,shi=12,fen=0,miao=0,b_shi=6,b_fen=30,b_miao=0;</p&g
13、t;<p> char code table[]={//共陽級數(shù)碼管碼表0-9</p><p> 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p> void init();//初始化函數(shù)聲明</p><p> void delay(int z); //帶參數(shù)延時函數(shù)聲明&l
14、t;/p><p> void display(char s,f,m);//帶參數(shù)顯示函數(shù)聲明</p><p> void key();//按鍵控制函數(shù)聲明</p><p> void main()//主函數(shù)</p><p><b> {</b></p><p> init();//調(diào)用初始
15、化函數(shù)</p><p> while(1)//主函數(shù)內(nèi)大循環(huán)</p><p><b> {</b></p><p> if(d==0)key(); //如果d=0則掃描按鍵函數(shù)</p><p> if(shi==b_shi&&fen==b_fen)//如果鬧鈴時間到 就蜂鳴器響</p>
16、;<p><b> {</b></p><p> if(d==1&&!(k1&k2&k3))// 任意按鍵按下關(guān)閉鈴聲</p><p><b> {</b></p><p> e=1; //關(guān)閉鬧鈴標志位e</p><p> d=0; //
17、屏蔽按鍵函數(shù)標志位d</p><p><b> }</b></p><p> if(e==0)//關(guān)閉鈴聲</p><p><b> {</b></p><p> d=1; //屏蔽按鍵函數(shù)</p><p> beep=0;//蜂鳴器鳴叫</p>&
18、lt;p> delay(10); //延時一會</p><p> beep=1;//關(guān)閉蜂鳴器</p><p><b> }</b></p><p><b> }</b></p><p> if(n==0||n==1||n==2)//如果處在功能鍵的0、1、2三個中的某個狀態(tài)
19、</p><p> display(shi,fen,miao);//調(diào)用顯示時鐘</p><p> if(n==3||n==4)//如果處在功能鍵的3、4中的某個狀態(tài)</p><p> display(b_shi,b_fen,b_miao);//調(diào)用顯示鬧鈴時間</p><p><b> }</b></p&
20、gt;<p><b> }</b></p><p> void init()//初始化函數(shù)</p><p><b> {</b></p><p> IE=0X8a;//1000 1010</p><p> TMOD=0X01; //0001 0001選擇定時器0的工作
21、方式1選擇定時器1的工作方式1</p><p> TH0=(65536-50000)/256;//初值15536</p><p> TL0=(65536-50000)%256;</p><p> TR0=1; //開啟定時器0</p><p> TH1=(65536-50000)/256;//初值15536</p>&
22、lt;p> TL1=(65536-50000)%256;</p><p> TR1=1; //開啟定時器1</p><p><b> }</b></p><p> void timer0() interrupt1 //定時器0中斷服務(wù)程序</p><p><b> {</b><
23、;/p><p> TH0=(65536-50000)/256;//進入中斷重新賦初值15536</p><p> TL0=(65536-50000)%256;//計數(shù)5萬次(50毫秒)</p><p> a++;//每進一次中斷a加一</p><p> if(a==20) //如果進入20次中斷,正好一秒</p><p
24、><b> {</b></p><p> a=0; //a到20 就清零</p><p> miao++;//a每計20次,秒加一</p><p> if(miao==60)</p><p> { //秒到達60秒后清零,分加一</p><p><b> miao=0
25、;</b></p><p><b> fen++;</b></p><p> e=0;//鬧鈴標志位清零</p><p> if(fen==60)</p><p> {//分到達60后清零,時加一</p><p><b> fen=0;</b></
26、p><p><b> shi++;</b></p><p> if(shi==24)</p><p> { //時到達24后清零</p><p><b> shi=0;</b></p><p><b> }</b></p><p
27、><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void timer1() interrupt3 //定時器1中斷服務(wù)程序
28、,用來設(shè)置光標閃爍頻率</p><p><b> {</b></p><p> TH1=(65536-50000)/256;//進入中斷重新賦初值15536</p><p> TL1=(65536-50000)%256;//計數(shù)5萬次(50毫秒)</p><p> b++; //標志位b,用來確定光標閃爍頻率&l
29、t;/p><p> if(b==20) </p><p> b=0;//b=20 時被清零</p><p><b> }</b></p><p> void display(char s,f,m)//帶參數(shù)的顯示函數(shù),參數(shù)為s f m</p><p><b> {</b&g
30、t;</p><p> smg1=0;//打開數(shù)碼管1位選</p><p> P1=table[s/10];//給數(shù)碼管1賦值,值為小時的十位</p><p> delay(1); //延時</p><p> smg1=1; //關(guān)閉數(shù)碼管1位選</p><p> P1=0Xff; //關(guān)閉數(shù)碼管1段
31、選</p><p> if(b<10&&(n==1||n==3))</p><p> {//在1,3狀態(tài)下,b<10時,關(guān)閉數(shù)碼管2</p><p><b> smg2=1; </b></p><p><b> P1=0Xff;</b></p>&l
32、t;p><b> }</b></p><p> else //其他狀態(tài)下,數(shù)碼管2正常顯示</p><p><b> {</b></p><p> smg2=0;//打開數(shù)碼管2位選</p><p> P1=table[s%10];//給數(shù)碼管2賦值,值為小時的個位</p>
33、;<p> delay(1);//延時</p><p> smg2=1; //關(guān)閉數(shù)碼管2位選</p><p> P1=0Xff; //關(guān)閉數(shù)碼管2段選</p><p><b> }</b></p><p> smg3=0;//打開數(shù)碼管3位選</p><p> P1
34、=table[f/10];//給數(shù)碼管3賦值,值為分鐘的十位</p><p> delay(1); //延時</p><p> smg3=1; //關(guān)閉數(shù)碼管3位選</p><p> P1=0Xff;//關(guān)閉數(shù)碼管3段選</p><p> if(b<10&&(n==2||n==4))</p>&
35、lt;p> { //在2,4狀態(tài)下,b<10時,關(guān)閉數(shù)碼管4</p><p><b> smg4=1; </b></p><p><b> P1=0Xff;</b></p><p><b> }</b></p><p><b> else <
36、;/b></p><p> { //其他狀態(tài)下,數(shù)碼管4正常顯示</p><p> smg4=0;//打開數(shù)碼管4位選</p><p> P1=table[f%10];//給數(shù)碼管4賦值,值為分鐘的個位</p><p> delay(1); //延時</p><p> smg4=1; //關(guān)閉數(shù)碼管4
37、位選</p><p> P1=0Xff; //關(guān)閉數(shù)碼管4段選</p><p><b> }</b></p><p> smg5=0;//打開數(shù)碼管5位選</p><p> P1=table[m/10];//給數(shù)碼管5賦值,值為秒鐘的十位</p><p> delay(1); //延時&
38、lt;/p><p> smg5=1; //關(guān)閉數(shù)碼管5位選</p><p> P1=0Xff; //關(guān)閉數(shù)碼管5段選</p><p> smg6=0;//打開數(shù)碼管6位選</p><p> P1=table[m%10];//給數(shù)碼管6賦值,值為秒鐘的個位</p><p> delay(1);//延時<
39、/p><p> smg6=1;//關(guān)閉數(shù)碼管6位選</p><p> P1=0Xff;//關(guān)閉數(shù)碼管6段選</p><p><b> }</b></p><p> void delay(int z)//帶參數(shù)延時函數(shù),參數(shù)Z</p><p> { //每次大約延時1毫秒</p
40、><p><b> int x,y;</b></p><p> for(x=z;x>0;x--) //循環(huán)110*z次空函數(shù)</p><p> for(y=110;y>0;y--)</p><p><b> ;</b></p><p><b>
41、 }</b></p><p> void key() //按鍵控制函數(shù)</p><p><b> {</b></p><p><b> if(k1==0)</b></p><p> { //功能鍵k1被按下</p><p> delay(5);//消抖延
42、時</p><p><b> if(k1==0)</b></p><p><b> {</b></p><p> n++;//n記錄功能鍵狀態(tài)</p><p> if(n>4) n=0; //n清零</p><p> while(k1==0);//等待松手&
43、lt;/p><p><b> }</b></p><p><b> }</b></p><p> if(n==0)//狀態(tài)0,</p><p><b> {</b></p><p> TR0=1;//定時器打開狀態(tài)</p><p
44、><b> }</b></p><p> if(n==1)//狀態(tài)1</p><p><b> {</b></p><p> TR0=0;//關(guān)閉定時器0</p><p><b> if(k2==0)</b></p><p><b
45、> { //k2被按下</b></p><p> delay(5);//消抖延時</p><p><b> if(k2==0)</b></p><p><b> {</b></p><p> shi++;//小時加一</p><p> if(sh
46、i==24)</p><p> shi=0;//達到24清零</p><p> while(k2==0);//等待松手</p><p><b> }</b></p><p><b> }</b></p><p><b> if(k3==0)</b&
47、gt;</p><p> { //k3被按下</p><p> delay(5); //消抖延時</p><p><b> if(k3==0)</b></p><p><b> {</b></p><p> shi--; //小時減一</p><
48、;p><b> if(shi<0)</b></p><p> shi=23;//小于0,重新復制</p><p> while(k3==0);//等待松手</p><p><b> }</b></p><p><b> }</b></p>
49、<p><b> }</b></p><p> if(n==2)//狀態(tài)2</p><p><b> {</b></p><p> TR0=0; //關(guān)閉定時器0</p><p><b> if(k2==0)</b></p><p&
50、gt;<b> { //k2被按下</b></p><p> delay(5);//消抖延時</p><p><b> if(k2==0)</b></p><p><b> {</b></p><p> fen++;//分加一</p><p>
51、 if(fen==60)</p><p> fen=0;//分到達60 分清零</p><p> while(k2==0);//等待松手</p><p><b> }</b></p><p><b> }</b></p><p><b> if(k3=
52、=0)</b></p><p> { //k3被按下</p><p> delay(5);//消抖延時</p><p><b> if(k3==0)</b></p><p><b> {</b></p><p> fen--;//分減一</p&g
53、t;<p><b> if(fen<0)</b></p><p> fen=59;//分小于0,分重新賦值59</p><p> while(k3==0);//等待松手</p><p><b> }</b></p><p><b> }</b>
54、;</p><p><b> }</b></p><p> if(n==3)//狀態(tài)三</p><p><b> {</b></p><p> TR0=1;//開啟定時器</p><p><b> if(k2==0)</b></p>
55、;<p> { //k2被按下</p><p> delay(5);//消抖延時</p><p><b> if(k2==0)</b></p><p><b> {</b></p><p> b_shi++;//鬧鈴時間加一</p><p> if
56、(b_shi==24)</p><p> b_shi=0;//鬧鈴時間清零</p><p> while(k2==0);//等待松手</p><p><b> }</b></p><p><b> }</b></p><p><b> if(k3==0)
57、</b></p><p> { //k3被按下</p><p> delay(5);//消抖延時</p><p><b> if(k3==0)</b></p><p><b> {</b></p><p> b_shi--;//鬧鈴時間減一</p
58、><p> if(b_shi<0)</p><p> b_shi=23;//鬧鈴時間</p><p> while(k3==0);//等待松手</p><p><b> }</b></p><p><b> }</b></p><p>
59、;<b> }</b></p><p> if(n==4)//狀態(tài)四</p><p><b> {</b></p><p> TR0=1;//關(guān)閉定時器0</p><p><b> if(k2==0)</b></p><p> { //k
60、2被按下</p><p> delay(5);//消抖延時</p><p><b> if(k2==0)</b></p><p><b> {</b></p><p> b_fen++;//鬧鈴時間分加一</p><p> if(b_fen==60)</p&g
61、t;<p> b_fen=0;//鬧鈴分到達60 清零</p><p> while(k2==0);//等待松手</p><p><b> }</b></p><p><b> }</b></p><p><b> if(k3==0)</b></
62、p><p> { //k3被按下</p><p> delay(5);//消抖延時</p><p><b> if(k3==0)</b></p><p><b> {</b></p><p> b_fen--;//鬧鈴時間分減一</p><p>
63、; if(b_fen<0)</p><p> b_fen=59;//鬧鈴時間分重新賦值</p><p> while(k3==0);//等待松手</p><p><b> }</b></p><p><b> }</b></p><p><b>
64、; }</b></p><p><b> }</b></p><p> 七、電子鐘系統(tǒng)PROTUES仿真</p><p> 用PROTUES軟件,根據(jù)數(shù)字電子鐘的原理圖,畫出仿真圖,得到的圖如下所示。</p><p><b> 八、設(shè)計體會與總結(jié)</b></p>
65、<p> 我在這一次數(shù)字電子鐘的設(shè)計過程中,很是受益匪淺。通過對自己所學的知識的回顧,并充分發(fā)揮對所學知識的理解思考,最終完成了。這為自己今后進一步深化學習,積累了一定寶貴的經(jīng)驗。撰寫總結(jié)的過程也是專業(yè)知識的學習過程,它使我運用已有的專業(yè)基礎(chǔ)知識,對其進行設(shè)計,分析和解決一個理論問題或?qū)嶋H問題,把知識轉(zhuǎn)化為能力的實際訓練。培養(yǎng)了我運用所學知識解決實際問題的能力。</p><p> 通過這次課程設(shè)
66、計我發(fā)現(xiàn),只有理論水平提高了;才能夠?qū)⒄n本知識與實踐相整合,理論知識服務(wù)于教學實踐,以增強自己的動手能力。這個實驗十分有意義 我獲得很深刻的經(jīng)驗。通過這次課程設(shè)計,我們知道了理論和實際的距離,也知道了理論和實際想結(jié)合的重要性,,也從中得知了很多書本上無法得知的知識。</p><p> 我們的學習不但要立足于書本,以解決理論和實際教學中的實際問題為目的,還要以實踐相結(jié)合,理論問題即實踐課題,解決問題即課程研究,學
67、生自己就是一個專家,通過自己的手來解決問題比用腦子解決問題更加深刻。學習就應(yīng)該采取理論與實踐結(jié)合的方式,理論的問題,也就是實踐性的課題。這種做法既有助于完成理論知識的鞏固,又有助于帶動實踐,解決實際問題,加強我們的動手能力和解決問題的能力。</p><p> 在課程設(shè)計的過程當中,我遇到了所謂的“瓶頸時期”。在沒有很好的解決外部輸入顯示的問題之時,我沒有找到合適的參考資料,沒有遇到同樣問題的人來給我提示,我完完
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計-單片機課程設(shè)計---電子時鐘
- 電子時鐘單片機課程設(shè)計
- 單片機課程設(shè)計---電子時鐘
- 單片機課程設(shè)計——電子時鐘
- 單片機課程設(shè)計——電子時鐘
- 單片機課程設(shè)計--電子時鐘
- 單片機課程設(shè)計-電子時鐘
- 單片機課程設(shè)計--電子時鐘
- 單片機課程設(shè)計--電子時鐘
- 單片機課程設(shè)計----電子時鐘
- 單片機課程設(shè)計-電子時鐘
- 單片機課程設(shè)計---單片機電子時鐘
- 單片機課程設(shè)計--電子時鐘設(shè)計
- 數(shù)字電子時鐘-單片機課程設(shè)計
- 單片機課程設(shè)計---電子時鐘.doc
- 單片機課程設(shè)計--單片機模擬電子時鐘設(shè)計
- 單片機課程設(shè)計--- 單片機電子時鐘設(shè)計
- 單片機課程設(shè)計報告---電子時鐘
- 單片機課程設(shè)計報告--電子時鐘
- 單片機課程設(shè)計---電子時鐘.doc
評論
0/150
提交評論