基于單片機(jī)的出租車(chē)?yán)锍逃?jì)價(jià)器的設(shè)計(jì)計(jì)算機(jī)專(zhuān)業(yè)_第1頁(yè)
基于單片機(jī)的出租車(chē)?yán)锍逃?jì)價(jià)器的設(shè)計(jì)計(jì)算機(jī)專(zhuān)業(yè)_第2頁(yè)
基于單片機(jī)的出租車(chē)?yán)锍逃?jì)價(jià)器的設(shè)計(jì)計(jì)算機(jī)專(zhuān)業(yè)_第3頁(yè)
基于單片機(jī)的出租車(chē)?yán)锍逃?jì)價(jià)器的設(shè)計(jì)計(jì)算機(jī)專(zhuān)業(yè)_第4頁(yè)
基于單片機(jī)的出租車(chē)?yán)锍逃?jì)價(jià)器的設(shè)計(jì)計(jì)算機(jī)專(zhuān)業(yè)_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于單片機(jī)的出租車(chē)?yán)锍逃?jì)價(jià)器的設(shè)計(jì)摘 要隨著我國(guó)經(jīng)濟(jì)文化的飛速發(fā)展,城市交通的日趨完善,出租車(chē)計(jì)價(jià)器的應(yīng)用也越來(lái)越廣泛。眾所周知計(jì)價(jià)器是出租車(chē)行業(yè)發(fā)展的重要標(biāo)志,也是必不可少的工具。所以,設(shè)計(jì)一款具有良好性能的計(jì)價(jià)器是非常必要的。因此,本文采用了單片機(jī)設(shè)計(jì)了一款出租車(chē)計(jì)價(jià)器。單片機(jī)是微型機(jī)的一個(gè)主要分支,在結(jié)構(gòu)上最大的特點(diǎn)是把CPU、存儲(chǔ)器、定時(shí)器和多種輸入/輸出口電路集成在一塊超大規(guī)模集成電路芯片上,靈活性強(qiáng)?;谝陨咸攸c(diǎn)將單片機(jī)用在出租車(chē)計(jì)價(jià)器上,不但能實(shí)現(xiàn)基本計(jì)價(jià)器功能,還能在很大程度上拓展功能,并可以方便的對(duì)系統(tǒng)進(jìn)行升級(jí)。本文提出的設(shè)計(jì)是一個(gè)基于單片機(jī)AT89C52的出租車(chē)自動(dòng)計(jì)費(fèi)系統(tǒng)

2、,附有復(fù)位電路,時(shí)鐘電路,鍵盤(pán)電路等。該計(jì)價(jià)器通過(guò)字符型液晶1602顯示最初起步價(jià)、里程收費(fèi)等信息,通過(guò)溫度傳感器DS18B20檢測(cè)溫度。本設(shè)計(jì)的核心控制器是AT89C52單片機(jī),其中液晶顯示模塊連接單片機(jī)P0口,按鍵模塊連接單片機(jī)P1口,通過(guò)按鍵來(lái)實(shí)現(xiàn)控制。本文先對(duì)選題的背景意義做了簡(jiǎn)介,對(duì)單片機(jī)和一些芯片的原理等做了簡(jiǎn)要說(shuō)明;然后再具體描述了計(jì)價(jià)器的硬件和軟件各部分的設(shè)計(jì);最后將軟件和硬件結(jié)合完成了總設(shè)計(jì)。設(shè)計(jì)結(jié)果表明,將單片機(jī)技術(shù)應(yīng)用到出租車(chē)計(jì)價(jià)器中,是非常好的一個(gè)發(fā)展方向,單片機(jī)的靈活性能很好的適應(yīng)功能需求日益增多的出租車(chē)計(jì)價(jià)器,往后的發(fā)展前景將不容小覷。關(guān)鍵詞:?jiǎn)纹瑱C(jī)AT89C52;

3、1602液晶;出租車(chē)計(jì)價(jià)器;溫度傳感器IAbstractWith the rapid development of China's economy and culture, and the improvement of urban traffic is becoming more and more perfect, application of Taximeter is more and more widely. As is known to all, the meter is an important symbol of the taxi industry development,

4、is also an essential tool. Therefore, this paper uses a microcontroller to design a taxi meter.SCM is a major branch of microcomputers. The biggest characteristic of structure is to put the CPU, memory, timer and a variety of input/output circuit integration on a vlsi chip. With its good flexibility

5、. Based on the above characteristics, use microcontroller on the taxi meter, not only can the meter to achieve the basic meter features but also expand to a large extent. That means you can easily upgrade the system.This design is based on AT89C52 single-chip the taxi for automatic billing design, w

6、ith reset circuit, clock circuit, keyboard circuit and so on. It used character type LCD 1602 to show that the original fare, mileage charges, Detection temperature using the temperature sensor DS18B20. The design is based on AT89C52 microcontroller as the core controller the P0 port connected LCD m

7、odule, P1 port access keys through the key input.Firstly, this dissertation discusses the background significance of this subject, the principle of single chip microcomputer and some chips and a brief description. And then it describes the hardware and software of the meter and then the design of ea

8、ch part specifically. Finally, it shows the design in software and hardware.The design results show that it is a good development direction to make the single chip microcomputer technology applied to taxi meter. The microcontroller can adapt to the functional requirements of a growing number of taxi

9、 meter well. It will have a substantially bright future.Key words: SCM AT89C52; LCD1602;Taxi meter;Temperature sensor 目 錄摘 要IAbstractII第一章 緒 論11.1 課題研究的背景意義11.2 本文的主要研究?jī)?nèi)容與結(jié)構(gòu)安排21.3 本章小結(jié):2第二章 單片機(jī)的原理及相關(guān)芯片簡(jiǎn)介32.1 單片機(jī)的原理32.2 DS18b20溫度傳感器簡(jiǎn)介42.3 1602液晶簡(jiǎn)介42.4 本章小結(jié)7第三章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的硬件設(shè)計(jì)83.1 出租車(chē)計(jì)價(jià)器的工作原理83.2 出租

