基于單片機(jī)的里程速度測(cè)試表設(shè)計(jì)_第1頁(yè)
基于單片機(jī)的里程速度測(cè)試表設(shè)計(jì)_第2頁(yè)
基于單片機(jī)的里程速度測(cè)試表設(shè)計(jì)_第3頁(yè)
基于單片機(jī)的里程速度測(cè)試表設(shè)計(jì)_第4頁(yè)
基于單片機(jī)的里程速度測(cè)試表設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩57頁(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)介

本科論文目錄TOC\o"1-2"\h\u10308摘要 I30672Abstract II251881系統(tǒng)方案設(shè)計(jì) 437541.1硬件方案的選擇 478751.2總體設(shè)計(jì)方案選擇 7258312系統(tǒng)硬件電路設(shè)計(jì) 8203882.1ST89C52單片機(jī)系統(tǒng)設(shè)計(jì) 8139882.2LCD1602液晶顯示電路設(shè)計(jì) 9122692.3DS1302時(shí)鐘電路設(shè)計(jì) 1034362.4LM393芯片的介紹 10120792.5霍爾測(cè)速電路的設(shè)計(jì) 11222412.6獨(dú)立按鍵電路的設(shè)計(jì) 1287163系統(tǒng)軟件部分設(shè)計(jì) 13205313.1軟件開(kāi)發(fā)環(huán)境的介紹 13213693.2系統(tǒng)重要函數(shù)的介紹 13108564系統(tǒng)整體調(diào)試 1696054.1系統(tǒng)硬件測(cè)試 1796054.2系統(tǒng)軟件測(cè)試 193559結(jié)論 203559參考文獻(xiàn) 2131556附錄源程序代碼 2330619致謝 41摘要為了能夠有效的應(yīng)用霍爾傳感器實(shí)現(xiàn)轉(zhuǎn)速直接轉(zhuǎn)化成為數(shù)字脈沖信號(hào),就能夠?qū)⒃撔畔鬏斀o單片機(jī)進(jìn)行處理,并且通過(guò)規(guī)定程序能夠計(jì)算出數(shù)字脈沖的頻率,然后再實(shí)現(xiàn)計(jì)數(shù)數(shù)值能夠在顯示器中展示出來(lái)。同時(shí)該裝置內(nèi)安裝有蜂鳴器裝置,在速度達(dá)到規(guī)定要求后就會(huì)發(fā)生聲響,使得操作者可以按照要求減速,考慮到信號(hào)的衰減、干擾等影響,利用單片機(jī)在信號(hào)輸入前應(yīng)對(duì)其進(jìn)行放大整形REF_Ref11126\r\h[1]。本文所設(shè)計(jì)的系統(tǒng)中,將STC89C52單片機(jī)作為主控核心,霍爾傳感器能夠直接獲取轉(zhuǎn)速信息,就能夠確定自行車(chē)速度/里程等信號(hào),并且通過(guò)其內(nèi)部處理器EEPROM能夠保存所有信息,然后將速度、里程等信息通過(guò)LED顯示,同時(shí)還能夠應(yīng)用DS1302來(lái)顯示日期和時(shí)間。本文主要目的就是設(shè)計(jì)自行車(chē)速度里程表硬件與軟件部分。硬件有傳感器、單片機(jī)等部件設(shè)計(jì),還有各個(gè)部分的電路設(shè)計(jì);軟件采用的是C語(yǔ)言完成各個(gè)系統(tǒng)的變成,達(dá)到模塊化設(shè)計(jì)標(biāo)準(zhǔn)。整個(gè)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,性能優(yōu)越,符合正常的使用標(biāo)準(zhǔn)要求。結(jié)果表明,測(cè)量脈沖頻率的方式來(lái)確定速度數(shù)據(jù),精度較高,且穩(wěn)定性好,可以滿(mǎn)足多種條件的使用要求。該系統(tǒng)硬件電路簡(jiǎn)單,子程序具有通用性,完全符合設(shè)計(jì)要求。關(guān)鍵詞:?jiǎn)纹瑱C(jī);霍爾傳感器;液晶顯示;脈沖信號(hào)AbstractInordertoconvertthemeasuredspeedintodigitalpulsesignalwithhallsensor,andthentransmitthedigitalpulsesignaldatatothecoremicrocontrollerforprocessing,hemicrocontrollerwillcalculatethefrequencyofdigitalpulseinacertaintimeaccordingtothedesignprogram,andfinallygetthemileagefromthecountvalueanddisplayitthroughtheterminaldisplaydevice.Andadditionalalarmfunction,afterthespeedexceedsacertainfixedvalue,thebuzzersounds,indicatingtheneedtoslowdown,consideringtheattenuationofthesignal,interferenceandothereffects,theuseofsinglechipmicrocomputerbeforethesignalinputshouldbeamplifiedshaping.ThisdesignbySTC89C52single-chipmicrocomputerasthedesigncore,A3144Ehallsensortomeasurerevolutions,implementationofbicyclemileage/speedreal-timemeasurementandstatistics,blockinternalprocessorEEPROMbysinglechipmicrocomputertorealizetheinformationwhenthesystemispoweredoffautomaticallysavemileage,andcanusethebicyclemileageandspeedLEDreal-timedisplayandjoinDS1302toreal-timedisplaytimedate.Thehardwarecircuitandsoftwaredesignofbicyclespeedodometerareintroducedindetail.Thehardwarecircuitofthesystemissimpleandthesubroutineisuniversal.Theresultsshowthatthevelocitycanbecalculatedbymeasuringthepulsefrequencywithhighaccuracy,andthewholesystemhasgoodstabilityinoperation.Thehardwarecircuitofthesystemissimpleandthesubroutineisuniversal.Keywords:Singlechipmicrocomputer;Hallsensor;LED;Thepulsesignal.本科論文引言自行車(chē)最早是從木馬車(chē)轉(zhuǎn)化而來(lái)的,到現(xiàn)代社會(huì)已經(jīng)研發(fā)出很多新型樣式,并且功能也更加的齊全,已經(jīng)從最初的交通工具演化成為娛樂(lè)運(yùn)動(dòng)的工具,并且深受人民的喜愛(ài)。隨著生活水平的日漸提升,騎行最為一種休閑健身運(yùn)動(dòng)受到更多人的關(guān)注和喜愛(ài)。自行車(chē)作為一種身體鍛煉的方式,其效果是非常好的,還不會(huì)給人以劇烈運(yùn)動(dòng)的不適感,屬于有氧運(yùn)動(dòng)的范疇,可以鍛煉心臟功能。在運(yùn)動(dòng)的過(guò)程中,大腦能夠吸入大量的新鮮空氣,讓人整個(gè)身體都非常的舒適,心情也會(huì)比較開(kāi)朗。如果在自行車(chē)中安裝里程速度表,汽車(chē)者就能夠明確了解自己的騎行速度、里程以及其他各項(xiàng)數(shù)據(jù)的實(shí)時(shí)變化,從而很好的對(duì)運(yùn)動(dòng)量進(jìn)行控制。自行車(chē)速度里程表作為自行車(chē)附件,功能的多樣化已成必然趨勢(shì)。從單一里程顯示逐步發(fā)展到實(shí)時(shí)速度、平均速度、最大速度和單次里程顯示,并且具有超速報(bào)警功能。一款設(shè)計(jì)科學(xué)、合理的自行車(chē)速度里程表對(duì)科學(xué)且安全的騎行具有重大意義REF_Ref11191\r\h[2]。從當(dāng)前實(shí)際情況分析,霍爾傳感器被使用到工業(yè)領(lǐng)域的方方面面,電腦、手機(jī)等都有該裝置的影子,并且隨著時(shí)代的發(fā)展,應(yīng)用范圍逐步擴(kuò)大,對(duì)于人類(lèi)的影響也更加的明顯。該裝置在全世界范圍內(nèi)應(yīng)用到比較廣泛,每年增長(zhǎng)率都在5%-10%之間,對(duì)于電機(jī)、閥門(mén)、節(jié)氣門(mén)等裝置中的檢測(cè)有著非常高的實(shí)踐應(yīng)用價(jià)值[2]。由于中國(guó)市場(chǎng)在近年來(lái)對(duì)于霍爾傳感器需求量逐步增大,這也導(dǎo)致該廠家將很多部件都轉(zhuǎn)移到中國(guó)開(kāi)展生產(chǎn),以便于拓展中國(guó)市場(chǎng)。電子消費(fèi)領(lǐng)域在逐步的擴(kuò)張,降低功耗與成本是各個(gè)生產(chǎn)廠家的共同目標(biāo),同時(shí)也會(huì)有生產(chǎn)測(cè)試技術(shù)方面的不足還需要解決,以便于從總體上提升技術(shù)水平,也能夠提高自身的競(jìng)爭(zhēng)力。

