2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p><b>  摘要1</b></p><p><b>  第一章 緒論2</b></p><p>  第二章 方案設(shè)計(jì)與論證3</p><p>  一 外部環(huán)境明暗的檢測單元3</p><p&

2、gt;  二 路況的檢測單元3</p><p>  三 處理器的選擇3</p><p>  第三章 硬件設(shè)計(jì)4</p><p>  一 80C51單片機(jī)硬件結(jié)構(gòu)4</p><p><b>  1 微處理器4</b></p><p><b>  2 數(shù)據(jù)存儲器4</b&g

3、t;</p><p><b>  3 程序存儲器4</b></p><p><b>  4 中斷系統(tǒng)5</b></p><p>  5 定時器/計(jì)數(shù)器5</p><p><b>  6 串行口5</b></p><p>  7 特殊功能寄存器5

4、</p><p>  二 最小應(yīng)用系統(tǒng)設(shè)計(jì)5</p><p><b>  1 時鐘電路6</b></p><p><b>  2 復(fù)位電路6</b></p><p>  3 通用的晶振電路7</p><p><b>  三 顯示電路8</b>&

5、lt;/p><p>  四 LED燈電路構(gòu)成9</p><p>  第四章 軟件設(shè)計(jì)12</p><p>  一 主程序設(shè)計(jì)12</p><p>  二 延時子程序設(shè)計(jì)14</p><p>  三 按鍵掃描子程序設(shè)計(jì)14</p><p>  四 中斷子程序設(shè)計(jì)15</p>

6、<p>  五 顯示子程序16</p><p>  六 聲光報(bào)警子程序19</p><p>  七 交通情況檢測子程序20</p><p>  八 路燈控制子程序設(shè)計(jì)21</p><p><b>  參考文獻(xiàn):24</b></p><p><b>  附錄:25&l

7、t;/b></p><p>  附1:元器件明細(xì)表:25</p><p>  附2:儀器設(shè)備清單25</p><p>  附3:電路圖圖紙26</p><p>  附4:程序清單26</p><p><b>  摘要</b></p><p>  STC89C5

8、2RC單片機(jī)是一款八位單片機(jī),他的易用性和多功能性受到了廣大使用者的好評。本系統(tǒng)以畢業(yè)設(shè)計(jì)的題目要求為目的,采用8051單片機(jī)為控制核心,利用光電傳感器出檢測環(huán)境的明暗變化以及路燈的工作狀態(tài),利用對射式紅外線檢測交通的情況,通過在硬件的基礎(chǔ)上進(jìn)行編程,利用軟件達(dá)到路燈模擬系統(tǒng)的支路控制器有時鐘功能,能設(shè)定、顯示開關(guān)燈時間,并控制整條支路按時開燈和關(guān)燈;支路控制器能根據(jù)環(huán)境明暗變化,自動開燈和關(guān)燈;支路控制器能根據(jù)交通情況自動調(diào)節(jié)亮燈狀態(tài)

9、;支路控制器能分別獨(dú)立控制每只路燈的開燈和關(guān)燈時間;當(dāng)路燈出現(xiàn)故障時(燈不亮),支路控制器發(fā)出聲光報(bào)警信號,并顯示有故障路燈的地址編號。整個系統(tǒng)的電路結(jié)構(gòu)簡單,可靠性能高。實(shí)驗(yàn)測試結(jié)果滿足要求。</p><p><b>  采用的技術(shù)主要有:</b></p><p>  通過編程來路燈的狀態(tài)。</p><p><b>  傳感器的有效

10、應(yīng)用;</b></p><p>  新型顯示芯片的采用.</p><p>  關(guān)鍵詞:STC89C52RC單片機(jī) 光電傳感器 紅外傳感器</p><p><b>  Abstract</b></p><p>  STC89C52RC monolithic integrated circuits is one

11、 of eight monolithic integrated circuits, his ease and functional by the user's. this graduation design system to the subject of the requirements for the purpose of a monolithic integrated circuits to control the 805

12、1,Photo electric sensors to the detection of the environment and the work of the state to shoot in the traffic in the infrared detected by the hardware on the basis of programming,Used software to the system of control i

13、s the way, can s</p><p>  Keyword: STC89C52RC Photo electric sensors Infrared sensors</p><p><b>  第一章 緒論</b></p><p>  隨著交通行業(yè)的迅速發(fā)展,與之相關(guān)的一系列智能設(shè)備的研究也就越來越受人關(guān)注。本設(shè)計(jì)就是以這樣的形勢為背

14、景提出來的,以此以它作為自己的畢業(yè)設(shè)計(jì),具有很現(xiàn)實(shí)的實(shí)用意義。此次的畢業(yè)設(shè)計(jì)結(jié)合現(xiàn)在社會的實(shí)際需要,從而達(dá)到學(xué)以致用,服務(wù)于人民的效果!根據(jù)實(shí)際需要,設(shè)計(jì)的路燈模擬控制系統(tǒng)應(yīng)該具有支路控制器有時鐘功能,能設(shè)定、顯示開關(guān)燈時間,并控制整條支路按時開燈和關(guān)燈;支路控制器能根據(jù)環(huán)境明暗變化,自動開燈和關(guān)燈;支路控制器能根據(jù)交通情況自動調(diào)節(jié)亮燈狀態(tài);支路控制器能分別獨(dú)立控制每只路燈的開燈和關(guān)燈時間;當(dāng)路燈出現(xiàn)故障時(燈不亮),支路控制器發(fā)出聲光

15、報(bào)警信號,并顯示有故障路燈的地址編號。</p><p>  根據(jù)畢業(yè)設(shè)計(jì)的題目要求,現(xiàn)確定如下方案:以單片機(jī)最小系統(tǒng)為控制核心;然后加裝光電傳感器、紅外傳感、實(shí)現(xiàn)對路燈的控制以及交通情況的信息采集,并將測量數(shù)據(jù)傳送至單片機(jī)進(jìn)行處理,然后由單片機(jī)根據(jù)所檢測的各種數(shù)據(jù)實(shí)現(xiàn)對路燈的智能控制。</p><p>  這種方案能實(shí)現(xiàn)對路燈狀態(tài)進(jìn)行實(shí)時控制,控制靈活、可靠,精度高,可滿足對系統(tǒng)的各項(xiàng)要求