10、車(chē)計(jì)價(jià)器總體設(shè)計(jì)及系統(tǒng)構(gòu)架83.3 計(jì)價(jià)器的硬件電路設(shè)計(jì)93.3.1 振蕩電路設(shè)計(jì)93.3.2 復(fù)位電路設(shè)計(jì)103.3.3 鍵盤(pán)接口電路設(shè)計(jì)113.4 計(jì)價(jià)器中單片機(jī)的相關(guān)硬件應(yīng)用123.4.1 顯示電路123.4.2 單片機(jī)各引腳功能說(shuō)明133.5 本章小結(jié)15第四章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的軟件設(shè)計(jì)164.1 單片機(jī)資源使用164.2 總程序流程框圖164.3 計(jì)價(jià)器的子程序簡(jiǎn)介184.3.1 溫度傳感器初始程序及讀取溫度程序184.3.2 中斷子函數(shù)204.3.3 判鍵子函數(shù)214.3.4 顯示子程序254.4 本章小結(jié)30第五章 出租車(chē)計(jì)價(jià)器的調(diào)試及性能分析315.1 焊接電路調(diào)試分

11、析315.2 出租車(chē)計(jì)價(jià)器的性能分析315.3 本章小結(jié)32第六章 結(jié)論336.1 結(jié)論336.2 展望34參考文獻(xiàn)35附錄 I36附錄 II51謝辭52III第一章 緒論第一章 緒 論1.1 課題研究的背景意義出租車(chē)行業(yè)是我國(guó)八十年代初興起的一項(xiàng)新興行業(yè),隨著我國(guó)經(jīng)濟(jì)文化的迅速發(fā)展,人民生活水平的顯著提高,城市的交通日趨完善,出租車(chē)計(jì)價(jià)器的應(yīng)用也越來(lái)越廣泛。雖然目前私家車(chē)開(kāi)始進(jìn)入平常百姓家,越來(lái)越多的家庭擁有一部甚至兩部以上私家車(chē),但是出租車(chē)在我國(guó)的交通運(yùn)輸行業(yè)中還是承擔(dān)著重要的角色,隨著改革開(kāi)放的深入,出租車(chē)行業(yè)的發(fā)展勢(shì)頭已十分的突出。出租車(chē)計(jì)費(fèi)器從最開(kāi)始的只顯示路程,需要司機(jī)自己定價(jià),按

12、四舍五入法計(jì)算,到能夠自動(dòng)計(jì)費(fèi),以及現(xiàn)在的能夠打印發(fā)票和語(yǔ)音提示,按時(shí)間自動(dòng)變換單價(jià)等功能。隨著城市的旅游業(yè)的發(fā)展,出租車(chē)行業(yè)已成為城市的窗口,象征著一個(gè)城市的文明程度?,F(xiàn)在各大中城市出租車(chē)行業(yè)都已普及自動(dòng)計(jì)費(fèi)器,所以計(jì)費(fèi)器技術(shù)的發(fā)展已成定局。而部分小城市尚未普及,,但隨著城市建設(shè)日益加快,象征著城市面貌的出租車(chē)行業(yè)也將加速發(fā)展,計(jì)價(jià)器的普及也是毫無(wú)疑問(wèn)的,所以未來(lái)出租車(chē)計(jì)費(fèi)器的市場(chǎng)還是十分潛力的。目前全世界的計(jì)價(jià)器中有90%為臺(tái)灣所生產(chǎn)?,F(xiàn)今我國(guó)生產(chǎn)計(jì)價(jià)器的企業(yè)有上百家,主要是集中在北京,上海,沈陽(yáng)和廣州等地。近些年出租車(chē)計(jì)價(jià)器都是應(yīng)用了單片機(jī)技術(shù),單片機(jī)是微型機(jī)的一個(gè)主要分支,在結(jié)構(gòu)上的最

13、大特點(diǎn)是把CPU、存儲(chǔ)器、定時(shí)器和多種輸入/輸出接口電路集成在一塊超大規(guī)模集成電路芯片上,靈活性強(qiáng)1。出租車(chē)?yán)锍逃?jì)價(jià)器的發(fā)展有:2型機(jī):兩個(gè)顯示屏,4個(gè)按鍵,數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器都較小,沒(méi)有時(shí)鐘功能僅僅是計(jì)程和計(jì)價(jià);3、4型機(jī):屬過(guò)渡產(chǎn)品,功能更強(qiáng),使用方便,顯示內(nèi)容為單價(jià)、計(jì)程、計(jì)時(shí)、金額;5型機(jī):增加了打印機(jī)是其顯著標(biāo)志,新增時(shí)鐘顯示,數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器都得到有效增加。出租車(chē)計(jì)費(fèi)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車(chē)行業(yè)的重要標(biāo)志,具有良好性能的計(jì)費(fèi)器無(wú)論是對(duì)廣大出租車(chē)司機(jī)還是乘客來(lái)說(shuō)都是有必要的。因此,出租車(chē)計(jì)費(fèi)器的研究也是十分有價(jià)值的。11.2 本文的主要研究?jī)?nèi)容與結(jié)構(gòu)安排本文

14、的主要研究?jī)?nèi)容分為單片機(jī)控制的出租車(chē)?yán)锍逃?jì)價(jià)器的硬件和軟件部分,一部分是系統(tǒng)的硬件部分。根據(jù)本系統(tǒng)的最終設(shè)計(jì)要求,分別選擇89c52單片機(jī)、1602液晶顯示屏、18b20溫度傳感器、晶振、蜂鳴器、按鍵,設(shè)計(jì)出一款計(jì)價(jià)器可以實(shí)時(shí)監(jiān)測(cè)溫度,并具有自動(dòng)計(jì)費(fèi),上電后顯示最初的起步價(jià),里程計(jì)費(fèi)單價(jià),當(dāng)前溫度,通過(guò)按鍵可以調(diào)節(jié)里程計(jì)費(fèi)單價(jià)。同時(shí)具有運(yùn)行,暫停,停止等狀態(tài),可以顯示運(yùn)行的時(shí)間,同時(shí)可以顯示暫停的時(shí)間,具有累加功能,暫停和運(yùn)行時(shí)間在暫停和運(yùn)行前一次的狀態(tài)上計(jì)時(shí)。出租車(chē)停止后能夠顯示行駛的總費(fèi)用2。第二部分是系統(tǒng)的軟件部分,通過(guò)溫度傳感器初始化程序、中斷子函數(shù)、判鍵子函數(shù)、顯示子程序等程序的應(yīng)用

