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

下載本文檔

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

文檔簡介

1、<p>  《單片機課程設(shè)計》報告</p><p>  基于單片機的出租車計價器設(shè)計</p><p>  系 別 電氣工程系 </p><p>  班 級 本電氣101 </p><p>  學 號 </p><p>  學生姓名

2、</p><p>  指導老師 </p><p>  組 長 </p><p><b>  2013年05月</b></p><p><b>  摘 要</b></p><p>  現(xiàn)在各大中城市出租車行業(yè)都已普及自動計價器,所以計

3、價器技術(shù)的發(fā)展已成定局,預計未來計價器市場很有前景。計價器作為出租車的一個重要組成部分,關(guān)系著出租車司機和乘客雙方利益,起著重要的作用,因此,具有良好性能的計價器對廣大出租車司機朋友和乘客來說是很必要的。但是現(xiàn)階段出租車的計費系統(tǒng)功能有時候并不能滿足出租車司機的意愿。</p><p>  大規(guī)模集成電路的發(fā)展又產(chǎn)生了新一代計價器,也就是全電子化的計價器。它的功能也在不斷完善.當單片機出現(xiàn)并應用于計價器后,現(xiàn)代出租

4、車計價器的模型也就基本具備了,它可以完成計程,計價,顯示等基本工作。單片機以及外圍芯片的不斷發(fā)展促進了計價器的發(fā)展。隨著單片機性能不斷提高而價格卻不斷下降,單片機控制得到更廣泛的應用,外圍芯片的不斷發(fā)展,使得計價器的功能更加強大,性能更加穩(wěn)定。隨著電子技術(shù)的發(fā)展以及對計價器的不斷改進和完善,便產(chǎn)生了諸多的附加功能。例如:(1)LCD顯示功能,液晶屏的使用讓計價器實現(xiàn)多屏顯示的功能,可同時顯示各項營運數(shù)據(jù),使乘客一目了然;(2)永久時鐘功

5、能,在非營運狀態(tài)下,日歷時鐘芯片的使用使計價器可以顯示永久時鐘;(3)存儲功能,可存儲多項營運數(shù)據(jù),便于查詢。新型數(shù)據(jù)存儲器的應用使得計價器的營運數(shù)據(jù)在掉電情況下還可以保存10年。</p><p>  關(guān)鍵詞:單片機AT89S52;數(shù)碼管;出租車計價器;AT24C02</p><p>  摘要………………………………………………………………………1</p><p>

6、  緒論………………………………………………………………………2</p><p>  1、本課題的研究目的及意義…………………………………………3</p><p>  2、出租車計價器的主要設(shè)計參數(shù)………………………………4</p><p>  2.1、計費功能…………………………………………………………4</p><p>  2.2、顯示功

7、能…………………………………………………………4</p><p>  2.3、按鍵提供脈沖代替出租車行駛路程……………………………4</p><p>  3、設(shè)計方案………………………………………………………5 </p><p>  4、電路組成…………

8、……………………………………………6</p><p>  4.1、52單片機最小系統(tǒng)………………………………………………6</p><p>  4.2、存儲電路…………………………………………………………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、 中途等待服務程序………………………………………………9</p><p>  6、結(jié)論與心得…………………………………………

10、………………10</p><p><b>  緒論</b></p><p>  出租車計價器是出租車營運收費的專用智能化儀表,隨著電子技術(shù)的發(fā)展,出租車計價器技術(shù)也在不斷進步和提高。國內(nèi)出租車計價器已經(jīng)經(jīng)歷了4 個發(fā)展階段。從傳統(tǒng)的全部由機械元器件組成的機械式,到半電子式即用電子線路代替部分機械元器件的出租車計價器;再從集成電路式到目前的單片機系統(tǒng)設(shè)計的出租車計價器。

11、出租車計價器計費是否準確才是乘客最關(guān)心的問題,而計價器營運數(shù)據(jù)的管理是否方便才是出租車司機最關(guān)注的。因此怎樣設(shè)計出一種既能準確計價又能方便司機的計價器尤為重要。因此, 本文以單片機AT89S52為核心設(shè)計一款多功能出租車計價器,該計價器能實現(xiàn)按時間和里程綜合計算車價,能顯示時間、里程、單價、總車價等相關(guān)信息顯示。它比市場上的一些計價器使用更方便,功能更全,還具有系統(tǒng)穩(wěn)定性好的優(yōu)點。</p><p>  1、本課題