16、。本設(shè)計(jì)采用MCS-51系列中的 STC89C52RC單片機(jī)。STC89C52RC是一款八位單片機(jī),它的易用性和多功能性受到了廣大使用者的好評。它是第三代單片機(jī)的代表。</p><p>  第三代單片機(jī)包括了Intel公司發(fā)展MCS-51系列的新一代產(chǎn)品,如8xC152﹑80C51FA/FB﹑80C51GA/GB﹑8xC451﹑8xC452,還包括了Philips﹑Siemens﹑ADM﹑Fujutsu﹑OKI﹑

17、Harria-Metra﹑ATMEL等公司以80C51為核心推出的大量各具特色﹑與80C51兼容的單片機(jī)。新一代的單片機(jī)的最主要的技術(shù)特點(diǎn)是向外部接口電路擴(kuò)展,以實(shí)現(xiàn)Microcomputer完善的控制功能為己任,將一些外部接口功能單元如A/D﹑PWM﹑PCA(可編程計(jì)數(shù)器陣列)﹑WDT(監(jiān)視定時器)﹑高速I/O口﹑計(jì)數(shù)器的捕獲/比較邏輯等。這一代單片機(jī)中,在總線方面最重要的進(jìn)展是為單片機(jī)配置了芯片間的串行總線,為單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)提供

18、了更加靈活的方式。Philips公司還為這一代單片機(jī)80C51系列8xC592單片機(jī)引入了具有較強(qiáng)功能的設(shè)備間網(wǎng)絡(luò)系統(tǒng)總線----CAN(Controller Area Network BUS).</p><p>  本設(shè)計(jì)就采用了比較先進(jìn)的80C51為控制核心,80C51采用CHOMS工藝,功耗很低。該設(shè)計(jì)具有實(shí)際意義,可以應(yīng)用于考古、機(jī)器人、醫(yī)療器械等許多方面。尤其是在足球機(jī)器人研究方面具有很好的發(fā)展前景;在

19、考古方面也應(yīng)用到了超聲波傳感器進(jìn)行檢測。所以本設(shè)計(jì)與實(shí)際相結(jié)合,現(xiàn)實(shí)意義很強(qiáng)。</p><p>  第二章 方案設(shè)計(jì)與論證</p><p>  根據(jù)題目的要求,確定如下方案:利用光電傳感器和紅外傳感器進(jìn)行外部路燈狀態(tài)和交通狀態(tài)的信息收集,然后將收集的數(shù)據(jù)傳送至單片機(jī)進(jìn)行處理,然后由單片機(jī)根據(jù)所檢測的各種數(shù)據(jù)實(shí)現(xiàn)對路燈的智能控制。</p><p>  這種方案能實(shí)現(xiàn)對

20、路燈的工作進(jìn)行實(shí)時控制,控制靈活、可靠,精度高,可滿足對系統(tǒng)的各項(xiàng)要求。</p><p>  一 外部環(huán)境明暗的檢測單元</p><p>  方案一:采用光敏二極管感受外屆光照變化,無光照時,有很小的飽和反向漏電流,二極管截止;光照時反向電流增大,形成光電流。</p><p>  方案二:采用光敏電阻對光源的感應(yīng)改變自身電阻,由電壓比較器提取之間電壓,考慮到電阻變化

21、的靈敏度,采用兩個光敏電阻串聯(lián)的方式,通過改變與光敏電阻串聯(lián)的電位器的值可以調(diào)節(jié)光敏電阻的感光范圍。</p><p>  考慮到現(xiàn)實(shí)中聲光控制技術(shù)的運(yùn)用已經(jīng)證明了光敏電阻完全可以達(dá)到要求,且價格便宜,電路簡單。綜合考慮以上方案采用光敏電阻。</p><p><b>  二 路況的檢測單元</b></p><p>  方案一、采用攝像頭或探測頭收

22、集路面上信息。用這種方法,對路面信息處理準(zhǔn)確,但是成本過高,數(shù)據(jù)處理量大,對硬、軟件的要求都非常高,短時間內(nèi)難以實(shí)現(xiàn)。</p><p>  方案二:使用反射式紅外二極管和接收管組成發(fā)射-接收器。由于紅外光波長比可見光長,因此受可見光的影響比較小,同時,紅外對管還具有以下優(yōu)點(diǎn):質(zhì)量輕,靈敏度高,線性好,接口電路比較簡單,安裝方便,足夠滿足對本系統(tǒng)中物體檢測的要求?;谝陨显?,選用了成本較低的方案二。</p&

23、gt;<p><b>  三 處理器的選擇 </b></p><p>  單片機(jī)STC89C52RC作為模擬路燈控制系統(tǒng)的核心。STC89C52RC 具有許多優(yōu)點(diǎn):RAM,ROM空間大、指令周期短、運(yùn)算速度快、低功耗、低電壓、可編程音頻處理,易于編程和調(diào)試。本題要求支路控制器有聲光報(bào)警功能,由此看來單片機(jī)STC89C52RC更具有優(yōu)越性。</p><p>

24、;<b>  第三章 硬件設(shè)計(jì)</b></p><p>  一個單片機(jī)應(yīng)用系統(tǒng)的硬件電路設(shè)計(jì)包含有兩部分內(nèi)容:一是系統(tǒng)擴(kuò)展,即單片機(jī)內(nèi)部的功能單元,如ROM﹑RAM﹑I/O口﹑定時/記數(shù)器﹑中斷系統(tǒng)等能量不能滿足應(yīng)用系統(tǒng)的要求時,必須在片外進(jìn)行擴(kuò)展,選擇適當(dāng)?shù)男酒?,設(shè)計(jì)相應(yīng)的電路。二是系統(tǒng)配置,既按照系統(tǒng)功能要求配置外圍設(shè)備,如鍵盤顯示器﹑打印機(jī)﹑A/D﹑D/A轉(zhuǎn)換器等,要設(shè)計(jì)合適的接口電路

