C單片機秒表計時最新文檔_第1頁
C單片機秒表計時最新文檔_第2頁
C單片機秒表計時最新文檔_第3頁
C單片機秒表計時最新文檔_第4頁
C單片機秒表計時最新文檔_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C單片機秒表計時最新文檔(可以直接使用,可編輯最新文檔,歡迎下載)

C單片機秒表計時最新文檔(可以直接使用,可編輯最新文檔,歡迎下載)南開大學濱海學院C51嵌入式軟件設計(C語言)題目:計時秒表功能描述:本設計實現(xiàn)在99秒內的秒表計時,一個按鍵實現(xiàn)開始、暫停、復位。原理概述:P1接四位七段數(shù)碼管,P3.2接一按鍵產(chǎn)生外部中斷0,P3.4-P3.7控制掃描顯示。計時使用定時器0產(chǎn)生10ms中斷累計。按鍵不同次序決定了對應的控制功能,因為第一次按鍵必定為開始計時,所以第二次按鍵判斷為暫停,依次第三次為置零。主程序調用顯示程序,顯示程序實時顯示計時時間。效果顯示圖一(電路總圖)圖二(效果顯示)注:第四位顯示為單位:S程序清單#include<reg51.h>#include<stdio.h>unsignedcharTab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};sbitP37=P3^7;sbitP36=P3^6;sbitP35=P3^5;sbitP34=P3^4;unsignedinta=0,cout=0,mm=0;x,y,p,q;/*********延時*********************/voiddelay(){intg;for(g=70;g>0;g--);}/*********顯示程序*****************/voiddisplay(){x=cout/10;//秒十位P34=0;P1=Tab[x];delay();P34=1;y=cout-x*10;//秒各位P35=0;P1=Tab[y];delay();P1=0x80;delay();P35=1;p=mm/10;//ms的高位P36=0;P1=Tab[p];delay();P36=1;P37=0;//顯示單位:SP1=Tab[5];delay();P37=1;}/*********主程序********************/voidmain(){IT0=1;EX0=1;ET0=1;TMOD=0x01;TH0=0xD8;//裝初值,10msTL0=0xF0;EA=1;while(1){display();};}/*********外部按鍵中斷子程序*********/voidint0()interrupt0{if(a==0)//開始計時{TR0=1;mm=0;a++;}elseif(a==1)//暫停計時{TR0=0;a++;}else//置零{a=0;mm=0;cout=0;}}/*********定時器子程序****************/voidtime0()interrupt1{TH0=0xD8;TL0=0xF0;mm++;if(mm==80)//考慮其它損耗,調整后約為1S{cout++;mm=0;}}單片機課程設計課程設計任務書2017-2018學年第一學期第17周-18周題目基于51單片機控制的多功能秒表系統(tǒng)內容及要求1.設計制作一個秒表系統(tǒng),可用多位數(shù)碼管顯示時間。2.可用開關控制并用多位數(shù)碼管顯示當前時間。3.可以進行計時并能清零重新計時。進度安排1.布置任務、方案論證1天2.硬件制作、程序編寫、仿真調試3天3.檢查、整理、寫設計報告、小結2天4.答辯1天學生姓名:許樂郭利鉑指導時間:12月23日-12月29日指導地點:F樓403室任務下達2021年12月23日任務完成2021年12月29日考核方式1.評閱√2.答辯√3.實際操作√4.其它□指導教師蔣沅系(部)主任王長坤注:1、此表一組一表二份,課程設計小組組長一份;任課教師授課時自帶一份備查。2、課程設計結束后與“課程設計小結”、“學生成績單”一并交院教務存檔。摘要本設計是設計一個單片機控制的多功能秒表系統(tǒng)。近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷地走向深入,同時帶動著傳統(tǒng)控制檢測日新月異的更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往是作為一個核心部件來使用,僅單片機方面的知識是不夠的,還要根據(jù)具體的硬件結構,以及針對具體的應用對象的軟件結合,加以完善。秒表的出現(xiàn),解決了傳統(tǒng)的由于人為因素造成的誤差和不公平性。本設計的多功能秒表系統(tǒng)采用AT89C51單片機為中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結合顯示電路、電源電路、LED數(shù)碼管以及按鍵電路來設計計時器。將軟、硬件有機地結合起來,使得系統(tǒng)能夠正確地進行計數(shù),并且結合相應的顯示驅動程序,使數(shù)碼管能夠正確地顯示時間,暫停和中斷。我們設計的秒表可以同時記錄八個相對獨立的時間,通過上翻下翻來查看這八個不同的計時值,可謂功能強大。其中軟件系統(tǒng)采用匯編語言編寫程序,包括顯示程序,計數(shù)程序,中斷,延時程序,按鍵消抖程序等,硬件系統(tǒng)利用PROTEUS強大的功能來實現(xiàn),簡單且易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。關鍵字:單片機,多功能秒表小組成員:許樂,郭利鉑小組分工:小組成員:討論并確定秒表要實現(xiàn)哪些功能許樂:硬件電路的設計仿真,查閱資料郭利鉑:編寫程序,撰寫實驗報告目錄5.元器件清單………………………167.參考文獻…………………….….18設計一個單片機控制的秒表系統(tǒng)。利用單片機的定時器/計數(shù)器定時和記數(shù)的原理,結合顯示電路、LED數(shù)碼管以及按鍵來設計秒表。將軟、硬件有機地結合起來,使得系統(tǒng)能夠正確地進行計時,同時具有開始/暫停,記錄,上翻下翻,清零等功能。(1)共四位LED顯示,顯示時間為00:00~59.99(2)共五個按鍵,分別是開始/暫停,記錄,上翻,下翻,清零鍵;(3)能同時記錄多個相對獨立的時間并分別顯示;(4)翻頁按鈕查看多個不同的計時值;(1)通過本次課程設計可以使我們進一步熟悉和掌握單片機內部結構和工作原理,了解單片機應用系統(tǒng)設計的基本步驟和方法。(2)通過利用AT89C51單片機,理解單片機在自動化儀表中的作用以及掌握單片機的編程方法。(3)通過設計一個簡單的實際應用輸入及顯示模擬系統(tǒng),掌握單片機仿真軟件PROTEUS的使用方法。(4)該實驗通過單片機的定時器/計數(shù)器定時和計數(shù)原理,設計簡單的計時器系統(tǒng),擁有正確的計時、暫停、清零、功能,并能同時記錄多個相對獨立的時間利用翻頁按鈕查看多個不同的計時值,該種秒表在現(xiàn)實生活中應用廣泛,具有現(xiàn)實意義。本系統(tǒng)采用AT89C51單片機為中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結合硬件電路如電源電路,晶振電路,復位電路,顯示電路,以及一些按鍵電路等來設計計時器,將軟、硬件有機地結合起來。其中軟件系統(tǒng)采用匯編語言編寫程序,包括顯示,計數(shù),中斷,延時,按鍵消抖程序等,并在編程軟件中調試運行,硬件系統(tǒng)利用PROTEUS強大的功能來實現(xiàn),簡單且易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。單片機外圍電路電路電源電路電路顯示電路鍵盤電路圖1系統(tǒng)電路原理MCS-51系列單片機是8位單片機產(chǎn)品,89C51是其中的典型代表,基本模塊包括以下幾個部分:(1)CPU:89C51的CPU是8位的,另外89C51內部有1個位處理器(2)R0M:4KB的片內程序存儲器,存放開發(fā)調試完成的應用程序(3)RAM:256B的片內數(shù)據(jù)存儲器,容量小,但作用大(4)I/O口:P0-P3,共4個口32條雙向且可位尋址的I/O口線(5)中斷系統(tǒng):共5個中斷源,3個內部中斷,2個外部中斷(6)定時器/計數(shù)器:2個16位的可編程定時器/計數(shù)器(7)通用串行口:全雙工通用異步接收器/發(fā)送器(8)振蕩器:89C51的外接晶振與內部時鐘振蕩器為CPU提供時鐘信號(9)總線控制:89C51對外提供若干控制總線,便于系統(tǒng)擴展89C51的引腳圖如下:89C51單片機引腳圖89C51芯片內部有一個高增益反相放大器,用于構成振蕩器。引線XTAL1和XTAL2分別為反向放大器的輸入和輸出,兩端跨接石英晶體及兩個電容就可構成穩(wěn)定的自激振蕩器。這里,我們選用51單片機12MHZ的內部振蕩方式,電容器C1,C2起穩(wěn)定振蕩頻率,并對振蕩頻率有微調作用,C1和C2可在20-100PF之間取值,這里取33PF。采用上電加按鍵復位電路,上電后,由于電容充電,使RST持續(xù)一段高電平時間。當單片機已在運行之中時,按下復位鍵也能使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電加按鍵復位的操作。按鍵電路在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過I/O口設計一個鍵盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。鍵盤掃描電路節(jié)省I/O口,但編程有些復雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡化,我們采用按鍵電路,用部分P1口做開關,P1.0開始/暫停,P1.1記錄,P1.2上翻,P1.3下翻,P1.4清零。對于按鍵的設計,采用了防抖動的程序設計,使系統(tǒng)的性能得到進一步的提升。當按鍵被按下時,相應的引腳被拉低,經(jīng)掃描后,獲得鍵值,并執(zhí)行鍵功能程序,因此按下不同的按鍵,將執(zhí)行不同的功能程序。顯示電路既可以選用液晶顯示器,也可以選用數(shù)碼管顯示。我們采用的是數(shù)碼管顯示電路。用四個共陰極LED顯示,LED是七段式顯示器,內部有7個條形發(fā)光二極管和1個小圓點發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。在用數(shù)碼管顯示時,我們有靜態(tài)和動態(tài)兩種選擇,靜態(tài)顯示程序簡單,顯示穩(wěn)定,但是占用端口比較多;動態(tài)顯示所使用的端口比較少,可以節(jié)省單片機的I/O口。在設計中,我們采用LED動態(tài)顯示,用P0口驅動顯示。由于P0口的輸出級是開漏電路,用它驅動時需要外接上拉電阻才能輸出高電平。在軟件設計中,一般采用模塊化的程序設計方法,它具有明顯的優(yōu)點。把一個多功能的復雜的程序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設計和調試,優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結構層次一目了然。應用系統(tǒng)的程序由包含多個模塊的主程序和各種子程序組成。各程序模塊都要完成一個明確的任務,實現(xiàn)某個具體的功能,如:計數(shù)、延時、和顯示等,在具體需要時調用相應的模塊即可。功能描述:用四位LED數(shù)碼管顯示時間。一個"開始/暫停"鍵,一個"復位"鍵,一個“記錄”鍵,可同時記錄八個相對獨立的時間;一個“上翻”鍵,一個“下翻”鍵,查看八個不同的計時值。五個按鍵分別通過五個端口控制秒表的五個功能。開始開始初始化化P1.0=0??P1.1=0??P1.2=0??P1.3=0??P1.4=0??停止下翻上翻夠8個個?NY記錄NNNNNYYYYY清零開始開始初始化P1.0=0?P1.1=0?P1.2=0?P1.3=0?P1.4=0?停止下翻上翻夠8個?NY暫停記錄NNNNNYYYYY清零程序如下:/*1、程序目的:使用定時器學習秒表計時,記錄8組數(shù)據(jù),通過上翻、下翻鍵查看記錄的數(shù)據(jù)2、硬件要求:數(shù)碼管、晶振12M*/#include<reg52.h>codeunsignedchartab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共陰數(shù)碼管0-9codeunsignedchartab1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//共陰數(shù)碼管0-9帶小數(shù)點sbitkey1=P1^0; //開始、暫停sbitkey2=P1^1; //記數(shù)sbitkey3=P1^2; //上翻sbitkey4=P1^3; //下翻sbitkey5=P1^4; //清零staticunsignedchar ms,sec;staticunsignedcharSec[8],Ms[8];staticinti,j;voiddelay(unsignedintcnt)//延時程序{while(--cnt);} voidmain(){ unsignedcharkey3_flag=0,key4_flag=0;TMOD|=0x01;//定時器010msin12Mcrystal用于計時 TH0=0xd8; TL0=0xf0; ET0=1; TR0=1;TMOD|=0x10;//定時器1用于動態(tài)掃描 TH1=0xF8; TL1=0xf0; ET1=1; TR1=1;EA=1; sec=0;//初始化 ms=0;P1=0xff; i=0; j=0; while(1){ if(i>=8)i=0; start://開始、暫停 if(!key1) //判斷是否按下 { delay(50); //去抖 if(!key1) { while(!key1) //等待按鍵釋放 {;} TR0=!TR0; } } //記錄if(!key2) //判斷是否按下 { delay(50); //去抖 if(!key2) { while(!key2)//等待按鍵釋放 {;} if(i>=8) //8組數(shù)據(jù)記錄完畢 {TR0=0;gotostart;} Sec[i]= sec; //將數(shù)據(jù)存入數(shù)組 Ms[i]=ms; i++; } }//上翻 if(!key3) { delay(50); if(!key3) { while(!key3) {;} TR0=0; key3_flag=1; //按鍵3標志 if(j==i) gotostart; else if(key4_flag) j+=2; key4_flag=0; sec=Sec[j];ms=Ms[j]; j++; } }//下翻 if(!key4) { delay(50); if(!key4) { while(!key4) {;} TR0=0; key4_flag=1; //按鍵4標志 if(j<0) gotostart; else if(key3_flag) j-=2; key3_flag=0; sec=Sec[j];ms=Ms[j]; //顯示數(shù)組里的內容 j--; } }//清零 if(!key5) { delay(50); if(!key5) while(!key5) {;} TR0=0; ms=0; sec=0; for(i=0;i<8;i++) { Sec[i]=0;Ms[i]=0; } i=0; }} }/********************************//*定時中斷1*//********************************/voidtime1_isr(void)interrupt3using0//定時器1用來動態(tài)掃描{staticunsignedcharnum;TH1=0xF8;//重入初值 TL1=0xf0; switch(num) { case0: P2=0xfe;P0=tab[sec/10];break;//顯示秒十位 case1: P2=0xfd;P0=tab1[sec%10];break;//顯示秒個位 case2: P2=0xfb;P0=tab[ms/10];break;//顯示十位 case3:P2=0xf7;P0=tab[ms%10];break;//顯示個位 default:break; } num++; if(num==4) num=0;}/********************************//*定時中斷0*//********************************/voidtim(void)interrupt1using1{TH0=0xd8;//重新賦值TL0=0xf0;ms++;//毫秒單元加1 if(ms>=100) { ms=0;//等于100時歸零 sec++;//秒加1 if(sec>=60) { sec=0;//秒等于60時歸零 } }}將以上程序清單導入先前做好的Proteus仿真電路,匯編之后,開始進行仿真。仿真結果如下:顯示清零功能:按下開始鍵后顯示按下清零鍵后顯示按“開始”鍵,秒表開始計時;按“暫?!辨I,秒表暫停計時;按記錄鍵,秒表記錄時間,共可記錄八個數(shù)值;按上翻下翻鍵,可查看這八個不同的計時值。根據(jù)實驗要求,本次課設基本完成了設計要求,由于秒表系統(tǒng)并不一定僅僅局限于計時,定時等功能,還可以進行多項的擴展,可以利用AT89C51強大的擴展功能,進一步豐富秒表的功能,例如可設定計時時間,倒計時等等眾多功能。單片機以其強大的功能和良好的兼容性可以更好地為我們服務,通過查閱各種資料,多了解一些單片機有關知識,可以為以后的工作和學習生活創(chuàng)造更多的便利條件。5.元器件清單元件名稱型號數(shù)量/個單片機AT89C521晶振12MHZ1電容22pF2電解電容10uF1電源5V1數(shù)碼管HS-3461AS1電阻1K/10K5/8按鍵開關6通過本次課程設計,我們深刻地認識到自己有很多不足之處,比如在自主學習能力方面的不足,實際動手操作能力的不足等。這次的單片機課程設計是理論與實踐相結合的范例。該設計從頭到尾都要自己參與進來,熟悉了整個設計流程才能更快地設計出方案并完成設計。本次課程設計我主要負責硬件電路的焊接,寫程序和查閱相關資料。單片機課程早已結束,相關的知識已經(jīng)很模糊,導致我們在設計硬件電路中遇到了不少麻煩。首先是不知從何入手。雖然小組討論后確定了秒表要實現(xiàn)的功能,可是沒有相關理論知識的熟知和實踐操作。查閱了與89C51單片機相關的資料也閱讀了其他人單片機數(shù)字秒表的設計,慢慢地我們開始了解其中原理,一步步設計出了硬件電路的各個部分,如晶體振蕩電路,復位電路,按鍵電路,顯示電路。完成設計后需要運用PROTEUS軟件進行設計仿真。這次的課程設計同學進行了交流和討論,我們分工進行設計,從搜索資料到硬件、軟件的調試,每一步、每一個細節(jié)都經(jīng)過我們自己的思考,我們共同討論各方案的比較選擇、硬件、軟件的設計和調試,最終拿出了我們的成果。在做的過程中不但加深了我們對單片機理論知識的認識和理解還認識到了這門學科在應用方面的廣闊前景。實踐是最有高度也是最能體現(xiàn)整體水平的整個設計過程中,我們不斷地探索,設計出了不一樣的硬件電路圖,寫過了不一樣的程序,正如設計中如何能使硬件電路圖簡單明了,程序簡單而準確,如何能準確的運行,都是通過與同學老師的交流,慢慢摸索出來的。以上的不斷探索,使我們進一步熟悉和掌握單片機內部結構和工作原理,了解單片機應用系統(tǒng)設計的基本步驟和方法。通過利用AT89C51單片機,理解單片機在自動化儀表中的作用以及掌握單片機的編程方法。通過設計一個簡單的實際應用輸入及顯示模擬系統(tǒng),掌握單片機仿真軟件PROTEUS的使用方法。我們設計的這種具有記錄,上翻下翻功能的秒表在現(xiàn)實生活中應用廣泛,如體育項目,因此本次課程設計具有現(xiàn)實意義,我很開心能將知識運用到實踐中并在自主學習中收獲到那么多。7.參考文獻[1]萬福君.

