

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 出租車已經(jīng)是城市交通的重要組成部分,從加強(qiáng)行業(yè)管理以及減少司機(jī)與乘客的糾紛出發(fā),具有良好性能的計(jì)價(jià)器對出租車司機(jī)和乘客來說都是很必要的。而采用模擬電路和數(shù)字電路設(shè)計(jì)的計(jì)價(jià)器整體電路的規(guī)模較大,用到的器件多,造成故障率高,難調(diào)試。而采用單片機(jī)進(jìn)行的設(shè)計(jì),相對來說功能強(qiáng)大,用較少的硬件和適當(dāng)?shù)能浖嗷ヅ浜峡梢院苋菀椎貙?shí)現(xiàn)設(shè)計(jì)要求,
2、且靈活性強(qiáng),可以通過軟件編程來完成更多的附加功能。本設(shè)計(jì)的是一個(gè)基于單片機(jī)AT89S52的出租車自動(dòng)計(jì)費(fèi)設(shè)計(jì),附有復(fù)位電路,時(shí)鐘電路,鍵盤電路等。復(fù)位電路是單片機(jī)的初始化操作,除了正常的初始化外,為擺脫困境,通過復(fù)位電路可以重新開始。時(shí)鐘電路采用12MHz的晶振,作為系統(tǒng)的時(shí)鐘源,具有較高的準(zhǔn)確性。</p><p> 在上電時(shí)LED數(shù)碼管顯示最初的起步價(jià),里程收費(fèi),等待時(shí)間收費(fèi)三種收費(fèi)。按暫停鍵,計(jì)價(jià)器可暫停計(jì)
3、價(jià),按查詢鍵,在LED數(shù)碼管上可以顯示運(yùn)行時(shí)等待的時(shí)間。通過計(jì)算可以得出總共的費(fèi)用和總的路程。在這里主要是以AT89S52單片機(jī)為核心控制器,P0口、P2 口接兩片四合一數(shù)碼管,P1口接按鍵,通過按鍵輸入。</p><p> 關(guān)鍵詞:單片機(jī) AT89S52;LED數(shù)碼管;出租車計(jì)費(fèi)器;</p><p><b> 目 錄</b></p><p&g
4、t;<b> 1 概述1</b></p><p> 1.1 課題簡介1</p><p> 1.2 功能要求1</p><p> 2 系統(tǒng)總體方案及硬件設(shè)計(jì)2</p><p> 2.1 系統(tǒng)工作原理及總體方案2</p><p> 2.2 單片機(jī)最小系統(tǒng)單元3</p>
5、;<p> 2.3 霍爾傳感器檢測單元3</p><p> 2.4 鍵盤調(diào)整單元5</p><p> 2.5 顯示單元5</p><p><b> 3 軟件設(shè)計(jì)7</b></p><p> 3.1系統(tǒng)主程序7</p><p> 3.2 按鍵掃描程序8</
6、p><p> 3.3 中斷程序9</p><p> 3.4 計(jì)算程序10</p><p> 3.5 顯示程序10</p><p><b> 4 實(shí)驗(yàn)仿真12</b></p><p> 4.1 Proteus介紹12</p><p> 4.2 調(diào)試與測試1
7、2</p><p> 4.3 里程計(jì)價(jià)測試12</p><p> 5 課程設(shè)計(jì)體會(huì)14</p><p><b> 參考文獻(xiàn)15</b></p><p> 附1:系統(tǒng)原理圖16</p><p> 附2:源程序代碼16</p><p><b>
8、1 概述</b></p><p><b> 1.1 課題簡介</b></p><p> 出租車已經(jīng)是城市交通的重要組成部分,從加強(qiáng)行業(yè)管理以及減少司機(jī)與乘客的糾紛出發(fā),具有良好性能的計(jì)價(jià)器對出租車司機(jī)和乘客來說都是很必要的。為此,我們采用單片機(jī)系統(tǒng)設(shè)計(jì)了一款符合大眾化的計(jì)費(fèi)系統(tǒng)。</p><p> 本方案以At89s52單片機(jī)
9、為中心、配合LED數(shù)碼管,實(shí)現(xiàn)對出租車計(jì)價(jià)統(tǒng)計(jì)。本方案可以實(shí)現(xiàn):</p><p> 1. 系統(tǒng)接收里程傳感器的脈沖輸入,并對脈沖進(jìn)行計(jì)數(shù),繼而轉(zhuǎn)換為里程。</p><p> 2. 采用現(xiàn)行出租車的計(jì)價(jià)系統(tǒng)的計(jì)算方法,并對行駛里程進(jìn)行計(jì)費(fèi),提供友好的用戶界面,并具有發(fā)光二極管指示操作狀態(tài)功能。</p><p><b> 1.2 功能要求</b&g
10、t;</p><p> 利用AT89s52單片機(jī)配合LED數(shù)碼管,實(shí)現(xiàn)基本的出租車計(jì)價(jià)功能,具體設(shè)計(jì)規(guī)格如下:</p><p> 1. 用前4位數(shù)碼管實(shí)時(shí)顯示里程數(shù),單位為公里,最后一位為小數(shù)位;用后4位數(shù)碼管時(shí)時(shí)顯示金額數(shù),單位為元,最后一位為小數(shù)位。</p><p> 2. 規(guī)定出租車單程價(jià)格為2元/公里,往返則價(jià)格為1.5元/公里;單程/往返分別由“單程
11、” 按鍵和“往返” 按鍵設(shè)定。</p><p> 3. 車速<5公里/小時(shí)的時(shí)間累積為總等待時(shí)間T(分鐘),每5分鐘等待時(shí)間相當(dāng)于里程數(shù)增加1公里。</p><p> 4. 起步公里數(shù)為3公里,價(jià)格為5元;若實(shí)際運(yùn)行大于3公里, 按“設(shè)計(jì)任務(wù)2”計(jì)算價(jià)格。</p><p> 5. 到達(dá)目的地后,按“暫?!?鍵,計(jì)價(jià)器可暫停計(jì)價(jià)。</p><
12、p> 6. 按“清除” 鍵,計(jì)價(jià)器能將記錄數(shù)據(jù)(里程、等待時(shí)間與價(jià)格等)自動(dòng)清0。</p><p> 7. 按“查詢”鍵,能自動(dòng)顯示總等待時(shí)間T,再按下該鍵回到顯示里程數(shù)、金額狀態(tài)。</p><p> 8. 擴(kuò)展:空車指示、語音提示、信息存儲(chǔ)等</p><p> 2 系統(tǒng)總體方案及硬件設(shè)計(jì)</p><p> 2.1 系統(tǒng)工作原
13、理及總體方案</p><p> 出租車計(jì)價(jià)器用于記錄里程、等待時(shí)間、是否往返、起步公里數(shù)與價(jià)格的關(guān)系,它能有效地避免司機(jī)與乘客間的矛盾,保障雙方的利益。出租車行駛總路程可以通過車輪的周長乘車輪旋轉(zhuǎn)圈數(shù)得到。即可計(jì)算得到車輪旋轉(zhuǎn)幾周出租車能行駛一公里的路程。因此,使用霍爾傳感器的目的就是方便地計(jì)量車輪旋轉(zhuǎn)的圈數(shù)。可在車輪轉(zhuǎn)盤上粘一個(gè)小磁鋼,當(dāng)轉(zhuǎn)輪轉(zhuǎn)動(dòng)時(shí),霍爾傳感器檢測到磁場及其變化,產(chǎn)生脈沖信號(hào)。輸出的脈沖信號(hào)被
14、接入到AT89S52單片機(jī)系統(tǒng)中,通過計(jì)算接收到的脈沖個(gè)數(shù),計(jì)算出當(dāng)前所行駛的路程。同時(shí),根據(jù)不同的收費(fèi)標(biāo)準(zhǔn),選擇相應(yīng)的起步價(jià)、單價(jià)等收費(fèi)標(biāo)準(zhǔn)進(jìn)行計(jì)算。再配置上鍵盤和數(shù)碼顯示,通過鍵盤能夠?qū)崿F(xiàn)啟動(dòng)、暫停計(jì)價(jià)器、切換顯示當(dāng)前的行駛里程和需支付的車費(fèi)。</p><p> 通過分析,需要實(shí)現(xiàn)四個(gè)主要的功能模塊,分別為脈沖計(jì)數(shù)模塊、定時(shí)器計(jì)時(shí)模塊、按鍵的處理以及數(shù)碼管動(dòng)態(tài)掃描等功能。</p><p&
15、gt; 定時(shí)器計(jì)時(shí)模塊主要完成途中等待(即沒有脈沖來時(shí))30秒的計(jì)時(shí)。在啟動(dòng)鍵按下后,定時(shí)器就不停的計(jì)時(shí),只要有脈沖來就將計(jì)時(shí)的值清除為零。如果沒有脈沖來,當(dāng)計(jì)時(shí)超過30秒時(shí),相應(yīng)的總金額要按照收費(fèi)標(biāo)準(zhǔn)計(jì)價(jià)。</p><p> 中斷的管理:盡管中斷有嵌套以及優(yōu)先級的功能,但是由于定時(shí)器已經(jīng)使用一個(gè)了中斷資源,脈沖檢測不宜再采用中斷方式,而是采用查詢方式。由于需要不停的要清除30秒的計(jì)時(shí),因此,脈沖的計(jì)數(shù)不采用
16、定時(shí)器的計(jì)數(shù)方式。</p><p> 啟動(dòng)鍵觸發(fā)定時(shí)器開始工作,而定時(shí)器的運(yùn)行可以作為脈沖計(jì)數(shù)的標(biāo)志,只要定時(shí)器計(jì)時(shí)在運(yùn)行,每來一個(gè)中斷都應(yīng)該計(jì)數(shù)。</p><p> 主程序完成鍵盤的掃描和按鍵的處理,查詢脈沖產(chǎn)生的中斷,并完成脈沖的計(jì)數(shù)。若每個(gè)脈沖代表1米,則當(dāng)計(jì)數(shù)到1000時(shí)表示1千米的距離,相應(yīng)的總金額要按照收費(fèi)標(biāo)準(zhǔn)計(jì)價(jià)。</p><p> 采用MCS5
17、1系列單片機(jī)AT89S51作為主控制器,外圍電路器件包括數(shù)碼管、獨(dú)立式鍵盤、復(fù)位電路等。</p><p> 模擬出租車計(jì)價(jià)器能根據(jù)總里程數(shù)、總等待時(shí)間長短、是否往返、起步公里數(shù)的情況作出相應(yīng)報(bào)價(jià)等。當(dāng)然實(shí)際的出租車計(jì)價(jià)器還具有打印票據(jù),顯示是否空車等功能??傮w模塊如圖2.1所示。</p><p> 圖2.1 電路的組成部分</p><p> 2.2 單片機(jī)最小
18、系統(tǒng)單元</p><p> 主控機(jī)系統(tǒng)采用了Atmel 公司生產(chǎn)的 AT89S52單片機(jī),它含有256 字節(jié)數(shù)據(jù)存儲(chǔ)器,內(nèi)置8K的電可擦除FLASH ROM,可重復(fù)編程,大小滿足主控機(jī)軟件系統(tǒng)設(shè)計(jì),所以不必再擴(kuò)展程序存儲(chǔ)器。復(fù)位電路和晶振電路是AT89S52工作所需的最簡外圍電路。單片機(jī)最小系統(tǒng)電路圖如圖2.2所示。</p><p> 圖2.2 單片機(jī)最小系統(tǒng)圖</p>
19、<p> 在復(fù)位電路中,按一下復(fù)位開關(guān)就使在RST端出現(xiàn)一段時(shí)間的高電平,外接11.0592M 晶振和兩個(gè)30pF電容組成系統(tǒng)的內(nèi)部時(shí)鐘電路。</p><p> 2.3 霍爾傳感器檢測單元</p><p> Us1881 屬于開關(guān)型的霍爾器件,其工作電壓范圍比較寬(3.5~24V),其輸出的信號(hào)符合TTL電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的IO 端口上,而且其最高檢測頻率可達(dá)到1
20、MHZ。</p><p> Us1881 集成霍耳開關(guān)由穩(wěn)壓器A、霍耳電勢發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D和OC門輸出E五個(gè)基本部分組成。</p><p> 在輸入端輸入電壓Vcc,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾電勢發(fā)生器的兩端,根據(jù)霍爾效應(yīng)原理,當(dāng)霍爾片處在磁場中時(shí),在垂直于磁場的方向通以電流,則與這二者相垂直的方向上將會(huì)產(chǎn)生霍爾電勢差VH輸出,該VH信號(hào)經(jīng)放大器放大后送
21、至施密特觸發(fā)器整形,使其成為方波輸送到OC門輸出。當(dāng)施加的磁場達(dá)到工作點(diǎn)(即Bop)時(shí),觸發(fā)器輸出高電壓(相對于地電位),使三極管導(dǎo)通,此時(shí)OC門輸出端輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態(tài)為關(guān)。這樣兩次電壓變換,使霍爾開關(guān)完成了一次開關(guān)動(dòng)作。</p><p> 圖2.3 霍爾開關(guān)集成傳感器原理圖及其輸出特性 </p><p> 里程計(jì)算是通過安裝在車輪上的霍爾元件檢測到
22、的信號(hào),送到單片機(jī),經(jīng)過處理計(jì)算,送給顯示顯示單元的?;魻杺鞲衅魇且环N磁傳感器。用它可以檢測磁場及其變化,可在各種與磁場有關(guān)的場合中使用?;魻杺鞲衅饕曰魻栃?yīng)為其工作基礎(chǔ),是由霍爾元件和它的附屬電路組成的集成傳感器。霍爾傳感器分為線性型霍爾傳感器和開關(guān)型霍爾傳感器兩種。我們所用的是開關(guān)型霍爾傳感器。其原理圖如圖2.4所示:</p><p> 圖2.4 傳感器測距示意圖</p><p>
23、 我們選擇P3.2口作為信號(hào)輸入端,車輪每轉(zhuǎn)一圈(假設(shè)車輪周長為1米),霍爾開關(guān)就檢測并輸出信號(hào),引起單片機(jī)中斷,對脈沖計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到一千次時(shí),也就是1公里,單片機(jī)就控制金額自動(dòng)增加。</p><p> 2.4 鍵盤調(diào)整單元</p><p> 獨(dú)立式鍵盤:獨(dú)立式鍵盤中,每個(gè)按鍵占用一根I/O口線,每個(gè)按鍵電路相對獨(dú)立。I/O口通過按鍵與地相連,I/O口有上拉電阻,無鍵按下時(shí),引腳端為
24、高電平,有鍵按下時(shí),引腳電平被拉低。I/O口內(nèi)部有上拉電阻時(shí),外部可不接上拉電阻。鍵盤接口電路如圖2.5所示:</p><p> 圖2.5 鍵盤接口電路 </p><p> S1:接P1.0口,對上一次的計(jì)費(fèi)進(jìn)行清零,為下次載客準(zhǔn)備。</p><p> S2:接P1.1口,能自動(dòng)顯示總等待時(shí)間T,再按下該鍵回到顯示里程數(shù)、金額狀態(tài)。</p>&l
25、t;p> S3:接P1.2口,選擇是按單程計(jì)費(fèi)還是雙程計(jì)費(fèi)。</p><p> S4:接P1.3口,可以暫停計(jì)費(fèi),方便乘客結(jié)賬。 </p><p> 2.5 顯示單元 </p><p> 對于現(xiàn)實(shí)電路我們可以采用數(shù)碼管,也可以采用液晶顯示。LED數(shù)碼管特點(diǎn)有:壽命長、成本低、亮度高、故障少、視角大、可視距離遠(yuǎn)等,但其顯示內(nèi)容有限。液晶顯示的特點(diǎn)有:顯
26、示內(nèi)容豐富等,但其驅(qū)動(dòng)復(fù)雜,成本高;外部光線強(qiáng)時(shí),可視距離近。綜合考慮,本次設(shè)計(jì)采用LED數(shù)碼管。顯示電路如圖2.6所示:</p><p><b> 圖2.6 顯示電路</b></p><p><b> 3 軟件設(shè)計(jì)</b></p><p> 軟件是單片機(jī)系統(tǒng)的靈魂,根據(jù)設(shè)計(jì)的要求,在本系統(tǒng)中本系統(tǒng)軟件中包括下面程序
27、模塊:</p><p> 主程序: 初始化系統(tǒng)涉及到的硬件模塊,掃描鍵盤,根據(jù)按鍵啟動(dòng)/停止里程測量,實(shí)時(shí)更新單價(jià)、里程、等待時(shí)間、費(fèi)用等信息顯示。 </p><p> 按鍵掃描程序:掃描按鍵,返回掃描結(jié)果。</p><p> 計(jì)算程序:將傳感器發(fā)出脈沖數(shù)轉(zhuǎn)換為公里數(shù),并根據(jù)規(guī)則計(jì)算對應(yīng)的費(fèi)用。</p><p> 顯示子程序:將計(jì)算程
28、序得到的數(shù)據(jù)反映到數(shù)碼顯示管上。</p><p> 中斷程序:監(jiān)測行駛速度,統(tǒng)計(jì)等待時(shí)間。</p><p> 現(xiàn)在應(yīng)用更廣泛的是單片機(jī)C語言,因其簡單明了,故此次課程設(shè)計(jì)采用單片機(jī)C語言編程。</p><p><b> 3.1系統(tǒng)主程序</b></p><p> 在主程序模塊中,需要完成對各參量和接口的初始化、出
29、租車起價(jià)和單價(jià)的初始化以及中斷、計(jì)算、循環(huán)等工作。 </p><p> 當(dāng)汽車運(yùn)行起來時(shí),就啟動(dòng)計(jì)價(jià),根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷行駛里程是否已超過起步價(jià)公里數(shù)。若已超過,則根據(jù)里程值、每公里的單價(jià)數(shù)和起步價(jià)數(shù)來計(jì)算出當(dāng)前的總金額,并將結(jié)果存于總金額寄存器中;中途等待時(shí),無脈沖輸入,不產(chǎn)生中斷,當(dāng)
30、時(shí)間超過等待設(shè)定值時(shí),開始進(jìn)行計(jì)時(shí),并把等待價(jià)格加到總金額里,然后將總金額、里程和單價(jià)、往返價(jià)格送數(shù)碼管顯示出來。程序流程如圖3.1所示:</p><p> 圖3.1 主程序流程</p><p> 3.2 按鍵掃描程序</p><p> 鍵盤實(shí)質(zhì)上是一組按鍵開關(guān)的集合,均利用機(jī)械觸點(diǎn)的合、斷作用。按鍵在閉合及斷開的瞬間均伴隨有一連串的抖動(dòng),抖動(dòng)反應(yīng)在電壓上就是
31、呈現(xiàn)出高電平或低電平,為了確保CPU對一次按鍵動(dòng)作只確認(rèn)一次,必須消除抖動(dòng)的影響。去抖通常有硬件去抖和軟件去抖兩種方法,本程序使用軟件延時(shí)去抖。 </p><p> 圖3.2 按鍵抖動(dòng)信號(hào)波形</p><p> 對于獨(dú)立式鍵盤判鍵,首先看有鍵按下不,如果有鍵按下則延時(shí)一會(huì)兒,在判斷是否真的有鍵按下,如果確實(shí)有鍵按下,再判鍵釋放,最后執(zhí)行鍵功能程序。判鍵子函數(shù)的流程框圖如圖3.3所示:&
32、lt;/p><p> 圖3.3 判鍵子程序流程圖</p><p> 3.3 中斷程序 </p><p> 每當(dāng)霍爾傳感器輸出一個(gè)低電平信號(hào)就使單片機(jī)中斷一次,當(dāng)里程計(jì)數(shù)器對里程脈沖計(jì)滿1500次時(shí),進(jìn)入里程計(jì)數(shù)中斷服務(wù)程序中,里程變量加一。主函數(shù)中總金額也相應(yīng)地變化。在中途等待中斷程序中,每1ms產(chǎn)生一次中斷,將由當(dāng)前里程計(jì)算出速度值送入某個(gè)緩存變量。把當(dāng)前速度
33、值與預(yù)先設(shè)定的速度值相</p><p> 比較,當(dāng)小于設(shè)定的車速時(shí),進(jìn)入等待計(jì)時(shí)。等待時(shí)間5分鐘相當(dāng)于里程增加一公里。流程如圖3.4所示:</p><p><b> 圖3.4 中斷流程</b></p><p><b> 3.4 計(jì)算程序</b></p><p> 計(jì)算程序根據(jù)里程數(shù)分別進(jìn)入不
34、同的計(jì)算公式。如果里程大于3公里,則執(zhí)行公式:總金額=起步價(jià)+(里程-3)*單價(jià);否則,執(zhí)行公式:總金額=起步價(jià)。程序流程如3.5所示:</p><p> 圖3.5 計(jì)算程序流程</p><p><b> 3.5 顯示程序</b></p><p> 程序利用定時(shí)器每1ms產(chǎn)生一次中斷,相應(yīng)變量置位,點(diǎn)亮一個(gè)數(shù)碼管,顯示一位數(shù)據(jù),利用主函數(shù)
35、內(nèi)的循環(huán),實(shí)現(xiàn)動(dòng)態(tài)掃描顯示,同時(shí)根據(jù)數(shù)碼管余輝和人眼暫留現(xiàn)象,即可實(shí)現(xiàn)顯示。</p><p> {0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段碼表示0-9</p><p> 圖3.6 顯示子程序流程</p><p><b> 4 實(shí)驗(yàn)仿真</b></p>
36、<p> 4.1 Proteus介紹</p><p> Proteus軟件是來自英國Labcenter electronics公司的EDA工具軟件,它組合了高級原理布圖、混合模式SPICE仿真,PCB設(shè)計(jì)以及自動(dòng)布線來實(shí)現(xiàn)一個(gè)完整的電子設(shè)計(jì)系統(tǒng)。此系統(tǒng)受益于15年來的持續(xù)開發(fā),被《電子世界》在其對PCB設(shè)計(jì)系統(tǒng)的比較文章中評為最好產(chǎn)品—“The Route to PCB CAD”。Proteus 產(chǎn)
37、品系列也包含了我們革命性的VSM技術(shù),用戶可以對基于微控制器的設(shè)計(jì)連同所有的周圍電子器件一起仿真。用戶甚至可以實(shí)時(shí)采用諸如LED/LCD、鍵盤、RS232終端等動(dòng)態(tài)外設(shè)模型來對設(shè)計(jì)進(jìn)行交互仿真。</p><p> 其功能模塊:—個(gè)易用而又功能強(qiáng)大的ISIS原理布圖工具;PROSPICE混合模型SPICE仿真;ARES PCB設(shè)計(jì)。PROSPICE 仿真器的一個(gè)擴(kuò)展PROTEUS VSM:便于包括所有相關(guān)的器件的
38、基于微處理器設(shè)計(jì)的協(xié)同仿真。此外,還可以結(jié)合微控制器軟件使用動(dòng)態(tài)的鍵盤,開關(guān),按鈕,LEDs甚至LCD顯示CPU模型。支持許多通用的微控制器,如PIC,AVR,HC11以及8051。最新支持ARM。交互的裝置模型包括:LED和LCD顯示,RS232終端,通用鍵盤,I2C,SPI器件。強(qiáng)大的調(diào)試工具,包括寄存器和存儲(chǔ)器,斷點(diǎn)和單步模式。IAR C-SPY 和Keil uVision2等開發(fā)工具的源層調(diào)試。應(yīng)用特殊模型的DLL界面-提供有關(guān)
39、元件庫的全部文件。</p><p><b> 4.2 調(diào)試與測試</b></p><p> 采用KeilC51編譯器進(jìn)行源程序編譯及仿真調(diào)試,同時(shí)進(jìn)行硬件電路板的設(shè)計(jì)制作。硬件電路制作完畢,用萬用表檢測有無短路開路等現(xiàn)象,確定硬件電路沒有問題后,用仿真頭與硬件電路相連,運(yùn)行程序進(jìn)行調(diào)試。</p><p> 若調(diào)試不成功,則可再單獨(dú)調(diào)試程序
40、和硬件電路。程序用軟件仿真運(yùn)行,硬件電路再次檢查有無焊錯(cuò),或者元件與插座接觸不良等方面問題;確認(rèn)均無問題后,再次把軟件和硬件聯(lián)機(jī)調(diào)試,直至功能正常。把程序燒錄進(jìn)單片機(jī)STC89C52結(jié)束調(diào)試。</p><p> 4.3 里程計(jì)價(jià)測試</p><p> 由于實(shí)驗(yàn)條件的限制,我們采用霍爾傳感器產(chǎn)生外部中斷,設(shè)定中斷間隔為10ms,假定1500個(gè)脈沖為1公里,則此時(shí)車速為1km/h=5圈/S
41、。整個(gè)系統(tǒng)以此為基礎(chǔ),通過計(jì)費(fèi)程序完成中金額的計(jì)算。表4.1的測試條件是:假設(shè)單程的單價(jià)是2元,起步價(jià)為5元(包含3公里),分別不公里程測試得數(shù)據(jù)如表:</p><p> 表4.1 實(shí)際金額和里程數(shù)</p><p> 表4.2的測試條件是:假設(shè)在單程運(yùn)行中的單價(jià)2元的情況下行駛了6km,進(jìn)行中途等待,分別等待不同的時(shí)間(每5分鐘相當(dāng)于增加1公里),起步價(jià)為5元(包含3km)。</
42、p><p> 表4.2 總金額對比</p><p><b> 5 課程設(shè)計(jì)體會(huì)</b></p><p> 出租車計(jì)費(fèi)器系統(tǒng)的設(shè)計(jì)已經(jīng)全部完成,能按預(yù)期的效果進(jìn)行模擬汽車啟動(dòng),停止,暫停等功能并能夠通過數(shù)碼管顯示車費(fèi)數(shù)目。本款出租車計(jì)價(jià)器包括單價(jià)輸出、單價(jià)調(diào)整、顯示當(dāng)前的行駛里程等功能。另外,多功能出租車計(jì)價(jià)器還具有性能可靠、電路簡單、成本低、
43、實(shí)用性強(qiáng)等特點(diǎn),加上經(jīng)過優(yōu)化的程序,使其有很高的智能化水平。</p><p> 一個(gè)月來,經(jīng)過自己努力,基本上完成了設(shè)計(jì)要求的內(nèi)容,在系統(tǒng)可行性分析、原理圖設(shè)計(jì)等方面都作了許多實(shí)際工作,取得了一些成績,同時(shí)也遇到了一些問題,存在一些不足。經(jīng)過這一個(gè)月的學(xué)習(xí),我覺得自己不論是在理論知識(shí)方面還是在動(dòng)手能力方面都有了不小的進(jìn)步,自己從中受益匪淺。這次設(shè)計(jì)很好的把以前學(xué)到的理論知識(shí)應(yīng)用于實(shí)踐,使我認(rèn)識(shí)到理論知識(shí)與實(shí)踐之
44、間有一定的差距,只有通過不斷的努力學(xué)習(xí)和實(shí)踐才能很好的把理論知識(shí)應(yīng)用到實(shí)踐當(dāng)中,也只有通過不斷的實(shí)踐才能對理論知識(shí)的理解。</p><p> 通過這次設(shè)計(jì)不僅學(xué)會(huì)了如何去查找相關(guān)資料,更重要的是通過查找資料和翻閱書籍學(xué)到了不少知識(shí),擴(kuò)大了知識(shí)面,提高了知識(shí)水平。經(jīng)過單元設(shè)計(jì)和系統(tǒng)設(shè)計(jì)鞏固了以前所學(xué)的專業(yè)知識(shí),自己真正認(rèn)識(shí)到理論聯(lián)系實(shí)際的重要性,為以后的學(xué)習(xí)和工作提供了很多有價(jià)值的經(jīng)驗(yàn)。通過這次設(shè)計(jì)不僅增強(qiáng)了自己
45、的動(dòng)腦能力和動(dòng)手能力,也提高了我思考問題、分析問題、解決問題的能力,更重要的是學(xué)會(huì)用工程化的思想來解決問題。這在以前的學(xué)習(xí)過程中是不曾學(xué)到的。并且這次設(shè)計(jì)還使我認(rèn)識(shí)到完整、嚴(yán)謹(jǐn)、科學(xué)分析問題、解決問題的思想是多么的重要,只有擁有了科學(xué)的態(tài)度才能設(shè)計(jì)出有用的產(chǎn)品。。</p><p> 為了使我們設(shè)計(jì)的系統(tǒng)更具人性化,電機(jī)的啟動(dòng),使用了手動(dòng)開關(guān)按鍵,使用起來比較方便。</p><p> 通
46、常在不同的方式,不同的情況下都會(huì)有不同的收費(fèi)標(biāo)準(zhǔn);單程、白天和中途等待,考慮后首選用開關(guān)來實(shí)現(xiàn)這些切換功能,簡單方便,同時(shí)顯示器會(huì)顯示相應(yīng)的指示。最大的方便了司機(jī)的計(jì)費(fèi)控制。并且能根據(jù)市場經(jīng)濟(jì)的變化而發(fā)生相應(yīng)的跳動(dòng)計(jì)價(jià)。</p><p> 但是在設(shè)計(jì)和調(diào)試的過程中,也發(fā)現(xiàn)了一些問題,譬如計(jì)價(jià)的金額數(shù)有限,實(shí)際的里程可能會(huì)很遠(yuǎn),會(huì)超出實(shí)際的顯示范圍;計(jì)價(jià)過程出現(xiàn)突然斷電時(shí)如何處理這些問題,因此對此方案還可以進(jìn)行進(jìn)
47、一步改進(jìn),如:實(shí)現(xiàn)白天、晚上計(jì)費(fèi)自動(dòng)切換和具有記憶功能,也可以加上語音提示功能,防作弊功能等,這樣可能會(huì)更讓乘客放心乘坐出租車,并得到廣泛的應(yīng)用。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 譚浩強(qiáng)著. C程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社, 2005</p><p> [2] 余發(fā)山、王福忠編著.單片機(jī)原理
48、及應(yīng)用技術(shù)[M].中國礦業(yè)大學(xué)出版社,2008.6</p><p> [3] 賈宗璞、許合利.C語言程序設(shè)計(jì)[M].中國礦業(yè)大學(xué)出版社,2007.2</p><p> [4] 孫余凱.傳感器應(yīng)用電路300例[M]. 北京:電子工業(yè)出版社, 2008.</p><p> [5] 田立. 51單片機(jī)C語言程序設(shè)計(jì)快速入門[M]. 北京:人民郵電出版社, 2007&
49、lt;/p><p> [6] 霍爾傳感器原理及其應(yīng)用</p><p> 附1:系統(tǒng)原理圖 </p><p><b> 附2:源程序代碼</b></p><p> #include<reg52.h></p><p> #define uchar unsigned char<
50、/p><p> #define uint unsigned int</p><p> uchar qianwei,baiwei,shiwei,gewei; //顯示數(shù)據(jù)各個(gè)位置數(shù)字的臨時(shí)變量</p><p> char led_seg_code[10]={0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6
51、f};//段碼表示0-9</p><p> uint tt,aa,round,distance,cost,price,wait;//定義路程、價(jià)錢、等待時(shí)間及一些全局的變量等;</p><p> uchar dengdai,second,minute;</p><p> unsigned long wait_ten_ms;//記錄等待時(shí)間多少個(gè)10m
52、s</p><p> //按鍵的定義,所有按鍵按下去為低電平</p><p> sbit key0=P1^0; //清零</p><p> sbit key1=P1^1; //切換路程與等待時(shí)間</p><p> sbit key2=P1^2;
53、 //單程還是往返設(shè)置</p><p> sbit key3=P1^3; //暫停按鈕</p><p> sbit led1=P3^6;// 雙程 </p><p> sbit led2=P4^7;// 暫停</p><p> sbit led3=P5^4;// 堵車</p>
54、<p> sbit led4=P6^5; // 切換</p><p> bit key1_flag;//由于按鍵會(huì)自動(dòng)復(fù)位,這個(gè)為標(biāo)志位</p><p> bit key2_flag;</p><p> bit key3_flag;</p><p> bit flag;</p>
55、<p><b> //初始化函數(shù)</b></p><p> void initial_data(void)</p><p><b> {</b></p><p> distance=0;</p><p><b> cost=0;</b></p>
56、<p><b> second=0;</b></p><p><b> minute=0;</b></p><p> wait_ten_ms=0;</p><p> key1_flag=1; //</p><p> key2_flag=0; //單程or往返,接指示燈
57、;</p><p> key3_flag=1; //暫停,接指示燈;</p><p><b> flag=0;</b></p><p><b> round=0;</b></p><p> dengdai=0;</p><p> led1=1; //雙程指示
58、</p><p> led2=1; //暫停指示</p><p> led3=1; //堵車指示</p><p> led4=1; // 等待時(shí)間切換標(biāo)志</p><p><b> }</b></p><p><b> //暫停程序</b></p&
59、gt;<p> void zanting(void)</p><p><b> {</b></p><p> if(key3_flag) </p><p><b> {</b></p><p> EX0=0; //關(guān)閉中斷和定時(shí)器</p>&
60、lt;p><b> TR0=0;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> EX0=1;</b></
61、p><p><b> TR0=1;</b></p><p><b> }</b></p><p> key3_flag=!key3_flag;</p><p><b> }</b></p><p><b> //計(jì)算數(shù)據(jù)處理 </b
62、></p><p> void jisuan()</p><p><b> {</b></p><p> distance=round/60+wait_ten_ms/3000;//車輪轉(zhuǎn)60圈為100m,等待時(shí)間30s為100m</p><p> if(distance<=30) &
63、lt;/p><p> cost=50; </p><p> price=20; //單程價(jià)格 </p><p> if(key2_flag)price=15; //往返價(jià)格 </p><p> if(distance>30)</
64、p><p> cost=price*(distance-30)/10+50;</p><p> wait=minute*100+second;</p><p><b> }</b></p><p> //顯示的輔助程序,分離一個(gè)數(shù)的各個(gè)數(shù)字</p><p> void fenli(uint
65、 temp) //數(shù)據(jù)的分離處理 </p><p><b> {</b></p><p> if(temp>9999) temp=9999;</p><p> qianwei=temp/1000;</p><p> baiwei=temp/100%10;</p><p> shi
66、wei=temp%100/10;</p><p> gewei=temp%10; </p><p><b> }</b></p><p> //延時(shí)約1ms,數(shù)碼管顯示時(shí)使用</p><p> void diplay_delay(void) </p><p>
67、<b> {</b></p><p><b> uint i;</b></p><p> for(i=0;i<290;i++);</p><p><b> }</b></p><p><b> //顯示程序;</b></p>
68、<p> void led_show()</p><p><b> {</b></p><p> //-----顯示路程或者等待時(shí)間----</p><p> if(key1_flag) fenli(distance);</p><p> else fenli(wait);</p>
69、<p> P2=0xfe; </p><p> P0=led_seg_code[gewei];</p><p> diplay_delay();</p><p><b> P2=0xfd;</b></p><p> if(key1_flag) P0=led_seg_code[shiwei]|0
70、x80; //如果是路程,點(diǎn)亮小數(shù)點(diǎn)兒</p><p> else P0=led_seg_code[shiwei]; //如果是時(shí)間,不需要點(diǎn)亮小數(shù)點(diǎn)兒</p><p> diplay_delay();</p><p><b> P2=0xfb;</b></p><p> if(key1_fl
71、ag) P0=led_seg_code[baiwei];</p><p> else P0=led_seg_code[baiwei]|0x80; </p><p> diplay_delay();</p><p><b> P2=0xf7;</b></p><p> P0=led_seg
72、_code[qianwei];</p><p> diplay_delay();</p><p> //-----顯示價(jià)格----</p><p> fenli(cost);</p><p><b> P2=0xef;</b></p><p> P0=led_seg_code[gewei
73、];</p><p> diplay_delay();</p><p><b> P2=0xdf;</b></p><p> P0=led_seg_code[shiwei]|0x80;</p><p> diplay_delay();</p><p><b> P2=0xbf;
74、</b></p><p> P0=led_seg_code[baiwei];</p><p> diplay_delay();</p><p><b> P2=0x7f;</b></p><p> P0=led_seg_code[qianwei];</p><p> dipl
75、ay_delay();</p><p><b> P2=0xff;</b></p><p><b> }</b></p><p> //延時(shí)時(shí)基為1ms</p><p> void delay(uint x) </p><p&
76、gt;<b> {</b></p><p><b> int i,j;</b></p><p> for(i=x;i>0;i--)</p><p> for(j=340;j>0;j--);</p><p><b> }</b></p><
77、;p><b> //鍵盤的掃描</b></p><p> void keyscan()</p><p> { if(key1==0) // 按鍵消抖并判斷按下去的次數(shù)為基數(shù)還是偶數(shù) </p><p> { delay(5);</p><p>
78、 if(key1==0)</p><p> key1_flag=!key1_flag;</p><p> while(!key1)led_show();</p><p><b> delay(5);</b></p><p> while(!key1)led_show(); </p><p
79、><b> }</b></p><p> if(key0==0) // 清零 </p><p> { delay(5);</p><p> if(key0==0)</p><p> initial_data();</p><
80、p><b> }</b></p><p> if(key3==0) // 暫停 </p><p> { delay(5);</p><p> if(key3==0)</p><p> zanting();</p><p>
81、; while(!key3)led_show();</p><p><b> delay(5);</b></p><p> while(!key3)led_show();</p><p><b> }</b></p><p> if(key2==0) // 單程還是往返
82、 </p><p> { delay(5);</p><p> if(key2==0) </p><p> key2_flag=!key2_flag;</p><p> while(!key2)led_show();</p><p><b> delay
83、(5);</b></p><p> while(!key2)led_show();</p><p><b> }</b></p><p><b> //指示燈掃描</b></p><p> led1=!key2_flag; // 指示,單程還是往返,燈低電平點(diǎn)亮; 往返亮;&
84、lt;/p><p> led2=key3_flag; // 指示,暫停時(shí)亮;</p><p> led3=flag; // 指示是否等待;</p><p> led4=key1_flag; //切換指示,顯示路程還是等待時(shí)間;</p><p> diplay_delay(); </p><
85、p><b> }</b></p><p> //中斷及定時(shí)器初始化 </p><p> void initial_time() </p><p><b> {</b></p><p> TMOD=0x01; //工作在模式1</p><p>
86、TH0=(65536-10000)/256;</p><p> TL0=(65536-10000)%256;</p><p><b> IE=0x83;</b></p><p> IT0=1; //外部邊沿觸發(fā)方式 </p><p><b> TR0=1;</b></p>
87、<p><b> }</b></p><p> // 中斷記錄脈沖數(shù)</p><p> void zd() interrupt 0 //中斷0</p><p><b> {</b></p><p><b> aa++;</b></p>&
88、lt;p> if(flag)round++; </p><p><b> }</b></p><p> //********* 定時(shí)器 ********</p><p> void time0() interrupt 1 //定時(shí)0</p><p><b> {</b>&
89、lt;/p><p> TH0=(65536-10000)/256; //10ms</p><p> TL0=(65536-10000)%256;</p><p><b> tt++;</b></p><p> if(tt>=100) //1s采樣</p><p><b
90、> {</b></p><p><b> tt=0;</b></p><p> aa=aa/5; //速度(n*圈/s)</p><p> if(aa<=5) flag=0;</p><p> else flag=1; </p>
91、<p><b> aa=0;</b></p><p><b> }</b></p><p><b> if(!flag)</b></p><p><b> { </b></p><p> wait_ten_ms++;</p>
92、<p> dengdai++;</p><p> if(dengdai==100)</p><p> { dengdai=0;</p><p><b> second++;</b></p><p> if(second==60)</p><p><b> { &
93、lt;/b></p><p><b> minute++;</b></p><p><b> second=0;</b></p><p><b> }</b></p><p><b> } </b></p><p
94、><b> }</b></p><p><b> }</b></p><p> //主程序 </p><p> void main(void)</p><p><b> {</b></p><p>
95、 initial_data(); //初始化數(shù)據(jù)</p><p> initial_time(); //初始化定時(shí)器</p><p><b> while(1)</b></p><p><b> {</b></p><p> keyscan();<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)--出租車計(jì)價(jià)器
- 單片機(jī)課程設(shè)計(jì)---出租車計(jì)價(jià)器
- 單片機(jī)課程設(shè)計(jì)--出租車計(jì)價(jià)器
- 單片機(jī)課程設(shè)計(jì)出租車計(jì)價(jià)器
- 單片機(jī)課程設(shè)計(jì)----出租車計(jì)價(jià)器
- 單片機(jī)課程設(shè)計(jì)-出租車計(jì)價(jià)器
- 單片機(jī)課程設(shè)計(jì)--出租車計(jì)價(jià)器
- 單片機(jī)課程設(shè)計(jì)--出租車計(jì)價(jià)器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---出租車計(jì)價(jià)器設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)論文---出租車計(jì)價(jià)器
- 課程設(shè)計(jì)---基于51單片機(jī)的出租車計(jì)價(jià)器
- 課程設(shè)計(jì)--基于單片機(jī)的出租車計(jì)價(jià)器的設(shè)計(jì)
- 基于單片機(jī)的出租車計(jì)價(jià)器的設(shè)計(jì)(課程設(shè)計(jì))
- 畢業(yè)設(shè)計(jì)(論文)-單片機(jī)課程設(shè)計(jì)出租車計(jì)價(jià)器
- 基于單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)
- 基于單片機(jī)的出租車計(jì)價(jià)器
- 出租車計(jì)價(jià)器課程設(shè)計(jì)
- 出租車計(jì)價(jià)器課程設(shè)計(jì)
- 出租車計(jì)價(jià)器課程設(shè)計(jì)
- 出租車計(jì)價(jià)器課程設(shè)計(jì)
評論
0/150
提交評論