版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 摘 要</b></p><p> 隨著城市改革開放的進(jìn)一步深化,出租車行業(yè)迅速發(fā)展,出租車計(jì)價(jià)器的市場(chǎng)需求量也大大增加。從加強(qiáng)出租車行業(yè)管理及服務(wù)質(zhì)量并且節(jié)約成本出發(fā),本設(shè)計(jì)以AT89C52 單片機(jī)為中心、附加A44E 霍爾傳感器測(cè)距,實(shí)現(xiàn)對(duì)出租車計(jì)價(jià)統(tǒng)計(jì),采用AT24C02 實(shí)現(xiàn)在系統(tǒng)掉電的時(shí)候保存單價(jià)和系統(tǒng)時(shí)間等信息,輸出采用8段數(shù)碼顯示管。本電路設(shè)計(jì)的
2、計(jì)價(jià)器不但能實(shí)現(xiàn)基本的計(jì)價(jià),而且還能根據(jù)白天、黑夜、中途等待來調(diào)節(jié)單價(jià),同時(shí)在不計(jì)價(jià)的時(shí)候還能作為時(shí)鐘為司機(jī)同志提供方便。</p><p> 關(guān)鍵詞:出租車計(jì)價(jià)器 AT89C52 單價(jià)調(diào)節(jié) 軟硬件設(shè)計(jì)</p><p> Taximeter based on single-chip design</p><p><b> Abstract</b&
3、gt;</p><p> Along with the urban reform open further deepening,the rental car profession are expanding rapidly,and the rental car mileage fare meter's market demand is also greatly increasing. In order
4、to strengthen the rental car trade management and the grade of service,and saves the cost to embark,The single-chip circuitry to AT89C52 as the center, an additional Hall sensor A44E ranging, to realize Taximeter statist
5、ics, using AT24C02 realize when the system power-down unit prices and save information suc</p><p> Key word: Rental car mileage fare meter、AT89C52 、unit price adjustment、software and hardware design</p&g
6、t;<p><b> 目錄</b></p><p><b> 摘 要I</b></p><p> AbstractII</p><p><b> 第一章 引言1</b></p><p><b> 1.1 概述1</b>&l
7、t;/p><p> 第二章 總體方案設(shè)計(jì)3</p><p> 2.1方案論證與比較3</p><p> 2.2單片機(jī)系統(tǒng)總體設(shè)計(jì)4</p><p><b> 2.3芯片簡(jiǎn)介5</b></p><p> 2.3.1 AT89C525</p><p> 2.3
8、.2 AT24C0211</p><p> 2.3.3 74HC16412</p><p> 2.3.4 DS130213</p><p> 第三章 硬件電路設(shè)計(jì)16</p><p> 3.1 主程序/CPU模塊16</p><p> 3.2 電源部分設(shè)計(jì)17</p><p&g
9、t; 3.3 路程測(cè)量部分17</p><p> 3.4 數(shù)據(jù)顯示部分19</p><p> 3.5 時(shí)鐘部分21</p><p> 3.6 掉電存儲(chǔ)單元AT24C02的設(shè)計(jì)21</p><p> 3.7 按鍵單元設(shè)計(jì)22</p><p> 第四章 系統(tǒng)軟件設(shè)計(jì)23</p><
10、;p> 4.1 主程序設(shè)計(jì)23</p><p> 4.2 定時(shí)中斷服務(wù)程序24</p><p> 4.3 里程計(jì)數(shù)中斷服務(wù)程序25</p><p> 4.4 中途等待中斷服務(wù)程序25</p><p> 4.5 顯示子程序服務(wù)程序26</p><p> 4.6 系統(tǒng)調(diào)試27</p>
11、;<p><b> 總結(jié)29</b></p><p><b> 參考文獻(xiàn)30</b></p><p> 附錄A(硬件原理圖)32</p><p> 附錄B(源程序)33</p><p><b> 致謝51</b></p><
12、p><b> 第一章 引言</b></p><p><b> 1.1 概述</b></p><p> 凡坐過出租車的人都知道,只要汽車一開動(dòng),隨著行駛里程的增加,就會(huì)看到汽車前面的計(jì)價(jià)器里程數(shù)字顯示的讀數(shù)從零逐漸增大,而當(dāng)行駛到某一值時(shí)(如5KM)計(jì)費(fèi)數(shù)字顯示開始從起步價(jià)(如6元)增加。當(dāng)出租車到達(dá)某地需要在那里等候時(shí),司機(jī)只要按一下
13、“計(jì)時(shí)”鍵,每等候一定時(shí)間,計(jì)費(fèi)顯示就增加一個(gè)該收的等候費(fèi)用。汽車?yán)^續(xù)行駛時(shí),停止計(jì)算等候費(fèi),繼續(xù)增加里程計(jì)費(fèi)。到達(dá)目的地,便可按顯示的數(shù)字收費(fèi)。</p><p> 汽車計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車行業(yè)發(fā)展的重要標(biāo)志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器無(wú)論是對(duì)廣大出租車司機(jī)朋友還是乘客來說都是很必要的。因此,汽車計(jì)價(jià)器的研究也是十分有一個(gè)應(yīng)用價(jià)值的。</p
14、><p> 隨著生活水平的提高,人們已不再滿足于衣食住的享受,出行的舒適已受到越來越多人的關(guān)注。于是,出租車行業(yè)以低價(jià)高質(zhì)的服務(wù)給人們帶來了出行的享受。但是總存在著買賣糾紛困擾著行業(yè)的發(fā)展。而在出租車行業(yè)中解決這一矛盾的最好方法就是改良計(jì)價(jià)器,用更加精良的計(jì)價(jià)器來為乘客提供更加方便快捷的服務(wù)。</p><p> 我國(guó)在70年代開始出現(xiàn)出租車,但那時(shí)的計(jì)費(fèi)系統(tǒng)大都是國(guó)外進(jìn)口不但不夠準(zhǔn)確,價(jià)格
15、還十分昂貴。隨著改革開放日益深入,出租車行業(yè)的發(fā)展勢(shì)頭已十分突出,國(guó)內(nèi)各機(jī)械廠家紛紛推出國(guó)產(chǎn)計(jì)價(jià)器。出租車計(jì)價(jià)器的功能從剛開始的只顯示路程(需要司機(jī)自己定價(jià),計(jì)算后四舍五入),到能夠自主計(jì)費(fèi),以及現(xiàn)在的能夠打發(fā)票和語(yǔ)音提示、按時(shí)間自主變動(dòng)單價(jià)等功能。隨著城市旅游業(yè)的發(fā)展,出租車行業(yè)已成為城市的窗口,象征著一個(gè)城市的文明程度。</p><p> 出租車計(jì)價(jià)器是出租車營(yíng)運(yùn)收費(fèi)的專用智能儀表,目前市面所使用的計(jì)價(jià)器大
16、都功能較少,這給出租車行業(yè)的服務(wù)質(zhì)量及管理帶來一定影響,而功能齊全的計(jì)價(jià)器大都采用雙CPU結(jié)構(gòu),這就提高了計(jì)價(jià)器的生產(chǎn)成本。</p><p> 現(xiàn)在各大中城市出租車行業(yè)都已普及自動(dòng)計(jì)價(jià)器,所以計(jì)價(jià)器技術(shù)的發(fā)展已成定局。而部分小城市尚未普及,但隨著城市建設(shè)日益加快,象征著城市面貌的出租車行業(yè)也將加速發(fā)展,計(jì)價(jià)器的普及也是毫無(wú)疑問的,所以未來汽車計(jì)價(jià)器的市場(chǎng)還是十分有潛力的。[16]</p><
17、p> 第二章 總體方案設(shè)計(jì)</p><p> 2.1方案論證與比較</p><p> 出租車計(jì)價(jià)器是出租車營(yíng)運(yùn)收費(fèi)的專用智能化儀表,隨著電子技術(shù)的發(fā)展,出租車計(jì)價(jià)器技術(shù)也在不斷進(jìn)步和提高,國(guó)內(nèi)出租車計(jì)價(jià)器已經(jīng)經(jīng)歷了4個(gè)階段的發(fā)展。從傳統(tǒng)的全部由機(jī)械元器件組成的機(jī)械式,到半電子式即用電子線路代替部分機(jī)械元器件的出租車計(jì)價(jià)器。出租車計(jì)價(jià)器計(jì)費(fèi)是否正確、出租車司機(jī)是否超速才是乘客最關(guān)
18、心的問題,而計(jì)價(jià)器營(yíng)運(yùn)數(shù)據(jù)的管理是否方便才是出租車司機(jī)最關(guān)注的。</p><p> 方案一:采用數(shù)字電路控制。其原理方框圖如圖 2.1所示。采用傳感器件,輸出脈沖信號(hào),經(jīng)過放大整形作為移位寄存器的脈沖,實(shí)現(xiàn)計(jì)價(jià)。</p><p> 圖2.1 數(shù)字電路方案</p><p> 考慮到這種電路過于簡(jiǎn)單,性能不夠穩(wěn)定,而且不能調(diào)節(jié)單價(jià),也不能根據(jù)天氣調(diào)節(jié)計(jì)費(fèi)標(biāo)準(zhǔn),電路
19、不夠?qū)嵱谩Uw電路的規(guī)模較大,用到的器件多,造成故障率高,難調(diào)試,對(duì)于模式的切換需要用到機(jī)械開關(guān),機(jī)械開關(guān)時(shí)間久了會(huì)造成接觸不良,功能不易實(shí)現(xiàn)。</p><p> 方案二:采用單片機(jī)控制。利用單片機(jī)豐富的 I/ O端口,及其控制的靈活性,實(shí)現(xiàn)基本的里程計(jì)價(jià)功能和價(jià)格調(diào)節(jié)、時(shí)鐘顯示功能。其原理如圖2.2所示。</p><p> 圖2.2單片機(jī)控制方案</p><p&g
20、t; 通過比較以上兩種方案,單片機(jī)方案有較大的活動(dòng)空間,相對(duì)來說功能強(qiáng)大,用較少的硬件和適當(dāng)?shù)能浖嗷ヅ浜峡梢院苋菀椎膶?shí)現(xiàn)設(shè)計(jì)要求,且靈活性強(qiáng),可以通過軟件編程來完成更多的附加功能。不但能實(shí)現(xiàn)所要求的功能而且能在很大的程度上擴(kuò)展功能,而且還可以方便的對(duì)系統(tǒng)進(jìn)行升級(jí),所以采用后一種方案。</p><p> 在過去,出租車采用機(jī)械式的計(jì)價(jià)器,用齒輪比的方式來計(jì)算出租車所跑的里程數(shù),并由里程數(shù)來?yè)Q算車費(fèi);由于機(jī)械的
21、齒輪體積比較大,計(jì)算不是很準(zhǔn)確,而且容易磨損,所以選用用了傳感器的方式,利用傳感器接收車的跑動(dòng)信息,從而計(jì)算里程數(shù)和車費(fèi),這樣計(jì)價(jià)就會(huì)非常準(zhǔn)確。完成此裝置所需期間簡(jiǎn)單,成本也非常低,技術(shù)上也容易實(shí)現(xiàn)</p><p> 2.2單片機(jī)系統(tǒng)總體設(shè)計(jì)</p><p> 單片機(jī)采集并判斷空車燈信號(hào)及路程檢測(cè)傳感器信號(hào),當(dāng)出租車啟動(dòng)時(shí),單片機(jī)檢測(cè)到霍爾傳感器的脈沖信號(hào)并進(jìn)行里程計(jì)算。當(dāng)無(wú)乘客時(shí),單
22、片機(jī)調(diào)用實(shí)時(shí)時(shí)間芯片 DS1302程序和74HC164串口顯示驅(qū)動(dòng)程序,用LED進(jìn)行時(shí)鐘顯示;當(dāng)空車燈掰下乘客上車時(shí):通過DS1302獲取時(shí)間信息分辨白天/晚上,然后調(diào)用AT24C02程序獲取白天/晚上的單價(jià)及起始價(jià),便開始計(jì)價(jià)并顯示時(shí)間、里程和金額等信息;當(dāng)空車燈打上乘客下車時(shí):等待出租車再次啟動(dòng)后單次金額與里程等信息清零復(fù)位,就此完成一次計(jì)價(jià)。</p><p> 圖2.3 總體設(shè)計(jì)框圖</p>
23、<p><b> 2.3芯片簡(jiǎn)介</b></p><p> 本設(shè)計(jì)采用了4個(gè)芯片,分別為AT89C52、AT24C02、74HC164、DS1302。</p><p> 2.3.1 AT89C52</p><p> 圖2.4 單片機(jī)引腳圖</p><p> AT89C52是51系列單片機(jī)的一個(gè)型號(hào),
24、它是ATMEL公司生產(chǎn)的。</p><p> AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)大的AT89C52單片機(jī)可提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場(chǎng)合。<
25、;/p><p> AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲(chǔ)器可有效地降低開發(fā)成本。</p><p> P0口:P0口是一組8 位漏極開路型雙向
26、I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對(duì)端口P0寫“1”時(shí),可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash 編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。</p><p> P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向
27、I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。與AT89C51不同之處是,P1.0 和P1.1 還可分別作為定時(shí)/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX),F(xiàn)lash 編程和程序校驗(yàn)期間,P1接收低8 位地址。</p>
28、;<p> P2口:P2 是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL邏輯門電路。對(duì)端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。Flash 編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。</p><p> P3口:P3口是一組帶有內(nèi)
29、部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3口將用上拉電阻。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能P3口還接收一些用于Flash 閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使
30、單片機(jī)復(fù)位。</p><p> ALE/PROG:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE 仍以時(shí)鐘振蕩頻率的1/6 輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。對(duì)Flash 存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。</p><p> MOVX和MOVC指令才能將ALE激活。此外,該引腳會(huì)被
31、微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無(wú)效。</p><p> PSEN:程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52 由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN信號(hào)。</p><p> EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0
32、000H—FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。</p><p> XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p> XTAL2:振蕩器反相放大器的輸出端。</p><p> 特殊功能寄存器:在AT89C52片內(nèi)存儲(chǔ)器中,80H-FFH共128個(gè)單元為特殊功能寄存器
33、(SFE)。</p><p> AT89C52除了與AT89C51所有的定時(shí)/計(jì)數(shù)器0和定時(shí)/計(jì)數(shù)器1外,還增加了一個(gè)定時(shí)/計(jì)數(shù)器2。定時(shí)/計(jì)數(shù)器2的控制和狀態(tài)位位于T2CON,T2MOD,寄存器對(duì)(RCAO2H、RCAP2L)是定時(shí)器2在16位捕獲方式或16位自動(dòng)重裝載方式下的捕獲/自動(dòng)重裝載寄存器。</p><p> 數(shù)據(jù)存儲(chǔ)器:AT89C52有256個(gè)字節(jié)的內(nèi)部RAM,80H-F
34、FH 高128個(gè)字節(jié)與特殊功能寄存器(SFR)地址是重疊的,也就是高128字節(jié)的RAM 和特殊功能寄存器的地址是相同的,但物理上它們是分開的。當(dāng)一條指令訪問7FH 以上的內(nèi)部地址單元時(shí),指令中使用的尋址方式是不同的,也即尋址方式?jīng)Q定是訪問高128字節(jié)RAM 還是訪問特殊功能寄存器。如果指令是直接尋址方式則為訪問特殊功能寄存器。</p><p> 定時(shí)器0和定時(shí)器1:AT89C52的定時(shí)器0和定時(shí)器1的工作方式與
35、AT89C51相同。</p><p> 定時(shí)器2:定時(shí)器2是一個(gè)16位定時(shí)/計(jì)數(shù)器。它既可當(dāng)定時(shí)器使用,也可作為外部事件計(jì)數(shù)器使用,其工作方式由特殊功能寄存器T2CON的C/T2 位選擇。定時(shí)器2有三種工作方式:捕獲方式,自動(dòng)重裝載(向上或向下計(jì)數(shù))方式和波特率發(fā)生器方式,工作方式由T2CON的控制位來選擇。</p><p> 捕獲方式:在捕獲方式下,通過T2CON控制位EXEN2來選
36、擇兩種方式。如果EXEN2=0,定時(shí)器2是一個(gè)16位定時(shí)器或計(jì)數(shù)器。</p><p> 自動(dòng)重裝載(向上或向下計(jì)數(shù)器)方式:當(dāng)定時(shí)器2工作于16位自動(dòng)重裝載方式時(shí),能對(duì)其編程為向上或向下計(jì)數(shù)方式,這個(gè)功能可通過特殊功能寄存器T2CON。</p><p> 波特率發(fā)生器:當(dāng)T2CON中的TCLK和RCLK置位時(shí),定時(shí)/計(jì)數(shù)器2作為波特率發(fā)生器使用。如果定時(shí)/計(jì)數(shù)器2作為發(fā)送器或接收器,其
37、發(fā)送和接收的波特率可以是不同的,定時(shí)器1用于其它功能,若RCLK和TCLK置位,則定時(shí)器2作于波特率發(fā)生器方式。[10]</p><p> 可編程時(shí)鐘輸出:定時(shí)器2可通過編程從P1.0輸出一個(gè)占空比為50%的時(shí)鐘信號(hào)。P1.0引腳除了是一個(gè)標(biāo)準(zhǔn)的I/O口外,還可以通過編程使其作為定時(shí)/計(jì)數(shù)器2的外部時(shí)鐘輸入和輸出占空比50%的時(shí)鐘脈沖。當(dāng)時(shí)鐘振蕩頻率為16MHz時(shí),輸出時(shí)鐘頻率范圍為61Hz—4MHz。<
38、/p><p> UART:AT89C52的UART工作方式與AT89C51工作方式相同。</p><p> 中斷:AT89C52共有6個(gè)中斷向量:兩個(gè)外中斷(INT0和INT1),3個(gè)定時(shí)器中斷(定時(shí)器0、1、2)和串行口中斷。這些中斷源可通過分別設(shè)置專用寄存器IE的置位或清0來控制每一個(gè)中斷的允許或禁止。IE也有一個(gè)總禁止位EA,它能控制所有中斷的允許或禁止。</p>&l
39、t;p> 時(shí)鐘振蕩器:AT89C52中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器。</p><p> 空閑節(jié)電模式:在空閑工作模式狀態(tài),CPU自身處于睡眠狀態(tài)而所有片內(nèi)的外設(shè)仍保持激活狀態(tài),這種方式由軟件產(chǎn)生。此時(shí),同時(shí)將片內(nèi)RAM和所有特殊功能寄存器的內(nèi)容凍結(jié)??臻e模式可由任
40、何允許的中斷請(qǐng)求或硬件復(fù)位終止。</p><p> 掉電模式:在掉電模式下,振蕩器停止工作,進(jìn)入掉電模式的指令是最后一條被執(zhí)行的指令,片內(nèi)RAM和特殊功能寄存器的內(nèi)容在終止掉電模式前被凍結(jié)。退出掉電模式的唯一方法是硬件復(fù)位,復(fù)位后將重新定義全部特殊功能寄存器,但不改變RAM中的內(nèi)容,在Vcc恢復(fù)到正常工作電平前,復(fù)位應(yīng)無(wú)效,且必須保持一定時(shí)間以使振蕩器重啟動(dòng)并穩(wěn)定工作。[11]</p><p
41、> 程序存儲(chǔ)器的加密:AT89C52有3個(gè)程序加密位,可對(duì)芯片上的3個(gè)加密位LB1、LB2、LB3 進(jìn)行編程(P)或不編程(U)來得到。當(dāng)加密位LB1被編程時(shí),在復(fù)位期間,EA 端的邏輯電平被采樣并鎖存,如果單片機(jī)上電后一直沒有復(fù)位,則鎖存起的初始值是一個(gè)隨機(jī)數(shù),且這個(gè)隨機(jī)數(shù)會(huì)一直保存到真正復(fù)位為止。為使單片機(jī)能正常工作,被鎖存的EA電平值必須與該引腳當(dāng)前的邏輯電平一致。此外,加密位只能通過整片擦除的方法清除。</p>
42、;<p> Flash存儲(chǔ)器的編程:AT89C52單片機(jī)內(nèi)部有8k字節(jié)的Flash PEROM,這個(gè)Flash 存儲(chǔ)陣列出廠時(shí)已處于擦除狀態(tài)(即所有存儲(chǔ)單元的內(nèi)容均為FFH),用戶隨時(shí)可對(duì)其進(jìn)行編程。編程接口可接收高電壓(+12V)或低電壓(Vcc)的允許編程信號(hào)。低電壓編程模式適合于用戶在線編程系統(tǒng),而高電壓編程模式可與通用EPROM編程器兼容。</p><p> 數(shù)據(jù)查詢:AT89C52單片
43、機(jī)用Data Palling表示一個(gè)寫周期結(jié)束為特征,在一個(gè)寫周期中,如需讀取最后寫入的一個(gè)字節(jié),則讀出的數(shù)據(jù)的最高位(P0.7)是原來寫入字節(jié)最高位的反碼。寫周期完成后,所輸出的數(shù)據(jù)是有效的數(shù)據(jù),即可進(jìn)入下一個(gè)字節(jié)的寫周期,寫周期開始后,Data Palling可能隨時(shí)有效。[9]</p><p> Ready/Busy:字節(jié)編程的進(jìn)度可通過“RDY/BSY輸出信號(hào)監(jiān)測(cè),編程期間,ALE變?yōu)楦唠娖健癏”后,P
44、3.4(RDY/BSY)端電平被拉低,表示正在編程狀態(tài)(忙狀態(tài))。編程完成后,P3.4變?yōu)楦唠娖奖硎緶?zhǔn)備就緒狀態(tài)。</p><p> 程序校驗(yàn):如果加密位LB1、LB2沒有進(jìn)行編程,則代碼數(shù)據(jù)可通過地址和數(shù)據(jù)線讀回原編寫的數(shù)據(jù)。加密位不可直接校驗(yàn),加密位的校驗(yàn)可通過對(duì)存儲(chǔ)器的校驗(yàn)和寫入狀態(tài)來驗(yàn)證。</p><p> 芯片擦除:利用控制信號(hào)的正確組合(表6)并保持ALE/PROG引腳10
45、Ms的低電平脈沖寬度即可將PEROM 陣列(4k字節(jié))和三個(gè)加密位整片擦除,代碼陣列在片擦除操作中將任何非空單元寫入“1”,這步驟需再編程之前進(jìn)行。[3]</p><p> 2.3.2 AT24C02</p><p> AT24C02是由ATMEL公司提供的,I2C總線串行EEPROM,其容量為1KB,工作電壓在1.8V~5.5V之間,生產(chǎn)工藝是CMOS工藝,其引腳如圖2.5所示。&l
46、t;/p><p> 圖2.5 芯片引腳圖</p><p><b> 各引腳功能如下:</b></p><p> A2~A0:這3個(gè)引腳是器件地址選擇引腳。將這3個(gè)引腳配置成不同的編碼值,在同一串行總線上最多可擴(kuò)充8片同一容量或不同容量的24系列串行EEPROM芯片。</p><p> SDA:串行數(shù)據(jù)輸入輸出口,是一
47、個(gè)雙向的漏極開路結(jié)構(gòu)的引腳,容量擴(kuò)展時(shí)可以將多片24系列的SDA引腳直接相連。 </p><p> SCL:串行移位時(shí)鐘控制端。寫入時(shí)上升沿起作用,讀出時(shí)下降沿起作用。</p><p> WP:硬件寫保護(hù)控制引腳。當(dāng)其為低電平時(shí),正常寫操作,高電平時(shí),對(duì)EEPROM部分存儲(chǔ)區(qū)域提供硬件寫保護(hù)功能,即對(duì)被保護(hù)區(qū)域只能讀不能寫。</p><p><b>
48、 VSS:接地。</b></p><p> VCC:接+5V電壓。</p><p> AT24C02中帶有的片內(nèi)地址寄存器。每寫入或讀出一個(gè)數(shù)據(jù)字節(jié)后,該地址寄存器自動(dòng)加1,以實(shí)現(xiàn)對(duì)下一個(gè)存儲(chǔ)單元的讀寫。所有字節(jié)均以單一操作方式讀取。為降低總的寫入時(shí)間,一次操作可寫入多達(dá)8個(gè)字節(jié)的數(shù)據(jù)。</p><p> 2.3.3 74HC164</p&g
49、t;<p> 圖2.6 74HC164引腳圖</p><p> 74HCT16是高速硅門CMOS器件,與低功耗肖特基型TTL(LSTTL)器件的引腳兼容。74HC164、74HCT164是8位邊沿觸發(fā)式移位寄存器,串行輸入數(shù)據(jù),然后并行輸出。數(shù)據(jù)通過兩個(gè)輸入端(DSA 或 DSB)之一串行輸入;任一輸入端可以用作高電平使能端,控制另一輸入端的數(shù)據(jù)輸入。兩個(gè)輸入端或者連接在一起,或者把不用的輸入端
50、接高電平,一定不要懸空。</p><p> 時(shí)鐘 (CP)每次由低變高時(shí),數(shù)據(jù)右移一位,輸入到Q0,Q0是兩個(gè)數(shù)據(jù)輸入端(DSA 和 DSB)的邏輯與,它將上升時(shí)鐘沿之前保持一個(gè)建立時(shí)間的長(zhǎng)度。</p><p> 主復(fù)位(MR)輸入端上的一個(gè)低電平將使其它所有輸入端都無(wú)效,同時(shí)非同步地清除寄存器,強(qiáng)制所有的輸出為低電平。</p><p><b> 特
51、性:</b></p><p> (1)門控串行數(shù)據(jù)輸入;</p><p> ?。?)異步中央復(fù)位;</p><p> (3)符合JEDEC標(biāo)準(zhǔn) no. 7A; </p><p> ?。?)靜電放電(ESD) 保護(hù):</p><p> ?、貶BM EIA/JESD22-A114-B超過2000 V;<
52、;/p><p> ?、贛M EIA/JESD22-A115-A超過200 V; </p><p> ?。?)多種封裝形式;</p><p> (6)額定從-40 °C至+85 °C和-40 °C至+125 °C 。</p><p><b> 引腳說明如表2.1</b></p&
53、gt;<p> 表2.1 引腳功能表</p><p> 2.3.4 DS1302</p><p> DS1302是美國(guó)DALLA公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CP進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)
54、部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS120兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。 </p><p> DS1302的引腳排列,其中Vcc1為后備電源,VCC2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2
55、V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中RST置為低
56、電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向)。SCLK始終是輸入端。如圖2.7為DS1302的引腳功能圖。</p><p> 圖 2.7 DS1302 引腳功能圖</p><p> DS1302控制字節(jié)的最高有效位(位7)必須是邏輯1,如果
57、它為0,則不能把數(shù)據(jù)寫入DS1302中,位6如果為0,則表示存取時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。 </p><p> 在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS13
58、02的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。 </p><p> 此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內(nèi)容。DS1302與RAM相關(guān)的寄存器分為兩類:一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H~FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的R
59、AM寄存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。 </p><p> 第三章 硬件電路設(shè)計(jì)</p><p> 3.1 主程序/CPU模塊</p><p> 圖3.1 AT89C52模塊</p><p> 該模塊主要包括系統(tǒng)初始化、里程的識(shí)別和費(fèi)率的計(jì)算及各種功能模塊的的組織和管理等。主
60、程序模塊在系統(tǒng)中起著重要的作用。</p><p> AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)大的AT89C52單片機(jī)可為您提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場(chǎng)
61、合。</p><p> AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫口線,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲(chǔ)器可有效地降低開發(fā)成本。[9]</p><p><b> 主要功
62、能特性:</b></p><p> ?。?)兼容MCS51指令系統(tǒng),8k可反復(fù)擦寫(>1000次)Flash ROM;</p><p> ?。?)32個(gè)雙向I/O口,256x8bit內(nèi)部RAM;</p><p> ?。?)3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷,時(shí)鐘頻率0-24MHz;</p><p> ?。?)2個(gè)串行中斷,可編
63、程UART串行通道; </p><p> ?。?)2個(gè)外部中斷源,共6個(gè)中斷源;</p><p> (6)2個(gè)讀寫中斷口,3級(jí)加密位;</p><p> ?。?)低功耗空閑和掉電模式,軟件設(shè)置睡眠和喚醒功能 。</p><p> 3.2 電源部分設(shè)計(jì)</p><p> 由于計(jì)價(jià)器的工作環(huán)境比較差,它要求有抗振動(dòng)、
64、抗高低溫、抗潮濕、抗電磁干擾等能力,特別是電源方面的干擾,如出租車啟動(dòng)時(shí),發(fā)動(dòng)機(jī)打火、電瓶充電等造成輸入計(jì)價(jià)器的+12V電源不穩(wěn)定。因此采用+12V電瓶電源經(jīng)過濾波和電源穩(wěn)壓管理芯片 78L05后得到+ 5 V的穩(wěn)定電壓輸出,保證整個(gè)系統(tǒng)能夠正常工作。電路如圖3.2所示。</p><p><b> 圖3.2 電源電路</b></p><p> 3.3 路程測(cè)量部分
65、</p><p> 里程計(jì)算是通過安裝在車輪上的霍爾傳感器A44E檢測(cè)到的信號(hào),送到單片機(jī),經(jīng)處理計(jì)算,送給顯示單元的。其原理如圖 3.3所示。</p><p> 圖 3.3 A44E傳感器工作原理圖</p><p> 在霍爾電勢(shì)發(fā)生器的兩端加上電壓VCC后,根據(jù)霍耳效應(yīng)原理,當(dāng)霍耳片處在磁場(chǎng)中時(shí),霍爾傳感器的輸出端輸出低電平。當(dāng)車輪轉(zhuǎn)動(dòng)一圈時(shí)小磁鐵提供一個(gè)磁
66、場(chǎng),則霍爾傳感器輸出一次低電平完成一次數(shù)據(jù)采集。車輪每轉(zhuǎn)一圈,霍爾開關(guān)就檢測(cè)并輸出信號(hào),引起單片機(jī)的中斷,對(duì)脈計(jì)數(shù)。通過計(jì)算將脈沖增加體現(xiàn)在金額和里程上。</p><p> 由于A44E屬于開關(guān)型的霍爾器件,其工作電壓范圍比較寬(4.5~18V),其輸出的信號(hào)符合TTL電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的I/O端口上,而且其最高檢測(cè)頻率可達(dá)到1MHZ。汽車聯(lián)軸器按圓周間隔嵌入磁鋼,用霍爾傳感器集成芯片A44E檢測(cè)并輸
67、出脈沖,霍爾傳感器集成芯片A44E有信號(hào)轉(zhuǎn)換、電壓放大、整形輸出等功能。</p><p> 出租車中需要一個(gè)能準(zhǔn)確獲得車輪轉(zhuǎn)動(dòng)即路程計(jì)量信號(hào)的裝置,以得到標(biāo)準(zhǔn)的脈沖信號(hào)送入單片機(jī)的P3.3引腳,利用單片機(jī)的T1的計(jì)數(shù)功能完成1000次的計(jì)數(shù)后產(chǎn)生一中斷來完成路程的測(cè)量。(設(shè)車輪周長(zhǎng)為1m,則霍爾傳感器每產(chǎn)生1000個(gè)脈沖便表示車已行程1km。我們選擇了P3.3口作為信號(hào)的輸入端,內(nèi)部采用外部中斷1,車輪每轉(zhuǎn)一圈
68、(我們?cè)O(shè)車輪的周長(zhǎng)是1米),霍爾開關(guān)就檢測(cè)并輸出信號(hào),引起單片機(jī)的中斷,對(duì)脈計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到1000次時(shí),也就是1公里,單片機(jī)就控制將金額自動(dòng)的增加,其計(jì)算公式:當(dāng)前單價(jià)×公里數(shù)=金額。</p><p> 費(fèi)用計(jì)算功能:費(fèi)用計(jì)算包括三部分:起步費(fèi)、行使費(fèi)和中途等待費(fèi)用。</p><p> ?。?) 起步費(fèi)用白天6元晚上7元;</p><p> (2)
69、行使費(fèi)用1.6/公里;</p><p> ?。?) 中途等待費(fèi)用0.1/分鐘。</p><p> 3.4 數(shù)據(jù)顯示部分</p><p> 由于設(shè)計(jì)要求有單價(jià)(2位)、總金額(4位)顯示輸出,加上我們另外擴(kuò)展了時(shí)鐘顯示(包含時(shí)分秒的顯示),采用 LCD液晶段碼顯示,在距離屏幕1米之外就無(wú)法看清數(shù)據(jù),不能滿足要求,而且在白天其對(duì)比度也不能夠滿足要求,因此我們采用6位
70、LED數(shù)碼管來顯示。</p><p> 本設(shè)計(jì)的數(shù)據(jù)顯示采用74HC164來驅(qū)動(dòng)(共陽(yáng))的方法。74HC164是比較典型的移位寄存器,該移位寄存器有一個(gè)數(shù)據(jù)輸入端口、一個(gè)時(shí)鐘信號(hào)端口和八個(gè)輸出端口。這種方法只需要2個(gè)I/O端口,而且在鎖存器件這2個(gè)端口還可以干別的事情。</p><p> 數(shù)碼管顯示是各種儀器設(shè)備所不可缺少得重要組成部分,按照顯示方法得不同可分為靜態(tài)顯示和動(dòng)態(tài)顯示兩種這
71、里我們所設(shè)計(jì)得電路顯示屬于靜態(tài)顯示,靜態(tài)數(shù)碼管顯示的優(yōu)點(diǎn)在于編寫程序相對(duì)比較簡(jiǎn)單一旦將欲顯示的數(shù)據(jù)發(fā)送出去只要當(dāng)前顯示的數(shù)據(jù)沒有變化就無(wú)須理睬它。</p><p> 圖3.9 顯示電路原理圖</p><p> 從單片機(jī)串口輸出的信號(hào)先送到左邊的移位寄存器(74HC164),由于移位脈沖的作用,使數(shù)據(jù)向右移,達(dá)到顯示的目的。 移位寄存器74HC164還兼作數(shù)碼管的驅(qū)動(dòng),插頭1(heade
72、r1)接數(shù)據(jù)和脈沖輸出端,插頭2(header2)接電源。</p><p><b> 3.5 時(shí)鐘部分</b></p><p> 計(jì)價(jià)器在出租車空車行駛時(shí)需要顯示實(shí)時(shí)時(shí)鐘,因?yàn)樗臅r(shí)鐘是作為白天/晚上單價(jià)自動(dòng)轉(zhuǎn)換的一個(gè)基準(zhǔn),而且計(jì)價(jià)器的時(shí)鐘顯示能為司機(jī)和乘客提供方便,所以選擇一個(gè)好的時(shí)鐘芯片對(duì)計(jì)價(jià)器很重要。DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗
73、的實(shí)時(shí)時(shí)鐘芯片,采用SPI三線接口與CPU進(jìn)行同步通信;時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年;通過設(shè)DS1302的控制/狀態(tài)寄存器選擇日歷,時(shí)鐘方式經(jīng)過初始校準(zhǔn)后即可工作使用;工作電壓寬達(dá)2.5~5.5V,采用雙電源供電(主電源和備用電源),并設(shè)置備用電源充電方式,提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力,在沒有主電源的情況下啟用備用電源能保存時(shí)間信息及數(shù)據(jù)。如圖3.10所示。</p><p> 圖3.10 時(shí)
74、鐘顯示電路原理圖</p><p> 3.6 掉電存儲(chǔ)單元AT24C02的設(shè)計(jì)</p><p> 掉電存儲(chǔ)單元的作用是在電源斷開的時(shí)候,存儲(chǔ)當(dāng)前設(shè)定的單價(jià)信息。AT24C02是</p><p> ATMEL公司的2KB字節(jié)的電可擦除存儲(chǔ)芯片,采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而
75、且采用8腳的DIP封裝,使用方便。其電路如圖3.11所示。</p><p> 圖3.11掉電存儲(chǔ)電路</p><p> 由于AT24C02的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(移位脈沖)和SDA(數(shù)據(jù)/地址)與單片機(jī)傳送數(shù)據(jù)。每當(dāng)設(shè)定一次單價(jià),系統(tǒng)就自動(dòng)調(diào)用存儲(chǔ)程序,將單價(jià)信息保存在芯片內(nèi);當(dāng)系統(tǒng)重新上電的時(shí)候,自動(dòng)調(diào)用讀存儲(chǔ)器程序,將存儲(chǔ)器內(nèi)的單價(jià)等
76、信息,讀到緩存單元中,供主程序使用。</p><p> 3.7 按鍵單元設(shè)計(jì)</p><p> 圖3.12 按鍵電路</p><p> 電路共采用了五個(gè)按鍵:S1、S2、S3、S4,其功能分別是:S1查詢按鍵,S2功能設(shè)定/確認(rèn)按鍵,S3+/白天晚上切換按鍵,S4-/中途等待開關(guān)。</p><p> 第四章 系統(tǒng)軟件設(shè)計(jì)</p&
77、gt;<p><b> 4.1 主程序設(shè)計(jì)</b></p><p> 在主程序模塊中,需要完成對(duì)各接口芯片的初始化、出租車起價(jià)和單價(jià)的初始化、中斷向量的設(shè)計(jì)以及開中斷、循環(huán)等待等工作。另外,在主程序模塊中還需要設(shè)置啟動(dòng)/ 清除標(biāo)志寄存器、里程寄存器和價(jià)格寄存器,并對(duì)它們進(jìn)行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動(dòng)、清除、計(jì)程和計(jì)價(jià)等不同的操作。當(dāng)空車信號(hào)燈
78、打下時(shí),表示有乘客上車,并啟動(dòng)計(jì)價(jià),將根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷出行駛里程是否已超過起價(jià)公里數(shù)。若已超過,則根據(jù)里程值、每公里的單價(jià)和起價(jià)來計(jì)算出當(dāng)前的累計(jì)價(jià)格,并將結(jié)果存于價(jià)格寄存器中,然后將當(dāng)前時(shí)間和累計(jì)價(jià)格送到LED 顯示電路顯示出來。當(dāng)中途塞車(等待或低速行駛)時(shí),在一定時(shí)間內(nèi)沒有檢測(cè)到傳感器的脈沖信號(hào)就啟動(dòng)T0定時(shí)器進(jìn)行計(jì)時(shí),當(dāng)超過規(guī)定的等待時(shí)間后,計(jì)價(jià)器就根據(jù)等待價(jià)格進(jìn)行當(dāng)前金額的累加與顯示,并在計(jì)價(jià)器上顯示等待時(shí)間;
79、當(dāng)?shù)竭_(dá)目的地的時(shí)候,由于霍爾開關(guān)沒有送來脈沖信號(hào),就停止計(jì)價(jià),顯示當(dāng)前所應(yīng)該付的金額和對(duì)應(yīng)的單價(jià),到下次啟動(dòng)計(jì)價(jià)時(shí),系統(tǒng)自動(dòng)對(duì)顯示清零,并重新進(jìn)行初始化過程。司機(jī)把空車燈打上,就停止計(jì)價(jià),顯示當(dāng)前所應(yīng)該付的金額和對(duì)應(yīng)的單價(jià),等乘客下車后,啟動(dòng)出租車,計(jì)價(jià)</p><p> 圖4.1 主程序流程圖</p><p> 計(jì)價(jià)1:起步價(jià)+里程×每公里價(jià)格(1.6元)</p>
80、;<p> 計(jì)價(jià)2:起步價(jià)+里程×1.6元+等待時(shí)間×等待價(jià)格(0.1元/分鐘) </p><p><b> 計(jì)價(jià)3;起步價(jià) </b></p><p> 計(jì)價(jià)4:起步價(jià)+等待時(shí)間×等待價(jià)格(0.1元/分鐘) </p><p> 4.2 定時(shí)中斷服務(wù)程序</p><
81、p> 在定時(shí)中斷服務(wù)程序中,每10ms產(chǎn)生一次中斷,當(dāng)產(chǎn)生100次中斷的時(shí)候,也就到了一秒,按秒累積60次后恰好為1min,這樣就可完成定時(shí)1min的功能。</p><p> 4.3 里程計(jì)數(shù)中斷服務(wù)程序</p><p> 每當(dāng)霍爾傳感器輸出一個(gè)低電平信號(hào)就使單片機(jī)中斷一次,里程計(jì)數(shù)器T1對(duì)里程脈沖計(jì)滿1000次時(shí),就完成當(dāng)前行駛里程數(shù)的累加操作,并將結(jié)果存入里程寄存器中。其程
82、序流程如圖4.2 所示.</p><p> 圖4.2 里程計(jì)數(shù)流程圖</p><p> 4.4 中途等待中斷服務(wù)程序</p><p> 當(dāng)中途等待按鍵S4按下時(shí),就啟動(dòng)T0開始計(jì)時(shí),每當(dāng)計(jì)時(shí)到達(dá)1min,等待時(shí)間累加器值就自加,并將結(jié)果存入時(shí)間寄存器中。當(dāng)中途等待結(jié)束的時(shí)候,即再按一下S4鍵就自動(dòng)切換到正常的計(jì)價(jià)。其程序流程如圖4.3所示。</p>
83、<p> 圖4.3 中途等待流程圖</p><p> 4.5 顯示子程序服務(wù)程序</p><p> 顯示是檢驗(yàn)程序結(jié)果最直接也是最簡(jiǎn)單的硬件設(shè)計(jì),采用移位寄存器驅(qū)動(dòng)6位LED方式,實(shí)行靜態(tài)顯示。靜態(tài)顯示的優(yōu)點(diǎn)在于,編寫程序相對(duì)比較簡(jiǎn)單,一旦將欲顯示的數(shù)據(jù)發(fā)送出去,只要當(dāng)前顯示的數(shù)據(jù)沒有變化,就無(wú)須理睬它。十進(jìn)制數(shù)顯也采用軟件方式將BCD碼轉(zhuǎn)換成七段碼。轉(zhuǎn)換過程:顯示的B
84、CD碼通過計(jì)算、查表、求出存放顯示段碼單元地址,從該地址單位中取出送顯示端口輸出。[17]</p><p> 圖4.4 靜態(tài)顯示流程圖</p><p><b> 4.6 系統(tǒng)調(diào)試</b></p><p> 在調(diào)試前,先對(duì)電路板進(jìn)行細(xì)致的檢查,通過萬(wàn)用表的測(cè)量,觀察有無(wú)短路或斷路情況。加電后如果發(fā)現(xiàn)有些芯片迅速發(fā)熱,應(yīng)立即斷電檢查電路。電源
85、電路板應(yīng)有良好的穩(wěn)壓特性,保證系統(tǒng)各芯片的正常工作,為此,應(yīng)仔細(xì)測(cè)量電源板的各電壓輸出,檢驗(yàn)是否滿足系統(tǒng)設(shè)計(jì)要求。硬件調(diào)試離不開軟件的配合,通常需要做一些簡(jiǎn)單的測(cè)試程序來確定電路的工作情況,以此判斷問題所在。</p><p> 各模塊焊接完成后及時(shí)用萬(wàn)用表進(jìn)行測(cè)量,測(cè)量應(yīng)連接的點(diǎn)是否正確短接。顯示模塊,可用歐姆表(內(nèi)部含電源)進(jìn)行測(cè)試,將表筆正極接數(shù)碼管共陽(yáng)端,負(fù)表筆依次接abcdefgh,觀察數(shù)碼管是否正常顯
86、示,如不正常,檢查焊接情況。上電后,測(cè)量各芯片</p><p> 引腳電壓,與理論值相比較,如不同,檢查硬件電路。</p><p><b> 總結(jié)</b></p><p> 由于本設(shè)計(jì)使用的是以單片機(jī)作為核心的控制元件和靈敏的霍爾開關(guān)型器件,使本出租車計(jì)價(jià)器具有功能強(qiáng)、性能可靠、電路簡(jiǎn)單、成本低的特點(diǎn),加上經(jīng)過優(yōu)化的程序,使其有很高的智能
87、化水平。但是在我們?cè)O(shè)計(jì)和調(diào)試的過程中,也發(fā)現(xiàn)了一些問題,譬如計(jì)價(jià)的金額位數(shù)有限,實(shí)際的里程可能會(huì)很遠(yuǎn),會(huì)超出我們的顯示范圍。計(jì)價(jià)器的設(shè)計(jì)還不夠人性化,比如加上語(yǔ)音的提示功能,可能會(huì)更有生命力。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 何立民.單片機(jī)應(yīng)用技術(shù)選編[M].北京:北京航空航天大學(xué)出版社,1999</p>&l
88、t;p> [2] 求實(shí)科技.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航[J].北京:人民郵電出版社,2004</p><p> [3] 陳小忠.單片機(jī)接口技術(shù)實(shí)用子程序[M].北京:人民郵電出版社,2005</p><p> [4] 趙晶主.電路設(shè)計(jì)與制版 Protel99 高級(jí)應(yīng)用[J].北京:人民郵電出版社,2000</p><p> [5] 全國(guó)大學(xué)生電
89、子設(shè)計(jì)競(jìng)賽組委會(huì).全國(guó)大學(xué)生電子設(shè)計(jì)競(jìng)賽獲獎(jiǎng)作品精選[M] .北京:北京理工大學(xué)出版社,2000</p><p> [6] 楊恢先,黃輝先.單片機(jī)原理及應(yīng)用[M].長(zhǎng)沙:國(guó)防科技大學(xué)出版社,2003</p><p> [7] 孫育才 單片微型計(jì)算機(jī)及其應(yīng)用[J].江蘇:東南大學(xué)出版社</p><p> [8] 宋青,權(quán)偉龍,齊新元.開關(guān)型霍爾傳感器的原理
90、與工程實(shí)現(xiàn)[J].物理實(shí)驗(yàn),2003</p><p> [9] 彭樹生,莊志洪,趙惠昌.PIC 單片機(jī)原理及應(yīng)用[M]. 北京:機(jī)械工業(yè)出版社,2001</p><p> [10] 余永權(quán).ATMEL89系列單片機(jī)應(yīng)用技術(shù)[J].北京:北京航空航天大學(xué)出版社,2002</p><p> [11] 竇振中,汪立森.PIC 系列單片機(jī)應(yīng)用設(shè)計(jì)與實(shí)例[M].北京:
91、北京航空航天大學(xué)出版社,2000</p><p> [12] 蘇凱、劉國(guó)慶.陳國(guó)平編著,MCS-51系列單片機(jī)系統(tǒng)原理與設(shè)計(jì)[J].北京:冶金工業(yè)出版社,2003</p><p> [13] 潘新民,王艷芳編著.微型計(jì)算機(jī)控制技術(shù)[J].北京:電子工業(yè)出版社,2003</p><p> [14] 涂時(shí)亮,張友德編著.單片微機(jī)控制技術(shù)[J].上海:復(fù)旦大學(xué)出版社
92、,1994</p><p> [15] 張毅坤,陳善久,裘雪紅編著.單片微型機(jī)及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,1998</p><p> [16] 基于單片機(jī)的多功能出租車計(jì)價(jià)器設(shè)計(jì).肖衛(wèi)初、陳偉宏、楊明 [J].湖南城市學(xué)院出版社,2005</p><p> [17] 基于單片機(jī)的出租車計(jì)價(jià)器編碼傳感器的設(shè)計(jì). 張小虎、劉潔 [J].自動(dòng)化技術(shù)與
93、應(yīng)用,2005,24(10):1-3</p><p> [18] 何希才,新型實(shí)用電子電路400例,北京:電子工業(yè)出版社,1998</p><p> [19] 徐愛鈞,8051單片機(jī)實(shí)踐教程,北京:電子工業(yè)出版社,2006年</p><p> [20] 王世遠(yuǎn),徐強(qiáng),I/V(電流/電壓)變換電路[J],《動(dòng)態(tài)分折與測(cè)試技術(shù)》,1994年</p>
94、<p> [21] 溫景國(guó),武新華,單片機(jī)測(cè)控系統(tǒng)中的信號(hào)變換問題[J],太原理工大學(xué)學(xué)報(bào),1993年第三期</p><p> [22] 吳勤勤.控制儀表及裝置[M],化學(xué)工業(yè)出版社,2007年1月</p><p> [23] http://www.sensorok.com:80/tech/tech/tech/0734-2.htm</p><p>
95、 附錄A(硬件原理圖)</p><p><b> 附錄B(源程序)</b></p><p> //*************************************************************************//</p><p> // 起始價(jià): 白天6 元,晚上7元 ;單價(jià): 1.6元/公里
96、 ; //</p><p> // 普通出租車,車輪周長(zhǎng)為1m,則轉(zhuǎn)1000圈為一公里, //</p><p> //*************************************************************************//</p>
97、<p> #include<reg51.h></p><p> #define uint unsigned int</p><p> #define uchar unsigned char</p><p> #define WRITE24C02 0xA0 //10100000,器件地址,寫操作</p><p>
98、; #define READ24C02 0xA1 //10100001,器件地址,讀操作</p><p> void I2C_start(void); //函數(shù)功能:產(chǎn)生啟動(dòng)信號(hào) </p><p> void I2C_stop(void); //函數(shù)功能:產(chǎn)生停止信號(hào)</p><p> void I2C_send_ack(void); /
99、/函數(shù)功能:發(fā)送ACK(確認(rèn))信號(hào)</p><p> bit TestAck(); //函數(shù)功能:檢查AT24C02的ACK信號(hào)</p><p> void I2C_write_byte(uchar); //函數(shù)功能:向AT24C02寫入一個(gè)字節(jié)</p><p> uchar I2C_read_byte(void); //函數(shù)功能:從AT24
100、C02讀出一個(gè)字節(jié)</p><p> void AT24C02_write(uchar,uchar *,uchar); </p><p> //函數(shù)功能:向AT24C02連續(xù)寫入若干字節(jié)</p><p> void AT24C02_read(uchar,uchar *,uchar);</p><p> //函數(shù)功能:從AT24C02
101、連續(xù)讀出若干字節(jié)</p><p> void minut();</p><p> void hou();</p><p> sbit DAT=P0^1; //模擬串口數(shù)據(jù)發(fā)送端</p><p> sbit CLK=P0^2;//模擬時(shí)鐘控制端</p><p> sbit SDA=P1^4;</p>
102、<p> sbit SCL=P1^3; </p><p> unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};</p><p> unsigned char table1[8]={0x3F,0x3F,0xbf,0x3F,0x3F,0xbf,0x3F,0x3F}; //0
103、0-00-00</p><p> unsigned char cc[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};</p><p> int top=0;</p><p> unsigned char second;</p><p> unsigned char tcount;</p&
104、gt;<p> unsigned char minute;</p><p> unsigned char hour;</p><p> unsigned int gl=0; //公里數(shù)(百米)</p><p> unsigned char dj=16;
105、 //單價(jià)(角)</p><p> unsigned int ze=0; //總額(角)</p><p> void sendbyte(uchar byte)</p><p><b>
106、{ </b></p><p> uchar num,c;</p><p> num=tab[byte];</p><p> for(c=0;c<8;c++)</p><p><b> {</b></p><p><b> CLK=0;</b>&
107、lt;/p><p> DAT=num&0x80; //(0x80即十進(jìn)制的128,二進(jìn)制的10000000 按位發(fā)送)</p><p><b> CLK=1;</b></p><p><b> num<<=1;</b></p><p><b> }</b>
108、;</p><p><b> }</b></p><p> void delay_50ms(unsigned int t) //50Ms延時(shí)程序</p><p><b> {</b></p><p> unsigned int j; </p><p> for(;t
109、>0;t--)</p><p> for(j=6245;j>0;j--)</p><p><b> {;}</b></p><p><b> }</b></p><p> void display() //顯示//</p><p><b>
110、{</b></p><p> unsigned char h;</p><p><b> while(1){</b></p><p> for(h=0;h<10;h++){</p><p> delay_50ms(1);</p><p> sendbyte(h);<
111、;/p><p> delay_50ms(10);</p><p><b> }</b></p><p><b> h=0;</b></p><p><b> }</b></p><p><b> }</b></p>
112、<p> /*********************************************************************/</p><p> /* ds1302實(shí)時(shí)時(shí)鐘C程序 */</p><p> sbit T_CLK = P1^2; /*實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 */</p><p> sbit T_IO = P1^
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計(jì)--自動(dòng)洗車控制系統(tǒng)
- 畢業(yè)設(shè)計(jì)-自動(dòng)門控制系統(tǒng)
- 畢業(yè)設(shè)計(jì)----自動(dòng)加料機(jī)控制系統(tǒng)
- 自動(dòng)門控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 自動(dòng)加料機(jī)控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----自動(dòng)爐溫控制系統(tǒng)
- 畢業(yè)設(shè)計(jì)-ld自動(dòng)功率控制系統(tǒng)
- 自動(dòng)門控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---自動(dòng)電梯的控制系統(tǒng)設(shè)計(jì)
- 水平自動(dòng)排水控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 水平自動(dòng)排水控制系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)-自動(dòng)布料控制系統(tǒng)的設(shè)計(jì)
- 自動(dòng)售貨機(jī)控制系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---自動(dòng)電梯的控制系統(tǒng)設(shè)計(jì) (2)
- 畢業(yè)設(shè)計(jì)(論文)-自動(dòng)銑床plc控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---自動(dòng)售貨機(jī)控制系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--車庫(kù)門自動(dòng)開閉控制系統(tǒng)設(shè)計(jì)
- 自動(dòng)加料機(jī)控制系統(tǒng)-畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)--自動(dòng)洗衣機(jī)控制系統(tǒng)
- 畢業(yè)設(shè)計(jì) (論文)自動(dòng)爐溫控制系統(tǒng)
評(píng)論
0/150
提交評(píng)論