計(jì)程車計(jì)價(jià)器設(shè)計(jì)畢業(yè)設(shè)計(jì)論文_第1頁(yè)
已閱讀1頁(yè),還剩32頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  畢業(yè)設(shè)計(jì)(論文)說(shuō)明書</p><p>  系 部: 電氣工程系 </p><p>  專 業(yè): 電子信息技術(shù) </p><p>  題 目: 計(jì)程車計(jì)價(jià)器設(shè)計(jì) </p>

2、;<p>  畢業(yè)設(shè)計(jì)(論文)中文摘要</p><p>  畢業(yè)設(shè)計(jì)(論文)外文摘要</p><p><b>  目錄</b></p><p>  1 緒論 ……………………………………………………………………………1</p><p>  2 方案論證 ……………………………………………………………

3、…………2</p><p>  3設(shè)計(jì)部分 ………………………………………………………………………4</p><p>  3.1系統(tǒng)工作原理 …………………………………………………………………4</p><p>  3.1.1功能說(shuō)明 ……………………………………………………………………4</p><p>  3.2硬件設(shè)計(jì) ………

4、………………………………………………………………10</p><p>  3.2.1單片機(jī)最小系統(tǒng)單元 ………………………………………………………10</p><p>  3.2.2A44E霍爾傳感器檢測(cè)單元 …………………………………………………11</p><p>  3.2.3AT24C01存儲(chǔ)單元 ……………………………………………………………13<

5、/p><p>  3.2.4鍵盤調(diào)整單元 ………………………………………………………………14</p><p>  3.2.5顯示單元 ……………………………………………………………………15</p><p>  3.3軟件設(shè)計(jì) ……………………………………………………………………… 17</p><p>  3.3.1系統(tǒng)主程序 …………

6、………………………………………………………17</p><p>  3.3.2中斷程序 ……………………………………………………………………18</p><p>  3.3.2.1里程計(jì)數(shù)中斷程序…………………………………………………………18</p><p>  3.3.2.2中途等待中斷程序…………………………………………………………19</p>

7、<p>  3.3.3計(jì)算程序………………………………………………………………………19</p><p>  3.3.4顯示程序………………………………………………………………………20</p><p>  3.3.5鍵盤程序………………………………………………………………………22</p><p>  結(jié)論 …………………………………………………………

8、………………………23</p><p>  致謝 …………………………………………………………………………………24</p><p>  參考文獻(xiàn) ……………………………………………………………………………25</p><p>  附錄A源程序參考 ………………………………………………………………26</p><p><b> 

9、 1 緒論</b></p><p>  隨著出租車行業(yè)的發(fā)展,出租車已經(jīng)是城市交通的重要組成部分,從加強(qiáng)行業(yè)管理以及減少司機(jī)與乘客的糾紛出發(fā),具有良好性能的計(jì)價(jià)器對(duì)出租車司機(jī)和乘客來(lái)說(shuō)都是很必要的。而采用模擬電路和數(shù)字電路設(shè)計(jì)的計(jì)價(jià)器整體電路的規(guī)模較大,用到的器件多,造成故障率高,難調(diào)試。而采用單片機(jī)進(jìn)行的設(shè)計(jì),相對(duì)來(lái)說(shuō)功能強(qiáng)大,用較少的硬件和適當(dāng)?shù)能浖嗷ヅ浜峡梢院苋菀椎貙?shí)現(xiàn)設(shè)計(jì)要求,且靈活性強(qiáng),可

10、以通過(guò)軟件編程來(lái)完成更多的附加功能。本設(shè)計(jì)采用AT89S52單片機(jī)為主控器,以A44E霍爾傳感器測(cè)距,實(shí)現(xiàn)對(duì)出租車的多功能的計(jì)價(jià)設(shè)計(jì),并采用AT24C01實(shí)現(xiàn)在系統(tǒng)掉電的時(shí)候保存單價(jià)等信息,輸出采用8段數(shù)碼顯示管。本電路設(shè)計(jì)的計(jì)價(jià)器不但能實(shí)現(xiàn)基本的計(jì)價(jià),而且還能根據(jù)白天,黑夜和中途等待來(lái)調(diào)節(jié)單價(jià)。</p><p><b>  2 方案認(rèn)證</b></p><p>  

11、方案一:采用數(shù)字電路控制。其原理方框如圖2-1所示。采用傳感器件輸出脈沖信號(hào)經(jīng)過(guò)放大整形作為移位寄存器的脈沖,實(shí)現(xiàn)計(jì)價(jià),但是考慮到這種電路過(guò)于簡(jiǎn)單性能不夠穩(wěn)定,而且不能調(diào)節(jié)單價(jià),也不能根據(jù)天氣調(diào)節(jié)計(jì)費(fèi)標(biāo)準(zhǔn),電路不夠?qū)嵱?lt;/p><p>  圖2-1 數(shù)字電路控制原理圖</p><p>  方案二:采用單片機(jī)控制。利用單片機(jī)豐富的10端口,及其靈活性,實(shí)現(xiàn)基本里程計(jì)價(jià)功能和價(jià)格調(diào)節(jié)、時(shí)鐘顯示

