版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《單片機(jī)課程設(shè)計(jì)》報(bào)告</p><p> 基于單片機(jī)的出租車計(jì)價(jià)器設(shè)計(jì)</p><p> 系 別 電氣工程系 </p><p> 班 級(jí) 本電氣101 </p><p> 學(xué) 號(hào) </p><p> 學(xué)生姓名
2、</p><p> 指導(dǎo)老師 </p><p> 組 長(zhǎng) </p><p><b> 2013年05月</b></p><p><b> 摘 要</b></p><p> 現(xiàn)在各大中城市出租車行業(yè)都已普及自動(dòng)計(jì)價(jià)器,所以計(jì)
3、價(jià)器技術(shù)的發(fā)展已成定局,預(yù)計(jì)未來(lái)計(jì)價(jià)器市場(chǎng)很有前景。計(jì)價(jià)器作為出租車的一個(gè)重要組成部分,關(guān)系著出租車司機(jī)和乘客雙方利益,起著重要的作用,因此,具有良好性能的計(jì)價(jià)器對(duì)廣大出租車司機(jī)朋友和乘客來(lái)說(shuō)是很必要的。但是現(xiàn)階段出租車的計(jì)費(fèi)系統(tǒng)功能有時(shí)候并不能滿足出租車司機(jī)的意愿。</p><p> 大規(guī)模集成電路的發(fā)展又產(chǎn)生了新一代計(jì)價(jià)器,也就是全電子化的計(jì)價(jià)器。它的功能也在不斷完善.當(dāng)單片機(jī)出現(xiàn)并應(yīng)用于計(jì)價(jià)器后,現(xiàn)代出租
4、車計(jì)價(jià)器的模型也就基本具備了,它可以完成計(jì)程,計(jì)價(jià),顯示等基本工作。單片機(jī)以及外圍芯片的不斷發(fā)展促進(jìn)了計(jì)價(jià)器的發(fā)展。隨著單片機(jī)性能不斷提高而價(jià)格卻不斷下降,單片機(jī)控制得到更廣泛的應(yīng)用,外圍芯片的不斷發(fā)展,使得計(jì)價(jià)器的功能更加強(qiáng)大,性能更加穩(wěn)定。隨著電子技術(shù)的發(fā)展以及對(duì)計(jì)價(jià)器的不斷改進(jìn)和完善,便產(chǎn)生了諸多的附加功能。例如:(1)LCD顯示功能,液晶屏的使用讓計(jì)價(jià)器實(shí)現(xiàn)多屏顯示的功能,可同時(shí)顯示各項(xiàng)營(yíng)運(yùn)數(shù)據(jù),使乘客一目了然;(2)永久時(shí)鐘功
5、能,在非營(yíng)運(yùn)狀態(tài)下,日歷時(shí)鐘芯片的使用使計(jì)價(jià)器可以顯示永久時(shí)鐘;(3)存儲(chǔ)功能,可存儲(chǔ)多項(xiàng)營(yíng)運(yùn)數(shù)據(jù),便于查詢。新型數(shù)據(jù)存儲(chǔ)器的應(yīng)用使得計(jì)價(jià)器的營(yíng)運(yùn)數(shù)據(jù)在掉電情況下還可以保存10年。</p><p> 關(guān)鍵詞:?jiǎn)纹瑱C(jī)AT89S52;數(shù)碼管;出租車計(jì)價(jià)器;AT24C02</p><p> 摘要………………………………………………………………………1</p><p>
6、 緒論………………………………………………………………………2</p><p> 1、本課題的研究目的及意義…………………………………………3</p><p> 2、出租車計(jì)價(jià)器的主要設(shè)計(jì)參數(shù)………………………………4</p><p> 2.1、計(jì)費(fèi)功能…………………………………………………………4</p><p> 2.2、顯示功
7、能…………………………………………………………4</p><p> 2.3、按鍵提供脈沖代替出租車行駛路程……………………………4</p><p> 3、設(shè)計(jì)方案………………………………………………………5 </p><p> 4、電路組成…………
8、……………………………………………6</p><p> 4.1、52單片機(jī)最小系統(tǒng)………………………………………………6</p><p> 4.2、存儲(chǔ)電路…………………………………………………………6</p><p> 4.3、LED顯示電路……………………………………………………7</p><p> 4.4、按鍵控制電路……………
9、………………………………………7</p><p> 4.5、總原理圖…………………………………………………………7</p><p> 功能說(shuō)明………………………………………………………9</p><p> 5.1、 中途等待服務(wù)程序………………………………………………9</p><p> 6、結(jié)論與心得…………………………………………
10、………………10</p><p><b> 緒論</b></p><p> 出租車計(jì)價(jià)器是出租車營(yíng)運(yùn)收費(fèi)的專用智能化儀表,隨著電子技術(shù)的發(fā)展,出租車計(jì)價(jià)器技術(shù)也在不斷進(jìn)步和提高。國(guó)內(nèi)出租車計(jì)價(jià)器已經(jīng)經(jīng)歷了4 個(gè)發(fā)展階段。從傳統(tǒng)的全部由機(jī)械元器件組成的機(jī)械式,到半電子式即用電子線路代替部分機(jī)械元器件的出租車計(jì)價(jià)器;再?gòu)募呻娐肥降侥壳暗膯纹瑱C(jī)系統(tǒng)設(shè)計(jì)的出租車計(jì)價(jià)器。
11、出租車計(jì)價(jià)器計(jì)費(fèi)是否準(zhǔn)確才是乘客最關(guān)心的問(wèn)題,而計(jì)價(jià)器營(yíng)運(yùn)數(shù)據(jù)的管理是否方便才是出租車司機(jī)最關(guān)注的。因此怎樣設(shè)計(jì)出一種既能準(zhǔn)確計(jì)價(jià)又能方便司機(jī)的計(jì)價(jià)器尤為重要。因此, 本文以單片機(jī)AT89S52為核心設(shè)計(jì)一款多功能出租車計(jì)價(jià)器,該計(jì)價(jià)器能實(shí)現(xiàn)按時(shí)間和里程綜合計(jì)算車價(jià),能顯示時(shí)間、里程、單價(jià)、總車價(jià)等相關(guān)信息顯示。它比市場(chǎng)上的一些計(jì)價(jià)器使用更方便,功能更全,還具有系統(tǒng)穩(wěn)定性好的優(yōu)點(diǎn)。</p><p> 1、本課題
12、的研究目的及意義</p><p> 隨著我國(guó)經(jīng)濟(jì)的迅速發(fā)展,人民生活水平的顯著提高,城市的交通日趨完善,出租車計(jì)價(jià)器的應(yīng)用也越來(lái)越廣泛。雖然私家車的擁有量在大幅度地提高,但是出租車還是在我國(guó)的交通運(yùn)輸中承擔(dān)著重要的角色,出租車計(jì)價(jià)器是出租車上必不可少的重要儀器,它是負(fù)責(zé)出租車營(yíng)運(yùn)收費(fèi)的專用智能化儀表。用戶不僅要求計(jì)價(jià)器性能穩(wěn)定、計(jì)價(jià)準(zhǔn)確而且對(duì)它的要求也越來(lái)越高。</p><p> 近年
13、來(lái),我國(guó)出租車行業(yè)迅猛發(fā)展,出租車已經(jīng)成為我國(guó)城市公共交通的重要組成部分和現(xiàn)代化城市必備的基礎(chǔ)設(shè)施,成為人們工作、生活中不可缺少的交通工具。出租車服務(wù)行業(yè)和出租車計(jì)價(jià)器緊密相關(guān),因?yàn)槌鲎廛嚤仨毎惭b出租車計(jì)價(jià)器才能投入營(yíng)運(yùn)。出租車計(jì)價(jià)器是一種能根據(jù)乘客乘坐出租車行駛距離和等候時(shí)間的多少進(jìn)行計(jì)價(jià),并直接顯示車費(fèi)值的計(jì)量器具。計(jì)價(jià)器是出租車的經(jīng)營(yíng)者和乘坐出租車的消費(fèi)者之間用于公平貿(mào)易結(jié)算的工具,因而計(jì)價(jià)器計(jì)價(jià)準(zhǔn)確與否,直接關(guān)系到經(jīng)營(yíng)者和消費(fèi)者
14、的經(jīng)濟(jì)利益。依據(jù)國(guó)家有關(guān)法律、法規(guī),出租車計(jì)價(jià)器是列入國(guó)家首批強(qiáng)制檢定的工作計(jì)量器具之一,也是近年來(lái)國(guó)家質(zhì)量技術(shù)監(jiān)督部門強(qiáng)化管理的六類重點(diǎn)計(jì)量器具之一。</p><p> 出租車計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車行業(yè)發(fā)展的重要標(biāo)志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器無(wú)論是對(duì)廣大出租車司機(jī)朋友還是乘客來(lái)說(shuō)都是很必要的。因此,出租車計(jì)價(jià)器的研究也是十分有應(yīng)用價(jià)值的。<
15、;/p><p> 2、出租車計(jì)價(jià)器的主要設(shè)計(jì)參數(shù)</p><p> 本課題對(duì)出租車計(jì)價(jià)器的設(shè)計(jì)要求如下:</p><p> 設(shè)計(jì)一個(gè)出租車自動(dòng)計(jì)價(jià)器,計(jì)價(jià)包括起步價(jià)、行車?yán)锍逃?jì)費(fèi)、等待時(shí)間計(jì)費(fèi)三部分,用數(shù)碼管顯示總金額,行駛公里數(shù),起步價(jià)為6.0元,3km之內(nèi)起步價(jià)計(jì)費(fèi),超過(guò)3km, 每增加1km增加4.2元,等待時(shí)間單價(jià)為超過(guò)等待時(shí)間10秒鐘1元。并且可以重新設(shè)
16、置白天、晚上和等待時(shí)間的單價(jià)。</p><p><b> 2.1、計(jì)費(fèi)功能</b></p><p> 費(fèi)用的計(jì)算是按行駛里程收費(fèi)。本設(shè)計(jì)可以手動(dòng)調(diào)起步價(jià)格、行車?yán)锍逃?jì)費(fèi)單價(jià)(白天和晚上)、等待時(shí)間單價(jià)。</p><p> ?。?)當(dāng)里程<3km時(shí),按起步價(jià)計(jì)算費(fèi)用</p><p> (2)當(dāng)里程>3km
17、時(shí),白天按4.2元/km計(jì)費(fèi)加起步價(jià)。晚上按2.4元/km計(jì)費(fèi)加起步價(jià)。</p><p> ?。?)等待累計(jì)時(shí)間>10s時(shí),按1元/min計(jì)費(fèi)</p><p><b> 2.2、顯示功能</b></p><p> 當(dāng)電路電源接通后,LED數(shù)碼管全部點(diǎn)亮。前面4位數(shù)碼管顯示總價(jià)(起步價(jià)),中間2位顯示里程,最后兩位顯示當(dāng)前單價(jià)。<
18、/p><p> 2.3、按鍵提供脈沖代替出租車行駛路程</p><p> 本課題是出租車計(jì)價(jià)器系統(tǒng)的設(shè)計(jì)。重點(diǎn)是設(shè)計(jì)出租車計(jì)價(jià)器的實(shí)用性,并盡量使最后的成品接近于商品。整個(gè)系統(tǒng)是以89S52單片機(jī)為中心,采用按鍵脈沖對(duì)輪胎轉(zhuǎn)數(shù)進(jìn)行計(jì)數(shù),實(shí)現(xiàn)對(duì)出租車?yán)锍痰臏y(cè)量,并最終計(jì)算出結(jié)果。</p><p><b> 3、設(shè)計(jì)方案</b></p>
19、;<p> 坐過(guò)出租車的人都知道,只要汽車一啟動(dòng),隨著行駛里程的增加,就會(huì)看到出租車前面的計(jì)價(jià)器里程數(shù)字顯示的讀數(shù)從零逐漸增大,而當(dāng)行駛到某一值(如4km)計(jì)費(fèi)數(shù)字顯示開始從起步價(jià)(如8元)增加。當(dāng)出租車到達(dá)某地需要在那里等候時(shí),司機(jī)只要按一下“計(jì)時(shí)”鍵,每等候一定的時(shí)間(如10分鐘),計(jì)費(fèi)顯示就增加一個(gè)該收的等候費(fèi)用(如每10分鐘收取1.50元)。出租車?yán)^續(xù)行駛時(shí),停止計(jì)算等候費(fèi)用,繼續(xù)增加里程計(jì)費(fèi)。到達(dá)目的地,便可按
20、顯示的數(shù)字收費(fèi)。然后關(guān)閉計(jì)費(fèi)器,對(duì)計(jì)數(shù)器清零,等待下次計(jì)費(fèi)開始。</p><p> 通過(guò)考慮,計(jì)費(fèi)系統(tǒng)最終是安裝在計(jì)程車上的,電源一般不是220V交流電壓,而是有電瓶輸出的直流電壓,因此采用輸入一個(gè)6~10V的直流電壓,再穩(wěn)壓得到5V電壓。采用單片機(jī)技術(shù),通過(guò)單片機(jī)作為主控器,利用數(shù)碼管作為顯示電路,采用外部晶振作為時(shí)鐘脈沖,通過(guò)按鍵可以方便調(diào)節(jié)。</p><p> 以下是系統(tǒng)流程圖,
21、如圖2.3所示:</p><p><b> 4、電路組成</b></p><p> 本設(shè)計(jì)由52單片機(jī)最小系統(tǒng)、存儲(chǔ)電路、按鍵控制電路、LED顯示電路及脈沖計(jì)數(shù)等幾部分組成。</p><p> 、52單片機(jī)最小系統(tǒng)</p><p> 單片機(jī)最小系統(tǒng)包括單片機(jī)、晶振電路、復(fù)位電路等組成。</p>&l
22、t;p><b> 4.2、存儲(chǔ)電路</b></p><p> 無(wú)論是智能儀器儀表還是單片機(jī)工業(yè)控制系統(tǒng)都要求其數(shù)據(jù)能夠安全可靠而不受干擾,特別是一些重要的設(shè)定參數(shù)(如溫度控制設(shè)定值)受到干擾后變成一個(gè)很大的數(shù)字,那么就有可能發(fā)生燒箱毀物的破壞性后果,給生產(chǎn)和經(jīng)濟(jì)帶來(lái)?yè)p失,因此必須選用可靠的24C02器件作為數(shù)據(jù)儲(chǔ)存單元。</p><p> 4.3、LED顯
23、示電路</p><p> 由于發(fā)光二極管基本上屬于電流敏感器件,其正向壓降的分散性很大, 并且還與溫度有關(guān),為了保證數(shù)碼管具有良好的亮度均勻度,就需要使其具有恒定的工作電流,且不能受溫度及其它因素的影響。另外,當(dāng)溫度變化時(shí)驅(qū)動(dòng)芯片還要能夠自動(dòng)調(diào)節(jié)輸出電流的大小以實(shí)現(xiàn)色差平衡溫度補(bǔ)償。而本設(shè)計(jì)出租車計(jì)費(fèi)器,基本上只需要顯示價(jià)錢與路程,利用數(shù)碼管足夠?qū)崿F(xiàn)功能。</p><p> 4.4、按
24、鍵控制電路</p><p> SB1------返回鍵,SB2------上調(diào)鍵,SB3------下調(diào)鍵,SB4------設(shè)置鍵,SB5------脈沖觸發(fā)鍵</p><p><b> 4.5、總原理圖</b></p><p><b> 5、功能說(shuō)明</b></p><p> 當(dāng)電路電源
25、接通后,LED數(shù)碼管全部點(diǎn)亮。前面4位數(shù)碼管顯示總價(jià)(起步價(jià)),中間2位顯示里程,最后兩位顯示當(dāng)前單價(jià)。圖中使用“計(jì)數(shù)”按鍵代替了霍爾傳感器,按鍵每按下一次,就會(huì)產(chǎn)生一個(gè)“模擬”脈沖,每5個(gè)脈沖為1公里。電源剛接通時(shí)前4位數(shù)碼管顯示當(dāng)前的起步價(jià),前3公里價(jià)格不變,從第4公里開始,每公里增加一次單價(jià)。若在10秒鐘內(nèi),系統(tǒng)沒有接收到脈沖信號(hào),等待系統(tǒng)就會(huì)自行啟動(dòng),每10秒增加一次等待單價(jià)。所有價(jià)格都可以自行設(shè)定。</p>&l
26、t;p> 按鍵SB1為計(jì)價(jià)器清零鍵,即每按下一次,計(jì)價(jià)器前4位恢復(fù)為起步價(jià),中間2位恢復(fù)為00,單價(jià)不變。SB4鍵為設(shè)置鍵,按下后第3位數(shù)碼管顯示1,進(jìn)入白天單價(jià)調(diào)整;再次按下第3位數(shù)碼管顯示2,為夜間單價(jià);第3次按下為等待單價(jià);第4次為起步價(jià),4種價(jià)格全部在最后2位數(shù)碼管上顯示出來(lái)。設(shè)置完成后,再次按下SB4鍵,恢復(fù)到計(jì)價(jià)狀態(tài)。</p><p> SB2鍵為上調(diào)鍵,另一個(gè)功能是在計(jì)價(jià)狀態(tài)時(shí)按下后,可切
27、換白天、夜晚單價(jià)。SB3鍵為下調(diào)鍵。</p><p> 5.1、 中途等待服務(wù)程序</p><p> 當(dāng)在計(jì)數(shù)狀態(tài)下開關(guān)沒有輸出信號(hào),片內(nèi)的定時(shí)器便被啟動(dòng),每當(dāng)計(jì)時(shí)到達(dá)一定時(shí)間,就對(duì)當(dāng)前金額加上中途等待的單價(jià),以后每10秒都自動(dòng)加上中途等待的單價(jià)。當(dāng)中途等待結(jié)束的時(shí)候,就自動(dòng)切換到正常的計(jì)價(jià)。</p><p> 服務(wù)程序流程圖如圖4.1所示:</p>
28、;<p><b> 6、結(jié)論與心得</b></p><p> 經(jīng)過(guò)這幾個(gè)個(gè)月來(lái)不懈的努力與奮斗,我終于在老師的指導(dǎo)下完成了我的畢業(yè)設(shè)計(jì),雖然它還有諸多需要完善的地方,但是拿著這件設(shè)計(jì),我仍然有止不住的興奮。高興之余,我仍需深思: </p><p> 這件作品雖能初步解決出租車計(jì)算價(jià)錢的問(wèn)題,但它仍有它的局限性,首先它不能自動(dòng)調(diào)整黑天和白夜的單價(jià)轉(zhuǎn)
29、換,這個(gè)功能我需要以后的設(shè)計(jì)中努力完善,另外,如果配上語(yǔ)音效果那就更方便了司機(jī)和乘客,更加顯示人性化和快捷化。</p><p> 通過(guò)這次設(shè)計(jì),我最大的收獲就是自己的動(dòng)手能力和獨(dú)立解決問(wèn)題的能力得到了很大的提高。雖然遇到了不少困難,但當(dāng)我通過(guò)查資料和翻閱書籍的同時(shí)也學(xué)到了不少的知識(shí),擴(kuò)大了知識(shí)面,提高了知識(shí)水平經(jīng)過(guò)單元設(shè)計(jì)和系統(tǒng)設(shè)計(jì)鞏固了以前所學(xué)的專業(yè)知識(shí),從方案形成到準(zhǔn)備電路圖,到軟件設(shè)計(jì),到聯(lián)機(jī)調(diào)試??每一
30、個(gè)小小的步驟,我都得到了很好的鍛煉。我學(xué)會(huì)了怎樣有效的收集整合資料;我學(xué)會(huì)了怎樣細(xì)心地檢查電路;我學(xué)會(huì)了怎樣虛心地尋求幫助;我學(xué)會(huì)了我也明白了,很多書本上的東西光靠趴在書本上學(xué)是學(xué)不到其中的精髓的,我們必須親自去試著實(shí)踐了,親自去經(jīng)歷失敗了才能對(duì)它們真正的掌握。理論必須聯(lián)系實(shí)際,而實(shí)踐試檢驗(yàn)真理的唯一標(biāo)準(zhǔn),我真正的懂得了這句話的真諦。在我以后的工作和生活中,我從此可以汲取很多經(jīng)驗(yàn),凡事都要自己去動(dòng)下手,去實(shí)踐一下,遇到困難,要有耐心,有
31、信心,有細(xì)心,有恒心,有虛心,只有這樣,我才會(huì)在逆境中不斷前進(jìn)。 </p><p><b> 附錄:</b></p><p> #include<reg51.h></p><p> #include <intrins.h></p><p> #define uchar unsigned
32、char</p><p> #define uint unsigned int</p><p> #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();_nop_();};</p><p> uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07
33、,0x7F,0x6F};</p><p> /// 0 1 2 3 4 5 6 7 8 9 </p><p> sbit exter=P3^3; // 外部中斷</p><p> sbit key0=P2^0;
34、 // 清零</p><p> sbit key1=P2^1; // 切換/+</p><p> sbit key2=P2^2; // -</p><p> sbit key3=P2^3; // 功能鍵</p><p> s
35、bit p30=P3^0; // 數(shù)碼管各位控制</p><p> sbit p31=P3^1;</p><p> sbit p32=P3^2;</p><p> sbit p300=P2^7;//////改進(jìn)程序四位數(shù)碼管顯示</p><p> sbit p34=P3^4;</p>
36、<p> sbit p35=P3^5;</p><p> sbit p36=P3^6;</p><p> sbit p37=P3^7;</p><p> sbit SDA=P1^3; // IIC引腳,將P1.4口模擬數(shù)據(jù)口</p><p> sbit SCL=P1^4;
37、 // IIC引腳,將P1.3口模擬時(shí)鐘口</p><p> uint inter,aa,bb,temp,temp1;</p><p> uint zongjia,licheng,dengdai;</p><p> uint key3num,qiehuantemp,delaytemp;</p><p> uchar d
38、anjia1,danjia2,danjia3,danjia,qibu;</p><p> //////////////////</p><p> //////////////////</p><p> void delay(uint x) // 延時(shí)時(shí)基為1ms</p><p><b&
39、gt; {int i,j;</b></p><p> for(i=x;i>0;i--)</p><p> for(j=340;j>0;j--);</p><p> }/// 延時(shí)函數(shù)</p><p> ///////////////////////////////////////</p>&l
40、t;p> //2402 操作函數(shù)</p><p> //////////////////////////////////////</p><p> void start() // IIC開始位</p><p> { SDA = 1;</p><p><b> SCL = 1;<
41、;/b></p><p> delayNOP();</p><p><b> SDA = 0;</b></p><p> delayNOP();</p><p> SCL = 0; </p><p><b> }</b></p><p
42、> void stop() // IIC停止位</p><p> { SDA = 0;</p><p> delayNOP();</p><p><b> SCL = 1;</b></p><p> delayNOP();</p><p> S
43、DA = 1; }</p><p> void respons() // IIC應(yīng)答位</p><p> { uchar i;</p><p><b> SCL=1;</b></p><p> delayNOP();</p><p> while((SD
44、A==1)&&(i<250))</p><p><b> i++;</b></p><p><b> SCL=0;</b></p><p> delayNOP(); }</p><p> uchar read_byte() // 從EEPROM
45、讀到MCU</p><p> { uchar i,j;</p><p> for(i=0;i<8;i++)</p><p><b> { SCL=1;</b></p><p> j<<=1; // j左移一位</p><p><
46、;b> j|=SDA;</b></p><p><b> SCL=0; }</b></p><p> return(j); }</p><p> void write_byte(uchar date) // 從MCU寫到EEPROM</p><p><b>
47、 {</b></p><p> uchar i,temp;</p><p> temp=date;</p><p> for(i=0;i<8;i++)</p><p><b> {</b></p><p> temp=temp<<1;
48、 // temp等于將temp左移一位的值</p><p><b> SCL=0;</b></p><p> delayNOP();</p><p><b> SDA=CY;</b></p><p> delayNOP();</p><p><b>
49、; SCL=1;</b></p><p> delayNOP();</p><p><b> }</b></p><p><b> SCL=0;</b></p><p> delayNOP();</p><p><b> SDA=1;<
50、/b></p><p> delayNOP();</p><p><b> }</b></p><p> void write_data(uchar addr, uchar date) // 在指定地址addr處寫入數(shù)據(jù)date</p><p><b> {</b><
51、/p><p><b> start();</b></p><p> write_byte(0xa0);</p><p> respons();</p><p> write_byte(addr);</p><p> respons();</p><p> write
52、_byte(date);</p><p> respons();</p><p> stop(); </p><p><b> }</b></p><p> uchar read_data(uchar addr) // 在指定地址addr讀取數(shù)據(jù)</p>&
53、lt;p><b> {</b></p><p> uchar date;</p><p><b> start();</b></p><p> write_byte(0xa0);</p><p> respons();</p><p> write_byte
54、(addr);</p><p> respons();</p><p><b> start();</b></p><p> write_byte(0xa1);</p><p> respons();</p><p> date=read_byte();</p><p
55、><b> stop();</b></p><p> return date; </p><p><b> }</b></p><p> ///////////////////////////////////////////////////////////////////////24C02操作函數(shù)<
56、/p><p> ///////價(jià)格顯示</p><p> void display(uint zongjia0,uint licheng0,uint danjia0) </p><p><b> {</b></p><p> uint jqian,jbai,jshi,jge,lshi,lge
57、,dshi,dge;///加入千位</p><p> uint numwei,numshu; // 數(shù)碼管位置分配</p><p> jqian=(zongjia0/100)/10%10;</p><p> jbai=(zongjia0/100)%10; // 數(shù)碼管顯示總價(jià)百位 &l
58、t;/p><p> jshi=zongjia0%100/10; // 數(shù)碼管顯示總價(jià)十位</p><p> jge=zongjia0%100%10; // 數(shù)碼管顯示總價(jià)個(gè)位</p><p> lshi=licheng0/10; // 數(shù)碼管顯示里程十位<
59、;/p><p> lge=licheng0%10; // 數(shù)碼管顯示里程個(gè)位</p><p> dshi=danjia0/10; // 數(shù)碼管顯示單價(jià)十位</p><p> dge=danjia0%10; </p><p> // 數(shù)碼管顯示單價(jià)個(gè)位<
60、/p><p><b> if(aa)</b></p><p><b> {</b></p><p><b> aa=0;</b></p><p><b> numshu++;</b></p><p> if(numshu==8
61、) // 7個(gè)數(shù)碼管掃描完畢 </p><p><b> numshu=0;</b></p><p><b> P3=0xff; </b></p><p><b> // 數(shù)碼管全滅</b></p><p><b>
62、 p300=1;</b></p><p> switch(numwei)</p><p><b> {</b></p><p> case 1:p30=0;P0=table[jbai];break;</p><p> case 2:p31=0;P0=table[jshi]|0x80;break; /
63、//.</p><p> case 3:p32=0;P0=table[jge];break;</p><p> case 4:p34=0;P0=table[lshi];break;</p><p> case 5:p35=0;P0=table[lge];break;</p><p> case 6:p36=0;P0=table[dsh
64、i]|0x80;break;///.</p><p> case 7:p37=0;P0=table[dge];break;</p><p> case 0:p300=0;P0=table[jqian];break;</p><p><b> }</b></p><p><b> numwei++;<
65、;/b></p><p> if(numwei==8)</p><p><b> numwei=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> /////////////////
66、/////////</p><p> void keyscan() </p><p><b> {</b></p><p> if(key3==0) // 判斷功能調(diào)節(jié)鍵是否按下</p><p><b>
67、; {</b></p><p> delay(5); // 延時(shí)5秒消抖</p><p> if(key3==0) // 如果功能調(diào)節(jié)鍵按下</p><p><b> {</b></p>&
68、lt;p> key3num=1; // 功能鍵按下1次</p><p> while(!key3); // 鍵彈起</p><p> delay(5); // 延時(shí)5秒</p><p>
69、 while(!key3);</p><p> while(key3num)</p><p><b> {</b></p><p> if(key3num==1) // key3按1次調(diào)白天單價(jià)</p><p><b> {</b></p>
70、<p> if(key1==0) // 判斷key1是否按下</p><p><b> {</b></p><p> delay(5); // 延時(shí)5秒消抖</p><p> if(key1==0)
71、 // 如果key1按下</p><p><b> {</b></p><p> danjia1++; // 單價(jià)加1</p><p> if(danjia1==100) // 加到100 </p><p> danjia1=0
72、; // 給單價(jià)賦0 </p><p> while(!key1); // 鍵彈起</p><p> delay(5); // 延時(shí)5秒消抖</p><p> while(!key1);
73、 // 鍵彈起</p><p><b> }</b></p><p><b> }</b></p><p> if(key2==0) // 判斷key2是否按下</p><p><b> {</b></p>
74、<p> delay(5); // 延時(shí)5秒消抖</p><p> if(key2==0) // 如果key2按下</p><p><b> {</b></p><p> danjia1--;
75、 // 單價(jià)減1</p><p> if(danjia1==-1) // 單價(jià)減到-1</p><p> danjia1=99; // 令單價(jià)等于99</p><p> while(!key2); // 鍵彈起</p&g
76、t;<p> delay(5); // 延時(shí)5秒消抖</p><p> while(!key2); // 鍵彈起</p><p><b> }</b></p><p><b> }</b></p>
77、<p> display(1,0,danjia1); // 數(shù)碼管顯示單價(jià) </p><p><b> }</b></p><p> if(key3num==2) // key3按2次調(diào)夜晚單價(jià)</p><p><b> {</b>&l
78、t;/p><p> write_data(1,danjia1); // 存單價(jià)1</p><p> if(key1==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(ke
79、y1==0)</p><p><b> {</b></p><p> danjia2++;</p><p> if(danjia2==100)</p><p> danjia2=0;</p><p> while(!key1);</p><p><b>
80、 delay(5);</b></p><p> while(!key1);</p><p><b> }</b></p><p><b> }</b></p><p> if(key2==0)</p><p><b> {</b>
81、</p><p><b> delay(5);</b></p><p> if(key2==0)</p><p><b> {</b></p><p> danjia2--;</p><p> if(danjia2==-1)</p><p>
82、 danjia2=99;</p><p> while(!key2);</p><p><b> delay(5);</b></p><p> while(!key2);</p><p><b> }</b></p><p><b> }</b&g
83、t;</p><p> display(2,0,danjia2); </p><p><b> }</b></p><p> if(key3num==3) // key3按3次調(diào)等待單價(jià)</p><p><b> {</b>
84、;</p><p> write_data(2,danjia2); // 存單價(jià)2</p><p> if(key1==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p>
85、 if(key1==0)</p><p><b> {</b></p><p> danjia3++;</p><p> if(danjia3==100)</p><p> danjia3=0;</p><p> while(!key1);</p><p>&l
86、t;b> delay(5);</b></p><p> while(!key1);</p><p><b> }</b></p><p><b> }</b></p><p> if(key2==0)</p><p><b> {<
87、;/b></p><p><b> delay(5);</b></p><p> if(key2==0)</p><p><b> {</b></p><p> danjia3--;</p><p> if(danjia3==-1)</p>&l
88、t;p> danjia3=99;</p><p> while(!key2);</p><p><b> delay(5);</b></p><p> while(!key2);</p><p><b> }</b></p><p><b> }&
89、lt;/b></p><p> display(3,0,danjia3);</p><p><b> }</b></p><p> if(key3num==4) // key3按4次調(diào)起步價(jià)</p><p><b> {</b></p>&l
90、t;p> write_data(3,danjia3); // 存單價(jià)3</p><p> if(key1==0)</p><p><b> {</b></p><p><b> delay(5);</b></p><p> if(key1==0)</p&g
91、t;<p><b> {</b></p><p><b> qibu++;</b></p><p> if(qibu==100)</p><p><b> qibu=0;</b></p><p> while(!key1);</p><
92、;p><b> delay(5);</b></p><p> while(!key1);</p><p><b> }</b></p><p><b> }</b></p><p> if(key2==0)</p><p><b&g
93、t; {</b></p><p><b> delay(5);</b></p><p> if(key2==0)</p><p><b> {</b></p><p><b> qibu--;</b></p><p> if(qi
94、bu==-1)</p><p><b> qibu=99;</b></p><p> while(!key2);</p><p><b> delay(5);</b></p><p> while(!key2);</p><p><b> }</b&
95、gt;</p><p><b> }</b></p><p> display(4,0,qibu);</p><p><b> }</b></p><p> if(key3num==5) // key3按5次退出功能鍵</p><p&
96、gt;<b> {</b></p><p> write_data(4,qibu); // 存單價(jià)4</p><p> key3num=0;</p><p><b> }</b></p><p> if(key3==0)</p><p&
97、gt;<b> {</b></p><p><b> delay(5);</b></p><p> if(key3==0)</p><p><b> {</b></p><p> key3num++;</p><p> while(!key3
98、); // 鍵彈起</p><p> delay(5); // 延時(shí)</p><p> while(!key3); //鍵彈起</p><p><b> }</b></p>&l
99、t;p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p&g
100、t; void init() </p><p><b> {</b></p><p><b> SDA=1;</b></p><p><b> SCL=1;</b></p><p> zongjia=0;</p>
101、;<p> licheng=0;</p><p> dengdai=0;</p><p> /////////////////////////////////////////////////</p><p> danjia1=read_data(1); // 白天單價(jià)</p><p> d
102、anjia2=read_data(2); // 夜晚單價(jià)</p><p> danjia3=read_data(3); // 等待單價(jià)</p><p> qibu=read_data(4); // 起步價(jià)</p><p> //////////////////////
103、//////////////////////////</p><p> aa=0; // 數(shù)碼管動(dòng)態(tài)掃描的定時(shí)器時(shí)基個(gè)數(shù)</p><p> bb=0; // 判斷是否等待的時(shí)基個(gè)數(shù)</p><p><b> inter=0;</b>
104、</p><p> EA=1; // 開總中斷</p><p> EX1=1; // 開外部中斷1</p><p> IT1=1; // 觸發(fā)方式下降沿</p><p> TMOD=0x01;</p&
105、gt;<p> TH0=(65536-1000)/256;</p><p> TL0=(65536-1000)%256; ///1ms</p><p> ET0=1; // 開定時(shí)器T0中斷</p><p> TR0=1; // 開定時(shí)器T0</p>
106、<p><b> P3=0x08;</b></p><p> P0=table[0]; </p><p><b> }</b></p><p> ///////參考資料</p><p> void jisuan() </p>&l
107、t;p><b> {</b></p><p> if(licheng>3)</p><p> zongjia=qibu+(licheng-3)*danjia+dengdai*danjia3; // 金額計(jì)算</p><p><b> else</b></p><p&g
108、t; zongjia=qibu+dengdai*danjia3; // 起步公里內(nèi)金額計(jì)算</p><p><b> }</b></p><p> ////////////////價(jià)格計(jì)算的算法</p><p> void qiehuan()</p><p><
109、;b> {</b></p><p> if(key1==0) // 白天夜晚切換</p><p><b> {</b></p><p> delay(5); // 鍵盤防抖
110、</p><p> if(key1==0)</p><p> qiehuantemp=!qiehuantemp;</p><p> while(!key1);</p><p><b> delay(5);</b></p><p> while(!key1);</p><
111、;p><b> }</b></p><p> if(qiehuantemp==0)</p><p> danjia=danjia2;</p><p> if(qiehuantemp==1)</p><p> danjia=danjia1; </p><p><b>
112、 }</b></p><p> ///////////////////////</p><p><b> //主程序入口處</b></p><p> ///////////////////////</p><p> void main()</p><p><b>
113、{</b></p><p><b> init();</b></p><p> qiehuantemp=1;</p><p> key3num=0;</p><p><b> while(1)</b></p><p><b> {</b&
114、gt;</p><p> qiehuan(); // 切換白天夜晚單價(jià)</p><p> jisuan(); // 計(jì)算總金額</p><p> display(zongjia,l
115、icheng,danjia);</p><p> keyscan();</p><p> if(key0==0) // 清零鍵</p><p><b> init(); </b></p><p><b> } <
116、;/b></p><p><b> }</b></p><p> //////////////////////////////////////</p><p> void inter1() interrupt 2 // 脈沖中斷</p><p><b> {</b&g
117、t;</p><p> //delay(5);</p><p> //display(zongjia,licheng,danjia); ///提高利用率??!</p><p> delay(5); // 延時(shí)5秒</p><p> if(exter==0)
118、 // 判斷是否有中斷</p><p> { </p><p><b> IT1=1;</b></p><p><b> inter++;</b></p><p> if(int
119、er==5)</p><p><b> {</b></p><p><b> inter=0;</b></p><p> licheng++;</p><p><b> }</b></p><p> }
120、 </p><p> while(!exter); // 中斷消失</p><p> delay(5); // 延時(shí)5秒</p><p> while(!exter);
121、 // 中斷消失</p><p><b> }</b></p><p> void timer0() interrupt 1</p><p><b> {</b></p><p> TH0=(65536-1000)/256;</p&g
122、t;<p> TL0=(65536-1000)%256;</p><p><b> aa++;</b></p><p><b> bb++;</b></p><p><b> //</b></p><p> temp1=licheng; </p
123、><p> // 測(cè)試是否進(jìn)入等待</p><p> if(bb==10000) // 10s無(wú)反應(yīng)進(jìn)入等待計(jì)費(fèi)</p><p><b> {</b></p><p><b> bb=0;</b></p><p&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車計(jì)價(jià)器課程設(shè)計(jì)
- 出租車計(jì)價(jià)器課程設(shè)計(jì)
- 出租車計(jì)價(jià)器課程設(shè)計(jì)
- 出租車計(jì)價(jià)器課程設(shè)計(jì)
- 課程設(shè)計(jì)---出租車計(jì)價(jià)器設(shè)計(jì)
- 課程設(shè)計(jì)--出租車計(jì)價(jià)器設(shè)計(jì)
- 出租車計(jì)價(jià)器設(shè)計(jì)課程設(shè)計(jì)
- 課程設(shè)計(jì)---出租車計(jì)價(jià)器設(shè)計(jì)
- 出租車計(jì)價(jià)器課程設(shè)計(jì)報(bào)告
- 硬件課程設(shè)計(jì)----出租車計(jì)價(jià)器
- eda課程設(shè)計(jì)--出租車計(jì)價(jià)器
- eda課程設(shè)計(jì)--出租車計(jì)價(jià)器
- 接口課程設(shè)計(jì)---出租車計(jì)價(jià)器
- 課程設(shè)計(jì)---出租車計(jì)價(jià)器的設(shè)計(jì)
- 課程設(shè)計(jì)--出租車計(jì)價(jià)器的設(shè)計(jì)
- 硬件課程設(shè)計(jì)--出租車計(jì)價(jià)器系統(tǒng)
- eda課程設(shè)計(jì)報(bào)告---出租車計(jì)價(jià)器
- eda課程設(shè)計(jì)報(bào)告--出租車計(jì)價(jià)器
- arm出租車計(jì)價(jià)器系統(tǒng)課程設(shè)計(jì)
- 硬件課程設(shè)計(jì)報(bào)告--出租車計(jì)價(jià)器
評(píng)論
0/150
提交評(píng)論