25、。</p><p>  一 80C51單片機(jī)硬件結(jié)構(gòu)</p><p>  80C51單片機(jī)是把那些作為控制應(yīng)用所必需的基本內(nèi)容都集成在一個尺寸有限的集成電路芯片上[2]。如果按功能劃分,它由如下功能部件組成,即微處理器、數(shù)據(jù)存儲器、程序存儲器、并行I/O口、串行口、定時器/計(jì)數(shù)器、中斷系統(tǒng)及特殊功能寄存器。它們都是通過片內(nèi)單一總線連接而成,其基本結(jié)構(gòu)依舊是CPU加上外圍芯片的傳統(tǒng)結(jié)構(gòu)模式。

26、但對各種功能部件的控制是采用特殊功能寄存器的集中控制方式。</p><p><b>  1 微處理器</b></p><p>  該單片機(jī)中有一個8位的微處理器,與通用的微處理器基本相同,同樣包括了運(yùn)算器和控制器兩大部分,只是增加了面向控制的處理功能,不僅可處理數(shù)據(jù),還可以進(jìn)行位變量的處理。</p><p><b>  2 數(shù)據(jù)存儲器

27、</b></p><p>  片內(nèi)為128個字節(jié),片外最多可外擴(kuò)至64k字節(jié),用來存儲程序在運(yùn)行期間的工作變量、運(yùn)算的中間結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位等,所以稱為數(shù)據(jù)存儲器。</p><p><b>  3 程序存儲器</b></p><p>  由于受集成度限制,片內(nèi)只讀存儲器一般容量較小,如果片內(nèi)的只讀存儲器的容量不夠,則需用擴(kuò)

28、展片外的只讀存儲器,片外最多可外擴(kuò)至64k字節(jié)。</p><p><b>  4 中斷系統(tǒng)</b></p><p>  具有5個中斷源,2級中斷優(yōu)先權(quán)。</p><p><b>  5 定時器/計(jì)數(shù)器</b></p><p>  片內(nèi)有2個16位的定時器/計(jì)數(shù)器, 具有四種工作方式。</p&g

29、t;<p><b>  6 串行口</b></p><p>  1個全雙工的串行口,具有四種工作方式。可用來進(jìn)行串行通訊,擴(kuò)展并行I/O口,甚至與多個單片機(jī)相連構(gòu)成多機(jī)系統(tǒng),從而使單片機(jī)的功能更強(qiáng)且應(yīng)用更廣。</p><p>  7 P1口、P2口、P3口、P4口</p><p>  為4個并行8位I/O口。</p>

30、<p><b>  7 特殊功能寄存器</b></p><p>  共有21個,用于對片內(nèi)的個功能的部件進(jìn)行管理、控制、監(jiān)視。實(shí)際上是一些控制寄存器和狀態(tài)寄存器,是一個具有特殊功能的RAM區(qū)。</p><p>  由上可見,80C51單片機(jī)的硬件結(jié)構(gòu)具有功能部件種類全,功能強(qiáng)等特點(diǎn)。特別值得一提的是該單片機(jī)CPU中的位處理器,它實(shí)際上是一個完整的1位微計(jì)算

31、機(jī),這個一位微計(jì)算機(jī)有自己的CPU、位寄存器、I/O口和指令集。1位機(jī)在開關(guān)決策、邏輯電路仿真、過程控制方面非常有效;而8位機(jī)在數(shù)據(jù)采集,運(yùn)算處理方面有明顯的長處。MCS-51單片機(jī)中8位機(jī)和1位機(jī)的硬件資源復(fù)合在一起,二者相輔相承,它是單片機(jī)技術(shù)上的一個突破,這也是MCS-51單片機(jī)在設(shè)計(jì)的精美之處。</p><p>  二 最小應(yīng)用系統(tǒng)設(shè)計(jì)</p><p>  80C51是片內(nèi)有ROM

32、/EPROM的單片機(jī),因此,這種芯片構(gòu)成的最小系統(tǒng)簡單﹑可靠。用80C51單片機(jī)構(gòu)成最小應(yīng)用系統(tǒng)時,只要將單片機(jī)接上時鐘電路和復(fù)位電路即可,如圖3.1 80C51單片機(jī)最小系統(tǒng)所示。由于集成度的限制,最小應(yīng)用系統(tǒng)只能用作一些小型的控制單元。</p><p><b>  其應(yīng)用特點(diǎn):</b></p><p>  有可供用戶使用的大量I/O口線。</p>&

33、lt;p>  內(nèi)部存儲器容量有限。</p><p>  應(yīng)用系統(tǒng)開發(fā)具有特殊性。</p><p>  圖1 80C51單片機(jī)最小系統(tǒng)</p><p><b>  1 時鐘電路</b></p><p>  80C51雖然有內(nèi)部振蕩電路,但要形成時鐘,必須外部附加電路。80C51單片機(jī)的時鐘產(chǎn)生方法有兩種。內(nèi)部時鐘方式

34、和外部時鐘方式。</p><p>  本設(shè)計(jì)采用內(nèi)部時鐘方式,利用芯片內(nèi)部的振蕩電路,在XTAL1、XTAL2引腳上外接定時元件,內(nèi)部的振蕩電路便產(chǎn)生自激振蕩。本設(shè)計(jì)采用最常用的內(nèi)部時鐘方式,即用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHZ到12MHZ之間選擇。電容值無嚴(yán)格要求,但電容取值對振蕩頻率輸出的穩(wěn)定性、大小、振蕩電路起振速度</p><p>  有少許影響,CX1、

