燕山重點大學單片機計時電子鐘_第1頁
燕山重點大學單片機計時電子鐘_第2頁
燕山重點大學單片機計時電子鐘_第3頁
燕山重點大學單片機計時電子鐘_第4頁
燕山重點大學單片機計時電子鐘_第5頁
已閱讀5頁,還剩16頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

1、緒論單片機是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統,在工業控制領域的廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的32位300M的高速單片機目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網絡通訊與數據傳輸,工業自動化過程的實時控制和數據處理,廣泛使用的各種智

2、能IC卡,民用豪華轎車的安全保障系統,錄像機、攝影機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫療器械以及各種智能機械了。因此,單片機的學習、開發與應用將造就一批計算機應用與智能化控制的科學家、工程師。單片機廣泛應用于儀器儀表、家用電器、醫用設備、航空航天、專用設備的智能化管理及過程控制等領域。本設計主要是設計基于8051單片機的計時電子鐘,在數碼管上顯示時間,并且,通過鍵盤可以修改時間。用LED顯示代替了指針顯示,減小了計時誤差,這種表具有時分秒顯示時間的功能,還可以校對,片選的靈活性好。第一章基礎知識定時器/計數器定時器/

3、計數器工作原理在MCS-51單片機內繼承了兩個16位的定時器/計數器T0和T1,其基本工作原理是加一計數,即對指定的脈沖信號進行加一操作,直到出現溢出為止。定時器/計數器的基本工作原理是加一計數器,不過作為定時器或計數器是稍有不同。(1)定時器。作為定時器使用時,使用的脈沖信號為單片機的內部時鐘信號。每個機器周期產生一個計數脈沖,是計數器加一,因此,計數速率固定為fosc/12。(2)計數器。作為計數器使用時,使用的脈沖信號為從單片機外部輸入的脈沖信號。T0對應單片機引腳P3.4,T1對應單片機引腳P3.5,當檢測到引腳的輸入脈沖信號發生負跳變時計數器加一。當加一計數器出現溢出是時,產生溢出信

4、號通知單片機進行相應的處理。由于識別一個從1到0的負跳變需要兩個機器周期,所以最快的計數速率是振蕩頻率的1/24。當TMOD中的M1M2為10時,定時器/計數器工作于方式2。工作方式2為一個能自動重新裝入初值的8位定時器/計數器。TL0用作8位計數器,TH0用作數據寄存器。當TL0計數滿產生溢出時,一方面置1溢出標志TF0,供軟件查詢或向CPU請求中斷;另一方面,自動將TH0中的內容送至TL0,使8位定時器/計數器重新裝入的初值開始重新計數。LED數碼管LED數碼管要正常顯示,就要用驅動電路來驅動數碼管的各個段碼,從而顯示出我們要的數位,因此根據LED數碼管的驅動方式的不同,可以分為靜態式和動

5、態式兩類。A、靜態顯示驅動:靜態驅動也稱直流驅動。靜態驅動是指每個數碼管的每一個段碼都由一個單片機的I/O口進行驅動。靜態驅動的優點是編程簡單,顯示亮度高,缺點是占用I/O多,如驅動5個數碼管靜態顯示則需要5X8=40根I/O口驅動。故實際應用時必須增加驅動器進行驅動,增加了硬體電路的復雜性。B、動態顯示驅動:數碼管動態顯示介面是單片機中應用最為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃a,b,c,d,e,f,g,dp的同名端連在一起,另外為每個數碼管的公共極COM增加位元選通控制電路,位元選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但

6、究竟是那個數碼管會顯示出字形,取決于單片機對位元選通COM端電路的控制,所以我們只要將需要顯示的數碼管的選通控制打開,該位元就顯示出字形,沒有選通的數碼管就不會亮。透過分時輪流控制各個LED數碼管的COM端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位元數碼管的點亮時間為12ms,由于人的視覺暫留現象及發光二極體的余輝效應,盡管實際上各位數碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩定的顯示資料,不會有閃爍感,動態顯示的效果和靜態顯示是一樣的,能夠節省大量的I/O口,而且功耗更低。發光二級管發光二極管簡稱LED,采用砷化鎵、鎵鋁砷、和磷化鎵等材料制成,其