12、工能。如圖2-2</p><p>  圖2-2單片機(jī)控制原理圖</p><p>  通過(guò)以上比較,單片機(jī)方案有較大的活動(dòng)空間,所以采用后一種方案</p><p><b>  3 設(shè)計(jì)部分 </b></p><p>  3.1系統(tǒng)工作原理 </p><p>  功能說(shuō)明:出租車計(jì)價(jià)器根據(jù)乘客乘坐

13、汽車行駛距離和等候時(shí)間的多少進(jìn)行計(jì)價(jià),并在行程中同步顯示車費(fèi)值。從起步價(jià)開(kāi)始,當(dāng)汽車程行駛未滿3公里時(shí),均按起步價(jià)計(jì)算。過(guò)3公里后,實(shí)現(xiàn)每1公里單價(jià)收費(fèi),中間遇暫停時(shí),計(jì)程數(shù)不再增加,開(kāi)始計(jì)時(shí)收費(fèi),測(cè)距收費(fèi)和測(cè)時(shí)收費(fèi)的和便構(gòu)成了一位乘客的車費(fèi)。同時(shí),白天和夜晚價(jià)格不同,可以進(jìn)行切換。白天單價(jià)、夜晚單價(jià)、等待單價(jià)和起步價(jià)格都可通過(guò)獨(dú)立鍵盤進(jìn)行調(diào)節(jié)。(默認(rèn)起步價(jià)為5元/3公里,里程單價(jià)白天為1.5元/公里,夜晚為1.8元/公里,等待計(jì)時(shí)單價(jià)

14、為0.5元/5分鐘)</p><p><b>  3.1.1基本原理</b></p><p>  計(jì)數(shù)器系統(tǒng)主要由五部分組成:AT89S52單片機(jī)、A44E霍爾傳感器、獨(dú)立鍵盤、EEPROM AT24C01和顯示數(shù)碼管。</p><p>  AT89S52引腳單片機(jī)如圖3-1 </p><p>  圖3-1 AT89S5

15、2引腳圖</p><p>  AT89S52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含8k Bytes ISP(In-system programmable)的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS -51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89S52

16、可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。   AT89S52具有如下特點(diǎn):40個(gè)引腳,8k Bytes Flash片內(nèi)程序存儲(chǔ)器,256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè) 全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。</p><p>  此外,AT89S52設(shè)

17、計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷 系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三 種封裝形式,以適應(yīng)不同產(chǎn)品的需求。主要功能特性:  · 兼容MCS-51指令系統(tǒng)        &#

18、183; 8k可反復(fù)擦寫(>1000次)ISP Flash ROM  · 32個(gè)雙向I/O口        · 4.5-5.5V工作電壓  · 3個(gè)16位可編程定時(shí)/計(jì)數(shù)器  · 時(shí)鐘頻率0-33MHz  · 全雙工UART串行中斷口線  

19、0; · 256x8bit內(nèi)部RAM  · 2個(gè)外部中斷源        · 低功耗空閑和省電模式  · 中斷喚醒省電模式        · 3級(jí)加密位  · 看門狗(WDT)電路    

20、0;   · 軟件設(shè)置空閑和省電功能  · 靈活的ISP字節(jié)和分頁(yè)編程  · 雙數(shù)據(jù)寄存器指針</p><p>  霍爾傳感器安裝在車輪上,主要檢測(cè)汽車行進(jìn)的公里數(shù),并產(chǎn)生一系列相應(yīng)的脈沖輸出,脈沖送到單片機(jī)進(jìn)行處理,單片機(jī)根據(jù)程序設(shè)定通過(guò)計(jì)算脈沖數(shù)換算出行駛公里數(shù),再根據(jù)從EEPROM中讀取的價(jià)格等相關(guān)數(shù)據(jù)進(jìn)行金額的計(jì)算,計(jì)算好的金額

21、、里程和單價(jià)都實(shí)時(shí)地顯示在數(shù)碼管上。獨(dú)立鍵盤可以調(diào)節(jié)價(jià)格等相關(guān)數(shù)據(jù),按下相應(yīng)的按鈕,產(chǎn)生信號(hào)交由單片機(jī)處理并實(shí)時(shí)顯示出來(lái),調(diào)節(jié)好的數(shù)據(jù)存儲(chǔ)到EEPROM中,掉電后可以使調(diào)好的數(shù)據(jù)不丟失,下次得電后直接從EEPROM讀到單片機(jī),系統(tǒng)結(jié)構(gòu)圖如圖3-2。</p><p>  圖3-2 系統(tǒng)結(jié)構(gòu)圖 </p><p>  AT24C01引

22、腳CAT24WC01/02/04/08/16 是一個(gè)1K/2K/4K/8K/16K 位串行CMOS E2PROM,內(nèi)部含有128/256/512/1024/2048 個(gè)8 位字節(jié),CATALYST 公司的先進(jìn)CMOS 技術(shù)實(shí)質(zhì)上減少了器件的功耗,CAT24WC01有一個(gè)8 字節(jié)頁(yè)寫緩沖器,CAT24WC02/04/08/16 有一個(gè)16 字節(jié)頁(yè)寫緩沖器,該器件通過(guò)I2C 總線接口進(jìn)行操作有一個(gè)專門的寫保護(hù)功能如圖3-3</p>

