畢業(yè)論文-基于PIC的電子表設(shè)計(jì)與實(shí)現(xiàn)_第1頁
畢業(yè)論文-基于PIC的電子表設(shè)計(jì)與實(shí)現(xiàn)_第2頁
畢業(yè)論文-基于PIC的電子表設(shè)計(jì)與實(shí)現(xiàn)_第3頁
畢業(yè)論文-基于PIC的電子表設(shè)計(jì)與實(shí)現(xiàn)_第4頁
畢業(yè)論文-基于PIC的電子表設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

XXXXX大學(xué)本科畢業(yè)設(shè)計(jì)基于PIC的電子表設(shè)計(jì)與實(shí)現(xiàn)學(xué)生姓名所在系專業(yè)名稱班級學(xué)號指導(dǎo)教師基于PIC的電子表設(shè)計(jì)內(nèi)容摘要:近年來隨著計(jì)算機(jī)在社會領(lǐng)域的滲透和大規(guī)模集成電路的開展,單片機(jī)的應(yīng)用正在不斷地走向深入,由于它具有功能強(qiáng),體積小,功耗低,價(jià)格廉價(jià),工作可靠,使用方便等特點(diǎn),因此特別適合于與控制有關(guān)的系統(tǒng),越來越廣泛地應(yīng)用于自動控制,智能化儀器,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個(gè)領(lǐng)域,單片機(jī)往往是作為一個(gè)核心部件來使用,在根據(jù)具體硬件結(jié)構(gòu),以及針對具體應(yīng)用對象特點(diǎn)的軟件結(jié)合,以作完善。本次設(shè)計(jì)中以單片機(jī)的開展過程和開展方向?yàn)楸尘埃榻B了單片機(jī)的輸入輸出的工作原理和操作方法,中斷的工作原理和操作方法,定時(shí)器/計(jì)數(shù)器TMR1的工作原理和電路結(jié)構(gòu),LED的內(nèi)部結(jié)構(gòu)。電路程序設(shè)計(jì)及調(diào)試過程。本次做的電子表是以單片機(jī)〔PIC16F877〕為核心,結(jié)合相關(guān)的元器件〔共陰極LED數(shù)碼顯示器等〕,再配以相應(yīng)的軟件,到達(dá)制作簡易電子表的目的,其硬件局部難點(diǎn)在于元器件的選擇、布局及焊接。關(guān)鍵詞:定時(shí)器/計(jì)數(shù)器TMR1單片機(jī)

PIC16F877共陰極LED數(shù)碼顯示器

DESIGNOFDIGITALCLOCKBASEDONPICAbstract:Inrecentyears,withcomputersintheinfiltrationandthedevelopmentoflarge-scaleintegratedcircuits.

SCMapplicationissteadilydeepening,asithasstrongfunction,smallsize,lowpowerdissipation,lowprices,reliable,easytousefeatures,itisparticularlysuitedtoandcontrolofthesystem,increasinglywidelyusedinautomaticcontrol,intelligentinstruments,gauges,#acquisition,militaryproductsandhouseholdappliances,andotherareas,isoftenmicrocontrollerasacorecomponenttouse,Inlightofspecifichardwarearchitecture,andapplication-specificsoftwarefeaturesobjectcombinetomakeperfect.Thedesignofamicrocontrollerdevelopmentprocessandthedirectionofdevelopmentasthebackground,thecomputer'sinputandoutputoftheworkingprincipleandmethodofoperationinterruptedtheprincipleandmethodofoperation.TMR1,theprincipleandstructureofcircuit,LEDinternalstructure,Circuitprogramdesignanddebuggingprocess.ThefiguresdobellonSCM(PIC16F877)atthecore,Combinedwiththecomponents(atotalofcathodeLEDdigitaldisplay),andfactoringinthecorrespondingsoftware,Easytoproducedigitalclockpurposes,aspartofthehardwarecomponentsisadifficultchoice,layoutandwelding.Keywords:Timer/CounterTMR1SingleChipMicrocomputer

PIC16F877TotalcathodeLEDfiguresdisplay.