霍爾傳感器技術(shù)在汽車(chē)工業(yè)中也有著廣泛的應(yīng)用,包括動(dòng)力、車(chē)身控制、牽引力控制以及防抱死制動(dòng)系統(tǒng)。為了滿(mǎn)足不同系統(tǒng)的需要,霍爾傳感器有開(kāi)關(guān)式、模擬式和數(shù)字式傳感器三種形式?;魻杺鞲衅骺梢圆捎媒饘俸桶雽?dǎo)體等制成,效應(yīng)質(zhì)量的改變?nèi)Q于導(dǎo)體的材料,材料會(huì)直接影響流過(guò)傳感器的正離子和電子。制造霍爾元件時(shí),汽車(chē)工業(yè)通常使用三種半導(dǎo)體材料,即砷化鎵、銻化銦以及砷化銦。最常用的半導(dǎo)體材料當(dāng)屬砷化銦?;魻杺鞲衅鞯男问?jīng)Q定了放大電路的不同,其輸出要適應(yīng)所控制的裝置。這個(gè)輸出可能是模擬式,如加速位置傳感器或節(jié)氣門(mén)位置傳感器,也可能是數(shù)字式。如曲軸或凸輪軸位置傳感器。當(dāng)霍爾元件用于數(shù)字信號(hào)時(shí),例如曲軸位置傳感器、凸輪軸位置傳感器或車(chē)速傳感器,必須首先改變電路?;魻栐c微分放大器連接,微分放大器與施密特觸發(fā)器連接。在這種配置中。傳感器輸出一個(gè)開(kāi)或關(guān)的信號(hào)。在多數(shù)汽車(chē)電路中,霍爾傳感器是電流吸收器或者使信號(hào)電路接地。要完成這項(xiàng)工作,需要一個(gè)NPN晶體管與施密特觸發(fā)器的輸出連接。磁場(chǎng)穿過(guò)霍爾元件,一個(gè)觸發(fā)器輪上的葉片在磁場(chǎng)和霍爾元件之間通過(guò)。綜合分析經(jīng)濟(jì)、環(huán)境等方面的因素,自行車(chē)在未來(lái)的消費(fèi)市場(chǎng)中必然會(huì)越來(lái)越火爆,發(fā)展前景是非常廣闊的。國(guó)外很多自行車(chē)的生產(chǎn)廠家都開(kāi)始逐步的研發(fā)自行車(chē)?yán)锍瘫淼南嚓P(guān)技術(shù),但是很多都是只能進(jìn)行測(cè)速或者里程的功能,相對(duì)簡(jiǎn)單。而一些技術(shù)水平高且比較復(fù)雜的設(shè)備,則加入GPS全球定位技術(shù),還能夠測(cè)量平均素質(zhì)、顯示時(shí)鐘等。在未來(lái)應(yīng)用和發(fā)展中,還有可能加入mp3、短信收發(fā)等等很多現(xiàn)代化的功能,可以使得其運(yùn)行更加的人性化,也會(huì)被人們所接受和喜愛(ài)。從市場(chǎng)方面了解可以發(fā)現(xiàn),近年來(lái)中國(guó)大陸消費(fèi)額在逐步的增加,臺(tái)灣和北美市場(chǎng)卻在逐步的減小,這是因?yàn)楹芏嗔悴考a(chǎn)都已經(jīng)轉(zhuǎn)移到大陸來(lái)進(jìn)行。MCU引入中國(guó)后,翻譯為單片微型計(jì)算機(jī),銷(xiāo)售量已經(jīng)是比較大的,這些產(chǎn)品主要是應(yīng)用電話(huà)、Caller