23、;<p><b>  圖3-3管理腳配置</b></p><p>  顯示數(shù)碼管LED數(shù)碼管里面有8只發(fā)光二極管,與實(shí)驗(yàn)板P1端口所接的二極管是相通的,分別記作a、b、c、d、e、f、g、dp,其中dp為小數(shù)點(diǎn),每只發(fā)光二極管都有一根外部引腳上,而另外一只引腳就連接在一起同樣也引接外部引腳上,記作公共端(com),如圖3-4</p><p>  圖3-4

24、顯示數(shù)碼管LED</p><p>  編寫程序?qū)崿F(xiàn)80C51的P0口控制一個(gè)數(shù)碼管顯示,讓它循環(huán)顯示0~9等十位數(shù)字,時(shí)間間隔為1秒鐘。</p><p>  利用查表程序可以完成BCD與七段碼的轉(zhuǎn)換,從而取代硬件七段譯碼電路,查表程序本身并無(wú)復(fù)雜之處,需要注意的是七段碼的取值,因?yàn)槠叨螖?shù)碼管有共陽(yáng)極及共陰極之分。共陽(yáng)極是低電平有效時(shí)有效輸入。共陰極是高電平時(shí)有效輸入(所以在C51單片機(jī)要使

25、發(fā)光二極管點(diǎn)亮,數(shù)碼管是共陽(yáng)極的就要讓I/O口的電位變?yōu)榈碗娢弧H绻枪碴帢O的就是合I/O口的電位變?yōu)楦唠娢?,因些不同的器件會(huì)有不同的數(shù)碼值。另外引腳信號(hào)與碼位的對(duì)應(yīng)關(guān)系也會(huì)影響碼值,即引腳可以由高到低排列(7-1),也可以由低到高排列(1-7)。本實(shí)驗(yàn)的數(shù)碼管為共陽(yáng)極,采用由高到低的排列 。</p><p>  ORG 0100H ;程序起始地址</p><p>  MAIN: MOV

26、 R2,#00H ;段碼地址表指針清零</p><p>  MOV DPTR,#TAB ;指向段碼地址表起始地址</p><p>  DSUP: MOV A,R2 ;將R2的內(nèi)容送入累加器A</p><p>  MOVC A,@A+DPTR ;累加器的值與從數(shù)據(jù)表中取出的數(shù)碼顯示值相加后送入累加器A</p><p>  MOV P0,A ;將

27、累加器的值送入P0口顯示</p><p>  MOV R1,#11111110B ;將11111110B(位選P2.0)送入寄存器R1</p><p>  MOV P2,R1 ;將R1的值送入P2口進(jìn)行位選</p><p>  LCALL YSH1S ;調(diào)用延時(shí)1秒子程序</p><p>  INC R2 ;段碼地址表指針加1</p&g

28、t;<p>  CJNE R2,#0AH,DSUP ;如果0-9顯示完畢,程序重新開(kāi)臺(tái)執(zhí)行</p><p>  SJMP MAIN ;跳轉(zhuǎn)到MAIN入口</p><p>  YSH1S:MOV R3,#05H ;延時(shí)1秒子程序</p><p>  LOOP0:MOV R4,#0C8H</p><p>  LOOP1:MOV R5

29、,#0FAH</p><p>  XHD: DJNZ R5,XHD</p><p>  DJNZ R4,LOOP1</p><p>  DJNZ R3,LOOP0</p><p><b>  RET</b></p><p>  TAB: DB 0C0H ;0-9段碼表</p><

30、;p><b>  DB 0F9H</b></p><p><b>  DB 0A4H</b></p><p><b>  DB 0B0H</b></p><p><b>  DB 99H</b></p><p><b>  DB 92H&l

31、t;/b></p><p><b>  DB 82H</b></p><p><b>  DB 0F8H</b></p><p><b>  DB 80H</b></p><p><b>  DB 90H</b></p><p&g

32、t;<b>  END</b></p><p><b>  3.2 硬件設(shè)計(jì)</b></p><p>  3.2.1 單片機(jī)最小系統(tǒng)單元</p><p>  主控機(jī)系統(tǒng)采用了Atmel 公司生產(chǎn)的 AT89S52單片機(jī),它含有256 字節(jié)數(shù)據(jù)存儲(chǔ)器,內(nèi)置8K 的電可擦除FLASH ROM,可重復(fù)編程,大小滿足主控機(jī)軟件系

33、統(tǒng)設(shè)計(jì),所以不必再擴(kuò)展程序存儲(chǔ)器。復(fù)位電路和晶振電路是AT89S52 工作所需的最簡(jiǎn)外圍電路。單片機(jī)最小系統(tǒng)電路圖如 圖3-5所示。 </p><p>  圖3-5 單片機(jī)最小系統(tǒng)圖</p><p>  AT89S52 的復(fù)位端是一個(gè)史密特觸發(fā)輸入,高電平有效。RST端若由低電平上升到高電平并持續(xù)2個(gè)周期,系統(tǒng)將實(shí)現(xiàn)一次復(fù)位操作。在復(fù)位電路中,按一下復(fù)位開(kāi)關(guān)就使在RST端出現(xiàn)一段時(shí)間的高電

