版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、xxx 大學(xué)本科畢業(yè)設(shè)計(jì) i xxxxxxxxxx 大學(xué)本科畢業(yè)設(shè)計(jì)大學(xué)本科畢業(yè)設(shè)計(jì) 基于 pic 的電子表設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生姓名學(xué)生姓名 所所 在在 系系 專業(yè)名稱專業(yè)名稱 班班 級(jí)級(jí) 學(xué)學(xué) 號(hào)號(hào) 指導(dǎo)教師指導(dǎo)教師 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) ii 基于 pic 的電子表設(shè)計(jì) 學(xué)生: 指導(dǎo)教師: 內(nèi)容摘要內(nèi)容摘要: :近年來(lái)隨著計(jì)算機(jī)在社會(huì)領(lǐng)域的滲透和大規(guī)模集成電路的發(fā)展,單片機(jī)的應(yīng) 用正在不斷地走向深入,由于它具有功能強(qiáng),體積小,功耗低,價(jià)格便宜,工作可靠, 使用方便等特點(diǎn),因此特別適合于與控制有關(guān)的系統(tǒng),越來(lái)越廣泛地應(yīng)用于自動(dòng)控制, 智能化儀器,儀表,數(shù)據(jù)采集,軍工產(chǎn)品以及家用電器等各個(gè)領(lǐng)域
2、,單片機(jī)往往是作為 一個(gè)核心部件來(lái)使用,在根據(jù)具體硬件結(jié)構(gòu),以及針對(duì)具體應(yīng)用對(duì)象特點(diǎn)的軟件結(jié)合, 以作完善。 本次設(shè)計(jì)中以單片機(jī)的發(fā)展過(guò)程和發(fā)展方向?yàn)楸尘?,介紹了單片機(jī)的輸入輸出的工 作原理和操作方法,中斷的工作原理和操作方法,定時(shí)器/計(jì)數(shù)器 tmr1 的工作原理和電 路結(jié)構(gòu),led 的內(nèi)部結(jié)構(gòu)。電路程序設(shè)計(jì)及調(diào)試過(guò)程。 本次做的電子表是以單片機(jī)(pic16f877)為核心,結(jié)合相關(guān)的元器件(共陰極 led 數(shù)碼顯示器等) ,再配以相應(yīng)的軟件,達(dá)到制作簡(jiǎn)易電子表的目的,其硬件部分難點(diǎn)在于 元器件的選擇、布局及焊接。 關(guān)鍵詞:定時(shí)器/計(jì)數(shù)器 tmr1 單片機(jī) pic16f877 共陰極 led
3、數(shù)碼顯示器 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) iii design of digital clock based on pic abstract:abstract:in recent years, with computers in the infiltration and the development of large-scale integrated circuits. scm application is steadily deepening, as it has strong function, small size, low power dissipation, low prices, r
4、eliable, easy to use features, it is particularly suited to and control of the system, increasingly widely used in automatic control, intelligent instruments, gauges, # acquisition, military products and household appliances, and other areas, is often microcontroller as a core component to use, in l
5、ight of specific hardware architecture, and application-specific software features object combine to make perfect. the design of a microcontroller development process and the direction of development as the background, the computers input and output of the working principle and method of operation i
6、nterrupted the principle and method of operation.tmr1, the principle and structure of circuit, led internal structure, circuit program design and debugging process. the figures do bell on scm (pic16f877) at the core, combined with the components (a total of cathode led digital display), and factorin
7、g in the corresponding software, easy to produce digital clock purposes, as part of the hardware components is a difficult choice, layout and welding. keywords : timer/countertmr1 single chip microcomputer pic16f877 total cathode led figures display. xxx 大學(xué)本科畢業(yè)設(shè)計(jì) iv 目 錄 一、概述 .1 (一)單片機(jī)的特點(diǎn).1 (二)單片機(jī)的發(fā)展
8、歷史、趨勢(shì)及用處.2 二、電子表的構(gòu)成 .4 (一)電子表的構(gòu)成.4 (二)實(shí)驗(yàn)中所需的器材.4 (三)方案選擇與相關(guān)技術(shù).4 三、pic16f87 單片機(jī)簡(jiǎn)介.5 (一) pic16f877 的特性說(shuō)明 .5 (二)端口介紹.5 (三)單片機(jī)的中斷.7 四、硬件設(shè)計(jì) .11 (一)硬件電路規(guī)劃.11 (二)led 數(shù)碼管相關(guān)說(shuō)明 .11 (三)振蕩器的選擇.11 五、軟件設(shè)計(jì) .12 (一)設(shè)計(jì)思路.12 (二)設(shè)計(jì)中兩種情況產(chǎn)生的中斷.13 (三)中斷的現(xiàn)場(chǎng)保護(hù)和恢復(fù)問(wèn)題:.14 六、總結(jié) .15 七、致謝 .15 附錄一 電子表的硬件電路原理圖 .16 附錄二 匯編程序流程 .17 附錄
9、三 源程序 .21 參考文獻(xiàn): .28 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 1 一、概述一、概述 近年來(lái),國(guó)際市場(chǎng)上的單片機(jī)性能不斷增強(qiáng),價(jià)格卻日益下降。隨著我國(guó)加入 wto 以及與國(guó)際市場(chǎng)接軌,世界許多著名半導(dǎo)體公司都在積極開(kāi)拓我國(guó)市場(chǎng),這使得國(guó)內(nèi)上 市的單片機(jī)品種型號(hào)越來(lái)越多,價(jià)格也越來(lái)越低。這給單片機(jī)愛(ài)好者或初學(xué)者提供了豐 富廉價(jià)的物質(zhì)基礎(chǔ),因此,有越來(lái)越多的在校學(xué)生、電子愛(ài)好者對(duì)單片機(jī)產(chǎn)生濃厚的興 趣。單片機(jī)與常用的 ttl、cmos 數(shù)字集成電路相比掌握起來(lái)不太容易,問(wèn)題在于單片 機(jī)具有智能化功能,不光要學(xué)習(xí)其硬件還要學(xué)習(xí)其軟件,而且軟件設(shè)計(jì)需要有一定的創(chuàng) 造性。這雖然給學(xué)習(xí)者帶來(lái)一定的難度,
10、但這也正是它的迷人之處,我們通過(guò)各種學(xué)習(xí) 方式在短暫的時(shí)間內(nèi)掌握單片機(jī)應(yīng)用技術(shù)也是做得到的。通過(guò)對(duì) pic 單片機(jī)的認(rèn)真學(xué)習(xí), 達(dá)到掌握和運(yùn)用 pic 設(shè)計(jì)簡(jiǎn)單系統(tǒng)的方法。選擇設(shè)計(jì)電子表,主要是為了進(jìn)一步熟練 pic 的各個(gè)模塊的用法、mplab 集成開(kāi)發(fā)環(huán)境、編程方法和加強(qiáng)自己運(yùn)用 pic 編程的能力, 達(dá)到學(xué)以至用的目的。電子表是我們?nèi)粘S玫降谋夭豢缮俚碾娮悠骷私馄浣M成原理 也有重要意義。 (一)單片機(jī)的特點(diǎn) 1高集成度,體積小,高可靠性 單片機(jī)將各功能部件集成在一塊晶體芯片上,集成度很高,體積自然也是最小的。 芯片本身是按工業(yè)測(cè)控環(huán)境要求設(shè)計(jì)的,內(nèi)部布線很短,其抗工業(yè)噪音性能優(yōu)于一般
11、通 用的 cpu。單片機(jī)程序指令,常數(shù)及表格等固化在 rom 中不易破壞,許多信號(hào)通道均在 一個(gè)芯片內(nèi),故可靠性高。 2控制功能強(qiáng) 為了滿足對(duì)對(duì)象的控制要求,單片機(jī)的指令系統(tǒng)均有極豐富的條件:分支轉(zhuǎn)移能力, i/o 口的邏輯操作及位處理能力,非常適用于專門的控制功能。 3低電壓,低功耗,便于生產(chǎn)便攜式產(chǎn)品 為了滿足廣泛使用于便攜式系統(tǒng),許多單片機(jī)內(nèi)的工作電壓僅為 1.8v3.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ī)的性能極高。為了提
12、高速度和運(yùn)行效率,單片機(jī)已開(kāi)始使用 risc 流水線和 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 2 dsp 等技術(shù)。單片機(jī)的尋址能力也已突破 64kb 的限制,有的已可達(dá)到 1mb 和 16mb, 片內(nèi)的 rom 容量可達(dá) 62mb,ram 容量則可達(dá) 2mb。由于單片機(jī)的廣泛使用,因而銷 量極大,各大公司的商業(yè)競(jìng)爭(zhēng)更使其價(jià)格十分低廉,其性能價(jià)格比極高。 (二)單片機(jī)的發(fā)展歷史、趨勢(shì)及用處 1.單片機(jī)發(fā)展簡(jiǎn)史 單片機(jī)作為微型計(jì)算機(jī)的一個(gè)重要分支,應(yīng)用面很廣,發(fā)展很快。自單片機(jī)誕生至 今,已發(fā)展為上百種系列的近千個(gè)機(jī)種。如果將 8 位單片機(jī)的推出作為起點(diǎn),那么單片 機(jī)的發(fā)展歷史大致可分為以下幾個(gè)階段: (1)
13、第一階段(1976-1978)單片機(jī)的控索階段。以 intel 公司的 mcs 48 為代表。 mcs 48 的推出是在工控領(lǐng)域的控索,參與這一控索的公司還有 motorola 、zilog 等, 都取得了滿意的效果。這就是 scm 的誕生年代, “單機(jī)片”一詞即由此而來(lái)。 (2)第二階段(1978-1982)單片機(jī)的完善階段。intel 公司在 mcs 48 基礎(chǔ)上推出了 完善的、典型的單片機(jī)系列 mcs 51。它在以下幾個(gè)方面奠定了典型的通用總線型單片 機(jī)體系結(jié)構(gòu)。 完善的外部總線。mcs-51 設(shè)置了經(jīng)典的 8 位單片機(jī)的總線結(jié)構(gòu),包括 8 位數(shù)據(jù)總線、 16 位地址總線、控制總線及具有
14、很多機(jī)通信功能的串行通信接口。 cpu 外圍功能單元的集中管理模式。 體現(xiàn)工控特性的位地址空間及位操作方式。 指令系統(tǒng)趨于豐富和完善,并且增加了許多突出控制功能的指令。 (3)第三階段(1982-1990)8 位單片機(jī)的鞏固發(fā)展及 16 位單片機(jī)的推出階段,也是單 片機(jī)向微控制器發(fā)展的階段。intel 公司推出的 mcs 96 系列單片機(jī),將一些用于測(cè)控 系統(tǒng)的模數(shù)轉(zhuǎn)換器、程序運(yùn)行監(jiān)視器、脈寬調(diào)制器等納入片中,體現(xiàn)了單片機(jī)的微控制 器特征。隨著 mcs 51 系列的廣應(yīng)用,許多電氣廠商競(jìng)相使用 80c51 為內(nèi)核,將許多 測(cè)控系統(tǒng)中使用的電路技術(shù)、接口技術(shù)、多通道 a/d 轉(zhuǎn)換部件、可靠性技術(shù)
15、等應(yīng)用到單 片機(jī)中,增強(qiáng)了外圍電路路功能,強(qiáng)化了智能控制的特征。 (4)第四階段(1990)微控制器的全面發(fā)展階段。隨著單片機(jī)在各個(gè)領(lǐng)域全面深入地 發(fā)展和應(yīng)用,出現(xiàn)了高速、大尋址范圍、強(qiáng)運(yùn)算能力的 8 位/16 位/32 位通用型單片機(jī), 以及小型廉價(jià)的專用型單片機(jī)。 2.單片機(jī)的發(fā)展趨勢(shì) 目前,單片機(jī)正朝著高性能和多品種方向發(fā)展趨勢(shì)將是進(jìn)一步向著 cmos 化、低功 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 3 耗、小體積、大容量、高性能、低價(jià)格和外圍電路內(nèi)裝化等幾個(gè)方面發(fā)展。下面是單片 機(jī)的主要發(fā)展趨勢(shì)。 cmos 化近年,由于 chmos 技術(shù)的進(jìn)小,大大地促進(jìn)了單片機(jī)的 cmos 化。 cmos 芯片
16、除了低功耗特性之外,還具有功耗的可控性,使單片機(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)勢(shì)已在于 ttl 電路。因而, 在單片機(jī)領(lǐng)域 cmos 正在逐漸取代 ttl 電路。 低功耗化:?jiǎn)纹瑱C(jī)的功耗
17、已從 ma 級(jí),甚至 1ua 以下;使用電壓在 36v 之間,完全 適應(yīng)電池工作。 低電壓化:幾乎所有的單片機(jī)都有 wait、stop 等省電運(yùn)行方式。允許使用的電壓 范圍越來(lái)越寬,一般在 36v 范圍內(nèi)工作。低電壓供電的單片機(jī)電源下限已可達(dá) 12v。 低噪聲與高可靠性:為提高單片機(jī)的抗電磁干擾能力,使產(chǎn)品能適應(yīng)惡劣的工作環(huán) 境,滿足電磁兼容性方面更高標(biāo)準(zhǔn)的要求,各單片廠家在單片機(jī)內(nèi)部電路中都采用了新 的技術(shù)措施。 大容量化:以往單片機(jī)內(nèi)的 rom 為 1kb4kb,ram 為 64128b。目前,單片機(jī)內(nèi) rom 最大可達(dá) 64kb,ram 最大為 2kb。 高性能化:主要是指進(jìn)一步改進(jìn) c
18、pu 的性能,加快指令運(yùn)算的速度和提高系統(tǒng)控制 的可靠性。采用精簡(jiǎn)指令集(risc)結(jié)構(gòu)和流水線技術(shù),可以大幅度提高運(yùn)行速度?,F(xiàn) 指令速度最高者已達(dá) 100mips(million instruction per seconds,即兆指令每秒) ,并加強(qiáng) 了位處理功能、中斷和定時(shí)控制功能。 小容量、低價(jià)格化:與上述相反,以 4 位、8 位機(jī)為中心的小容量、低價(jià)格化也是發(fā) 展動(dòng)向之一。這類單片機(jī)的用途是把以往用數(shù)字邏輯集成電路組成的控制電路單片化, 可廣泛用于家電產(chǎn)品。 外圍電路內(nèi)裝化:這也是單片機(jī)發(fā)展的主要方向。隨著集成度的不斷提高,有可能 把眾多的各種外圍功能器件集成在片內(nèi)。除了一般必須具有
19、的 cpu、rom、ram、定時(shí) 器/計(jì)數(shù)器等以外,片內(nèi)集成的部件還有模/數(shù)轉(zhuǎn)換器、dma 控制器、聲音發(fā)生器、監(jiān)視 定時(shí)器、液晶顯示驅(qū)動(dòng)器、彩色電視機(jī)和錄像機(jī)用的鎖相電路等。 串行擴(kuò)展技術(shù):在很長(zhǎng)一段時(shí)間里,通用型單片機(jī)通過(guò)三總線結(jié)構(gòu)擴(kuò)展外圍器件成 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 4 為單片機(jī)應(yīng)用的主流結(jié)構(gòu)。 隨著半導(dǎo)體集成工藝的不斷發(fā)展,單片機(jī)的集成度將更高、體積將更小、功能將列 強(qiáng)。 3.單片機(jī)的用處 單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng) 集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià) 格便宜、為學(xué)習(xí)、應(yīng)用和開(kāi)發(fā)提供了便利條
20、件。同時(shí),學(xué)習(xí)使用單片機(jī)是了解計(jì)算機(jī)原 理與結(jié)構(gòu)的最佳選擇。 可以說(shuō),二十世紀(jì)跨越了三個(gè)“電”的時(shí)代,即電氣時(shí)代、電子時(shí)代和現(xiàn)已進(jìn)入的電腦 時(shí)代。不過(guò),這種電腦,通常是指?jìng)€(gè)人計(jì)算機(jī),簡(jiǎn)稱 pc 機(jī)。它由主機(jī)、鍵盤、顯示器等 組成。還有一類大多數(shù)人不怎么熟悉的計(jì)算機(jī), 。這種計(jì)算機(jī)就是把智能賦予各種機(jī)械的 單片機(jī)(亦稱微控制器)。顧名思義,這種計(jì)算機(jī)的最小系統(tǒng)只用了一片集成電路,即可進(jìn) 行簡(jiǎn)單運(yùn)算和控制。因?yàn)樗w積小,通常都藏在被控機(jī)械的“肚子”里。它在整個(gè)裝置中, 起著有如人類頭腦的作用,它出了毛病,整個(gè)裝置就癱瘓了?,F(xiàn)在,這種單片機(jī)的使用 領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航
21、系統(tǒng)、家用電器等。各種產(chǎn) 品一旦用上了單片機(jī),就能起到使產(chǎn)品升級(jí)換代的功效,常在產(chǎn)品名稱前冠以形容詞 “智能型”,如智能型洗衣機(jī)等。單片機(jī)在民用和工業(yè)測(cè)控領(lǐng)域得到最廣泛的應(yīng)用。彩電、 冰箱、空調(diào)、錄像機(jī)、vcd、遙控器、游戲機(jī)、電飯煲等無(wú)處不見(jiàn)單片機(jī)的影子,單片 機(jī)早已深深地溶入我們每個(gè)人的生活之中。 單片機(jī)能大大地提高這些產(chǎn)品的智能性,易用性及節(jié)能性等主要性能指標(biāo),給我們 的生活帶來(lái)舒適和方便的同時(shí),在工農(nóng)業(yè)生產(chǎn) 上也極大地提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。 二、電子表的構(gòu)成二、電子表的構(gòu)成 (一)電子表的構(gòu)成 本次設(shè)計(jì)的電子表主要選用 pic 單片機(jī)為核心,結(jié)合相關(guān)的元器件如共陰極 led 數(shù)碼顯
22、示器等,再配以相應(yīng)的軟件,達(dá)到制作簡(jiǎn)易電子表的目的。 (二)實(shí)驗(yàn)中所需的器材 共陰極 led 數(shù)碼顯示器、一只廉價(jià)的的廣泛用于電子表的 32.6khz 微型石英晶體。 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 5 (三)方案選擇與相關(guān)技術(shù) 本設(shè)計(jì)選用 pic 單片機(jī) 16f877 的模塊定時(shí)器/計(jì)數(shù)器 tmr1 來(lái)實(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
23、 溢出時(shí)將會(huì)產(chǎn)生中斷請(qǐng)求。在設(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ī)簡(jiǎn)介單片機(jī)簡(jiǎn)介 目前在世界一些著名的單片機(jī)產(chǎn)品系列中,pic16f87x 系列單片機(jī)是芯片內(nèi)部包含有 外圍設(shè)備模塊數(shù)量最多的單片機(jī)品種之一。87x 各
24、款單片機(jī)的內(nèi)部結(jié)構(gòu)大同小異,以 cpu 為中心的核心區(qū)幾乎完全相同,不同的僅是 flash 容量、ram 容量、eeprom 容量、外圍 模塊種類和數(shù)量。其中 877 是 pic16f87x 系列單片機(jī)中的“大哥哥”,它是只有 40 腳封 裝的型號(hào),囊括了其它 6 款型號(hào)的所有功能。pic16f877 的芯片內(nèi)部集成了 15 個(gè)外圍設(shè) 備模塊,這些外圍設(shè)備模塊在啟用時(shí)以及在工作過(guò)程中,都或多或少地需要 cpu 參與控 制、協(xié)調(diào)或交換數(shù)據(jù)等各種服務(wù)工作。由于 cpu 的運(yùn)行速度非常高,而各個(gè)外圍設(shè)備模 塊的工作速度卻非常低,況且這些外圍設(shè)備模塊也不是頻繁地要求 cpu 對(duì)其服務(wù)。因此, 通常采取
25、一種讓眾多外圍設(shè)備模塊共享 1 個(gè) cpu,并且能夠及時(shí)得到 cpu 服務(wù)的調(diào)度方法 中斷。 (一) pic16f877 的特性說(shuō)明 (1)采用高性能的 risc cpu 核心 (2)8 位微電腦控制芯片 (3)8k14flash 程序存儲(chǔ)器 (4)5 組 i/o 端口(a,b,c,d,e) (5)368bytes 數(shù)據(jù)存儲(chǔ)器及 256bytes 的 eeprom 數(shù)據(jù)存儲(chǔ)器 (6)2 組 8 位定時(shí)器 tmr0,tmr2,及 1 組 16 位定時(shí)器 tmr1 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 6 (7)支持 14 個(gè)中斷處理 (二)端口介紹 pic16f877 總共有 5 個(gè) 8 位可獨(dú)立編程的通用
26、并行輸入/輸出端口(可簡(jiǎn)稱 i/o 口)。 這 5 個(gè)端口之間不僅存在內(nèi)部結(jié)構(gòu)上的差異,而且同屬于一個(gè)端口的各引腳的內(nèi)部結(jié)構(gòu)也 不盡相同.由于 pic16f877 屬于 8 位單片機(jī),因此每個(gè)端口都由數(shù)量不超過(guò) 8 個(gè)引腳構(gòu)成。 每個(gè)端口中的每跟引腳都可以用軟件的方式單獨(dú)編程,設(shè)定為輸出或者輸入引腳。 1.端口 a 及與之相關(guān)的寄存器 端口 a 是一個(gè) 6 位雙端口,它的基本輸入/輸出功能的基礎(chǔ)之上,復(fù)合了模/轉(zhuǎn)換器 的模擬量輸入功能、a/d 轉(zhuǎn)換器所需的外接參考電壓輸入功能、定時(shí)器/計(jì)數(shù)器 tmr0 的外 部時(shí)鐘輸入功能、主同步串行端口 mssp 的從動(dòng)選項(xiàng)擇信號(hào)輸入功能等。 端口數(shù)據(jù)寄存器
27、 porta 是一個(gè)可讀可寫的寄存器,也是一個(gè)用戶軟件與單片機(jī)引腳 外接電路交換的界面。由于 ra 端口只有 6 個(gè)外接引腳,所以與之對(duì)應(yīng)的數(shù)據(jù)寄存器也就 只有低 6 位有效,無(wú)效的兩位讀出時(shí)也將會(huì)返回 0。 相應(yīng)的數(shù)據(jù)方向寄存器是 trisa,它也只有低 6 位有效,無(wú)效的兩位讀出時(shí)也將會(huì)返 回 0。將 trisa 寄存器的一位置 1,把相應(yīng)的端口 a 引腳變?yōu)檩斎?,即把相?yīng)的輸出驅(qū)動(dòng) 器置高阻態(tài)方式。對(duì) trisa 寄存器的一位清零會(huì)把輸出鎖存器的內(nèi)容放到所選擇的引腳 上。 a/d 轉(zhuǎn)換器控制寄存器 adcon1 的低 4 位是可讀可寫的。它是定義 a/d 轉(zhuǎn)換器模塊輸 入引腳功能分配的一
28、個(gè)控制寄存器。與 ra 端口有牽連的只有低 4 位(pcfg3:pcfg0)。 2.端口 b 及與之相關(guān)的寄存器 rb 端口是一個(gè) 8 位雙向 i/o 端口。它在基本輸入/輸出功能的基礎(chǔ)之上,除了每個(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 共用同
29、一引腳,與該引腳有關(guān)的兩個(gè)控 制位含義如下: (1)intedg:外部中斷 int 觸發(fā)信號(hào)邊沿選擇位。 1=選擇 rb0/int 上升沿觸發(fā)有效; 0=選擇 rb0/int 下降沿觸發(fā)有效; (2) /rbpu:rb 端口弱上拉電路使能控制位 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 7 1=rb 端口弱上拉電路禁止; 0=rb 端口弱上拉電路使能; 圖表 1 選項(xiàng)寄存器 potion_reg 的控制位 bit7bit6bit5bit4bit3bit2bit1bit0 /rbpuintedgt0cst0sepsaps2ps1ps0 中斷控制寄存器 intcon 是一個(gè)可讀可寫的寄存器,它將第一梯隊(duì)的 3 個(gè)
30、中斷源的標(biāo) 志位和屏蔽位(也稱使能位),以及 peie 和 gie 囊括其中。不過(guò)與 rb 端口有關(guān)的位只 有兩個(gè): rbif:端口 rb 的引腳 rb4rb7 電平變化中斷標(biāo)志位。 1=rb4rb7 已經(jīng)發(fā)生了電平變化。(必須用軟件清 0) 0=rb4rb7 尚未發(fā)生電平變化。 rbie:端口 rb 的引腳 rb4rb7 電平變化中斷屏蔽位。 1=允許端口 rb 產(chǎn)生的中斷; 0=屏蔽端口 rb 產(chǎn)生的中斷; 圖表 2 中斷控制寄存器 intcon 的控制位 bit7bit6bit5bit4bit3bit2bit1bit0 giepeiet0ieinterbiet0ifintfrbif 3.
31、端口 c 及與之相關(guān)的寄存器 rc 端口也是一個(gè) 8 位雙向 i/o 端口。它在基本輸入/輸出功能的基礎(chǔ)之上,復(fù)合了多 項(xiàng)較為復(fù)雜的功能,如定時(shí)器/計(jì)數(shù)器 tmr1 的外接時(shí)鐘功能、主同步串行端口 mssp 的外 接引腳等。另外每個(gè)腳內(nèi)部都設(shè)置了一個(gè)施密特觸發(fā)輸入緩沖器,對(duì)于輸入信號(hào)波形可 以起到整形作用。端口數(shù)據(jù)寄存器 portc 與相應(yīng)的數(shù)據(jù)方向寄存器 trisc 的功用與端口 a 的相應(yīng)寄存器是類似的。 4.端口 d 及與之相關(guān)的寄存器 rd 端口是一個(gè) 8 位雙向 i/o 端口,它在基本輸入/輸出功能的基礎(chǔ)之上,復(fù)合了 1 項(xiàng) 功能,即并行從動(dòng)端口。另外,每個(gè)引腳在作為 i/o 腳使用
32、時(shí),是經(jīng)過(guò)施密特觸發(fā)緩沖 器輸入的,而在工作于并行從動(dòng)端口方式時(shí),則是經(jīng)過(guò) ttl 緩沖器輸入的。 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 8 端口方向控制寄存器 trise 不是一個(gè)完全可讀可寫的寄存器。與 rd 端口有牽連的 只有一個(gè)位 pspmode 控制位。當(dāng)該位置 1,rd 工作于并行從動(dòng)端口方式,當(dāng)該位清 0 時(shí),rd 工作于通用 i/o 端口方式。 (三)單片機(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í)
33、行完畢 之后,再回到原先的程序去執(zhí)行。中斷控制方式使 cpu 在平時(shí)可以利用充分的時(shí)間去處 理主要事件,而當(dāng)外界有特殊情況需要處理時(shí) cpu 也不會(huì)錯(cuò)過(guò),這樣的工作效率較高, 對(duì)于 pic 單片機(jī)來(lái)說(shuō),一次中斷活動(dòng)的全過(guò)程大至可以歸納為以下幾個(gè)階段: 中斷請(qǐng)求、中斷屏蔽、中斷響應(yīng)、現(xiàn)場(chǎng)保護(hù)、調(diào)查中斷源 中斷處理、清除標(biāo)志、恢復(fù)現(xiàn)場(chǎng)、中斷返回 其中第 1、2、3、和 9 階段是由硬件自動(dòng)實(shí)現(xiàn)的,而 4、5、6、7、8 階段則是在編程中完 成。 1.與中斷功能有關(guān)的寄存器: 與中斷功能有關(guān)的特殊功能寄存器共有 6 個(gè):選項(xiàng)寄存器 optcon-reg、中斷控制寄 存器 intcon、第 1 外圍設(shè)
34、備中斷標(biāo)志寄存器 pir1、第 1 外圍設(shè)備中斷屏蔽寄存器(又稱 中斷使能寄存器)pie1、第 2 外圍設(shè)備中斷標(biāo)志寄存器 pir2 和第 2 外圍設(shè)備中斷屏蔽寄 存器 pie2。 圖表 3 與各中斷功能有關(guān)的寄存器的控制位 寄存器內(nèi)容 寄存器名稱 寄存器符 號(hào) 寄存器 地址 bit7bit6bit5 bit4bit3bit2bit1bit0 選項(xiàng)寄存器 option- reg 81h/181 h /rbpu intedgt0cs t0sepsaps2ps1ps0 中斷控制寄 存器 intcon 0bh/8b/ 10bh/18 bh giepeiet0ie interbiet0ifintfrb
35、if 第 1 外設(shè)中 斷標(biāo)志寄存 器 pir10chpspifadifrcif txifsspifccp1iftmr2iftmr1if 第 1 外設(shè)中 斷屏蔽寄存 器 pie18chpspieadiercie txiesspieccp1ietmr2ietmr1ie xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 9 第 2 外設(shè)中 斷標(biāo)志寄存 器 pir20dh-reifbclif-ccp2if 第 2 外設(shè)中 斷屏蔽寄存 器 pie28dh-eeiebclie-ccp2ie 2.cpu 對(duì)中斷的處理: 不論各種中斷屏蔽位和全局中斷屏蔽位為何值,只要某一中斷源的中斷條件得到滿 足,單片機(jī)就會(huì)向 cpu 發(fā)出中斷申請(qǐng)
36、,并將響應(yīng)的中斷標(biāo)志位置 1,而該中斷是否能得 到 cpu 的響應(yīng)則取決于和它相關(guān)的中斷屏蔽位的值。如果該中斷被一路放行,則中斷申 請(qǐng)被遞交給 cpu,cpu 響應(yīng)中斷后,全局中斷屏蔽位 gie 自動(dòng)由硬件清零,以免發(fā)生重 復(fù)響應(yīng);然后由硬件自動(dòng)把當(dāng)前 pc 指針壓入堆棧,并把 pc 指針指向中斷失量地址 0004h,從而進(jìn)入中斷服務(wù)程序開(kāi)始執(zhí)行;中斷服務(wù)程序的開(kāi)始,cpu 先對(duì)有關(guān)寄存器進(jìn) 行保護(hù),再檢查各個(gè)中斷源標(biāo)志位以確定是哪兒中斷源發(fā)生的申請(qǐng),把對(duì)應(yīng)的中斷標(biāo)志 位清零并輸對(duì)應(yīng)的程序來(lái)執(zhí)行。中斷服務(wù)程序執(zhí)行完畢后,再執(zhí)行中斷返回指令 “retfie”退出中斷,此時(shí),硬件自動(dòng)將保存在棧頂?shù)?/p>
37、斷點(diǎn)地址彈回到 pc 指針中,使 cpu 返回繼續(xù)執(zhí)行被中斷的主程序。 3.定時(shí)器/計(jì)數(shù)器 tmr1 模塊 tmr1 的主要用途: a) tmr1 可以像 tmr0 那樣,用做時(shí)間定時(shí)器和事件計(jì)數(shù)器; b) 借助于自帶的低頻時(shí)基振蕩器,用來(lái)實(shí)現(xiàn)記錄和計(jì)算真實(shí)的年、月、日、時(shí)、分、秒 的實(shí)時(shí)時(shí)鐘 rtc 功能; c) tmr1 還可以與 ccp 模塊配合使用,實(shí)現(xiàn)輸入捕捉或輸出比較功能。 (1)定時(shí)器/計(jì)數(shù)器 tmr1 的結(jié)構(gòu) tmr1 是由 2 個(gè) 8 位寬的寄存器 tmr1h 和 tmr1l 組成的 16 位定時(shí)器/計(jì)數(shù)器,通過(guò)軟 件可讀可寫。tmr1h:tmr1l 從 0000h 遞增到
38、ffffh 之后再返回到 0000h 時(shí),會(huì)產(chǎn)生高位 溢出,同時(shí)將會(huì)產(chǎn)生溢出中斷標(biāo)志位 tmr1if(pir1 的位 0)為 1,如果此前相關(guān)的中斷 使能控制位都被全能,還會(huì)引起 cpu 的中斷響應(yīng)。通過(guò)對(duì)中斷使能位 tmr1ie(pie1 的位 0)的置 1 或清 0,可以允許或禁止 cpu 響應(yīng) tmr1 溢出中斷。 tmr1 有兩種工作方式:定時(shí)器方式和計(jì)數(shù)器方式。其中計(jì)數(shù)器方式又同步計(jì)數(shù)器工 作方式和異步計(jì)數(shù)器工作方式。tmr1 的時(shí)鐘信號(hào)或觸發(fā)信號(hào)共有以下 4 種方式: 由內(nèi)部系統(tǒng)時(shí)鐘 4 分頻后獲取,即取自指令周期; xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 10 從 rc0/t1oso/t1ck
39、i 引腳獲?。粡?rc1/t1osi/ccp2 引腳獲??; 自帶振蕩器產(chǎn)生。 定時(shí)器/計(jì)數(shù)器 tmr1 可以工作在定時(shí)方式和計(jì)數(shù)器方式,這由它的時(shí)鐘源選擇位 tmr1cs(tmr1 控制寄存器 t1con 的位 1)確定。tmr1cs 置 0,選擇定時(shí)工作方式; tmr1cs 置 1,選擇計(jì)數(shù)工作方式。 (2)定時(shí)器/計(jì)數(shù)器 tmr1 相關(guān)寄存器 tmr1 控制寄存器 t1con 是一個(gè)只用到低 6 位的可讀/寫的寄存器。最高兩位未用,讀 出時(shí)返回 0。 圖表 4 tmr1 控制寄存器 t1con 的控制位 bit7bit6bit5bit4bit3bit2bit1bit0 t1ckps1t1c
40、kps0t1oscen/ /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í),該位不
41、起作用)。 bit1(tmr1cs)時(shí)鐘源選擇位。 1=選擇外部時(shí)鐘源,即時(shí)鐘信號(hào)來(lái)源于外部引腳或者自帶振蕩器; 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 置 1 tmr1 發(fā)生溢出, tmr1 未發(fā)生溢出。第一外設(shè)中斷屏蔽寄存器 pie1 的位 0(tmr1ie)為 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 11 tmr1 溢出中斷使
42、能位。tmr1ie 置 1 允許 tmr1 溢出后產(chǎn)生中斷,為 0 屏蔽 tmr1 溢出后產(chǎn) 生的中斷。中斷寄存器 intcon 的位 7(gie)為全局中斷總使能位。置 1 允許 cpu 響應(yīng)所 有中斷源產(chǎn)生的中斷請(qǐng)求,置 0 禁止 cpu 響應(yīng)所有中斷源產(chǎn)生的中斷請(qǐng)求。intcon 的位 6(peie)為外設(shè)中斷屏蔽位,置 1 允許 cpu 響應(yīng)來(lái)自第二級(jí)的中斷請(qǐng)求(tmr1 為第二級(jí) 的中斷),置 0 禁止 cpu 響應(yīng)來(lái)自第二級(jí)的中斷請(qǐng)求。 四、硬件設(shè)計(jì)四、硬件設(shè)計(jì) (一)硬件電路規(guī)劃 為了充分利用現(xiàn)有演示板上的電路元器件資源,在端口 ra 控制點(diǎn)亮 d 口上外接的 6 個(gè) led 數(shù)
43、碼管,端口 rd 控制外接的 6 個(gè) led 數(shù)碼管顯示時(shí)間。端口 rb 高 4 位引腳外接 4 個(gè)按鍵,控制修改時(shí)鐘的時(shí)間時(shí)、分的數(shù)字。由于在應(yīng)用 tmr1 的自帶振蕩器時(shí),將會(huì) 占用端口 rc 的部分引腳 rc0/t1oso 和 rc1/t1osi,因此,端口 rc 上原有的 8 個(gè)發(fā)光二級(jí) 管不方便再使用,在 tmr1 自帶振蕩器兩個(gè)外接引腳 rc0/rc0/t1oso 和 rc1/t1osi 上跨接 一個(gè)廉價(jià)可以取自電子表的微型 32.768khz 石英晶體和兩只 15pf 的瓷片電容器。單片機(jī) 的系統(tǒng)時(shí)鐘采用電路板原帶的 rc 時(shí)基振蕩器外接阻容器件。要此設(shè)計(jì)中,采納 rc 振蕩器
44、方式,既可以節(jié)省成本,又使得單片機(jī)具有更快的啟動(dòng)時(shí)間,也不會(huì)影響時(shí)鐘振蕩器互相 獨(dú)立,其計(jì)數(shù)器的遞增速度完全與系統(tǒng)時(shí)鐘無(wú)關(guān)。 (二)led 數(shù)碼管相關(guān)說(shuō)明 led 數(shù)碼管內(nèi)部包含 8 只發(fā)光二極管,其中 7 只發(fā)光二極管構(gòu)成字型筆段(ag),1 只發(fā)光二極管構(gòu)成小數(shù)點(diǎn)(dp).對(duì)于任何一只發(fā)光二極管,只要陽(yáng)極為高電平、陰極為 低電平,并且電位差高于其閾值(約為 1.72.1v)就會(huì)被點(diǎn)亮.根據(jù)各二極管公共端連接 方式的不同,又有共陰極和共陽(yáng)極 led 數(shù)碼管之分,本次設(shè)計(jì)采用 6 只共陰極 led 數(shù)碼管 來(lái)顯示時(shí)鐘的時(shí)間. (三)振蕩器的選擇 單片機(jī)的系統(tǒng)時(shí)鐘(即主時(shí)鐘)采用電路板原帶的 r
45、c 時(shí)基振蕩器外接阻容器件.在對(duì)于 系統(tǒng)時(shí)鐘精度要求不嚴(yán)格的項(xiàng)目中,采用 rc 振蕩器方式,既可以節(jié)省成本,又使得單片機(jī)具 有更快的啟動(dòng)時(shí)間,在此選擇這種方案并不會(huì)影響電子表的走時(shí)精度,因?yàn)?tmr1 自帶振蕩 器與系統(tǒng)時(shí)鐘振蕩器互相獨(dú)立,其計(jì)數(shù)器的遞增速度完全與系統(tǒng)時(shí)鐘無(wú)關(guān). rc 振蕩頻率隨著電源電壓 vdd,rc 值及工作環(huán)境溫度的變化而變化。同時(shí)由于工藝參數(shù) 的差異,對(duì)不同芯片其振蕩器頻率將不同。另外,當(dāng)外接電容 cext 值較小時(shí),對(duì)振蕩器 頻率的影響更大,當(dāng)然,我們也應(yīng)考慮電阻電容本身的容差對(duì)振蕩器頻率的影響。 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 12 圖 1 rc 振蕩電路 圖 1 所示的
46、是 rc 振蕩電路,如果 rext 低于 2.2k,振蕩器將處于不穩(wěn)定工作狀態(tài), 甚至停振。而 rext 大于 1m時(shí),振蕩器又易受噪聲、濕度、漏電流的干擾。因此,電阻 rext 取值最好在 3k100k 范圍內(nèi)。在不接外部電容時(shí),振蕩器仍可工作,但為了抗 干擾及保證穩(wěn)定性,建議接 20pf 以上的電容。 pic 單片機(jī)片內(nèi)有一 4 分頻電路,從 osc1/clkin 引腳輸入或 rc 振蕩器產(chǎn)生的振蕩 頻率 fosc 經(jīng) 4 分頻后從 osc2/clkout 引腳輸出 4 分頻信號(hào),該信號(hào)可用于測(cè)試或作為其 它邏輯電路的同步信號(hào)。 1.晶體的選擇 對(duì)于一個(gè)高可靠性的系統(tǒng)設(shè)計(jì),晶體的選擇非常重
47、要,尤其設(shè)計(jì)帶有睡眠喚醒(往往 用低電壓以求低功耗)的系統(tǒng)。這是因?yàn)榈凸╇婋妷菏固峁┙o晶體的激勵(lì)功率減少,造成 晶體起振很慢或根本就不能起振。這一現(xiàn)象在上電復(fù)位時(shí)并不特別明顯,原因時(shí)上電時(shí) 電路有足夠的擾動(dòng),很容易建立振蕩。在睡眠喚醒時(shí),電路的擾動(dòng)要比上電時(shí)小得多, 起振變得很不容易。在振蕩回路中,晶體既不能過(guò)激勵(lì)(容易振到高次諧波上)也不能欠 激勵(lì)(不容易起振)。晶體的選擇至少必須考慮:諧振頻點(diǎn),負(fù)載電容,激勵(lì)功率,溫度 特性,長(zhǎng)期穩(wěn)定性。 2.電容 c1,c2 的選擇 (1)因?yàn)槊恳环N晶振都有各自的特性,所以最好按制造廠商所提供的數(shù)值選擇外部元 器件。 (2)在許可范圍內(nèi),c1,c2 值越
48、低越好。c 值偏大雖有利于振蕩器的穩(wěn)定,但將會(huì)增 加起振時(shí)間。 (3)應(yīng)使 c2 值大于 c1 值,這樣可使上電時(shí),加快晶振起振。 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 13 五、軟件設(shè)計(jì)五、軟件設(shè)計(jì) (一)設(shè)計(jì)思路 對(duì)于 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í)行中斷服務(wù)程序時(shí),都需要給 tmr1 賦一個(gè)初 始值。
49、該值的計(jì)算方法為: tmr1 初始值=1000h-32768=65536-32768=32768=0080h 因此,tmr1 的初始值是 80h,tmr1 的初始值是 00h,這樣就可以保證,在自帶振蕩 器每產(chǎn)生 32768 個(gè)方波,tmr1 就溢出一次。 (二)設(shè)計(jì)中兩種情況產(chǎn)生的中斷 1. portb 端口最高的 4 個(gè)引腳(rb7rb4)在設(shè)為輸入模式時(shí),當(dāng)輸入電平由高到低或 由低到高發(fā)生變化時(shí),可以讓單片機(jī)產(chǎn)生中斷。這就是通常所說(shuō)的引腳狀態(tài)變化中斷。 中斷控制寄存器 intcon 的位 0 即 rbif 是端口 rb 的引腳 rb4rb7 電平變化中斷標(biāo)志位, 當(dāng)其為 1 時(shí),rb4r
50、b7 引腳已經(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)變化的硬件信號(hào),以便順利清除 rbif 標(biāo)志位,為下一次中 斷做好準(zhǔn)備。二是,由于端口 portb 是引腳電子變化中斷,即無(wú)論引腳出現(xiàn)上升沿還是 下降沿都會(huì)產(chǎn)生中斷請(qǐng)求,所以必須處理好不需要的虛假中斷。三是,一般都利用 pic 單片機(jī)
51、的引腳功能來(lái)檢測(cè)按鍵,所以必須處理好按鍵消抖的問(wèn)題。 引腳中斷程序設(shè)計(jì): (1) 在主程序里先設(shè)置有關(guān)的寄存器。 設(shè)置 trisb 寄存器,使 rb7rb4 相關(guān)的引腳處于輸入狀態(tài); 如果需要弱上拉,通過(guò) option_reg 的第 7 位設(shè)置; bcf intcon ,rbif xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 14 bsf intcon ,rbie bsf intcon ,gie (2)響應(yīng)狀態(tài)變化后的中斷服務(wù)程序。 檢查 rbif 是否為 l,為 l 則是引腳變化引起的中斷; 調(diào)用按鍵處理程序; 清除 rbif 標(biāo)志。 2. 由定時(shí)器/計(jì)數(shù)器 tmr1 產(chǎn)生中斷。當(dāng)?shù)?1 外圍設(shè)備中斷標(biāo)志寄存器
52、 pir1 的位 0(tmr1if)即定時(shí)器/計(jì)數(shù)器 tmr1 模塊溢出中斷標(biāo)志位為 1 時(shí),tmr1 溢出。用軟件清 0,然后執(zhí)行相應(yīng)程序,最后返回。 tmr1 中斷程序設(shè)計(jì): (1)在程序里先設(shè)置有關(guān)的寄存器 movlw 80h ;設(shè)置為 1s 溢初始值 movwf tmr1h clrf tmr1l clrf intcon (2)狀態(tài)變化后的中斷服務(wù)程序。 檢查 tmr1ie 是否為 1,為 1 則是 tmr1 發(fā)生溢出產(chǎn)生的中斷; bcf pir1,tmr1if ;軟件清 0 movlw 80h ,movwf tmr1h ;對(duì) tmr1 裝載初始值 (三)中斷的現(xiàn)場(chǎng)保護(hù)和恢復(fù)問(wèn)題: 中斷
53、現(xiàn)場(chǎng)的保護(hù)是中斷技術(shù)中一個(gè)很重要的環(huán)節(jié)。在進(jìn)入中斷服務(wù)程序期間,只有 返回地址,即程序計(jì)數(shù)器 pc 的值被自動(dòng)壓入堆棧。若需要保留其他寄存器的內(nèi)容,就得 另想辦法。由于 pic 單片機(jī)的指令系統(tǒng)中沒(méi)有像其他單片機(jī)那樣的 push(入棧)和 pop(出棧)之類的指令,所以要用 1 段用戶程序來(lái)實(shí)現(xiàn)類似的功能。因?yàn)槭怯?1 段程序 來(lái)實(shí)現(xiàn)現(xiàn)場(chǎng)保護(hù),而程序的執(zhí)行有可能會(huì)影響到 w 寄存器和 status 寄存器,所以,首先 應(yīng)該把這 2 個(gè)寄存器保護(hù)起來(lái),然后再去保存其他用戶認(rèn)為有必要保護(hù)的寄存器。并且 在 pic 單片機(jī)中,中斷現(xiàn)場(chǎng)數(shù)據(jù)不是保留到芯片的堆棧存儲(chǔ)區(qū)中,而是保留在用戶自己 選擇的一些文
54、件寄存器(即 ram 數(shù)據(jù)存儲(chǔ)器單元)中,當(dāng)然一般應(yīng)該選擇通用寄存器來(lái) 保護(hù)現(xiàn)場(chǎng)。 ;保護(hù)現(xiàn)場(chǎng)程序 1movwf w_temp ;復(fù)制 w 到它的臨時(shí)備份寄存器 w_temp 中 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 15 2swapf status,w ;將 status 寄存器高低半字節(jié)交換后放入 w 3clrf status ;不管當(dāng)前處在哪個(gè)體,都設(shè)置體 0 作當(dāng)前體 4movwf status_temp ;保存 status 到體 0 上的臨時(shí)寄存器 status_temp 5swapf status_temp,w ;將 status_temp 寄存器高低半字節(jié)交換后放入 w ;恢復(fù)現(xiàn)場(chǎng)程序 6
55、movwf status ;把 w 內(nèi)容移動(dòng)到 status 寄存器, (同時(shí)也把當(dāng)前體恢復(fù) 到原先的體上) 7swapfw_temp,f ;將 w_temp 內(nèi)容高低半字節(jié)交換后放回 8swapfw_temp,w ;再次將 w_temp 內(nèi)容高低半字節(jié)交換后放入 w 六、總結(jié)六、總結(jié) 本系統(tǒng)完成了簡(jiǎn)易電子表的制作,led 數(shù)碼管能夠準(zhǔn)確無(wú)誤的進(jìn)行實(shí)時(shí)時(shí)間的顯示, 并能實(shí)現(xiàn)時(shí)間可調(diào)功能。在此設(shè)計(jì)中,單片機(jī)的系統(tǒng)時(shí)鐘采用電路板原帶的 rc 時(shí)基振蕩 器外接阻容器件并采納 rc 振蕩器方式,既節(jié)省成本,又使得單片機(jī)具有更快的啟動(dòng)時(shí)間, 也不會(huì)影響時(shí)鐘振蕩器互相獨(dú)立,其計(jì)數(shù)器的遞增速度完全與系統(tǒng)時(shí)鐘
56、無(wú)關(guān)。這樣就使 整個(gè)系統(tǒng)簡(jiǎn)潔,可靠性高,性能穩(wěn)定,本系統(tǒng)達(dá)到了設(shè)計(jì)的基本要求和發(fā)揮部分的要求。 經(jīng)過(guò)本次設(shè)計(jì),我對(duì) pic16f877 單片機(jī)的應(yīng)用和其芯片功能有了更深層次的理解。 單片機(jī)的實(shí)踐性很強(qiáng),自己實(shí)際動(dòng)手,實(shí)際體驗(yàn)其開(kāi)發(fā)過(guò)程,這是至關(guān)重要的。在這次 設(shè)計(jì)中還有欠缺的方面,我在今后的學(xué)習(xí)工作中會(huì)加以注意。 七、致謝七、致謝 這次畢業(yè)學(xué)位論文是在我的指導(dǎo)老師汪光宅老師的親切關(guān)懷和悉心指導(dǎo)下完成的。 他嚴(yán)肅的科學(xué)態(tài)度,嚴(yán)謹(jǐn)?shù)闹螌W(xué)精神,精益求精的工作作風(fēng),深深地感染和激勵(lì)著我。 從課題的選擇到項(xiàng)目的最終完成,汪老師都始終給予我細(xì)心的指導(dǎo)和不懈的支持。幾個(gè) 月來(lái),汪老師不僅在學(xué)業(yè)上給予我精心的
57、指導(dǎo),同時(shí)還在思想上給予我無(wú)微不至的關(guān)懷, 在此謹(jǐn)向汪老師致以誠(chéng)摯的謝意和崇高的敬意。 在此,我還要感謝在一起度過(guò)愉快的大學(xué)生活的各位室友以及班級(jí)里的各位同學(xué), 正是由于你們的幫助和支持,我才能克服一個(gè)一個(gè)的困難和疑惑,直至設(shè)計(jì)的順利完成。 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 16 在論文即將完成之際,我的心情無(wú)法平靜,從開(kāi)始進(jìn)入課題到論文的順利完成,有 多少可敬的師長(zhǎng)、同學(xué)、朋友給了我無(wú)言的幫助,在這里請(qǐng)接受我誠(chéng)摯的謝意!最后我還 要感謝培養(yǎng)我長(zhǎng)大含辛茹苦的父母,謝謝你們! 附錄一附錄一 電子表的硬件電路原理圖電子表的硬件電路原理圖 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 17 附錄二附錄二 匯編程序流程匯編程序流
58、程 1. 主程序流程圖 向 tmr1 賦 1s 溢出初始 值 清出全部中斷標(biāo)志位及其使能位 設(shè)置體 1 為當(dāng)前體 清除所有外設(shè)中斷使能位 設(shè)置 d 口、a 口為輸出 c 口為輸出、rc0 腳為輸入 定義 a 口所有相關(guān)引腳為普通數(shù)字 i/o 腳 關(guān)閉 tmr1 設(shè)置 b 口高四位為輸入、低四位輸 出 使能 tmr1 體 0 為當(dāng)前體,開(kāi)放全局中斷和外設(shè)、rb 電平變化產(chǎn)生的中斷 主程序 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 18 2. 中斷服務(wù)子程序流程圖 儀 否 是 員 否 是 是 否 是 否 對(duì) a 口、b 口、d 口賦初始值 設(shè)置控制寄存器預(yù)分頻比為 1:1,外部時(shí)鐘源、異步使能振蕩器 時(shí)鐘清 0
59、計(jì)時(shí)子程序 顯示子程序 中斷服務(wù)子程序 serv 保護(hù)現(xiàn)場(chǎng) w、status 調(diào)查中斷源 是其他 情況引 起的錯(cuò) 誤操作, 則不作 任何處 理,恢 復(fù)現(xiàn)場(chǎng) 子程序 retfie0 是 tmr1 模 塊溢出中斷 是 rb 電平變化產(chǎn)生的中斷 清除 tmr1 溢 出中斷標(biāo)志位 對(duì) tmr1 裝載初始值 秒個(gè)位自加 1 計(jì)時(shí)、顯示轉(zhuǎn)換 寄存器位 0 置 1 恢復(fù)現(xiàn)場(chǎng)子 程序 retfie1 rb 中斷處理程序 tmr1 溢出中斷處理程序 清除 rb 中斷標(biāo)志位關(guān)閉 tmr1 測(cè)試 rb 位 4 控制按鍵是否按下 調(diào)用延時(shí)子程序 delay1 再次測(cè)試 rb 位 4 控 制按鍵是否按下 轉(zhuǎn)分個(gè)位修改子
60、 程序 rb4serv 恢復(fù)現(xiàn)場(chǎng)子程序 retfie0 測(cè)試 rb 位 5 控制按鍵是否按下 調(diào)用延時(shí)子 程序 delay1 測(cè)試 rb 位 6 控制 按鍵是否 按下 xxx 大學(xué)本科畢業(yè)設(shè)計(jì) 19 否 是 是 否 是 否 是 否 是 3. 時(shí)間顯示子程序流程圖 返回 再次測(cè)試 rb 位 5 控制按鍵是否按 下 轉(zhuǎn)分十位修改子程序 rb5serv 延時(shí)子程序 delay1 再次測(cè)試 rb 位 6 控 制按鍵是否按下 轉(zhuǎn)時(shí)個(gè)位修改子程序 rb6serv 測(cè)試 rb 位 7 控制按鍵是否按下 延時(shí)子程序 delay1 再次測(cè)試 rb 位 7 控制按鍵是否按 下 轉(zhuǎn)時(shí)十位修改子 程序 rb7serv
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版外資企業(yè)會(huì)計(jì)人員聘用與管理服務(wù)協(xié)議3篇
- 二零二五年環(huán)境治理?yè)?dān)保合同標(biāo)的屬性與實(shí)施3篇
- 二零二五年度農(nóng)產(chǎn)品批發(fā)市場(chǎng)合作協(xié)議書(shū)4篇
- 2025年湛江貨運(yùn)從業(yè)資格證怎么考
- 二零二五版?zhèn)€體工商戶雇工勞動(dòng)合同(文創(chuàng)產(chǎn)業(yè)專用)3篇
- 2025年度智能交通設(shè)施安裝與維護(hù)承包合作協(xié)議4篇
- 2025年度智慧家居蟲(chóng)害預(yù)防與治理服務(wù)合同4篇
- 二零二五版國(guó)際法律服務(wù)機(jī)構(gòu)員工外派協(xié)議3篇
- 2025年度健康醫(yī)療大數(shù)據(jù)應(yīng)用合并合作協(xié)議4篇
- 二零二五年度年會(huì)場(chǎng)地租賃專項(xiàng)合同5篇
- 2024年高純氮化鋁粉體項(xiàng)目可行性分析報(bào)告
- 安檢人員培訓(xùn)
- 山東省濰坊市2024-2025學(xué)年高三上學(xué)期1月期末 英語(yǔ)試題
- 危險(xiǎn)性較大分部分項(xiàng)工程及施工現(xiàn)場(chǎng)易發(fā)生重大事故的部位、環(huán)節(jié)的預(yù)防監(jiān)控措施
- 《榜樣9》觀后感心得體會(huì)四
- 2023事業(yè)單位筆試《公共基礎(chǔ)知識(shí)》備考題庫(kù)(含答案)
- 化學(xué)-廣東省廣州市2024-2025學(xué)年高一上學(xué)期期末檢測(cè)卷(一)試題和答案
- 2025四川中煙招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營(yíng)銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國(guó)蛋糕行業(yè)市場(chǎng)規(guī)模及發(fā)展前景研究報(bào)告(智研咨詢發(fā)布)
評(píng)論
0/150
提交評(píng)論