路燈模擬控制系統(tǒng)畢業(yè)論文設計_第1頁
已閱讀1頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、gt;  二 路況的檢測單元3</p><p>  三 處理器的選擇3</p><p>  第三章 硬件設計4</p><p>  一 80C51單片機硬件結構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 定時器/計數(shù)器5</p><p><b>  6 串行口5</b></p><p>  7 特殊功能寄存器5

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

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

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

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

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

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

10、應用;</b></p><p>  新型顯示芯片的采用.</p><p>  關鍵詞:STC89C52RC單片機 光電傳感器 紅外傳感器</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ā)展,與之相關的一系列智能設備的研究也就越來越受人關注。本設計就是以這樣的形勢為背

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

29、t;<p><b>  6 串行口</b></p><p>  1個全雙工的串行口,具有四種工作方式??捎脕磉M行串行通訊,擴展并行I/O口,甚至與多個單片機相連構成多機系統(tǒ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)的個功能的部件進行管理、控制、監(jiān)視。實際上是一些控制寄存器和狀態(tài)寄存器,是一個具有特殊功能的RAM區(qū)。</p><p>  由上可見,80C51單片機的硬件結構具有功能部件種類全,功能強等特點。特別值得一提的是該單片機CPU中的位處理器,它實際上是一個完整的1位微計算

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

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

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

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

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

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

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

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

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

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

41、數(shù)碼管進行年.月.日,時.分.秒的顯示,當路燈出現(xiàn)故障時,顯示故障路燈的編號。</p><p>  本設計中采用新型芯片EM78P458作為顯示驅動器,它的管腳如EM78P458管腳介紹所示,用單片機的并行口控制,一個數(shù)碼顯示電路用4個口線,用專用驅動芯片控制可以減少對CPU的利用時間,單片機將有更多的時間去完成其他功能.</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ù)點。</p><p>  管腳d0﹑d1﹑d2﹑d3接單片機并行口,通過對單片機對芯片進行控制。管腳vss串上10k電阻后與vcc管腳相接后再接+5v電源,管腳gnd接地。</p><p>  該芯片所驅動的顯示電路如圖3.6 EM78P458集成顯示電路所示</p><p>  顯示驅動器支持動態(tài)顯示,其顯示功能如表4.2真值

44、表所示,0000-1001顯示從0-9數(shù)字,1010是未進位時是小數(shù)點清位,1011是進位后加小數(shù)點,1100-1111是八段共陰數(shù)碼管的位選。</p><p><b>  表1真值表</b></p><p>  四 LED燈電路構成</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)也沒有松動的部分,這些特點使得LED可以說是不易損壞的。</p><p>  LED路燈的電路圖如下所示:</p><p><b>  圖6</b></

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

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

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

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

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

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

52、程序﹑中斷子程序顯示子程序﹑顯示子程序﹑外部環(huán)境檢測子程序,調(diào)試子程序子程序構成。</p><p>  一 主程序設計 </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>  二 延時子程序設計</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()//以下是聲光報警部分的延時程序</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>  三 按鍵掃描子程序設計</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>  四 中斷子程序設計</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></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;//光報警程序開始位置</p><p>  delay_2(); <

109、/p><p><b>  J8=1;</b></p><p>  delay_2();//光報警程序結束位置 </p><p>  J3=1;//聲音報警指令</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;//光報警程序開始位置</p><p>  delay_2(); </p><p><b>  J8=1;</b></p><p>  delay_2();

113、//光報警程序結束位置 </p><p>  J3=1;//聲音報警指令</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>  八 路燈控制子程序設計</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、 九 “看門狗”技術 </p><p>  PC受到干擾而失控,引起程序亂飛,也可能使程序陷入“死循環(huán)” [6]。指令技術、軟件陷阱技術不能使失控的程序擺脫“死循環(huán)”的困境,這時系統(tǒng)完全癱瘓。如果操作者在場,就

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

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

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

128、,當T’>T 且系統(tǒng)正常工作時,程序每隔T對4060進行掃描一次,分頻且永無記滿輸出信號。如系統(tǒng)工作不正常(如程序跑飛、死循環(huán)等),程序對4060發(fā)不出掃描信號,分頻器記滿輸出一脈沖號使CPU復位。</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>  看門狗電路必須由硬件邏輯組成,不宜由可編程計數(shù)器充當,因為CPU失控后,可能會修改

130、可編程器件參數(shù),使看門狗失效。</p><p>  4060的RST線上阻容組成的微分電路很重要,因為掃描輸入信號是CPU產(chǎn)生的正脈沖,若此信號變“1”后,由于干擾,程序亂飛,微分電路只能讓上跳沿通過,不會封死4060,看門狗仍能計數(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腳,而且還應接到其它芯片的RST腳,因為程序亂飛后,其它具有RST腳的芯片也混亂了,必須全部復位。</p><p><b>  

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

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

溫馨提示

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

評論

0/150

提交評論