34、平,外接11.0592M 晶振和兩</p><p>  30pF 電容組成系統(tǒng)的內(nèi)部時(shí)鐘電路。</p><p>  3.2.2 A44E霍爾傳感器檢測(cè)單元</p><p>  霍爾傳感器是一種磁傳感器。用它可以檢測(cè)磁場(chǎng)及其變化,可在各種與磁場(chǎng)有關(guān)的場(chǎng)合中使用?;魻杺鞲衅饕曰魻栃?yīng)為其工作基礎(chǔ),是由霍爾元件和它的附屬電路組成的集成傳感器?;魻杺鞲衅髟诠I(yè)生產(chǎn)、交通運(yùn)

35、輸和日常生活中有著非常廣泛的應(yīng)用。</p><p>  由于霍爾元件產(chǎn)生的電勢(shì)差很小,故通常將霍爾元件與放大器電路、溫度補(bǔ)償電路及穩(wěn)壓電源電路等集成在一個(gè)芯片上,稱之為霍爾傳感器。如圖3-6</p><p><b>  圖3-6霍爾傳感器</b></p><p>  A44E 屬于開(kāi)關(guān)型的霍爾器件,其工作電壓范圍比較寬(4.5~18V),其輸出

36、的信號(hào)符合TTL電平標(biāo)準(zhǔn),可以直接接到單片機(jī)的IO 端口上,而且其最高檢測(cè)頻率可達(dá)到1MHZ。</p><p>  A44E 集成霍耳開(kāi)關(guān)由穩(wěn)壓器A、霍耳電勢(shì)發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D和OC門輸出E五個(gè)基本部分組成。</p><p>  在輸入端輸入電壓Vcc,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾電勢(shì)發(fā)生器的兩端,根據(jù)霍爾效應(yīng)原理,當(dāng)霍爾片處在磁場(chǎng)中時(shí),在垂直于磁場(chǎng)的方向通以電

37、流,則與這二者相垂直的方向上將會(huì)產(chǎn)生霍爾電勢(shì)差VH輸出,該VH信號(hào)經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC門輸出。當(dāng)施加的磁場(chǎng)達(dá)到工作點(diǎn)(即Bop)時(shí),觸發(fā)器輸出高電壓(相對(duì)于地電位),使三極管導(dǎo)通,此時(shí)OC門輸出端輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態(tài)為關(guān)。</p><p>  這樣兩次電壓變換,使霍爾開(kāi)關(guān)完成了一次開(kāi)關(guān)動(dòng)作。</p><p>  A44E

38、霍爾傳感器原理如圖3-7所示</p><p>  圖3-7 A44E霍爾傳感器原理圖</p><p>  里程計(jì)算是通過(guò)安裝在車輪上的霍爾傳感器檢測(cè)到的脈沖信號(hào),送到單片機(jī)產(chǎn)生中斷,單片機(jī)再根據(jù)程序設(shè)定,計(jì)算出里程。其原理如圖3-8所示。</p><p>  圖3-8 傳感器測(cè)距示意圖</p><p>  本系統(tǒng)選擇了將A44E的脈沖輸出口接

39、到P3.3口外部中斷1作為信號(hào)的輸入端(這樣可以減少程序設(shè)計(jì)的麻煩),車輪每轉(zhuǎn)一圈(設(shè)車輪的周長(zhǎng)是1米),霍爾開(kāi)關(guān)就檢測(cè)并輸出信號(hào),引起單片機(jī)的中斷,對(duì)脈沖計(jì)數(shù),當(dāng)計(jì)數(shù)達(dá)到1000次時(shí),即1公里,單片機(jī)就控制將金額自動(dòng)增加,如圖3-9。</p><p>  圖3-9 A44E霍爾元件接線圖</p><p>  3.2.3 AT24C01存儲(chǔ)單元</p><p> 