35、CX2可在20pF到100pF之間取值,但在60pF到70pF時振蕩器有較高的頻率穩(wěn)定性。所以本設(shè)計(jì)中,振蕩晶體選擇6MHZ,電容選擇65pF。</p><p>  在設(shè)計(jì)印刷電路板時,晶體和電容應(yīng)盡可能靠近單片機(jī)芯片安裝,以減少寄生電容,更好的保證振蕩器穩(wěn)定和可靠地工作。為了提高溫度穩(wěn)定性,應(yīng)采用NPO電容。</p><p><b>  2 復(fù)位電路</b><

36、/p><p>  80C51的復(fù)位是由外部的復(fù)位電路來實(shí)現(xiàn)的。復(fù)位引腳RST通過一個斯密特觸發(fā)器用來抑制噪聲,在每個機(jī)器周期的S5P2,斯密特觸發(fā)器的輸出電平由復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信號。</p><p>  復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式。</p><p>  最簡單的上電自動復(fù)位電路中上電自動復(fù)位是通過外部復(fù)位電路的電容充

37、電來實(shí)現(xiàn)的。只要Vcc的上升時間不超過1ms,就可以實(shí)現(xiàn)自動上電復(fù)位。時鐘頻率用6MHZ時C取22uF,R取1KΩ。</p><p>  除了上電復(fù)位外,有時還需要按鍵手動復(fù)位。本設(shè)計(jì)就是用的按鍵手動復(fù)位。按鍵手動復(fù)位</p><p>  有電平方式和脈沖方式兩種。其中電平復(fù)位是通過RST端經(jīng)電阻與電源Vcc接通而實(shí)現(xiàn)的。按鍵手動復(fù)位電路見圖3.2。時鐘頻率選用6MHZ時,C取22uF,R

38、s取200Ω,RK取1KΩ。</p><p>  圖2 80C51復(fù)位電路</p><p><b>  3 通用的晶振電路</b></p><p>  單片機(jī)的晶振電路是一種典型電路,分為內(nèi)部時鐘方式和外部時鐘方式兩種。內(nèi)部時鐘方式的電路如圖4所示。</p><p>  圖3 單片機(jī)的內(nèi)部晶振電路</p>

39、<p>  內(nèi)部始終的晶振頻率一般都選擇在4MHz~12MHz之間,外接兩個諧振電容。該電容的典型值為30PF,但是在實(shí)際應(yīng)用時,需要根據(jù)實(shí)際起振情況選擇。</p><p>  如果單片機(jī)的時鐘必須使用某一個外接的時鐘信號,就不要外接晶振。由于此時的外接晶振引腳上沒有晶振信號輸入,內(nèi)部的時鐘電路將停振。這種方式稱為外部時鐘方式。圖5給出了兩種外部時鐘的電路,可以根據(jù)不同的單片機(jī)型號選擇不同的電路。&l

40、t;/p><p>  HMOS型單片機(jī) CHMOS型單片機(jī)</p><p>  圖4 單片機(jī)的外部晶振電路</p><p><b>  三 顯示電路</b></p><p>  本設(shè)計(jì)中用兩片7位八段數(shù)碼管gem4561ae作顯示器,并具有雙重功能,在一般情況下,七段

41、數(shù)碼管進(jìn)行年.月.日,時.分.秒的顯示,當(dāng)路燈出現(xiàn)故障時,顯示故障路燈的編號。</p><p>  本設(shè)計(jì)中采用新型芯片EM78P458作為顯示驅(qū)動器,它的管腳如EM78P458管腳介紹所示,用單片機(jī)的并行口控制,一個數(shù)碼顯示電路用4個口線,用專用驅(qū)動芯片控制可以減少對CPU的利用時間,單片機(jī)將有更多的時間去完成其他功能.</p><p>  該芯片共有20個管腳,管腳 LED1﹑LED2

42、﹑LED3﹑LED4分別接10k電阻和</p><p><b>  圖5</b></p><p>  三極管后與4位八段數(shù)碼管5461中的a1﹑a2﹑a3﹑a4四個數(shù)位選擇端相連,這四個數(shù)位選擇端用來產(chǎn)生LED選通信號。</p><p>  管腳a﹑b﹑c﹑d﹑e﹑f﹑g﹑dp分別接680歐電阻后與四位八段數(shù)碼管5461中的a﹑b﹑c﹑d﹑e﹑

43、f﹑g﹑dp相連,分別控制各段碼和小數(shù)點(diǎn)。</p><p>  管腳d0﹑d1﹑d2﹑d3接單片機(jī)并行口,通過對單片機(jī)對芯片進(jìn)行控制。管腳vss串上10k電阻后與vcc管腳相接后再接+5v電源,管腳gnd接地。</p><p>  該芯片所驅(qū)動的顯示電路如圖3.6 EM78P458集成顯示電路所示</p><p>  顯示驅(qū)動器支持動態(tài)顯示,其顯示功能如表4.2真值

44、表所示,0000-1001顯示從0-9數(shù)字,1010是未進(jìn)位時是小數(shù)點(diǎn)清位,1011是進(jìn)位后加小數(shù)點(diǎn),1100-1111是八段共陰數(shù)碼管的位選。</p><p><b>  表1真值表</b></p><p>  四 LED燈電路構(gòu)成</p><p>  LED的內(nèi)在特征決定了它是最理想的光源去代替?zhèn)鹘y(tǒng)的光源,它有著廣泛的用途。體積小 ,LED

45、基本上是一塊很小的晶片被封裝在環(huán)氧樹脂里面,所以它非常的小,非常的輕。耗電量低,LED耗電非常低,一般來說LED的工作電壓是2-3.6V。工作電流是0.02-0.03A。這就是說:它消耗的電不超過0.1W。燈體內(nèi)也沒有松動的部分,這些特點(diǎn)使得LED可以說是不易損壞的。</p><p>  LED路燈的電路圖如下所示:</p><p><b>  圖6</b></