15、,完成各項(xiàng)設(shè)計(jì)目標(biāo)。對(duì)于中斷子函數(shù)只要定時(shí)器計(jì)數(shù)滿(mǎn)就會(huì)產(chǎn)生中斷50ms中斷一次,共計(jì)20次,秒鐘加1,秒鐘計(jì)滿(mǎn)再分鐘加,當(dāng)分鐘加到99時(shí)全部清零。對(duì)于獨(dú)立式鍵盤(pán)判鍵,首先看有鍵按下不,如果有鍵按下則延時(shí)一會(huì)兒,再判斷是否真的有鍵按下,如果確實(shí)有鍵按下,在判鍵釋放,最后執(zhí)行鍵功能程序。對(duì)于顯示子程序由于1602液晶是字符型液晶,它的內(nèi)部自帶字符庫(kù),它可以寫(xiě)兩行的字符,同時(shí)每行可以寫(xiě)40個(gè)字符,在寫(xiě)顯示程序的時(shí)候,我們先寫(xiě)命令,再設(shè)定字符顯示,最后寫(xiě)數(shù)據(jù),每寫(xiě)一次命令或數(shù)據(jù)都需要判斷液晶是否忙3。本文通過(guò)對(duì)研究設(shè)計(jì)出租車(chē)?yán)锍逃?jì)價(jià)器的背景意義開(kāi)始,到各芯片的簡(jiǎn)介,再到系統(tǒng)的硬件軟件設(shè)計(jì),層層深入,對(duì)

16、系統(tǒng)的每個(gè)部分由淺到深的剖析,讓讀者更容易接受和理解。1.3 本章小結(jié): 本章重點(diǎn)分析了出租車(chē)計(jì)價(jià)器在我國(guó)的發(fā)展歷程和本文研究?jī)?nèi)容的意義,告訴讀者本文主要研究的是一款怎么樣的出租車(chē)計(jì)價(jià)器,并給出了本文的主要結(jié)構(gòu)安排,有著總起的作用。2第二章 單片機(jī)的原理及相關(guān)芯片簡(jiǎn)介第二章 單片機(jī)的原理及相關(guān)芯片簡(jiǎn)介2.1 單片機(jī)的原理 AT89C52是51系列單片機(jī)的一個(gè)型號(hào),它是ATMEL公司生產(chǎn)的4。AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失

17、性存儲(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)合。AT89C52擁有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫(xiě)口線(xiàn),AT89C52可以按照常規(guī)方法進(jìn)行編程,但不可以在線(xiàn)編程(S系列的才支持在線(xiàn)編程)。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫(xiě)的Flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。兼容MCS51指令系統(tǒng):8k可反復(fù)擦寫(xiě)(>1000次)Flash ROM ;32個(gè)雙向I

18、/O口 ;256x8bit內(nèi)部RAM ;3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷 ;時(shí)鐘頻率0-24MHz ;2個(gè)串行中斷 ;可編程UART串行通道 ;2個(gè)外部中斷源 ;共6個(gè)中斷源 ;2個(gè)讀寫(xiě)中斷口線(xiàn) ;3級(jí)加密位 ;低功耗空閑和掉電模式 ;軟件設(shè)置睡眠和喚醒功能 。32.2 DS18b20溫度傳感器簡(jiǎn)介DS18B20是美國(guó)DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種改進(jìn)型智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,他能夠直接讀出被測(cè)溫度并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)912位數(shù)字的讀數(shù)方式??梢苑謩e在93.75ms和750ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭?/p>

19、DS18B20的信息僅需要一根口線(xiàn)(單線(xiàn)接口)讀寫(xiě),溫度變換功率來(lái)源于數(shù)據(jù)總線(xiàn),總線(xiàn)的本身也可以向所掛接的DS18B20供電,而無(wú)需額外電源。因而使用DS18B20可使系統(tǒng)結(jié)構(gòu)更趨于簡(jiǎn)單,可靠性更高。他在測(cè)溫精度、轉(zhuǎn)換時(shí)間、傳輸距離、分辨率等方面較DS1820有了很大的改進(jìn),給用戶(hù)帶來(lái)了更方便的使用和更令人滿(mǎn)意的效果。DS18B20擁有獨(dú)特的單線(xiàn)接口方式即與微處理器連接時(shí)僅需要一條口線(xiàn)即可實(shí)現(xiàn)微處理器與DS18B20的雙向通訊,在使用中不需要任何外圍組件,可用數(shù)據(jù)線(xiàn)供電,電壓范圍:+3.0+5.5V,預(yù)測(cè)范圍:-55+125,固有測(cè)溫分辨率為0.5,通過(guò)編程可實(shí)現(xiàn)912位的數(shù)字讀書(shū)方式,用戶(hù)可

20、自設(shè)定非易失性的報(bào)警上下限值,支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20可以并聯(lián)在唯一的三線(xiàn)上,實(shí)現(xiàn)多點(diǎn)測(cè)溫,負(fù)壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因?yàn)榘l(fā)熱而燒毀,但不能正常工作。2.3 1602液晶簡(jiǎn)介1602液晶模塊內(nèi)帶標(biāo)準(zhǔn)字庫(kù),內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了192個(gè)5×7點(diǎn)陣字符,32個(gè)5×10點(diǎn)陣字符。另外還有字符生成RAM(CGRAM)512字節(jié),供用戶(hù)自定義字符。這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比如大寫(xiě)的英文字母“A”的代碼是01000001B(41H),顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖

21、形顯示出來(lái),我們就能看到字母“A”。液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符。字符型液晶1602主要技術(shù)參數(shù)如表2-1所示:4第二章 單片機(jī)的原理及相關(guān)芯片簡(jiǎn)介表2-1 字符型液晶1602主要技術(shù)參數(shù)顯示容量:16*2個(gè)字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.95*4.35(W*H)mm接口信號(hào)說(shuō)明如表2-2所示:表2-2 1602接口信號(hào)說(shuō)明編號(hào)符號(hào)引腳說(shuō)明編號(hào)符號(hào)引腳說(shuō)明1Vss電源地9D2Dat

22、aI/O2VDD電源正極10D3DataI/O3VL液晶顯示偏壓信號(hào)11D4DataI/O4Rs數(shù)據(jù)/命令選擇端(H/L)12D5DataI/O5R/W讀/寫(xiě)選擇端(H/L)13D6DataI/O6E使能信號(hào)14D7DataI/O7D0DataI/O15BLA背光源正極8D1DataI/O16BLK背光源負(fù)極控制器接口說(shuō)明(HD44780及兼容芯片)1、 基本操作時(shí)序a 讀狀態(tài):輸入:Rs=L, Rw=H, E=H 輸出:D0D7=狀態(tài)字b 寫(xiě)指令:輸入:Rs=L, Rw=L, D0D7=指令碼 輸出:無(wú) E=高脈沖C 讀數(shù)據(jù):輸入:Rs=H, Rw=L, E=H 輸出:D0D7=數(shù)據(jù)d 寫(xiě)數(shù)

23、據(jù):輸入:Rs=H, Rw=L, D0D7=數(shù)據(jù) 輸出:無(wú) E=高脈沖5狀態(tài)字說(shuō)明如表2-3所示:表2-3狀態(tài)字說(shuō)明(a)STA7D7STA6D6STA5D5STA4D4STA3D3STA2D2STA1D1STA0D0表2-3狀態(tài)字說(shuō)明(b)STA0-6當(dāng)前數(shù)據(jù)地址指針的數(shù)值STA7讀寫(xiě)操作使能1:禁止 0:允許注:對(duì)控制器進(jìn)行讀寫(xiě)操作之前,都必須進(jìn)行讀寫(xiě)檢測(cè),確保STA7為0RAM地址映像圖控制器內(nèi)部帶有80*8位的RAM緩沖區(qū),對(duì)應(yīng)關(guān)系如下圖2-4所示:表2-4 RAM地址映像圖LCD16字*2行000102030405060708090A0B0C0D0E0F102740414243444

24、5464748494A4B4C4D4E4F5067顯示模式設(shè)置如表2-5所示:表2-5 顯示模式設(shè)置指令碼功能設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口顯示開(kāi)關(guān)及光標(biāo)設(shè)置如表2-6所示:49第二章 單片機(jī)的原理及相關(guān)芯片簡(jiǎn)介表2-6 顯示開(kāi)關(guān)及光標(biāo)設(shè)置指令碼功能D=1 開(kāi)顯示; D=0 關(guān)顯示C=1 顯示光標(biāo); C=0 不顯示光標(biāo)B=1 光標(biāo)閃爍; B=0 光標(biāo)不顯示N=1 當(dāng)讀或?qū)懸粋€(gè)字符后地址指針加一,且光標(biāo)加一N=0 當(dāng)讀或?qū)懸粋€(gè)字后地址指針減一,且光標(biāo)減一S=1 當(dāng)寫(xiě)一個(gè)字符后,整屏顯示左移(N=1)或右移(N=0),以得到光標(biāo)不移動(dòng)而屏幕移動(dòng)的效果S=0 當(dāng)寫(xiě)一個(gè)字符,整屏顯示不移動(dòng)

25、數(shù)據(jù)控制:控制器內(nèi)部沒(méi)有一個(gè)數(shù)據(jù)地址指針,用戶(hù)可通過(guò)它們來(lái)訪(fǎng)問(wèn)內(nèi)部的全部80字節(jié)RAM。2.4 本章小結(jié)本章主要對(duì)本設(shè)計(jì)的原理及硬件芯片做了相關(guān)的介紹,具體論述了芯片的工作原理和功能,為后面章節(jié)做理論依據(jù)。7第三章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的硬件設(shè)計(jì)3.1 出租車(chē)計(jì)價(jià)器的工作原理本設(shè)計(jì)是基于單片機(jī)控制的,其核心是AT89C52單片機(jī),顯示由1602液晶顯示屏完成,整個(gè)電路由四個(gè)主要部分組成,分別是振蕩電路,復(fù)位電路,鍵盤(pán)接口電路,顯示電路。振蕩電路產(chǎn)生的電路脈沖經(jīng)過(guò)二分頻后用于系統(tǒng)的時(shí)鐘信號(hào),然后在二分頻的基礎(chǔ)上三分頻產(chǎn)生ALE信號(hào),得到的信號(hào)為機(jī)器周期信號(hào);復(fù)位電路使出租車(chē)計(jì)價(jià)器在發(fā)生誤操作

26、或者出現(xiàn)故障的時(shí)候,能人為的進(jìn)行復(fù)位操作,讓計(jì)價(jià)器回到初始狀態(tài);鍵盤(pán)接口電路為計(jì)價(jià)器提供了模擬增加路程,白天黑夜切換,每公里單價(jià)調(diào)節(jié),模擬出租車(chē)前進(jìn)或者紅綠燈,計(jì)價(jià)器復(fù)位的功能;顯示電路用于顯示計(jì)價(jià)器的各種信息,令使用者能更直觀(guān)的了解各種信息,更容易使用。各個(gè)部分的電路通過(guò)單片機(jī)整合在一起,單片機(jī)是整個(gè)系統(tǒng)的大腦,它將來(lái)自各個(gè)電路的信息收集,然后處理通過(guò)液晶顯示屏將各種信息顯示給使用者。3.2 出租車(chē)計(jì)價(jià)器總體設(shè)計(jì)及系統(tǒng)構(gòu)架本出租車(chē)計(jì)價(jià)器實(shí)現(xiàn)自動(dòng)計(jì)費(fèi),上電后顯示最初的起步價(jià),里程計(jì)費(fèi)單價(jià),通過(guò)按鍵可以調(diào)節(jié)里程計(jì)費(fèi)單價(jià)。同時(shí)具有運(yùn)行,暫停,停止等狀態(tài),可以顯示運(yùn)行的時(shí)間,同時(shí)可以顯示暫停的時(shí)間,