12、的研究目的及意義</p><p>  隨著我國經(jīng)濟的迅速發(fā)展,人民生活水平的顯著提高,城市的交通日趨完善,出租車計價器的應用也越來越廣泛。雖然私家車的擁有量在大幅度地提高,但是出租車還是在我國的交通運輸中承擔著重要的角色,出租車計價器是出租車上必不可少的重要儀器,它是負責出租車營運收費的專用智能化儀表。用戶不僅要求計價器性能穩(wěn)定、計價準確而且對它的要求也越來越高。</p><p>  近年

13、來,我國出租車行業(yè)迅猛發(fā)展,出租車已經(jīng)成為我國城市公共交通的重要組成部分和現(xiàn)代化城市必備的基礎(chǔ)設(shè)施,成為人們工作、生活中不可缺少的交通工具。出租車服務行業(yè)和出租車計價器緊密相關(guān),因為出租車必須安裝出租車計價器才能投入營運。出租車計價器是一種能根據(jù)乘客乘坐出租車行駛距離和等候時間的多少進行計價,并直接顯示車費值的計量器具。計價器是出租車的經(jīng)營者和乘坐出租車的消費者之間用于公平貿(mào)易結(jié)算的工具,因而計價器計價準確與否,直接關(guān)系到經(jīng)營者和消費者

14、的經(jīng)濟利益。依據(jù)國家有關(guān)法律、法規(guī),出租車計價器是列入國家首批強制檢定的工作計量器具之一,也是近年來國家質(zhì)量技術(shù)監(jiān)督部門強化管理的六類重點計量器具之一。</p><p>  出租車計價器是乘客與司機雙方的交易準則,它是出租車行業(yè)發(fā)展的重要標志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計價器無論是對廣大出租車司機朋友還是乘客來說都是很必要的。因此,出租車計價器的研究也是十分有應用價值的。<

15、;/p><p>  2、出租車計價器的主要設(shè)計參數(shù)</p><p>  本課題對出租車計價器的設(shè)計要求如下:</p><p>  設(shè)計一個出租車自動計價器,計價包括起步價、行車里程計費、等待時間計費三部分,用數(shù)碼管顯示總金額,行駛公里數(shù),起步價為6.0元,3km之內(nèi)起步價計費,超過3km, 每增加1km增加4.2元,等待時間單價為超過等待時間10秒鐘1元。并且可以重新設(shè)

16、置白天、晚上和等待時間的單價。</p><p><b>  2.1、計費功能</b></p><p>  費用的計算是按行駛里程收費。本設(shè)計可以手動調(diào)起步價格、行車里程計費單價(白天和晚上)、等待時間單價。</p><p>  (1)當里程<3km時,按起步價計算費用</p><p>  (2)當里程>3km

17、時,白天按4.2元/km計費加起步價。晚上按2.4元/km計費加起步價。</p><p>  (3)等待累計時間>10s時,按1元/min計費</p><p><b>  2.2、顯示功能</b></p><p>  當電路電源接通后,LED數(shù)碼管全部點亮。前面4位數(shù)碼管顯示總價(起步價),中間2位顯示里程,最后兩位顯示當前單價。<

18、/p><p>  2.3、按鍵提供脈沖代替出租車行駛路程</p><p>  本課題是出租車計價器系統(tǒng)的設(shè)計。重點是設(shè)計出租車計價器的實用性,并盡量使最后的成品接近于商品。整個系統(tǒng)是以89S52單片機為中心,采用按鍵脈沖對輪胎轉(zhuǎn)數(shù)進行計數(shù),實現(xiàn)對出租車里程的測量,并最終計算出結(jié)果。</p><p><b>  3、設(shè)計方案</b></p>

19、;<p>  坐過出租車的人都知道,只要汽車一啟動,隨著行駛里程的增加,就會看到出租車前面的計價器里程數(shù)字顯示的讀數(shù)從零逐漸增大,而當行駛到某一值(如4km)計費數(shù)字顯示開始從起步價(如8元)增加。當出租車到達某地需要在那里等候時,司機只要按一下“計時”鍵,每等候一定的時間(如10分鐘),計費顯示就增加一個該收的等候費用(如每10分鐘收取1.50元)。出租車繼續(xù)行駛時,停止計算等候費用,繼續(xù)增加里程計費。到達目的地,便可按

20、顯示的數(shù)字收費。然后關(guān)閉計費器,對計數(shù)器清零,等待下次計費開始。</p><p>  通過考慮,計費系統(tǒng)最終是安裝在計程車上的,電源一般不是220V交流電壓,而是有電瓶輸出的直流電壓,因此采用輸入一個6~10V的直流電壓,再穩(wěn)壓得到5V電壓。采用單片機技術(shù),通過單片機作為主控器,利用數(shù)碼管作為顯示電路,采用外部晶振作為時鐘脈沖,通過按鍵可以方便調(diào)節(jié)。</p><p>  以下是系統(tǒng)流程圖,