7、內部結構為一個PN結,具有單向導電性。當在發光二極管PN結上加正向電壓時,PN結勢壘降低,載流子的擴散運動大于漂移運動,致使P區的空穴注入到N區,N區的電子注入到P區,這樣相互注入的空穴與電子相遇后會產生復合,復合時產生的能量大部分以光的形式出現,因此而發光。發光二極管在制作時,使用的材料有所不同,那么就可以發出不同顏色的光。發光二極管的發光顏色有:紅色光、黃色光、綠色光、紅外光等。常用的發光二極管應用電路有四種,即直流驅動電路、交流驅動電路、脈沖驅動電路、變色發光驅動電路。LED當它處于正向工作狀態時(即兩端加上正向電壓),電流從陽極流向陰極時,半導體晶體就發出從紫外到紅外不同顏色的光線,光

8、的強弱與電流有關。第二章系統實現本設計任務的目的為設計一個計時電子鐘,同時顯示時、分、秒,而且在時分之間和分秒之間加入隨秒信號閃爍的冒號,要求通過鍵盤可以修正時間。該電子鐘有8051、4*6鍵盤、六位數碼管、四個發光二級管和外部脈沖電路等構成由內部定時器T0產生一秒定時,達到時分秒的計時,六十秒為一分鐘,六十分鐘為一小時,滿24小時為一天,之后,時分秒同時清零,開始新的計時。而按鍵S1擁有位選功能,按下S1由輸入脈沖個數不同,可以實現對時、分、秒的選中功能,通過鍵盤可以達到直接修改的目的。2.1系統框圖鍵盤及脈沖信號22發光二極管試驗儀上有8只發光二級管及相應驅動電路,共陰極連接,其輸入端為高

9、電平“1”時,發光二級管點亮。鍵盤及LED顯示電路顯示控制的位碼由74HC374輸出,經ULN2003反向驅動后,做LED的位選通信號。位選通信號也可以作為鍵盤列掃描碼盤掃描的行數據從74HC245讀回,374輸入的列掃描碼經245讀出后,用來判斷是否有鍵被按下,374輸出的低電平經過按鍵被接到245的端口上,這樣從245讀回的數據就會有低位,根據374輸出的列信號和245讀出的行信號,就可以判斷哪個鍵被按下。LED顯示的段碼由另一個74HC374輸出。將KEY/LEDCS接到相應的地址譯碼器上。位碼輸出地址為0X002H,段碼輸出地址為)X004H,鍵盤行碼讀回地址為0X001H,此處X是由

10、KEY/LEDCS決定。例如將KEY/LEDCS接到地址譯碼器CS0上,那么位碼輸出地址就是08002H,段碼輸出地址就是08004H,鍵盤行碼讀回地址為08001H。鍵盤及LED顯示電路云廷衛tna:工廠TPRffit匸171.:71gSn.ft0IwoeE-A11ETTmn-d-*-1&JIDTIHLHS-LJll1r*L_ZVD口31=2第三章軟件實現3.1主程序實現主程序主要用于系統的初始化:設置計時緩沖區的位置及初值,設置8051的工作方式、定時器的工作方式和計數初值等等。主程序流程如下圖所示:允許T0中斷調用顯示子程序調用鍵盤子程序3.2定時中斷子程序實現系統使用12MHz的晶振,

11、使用定時器T0采用工作方式2,定時器的最大定時時間為0.256ms,遠小于1s,因此本系統采用定時器與軟件循環結合的定時方法。定時器采用T0工作在方式2,每個50us溢出一次中斷,則循環16次延時時間是1s,秒計時60次為1分,分計時60次為一小時,小時計時24次則計時重新從00:00:00開始。計時初值為256-50/仁206=CE所以TH0=CEHTL0=CEH。MCS_51單片機只有二進制加法指令,而時間是按十進制遞增的,因此用加法指令后必須進行二-十進制轉換。TO中斷程序流程圖保護現場自動重裝定時器初值自動重裝定時器初值循環次數減1返回返回否滿60分?是滿24時?滿16次?是滿60s?

12、是木分清0,時加1秒清0,分加1秒加1時清0恢復現場3.3外部中斷子程序實現外部中斷TO用于用鍵盤修改當前時間值,當按住S1鍵,由輸入脈沖個數的不同選中不同的位,按下鍵盤應設定的時間數值即可修改當前顯示的時間值。TO中斷程序實現流程圖是當前顯示值改變恢復現場第四章硬件連線連線連接孔1連接孔2注釋1CSOKEY/LEDCS片選2P10發光二級管L0用作閃爍冒號3P11發光二級管L2用作閃爍冒號4P12發光二級管L4用作閃爍冒號5P13發光二級管L7用作閃爍冒號6P32單脈沖上升沿用于修改時間7P33單脈沖下降沿用于修改時間第五章程序實現OUTBITOUTSEGINequ08002h;位控制口eq