27、具有累加功能,還可以顯示當(dāng)前溫度,暫停和運(yùn)行時(shí)間在暫停和運(yùn)行前一次的狀態(tài)上計(jì)時(shí)。并實(shí)時(shí)計(jì)算出出租車(chē)行駛的總費(fèi)用5。本出租車(chē)計(jì)價(jià)器計(jì)費(fèi)部分包括起步價(jià)、行車(chē)?yán)锍逃?jì)費(fèi)、等待時(shí)間計(jì)費(fèi)三部分,用1602液晶顯示總金額,運(yùn)行時(shí)間,暫停時(shí)間,當(dāng)前溫度,最大值為99.9元,起步價(jià)為5.0元,3Km之內(nèi)起步價(jià)計(jì)費(fèi),超過(guò)3Km,按使用者設(shè)定的每公里單價(jià)計(jì)算,假設(shè)每公里2元,則單擊按鍵模擬前進(jìn)0.5KM,總費(fèi)用增加1元。等待時(shí)間計(jì)費(fèi)為每五分鐘1元,小于五分鐘時(shí)按1元計(jì)算。用液晶顯示總里程,同時(shí)用液晶顯示等待的時(shí)間和運(yùn)行花費(fèi)的時(shí)間。出租車(chē)中需要一個(gè)能準(zhǔn)確獲得車(chē)輪轉(zhuǎn)動(dòng)也就是路程測(cè)量的裝置,以得到標(biāo)準(zhǔn)的脈沖信號(hào)送入單片機(jī)

28、的定時(shí)計(jì)數(shù)器中,利用單片機(jī)的定時(shí)計(jì)數(shù)器功能完成100次的計(jì)數(shù)后產(chǎn)生一中斷來(lái)完成路程的測(cè)量。其中霍爾傳感器能很好的完成這一第三章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的硬件設(shè)計(jì)任務(wù)6,設(shè)車(chē)輪周長(zhǎng)為1m,則霍爾傳感器每產(chǎn)生100個(gè)脈沖便表示車(chē)走了0.1Km,為了演示方便本設(shè)計(jì)中采用了按鍵模擬增加里程。每單擊按鍵增加0.5公里的里程。如果按了兩次就是一公里,由此來(lái)模擬出租車(chē)不斷的前進(jìn)。一、計(jì)價(jià)器的計(jì)費(fèi)功能出租車(chē)計(jì)價(jià)器的費(fèi)用的計(jì)算是按照行駛的里程來(lái)收費(fèi)。假設(shè)起步價(jià)為5.00元。1、當(dāng)里程小于3Km時(shí),按照起步價(jià)計(jì)算費(fèi)用2、當(dāng)里程大于3Km時(shí),按照每公里設(shè)置的單價(jià)計(jì)費(fèi)3、等待時(shí)間計(jì)費(fèi)按照每5分鐘1元計(jì)費(fèi),不夠5分鐘

29、按五分鐘計(jì)算。二、計(jì)價(jià)器的顯示功能1、計(jì)價(jià)器可在液晶顯示屏中顯示行駛里程:用四位數(shù)字顯示,顯示方式為“xxx.x”,單位是KM。計(jì)程范圍0-99KM,精確到0.1KM。2、計(jì)價(jià)器可在液晶顯示屏中顯示等候時(shí)間:用6位數(shù)字顯示,顯示方式為“xx:xx:xx”,單位為S。計(jì)時(shí)范圍為0-59MIN,精確到1S。3、計(jì)價(jià)器可在液晶顯示屏中顯示總費(fèi)用:用四位數(shù)字顯示,顯示方式為“xxx.x”,單位為元。計(jì)價(jià)范圍為0-999.9元,精確到0.1元。4.計(jì)價(jià)器可在液晶顯示屏中顯示當(dāng)前的溫度:用兩位數(shù)字顯示,顯示方式為“xx”顯示范圍為0-99,精確到1。3.3 計(jì)價(jià)器的硬件電路設(shè)計(jì)3.3.1 振蕩電路設(shè)計(jì)振蕩

30、電路7是系統(tǒng)的心臟,它控制著整個(gè)系統(tǒng)的工作節(jié)奏,單片機(jī)的時(shí)鐘信號(hào)可以由兩種方式產(chǎn)生:第一種是內(nèi)部方式,利用芯片內(nèi)部的振蕩電路,產(chǎn)生時(shí)鐘信號(hào);第二種是外部方式,時(shí)鐘信號(hào)由外部引入。一、內(nèi)部時(shí)鐘方式單片機(jī)內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別為此放大器的輸入端和輸出端,其頻率范圍為1.212MHz。該放大器與作為反饋組件的片外晶體或陶瓷諧振器(簡(jiǎn)稱(chēng)晶振)一起構(gòu)成了自激振蕩器。二、外部時(shí)鐘方式單片機(jī)內(nèi)部工作時(shí)鐘也可以由外部振蕩器提供,這時(shí),對(duì)HMOS型芯片,外部振蕩器的信號(hào)接到XTAL2,即內(nèi)部時(shí)鐘發(fā)生器的輸出端,而內(nèi)部反相放大器的輸入端XTAL1應(yīng)接地。在CHM

