版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
--河南理工大學《單片機應用與仿真訓練》設計報告出租車計價器姓名:學號:專業(yè)班級:電氣09指導老師:所在學院:電氣工程與自動化學院2012年5月10日?摘要本設計是以AT89S52單片機為核心,以A44E霍爾傳感器為信號采集傳感器,采用AT24C02作為存儲芯片,加上各種外圍電路構(gòu)成的出租車計價器。本設計采用霍爾傳感器對輪胎轉(zhuǎn)數(shù)進行計數(shù),并將采集到的脈沖信號傳輸給單片機,單片機通過內(nèi)部定時器對一定時間內(nèi)的轉(zhuǎn)動圈數(shù)進行一次統(tǒng)計,經(jīng)計算實現(xiàn)對出租車速度、里程、應付金額等狀態(tài)信息的測量。本設計采用了寄存器芯片AT24C02,實現(xiàn)系統(tǒng)對單價、里程、等待時間等信息的存儲,采用時鐘芯片DS1302在正常及掉電的時候來顯示時間和在系統(tǒng)需要時進行計時。本設計設置5個按鍵為輸入控制方式,分別控制查詢、功能、單雙成切換、暫停(結(jié)賬)以及清零,輸出顯示采用了兩個4段數(shù)碼管實現(xiàn)對時間、金額、里程的顯示,設置了四個LED燈,分別為空車指示燈、等待查詢指示燈、單雙程指示燈。關(guān)鍵詞??單片機??霍爾傳感器??出租車計價器??時鐘AbstractThisdesignuseAT89S52SCMasthecore,withU18Hallsensorsforsignalacquisitionsensor,tirerotat(yī)iontocount,SCMcalculationforataxispeed,processingrealizessuchstat(yī)usinformationmeasurementmileage.ThisdesignusedaregisterAT24C02chip,andrealizethesysteminunitprice,mileage,waitingtimeinformationstorage,theclockDS1302chipinnormalandpowerlosttimetodisplaythetimeandinthesystemneedstobecarriedoutwhenthetimer。Thedesignfortheinputcontrolbuttonstoway,outputshowstwoofthefourperiodsofdigitalnixietube,lamp,andwaitingforinquiresemptycarlamp,one—waylampsway。Keywords AT89S52SCM?Hallsensors?Taximeter?Clock?目錄TOC\o”1-3"\h\z\uHYPERLINK\l”_Toc325837636"摘要 PAGEREF_Toc325837636\h1HYPERLINK1?概述 PAGEREF_Toc325837638\h3HYPERLINK\l"_Toc325837639”1.1設計目的、意義?PAGEREF_Toc325837639\h3HYPERLINK2 系統(tǒng)總體方案設計?325837641\h4HYPERLINK\l"_Toc325837642”2.1設計要求 PAGEREF_Toc325837642\h4HYPERLINK\l"_Toc325837643”2.1.1基本要求?PAGEREF_Toc325837643\h4HYPERLINK\l"_Toc325837644”2.1.2發(fā)揮部分?PAGEREF_Toc325837644\h5HYPERLINK\l”_Toc325837645”2.2設計的主要功能 PAGEREF_Toc325837645\h5HYPERLINK\l"_Toc325837646”2.3方案的選取 PAGEREF_Toc325837646\h5HYPERLINK2。3.1硬件設計方案?PAGEREF_Toc325837647\h5HYPERLINK\l"_Toc325837648"2.3.2軟件設計方案?PAGEREF_Toc325837648\h6HYPERLINK\l"_Toc325837649"3 硬件設計?PAGEREF_Toc325837649\h6HYPERLINK\l"_Toc325837650"3。1AT89S52單片機及最小系統(tǒng)?PAGEREF_Toc325837650\h6HYPERLINK\l"_Toc325837651"3.1.1AT89S52單片機?PAGEREF_Toc325837651\h6HYPERLINK3.1.2單片機最小系統(tǒng)?PAGEREF_Toc325837652\h8HYPERLINK\l"_Toc325837653”3.2測距單元 PAGEREF_Toc325837653\h8HYPERLINK\l"_Toc325837654”3.3按鍵單元?PAGEREF_Toc325837654\h10HYPERLINK3。5顯示單元 PAGEREF_Toc325837656\h11HYPERLINK\l"_Toc325837657”3.6儲存單元?PAGEREF_Toc325837657\h14HYPERLINK\l”_Toc325837658”4?軟件設計 PAGEREF_Toc325837658\h15HYPERLINK\l"_Toc325837659"4.1系統(tǒng)主程序?PAGEREF_Toc325837659\h15HYPERLINK\l”_Toc325837660"4.2數(shù)據(jù)處理子程序?837660\h15HYPERLINK\l"_Toc325837661"4.3等待時間計時子程序 PAGEREF_Toc325837661\h16HYPERLINK\l”_Toc325837662”4.4鍵盤掃描子程序?PAGEREF_Toc325837662\h17HYPERLINK\l”_Toc325837663"5?Proteus軟件仿真 PAGEREF_Toc325837663\h18HYPERLINK\l”_Toc325837664”6?課程設計體會?PAGEREF_Toc325837664\h19HYPERLINK\l"_Toc325837665"參考文獻 PAGEREF_Toc325837665\h20HYPERLINK\l"_Toc325837666"附1:源程序代碼?PAGEREF_Toc325837666\h20HYPERLINK\l"_Toc325837667”附2:系統(tǒng)原理圖?PAGEREF_Toc325837667\h0概述1.1設計目的、意義隨著經(jīng)濟的不斷發(fā)展,人們的收入得到很大提高。人們便越來越追求生活的舒適與方便,而出行方式便是關(guān)切到人們生活質(zhì)量的一個重要方面。在物價上漲的今天,相對于自己購買私家車,更多的人傾向于乘坐出租車出行。雖然現(xiàn)在有部分小城市尚未普及出租車,但隨著城市建設日益加快,象征著城市面貌的出租車行業(yè)也將加速發(fā)展。汽車計價器作為乘客與司機雙方的交易準則,它是出租車行業(yè)發(fā)展的重要標志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計價器無論是對廣大出租車司機朋友還是乘客來說都是很必要的.因此,汽車計價器的研究也是十分有一個應用價值的.本次設計的目的在于現(xiàn)在各大中城市出租車行業(yè)都已普及自動計價器,所以計價器技術(shù)的發(fā)展已成定局。采用模擬電路和數(shù)字電路設計的計價器整體電路的規(guī)模較大,用到的器件多,造成故障率高,難調(diào)試.而采用單片機進行的設計,相對來說功能強大,是深化單片機應用的良好途徑,用較少的硬件和適當?shù)能浖嗷ヅ浜峡梢院苋菀椎貙崿F(xiàn)設計要求,且靈活性強,可以通過軟件編程來完成更多的附加功能。1。2AT89S52單片機功能簡介計算機系統(tǒng)已明顯地朝巨型化、單片化、網(wǎng)絡化三個方向發(fā)展.巨型化發(fā)展的目的在于不斷提高計算機的運算速度和處理能力,以解決復雜系統(tǒng)計算和高速數(shù)據(jù)處理,比如系統(tǒng)仿真和模擬、實時運算和處理。單片化是把計算機系統(tǒng)盡可能集成在一塊半導體芯片上,其目的在于計算機微型化和提高系統(tǒng)的可靠性,這種單片計算簡稱單片機.單片機的內(nèi)部硬件結(jié)構(gòu)和指令系統(tǒng)主要是針對自動控制應用而設計的,所以單片機又稱微控制器MCU(MicroControllerUnit)。用它可以很容易地將計算機嵌入到各種儀器和現(xiàn)場控制設備中,因此單片機又叫做嵌入式微控制器(EmbeddedMCU).單片機自20世紀70年代問世以來,以其鮮明的特點得到迅猛發(fā)展,已廣泛應用于家用電器、智能玩具、智能儀器儀表、工業(yè)控制、航空航天等領(lǐng)域,經(jīng)過30多年的發(fā)展,性能不斷提高,品種不斷豐富,已經(jīng)形成自動控制的一支中堅力量。據(jù)統(tǒng)計,我國的單片機年容量已達1~3億片,且每年以大約16%的速度增長,但相對于國際市場我國的占有率還不到1%.這說明單片機應用在我國有著廣闊的前景。對于從事自動控制的技術(shù)人員來講,掌握單片機原理及其應用已經(jīng)成為必不可少的學習任務.單片機的應用十分廣泛,在工業(yè)控制領(lǐng)域、家電產(chǎn)品、智能化儀器儀表、計算機外部設備,特別是機電一體化產(chǎn)品中,都有重要的用途。其主要的用途可以分為以下方面。顯示:通過單片機控制發(fā)光二極管或是液晶,顯示特定的圖形和字符.機電控制:用單片機控制機電產(chǎn)品做定時或定向的動作。檢測:通過單片機和傳感器的聯(lián)合使用,用來檢測產(chǎn)品或者工況的意外發(fā)生。通信:通過RS-232串行通信或者是USB通信,傳輸數(shù)據(jù)和信號.科學計算:用來實現(xiàn)簡單的算法。那么單片機是不是解決上述應用的唯一選擇呢?淡然不是!目前,在自動控制中,一般有三種選擇,分別是嵌入式微機、DSP和單片機。單片機最明顯的優(yōu)點是價格便宜,從幾元人民幣到幾十元人民幣。這是因為這類芯片的生產(chǎn)量很大,技術(shù)也很成熟。其次,單片機的體積也遠小于其他兩種方案。單片機本身一般用40引腳封裝,當然功能多一些的單片機也有引腳比較多的,如68引腳,功能少的只有10多個或20多個引腳,有的甚至只有8只引腳.當然,單片機無論在速度還是容量方面都小于其他兩種方案,但是在實際工作中并不是任何需要計算機的場合都要求計算機有很高的性能。例如,控制電冰箱的控制器就不需要使用嵌入式系統(tǒng),用一片51就可以輕松實現(xiàn).所以應用的關(guān)鍵是看能否夠用,是否有很好的性能價格比.51系列的單片機已經(jīng)面世十多年,依然沒有被淘汰,還在不斷發(fā)展中,這就說明是他有廣闊的應用前景.系統(tǒng)總體方案設計2。1設計要求2.1。1基本要求(1)能顯示里程,單位為公里,最后一位為小數(shù)位.(2)能顯示金額數(shù),單位為元,最后一位為小數(shù)位.(3)可設定單程價格和往返價格,單程價格為2元/公里,往返價格為1.5元/公里.(4)車速〈5公里/小時的時間累積為總等待時間,每5分鐘等待時間相當于里程數(shù)增加1公里。(5)起步公里數(shù)為3公里,價格為5元,若實際距離大于3公里,按規(guī)則3計算價格。(6)按暫停鍵,計價器可暫停計價,按查詢鍵,可顯示總等待時間.2.1。2發(fā)揮部分(1)增加了空車指示功能,當無客人時,按下功能切換按鍵,空車指示燈亮.(2)增加實時時間顯示,無論計價器工作或者空車,都能顯示實時時間,便于時間提醒。(3)增加信息儲存功能??梢詢Υ娴却龝r間,里程和金額。2.2設計的主要功能本設計所設計的出租車數(shù)字計價器的主要功能有:金額輸出、路程輸出、數(shù)據(jù)復位、計時計價、空車顯示等.輸出采用2個4位8段共陽數(shù)碼管,車輛行走時前4位顯示路程,后4位顯示金額。車輛候車時,前4位顯示等待時間,后4位顯示等待金額??哲嚂r顯示實時時間。儲存等待時間,里程和金額.2.3方案的選取本設計是由軟件設計和硬件設計兩部分組成的。軟件設計要進行程序的編寫和軟件仿真;硬件設計要設計電路、硬件仿真和制作電路板。2.3。1硬件設計方案本系統(tǒng)的硬件設計主要包括單片機AT89S52、數(shù)據(jù)顯示部件、U18霍爾傳感器電路、里程計算及計價單元的設計.在硬件設計過程中,充分利用各部件的功能,實現(xiàn)多功能的出租車計價器設計。計價器的單片機系統(tǒng)框圖如圖1所示.它由以下幾個部件組成:霍爾傳感器單元、AT89C52單片機、金額顯示、里程顯示、電源.利用單片機豐富的IO端口,及其控制的靈活性,實現(xiàn)基本的里程和價格的計算及顯示功能.圖1計價器系統(tǒng)框圖2.3.2軟件設計方案本設計程序的采取C語言進行編寫,使用KeiluVision4編譯和Proteus7.4a仿真軟件進行仿真調(diào)試.其中的里程計算和費用計算方案如下.1、里程計算(1)霍爾傳感器對車輪進行信號檢測,產(chǎn)生并輸出脈沖信號到單片機;(2)單片機對傳感器輸出的脈沖信號進行計數(shù),并進行km計算:每一個信號代表輪胎旋轉(zhuǎn)一周,設輪胎的周長為1.57m;每km產(chǎn)生的信號數(shù)為N,里程顯示為N×1。57m=1.57N(km)2、費用計算(1)出租車的起步費為5元,并且3km內(nèi)不需額外計價;(2)出租車行駛3km后,單程2元/km,雙程1。5元/km。(3)等待收費的標準為5分鐘算一公里;(4)暫停時計價器暫停計價,不收費用。硬件設計本設計的硬件設計包括單片機AT89S52單元、測距單元、顯示單元(數(shù)碼管顯示金額、等待時間和里程,指示燈對單雙程切換指示、空車指示、等待計時指示)、按鍵單元、時鐘單元和儲存單元。3.1AT89S52單片機及最小系統(tǒng)3。1.1AT89S52單片機AT89S52具有如下特點:40個引腳,4kBytesFlash片內(nèi)程序存儲器,128bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。P0口有二個功能:1、外部擴展存儲器時,當做數(shù)據(jù)/地址總線.2、不擴展時,可做一般的I/O使用,但內(nèi)部無上拉電阻,作為輸入或輸出時應在外部接上拉電阻。P1口只做I/O口使用:其內(nèi)部有上拉電阻。
P2口有兩個功能:
1、擴展外部存儲器時,當作地址總線使用.
2、做一般I/O口使用,其內(nèi)部有上拉電阻.
?P3口有兩個功能:除了作為I/O使用外(其內(nèi)部有上拉電阻),還有一些特殊功能,由特殊寄存器來設置。圖2AT89S52引腳圖圖3AT89S52封裝圖設計中用到的單片機各管腳(圖2)功能以及與其他模塊連接介紹如下:VCC:接+5V電源。VSS:接地。時鐘引腳:XTAL1和XTAL2兩端接晶振和30PF的電容,構(gòu)成時鐘電路。它可以使單片機穩(wěn)定可靠的運行.RST:復位信號輸入端,高電平有效。當在此引腳加兩個機器周期的高電平時,就可以完成復位操作。P1.0:接功能按鍵。P1。1:接切換鍵,表示單雙程切換.P1。2:接查詢(上次金額)鍵.P1。3:接清零鍵。P1.4:接空車指示燈.P1.5:接查詢指示燈。P1.6:接開始計時指示燈.P1。7:接雙程指示燈。P3.0:接查詢/確認鍵。P0口接數(shù)碼管段選端,P2口接數(shù)碼管位選段。P3.2:接霍爾傳感器的輸出口。P3.3:接存儲器的SCL口.P3.4:接儲存器的SDA口.P3.5:接時鐘電路DS1302的RST口.P3。6:接DS1302的SCLK口。P3。7:接DS1302的I/O口。3.1。2單片機最小系統(tǒng)復位電路和晶振電路是AT89S52工作所需的最簡外圍電路。單片機最小系統(tǒng)電路圖如圖4所示。
圖4單片機最小系統(tǒng)AT89S52的復位端是一個史密特觸發(fā)輸入,高電平有效。RST端若由低電平上升到高電平并持續(xù)2個周期,系統(tǒng)將實現(xiàn)一次復位操作。在復位電路中,按一下復位開關(guān)就使在RST端出現(xiàn)一段時間的高電平,外接11.0592M晶振和兩個30pF電容組成系統(tǒng)的內(nèi)部時鐘電路.3.2測距單元本次設計我們選取了霍爾傳感器來進行里程測量?;魻柶骷且环N磁傳感器。用它們可以檢測磁場及其變化,可在各種與磁場有關(guān)的場合中使用.霍爾器件以霍爾效應為其工作基礎.霍爾器件具有許多優(yōu)點,它們的結(jié)構(gòu)牢固,體積小,重量輕,壽命長,安裝方便,功耗小,頻率高,耐震動,不怕灰塵、油污、水汽及鹽霧等的污染或腐蝕.霍爾器件分為:霍爾元件和霍爾集成電路兩大類,前者是一個簡單的霍爾片,使用時常常需要將獲得的霍爾電壓進行放大.后者將霍爾片和它的信號處理電路集成在同一個芯片上.本次設計選取了霍爾集成電路來測量里程。里程測量是通過將霍爾傳感器的集成電路安裝在車輪上方的鐵板上,將磁鐵安裝在車輪上,旋轉(zhuǎn)的車輪將磁鐵對準集成電路時,霍爾傳感器會輸出一個脈沖信號,送到單片機,經(jīng)過單片機的計算處理,將行駛的里程送到顯示單元并顯示出來。其原理示意圖如下:圖5傳感器測距示意圖A44E是一種利用霍爾效應做成的半導體集成電路器件,它被設計在交變磁場中運行,特別是能在低電源電壓和長時間運行溫度范圍可達到125℃。這種霍爾IC可用作各種類型的傳感器(速度傳感器、位移傳感器、轉(zhuǎn)速傳感器等等),接觸開關(guān)以及相類似的應用場合。其工作電壓比較寬(2.5~20V),可運行在較大的溫度范圍內(nèi)(-20℃~125℃),其輸出的信號符合TTL電平標準,可以直接接到單片機的IO端口上,而且其最高檢測頻率可達到1MHZ.霍爾傳感器的特性如圖6所示,其中BOP為工作點“開”的磁感應強度,BRP為釋放點“關(guān)"的磁感應強度。當外加的磁感應強度超過動作點BOP時,傳感器輸出低電平,當磁感應強度降到動作點BOP以下時,傳感器輸出電平不變,一直要降到釋放點BRP時,傳感器才由低電平躍變?yōu)楦唠娖?BOP與BRP之間的滯后使開關(guān)動作更為可靠.U18集成霍耳開關(guān)由穩(wěn)壓器A、霍耳電勢發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D和OC門輸出E五個基本部分組成。在輸入端輸入電壓VCC,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾電勢發(fā)生器的兩端,根據(jù)霍爾效應原理,當霍爾片處在磁場中時,在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會產(chǎn)生霍爾電勢差VH輸出,該VH信號經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC門輸出。當施加的磁場達到工作點(即Bop)時,觸發(fā)器輸出高電壓(相對于地電位),使三極管導通,此時OC門輸出端輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態(tài)為關(guān)。這樣兩次電壓變換,使霍爾開關(guān)完成了一次開關(guān)動作。圖6A44E霍爾傳感器和其輸出特性A44E霍爾傳感器有3個外接口,2個是電源的正負極接口,最后一個是脈沖信號輸出口,只要將霍爾傳感器的信號輸出端接到單片機的端口上便可以實現(xiàn)距離檢測。其中,單片機的P3。2(INT0)引腳作為信號的輸入端,采用外部中斷0進行計數(shù)。車輪每轉(zhuǎn)一圈,霍爾傳感器就產(chǎn)生一個脈沖信號,根據(jù)霍爾效應原理,當霍爾片處在磁場中時,霍爾傳感器的輸出端輸出低電平。當車輪轉(zhuǎn)動一圈時小磁鐵提供一個磁場,則霍爾傳感器輸出一次低電平完成一次數(shù)據(jù)采集,從而產(chǎn)生信號。霍爾傳感器檢測并輸出信號到單片機的INT0或INT1計算脈沖輸入端,引起單片機的中斷,對脈沖計數(shù),當計數(shù)達到特定的次數(shù)時,里程就會增加,單片機對里程進行計算后,通過接口電路將計算好的結(jié)果傳送到數(shù)碼管并顯示出來。3.3按鍵單元本設計的按鍵單元電路(如圖7)有5個按鍵,功能分別是:S1是空車時查詢上次金額和里程以及等待時間,結(jié)賬時查詢本次金額和里程以及等待時間;S2功能鍵,不按時空車指示燈亮而且數(shù)碼管顯示實時時間,按下時可設置單雙程,此時再按S3可進行單程和雙程之間切換,再按S1可確認單雙程,雙程時雙程指示燈亮并開始計價;按下S4可對本次金額、里程以及等待時間進行查詢;S5為清零鍵,按下時清零之前數(shù)據(jù)消除以及存儲本次信息。圖7按鍵單元電路3。4時鐘單元本設計采用基于DS1302的時鐘電路(如圖8)對時間進行實時顯示,單片機掉電對其沒有影響。用數(shù)碼管表現(xiàn)出來,當出租車空車時就顯示時間,給人時間提示。圖8時鐘電路單元3.5顯示單元本設計顯示單元包括兩部分:數(shù)碼管顯示(圖11)和二極管指示顯示(圖12)。數(shù)碼管顯示部分使用兩個四位一體的LED數(shù)碼管,LED顯示器是由LED發(fā)光二極管發(fā)展過來的一種顯示器件,是發(fā)光二極管的改型。LED是發(fā)光二極管的簡稱,是一種將電能轉(zhuǎn)換成光能的設備.本身也是一種光源。LED顯示器是由發(fā)光二極管排列組成的顯示器件.它采用低電壓掃描驅(qū)動,具有:耗電少、使用壽命長、成本低、故障少、視角大、可視距離遠等特點。此外,它的響應時間短(一般不超過0.1us),亮度也比較高。它的缺點是工作電流比較大,每一段的工作電流在10mA左右。其中每位數(shù)碼管是由8個發(fā)光二極管演變而來,其中7個發(fā)光二極管構(gòu)成7筆字形,另一個構(gòu)成小數(shù)點,稱為8段LED。8段LED數(shù)碼管是利用7個LED(發(fā)光二極管)外加一個小數(shù)點的LED組合而成的顯示設備,可以顯示0~9等10個數(shù)字和小數(shù)點,使用非常廣泛,它的外觀如圖9所示:圖98段數(shù)碼管這類數(shù)碼管可以分為共陽極(8個發(fā)光二極管的陽極接在—起)與共陰極(8個發(fā)光二極管陰極連在一起)兩種,共陽極就是把所有LED的陽極連接到共同接點,而每個LED的陰極分別為a、b、c、d、e、f、g及dp(小數(shù)點);共陰極則是把所有LED的陰極連接到共同接點,而每個LED的陽極分別為a、b、c、d、e、f、g及dp(小數(shù)點),如圖10所示.圖10共陽和共陰數(shù)碼管結(jié)構(gòu)通過控制這個公共端,可使該位亮或暗。如共陰極端接地或共陽極接高電平,則該位顯示器有效,反之無效。本設計采用共陰LED數(shù)碼管.數(shù)碼管有靜態(tài)顯示和動態(tài)顯示兩種,這里采用動態(tài)顯示。它具有低功耗、接口少等特點。如圖11兩個四位一體數(shù)碼管接P0口作為段選,接P2口作為位選.空車時顯示時間,開始計價時前四位顯示路程,后四位顯示價錢。當查詢等待時間時顯示為等待時間.圖11顯示單元(數(shù)碼管顯示部分)二極管指示部分包括空車指示燈、等待時間查詢指示、開始計時指示和雙程指示如圖12.這些指示燈能對出租車的每一種狀態(tài)進行指示,空車時空車指示燈亮,查詢等待時間時等待時間查詢指示燈亮,當汽車速度小于5km/h時開始計時,計時指示燈亮。計價前如果按下雙程鍵雙程指示燈亮,表示為雙程。圖12顯示單元(二極管指示部分)3.6儲存單元存儲單元的作用是儲存上一次的里程、金額和等待時間.AT24C02是Atmel公司的1KB的電可擦除存儲芯片,采用兩線串行的總線和單片機通訊,電壓最低可以到2。5V,額定電流為1mA,靜態(tài)電流10uA(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8腳的DIP封裝,使用方便。圖13儲存單元電路圖中R3、R4是上拉電阻,其作用是減少AT24C02的靜態(tài)功耗。由于AT24C02的數(shù)據(jù)線和地址線是復用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(時鐘脈沖)和SDA(數(shù)據(jù)/地址)與單片機P3.3和P3。4口連接,進行傳送數(shù)據(jù)。軟件設計本系統(tǒng)的軟件設計主要分為系統(tǒng)主程序、數(shù)據(jù)處理子程序、等待時間及時子程序和鍵盤掃描子程序五個模塊,下面對每一塊進行介紹。4。1系統(tǒng)主程序本設計中,軟件設計采用模塊化操作,利用各個模塊之間的相互聯(lián)系,在設計中采用主程序調(diào)用各個子程序的方法,使程序通俗易懂,我們設計了整體程序流程圖。在main函數(shù)編寫開始,要進行初始化,包括對系統(tǒng)初始化和對硬件設備進行初始化,并使硬件處于就緒狀態(tài)。在主程序模塊中,需要完成對各接口芯片的初始化、出租車起價和單價的初始化、中斷向量的設計以及開中斷、循環(huán)等待等工作。系統(tǒng)流程圖如下圖14.圖14系統(tǒng)主程序流程圖4。2數(shù)據(jù)處理子程序每當霍爾傳感器輸出一個低電平信號就使單片機中斷一次,在計數(shù)中斷服務程序,里程和金額都相應變化,當然等待時間也換算成里程(當速度小于5km/h時5分鐘想當于1公里)。計算程序根據(jù)里程數(shù)分別進入不同的計算公式。如果里程大于3公里,則執(zhí)行公式:金額=(里程—3)*單價+5;否則,執(zhí)行公式:總金額=起步價。程序流程圖如圖15所示。圖15數(shù)據(jù)處理子程序流程圖4.3等待時間計時子程序當出租車的速度5km/h時等待時間開始計時,并被換算里程,進行計算顯示等待時間和金額。當結(jié)算時停止計時和計費并顯示金額,當有查詢鍵按下時顯示等待時間,當有清零鍵按下時存儲本次金額。如圖16:圖16等待時間計時子程序4。4鍵盤掃描子程序鍵盤采用查詢的方式,放在主程序中,當沒有按鍵按下的時候,單片機循環(huán)主程序,一旦右按鍵按下,便轉(zhuǎn)向相應的子程序處理,處理結(jié)束再返回。流程圖如圖17。圖17鍵盤掃描子程序Proteus軟件仿真本設計需要用KeiluVision4對C51程序進行編譯,生成“.hex"文件,如圖18:圖18KeiluVision4編譯在Proteus軟件中畫出仿真電路(如圖19),把KeiluVision4編譯后生成的“。hex"導入到單片機中,按“運行仿真"鍵進行仿真.圖19Proteus仿真課程設計體會在本次單片機課程設計中,經(jīng)過討論,我們選擇的設計內(nèi)容是以AT89S52芯片為核心的出租車計價器,計價器的功能是以按鍵為輸入控制方式,實現(xiàn)對汽車運行過程中狀態(tài)信息的測量,主要包括等待時間、金額和里程等,并實現(xiàn)對這些信息進行存儲及顯示處理等功能。在完成整個課程設計的過程中,我們遇到了許多困難,但在解決困難的同時,我們也收獲了許多,現(xiàn)在就將在整個課程設計過程中的幾點收獲與體會總結(jié)如下:1、鞏固了單片機使用、C語言編程等專業(yè)知識由于單片機課程是在上學期修的,之后的這段時間也沒有使用單片機實際的做一些設計,很多單片機的知識以及C語言的編程方法已經(jīng)不是能很熟練的應用。因此,選題后我們便開始復習單片機方面的知識,同時也通過各種方式查閱、搜索了很多相關(guān)資料。從總體設計與具體設計,從電路焊接到調(diào)試完成,在整個過程中,我們學會了基本的單片機開發(fā)技能。2、熟悉了Proteus、KeiluVision4、word2010、viso2010等軟件的操作從開始設計到最終完成設計,我們使用了仿真軟件Proteus和編程軟件KeiluVision4對電路及程序進行調(diào)試。由于不熟練,開始時各種問題層出不窮,有時一個小問題便讓我們困惑半天,我們查閱相關(guān)資料,請教他人最終才得以解決。通過編寫程序,我們深刻意識到采用模塊化的設計思想的重要性,它方便編寫、修改與調(diào)試,另外加上必要的注釋,便于交流與理解。通過后期的文檔整理,我們熟悉了為我們對word2010、viso2010辦公室軟件的操作,為我們今后的工作學習打下了良好基礎。3、鍛煉了團隊協(xié)作能力在整個設計的過程中,我們兩人通力合作。本著以學習知識為重,完成課程設計內(nèi)容次之的原則,先是一人做硬件設計,一人做軟件設計.在對各自分工的內(nèi)容有了較深的了解之后,我們便互相交流,將對各自所負責內(nèi)容的理解與遇到的問題告訴對方,然后共同尋找問題的解決方法。在對方遇到困難時,我們互相鼓勵,互相幫助,培養(yǎng)了對他人的耐心尊重與關(guān)懷。本次設計我們學習到不少專業(yè)內(nèi)外的知識,但由于自己的理論知識水平有限,實踐知識和設計經(jīng)驗不足,在設計過程中難免存在一些問題.所焊實物尚有許多不足,個別功能還不能很好的實現(xiàn),主要原因是考慮問題不周全,電路設計經(jīng)驗少,實際動手能力不足.懇請各位老師批評指正,以使我們在以后的學習和實踐中加以改進和提高。參考文獻戴佳,陳斌,苗龍。51單片機應用系統(tǒng)開發(fā)典型實例.中國電力出版社,2005余發(fā)山,王福忠.單片機原理及應用技術(shù).中國礦業(yè)大學出版社,2008.6侯玉寶,陳忠平,李成群.基于Proteus的51系列單片機設計與仿真.電子工業(yè)出版社,2008李玉梅?;贛CS-51系列單片機原理的應用設計.國防工業(yè)出版社,2006邊春元,李文濤,江杰。C51單片機典型模塊設計與應用.機械工業(yè)出版社,2008樓然苗,胡佳文,李光飛等.單片機實驗與課程設計.浙江大學出版社,2010。10段晨東。單片機實用技術(shù)教程.清華大學出版社,2008王曉明.單片機接口技術(shù).北京航空航天大學出版社,2007王曉敏.傳感器檢測技術(shù)及應用.北京大學出版社,2010吳紅星.電機驅(qū)動與控制專用集成電路及應用.中國電力出版社,2006附1:源程序代碼#include〈reg52.h>#include〈intrins.h>#defineuintunsignedint#defineucharunsignedchar#defineDanJia_DanCheng20#defineDanJia_WangFan15#defineLunJing5/*車輪直徑0.5m*/#defineLunChang1。57//m3.14*0.5/*************************狀態(tài)碼定義**************************/#defineKongChe_flag0#defineJinEr_LiCheng_flag1#defineShiJian_flag2#defineDanJia_flag3/*************************************ds1302地址定義*****************************************/#defineWRITE_SECOND?0x80#defineWRITE_MINUTE??0x82#defineWRITE_HOUR0x84#defineREAD_SECOND?0x81#defineREAD_MINUTE0x83#defineREAD_HOUR?0x85#defineWRITE_PROTECT 0x8E/***************************************AT24C02*****************************************/#define?OP_READ?0xa1??//器件地址以及讀取操作#define OP_WRITE0xa0??//器件地址以及寫入操作/****************************引腳定義*********************************/sbitFunction_Key=P1^0;sbitQieHuan_Key=P1^1;sbitZanTing_Key=P1^2;sbitClear_Key=P1^3;sbitChaXun_QueRen_Key=P3^0;sbitKongChe_Led=P1^4;sbitChaXun_Led=P1^5;sbitJiShi_Led=P1^6;sbitDanShuang_Led=P1^7;//位尋址寄存器定義sbitACC_7=ACC^7;sbitSCLK=P3^6;//DS1302時鐘信號7腳sbitDIO=P3^7;//DS1302數(shù)據(jù)信號6腳sbitCE=P3^5;//DS1302片選5腳sbitSDA=P3^4;sbitSCL=P3^3;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};ucharcodewei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};?uchardatadis1[]={0x00,0x00,0x0b,0x00,0x00,0x0b,0x00,0x00};//時分秒顯示緩沖區(qū)uchardatachuzhi[]={0x00,0x00,0x00};//時分秒初值uchardatatime1302[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};uintdataCount=0;uintdataCount1=0,Count2=0;uchardataDanJia=DanJia_DanCheng;//默認單程價格uintdataLiCheng=0;uintdataJinEr=0;uchardat(yī)aSecond;uintdataMinute;uintdataSpeed=0;uintdat(yī)aOld_Count,New_Count;uchari=0,j=0,k=0,n=0;uintdat(yī)a_temp[];bitKaiShiFlag=0;bitJiShiFlag=0;bitChaXunFlag=0;uintZanTingFlag=0;bitJinErFlag=0;voidstart();voidstop();unsignedcharshin();bitshout(ucharwrite_data);unsignedcharread_random(ucharrandom_addr);voidwrite_byte(ucharaddr,ucharwrite_data);voiddelayms(ucharms);voiddat(yī)a_process();voidfill_byte(ucharfill_data,ucharn);voiddelay(uintx){?uinty;?while(x--)??for(y=110;y>0;y——);}/************************************at24c02程序***************************************/voidstart()//開始位{?SDA=1; SCL=1;?_nop_();?_nop_();?SDA=0;?_nop_();?_nop_();?_nop_(); _nop_(); SCL=0;}voidstop()//停止位{?SDA=0;?_nop_();?_nop_();?SCL=1;?_nop_();?_nop_();?_nop_(); _nop_(); SDA=1;}ucharshin()//從AT24Cxx移入數(shù)據(jù)到MCU{ unsignedchari,read_dat(yī)a; for(i=0;i〈8;i++)?{??SCL=1;??read_data<<=1;??read_data|=(unsignedchar)SDA;??SCL=0;?}?return(read_data);}bitshout(unsignedcharwrite_data)//從MCU移出數(shù)據(jù)到AT24Cxx{?unsignedchari;?bitack_bit;?for(i=0;i〈8;i++) ?//循環(huán)移入8個位?{??SDA=(bit)(write_data&0x80);??_nop_(); ?SCL=1; ?_nop_();??_nop_();? SCL=0;??write_data<〈=1;?}?SDA=1;? ?//讀取應答?_nop_();?_nop_();?SCL=1;?_nop_();?_nop_();?_nop_();?_nop_();?ack_bit=SDA;?SCL=0;?returnack_bit; ? //返回AT24Cxx應答位}voidwrite_byte(ucharaddr,ucharwrite_data)//在指定地址addr處寫入數(shù)據(jù)write_data{?start();?shout(OP_WRITE);?shout(addr); shout(write_data);?stop();?delayms(10);??//寫入周期}ucharread_current()//在當前地址讀取{?ucharread_dat(yī)a;?start(); shout(OP_READ); read_dat(yī)a=shin(); stop(); returnread_data;}ucharread_random(unsignedcharrandom_addr)//在指定地址讀取{?start(); shout(OP_WRITE);?shout(random_addr); return(read_current());}voidfill_byte(ucharfill_data,ucharn)?//填充數(shù)據(jù)fill_data到EEPROM內(nèi){uchari;?for(i=0;i〈n;i++)?{??write_byte(i,fill_data);?}}voiddelayms(ucharms){?unsignedchari; while(ms--)?{? for(i=0;i<120;i++);??}}/*************************************數(shù)碼管顯示程序*******************************************/voidseg_show(ucharw,uchardat,uchardp){if(w==dp)?{??P2=wei[w];?P0=table[dat]|0x80;?delay(1);?}?else?{ P2=wei[w];?P0=table[dat];?delay(1); ?}}voidshow_nint(ucharw,uintdat,ucharn,uchardp)//顯示w位:從w位顯示;dat(yī):顯示數(shù)據(jù);//n:要顯示數(shù)據(jù)的位數(shù);dp:小數(shù)點顯示位;最多五位數(shù)字顯示{?if(n==1)?{ ?seg_show(w,dat,dp);??}?if(n==2)?{ seg_show(w,dat(yī)/10,dp);?seg_show((w+1),dat%10,dp);??}?if(n==3)?{??seg_show(w,dat/100,dp);?? ??seg_show((w+1),dat/10%10,dp);? seg_show((w+2),dat%10,dp); ?}?if(n==4) { ?seg_show(w,dat/1000,dp);??seg_show(w+1,dat/100%10,dp); ?seg_show(w+2,dat/10%10,dp);? seg_show(w+3,dat%10,dp); ?}?if(n==5)?{ seg_show(w,dat/10000,dp);??seg_show(w+1,dat/1000%10,dp);? seg_show(w+2,dat/100%10,dp);??seg_show(w+3,dat(yī)/10%10,dp);? seg_show(w+4,dat(yī)%10,dp); ?}??}/***************************ds1302時鐘程序***************************///地址、數(shù)據(jù)發(fā)送子程序/*voidWrite1302(unsignedcharaddr,dat){?unsignedchari,temp;?CE=0;//CE引腳為低,數(shù)據(jù)傳送中止?SCLK=0;//清零時鐘總線?CE=1;//CE引腳為高,邏輯控制有效?//發(fā)送地址?for(i=8;i〉0;i--)//循環(huán)8次移位 {??SCLK=0;? temp=addr; ?DIO=(bit)(temp&0x01);//每次傳輸?shù)妥止?jié) addr〉>=1;//右移一位??SCLK=1;?}?//發(fā)送數(shù)據(jù)?for(i=8;i>0;i-—) {?SCLK=0;?temp=dat;?DIO=(bit)(temp&0x01); dat(yī)>〉=1;?SCLK=1;?}?SCLK=1; CE=0;} *///數(shù)據(jù)讀取子程序unsignedcharRead1302(unsignedcharaddr){unsignedchari,temp,dat1,dat2;CE=0;SCLK=0;CE=1;//發(fā)送地址for(i=8;i>0;i--)//循環(huán)8次移位{SCLK=0;temp=addr;DIO=(bit)(temp&0x01);//每次傳輸?shù)妥止?jié)addr〉>=1;//右移一位SCLK=1;}//讀取數(shù)據(jù)for(i=8;i〉0;i--){ACC_7=DIO;SCLK=1;ACC〉>=1;SCLK=0;}??SCLK=1;CE=0;dat1=ACC;dat2=dat1/16;//數(shù)據(jù)進制轉(zhuǎn)換dat1=dat1%16;//十六進制轉(zhuǎn)十進制dat1=dat1+dat2*10;return(dat1);}//初始化DS1302(選擇性使用)/*voidinit1302(uchars,ucharm,ucharh,uchard,ucharmon,uchary){?Write1302(WRITE_PROTECT,0X00);//禁止寫保護?Write1302(WRITE_SECOND,s);//秒位初始化 Write1302(WRITE_MINUTE,m);//分鐘初始化?Write1302(WRITE_HOUR,h);//小時初始化?//Write1302(0x80,0x80);//時鐘暫停?Write1302(0x86,d);??//日初始化?Write1302(0x88,mon);??//月初始化 Write1302(0x8c,y);??//年初始化?Write1302(WRITE_PROTECT,0x80);//允許寫保護}?? */voidshow_time(){ chuzhi[2]=Read1302(0x81); chuzhi[1]=Read1302(0x83);??chuzhi[0]=Read1302(0x85); ?dis1[7]=chuzhi[2]%10; dis1[6]=chuzhi[2]/10;?dis1[4]=chuzhi[1]%10;?dis1[3]=chuzhi[1]/10;?dis1[1]=chuzhi[0]%10; dis1[0]=chuzhi[0]/10;??seg_show(7,dis1[7],9);delay(1);?seg_show(6,dis1[6],9);delay(1);?seg_show(5,10,9);delay(1);?seg_show(4,dis1[4],9);delay(1); seg_show(3,dis1[3],9);delay(1);?seg_show(2,10,9);delay(1);?seg_show(1,dis1[1],9);delay(1);?seg_show(0,dis1[0],9);delay(1);}/********************************按鍵掃描函數(shù)**********************************/voidkeyscan(){ uintm=0,LastJinEr[4]=0,last1=0,LastLiCheng[4]=0,last2=0,LastMinute[3]=0,last3=0,LastSecond[2]=0,last4=0;?if(KaiShiFlag==0)?{ ??if(ChaXun_QueRen_Key==0)??{ ???ChaXun_Led=0;?? ?delay(5);????if(ChaXun_QueRen_Key==0)????{? ???while(ChaXun_QueRen_Key==0); ? ??JinErFlag=1;? ???n++; ? ? ?if(n==3)???{??? n=0;?? ??ChaXun_Led=1;????JinErFlag=0;???}??? }? ?}? if(JinErFlag==1)?? {?? ?for(m=4;m〉0;m--)????? {??? ?LastJinEr[m—1]=read_random(m);????}????last1=LastJinEr[3]+LastJinEr[2]*10+LastJinEr[1]*100+LastJinEr[0]*1000;? ??for(m=8;m>4;m--)??????{??? ?LastLiCheng[m-5]=read_random(m);??? }? ??last2=LastLiCheng[3]+LastLiCheng[2]*10+LastLiCheng[1]*100+LastLiCheng[0]*1000;??? for(m=11;m〉8;m--)??? ?{?? ??LastMinute[m—9]=read_random(m); ???}????last3=LastMinute[2]+LastMinute[1]*10+LastMinute[0]*100;?? ?for(m=13;m>11;m—-)???? ?{? ???LastSecond[m-12]=read_random(m); ?? } ???last4=LastSecond[1]+LastSecond[0]*10;??? if(n==1)? ??{?????show_nint(4,last1,4,6);? ??show_nint(0,last2,4,2);????}??? if(n==2) ???{??? ?seg_show(5,10,9); ????show_nint(2,last3,3,9);??? show_nint(6,last4,2,9);?? ?}?? ?} ??if(Function_Key==0)???{ ??delay(5);?? ?if(Function_Key==0) ???{?????while(Function_Key==0);?? ? i++;?????if(i==2)? ? {?? ???i=0;?????} ? ?}? ?} ??if((i==KongChe_flag)&&(JinErFlag==0))???{ ? ?show_time();???}? ?elseif(JinErFlag==0)?? { ??? if(DanJia==DanJia_DanCheng) ?seg_show(0,10,9);//顯示"—-"表示待設置單價?? else?? ??seg_show(5,10,9);???show_nint(1,DanJia_DanCheng,2,1);???show_nint(6,DanJia_WangFan,2,6);????if(QieHuan_Key==0)????{ ?????delay(5);? ? ?if(QieHuan_Key==0)????? { ???? ?while(QieHuan_Key==0);???? ?if(DanJia==DanJia_DanCheng)????? ?{?? ????DanJia=DanJia_WangFan;? ?? ??DanShuang_Led=0;?//雙程led亮 ? ??? ???} ??? ?else???? ??{?????? ?DanJia=DanJia_DanCheng; ? ?? ??DanShuang_Led=1; ?? ???}?? ???} ??? }?????if(ChaXun_QueRen_Key==0)? ???{??????delay(5);? ? ?if(ChaXun_QueRen_Key==0) ?????{ ???? ?while(ChaXun_QueRen_Key==0); ?? ?KongChe_Led=1; ?????KaiShiFlag=1;??? ??} ?? ?}?? }?}elseif(KaiShiFlag==1)??//非空車{???if(ZanTingFlag==0)?????EA=1; else? ???EA=0; // EA=1;//開始計費??if((Speed〈=50)&&(ZanTingFlag==0))??{? JiShi_Led=0; ?JiShiFlag=1;?? TR0=1;?//開始計時?? //EX0=0;//停止記路程????//if(P3^2==0)????//EX0=1;????if(ChaXunFlag==1)??{ ?????if(k==1) ? ? ?{????? ?show_nint(0,LiCheng,4,2);?? ?show_nint(4,JinEr,4,6);??????}? ? ??else ??? ?{ ? ???seg_show(5,10,9); //顯示’-'????show_nint(2,Minute,3,9);? ? show_nint(6,Second,2,9);????? }???}??}??else? {????//if((ZanTingFlag==1))? //{ ??//?EX0=0; ?//停止記路程??//}???if((Speed>50)&&(ZanTingFlag==0)) ? {??? ?EX0=1;? //開始記路程? ?}? ?TR0=0;? //暫停計時 ??JiShiFlag=0;?? JiShi_Led=1;??}??if(ZanTing_Key==0)? {? ?delay(5);???if(ZanTing_Key==0)???{????while(ZanTing_Key==0);??????? ChaXun_Led=1;???? ZanTingFlag++; ?? if(ZanTingFlag==1)?????EA=0;????if(ZanTingFlag==2)? ??{?? ??ZanTingFlag=0;????} ??} ?}??if(ChaXun_QueRen_Key==0) ?{? ??delay(5); ? ?if(ChaXun_QueRen_Key==0)??? {?? ??while(ChaXun_QueRen_Key==0); ?? ChaXunFlag=1;???? ChaXun_Led=0; ???k++;? ???if(k==2)?? ???k=0; ? ?}??}??if(Clear_Key==0)?{??delay(5);?? if(Clear_Key==0) ??{????????while(Clear_Key==0);?????fill_byte(0,8); ????for(m=4;m>0;m--)??
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度能源項目合同財產(chǎn)保全擔保書范本3篇
- 2025年度個人裝修貸款協(xié)議書3篇
- 二零二五年度60歲以上人員社區(qū)教育輔導勞動合同模板3篇
- 2024-2025學年新教材高中政治第3單元就業(yè)與創(chuàng)業(yè)單元綜合提升教案新人教版選擇性必修2
- 2025版智能交通管理系統(tǒng)建設運營履約擔保合同4篇
- 2025年度噴灌系統(tǒng)節(jié)能改造技術(shù)合同4篇
- 2025年度在線教育平臺兼職外教遠程教學合同4篇
- 2025年度宿舍管理員職業(yè)發(fā)展規(guī)劃聘用合同
- 二零二五年度駕校教練員職業(yè)發(fā)展承包合同3篇
- 2025年度馬賽克材料研發(fā)與應用采購合同4篇
- C及C++程序設計課件
- 帶狀皰疹護理查房
- 公路路基路面現(xiàn)場測試隨機選點記錄
- 平衡計分卡-化戰(zhàn)略為行動
- 國家自然科學基金(NSFC)申請書樣本
- 幼兒教師干預幼兒同伴沖突的行為研究 論文
- 湖南省省級溫室氣體排放清單土地利用變化和林業(yè)部分
- 材料設備驗收管理流程圖
- 培訓機構(gòu)消防安全承諾書范文(通用5篇)
- (完整版)建筑業(yè)10項新技術(shù)(2017年最新版)
- 第8期監(jiān)理月報(江蘇版)
評論
0/150
提交評論