46、p><p>  五 蜂鳴器發(fā)生及LED指示燈電路</p><p>  蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時器等電子產(chǎn)品中作發(fā)聲器件。 ;蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。而我們用的是壓電式蜂鳴器,圖如上所示,當(dāng)我們是pnp三極管工作在飽和狀態(tài)時,三極管輸出低電平,反之三級管輸出高電平

47、,使得蜂鳴器發(fā)出聲音。</p><p><b>  圖7</b></p><p><b>  六 直流穩(wěn)壓電路</b></p><p>  三端集成穩(wěn)壓電路,這是一種集成電路的穩(wěn)壓電路,其功能是穩(wěn)定直流輸出電壓。這種集成電路只有三根引腳,使用很方便,在許多場合都有著廣泛應(yīng)用。穩(wěn)壓電路的作用是使得輸出的直流電壓在電網(wǎng)電壓或負(fù)

48、載電流發(fā)生變化時保持穩(wěn)定。它由電源變壓器、整流電路、濾波電路、穩(wěn)壓電路等4部分組成的。變壓器的作用是將交流市電變換成所需要的交流電壓;整流電路的作用是將交流電變換成單向脈動直流電;濾波電路的作用是將脈動電壓中的脈動成分去掉,輸出比較平滑的直流電壓;穩(wěn)壓電路的作用是使得輸出的直流電壓在電網(wǎng)電壓或負(fù)載電流發(fā)生變化時保持穩(wěn)定</p><p><b>  圖8</b></p><

49、p><b>  第四章 軟件設(shè)計(jì)</b></p><p><b>  系統(tǒng)軟件設(shè)計(jì)說明:</b></p><p>  在進(jìn)行微機(jī)控制系統(tǒng)設(shè)計(jì)時,除了系統(tǒng)硬件設(shè)計(jì)外,大量的工作就是如何根據(jù)每個生產(chǎn)對象的實(shí)際需要設(shè)計(jì)應(yīng)用程序。因此,軟件設(shè)計(jì)在微機(jī)控制系統(tǒng)設(shè)計(jì)中占重要地位。對于本系統(tǒng),軟件更為重要。</p><p>  在

50、單片機(jī)控制系統(tǒng)中,大體上可分為數(shù)據(jù)處理、過程控制兩個基本類型。數(shù)據(jù)處理包括:數(shù)據(jù)的采集、數(shù)字濾波、標(biāo)度變換等。過程控制程序主要是使單片機(jī)按一定的方法進(jìn)行計(jì)算,然后再輸出,以便控制生產(chǎn)。</p><p>  為了完成上述任務(wù),在進(jìn)行軟件設(shè)計(jì)時,通常把整個過程分成若干個部分,每一部分叫做一個模塊。所謂“模塊”,實(shí)質(zhì)上就是所完成一定功能,相對獨(dú)立的程序段,這種程序設(shè)計(jì)方法叫模塊程序設(shè)計(jì)法。</p><

51、;p>  模塊程序設(shè)計(jì)法的主要優(yōu)點(diǎn)是:</p><p>  單個模塊比起一個完整的程序易編寫及調(diào)試;</p><p>  模塊可以共存,一個模塊可以被多個任務(wù)在不同條件下調(diào)用;</p><p>  模塊程序允許設(shè)計(jì)者分割任務(wù)和利用已有程序,為設(shè)計(jì)者提供方便。</p><p>  本系統(tǒng)軟件采用模塊化結(jié)構(gòu),由主程序﹑延時子程序、按鍵掃描子

52、程序﹑中斷子程序顯示子程序﹑顯示子程序﹑外部環(huán)境檢測子程序,調(diào)試子程序子程序構(gòu)成。</p><p>  一 主程序設(shè)計(jì) </p><p>  路燈模擬系統(tǒng)主程序清單如下:</p><p>  void main()</p><p><b>  {</b></p><p>  init8255(

53、);</p><p>  timer0_init();</p><p><b>  DIR=0; </b></p><p><b>  J1=0;</b></p><p><b>  J2=0;</b></p><p><b>  while(

54、1)</b></p><p><b>  { </b></p><p>  lightcon();</p><p>  baojing_1();</p><p>  baojing_2();</p><p>  display();</p><p>  k

55、eyscan();</p><p>  keydown_if();</p><p>  environment();</p><p>  road_light_control();</p><p><b>  }</b></p><p>  主程序流程圖如下所示:</p><p

56、><b>  圖7</b></p><p><b>  圖9</b></p><p><b>  二 延時子程序設(shè)計(jì)</b></p><p><b>  程序清單如下:</b></p><p>  void delay()//以下是一段大約6ms的延

57、時</p><p><b>  {</b></p><p>  uchar i,j,k;</p><p>  for(i=1;i>0;i--)</p><p>  for(j=2;j>0;j--)</p><p>  for(k=200;k>0;k--);</p>

58、<p><b>  }</b></p><p>  void delay_1()//以下是一段大約防抖的延時</p><p><b>  {</b></p><p>  uchar d,e,f;</p><p>  for(d=10;d>0;d--)</p><p

59、>  for(e=10;e>0;e--)</p><p>  for(f=200;f>0;f--);</p><p><b>  }</b></p><p>  void delay_2()//以下是聲光報(bào)警部分的延時程序</p><p><b>  {</b></p>

60、<p>  uchar ii,jj,kk;</p><p>  for(ii=2;ii>0;ii--)</p><p>  for(jj=50;jj>0;jj--)</p><p>  for(kk=100;kk>0;kk--);</p><p><b>  }</b></p>

