版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 畢業(yè)設(shè)計(論文)說明書</p><p> 系 部: 電氣工程系 </p><p> 專 業(yè): 電子信息技術(shù) </p><p> 題 目: 計程車計價器設(shè)計 </p>
2、;<p> 畢業(yè)設(shè)計(論文)中文摘要</p><p> 畢業(yè)設(shè)計(論文)外文摘要</p><p><b> 目錄</b></p><p> 1 緒論 ……………………………………………………………………………1</p><p> 2 方案論證 ……………………………………………………………
3、…………2</p><p> 3設(shè)計部分 ………………………………………………………………………4</p><p> 3.1系統(tǒng)工作原理 …………………………………………………………………4</p><p> 3.1.1功能說明 ……………………………………………………………………4</p><p> 3.2硬件設(shè)計 ………
4、………………………………………………………………10</p><p> 3.2.1單片機最小系統(tǒng)單元 ………………………………………………………10</p><p> 3.2.2A44E霍爾傳感器檢測單元 …………………………………………………11</p><p> 3.2.3AT24C01存儲單元 ……………………………………………………………13<
5、/p><p> 3.2.4鍵盤調(diào)整單元 ………………………………………………………………14</p><p> 3.2.5顯示單元 ……………………………………………………………………15</p><p> 3.3軟件設(shè)計 ……………………………………………………………………… 17</p><p> 3.3.1系統(tǒng)主程序 …………
6、………………………………………………………17</p><p> 3.3.2中斷程序 ……………………………………………………………………18</p><p> 3.3.2.1里程計數(shù)中斷程序…………………………………………………………18</p><p> 3.3.2.2中途等待中斷程序…………………………………………………………19</p>
7、<p> 3.3.3計算程序………………………………………………………………………19</p><p> 3.3.4顯示程序………………………………………………………………………20</p><p> 3.3.5鍵盤程序………………………………………………………………………22</p><p> 結(jié)論 …………………………………………………………
8、………………………23</p><p> 致謝 …………………………………………………………………………………24</p><p> 參考文獻 ……………………………………………………………………………25</p><p> 附錄A源程序參考 ………………………………………………………………26</p><p><b>
9、 1 緒論</b></p><p> 隨著出租車行業(yè)的發(fā)展,出租車已經(jīng)是城市交通的重要組成部分,從加強行業(yè)管理以及減少司機與乘客的糾紛出發(fā),具有良好性能的計價器對出租車司機和乘客來說都是很必要的。而采用模擬電路和數(shù)字電路設(shè)計的計價器整體電路的規(guī)模較大,用到的器件多,造成故障率高,難調(diào)試。而采用單片機進行的設(shè)計,相對來說功能強大,用較少的硬件和適當?shù)能浖嗷ヅ浜峡梢院苋菀椎貙崿F(xiàn)設(shè)計要求,且靈活性強,可
10、以通過軟件編程來完成更多的附加功能。本設(shè)計采用AT89S52單片機為主控器,以A44E霍爾傳感器測距,實現(xiàn)對出租車的多功能的計價設(shè)計,并采用AT24C01實現(xiàn)在系統(tǒng)掉電的時候保存單價等信息,輸出采用8段數(shù)碼顯示管。本電路設(shè)計的計價器不但能實現(xiàn)基本的計價,而且還能根據(jù)白天,黑夜和中途等待來調(diào)節(jié)單價。</p><p><b> 2 方案認證</b></p><p>
11、方案一:采用數(shù)字電路控制。其原理方框如圖2-1所示。采用傳感器件輸出脈沖信號經(jīng)過放大整形作為移位寄存器的脈沖,實現(xiàn)計價,但是考慮到這種電路過于簡單性能不夠穩(wěn)定,而且不能調(diào)節(jié)單價,也不能根據(jù)天氣調(diào)節(jié)計費標準,電路不夠?qū)嵱?lt;/p><p> 圖2-1 數(shù)字電路控制原理圖</p><p> 方案二:采用單片機控制。利用單片機豐富的10端口,及其靈活性,實現(xiàn)基本里程計價功能和價格調(diào)節(jié)、時鐘顯示
12、工能。如圖2-2</p><p> 圖2-2單片機控制原理圖</p><p> 通過以上比較,單片機方案有較大的活動空間,所以采用后一種方案</p><p><b> 3 設(shè)計部分 </b></p><p> 3.1系統(tǒng)工作原理 </p><p> 功能說明:出租車計價器根據(jù)乘客乘坐
13、汽車行駛距離和等候時間的多少進行計價,并在行程中同步顯示車費值。從起步價開始,當汽車程行駛未滿3公里時,均按起步價計算。過3公里后,實現(xiàn)每1公里單價收費,中間遇暫停時,計程數(shù)不再增加,開始計時收費,測距收費和測時收費的和便構(gòu)成了一位乘客的車費。同時,白天和夜晚價格不同,可以進行切換。白天單價、夜晚單價、等待單價和起步價格都可通過獨立鍵盤進行調(diào)節(jié)。(默認起步價為5元/3公里,里程單價白天為1.5元/公里,夜晚為1.8元/公里,等待計時單價
14、為0.5元/5分鐘)</p><p><b> 3.1.1基本原理</b></p><p> 計數(shù)器系統(tǒng)主要由五部分組成:AT89S52單片機、A44E霍爾傳感器、獨立鍵盤、EEPROM AT24C01和顯示數(shù)碼管。</p><p> AT89S52引腳單片機如圖3-1 </p><p> 圖3-1 AT89S5
15、2引腳圖</p><p> AT89S52是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含8k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造,兼容標準MCS -51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S52
16、可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。 AT89S52具有如下特點:40個引腳,8k Bytes Flash片內(nèi)程序存儲器,256 bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個 全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。</p><p> 此外,AT89S52設(shè)
17、計和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數(shù)器,串行口,外中斷 系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三 種封裝形式,以適應不同產(chǎn)品的需求。主要功能特性: · 兼容MCS-51指令系統(tǒng)
18、183; 8k可反復擦寫(>1000次)ISP Flash ROM · 32個雙向I/O口 · 4.5-5.5V工作電壓 · 3個16位可編程定時/計數(shù)器 · 時鐘頻率0-33MHz · 全雙工UART串行中斷口線
19、0; · 256x8bit內(nèi)部RAM · 2個外部中斷源 · 低功耗空閑和省電模式 · 中斷喚醒省電模式 · 3級加密位 · 看門狗(WDT)電路
20、0; · 軟件設(shè)置空閑和省電功能 · 靈活的ISP字節(jié)和分頁編程 · 雙數(shù)據(jù)寄存器指針</p><p> 霍爾傳感器安裝在車輪上,主要檢測汽車行進的公里數(shù),并產(chǎn)生一系列相應的脈沖輸出,脈沖送到單片機進行處理,單片機根據(jù)程序設(shè)定通過計算脈沖數(shù)換算出行駛公里數(shù),再根據(jù)從EEPROM中讀取的價格等相關(guān)數(shù)據(jù)進行金額的計算,計算好的金額
21、、里程和單價都實時地顯示在數(shù)碼管上。獨立鍵盤可以調(diào)節(jié)價格等相關(guān)數(shù)據(jù),按下相應的按鈕,產(chǎn)生信號交由單片機處理并實時顯示出來,調(diào)節(jié)好的數(shù)據(jù)存儲到EEPROM中,掉電后可以使調(diào)好的數(shù)據(jù)不丟失,下次得電后直接從EEPROM讀到單片機,系統(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 是一個1K/2K/4K/8K/16K 位串行CMOS E2PROM,內(nèi)部含有128/256/512/1024/2048 個8 位字節(jié),CATALYST 公司的先進CMOS 技術(shù)實質(zhì)上減少了器件的功耗,CAT24WC01有一個8 字節(jié)頁寫緩沖器,CAT24WC02/04/08/16 有一個16 字節(jié)頁寫緩沖器,該器件通過I2C 總線接口進行操作有一個專門的寫保護功能如圖3-3</p>
23、;<p><b> 圖3-3管理腳配置</b></p><p> 顯示數(shù)碼管LED數(shù)碼管里面有8只發(fā)光二極管,與實驗板P1端口所接的二極管是相通的,分別記作a、b、c、d、e、f、g、dp,其中dp為小數(shù)點,每只發(fā)光二極管都有一根外部引腳上,而另外一只引腳就連接在一起同樣也引接外部引腳上,記作公共端(com),如圖3-4</p><p> 圖3-4
24、顯示數(shù)碼管LED</p><p> 編寫程序?qū)崿F(xiàn)80C51的P0口控制一個數(shù)碼管顯示,讓它循環(huán)顯示0~9等十位數(shù)字,時間間隔為1秒鐘。</p><p> 利用查表程序可以完成BCD與七段碼的轉(zhuǎn)換,從而取代硬件七段譯碼電路,查表程序本身并無復雜之處,需要注意的是七段碼的取值,因為七段數(shù)碼管有共陽極及共陰極之分。共陽極是低電平有效時有效輸入。共陰極是高電平時有效輸入(所以在C51單片機要使
25、發(fā)光二極管點亮,數(shù)碼管是共陽極的就要讓I/O口的電位變?yōu)榈碗娢?。如果是共陰極的就是合I/O口的電位變?yōu)楦唠娢?,因些不同的器件會有不同的數(shù)碼值。另外引腳信號與碼位的對應關(guān)系也會影響碼值,即引腳可以由高到低排列(7-1),也可以由低到高排列(1-7)。本實驗的數(shù)碼管為共陽極,采用由高到低的排列 。</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口進行位選</p><p> LCALL YSH1S ;調(diào)用延時1秒子程序</p><p> INC R2 ;段碼地址表指針加1</p&g
28、t;<p> CJNE R2,#0AH,DSUP ;如果0-9顯示完畢,程序重新開臺執(zhí)行</p><p> SJMP MAIN ;跳轉(zhuǎn)到MAIN入口</p><p> YSH1S:MOV R3,#05H ;延時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è)計</b></p><p> 3.2.1 單片機最小系統(tǒng)單元</p><p> 主控機系統(tǒng)采用了Atmel 公司生產(chǎn)的 AT89S52單片機,它含有256 字節(jié)數(shù)據(jù)存儲器,內(nèi)置8K 的電可擦除FLASH ROM,可重復編程,大小滿足主控機軟件系
33、統(tǒng)設(shè)計,所以不必再擴展程序存儲器。復位電路和晶振電路是AT89S52 工作所需的最簡外圍電路。單片機最小系統(tǒng)電路圖如 圖3-5所示。 </p><p> 圖3-5 單片機最小系統(tǒng)圖</p><p> AT89S52 的復位端是一個史密特觸發(fā)輸入,高電平有效。RST端若由低電平上升到高電平并持續(xù)2個周期,系統(tǒng)將實現(xiàn)一次復位操作。在復位電路中,按一下復位開關(guān)就使在RST端出現(xiàn)一段時間的高電
34、平,外接11.0592M 晶振和兩</p><p> 30pF 電容組成系統(tǒng)的內(nèi)部時鐘電路。</p><p> 3.2.2 A44E霍爾傳感器檢測單元</p><p> 霍爾傳感器是一種磁傳感器。用它可以檢測磁場及其變化,可在各種與磁場有關(guān)的場合中使用?;魻杺鞲衅饕曰魻栃獮槠涔ぷ骰A(chǔ),是由霍爾元件和它的附屬電路組成的集成傳感器?;魻杺鞲衅髟诠I(yè)生產(chǎn)、交通運
35、輸和日常生活中有著非常廣泛的應用。</p><p> 由于霍爾元件產(chǎn)生的電勢差很小,故通常將霍爾元件與放大器電路、溫度補償電路及穩(wěn)壓電源電路等集成在一個芯片上,稱之為霍爾傳感器。如圖3-6</p><p><b> 圖3-6霍爾傳感器</b></p><p> A44E 屬于開關(guān)型的霍爾器件,其工作電壓范圍比較寬(4.5~18V),其輸出
36、的信號符合TTL電平標準,可以直接接到單片機的IO 端口上,而且其最高檢測頻率可達到1MHZ。</p><p> A44E 集成霍耳開關(guān)由穩(wěn)壓器A、霍耳電勢發(fā)生器(即硅霍耳片)B、差分放大器C、施密特觸發(fā)器D和OC門輸出E五個基本部分組成。</p><p> 在輸入端輸入電壓Vcc,經(jīng)穩(wěn)壓器穩(wěn)壓后加在霍爾電勢發(fā)生器的兩端,根據(jù)霍爾效應原理,當霍爾片處在磁場中時,在垂直于磁場的方向通以電
37、流,則與這二者相垂直的方向上將會產(chǎn)生霍爾電勢差VH輸出,該VH信號經(jīng)放大器放大后送至施密特觸發(fā)器整形,使其成為方波輸送到OC門輸出。當施加的磁場達到工作點(即Bop)時,觸發(fā)器輸出高電壓(相對于地電位),使三極管導通,此時OC門輸出端輸出低電壓,三極管截止,使OC門輸出高電壓,這種狀態(tài)為關(guān)。</p><p> 這樣兩次電壓變換,使霍爾開關(guān)完成了一次開關(guān)動作。</p><p> A44E
38、霍爾傳感器原理如圖3-7所示</p><p> 圖3-7 A44E霍爾傳感器原理圖</p><p> 里程計算是通過安裝在車輪上的霍爾傳感器檢測到的脈沖信號,送到單片機產(chǎn)生中斷,單片機再根據(jù)程序設(shè)定,計算出里程。其原理如圖3-8所示。</p><p> 圖3-8 傳感器測距示意圖</p><p> 本系統(tǒng)選擇了將A44E的脈沖輸出口接
39、到P3.3口外部中斷1作為信號的輸入端(這樣可以減少程序設(shè)計的麻煩),車輪每轉(zhuǎn)一圈(設(shè)車輪的周長是1米),霍爾開關(guān)就檢測并輸出信號,引起單片機的中斷,對脈沖計數(shù),當計數(shù)達到1000次時,即1公里,單片機就控制將金額自動增加,如圖3-9。</p><p> 圖3-9 A44E霍爾元件接線圖</p><p> 3.2.3 AT24C01存儲單元</p><p>
40、 存儲單元的作用是在電源斷開的時候,存儲當前設(shè)定的單價信息。AT24C01 是Ateml公司的1KB的電可擦除存儲芯片,采用兩線串行的總線和單片機通訊,電壓最低可以到2.5V,額定電流為1mA,靜態(tài)電流10uA(5.5V),芯片內(nèi)的資料可以在斷電的情況下保存40年以上,而且采用8 腳的DIP 封裝,使用方便。</p><p> AT24C01提供電可擦除的串行1024位存儲或可編程只讀存儲器(EEPROM)12
41、8字(8位/字)。芯片在低壓的工業(yè)與商業(yè)應用中進行了最優(yōu)化。AT24C01的封裝為8腳PDIP、8腳JEDECSOIC、8腳TSSOP,通過2線制串行接口進行數(shù)據(jù)傳輸。另外,整個系列有2.7V(2.7V至5.5V)和1.8V (1.8V至5.5V)兩個版本。</p><p> 特點:低壓和標準電壓運行模式,內(nèi)建128x8存儲序列,2線制串行接口,雙向數(shù)據(jù)傳送協(xié)議,100kHz(1.8V,2.5V,2.7V) 4
42、00kHz(和5V) 兼容4字頁寫方式寫同步時鐘(最大10ms)高可靠性-極限:1M寫時鐘周期,數(shù)據(jù)保存:100年AT24C02芯片引腳配置如圖3-10所示。</p><p> 圖3-10 AT24C02芯片引腳配置 </p><p> 存儲單元電路連接如圖3-11所示。</p><p> 圖3-11存儲單元電路原理圖</p>
43、;<p> 圖中R4、R5 是上拉電阻,其作用是減少AT24C01 的靜態(tài)功耗。由于AT24C01的數(shù)據(jù)線和地址線是復用的,采用串口的方式傳送數(shù)據(jù),所以只用兩根線SCL(時鐘脈沖)和SDA(數(shù)據(jù)/地址)與單片機P2.2和P2.3口連接,進行傳送數(shù)據(jù)。</p><p> 每當設(shè)定一次單價,系統(tǒng)就自動調(diào)用存儲程序,將單價信息保存在芯片內(nèi);當系統(tǒng)重新上電的時候,自動調(diào)用讀存儲器程序,將存儲器內(nèi)的單價等
44、信息</p><p> 3.2.4 鍵盤調(diào)整單元</p><p> 當單價等信息需要進行修改時,就要用到鍵盤進行修改。由于調(diào)節(jié)信息不多,故采用4個獨立鍵盤即可,分別實現(xiàn)清零、切換、增大、減小和功能等作用。電路原理如圖3-12所示。</p><p> 圖3-12 鍵盤調(diào)整單元接線圖</p><p> S1:接P1.0口,對上一次的計費
45、進行清零,為下次載客準備</p><p> S2:接P1.1口,實現(xiàn)白天和夜晚單價的切換;當功能鍵S4按下時,S2可對數(shù)據(jù)進行增大。</p><p> S3:接P1.2口,當功能鍵S4按下時,S3可對數(shù)據(jù)進行減小。</p><p> S4:接P1.3口,按1次,進入調(diào)整白天單價;按2次,進入調(diào)整夜晚單價;按3次,進入調(diào)整等待單價;按4次,進入調(diào)整起步價;按5次
46、,返回。</p><p> 3.2.5 顯示單元</p><p> 顯示單元由7個8段共陽數(shù)碼管組成,采用動態(tài)掃描進行顯示。前三個數(shù)碼管分別接P3.0、P3.1和P3.2,用于顯示總金額;中間兩個分別接P3.4和P3.5,用于顯示里程;后邊兩個分別接P3.6和P3.7,用于顯示單價。顯示原理如圖3-13 </p><p> 圖3-13顯
47、示原理圖 </p><p><b> 數(shù)碼管驅(qū)動方式:</b></p><p> 數(shù)碼管要正常顯示,就要用驅(qū)動電路來驅(qū)動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)字,因此根據(jù)數(shù)碼管的驅(qū)動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類靜態(tài)顯示驅(qū)動:1.靜態(tài)驅(qū)動也稱直流驅(qū)動。靜態(tài)驅(qū)動是指每個數(shù)碼管的每一個段碼都由一個單片機的I/O端口進行驅(qū)動,或者
48、使用如BCD碼二-十進制譯碼器譯碼進行驅(qū)動。靜態(tài)驅(qū)動的優(yōu)點是編程簡單,顯示亮度高,缺點是占用I/O端口多,如驅(qū)動5個數(shù)碼管靜態(tài)顯示則需要5×8=40根I/O端口來驅(qū)動,要知道一個89S51單片機可用的I/O端口才32個呢:),實際應用時必須增加譯碼驅(qū)動器進行驅(qū)動,增加了硬件電路的復雜性。</p><p> 2.動態(tài)顯示驅(qū)動:數(shù)碼管動態(tài)顯示接口是單片機中應用最為廣泛的一種顯示方式之一,動態(tài)驅(qū)動是將所有數(shù)
49、碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開,該位就顯示出字形,沒有選通的數(shù)碼管就不會亮。通過分時輪流控制各個數(shù)碼管的的COM端,就使各個數(shù)
50、碼管輪流受控顯示,這就是動態(tài)驅(qū)動。在輪流顯示過程中,每位數(shù)碼管的點亮時間為1~2ms,由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應,盡管實際上各位數(shù)碼管并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能夠節(jié)省大量的I/O端口,而且功耗更低。</p><p> 主要參數(shù):8字高度:8字上沿與下沿的距離。比外型高度小。通常用英寸來表示。范圍一般為
51、0.25-20英寸。長*寬*高:長——數(shù)碼管正放時,水平方向的長度;寬——數(shù)碼管正放時,垂直方向上的長度;高——數(shù)碼管的厚度。時鐘點:四位數(shù)碼管中,第二位8與第三位8字中間的二個點。一般用于顯示時鐘中的秒。</p><p> 數(shù)碼管應用:數(shù)碼管是一類顯示屏 通過對其不同的管腳輸入相對的電流 會使其發(fā)亮 從而顯示出 數(shù)字能夠顯示 時間 日期 溫度 等所有可用數(shù)字表示的參數(shù)</p><p>
52、 由于它的價格便宜 使用簡單 在電器 特別是家電領(lǐng)域應用極為廣泛 空調(diào) 熱水器冰箱等等絕大多數(shù) 熱水器用的都是數(shù)碼管 其他家電 也用液晶屏與 熒光屏數(shù)碼管使用的電流與電壓</p><p> 電流:靜態(tài)時,推薦使用10-15mA;動態(tài)時,16/1動態(tài)掃描時,平均電流為4-5mA,峰值電流50-60mA。 </p><p><b>
53、 3.3 軟件設(shè)計</b></p><p> 3.3.1 系統(tǒng)主程序</p><p> 在主程序模塊中,需要完成對各參量和接口的初始化、出租車起價和單價的初始化以及中斷、計算、循環(huán)等工作。另外,在主程序模塊中還需要設(shè)置啟動/清除標志寄存器、里程寄存器和價格寄存器,并對它們進行初始化。然后,主程序?qū)⒏鶕?jù)各標志寄存器的內(nèi)容,分別完成啟動、清除、計程和計價等不同的操作</
54、p><p> 當汽車運行起來時,就啟動計價,根據(jù)里程寄存器中的內(nèi)容計算和判斷行駛里程是否已超過起步價公里數(shù)。若已超過,則根據(jù)里程值、每公里的單價數(shù)和起步價數(shù)來計算出當前的總金額,并將結(jié)果存于總金額寄存器中;中途等待時,無脈沖輸入,不產(chǎn)生中斷,當時間超過等待設(shè)定值時,開始進行計時,并把等待價格加到總金額里,然后將總金額、里程和單價送數(shù)碼管顯示出來。程序流程如圖3-14</p><p> 圖3
55、-14主程序流程圖 </p><p> 3.3.2 中斷程序</p><p> 3.3.2.1 里程計數(shù)中斷程序</p><p> 每當霍爾傳感器輸出一個低電平信號就使單片機中斷一次,當里程計數(shù)器對里程脈沖計滿1000次時,進入里程計數(shù)中斷服務(wù)程序中,里程變量加一。主函數(shù)中總金額也相應地變化。</p><p> #include
56、<reg51.h></p><p> void init(void)//聲明中斷初始化</p><p> { EA=1;//中斷總開關(guān)</p><p> EX0=1;//開中斷0開關(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)生一次中斷,將當前里程值送入某個緩存變量,每5分鐘將緩存變量中的值和當前里程值比較,當汽車停止,霍爾傳感器5分鐘沒有輸出信號,當前里程值和緩存變量內(nèi)的值相同,則進入等待計時,每5分鐘記一次價格。</p><p> 3.3.3 計
60、算程序</p><p> 計算程序根據(jù)里程數(shù)分別進入不同的計算公式。如果里程大于3公里,則執(zhí)行公式:總金額=起步價+(里程-3)*單價+等待時間*等待單價;否則,執(zhí)行公式:總金額=起步價+等待時間*等待單價。計算程序流程如圖3-15所示</p><p> 圖3-15計算程序流程圖</p><p> 3.3.4 顯示程序</p><p>
61、; 顯示程序利用定時器每1ms產(chǎn)生一次中斷,相應變量置位,點亮一個數(shù)碼管,顯示一位數(shù)據(jù),利用主函數(shù)內(nèi)的循環(huán),實現(xiàn)動態(tài)掃描顯示,同時根據(jù)數(shù)碼管余輝和人眼暫留現(xiàn)象,即可實現(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> 鍵盤采用查詢的方式,放在主程序中,當沒有按鍵按下的時候,單片機循環(huán)主程序,
71、一旦右按鍵按下,便轉(zhuǎn)向相應的子程序處理,處理結(jié)束再返回。流程圖如圖3-16。</p><p> 圖3-16鍵盤程序流程圖</p><p><b> 結(jié)論</b></p><p> 經(jīng)過這些天有關(guān)于出租車計價器的課程設(shè)計,使我對單片機的應用有了更深的了解。在課程設(shè)計的過程中,還是碰到了許多的問題。比如,對于數(shù)碼管動態(tài)掃描顯示和鍵盤的延時防抖
72、的綜合編程不能較好地解決;對于代碼的前后順序及調(diào)用掌握得還不夠好;對于一些相關(guān)的應用軟件沒能熟練掌握。通過這幾天晚上的苦想和反復調(diào)試,以及參考網(wǎng)上的程序,最終還是把問題解決了。</p><p> 通過這次課程設(shè)計,我最大的收獲就是自己的動手能力和獨立解決問題的能力得到了很大的提高,也充分體會到了自己設(shè)計東西的樂趣、學會查閱資料和對別人的東西融會變通的重要性,也明白了很多知識光靠趴在書本上學是學不到其中的精髓的,
73、必須親自去試著實踐,親自去經(jīng)歷才能對它們真正的掌握,凡事都要自己去動下手,去實踐一下,遇到困難,永遠不要沮喪氣餒。在動手的過程中,不僅能增強實踐能力,而且在理論上可以有更深的認識;這次設(shè)計給了我極大的鼓舞和信心,相信在以后的學習中可以通過不斷的摸索和實踐來提高其他方面的知識。</p><p><b> 致謝</b></p><p> 匆忙的學習生涯漸漸走入尾聲,在
74、老師的指導下順利完成這次畢業(yè)設(shè)計,</p><p> 也才體會到生活、工作、學習一起的社會生活,我要學習的還有很多,自己有很多不足之處</p><p> 首先要感謝我的導師xx。畢竟獨立完成這次設(shè)計對于我來說還是遇到很多問題,后期詳細設(shè)計,裝配草圖等整個過程中老師都給予了我悉心的指導。積極的去發(fā)現(xiàn)和糾正錯誤實屬是件快樂的事情,也增加了我的好奇心和求知欲,并讓我更自信的面對以后的挑戰(zhàn),工
75、作和學習也就這樣融合的恰到好處</p><p> 感謝大學三年來所有的老師和同學,師生間的友誼督促我成長和學習,希望同學們和老師能夠工作順利!天天開心</p><p> 感謝我的爸爸媽媽,焉得諼草,言樹之背,養(yǎng)育之恩,無以回報,你們永遠健康快樂是我最大的心愿。 </p><p> 論文的尾聲也寫滿了我的心聲,愿一切順利!</p><p>
76、;<b> 參考文獻</b></p><p> [1] 馬淑華,王鳳文,張美金編著. 單片機原理與接口技術(shù)(第二版). 北京:北京郵電大學出版社,2007.</p><p> [2] 譚浩強著. C程序設(shè)計(第三版). 北京:清華大學出版社,2005.</p><p> [3]何立民 單片機系統(tǒng)設(shè)計 北京航空航天大學出版社19
77、93年;</p><p> [4] 胡宴如 模擬電子技術(shù)基礎(chǔ) 高等教育出版社 2003年;</p><p> [5] 陳麗芳 單片機原理與控制技術(shù) 東南大學出版社 2003年;</p><p> [6] 徐愛鈞,彭秀華單片機高級語言C51應用程序設(shè)計 電子工業(yè)出版社1998年;</p><p> [7] 孫涵芳,徐愛卿
78、. MCS-51/96系列單片機原理及應用 北京航空航天大學出版社2002年;</p><p> [8] 陳靜瑾 模擬電子技術(shù)課程輔導 人民郵電出版社 2003年;</p><p> [9] 武慶生、仇梅 單片機原理與應用 成都:電子科技大學出版社 2005年;</p><p> [10]劉迎春 MCS-51單片機原理及應用教程 清華大
79、學出版社 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> //切換白天夜晚單價</p><p> jisuan(); //計算總金額</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、 //測試是否進入等待</p><p> if(bb==10000) //10s無反應進入等待計費</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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 論文計程車計價器設(shè)計
- 畢業(yè)論文 基于vhdl的計程車計價器設(shè)計(含外文翻譯)
- 計算機硬件技術(shù)基礎(chǔ)課程設(shè)計---計程車計價器設(shè)計
- 畢業(yè)設(shè)計--出租車計價器設(shè)計
- 畢業(yè)設(shè)計----出租車計價器
- 出租車計價器畢業(yè)設(shè)計
- 多功能出租車計價器畢業(yè)設(shè)計論文
- 出租車計價器的設(shè)計 畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--計程車里程表系統(tǒng)設(shè)計
- 課程設(shè)計---出租車計程計價器的設(shè)計
- 出租車計價器設(shè)計畢業(yè)論文
- 畢業(yè)設(shè)計--出租車計價器系統(tǒng)的設(shè)計
- 出租車計價器畢業(yè)論文設(shè)計
- 畢業(yè)設(shè)計--語音多路出租車計價器
- 多功能出租車計價器畢業(yè)設(shè)計
- 出租車計價器的設(shè)計-太原工業(yè)學院畢業(yè)設(shè)計(論文)
- 畢業(yè)設(shè)計(論文)-單片機課程設(shè)計出租車計價器
- 基于單片機的出租車計價器設(shè)計畢業(yè)設(shè)計論文
- 基于單片機的出租車計價器設(shè)計畢業(yè)設(shè)計論文
- 智能出租車計價器設(shè)計【畢業(yè)論文】
評論
0/150
提交評論