單片微機原理系統(tǒng)設計與應用.合肥:中國科技大學出版社,2005[2]楊光友.單片微型計算機原理與接口技術.北京:水利水電出版社,2002[3]胡耀輝.

單片機系統(tǒng)開發(fā)實例經(jīng)典.

北京:冶金工業(yè)出版社,2006[4]劉守義、楊宏麗.單片機應用技術.西安:西安電子科技大學出版社,2003[5]姜武中、姜春霞.

片機原理與接口技術.

大連:大連理工大學出版社,2002[6]李朝青.

單片機原理及其接口技術.

北京:北京航空大學出版社,1998[7]肖玲妮.

Protel99SE印刷電路板設計教程.

北京:清華大學出版社,2003沈陽理工大學應用技術學院畢業(yè)設計(論文)題目:基于單片機的數(shù)字電子秒表的設計與實現(xiàn)系別:信息工程系專業(yè):自動化學生姓名:胡培指導教師:唐朝仁年月日摘要近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷的走向深入.本文闡述了基于單片機的數(shù)字電子秒表設計.本設計主要特點是計時精度達到0.001s,解決了傳統(tǒng)的由于計時精度不夠造成的誤差和不公平性,是各種體育競賽的必備設備之一。另外硬件部分設置了查看按鍵,可以對秒表上一次計時時間進行保存,供使用者查詢。本設計的數(shù)字電子秒表系統(tǒng)采用AT89C52單片機為中心器件,利用其定時器/計數(shù)器定時和記數(shù)的原理,結合顯示電路、LED數(shù)碼管以及外部中斷電路來設計計時器。將軟、硬件有機地結合起來,使得系統(tǒng)能夠實現(xiàn)五位LED顯示,顯示時間為0~99。999秒,計時精度為0.001秒,能正確地進行計時,同時能記錄一次時間,并在下一次計時后對上一次計時時間進行查詢。其中軟件系統(tǒng)采用匯編語言編寫程序,包括顯示程序,定時中斷服務,外部中斷服務程序,延時程序等,并在WAVE中調試運行,硬件系統(tǒng)利用PROTEUS強大的功能來實現(xiàn),簡單切易于觀察,在仿真中就可以觀察到實際的工作狀態(tài)。關鍵字:單片機;數(shù)字電子秒表;仿真AbstractWiththerapiddevelopmentofscienceandtechnologyinrecentyears,SCMapplicationsareconstant-depthmanner.Inthispaper,basedonsinglechipdesignofdigitalelectronicstopwatch.Themaincharacteristicsofthisdesigntimingaccuracyof0。001s,tosolvethetraditionalresultofalackaccuracyduetotimingerrorsandunfair,andisavarietyofsportscompetitions,oneoftheessentialequipment。InadditionthehardwarepartofthesetViewbuttononthestopwat(yī)chcanbethelasttimetosavetimeforuserqueries.Thedesignofthemulti—functionstopwatchsystemusesSTC89C52microcontrollerasthecentraldevice,anduseitstimer/countertimingandthecountprinciples,combinedwithdisplaycircuit,LEDdigitaltube,aswellastheexternalinterruptcircuittodesignatimer。Thesoftwareandhardwaretogetherorganically,allowingthesystemtoachievetwoLEDdisplayshowsthetimefrom0to99.999seconds,Timingaccuracyof0.001seconds,Beabletocorrectlytimeatthesametimetorecordatime,andthenexttimeafterthelasttimethetimetosearch.automaticallyaddedasecondinwhichsoftwaresystemsusingassemblylanguageprogramming,includingthedisplayprogram,timing,interruptservice,externalinterruptserviceroutine,delayprocedures,keyconsumershakingprocedures,andWAVEinthecommissioning,operation,hardwaresystemusestoachievePROTEUSpowerful,simpleandeasytoobservethecutinthesimulat(yī)ioncanbeobservedontheactualworkingcondition.Keyword:LEDdisplay;High—precisionstopwatch;STC89C52目錄秒表計時器是電器制造,工業(yè)自動化控制、國防、實驗室及科研單位理想的計時儀器,它廣泛應用于各種繼電器、電磁開關,控制器、延時器、定時器等的時間測試。奧運男子百米飛人大戰(zhàn)中,牙買加飛人博爾特以9秒69的成績奪得冠軍。而博爾特沖過終點的瞬間,熒屏顯示其成績?yōu)?秒68。相差的這個0.01秒,系由電子計時系統(tǒng)確認.奧運會男子100米蝶泳決賽上,美國選手菲爾普斯以50秒58的成績驚險奪冠,距離“八金夢想”僅一步之遙。塞爾維亞選手查維奇以50。59秒獲得銀牌,只比菲爾普斯慢0.01秒。這種細微的差距,即使是現(xiàn)場大屏幕用經(jīng)典超慢鏡頭回放,也無法分辨.2004年8月28日15點15分,中國選手孟關良/楊文軍在雅典奧運會男子500米劃艇決賽中,以1分40秒278的成績獲得中國在雅典奧運會的第28金.這是中國皮劃艇項目的第一枚奧運金牌,也是中國水上項目在歷屆奧運會上所獲得的第一枚金牌。孟關良/楊文軍的成績比獲得銀牌的古巴選手只快了0.072秒,以至于兩人在奪冠之后還不敢相信。自首屆現(xiàn)代奧運會在希臘雅典舉辦以來,奧運計時技術一直在不斷地向前發(fā)展。一百多年過去了,首屆現(xiàn)代奧運會上計時所用的跑表如今換成了一系列高科技計時裝置,如高速數(shù)碼攝像機、電子觸摸墊、紅外光束、無線應答器等等。鑒于當今計時技術的快速發(fā)展,即便千分之一秒(為眨眼的40倍)的毫微差距,也決定著冠軍的歸屬。在現(xiàn)在的體育競技比賽中,隨著運動員的水平不斷提高,差距也在不斷縮小。有些運動對時間精度的要求也越來越高,有時比賽冠亞軍之間的差距只有幾毫秒,因此就需要高精度的秒表來記錄成績。有關計時鐘表的發(fā)展歷史,大致可以分為三個演變階段。一、從大型鐘向小型鐘演變.二、從小型鐘向袋表過渡。三、從袋表向腕表發(fā)展.每一階段的發(fā)展都是和當時的技術發(fā)明分不開的。1088年,當時我國宋朝的科學家蘇頌和韓工廉等人制造了水運儀象臺,它是把渾儀、渾象和機械計時器組合起來的裝置.它以水力作為動力來源,具有科學的擒縱機構,雖然幾十年后毀于戰(zhàn)亂,但它在世界鐘表史上具有極其重要的意義.1656年,荷蘭的科學家惠更斯應用伽利略的理論設計了鐘擺,第二年,在他的指導下年輕鐘匠S.Coster制造成功了第一個擺鐘。1675年,他又用游絲取代了原始的鐘擺,這樣就形成了以發(fā)條為動力、以游絲為調速機構的小型鐘,同時也為制造便于攜帶的袋表提供了條件.18世紀期間發(fā)明了各種各樣的擒縱機構,為袋表的進一步產(chǎn)生與發(fā)展奠定了基礎.英國人GeorgeGraham在1726年完善了工字輪擒縱機構,它和之前發(fā)明的垂直放置的機軸擒縱機構不同,所以使得袋表機芯相對變薄。20世紀初,尤其是第一次世界大戰(zhàn)的爆發(fā),袋表已經(jīng)不能適應作戰(zhàn)軍人的需要,腕表的生產(chǎn)成為大勢所趨.許多新的設計和技術也被應用在腕表上,成為真正意義上的帶在手腕上的計時工具。緊接著的二戰(zhàn)使腕表的生產(chǎn)量大幅度增加,價格也隨之下降,使普通大眾也可以擁有它。腕表的年代到來了?。?98年:建立超冷銫原子鐘,比微微秒又要精確10萬倍。從我國水運儀像臺的發(fā)明到現(xiàn)在各國都在研制的原子鐘這幾百年的鐘表演變過程中,我們可以看到,各個不同時期的科學家和鐘表工匠用他們的聰明的智慧和不斷的實踐融合成了一座時間的隧道,同時也為我們勾勒了一條鐘表文化和科技發(fā)展的軌跡。本設計利用AT89C52單片機的定時器/計數(shù)器定時和記數(shù)的原理,使其能精確計時。利用中斷系統(tǒng)使其能實現(xiàn)開始暫停的功能.P0口輸出段碼數(shù)據(jù),P2.0—P2.4口作列掃描輸出,P1.1、P3.2、P3。3、P2.5分別接四個按鈕開關,分別實現(xiàn)開始、暫停、清零和查看上次時間的功能。顯示電路由五位共陰極數(shù)碼管組成.初始狀態(tài)下計時器顯示00.000,當按下開始鍵時,外部中斷INT1向CPU發(fā)出中斷請求,CPU轉去執(zhí)行外部中斷1服務程序,即開啟定時器T0。計時采用定時器T0中斷完成,定時溢出中斷周期為1ms,當一處中斷后向CPU發(fā)出溢出中斷請求,每發(fā)出一次中斷請求就對毫秒計數(shù)單元進行加一,達到10次就對十毫秒位進行加一,依次類推,直到99。999秒重新復位.在計時過程中,只要按下暫停鍵,外部中斷INT0向CPU發(fā)出中斷請求,CPU轉去執(zhí)行外部中斷0服務程序,即關閉定時器T0,調用顯示程序,實現(xiàn)暫停功能,同時將此次計時時間存入寄存區(qū).然后對P1。1進行掃描。當P1。1按下時就跳轉回主程序.等待下一次計時開始.在按下暫停鍵時,將此時的計時時間存入中間緩存區(qū),當再次按下開始鍵時,則講中間緩存區(qū)的數(shù)據(jù)轉入最終緩存區(qū)。秒表停止后對查看鍵P2.5進行掃描,P2.5按下為低電平時,調用最終緩存區(qū)的數(shù)據(jù)進行顯示,即顯示上一次計時成績.當P2.5位高電平時,調用顯示緩存區(qū)的數(shù)據(jù)進行顯示,即顯示當此計時的成績。根據(jù)以上設計思路從而實現(xiàn)數(shù)字電子秒表的計時和查看上一次計時時間的功能。本文主要內容包括三部分:第一部分介紹硬件部分設計思路及方案;第二部分介紹了軟件部分的設計思路和設計;最后一部分則是整個系統(tǒng)的安裝與調試過程。數(shù)字電子秒表具有顯示直觀、讀取方便、精度高等優(yōu)點,在計時中廣泛使用。本設計用單片機組成數(shù)字電子秒表,力求結構簡單、精度高為目標。設計中包括硬件電路的設計和系統(tǒng)程序的設計。其硬件電路主要有主控制器,計時與顯示電路和回零、啟動和停表電路等。主控制器采用單片機AT89C52,顯示電路采用共陰極LED數(shù)碼管顯示計時時間。本設計利用AT89C52單片機的定時器/計數(shù)器定時和記數(shù)的原理,使其能精確計時。利用中斷系統(tǒng)使其能實現(xiàn)開始暫停的功能。P0口輸出段碼數(shù)據(jù),P2。0—P2.4口作列掃描輸出,P1。1、P3.2、P3.3、P2.5口接四個按鈕開關,分別實現(xiàn)開始、暫停、清零和查看上次計時時間功能.電路原理圖設計最基本的要求是正確性,其次是布局合理,最后在正確性和布局合理的前提下力求美觀。硬件電路圖按照圖1.1進行設計。圖1.1數(shù)字秒表硬件電路基本原理圖根據(jù)要求知道秒表設計主要實現(xiàn)的功能是計時和顯示。因此設置了四個按鍵和五位數(shù)碼管顯示時間,三個按鍵分別是開始,停止、復位和查看上次計時時間按鍵。利用這四個建來實現(xiàn)秒表的全部功能,而五位數(shù)碼管則能顯示最多99.999秒的計時。本設計中,數(shù)碼管顯示的數(shù)據(jù)存放在內存單元79H-7DH中。其中79H存放毫秒位數(shù)據(jù),7AH存放十毫秒位數(shù)據(jù),7BH存放百毫秒位數(shù)據(jù),7CH存放秒位數(shù)據(jù),7DH存放十秒位數(shù)據(jù),每一地址單元內均為十進制BCD碼.由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制BCD碼數(shù)據(jù)的對應段碼存放在ROM表中。顯示時,先取出79H—7dH某一地址中的數(shù)據(jù),然后查得對應的顯示用段碼,并從P0口輸出,P2口將對應的數(shù)碼管選中供電,就能顯示該地址單元的數(shù)據(jù)值。最終緩存區(qū)則設置為59H—5DH,數(shù)據(jù)存放規(guī)則和79H—7DH一樣。分別對應存放毫秒位至十秒位數(shù)據(jù)。與79H—7DH存儲區(qū)不一樣的是:59H—5DH存儲的內容為數(shù)字秒表上一次計時顯示的時間。而79H-7DH為當前計時時間存儲區(qū).計時采用定時器T0中斷完成,定時溢出中斷周期為1ms,當一處中斷后向CPU發(fā)出溢出中斷請求,每發(fā)出一次中斷請求就對毫秒計數(shù)單元進行加一,達到10次就對十毫秒位進行加一,依次類推,直到99。999秒重新復位。再看按鍵的處理。這四個鍵可以采用中斷的方法,也可以采用掃描的方法來識別.復位鍵和查看主要功能在于數(shù)值復位和查詢上次計時時間,對于時間的要求不是很嚴格。而開始和停止鍵則是用于對時間的鎖定,需要比較準確的控制.因此可以對復位和查看按鍵采取掃描的方式.而對開始和停止鍵采用外部中斷的方式。設計中包括硬件電路的設計和系統(tǒng)程序的設計。其硬件電路主要有主控制器,顯示電路和回零、啟動、查看、停表電路等.主控制器采用單片機AT89C52,顯示電路采用共陰極LED數(shù)碼管顯示計時時間,四個按鍵均采用觸點式按鍵.本課題在選取單片機時,充分借鑒了許多成形產(chǎn)品使用單片機的經(jīng)驗,并根據(jù)自己的實際情況,選擇了ATMEL公司的AT89S51.ATMEL公司的89系列單片機以其卓越的性能、完善的兼容性、快捷便利的電擦寫操作,低廉的價格、超強的加密功能,完全替代87C51/62和8751/52,低電壓、低電源、低功耗,有DIP、PLCC、QFP封裝,有民用型、工業(yè)級、汽車級、軍品級等多種溫度等級,是當今世界上性能最好、價格最低、最受歡迎的八位單片機[3]。AT89C52P為40腳雙列直插封裝的8位通用微處理器,采用工業(yè)標準的C51內核,在內部功能及管腳排布上與通用的8xc52相同,其主要用于會聚調整時的功能控制。功能包括對會聚主IC內部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會聚調整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。單片機的外部結構AT89S52單片機采用40引腳的雙列直插封裝方式。圖1。2為引腳排列圖,40條引腳說明如下:主電源引腳Vss和Vcc①Vss接地②Vcc正常操作時為+5伏電源外接晶振引腳XTAL1和XTAL2①XTAL1內部振蕩電路反相放大器的輸入端,是外接晶體的一個引腳。當采用外部振蕩器時,此引腳接地。②XTAL2內部振蕩電路反相放大器的輸出端.是外接晶體的另一端。當采用外部振蕩器時,此引腳接外部振蕩源。圖1.2單片機引腳圖控制或與其它電源復用引腳RST/VPD,ALE/,和/Vpp①RST/VPD當振蕩器運行時,在此引腳上出現(xiàn)兩個機器周期的高電平(由低到高跳變),將使單片機復位在Vcc掉電期間,此引腳可接上備用電源,由VPD向內部提供備用電源,以保持內部RAM中的數(shù)據(jù)。②ALE/正常操作時為ALE功能(允許地址鎖存)提供把地址的低字節(jié)鎖存到外部鎖存器,ALE引腳以不變的頻率(振蕩器頻率的1/6)周期性地發(fā)出正脈沖信號.因此,它可用作對外輸出的時鐘,或用于定時目的。但要注意,每當訪問外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖,ALE端可以驅動(吸收或輸出電流)八個LSTTL電路。對于EPROM型單片機,在EPROM編程期間,此引腳接收編程脈沖(功能)③外部程序存儲器讀選通信號輸出端,在從外部程序存儲取指令(或數(shù)據(jù))期間,在每個機器周期內兩次有效。同樣可以驅動八LSTTL輸入。④/Vpp、/Vpp為內部程序存儲器和外部程序存儲器選擇端.當/Vpp為高電平時,訪問內部程序存儲器,當/Vpp為低電平時,則訪問外部程序存儲器.對于EPROM型單片機,在EPROM編程期間,此引腳上加21伏EPROM編程電源(Vpp).輸入/輸出引腳P0.0—P0.7,P1.0-P1。7,P2.0-P2.7,P3.0-P3.7.①P0口(P0。0—P0。7)是一個8位漏極開路型雙向I/O口,在訪問外部存儲器時,它是分時傳送的低字節(jié)地址和數(shù)據(jù)總線,P0口能以吸收電流的方式驅動八個LSTTL負載。②P1口(P1.0-P1。7)是一個帶有內部提升電阻的8位準雙向I/O口。能驅動(吸收或輸出電流)四個LSTTL負載。③P2口(P2。0—P2.7)是一個帶有內部提升電阻的8位準雙向I/O口,在訪問外部存儲器時,它輸出高8位地址。P2口可以驅動(吸收或輸出電流)四個LSTTL負載。④P3口(P3.0-P3。7)是一個帶有內部提升電阻的8位準雙向I/O口。能驅動(吸收或輸出電流)四個LSTTL負載[6]。AT89C52具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口,片內晶振及時鐘電路。另外,AT89C52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作.掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。CPU是單片機的核心部件.它由運算器和控制器等部件組成[2].(1)運算器運算器的功能是進行算術運算和邏輯運算.可以對半字節(jié)(4位)、單字節(jié)等數(shù)據(jù)進行操作.例如能完成加、減、乘、除、加1、減1、BCD碼十進制調整、比較等算術運算和與、或、異或、求補、循環(huán)等邏輯操作,操作結果的狀態(tài)信息送至狀態(tài)寄存器。89C52運算器還包含有一個布爾處理器,用來處理位操作。它是以進位標志位C為累加器的,可執(zhí)行置位、復位、取反、等于1轉移、等于0轉移、等于1轉移且清0以及進位標志位與其他可尋址的位之間進行數(shù)據(jù)傳送等位操作,也能使進位標志位與其他可移位尋址的位之間進行邏輯與、或操作[5]。(2)程序計數(shù)器PC程序計數(shù)器PC用來存放即將要執(zhí)行的指令地址,共16位,可對64K程序存儲器直接尋址.執(zhí)行指令時,PC內容的低8位經(jīng)P0口輸出,高8位經(jīng)P2口輸出.(3)令寄存器指令寄存器中存放指令代碼。CPU執(zhí)行指令時,由程序存儲器中讀取的指令代碼送入指令寄存器,經(jīng)譯碼后由定時與控制電路發(fā)出相應的控制信號,完成指令功能。本設計采用ATMEL的AT89C52微處理器,主要基于以下幾個因素:①AT89C52為51內核,仿真調試的軟硬件資源豐富。②性價比高,貨源充足。③功耗低,功能強,靈活性高.④DIP40封裝,體積小,便于產(chǎn)品小型化。⑤為EEPROM程序存儲介質,1000次以上擦寫周期,便于編程調試。⑥工作電壓范圍寬:2.7V—6V,便于交直流供電.對于數(shù)字顯示電路,通常采用液晶顯示或數(shù)碼管顯示。對于一般的段式液晶屏,需要專門的驅動電路,而且液晶顯示作為一種被動顯示,可視性差,不適合遠距離觀看;對于具有驅動電路和單片機接口的液晶顯示模塊(字符或點陣),一般多采用并行接口,對單片機的接口要求較高,占用資源多;另外,AT89S52單片機本身無專門的液晶驅動接口。而數(shù)碼管作為一種主動顯示器件,具有亮度高、響應速度快、防潮防濕性能好、溫度特性極性、價格便宜、易于購買等優(yōu)點,而且有遠距離視覺效果,很適合夜間或是遠距離操作。因此,本設計的顯示電路采用7段數(shù)碼管作為顯示介質。數(shù)碼管顯示可以分為靜態(tài)顯示和動態(tài)顯示兩種。由于本設計需要采用五位數(shù)碼管顯示時間,如果靜態(tài)顯示則占用的口線多,硬件電路復雜。所以采用動態(tài)顯示。圖1.3顯示電路基本原理圖動態(tài)顯示是一位一位地輪流點亮各位數(shù)碼管,這種逐位點亮顯示器的方式稱為位掃描.通常各位數(shù)碼管的段選線相應并聯(lián)在一起,由一個8位的I/O口控制;各位的公共陰極位選線由另外的I/O口線控制.動態(tài)方式顯示時,各數(shù)碼管分時輪流選通,要使其穩(wěn)定顯示必須采用掃描方式,即在某一時刻只選通一位數(shù)碼管,并送出相應的段碼,在另一時刻選通另一位數(shù)碼管,并送出相應的段碼,依此規(guī)律循環(huán),即可使各位數(shù)碼管顯示將要顯示的字符,雖然這些字符是在不同的時刻分別顯示,但由于人眼存在視覺暫留效應,只要每位顯示間隔足夠短就可以給人同時顯示的感覺.數(shù)碼顯示管分為共陽數(shù)碼管和共陰數(shù)碼管兩種共陽極數(shù)碼管的8個發(fā)光二極管的陽極(二極管正端)連接在一起,如圖1.4(b),通常,公共陽極接高電平(一般接電源),其它管腳接段驅動電路輸出端。當某段驅動電路的輸出端為低電平時,則該端所連接的字段導通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅動電路能吸收額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應的限流電阻。共陰極數(shù)碼管的8個發(fā)光二極管的陰極(二極管負端)連接在一起,如圖(c),通常,公共陰極接低電平(一般接地),其它管腳接段驅動電路輸出端,當某段驅動電路的輸出端為高電平時,則該端所連接的字段導通并點亮,根據(jù)發(fā)光字段的不同組合可顯示出各種數(shù)字或字符。此時,要求段驅動電路能提供額定的段導通電流,還需根據(jù)外接電源及額定段導通電流來確定相應的限流電阻。圖1.4(a)數(shù)碼管引腳圖(b)共陽極內部結構圖(c)共陰極內部結構圖本設計采用共陰極數(shù)碼顯示管做顯示電路,由于采用的是共陰的數(shù)碼顯示管,所以只要數(shù)碼管的a、b、c、d、e、f、g、h引腳為高電平,那么其對應的二極管就會發(fā)光,使數(shù)碼顯示管顯示0~9的編碼見表1.1。表1.1共陰極數(shù)碼顯示管字型代碼字型共陰極代碼字型共陰極代碼03FH56DH106H67DH25BH707H34FH87FH466H96FH動態(tài)顯示電路由顯示塊、字形碼驅動模塊、字位驅動模塊三部分組成。如圖1。3所示為本系統(tǒng)的5位LED動態(tài)顯示器接口電路。圖中,5個數(shù)碼管的8段段選線分別與外接上拉電阻的單片機P0口對應相連,而5個數(shù)碼管的位控制端則和NPN型三極管的集電極相連接。單片機的P2.0~P2。4口則分別對應數(shù)碼顯示管的最低位到最高位,P2.0~P2。4口分別和五個NPN型三極管的基極相連,做三極管導通的控制端,而NPN型三極管選用9013型三極管。根據(jù)9013的資料顯示:其耐壓值為40V,最大功率為0。65W,最大電流為0.5A,電氣性能完全滿足本設計的要求。另外數(shù)碼管顯示是采用動態(tài)顯示,所以對三極管的開關頻率有一定的要求。根據(jù)電子秒表的設計計算可知動態(tài)顯示的頻率最高為3KHz,而9013的導通頻率為150MHz,完全能滿足本設計的要求,所以最終選?。?13三極管最為位控制開關。由于數(shù)碼管是有P0口來驅動,它內部沒有上拉電阻,作為輸出口時驅動能力比較弱,不能點亮數(shù)碼顯示管,因此P0口必須接上拉電阻來提高驅動能力。另外一位共陰數(shù)碼管的驅動電流一般為20mA左右,如果電流太大容易造成數(shù)碼管損壞,所以也需要根據(jù)電源的電壓值來確定上拉電阻的大小。如果電阻過小,勢必會形成灌電流過大,造成單片機IO的損壞,如果電阻過大,那么對拉電流沒有太大的影響。電源供電電壓為5V,當上拉電阻選用220Ω電阻時灌電流為22mA。不會損壞單片機的I/O口,同時也可以為數(shù)碼顯示管起到限制電流的保護作用。本設計中有四個按鍵,分別實現(xiàn)開始、暫停、復位和查看功能。這三個鍵可以采用中斷的方法,也可以采用查詢的方法來識別。對于復位鍵和查看鍵,主要功能在于數(shù)值復位和對上次計時時間的查看,對于時間的要求不是很嚴格,而開始和暫停鍵主要用于時間的鎖定,需要比較準確的控制。因此可以考慮,對復位鍵和查看鍵采用查詢的方式,而對于開始和暫停鍵采用外部中斷。四個按鍵均采用低電平有效,具體電路連接圖如圖1.5所示。當按鍵沒有按下時,單片機的I/O口直接連接電源,因此需要接上拉電阻來進行限流,本設計中選取阻值為2kΩ的電阻作為上拉電阻,根據(jù)計算可知此時的灌電流為2。5mA,查看AT89C52的資料得知次電流在安全范圍內,符合安全設計要求。圖1。5按鍵電路按鍵電路中由于采用了外部中斷,所以需要用到P3口的第二功能。P3口引腳的第二功能如表1.2表1。2P3口引腳第二功能表P3口引腳特殊功能P3。0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INT0(外部中斷0請求輸入端)P3.3INT1(外部中斷1請求輸入端)P3.4T0(定時器/計數(shù)器0計數(shù)脈沖輸入端)P3.5T1(定時器/計數(shù)器1計數(shù)脈沖輸入端)P3.6WR(片外數(shù)據(jù)存儲器寫選通信號輸出端)P3.7RD(片內數(shù)據(jù)存儲器讀選通信號輸出端)單片機的時鐘信號用來提供單片機內各種微操作的時間基準,89S52片內設有一個由反向放大器所構成的振蕩電路,XTAL1和XTAL2分別為振蕩電路的輸入和輸出端,89S52單片機的時鐘信號通常用兩種電路形式得到:內部振蕩方式與外部振蕩方式。外部方式的時鐘很少用,若要用時,只要將XTAL1接地,XTAL2接外部振蕩器就行。對外部振蕩信號無特殊要求,只要保證脈沖寬度,一般采用頻率低于12MHz的方波信號。時鐘發(fā)生器把振蕩頻率兩分頻,產(chǎn)生一個兩相時鐘信號P1和P2供單片機使用.P1在每一個狀態(tài)S的前半部分有效,P2在每個狀態(tài)的后半部分有效。本設計采用的內部振蕩方式,內部振蕩方式所得的時鐘信號比較穩(wěn)定,實用電路中使用較多.本設計系統(tǒng)的時鐘電路如圖1.4所示。只要按照圖1.6所示電路進行設計連接就能使系統(tǒng)可靠起振并能穩(wěn)定運行。圖中,電容器C1