目錄TOC\o"1-2"\h\z\u一、概述 1〔一〕單片機(jī)的特點(diǎn) 1〔二〕單片機(jī)的開展歷史、趨勢及用處 2二、電子表的構(gòu)成 4〔一〕電子表的構(gòu)成 4〔二〕實(shí)驗(yàn)中所需的器材 4〔三〕方案選擇與相關(guān)技術(shù) 4三、PIC16F87單片機(jī)簡介 5〔一〕PIC16F877的特性說明 5〔二〕端口介紹 5〔三〕單片機(jī)的中斷 7四、硬件設(shè)計(jì) 11〔一〕硬件電路規(guī)劃 11〔二〕LED數(shù)碼管相關(guān)說明 11〔三〕振蕩器的選擇 11五、軟件設(shè)計(jì) 12〔一〕設(shè)計(jì)思路 12〔二〕設(shè)計(jì)中兩種情況產(chǎn)生的中斷 13〔三〕中斷的現(xiàn)場保護(hù)和恢復(fù)問題: 14六、總結(jié) 15七、致謝 15附錄一電子表的硬件電路原理圖 16附錄二匯編程序流程 17附錄三源程序 21參考文獻(xiàn): 28一、概述近年來,國際市場上的單片機(jī)性能不斷增強(qiáng),價(jià)格卻日益下降。隨著我國參加WTO以及與國際市場接軌,世界許多著名半導(dǎo)體公司都在積極開拓我國市場,這使得國內(nèi)上市的單片機(jī)品種型號越來越多,價(jià)格也越來越低。這給單片機(jī)愛好者或初學(xué)者提供了豐富廉價(jià)的物質(zhì)根底,因此,有越來越多的在校學(xué)生、電子愛好者對單片機(jī)產(chǎn)生濃厚的興趣。單片機(jī)與常用的TTL、CMOS數(shù)字集成電路相比掌握起來不太容易,問題在于單片機(jī)具有智能化功能,不光要學(xué)習(xí)其硬件還要學(xué)習(xí)其軟件,而且軟件設(shè)計(jì)需要有一定的創(chuàng)造性。這雖然給學(xué)習(xí)者帶來一定的難度,但這也正是它的迷人之處,我們通過各種學(xué)習(xí)方式在短暫的時(shí)間內(nèi)掌握單片機(jī)應(yīng)用技術(shù)也是做得到的。通過對PIC單片機(jī)的認(rèn)真學(xué)習(xí),到達(dá)掌握和運(yùn)用PIC設(shè)計(jì)簡單系統(tǒng)的方法。選擇設(shè)計(jì)電子表,主要是為了進(jìn)一步熟練PIC的各個(gè)模塊的用法、MPLAB集成開發(fā)環(huán)境、編程方法和加強(qiáng)自己運(yùn)用PIC編程的能力,到達(dá)學(xué)以至用的目的。電子表是我們?nèi)粘S玫降谋夭豢缮俚碾娮悠骷?,了解其組成原理也有重要意義?!惨弧硢纹瑱C(jī)的特點(diǎn)1.高集成度,體積小,高可靠性單片機(jī)將各功能部件集成在一塊晶體芯片上,集成度很高,體積自然也是最小的。芯片本身是按工業(yè)測控環(huán)境要求設(shè)計(jì)的,內(nèi)部布線很短,其抗工業(yè)噪音性能優(yōu)于一般通用的CPU。單片機(jī)程序指令,常數(shù)及表格等固化在ROM中不易破壞,許多信號通道均在一個(gè)芯片內(nèi),故可靠性高。2.控制功能強(qiáng)為了滿足對對象的控制要求,單片機(jī)的指令系統(tǒng)均有極豐富的條件:分支轉(zhuǎn)移能力,I/O口的邏輯操作及位處理能力,非常適用于專門的控制功能。3.低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品為了滿足廣泛使用于便攜式系統(tǒng),許多單片機(jī)內(nèi)的工作電壓僅為1.8V~3.6V,而工作電流僅為數(shù)百微安。4.易擴(kuò)展片內(nèi)具有計(jì)算機(jī)正常運(yùn)行所必需的部件。芯片外部有許多供擴(kuò)展用的三總線及并行、串行輸入/輸出管腳,很容易構(gòu)成各種規(guī)模的計(jì)算機(jī)應(yīng)用系統(tǒng)。5.優(yōu)異的性能價(jià)格比單片機(jī)的性能極高。為了提高速度和運(yùn)行效率,單片機(jī)已開始使用RISC流水線和DSP等技術(shù)。單片機(jī)的尋址能力也已突破64KB的限制,有的已可到達(dá)1MB和16MB,片內(nèi)的ROM容量可達(dá)62MB,RAM容量那么可達(dá)2MB。由于單片機(jī)的廣泛使用,因而銷量極大,各大公司的商業(yè)競爭更使其價(jià)格十分低廉,其性能價(jià)格比極高。〔二〕單片機(jī)的開展歷史、趨勢及用處1.單片機(jī)開展簡史單片機(jī)作為微型計(jì)算機(jī)的一個(gè)重要分支,應(yīng)用面很廣,開展很快。自單片機(jī)誕生至今,已開展為上百種系列的近千個(gè)機(jī)種。如果將8位單片機(jī)的推出作為起點(diǎn),那么單片機(jī)的開展歷史大致可分為以下幾個(gè)階段:〔1〕第一階段〔1976-1978〕單片機(jī)的控索階段。以Intel公司的MCS–48為代表。MCS–48的推出是在工控領(lǐng)域的控索,參與這一控索的公司還有Motorola、Zilog等,都取得了滿意的效果。這就是SCM的誕生年代,“單機(jī)片〞一詞即由此而來?!?〕第二階段〔1978-1982〕單片機(jī)的完善階段。Intel公司在MCS–48根底上推出了完善的、典型的單片機(jī)系列MCS–51。它在以下幾個(gè)方面奠定了典型的通用總線型單片機(jī)體系結(jié)構(gòu)。①完善的外部總線。MCS-51設(shè)置了經(jīng)典的8位單片機(jī)的總線結(jié)構(gòu),包括8位數(shù)據(jù)總線、16位地址總線、控制總線及具有很多機(jī)通信功能的串行通信接口。②CPU外圍功能單元的集中管理模式。③表達(dá)工控特性的位地址空間及位操作方式。④指令系統(tǒng)趨于豐富和完善,并且增加了許多突出控制功能的指令。〔3〕第三階段〔1982-1990〕8位單片機(jī)的穩(wěn)固開展及16位單片機(jī)的推出階段,也是單片機(jī)向微控制器開展的階段。Intel公司推出的MCS–96系列單片機(jī),將一些用于測控系統(tǒng)的模數(shù)轉(zhuǎn)換器、程序運(yùn)行監(jiān)視器、脈寬調(diào)制器等納入片中,表達(dá)了單片機(jī)的微控制器特征。隨著MCS–51系列的廣應(yīng)用,許多電氣廠商競相使用80C51為內(nèi)核,將許多測控系統(tǒng)中使用的電路技術(shù)、接口技術(shù)、多通道A/D轉(zhuǎn)換部件、可靠性技術(shù)等應(yīng)用到單片機(jī)中,增強(qiáng)了外圍電路路功能,強(qiáng)化了智能控制的特征。〔4〕第四階段〔1990—〕微控制器的全面開展階段。隨著單片機(jī)在各個(gè)領(lǐng)域全面深入地開展和應(yīng)用,出現(xiàn)了高速、大尋址范圍、強(qiáng)運(yùn)算能力的8位/16位/32位通用型單片機(jī),以及小型廉價(jià)的專用型單片機(jī)。2.單片機(jī)的開展趨勢目前,單片機(jī)正朝著高性能和多品種方向開展趨勢將是進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價(jià)格和外圍電路內(nèi)裝化等幾個(gè)方面開展。下面是單片機(jī)的主要開展趨勢。CMOS化近年,由于CHMOS技術(shù)的進(jìn)小,大大地促進(jìn)了單片機(jī)的CMOS化。CMOS芯片除了低功耗特性之外,還具有功耗的可控性,使單片機(jī)可以工作在功耗精細(xì)管理狀態(tài),因?yàn)閱纹瑱C(jī)芯片多數(shù)是采用CMOS〔金屬柵氧化物〕半導(dǎo)體工藝生產(chǎn)。CMOS電路的特點(diǎn)是低功耗、高密度、低速度、低價(jià)格。采用雙極型半導(dǎo)體工藝的TTL電路速度快,但功耗和芯片面積較大。隨著技術(shù)和工藝水平的提高,又出現(xiàn)了HMOS〔高密度、高速度MOS〕和CHMOS工藝。CHMOS和HMOS工藝的結(jié)合。目前生產(chǎn)的CHMOS電路已到達(dá)LSTTL的速度,傳輸延遲時(shí)間小于2ns,它的綜合優(yōu)勢已在于TTL電路。因而,在單片機(jī)領(lǐng)域CMOS正在逐漸取代TTL電路。低功耗化:單片機(jī)的功耗已從Ma級,甚至1uA以下;使用電壓在3~6V之間,完全適應(yīng)電池工作。低電壓化:幾乎所有的單片機(jī)都有WAIT、STOP等省電運(yùn)行方式。允許使用的電壓范圍越來越寬,一般在3~6V范圍內(nèi)工作。低電壓供電的單片機(jī)電源下限已可達(dá)1~2V。低噪聲與高可靠性:為提高單片機(jī)的抗電磁干擾能力,使產(chǎn)品能適應(yīng)惡劣的工作環(huán)境,滿足電磁兼容性方面更高標(biāo)準(zhǔn)的要求,各單片廠家在單片機(jī)內(nèi)部電路中都采用了新的技術(shù)措施。大容量化:以往單片機(jī)內(nèi)的ROM為1KB~4KB,RAM為64~128B。目前,單片機(jī)內(nèi)ROM最大可達(dá)64KB,RAM最大為2KB。高性能化:主要是指進(jìn)一步改良CPU的性能,加快指令運(yùn)算的速度和提高系統(tǒng)控制的可靠性。采用精簡指令集〔RISC〕結(jié)構(gòu)和流水線技術(shù),可以大幅度提高運(yùn)行速度?,F(xiàn)指令速度最高者已達(dá)100MIPS〔MillionInstructionPerSeconds,即兆指令每秒〕,并加強(qiáng)了位處理功能、中斷和定時(shí)控制功能。小容量、低價(jià)格化:與上述相反,以4位、8位機(jī)為中心的小容量、低價(jià)格化也是開展動向之一。這類單片機(jī)的用途是把以往用數(shù)字邏輯集成電路組成的控制電路單片化,可廣泛用于家電產(chǎn)品。外圍電路內(nèi)裝化:這也是單片機(jī)開展的主要方向。隨著集成度的不斷提高,有可能把眾多的各種外圍功能器件集成在片內(nèi)。除了一般必須具有的CPU、ROM、RAM、定時(shí)器/計(jì)數(shù)器等以外,片內(nèi)集成的部件還有模/數(shù)轉(zhuǎn)換器、DMA控制器、聲音發(fā)生器、監(jiān)視定時(shí)器、液晶顯示驅(qū)動器、彩色電視機(jī)和錄像機(jī)用的鎖相電路等。串行擴(kuò)展技術(shù):在很長一段時(shí)間里,通用型單片機(jī)通過三總線結(jié)構(gòu)擴(kuò)展外圍器件成為單片機(jī)應(yīng)用的主流結(jié)構(gòu)。隨著半導(dǎo)體集成工藝的不斷開展,單片機(jī)的集成度將更高、體積將更小、功能將列強(qiáng)。3.單片機(jī)的用處單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格廉價(jià)、為學(xué)習(xí)、應(yīng)用和開發(fā)提供了便利條件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原理與結(jié)構(gòu)的最正確選擇??梢哉f,二十世紀(jì)跨越了三個(gè)“電〞的時(shí)代,即電氣時(shí)代、電子時(shí)代和現(xiàn)已進(jìn)入的電腦時(shí)代。不過,這種電腦,通常是指個(gè)人計(jì)算機(jī),簡稱PC機(jī)。它由主機(jī)、鍵盤、顯示器等組成。還有一類大多數(shù)人不怎么熟悉的計(jì)算機(jī),。這種計(jì)算機(jī)就是把智能賦予各種機(jī)械的單片機(jī)(亦稱微控制器)。顧名思義,這種計(jì)算機(jī)的最小系統(tǒng)只用了一片集成電路,即可進(jìn)行簡單運(yùn)算和控制。因?yàn)樗w積小,通常都藏在被控機(jī)械的“肚子〞里。它在整個(gè)裝置中,起著有如人類頭腦的作用,它出了毛病,整個(gè)裝置就癱瘓了?,F(xiàn)在,這種單片機(jī)的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機(jī),就能起到使產(chǎn)品升級換代的成效,常在產(chǎn)品名稱前冠以形容詞——“智能型〞,如智能型洗衣機(jī)等。單片機(jī)在民用和工業(yè)測控領(lǐng)域得到最廣泛的應(yīng)用。彩電、冰箱、空調(diào)、錄像機(jī)、VCD、遙控器、游戲機(jī)、電飯煲等無處不見單片機(jī)的影子,單片機(jī)早已深深地溶入我們每個(gè)人的生活之中。單片機(jī)能大大地提高這些產(chǎn)品的智能性,易用性及節(jié)能性等主要性能指標(biāo),給我們的生活帶來舒適和方便的同時(shí),在工農(nóng)業(yè)生產(chǎn)上也極大地提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。二、電子表的構(gòu)成〔一〕電子表的構(gòu)成本次設(shè)計(jì)的電子表主要選用PIC單片機(jī)為核心,結(jié)合相關(guān)的元器件如共陰極LED數(shù)碼顯示器等,再配以相應(yīng)的軟件,到達(dá)制作簡易電子表的目的?!捕硨?shí)驗(yàn)中所需的器材共陰極LED數(shù)碼顯示器、一只廉價(jià)的的廣泛用于電子表的32.6KHz微型石英晶體。〔三〕方案選擇與相關(guān)技術(shù)本設(shè)計(jì)選用PIC單片機(jī)16F877的模塊定時(shí)器/計(jì)數(shù)器TMR1來實(shí)現(xiàn)定時(shí)、計(jì)數(shù)功能。由于TMR1自帶低頻功耗時(shí)基振蕩源,該性能適合要求有時(shí)時(shí)鐘功能,并且保持不間短走時(shí),同時(shí)要求能耗低到最低限度的應(yīng)用設(shè)計(jì)中。因此在本設(shè)計(jì)中,將TMR1用作低頻低功耗時(shí)基振蕩源,它可以工作于異步計(jì)數(shù)器模式,即使在單片機(jī)進(jìn)入睡眠狀態(tài),TMR1也可以持續(xù)運(yùn)行,當(dāng)TMR1溢出時(shí)將會產(chǎn)生中斷請求。在設(shè)計(jì)中,在TMR1自帶振蕩器的兩個(gè)外部引腳上跨接一只廉價(jià)的廣泛使用于電子手表的32.768KHz微型石英晶體,作為TMR1工作的時(shí)間基準(zhǔn)。在本實(shí)驗(yàn)中,由單片機(jī)控制數(shù)字I/O口A口控制點(diǎn)亮D口上外接的6個(gè)LED數(shù)碼管,D口控制其外接的6個(gè)LED數(shù)碼管掃描顯示時(shí)鐘的時(shí)、分、秒。B口高4位引腳外接4個(gè)按鍵,控制修改時(shí)鐘的時(shí)、分?jǐn)?shù)字。三、PIC16F87單片機(jī)簡介目前在世界一些著名的單片機(jī)產(chǎn)品系列中,PIC16F87X系列單片機(jī)是芯片內(nèi)部包含有外圍設(shè)備模塊數(shù)量最多的單片機(jī)品種之一。87X各款單片機(jī)的內(nèi)部結(jié)構(gòu)大同小異,以CPU為中心的核心區(qū)幾乎完全相同,不同的僅是Flash容量、RAM容量、EEPROM容量、外圍模塊種類和數(shù)量。其中877是PIC16F87X系列單片機(jī)中的“大哥哥〞,它是只有40腳封裝的型號,囊括了其它6款型號的所有功能。PIC16F877的芯片內(nèi)部集成了15個(gè)外圍設(shè)備模塊,這些外圍設(shè)備模塊在啟用時(shí)以及在工作過程中,都或多或少地需要CPU參與控制、協(xié)調(diào)或交換數(shù)據(jù)等各種效勞工作。由于CPU的運(yùn)行速度非常高,而各個(gè)外圍設(shè)備模塊的工作速度卻非常低,況且這些外圍設(shè)備模塊也不是頻繁地要求CPU對其效勞。因此,通常采取一種讓眾多外圍設(shè)備模塊共享1個(gè)CPU,并且能夠及時(shí)得到CPU效勞的調(diào)度方法——中斷。〔一〕PIC16F877的特性說明〔1〕采用高性能的RISCCPU核心〔2〕8位微電腦控制芯片〔3〕8K×14Flash程序存儲器〔4〕5組I/O端口〔A,B,C,D,E〕〔5〕368Bytes數(shù)據(jù)存儲器及256Bytes的EEPROM數(shù)據(jù)存儲器〔6〕2組8位定時(shí)器TMR0,TMR2,及1組16位定時(shí)器TMR1〔7〕支持14個(gè)中斷處理〔二〕端口介紹PIC16F877總共有5個(gè)8位可獨(dú)立編程的通用并行輸入/輸出端口〔可簡稱I/O口〕。這5個(gè)端口之間不僅存在內(nèi)部結(jié)構(gòu)上的差異,而且同屬于一個(gè)端口的各引腳的內(nèi)部結(jié)構(gòu)也不盡相同.由于PIC16F877屬于8位單片機(jī),因此每個(gè)端口都由數(shù)量不超過8個(gè)引腳構(gòu)成。每個(gè)端口中的每跟引腳都可以用軟件的方式單獨(dú)編程,設(shè)定為輸出或者輸入引腳。1.端口A及與之相關(guān)的存放器端口A是一個(gè)6位雙端口,它的根本輸入/輸出功能的根底之上,復(fù)合了模/轉(zhuǎn)換器的模擬量輸入功能、A/D轉(zhuǎn)換器所需的外接參考電壓輸入功能、定時(shí)器/計(jì)數(shù)器TMR0的外部時(shí)鐘輸入功能、主同步串行端口MSSP的從動選項(xiàng)擇信號輸入功能等。端口數(shù)據(jù)存放器PORTA是一個(gè)可讀可寫的存放器,也是一個(gè)用戶軟件與單片機(jī)引腳外接電路交換的界面。由于RA端口只有6個(gè)外接引腳,所以與之對應(yīng)的數(shù)據(jù)存放器也就只有低6位有效,無效的兩位讀出時(shí)也將會返回0。相應(yīng)的數(shù)據(jù)方向存放器是TRISA,它也只有低6位有效,無效的兩位讀出時(shí)也將會返回0。將TRISA存放器的一位置1,把相應(yīng)的端口A引腳變?yōu)檩斎耄窗严鄳?yīng)的輸出驅(qū)動器置高阻態(tài)方式。對TRISA存放器的一位清零會把輸出鎖存器的內(nèi)容放到所選擇的引腳上。A/D轉(zhuǎn)換器控制存放器ADCON1的低4位是可讀可寫的。它是定義A/D轉(zhuǎn)換器模塊輸入引腳功能分配的一個(gè)控制存放器。與RA端口有牽連的只有低4位〔PCFG3:PCFG0〕。2.端口B及與之相關(guān)的存放器RB端口是一個(gè)8位雙向I/O端口。它在根本輸入/輸出功能的根底之上,除了每個(gè)引腳內(nèi)部增加了可統(tǒng)一編程的弱上拉電路,另外還復(fù)合的片載Flash 低電壓編程所需的3個(gè)引腳、外部中斷輸入引腳、電平變化中斷功能等。端口數(shù)據(jù)存放器PORTB與相應(yīng)的數(shù)據(jù)方向存放器TRISB的功用與端口A的相應(yīng)存放器是類似的。選項(xiàng)存放器POTION_REG是一個(gè)可讀可寫的存放器,包含著與TMR0、分頻器和端口RB有關(guān)的控制位。端口引腳RB0和外部中斷INT共用同一引腳,與該引腳有關(guān)的兩個(gè)控制位含義如下:〔1〕INTEDG:外部中斷INT觸發(fā)信號邊沿選擇位。1=選擇RB0/INT上升沿觸發(fā)有效;0=選擇RB0/INT下降沿觸發(fā)有效;〔2〕/RBPU:RB端口弱上拉電路使能控制位1=RB端口弱上拉電路禁止;0=RB端口弱上拉電路使能;圖表1選項(xiàng)存放器POTION_REG的控制位Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0/RBPUINTEDGT0CST0SEPSAPS2PS1PS0中斷控制存放器INTCON是一個(gè)可讀可寫的存放器,它將第一梯隊(duì)的3個(gè)中斷源的標(biāo)志位和屏蔽位〔也稱使能位〕,以及PEIE和GIE囊括其中。不過與RB端口有關(guān)的位只有兩個(gè):RBIF:端口RB的引腳RB4~RB7電平變化中斷標(biāo)志位。1=RB4~RB7已經(jīng)發(fā)生了電平變化?!脖仨氂密浖?〕0=RB4~RB7尚未發(fā)生電平變化。RBIE:端口RB的引腳RB4~RB7電平變化中斷屏蔽位。1=允許端口RB產(chǎn)生的中斷;0=屏蔽端口RB產(chǎn)生的中斷;圖表2中斷控制存放器INTCON的控制位Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0GIEPEIET0IEINTERBIET0IFINTFRBIF3.端口C及與之相關(guān)的存放器RC端口也是一個(gè)8位雙向I/O端口。它在根本輸入/輸出功能的根底之上,復(fù)合了多項(xiàng)較為復(fù)雜的功能,如定時(shí)器/計(jì)數(shù)器TMR1的外接時(shí)鐘功能、主同步串行端口MSSP的外接引腳等。另外每個(gè)腳內(nèi)部都設(shè)置了一個(gè)施密特觸發(fā)輸入緩沖器,對于輸入信號波形可以起到整形作用。端口數(shù)據(jù)存放器PORTC與相應(yīng)的數(shù)據(jù)方向存放器TRISC的功用與端口A的相應(yīng)存放器是類似的。4.端口D及與之相關(guān)的存放器RD端口是一個(gè)8位雙向I/O端口,它在根本輸入/輸出功能的根底之上,復(fù)合了1項(xiàng)功能,即并行從動端口。另外,每個(gè)引腳在作為I/O腳使用時(shí),是經(jīng)過施密特觸發(fā)緩沖器輸入的,而在工作于并行從動端口方式時(shí),那么是經(jīng)過TTL緩沖器輸入的。端口方向控制存放器TRISE不是一個(gè)完全可讀可寫的存放器。與RD端口有牽連的只有一個(gè)位PSPMODE控制位。當(dāng)該位置1,RD工作于并行從動端口方式,當(dāng)該位清0時(shí),RD工作于通用I/O端口方式?!踩硢纹瑱C(jī)的中斷

