自行車簡易數(shù)字里程表的設(shè)計(jì)-機(jī)械設(shè)計(jì)制造及其自動(dòng)化本科畢業(yè)設(shè)計(jì)_第1頁
自行車簡易數(shù)字里程表的設(shè)計(jì)-機(jī)械設(shè)計(jì)制造及其自動(dòng)化本科畢業(yè)設(shè)計(jì)_第2頁
自行車簡易數(shù)字里程表的設(shè)計(jì)-機(jī)械設(shè)計(jì)制造及其自動(dòng)化本科畢業(yè)設(shè)計(jì)_第3頁
自行車簡易數(shù)字里程表的設(shè)計(jì)-機(jī)械設(shè)計(jì)制造及其自動(dòng)化本科畢業(yè)設(shè)計(jì)_第4頁
自行車簡易數(shù)字里程表的設(shè)計(jì)-機(jī)械設(shè)計(jì)制造及其自動(dòng)化本科畢業(yè)設(shè)計(jì)_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

**學(xué)院本科畢業(yè)設(shè)計(jì)自行車簡易數(shù)字里程表的設(shè)計(jì)所在學(xué)院機(jī)械與工程學(xué)院專業(yè)名稱機(jī)械設(shè)計(jì)制造及其自動(dòng)化申請(qǐng)學(xué)士學(xué)位所屬學(xué)科工學(xué)年級(jí)二〇一二級(jí)學(xué)生姓名、學(xué)號(hào)指導(dǎo)教師姓名職稱完成日期二〇一六年五月摘要引言在幾百年的不斷發(fā)展、不斷設(shè)計(jì)的過程中,自行車經(jīng)歷了一個(gè)漫長的發(fā)展歷程,并有了較為成熟的制造技術(shù)。與此同時(shí),騎自行車也從一個(gè)單純交通使用的角色轉(zhuǎn)變成現(xiàn)在受很多人們愛好的日常休閑活動(dòng)的方式。作為使人們能夠用于鍛煉身體、日常休閑使用的重要方式,很多現(xiàn)有的功能已經(jīng)無法滿足人們的需求。社會(huì)的需求推動(dòng)著技術(shù)產(chǎn)業(yè)的發(fā)展,于自行車行業(yè)也同樣如此。人們生活質(zhì)量的提升,要求其必須具有著較為便利的輔助功能,如在騎行的過程中需要了解到行車速度,為了方便地點(diǎn)距離的測(cè)量,還要求其有著可以測(cè)量行程的功能。除此之外,出于上述種種理由,本設(shè)計(jì)本著在能夠滿足人們平常生活中鍛煉身體、休閑娛樂的目的,在這種形勢(shì)之下,一臺(tái)方便、實(shí)用的簡單數(shù)字式自行車?yán)锍瘫砭捅辉O(shè)計(jì)出來了。本設(shè)計(jì)的速度里程具有速度、里程的檢測(cè)功能,還可以顯示時(shí)間并有著清楚、明了的顯示界面。該里程表可以將當(dāng)前的自行車速度及行走的路程直接在液晶屏幕上顯示出來,在自行車上安裝也特別方便。為實(shí)現(xiàn)所需功能,單片機(jī)、霍爾感應(yīng)器等其它組件組合并可用液晶顯示器顯示出騎車時(shí)的速度及騎行路程是本設(shè)計(jì)的主要目標(biāo)。整個(gè)設(shè)計(jì)分為硬件部分的設(shè)計(jì)和軟件部分的設(shè)計(jì)。除此之外,自行車速度里程表的設(shè)計(jì)想法、電路和器件的原理及選擇都在本文當(dāng)中有提及。課題目標(biāo)對(duì)計(jì)劃、軟硬件設(shè)計(jì)方案的理論驗(yàn)證,是整個(gè)設(shè)計(jì)工作開始的重要一步。接下來需要提及的便是自行車速度里程表在符合科學(xué)設(shè)計(jì)的基礎(chǔ)上,對(duì)于如何挑選芯片等元件的選擇和怎樣設(shè)計(jì)電路鋪設(shè)的走向。其中,速度里程表在軟件設(shè)計(jì)層面的設(shè)計(jì)思路及計(jì)劃也得到了很好的闡述。對(duì)于整個(gè)設(shè)計(jì)過程而言,分析討論模擬過程、找出存在的問題、進(jìn)行系統(tǒng)的檢查并得出結(jié)論是作為最后的關(guān)鍵一步。除了STC89C52單片機(jī)外部電路以及顯示電路等具體的硬件電路和初始化、定時(shí)、中斷等子程序的軟件設(shè)計(jì)外,整個(gè)軟件設(shè)計(jì)過程中,用C語言來編寫軟件。2設(shè)計(jì)分析要求2.1設(shè)計(jì)要求(1)設(shè)計(jì)一個(gè)基于單片機(jī)制作的簡易自行車?yán)锍瘫?。?)顯示速度、路程等的預(yù)期目標(biāo)可以在該該設(shè)計(jì)中得以實(shí)現(xiàn)。(3)騎行環(huán)境達(dá)到一定的溫度時(shí),系統(tǒng)會(huì)提示減速休息。(4)當(dāng)警報(bào)響起時(shí),會(huì)反饋一條指令給電動(dòng)機(jī),拉緊剎車,使車緩慢減速。(5)自行車?yán)锍逃?jì)的基本工作原理能夠完全了解。2.2方案分析構(gòu)件簡單、并有著較強(qiáng)實(shí)用性的本系統(tǒng)可以通過信號(hào)采集即由計(jì)數(shù)器計(jì)算短時(shí)間內(nèi)的路程來求出平均速度,該平均速度近相似于該時(shí)刻的瞬時(shí)速度。光電對(duì)管來完成采集數(shù)據(jù)的任務(wù),并以矩形脈沖的形式輸出。在本設(shè)計(jì)當(dāng)中有若干個(gè)按鍵,可以用來滿足自行車不同車型輪子直徑大小的設(shè)置、對(duì)數(shù)據(jù)進(jìn)行清0、調(diào)整時(shí)間等,整個(gè)設(shè)計(jì)的計(jì)數(shù)由單片機(jī)的P3.0引腳來完成。我們?cè)谠O(shè)計(jì)過程當(dāng)中,為實(shí)現(xiàn)較好的產(chǎn)品體驗(yàn),應(yīng)該全面考慮準(zhǔn)確的測(cè)量和縮短系統(tǒng)反映過程中的時(shí)間。采用通過脈沖頻率來得到速度這種方法雖然能夠獲得較為精確的精度,我們?cè)谟?jì)算時(shí)卻采用的理想狀態(tài)下的數(shù)據(jù),從而會(huì)有一定的誤差產(chǎn)生。誤差不可避免,我們要盡量的把不可避免的誤差控制在一定的合理范圍之內(nèi)。除上述外,在編寫程序代碼時(shí),確保實(shí)現(xiàn)功能所需程序的合理編寫在整個(gè)過程當(dāng)中也是非常重要的。在本設(shè)計(jì)過程當(dāng)中,自行車輪胎產(chǎn)生的數(shù)字脈沖數(shù)據(jù)經(jīng)過霍爾感應(yīng)器發(fā)送給作為控制核心的單片機(jī),單片機(jī)經(jīng)過計(jì)算單位時(shí)間的數(shù)據(jù)把最終的結(jié)果顯示在顯示屏上即為單片方式的電路集成。容易得出結(jié)論,本設(shè)計(jì)的精確程度與霍爾元件計(jì)數(shù)的準(zhǔn)確性有著不可分割的關(guān)系。也就是說,在自行車騎行這個(gè)復(fù)雜的環(huán)境中怎樣得到正確的脈沖數(shù)是完美實(shí)現(xiàn)該設(shè)計(jì)的點(diǎn)睛之筆。對(duì)于實(shí)現(xiàn)在繁雜工作環(huán)境下準(zhǔn)確的計(jì)算脈沖這個(gè)問題,采用的是使脈沖以不同高度的信號(hào)來解決該問題。在下坡等危險(xiǎn)容易高速騎行的路段,為了保護(hù)使用者人身安全,當(dāng)自行車速度達(dá)到預(yù)設(shè)的危險(xiǎn)值時(shí)危險(xiǎn)報(bào)警器發(fā)出警報(bào),與此同時(shí)控制剎車的微型發(fā)動(dòng)機(jī)轉(zhuǎn)動(dòng)使得剎車線拉緊從而緩慢降低速度。在夏季炎熱的天氣騎行時(shí)很容易造成中暑,為此,裝有一個(gè)溫度感應(yīng)系統(tǒng)。當(dāng)炎熱的溫度超過適合人體的極限溫度時(shí)系統(tǒng)會(huì)發(fā)出報(bào)警提示聲,并與上述原理相同緩慢降低速度。2.3與傳統(tǒng)常用里程表比較