31、OS電路中,因?yàn)閮?nèi)部時(shí)鐘發(fā)生器的信號(hào)取自反相放大器的9輸入端(即與非門(mén)的一個(gè)輸入端),故采用外部時(shí)鐘源時(shí),接線(xiàn)方式與HMOS型的有所不同:外部信號(hào)接到XTAL1,XTAL2不用。本設(shè)計(jì)使用的是內(nèi)部時(shí)鐘方式,利用單片機(jī)內(nèi)部一個(gè)高增益、反相放大器,其輸入端為芯片引腳XATL1,其輸出端為引腳XTAL2。通過(guò)這兩個(gè)引腳在芯片外并接石英晶體振蕩器和兩只電容(電容和一般取33pF)。這樣就構(gòu)成了一個(gè)穩(wěn)定的自激振蕩器。振蕩電路脈沖經(jīng)過(guò)二分頻后作為系統(tǒng)的時(shí)鐘信號(hào),再在二分頻的基礎(chǔ)上三分頻產(chǎn)生ALE信號(hào),此時(shí)得到的信號(hào)是機(jī)器周期信號(hào)。振蕩電路如圖3-1所示: 圖3-1 振蕩電路3.3.2 復(fù)位電路設(shè)計(jì)復(fù)位電路

32、在上電或復(fù)位的過(guò)程中,控制CPU的復(fù)位狀態(tài):這段時(shí)間內(nèi)會(huì)讓CPU保持著復(fù)位狀態(tài),而不是一上電或剛復(fù)位完畢就工作,防止CPU發(fā)出錯(cuò)誤的指令、執(zhí)行錯(cuò)誤操作,也可以提高磁兼容性能。無(wú)論用戶(hù)使用哪種類(lèi)型的單片機(jī),總要涉及到單片機(jī)的復(fù)位電路的設(shè)計(jì)。而單片機(jī)復(fù)位電路設(shè)計(jì)的好壞,會(huì)直接影響到整個(gè)系統(tǒng)工作的可靠性。許多用戶(hù)在設(shè)計(jì)完單片機(jī)系統(tǒng),并且在實(shí)驗(yàn)室調(diào)試成功后,在現(xiàn)場(chǎng)卻出現(xiàn)了“死機(jī)”、“程序走飛”等等現(xiàn)象,這主要是單片機(jī)復(fù)位電路設(shè)計(jì)不可靠引起的。單片機(jī)在啟動(dòng)的時(shí)候都需要先復(fù)位,讓CPU以及系統(tǒng)各個(gè)部件出于確定的初始狀態(tài),并從初始狀態(tài)開(kāi)始工作。89系列單片機(jī)的復(fù)位信號(hào)是從RST引腳輸入到芯片內(nèi)的施密特觸發(fā)器

33、中的。當(dāng)系統(tǒng)出于正常工作狀態(tài)時(shí),且振蕩器穩(wěn)定后,如果RST引腳上有一個(gè)高電平維持2個(gè)機(jī)器周期即24個(gè)振蕩周期以上,則CPU就可以響應(yīng)并且將系統(tǒng)復(fù)位。單片機(jī)復(fù)位操作有兩種基本形式:一種是上電復(fù)位,另一種是按鍵復(fù)位。按鍵復(fù)位除具有上電復(fù)位功能外,如果想要復(fù)位,只需按下RESET按鍵,電源VCC經(jīng)電阻R1分壓后,在RESET端產(chǎn)生一個(gè)復(fù)位高電平。上電復(fù)位電路要求接通電源之后,再通第三章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的硬件設(shè)計(jì)過(guò)外部的電容充電來(lái)實(shí)現(xiàn)單片機(jī)的自動(dòng)復(fù)位操作。上電的瞬間RESET引腳獲得高電平,然后隨著電容的充電,RESET引腳的高電平將逐漸下降。RESET引腳的高電平只要能保持住足夠的時(shí)間即2

34、個(gè)機(jī)器周期,單片機(jī)就可以進(jìn)行復(fù)位的操作。按鍵復(fù)位電路圖8如圖3-2所示。 圖 3-2 按鍵復(fù)位電路圖3.3.3 鍵盤(pán)接口電路設(shè)計(jì)本設(shè)計(jì)使用獨(dú)立式鍵盤(pán):獨(dú)立式的鍵盤(pán)中,每一個(gè)按鍵占用一根I/O口線(xiàn),每個(gè)按鍵電路相對(duì)獨(dú)立。I/O口通過(guò)按鍵與地相連,I/O口接有上拉電阻,當(dāng)無(wú)按鍵按下時(shí),引腳端為高電平,當(dāng)有按鍵按下時(shí),引腳電平被拉低。I/O口內(nèi)部有上拉電阻時(shí),外部可以不接上拉電阻。鍵盤(pán)接口電路如圖3-3所示:11圖3-3 鍵盤(pán)接口電路3.4 計(jì)價(jià)器中單片機(jī)的相關(guān)硬件應(yīng)用3.4.1 顯示電路對(duì)于現(xiàn)實(shí)的電路,我們可以采用數(shù)碼管顯示,也可以采取液晶顯示,而液晶顯示又分字符型和點(diǎn)陣型,本設(shè)計(jì)使用的液晶是字符

35、型液晶顯示屏,并且是帶字符庫(kù)的,并不需要查找代碼。液晶顯示電路在使用時(shí),若發(fā)現(xiàn)液晶不亮,可以調(diào)節(jié)連接液晶的點(diǎn)位器,改變液晶的亮度。顯示電路如圖3-4所示:第三章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的硬件設(shè)計(jì) 圖3-4 顯示電路3.4.2 單片機(jī)各引腳功能說(shuō)明VCC:供電電壓。VCC正常運(yùn)行和編程校驗(yàn)時(shí)為5V電源。GND:接地。P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被

36、拉高。 P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“

37、1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部13下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89S52的一些特殊功能口,P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。此引腳為掉電保護(hù)后備電源的輸入引腳。AT89c

38、52是一個(gè)低電壓,高性能cmos 8位單片機(jī),片內(nèi)含有8k bytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器,器件采用了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)合。ALE/PROG:控制總線(xiàn),地址鎖存允許/編程信號(hào)線(xiàn)。當(dāng)訪(fǎng)問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因

