版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于89C51的智能交通燈設(shè)計(jì)(軟件)</p><p> 學(xué)院名稱: 電氣信息工程學(xué)院 </p><p> 專 業(yè): 電氣工程及其自動(dòng)化 </p><p> 班 級(jí): 05自控1W </p><p> 姓 名: 王
2、士林 </p><p> 指導(dǎo)教師姓名: 路子赟 劉偉 </p><p> 指導(dǎo)教師職稱: 助教 副教授 </p><p> 2009年 6 月 </p><p> 基于89C51的智能交通燈設(shè)計(jì)</p><p><b> 摘要:&
3、lt;/b></p><p> 本設(shè)計(jì)將運(yùn)動(dòng)檢測(cè)技術(shù)與交通燈控制結(jié)合起來(lái),除了具有正常的交通燈時(shí)序控外,當(dāng)發(fā)現(xiàn)有闖紅燈的情況時(shí)還能發(fā)出報(bào)警,從而使交通燈控制系統(tǒng)具有初步的視覺感知功能。系統(tǒng)是由顯示模塊、控制模塊、運(yùn)動(dòng)檢測(cè)處理模塊,以及MATLAB環(huán)境下PC 機(jī)STC89C51單片機(jī)的實(shí)時(shí)串口通信模塊等組成。本次設(shè)計(jì)中的關(guān)鍵技術(shù)環(huán)節(jié)是用軟件模擬了一個(gè)串行口,即用P1口的P1.6和P1.7來(lái)分別模擬RXD和T
4、XD,通過(guò)模擬串口控制74HC164來(lái)實(shí)現(xiàn)數(shù)碼管的顯示;PC機(jī)串口與單片機(jī)原有串口之間通過(guò)MAX232電平轉(zhuǎn)換芯片和RSR-232數(shù)據(jù)總線進(jìn)行硬件連接,利用MATLAB設(shè)備控制工具箱中提供的serial函數(shù)來(lái)創(chuàng)建串口設(shè)備對(duì)象,PC機(jī)對(duì)串口的讀寫操作都通過(guò)調(diào)用設(shè)備控制工具箱的各種函數(shù)對(duì)串口對(duì)象的操作來(lái)實(shí)現(xiàn)。運(yùn)動(dòng)檢測(cè)模塊屬于圖像處理的內(nèi)容,采用簡(jiǎn)單的幀間差分和閾值判斷來(lái)實(shí)現(xiàn),程序在MATLAB環(huán)境下運(yùn)行。最后,做出了實(shí)物,并且實(shí)驗(yàn)表明達(dá)到了
5、設(shè)計(jì)目標(biāo)。</p><p> 關(guān)鍵詞:89C51單片機(jī);交通燈;模擬串行口;運(yùn)動(dòng)檢測(cè);MATLAB</p><p> The design of intelligent traffic lights based on 89C51</p><p> Abstract: </p><p> This design unifies the
6、movement examination technology and the traffic light control, besides has the normal traffic light sequential control, when discovered has when situation which runs a red light also can send out reports to the police, t
7、hus enable the traffic light control system to have the preliminary visual sensation function.The system is by the demonstration module, the control module, the movement examination processing module, as well as under th
8、e MATLAB environment PC machine and </p><p> Key words: 89C51 single-chip computer ; Traffic lights ; Simulation serial port ; Motion detection ; MATLAB</p><p><b> 目 錄</b></p&g
9、t;<p> 引言........................................................1</p><p> 第1章 交通管理方案論證.....................................3</p><p> 2.1 設(shè)計(jì)任務(wù)..........................................
10、........3</p><p> 2.2 方案介紹..................................................3</p><p> 第2章 交通燈控制系統(tǒng)硬件設(shè)計(jì)...............................7</p><p> 2.1 單片機(jī)概述...........................
11、.....................7</p><p> 2.2 系統(tǒng)構(gòu)成..................................................8</p><p> 2.3芯片選擇與介紹.............................................9 </p><p> 2.3.1 STC89C
12、51芯片................................................9</p><p> 2.3.2 89系列單片機(jī)的優(yōu)點(diǎn).........................................9</p><p> 2.3.3 ATMEL89系列單片機(jī)的分類...................................10</
13、p><p> 2.3.4 I/O口的功能...............................................10</p><p> 2.3.5 結(jié)構(gòu)框圖...................................................11</p><p> 2.3.6 引腳描述.....................
14、..............................12</p><p> 第3章 交通燈控制系統(tǒng)軟件設(shè)計(jì)</p><p> 3.1 程序設(shè)計(jì)流程圖............................................20</p><p> 3.2延時(shí)的設(shè)定.......................................
15、.........22</p><p> 3.2.1 計(jì)數(shù)器初值計(jì)算..............................................22</p><p> 3.2.2 相應(yīng)程序代碼................................................23</p><p> 3.3 MATLAB的運(yùn)用..
16、...........................................24</p><p> 3.4 MAX232實(shí)現(xiàn)單片機(jī)與PC機(jī)之間的通訊...........................31</p><p> 3.5 程序的主控制循環(huán)調(diào)用.............................................35</p><
17、;p> 3.6 對(duì)現(xiàn)有程序的擴(kuò)充..........................................36</p><p><b> 第4章 系統(tǒng)測(cè)試</b></p><p> 4.1實(shí)驗(yàn)平臺(tái).................................................38</p><p> 4.
18、2實(shí)驗(yàn)步驟.................................................38</p><p> 4.2.1 編寫程序代碼................................................38</p><p> 4.2.2 按照系統(tǒng)硬件連線圖連接好系統(tǒng)并調(diào)試..........................38</
19、p><p> 結(jié)論.......................................................41</p><p> 參考文獻(xiàn)...................................................42</p><p> 附錄1 ....................................
20、................44</p><p> 附錄2……......…………………………………………………………….49</p><p> 附錄3……...………………………………………………………………51</p><p> 附錄4...........................................................
21、................................................53</p><p><b> 引言</b></p><p> 今天,紅綠燈安裝在各個(gè)道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段。但這一技術(shù)在19世紀(jì)就已出現(xiàn)了。1858年,在英國(guó)倫敦主要街頭安裝了以燃煤氣為光源的紅,藍(lán)兩色的機(jī)械扳手式信號(hào)燈,用以指揮馬車通行。這
22、是世界上最早的交通信號(hào)燈。1868年,英國(guó)機(jī)械工程師納伊特在倫敦威斯敏斯特區(qū)的議會(huì)大廈前的廣場(chǎng)上,安裝了世界上最早的煤氣紅綠燈。它由紅綠兩塊以旋轉(zhuǎn)式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。</p><p> 1914年,電氣啟動(dòng)的紅綠燈出現(xiàn)在美國(guó)。這種紅綠燈由紅綠黃三色圓形的投光器組成,安裝在紐約市5號(hào)大街的一座高塔上。紅燈亮表示“停止”,綠燈
23、亮表示“通行”。</p><p> 1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。帶控制的紅綠燈,一種是把壓力探測(cè)器安在地下,當(dāng)車輛接近時(shí),紅燈便變?yōu)榫G燈;另一種是用擴(kuò)音器來(lái)啟動(dòng)紅綠燈,司機(jī)遇紅燈時(shí)按一下喇叭,就使紅燈變?yōu)榫G燈。紅外線紅綠燈當(dāng)行人踏上對(duì)壓力敏感的路面時(shí),它就能察覺到有人要過(guò)馬路。紅外光束能把信號(hào)燈的紅燈延長(zhǎng)一段時(shí)間,推遲汽車放行,以免發(fā)生交通事故。</p><p>
24、 信號(hào)燈的出現(xiàn),使交通得以有效管制,對(duì)于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。1968年,聯(lián)合國(guó)《道路交通和道路標(biāo)志信號(hào)協(xié)定》對(duì)各種信號(hào)燈的含義作了規(guī)定。綠燈是通行信號(hào),面對(duì)綠燈的車輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過(guò)人行橫道的行人優(yōu)先通行。紅燈是禁行信號(hào),面對(duì)紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號(hào),面對(duì)黃燈的車輛不能越過(guò)停車線,但
25、車輛已十分接近停車線而不能安全停車時(shí)可以進(jìn)入交叉路口。</p><p> 隨著經(jīng)濟(jì)的發(fā)展,交通運(yùn)輸中出現(xiàn)了一些傳統(tǒng)方法難以解決的問(wèn)題。道路擁擠現(xiàn)象日趨嚴(yán)重,造成的經(jīng)濟(jì)損失越來(lái)越大,并一直保持大比例的增長(zhǎng)。現(xiàn)在交通系統(tǒng)已不能滿足經(jīng)濟(jì)發(fā)展的需求。由于生活水平的提高,人們對(duì)交通運(yùn)輸?shù)陌踩约胺?wù)水平提出了更高的要求。在交通中管理引入單片機(jī)交通燈控制代替交管人員在交叉路口服務(wù),有助于提高交通運(yùn)輸?shù)陌踩浴⑻岣呓煌ü芾淼?/p>
26、服務(wù)質(zhì)量。并在一定程度上盡可能的降低由道路擁擠造成的經(jīng)濟(jì)損失,同時(shí)也減小了工作人員的勞動(dòng)強(qiáng)度。 </p><p> 中國(guó)車輛數(shù)量不斷增加,交通管制的工作量越來(lái)越大,利用計(jì)算機(jī)代替人進(jìn)行高效交通管理是必然的發(fā)展趨勢(shì),而讓計(jì)算機(jī)控制的交通燈擁有類似人類的感知智能,具有很強(qiáng)的現(xiàn)實(shí)意義,比如通過(guò)攝像機(jī)讓交通燈控制系統(tǒng)獲得視覺感知功能,就可以代替人類的眼睛,
27、使系統(tǒng)根據(jù)所“看到”交通情況自適應(yīng)改變管制策略,提高了交通管理的自動(dòng)化水平,使得交通更高效、更順暢。</p><p> 第1章 交通管理方案論證</p><p><b> 2.1 設(shè)計(jì)任務(wù)</b></p><p> 東西(A)、南北(B)兩干道交于一個(gè)十字路口,各干道有一組紅、左轉(zhuǎn)綠、綠三個(gè)指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,
28、綠燈亮允許通行。紅燈的設(shè)計(jì)時(shí)間為40秒,綠燈及左轉(zhuǎn)綠燈各為20秒,并通過(guò)圖像處理來(lái)檢測(cè)是否闖紅燈,如果有闖紅燈,通過(guò)報(bào)警燈報(bào)警。設(shè)A道和B道的車流量相同。</p><p><b> 2.2 方案介紹</b></p><p> 把設(shè)計(jì)任務(wù)細(xì)化為四個(gè)狀態(tài),其對(duì)應(yīng)狀態(tài):如圖1-1:</p><p> 圖1-1 狀態(tài)轉(zhuǎn)換圖</p>
29、<p> 整個(gè)交通燈控制由四個(gè)狀態(tài)組成,可以用程序設(shè)計(jì)實(shí)現(xiàn),也可用時(shí)序邏輯實(shí)現(xiàn).以下方案就是分別用了這兩種方法。</p><p><b> 方案1設(shè)計(jì)思想:</b></p><p> 采用分模塊設(shè)計(jì)的思想,程序設(shè)計(jì)實(shí)現(xiàn)的基本思想是一個(gè)計(jì)數(shù)器 , 選擇一個(gè)單片機(jī),其內(nèi)部為一個(gè)計(jì)數(shù),是十六進(jìn)制計(jì)數(shù)器,模塊化后,通過(guò)設(shè)置或程序清除來(lái)實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)換, 由于每
30、一個(gè)模塊的計(jì)數(shù)多不是相同, 這里的各模塊是以預(yù)置數(shù)和計(jì)數(shù)器計(jì)數(shù)共同來(lái)實(shí)現(xiàn)的,所以要考慮增加一個(gè)置數(shù)模塊,其主要功能細(xì)分為,對(duì)不同的狀態(tài)輸入要產(chǎn)生相應(yīng)狀態(tài)的下一個(gè)狀態(tài)的預(yù)置數(shù), 如圖中A道和B道,分別為次干道的置數(shù)選擇和主干道的置數(shù)選擇。以主干道為例,簡(jiǎn)述其設(shè)計(jì)思想。如前分析,已經(jīng)確定該系統(tǒng)有四個(gè)狀態(tài),而置數(shù)子模塊可定要將下一狀態(tài)的預(yù)置數(shù)準(zhǔn)備好,所以很容易得到主干道的置數(shù)表如表1-1:</p><p> 表1-1
31、 置數(shù)表</p><p> 由該表,就可以通過(guò)程序循環(huán)的方法設(shè)計(jì)該模塊,主要思想是通過(guò)數(shù)據(jù)判斷指令、跳轉(zhuǎn)指令實(shí)現(xiàn),由主控制器計(jì)時(shí)和中斷產(chǎn)生的四個(gè)狀態(tài)去譯碼,從而得到不同的輸出,即預(yù)置數(shù),由上分析可用一個(gè)計(jì)數(shù)器和跳轉(zhuǎn)指令去完成的預(yù)置數(shù)。而紅綠燈的顯示也是一樣,由狀態(tài)分析可以得出紅綠燈的變化表如表1-2:</p><p> 表1-2 紅綠燈變化表</p><p&g
32、t; 通過(guò)這張表就可以用組合電路實(shí)現(xiàn)該功能了,可以用數(shù)據(jù)選擇器的思想,在本系統(tǒng)中,直接通過(guò)門電路的譯碼,接下來(lái)就是計(jì)數(shù)模塊了,其主要的功能細(xì)分為,要從預(yù)置數(shù)開始遞減計(jì)數(shù),一個(gè)狀態(tài)結(jié)束,通過(guò)判斷,通知主控制模塊,使之進(jìn)入下一模塊。還有一個(gè)必須考慮到的就是,預(yù)置數(shù)必須在下一個(gè)狀態(tài)來(lái)之前準(zhǔn)備好,而紅綠燈的狀態(tài)變化,必須和計(jì)數(shù)狀態(tài)同步,于是引起預(yù)置數(shù)變化的程序要超前于系統(tǒng)本身的狀態(tài)變化,所以,系統(tǒng)中的兩個(gè)狀態(tài)轉(zhuǎn)換時(shí),在上一狀態(tài)結(jié)束時(shí)設(shè)置預(yù)置數(shù)
33、,而控制紅綠燈的是隨著系統(tǒng)本身狀態(tài)的變化而變化,體現(xiàn)在本子電路中就是有兩組電路去判斷符合的狀態(tài)。</p><p> 方案2 設(shè)計(jì)思想:</p><p> 狀態(tài)轉(zhuǎn)換表如表1-3:</p><p> 表1-3 狀態(tài)轉(zhuǎn)換表</p><p><b> 本方案分三步:</b></p><p>
34、?。?)要建立三路信號(hào)燈的控制系統(tǒng),本設(shè)計(jì)采用7408 芯片通過(guò)組合邏輯控制三路燈的顯示關(guān)系。</p><p> ?。?)建立顯示控制系統(tǒng),本設(shè)計(jì)采用74190 芯片倒計(jì)時(shí)控制,每個(gè)方向用兩片相連實(shí)現(xiàn),另外用74153芯片,因?yàn)榉治鲋性O(shè)置的時(shí)間末位均為5,所以只要用一片74153 對(duì)高位置位,將低位的初值預(yù)置鎖定為5,而高位則根據(jù)需要由反饋部分提供預(yù)置值。</p><p> (3)建立反
35、饋和細(xì)節(jié)連接部分,本部分主要解決顯示和燈控的同步問(wèn)題本系統(tǒng)采用倒計(jì)時(shí)系統(tǒng)減為0,如當(dāng)系統(tǒng)減為0 時(shí)通過(guò)兩個(gè)D觸發(fā)器得到兩個(gè)變量,即為開頭分析中的狀態(tài),通過(guò)它的變化得到不同的邏輯關(guān)系,驅(qū)動(dòng)74153 控制哪組燈亮(對(duì)應(yīng)關(guān)系如表所示),另外他還要同步反饋到顯示系統(tǒng)的置數(shù)環(huán)節(jié)。</p><p> 注意:本實(shí)驗(yàn)中若采用更復(fù)雜的四片74190控制主干道的兩組燈,再用八片74153分別對(duì)74190置數(shù)可實(shí)現(xiàn)任意數(shù)值的交通燈
36、系統(tǒng)。另外對(duì)7408 片子的控制紅燈的端口用一個(gè)與門將一端再接一個(gè)頻率一定的方波,使一邊為黃燈時(shí),另一邊的紅燈在閃爍。</p><p><b> 方案比較:</b></p><p> 方案1(以下稱1)用了模塊設(shè)計(jì),而方案2(以下稱2)采用的是一般設(shè)計(jì),相比之下1有較強(qiáng)的可讀性和較強(qiáng)的可修改性,而2則在設(shè)計(jì)上顯得較簡(jiǎn)單,設(shè)計(jì)純樸,便于測(cè)試,它的優(yōu)勢(shì)則在于提供了一條
37、較為便捷的解決方案。2首先將許多邏輯關(guān)系簡(jiǎn)化到極點(diǎn),而后將其一起集成用較少的芯片去完成所需功能。</p><p> 我們從中可以得出的是,我們最終的設(shè)計(jì)應(yīng)該盡量使用模塊化設(shè)計(jì)。對(duì)工程設(shè)計(jì)人員來(lái)說(shuō),將來(lái)的產(chǎn)品無(wú)論從修改還是升級(jí)考慮對(duì)有好處,但另外我們又需將設(shè)計(jì)簡(jiǎn)單化,因此我覺得在設(shè)計(jì)初期盡可能的簡(jiǎn)單化設(shè)計(jì),而一旦設(shè)計(jì)的各項(xiàng)測(cè)試通過(guò)了,在有可能的條件下將設(shè)計(jì)模塊化,所以本設(shè)計(jì)以第一方案為主進(jìn)行。</p>
38、<p> 第2章 交通燈控制系統(tǒng)硬件設(shè)計(jì)</p><p><b> 2.1 單片機(jī)概述</b></p><p> 單片機(jī)是由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備以及輸出設(shè)備共五個(gè)基本部分組成的。單片機(jī)是把包括運(yùn)算器、控制器、少量的存儲(chǔ)器、最基本的輸入輸出口電路、串行口電路、中斷和定時(shí)電路等都集成在一個(gè)尺寸有限的芯片上。</p><p
39、> 通常,單片機(jī)由單個(gè)集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件:中央處理器、存儲(chǔ)器和I/O接口電路等。因此,單片機(jī)只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個(gè)單片機(jī)控制系統(tǒng)。</p><p> 單片機(jī)經(jīng)過(guò)1、2、3、3代的發(fā)展,目前單片機(jī)正朝著高性能和多品種方向發(fā)展,它們的CPU功能在增強(qiáng),內(nèi)部資源在增多,引腳的多功能化,以及低電壓、低功耗。</p><p> 可以
40、說(shuō),二十世紀(jì)跨越了三個(gè)“電”的時(shí)代,即電氣時(shí)代、電子時(shí)代和現(xiàn)已進(jìn)入的電腦時(shí)代。不過(guò),這種電腦,通常是指?jìng)€(gè)人計(jì)算機(jī),簡(jiǎn)稱PC機(jī)。它由主機(jī)、鍵盤、顯示器等組成。還有一類計(jì)算機(jī),大多數(shù)人卻不怎么熟悉。這種計(jì)算機(jī)就是把智能賦予各種機(jī)械的單片機(jī)。顧名思義,這種計(jì)算機(jī)的最小系統(tǒng)只用了一片集成電路,即可進(jìn)行簡(jiǎn)單運(yùn)算和控制。因?yàn)樗w積小,通常都藏在被控機(jī)械的“肚子”里。它在整個(gè)裝置中,起著有如人類頭腦的作用,它出了毛病,整個(gè)裝置就癱瘓了?,F(xiàn)在,這種單片
41、機(jī)的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機(jī),就能起到使產(chǎn)品升級(jí)換代的功效,常在產(chǎn)品名稱前冠以形容詞——“智能型”,如智能型洗衣機(jī)等?,F(xiàn)在有些工廠的技術(shù)人員或其它業(yè)余電子開發(fā)者搞出來(lái)的某些產(chǎn)品,不是電路太復(fù)雜,就是功能太簡(jiǎn)單且極易被仿制。究其原因,可能就卡在產(chǎn)品未使用單片機(jī)或其它可編程邏輯器件上。 </p><p> 目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,
42、幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過(guò)程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說(shuō)自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械了。它主要是作為控制部分的核心部件。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師
43、。</p><p><b> 2.2 系統(tǒng)構(gòu)成</b></p><p> 電路板一塊,STC89C51單片機(jī)一片,74HC164芯片八片,七段數(shù)碼管八個(gè)。74LS04反向器一片,發(fā)光二極管13個(gè)(8個(gè)綠的,4個(gè)紅的用于交通控制,1個(gè)用于標(biāo)識(shí)電源),7805三端穩(wěn)壓電源一個(gè),一個(gè)按鍵,一條數(shù)據(jù)下載線。</p><p> 系統(tǒng)結(jié)構(gòu)框圖如圖2-
44、1:</p><p> 圖2-1 系統(tǒng)結(jié)構(gòu)框圖</p><p><b> 系統(tǒng)各部分工作:</b></p><p> (1)程序設(shè)置初始時(shí)間,通過(guò)STC89C51單片機(jī)寄存器實(shí)現(xiàn)。</p><p> (2) 由STC89C51單片機(jī)就通過(guò)P3.0口向74HC164的數(shù)據(jù)端口送信息,由74HC164的輸出口顯示紅、
45、綠、黃燈的點(diǎn)亮?xí)r間情況;由STC89C51的P1.0、P1.1、P1.2、P1.3口顯示每個(gè)燈的點(diǎn)亮情況。</p><p> (3) STC89C51通過(guò)程序設(shè)置各個(gè)信號(hào)燈的點(diǎn)亮?xí)r間,通過(guò)程序設(shè)置左轉(zhuǎn)綠、綠、紅時(shí)間依次為20秒、20秒、40秒循環(huán),由AT89S51的 P3口向74HC164的數(shù)據(jù)口輸出。</p><p> (4)通過(guò)STC89C51單片機(jī)的P3口來(lái)控制系統(tǒng)是工作。<
46、;/p><p> (5)74HC164的A、B口用于串行輸出時(shí)間位,經(jīng)過(guò)串并轉(zhuǎn)換送到七段數(shù)碼管的八的引腳。而P1口用于輸出控制信號(hào).而通過(guò)74LS04反向器實(shí)現(xiàn)控制各個(gè)燈的情況.它采用5V的直流電來(lái)驅(qū)動(dòng)二極管。</p><p> (6)STC89C51本身集成了看門狗指令,當(dāng)系統(tǒng)出現(xiàn)異??撮T狗將發(fā)出溢出中斷。通過(guò)專用端口輸出,引起RESET復(fù)位信號(hào)復(fù)位系統(tǒng)。</p><
47、p> 2.3芯片選擇與介紹</p><p> 2.3.1 STC89C51芯片</p><p> ATMEL 89系列單片機(jī)是以8031為結(jié)構(gòu)的,所以,它和8051系列單片機(jī)是兼容的系列。</p><p> 2.3.2 89系列單片機(jī)的優(yōu)點(diǎn)</p><p> 89系列單片機(jī)對(duì)于一般的用戶來(lái)說(shuō),存在下面很明顯的優(yōu)點(diǎn):</
48、p><p> 1. 含有FLASH存儲(chǔ)器</p><p> 因此在系統(tǒng)的開發(fā)過(guò)程中可以十分容易進(jìn)行修改,這就大大縮短了系統(tǒng)的開發(fā)周期。同時(shí),在系統(tǒng)工作過(guò)程中,能有效地保持一些數(shù)據(jù)信息,即使外界損壞也不影響到信息的保持。</p><p> 2. 和80C51插座兼容</p><p> 89系列單片機(jī)的引腳是和80C51一樣的,所以,當(dāng)89系
49、列單片機(jī)取代80C51時(shí),可以進(jìn)行代換。</p><p><b> (1)靜態(tài)時(shí)鐘方式</b></p><p> 89系列單片機(jī)采用靜態(tài)時(shí)鐘方式,所以可以節(jié)省電能,這對(duì)于降低便攜式產(chǎn)品的功耗十分有用。</p><p> ?。?)錯(cuò)誤編程亦無(wú)廢品產(chǎn)生</p><p> 一般的OPT產(chǎn)品,一旦錯(cuò)誤編程就成了廢品。而89
50、系列單片機(jī)內(nèi)部采用了FLASH存儲(chǔ)器,所以,錯(cuò)誤編程后可以重新編程,直到正確為止,故不存在廢品。</p><p> ?。?)可進(jìn)行反復(fù)系統(tǒng)試驗(yàn)</p><p> 用89系列單片機(jī)設(shè)計(jì)的系統(tǒng),可以反復(fù)進(jìn)行系統(tǒng)試驗(yàn);每次試驗(yàn)可以不同的程序,這樣可以保證用戶的系統(tǒng)設(shè)計(jì)達(dá)到最優(yōu)。而且隨用戶的需要和發(fā)展,還可以進(jìn)行修改,使系統(tǒng)不斷能追隨用戶的最新要求。</p><p>
51、3. 89系列單片機(jī)內(nèi)部結(jié)構(gòu)</p><p> 89系列的內(nèi)部結(jié)構(gòu)和89C51相近,它主要含有如下一些部件。</p><p> (1)8031CPU</p><p><b> ?。?)振蕩電路</b></p><p><b> ?。?)總線控制部件</b></p><p>
52、;<b> ?。?)重點(diǎn)控制部件</b></p><p> (5)片內(nèi)FLASH存儲(chǔ)器</p><p><b> ?。?)片內(nèi)RAM</b></p><p> ?。?)并行I/O接口</p><p><b> (8)定時(shí)器</b></p><p>
53、?。?)串行I/O接口</p><p> 2.3.3 ATMEL89系列單片機(jī)的分類</p><p> ATMEL89系列單片機(jī)可分成標(biāo)準(zhǔn)型號(hào)、低檔型號(hào)和高檔型號(hào)三類。</p><p> 89系列單片機(jī)的標(biāo)準(zhǔn)型有STC89C51等4種型號(hào),它們基本結(jié)構(gòu)和89C51是類似的,是80C51的兼容產(chǎn)品,89系列單片機(jī)的低檔型有STC89C1051等2種型號(hào),它們的C
54、PU和89C51是相同的,但是并行I/O口較少。高檔型的有STC89C8252,這是一種可下載FLASH單片機(jī),它和IBM微機(jī)通信進(jìn)地程序是十分方便的。</p><p> 2.3.4 I/O口的功能</p><p> 在STC89C51中有四個(gè)雙向I/O端口P0 ~ P3口,每個(gè)端口都是由鎖存器、輸出驅(qū)動(dòng)器、輸入緩沖器組成。當(dāng)CPU控制系統(tǒng)與外部設(shè)備交換信息時(shí),都是通過(guò)端口鎖存器進(jìn)行的
55、。四個(gè)I/O端口都可作輸出輸入使用,其中P0和P2口通常用于對(duì)外部存儲(chǔ)器的訪問(wèn)。</p><p> 接通鎖存器時(shí),P0口作為雙向I/O使用,如P0口的鎖存器的值為1,使輸出驅(qū)動(dòng)器中的場(chǎng)效應(yīng)管截止,引腳空,此時(shí)端口可作高阻輸入。鎖存器的值為0時(shí),下面的場(chǎng)效應(yīng)管導(dǎo)通,輸出為0。P0口作為地址/數(shù)據(jù)總線口使用時(shí),由“控制”線控制將電子開關(guān)接通至“地址/數(shù)據(jù)”端,分別輸出擴(kuò)展外存的低8位地址A0 ~ A7和數(shù)據(jù)D0 ~
56、 D7。一般情況下,當(dāng)P0口作輸入輸出線使用時(shí),都要外接拉高電阻。</p><p> 在STC89C51和STC89C52中,I/O端口復(fù)位值均為1。</p><p><b> 寫端口操作:</b></p><p> 當(dāng)執(zhí)行指令來(lái)改變端口鎖存器的值時(shí),新的值在最后一個(gè)指令S6P2被寫入鎖存器的。在每一個(gè)時(shí)鐘周期的S1P1,鎖存器的值由輸出
57、緩沖器采樣并保存至下一個(gè)機(jī)器周期的S1P1才到引腳。當(dāng)鎖存器的狀態(tài)發(fā)生變化時(shí),這個(gè)變化不會(huì)立即出現(xiàn)在輸出端,至少經(jīng)過(guò)一個(gè)時(shí)鐘周期后,才把新的值輸出。</p><p> 在P1、P2、P3端口內(nèi),都接有內(nèi)部上拉電阻,此上拉電阻分為固定部分和附加部分,當(dāng)端口的狀態(tài)要從0變?yōu)?時(shí),在發(fā)生變化的哪個(gè)機(jī)器周期的S1P1和S1P2接通附加的拉高電路以增加變化的速度,否則這個(gè)狀態(tài)的變化將十分緩慢。附加的拉高電路允許通過(guò)的電流
58、比普通的上拉電阻大100倍。</p><p><b> 讀端口及接口操作:</b></p><p> P1 ~ P3口的輸出緩沖器每個(gè)都能取代4個(gè)LSTTL輸入。CMOS型的芯片引腳可由集電極開路電路的漏極開路電路驅(qū)動(dòng),但在狀態(tài)從0變1時(shí),邊化的速度很慢,輸入0時(shí),TP3截止,僅靠TP2非常微弱的上拉來(lái)驅(qū)動(dòng)狀態(tài)的變化。</p><p>
59、在外部總線方式下,P0口的輸出緩沖器能驅(qū)動(dòng)8個(gè)LSTTL輸入,但P0口用作輸入輸出口時(shí)需外接上拉電路驅(qū)動(dòng)輸入。</p><p> 2.3.5 結(jié)構(gòu)框圖 </p><p> 圖2-2 8051結(jié)構(gòu)框圖</p><p> STC89C51具有下列主要性能:</p><p> 1. 4KB可改編程序FLASH存儲(chǔ)器(可經(jīng)受1,000次的寫入
60、/擦除周期)</p><p> 2. 全靜態(tài)工作:0HZ ~ 24MHZ</p><p> 3. 三級(jí)程序存儲(chǔ)器保密</p><p> 4. 128*8字節(jié)內(nèi)部RAM</p><p> 5. 32條可編程I/O線</p><p> 6. 2個(gè)16位定時(shí)器/計(jì)數(shù)器</p><p><
61、;b> 7. 6個(gè)中斷源</b></p><p> 8. 可編程串行通道</p><p> 9. 片內(nèi)時(shí)鐘振蕩器</p><p> 另外,STC89C51是靜態(tài)邏輯來(lái)設(shè)計(jì),其工作可下降到0HZ并提供可用軟件來(lái)選擇的省電方式——空閑方式(IDLE MODE)和掉電方式(POWER DOWN MODE)。在空閑方式中,CPU停止工作,而RAM、
62、定時(shí)器/計(jì)數(shù)器、串行口和中斷系統(tǒng)都繼續(xù)工作。在掉電方式中,單片機(jī)振蕩器停止工作,由于時(shí)鐘被“凍結(jié)”,使一切功能都暫停,只保存片內(nèi)RAM中的內(nèi)容,直到下一次硬件復(fù)位為止。</p><p> 2.3.6 引腳描述</p><p> 圖2-3 是STC89C51的引腳結(jié)構(gòu)圖:</p><p> 圖2-3 8051引腳圖</p><p> S
63、TC89C51有40 條引腳,分為端口線、電源線和控制線三類</p><p> 1.端口線(4*8=32條)</p><p> 8051有四個(gè)并行I/O端口,每個(gè)端口有8條口線,用于傳送數(shù)據(jù)和地址。</p><p> ?。?)P0.0~ P0.7:這組引腳共有8條,為P0口所專用,其中P0.7為最高位,P0.0為最低位。這8條引腳口有兩種不同的功能,分別使用于兩
64、種不同的功能。第一種情況是89C51不帶片外存儲(chǔ)器,P0口可以作為通用I/O使用,P0.0~ P0.7用于傳送CPU的輸入/輸出數(shù)據(jù)。這時(shí),輸出數(shù)據(jù)可以得到鎖存,不需外接專用鎖存器,輸入數(shù)據(jù)可以得到緩沖,增加了數(shù)據(jù)輸入的可靠性;第二種情況是89C51帶片外存儲(chǔ)器,P0.0~ P0.7在CPU訪問(wèn)片外存儲(chǔ)器時(shí)用于傳送片外存儲(chǔ)器的第8位地址,然后傳送CPU對(duì)片外存儲(chǔ)器的讀寫數(shù)據(jù)。</p><p> ?。?)1.0~
65、P1.7:這8條引腳和P0口的8條引腳類似,P1.7為最高位,P1.0為最低位,當(dāng)P1口作為通用I/O使用時(shí),P1.0~ P1.7的功能和P0口的第一功能相同,也用于傳送用戶的輸入和輸出數(shù)據(jù)。</p><p> (3)P2.0~ P2.7:這組引腳的第一功能和上述兩組引腳的第一功能相同,即它可以作為通用I/O口使用。它的第二功能和P0口的第二功能相配合,用于輸出片外存儲(chǔ)器的高8位地址,共同選中片外存儲(chǔ)器單元,但
66、并不能像P0口那樣是可以傳送存儲(chǔ)器的讀寫數(shù)據(jù)。</p><p> ?。?)3.0~ P3.7:這組引腳的第一功能和其余端口的第一功能相同。第二功能作控制用,每個(gè)引腳并不完全相同,如表2-1所列。</p><p> 表2-1 P3口第二功能</p><p><b> 2.電源線(2條)</b></p><p> V
67、CC為+5V電源線,VSS為接地線。</p><p><b> 3.控制線(6)條</b></p><p> (1)外接晶體引腳XTAL1和XTAL2</p><p> MCS-51的時(shí)鐘可以利用它內(nèi)部的振蕩器產(chǎn)生,只要在XTAL1、XTAL2引腳上外接這時(shí)反饋電路,內(nèi)部振蕩器便自激振蕩,產(chǎn)生時(shí)鐘輸出到內(nèi)部的定時(shí)控制邏輯。定時(shí)反饋電路一般
68、為石英晶振和電容組成的并聯(lián)回路。這種方式稱為內(nèi)部方式,這種方式的外部元件連接如圖2-5所示。如果振蕩器已起振,則在XTAL2引腳上輸出3V左右的正弦波。</p><p> ?。?)ALE/PROG:地址鎖存允許/編程線,配合P0口引腳的第二功能使用,在訪問(wèn)片外存儲(chǔ)器時(shí),89C51CPU在P0.0~P0.7引腳線上輸出片外存儲(chǔ)器低8位地址的同時(shí)還在ALE/PROG線上輸出一個(gè)高電位脈沖,用于把這個(gè)片外存儲(chǔ)器低8位地
69、址鎖存到外部專用地址鎖存器讀寫數(shù)據(jù)。在不訪問(wèn)片外存儲(chǔ)器時(shí),89C51自動(dòng)在ALE/PROG線上輸出頻率為F0SC/6的脈沖。</p><p><b> 圖2-4 晶振電路</b></p><p> (3)EA/VPP:允許訪問(wèn)片外存儲(chǔ)器編程電源線,可以控制89C51使用片內(nèi)ROM還是使用片外ROM。若EA=1,則允許使用ROM;若EA=0,則允許使用片外ROM。&
70、lt;/p><p> (4)PSEN:片外ROM選通線,在執(zhí)行訪問(wèn)片外ROM的指令MOVC時(shí),8051自動(dòng)在PSEN線上產(chǎn)生一個(gè)負(fù)脈沖,用于為片外ROM芯片的選通。其他情況下,PSEN線均為高電平封鎖狀態(tài)。</p><p> ?。?)RST/VPD:復(fù)位電源線,可以使89C51處于復(fù)位工作狀態(tài)。通常,89C51的復(fù)位有自動(dòng)上電復(fù)位和1 ~ 2按鈕復(fù)位兩種,如圖3-6所示。</p>
71、<p><b> 圖2-5 復(fù)位電路</b></p><p> 4.中斷與定時(shí)/計(jì)數(shù)系統(tǒng)</p><p><b> 1.中斷</b></p><p> 在單片機(jī)中,中斷技術(shù)主要用于實(shí)時(shí)控制。所謂實(shí)時(shí)控制,就是要求計(jì)算機(jī)能及時(shí)地相應(yīng)被控對(duì)象提出的分析、計(jì)算和控制等請(qǐng)求,使被控對(duì)象保持在最佳工作狀態(tài),以到
72、達(dá)預(yù)定的控制效果。由于這些控制參量的請(qǐng)求都是隨機(jī)發(fā)出,而且要求單片機(jī)必須作出快速響應(yīng)并及時(shí)處理,對(duì)此只有靠中斷技術(shù)才能實(shí)現(xiàn)。</p><p> 向CPU發(fā)出中斷請(qǐng)求的來(lái)源稱之為中斷源。MCS-51是一個(gè)多中斷源的單片機(jī),以80C51為例有3類共五個(gè)中斷源,分別是外部中斷2個(gè),定時(shí)中斷2個(gè)和串行中斷1個(gè)。</p><p> 在MCS-51單片機(jī)中,控制寄存器共有4個(gè),即定時(shí)器控制寄存器、
73、中斷允許控制寄存器、中斷優(yōu)先控制寄存器及串行口控制寄存器。這4個(gè)控制寄存器都屬于專用寄存器之列。MCS-51的中斷優(yōu)先級(jí)控制比較簡(jiǎn)單,因?yàn)橄到y(tǒng)只定義高低2個(gè)優(yōu)先級(jí)。各中斷源的優(yōu)先級(jí)由中斷優(yōu)先級(jí)寄存器(IP)進(jìn)行設(shè)定。從中斷相應(yīng)到轉(zhuǎn)向執(zhí)行中斷服務(wù)程序,完成中斷所要求的操作任務(wù),是一個(gè)很復(fù)雜的過(guò)程。中斷完成后,TCON或SCON中的中斷請(qǐng)求標(biāo)志應(yīng)及時(shí)清除。否則就意味著中斷請(qǐng)求仍然存在,弄不好就會(huì)造成中斷的重復(fù)查詢和相應(yīng),因此就存在一個(gè)中斷請(qǐng)
74、求的撤銷問(wèn)題。MCS-51是通過(guò)只有在一條指令的最后一個(gè)機(jī)器周期的查詢有效才能進(jìn)行中斷相應(yīng)來(lái)實(shí)現(xiàn)。它有一種單步工作方式,所謂單步執(zhí)行就是由外來(lái)脈沖控制程序的執(zhí)行。而外來(lái)脈沖是通過(guò)按鍵產(chǎn)生的,因此實(shí)際上單步執(zhí)行就是按一次鍵執(zhí)行一條指令。</p><p><b> 中斷系統(tǒng)的控制</b></p><p> 2.定時(shí)器/計(jì)數(shù)器的控制寄存器</p><
75、p> ?。?)、定時(shí)器控制寄存器(TCON)</p><p> TCON寄存器既參與中斷控制又參與定時(shí)控制?,F(xiàn)對(duì)其定時(shí)功能加以介紹。其中有關(guān)定時(shí)的控制位共有4位:</p><p> ?F0和TF1—計(jì)數(shù)溢出標(biāo)志位</p><p> 當(dāng)計(jì)數(shù)器計(jì)數(shù)溢出(計(jì)滿)時(shí),該位置“1”;使用查詢方式時(shí),此位作狀態(tài)位供查詢,但應(yīng)注意查詢有效后應(yīng)以軟件方法及時(shí)將該位清“0
76、”;使用中斷方式時(shí),此位作中斷標(biāo)志位,在轉(zhuǎn)向中斷服務(wù)程序時(shí)由硬件自動(dòng)清“0”。</p><p> ?R0和TR1—定時(shí)器運(yùn)行控制位</p><p> TRO(TR1)=0 停止定時(shí)器/計(jì)數(shù)器工作</p><p> TRO(TR1)=1 啟動(dòng)定時(shí)器/計(jì)數(shù)器工作</p><p> (2)、工作方
77、式控制寄存器(TMOD)</p><p> TMOD寄存器是一個(gè)專用寄存器,用于設(shè)定兩個(gè)定時(shí)器/計(jì)數(shù)器的工作方式。但TMOD寄存器不能位尋址,只能用字節(jié)傳送指令設(shè)置其內(nèi)容。各位定義如表2—2:</p><p> 表2—2 TMOD定義表</p><p> 位一組的結(jié)構(gòu)使它不能位尋址, 一定義就是4位。</p><p> 從寄存器的位格
78、式中可以看出,它的低半字節(jié)定義定時(shí)器/計(jì)數(shù)器0,高半字節(jié)定義定時(shí)器/計(jì)數(shù)器1。</p><p><b> ?ATE——門控位</b></p><p> GATE=O 以運(yùn)行控制位TR啟動(dòng)定時(shí)器</p><p> GATE=1 以外中斷請(qǐng)求信號(hào)(或)啟動(dòng)定時(shí)器</p><p> ?——定時(shí)方式或計(jì)數(shù)方式
79、選擇位 </p><p> =0 定時(shí)工作方式 </p><p> =1 計(jì)數(shù)工作方式 </p><p> ?M1M0——工作方式選擇 </p><p> M1M0=00 方式0</p><p> M1M0=01 方式1</p><p>
80、 M1M0=10 方式2</p><p> M1M0=11 方式3</p><p> (3)、中斷允許控制寄存器(IE)</p><p> ?EA——中斷允許總控制位</p><p> ?ET0和ET1——定時(shí)/計(jì)數(shù)中斷 </p><p> 定時(shí)器/計(jì)數(shù)器提供給用戶使用的有:8位計(jì)數(shù)
81、器TH和TL,以及有關(guān)的控制位。這些內(nèi)容只能以軟件方法使用。中斷源和中斷標(biāo)志位能夠產(chǎn)生中斷申請(qǐng)的部件被稱為中斷源。8051型單片機(jī)提供了五個(gè)中斷源:兩個(gè)外部中斷源和三個(gè)內(nèi)部中斷源。每一個(gè)中斷源都有一個(gè)中斷申請(qǐng)標(biāo)志位,但是串行口占有兩個(gè)中斷標(biāo)志位。一共有六個(gè)中斷標(biāo)志位。表2—3給出了它們各自的名稱。</p><p> 表2—3中斷的說(shuō)明表</p><p><b> 3.定時(shí)工作
82、方式0</b></p><p> (1)、電路邏輯結(jié)構(gòu)</p><p> 方式0是13位計(jì)數(shù)結(jié)構(gòu)的工作方式,其計(jì)數(shù)器由TH0全部8位和TL0的低五位構(gòu)成。TL0的高3位棄之不用。其中OCS是Oscillator(震蕩器)的縮寫。當(dāng)C/=0時(shí),多路開關(guān)接通振蕩脈沖的12分頻輸出,13位計(jì)數(shù)器以此進(jìn)行計(jì)數(shù),這就是所謂定時(shí)器工作方式。當(dāng)C/=1時(shí),多路開關(guān)接通計(jì)數(shù)引腳(T0),外
83、部計(jì)數(shù)脈沖由引腳T0輸入。當(dāng)計(jì)數(shù)脈沖發(fā)生負(fù)跳變時(shí),這就是所謂計(jì)數(shù)工作方式。</p><p> 不管是哪種工作方式,當(dāng)TL0的低五位計(jì)數(shù)溢出時(shí),向TH0進(jìn)位,而全部13位計(jì)數(shù)溢出時(shí),則向計(jì)數(shù)溢出標(biāo)志位TF0進(jìn)位。</p><p> 門控位GATE:當(dāng)GATE=0時(shí),由于GATE信號(hào)封鎖了或門,使用TRO引腳信號(hào)無(wú)效。而這時(shí)或門輸出端的高電平狀態(tài)卻打開了與門。因此可以由TRO(TCON)的
84、狀態(tài)來(lái)控制計(jì)數(shù)脈沖的接通與斷開。這時(shí)如果TRO=1,TRO則接通模擬開關(guān),使計(jì)數(shù)器進(jìn)行加法計(jì)數(shù),即定時(shí)器/計(jì)數(shù)器0工作。如果TRO=0,則斷開模擬開關(guān),停止計(jì)數(shù),定時(shí)器/計(jì)數(shù)器0不能工作。因此在單片機(jī)的定時(shí)或計(jì)數(shù)應(yīng)用中要注意GATE位的清“0”。</p><p> 當(dāng)GATE=1,同時(shí)又TRO=1時(shí),有關(guān)電路的或門和與門全都打開,計(jì)數(shù)脈沖的接通與斷開由外引腳信號(hào)控制。當(dāng)該信號(hào)為高電平時(shí)計(jì)數(shù)器工作;當(dāng)該信號(hào)為低電
85、平時(shí)計(jì)數(shù)器停止工作。這種情況可用于測(cè)量外信號(hào)的脈沖寬度。</p><p> ?。?)、定時(shí)和計(jì)數(shù)應(yīng)用</p><p> 兩個(gè)前提:溢出停止和加法計(jì)數(shù)</p><p><b> A、定時(shí)工作方式0</b></p><p> 在方式0工作方式下,當(dāng)為計(jì)數(shù)工作方式時(shí),計(jì)數(shù)值的范圍是:</p><p&g
86、t; 1~8192(213)</p><p> 當(dāng)為定時(shí)工作方式時(shí),定時(shí)時(shí)間的計(jì)算公式為:</p><p> ?。?13-計(jì)數(shù)初值)×晶振周期×12</p><p> 或 (213-計(jì)數(shù)初值)×機(jī)器周期</p><p> 其時(shí)間單位與晶振周期或機(jī)器周期相同(us).</p>
87、<p><b> B、定時(shí)工作方式1</b></p><p> 方式1是16位計(jì)數(shù)結(jié)構(gòu)的工作方式,計(jì)數(shù)器由TH0全部8位和TL0全部8位構(gòu)成。其邏輯電路和工作情況與方式0完全相同。所不同的只是組成計(jì)數(shù)器的位數(shù)。</p><p> 當(dāng)為計(jì)數(shù)工作方式時(shí),計(jì)數(shù)值的范圍是:</p><p> 1~65536(216)</p&g
88、t;<p> 當(dāng)為定時(shí)工作方式時(shí),定時(shí)時(shí)間計(jì)算公式為:</p><p> ?。?16-計(jì)數(shù)初值)×晶振周期×12</p><p> 或 (216-計(jì)數(shù)初值)×機(jī)器周期</p><p> 其時(shí)間單位與晶振周期或機(jī)器周期相同。</p><p> 在方式0和方式1中,每當(dāng)CPU響
89、應(yīng)中斷后,都應(yīng)該在中斷服務(wù)子程序中對(duì)T0和T1初始化,即軟件重裝初值n。而且必須用兩條指令對(duì)TH0 和TL0(TH1和TL1)分別裝載初值。還應(yīng)該注意到中斷服務(wù)子程序執(zhí)行的時(shí)間可能部分地影響定時(shí)時(shí)間。</p><p> 5. 交通燈控制線路圖</p><p><b> 圖2-6</b></p><p> 第3章 交通燈控制系統(tǒng)軟件設(shè)計(jì)&l
90、t;/p><p> 3.1 程序設(shè)計(jì)流程圖</p><p> 3.1.1 程序設(shè)計(jì)總框圖:如圖4所示,按功能分為4個(gè)模塊</p><p> 1.顯示模塊:顯示模塊中用到了8個(gè)數(shù)碼管,該模塊是負(fù)責(zé)數(shù)碼管的正確顯示</p><p> 2.控制模塊:控制模塊中用到了STC89C51芯片的P1口設(shè)置紅、綠燈點(diǎn)亮的功能。交通燈的點(diǎn)亮采用發(fā)光二極管
91、實(shí)現(xiàn)。控制模塊實(shí)現(xiàn)的是紅、綠的時(shí)序控制。接收控制結(jié)果,并啟動(dòng)報(bào)警。</p><p> 3.PC機(jī)與單片機(jī)的串行通訊模塊:PC機(jī)與單片機(jī)的串行通訊是通過(guò)MAX232的電平轉(zhuǎn)換和RSR232總線來(lái)實(shí)現(xiàn)的,它工作時(shí),通過(guò)調(diào)用MATLAB設(shè)備控制工具箱中的serial 類及相關(guān)函數(shù),來(lái)創(chuàng)建串口設(shè)備對(duì)象,得到設(shè)備的文件句柄, 從而以操作文件的方式實(shí)現(xiàn)對(duì)串行口的讀寫操作。</p><p> 4.模
92、擬串行口模塊:因?yàn)镻C機(jī)和單片機(jī)的數(shù)據(jù)通訊,要用到單片機(jī)的串行口,而8個(gè)數(shù)碼管的顯示也要用到串行口,這就需要設(shè)置一個(gè)模擬串行口。而模擬串行口是通過(guò)P1.6來(lái)模擬(RXD)、P1.7來(lái)模擬(TXD)來(lái)實(shí)現(xiàn)控制74HC164的。</p><p> 5.圖像處理模塊:采用MATLAB函數(shù)編寫,在PC機(jī)上運(yùn)行,負(fù)責(zé)判斷是否在規(guī)定區(qū)域內(nèi)存在運(yùn)動(dòng)目標(biāo)。</p><p><b> 如圖3-
93、1</b></p><p> 3.1.2 程序詳細(xì)流程圖:如圖3-2</p><p> 圖3-2 程序詳細(xì)流程圖</p><p><b> 流程圖說(shuō)明:</b></p><p> 圖中定時(shí)器在每50ms中斷一下,設(shè)置為循環(huán)20次(此時(shí)為1秒),每1秒以后,R0,R1自動(dòng)減1。</p>&
94、lt;p> 程序中的判斷在相等情況下從右邊出,不相同的情況往下走。</p><p><b> 3.2延時(shí)的設(shè)定</b></p><p> 延時(shí)方法可以有兩種一種是利用AT89S51內(nèi)部定時(shí)器的溢出中斷來(lái)確定1秒的時(shí)間,另一種是采用軟件延時(shí)的方法。</p><p> 3.2.1 計(jì)數(shù)器初值計(jì)算</p><p&g
95、t; 定時(shí)器工作時(shí)必須給計(jì)數(shù)器送計(jì)數(shù)器初值,這個(gè)值是送到TH和TL中的。他是以加法記數(shù)的,并能從全1到全0時(shí)自動(dòng)產(chǎn)生溢出中斷請(qǐng)求。因此,我們可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值設(shè)定為C和計(jì)數(shù)初值設(shè)定為TC 可得到如下計(jì)算通式:</p><p><b> TC=M-C</b></p><p> 式中,M為計(jì)數(shù)器模值,該值和計(jì)數(shù)器工作方式有關(guān)。在方式0時(shí)M為213 ;在
96、方式1時(shí)M的值為216;在方式2和3為28 ; </p><p><b> 算法公式:</b></p><p> T=(M-TC)T計(jì)數(shù) 或TC=M-T/T計(jì)數(shù)</p><p> T計(jì)數(shù)是單片機(jī)時(shí)鐘周期TCLK的12倍;TC為定時(shí)初值</p><p> 如單片機(jī)的主脈沖頻率為TCLK12MHZ ,經(jīng)過(guò)12分頻
97、</p><p> 方式0 TMAX=213 ×1微秒=8.192毫秒</p><p> 方式1 TMAX=216 ×1微秒=65.536毫秒</p><p> 顯然1秒鐘已經(jīng)超過(guò)了計(jì)數(shù)器的最大定時(shí)間,所以我們只有采用定時(shí)器和軟件相結(jié)合的辦法才能解決這個(gè)問(wèn)題.</p><p><b> 實(shí)現(xiàn)1
98、秒的方法:</b></p><p> 我們采用在主程序中設(shè)定一個(gè)初值為20的軟件計(jì)數(shù)器和使T1定時(shí)50毫秒。這樣每當(dāng)T1到50毫秒時(shí)CPU就響應(yīng)它的溢出中斷請(qǐng)求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中,CPU先使軟件計(jì)數(shù)器減1,然后判斷它是否為零。為0表示1秒已到可以返回到輸出時(shí)間顯示程序。</p><p> 3.2.2 相應(yīng)程序代碼</p><p
99、> ?。ǎ保┒〞r(shí)器的設(shè)置 </p><p> 定時(shí)器需定時(shí)50毫秒,故T1工作于方式1。 </p><p> 初值計(jì)算: TC=M-T/T計(jì)數(shù)?。?16-50ms/1us=15536=3CBOH</p><p> START: MOV TMOD, #10H ;令TO為定時(shí)器方式1</p><p> MOV TH
100、0, #3CH ;裝入定時(shí)器初值</p><p> MOV TL0, #0BOH </p><p> SETB EA ; 打開總中斷</p><p> SETB ET1 ;開T1中斷</p><p> SETB ER ;啟動(dòng)T1計(jì)數(shù)器&
101、lt;/p><p> CLR FLAG1 </p><p> CLR FLAG2 </p><p> CLR FLAG3 </p><p> MOV R3, #20H ;軟件計(jì)數(shù)器賦初值</p><p> ?。ǎ玻┫鄳?yīng)中斷服務(wù)子程序</
102、p><p> ORG 001BH</p><p><b> LJMP DSD</b></p><p> ORG 0030H</p><p> DSD: INC R3</p><p> MOV TH0, #3CH ;重裝入定時(shí)器初值</p>&l
103、t;p> MOV TL0, #BOH </p><p> CJNE R3,#20,F(xiàn)H</p><p><b> DEC R0 </b></p><p><b> DEC R1</b></p><p> MOV R3,#00H</p><p> F
104、H: RETI</p><p><b> 程序的軟件延時(shí):</b></p><p> STC89C51的工作頻率為0—33MHZ,我們選用的STC89C51單片機(jī)的工作頻率為12MHZ。機(jī)器周期與主頻有關(guān),機(jī)器周期是主頻的12倍,所以一個(gè)機(jī)器周期的時(shí)間為12*(1/12M)=1us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過(guò)指令的執(zhí)行條數(shù)來(lái)確定1秒
105、的時(shí)間。</p><p> 具體的延時(shí)程序分析:</p><p> DELAY: MOV R4,#08H 延時(shí)1秒主程序</p><p> DE2: LCALL DELAY1 </p><p> DJNZ R4, DE2</p><p><b> RET</b></p>
106、<p> DELAY1:MOV R4,#00H ;延時(shí)125us 子程序</p><p> D1: MOV R5,#00H</p><p> D2: DJNE R5,DL2</p><p> DJNE R4,D1</p><p><b> RET </b></p>&
107、lt;p> DELAY1為一個(gè)雙重循壞 循環(huán)次數(shù)為256*256=65536 所以延時(shí)時(shí)間=65536*2=131072us 約為125us </p><p> DELAY R4設(shè)置的初值為8 主延時(shí)程序循環(huán)8次,所以125us*8= 1秒</p><p> 由于單片機(jī)的運(yùn)行速度很快其他的指令執(zhí)行時(shí)間可以忽略不計(jì)。</p><p> 3.3 MAT
108、LAB的運(yùn)用</p><p> 3.3.1 MATLAB的實(shí)驗(yàn)平臺(tái)</p><p> 我們采用的是MATLAB的軟件。運(yùn)行在Windows XP操作平臺(tái)下。開啟計(jì)算機(jī)進(jìn)入MATLAB的軟件介面。</p><p> 3.3.2 MATLAB的概況</p><p> MATLAB是矩陣實(shí)驗(yàn)室
109、(Matrix Laboratory)之意。除具備卓越的數(shù)值計(jì)算能力外,它還提供了專業(yè)水平的符號(hào)計(jì)算,文字處理,可視化建模仿真和實(shí)時(shí)控制等功能。</p><p> MATLAB的基本數(shù)據(jù)單位是矩陣,它的指令表達(dá)式與數(shù)學(xué),工程中常用的形式十分相似,故用MATLAB來(lái)解算問(wèn)題要比用C,FORTRAN等語(yǔ)言完相同的事情簡(jiǎn)捷得多.</p><p> 當(dāng)前流行的MATLAB 5.3/Simuli
110、nk 3.0包括擁有數(shù)百個(gè)內(nèi)部函數(shù)的主包和三十幾種工具包(Toolbox).工具包又可以分為功能性工具包和學(xué)科工具包.功能工具包用來(lái)擴(kuò)充MATLAB的符號(hào)計(jì)算,可視化建模仿真,文字處理及實(shí)時(shí)控制等功能.學(xué)科工具包是專業(yè)性比較強(qiáng)的工具包,控制工具包,信號(hào)處理工具包,通信工具包等都屬于此類.</p><p> 開放性使MATLAB廣受用戶歡迎.除內(nèi)部函數(shù)外,所有MATLAB主包文件和各種工具包都是可讀可修改的文件,
111、用戶通過(guò)對(duì)源程序的修改或加入自己編寫程序構(gòu)造新的專用工具包.</p><p> 3.3.3 MATLAB產(chǎn)生的歷史背景</p><p> 在70年代中期,Cleve Moler博士和其同事在美國(guó)國(guó)家科學(xué)基金的資助下開發(fā)了調(diào)用EISPACK和LINPACK的FORTRAN子程序庫(kù).EISPACK是特征值求解的FOETRAN程序庫(kù)
112、庫(kù)LINPACK是解線性方程的程序庫(kù).在當(dāng)時(shí),這兩個(gè)程序庫(kù)代表矩陣運(yùn)算的最高水平.</p><p> 到70年代后期,身為美國(guó)New Mexico大學(xué)計(jì)算機(jī)系系主任的Cleve Moler,在給學(xué)生講授線性代數(shù)課程時(shí),想教學(xué)生使用EISPACK和LINPACK程序庫(kù),但他發(fā)現(xiàn)學(xué)生用FORT編寫接口程序很費(fèi)時(shí)間,于是他開始自己動(dòng)手,利用業(yè)余時(shí)間為學(xué)生編寫EISPACKLINP的接口程序.Cleve Moler給這
113、個(gè)接口程序取名為MATLAB,該名為矩陣(matrix)和實(shí)驗(yàn)室兩個(gè)英文單詞的前三個(gè)字母的組合.在以后的數(shù)年里,MATLAB在多所大學(xué)里作為教學(xué)輔軟件使用,并作為面向大眾的免費(fèi)軟件廣為流傳.</p><p> 1983年春天,Cleve Moler到Standford大學(xué)講學(xué),MATLAB深深地吸引了工程師John Little.John Little敏銳地覺察到MATLAB在工程領(lǐng)域的廣闊前景.同年,他和Cl
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于89c51的智能交通燈軟件設(shè)計(jì)
- 基于89c51單片機(jī)交通燈課程設(shè)計(jì)
- 基于89c51單片機(jī)的現(xiàn)代交通燈設(shè)計(jì)
- 基于at89c51的交通燈設(shè)計(jì)
- 基于89c51單片機(jī)交通燈設(shè)計(jì)(附設(shè)計(jì)程序)
- 基于89c51的智能時(shí)鐘設(shè)計(jì)
- 智能交通燈畢業(yè)設(shè)計(jì)---以89c51單片機(jī)為核心的新交通控制控制系統(tǒng)的設(shè)計(jì)
- 基于89c51單片機(jī)的智能小車設(shè)計(jì)
- 基于at89c51單片機(jī)的交通燈設(shè)計(jì)畢業(yè)論文
- 基于at89c51單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)
- 基于89c51單片機(jī)的智能窗簾
- plc控制交通燈畢業(yè)設(shè)計(jì)---基于89s51的交通燈控制系統(tǒng)設(shè)計(jì)
- 89c51試題
- 基于89c51的籃球計(jì)分器設(shè)計(jì)
- 基于89c51的計(jì)算器設(shè)計(jì)
- 基于89c51的轉(zhuǎn)速測(cè)量系統(tǒng)設(shè)計(jì)c程序
- 基于51單片機(jī)智能交通燈的控制
- 基于89c51電子密碼鎖設(shè)計(jì)
- 基于51單片機(jī)的智能交通燈課程設(shè)計(jì)
- 基于89c51的led數(shù)字鐘設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論