中斷就是當(dāng)計(jì)算機(jī)系統(tǒng)正在執(zhí)行某程序時(shí),出現(xiàn)某種特殊狀況,如有按鍵按下、定時(shí)時(shí)間到、發(fā)生電平變化等,此時(shí)CPU需要暫時(shí)停止當(dāng)前的程序,轉(zhuǎn)去執(zhí)行處理有按鍵按下、定時(shí)時(shí)間到或發(fā)生電平變化等情況的某段特定程序,待這段特定的程序執(zhí)行完畢之后,再回到原先的程序去執(zhí)行。中斷控制方式使CPU在平時(shí)可以利用充分的時(shí)間去處理主要事件,而當(dāng)外界有特殊情況需要處理時(shí)CPU也不會錯(cuò)過,這樣的工作效率較高,對于PIC單片機(jī)來說,一次中斷活動的全過程大至可以歸納為以下幾個(gè)階段:①中斷請求、②中斷屏蔽、③中斷響應(yīng)、④現(xiàn)場保護(hù)、⑤調(diào)查中斷源⑥中斷處理、⑦去除標(biāo)志、⑧恢復(fù)現(xiàn)場、⑨中斷返回其中第1、2、3、和9階段是由硬件自動實(shí)現(xiàn)的,而4、5、6、7、8階段那么是在編程中完成。1.與中斷功能有關(guān)的存放器:與中斷功能有關(guān)的特殊功能存放器共有6個(gè):選項(xiàng)存放器OPTCON-REG、中斷控制存放器INTCON、第1外圍設(shè)備中斷標(biāo)志存放器PIR1、第1外圍設(shè)備中斷屏蔽存放器〔又稱中斷使能存放器〕PIE1、第2外圍設(shè)備中斷標(biāo)志存放器PIR2和第2外圍設(shè)備中斷屏蔽存放器PIE2。圖表3與各中斷功能有關(guān)的存放器的控制位存放器名稱存放器符號存放器地址存放器內(nèi)容Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0選項(xiàng)存放器OPTION-REG81H/181H/RBPUINTEDGT0CST0SEPSAPS2PS1PS0中斷控制存放器INTCON0BH/8B/

