單片機(jī)數(shù)字電子鐘_第1頁
單片機(jī)數(shù)字電子鐘_第2頁
單片機(jī)數(shù)字電子鐘_第3頁
單片機(jī)數(shù)字電子鐘_第4頁
單片機(jī)數(shù)字電子鐘_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

PAGEPAGE1目錄1課程設(shè)計(jì)目的與要求 11.1設(shè)計(jì)目的 11.2設(shè)計(jì)要求 12硬件設(shè)計(jì) 22.1方案設(shè)計(jì) 22.2電路設(shè)計(jì) 22.3原理圖及PCB圖 32.4制板 32.5系統(tǒng)調(diào)試 33軟件設(shè)計(jì) 43.1流程圖 43.2程序清單 54設(shè)計(jì)結(jié)果與調(diào)試 64.1軟件調(diào)試 64.2硬件調(diào)試 64.3誤差分析 64.4教學(xué)建議 6結(jié)束語 7致謝 8參考文獻(xiàn) 9附錄 101課程設(shè)計(jì)目的與要求1.1設(shè)計(jì)目的了解數(shù)字鐘的原理,從而學(xué)會制作數(shù)字鐘。通過數(shù)字鐘的制作進(jìn)一步的了解在制作中用到的各種中小規(guī)模集成電路的作用及使用方法。學(xué)習(xí)與掌握各種組合邏輯電路與時序電路的原理與使用方法。學(xué)習(xí)并掌握單片機(jī)的使用和編程方法。1.2設(shè)計(jì)要求可調(diào)整時間的數(shù)字時鐘。只顯示分、秒,采用動態(tài)顯示模式。通過按鍵可對時鐘進(jìn)行選位和加減的時間調(diào)整,調(diào)整時選中位進(jìn)行閃爍。可實(shí)現(xiàn)時間暫停和重新啟動。計(jì)時精確。時+1=24?秒+1=60?時+1=24?秒+1=60?脈沖溢滿20?分+1=60?分清零,時加1時清零中斷返回圖3定時中斷流程圖秒清零,分加1秒加1定時中斷口3.2程序清單根據(jù)原理圖,寫出相應(yīng)的程序,程序清單詳見附錄A4設(shè)計(jì)結(jié)果與調(diào)試4.1軟件調(diào)試軟件為老師所提供提供,其原理在上面以作說明。軟件部分是先參考書上的例子,然后自己根據(jù)硬件電路寫程序,本次編程采用的是C語言。剛剛開始,編寫不會一次性通過,經(jīng)過仔細(xì)分析修改最后編譯成功。4.2硬件調(diào)試把程序燒入單片機(jī),上電后,按下開始\停止按鍵,時鐘便從000000開始每秒加1計(jì)時,再次按下開始\停止按鍵,時間暫停,進(jìn)入調(diào)時狀態(tài)。按秒按鍵,秒個位閃爍并加1;按下調(diào)分按鍵,分個為閃爍并加1;按下調(diào)時按鍵,分個為閃爍并加1。當(dāng)再次按下開始\停止按鍵時,時鐘又運(yùn)行。當(dāng)按下復(fù)位鍵時,時間顯示消失。經(jīng)以上調(diào)試所要求的功能均以實(shí)現(xiàn)。4.3誤差分析在調(diào)試過程中,最初幾次數(shù)碼管顯示有一定的問題,但最后發(fā)現(xiàn)是位控線和段控線的焊接存在問題。在運(yùn)行中存在一定的誤差,誤差產(chǎn)生有三種可能,首先是采用的計(jì)時方案是軟件計(jì)時的,計(jì)時優(yōu)勢利用中斷來實(shí)現(xiàn)。而你開啟定時器和開啟LED燈順序上是有先后的,這個過程需時間的,所以就產(chǎn)生了一定的誤差,當(dāng)然這個誤差是避免不了的,其次還有硬件系統(tǒng)也有一定的影響。第三,設(shè)計(jì)用到12MHz的晶振,計(jì)算是滿20次為一秒鐘,但實(shí)際會慢很多。4.4教學(xué)建議最開始學(xué)習(xí)單片機(jī)時,是對單片機(jī)不感興趣的,上課也是一直只是抱著完成任務(wù)的心態(tài),直到后來,上了第一次單片機(jī)實(shí)驗(yàn)課,王老師通過各種問題,讓我們鞏固上課所學(xué)知識,通過實(shí)際解決問題,才慢慢發(fā)現(xiàn)單片機(jī)是一門很有趣的課程,并且每當(dāng)你解決一個問題時,你會充滿成就感。希望王老師再接再厲,對我們之后的學(xué)弟學(xué)妹,也以同樣的心態(tài)對待。相信,他們也會像我們一樣,痛并快樂著!結(jié)束語這個學(xué)期即將結(jié)束,從剛開學(xué),老師就說我們的課程設(shè)計(jì)從第一節(jié)課開始。在這個學(xué)期里,我學(xué)到了很多,對單片機(jī)有了更深刻的認(rèn)識,也對自己的不足有了清醒的認(rèn)識。雖然我在上課時,覺得理論很容易,但是當(dāng)具體寫程序時,發(fā)現(xiàn)還是有各種各樣的問題出現(xiàn)。開學(xué)時畫PCB圖,一點(diǎn)都不熟練,出了不少錯誤。在焊接過程中,也出現(xiàn)了不少虛焊的情況。通過這次的課程設(shè)計(jì),使我注意到了以上幾點(diǎn),應(yīng)在以后的學(xué)習(xí)中加以注意。通過這次機(jī)會不但練習(xí)了編程,而且還對AT89S52單片機(jī)又加深了一些認(rèn)識,練習(xí)了定時器,中斷等。課程設(shè)計(jì)很快就這樣過去了。我們每個人都學(xué)到了很多東西,同時也感覺到了自己的不足,它將對我們以后參加工作有很大的幫助,有利于我們以后走上工作崗位。致謝在整個課程射界的過程中,同學(xué)給予的幫助很重要,他們是我成功的關(guān)鍵,尤其在焊接時,一個人很容易疏忽大意,而我們一起時,輕松愉快也不容易出問題,再就是遇到困難時,首先自己會仔細(xì)考慮,實(shí)在想不出來,我們會在一起思考找問題,每次問題的解決都會充滿成就感。在設(shè)計(jì)過程中,老師給予了我們很多幫助,其實(shí)在每次單片機(jī)實(shí)驗(yàn)的時候,老師就是通過各種各樣的問題,來讓我們更加好的學(xué)習(xí)單片機(jī)。沒有單片機(jī)實(shí)驗(yàn)帶給我們扎實(shí)的基礎(chǔ),這次課程設(shè)計(jì)也不會這么順利,取得成功。非常感謝老師的幫助!參考文獻(xiàn)1、馬忠梅,單片機(jī)的C語言Windows環(huán)境編程寶典[M],北京:北京航空航填天大學(xué)出版社,2003.6;1,MaZhongmei,microcontrollerClanguageWindowsenvironmentprogrammingbook[M],Beijing:BeijingUniversityofAeronauticsaviationdaysPress,2003.6;2、李光飛,單片機(jī)C程序設(shè)計(jì)指導(dǎo)[M],北京:北京航空航天大學(xué)出版社,2003.01;2,LiGuangfei,microcontrollerCprogramdesigntheguidance[M],Beijing:BeijingUniversityofAeronauticsandAstronauticsPress,2003.01;3、李光飛,單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[M],北京:北京航空航天大學(xué)出版社,2004.9。3,LiGuangfei,SCMcurriculumdesignexamplestoguide[M],Beijing:BeijingUniversityofAeronauticsandAstronauticsPress,2004.9.附錄附錄A:程序清單:#include<reg52.h>#include<intrins.h>/*共陽數(shù)碼管字型碼數(shù)組*//*0,1,2,3,4,5,6,7,8,9,p.,滅,-*/charcodedis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c,0xff,0xbf};/*顯示緩沖數(shù)組(存放顯示信息的字型碼的序號)*/charfind_code[8];chartime;sbitp12=P1^2;/********************************************************///函數(shù)名:voidDelayX1ms(uintcount)//功能:延時時間為1ms//調(diào)用函數(shù)://輸入?yún)?shù):count,1ms計(jì)數(shù)//輸出參數(shù)://說明:總共延時時間為1ms乘以count,crystal=12Mhz/********************************************************/#defineucharunsignedchar#defineuintunsignedintucharsec=0,min=0,hour=0;voidDelayX1ms(uintcount){uintj;while(count--!=0){for(j=0;j<80;j++);}}/*顯示函數(shù)*/voiddisp(){chari,j=0xfe;chark;for(i=0;i<8;i++){P2=j;k=find_code[i];P0=dis_code[k]; DelayX1ms(1);j=_crol_(j,1);} }/*************************************************************************函數(shù)原型:keychuli();*功能:處理與鍵盤相連的P1口的內(nèi)容,作為鍵值。************************************************************************/ucharkeychuli(){uchark;k=P1;//P1口內(nèi)容送Kk=~k;//取反return(k);//返回鍵值}/*************************************************************************函數(shù)原型:key();*功能:鍵盤掃描函數(shù),函數(shù)返回值即鍵值。************************************************************************/ucharkey(){ucharkeyzhi,keyzhii;//鍵盤按鍵鍵值臨時存放keyzhi=keychuli();//調(diào)P1口處理函數(shù)if(keyzhi!=0)//有鍵動作延時去抖動,否則函數(shù)返回 { disp(); disp(); keyzhi=keychuli();//再次調(diào)P1口處理函數(shù) if(keyzhi!=0)//真正有鍵按下,取鍵值并暫存 { keyzhii=keyzhi;while(keyzhi!=0)//判按鍵是否釋放,沒有釋放延時去抖動等待釋放{ disp(); disp();keyzhi=keychuli(); } keyzhi=keyzhii;//按鍵釋放后恢復(fù)按鍵鍵值 } }return(keyzhi);//返回按鍵鍵值}voidINTT0()interrupt1{staticucharclick=0;//定時器0定時中斷次數(shù)TH0=0x3c;TL0=0xb0;//設(shè)置初始值50ms為循環(huán)20次為1ms,12MHz ++click;if(click>=20)//是否到1秒,到1秒,秒加1,否則函數(shù)返回 { click=0; if(++sec>=60)//加到60秒,秒清0 { sec=0; if(++min>=60)//分加1,是否到60分,否則函數(shù)返回 { min=0;//加到60分,分清0 if(++hour>=24)//時加1,是否到24小時,否則函數(shù)返回 { hour=0;//加到24小時,時清0 }}} }find_code[0]=sec%10; find_code[1]=sec/10; find_code[2]=12; find_code[3]=min%10; find_code[4]=min/10; find_code[5]=12; find_code[6]=hour%10;find_code[7]=hour/10;//LED顯示緩沖區(qū)時間值更新}voidmain(){ while(1){ find_code[0]=11; find_code[1]=11; find_code[2]=11; find_code[3]=11; find_code[4]=11; find_code[5]=11; find_code[6]=11; find_code[7]=10; disp(); switch(key()) { case0x01:TMOD=0x01;//定時器1,工作方式1TH0=0x3c;TL0=0xb0;//50ms中斷一次EA=1;ET0=1;TR0=1; while(1) { find_code[0]=0; find_code[1]=0; find_code[2]=12; find_code[3]=0; find_code[4]=0; find_code[5]=12; find_code[6]=0; find_code[7]=0; disp(); while(1) {mm:disp(); if(key()==0x01)//進(jìn)入調(diào)整狀態(tài) { while(1) { TR0=0; disp(); switch(key()) {case0x01: {TR0=1;gotomm;break;} //進(jìn)入運(yùn)行狀態(tài) case0x02: //時調(diào)整 {hour++; if(hour==24) hour=0; break; } case0x04: // 分調(diào)整 {min++; if(min==60) min=0; break; } case

溫馨提示

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

最新文檔

評論

0/150

提交評論