61、<p>  三 按鍵掃描子程序設(shè)計(jì)</p><p><b>  程序清單如下:</b></p><p>  void keyscan()</p><p><b>  { </b></p><p>  con8255=0x89; //read 8255 port c<

62、;/p><p>  temp=c8255; //read 8255c low 4</p><p>  key_down=~temp;</p><p>  temp1=temp&0x0f; //key ascii=temp</p><p>  if(temp1!=0x0f)</p><p><b>

63、  {</b></p><p><b>  delay();</b></p><p>  if(temp1==0x07) {key=1,delay_1(),delay_1();} </p><p>  else if(temp1==0x0b) {key=2,delay_1(),delay_1();}</p>&

64、lt;p>  else if(temp1==0x0d) {key=3,delay_1(),delay_1();}</p><p><b>  } </b></p><p>  temp2=temp&0xf0; //key ascii=temp</p><p>  if(temp2!=0xf0)</p><p&g

65、t;<b>  {</b></p><p><b>  delay();</b></p><p>  if(temp2==0xe0) {key=4,delay_1(),delay_1();}</p><p>  else if(temp2==0xd0) {key=5,delay_1(),delay_1();}

66、 </p><p>  else if(temp2==0xb0) {key=6,delay_1(),delay_1();}</p><p>  else if(temp2==0x70) {key=7,delay_1(),delay_1();}</p><p><b>  } </b></p><p><

67、;b>  }</b></p><p><b>  四 中斷子程序設(shè)計(jì)</b></p><p><b>  程序清單如下:</b></p><p>  void timer0_init()</p><p><b>  {</b></p><p

68、>  TMOD=0X01;</p><p>  TH0=(65536-50000)/256;</p><p>  TL0=(65536-50000)%256;</p><p><b>  EA=1;</b></p><p><b>  TR0=1;</b></p><p&g

69、t;<b>  ET0=1;</b></p><p><b>  }</b></p><p>  void close_timer()</p><p><b>  {</b></p><p><b>  EA=0;</b></p><

70、;p><b>  ET0=0;</b></p><p><b>  TR0=0;</b></p><p><b>  }</b></p><p>  void timer0(void) interrupt 1 using 1</p><p><b>  {<

71、;/b></p><p>  TH0=(65536-50000)/256; </p><p>  TL0=(65536-50000)%256;</p><p><b>  scount++;</b></p><p>  if(scount==20)</p><p><b>  {

72、 </b></p><p><b>  scount=0;</b></p><p><b>  second++;</b></p><p>  if(second==60) </p><p><b>  {</b></p><p><b

73、>  second=0;</b></p><p><b>  minute++;</b></p><p><b>  }</b></p><p>  if(minute==60) </p><p><b>  {</b></p><p>

74、;<b>  minute=0;</b></p><p><b>  hour++;</b></p><p><b>  }</b></p><p>  if(hour==24)</p><p><b>  {</b></p><p&g

75、t;<b>  hour=0;</b></p><p><b>  } </b></p><p><b>  }</b></p><p><b>  五 顯示子程序</b></p><p><b>  程序清單如下:</b><

76、;/p><p>  void display()</p><p><b>  {</b></p><p>  b8255=0x40;</p><p>  a8255=table[second/10];</p><p><b>  delay();</b></p>&

77、lt;p>  b8255=0x80;</p><p>  a8255=table[second%10];</p><p><b>  delay();</b></p><p>  b8255=0x10;</p><p>  a8255=table[minute/10];</p><p>&l

78、t;b>  delay();</b></p><p>  b8255=0x20;</p><p>  a8255=table[minute%10];</p><p><b>  delay();</b></p><p>  b8255=0x04;</p><p>  a8255=

79、table[hour/10];</p><p><b>  delay();</b></p><p>  b8255=0x08;</p><p>  a8255=table[hour%10];</p><p><b>  delay();</b></p><p><b&

80、gt;  }</b></p><p>  void display_zong()</p><p><b>  {</b></p><p>  b8255=0x40;</p><p>  a8255=table[0];</p><p><b>  delay();</b&

81、gt;</p><p>  b8255=0x80;</p><p>  a8255=table[0];</p><p><b>  delay();</b></p><p>  b8255=0x10;</p><p>  a8255=table[minute_zong/10];</p>

82、<p><b>  delay();</b></p><p>  b8255=0x20;</p><p>  a8255=table[minute_zong%10];</p><p><b>  delay();</b></p><p>  b8255=0x04;</p>

83、<p>  a8255=table[hour_zong/10];</p><p><b>  delay();</b></p><p>  b8255=0x08;</p><p>  a8255=table[hour_zong%10];</p><p><b>  delay();</b>

84、;</p><p><b>  }</b></p><p>  void display_zong_c()</p><p><b>  {</b></p><p>  b8255=0x40;</p><p>  a8255=table[0];</p><p

85、><b>  delay();</b></p><p>  b8255=0x80;</p><p>  a8255=table[0];</p><p><b>  delay();</b></p><p>  b8255=0x10;</p><p>  a8255=ta

86、ble[minute_zong_c/10];</p><p><b>  delay();</b></p><p>  b8255=0x20;</p><p>  a8255=table[minute_zong_c%10];</p><p><b>  delay();</b></p>

87、<p>  b8255=0x04;</p><p>  a8255=table[hour_zong_c/10];</p><p><b>  delay();</b></p><p>  b8255=0x08;</p><p>  a8255=table[hour_zong_c%10];</p>

88、<p><b>  delay();</b></p><p><b>  }</b></p><p>  void display_zhi_1()</p><p><b>  {</b></p><p>  b8255=0x40;</p><p&

89、gt;  a8255=table[0];</p><p><b>  delay();</b></p><p>  b8255=0x80;</p><p>  a8255=table[0];</p><p><b>  delay();</b></p><p>  b8255

90、=0x10;</p><p>  a8255=table[minute_zhi_1/10];</p><p><b>  delay();</b></p><p>  b8255=0x20;</p><p>  a8255=table[minute_zhi_1%10];</p><p><b

91、>  delay();</b></p><p>  b8255=0x04;</p><p>  a8255=table[hour_zhi_1/10];</p><p><b>  delay();</b></p><p>  b8255=0x08;</p><p>  a8255

92、=table[hour_zhi_1%10];</p><p><b>  delay();</b></p><p><b>  }</b></p><p>  void display_zhi_1_c()</p><p><b>  {</b></p><p

93、>  b8255=0x40;</p><p>  a8255=table[0];</p><p><b>  delay();</b></p><p>  b8255=0x80;</p><p>  a8255=table[0];</p><p><b>  delay();<

94、;/b></p><p>  b8255=0x10;</p><p>  a8255=table[minute_zhi_1_c/10];</p><p><b>  delay();</b></p><p>  b8255=0x20;</p><p>  a8255=table[minute

95、_zhi_1_c%10];</p><p><b>  delay();</b></p><p>  b8255=0x04;</p><p>  a8255=table[hour_zhi_1_c/10];</p><p><b>  delay();</b></p><p>

96、  b8255=0x08;</p><p>  a8255=table[hour_zhi_1_c%10];</p><p><b>  delay();</b></p><p><b>  }</b></p><p>  void display_zhi_2()</p><p&g

97、t;<b>  {</b></p><p>  b8255=0x40;</p><p>  a8255=table[0];</p><p><b>  delay();</b></p><p>  b8255=0x80;</p><p>  a8255=table[0];&l

98、t;/p><p><b>  delay();</b></p><p>  b8255=0x10;</p><p>  a8255=table[minute_zhi_2/10];</p><p><b>  delay();</b></p><p>  b8255=0x20;&l

99、t;/p><p>  a8255=table[minute_zhi_2%10];</p><p><b>  delay();</b></p><p>  b8255=0x04;</p><p>  a8255=table[hour_zhi_2/10];</p><p><b>  dela

100、y();</b></p><p>  b8255=0x08;</p><p>  a8255=table[hour_zhi_2%10];</p><p><b>  delay();</b></p><p><b>  }</b></p><p>  void d

101、isplay_zhi_2_c()</p><p><b>  {</b></p><p>  b8255=0x40;</p><p>  a8255=table[0];</p><p><b>  delay();</b></p><p>  b8255=0x80;</

102、p><p>  a8255=table[0];</p><p><b>  delay();</b></p><p>  b8255=0x10;</p><p>  a8255=table[minute_zhi_2_c/10];</p><p><b>  delay();</b>

103、;</p><p>  b8255=0x20;</p><p>  a8255=table[minute_zhi_2_c%10];</p><p><b>  delay();</b></p><p>  b8255=0x04;</p><p>  a8255=table[hour_zhi_2_c

104、/10];</p><p><b>  delay();</b></p><p>  b8255=0x08;</p><p>  a8255=table[hour_zhi_2_c%10];</p><p><b>  delay();</b></p><p><b>

105、;  }</b></p><p>  void display_1()</p><p><b>  {</b></p><p>  b8255=0x01;</p><p>  a8255=table[1];</p><p><b>  delay();</b>&l

106、t;/p><p><b>  }</b></p><p>  void display_2()</p><p><b>  {</b></p><p>  b8255=0x02;</p><p>  a8255=table[2];</p><p><

107、b>  delay();</b></p><p><b>  }</b></p><p><b>  六 聲光報(bào)警子程序</b></p><p><b>  程序清單如下:</b></p><p>  void baojing_1()</p>&

108、lt;p><b>  {</b></p><p>  if(INT1==1)</p><p><b>  { </b></p><p>  display_1();</p><p>  J8=0;//光報(bào)警程序開始位置</p><p>  delay_2(); <

109、/p><p><b>  J8=1;</b></p><p>  delay_2();//光報(bào)警程序結(jié)束位置 </p><p>  J3=1;//聲音報(bào)警指令</p><p><b>  }</b></p><p>  else if(INT1==0)</p>

110、<p><b>  {</b></p><p>  display();</p><p>  keyscan();</p><p>  keydown_if();</p><p><b>  J8=0;</b></p><p><b>  J3=0;<

111、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void baojing_2()</p><p><b>  {</b></p><p>  if(RXD==1)</p>

112、<p><b>  { </b></p><p>  display_2();</p><p>  J8=0;//光報(bào)警程序開始位置</p><p>  delay_2(); </p><p><b>  J8=1;</b></p><p>  delay_2();

113、//光報(bào)警程序結(jié)束位置 </p><p>  J3=1;//聲音報(bào)警指令</p><p><b>  }</b></p><p>  else if(RXD==0)</p><p><b>  {</b></p><p>  display();</p>&

114、lt;p>  keyscan();</p><p>  keydown_if();</p><p><b>  J8=0;</b></p><p><b>  J3=0;</b></p><p><b>  }</b></p><p><b&

115、gt;  }</b></p><p>  七 交通情況檢測子程序</p><p><b>  程序清單如下:</b></p><p>  void environment()</p><p><b>  {</b></p><p>  if(TXD==1)<

116、/p><p><b>  {</b></p><p><b>  J1=1;</b></p><p><b>  J2=1;</b></p><p>  display();</p><p>  keyscan();</p><p>

117、  keydown_if();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  J1=0;</b></p><p><b

118、>  J2=0;</b></p><p>  display();</p><p>  keyscan();</p><p>  keydown_if();</p><p><b>  }</b></p><p>  八 路燈控制子程序設(shè)計(jì)</p><p>

119、;<b>  程序清單如下:</b></p><p>  void road_light_control()</p><p>  { if(hour*100+minute<=hour_zhi_1*100+minute_zhi_1&&hour*100+minute>=hour_zhi_1_c*100+minute_zhi_1_c)</

120、p><p><b>  {</b></p><p>  display();</p><p>  keyscan();</p><p>  keydown_if();</p><p><b>  }</b></p><p>  if(hour*100+mi

121、nute<=hour_zhi_2*100+minute_zhi_2&&hour*100+minute>=hour_zhi_2_c*100+minute_zhi_2_c)</p><p><b>  {</b></p><p>  display();</p><p>  keyscan();</p>&

122、lt;p>  keydown_if();</p><p><b>  } </b></p><p>  else if (hour*100+minute<=hour_zong*100+minute_zong&&hour*100+minute>=hour_zong_c*100+minute_zong_c)</p><

123、;p><b>  {</b></p><p>  display();</p><p>  keyscan();</p><p>  keydown_if();</p><p><b>  }</b></p><p>  }

124、 九 “看門狗”技術(shù) </p><p>  PC受到干擾而失控,引起程序亂飛,也可能使程序陷入“死循環(huán)” [6]。指令技術(shù)、軟件陷阱技術(shù)不能使失控的程序擺脫“死循環(huán)”的困境,這時系統(tǒng)完全癱瘓。如果操作者在場,就

125、可以按下人工復(fù)位安鈕,強(qiáng)制系統(tǒng)復(fù)位。但操作者不能一直監(jiān)視著系統(tǒng),也往往是在引起不良后果之后才進(jìn)行人工復(fù)位。為使程序脫離“死循環(huán)”,通常采用“看門狗技術(shù)”?!翱撮T狗”技術(shù)就是不斷監(jiān)視程序循環(huán)運(yùn)行時間,若發(fā)現(xiàn)時間超過已知的循環(huán)設(shè)定時間,則認(rèn)為系統(tǒng)陷入了“死循環(huán)”,然后強(qiáng)迫程序返回到0000H入口,在0000H處安排一段出錯處理程序,使系統(tǒng)運(yùn)行納入正規(guī)。</p><p>  “看門狗”技術(shù)可由硬件實(shí)現(xiàn),可由軟件實(shí)現(xiàn),也

126、可由兩者結(jié)合實(shí)現(xiàn)。本系統(tǒng)采用硬件“看門狗”電路。</p><p>  實(shí)現(xiàn)硬件“看門狗”電路方案較多,目前采用較多的方案有以下幾種:</p><p>  采用微處理器監(jiān)控器;</p><p>  采用單穩(wěn)態(tài)電路來實(shí)現(xiàn)“看門狗”,單穩(wěn)定電路可采用74LS123;</p><p>  采用內(nèi)帶震蕩器的記數(shù)芯片。</p><p&

127、gt;  本設(shè)計(jì)采用第三種方案實(shí)現(xiàn)“看門狗”電路,下面就對該方案作以介紹。</p><p><b>  (1)基本原理</b></p><p>  CD4060 是帶震蕩器的14位計(jì)數(shù)器,由該芯片構(gòu)成的看門狗電路如圖4.2看門狗電路圖所示。</p><p>  4060記數(shù)頻率由RT和CT決定。設(shè)實(shí)際的程序所需工作周期為T,分頻器記滿時間為T’

128、,當(dāng)T’>T 且系統(tǒng)正常工作時,程序每隔T對4060進(jìn)行掃描一次,分頻且永無記滿輸出信號。如系統(tǒng)工作不正常(如程序跑飛、死循環(huán)等),程序?qū)?060發(fā)不出掃描信號,分頻器記滿輸出一脈沖號使CPU復(fù)位。</p><p><b>  (2)參數(shù)選擇</b></p><p>  4060的振蕩頻率f由 RT 、CT決定。Rs用于改善振蕩器的穩(wěn)定性,Rs 要大于RT。一般

129、取Rs=10RT,且RT>1kΩ,CT≥100pF。如果Rs=450Ω,RT=45Ω,CT=1uF,則f=10HZ。4060的振蕩頻率和Qi(i=6,7,8,9,10,12,13,14)的選擇要根據(jù)情況確定。</p><p><b>  (3)幾個原則</b></p><p>  看門狗電路必須由硬件邏輯組成,不宜由可編程計(jì)數(shù)器充當(dāng),因?yàn)镃PU失控后,可能會修改

130、可編程器件參數(shù),使看門狗失效。</p><p>  4060的RST線上阻容組成的微分電路很重要,因?yàn)閽呙栎斎胄盘柺荂PU產(chǎn)生的正脈沖,若此信號變“1”后,由于干擾,程序亂飛,微分電路只能讓上跳沿通過,不會封死4060,看門狗仍能計(jì)數(shù)起作用。若沒有微分電路,掃描輸入信號上的“1”狀態(tài)封死4060,使之不能記數(shù),看門狗不起作用</p><p>  圖4.2看門狗電路圖</p>

131、<p>  CPU必須在正確完成所有工作后才能發(fā)掃描輸入信號,且程序中發(fā)掃描信號的地方不能太多。否則,正好在哪里有死循環(huán),看門狗就不產(chǎn)生記滿輸出信號,不能重新啟動CPU。</p><p>  4060的記滿輸出信號不但要接到MCS-51的RST腳,而且還應(yīng)接到其它芯片的RST腳,因?yàn)槌绦騺y飛后,其它具有RST腳的芯片也混亂了,必須全部復(fù)位。</p><p><b>  

132、圖10</b></p><p><b>  參考文獻(xiàn):</b></p><p>  《信號與系統(tǒng)》,ALAN V.OPPENHEIM著,西安:西安交通大學(xué)出版社,1997年;</p><p>  《數(shù)字圖像處理學(xué)》,元秋奇著,北京:電子工業(yè)出版社,2000年;</p><p>  《模擬電子線路基礎(chǔ)》,吳運(yùn)昌

133、著,廣州:華南理工大學(xué)出版社,2004年;</p><p>  《數(shù)字電子技術(shù)基礎(chǔ)》,閻石著,北京:高等教育出版社,1997年;</p><p>  《數(shù)據(jù)結(jié)構(gòu)與算法》,張曉麗等著,北京:機(jī)械工業(yè)出版社,2002年;</p><p>  《ARM&Linux嵌入式系統(tǒng)教程》,馬忠梅等著,北京:北京航空航天大學(xué)出版社,2004年;</p><

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論