<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 新型出租車(chē)計價(jià)器軟件功能分析與實(shí)現

新型出租車(chē)計價(jià)器軟件功能分析與實(shí)現

作者: 時(shí)間:2011-06-16 來(lái)源:網(wǎng)絡(luò ) 收藏


2 計程
2.1 計程原理與設計
將安裝在車(chē)輛變速箱輸出端齒輪的霍爾傳感器接到單片機外部中斷接口上,車(chē)輪每轉動(dòng)一圈,霍爾傳感器將產(chǎn)生一個(gè)下降沿脈沖(霍爾脈沖),觸發(fā)外部中斷。設車(chē)輪直徑0.6 m,最高時(shí)速200 km/h,則兩次外部中斷之間最短時(shí)間間隔為:0.6×3.14/(200×1 000/3 600)×1 000=33.9 ms。
對單片機而言,所有計價(jià)、計時(shí)、顯示、統計等,都可在33.9 ms時(shí)間內完成,所以對計程部分采用每次外部中斷到來(lái)時(shí)(F_int0= 1),調用外部中斷處理程序來(lái)處理計程價(jià)。具體流程如圖1所示。
設計一個(gè)占5字節的計程單元S,車(chē)輪周長(cháng)占3 B,每1 B存儲內容如表3所示。對計程價(jià)每100 m處理1次,所以在計程計子程序中首先是讓計程單元加上車(chē)輪周長(cháng),判斷是否已行駛100 m。從表3可以看出,做加法計算時(shí)如果第3字節有向第4字節進(jìn)位,說(shuō)明已經(jīng)行駛了100 m,這時(shí)再判斷計程單元的大小,判斷是起步價(jià),還是3~8 km的短途價(jià)或是8 km以上的長(cháng)途價(jià),繼而再根據時(shí)間判斷是夜班還是白班,加上不同的計價(jià)參數。

本文引用地址:http://dyxdggzs.com/article/172674.htm

c.JPG


2.2 計程誤差
因為在計程時(shí)用的是每來(lái)一個(gè)霍爾脈沖加一個(gè)車(chē)輪周長(cháng)的方法,車(chē)輪周長(cháng)誤差的累積將引起總計程的系統誤差。車(chē)輪周長(cháng)用3 B壓縮BCD碼表示,1 B整數(單位:m),2 B小數,每次系統誤差為10-4m,相對誤差小于0.01%。
假設最大計程1000km,車(chē)輪周長(cháng)1.5m,則計程最大系統誤差為:(1 000×1 000/1.5)×10-4=66.7m,偶然誤差為2個(gè)周長(cháng),即3.0m。
對計程價(jià)每100 m加1次,即計程誤差小于1個(gè)計價(jià)單位。

3 誤時(shí)
3.1 誤時(shí)原理與設計
誤時(shí)價(jià)的計算是以Vwait=5 km/h為切換點(diǎn),當速度低于5 km/h時(shí),需要計算誤時(shí)價(jià)。已知:速度=周長(cháng)/時(shí)間間隔。為了判斷速度,開(kāi)啟單片機定時(shí)器來(lái)計算兩次霍爾脈沖的時(shí)間間隔。為了計算方便,對于51單片機開(kāi)設50 ms的定時(shí)器中斷。特別設計一個(gè)占5 B的總誤時(shí)單元,3 B的計時(shí)單元。這里第3字節存儲的是50 ms中斷的次數,具體存儲內容如表4所示。其中總誤時(shí)單元存儲的是總的誤時(shí)時(shí)間,計時(shí)單元專(zhuān)門(mén)存儲霍爾脈沖間隔。

d.JPG


當行駛速度為5 km/h時(shí),這時(shí)霍爾脈沖的時(shí)間間隔為:0.6×3.14/(5×1 000/3 600)×1 000=1 356.48≈27×50 ms。
根據上面計算,在兩次霍爾脈沖之間,50 ms中斷的次數大于27時(shí),要計算誤時(shí)價(jià)。而對誤時(shí)價(jià)是10s處理1次,即調用1次誤時(shí)價(jià)子程序,這時(shí)分兩種情況:
第一種情況是在外部中斷處理程序中。外部中斷到來(lái)(F_int0=1)后,計時(shí)單元中50 ms次數大于27,這時(shí)總誤時(shí)單元要加上計時(shí)單元,總誤時(shí)單元的50 ms次數如果大于或等于200,則調用誤時(shí)價(jià)子程序。還要注意的是,因為中斷到來(lái)后,定時(shí)器會(huì )重新賦初值,所以需要把上一次定時(shí)器中不足50 ms的計數值轉換為微秒,存儲到計時(shí)單元的第1和第2個(gè)字節中。流程圖如圖1所示。
第二種情況是在50 ms中斷處理程序中。計時(shí)單元50 ms中斷次數已達到200次即兩次霍爾脈沖的間隔超過(guò)了10 s,這時(shí)計時(shí)單元清零,也要調用誤時(shí)價(jià)子程序。流程圖如圖2所示。

f.JPG


誤時(shí)價(jià)子程序里先將總誤時(shí)的10 s單元加1,然后判斷有沒(méi)有超過(guò)起價(jià)等待時(shí)間,如果超過(guò)的話(huà),再根據時(shí)間判斷,是要加白天10 s誤時(shí)價(jià),還是加夜間10 s誤時(shí)價(jià)。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>