2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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ì)未來計(jì)價(jià)器市場(chǎng)很有前景。計(jì)價(jià)器作為出租車的一個(gè)重要組成部分,關(guān)系著出租車司機(jī)和乘客雙方利益,起著重要的作用,因此,具有良好性能的計(jì)價(jià)器對(duì)廣大出租車司機(jī)朋友和乘客來說是很必要的。但是現(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>  功能說明………………………………………………………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à)器;再從集成電路式到目前的單片機(jī)系統(tǒng)設(shè)計(jì)的出租車計(jì)價(jià)器。

11、出租車計(jì)價(jià)器計(jì)費(fèi)是否準(zhǔn)確才是乘客最關(guā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)用也越來越廣泛。雖然私家車的擁有量在大幅度地提高,但是出租車還是在我國(guó)的交通運(yùn)輸中承擔(dān)著重要的角色,出租車計(jì)價(jià)器是出租車上必不可少的重要儀器,它是負(fù)責(zé)出租車營(yíng)運(yùn)收費(fèi)的專用智能化儀表。用戶不僅要求計(jì)價(jià)器性能穩(wěn)定、計(jì)價(jià)準(zhǔn)確而且對(duì)它的要求也越來越高。</p><p>  近年

13、來,我國(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ì)量器具之一,也是近年來國(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à)器無論是對(duì)廣大出租車司機(jī)朋友還是乘客來說都是很必要的。因此,出租車計(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),超過3km, 每增加1km增加4.2元,等待時(shí)間單價(jià)為超過等待時(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>  (1)當(dāng)里程<3km時(shí),按起步價(jià)計(jì)算費(fèi)用</p><p> ?。?)當(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>  坐過出租車的人都知道,只要汽車一啟動(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>  通過考慮,計(jì)費(fèi)系統(tǒng)最終是安裝在計(jì)程車上的,電源一般不是220V交流電壓,而是有電瓶輸出的直流電壓,因此采用輸入一個(gè)6~10V的直流電壓,再穩(wěn)壓得到5V電壓。采用單片機(jī)技術(shù),通過單片機(jī)作為主控器,利用數(shù)碼管作為顯示電路,采用外部晶振作為時(shí)鐘脈沖,通過按鍵可以方便調(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>  無論是智能儀器儀表還是單片機(jī)工業(yè)控制系統(tǒng)都要求其數(shù)據(jù)能夠安全可靠而不受干擾,特別是一些重要的設(shè)定參數(shù)(如溫度控制設(shè)定值)受到干擾后變成一個(gè)很大的數(shù)字,那么就有可能發(fā)生燒箱毀物的破壞性后果,給生產(chǎn)和經(jīng)濟(jì)帶來損失,因此必須選用可靠的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、功能說明</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ù)碼管上顯示出來。設(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)過這幾個(gè)個(gè)月來不懈的努力與奮斗,我終于在老師的指導(dǎo)下完成了我的畢業(yè)設(shè)計(jì),雖然它還有諸多需要完善的地方,但是拿著這件設(shè)計(jì),我仍然有止不住的興奮。高興之余,我仍需深思: </p><p>  這件作品雖能初步解決出租車計(jì)算價(jià)錢的問題,但它仍有它的局限性,首先它不能自動(dòng)調(diào)整黑天和白夜的單價(jià)轉(zhuǎn)

29、換,這個(gè)功能我需要以后的設(shè)計(jì)中努力完善,另外,如果配上語音效果那就更方便了司機(jī)和乘客,更加顯示人性化和快捷化。</p><p>  通過這次設(shè)計(jì),我最大的收獲就是自己的動(dòng)手能力和獨(dú)立解決問題的能力得到了很大的提高。雖然遇到了不少困難,但當(dāng)我通過查資料和翻閱書籍的同時(shí)也學(xué)到了不少的知識(shí),擴(kuò)大了知識(shí)面,提高了知識(shí)水平經(jīng)過單元設(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無反應(yīng)進(jìn)入等待計(jì)費(fèi)</p><p><b>  {</b></p><p><b>  bb=0;</b></p><p&

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論