51單片機數(shù)字時鐘(帶鬧鐘)_第1頁
51單片機數(shù)字時鐘(帶鬧鐘)_第2頁
51單片機數(shù)字時鐘(帶鬧鐘)_第3頁
51單片機數(shù)字時鐘(帶鬧鐘)_第4頁
51單片機數(shù)字時鐘(帶鬧鐘)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、目 錄1 設(shè)計要求 1.1 功能需求1.2 設(shè)計要求2 硬件設(shè)計及描述2.1 總體描述2.2 系統(tǒng)總體框圖2.3 proteus仿真電路圖3 軟件設(shè)計流程及描述3.1 程序流程圖3.2 函數(shù)模塊及功能4 心得體會附:源程序1 設(shè)計要求 1.1 功能需求(1) 實現(xiàn)數(shù)字時鐘準確實時的計時與顯示功能;(2) 實現(xiàn)鬧鐘功能,即系統(tǒng)時間到達鬧鐘時間時鬧鈴響;(3) 實現(xiàn)時間和鬧鐘時間的調(diào)時功能;(4) 剛啟動系統(tǒng)的時候在數(shù)碼管上滾動顯示數(shù)字串(學號)。1.2 設(shè)計要求(1) 應用mcs-51單片機設(shè)計實現(xiàn)數(shù)字時鐘電路;(2) 使用定時器/計數(shù)器中斷實現(xiàn)計時;(3) 選用8個數(shù)碼管顯示時間;(4) 使用

2、3個按鈕實現(xiàn)調(diào)時間和鬧鐘時間的功能。按鈕1:更換模式(模式0:正常顯示時間;模式1:調(diào)當前時間的小時;模式2;調(diào)當前時間的分鐘;模式3:調(diào)鬧鐘時間的小時;模式4:調(diào)鬧鐘時間的分鐘);按鈕2:在非模式0下給需要調(diào)節(jié)的時間數(shù)加一,但不溢出;按鈕3:在非模式0下給需要調(diào)節(jié)的時間數(shù)減一,但不小于零;(5) 在非0模式下,給正在調(diào)節(jié)的時間閃爍提示;(6) 使用揚聲器實現(xiàn)鬧鐘功能;(7) 采用c語言編寫程序并調(diào)試。2 硬件設(shè)計及描述2.1 總體描述(1) 單片機采用at89c51型;(2) 時間顯示電路:采用8個共陰極數(shù)碼管,p1口驅(qū)動顯示數(shù)字,p2口作為掃描信號;(3) 時間設(shè)置電路:p3.0、p3.1

3、、p3.2分別連接3個按鍵,實現(xiàn)調(diào)模式,時間加和時間減;(4) 鬧鐘:p3.3口接揚聲器。2.2 系統(tǒng)總體框圖 2.3 proteus仿真電路圖 3 軟件設(shè)計流程及描述3.1 程序流程圖重新計時輸出數(shù)字信號輸出掃描信號開始聲明變量初始化設(shè)置中斷循環(huán)停滯等待按鍵按下顯示時間time1重設(shè)定時量1000次second加一大于59minute加一大于59hour加一hou=hour%24滾動顯示學號3.2 函數(shù)模塊及功能(1) void display_led()學號的滾動顯示函數(shù);(2) void display()顯示時間以及顯示調(diào)節(jié)時間和鬧鐘時間的閃爍;(3) void key_prc()鍵盤

4、功能函數(shù),實現(xiàn)3個按鍵有關(guān)的模式轉(zhuǎn)換以及數(shù)字加一減一;(4) void init()初始化設(shè)置中斷;(5) void time1() interrupt 3定時器1中斷函數(shù),實現(xiàn)計時功能。4 心得體會首先在做本次課程設(shè)計的過程中,我感觸最深的當屬查閱大量的設(shè)計資料了。為了讓自己的設(shè)計更加完善,查閱這方面的設(shè)計資料是十分必要的,同時也是必不可少的。我們是在做單片機實習,我們一切都要有據(jù)可依,有理可尋,不切實際的構(gòu)想永遠只能是構(gòu)想,永遠無法升級為設(shè)計。 其次,在這次課程設(shè)計中,我們運用到了以前所學的專業(yè)課知識,如:c語言、模擬和數(shù)字電路知識等。雖然過去從未獨立應用過它們,但在學習的過程中帶著問題去