40、 存儲(chǔ)單元的作用是在電源斷開(kāi)的時(shí)候,存儲(chǔ)當(dāng)前設(shè)定的單價(jià)信息。AT24C01 是Ateml公司的1KB的電可擦除存儲(chǔ)芯片,采用兩線串行的總線和單片機(jī)通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10uA(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8 腳的DIP 封裝,使用方便。</p><p>  AT24C01提供電可擦除的串行1024位存儲(chǔ)或可編程只讀存儲(chǔ)器(EEPROM)12

41、8字(8位/字)。芯片在低壓的工業(yè)與商業(yè)應(yīng)用中進(jìn)行了最優(yōu)化。AT24C01的封裝為8腳PDIP、8腳JEDECSOIC、8腳TSSOP,通過(guò)2線制串行接口進(jìn)行數(shù)據(jù)傳輸。另外,整個(gè)系列有2.7V(2.7V至5.5V)和1.8V (1.8V至5.5V)兩個(gè)版本。</p><p>  特點(diǎn):低壓和標(biāo)準(zhǔn)電壓運(yùn)行模式,內(nèi)建128x8存儲(chǔ)序列,2線制串行接口,雙向數(shù)據(jù)傳送協(xié)議,100kHz(1.8V,2.5V,2.7V) 4

42、00kHz(和5V) 兼容4字頁(yè)寫方式寫同步時(shí)鐘(最大10ms)高可靠性-極限:1M寫時(shí)鐘周期,數(shù)據(jù)保存:100年AT24C02芯片引腳配置如圖3-10所示。</p><p>  圖3-10 AT24C02芯片引腳配置 </p><p>  存儲(chǔ)單元電路連接如圖3-11所示。</p><p>  圖3-11存儲(chǔ)單元電路原理圖</p>

43、;<p>  圖中R4、R5 是上拉電阻,其作用是減少AT24C01 的靜態(tài)功耗。由于AT24C01的數(shù)據(jù)線和地址線是復(fù)用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(時(shí)鐘脈沖)和SDA(數(shù)據(jù)/地址)與單片機(jī)P2.2和P2.3口連接,進(jìn)行傳送數(shù)據(jù)。</p><p>  每當(dāng)設(shè)定一次單價(jià),系統(tǒng)就自動(dòng)調(diào)用存儲(chǔ)程序,將單價(jià)信息保存在芯片內(nèi);當(dāng)系統(tǒng)重新上電的時(shí)候,自動(dòng)調(diào)用讀存儲(chǔ)器程序,將存儲(chǔ)器內(nèi)的單價(jià)等

44、信息</p><p>  3.2.4 鍵盤調(diào)整單元</p><p>  當(dāng)單價(jià)等信息需要進(jìn)行修改時(shí),就要用到鍵盤進(jìn)行修改。由于調(diào)節(jié)信息不多,故采用4個(gè)獨(dú)立鍵盤即可,分別實(shí)現(xiàn)清零、切換、增大、減小和功能等作用。電路原理如圖3-12所示。</p><p>  圖3-12 鍵盤調(diào)整單元接線圖</p><p>  S1:接P1.0口,對(duì)上一次的計(jì)費(fèi)

45、進(jìn)行清零,為下次載客準(zhǔn)備</p><p>  S2:接P1.1口,實(shí)現(xiàn)白天和夜晚單價(jià)的切換;當(dāng)功能鍵S4按下時(shí),S2可對(duì)數(shù)據(jù)進(jìn)行增大。</p><p>  S3:接P1.2口,當(dāng)功能鍵S4按下時(shí),S3可對(duì)數(shù)據(jù)進(jìn)行減小。</p><p>  S4:接P1.3口,按1次,進(jìn)入調(diào)整白天單價(jià);按2次,進(jìn)入調(diào)整夜晚單價(jià);按3次,進(jìn)入調(diào)整等待單價(jià);按4次,進(jìn)入調(diào)整起步價(jià);按5次

46、,返回。</p><p>  3.2.5 顯示單元</p><p>  顯示單元由7個(gè)8段共陽(yáng)數(shù)碼管組成,采用動(dòng)態(tài)掃描進(jìn)行顯示。前三個(gè)數(shù)碼管分別接P3.0、P3.1和P3.2,用于顯示總金額;中間兩個(gè)分別接P3.4和P3.5,用于顯示里程;后邊兩個(gè)分別接P3.6和P3.7,用于顯示單價(jià)。顯示原理如圖3-13 </p><p>  圖3-13顯

47、示原理圖 </p><p><b>  數(shù)碼管驅(qū)動(dòng)方式:</b></p><p>  數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類靜態(tài)顯示驅(qū)動(dòng):1.靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O端口進(jìn)行驅(qū)動(dòng),或者

48、使用如BCD碼二-十進(jìn)制譯碼器譯碼進(jìn)行驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)的優(yōu)點(diǎn)是編程簡(jiǎn)單,顯示亮度高,缺點(diǎn)是占用I/O端口多,如驅(qū)動(dòng)5個(gè)數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來(lái)驅(qū)動(dòng),要知道一個(gè)89S51單片機(jī)可用的I/O端口才32個(gè)呢:),實(shí)際應(yīng)用時(shí)必須增加譯碼驅(qū)動(dòng)器進(jìn)行驅(qū)動(dòng),增加了硬件電路的復(fù)雜性。</p><p>  2.動(dòng)態(tài)顯示驅(qū)動(dòng):數(shù)碼管動(dòng)態(tài)顯示接口是單片機(jī)中應(yīng)用最為廣泛的一種顯示方式之一,動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)

49、碼管的8個(gè)顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi),該位就顯示出字形,沒(méi)有選通的數(shù)碼管就不會(huì)亮。通過(guò)分時(shí)輪流控制各個(gè)數(shù)碼管的的COM端,就使各個(gè)數(shù)

50、碼管輪流受控顯示,這就是動(dòng)態(tài)驅(qū)動(dòng)。在輪流顯示過(guò)程中,每位數(shù)碼管的點(diǎn)亮?xí)r間為1~2ms,由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),盡管實(shí)際上各位數(shù)碼管并非同時(shí)點(diǎn)亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會(huì)有閃爍感,動(dòng)態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。</p><p>  主要參數(shù):8字高度:8字上沿與下沿的距離。比外型高度小。通常用英寸來(lái)表示。范圍一般為

