單片機(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),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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é)會(huì)制作數(shù)字鐘。通過數(shù)字鐘的制作進(jìn)一步的了解在制作中用到的各種中小規(guī)模集成電路的作用及使用方法。學(xué)習(xí)與掌握各種組合邏輯電路與時(shí)序電路的原理與使用方法。學(xué)習(xí)并掌握單片機(jī)的使用和編程方法。1.2設(shè)計(jì)要求可調(diào)整時(shí)間的數(shù)字時(shí)鐘。只顯示分、秒,采用動(dòng)態(tài)顯示模式。通過按鍵可對(duì)時(shí)鐘進(jìn)行選位和加減的時(shí)間調(diào)整,調(diào)整時(shí)選中位進(jìn)行閃爍??蓪?shí)現(xiàn)時(shí)間暫停和重新啟動(dòng)。計(jì)時(shí)精確。時(shí)+1=24?秒+1=60?時(shí)+1=24?秒+1=60?脈沖溢滿20?分+1=60?分清零,時(shí)加1時(shí)清零中斷返回圖3定時(shí)中斷流程圖秒清零,分加1秒加1定時(shí)中斷口3.2程序清單根據(jù)原理圖,寫出相應(yīng)的程序,程序清單詳見附錄A4設(shè)計(jì)結(jié)果與調(diào)試4.1軟件調(diào)試軟件為老師所提供提供,其原理在上面以作說明。軟件部分是先參考書上的例子,然后自己根據(jù)硬件電路寫程序,本次編程采用的是C語言。剛剛開始,編寫不會(huì)一次性通過,經(jīng)過仔細(xì)分析修改最后編譯成功。4.2硬件調(diào)試把程序燒入單片機(jī),上電后,按下開始\停止按鍵,時(shí)鐘便從000000開始每秒加1計(jì)時(shí),再次按下開始\停止按鍵,時(shí)間暫停,進(jìn)入調(diào)時(shí)狀態(tài)。按秒按鍵,秒個(gè)位閃爍并加1;按下調(diào)分按鍵,分個(gè)為閃爍并加1;按下調(diào)時(shí)按鍵,分個(gè)為閃爍并加1。當(dāng)再次按下開始\停止按鍵時(shí),時(shí)鐘又運(yùn)行。當(dāng)按下復(fù)位鍵時(shí),時(shí)間顯示消失。經(jīng)以上調(diào)試所要求的功能均以實(shí)現(xiàn)。4.3誤差分析在調(diào)試過程中,最初幾次數(shù)碼管顯示有一定的問題,但最后發(fā)現(xiàn)是位控線和段控線的焊接存在問題。在運(yùn)行中存在一定的誤差,誤差產(chǎn)生有三種可能,首先是采用的計(jì)時(shí)方案是軟件計(jì)時(shí)的,計(jì)時(shí)優(yōu)勢(shì)利用中斷來實(shí)現(xiàn)。而你開啟定時(shí)器和開啟LED燈順序上是有先后的,這個(gè)過程需時(shí)間的,所以就產(chǎn)生了一定的誤差,當(dāng)然這個(gè)誤差是避免不了的,其次還有硬件系統(tǒng)也有一定的影響。第三,設(shè)計(jì)用到12MHz的晶振,計(jì)算是滿20次為一秒鐘,但實(shí)際會(huì)慢很多。4.4教學(xué)建議最開始學(xué)習(xí)單片機(jī)時(shí),是對(duì)單片機(jī)不感興趣的,上課也是一直只是抱著完成任務(wù)的心態(tài),直到后來,上了第一次單片機(jī)實(shí)驗(yàn)課,王老師通過各種問題,讓我們鞏固上課所學(xué)知識(shí),通過實(shí)際解決問題,才慢慢發(fā)現(xiàn)單片機(jī)是一門很有趣的課程,并且每當(dāng)你解決一個(gè)問題時(shí),你會(huì)充滿成就感。希望王老師再接再厲,對(duì)我們之后的學(xué)弟學(xué)妹,也以同樣的心態(tài)對(duì)待。相信,他們也會(huì)像我們一樣,痛并快樂著!結(jié)束語這個(gè)學(xué)期即將結(jié)束,從剛開學(xué),老師就說我們的課程設(shè)計(jì)從第一節(jié)課開始。在這個(gè)學(xué)期里,我學(xué)到了很多,對(duì)單片機(jī)有了更深刻的認(rèn)識(shí),也對(duì)自己的不足有了清醒的認(rèn)識(shí)。雖然我在上課時(shí),覺得理論很容易,但是當(dāng)具體寫程序時(shí),發(fā)現(xiàn)還是有各種各樣的問題出現(xiàn)。開學(xué)時(shí)畫PCB圖,一點(diǎn)都不熟練,出了不少錯(cuò)誤。在焊接過程中,也出現(xiàn)了不少虛焊的情況。通過這次的課程設(shè)計(jì),使我注意到了以上幾點(diǎn),應(yīng)在以后的學(xué)習(xí)中加以注意。通過這次機(jī)會(huì)不但練習(xí)了編程,而且還對(duì)AT89S52單片機(jī)又加深了一些認(rèn)識(shí),練習(xí)了定時(shí)器,中斷等。課程設(shè)計(jì)很快就這樣過去了。我們每個(gè)人都學(xué)到了很多東西,同時(shí)也感覺到了自己的不足,它將對(duì)我們以后參加工作有很大的幫助,有利于我們以后走上工作崗位。致謝在整個(gè)課程射界的過程中,同學(xué)給予的幫助很重要,他們是我成功的關(guān)鍵,尤其在焊接時(shí),一個(gè)人很容易疏忽大意,而我們一起時(shí),輕松愉快也不容易出問題,再就是遇到困難時(shí),首先自己會(huì)仔細(xì)考慮,實(shí)在想不出來,我們會(huì)在一起思考找問題,每次問題的解決都會(huì)充滿成就感。在設(shè)計(jì)過程中,老師給予了我們很多幫助,其實(shí)在每次單片機(jī)實(shí)驗(yàn)的時(shí)候,老師就是通過各種各樣的問題,來讓我們更加好的學(xué)習(xí)單片機(jī)。沒有單片機(jī)實(shí)驗(yàn)帶給我們?cè)鷮?shí)的基礎(chǔ),這次課程設(shè)計(jì)也不會(huì)這么順利,取得成功。非常感謝老師的幫助!參考文獻(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ù)組(存放顯示信息的字型碼的序號(hào))*/charfind_code[8];chartime;sbitp12=P1^2;/********************************************************///函數(shù)名:voidDelayX1ms(uintcount)//功能:延時(shí)時(shí)間為1ms//調(diào)用函數(shù)://輸入?yún)?shù):count,1ms計(jì)數(shù)//輸出參數(shù)://說明:總共延時(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;//鍵盤按鍵鍵值臨時(shí)存放keyzhi=keychuli();//調(diào)P1口處理函數(shù)if(keyzhi!=0)//有鍵動(dòng)作延時(shí)去抖動(dòng),否則函數(shù)返回 { disp(); disp(); keyzhi=keychuli();//再次調(diào)P1口處理函數(shù) if(keyzhi!=0)//真正有鍵按下,取鍵值并暫存 { keyzhii=keyzhi;while(keyzhi!=0)//判按鍵是否釋放,沒有釋放延時(shí)去抖動(dòng)等待釋放{ disp(); disp();keyzhi=keychuli(); } keyzhi=keyzhii;//按鍵釋放后恢復(fù)按鍵鍵值 } }return(keyzhi);//返回按鍵鍵值}voidINTT0()interrupt1{staticucharclick=0;//定時(shí)器0定時(shí)中斷次數(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)//時(shí)加1,是否到24小時(shí),否則函數(shù)返回 { hour=0;//加到24小時(shí),時(shí)清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ū)時(shí)間值更新}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;//定時(shí)器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: //時(shí)調(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等.壓縮文件請(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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論