10BH/18BHGIEPEIET0IEINTERBIET0IFINTFRBIF第1外設(shè)中斷標(biāo)志存放器PIR10CHPSPIFADIFRCIFTXIFSSPIFCCP1IFTMR2IFTMR1IF第1外設(shè)中斷屏蔽存放器PIE18CHPSPIEADIERCIETXIESSPIECCP1IETMR2IETMR1IE第2外設(shè)中斷標(biāo)志存放器PIR20DHREIFBCLIF--CCP2IF第2外設(shè)中斷屏蔽存放器PIE28DHEEIEBCLIE--CCP2IE2.CPU對中斷的處理:不管各種中斷屏蔽位和全局中斷屏蔽位為何值,只要某一中斷源的中斷條件得到滿足,單片機(jī)就會向CPU發(fā)出中斷申請,并將響應(yīng)的中斷標(biāo)志位置1,而該中斷是否能得到CPU的響應(yīng)那么取決于和它相關(guān)的中斷屏蔽位的值。如果該中斷被一路放行,那么中斷申請被遞交給CPU,CPU響應(yīng)中斷后,全局中斷屏蔽位GIE自動由硬件清零,以免發(fā)生重復(fù)響應(yīng);然后由硬件自動把當(dāng)前PC指針壓入堆棧,并把PC指針指向中斷失量地址0004H,從而進(jìn)入中斷效勞程序開始執(zhí)行;中斷效勞程序的開始,CPU先對有關(guān)存放器進(jìn)行保護(hù),再檢查各個(gè)中斷源標(biāo)志位以確定是哪兒中斷源發(fā)生的申請,把對應(yīng)的中斷標(biāo)志位清零并輸對應(yīng)的程序來執(zhí)行。中斷效勞程序執(zhí)行完畢后,再執(zhí)行中斷返回指令“RETFIE〞退出中斷,此時(shí),硬件自動將保存在棧頂?shù)臄帱c(diǎn)地址彈回到PC指針中,使CPU返回繼續(xù)執(zhí)行被中斷的主程序。3.定時(shí)器/計(jì)數(shù)器TMR1模塊TMR1的主要用途:TMR1可以像TMR0那樣,用做時(shí)間定時(shí)器和事件計(jì)數(shù)器;借助于自帶的低頻時(shí)基振蕩器,用來實(shí)現(xiàn)記錄和計(jì)算真實(shí)的年、月、日、時(shí)、分、秒的實(shí)時(shí)時(shí)鐘RTC功能;TMR1還可以與CCP模塊配合使用,實(shí)現(xiàn)輸入捕捉或輸出比擬功能?!?〕定時(shí)器/計(jì)數(shù)器TMR1的結(jié)構(gòu)TMR1是由2個(gè)8位寬的存放器TMR1H和TMR1L組成的16位定時(shí)器/計(jì)數(shù)器,通過軟件可讀可寫。TMR1H:TMR1L從0000H遞增到FFFFH之后再返回到0000H時(shí),會產(chǎn)生高位溢出,同時(shí)將會產(chǎn)生溢出中斷標(biāo)志位TMR1IF〔PIR1的位0〕為1,如果此前相關(guān)的中斷使能控制位都被全能,還會引起CPU的中斷響應(yīng)。通過對中斷使能位TMR1IE〔PIE1的位0〕的置1或清0,可以允許或禁止CPU響應(yīng)TMR1溢出中斷。TMR1有兩種工作方式:定時(shí)器方式和計(jì)數(shù)器方式。其中計(jì)數(shù)器方式又同步計(jì)數(shù)器工作方式和異步計(jì)數(shù)器工作方式。TMR1的時(shí)鐘信號或觸發(fā)信號共有以下4種方式:①由內(nèi)部系統(tǒng)時(shí)鐘4分頻后獲取,即取自指令周期;②從RC0/T1OSO/T1CKI引腳獲??;③從RC1/T1OSI/CCP2引腳獲??;④自帶振蕩器產(chǎn)生。定時(shí)器/計(jì)數(shù)器TMR1可以工作在定時(shí)方式和計(jì)數(shù)器方式,這由它的時(shí)鐘源選擇位TMR1CS〔TMR1控制存放器T1CON的位1〕確定。TMR1CS置0,選擇定時(shí)工作方式;TMR1CS置1,選擇計(jì)數(shù)工作方式?!?〕定時(shí)器/計(jì)數(shù)器TMR1相關(guān)存放器①TMR1控制存放器T1CON是一個(gè)只用到低6位的可讀/寫的存放器。最高兩位未用,讀出時(shí)返回0。圖表4TMR1控制存放器T1CON的控制位Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0——T1CKPS1T1CKPS0T1OSCEN/T1SYNCTMR1CSTMR1ON其余各位的含義如下:Bit5:Bit4〔T1CKPS1~T1CKPS0〕分頻器分頻比選擇位。Bit3〔T1OSCEN〕TMR1自帶振蕩器使能位。1=允許TMR1振蕩器起振;0=禁止TMR1振蕩器起振,非門的輸出端呈高阻態(tài);Bit〔/T1SYNC〕TMR1外部輸入時(shí)鐘與系統(tǒng)治時(shí)鐘同步控制位。TMR1工作于計(jì)數(shù)器方式〔T1SYNC=1時(shí)〕;1=TMR1外部輸入時(shí)鐘與系統(tǒng)治時(shí)鐘不保持同步;0=TMR1外部輸入時(shí)鐘與系統(tǒng)治時(shí)鐘保持同步;TMR1工作于定時(shí)器方式〔T1SYNC=0時(shí),該位不起作用〕。Bit1〔TMR1CS〕時(shí)鐘源選擇位。1=選擇外部時(shí)鐘源,即時(shí)鐘信號來源于外部引腳或者自帶振蕩器;0=選擇內(nèi)部時(shí)鐘源〔fosc/4=Tcyc指令周期〕;Bit0〔TMR1ON〕使能控制位〔這點(diǎn)優(yōu)于不能被關(guān)閉的TMR0〕。1=啟用TMR1;0=關(guān)閉TMR1;②與定時(shí)器/計(jì)數(shù)器TMR1相關(guān)的其它存放器:第一外設(shè)中斷標(biāo)志存放器PIR1的位0〔TMR1IF〕為TMR1溢出標(biāo)志位。TMR1IF置1TMR1發(fā)生溢出,TMR1未發(fā)生溢出。第一外設(shè)中斷屏蔽存放器PIE1的位0〔TMR1IE〕為TMR1溢出中斷使能位。TMR1IE置1允許TMR1溢出后產(chǎn)生中斷,為0屏蔽TMR1溢出后產(chǎn)生的中斷。中斷存放器INTCON的位7〔GIE〕為全局中斷總使能位。置1允許CPU響應(yīng)所有中斷源產(chǎn)生的中斷請求,置0禁止CPU響應(yīng)所有中斷源產(chǎn)生的中斷請求。INTCON的位6〔PEIE〕為外設(shè)中斷屏蔽位,置1允許CPU響應(yīng)來自第二級的中斷請求〔TMR1為第二級的中斷〕,置0禁止CPU響應(yīng)來自第二級的中斷請求。四、硬件設(shè)計(jì)〔一〕硬件電路規(guī)劃為了充分利用現(xiàn)有演示板上的電路元器件資源,在端口RA控制點(diǎn)亮D口上外接的6個(gè)LED數(shù)碼管,端口RD控制外接的6個(gè)LED數(shù)碼管顯示時(shí)間。端口RB高4位引腳外接4個(gè)按鍵,控制修改時(shí)鐘的時(shí)間時(shí)、分的數(shù)字。由于在應(yīng)用TMR1的自帶振蕩器時(shí),將會占用端口RC的局部引腳RC0/T1OSO和RC1/T1OSI,因此,端口RC上原有的8個(gè)發(fā)光二級管不方便再使用,在TMR1自帶振蕩器兩個(gè)外接引腳RC0/RC0/T1OSO和RC1/T1OSI上跨接一個(gè)廉價(jià)可以取自電子表的微型32.768KHz石英晶體和兩只15PF的瓷片電容器。單片機(jī)的系統(tǒng)時(shí)鐘采用電路板原帶的RC時(shí)基振蕩器外接阻容器件。要此設(shè)計(jì)中,采納RC振蕩器方式,既可以節(jié)省本錢,又使得單片機(jī)具有更快的啟動時(shí)間,也不會影響時(shí)鐘振蕩器互相獨(dú)立,其計(jì)數(shù)器的遞增速度完全與系統(tǒng)時(shí)鐘無關(guān)?!捕矻ED數(shù)碼管相關(guān)說明LED數(shù)碼管內(nèi)部包含8只發(fā)光二極管,其中7只發(fā)光二極管構(gòu)成字型筆段〔a~g〕,1只發(fā)光二極管構(gòu)成小數(shù)點(diǎn)〔dp〕.對于任何一只發(fā)光二極管,只要陽極為高電平、陰極為低電平,并且電位差高于其閾值〔約為1.7~2.1V〕就會被點(diǎn)亮.根據(jù)各二極管公共端連接方式的不同,又有共陰極和共陽極LED數(shù)碼管之分,本次設(shè)計(jì)采用6只共陰極LED數(shù)碼管來顯示時(shí)鐘的時(shí)間.〔三〕振蕩器的選擇單片機(jī)的系統(tǒng)時(shí)鐘(即主時(shí)鐘)采用電路板原帶的RC時(shí)基振蕩器外接阻容器件.在對于系統(tǒng)時(shí)鐘精度要求不嚴(yán)格的工程中,采用RC振蕩器方式,既可以節(jié)省本錢,又使得單片機(jī)具有更快的啟動時(shí)間,在此選擇這種方案并不會影響電子表的走時(shí)精度,因?yàn)門MR1自帶振蕩器與系統(tǒng)時(shí)鐘振蕩器互相獨(dú)立,其計(jì)數(shù)器的遞增速度完全與系統(tǒng)時(shí)鐘無關(guān).RC振蕩頻率隨著電源電壓VDD,RC值及工作環(huán)境溫度的變化而變化。同時(shí)由于工藝參數(shù)的差異,對不同芯片其振蕩器頻率將不同。另外,當(dāng)外接電容CEXT值較小時(shí),對振蕩器頻率的影響更大,當(dāng)然,我們也應(yīng)考慮電阻電容本身的容差對振蕩器頻率的影響。圖1RC振蕩電路圖1所示的是RC振蕩電路,如果REXT低于2.2KΩ,振蕩器將處于不穩(wěn)定工作狀態(tài),甚至停振。而REXT大于1M[時(shí),振蕩器又易受噪聲、濕度、漏電流的干擾。因此,電阻REXT取值最好在3KΩ~100KΩ范圍內(nèi)。在不接外部電容時(shí),振蕩器仍可工作,但為了抗干擾及保證穩(wěn)定性,建議接20PF以上的電容。PIC單片機(jī)片內(nèi)有一4分頻電路,從OSC1/CLKIN引腳輸入或RC振蕩器產(chǎn)生的振蕩頻率fOSC經(jīng)4分頻后從OSC2/CLKOUT引腳輸出4分頻信號,該信號可用于測試或作為其它邏輯電路的同步信號。1.晶體的選擇對于一個(gè)高可靠性的系統(tǒng)設(shè)計(jì),晶體的選擇非常重要,尤其設(shè)計(jì)帶有睡眠喚醒(往往用低電壓以求低功耗)的系統(tǒng)。這是因?yàn)榈凸╇婋妷菏固峁?yīng)晶體的鼓勵(lì)功率減少,造成晶體起振很慢或根本就不能起振。這一現(xiàn)象在上電復(fù)位時(shí)并不特別明顯,原因時(shí)上電時(shí)電路有足夠的擾動,很容易建立振蕩。在睡眠喚醒時(shí),電路的擾動要比上電時(shí)小得多,起振變得很不容易。在振蕩回路中,晶體既不能過鼓勵(lì)(容易振到高次諧波上)也不能欠鼓勵(lì)(不容易起振)。晶體的選擇至少必須考慮:諧振頻點(diǎn),負(fù)載電容,鼓勵(lì)功率,溫度特性,長期穩(wěn)定性。2.電容C1,C2的選擇〔1〕因?yàn)槊恳环N晶振都有各自的特性,所以最好按制造廠商所提供的數(shù)值選擇外部元器件?!?〕在許可范圍內(nèi),C1,C2值越低越好。C值偏大雖有利于振蕩器的穩(wěn)定,但將會增加起振時(shí)間?!?〕應(yīng)使C2值大于C1值,這樣可使上電時(shí),加快晶振起振。五、軟件設(shè)計(jì)〔一〕設(shè)計(jì)思路對于TMR1的編程,既可以采用軟件查詢的方法,也可以采用中斷的方法,本設(shè)計(jì)選用中斷的方式。A口控制點(diǎn)亮D口上外接的6個(gè)LED數(shù)碼管及D口控制LED數(shù)碼管顯示時(shí)間的時(shí)、分、秒是由單片機(jī)執(zhí)行延時(shí)子程序循環(huán)控制的。B口上按鍵修改時(shí)鐘由單片機(jī)執(zhí)行延時(shí)程序查詢按鍵情況控制的。在主程序的初始化階段,以及在每次執(zhí)行中斷效勞程序時(shí),都需要給TMR1賦一個(gè)初始值。該值的計(jì)算方法為:TMR1初始值=1000H-32768=65536-32768=32768=0080H因此,TMR1的初始值是80H,TMR1的初始值是00H,這樣就可以保證,在自帶振蕩器每產(chǎn)生32768個(gè)方波,TMR1就溢出一次?!捕吃O(shè)計(jì)中兩種情況產(chǎn)生的中斷1.PORTB端口最高的4個(gè)引腳(RB7~RB4)在設(shè)為輸入模式時(shí),當(dāng)輸入電平由高到低或由低到高發(fā)生變化時(shí),可以讓單片機(jī)產(chǎn)生中斷。這就是通常所說的引腳狀態(tài)變化中斷。中斷控制存放器INTCON的位0即RBIF是端口RB的引腳RB4~RB7電平變化中斷標(biāo)志位,當(dāng)其為1時(shí),RB4~RB7引腳已經(jīng)發(fā)生了電平變化,那么用軟件清0并執(zhí)行相應(yīng)的中斷子程序,然后返回原先的程序去執(zhí)行.在設(shè)計(jì)引腳中斷程序時(shí),有三個(gè)需要特別注意的地方。一是,在去除P0RTB中斷標(biāo)志位RBIF之前,必須安排一條必不可少的,以PORTB端口數(shù)據(jù)存放器PORTB為源存放器的讀操作指令。放置這一指令的目的有時(shí)并不只是為了讀取有用的數(shù)據(jù),而是為了取消狀態(tài)變化的硬件信號,以便順利去除RBIF標(biāo)志位,為下一次中斷做好準(zhǔn)備。二是,由于端口PORTB是引腳電子變化中斷,即無論引腳出現(xiàn)上升沿還是下降沿都會產(chǎn)生中斷請求,所以必須處理好不需要的虛假中斷。三是,一般都利用PIC單片機(jī)的引腳功能來檢測按鍵,所以必須處理好按鍵消抖的問題。引腳中斷程序設(shè)計(jì):在主程序里先設(shè)置有關(guān)的存放器。①設(shè)置TRISB存放器,使RB7~RB4相關(guān)的引腳處于輸入狀態(tài);②如果需要弱上拉,通過OPTION_REG的第7位設(shè)置;③BCFINTCON,RBIF④BSFINTCON,RBIE⑤BSFINTCON,GIE〔2〕響應(yīng)狀態(tài)變化后的中斷效勞程序。