51、0.25-20英寸。長(zhǎng)*寬*高:長(zhǎng)——數(shù)碼管正放時(shí),水平方向的長(zhǎng)度;寬——數(shù)碼管正放時(shí),垂直方向上的長(zhǎng)度;高——數(shù)碼管的厚度。時(shí)鐘點(diǎn):四位數(shù)碼管中,第二位8與第三位8字中間的二個(gè)點(diǎn)。一般用于顯示時(shí)鐘中的秒。</p><p>  數(shù)碼管應(yīng)用:數(shù)碼管是一類顯示屏 通過(guò)對(duì)其不同的管腳輸入相對(duì)的電流 會(huì)使其發(fā)亮 從而顯示出 數(shù)字能夠顯示 時(shí)間 日期 溫度 等所有可用數(shù)字表示的參數(shù)</p><p>

52、  由于它的價(jià)格便宜 使用簡(jiǎn)單 在電器 特別是家電領(lǐng)域應(yīng)用極為廣泛 空調(diào) 熱水器冰箱等等絕大多數(shù) 熱水器用的都是數(shù)碼管 其他家電 也用液晶屏與 熒光屏數(shù)碼管使用的電流與電壓</p><p>  電流:靜態(tài)時(shí),推薦使用10-15mA;動(dòng)態(tài)時(shí),16/1動(dòng)態(tài)掃描時(shí),平均電流為4-5mA,峰值電流50-60mA。 </p><p><b> 

53、 3.3 軟件設(shè)計(jì)</b></p><p>  3.3.1 系統(tǒng)主程序</p><p>  在主程序模塊中,需要完成對(duì)各參量和接口的初始化、出租車起價(jià)和單價(jià)的初始化以及中斷、計(jì)算、循環(huán)等工作。另外,在主程序模塊中還需要設(shè)置啟動(dòng)/清除標(biāo)志寄存器、里程寄存器和價(jià)格寄存器,并對(duì)它們進(jìn)行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動(dòng)、清除、計(jì)程和計(jì)價(jià)等不同的操作</

54、p><p>  當(dāng)汽車運(yùn)行起來(lái)時(shí),就啟動(dòng)計(jì)價(jià),根據(jù)里程寄存器中的內(nèi)容計(jì)算和判斷行駛里程是否已超過(guò)起步價(jià)公里數(shù)。若已超過(guò),則根據(jù)里程值、每公里的單價(jià)數(shù)和起步價(jià)數(shù)來(lái)計(jì)算出當(dāng)前的總金額,并將結(jié)果存于總金額寄存器中;中途等待時(shí),無(wú)脈沖輸入,不產(chǎn)生中斷,當(dāng)時(shí)間超過(guò)等待設(shè)定值時(shí),開(kāi)始進(jìn)行計(jì)時(shí),并把等待價(jià)格加到總金額里,然后將總金額、里程和單價(jià)送數(shù)碼管顯示出來(lái)。程序流程如圖3-14</p><p>  圖3

55、-14主程序流程圖 </p><p>  3.3.2 中斷程序</p><p>  3.3.2.1 里程計(jì)數(shù)中斷程序</p><p>  每當(dāng)霍爾傳感器輸出一個(gè)低電平信號(hào)就使單片機(jī)中斷一次,當(dāng)里程計(jì)數(shù)器對(duì)里程脈沖計(jì)滿1000次時(shí),進(jìn)入里程計(jì)數(shù)中斷服務(wù)程序中,里程變量加一。主函數(shù)中總金額也相應(yīng)地變化。</p><p>  #include

56、<reg51.h></p><p>  void init(void)//聲明中斷初始化</p><p>  { EA=1;//中斷總開(kāi)關(guān)</p><p>  EX0=1;//開(kāi)中斷0開(kāi)關(guān)。中斷1為,EX1=1;</p><p>  IT1=1;//采用邊沿觸發(fā),下降沿有效。IT1=0為低電平觸發(fā)中斷。</p>

57、<p><b>  }</b></p><p><b>  main()</b></p><p>  { init();調(diào)用中斷初始化函數(shù)</p><p><b>  ==</b></p><p><b>  ===主程序;</b></p

58、><p><b>  }</b></p><p>  void in_0(void)interrupt 0//中斷服務(wù)函數(shù)</p><p><b>  { ==</b></p><p><b>  ==要服務(wù)的程序</b></p><p><b>

59、  }</b></p><p>  3.3.2.2 中途等待中斷程序</p><p>  在中途等待中斷程序中,每1ms產(chǎn)生一次中斷,將當(dāng)前里程值送入某個(gè)緩存變量,每5分鐘將緩存變量中的值和當(dāng)前里程值比較,當(dāng)汽車停止,霍爾傳感器5分鐘沒(méi)有輸出信號(hào),當(dāng)前里程值和緩存變量?jī)?nèi)的值相同,則進(jìn)入等待計(jì)時(shí),每5分鐘記一次價(jià)格。</p><p>  3.3.3 計(jì)

60、算程序</p><p>  計(jì)算程序根據(jù)里程數(shù)分別進(jìn)入不同的計(jì)算公式。如果里程大于3公里,則執(zhí)行公式:總金額=起步價(jià)+(里程-3)*單價(jià)+等待時(shí)間*等待單價(jià);否則,執(zhí)行公式:總金額=起步價(jià)+等待時(shí)間*等待單價(jià)。計(jì)算程序流程如圖3-15所示</p><p>  圖3-15計(jì)算程序流程圖</p><p>  3.3.4 顯示程序</p><p>