39、此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次PSEN有效。但在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的PSEN信號(hào)將不出現(xiàn)。EA/VPP:訪(fǎng)問(wèn)內(nèi)部程序存儲(chǔ)器的控制信號(hào)。當(dāng)EA為高電平時(shí),CPU從片內(nèi)ROM讀取指令;當(dāng)EA為低電平時(shí),CPU從片外ROM讀取指令。此外,當(dāng)對(duì)8751內(nèi)

40、部ERROM編程時(shí),21V編程電源由此端口輸入。XTAL1:反向振蕩放大器的輸入端及內(nèi)部時(shí)鐘工作電路的輸入端。XTAL2:片內(nèi)振蕩器反相器的輸出端,也是內(nèi)部時(shí)鐘發(fā)生器的輸入端。AT89C52引腳圖如圖3-5所示:第三章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的硬件設(shè)計(jì) 圖3-5 AT89C52單片機(jī)引腳圖3.5 本章小結(jié)本章詳細(xì)闡述了出租車(chē)計(jì)價(jià)器的工作原理,給出了總體設(shè)計(jì)及系統(tǒng)構(gòu)架思路,并具體分析了每部分電路功能,包括振蕩電路、復(fù)位電路、鍵盤(pán)接口電路,最后總結(jié)了計(jì)價(jià)器中單片機(jī)的相關(guān)應(yīng)用。15第四章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的軟件設(shè)計(jì)4.1 單片機(jī)資源使用本次設(shè)計(jì)中使用了單片機(jī)的P1口,P2口,P3口9。其中

41、電路鍵盤(pán)使用到了P2口,其中的P2.0口到P2.5口作為鍵盤(pán)的輸入,直流電機(jī)電路的控制線(xiàn)用到了P2口線(xiàn),P3.0P3.2分別為lcd信號(hào)的控制腳。顯示電路則用到了P1口,其中P1口作為液晶的數(shù)據(jù)口。其中P2.6作為24C02存儲(chǔ)電路的串行時(shí)鐘輸入端。SCL同步數(shù)據(jù)傳輸,上升沿?cái)?shù)據(jù)寫(xiě)入,下降沿?cái)?shù)據(jù)讀出。P2.7作為24C02存儲(chǔ)電路的串行地址和數(shù)據(jù)輸入/輸出端,SDA是雙向串行數(shù)據(jù)傳輸引腳,漏極開(kāi)路。P3.3作為18b20溫度傳感器的數(shù)據(jù)輸入端。P0.0口為按鍵提示音數(shù)據(jù)輸入口。4.2 總程序流程框圖總程序框圖如圖4-1所示:首先將定時(shí)計(jì)數(shù)器、液晶顯示屏、溫度芯片初始化,接著判斷是否有按鍵按下,

42、如果檢測(cè)到Swich按鍵按下,則是白天黑夜切換,Dayandnight取反,如果檢測(cè)到PerUp鍵按下,則再判斷是白天還是黑夜,然后對(duì)白天或黑夜的每公里單價(jià)進(jìn)行增加,如果檢測(cè)到PerDown鍵按下,則再判斷是白天還是黑夜,然后對(duì)白天或黑夜的每公里單價(jià)進(jìn)行減少,如果檢測(cè)到下StopFlag鍵按下,則檢測(cè)StopFlag的值,如果為0則表示前進(jìn)狀態(tài),如果為1則表示等待狀態(tài),如果檢測(cè)到clc鍵按下,則進(jìn)行清屏操作,則可重新計(jì)算價(jià)錢(qián),如果檢測(cè)到maichong鍵按下,則對(duì)路程進(jìn)行增加,以上操作在結(jié)束后都會(huì)經(jīng)過(guò)數(shù)據(jù)處理端進(jìn)行計(jì)算,然后到達(dá)顯示端將路程、時(shí)間、費(fèi)用等信息顯示出來(lái)。第四章 基于單片機(jī)的出租車(chē)

43、計(jì)價(jià)器的軟件設(shè)計(jì)開(kāi)始定時(shí)器初始化液晶初始化溫度芯片初始化按鍵檢測(cè)函數(shù)MaichongPerDownSwitchClcStarstopRoad+=5開(kāi)始/暫停DandN=1白天/夜晚清屏Day-Night-PerUPDandN=1Day+Night+數(shù)據(jù)處理顯示結(jié)束 圖4-1 總程序流程框圖174.3 計(jì)價(jià)器的子程序簡(jiǎn)介4.3.1 溫度傳感器初始程序及讀取溫度程序DS18B20初始化程序:1. 先把數(shù)據(jù)線(xiàn)置于高電平即“1”;2. 稍作延時(shí)(這段時(shí)間要求得不是很?chē)?yán)格,但希望盡可能的短一些);3. 數(shù)據(jù)線(xiàn)拉低到低電平即“0”;4. 精確延時(shí)(該時(shí)間的范圍應(yīng)該在480到960微妙之間);5. 將數(shù)據(jù)線(xiàn)

44、拉到高電平即“1”;6. 延時(shí)等待(如果初始化成功了,則會(huì)在15到60毫秒之間內(nèi)產(chǎn)生由DS18B20返回的一個(gè)低電平“0”。根據(jù)該狀態(tài)來(lái)確定是否初始化成功,但是需要注意的是不能夠無(wú)限的進(jìn)行等待,不然的話(huà)會(huì)使程序進(jìn)入死循環(huán),所以還要進(jìn)行超時(shí)控制);7. 如果Cpu讀到了數(shù)據(jù)線(xiàn)上面的低電平“0”后,還要做延時(shí),延時(shí)的時(shí)間從發(fā)出高電平開(kāi)始算起即第五步開(kāi)始算起最少要480微妙;8. 將數(shù)據(jù)線(xiàn)再拉高到高電平“1”后結(jié)束。初始化代碼如下:unsigned char x=0; DQ = 1; /先將數(shù)據(jù)線(xiàn)置高電平“1” Delay(8); /稍做延時(shí)(該時(shí)間要求不算太嚴(yán)格,但是盡可能的短一些) DQ = 0