①檢查RBIF是否為l,為l那么是引腳變化引起的中斷;

②調(diào)用按鍵處理程序;③去除RBIF標(biāo)志。2.由定時(shí)器/計(jì)數(shù)器TMR1產(chǎn)生中斷。當(dāng)?shù)?外圍設(shè)備中斷標(biāo)志存放器PIR1的位0〔TMR1IF〕即定時(shí)器/計(jì)數(shù)器TMR1模塊溢出中斷標(biāo)志位為1時(shí),TMR1溢出。用軟件清0,然后執(zhí)行相應(yīng)程序,最后返回。TMR1中斷程序設(shè)計(jì):〔1〕在程序里先設(shè)置有關(guān)的存放器MOVLW80H;設(shè)置為1S溢初始值MOVWFTMR1HCLRFTMR1LCLRFINTCON〔2〕狀態(tài)變化后的中斷效勞程序。①檢查TMR1IE是否為1,為1那么是TMR1發(fā)生溢出產(chǎn)生的中斷;②BCFPIR1,TMR1IF;軟件清0③MOVLW80H,MOVWFTMR1H;對TMR1裝載初始值〔三〕中斷的現(xiàn)場保護(hù)和恢復(fù)問題:中斷現(xiàn)場的保護(hù)是中斷技術(shù)中一個(gè)很重要的環(huán)節(jié)。在進(jìn)入中斷效勞程序期間,只有返回地址,即程序計(jì)數(shù)器PC的值被自動壓入堆棧。假設(shè)需要保存其他存放器的內(nèi)容,就得另想方法。由于PIC單片機(jī)的指令系統(tǒng)中沒有像其他單片機(jī)那樣的PUSH〔入?!澈蚉OP〔出?!持惖闹噶?,所以要用1段用戶程序來實(shí)現(xiàn)類似的功能。因?yàn)槭怯?段程序來實(shí)現(xiàn)現(xiàn)場保護(hù),而程序的執(zhí)行有可能會影響到W存放器和STATUS存放器,所以,首先應(yīng)該把這2個(gè)存放器保護(hù)起來,然后再去保存其他用戶認(rèn)為有必要保護(hù)的存放器。并且在PIC單片機(jī)中,中斷現(xiàn)場數(shù)據(jù)不是保存到芯片的堆棧存儲區(qū)中,而是保存在用戶自己選擇的一些文件存放器〔即RAM數(shù)據(jù)存儲器單元〕中,當(dāng)然一般應(yīng)該選擇通用存放器來保護(hù)現(xiàn)場。;保護(hù)現(xiàn)場程序1]MOVWFW_TEMP;復(fù)制W到它的臨時(shí)備份存放器W_TEMP中2]SWAPFSTATUS,W;將STATUS存放器上下半字節(jié)交換后放入W3]CLRFSTATUS;不管當(dāng)前處在哪個(gè)體,都設(shè)置體0作當(dāng)前體4]MOVWFSTATUS_TEMP;保存STATUS到體0上的臨時(shí)存放器STATUS_TEMP5]SWAPFSTATUS_TEMP,W;將STATUS_TEMP存放器上下半字節(jié)交換后放入W;恢復(fù)現(xiàn)場程序6]MOVWFSTATUS;把W內(nèi)容移動到STATUS存放器,〔同時(shí)也把當(dāng)前體恢復(fù)到原先的體上〕7]SWAPFW_TEMP,F;將W_TEMP內(nèi)容上下半字節(jié)交換后放回8]SWAPFW_TEMP,W;再次將W_TEMP內(nèi)容上下半字節(jié)交換后放入W六、總結(jié)本系統(tǒng)完成了簡易電子表的制作,LED數(shù)碼管能夠準(zhǔn)確無誤的進(jìn)行實(shí)時(shí)時(shí)間的顯示,并能實(shí)現(xiàn)時(shí)間可調(diào)功能。在此設(shè)計(jì)中,單片機(jī)的系統(tǒng)時(shí)鐘采用電路板原帶的RC時(shí)基振蕩器外接阻容器件并采納RC振蕩器方式,既節(jié)省本錢,又使得單片機(jī)具有更快的啟動時(shí)間,也不會影響時(shí)鐘振蕩器互相獨(dú)立,其計(jì)數(shù)器的遞增速度完全與系統(tǒng)時(shí)鐘無關(guān)。這樣就使整個(gè)系統(tǒng)簡潔,可靠性高,性能穩(wěn)定,本系統(tǒng)到達(dá)了設(shè)計(jì)的根本要求和發(fā)揮局部的要求。經(jīng)過本次設(shè)計(jì),我對PIC16F877單片機(jī)的應(yīng)用和其芯片功能有了更深層次的理解。單片機(jī)的實(shí)踐性很強(qiáng),自己實(shí)際動手,實(shí)際體驗(yàn)其開發(fā)過程,這是至關(guān)重要的。在這次設(shè)計(jì)中還有欠缺的方面,我在今后的學(xué)習(xí)工作中會加以注意。七、致謝這次畢業(yè)學(xué)位論文是在我的指導(dǎo)老師汪光宅老師的親切關(guān)心和悉心指導(dǎo)下完成的。他嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和鼓勵(lì)著我。從課題的選擇到工程的最終完成,汪老師都始終給予我細(xì)心的指導(dǎo)和不懈的支持。幾個(gè)月來,汪老師不僅在學(xué)業(yè)上給予我精心的指導(dǎo),同時(shí)還在思想上給予我無微不至的關(guān)心,在此謹(jǐn)向汪老師致以誠摯的謝意和崇高的敬意。在此,我還要感謝在一起度過愉快的大學(xué)生活的各位室友以及班級里的各位同學(xué),正是由于你們的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,直至設(shè)計(jì)的順利完成。在論文即將完成之際,我的心情無法平靜,從開始進(jìn)入課題到論文的順利完成,有多少可敬的師長、同學(xué)、朋友給了我無言的幫助,在這里請接受我誠摯的謝意!最后我還要感謝培養(yǎng)我長大含辛茹苦的父母,謝謝你們!附錄一電子表的硬件電路原理圖附錄二匯編程序流程1.主程序流程圖主程序主程序關(guān)閉TMR1關(guān)閉TMR1向TMR1賦1S溢出初始值向TMR1賦1S溢出初始值清出全部中斷標(biāo)志位及其使能位設(shè)置體1為當(dāng)前體去除所有外設(shè)中斷使能位設(shè)置D口、A口為輸出C口為輸出、RC0腳為輸入定義A口所有相關(guān)引腳為普通數(shù)字I/O腳設(shè)置B口高四位為輸入、低四位輸出設(shè)置B口高四位為輸入、低四位輸出使能TMR1使能TMR1體0為當(dāng)前體,開放全局中斷和外設(shè)、RB電平變化產(chǎn)生的中斷體0為當(dāng)前體,開放全局中斷和外設(shè)、RB電平變化產(chǎn)生的中斷對A口、B口、D口賦初始值對A口、B口、D口賦初始值設(shè)置控制存放器預(yù)分頻比為1:1,外部時(shí)鐘源、異步使能振蕩器設(shè)置控制存放器預(yù)分頻比為1:1,外部時(shí)鐘源、異步使能振蕩器時(shí)鐘清0時(shí)鐘清0計(jì)時(shí)子程序計(jì)時(shí)子程序顯示子程序顯示子程序2.中斷效勞子程序流程圖中斷效勞子程序SERV中斷效勞子程序SERV保護(hù)現(xiàn)場W、STATUS保護(hù)現(xiàn)場W、STATUS是TMR1模塊溢出中斷調(diào)查中斷源是TMR1模塊溢出中斷調(diào)查中斷源是RB電平變化產(chǎn)生的中斷是RB電平變化產(chǎn)生的中斷TMR1溢出中斷處理程序TMR1溢出中斷處理程序去除TMR1溢出中斷標(biāo)志位是其他情況引起的錯(cuò)誤操作,那么不作任何處理,恢復(fù)現(xiàn)場子程序retfie0RB中斷處理程序去除TMR1溢出中斷標(biāo)志位是其他情況引起的錯(cuò)誤操作,那么不作任何處理,恢復(fù)現(xiàn)場子程序retfie0RB中斷處理程序去除RB中斷標(biāo)志位關(guān)閉TMR1去除RB中斷標(biāo)志位關(guān)閉TMR1對TMR1裝載初始值測試RB位4控制按鍵是否按下儀否對TMR1裝載初始值測試RB位4控制按鍵是否按下是秒個(gè)位自加1調(diào)用延時(shí)子程序delay1秒個(gè)位自加1調(diào)用延時(shí)子程序delay1計(jì)時(shí)、顯示轉(zhuǎn)換存放器位0置1再次測試RB位4控制按鍵是否按下員否計(jì)時(shí)、顯示轉(zhuǎn)換存放器位0置1再次測試RB位4控制按鍵是否按下測試RB位5控制按鍵是否按下轉(zhuǎn)分個(gè)位修改子程序RB4Serv是測試RB位5控制按鍵是否按下轉(zhuǎn)分個(gè)位修改子程序RB4Serv恢復(fù)現(xiàn)場子程序retfie1是否恢復(fù)現(xiàn)場子程序retfie1測試RB位6控制按鍵是否按下調(diào)用延時(shí)子程序delay1恢復(fù)現(xiàn)場子程序retfie0測試RB位6控制按鍵是否按下調(diào)用延時(shí)子程序delay1恢復(fù)現(xiàn)場子程序retfie0是否延時(shí)子程序delay1返回延時(shí)子程序delay1返回再次測試RB位5控制按鍵是否按下否再次測試RB位5控制按鍵是否按下是再次測試RB位6控制按鍵是否按下是再次測試RB位6控制按鍵是否按下轉(zhuǎn)分十位修改子程序RB5Serv否轉(zhuǎn)分十位修改子程序RB5Serv轉(zhuǎn)時(shí)個(gè)位修改子程序RB6Serv是轉(zhuǎn)時(shí)個(gè)位修改子程序RB6Serv測試RB位7控制按鍵是否按下否測試RB位7控制按鍵是否按下是延時(shí)子程序delay1延時(shí)子程序delay1再次測試RB位7控制按鍵是否按下轉(zhuǎn)時(shí)十位修改子程序RB7Serv否再次測試RB位7控制按鍵是否按下轉(zhuǎn)時(shí)十位修改子程序RB7Serv是3.時(shí)間顯示子程序流程圖顯示子程序LEDSCAN顯示子程序LEDSCAN將秒個(gè)位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管將秒個(gè)位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管調(diào)用時(shí)間延時(shí)子程序delay調(diào)用時(shí)間延時(shí)子程序delay將秒十位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管將秒十位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管調(diào)用時(shí)間延時(shí)子程序delay調(diào)用時(shí)間延時(shí)子程序delay將分個(gè)位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管將分個(gè)位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管調(diào)用時(shí)間延時(shí)子程序delay調(diào)用時(shí)間延時(shí)子程序delay將分十位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管將分十位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管調(diào)用時(shí)間延時(shí)子程序delay調(diào)用時(shí)間延時(shí)子程序delay將時(shí)個(gè)位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管將時(shí)個(gè)位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管調(diào)用時(shí)間延時(shí)子程序delay調(diào)用時(shí)間延時(shí)子程序delay將時(shí)十位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管將時(shí)十位查表送D口顯示,D口控制點(diǎn)亮D口上右邊第一個(gè)數(shù)碼管調(diào)用時(shí)間延時(shí)子程序delay調(diào)用時(shí)間延時(shí)子程序delay測試計(jì)數(shù)、顯示轉(zhuǎn)換存放器Count位0是否為0是測試計(jì)數(shù)、顯示轉(zhuǎn)換存放器Count位0是否為0否清0Count,返回到計(jì)數(shù)子程序LOOP清0Count,返回到計(jì)數(shù)子程序LOOP4.計(jì)時(shí)子程序流圖程計(jì)時(shí)子程序LOOP計(jì)時(shí)子程序LOOP測試秒個(gè)位是否滿10否測試秒個(gè)位是否滿10是秒十位自加1秒十位自加1測試秒十位是否滿6否測試秒十位是否滿6是分個(gè)位自加1分個(gè)位自加1測試分個(gè)位是否滿10否測試分個(gè)位是否滿10是分十位自加1分十位自加1測試分十位是否滿6否測試分十位是否滿6十個(gè)位自加1是十個(gè)位自加1測試十個(gè)位是否滿4否測試十個(gè)位是否滿4是測試十個(gè)位是否滿10測試十個(gè)位是否滿2否否測試十個(gè)位是否滿10測試十個(gè)位是否滿2是時(shí)鐘清0時(shí)鐘清0顯示子程序LEDSCAN是顯示子程序LEDSCAN十個(gè)位清0十個(gè)位清0時(shí)十位自加1時(shí)十位自加1附錄三源程序 LIST P=16F#INCLUDE"P16F877.INC"N1EQU30H;定義N1、M1為DELAY的外循環(huán)和循環(huán)內(nèi)變量M1EQU31HN2EQU32H;定義N2、M2為DELAY1的外循環(huán)和循環(huán)內(nèi)變量M2EQU33HCOUNT EQU20H;定義計(jì)數(shù)、顯示轉(zhuǎn)換存放器COUNT的地址SECEND_L EQU 21H;定義秒個(gè)位存儲地址SECEND_H EQU 22H;定義秒十位存儲地址MINUTE_LEQU 23H;定義分個(gè)位存儲地址MINUTE_H EQU 24H;定義分十位存儲地址HOUR_L EQU 25H;定義時(shí)個(gè)位存儲地址HOUR_H EQU 26H;定義時(shí)十位存儲地址W_TEMP EQU 27H;定義W保護(hù)存放器地址STATUS_TEMPEQU 28H;定義STATUS保護(hù)存放器地址;********************復(fù)位向量和中斷向量************************** ORG 000H;定義主程序存放區(qū)域的起始地址 NOP;設(shè)置一條ICD必須的空操作指令 GOTO MAIN ORG 004H;定義中斷效勞子程序首址 NOP GOTO SERV;跳到中斷效勞子程序;***************************主程序****************************MAINCLRF STATUS;設(shè)置體0為當(dāng)前體 BCF T1CON,TMR1ON;關(guān)閉TMR1以節(jié)能 MOVLW80H;設(shè)置為1秒溢出初始值 MOVWF TMR1H CLRF TMR1L CLRF INTCON;去除全部中斷標(biāo)志位及其使能位 CLRF PIR1;第一外設(shè)中斷標(biāo)志存放器清0 CLRF PIR2;第二外設(shè)中斷標(biāo)志存放器清0 BSF STATUS,RP0;設(shè)置當(dāng)前體為體1 CLRF PIE1;第一外設(shè)中斷使能存放器清0 CLRF PIE2;第二外設(shè)中斷使能存放器清0 CLRF TRISD;把D口設(shè)置為輸出 CLRF TRISA;把A口設(shè)置為輸出 CLRF TRISC;設(shè)置RC端口為輸出 BSF TRISC,0;設(shè)置RC0腳為輸入 MOVLW 06H;定義A口所有相關(guān)引腳為普通數(shù)字I/O腳 MOVWF ADCON1 BCF OPTION_REG,7;啟用內(nèi)部弱上拉功能電路 MOVLW 0F0H;設(shè)置B口高4位為輸入,低4位為輸出 MOVWFTRISB BSFPIE1,TMR1IE;設(shè)置允許TMR1溢出發(fā)生的中斷 BCF STATUS,RP0;設(shè)置體0為當(dāng)前體 BSF INTCON,RBIE;設(shè)置允許端口RB產(chǎn)生的中斷 BSF INTCON,GIE;開放全局中斷 BSF INTCON,PEIE;開放外設(shè)中斷 MOVLW 0F0H;B口顯示初始為0 MOVWF PORTB MOVLW 3FH;D口顯示初始值為時(shí)0 MOVWFPORTD MOVLW B'00111111';A口控制點(diǎn)亮D口上的6個(gè)LED數(shù)碼管 MOVLWPORTA MOVLW0EH;設(shè)置控制存放器預(yù)分頻比為1:1 MOVWF T1CON;外部時(shí)鐘源、異步使能振蕩器 CLRF COUNT CLRF SECEND_L;時(shí)、分、秒初始化清0 CLRF SECEND_H CLRF MINUTE_L CLRF MINUTE_H CLRF HOUR_L CLRF HOUR_H BSF T1CON,TMR1ON;啟動TMR1;—————————————*計(jì)時(shí)子程序*——————————LOOP MOVF SECEND_L,0 XORLW 0AH BTFSS STATUS,Z;測試Z位為0,那么順序執(zhí)行,否那么跳步 GOTO LEDSCAN;Z為0,那么運(yùn)算結(jié)果不為0,查表顯示 CLRF SECEND_L;Z為1,那么運(yùn)算結(jié)果為0,秒個(gè)位滿10,清0 INCF SECEND_H,1;秒十位自加一 MOVF SECEND_H,0;秒十位與06H異或 XORLW06H BTFSS STATUS,Z;測試Z位為0,那么順序執(zhí)行,否那么跳步 GOTO LEDSCAN;Z為0,那么運(yùn)算結(jié)果不為0,查表顯示 CLRF SECEND_H;Z為1,那么運(yùn)算結(jié)果為0,秒十位滿6,清0 INCF MINUTE_L,1;分個(gè)位自加一 MOVF MINUTE_L,0;分個(gè)位與0AH異或 XORLW 0AH BTFSS STATUS,Z;測試Z位為0,那么順序執(zhí)行,否那么跳步 GOTO LEDSCAN;Z為0,那么運(yùn)算結(jié)果不為0,查表顯示 CLRF MINUTE_L;Z為1,那么運(yùn)算結(jié)果為0,分個(gè)位滿10,清0 INCF MINUTE_H,1;分十位自加一 MOVFMINUTE_H,0;分十位與06H異或 XORLW 06H BTFSS STATUS,Z;測試Z位為0,那么順序執(zhí)行,否那么跳步 GOTO LEDSCAN;Z為0,那么運(yùn)算結(jié)果不為0,查表顯示 CLRF MINUTE_H;Z為1,那么運(yùn)算結(jié)果為0,分十位滿6,清0 INCF HOUR_L,1;時(shí)個(gè)位自加一 MOVF HOUR_L,0;時(shí)個(gè)位與04H異或 XORLW04H BTFSS STATUS,Z;測試Z位為0,那么順序執(zhí)行,否那么跳步 GOTO LEDSCAN;Z為0,那么運(yùn)算結(jié)果不為0,時(shí)個(gè)位未滿4;查表顯示 MOVF HOUR_H,0;時(shí)十位與02H異或 XORLW02H BTFSS STATUS,Z;測試Z位為0,那么順序執(zhí)行,否那么跳步 GOTO LOOP1;Z為0,那么運(yùn)算結(jié)果不為0,時(shí)十位未滿2,跳到LOOP1 CLRF SECEND_L;Z為1,那么時(shí)十位滿2,時(shí)鐘滿24小時(shí),對時(shí)鐘清0 CLRF SECEND_H;時(shí)鐘又從0時(shí)0分0秒開始計(jì)時(shí) CLRF MINUTE_L CLRF MINUTE_H CLRF HOUR_L CLRF HOUR_H GOTO LEDSCAN;顯示0時(shí)0分0秒LOOP1 MOVF HOUR_L,0;將十個(gè)位的值送入W中,然后與0AH異或XORLW0A BTFSS STATUS,Z;測試Z位為0,那么順序執(zhí)行,否那么跳步 GOTO LEDSCAN;Z為0,時(shí)個(gè)位未滿10,查表顯示 CLRF HOUR_L;Z為1,那么時(shí)個(gè)位滿10,清0 INCF HOUR_H,1;時(shí)十位自加一;——————————————*顯示子程序*—————————————LEDSCAN MOVF SECEND_L,0;將秒個(gè)位查表送入D口顯示 CALL TABLE MOVWF PORTD MOVLW B'00000001';A口控制點(diǎn)亮D口上的右一 MOVWF PORTA CALL DELAY;調(diào)用延時(shí)子程序DELAY MOVF SECEND_H,0;將秒十位查表送入D口顯示 CALL TABLE MOVWF PORTD MOVLW B'00000010';A口控制點(diǎn)亮D口上的右邊第二個(gè)數(shù)碼管 MOVWF PORTA CALL DELAY MOVF MINUTE_L,0;將分個(gè)位查表送入D口顯示 CALL TABLE1 MOVWF PORTD MOVLW B'00000100' ;A口控制點(diǎn)亮D口上的右邊第三個(gè)數(shù)碼管 MOVWF PORTA CALL DELAY MOVF MINUTE_H,0;將分十位查表送入D口顯示 CALL TABLE MOVWF PORTD MOVLW B'00001000';A口控制點(diǎn)亮D口上的右邊第四 MOVWF PORTA CALL DELAY MOVF HOUR_L,0;將時(shí)個(gè)位查表送入D口顯示 CALL TABLE1 MOVWF PORTD MOVLW B'00010000';A口控制點(diǎn)亮D口上的右邊第五 MOVWF PORTA CALL DELAY MOVF HOUR_H,0;將時(shí)十位查表送入D口顯示 CALL TABLE MOVWFPORTD MOVLW B'00100000';A口控制點(diǎn)亮D口上的左一個(gè)數(shù)碼管 MOVWF PORTA CALL DELAY;調(diào)用延時(shí)子程序DELAY為0,轉(zhuǎn)到顯示子程序 BTFSS COUNT,0;測試COUNT計(jì)數(shù)器位0為1那么跳步,否那么順序執(zhí)行 GOTO LEDSCAN;COUNT計(jì)數(shù)器位0為0,轉(zhuǎn)到顯示子程序 CLRF COUNT;COUNT計(jì)數(shù)器位0為1,那么清0 GOTO LOOP;轉(zhuǎn)回計(jì)時(shí)子程序;***********************中斷效勞子程序*************************SERV MOVWF W_TEMP;保護(hù)W SWAPF STATUS,0;保護(hù)STATUS CLRF STATUS;不管當(dāng)前處于哪個(gè)體,都設(shè)置體0為當(dāng)前體 MOVWF STATUS_TEMP;保存STATUS到體0上的臨時(shí)存放器 BTFSC INTCON,RBIF;測試是否是B口中斷,不是那么跳步 GOTO RBSERV;RBIF位為1,那么跳步轉(zhuǎn)到B口中斷執(zhí)行子程序 BTFSC PIR1,TMR1IF;RBIF位為0,那么測試是否是TMR1模塊中斷 GOTO T1SERV;是TMR1中斷,那么轉(zhuǎn)TMR1中斷執(zhí)行子程序 GOTO RETFIE0;不是,那么跳步轉(zhuǎn)恢復(fù)現(xiàn)場子程序RETFIE0;———————————*TMR1中斷執(zhí)行子程序*————————————T1SERV BCFPIR1,TRM1IF;發(fā)生了溢出,那么用軟件清0 MOVLW80H;對TMR1裝載初始值,即1秒溢出初始值 MOVWF TMR1H INCF SECEND_L,1;秒個(gè)位自加一 BSF COUNT,0;COUNT計(jì)數(shù)器的位0置1 GOTO RETFIE1;調(diào)用恢復(fù)現(xiàn)場子程序RETFIE1;————————————*B口中斷執(zhí)行子程序*———————————RBSERV BCF INTCON,RBIF;發(fā)生電平變化后,用軟件清0 BCF T1CON,TMR1ON;關(guān)閉TMR1,以節(jié)省功耗 BTFSC PORTB,4;測試B口位4為0那么跳步,否那么順序執(zhí)行 GOTO R5;位4為1,那么按鍵未按下,轉(zhuǎn)到R5CALL DELAY1;位4為0,那么按鍵已按下,調(diào)延時(shí)子程序DELAY1 BTFSC PORTB,4;測試按鍵是否已穩(wěn)定按下,否那么順序執(zhí)行 GOTO R5;延時(shí)后按鍵未按下,那么轉(zhuǎn)R5 GOTO RB4SERV;按鍵已穩(wěn)定按下,那么轉(zhuǎn)RB4SERVR5BTFSC PORTB,5;測試B口位5為0那么跳步,否那么順序執(zhí)行 GOTO R6;位5為1,那么按鍵未按下,轉(zhuǎn)R6 CALL DELAY1;位5為0,按鍵已按下,調(diào)延時(shí)子程序DELAY1 BTFSC PORTB,5;測試按鍵是否已穩(wěn)定按下,否那么順序執(zhí)行 GOTO R6;延時(shí)后按鍵未按下,那么轉(zhuǎn)R6 GOTO RB5SERV;按鍵已穩(wěn)定按下,那么轉(zhuǎn)RB5SERVR6 BTFSC PORTB,6 ;測試B口位6為0那么跳步,否那么順序執(zhí)行 GOTO R7;位6為1,那么按鍵未按下,轉(zhuǎn)R7 CALL DELAY1;位6為0,那么按鍵已按下,調(diào)延時(shí)子程序DELAY1 BTFSC PORTB,6;測試按鍵是否已穩(wěn)定按下,否那么順序執(zhí)行 GOTO R7;延時(shí)后按鍵未按下,那么轉(zhuǎn)R7 GOTO RB6SERV;按鍵已穩(wěn)定按下,那么轉(zhuǎn)

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論