5、學我發(fā)現(xiàn)效率很高,這是我做這次課程設(shè)計的又一收獲。 最后,在設(shè)計之前,我們要對所用單片機的內(nèi)部結(jié)構(gòu)有一個系統(tǒng)的了解,知道該單片機內(nèi)有哪些資源;要有一個清晰的思路和一個完整的的軟件流程圖;在設(shè)計程序時,不能妄想一次就將整個程序設(shè)計好,反復修改、不斷改進是程序設(shè)計的必經(jīng)之路;要養(yǎng)成注釋程序的好習慣,一個程序的完美與否不僅僅是實現(xiàn)功能,而應該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在實習過程中遇到問題是很正常的,但我們應該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題。但是從中學到的知識會讓我受益終身。發(fā)現(xiàn)、提出、分析、解決問題和實踐能力提高都會受益于我在以后的

6、學習、工作和生活中。附:源程序#include unsigned char led12=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00; /用一維數(shù)組定義-9、橫杠、全滅unsigned char num10=2,0,0,8,0,1,1,6,6,8 ;unsigned char a8; unsigned char second=0,minute=0,hour=0;unsigned char minute1=0,hour1=0;unsigned char b8=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0x

7、bf,0x7f;/掃描unsigned char k=0;unsigned int temp; / 記錄毫秒為秒的變量unsigned char m,s_flag;/m是模式,更新時間的種模式加上正常模式s_flag閃爍標志sbit k1=p30;sbit k2=p31;sbit k3=p32;sbit beep=p33;void delay(unsigned n) /0.2毫秒 int x,y; for(x=0;xn;x+) for(y=0;y24;y+); void init() m=0; s_flag=0; /閃爍標志位 tmod=0x10; /定時器以方式定時 th1=0xfc; tl

8、1=0x18; ea=1; /打開總中斷 et1=1; /允許定時器中斷 tr1=1; /開啟定時器(開始定時計數(shù)) void display_led()int x;char l,a,m;for(a=0;a26;a+)x=a-8;for(l=0;l50;l+)for(m=0;m=0&x10) p1=lednumx;else p1=led11;delay(10);x+;x-=8;void time1() interrupt 3 /定時器中斷函數(shù) th1=0xfc; /定時ms tl1=0x18; temp+; if(temp=1000) /配合定時器定時s temp=0; second+; if

9、(second=59) second=0; if(minute59) minute+; else minute=0; hour+; hour%=24; if(hour1=hour&minute1=minute&second10) /鬧鐘時間到 beep=!beep; if(temp%250=0) /每ms s_flag=!s_flag; /閃爍標志位取反 if(k=8) k=0; p1=ak; p2=bk+; delay(1); p2=0xff; void display()switch(m)case 0:a0=ledhour/10;a1=ledhour%10;a2=led10;a3=ledm

10、inute/10;a4=ledminute%10;a5=led10;a6=ledsecond/10;a7=ledsecond%10;break;case 1:if(s_flag=1)a0=ledhour/10;a1=ledhour%10;elsea0=led11;a1=led11;a2=led10;a3=ledminute/10;a4=ledminute%10;a5=led10;a6=ledsecond/10;a7=ledsecond%10;break;case 2:a0=ledhour/10;a1=ledhour%10;a2=led10;if(s_flag=1)a3=ledminute/10

11、;a4=ledminute%10;elsea3=led11;a4=led11;a5=led10;a6=ledsecond/10;a7=ledsecond%10;break;case 3:if(s_flag=1)a0=ledhour1/10;a1=ledhour1%10;elsea0=led11;a1=led11;a2=led10;a3=ledminute1/10;a4=ledminute1%10;a5=led10;a6=led11;a7=led11;break;case 4:a0=ledhour1/10;a1=ledhour1%10;a2=led10;if(s_flag=1)a3=ledmin

12、ute1/10;a4=ledminute1%10;elsea3=led11;a4=led11;a5=led10;a6=led11;a7=led11; void key_prc() if(k1=0) delay(10);/延時去抖 if(k1=0) /按k1進行模式切換 m+;if(m=5) m=0;while(!k1);/等待按鍵釋放 if(m!=0) switch(m) case 1: /模式調(diào)時 if(k2=0)delay(10);/延時去抖 if(k2=0) /加鍵按下 if(hour 0) hour-;else hour=23; while(!k3); break; case 2: /模式調(diào)分 if(k2=0)delay(10);if(k2=0) if(minute0) minute-;else minute=59; while(!k3); break; case 3: /模式鬧鐘調(diào)時 if(k2=0)delay(10); if(k2=0) if(hour10) hour1-; else

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論