ID、玩具與LCD等相關(guān)領(lǐng)域中,未來(lái)必然會(huì)有更加廣闊的發(fā)展空間,同時(shí)也會(huì)逐步的應(yīng)用到自行車(chē)領(lǐng)域內(nèi),必然會(huì)給自行車(chē)領(lǐng)域帶來(lái)革命性的改變REF_Ref11243\r\h[3]。本次論文研究的主要任務(wù)是利用霍爾傳感器、蜂鳴器等技術(shù)的結(jié)構(gòu)部件研發(fā)出一種能夠使用LED實(shí)時(shí)顯示里程和速度自行車(chē)?yán)锍瘫?。在論文的前幾個(gè)部分中,會(huì)詳細(xì)的介紹本次設(shè)計(jì)的原理、思路,并且進(jìn)行方案的論證分析,選擇合適的元件,具體就是按照硬件、軟件來(lái)進(jìn)行的。本文首先進(jìn)行課題任務(wù)的分析,同時(shí)進(jìn)行了硬件與軟件設(shè)計(jì)方案的確定,然后是分析硬件設(shè)計(jì)分析,主要是從霍爾傳感器、單片機(jī)等各個(gè)關(guān)鍵部分的選擇出發(fā),確定最為合適的硬件組成部件。再然后具體的分析速度里程表的軟件,其中包含了數(shù)據(jù)處理、顯示等等各個(gè)程序,能夠達(dá)到系統(tǒng)的運(yùn)行標(biāo)準(zhǔn)要求。在文章的最后進(jìn)行整個(gè)系統(tǒng)的仿真與模擬分析包括硬件軟件的調(diào)試,然后是總結(jié)本次系統(tǒng)設(shè)計(jì)的具體情況,為改進(jìn)和完善提供基礎(chǔ)。本科論文1系統(tǒng)方案設(shè)計(jì)1.1硬件方案的選擇硬件設(shè)計(jì)是非常關(guān)鍵的,就是進(jìn)行各個(gè)結(jié)構(gòu)部件的分配和組合,并且按照特定的原理進(jìn)行連接,使得整個(gè)系統(tǒng)可以穩(wěn)定的運(yùn)行,達(dá)到人們所需要的性能標(biāo)準(zhǔn)要求。因此,在硬件搭建之前,首先要進(jìn)行方案的確定,明確各個(gè)模塊選擇最佳的方案,以達(dá)到最佳的使用效果。1.1.1主控芯片的選擇方案一:STC89C52RC這是一款低耗高能的芯片,為\t"/item/STC89C52/_blank"STC公司生產(chǎn),主要的優(yōu)勢(shì)就是功耗低、性能高,為CMOS8位微控制器。其內(nèi)部采用的是最為經(jīng)典的MCS-51內(nèi)核,但是對(duì)其進(jìn)行了必要的改進(jìn)和完善,較之傳統(tǒng)51單片機(jī)來(lái)說(shuō),性能更加的優(yōu)越,兼容性也比較好,可以滿(mǎn)足多種條件使用要求。對(duì)于單芯片來(lái)說(shuō),其內(nèi)部具備相對(duì)比較靈活的8位CPU和可編程Flash,能夠保證在系統(tǒng)運(yùn)行中更加的高效和靈活。該單片機(jī)最為主要的功能如下所示:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線(xiàn),內(nèi)置EEPROM,MAX810復(fù)位電路以及3個(gè)16位\t"/item/STC89C52/_blank"定時(shí)器/計(jì)數(shù)器。在系統(tǒng)切換到空閑模式的條件之下運(yùn)行,此時(shí)的CPU不工作,RAM、定時(shí)器/計(jì)數(shù)器等能夠繼續(xù)工作,也具備一定的功能。在突然斷電的情況下,由于掉電保護(hù)RAM并不會(huì)丟失,而是能夠被保存到系統(tǒng)內(nèi),但此時(shí)的單片機(jī)任何工作都不能進(jìn)行REF_Ref11442\r\h[4]。方案二:選擇使用MSP430單片機(jī)為系統(tǒng)中的主控芯片。該裝置通常也被叫做是混合信號(hào)處理器的裝置,能夠根據(jù)不同的要求應(yīng)用到不同功能電路中,使用范圍也比較多,是一款美國(guó)生產(chǎn)的單片機(jī)部件,最為重要的優(yōu)勢(shì)就是其功耗非常低、指令集比較簡(jiǎn)單,信號(hào)處理的精度非常高。方案三:選擇使用PIC16F877A單片機(jī)作為系統(tǒng)的主控芯片。這是一款新研發(fā)和投入使用的芯片部件,并且是8位單片機(jī)微機(jī),主要的作用就是能夠?qū)崿F(xiàn)程序內(nèi)存,并且可以根據(jù)使用者的需要進(jìn)行程序擦寫(xiě),以滿(mǎn)足不同使用的需求。方案二中的單片機(jī)一般都是使用到有電池作為供電裝置的便攜式設(shè)備中,并且系統(tǒng)開(kāi)發(fā)難度是比較高的,成本比較高。因此,很多簡(jiǎn)單系統(tǒng)設(shè)計(jì)都不會(huì)選擇這種方式。方案三的部件價(jià)格是比較高的,設(shè)計(jì)難度也比較大,所以很多情況也不會(huì)選擇該方案。經(jīng)過(guò)綜合對(duì)比分析,考慮到設(shè)計(jì)開(kāi)發(fā)的成本、資源利用等方面,最終確定是用方案一作為本次設(shè)計(jì)的依據(jù),應(yīng)用STC89C52單片機(jī)為主控芯片。1.1.2顯示器件的選擇方案一:使用LED進(jìn)行數(shù)碼管動(dòng)態(tài)顯示。該部件的價(jià)格相對(duì)比較適中,現(xiàn)實(shí)數(shù)字、字母都比較好,但是要進(jìn)行動(dòng)態(tài)掃描法應(yīng)用時(shí),會(huì)需要占用CPU的I/O口較多,而此時(shí)的電路中電流是明顯不足的,還需要配置驅(qū)動(dòng)電路才能滿(mǎn)足該裝置的電流運(yùn)行要求。方案二:采用LCD1602液晶顯示屏。該裝置的功能是非常高的,能夠按照使用者的需求顯示出16*2即32個(gè)字符,可任何形式的字符都能夠顯示出來(lái),準(zhǔn)確、清晰都是非常好的。該顯示器中所顯示的字符全部都是通過(guò)5*7點(diǎn)陣來(lái)形成,并且能夠通過(guò)串行數(shù)據(jù)傳輸?shù)姆绞?,系統(tǒng)控制操作也比較簡(jiǎn)單,與應(yīng)用最為普遍的HD44780原理是相同的,所以操作非常簡(jiǎn)單。方案三:采用LCD12864液晶顯示屏,這種顯示裝置的分辨率是比較高的,通常可以達(dá)到128*64。主要的優(yōu)勢(shì)就是連接比較方便,接口設(shè)置非常的靈活,操作指令也比較簡(jiǎn)單,可以根據(jù)系統(tǒng)的設(shè)置來(lái)形成人機(jī)交互圖形,并且功耗非常低。雖然在方案三中所選擇的部件形式功能性是最強(qiáng)的,但是顯示內(nèi)容較大,所以就是其內(nèi)部空間浪費(fèi)相對(duì)嚴(yán)重,且成本是非常高的。方案一雖然其成本比較低,操作也簡(jiǎn)單,但是要進(jìn)行焊接連接,所以容易導(dǎo)致焊接操作中存在錯(cuò)誤的情況。經(jīng)過(guò)上述對(duì)比分析,最終該系統(tǒng)設(shè)計(jì)中選擇使用方案二LCD1602液晶顯示器來(lái)作為本次系統(tǒng)顯示裝置,應(yīng)用比較合理。1.1.3時(shí)鐘器件的選擇方案一:選擇使用單片機(jī)中的內(nèi)部定時(shí)器來(lái)進(jìn)行定時(shí)處理,此時(shí)如果系統(tǒng)因?yàn)橥饬ψ饔弥袛噙\(yùn)行,就會(huì)導(dǎo)致所有的數(shù)據(jù)都會(huì)被清零,無(wú)法繼續(xù)及時(shí),并且精度也是比較差的,在短時(shí)間內(nèi)精度還行,如果時(shí)間長(zhǎng)了誤差累計(jì)的越來(lái)越多時(shí)間也就偏差多了。方案二:選擇使用DS1302時(shí)鐘芯片作為系統(tǒng)設(shè)計(jì)的顯示時(shí)鐘部分,該裝置是美國(guó)生產(chǎn)的,功耗較低,充電性能也比較優(yōu)越,還能夠按照閏年補(bǔ)償,同時(shí)能夠準(zhǔn)確的記錄各個(gè)時(shí)間,系統(tǒng)的工作電壓為2.0V~5.5V。與主控部件的接口部分采用的是三線(xiàn)接口。這是一款新型的產(chǎn)品,較之以往的產(chǎn)品,具備更高的兼容性,還有主、備用電源引腳,充電能力比較強(qiáng),可以達(dá)到多方面使用功能的要求。雖然采用方案一可以節(jié)省電路的搭建也節(jié)省了成本,但是不能在系統(tǒng)掉電的情況下也正常的工作。方案二中設(shè)置有主、備用電源引腳,所以能夠達(dá)到涓流充電的效果,其主要的優(yōu)勢(shì)就是在于串行數(shù)據(jù)傳輸,可以根據(jù)需要關(guān)閉充電功能,達(dá)到系統(tǒng)連續(xù)控制的效果。經(jīng)過(guò)多方面的對(duì)比分析,考慮到功能優(yōu)劣、產(chǎn)品成本等因素,最終選擇使用DS130時(shí)鐘芯片作為本次時(shí)鐘部件。1.1.4測(cè)速器件的選擇方案一:選擇使用光電速度傳感器,光電的速度傳感器是基于光電子的速度傳感器。轉(zhuǎn)換原理基本可以分為透明速度傳感器和反射式。如果光電池被照射,其反電阻低。因此,是電脈沖信號(hào)。如果光源被板覆蓋著。光伏的逆電阻相對(duì)較大,且沒(méi)有信號(hào)輸出REF_Ref11511\r\h[5]。這樣,可以根據(jù)盤(pán)上的孔和凹陷的數(shù)量來(lái)測(cè)定研究對(duì)象的速度。通常盤(pán)上的孔或凹進(jìn)去的數(shù)量是靜態(tài)的,每次光電轉(zhuǎn)換器旋轉(zhuǎn)時(shí)會(huì)出現(xiàn)60個(gè)脈沖信號(hào)。電子計(jì)數(shù)器的時(shí)間信號(hào)1s,可以直接讀取測(cè)量的波速。這個(gè)反射式速度傳感器的原理與上述的類(lèi)型原理較為接近。類(lèi)似感測(cè)到的光也被光學(xué)元件轉(zhuǎn)換成電信號(hào),但不同于光信號(hào)。對(duì)光的反射脈沖信號(hào)中將測(cè)量軸的測(cè)量部分施加反射材料,得到反射面。這個(gè)普通的反射材料是特殊的速度反射紙,也被鋁箔和其他的反射材料代替。有時(shí)可以作為反射面涂在測(cè)定部件上REF_Ref11593\r\h[6]。該投影儀與反射面的距離為5-15m,當(dāng)測(cè)定波旋轉(zhuǎn)時(shí),接收脈沖,為了測(cè)定測(cè)定對(duì)象的速度,將對(duì)應(yīng)的電信號(hào)發(fā)送到電子計(jì)數(shù)器。方案二:霍爾傳感器用于測(cè)量速度。在待測(cè)旋轉(zhuǎn)體的軸上安裝有一個(gè)磁盤(pán),磁盤(pán)上安裝有幾對(duì)小磁鋼。小磁鋼對(duì)數(shù)越多,能展現(xiàn)出的分辨力越高?;魻栭_(kāi)關(guān)將被裝配在小磁鋼周?chē).?dāng)旋轉(zhuǎn)體通過(guò)某一個(gè)角速度m發(fā)生旋轉(zhuǎn)的時(shí)候,小磁鋼每次轉(zhuǎn)動(dòng)霍爾開(kāi)關(guān),霍爾開(kāi)關(guān)都會(huì)輸出對(duì)應(yīng)的脈沖數(shù)量值,并可以得到在單位時(shí)間內(nèi)所輸出的對(duì)應(yīng)脈沖數(shù),從而來(lái)獲得旋轉(zhuǎn)體的實(shí)時(shí)速度。綜上所述,光電式速度傳感器受外部光源影響的波動(dòng)很高,不適用于運(yùn)動(dòng)物體的速度測(cè)量;集成霍爾開(kāi)關(guān)傳感器具有靈敏度高、可靠性好、體積小、無(wú)接觸、無(wú)磨損、使用年限久等優(yōu)勢(shì),消耗低,對(duì)外界環(huán)境依賴(lài)性小,基于此,霍爾傳感器被選用來(lái)對(duì)速度進(jìn)行監(jiān)測(cè)。1.2總體設(shè)計(jì)方案選擇經(jīng)過(guò)上述的對(duì)本設(shè)計(jì)中涉及到的每一個(gè)模塊進(jìn)行了分析,最后的方案為:以STC89C52單片機(jī)為控制核心、DS1302做計(jì)時(shí)任務(wù)、LCD1602發(fā)揮顯示數(shù)字的作用、通過(guò)霍爾傳感器感應(yīng)進(jìn)行測(cè)速記錄里程、數(shù)據(jù)存儲(chǔ)部分通過(guò)STC89C52單片機(jī)內(nèi)部的EEPROM進(jìn)行存儲(chǔ)。系統(tǒng)還會(huì)通過(guò)設(shè)定的超速限值與實(shí)測(cè)值進(jìn)行對(duì)比當(dāng)超過(guò)限值系統(tǒng)會(huì)發(fā)出鳴叫提示超速。整體的硬件設(shè)計(jì)框圖如圖1.1所示。圖1.1系統(tǒng)硬件框圖2.系統(tǒng)硬件電路設(shè)計(jì)2.1ST89C52單片機(jī)系統(tǒng)設(shè)計(jì)2.1.1ST89C52的概述STC89C52共有32個(gè)I/O口,其中LCD1602液晶顯示屏模塊需要11個(gè),蜂鳴器報(bào)警模塊需要1個(gè),按鍵模塊需要1個(gè),RFID模塊需要5個(gè),下載口需要2個(gè)。該單片機(jī)采用經(jīng)典的MCS-51內(nèi)核,但由于受到了很多的改造的影響,使該芯片與傳統(tǒng)51單片機(jī)所具備的功能有很大的區(qū)別。STC89C52為許多定制的微型計(jì)算機(jī)應(yīng)用、智能8位處理器和閃存編程系統(tǒng),并且可以提供多樣、自由、高效的具體實(shí)施例REF_Ref11691\r\h[7]。相應(yīng)的單片機(jī)功能性引腳見(jiàn)圖2.1。圖2.1STC89C52單片機(jī)引腳2.1.2單片機(jī)的最小系統(tǒng)單片機(jī)的最小系統(tǒng)簡(jiǎn)單來(lái)說(shuō)就是通過(guò)最小的元件與模塊的搭建,使單片微機(jī)具有和普通單片機(jī)一樣的功能,即被視為最小系統(tǒng)。其基本的原理見(jiàn)圖2.2。圖2.2單片機(jī)最小系統(tǒng)原理圖接下來(lái)開(kāi)始介紹單片機(jī)最小系統(tǒng)必備的器件及其作用。在本項(xiàng)目中,5V電源是整個(gè)系統(tǒng)的主要電源。周邊環(huán)境簡(jiǎn)單穩(wěn)定。電源插座是否直接連接到USB線(xiàn)?是的,一端連接到電源插座,另一端是5V電源,如USB電腦,它可以連接到電源站,充電器連接到手機(jī)等。復(fù)位電路,單片機(jī)的RST腳為復(fù)位輸入腳,當(dāng)復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間,復(fù)位后單片機(jī)就從頭開(kāi)始執(zhí)行程序。如果單片機(jī)執(zhí)行程序的過(guò)程中觸發(fā)復(fù)位,則單片機(jī)立即放棄當(dāng)前操作而被強(qiáng)行從頭開(kāi)始執(zhí)行程序REF_Ref11743\r\h[8]。STC89C52的復(fù)位是通過(guò)外接復(fù)位電路的方式來(lái)完成其功能的,具體的電路見(jiàn)圖2.3。圖2.3復(fù)位電路原理圖2.2LCD1602液晶顯示電路設(shè)計(jì)2.2.1LCD1602的概述LCD1602液晶,又被稱(chēng)為L(zhǎng)CD1602字符型液晶。它是一種點(diǎn)陣液晶模塊,專(zhuān)門(mén)用于顯示字母、數(shù)字、符號(hào)等,由多個(gè)5×7或5×11點(diǎn)陣字符位構(gòu)成。每個(gè)點(diǎn)陣字符位可以進(jìn)行一個(gè)字符的顯示。每一個(gè)點(diǎn)陣字符位之間有一個(gè)點(diǎn)空間,每一行之間有一個(gè)空間。它起著字符空間和行空間的作用?;诖耍鼰o(wú)法對(duì)圖形起到很好的顯示效果REF_Ref11828\r\h[9]。2.2.2LCD1602的工作原理LCD1602共有11條指令,可由單片機(jī)發(fā)送到LCD1602,完成屏幕清除、開(kāi)關(guān)顯示等特定功能。LCD1602有自己的字體庫(kù)。顯示時(shí)可直接調(diào)用字體庫(kù)進(jìn)行顯示。當(dāng)然,如果字體庫(kù)中沒(méi)有字符,也可以根據(jù)需要將自己的自定義字符寫(xiě)入,但自定義字符的數(shù)量有限。你需要合理地安排和使用它們。您可以自定義多達(dá)8個(gè)字符,并將自定義字符字體寫(xiě)入LCD中,它可以像普通顯示字符一樣隨意調(diào)用REF_Ref11919\r\h[10]。當(dāng)可調(diào)電位器的位置改變時(shí),與VL相連的電壓也隨之改變,顯示的清晰度也隨之改變。所以,在實(shí)際應(yīng)用中,用電位器代替固定電阻只是為了更加便捷地去調(diào)節(jié)和運(yùn)用不同電壓場(chǎng)合的電阻。相關(guān)的機(jī)理圖見(jiàn)圖2.4。圖2.4LCD1602液晶顯示電路原理圖2.3DS1302時(shí)鐘電路設(shè)計(jì)單片機(jī)在處理任何事件都需要時(shí)序,時(shí)鐘晶振電路為系統(tǒng)穩(wěn)定運(yùn)行提供保障。時(shí)鐘電路主要是由兩個(gè)部分構(gòu)成,一個(gè)晶振以及兩個(gè)電容,其中晶振11.0592MHZ,電容30pF,電容起到了幫助晶振進(jìn)行起振的作用,滿(mǎn)足了數(shù)字控制器上電以后可以正常工作REF_Ref12131\r\h[11]。時(shí)鐘電路原理圖如圖2.5所示。圖2.5時(shí)鐘電路原理圖2.4LM393芯片的介紹LM393是一個(gè)集成電路,由兩個(gè)獨(dú)立的高精度電壓比較器組成,具有低偏置電壓和最大2.0MV電壓。適用于寬電壓范圍、單電源供電,也可采用雙電源供電。然而,無(wú)論電源電壓如何,電源消耗的電流都非常低。它還具有一個(gè)特點(diǎn),即比較器的共模輸入電壓范圍接近低電平,即使它是由一個(gè)電源供電REF_Ref12167\r\h[12]。2.5霍爾測(cè)速電路的設(shè)計(jì)2.5.1霍爾傳感器的概述霍爾傳感器用于捕獲設(shè)計(jì)信號(hào)?;魻杺鞲衅魇且环N基于霍爾效應(yīng)的磁場(chǎng)傳感器?;魻栃?yīng)是1879年霍爾研究金屬導(dǎo)電機(jī)理時(shí)發(fā)現(xiàn)的一種磁電效應(yīng)。后來(lái)發(fā)現(xiàn)半導(dǎo)體和導(dǎo)電液體也存在這樣的效應(yīng),半導(dǎo)體的霍爾效應(yīng)與金屬明顯不處于同一層次。由這種現(xiàn)象制成的各種霍爾元件在諸多領(lǐng)域普內(nèi)普及化程度相當(dāng)高,如工業(yè)自動(dòng)化技術(shù)、檢測(cè)技術(shù)和信息處理等領(lǐng)域?;魻栃?yīng)是研究半導(dǎo)體材料性能的基本方法?;魻栃?yīng)實(shí)驗(yàn)測(cè)量的霍爾系數(shù)可以用來(lái)對(duì)半導(dǎo)體材料的重要參數(shù)進(jìn)行準(zhǔn)確地判斷與分析,這些參數(shù)如載流子濃度和載流子遷移率等REF_Ref12259\r\h[13]。2.5.2霍爾傳感器測(cè)量原理在磁場(chǎng)中有一個(gè)霍爾半導(dǎo)體芯片存在,恒定電流I從a流向B,在洛倫茲力的影響下,I的電子流在通過(guò)霍爾半導(dǎo)體時(shí)向一側(cè)移動(dòng),CD方向產(chǎn)生了一定數(shù)量的電位差,稱(chēng)為霍爾電壓。