45、; /單片機(jī)將數(shù)據(jù)線(xiàn)拉低到低電平“0” Delay(80); /精確延時(shí)(該時(shí)間的范圍應(yīng)在480到960微妙以?xún)?nèi))DQ = 1; /數(shù)據(jù)線(xiàn)拉高到高電平“1” Delay(14); /等待延時(shí) x=DQ; /稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 Delay(20);DS18B20的寫(xiě)操作:1. 數(shù)據(jù)線(xiàn)先置于低電平“0”;2. 稍作延時(shí),作為延時(shí)確定時(shí)間;3.按照從低位到高位的順序發(fā)送字節(jié),一次只發(fā)送一位;4. 稍作延時(shí);5. 將數(shù)據(jù)線(xiàn)拉高到高電平“1”;6. 重復(fù)1到6的操作直到所有的字節(jié)都發(fā)送完畢為止;第四章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的軟件設(shè)計(jì)7. 最后再將數(shù)據(jù)線(xiàn)拉高。程序代

46、碼如下:unsigned char i=0;for (i=8; i>0; i-)DQ = 0;DQ = dat&0x01;Delay(5);DQ = 1;dat>>=1;DS18B20的讀操作:1. 先將數(shù)據(jù)線(xiàn)拉高到高電平“1”;2. 稍作延時(shí);3. 將數(shù)據(jù)線(xiàn)拉低到低電平“0”;4. 稍作延時(shí);5. 將數(shù)據(jù)線(xiàn)拉高到高電平“1”;6. 稍作延時(shí);7. 讀取數(shù)據(jù)線(xiàn)的狀態(tài)得到一個(gè)狀態(tài)位,并進(jìn)行數(shù)據(jù)處理8. 延時(shí)程序。程序代碼如下:unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i-)DQ = 0; / 給脈沖信

47、號(hào)dat>>=1;DQ = 1; / 給脈沖信號(hào)if(DQ)dat|=0x80;Delay(4);return(dat);DS18B20讀取溫度程序:19unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0x44); / 啟動(dòng)溫度轉(zhuǎn)換Init_DS18B20();WriteOneChar(0xCC); /跳過(guò)讀序號(hào)列號(hào)的操作WriteOneChar(0xBE); /讀取溫度寄存器a=Re

48、adOneChar(); /讀低8位b=ReadOneChar(); /讀高8位t=b;t<<=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; /放大10倍輸出并四舍五入 return(t);根據(jù)DS180B20的通訊協(xié)議,單片機(jī)控制DS18B20完成溫度的轉(zhuǎn)換必須經(jīng)過(guò)三個(gè)步驟:第一步是每一次讀寫(xiě)之前都要對(duì)DS18B20進(jìn)行復(fù)位的操作,復(fù)位成功后發(fā)送一條Rom指令,最后發(fā)送Ram指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)訂的操作。復(fù)位要求主CPU將數(shù)據(jù)線(xiàn)下拉500微妙,然后再釋放,當(dāng)DS18B20收到信號(hào)后等待大約1660微秒左右,再發(fā)出60240微秒的存在低脈沖,主

49、CPU收到此信號(hào)則表示復(fù)位成功。4.3.2 中斷子函數(shù)對(duì)于中斷程序,只要定時(shí)器計(jì)數(shù)滿(mǎn)了就會(huì)產(chǎn)生中斷,每50ms中斷一次,共計(jì)20次,這時(shí)秒鐘加一,秒鐘計(jì)數(shù)滿(mǎn)后分鐘再加,當(dāng)分鐘加到99時(shí)全部清零。中斷子函數(shù)的流程圖如圖4-2所示:第四章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的軟件設(shè)計(jì)開(kāi)始是否產(chǎn)生中斷Count+Count=20?Second+Count=0Second=60?Minite+Second=0結(jié)束Minite=99?Minite=0 圖4-2 中斷子程序流程圖4.3.3 判鍵子函數(shù) 對(duì)于獨(dú)立式鍵盤(pán)的判鍵,首先我們要看有沒(méi)有按鍵按下,如果有檢測(cè)到的話(huà)則延時(shí)一會(huì)兒,然后再判斷是不是真有按鍵按下,如果

50、確實(shí)有按鍵按下的話(huà),再判斷按鍵釋放,最后執(zhí)行鍵功能程序。判鍵子函數(shù)的流程框圖如圖4-3所示:21開(kāi)始是否有鍵按下延時(shí)消抖是否真的按下判鍵釋放執(zhí)行鍵功能程序結(jié)束 圖4-3 判鍵子程序流程圖判鍵子函數(shù)的程序代碼如下:/*按鍵檢測(cè)*/ void keyscan(void) /*單價(jià)開(kāi)始操作開(kāi)始*/if(swtich=0) Delay(20); if(swtich=0) /消抖 Beep(); /蜂鳴器響dayAndNight = dayAndNight; /取反,即白天黑夜的切換,白天為0,夜晚為1 while(swtich=0); /松手檢測(cè)if(perUp=0) Delay(20); if(pe

51、rUp=0) /消抖 Beep(); /蜂鳴器響if(dayAndNight)第四章 基于單片機(jī)的出租車(chē)計(jì)價(jià)器的軟件設(shè)計(jì)nightPerMile+; /晚上每公里單價(jià)增加WriteCurrent(nightPerMile,3); /在指定地址Address處一個(gè)數(shù)據(jù)DataelsedayPerMile+; /白天每公里單價(jià)增加WriteCurrent(dayPerMile,1); while(perUp=0); /松手檢測(cè)if(perDown=0) Delay(20); if(perDown=0) /消抖 Beep(); /蜂鳴器響if(dayAndNight)nightPerMile-; /晚上每公里單價(jià)減少WriteCurrent(nightPe

溫馨提示

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

評(píng)論

0/150

提交評(píng)論