、C2起穩(wěn)定振蕩頻率、快速起振的作用,電容值一般為5~33pF。但在時鐘電路的實際應用中一定要注意正確選擇其大小,并保證電路的對稱性,盡可能匹配,選用正牌的瓷片或云母電容,如果可能的話,溫度系數(shù)盡可能低.本設計中采用大小為30pF的電容和12MHz的晶振[8]。圖1.6內部振蕩電路(4)時序AT89S52典型的指令周期(執(zhí)行一條指令的時間稱為指令周期)為一個機器周期,一個機器周期由六個狀態(tài)(十二振蕩周期)組成。每個狀態(tài)又被分成兩個時相P1和P2。所以,一個機器周期可以依次表示為S1P1,S1P2……,S6P1,S6P2.通常算術邏輯操作在P1時相進行,而內部寄存器傳送在P2時相進行。圖1.789S52時序圖1。7給出了AT89S52單片機的取指和執(zhí)行指令的定時關系。這些內部時鐘信號不能從外部觀察到,所用XTAL2振蕩信號作參考。在圖中可看到,低8位地址的鎖存信號ALE在每個機器周期中兩次有效:一次在S1P2與S2P1期間,另一次在S4P2與S5P1期間。對于單周期指令,當操作碼被送入指令寄存器時,便從S1P2開始執(zhí)行指令。如果是雙字節(jié)單機器周期指令,則在同一機器周期的S4期間讀入第二個字節(jié),若是單字節(jié)單機器周期指令,則在S4期間仍進行讀,但所讀的這個字節(jié)操作碼被忽略,程序計數(shù)器也不加1,在S6P2結束時完成指令操作。圖1.7的(a)和(b)給出了單字節(jié)單機器周期和雙字節(jié)單機器周期指令的時序.89S52指令大部分在一個機器周期完成。乘(MUL)和除(DIV)指令是僅有的需要兩個以上機器周期的指令,占用4個機器周期。對于雙字節(jié)單機器周期指令,通常是在一個機器周期內從程序存儲器中讀入兩個字節(jié),唯有MOVX指令例外。MOVX是訪問外部數(shù)據(jù)存儲器的單字節(jié)雙機器周期指令。在執(zhí)行MOVX指令期間,外部數(shù)據(jù)存儲器被訪問且被選通時跳過兩次取指操作。圖1.7中(c)給出了一般單字節(jié)雙機器周期指令的時序[9]。關于單片機的置位和復位,都是為了把電路初始化到一個確定的狀態(tài),一般來說,單片機復位電路作用是把一個例如狀態(tài)機初始化到空狀態(tài),而在單片機內部,復位的時候單片機是把一些寄存器以及存儲設備裝入廠商預設的一個值,復位是一個很重要的操作方式。但單片機本身是不能自動進行復位的,必須配合相應的外部電路才能實現(xiàn).當AT89C52單片機的復位引腳RST(全稱RESET)出現(xiàn)2個機器周期以上的高電平時,單片機就完成了復位操作.如果RST持續(xù)為高電平,單片機就處于循環(huán)復位狀態(tài),而無法執(zhí)行程序.因此要求單片機復位后能脫離復位狀態(tài)。而本系統(tǒng)選用的是12MHz的晶振,因此一個機器周期為1μs,那么復位脈沖寬度最小應為2μs。在實際應用系統(tǒng)中,考慮到電源的穩(wěn)定時間,參數(shù)漂移,晶振穩(wěn)定時間以及復位的可靠性等因素,必須有足夠的余量.根據(jù)應用的要求,復位操作通常有兩種基本形式:上電復位、手動復位。上電復位要求接通電源后,自動實現(xiàn)復位操作。80C51單片機的上電復位POR(PowerOnReset)實質上就是上電延時復位,也就是在上電延時期間把單片機鎖定在復位狀態(tài)上。在單片機每次初始加電時,首先投入工作的功能部件是復位電路。復位電路把單片機鎖定在復位狀態(tài)上并且維持一個延時(記作TRST),以便給予電源電壓從上升到穩(wěn)定的一個等待時間;在電源電壓穩(wěn)定之后,再插入一個延時,給予時鐘振蕩器從起振到穩(wěn)定的一個等待時間;在單片機開始進入運行狀態(tài)之前,還要至少推遲2個機器周期的延時。上述一系列的延時,都是利用在單片機RST引腳上外接一個RC支路的充電時間而形成的.典型復位電路如圖1.8(a)所示,其中的阻容值是原始手冊中提供的。在經(jīng)歷了一系列延時之后,單片機才開始按照時鐘源的工作頻率,進入到正常的程序運行狀態(tài)。在電源電壓以及振蕩器輸出信號穩(wěn)定之后,又等待了一段較長的延時才釋放RST信號,使得CPU脫離復位鎖定狀態(tài);而RST信號一旦被釋放,立刻在ALE引腳上就可檢測到持續(xù)的脈沖信號[8].圖1。8上電復位延時電路由于標準80C51的復位邏輯相對簡單,復位源只有RST一個(相對新型單片機來說,復位源比較單一),因此各種原因所導致的復位活動以及復位狀態(tài)的進入,都要依靠在外接引腳RST上施加一定時間寬度的高電平信號來實現(xiàn).標準80C51不僅復位源比較單一,而且還沒有設計內部上電復位的延時功能,因此必須借助于外接阻容支路來增加延時環(huán)節(jié),如圖1.8(a)所示。其實,外接電阻R還是可以省略的,理由是一些CMOS單片機芯片內部存在一個現(xiàn)成的下拉電阻Rrst。例如,AT89系列的Rrst阻值約為50~200kΩ;P89V51Rx2系列的Rrst阻值約為40~225kΩ,如圖1。9所示。因此,在圖1。8(a)基礎上,上電復位延時電路還可以精簡為圖1.8(b)所示的簡化電路(其中電容C的容量也相應減小了)。圖1.9復位引腳RST內部電路在每次單片機斷電之后,須使延時電容C上的電荷立刻放掉,以便為隨后可能在很短的時間內再次加電作好準備。否則,在斷電后C還沒有充分放電的情況下,如果很快又加電,那么RC支路就失去了它應有的延遲功能。因此,在圖1。8(a)的基礎上添加一個放電二極管D,上電復位延時電路就變成了如圖1.8(c)所示的改進電路.也就是說,只有RC支路的充電過程對電路是有用的,放電過程不僅無用,而且會帶來潛在的危害。于是附加一個放電二極管D來大力縮短放電持續(xù)時間,以便消除隱患。二極管D只有在單片機斷電的瞬間(即VCC趨近于0V,可以看作VCC對地短路)正向導通,平時一直處于反偏截止狀態(tài)。手動復位要求在電源接通的條件下,在單片機運行期間,如果發(fā)生死機,用按鈕開關操作使單片機復位。單片機要完成復位,必須向復位端輸出并持續(xù)兩個機器周期以上的高電平,從而實現(xiàn)復位操作。本設計采用上電且開關復位電路,如圖1.10所示上電后,由于電容充電,使RST持續(xù)一段高電平時間。當單片機已在運行之中時,按下復位鍵也能使RST持續(xù)一段時間的高電平,從而實現(xiàn)上電且開關復位的操作。通常選擇C=10~30μF,R=1K,本設計采用的電容值為22μF的電容和電阻為1K的電阻。圖1.10單片機復位電路系統(tǒng)總電路由以上設計的顯示電路,時鐘電路,按鍵電路和復位電路組成,只要將單片機與以上各部分電路合理的連接就組成了系統(tǒng)總電路。系統(tǒng)總電路圖如圖1。11所示.AT89C52單片機為主電路的核心部分,各個電路均和單片機相連接,由單片機統(tǒng)籌和協(xié)調各個電路的運行工作。AT89C52單片機提供了XTAL1和XTAL2兩個專用引腳接晶振電路,因此只要將晶振電路接到兩個專用引腳即可為單片機提供時鐘脈沖,但在焊接晶振電路時要盡量使晶振電路靠近單片機,這樣可以為單片機提供穩(wěn)定的始終脈沖。圖1。11系統(tǒng)總電路圖復位電路同晶振電路,單片機設有一個專用的硬件復位接口,并設置為高電平有效。按鍵電路與單片機的端口連接可以由用戶自己設定,本設計中軟件復位鍵和查看鍵分別接單片機的P1.1和P2。5,均設為低電平有效。而另外的開始鍵和暫停鍵兩鍵使用了外部中斷,所以需要連接到單片機的特殊接口P3。3和P3.2,這兩個I/O口的第二功能分別為單片機的外部中斷1端口和外部中斷0端口。同樣設置為位低電平有效。顯示電路由五位數(shù)碼管組成,采用動態(tài)顯示方式,因此有8位段控制端和5位位控制端,八位段控制接P0口,P0.0~P0。7分別控制數(shù)碼顯示管的a、b、c、d、e、f、g、dp顯示,AT89C52的P0口沒有集成上拉電阻,高電平的驅動能力很弱,所以需要接上拉電阻來提高P0的高電平驅動能力。五位位控制則由低位到高位分別接到P2.0~P2.4口,NPN三極管9013做為位控制端的開關,當P2.0~P2。4端口任意一個端口為高電平時,與其相對應的三極管就導通,對應的數(shù)碼管導通顯示。通過以上設計已經(jīng)將各部分電路與單片機有機的結合到一起,硬件部分的設計以大功告成,剩下的部分就是對單片機的編程,使單片機按程序運行,實現(xiàn)數(shù)字電子秒表的全部功能。本設計采用了匯編語言編寫,匯編語言由于采用了助記符號來編寫程序,比用機器語言的二進制代碼編程要方便些,在一定程度上簡化了編程過程.匯編語言的特點是用符號代替了機器指令代碼,而且助記符與指令代碼一一對應,基本保留了機器語言的靈活性。使用匯編語言能面向機器并較好地發(fā)揮機器的特性,得到質量較高的程序。匯編語言的特點:(1).面向機器的低級語言,通常是為特定的計算機或系列計算機專門設計的。(2).保持了機器語言的優(yōu)點,具有直接和簡捷的特點.(3).可有效地訪問、控制計算機的各種硬件設備,如磁盤、存儲器、CPU、I/O端口等.(4)。目標代碼簡短,占用內存少,執(zhí)行速度快,是高效的程序設計語言。(5)。經(jīng)常與高級語言配合使用,應用十分廣泛。在程序設計過程中,為了有效地完成任務,把所要完成的任務精心的分割成若干個相互獨立但相互又仍可有聯(lián)系的任務模塊,這些任務模塊使得任務變得相對單純,對外的數(shù)據(jù)交換相對簡單,容易編寫,容易檢測,容易閱讀和維護。這種程序設計思想稱為模塊化程序設計思想.模塊化結構程序的設計,可以使系統(tǒng)軟件便于調試與優(yōu)化,也使其他人更好地理解和閱讀系統(tǒng)的程序設計。因此,本醫(yī)院病床呼叫系統(tǒng)在軟件的設計上,運用了模塊化程序的結構對軟件進行設計,使得程序變得更加直觀易懂。程序的主要模塊有:主程序、顯示程序、定時溢出中斷服務程序、外部中斷服務程序。本設計系統(tǒng)所用到的單片機端口數(shù)比較多,所以在這里將對數(shù)字電子秒表的硬件資源的大概分配加以說明。片內RAM的分配、各功能鍵的定義以及各端口的分配安排如表2.1所示.表2。1端口的分配安排表名稱功能描述初始化值79H-7DH1ms—10s位顯示寄存區(qū)00H69H-6DH1ms-10s位中間寄存區(qū)00H59H—5DH1ms-10s位最終寄存區(qū)00HR1-R51ms-10s位溢出計數(shù)區(qū)定時器T0控制秒表的最小精度E018H外部中斷INT0停止中斷信號入口外部中斷INT1開始中斷信號入口本系統(tǒng)程序主要模塊由主程序、定時中斷服務程序、外部中斷0服務程序和外部中斷1服務程序組成。其中主程序是整個程序的主體??梢詫Ω鱾€中斷程序進行調用。協(xié)調各個子程序之間的聯(lián)系。系統(tǒng)(上電)復位后,進入主程序,主程序流程圖如圖2.1。首先對系統(tǒng)進行初始化,包括設置各入口地址、中斷的開啟、對各個數(shù)據(jù)緩存區(qū)清“0”、賦定時器初值,初始化完畢后,就進入數(shù)碼管顯示程序。數(shù)碼管顯示程序對顯示緩存區(qū)內的數(shù)值進行調用并在數(shù)碼管上進行動態(tài)顯示。顯示一次就對P1。1和P2.5進行一次掃描,查詢復位鍵P1.1是否按下,當復位鍵按下后,程序返回開始,重新對系統(tǒng)進行初始化。當沒有按下復位鍵時,程序則掃描P2.5是否按下,當P2.5沒有按下則返回顯示程,不斷地調用顯示緩存區(qū)的數(shù)據(jù)進行顯示。使用戶能清楚的看到當前電子秒表所記錄的時間.當查詢到P2。5按下后則跳轉到另外一段顯示程序并調用最紅緩存區(qū)的數(shù)據(jù)進行顯示,此時顯示的時間即為上一次計時的時間.與此同時,在P2。5按下后單片機執(zhí)行顯示程序的同時也在對P2。5進行掃描,當P2。5斷開后立即跳轉回之前的顯示程序顯示當前的計時時間.在主程序中還進行了賦寄存區(qū)的初始值、設置定時器初值以及開啟外部中斷等操作,當定時時間到后就轉去執(zhí)行定時中斷程序。當外部中斷有請求則去執(zhí)行外部中斷服務程序。并在執(zhí)行完后返回主程序。圖2.1主程序流程圖現(xiàn)在方案中采用了三個中斷,外部中斷INT0,INT1和定時中斷T0。CPU在響應中斷時,先處理高級中斷,在處理低級中斷,若有多個同級中斷時,則按自然優(yōu)先順序處理.例如當CPU正在處理一個中斷申請時,有出現(xiàn)了另一個優(yōu)先級比它高的中斷請求,這是,CPU就暫停終止對當前優(yōu)先級較低的中斷源的服務,轉去響應優(yōu)先級比它高的中斷請求,并為其服務。待服務結束,再繼續(xù)執(zhí)行原來較低級的中斷服務程序。而當CPU為級別高的終端服務程序服務時,如果級別低的中斷發(fā)出中斷請求,此時CPU是不會響應的,所以為了避免開始和暫停兩個按鍵中的一個出現(xiàn)沒有響應的情況,在進行程序編輯時要注意對中斷的使用,避免出現(xiàn)中斷的嵌套。,合理分配中斷對本設計的實現(xiàn)是至關重要的.另外由于數(shù)字式電子秒表的最小精度位1ms,屬于高精度電子秒表。定時器T0的定時周期也為1ms,為了使電子秒表暫停鍵按下后CPU能馬上去響應中斷程序,必須將暫停的外部中斷級別高于定時計數(shù)器的中斷級別。避免出現(xiàn)CPU執(zhí)行完定時溢出中斷程序后再響應外部中斷程序,影響計時精度。AT89C52的自然優(yōu)先級順序排列如下:中斷源最高外部中斷0定時/計數(shù)器0溢出中斷外部中斷1定時/計數(shù)器1溢出中斷串行口中斷最低數(shù)字式秒表中的兩個按鍵采用了中斷實現(xiàn)功能.開始采用外部中斷INT0,暫停采用外部中斷INT1.另外程序中還用到了定時/計數(shù)器0溢出中斷進行計時。依據(jù)設計要求,暫停的外部中斷INT1中斷級別最高,計時的定時/計數(shù)器0溢出中斷次之,開始的外部中斷INT0級別最低。(1)外部中斷0服務程序:外部中斷0服務程序結合外部P3.2停止鍵實現(xiàn)數(shù)字電子秒表的停止功能,具體流程圖如圖2。2。當按下P3。2停止鍵按下向CPU發(fā)出外部中斷請求,CPU轉向外部中斷0服務程序執(zhí)行,停止定時器.另外將當前顯示的時間進行一次存儲,存進中間寄存區(qū)。最后中斷返回。圖2.2外部中斷0服務程序流程圖(2)外部中斷1服務程序外部中斷1服務程序結合外部P3.3停止鍵實現(xiàn)數(shù)字電子秒表的啟動功能,具體流程圖如圖2。2。當按下P3.3啟動鍵按下向CPU發(fā)出外部中斷請求,CPU轉向外部中斷1服務程序執(zhí)行,啟動定時器。另外進行二次存儲,將之前進行一次存儲的數(shù)碼管顯示數(shù)據(jù)存入最終緩存區(qū),避免下次計時暫停時一次存儲將數(shù)據(jù)掩蓋,從而起到保護數(shù)據(jù)的作用。二次存儲后就中斷返回。圖2。3外部中斷1服務程序流程圖(3)定時中斷服務程序當定時/計數(shù)器T0器溢出后,向CPU發(fā)出中斷請求信號。CPU跳轉到定時中斷程序執(zhí)行,具體流程如圖2.4。定時中斷程序是一個進位程序,主要負責對1ms的加一。1ms位沒有滿十就跳出中斷程序,返回顯示程序。當1ms位滿十后就對1ms位清零,向10ms位加一,同時檢測10ms位是否滿十,沒有滿十就跳出中斷程序,返回顯示程序。如果滿十就向100ms位加一,依次類推,最終達到99.999秒后歸零,從零開始再次計時。13個.但如果定時計數(shù)器如果每次都固定從0開始計數(shù),到計滿后,再向CPU發(fā)出溢出中斷請求信號那是毫無意義的。為了使定時計數(shù)器在規(guī)定的計數(shù)脈沖個數(shù)字之后(此時應小于213個脈沖),向CPU發(fā)出溢出中斷請求,可采取預先向TH0和TL0中放入一個初值X的方法,使計數(shù)器以X值為起始值開始計數(shù),即X+1,X+2,……直至計數(shù)器計滿,從1全變?yōu)?。設需要計數(shù)的脈沖個數(shù)為Y,則有:X+Y=213在定時方式下:定時時間間隔位t=(213-X)*振蕩周期*12現(xiàn)在本設計要求1ms實現(xiàn)一次中斷,選擇定時器T0工作在方式0.所以需要根據(jù)以上條件計算出T0的初值。設T0的初值為X,則(213—X)*12/12*106=1*10-3即TH0=0E0H(取X的高8位)TL0=18H(取X的低5位)由于定時1ms只是一個理想化的時間,其中并沒有考慮到中斷后單片機執(zhí)行語句所花的時間。雖然執(zhí)行語句所花的時間很短只有即微秒,但積少成多,數(shù)字秒表一秒中要溢出中斷1000次,積累起來誤差就能達到毫秒級,這對于精度到達毫秒級的數(shù)字電子秒表來說是很大的誤差。所以要在后期編程時還要將單片機讀程序的時間考慮進去,在對定時器賦初值時將單片機需要執(zhí)行的語句所花的時間加上,這樣就能使數(shù)字電子秒表的誤差達到最小。圖2.4定時中斷服務程序ProteusISIS是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件,它可以仿真、分析(SPICE)各種模擬器件和集成電路。該軟件的主要特點總結后有以下四點:①實現(xiàn)了單片機仿真和SPICE電路仿真相結合的功能。②支持目前主流單片機系統(tǒng)的仿真。③提供了軟件調試功能,并可以與WAVE聯(lián)合仿真調試。④具有強大的原理圖繪制功能??傊撥浖且豢罴瘑纹瑱C和SPICE分析于一身的仿真軟件,功能極其強大。在電子領域中也起到了很大的作用,它的出現(xiàn)仿真不需要先焊接電路,可以先仿真調試通過后在焊電路,節(jié)省了不少在硬件調試上所花的時間。ProteusISIS的工作界面是一種標準的Windows界面,如圖1。19所示。它包括標題欄、主菜單、狀態(tài)欄、標準工具欄、繪圖工具欄、對象選擇按鈕、預覽對象方位控制按鈕、仿真進程控制按鈕、預覽窗口、對象選擇器窗口、圖形編輯窗口等十幾個工具,方便了使用者的使用。ProteusSISI繪制原理圖的操作與Protel99se繪制原理圖的操作基本相同,在這里就不再作贅述。下面拿本設計中的一個仿真例子作簡述說明.運行ProteusSISI后,繪制病床呼叫系統(tǒng)的原理圖。首先打開已經(jīng)畫好的proteusDSN文件,雙擊圖中的AT89S52芯片,就彈出一個窗口,在ProgramFile項中通過路徑選擇在WAVE中生成的HEX文件,雙擊選中后確定,這樣仿真圖中的AT89S52芯片就已經(jīng)讀取了本設計中的HEX文件。單擊“三角形按鈕"進行仿真。通過對仿真結果的觀察來對程序進行修改,最終使程序到達設計要求。按照之前設計好的數(shù)字電子秒表原理圖,詳細計算系統(tǒng)中各個元件的參數(shù),選擇相應器件,制作實際電路板.由于考慮到萬能板大小的問題及元件之間連線的方便,在焊接元器件前必須考慮元件的布局然后進行實際操作。制作好的電路板可以用萬用表(200歐姆檔)的紅、黑表筆測試電路板的每條走線,當其電阻非常小時,證明走線沒有斷開,當其電阻很大時,證明該條走線斷了,應該重新走線,使電路板在電氣上得到正確地連接。選用萬用表的20K歐姆檔,檢測電路中是否存在短路。因為系統(tǒng)采用的是共陰極數(shù)碼管作為顯示電路,必須確保數(shù)碼管的公共端接的是低電平。(1)晶振電路的測試在單片機正常運行的必要條件是單片機系統(tǒng)的時鐘穩(wěn)定正常。實際中,因為各種原因導致系統(tǒng)時鐘不正常而出現(xiàn)系統(tǒng)無法正常運行的情況時有,因此系統(tǒng)時鐘是否振是通電檢查的首要環(huán)節(jié)。在系統(tǒng)通電的狀況下,用萬用表的直流電壓檔(20V),分別測量XTAL1和XTAL2引腳的電壓,看是否正常,在調試過程中,測得電壓XTAL1引腳應為2。05V,XTAT2應為2.15V。(2)復位電路

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論