61、;  顯示程序利用定時(shí)器每1ms產(chǎn)生一次中斷,相應(yīng)變量置位,點(diǎn)亮一個(gè)數(shù)碼管,顯示一位數(shù)據(jù),利用主函數(shù)內(nèi)的循環(huán),實(shí)現(xiàn)動(dòng)態(tài)掃描顯示,同時(shí)根據(jù)數(shù)碼管余輝和人眼暫留現(xiàn)象,即可實(shí)現(xiàn)顯示。</p><p>  #include <16F877.h>#device ADC="10"#use delay(clock=20000000)#fuses NOWDT,HS, NOPUT, NOPRO

62、TECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG</p><p>  #use fast_io(A)#use fast_io(B)#use fast_io(C)</p><p>  //#define  AMODE    0X3F//#define  BMODE  

63、60; 0X00//#define  CMODE    0X00</p><p>  //#include "C:\JCYCAD\new\new.h"</p><p>  #include /*#int_RTCCRTCC_isr() {</p><p>  }*/void  lcd_D

64、SPly00(void)     {      lcd_cursor_posi(1,1);printf(lcd_data,"********************");      lcd_cursor_posi(1,2);printf(lcd_data,"

65、60;  Hello!  Clarion  ");      lcd_cursor_posi(1,3);printf(lcd_data,"    PWB-PIN-BASE    ");      lcd_cursor

66、_posi(1,4);printf(lcd_data,"********************");     }void  lcd_dsply01(void)      {      lcd_cursor_posi(1,1);printf(lcd_data,&

67、quot;********************");      lcd_cursor_posi(1,2);printf(lcd_data,"    PWB-PIN-BASE    ");      lcd_cursor_</p>

68、<p>  void main() {</p><p>  //set_tris_a(AMODE);   //set_tris_b(BMODE);   //set_tris_c(CMODE);</p><p>  set_tris_a(3f);   set_tris_b(0);   set_

69、tris_c(0);   setup_adc_ports(NO_ANALOGS);   setup_adc(ADC_OFF);   setup_psp(PSP_DISABLED);   setup_spi(FALSE);   setup_counters(RTCC_INTERNAL,RTCC_DIV_4); 

70、0; setup_timer_1(T1_DISABLED);   setup_timer_2(T2_DISABLED,0,1);   enable_interrupts(INT_RTCC);&nb </p><p>  3.3.5 鍵盤程序</p><p>  鍵盤采用查詢的方式,放在主程序中,當(dāng)沒(méi)有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,

71、一旦右按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。流程圖如圖3-16。</p><p>  圖3-16鍵盤程序流程圖</p><p><b>  結(jié)論</b></p><p>  經(jīng)過(guò)這些天有關(guān)于出租車計(jì)價(jià)器的課程設(shè)計(jì),使我對(duì)單片機(jī)的應(yīng)用有了更深的了解。在課程設(shè)計(jì)的過(guò)程中,還是碰到了許多的問(wèn)題。比如,對(duì)于數(shù)碼管動(dòng)態(tài)掃描顯示和鍵盤的延時(shí)防抖

72、的綜合編程不能較好地解決;對(duì)于代碼的前后順序及調(diào)用掌握得還不夠好;對(duì)于一些相關(guān)的應(yīng)用軟件沒(méi)能熟練掌握。通過(guò)這幾天晚上的苦想和反復(fù)調(diào)試,以及參考網(wǎng)上的程序,最終還是把問(wèn)題解決了。</p><p>  通過(guò)這次課程設(shè)計(jì),我最大的收獲就是自己的動(dòng)手能力和獨(dú)立解決問(wèn)題的能力得到了很大的提高,也充分體會(huì)到了自己設(shè)計(jì)東西的樂(lè)趣、學(xué)會(huì)查閱資料和對(duì)別人的東西融會(huì)變通的重要性,也明白了很多知識(shí)光靠趴在書本上學(xué)是學(xué)不到其中的精髓的,

73、必須親自去試著實(shí)踐,親自去經(jīng)歷才能對(duì)它們真正的掌握,凡事都要自己去動(dòng)下手,去實(shí)踐一下,遇到困難,永遠(yuǎn)不要沮喪氣餒。在動(dòng)手的過(guò)程中,不僅能增強(qiáng)實(shí)踐能力,而且在理論上可以有更深的認(rèn)識(shí);這次設(shè)計(jì)給了我極大的鼓舞和信心,相信在以后的學(xué)習(xí)中可以通過(guò)不斷的摸索和實(shí)踐來(lái)提高其他方面的知識(shí)。</p><p><b>  致謝</b></p><p>  匆忙的學(xué)習(xí)生涯漸漸走入尾聲,在

74、老師的指導(dǎo)下順利完成這次畢業(yè)設(shè)計(jì),</p><p>  也才體會(huì)到生活、工作、學(xué)習(xí)一起的社會(huì)生活,我要學(xué)習(xí)的還有很多,自己有很多不足之處</p><p>  首先要感謝我的導(dǎo)師xx。畢竟獨(dú)立完成這次設(shè)計(jì)對(duì)于我來(lái)說(shuō)還是遇到很多問(wèn)題,后期詳細(xì)設(shè)計(jì),裝配草圖等整個(gè)過(guò)程中老師都給予了我悉心的指導(dǎo)。積極的去發(fā)現(xiàn)和糾正錯(cuò)誤實(shí)屬是件快樂(lè)的事情,也增加了我的好奇心和求知欲,并讓我更自信的面對(duì)以后的挑戰(zhàn),工

75、作和學(xué)習(xí)也就這樣融合的恰到好處</p><p>  感謝大學(xué)三年來(lái)所有的老師和同學(xué),師生間的友誼督促我成長(zhǎng)和學(xué)習(xí),希望同學(xué)們和老師能夠工作順利!天天開(kāi)心</p><p>  感謝我的爸爸媽媽,焉得諼草,言樹(shù)之背,養(yǎng)育之恩,無(wú)以回報(bào),你們永遠(yuǎn)健康快樂(lè)是我最大的心愿。 </p><p>  論文的尾聲也寫滿了我的心聲,愿一切順利!</p><p>

76、;<b>  參考文獻(xiàn)</b></p><p>  [1] 馬淑華,王鳳文,張美金編著. 單片機(jī)原理與接口技術(shù)(第二版). 北京:北京郵電大學(xué)出版社,2007.</p><p>  [2] 譚浩強(qiáng)著. C程序設(shè)計(jì)(第三版). 北京:清華大學(xué)出版社,2005.</p><p>  [3]何立民 單片機(jī)系統(tǒng)設(shè)計(jì) 北京航空航天大學(xué)出版社19

77、93年;</p><p>  [4] 胡宴如 模擬電子技術(shù)基礎(chǔ) 高等教育出版社 2003年;</p><p>  [5] 陳麗芳 單片機(jī)原理與控制技術(shù) 東南大學(xué)出版社 2003年;</p><p>  [6] 徐愛(ài)鈞,彭秀華單片機(jī)高級(jí)語(yǔ)言C51應(yīng)用程序設(shè)計(jì) 電子工業(yè)出版社1998年;</p><p>  [7] 孫涵芳,徐愛(ài)卿

78、. MCS-51/96系列單片機(jī)原理及應(yīng)用 北京航空航天大學(xué)出版社2002年;</p><p>  [8] 陳靜瑾 模擬電子技術(shù)課程輔導(dǎo) 人民郵電出版社 2003年;</p><p>  [9] 武慶生、仇梅 單片機(jī)原理與應(yīng)用 成都:電子科技大學(xué)出版社 2005年;</p><p>  [10]劉迎春 MCS-51單片機(jī)原理及應(yīng)用教程 清華大

79、學(xué)出版社 2005年; </p><p>  [11] 康華光 電子技術(shù)基礎(chǔ) (數(shù)字部分) 高等教育出版社 2000年;</p><p><b>  附錄A源程序參考</b></p><p>  #include<reg52.h></p><p>  #include <intrins.h&g

80、t;</p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();_nop_();};</p><p>  uchar code&

81、lt;/p><p>  table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};</p><p>  sbit exter=P3^3; //外部中斷</p><p>  sbit key0=P1^0; //清零</p><p&

82、gt;  sbit key1=P1^1; //切換/+</p><p>  sbit key2=P1^2; //-</p><p>  sbit key3=P1^3; //功能鍵</p><p>  sbit p30=P3^0; //數(shù)

83、碼管各位控制</p><p>  sbit p31=P3^1;</p><p>  sbit p32=P3^2;</p><p>  sbit p34=P3^4;</p><p>  sbit p35=P3^5;</p><p>  sbit p36=P3^6;</p><p>  sbit p

84、37=P3^7;</p><p>  sbit SDA=P2^3; //IIC引腳</p><p>  sbit SCL=P2^2;</p><p>  //切換白天夜晚單價(jià)</p><p>  jisuan(); //計(jì)算總金額</p>

85、;<p>  display(zongjine,licheng,danjia); </p><p>  keyscan(); </p><p>  if(key0==0) //清零鍵</p><p>  init();

86、 </p><p>  } </p><p><b>  }</b></p><p>  void inter1() interrupt 2 //脈沖中斷</p><p><b>  {</b><

87、/p><p>  delay(5); //</p><p>  if(exter==0) //</p><p>  { //</p><p><b>  IT1=1

88、;</b></p><p><b>  inter++;</b></p><p>  if(inter==5)</p><p><b>  {</b></p><p><b>  inter=0;</b></p><p>  licheng+

89、+;</p><p><b>  }</b></p><p>  } //</p><p>  while(!exter); //</p><p>  delay(5);

90、 //</p><p>  while(!exter); //</p><p><b>  }</b></p><p>  void timer0() interrupt 1</p><p><b>  {</b><

91、/p><p>  TH0=(65536-1000)/256;</p><p>  TL0=(65536-1000)%256;</p><p><b>  aa++;</b></p><p><b>  bb++;</b></p><p>  temp1=licheng;

92、 //測(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>&

93、lt;p>  if(temp=temp&temp1)</p><p>  dengdai++; </p><p>  temp=licheng; </p><p><b>  }</b></p><p><b>  

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論