雖然傳統(tǒng)使用磁電式的自行車?yán)锍瘫碛兄鴺?gòu)造簡單并有著較為低廉的成本等優(yōu)點(diǎn),但其無法抵抗電磁波的干擾。在現(xiàn)代社會(huì)中,移動(dòng)電話被使用者隨時(shí)隨地的攜帶,移動(dòng)電話所帶來的電磁波對(duì)傳統(tǒng)里程表的使用有著致命的影響。其次,當(dāng)使用者車速過快時(shí),由于過高的電壓值會(huì)使傳感器產(chǎn)生額外次脈沖從而嚴(yán)重干擾了測(cè)量的精度同時(shí)也降低了產(chǎn)品的使用體驗(yàn)。自行車工作的環(huán)境非常不理想,很強(qiáng)的震動(dòng)、機(jī)油形成的污垢勢(shì)必有一個(gè)適應(yīng)性強(qiáng)的產(chǎn)品才能夠滿足種種艱苦的工作要求。而在整個(gè)設(shè)計(jì)過程當(dāng)中使用適應(yīng)性、保障性強(qiáng)的霍爾傳感器很大程度上解決了此類問題,才使得設(shè)計(jì)的里程表具有優(yōu)越的使用性能。3系統(tǒng)硬件設(shè)計(jì)3.1總設(shè)計(jì)方案作為MCS-51系列單片機(jī)中基本的產(chǎn)品屬于89C51增強(qiáng)型版本,CMOS可靠其有著8位的處理單元、8k的存儲(chǔ)器(ROM)等較強(qiáng)的硬件條件。除此之外,在低功耗模式下該單片機(jī)可以在空余與掉電模式中轉(zhuǎn)換,只需要軟件控制就可以。單片機(jī)只有在電源、時(shí)鐘、復(fù)位等硬件條件正常條件下,才可以運(yùn)行。以MCS-51單片機(jī)作為操作過程的核心,車輪的轉(zhuǎn)數(shù)以電脈沖的形式由傳感元件轉(zhuǎn)換而成并將之解決成一個(gè)單獨(dú)的芯片是本系統(tǒng)的主要目的。用單片機(jī)的定時(shí)和計(jì)數(shù)功能來實(shí)現(xiàn)路程和速度的計(jì)算,原理是每轉(zhuǎn)的脈沖數(shù)都可以由定時(shí)器和計(jì)數(shù)器計(jì)算出。如果輪子的周長假設(shè)為C,裝q個(gè)磁鐵在輪圈上,那么就會(huì)有測(cè)的的路程誤差值最大為C/q。只有一個(gè)磁鐵的時(shí)候,霍爾元件檢測(cè)到一個(gè)脈沖信號(hào),也就意味著輪子轉(zhuǎn)了一圈。并且,每當(dāng)霍爾元件檢測(cè)到脈沖信號(hào)時(shí),相應(yīng)的就會(huì)在P3.2引腳0端中斷輸入,與此同時(shí),系統(tǒng)的數(shù)量計(jì)算也會(huì)停止一次。由上述易得,路程的測(cè)量值即為輪子的周長C*停止的次數(shù)=行程。輪子轉(zhuǎn)一圈所用的時(shí)間由單片機(jī)上的計(jì)數(shù)器可計(jì)算得出,有轉(zhuǎn)一圈所需的時(shí)間那么瞬時(shí)的速度很容易就會(huì)求得了。為了防止車速過快容易發(fā)生意外事故,如果正在騎行的自行車速度達(dá)到一丁點(diǎn)設(shè)定極限值時(shí),以蜂鳴器當(dāng)作的警報(bào)設(shè)備就會(huì)發(fā)出聲響,提醒騎車的使用者。如圖所示即霍爾傳感器測(cè)速:圖3-1霍爾傳感器測(cè)速把有磁性的小鋼塊固定在沒有磁性的材料制成的車輪邊緣上,自行車車輪轉(zhuǎn)動(dòng)一次就會(huì)產(chǎn)生一個(gè)脈沖在霍爾感應(yīng)器上,再由計(jì)數(shù)器來測(cè)算出轉(zhuǎn)數(shù)。如下即為實(shí)現(xiàn)各指標(biāo)舉措:確?;魻栐霈F(xiàn)里程脈沖信號(hào)。用單片機(jī)的計(jì)數(shù)器計(jì)算霍爾元件產(chǎn)生的脈沖信號(hào)。通過軟件編程來加工數(shù)據(jù),為了路程數(shù)和瞬時(shí)速度可以在顯示屏中顯示。目標(biāo)是可以在單片機(jī)的控制下,由這三個(gè)舉措來使速度里程表有路程測(cè)量、速度測(cè)量并且顯示數(shù)據(jù)的功能。圖3-2系統(tǒng)框圖3.2最小系統(tǒng)3.2.1STC89C52單片機(jī)圖3-3單片機(jī)內(nèi)部結(jié)構(gòu)示意圖一般情況下,如果將單片機(jī)用于操作中連接時(shí),往往會(huì)和相應(yīng)的連接電路、設(shè)備等硬軟件結(jié)合在一起,這樣的話,一個(gè)單片機(jī)應(yīng)用系統(tǒng)才會(huì)構(gòu)成。圖3-4STC89C52單片機(jī)作為可與MCS-51系列產(chǎn)品性能完全兼容的單片機(jī),STC89C52有著8K的可編程Flash存儲(chǔ)器,在性能上功能消耗非常低。同時(shí),STC89C52作為很多應(yīng)用系統(tǒng)非常優(yōu)質(zhì)的處理元件,得益于它那8位的大規(guī)模集成電路和能夠在線編程的Flash。除了和其他系列的單片機(jī)功能之外,能夠在節(jié)電的情況下運(yùn)行兩種軟件。3.2.2時(shí)鐘電路的設(shè)計(jì)振蕩時(shí)鐘與外部的時(shí)鐘組成了時(shí)鐘電路。作為協(xié)同外部的晶體產(chǎn)生振動(dòng)電路的時(shí)鐘電路,可以正常工作的前提條件是有著相同脈沖的帶動(dòng),運(yùn)行的時(shí)鐘可以提供給單片機(jī)。單片機(jī)正常工作的前提是運(yùn)行的時(shí)鐘為1,除此之外,也要要求單片機(jī)工作時(shí)的頻率要在所規(guī)定的單片機(jī)工作頻率范圍之內(nèi)。時(shí)鐘功能正常運(yùn)轉(zhuǎn)是整個(gè)單片機(jī)各種功能運(yùn)行的重要基礎(chǔ),作為單片機(jī)的核心部分,其頻率的高低和電路的品質(zhì)與單片機(jī)的穩(wěn)定性有著非常緊密的聯(lián)系。本設(shè)計(jì)在內(nèi)、外部時(shí)鐘當(dāng)中采用內(nèi)部的時(shí)鐘方式。另外,輸入、輸出端分別為芯片引腳XTAL1、XTAL2的反相放大器也位于單片機(jī)里面,來組成一個(gè)振蕩器。一個(gè)運(yùn)行平穩(wěn)的自己振蕩器可由可調(diào)電容及晶體振蕩器與XTAL1、XTAL2這兩個(gè)引腳連接而成。圖3-5時(shí)鐘電路復(fù)位電路的設(shè)計(jì)有了RET復(fù)位輸入引腳作為單片機(jī)實(shí)現(xiàn)初始的一種方法,能夠讓程序在程序存儲(chǔ)當(dāng)中的初始地址0000H開始運(yùn)行。若使單片機(jī)初始復(fù)位,則只需要在引腳RET上接通兩個(gè)周期的高電平就可以實(shí)現(xiàn),若要使其不斷的復(fù)位,則只需要RET維持高電平即可。否則,單片機(jī)不會(huì)從0地址開始運(yùn)行,除非RET從高電平降為低電平。首先,手動(dòng)型的復(fù)位和復(fù)位電源型復(fù)位方式構(gòu)成了單片機(jī)系統(tǒng)的復(fù)位方式。由電容的電壓不可以在短時(shí)間內(nèi)突然改變的特點(diǎn)及電容的串聯(lián)電阻構(gòu)成的復(fù)位電路可以得出,如果給整個(gè)系統(tǒng)通上電源,那么高電平將會(huì)出現(xiàn)在RST引腳,除此之外,該電路的RC值可以決定高電平所持續(xù)的時(shí)間。且振蕩器穩(wěn)定后,如果有一個(gè)高水平在RST引腳和保持2個(gè)機(jī)器周期以上,中央處理器可以響應(yīng),此時(shí)也會(huì)重置系統(tǒng),適當(dāng)組合的RC的取值能夠使復(fù)位保證足夠的可能性。設(shè)計(jì)的該系統(tǒng)是通過按鍵復(fù)位的方式來進(jìn)行復(fù)位操作,單片機(jī)復(fù)位的前提條件是其當(dāng)RET引腳為高電平并且ALE及PSEN也為高電平輸出的引腳。如圖所示為復(fù)位電路:圖3-6復(fù)位電路3.3顯示電路的設(shè)計(jì)將LCD1602顯示模塊用于本設(shè)計(jì),具有較為美觀的人機(jī)交互界面和直觀的信息傳遞方式使得液晶顯示器有著非常高品質(zhì)的顯示效果。除此之外,采用低電壓掃視的LCD液晶顯示器有著節(jié)能、性能穩(wěn)定易于控制、低消耗、占用CPU少等優(yōu)點(diǎn)也使得這種顯示器使用范圍廣泛。作為專業(yè)用于呈現(xiàn)字符及數(shù)字的點(diǎn)陣式的液晶顯示模塊,有多種型號(hào)。下圖即為一般的1602液晶顯示器實(shí)物圖:圖3-7液晶顯示器實(shí)物圖根據(jù)有無背光1602LCD顯示器分為兩個(gè)類別,而且有背光功能的厚度要厚一些。如下圖即為尺寸差別:圖3-8液晶顯示模塊圖1602引腳說明表格如下:編號(hào)符號(hào)引腳說明編號(hào)符號(hào)引腳說明1Vss電源地9D2數(shù)據(jù)接口2VDD接電源正極10D3數(shù)據(jù)接口3VO調(diào)整液晶顯示器對(duì)比端11D4數(shù)據(jù)接口4RS信息/指令端選擇(H/L)12D5數(shù)據(jù)接口5R/W讀寫選擇端(H/L)13D6數(shù)據(jù)接口6E使能信號(hào)14D7數(shù)據(jù)接口7D0數(shù)據(jù)口15BLA正極接背光電源8D1數(shù)據(jù)口16BLK負(fù)極接背光電源單單片機(jī)與液晶引腳連接:第1腳:VSS為電源地。第2腳:VDD接5V電源正極。第3腳:VO調(diào)整液晶顯示器對(duì)比度端口第4腳:RS依據(jù)電平高低選擇寄存器。第5腳:R/W依據(jù)電平高低讀寫信號(hào)線。第6腳:E端為控制信號(hào)輸入端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。第15腳:正極接電源背光源。第16腳:負(fù)極接地背光源。圖3-9LCD電路結(jié)構(gòu)圖液晶顯示模塊由于接地或接正極會(huì)出現(xiàn)最高或最低的對(duì)比度,我們可以通過10K的電位器來調(diào)節(jié)避免因太高的對(duì)比度而使之產(chǎn)生虛影。3.4按鍵電路的設(shè)計(jì)按鍵作為單片機(jī)應(yīng)用中的重要組成部分,最常用的有單獨(dú)和矩陣兩種類型。本設(shè)計(jì)采用單獨(dú)型的鍵盤,并且每一個(gè)按鍵相應(yīng)的連接一個(gè)單片機(jī)端口。輕度接觸型開關(guān)常被用于按鍵,按鍵未受到手指的壓力時(shí)其觸點(diǎn)是斷開的,只有當(dāng)手指給予其一定的壓力才會(huì)有觸點(diǎn)接觸使開關(guān)閉合,按鍵不會(huì)立即閉合或者立即斷開因?yàn)橛|點(diǎn)有一定的彈性。在按鍵閉合、斷開的過程當(dāng)中由于觸點(diǎn)具有彈性作用會(huì)發(fā)生顫動(dòng),按鍵自身的性能及使用者的操作會(huì)影響顫動(dòng)時(shí)間的長短。整個(gè)按擊鍵盤的過程大概包含五個(gè)時(shí)段:等候時(shí)段:手指未按下鍵盤,觸點(diǎn)未接觸。閉合顫動(dòng)時(shí)段:手指剛剛按下鍵盤,觸點(diǎn)由于彈性作用發(fā)生顫動(dòng),也必須設(shè)置顫動(dòng)延時(shí)來避免誤操作。穩(wěn)定時(shí)段:閉合引發(fā)的顫動(dòng)已經(jīng)結(jié)束,起作用的按鍵動(dòng)作已經(jīng)形成。斷開顫動(dòng)階段:手指慢慢松開按鍵時(shí),觸點(diǎn)由于彈性作用也會(huì)發(fā)生顫動(dòng),同理,也需設(shè)置顫動(dòng)延時(shí)來防止誤操作。鍵盤松開時(shí)段:由于機(jī)械的性能而產(chǎn)生的顫動(dòng)已消失,觸點(diǎn)恢復(fù)未接觸。圖3-10按鍵電路報(bào)警電路的設(shè)計(jì)如果固定頻率的矩形的電磁波能夠由單片機(jī)的口線發(fā)出高或低的電平而產(chǎn)生,那么安裝一個(gè)喇叭就可以使頻率化成聲音。發(fā)出的頻率也可以通過調(diào)節(jié)高低電平的維持時(shí)間來改變,進(jìn)而使喇叭產(chǎn)生不一樣的聲響即使音調(diào)發(fā)生變化。在5V的電壓下,蜂鳴器正常工作,除此之外,上拉電阻也沒有必要安裝在P3接口處。重要的是,5V的電源要與三極管的發(fā)送端相連接,三極管的陰極與1K的電阻相接,電阻最后要接I0口,蜂鳴器正負(fù)極分別與三極管集電極和地相接。圖3-11蜂鳴器發(fā)聲電路結(jié)構(gòu)圖蜂鳴器無法發(fā)出聲響,前提是正在行駛的速度小于已設(shè)的警示速度。如果行駛的速度達(dá)到了設(shè)定的警示值,則蜂鳴器會(huì)發(fā)出報(bào)警的聲響,此時(shí)控制剎車的微型發(fā)動(dòng)機(jī)轉(zhuǎn)動(dòng)緩慢拉緊剎車線使速度降低。3.5霍爾傳感器圖3-12霍爾傳感器作為使用霍爾效應(yīng)制成的一種磁敏傳感器,即霍爾感應(yīng)器。當(dāng)我們對(duì)放在磁場(chǎng)的半導(dǎo)體、導(dǎo)體開通電流并且磁場(chǎng)垂直電流,那么會(huì)有電勢(shì)差在磁場(chǎng)和電流都垂直的方向產(chǎn)生,即霍爾效應(yīng)。以霍爾效應(yīng)為基礎(chǔ)的霍爾元件,由于有著簡單的構(gòu)造、較高的靈敏度、耐高溫等一系列優(yōu)點(diǎn),還能夠測(cè)出沒有轉(zhuǎn)速的情況,在環(huán)境惡劣的環(huán)境中正常工作,在檢測(cè)技術(shù)、處理信息的地方經(jīng)常顯示出它們的身影。磁通量的大小因傳感器內(nèi)部的轉(zhuǎn)軸轉(zhuǎn)動(dòng)而發(fā)生變化,從而得到相應(yīng)的反饋信號(hào)。由半導(dǎo)體制成的霍爾元件需要給以電流,并且將信號(hào)處理等系列功能聚焦于一張芯片,霍爾元件磁場(chǎng)變大也會(huì)導(dǎo)致傳感器磁通量發(fā)生變化。圖3-13霍爾傳感器外形霍爾傳感器的使用往往與與之匹配的組件共同使用,因?yàn)椴荒墚a(chǎn)生較大的電勢(shì)差所以會(huì)有放大器電路來進(jìn)行信號(hào)放大,也要有溫度補(bǔ)償和穩(wěn)定電壓的電路給予功能上的補(bǔ)償。上圖所示為一種型號(hào)的霍爾傳感器外觀,容易看到,其體積較小。圖3-14線性霍爾傳感器特性如上圖所示,當(dāng)磁場(chǎng)的強(qiáng)度位于B1~B2的范圍內(nèi)時(shí),輸出的電壓和外面的磁場(chǎng)強(qiáng)度之間有著較好的線性關(guān)系。也容易發(fā)現(xiàn),當(dāng)磁場(chǎng)場(chǎng)強(qiáng)超過一定范圍則電壓大小維持不變,而在一般適合騎行的環(huán)境中,霍爾傳感器的線性特性完全可以實(shí)現(xiàn)。3.6時(shí)鐘芯片圖3-15時(shí)鐘電路DS1302型號(hào)的芯片作為時(shí)間芯片用于本次設(shè)計(jì),作為有著微小電流充電功能的低消耗時(shí)鐘電路,在2.5V至5.5V的工作電壓下,DS1302還有著年、月、周、日、時(shí)、分、秒進(jìn)行計(jì)時(shí)等的功能。由于使用串行的數(shù)據(jù)傳輸方式,在其內(nèi)部還置放臨時(shí)性儲(chǔ)存信息的RAM寄存器,也就意味著即使沒有電,信息也不會(huì)失去。RST引腳、SCLK串行時(shí)鐘引腳和I/O串行數(shù)據(jù)引腳組成了時(shí)鐘芯片與STC89C52的連接線。另外,計(jì)時(shí)的脈沖也由作為備用電源的Vcc2,芯片外接晶振X2提供。3.7溫度控制炎熱的夏日街頭,很容易看到全副武裝的騎友們,為了防止陽光的曝曬在身上覆蓋很多厚實(shí)的防護(hù)服。由于騎行過程中疲憊時(shí)精神不集中,特別容易引起中暑現(xiàn)象,在車輛川流不息的馬路上這是異常危險(xiǎn)的。在自行車行程速度表內(nèi)安裝溫度感應(yīng)器就可以很好避免這類問題。我們?cè)O(shè)定一個(gè)自己的身體在曝曬的情況下能夠承受的最大溫度值,并輸入進(jìn)單片機(jī)系統(tǒng),也通過由蜂鳴器來警報(bào)炎熱溫度。比如說:當(dāng)我們?cè)隍T行時(shí),溫度逐漸上升到我們的設(shè)定值時(shí),系統(tǒng)通過蜂鳴器發(fā)出警報(bào)并啟動(dòng)控制剎車的微型電動(dòng)機(jī),微型發(fā)動(dòng)機(jī)轉(zhuǎn)動(dòng)從而拉緊剎車線。為了防止降速過快容易發(fā)生側(cè)翻電動(dòng)機(jī)緩慢轉(zhuǎn)動(dòng)使得車速緩緩降低,讓使用者安全的停下休息。3.8剎車系統(tǒng)圖3-16微型發(fā)動(dòng)機(jī)控制剎車原理圖剎車原理:當(dāng)收到剎車的指令時(shí),單片機(jī)啟動(dòng)微型電動(dòng)機(jī),電動(dòng)機(jī)轉(zhuǎn)動(dòng)。由于電動(dòng)機(jī)與剎車線接觸的圓柱形轉(zhuǎn)輪直徑較小,故山車線被拉緊的速度較為緩慢,從而使得速度緩慢降低,避免了降速過快引發(fā)的一些意外事故。4設(shè)計(jì)與實(shí)現(xiàn)軟件編程硬件是設(shè)計(jì)的四肢,則軟件是設(shè)計(jì)的大腦。單片機(jī)的優(yōu)越性能就是可以由軟件來操作,在此過程中,科學(xué)性、正確性是整個(gè)程序設(shè)計(jì)所要遵守的原則。以先整體再部分的設(shè)計(jì)思路每層仔細(xì)分開來,再研究各層次的關(guān)系并計(jì)劃好細(xì)節(jié)。主程序,計(jì)算、延時(shí)、顯示及中斷等子程序組成了軟件設(shè)計(jì)。4.1主程序流程本系統(tǒng)的總體流程圖如圖所示。圖4-1主程序流程圖設(shè)計(jì)方案及其步驟:1.以系統(tǒng)所需和相應(yīng)實(shí)現(xiàn)的操作為基礎(chǔ)來進(jìn)行規(guī)劃模塊。2.要在確定整個(gè)設(shè)計(jì)的設(shè)計(jì)平臺(tái)之后,再確定程序的設(shè)計(jì)語言及如何設(shè)計(jì)和調(diào)整各類模塊的功能。3.在設(shè)計(jì)時(shí)一定要把模塊之間數(shù)據(jù)傳遞的原理了解清楚,為了增加各模塊的自主性也要減少其之間的傳遞。4.保證自身清楚的思考路線,合理調(diào)整程序調(diào)用、中止的關(guān)系。4.2顯示流程使用LCD非靜態(tài)掃描來顯示子程序,把單片機(jī)的P2.2口接到使能端口E是第一步,然后便將數(shù)據(jù)/命令選擇端RS與單片機(jī)的P2.0口接起來,D0~D7的數(shù)據(jù)端口和P0口接起來,并把顯示的數(shù)字指令傳遞到P0口。除上述過程,使用延時(shí)的功能把P2.2口設(shè)置為0,把P2.0口設(shè)置為1。繼續(xù)還要把P2.2端口置于1,把P2.0端口置于1,在數(shù)字顯示之前一直持續(xù)改寫數(shù)據(jù)。圖4-2顯示流程圖速度處理流程圖4-3速度處理流程圖溫度處理流程圖4-4溫度處理流程圖4.4仿真電路4.4.1軟件簡介除了有基本的電子設(shè)計(jì)自動(dòng)化功能外,Proteus在模仿單片機(jī)以及外部零件等方面也有著非常實(shí)用并且有效的功能。在國內(nèi)發(fā)展的短短時(shí)間內(nèi),其卓越的用戶體驗(yàn)已經(jīng)讓它在單片機(jī)及周邊行業(yè)好評(píng)如潮。作為風(fēng)靡世界的EDA工具,無論是從布置原理圖、檢測(cè)數(shù)據(jù)還是實(shí)際電路的模擬上,Proteus都做出了非常大的貢獻(xiàn)。Proteus也在虛擬框架到實(shí)體的設(shè)計(jì)過程當(dāng)中做出了歷史性貢獻(xiàn),是多種優(yōu)秀功能軟件的結(jié)晶,并且適合于多種型號(hào)的處理支持。4.4.2結(jié)果繪制仿真圖要點(diǎn):找出所需元件。以電路圖為基礎(chǔ)進(jìn)行連接。運(yùn)行C程序產(chǎn)生的HEX文件來開始仿真。圖4-5仿真圖5調(diào)試與測(cè)量分析圖5-1電路實(shí)物圖圖5-2實(shí)物運(yùn)行圖如果在電路中最低端的系統(tǒng)電路無法運(yùn)轉(zhuǎn),檢測(cè)電源是否有正常的電壓是首先做的工作。判斷電源電壓的常用方法是用電壓表測(cè)電源接口與接地接口的電壓,看是否為5V左右。附錄程序#include<reg52.h> //調(diào)用單片機(jī)頭文件#defineucharunsignedchar//無符號(hào)字符型宏定義 變量范圍0~255#defineuintunsignedint //無符號(hào)整型宏定義 變量范圍0~65535sbitclk=P1^3; //ds1302時(shí)鐘線定義sbitio=P1^4; //數(shù)據(jù)線sbitrst=P1^5; //復(fù)位線 //秒分時(shí)日月年星期 ucharcodewrite_add[]={0x80,0x82,0x84,0x86,0x88,0x8c,0x8a};//寫地址ucharcoderead_add[]={0x81,0x83,0x85,0x87,0x89,0x8d,0x8b};//讀地址ucharcodeinit_ds[]={0x55,0x17,0x15,0x01,0x01,0x13,0x13};ucharmiao,fen,shi,ri,yue,week,nian;uchari;uchart1_num,t2_num; //計(jì)時(shí)間中斷的次數(shù)unsignedlongspeed1,juli,time2;floatf_hz ,speed_km,speed_m;ucharTH11,TL11;ucharflag_en;//開始計(jì)算速度使能ucharflag_stop_en;//要確定車子是否停下了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=80; //報(bào)警速度//這三個(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++);}/*********************************************************************名稱:delay_uint()*功能:小延時(shí)。*輸入:無*輸出:無***********************************************************************/voiddelay_uint(uintq){ while(q--);}/*********************************************************************名稱:write_com(ucharcom)*功能:1602命令函數(shù)*輸入:輸入的命令值*輸出:無***********************************************************************/voidwrite_com(ucharcom){ i=0; e=0; rs=0; rw=0; P0=com; delay_uint(3); e=1; delay_uint(25); e=0;}/*********************************************************************名稱:write_data(uchardat)*功能:1602寫數(shù)據(jù)函數(shù)*輸入:需要寫入1602的數(shù)據(jù)*輸出:無***********************************************************************/voidwrite_data(uchardat){ i=0; e=0; rs=1; rw=0; P0=dat; delay_uint(3); e=1; delay_uint(25); e=0; }/*********************************************************************名稱:write_sfm2(ucharhang,ucharadd,uchardate)*功能:顯示2位十進(jìn)制數(shù),如果要讓第一行,第五個(gè)字符開始顯示"23",調(diào)用該函數(shù)如下 write_sfm1(1,5,23)*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無***********************************************************************/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); }/*********************************************************************名稱:write_sfm4(ucharhang,ucharadd,uchardate)*功能:顯示2位十進(jìn)制數(shù),如果要讓第一行,第五個(gè)字符開始顯示"23",調(diào)用該函數(shù)如下 write_sfm1(1,5,23)*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無***********************************************************************/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); }/*********************************************************************名稱:write_string(ucharhang,ucharadd,uchar*p)*功能:改變液晶中某位的值,如果要讓第一行,第五個(gè)字符開始顯示"abcdef",調(diào)用該函數(shù)如下 write_string(1,5,"abcdef;")*輸入:行,列,需要輸入1602的數(shù)據(jù)*輸出:無***********************************************************************/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)} /*********************************************************************名稱:init_1602()*功能:初始化1602液晶*輸入:無*輸出:無***********************************************************************/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"); }// E309R/*************寫一個(gè)數(shù)據(jù)到對(duì)應(yīng)的地址里***************/voidwrite_ds1302(ucharadd,uchardat){ rst=1; //把復(fù)位線拿高 for(i=0;i<8;i++) { //低位在前 clk=0; //時(shí)鐘線拿低開始寫數(shù)據(jù) io=add&0x01; add>>=1; //把地址右移一位 clk=1; //時(shí)鐘線拿高 } for(i=0;i<8;i++) { clk=0; //時(shí)鐘線拿低開始寫數(shù)據(jù) io=dat&0x01; dat>>=1; //把數(shù)據(jù)右移一位 clk=1; //時(shí)鐘線拿高 } rst=0; //復(fù)位線合低 clk=0; io=0;}/*************從對(duì)應(yīng)的地址讀一個(gè)數(shù)據(jù)出來***************/ucharread_ds1302(ucharadd){ ucharvalue,i; rst=1; //把復(fù)位線拿高 for(i=0;i<8;i++) { //低位在前 clk=0; //時(shí)鐘線拿低開始寫數(shù)據(jù) io=add&0x01; add>>=1; //把地址右移一位 clk=1; //時(shí)鐘線拿高 } for(i=0;i<8;i++) { clk=0; //時(shí)鐘線拿低開始讀數(shù)據(jù) value>>=1; if(io==1) value|=0x80; clk=1; //時(shí)鐘線拿高 } rst=0; //復(fù)位線合低 clk=0; io=0; returnvalue; //返回讀出來的數(shù)據(jù)}/*************把要的時(shí)間年月日都讀出來***************/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]); //讀星期}/*************把要寫的時(shí)間年月日都寫入ds1302里***************/voidwrite_time(){ write_ds1302(0x8e,0x00); //打開寫保護(hù) write_ds1302(write_add[0],miao); //寫秒 write_ds1302(write_add[1],fen); //寫分 write_ds1302(write_add[2],shi); //寫時(shí) write_ds1302(write_add[3],ri); //寫日 write_ds1302(write_add[4],yue); //寫月 write_ds1302(write_add[5],nian); //寫星期 write_ds1302(write_add[6],week); //寫年 write_ds1302(0x8e,0x80); //關(guān)閉寫保護(hù)}/*************把數(shù)據(jù)保存到ds1302RAM中**0-31*************/voidwrite_ds1302ram(ucharadd,uchardat){ add<<=1;//地址是從第二位開始的 add&=0xfe;//把最低位清零是寫的命令 add|=0xc0;//地址最高兩位為1 write_ds1302(0x8e,0x00); write_ds1302(add,dat); write_ds1302(0x8e,0x80);}/*************把數(shù)據(jù)從ds1302RAM讀出來**0-31*************/ucharread_ds1302ram(ucharadd){ add<<=1;//地址是從第二位開始的 add|=0x01;//把最高位置1是讀命令 add|=0xc0;//地址最高兩位為1 return(read_ds1302(add)); }/*************初始化ds1302時(shí)間***************/voidinit_ds1302(){ uchari; rst=0; //第一次讀寫數(shù)據(jù)時(shí)要把IO品拿低 clk=0; io=0; i=read_ds1302ram(30); if(i!=3) { i=3; write_ds1302ram(30,i); write_ds1302(0x8e,0x00); //打開寫保護(hù) for(i=0;i<7;i++) write_ds1302(write_add[i],init_ds[i]); //把最高位值0允許ds1302工作 write_ds1302(0x8e,0x80); //關(guān)寫保護(hù) } write_sfm2(1,0,i);}voidinit_ds1302_io(){ rst=0; //第一次讀寫數(shù)據(jù)時(shí)要把IO品拿低 clk=0; io=0; }/*************定時(shí)器0初始化程序***************/voidinit_1602_ds1302(){// write_sfm2_ds1302(2,3,nian); // write_sfm2_ds1302(2,6,yue); // write_sfm2_ds1302(2,9,ri); write_sfm2_ds1302(1,11,shi); write_sfm2_ds1302(1,14,fen); // write_sfm2_ds1302(1,14,miao);// write_sfm1(1,14,week); }/***********外部中斷0初始化程序****************/voidinit_int0(){ EX0=1; //允許外部中斷0中斷 EA=1; //開總中斷 IT0=1; //外部中斷0負(fù)跳變中斷}/*************定時(shí)器0初始化程序***************/voidtime_init() //定時(shí)器0初始化程序{ EA=1; //開總中斷 TMOD=0X11; //定時(shí)器0、工作方式1 ET0=1; //開定時(shí)器0中斷 TR0=1; //允許定時(shí)器0定時(shí) ET1=1; //開定時(shí)器1中斷 TR1=1; //允許定時(shí)器1定時(shí)}/***********計(jì)算速度函數(shù)**************/voidmenu_dis() //計(jì)算速度函數(shù){ staticucharvalue; if(menu_1==0) { if(flag_1s==1) { flag_1s=0; if(flag_en==0) { value++; if(value>=3) //2秒 { speed_km=0;//速度為0 shudu=(uint)speed_km; value=0; } } if((flag_en==1)) { value=0; flag_en=0; //1s=1/1000000us; //1m/s=0.001km除以1/3600h=3.6km/h f_hz=(t2_num*65536.0+TH11*256+TL11)/1000000;//算出來就是秒 t2_num=0; //把變量清零 TH11=0; TL11=0; speed_m=f_hz*zhijing*3.14; //算出來的是m/s juli_z=(juli_z+(uint)speed_m);//總路程m speed_km=speed_m*3.6; //(帶個(gè)小數(shù)點(diǎn))km/s shudu=(uint)speed_km; zong_lc+=speed_m; } write_sfm2(1,3,shudu); write_sfm4(2,3,juli_z); } }}/********************獨(dú)立按鍵程序*****************/ucharkey_can; //按鍵值voidkey() //獨(dú)立按鍵程序{ staticucharkey_new; key_can=20;//按鍵值還原 P3|=0x78;//對(duì)應(yīng)的按鍵IO口輸出為1 if((P3&0x78)!=0x78) //按鍵按下 { delay_1ms(1); //按鍵消抖動(dòng) if(((P3&0x78)!=0x78)&&(key_new==1)) { //確認(rèn)是按鍵按下 key_new=0; switch(P3&0x78) { case0x70:key_can=4;break; //得到按鍵值 case0x68:key_can=3;break; //得到按鍵值 case0x58:key_can=2;break; //得到按鍵值 case0x38:key_can=1;break; //得到按鍵值 }// write_sfm2(1,0,key_can); //顯示按鍵值 } } else key_new=1; }/**********************設(shè)置函數(shù)************************/voidkey_with(){ 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í)間寫進(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);//顯示 switch(menu_2) //光標(biāo)顯示 { case1:write_guanbiao(1,6,1);break; case2:write_guanbiao(2,3,1);break; } } if(menu_1==3) { if(key_can==3) //加 { s_zhijing++; if(s_zhijing>=999) s_zhijing=999; } if(key_can==4) //減 { if(s_zhijing!=0) s_zhijing--; } zhijing=s_zhijing; write_sfm2(2,5,s_zhijing); //顯示 }}/****************報(bào)警函數(shù)***************/voidclock_h_l(){ staticucharvalue; if((shudu>=bj_shudu)) { value++;//消除實(shí)際距離在設(shè)定距離左右變化時(shí)的干擾 { beep=~beep; //蜂鳴器報(bào)警 } } else { beep=1; } }/******************主程序**********************/ voidmain(){// beep=0; delay_1ms(200); P0=P1=P2=P3=0xff;//IO口初始為電平 init_ds1302_io(); init_ds1302(); init_1602();//1602初始化 init_int0(); time_init(); //定時(shí)器0初始化程序 while(1) { //shudu=11; key(); //按鍵程序 if(key_can<10) { key_with(); } if(flag_200ms==1) { flag_200ms=0; read_time(); //讀時(shí)間 if(menu_1==0) init_1602_ds1302();//顯示時(shí)鐘 menu_dis(); //計(jì)算速度函數(shù) clock_h_l();//報(bào)警函數(shù) } }}/*********************外部中斷0中斷服務(wù)程序************************/voidint0()interrupt0{ staticucharvalue=1; switch(value) { case0: t1_num=0; //第一次就把變量清零 TH1=0; TL1=0; break; case1: t2_num=t1_num;//保存 TH11=TH1; TL11=TL1; flag_en=1; break; } }/*************定時(shí)器0中斷服務(wù)程序***************/voidtime0_int()interrupt1{ staticucharvalue=1; TH0=0x3c; TL0=0xb0;//50ms value++; if(value%4==0) flag_200ms=1; if(value>=20)//1秒才是一秒鐘的速度 { value=0; flag_1s=1; }}/*************定時(shí)器1中斷服務(wù)程序***************/voidtime1_int()interrupt3{ t1_num++;}參考文獻(xiàn)劉燦軍.實(shí)用傳感器.國防工業(yè)出版社,2004何希才.傳感器及其應(yīng)用.國防工業(yè)出版社,2001刁文興.自行車電子里程表的初步設(shè)計(jì).南京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2004,6:25-28安宗權(quán).電動(dòng)電子車速里程表分頻電路設(shè)計(jì).自動(dòng)化與儀器儀表,2001,5:39-44閻煥忠,王長濤,馬斌.單片機(jī)控制里程轉(zhuǎn)速表的設(shè)計(jì).沈陽建筑工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2002,4:145-148謝自美.電子線路設(shè)計(jì).實(shí)驗(yàn).測(cè)試[M].武漢:華中科技大學(xué)出版社,2000:212-230張福學(xué).傳感器使用電路150例.中國技術(shù)出版社.1992致謝泰山學(xué)院四年的學(xué)習(xí)時(shí)光轉(zhuǎn)瞬即逝,非常感謝一直對(duì)我們悉心教導(dǎo)的各位老師。作為自己的論文指導(dǎo)老師,任崇剛老師在整個(gè)設(shè)計(jì)過程中給予了非常珍貴的建議及指導(dǎo),學(xué)生感激不盡。通過畢業(yè)設(shè)計(jì),自己把四年的理論知識(shí)一步步化為實(shí)踐,對(duì)原來專業(yè)知識(shí)的理解也有了質(zhì)的飛躍。在整個(gè)設(shè)計(jì)的過程中,自己也慢慢意識(shí)到自己在許多方面的軟肋,在獨(dú)立完成畢業(yè)設(shè)計(jì)的過程當(dāng)中,自己也掌握了原來許多沒有學(xué)到的東西,與此同時(shí)也鞏固了自己所學(xué)知識(shí)。通過自己幾個(gè)月的努力,回報(bào)自己的是完成目標(biāo)后滿滿的成就感,也增強(qiáng)自己不斷學(xué)習(xí)的認(rèn)識(shí)。由于自身所學(xué)不足、時(shí)間等因素,設(shè)計(jì)中錯(cuò)誤在所難免,請(qǐng)各位老師給予指導(dǎo)改正。最后,再次向所有幫助和關(guān)心我們的老師表示誠摯的感謝?;贑8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對(duì)良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測(cè)系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬度測(cè)試儀的研制基于單片機(jī)的自動(dòng)找平控制系統(tǒng)研究基于C8051F040單片機(jī)的嵌入式系統(tǒng)開發(fā)基于單片機(jī)的液壓動(dòng)力系統(tǒng)狀態(tài)監(jiān)測(cè)儀開發(fā)模糊Smith智能控制方法的研究及其單片機(jī)實(shí)現(xiàn)一種基于單片機(jī)的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機(jī)沖床數(shù)控系統(tǒng)的研究基于CYGNAL單片機(jī)的在線間歇式濁度儀的研制基于單片機(jī)的噴油泵試驗(yàn)臺(tái)控制器的研制基于單片機(jī)的軟起動(dòng)器的研究和設(shè)計(jì)基于單片機(jī)控制的高速快走絲電火花線切割機(jī)床短循環(huán)走絲方式研究基于單片機(jī)的機(jī)電產(chǎn)品控制系統(tǒng)開發(fā)基于PIC單片機(jī)的智能手機(jī)充電器基于單片機(jī)的實(shí)時(shí)內(nèi)核設(shè)計(jì)及其應(yīng)用研究基于單片機(jī)的遠(yuǎn)程抄表系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的煙氣二氧化硫濃度檢測(cè)儀的研制基于微型光譜儀的單片機(jī)系統(tǒng)單片機(jī)系統(tǒng)軟件構(gòu)件開發(fā)的技術(shù)研究基于單片機(jī)的液體點(diǎn)滴速度自動(dòng)檢測(cè)儀的研制基于單片機(jī)系統(tǒng)的多功能溫度測(cè)量儀的研制基于PIC單片機(jī)的電能采集終端的設(shè)計(jì)和應(yīng)用基于單片機(jī)的光纖光柵解調(diào)儀的研制氣壓式線性摩擦焊機(jī)單片機(jī)控制系統(tǒng)的研制基于單片機(jī)的數(shù)字磁通門傳感器基于單片機(jī)的旋轉(zhuǎn)變壓器-數(shù)字轉(zhuǎn)換器的研究基于單片機(jī)的光纖Bragg光柵解調(diào)系統(tǒng)的研究單片機(jī)控制的便攜式多功能乳腺治療儀的研制基于C8051F020單片機(jī)的多生理信號(hào)檢測(cè)儀基于單片機(jī)的電機(jī)運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)Pico專用單片機(jī)核的可測(cè)性設(shè)計(jì)研究基于MCS-51單片機(jī)的熱量計(jì)基于雙單片機(jī)的智能遙測(cè)微型氣象站MCS-51單片機(jī)構(gòu)建機(jī)器人的實(shí)踐研究基于單片機(jī)的輪軌力檢測(cè)基于單片機(jī)的GPS定位儀的研究與實(shí)現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論