13、u08004h;段控制口equ08001h;鍵盤讀入口LEDBufequ60h;顯示緩沖Hourequ40hMinuteequ41hSecondequ42hC100usequ43hTickequ10000T100usequ256-50ljmpStartorg0003hljmpint0org000bhT0Int:pushPSWpushACCmova,C100us+1jnzGoondecC100usGoon:decC100us+1mova,C100usorla,C100us+1jnzExitmovC100us,#high(Tick)movC100us+1,#low(Tick)incSecondcp

14、lp1.0cplp1.1cplp1.2cplp1.3mova,Secondcjnea,#60,ExitmovSecond,#0incMinutemova,Minutecjnea,#60,ExitmovMinute,#0incHourmova,Hourcjnea,#24,ExitmovHour,#0Exit:popACCpopPSWretiDelay2:;延時子程序movr7,#0lpl:djnzr7,lplretdelay1:movr7,#0DelayLoop:djnzr7,DelayLoopdecajnzdelayloopretLEDMAP:;八段管顯示碼db3fh,06h,5bh,4fh,

15、66h,6dh,7dh,07h,7fh,6fhDisplayLED:movr0,#LEDBufmovr1,#6;共6個八段管movr2,#00100000b;從左邊開始顯示Loop:movdptr,#OUTBITmova,#0movxdptr,a;關所有八段管mova,r0movdptr,#OUTSEGmovxdptr,amovdptr,#OUTBITmova,r2movxdptr,acalldelay2mova,r2;顯示下一位rramovr2,aincr0djnzr1,LoopretToLED:movdptr,#LEDMapmovca,a+dptrretStart:movr6,#0movT

16、MOD,#02h;模式2,定時器movTH0,#T100usmovTL0,#T100usmovtcon,#01hmovIE,#10000011b;EA=1,IT0=1movHour,#0movMinute,#0movSecond,#0movC100us,#high(Tick)movC100us+1,#low(Tick)setbTR0;啟動定時器0MLoop:mova,Hourmovb,#10divabcallToLEDmovLEDBuf,amova,bcallToLEDorla,#80hmovLEDBuf+1,amova,Minutemovb,#10divabcallToLEDmovLEDBu

17、f+2,amova,bcallToLEDorla,#80hmovLEDBuf+3,amova,Secondmovb,#10divabcallToLEDmovLEDBuf+4,amova,bcallToLEDmovLEDBuf+5,acallDisplayLEDjbp3.3,remlincr6mova,#0f0hcalldelay1cjner6,#7,remlmovr6,#0reml:ljmpmloopint0:cjner6,#1,hllcallL2mova,#0calldelay1mova,hourmovb,#10divabmovr3,bmova,r4movb,#10mulabadda,r3m

18、ovhour,ajmpreturn1JHL:cjner6,#2,MHlcallL2mova,#0CALLDelay1mova,HourMOVb,#10divabmovb,#10mulabadda,R4movHour,ajmpreturn1MH:cjner6,#3,MLlcallL2mova,#0CALLDelay1mova,MinuteMOVb,#10divabmovr3,bmova,r4movb,#10mulabadda,r3movMinute,ajmpreturn1ML:cjner6,#4,SHlcallL2mova,#0CALLDelay1mova,MinuteMOVb,#10divab

19、movb,#10mulabadda,R4movMinute,ajmpreturn1SH:cjner6,#5,SLlcallL2mova,#0CALLDelay1mova,SecondMOVb,#10divabmovr3,bmova,r4movb,#10mulabadda,r3movSecond,ajmpreturn1SL:cjner6,#6,return1lcallL2mova,#10CALLDelay1mova,SecondMOVb,#10divabmulabadda,R4movSecond,areturn1:movr6,#0retIL2:pushpswpushaccL1:movdptr,#outbitMovr5,#11011111bMova,r5Movxdptr,aMovdptr,#inMovxa,dptrJnbacc.3,sevenJnbacc.2,fourJnbacc.1,oneJnbacc.0,zeroJMovdptr,#outbitMova,r5RraMovr5,aMova,r5Movxdptr,aMovdptr,#inMovxa,dptrJnbacc.1,twoJnbacc.

溫馨提示

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

評論

0/150

提交評論