21、如圖2.3所示:</p><p><b>  4、電路組成</b></p><p>  本設(shè)計由52單片機最小系統(tǒng)、存儲電路、按鍵控制電路、LED顯示電路及脈沖計數(shù)等幾部分組成。</p><p>  、52單片機最小系統(tǒng)</p><p>  單片機最小系統(tǒng)包括單片機、晶振電路、復位電路等組成。</p>&l

22、t;p><b>  4.2、存儲電路</b></p><p>  無論是智能儀器儀表還是單片機工業(yè)控制系統(tǒng)都要求其數(shù)據(jù)能夠安全可靠而不受干擾,特別是一些重要的設(shè)定參數(shù)(如溫度控制設(shè)定值)受到干擾后變成一個很大的數(shù)字,那么就有可能發(fā)生燒箱毀物的破壞性后果,給生產(chǎn)和經(jīng)濟帶來損失,因此必須選用可靠的24C02器件作為數(shù)據(jù)儲存單元。</p><p>  4.3、LED顯

23、示電路</p><p>  由于發(fā)光二極管基本上屬于電流敏感器件,其正向壓降的分散性很大, 并且還與溫度有關(guān),為了保證數(shù)碼管具有良好的亮度均勻度,就需要使其具有恒定的工作電流,且不能受溫度及其它因素的影響。另外,當溫度變化時驅(qū)動芯片還要能夠自動調(diào)節(jié)輸出電流的大小以實現(xiàn)色差平衡溫度補償。而本設(shè)計出租車計費器,基本上只需要顯示價錢與路程,利用數(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>  當電路電源

25、接通后,LED數(shù)碼管全部點亮。前面4位數(shù)碼管顯示總價(起步價),中間2位顯示里程,最后兩位顯示當前單價。圖中使用“計數(shù)”按鍵代替了霍爾傳感器,按鍵每按下一次,就會產(chǎn)生一個“模擬”脈沖,每5個脈沖為1公里。電源剛接通時前4位數(shù)碼管顯示當前的起步價,前3公里價格不變,從第4公里開始,每公里增加一次單價。若在10秒鐘內(nèi),系統(tǒng)沒有接收到脈沖信號,等待系統(tǒng)就會自行啟動,每10秒增加一次等待單價。所有價格都可以自行設(shè)定。</p>&l

26、t;p>  按鍵SB1為計價器清零鍵,即每按下一次,計價器前4位恢復為起步價,中間2位恢復為00,單價不變。SB4鍵為設(shè)置鍵,按下后第3位數(shù)碼管顯示1,進入白天單價調(diào)整;再次按下第3位數(shù)碼管顯示2,為夜間單價;第3次按下為等待單價;第4次為起步價,4種價格全部在最后2位數(shù)碼管上顯示出來。設(shè)置完成后,再次按下SB4鍵,恢復到計價狀態(tài)。</p><p>  SB2鍵為上調(diào)鍵,另一個功能是在計價狀態(tài)時按下后,可切

27、換白天、夜晚單價。SB3鍵為下調(diào)鍵。</p><p>  5.1、 中途等待服務程序</p><p>  當在計數(shù)狀態(tài)下開關(guān)沒有輸出信號,片內(nèi)的定時器便被啟動,每當計時到達一定時間,就對當前金額加上中途等待的單價,以后每10秒都自動加上中途等待的單價。當中途等待結(jié)束的時候,就自動切換到正常的計價。</p><p>  服務程序流程圖如圖4.1所示:</p>

28、;<p><b>  6、結(jié)論與心得</b></p><p>  經(jīng)過這幾個個月來不懈的努力與奮斗,我終于在老師的指導下完成了我的畢業(yè)設(shè)計,雖然它還有諸多需要完善的地方,但是拿著這件設(shè)計,我仍然有止不住的興奮。高興之余,我仍需深思: </p><p>  這件作品雖能初步解決出租車計算價錢的問題,但它仍有它的局限性,首先它不能自動調(diào)整黑天和白夜的單價轉(zhuǎn)

29、換,這個功能我需要以后的設(shè)計中努力完善,另外,如果配上語音效果那就更方便了司機和乘客,更加顯示人性化和快捷化。</p><p>  通過這次設(shè)計,我最大的收獲就是自己的動手能力和獨立解決問題的能力得到了很大的提高。雖然遇到了不少困難,但當我通過查資料和翻閱書籍的同時也學到了不少的知識,擴大了知識面,提高了知識水平經(jīng)過單元設(shè)計和系統(tǒng)設(shè)計鞏固了以前所學的專業(yè)知識,從方案形成到準備電路圖,到軟件設(shè)計,到聯(lián)機調(diào)試??每一

30、個小小的步驟,我都得到了很好的鍛煉。我學會了怎樣有效的收集整合資料;我學會了怎樣細心地檢查電路;我學會了怎樣虛心地尋求幫助;我學會了我也明白了,很多書本上的東西光靠趴在書本上學是學不到其中的精髓的,我們必須親自去試著實踐了,親自去經(jīng)歷失敗了才能對它們真正的掌握。理論必須聯(lián)系實際,而實踐試檢驗真理的唯一標準,我真正的懂得了這句話的真諦。在我以后的工作和生活中,我從此可以汲取很多經(jīng)驗,凡事都要自己去動下手,去實踐一下,遇到困難,要有耐心,有

31、信心,有細心,有恒心,有虛心,只有這樣,我才會在逆境中不斷前進。 </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;//////改進程序四位數(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口模擬時鐘口</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) // 延時時基為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ù)</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應答位</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>  ///////價格顯示</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ù)碼管顯示總價百位 &l

58、t;/p><p>  jshi=zongjia0%100/10; // 數(shù)碼管顯示總價十位</p><p>  jge=zongjia0%100%10; // 數(shù)碼管顯示總價個位</p><p>  lshi=licheng0/10; // 數(shù)碼管顯示里程十位<

59、;/p><p>  lge=licheng0%10; // 數(shù)碼管顯示里程個位</p><p>  dshi=danjia0/10; // 數(shù)碼管顯示單價十位</p><p>  dge=danjia0%10; </p><p>  // 數(shù)碼管顯示單價個位<

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個數(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); // 延時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); // 延時5秒</p><p> 

69、 while(!key3);</p><p>  while(key3num)</p><p><b>  {</b></p><p>  if(key3num==1) // key3按1次調(diào)白天單價</p><p><b>  {</b></p>

70、<p>  if(key1==0) // 判斷key1是否按下</p><p><b>  {</b></p><p>  delay(5); // 延時5秒消抖</p><p>  if(key1==0)

71、 // 如果key1按下</p><p><b>  {</b></p><p>  danjia1++; // 單價加1</p><p>  if(danjia1==100) // 加到100 </p><p>  danjia1=0

72、; // 給單價賦0 </p><p>  while(!key1); // 鍵彈起</p><p>  delay(5); // 延時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); // 延時5秒消抖</p><p>  if(key2==0) // 如果key2按下</p><p><b>  {</b></p><p>  danjia1--;

75、 // 單價減1</p><p>  if(danjia1==-1) // 單價減到-1</p><p>  danjia1=99; // 令單價等于99</p><p>  while(!key2); // 鍵彈起</p&g

76、t;<p>  delay(5); // 延時5秒消抖</p><p>  while(!key2); // 鍵彈起</p><p><b>  }</b></p><p><b>  }</b></p>

77、<p>  display(1,0,danjia1); // 數(shù)碼管顯示單價 </p><p><b>  }</b></p><p>  if(key3num==2) // key3按2次調(diào)夜晚單價</p><p><b>  {</b>&l

78、t;/p><p>  write_data(1,danjia1); // 存單價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)等待單價</p><p><b>  {</b>

84、;</p><p>  write_data(2,danjia2); // 存單價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)起步價</p><p><b>  {</b></p>&l

90、t;p>  write_data(3,danjia3); // 存單價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); // 存單價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); // 延時</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); // 白天單價</p><p>  d

102、anjia2=read_data(2); // 夜晚單價</p><p>  danjia3=read_data(3); // 等待單價</p><p>  qibu=read_data(4); // 起步價</p><p>  //////////////////////

103、//////////////////////////</p><p>  aa=0; // 數(shù)碼管動態(tài)掃描的定時器時基個數(shù)</p><p>  bb=0; // 判斷是否等待的時基個數(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; // 開定時器T0中斷</p><p>  TR0=1; // 開定時器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; // 金額計算</p><p><b>  else</b></p><p&g

108、t;  zongjia=qibu+dengdai*danjia3; // 起步公里內(nèi)金額計算</p><p><b>  }</b></p><p>  ////////////////價格計算的算法</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(); // 切換白天夜晚單價</p><p>  jisuan(); // 計算總金額</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); // 延時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); // 延時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>  // 測試是否進入等待</p><p>  if(bb==10000) // 10s無反應進入等待計費</p><p><b>  {</b></p><p><b>  bb=0;</b></p><p&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論