霍爾電壓隨磁場(chǎng)強(qiáng)度的變化而產(chǎn)生一系列改變。磁場(chǎng)與電壓呈現(xiàn)正相關(guān)的關(guān)系。霍爾電壓很小,一般來(lái)說(shuō)僅僅幾毫伏,但通過(guò)放大集成電路中的放大器,電壓可以放大到所能輸出的正常范圍值。如果用霍爾集成電路作為傳感器,就一定要采用機(jī)械的方式區(qū)改變磁感應(yīng)強(qiáng)度。霍爾效應(yīng)傳感器歸類(lèi)于無(wú)源傳感器,需要通過(guò)外接的電源可能夠進(jìn)行正常地運(yùn)行。此功能使其能夠檢測(cè)低速操作REF_Ref12288\r\h[14]。工作機(jī)理見(jiàn)圖2.6圖2.6霍爾測(cè)速原理圖2.6獨(dú)立按鍵電路的設(shè)計(jì)按鍵是按鍵產(chǎn)品下的一個(gè)分類(lèi)產(chǎn)品,實(shí)際上相當(dāng)于一個(gè)電子開(kāi)關(guān)。只要你輕輕地按鍵,就可以打開(kāi)開(kāi)關(guān)。當(dāng)你釋放鑰匙時(shí),你可以關(guān)掉開(kāi)關(guān)。其原理是通過(guò)觸摸鑰匙內(nèi)的金屬?gòu)椈蓙?lái)打開(kāi)和關(guān)閉。在本設(shè)計(jì)中,有一個(gè)按鍵電路,通過(guò)幾個(gè)獨(dú)立的按鍵進(jìn)行人機(jī)交互。鑰匙通過(guò)單片機(jī)的I/O口接地。這種設(shè)計(jì)是因?yàn)閱纹瑱C(jī)在不輸出空氣的情況下,其I/O默認(rèn)為高電平。如果未按下該鍵,則相當(dāng)于I/O處于空氣狀態(tài)。按下后,I/O端口的電平將被拉低。這樣,單片機(jī)只需循環(huán)檢查I/O口是否有低電平就可以判斷是否有按鍵。當(dāng)然,這個(gè)關(guān)鍵是金屬釋放的方式,所以會(huì)有抖動(dòng)紋波,所以有必要在程序中加入一個(gè)短延時(shí)來(lái)消除抖動(dòng)REF_Ref12344\r\h[15]。詳細(xì)地電路接線(xiàn)圖見(jiàn)2.7。圖2.7獨(dú)立按鍵電路四個(gè)按鍵的功能分別為:第一個(gè)按鍵:在正常顯示時(shí),按下進(jìn)入設(shè)置,依次按可以選擇所設(shè)置項(xiàng),依次可以設(shè)置日期、時(shí)間、輪子周長(zhǎng)、總里程復(fù)位等。第二個(gè)按鍵:在設(shè)置模式下,按下對(duì)應(yīng)的設(shè)置項(xiàng)加一;在復(fù)位總里程時(shí),按下切換Y/N。第三個(gè)按鍵:在設(shè)置模式下,按下對(duì)應(yīng)的設(shè)置項(xiàng)減一;在復(fù)位總里程時(shí),按下確定所選的操作。第四個(gè)按鍵:在設(shè)置模式下按下退出設(shè)置并保存數(shù)據(jù);在正常顯示模式下按下,進(jìn)入查看總里程。3.系統(tǒng)軟件部分設(shè)計(jì)3.1軟件開(kāi)發(fā)環(huán)境的介紹軟件流程設(shè)計(jì)采用模塊化設(shè)計(jì)的方法,即在程序編寫(xiě)之前,首先結(jié)合基于單片機(jī)的自動(dòng)攪料系統(tǒng)硬件電路以及系統(tǒng)需求對(duì)程序進(jìn)行功能模塊化,再編寫(xiě)各個(gè)模塊的程序,使程序易于編寫(xiě)、調(diào)試和修改。程序設(shè)計(jì)過(guò)程中的軟件開(kāi)發(fā)環(huán)境選用Keil軟件,Keil是美國(guó)Keil軟件公司生產(chǎn)的一種兼容性較高單片機(jī)的C語(yǔ)言軟件開(kāi)發(fā)系統(tǒng)。它提供了完備的數(shù)據(jù)庫(kù)數(shù)據(jù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全windows界面。3.2系統(tǒng)重要函數(shù)的介紹3.2.1主函數(shù)的設(shè)計(jì)對(duì)于程序來(lái)說(shuō),voidmain()主函數(shù)是其一個(gè)入口函數(shù),而且在程序當(dāng)中一定要有這一函數(shù)。這函數(shù)一開(kāi)始的時(shí)候需要對(duì)一些器件作出相應(yīng)的初始化處理,因此才可以對(duì)器件進(jìn)行使用,對(duì)其進(jìn)行初始化并賦予一定的變量,當(dāng)初始化過(guò)程結(jié)束以后,會(huì)到達(dá)死循環(huán)當(dāng)中,否則的話(huà)程序在一次運(yùn)行完成以后便會(huì)退出,倘若其中存在一定的死循環(huán),那么程序就可以一直的進(jìn)行相應(yīng)的工作,實(shí)現(xiàn)檢測(cè)的目標(biāo)。對(duì)主程序進(jìn)行設(shè)計(jì)的過(guò)程當(dāng)中不能在其中加入太多的一些代碼,通常代碼是通過(guò)函數(shù)做出相應(yīng)的封裝工作,之后進(jìn)行一定的調(diào)用REF_Ref10855\r\h[16]。因此能夠很好的進(jìn)行閱讀以及修改,下圖所示內(nèi)容是其具體的流程。圖3.1主函數(shù)流程圖3.2.2LCD1602顯示函數(shù)的設(shè)計(jì)在LCD1602方面,要根據(jù)廠家所要求的時(shí)序來(lái)做出相應(yīng)的編程,以此能夠進(jìn)行顯示。在LCD1602液晶顯示方面,要把顯示位置所具有的地址按照命令的方式寫(xiě)入其中,之后把相應(yīng)的一些數(shù)據(jù)也寫(xiě)入其中。地址再寫(xiě)入其中以后,通過(guò)顯示內(nèi)容其地址會(huì)加1。在這一子程序當(dāng)中主要是通過(guò)LCD動(dòng)態(tài)掃描來(lái)實(shí)現(xiàn)顯示的目的。在單片機(jī)所具有的連接口方面,把P2.2口和端口E結(jié)合在一起,P2.0口和選擇端RS結(jié)合在一起,P0口和D0~D7端連接在一起,向P0口輸入定的數(shù)字。之后使用延時(shí),把以上的一些端口數(shù)據(jù)分別寫(xiě)入到指令以及數(shù)據(jù)當(dāng)中,當(dāng)所有的數(shù)字都顯示完成即可REF_Ref10936\r\h[17]。具體的流程見(jiàn)圖3.2。圖3.2顯示函數(shù)流程圖3.2.3DS1302讀時(shí)函數(shù)的設(shè)計(jì)在DS1302當(dāng)中存在的RAM寄存器有31個(gè),當(dāng)秒寄存處當(dāng)中設(shè)置相應(yīng)的數(shù)值以后,DS1302便能夠做出相應(yīng)的秒累加,然后進(jìn)行自動(dòng)進(jìn)位。在進(jìn)行讀取數(shù)據(jù)的過(guò)程當(dāng)中,需要先對(duì)寄存器的地址進(jìn)行輸送,然后再對(duì)8位數(shù)據(jù)進(jìn)行一定的讀取:在對(duì)數(shù)據(jù)進(jìn)行讀取以及發(fā)送的過(guò)程當(dāng)中,都要按照先低位后高位的原則來(lái)進(jìn)行。在對(duì)數(shù)據(jù)進(jìn)行寫(xiě)入的過(guò)程當(dāng)中主要是下降沿有效,而在對(duì)數(shù)據(jù)進(jìn)行讀取的過(guò)程當(dāng)中則是上升沿有效REF_Ref10855\r\h[18]。在DS1302進(jìn)行操作時(shí)需要根據(jù)數(shù)據(jù)手冊(cè)當(dāng)中的相關(guān)要求來(lái)進(jìn)行。具體的流程見(jiàn)圖3.3。圖3.3DS1302讀時(shí)函數(shù)流程圖4.系統(tǒng)整體調(diào)試4.1系統(tǒng)硬件測(cè)試對(duì)硬件電路進(jìn)行檢測(cè)的過(guò)程當(dāng)中,一般檢查有沒(méi)有一些漏焊、斷路等情況,同時(shí)檢查原件有沒(méi)有出現(xiàn)方向錯(cuò)誤以及設(shè)計(jì)錯(cuò)誤等一些問(wèn)題。在漏焊以及元件方向錯(cuò)誤方面,主要是把相應(yīng)的電路板和PCB圖當(dāng)中存在的一些線(xiàn)路進(jìn)行對(duì)照,查看在實(shí)物當(dāng)中有沒(méi)有出現(xiàn)相應(yīng)的元件,他說(shuō)沒(méi)有的話(huà),那么就需要進(jìn)行重新對(duì)照,并作出補(bǔ)焊等一些工作。在短路以及斷路方面,主要利用數(shù)字萬(wàn)能表來(lái)進(jìn)行解決,在二極管檔位當(dāng)中加入所需的數(shù)字萬(wàn)能表,利用紅表筆以其黑表筆能夠使其出現(xiàn)警示信號(hào),以此來(lái)對(duì)這些問(wèn)題進(jìn)行相應(yīng)的檢測(cè)。在對(duì)元件以及導(dǎo)線(xiàn)進(jìn)行檢測(cè)時(shí),使用兩根表筆來(lái)進(jìn)行相應(yīng)的操作,倘若能夠?qū)ǖ脑?huà),那么蜂鳴器就會(huì)發(fā)出一定的聲音。因此能夠按照相應(yīng)的一些情況,以及檢測(cè)時(shí)所產(chǎn)生的一些現(xiàn)象檢查線(xiàn)路有沒(méi)有出現(xiàn)一定的問(wèn)題。在進(jìn)行焊接方面,一般主要使用的是手工焊接,如今有很多的工廠在進(jìn)行焊接時(shí)摒棄了傳統(tǒng)的一些方法,不過(guò)在一些普通器件方面還是會(huì)通過(guò)手工焊接的方式來(lái)進(jìn)行相應(yīng)的操作。焊接的成功時(shí)項(xiàng)目是否成功的關(guān)鍵要素之一,如果焊接本質(zhì)上出現(xiàn)問(wèn)題,則會(huì)影響到整個(gè)控制系統(tǒng)的。所以在焊接的過(guò)程中一定要十分的小心。焊接的步驟如下:(1)檢查元器件:在進(jìn)行焊接時(shí)要對(duì)所要利用的元器件進(jìn)行相應(yīng)的檢查,確保沒(méi)有出現(xiàn)一定的損壞,之后才能夠安裝和焊件,以防出現(xiàn)在焊接完成后因某個(gè)元件有損壞而使系統(tǒng)無(wú)法正常運(yùn)行。(2)放置、焊接各元件:檢查好元器件之后,要根據(jù)原理圖排好各元件位置,優(yōu)先放置或焊接較低的元件,然后再對(duì)位置相對(duì)比較高的一些元件進(jìn)行放置,特別是一些容易產(chǎn)生損壞問(wèn)題的元件應(yīng)該在結(jié)束的時(shí)候進(jìn)行焊接,而且時(shí)間要小于10秒。進(jìn)行焊接時(shí)如果焊錫不充足的話(huà),那么就要補(bǔ)焊錫,而且也需要嚴(yán)格把控焊錫的量,防止和另外的一些器件進(jìn)行連接REF_Ref11001\r\h[19]。另外也存在焊錫太多的現(xiàn)象,此時(shí)需要通過(guò)電烙鐵來(lái)對(duì)剩余的一些焊錫進(jìn)行處理,也可以使用吸錫器除焊錫。焊接完成如圖4.1、4.2所示。圖4.1焊接實(shí)物圖圖4.2電路板圖片焊接好的電路板在上電之前必須得經(jīng)過(guò)調(diào)試,以免發(fā)生短路燒毀元器件或者因?yàn)閿嗦穼?dǎo)致的元器件無(wú)法工作的情況。(1)單片機(jī)電路調(diào)試單片機(jī)是整個(gè)系統(tǒng)核心部件。在最初的調(diào)試中,出現(xiàn)了調(diào)節(jié)按鍵失靈,經(jīng)過(guò)多次調(diào)試實(shí)驗(yàn)后發(fā)現(xiàn)是由于單片機(jī)的P1.1引腳脫焊導(dǎo)致的,進(jìn)再次焊接后故障問(wèn)題便消除了。(2)系統(tǒng)電源供電路調(diào)試 在供電接口VCC與GND兩端接上電源后REF_Ref10146\r\h[19],閉合開(kāi)關(guān),發(fā)現(xiàn)系統(tǒng)無(wú)供電,用萬(wàn)用表檢測(cè)USB供電口的引腳發(fā)現(xiàn)無(wú)電壓。將引腳重新焊接后再檢測(cè)發(fā)現(xiàn)電壓正常,可以為系統(tǒng)可以正常供電。(3)LCD1602液晶顯示模塊電路的調(diào)試 在調(diào)試上電后發(fā)現(xiàn)LCD1602液晶屏幕雖然亮起來(lái),但是發(fā)現(xiàn)沒(méi)有顯示出任何字符,后來(lái)用螺絲刀調(diào)節(jié)電位器,發(fā)現(xiàn)電位器旋鈕位于最左端,此時(shí)灰度值最低因此無(wú)法顯示字符,經(jīng)過(guò)調(diào)試向右旋轉(zhuǎn)后發(fā)現(xiàn)屏幕可以清晰地顯示出字符來(lái)。4.2系統(tǒng)軟件測(cè)試在進(jìn)行測(cè)試時(shí)要使用的工具主要有:KEIL軟件、系統(tǒng)硬件以及PL2303下載器等。軟件上主要利用KEIL軟件來(lái)做出相應(yīng)的編寫(xiě),然后將其變?yōu)镠EX文件,然后利用PL2303下載器來(lái)進(jìn)行下載。根據(jù)系統(tǒng)工作時(shí)的具體情況做出相應(yīng)的修改以及調(diào)試,然后形成相對(duì)比較完善的程序。進(jìn)行軟件調(diào)試時(shí),要按下編譯的按鈕,然后文件會(huì)做出正常的運(yùn)行工作,運(yùn)行的提示信息會(huì)自動(dòng)輸出到編譯窗口。如果提示信息中顯示“error”字樣,說(shuō)明程序有錯(cuò)誤,需要根據(jù)提示信息找到錯(cuò)誤并及時(shí)改正REF_Ref10218\r\h[20],否則說(shuō)明程序運(yùn)行成功。無(wú)錯(cuò)誤信息提示,如圖4.3所示。圖4.3無(wú)錯(cuò)誤信息提示圖軟件調(diào)試的過(guò)程當(dāng)中容易出現(xiàn)以下的一些問(wèn)題:(1)對(duì)清屏指令進(jìn)行發(fā)送的過(guò)程當(dāng)中,LCD1602還沒(méi)有完成屏幕的清除工作。針對(duì)這一問(wèn)題需要查看其使用手冊(cè),而獲得的清屏指令和程序當(dāng)中的是一致的,在顯示屏當(dāng)中能夠?qū)ο鄳?yīng)的內(nèi)容進(jìn)行一定的顯示,以此能夠說(shuō)明指令并不存在錯(cuò)誤,不過(guò)并沒(méi)有進(jìn)行清屏。然后需要注意有沒(méi)有發(fā)送相應(yīng)的清屏指令。因?yàn)長(zhǎng)CD1602在處理的過(guò)程當(dāng)中,速度相對(duì)比較慢,因此還沒(méi)有對(duì)清屏指令進(jìn)行執(zhí)行。加入40ms的延時(shí)以后對(duì)其進(jìn)行重新的下載,到達(dá)程序當(dāng)中以后能夠看到已經(jīng)執(zhí)行了清屏指令。根據(jù)閱讀手冊(cè)能夠了解到,在LCD1602清屏方面,要有1.64ms的時(shí)間來(lái)進(jìn)行執(zhí)行操作,最后使用了4ms的延時(shí)。(2)時(shí)間可以讀取出來(lái)并可以走,但是進(jìn)入校準(zhǔn)時(shí)間的時(shí)候無(wú)法調(diào)節(jié)時(shí)間。解決方法:通過(guò)分析程序發(fā)現(xiàn)在使用DS1302時(shí)候未進(jìn)行初始化,可能是DS1302被禁止寫(xiě)入數(shù)據(jù),通過(guò)編寫(xiě)正確的初始化程序打開(kāi)禁止寫(xiě)入數(shù)據(jù)后重新下載后按鍵可以正常的校準(zhǔn)時(shí)間。本科論文結(jié)論本設(shè)計(jì)主要采用STC89C52單片機(jī)作為核心控制器,包括霍爾元件模塊,液晶顯示采集模塊,蜂鳴器報(bào)警等模塊,多模塊的配合最終實(shí)現(xiàn)了里程速度測(cè)試表系統(tǒng)。本文主要完成了系統(tǒng)設(shè)計(jì)方案論證和總體框架的設(shè)計(jì),設(shè)計(jì)了系統(tǒng)整體和各模塊工作的程序框圖;控制模塊采用STC89C52單片機(jī)作為系統(tǒng)核心控制器。本課題主要任務(wù)是以單片機(jī)為核心利用霍爾傳感器測(cè)速來(lái)設(shè)計(jì)一個(gè)可用LED顯示里程和速度的自行車(chē)速度里程表。本文主要介紹了自行車(chē)的速度里程表的設(shè)計(jì)思路、電路原理和元件的選擇等各個(gè)方面的內(nèi)容,整體上大致可分為硬件部分設(shè)計(jì)和軟件部分設(shè)計(jì)。目的是能實(shí)時(shí)地將所測(cè)的速度與累計(jì)里程數(shù)顯示出來(lái),主要是將傳感器輸入到單片機(jī)的脈沖信號(hào)的頻率(傳感器將不同車(chē)速轉(zhuǎn)變成不同頻率的脈沖信號(hào))實(shí)時(shí)地測(cè)量出來(lái),考慮到信號(hào)的衰減、干擾等影響,在信號(hào)送入單片機(jī)前應(yīng)對(duì)其進(jìn)行放大整形,然后通過(guò)單片機(jī)計(jì)算出速度和里程,再將所得的數(shù)據(jù)存儲(chǔ)到串口數(shù)據(jù)存儲(chǔ)器,并由LED顯示模塊交替顯示所測(cè)速度與里程。參考文獻(xiàn)黃天辰,李楠,陶炳坤.自行車(chē)多功能里程表的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化技術(shù)與應(yīng)用,2017,36(6):124-127丁敏.電動(dòng)自行車(chē)?yán)锍趟俣扔?jì)的設(shè)計(jì)[J].電動(dòng)自行車(chē),2018(2)盧芷君,譚穗妍.智能自行車(chē)數(shù)字里程表的設(shè)計(jì)[J].科技創(chuàng)新與應(yīng)用,2016(8):50-52王麗芳,宋仁旺.高集成度的電源管理電路[J].太原科技大學(xué)學(xué)報(bào),2014,35(4):26孫士達(dá).蓄電池光伏充電控制裝置設(shè)計(jì)[D].哈爾濱:東北農(nóng)業(yè)大學(xué),2019.沈夢(mèng)甜.便攜式光伏多功能交直流電源[J].湖南電力,2018,38(1):31-34.南京新捷中旭微電子有限公司.CS3013、3020、3040系列霍爾開(kāi)關(guān)電路[EB/OL].[2010-03-25]韓全立,余華.單片機(jī)原理及應(yīng)用[M].北京:北京希望電子出版社,2006:1-2.王鎖弘.電子車(chē)速里程表的單片機(jī)實(shí)現(xiàn)方案[J].國(guó)外電子元器件,2004(5):7-8.湯向恒.電子式車(chē)用里程表[M].汽車(chē)電器,2004(1):10-11.楊陽(yáng).自行車(chē)速度里程表的設(shè)計(jì)[J].信息通信,2015,(3):58-59丁敏.電動(dòng)自行車(chē)?yán)锍趟俣扔?jì)的設(shè)計(jì)[J].機(jī)械管理開(kāi)發(fā),2012,(6):55-56徐麗萍.基于AT89S51單片機(jī)自行車(chē)?yán)锍?速度計(jì)的設(shè)計(jì)[J].南京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2010,10(2):28-29耿子慶.淺談自行車(chē)?yán)锍逃?jì)/速度計(jì)的設(shè)計(jì)[J].科教導(dǎo)刊,2011,(15):104-105欒麗,李忠相.關(guān)于自行車(chē)測(cè)速計(jì)的問(wèn)題[J].物理通報(bào),2013,(11):35-36李朝青.單片機(jī)原理及接口技術(shù)[J]..北京航空航天大學(xué)出版社,1994松井邦彥,梁瑞林.傳感器應(yīng)用技術(shù)[J]..科學(xué)出版社,2006.張毅剛,劉杰.MCS-51單片機(jī)原理及應(yīng)用[J]..哈爾濱工業(yè)大學(xué)出版社,2004謝自美.電子線(xiàn)路設(shè)計(jì).實(shí)驗(yàn).測(cè)試[M].武漢:華中科技大學(xué)出版社,2000:212-230樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例[J]..北京航空航天大學(xué)出版社,2006附錄源程序代碼#include<reg52.h> //調(diào)用單片機(jī)頭文件#defineucharunsignedchar//無(wú)符號(hào)字符型宏定義 變量范圍0~255#defineuintunsignedint //無(wú)符號(hào)整型宏定義 變量范圍0~65535sbitclk=P1^3; //ds1302時(shí)鐘線(xiàn)定義sbitio=P1^4; //數(shù)據(jù)線(xiàn)sbitrst=P1^5; //復(fù)位線(xiàn) //秒分時(shí)日月年星期 ucharcodewrite_add[]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a};//寫(xiě)地址ucharcoderead_add[]={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b};//讀地址ucharmiao,fen,shi,ri,yue,week,nian;uchari;unsignedlongspeed1,juli,time2;floatf_hz ,speed_km,speed_m;ucharTH11,TL11;ucharflag_en;//開(kāi)始計(jì)算速度使能uintjuli_s; //每秒走的距離uintjuli_z;//總路程floatzhijing=0.55;//直徑0.55Muints_zhijing=55;bitflag_1s=1; //1sucharmenu_1;//菜單設(shè)置變量ucharmenu_2;//菜單設(shè)置變量longzong_lc;//總量程ucharflag_200ms;uintshudu;//定義速度的變量uintbj_shudu=50; //報(bào)警速度ucharf_pwm_l=20; ////f_pwm_lsbitpwm=P2^0;//這三個(gè)引腳參考資料sbitrs=P1^0; //寄存器選擇信號(hào)H:數(shù)據(jù)寄存器 L:指令寄存器sbitrw=P1^1; //寄存器選擇信號(hào)H:數(shù)據(jù)寄存器 L:指令寄存器sbite=P1^2; //片選信號(hào)下降沿觸發(fā)ucharcodetable_num[]="0123456789abcdefg";uchari;sbitbeep=P3^7;//蜂鳴器IO口定義/******************1ms延時(shí)函數(shù)*******************/voiddelay_1ms(uintq){ uinti,j; for(i=0;i<q;i++) for(j=0;j<120;j++);}/*********************************************************************名稱(chēng):delay_uint()*功能:小延時(shí)。*輸入:無(wú)*輸出:無(wú)***********************************************************************/voiddelay_uint(uintq){ while(q--);}/*********************************************************************名稱(chēng):write_com(ucharcom)*功能:1602命令函數(shù)*輸入:輸入的命令值*輸出:無(wú)***********************************************************************/voidwrite_com(ucharcom){ i=0; e=0; rs=0; rw=0; P0=com; delay_uint(3); e=1; delay_uint(25); e=0;}/*********************************************************************名稱(chēng):write_data(uchardat)*功能:1602寫(xiě)數(shù)據(jù)函數(shù)*輸入:需要寫(xiě)入1602的數(shù)據(jù)*輸出:無(wú)***********************************************************************/voidwrite_data(uchardat){ i=0; e=0; rs=1; rw=0; P0=dat; delay_uint(3); e=1; delay_uint(25); e=0; }/*********************************************************************名稱(chēng):write_sfm2(ucharhang,ucharadd,uchardate)*功能:顯示2位十進(jìn)制數(shù),如果要讓第一行,第五個(gè)字符開(kāi)始顯示"23",調(diào)用該函數(shù)如下 write_sfm1(1,5,23)*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無(wú)***********************************************************************/voidwrite_sfm2(ucharhang,ucharadd,uintdate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(0x30+date/10%10); write_data(0x30+date%10); }/*********************************************************************名稱(chēng):write_sfm4(ucharhang,ucharadd,uchardate)*功能:顯示2位十進(jìn)制數(shù),如果要讓第一行,第五個(gè)字符開(kāi)始顯示"23",調(diào)用該函數(shù)如下 write_sfm1(1,5,23)*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無(wú)***********************************************************************/voidwrite_sfm4(ucharhang,ucharadd,uintdate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(0x30+date/10000%10); write_data(0x30+date/1000%10); write_data('.'); write_data(0x30+date/100%10); write_data(0x30+date/10%10); write_data(0x30+date%10); write_data('k'); write_data('m'); }voidwrite_sfm7(ucharhang,ucharadd,uintdate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(0x30+date/100000%10); write_data(0x30+date/100000%10); write_data(0x30+date/10000%10); write_data(0x30+date/1000%10); write_data('.'); write_data(0x30+date/100%10); write_data(0x30+date/10%10); write_data('k'); write_data('m'); }/***********************lcd1602上顯示兩位十進(jìn)制數(shù)************************/voidwrite_sfm1(ucharhang,ucharadd,uchardate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(0x30+date%10); }/*********************************************************************名稱(chēng):write_string(ucharhang,ucharadd,uchar*p)*功能:改變液晶中某位的值,如果要讓第一行,第五個(gè)字符開(kāi)始顯示"abcdef",調(diào)用該函數(shù)如下 write_string(1,5,"abcdef;")*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無(wú)***********************************************************************/voidwrite_string(ucharhang,ucharadd,uchar*p){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); while(1) { if(*p=='\0')break; write_data(*p); p++; } }/***********************lcd1602上顯示兩位十進(jìn)制數(shù)************************/voidwrite_sfm2_ds1302(ucharhang,ucharadd,uchardate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(table_num[date/16]); write_data(table_num[date%16]); }/*****************控制光標(biāo)函數(shù)********************/voidwrite_guanbiao(ucharhang,ucharadd,uchardate){ if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); if(date==1) write_com(0x0f);//顯示光標(biāo)并且閃爍 else write_com(0x0c);//關(guān)閉光標(biāo)} /*********************************************************************名稱(chēng):init_1602()*功能:初始化1602液晶*輸入:無(wú)*輸出:無(wú)***********************************************************************/voidinit_1602()//1602初始化{ write_com(0x38); write_com(0x0c); write_com(0x06); delay_uint(1000); write_string(1,0,"sd:00km/h00:00"); write_string(2,0,"lc:00.00km"); }voidwrite_ds1302(ucharadd,uchardat){ rst=1; //把復(fù)位線(xiàn)拿高 for(i=0;i<8;i++) { //低位在前 clk=0; //時(shí)鐘線(xiàn)拿低開(kāi)始寫(xiě)數(shù)據(jù) io=add&0x01; add>>=1; //把地址右移一位 clk=1; //時(shí)鐘線(xiàn)拿高 } for(i=0;i<8;i++) { clk=0; //時(shí)鐘線(xiàn)拿低開(kāi)始寫(xiě)數(shù)據(jù) io=dat&0x01; dat>>=1; //把數(shù)據(jù)右移一位 clk=1; //時(shí)鐘線(xiàn)拿高 } rst=0; //復(fù)位線(xiàn)合低}/*************從對(duì)應(yīng)的地址讀一個(gè)數(shù)據(jù)出來(lái)***************/ucharread_ds1302(ucharadd){ ucharvalue,i; rst=1; //把復(fù)位線(xiàn)拿高 for(i=0;i<8;i++) { //低位在前 clk=0; //時(shí)鐘線(xiàn)拿低開(kāi)始寫(xiě)數(shù)據(jù) io=add&0x01; add>>=1; //把地址右移一位 clk=1; //時(shí)鐘線(xiàn)拿高 } for(i=0;i<8;i++) { clk=0; //時(shí)鐘線(xiàn)拿低開(kāi)始讀數(shù)據(jù) value>>=1; if(io==1) value|=0x80; clk=1; //時(shí)鐘線(xiàn)拿高 } rst=0; //復(fù)位線(xiàn)合低 returnvalue; //返回讀出來(lái)的數(shù)據(jù)}/*************把要的時(shí)間年月日都讀出來(lái)***************/voidread_time(){ miao=read_ds1302(read_add[0]); //讀秒 fen=read_ds1302(read_add[1]); //讀分 shi=read_ds1302(read_add[2]); //讀時(shí) ri=read_ds1302(read_add[3]); //讀日 yue=read_ds1302(read_add[4]); //讀月 nian=read_ds1302(read_add[5]); //讀年 week=read_ds1302(read_add[6]); //讀星期}/*************把要寫(xiě)的時(shí)間年月日都寫(xiě)入ds1302里***************/voidwrite_time(){ write_ds1302(0x8e,0x00); //打開(kāi)寫(xiě)保護(hù) write_ds1302(write_add[0],miao); //寫(xiě)秒 write_ds1302(write_add[1],fen); //寫(xiě)分 write_ds1302(write_add[2],shi); //寫(xiě)時(shí) write_ds1302(write_add[3],ri); //寫(xiě)日 write_ds1302(write_add[4],yue); //寫(xiě)月 write_ds1302(write_add[5],nian); //寫(xiě)星期 write_ds1302(write_add[6],week); //寫(xiě)年 write_ds1302(0x8e,0x80); //關(guān)閉寫(xiě)保護(hù)}/*************定時(shí)器0初始化程序***************/voidinit_1602_ds1302(){ write_sfm2_ds1302(1,11,shi); write_sfm2_ds1302(1,14,fen); }/***********外部中斷0初始化程序****************/voidinit_int0(){ EX0=1; //允許外部中斷0中斷 EA=1; //開(kāi)總中斷 IT0=1; //外部中斷0負(fù)跳變中斷}/*************定時(shí)器0初始化程序***************/voidtime_init() //定時(shí)器0初始化程序{ EA=1; //開(kāi)總中斷 TMOD=0X11; //定時(shí)器0、工作方式1 ET0=1; //開(kāi)定時(shí)器0中斷 TR0=1; //允許定時(shí)器0定時(shí) ET1=1; //開(kāi)定時(shí)器1中斷 TR1=1; //允許定時(shí)器1定時(shí)}/***********計(jì)算速度函數(shù)**************/voidmenu_dis() //計(jì)算速度函數(shù){ if(flag_1s==1) { flag_1s=0; if((flag_en==1)) { flag_en=0; //1s=1/1000000us; //1m/s=0.001km除以1/3600h=3.6km/h f_hz=1/(TH11*256+TL11)/1000000;//算出來(lái)就是秒 speed_m=f_hz*zhijing*3.14; //算出來(lái)的是m/s juli_z=juli_z+speed_m;//總路程m speed_km=speed_m*3.6; //(帶個(gè)小數(shù)點(diǎn))km/s shudu=speed_km; zong_lc+=speed_m; } write_sfm2(1,3,shudu); write_sfm4(2,3,juli_z); }}/********************獨(dú)立按鍵程序*****************/ucharkey_can; //按鍵值voidkey() //獨(dú)立按鍵程序{ if((P3&0x78)!=0x78) //按鍵按下 { delay_1ms(1); //按鍵消抖動(dòng) if((P3&0x78)!=0x78) { //確認(rèn)是按鍵按下 switch(P3&0x78) { case0x70:key_can=4;break; //得到按鍵值 case0x68:key_can=3;break; //得到按鍵值 case0x58:key_can=2;break; //得到按鍵值 case0x38:key_can=1;break; //得到按鍵值 } } }}/**********************設(shè)置函數(shù)************************/voidkey_with(){ //手動(dòng)調(diào)速 if(key_can==4) //鍵 { if(f_pwm_l==0) { f_pwm_l=60; } f_pwm_l-=10; write_sfm1(2,15,f_pwm_l/10);//顯示 } if(key_can==3) //鍵 { f_pwm_l+=10; if(f_pwm_l>=60) { f_pwm_l=0; } write_sfm1(2,15,f_pwm_l/10);//顯示 } if(key_can==1) //設(shè)置鍵 { menu_1++; if(menu_1==1) //設(shè)置時(shí)間 { menu_2=1; write_string(1,0,"::W:"); write_string(2,0,"20--"); } if(menu_1==2) //設(shè)置報(bào)警速度 { menu_2=1; write_string(1,0,"set-sd:00km/h"); write_string(2,0,"zlc:"); } if(menu_1==3) //設(shè)置直徑 { menu_2=1; write_string(1,0,"SetZhijing"); write_string(2,0,""); } menu_2=1; if(menu_1>2)//回到正常顯示 { menu_1=0; write_guanbiao(1,2,0); //關(guān)閉光標(biāo) init_1602();//1602初始化//初始化液晶顯示 } } if(key_can==2) //選擇鍵 { if(menu_1==1) //設(shè)置時(shí)間 { menu_2++; if(menu_2>7) menu_2=1; } if(menu_1==2) //設(shè)置 { menu_2++; if(menu_2>2) menu_2=1; } } if(menu_1==1) { if(menu_2==1) //設(shè)置時(shí) { if(key_can==3) //加 { shi+=0x01; if((shi&0x0f)>=0x0a) shi=(shi&0xf0)+0x10; if(shi>=0x24) shi=0; } if(key_can==4) //減 { if(shi==0x00) shi=0x24; if((shi&0x0f)==0x00) shi=(shi|0x0a)-0x10; shi--; } } if(menu_2==2) //設(shè)置分 { if(key_can==3) //加 { fen+=0x01; if((fen&0x0f)>=0x0a) fen=(fen&0xf0)+0x10; if(fen>=0x60) fen=0; } if(key_can==4) //減 { if(fen==0x00) fen=0x5a; if((fen&0x0f)==0x00) fen=(fen|0x0a)-0x10; fen--; } } if(menu_2==3) //設(shè)置秒 { if(key_can==3) //加 { miao+=0x01; if((miao&0x0f)>=0x0a) miao=(miao&0xf0)+0x10; if(miao>=0x60) miao=0; } if(key_can==4) //減 { if(miao==0x00) miao=0x5a; if((miao&0x0f)==0x00) miao=(miao|0x0a)-0x10; miao--; } } if(menu_2==4) //設(shè)置星期 { if(key_can==3) //加 { week+=0x01; if((week&0x0f)>=0x0a) week=(week&0xf0)+0x10; if(week>=0x08) week=1; } if(key_can==4) //減 { if(week==0x01) week=0x08; if((week&0x0f)==0x00) week=(week|0x0a)-0x10; week--; } } if(menu_2==5) //設(shè)置年 { if(key_can==3) //加 { nian+=0x01; if((nian&0x0f)>=0x0a) nian=(nian&0xf0)+0x10; if(nian>=0x9a) nian=1; } if(key_can==4) //減 { if(nian==0x01) nian=0x9a; if((nian&0x0f)==0x00) nian=(nian|0x0a)-0x10; nian--; } } if(menu_2==6) //設(shè)置月 { if(key_can==3) //加 { yue+=0x01; if((yue&0x0f)>=0x0a) yue=(yue&0xf0)+0x10; if(yue>=0x13) yue=1; } if(key_can==4) //減 { if(yue==0x01) yue=0x13; if((yue&0x0f)==0x00) yue=(yue|0x0a)-0x10; yue--; } } if(menu_2==7) //設(shè)置日 { if(key_can==3) //加 { ri+=0x01; if((ri&0x0f)>=0x0a) ri=(ri&0xf0)+0x10; if(ri>=0x32) ri=0; } if(key_can==4) //減 { if(ri==0x01) ri=0x32; if((ri&0x0f)==0x00) ri=(ri|0x0a)-0x10; ri--; } } write_sfm2_ds1302(1,2,shi); //顯示時(shí) write_sfm2_ds1302(1,5,fen); //顯示分 write_sfm2_ds1302(1,8,miao); //顯示秒 write_sfm1(1,14,week); //顯示星期 write_sfm2_ds1302(2,3,nian); //顯示年 write_sfm2_ds1302(2,6,yue); //顯示月 write_sfm2_ds1302(2,9,ri); //顯示日 switch(menu_2) //光標(biāo)顯示 { case1:write_guanbiao(1,2,1);break; case2:write_guanbiao(1,5,1);break; case3:write_guanbiao(1,8,1);break; case4:write_guanbiao(1,14,1);break; case5:write_guanbiao(2,3,1);break; case6:write_guanbiao(2,6,1);break; case7:write_guanbiao(2,9,1);break; } write_time(); //把時(shí)間寫(xiě)進(jìn)去 } if(menu_1==2) { if(menu_2==1) //設(shè)置速度 { if(key_can==3) //加 { bj_shudu++; if(bj_shudu>=99) bj_shudu=99; } if(key_can==4) //減 { if(bj_shudu!=0) bj_shudu--; } } if(menu_2==2) //把總量程清零 { if(key_can==3) { zong_lc=0; } if(key_can==4) { zong_lc=0; } } write_sfm2(1,7,bj_shudu);//顯示報(bào)警速度 write_sfm7(2,4,zong_lc);//顯示

溫馨提示

  • 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)論