版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 單片機與控制技術(shù)</b></p><p> 課 程 設(shè) 計</p><p><b> 成績評定表</b></p><p> 設(shè)計課題 基于89C51的出租車計價器設(shè)計 </p><p> 學(xué)院名稱 : 電氣工程學(xué)院
2、 </p><p> 專業(yè)班級 : 自動化1004 </p><p> 學(xué)生姓名 : </p><p> 學(xué) 號 : </p><p> 指導(dǎo)教師 :
3、 </p><p> 設(shè)計地點 : </p><p> 設(shè)計時間 : 2012-12-17~2012-12-28 </p><p> 單片機系統(tǒng) 課程設(shè)計任務(wù)書</p><p><b&
4、gt; 目錄</b></p><p><b> 1 引言3</b></p><p> 2 總體方案設(shè)計4</p><p><b> 2.1硬件組成4</b></p><p> 2.2 方案論證4</p><p><b> (1)控制器
5、4</b></p><p> ?。?)速度里程傳感器5</p><p> ?。?)信號處理模塊6</p><p> ?。?)人機交互界面6</p><p> 2.3 總體方案6</p><p> 3 硬件電路設(shè)計7</p><p> 3.1 單片機及其外圍電路7&
6、lt;/p><p> 3.2 光電傳感器與信號調(diào)理電路9</p><p> 3.3 顯示及鍵盤接口電路10</p><p> ?。?)顯示器接口電路10</p><p> ?。?)鍵盤接口電路12</p><p> 3.4 電源電路13</p><p> 4 系統(tǒng)軟件設(shè)計13&l
7、t;/p><p> 4.1 主程序設(shè)計13</p><p> 4.2 中斷服務(wù)程序設(shè)計14</p><p> 4.3 部分主要子程序的設(shè)計16</p><p> ?。?)距離顯示字程序16</p><p> ?。?)金額顯示子程序16</p><p> (3)等待時間顯示子
8、程序17</p><p> 5 系統(tǒng)調(diào)試與總結(jié)19</p><p> 5.1 系統(tǒng)調(diào)試19</p><p> 1.白天夜間模式選擇調(diào)試19</p><p> 2.是否開啟紅燈等待功能調(diào)試20</p><p><b> 3.行程計費20</b></p><p
9、><b> 5.2 總結(jié)21</b></p><p><b> 參考文獻22</b></p><p> 附錄A 系統(tǒng)原理圖23</p><p> 附錄B 源程序23</p><p><b> 1 引言</b></p><p>
10、出租車是現(xiàn)代城市內(nèi)部主要交通工具之一,它給我們的出行帶來了方便與舒適。一個好的出租車計價器在整個出租車系統(tǒng)中是不可或缺的,他讓我們的出行費用,車輛行駛距離有了明確的體現(xiàn),讓司機與乘客的利益的到平衡,讓出租車市場更加規(guī)范。</p><p> 如今的出租車計價器五花八樣,功能各異,但主要功能都基本相同,以行駛距離為標(biāo)準(zhǔn)計價,有些加上的等待計價,有些更智能,可以為乘客提供拼車計價,本設(shè)計提供了基本的一距離為主要標(biāo)準(zhǔn)計
11、價,附加等待紅燈計價。</p><p> 介于出租車計價器不需要太多的功能,而單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領(lǐng)域的廣泛應(yīng)用。以8051為內(nèi)
12、核AT89S52單片機足可以實現(xiàn)計價功能,以1602液晶顯示信息。AT89S52單片機價格便宜,工作穩(wěn)定,性能良好,易學(xué)易用,操作使用方便,ISP寫入程序,方便快捷。8051系列單片機也是我們課程所學(xué)的主要單片機,更利于我們學(xué)習(xí)實踐。而如今較為流行的AVR單片機和以cortex為內(nèi)核的單片機比較流行,但他們的價格相對于AT89S52較貴,功能較多,控制復(fù)雜,程序編寫較難,且大多為LQFP封裝,不利于我們實驗練習(xí),而使用51系列單片機足矣
13、完成出租車計價功能,是比較理想的選擇。</p><p><b> 2 總體方案設(shè)計</b></p><p><b> 2.1硬件組成</b></p><p> 整個系統(tǒng)硬件有控制器,距離檢測系統(tǒng),速度檢測系統(tǒng),信號處理模塊,人機交換界面組成:</p><p> ?。?)控制器。作為控制系統(tǒng)的核
14、心,它在整個系統(tǒng)中接受由光電碼盤傳來的數(shù)據(jù),經(jīng)過內(nèi)部處理,按照事先約定將數(shù)據(jù)傳到顯示部分。</p><p> ?。?)距離速度檢測系統(tǒng)。它由傳感器實現(xiàn),由機械機構(gòu)連接傳感器,再由傳感器輸出信號,輸入控制器。</p><p> ?。?)信號處理模塊,有傳感器輸入的信號進行處理,處理后的信號為可以直接輸入控制器的信號。</p><p> ?。?)人機交互界面;需要一個顯
15、示器顯示控制器輸出的信息,顯示出租車行駛的距離,等待時間,定價和最后總價。</p><p> 硬件方框圖如圖2.1所示。</p><p> 圖2.1 硬件方框圖</p><p><b> 2.2 方案論證</b></p><p><b> ?。?)控制器</b></p><
16、;p> 控制器的選擇是確定整個系統(tǒng)硬件方案的關(guān)鍵,它關(guān)系到其它幾個部分方案的確定,對于出租車計價器,控制器一般使用MCU,MCU有許多種,可選的單片機有以下幾種:</p><p> <1>8051系列單片機。8051單片微型計算機簡稱為單片機,又稱為微型控制器,是微型計算機的一個重要分支。單片機是70年代中期發(fā)展起來的一種大規(guī)模集成電路芯片,是CPU、RAM、ROM、I/O接口和中斷系統(tǒng)于同
17、一硅片的器件。80年代以來,單片機發(fā)展迅速,各類新產(chǎn)品不斷涌現(xiàn),出現(xiàn)了許多高性能新型機種,現(xiàn)已逐漸成為工廠自動化和各控制領(lǐng)域的支柱產(chǎn)業(yè)之一。。</p><p> <2>AVR單片機。AVR單片機是1997年由ATMEL公司研發(fā)出的增強型內(nèi)置Flash的RISC(Reduced Instruction Set CPU) 精簡指令集高速8位單片機。AVR的單片機可以廣泛應(yīng)用于計算機外部設(shè)備、工業(yè)實時控制
18、、儀器儀表、通訊設(shè)備、家用電器等各個領(lǐng)域。 1997年,由Atmel公司挪威設(shè)計中心的A先生和V先生,利用Atmel公司的Flash新技術(shù),共同研發(fā)出RISC精簡指令集高速8位單片機,簡稱AVR。AVR單片機功能較完善,自帶A/D轉(zhuǎn)換。但開發(fā)編程使用相比于8051系列有些復(fù)雜。需要一定的學(xué)習(xí)。</p><p> <3>Cortex系列單片機。ARM公司在經(jīng)典處理器ARM11以后的產(chǎn)品改用Cortex
19、命名,并分成A、R和M三類,旨在為各種不同的市場提供服務(wù)。 Cortex系列屬于ARMv7架構(gòu),這是ARM公司最新的指令集架構(gòu)。ARMv7架構(gòu)定義了三大分工明確的系列:“A”系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應(yīng)用;“R”系列針對實時系統(tǒng);“M”系列對微控制器。 由于應(yīng)用領(lǐng)域不同,基于v7架構(gòu)的Cortex處理器系列所采用的技術(shù)也不相同,基于v7A的稱為Cortex-A系列,基于v7R的稱為Cortex-R系列,基于v7M
20、的稱為Cortex-M系列。但Cortex系列單片機開發(fā)復(fù)雜,需要深入學(xué)習(xí),當(dāng)然其功能也強大,不過價格也相對8051貴一些。</p><p> 出租車計價器作為一種簡單的設(shè)備,本身價值不高,更要求控制系統(tǒng)具有較好的性價比,控制系統(tǒng)部需要有強大的控制能力,而且要考慮安裝方便,計價器體積受限,經(jīng)上述分析比較,確定采用8051系列MCU作為控制器。</p><p> (2)速度里程傳感器&l
21、t;/p><p> 傳感器可選擇的較多,有模擬信號輸出的,有數(shù)字信號輸出的,由于模擬信號輸出的傳感器需要信號放大和A/D轉(zhuǎn)換模塊,信號放大比較難調(diào),信號容易失真,而A/D轉(zhuǎn)換模塊需要另外添加,有些單片機不具有A/D轉(zhuǎn)換功能,且增加模塊會增加整個產(chǎn)品的成本,對于簡單低成本的出租車計價器是很不適合的。為了簡單實用,可采用數(shù)字信號輸出的傳感器,由于大量數(shù)據(jù)傳入單片機會增加處理器負(fù)擔(dān),可采用產(chǎn)生脈沖的傳感器,例如霍爾傳感器
22、,光電碼盤等等。這類長安器相對來說價格便宜,性能穩(wěn)定,簡單實用,傳感器產(chǎn)生的脈沖可直接輸入單片機,也可整形后輸入單片機,防止數(shù)據(jù)丟失,也可實用達林頓管和光耦等元件對信號做進一步處理。 </p><p><b> (3)信號處理模塊</b></p><p> 傳感器輸出的脈沖信號可以整形放大后輸入單片機,但單片機可以直接處理脈沖信號,即使脈沖有些不穩(wěn)定,脈沖強度有些
23、變化,也可以直接處理,單片機只是查脈沖的數(shù)目和一定時間內(nèi)脈沖的數(shù)目,脈沖的強度變化只要在可處理范圍之內(nèi)是沒有問題的,經(jīng)試驗證實,傳感器輸出的信號時比較穩(wěn)定的,示波器顯示波形很好,脈沖丟失比較少,而單片機能夠完美的處理這些脈沖,幾乎沒有出錯。</p><p><b> ?。?)人機交互界面</b></p><p> 人機交互界面主要有以下幾種形式:</p>
24、<p> ?、?CRT顯示器及標(biāo)準(zhǔn)鍵盤:顯示信息量大,操作方便,顯示界面友好,但價格高,適用于采用工控機作控制器的場合。</p><p> ?、?工業(yè)人機界面(觸摸屏):和CRT顯示器一樣,具有顯示信息量大,操作方便,顯示界面友好,適合惡劣的工業(yè)環(huán)境使用等特點,但價格更高,一般與PLC配套使用。</p><p> ?、?LED或LCD數(shù)碼顯示器及自行設(shè)計的小鍵盤:價格低廉、體
25、積小是其最大優(yōu)點,應(yīng)用于以MCU為控制器的系統(tǒng)中較合適。</p><p> 考慮價格及系統(tǒng)構(gòu)成等因素,人機交互界面采用LCD顯示和薄碼開關(guān)選擇一些單片機需要處理的一些狀態(tài)。</p><p><b> 2.3 總體方案</b></p><p> 按照上述方案論證的結(jié)果,出租車計價器的總體方案框圖如圖2.2所示。</p><
26、;p> 圖2.2中,傳感器輸出的脈沖信號直接連接單片機的外部中斷引腳,該脈沖信號輸入到MCU后。MCU對輸入的一定頻率的脈沖信號進行處理,經(jīng)運算后得到數(shù)據(jù),送LCD顯示器顯示,輸出數(shù)據(jù)供司機和乘客瀏覽。 </p><p> 圖2.3 總體方案框圖</p><p> 撥碼開關(guān)可選擇白天模式和晚上模式,也可選擇是否等紅燈收費。</p><p><b&
27、gt; 3 硬件電路設(shè)計</b></p><p> 3.1 單片機及其外圍電路</p><p> 微控制器采用AT89S52單片機。AT89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)
28、編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52在眾多嵌入式控制應(yīng)用系統(tǒng)中得到廣泛應(yīng)用.</p><p> AT89S52的內(nèi)部資源主要包括:</p><p> 1、與MCS-51單片機產(chǎn)品兼容;</p><p> 2、8K字節(jié)在系統(tǒng)可編程Flash存儲器; </p><p> 3、1000
29、次擦寫周期; </p><p> 4、全靜態(tài)操作:0Hz-33MHz; </p><p> 5、三級加密程序存儲器; </p><p> 6、32個可編程I/O口線; </p><p> 7、三個16位定時器/計數(shù)器; </p><p> 8、六個中斷源; </p>&l
30、t;p> 9、全雙工UART串行通道; </p><p> 10、低功耗空閑和掉電模式; </p><p> 11、掉電后中斷可喚醒; </p><p> 12、看門狗定時器; </p><p> 13、雙數(shù)據(jù)指針; </p><p> 14、掉電標(biāo)識符 。</p>
31、<p> AT89S52的外圍電路主要包括時鐘電路、復(fù)位電路。如圖3.1所示。</p><p> 圖3.1 AT89S52的接口電路</p><p> 3.2 光電傳感器與信號調(diào)理電路</p><p> 光碼盤即光柵碼盤,在上面刻有許多同心碼道,每個碼道上都有按一定規(guī)律排列的透光和不透光部分。本系統(tǒng)光碼盤采用如今比較流行的金屬光碼盤,如圖3.2.
32、1所示。 </p><p> 圖3.2.1 光碼盤實物</p><p> 工作原理如圖3.2.2所示</p><p> 圖3.2.2 光碼盤工作原理</p><p> 工作時,車輪轉(zhuǎn)動通過機械機構(gòu)連接到管嗎盤上,光投射在碼盤上,碼盤隨運動物體一起旋轉(zhuǎn),透過亮區(qū)的光經(jīng)過狹縫后由光敏元件接受,光敏元件的排列與碼道一一對應(yīng),對于亮區(qū)和暗區(qū)的
33、光敏元件輸出的信號,前者為“1”,后者為“0”,當(dāng)碼盤旋轉(zhuǎn)在不同位置時,光敏元件輸出信號的組合反映出一定規(guī)律的數(shù)字量,代表了碼盤軸的角位移。本系統(tǒng)光碼盤有兩種輸出,一種是每個脈沖輸出一個脈沖,另一種是每轉(zhuǎn)一圈輸出一個脈沖,為了信號穩(wěn)定和減少單片機處理數(shù)據(jù)的負(fù)擔(dān),使用每圈輸出一個脈沖,經(jīng)測試,精度以足夠使用。</p><p> 3.3 顯示及鍵盤接口電路</p><p> ?。?)顯示器接
34、口電路</p><p> 出租車計價器運行過程中需要顯示的信息包括:價格設(shè)定,等待時間顯示,行駛距離顯示,最終價格顯示。由于顯示的都可以用字符顯示,可用液晶1602顯示,1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用
35、,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。 1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。 目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應(yīng)用于市面上大部分的字符型液晶。1602采用標(biāo)準(zhǔn)的16腳接口,其中: </p><p> 第1腳:
36、VSS為電源地 </p><p> 第2腳:VCC接5V電源正極 </p><p> 第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。 </p><p> 第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。
37、</p><p> 第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。 </p><p> 第6腳:E(或EN)端為使能(enable)端。 </p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。 </p><p> 第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。編輯本
38、段1602LCD的特性 +3.3V電壓,對比度可調(diào) </p><p> 內(nèi)含復(fù)位電路 提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能 有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM </p><p> 內(nèi)建有192個5X7點陣的字型的字符發(fā)生器CGROM 8個可由用戶自定義的5X7的字符發(fā)生器CGRAM。 </p><p> 16
39、02LCD特征及應(yīng)用 微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中。</p><p> 由此按照圖3.3.1連接</p><p> 圖3.3.1 1602液晶接口</p><p> 1602液晶數(shù)據(jù)口接單片機I/O口P2口,RS接P07,RW接P06,E接P05,其它接口如圖所示,VL接口可調(diào)節(jié)液晶對比度。</p>
40、<p><b> ?。?)鍵盤接口電路</b></p><p> 本系統(tǒng)沒有使用復(fù)雜按鍵,只用了兩位簡單的撥碼開關(guān)一位選擇白天模式還是夜間模式,另一位選擇是否啟動紅燈等待功能。</p><p><b> 3.4 電源電路</b></p><p> 電源直接由+5V輸入即可,只需要一種電源,簡單易得,車載充
41、電器即可實現(xiàn)+5V電源,無需另加電源模塊。</p><p><b> 4 系統(tǒng)軟件設(shè)計</b></p><p> 系統(tǒng)軟件分為主程序、中斷服務(wù)程序和子程序三部分。</p><p><b> 4.1 主程序設(shè)計</b></p><p> 主程序是系統(tǒng)上電或復(fù)位后首先要執(zhí)行的程序,主程序主要完成
42、系統(tǒng)的初始化、掃描顯示、掃描鍵盤等工作。</p><p> 本系統(tǒng)上電或復(fù)位時,根據(jù)兩個撥碼開關(guān)狀態(tài)可分為兩種模式,每種模式兩種狀態(tài),</p><p> 圖4.1 主程序流程圖</p><p> 系統(tǒng)上電后,單片機CPU自動查詢撥碼開關(guān),若選擇白天模式是,實行白天計費標(biāo)準(zhǔn),若選擇夜間模式是時,進入夜間計費標(biāo)準(zhǔn),程序執(zhí)行過程中會查詢撥碼開關(guān)是否開啟紅燈等待計費
43、功能,如果是,則執(zhí)行紅燈等待計費程序,然后執(zhí)行總計價程序,如果否,則不執(zhí)行紅燈等待計費程序,直接執(zhí)行總計價程序,得出最終價格。</p><p> 按照上述分析,主程序流程圖如圖4.1所示。</p><p> 4.2 中斷服務(wù)程序設(shè)計</p><p> 從主程序的設(shè)計可以知道:定時器T0定義為方式1外部計數(shù)方式,用于產(chǎn)生5ms的時鐘周期,在主程序中累加1000
44、次產(chǎn)生5s的時間,每隔5s執(zhí)行程序計算出租車行駛距離,判斷是否為等紅燈。外部中斷0為接受光碼盤傳感器傳來的脈沖信號,每來一個脈沖產(chǎn)生一個中斷,計數(shù)加一,由此查看計數(shù)的數(shù)值就可以指導(dǎo)出租車行駛的距離。外部中斷流程圖如圖4.2.1所示。</p><p> 圖4.2.1 外部中斷服務(wù)程序流程圖</p><p> T0定時器中斷流程圖如圖4.2.2所示。</p><p&g
45、t; 圖4.2.2 T0定時器中斷服務(wù)程序流程圖</p><p> 在執(zhí)行外部中斷時會暫停定時器中斷,雖然會有微小誤差,但可避免計數(shù)出錯。</p><p> 4.3 部分主要子程序的設(shè)計</p><p> 系統(tǒng)主要子程序包括距離顯示子程序、金額顯示子程序,等待時間顯示子程序等。</p><p><b> 距離顯示字程序&l
46、t;/b></p><p> 距離顯示子程序是輸入一個浮點型數(shù)據(jù),將數(shù)據(jù)拆開為千位,百位,十位,個位,小數(shù)點,十分位,然后再寫入地址,在每一位的地址寫入對應(yīng)數(shù)據(jù),此時數(shù)據(jù)已經(jīng)為字符型。</p><p><b> 金額顯示子程序</b></p><p> 金額顯示子程序是輸入一個浮點型數(shù)據(jù),將數(shù)據(jù)拆開為千位,百位,十位,個位,小數(shù)點,
47、十分位,然后再寫入地址,在每一位的地址寫入對應(yīng)數(shù)據(jù),此時數(shù)據(jù)已經(jīng)為字符型。當(dāng)不足2公里時顯示起步價,當(dāng)超過3公里時,按照計算公式顯示,計算公式為:</p><p> 總價=起步價+0.1*每公里單價*((行駛距離-3000)/100+1)。</p><p><b> 等待時間顯示子程序</b></p><p> 等待時間顯示子程序是輸入一
48、個整型數(shù)據(jù),將數(shù)據(jù)拆開為千位,百位,十位,個位,然后再寫入地址,在每一位的地址寫入對應(yīng)數(shù)據(jù),此時數(shù)據(jù)已經(jīng)為字符型。</p><p> 總程序流程圖如圖4.2.3所示。</p><p> 圖4.2.3 總流程圖</p><p><b> 5 系統(tǒng)調(diào)試與總結(jié)</b></p><p> 系統(tǒng)研制完成后,在實驗室進行了
49、系統(tǒng)功能測試和技術(shù)指標(biāo)測試。</p><p> 測試結(jié)果符合系統(tǒng)技術(shù)指標(biāo)規(guī)定。</p><p><b> 5.1 系統(tǒng)調(diào)試</b></p><p> 1.白天夜間模式選擇調(diào)試</p><p> 當(dāng)撥碼開關(guān)選擇白天模式時,即P11為1時,即為白天模式,起步價顯示為08 Y(元),初始價顯示為08+1.5*S Y(元
50、),如圖5.1.1.1。當(dāng)撥碼開關(guān)選擇夜間模式時,即為P11為0,即為夜間模式,起步價顯示為10 Y,初始價顯示為10+1.5*S Y,如圖5.1.1.2.</p><p> 圖5.1.1.1 白天模式選擇顯示</p><p> 圖5.1.1.2 夜間模式選擇顯示</p><p> 2.是否開啟紅燈等待功能調(diào)試</p><p>
51、 當(dāng)撥碼開關(guān)選擇開啟紅燈等待計費功能時,即P10為0時,等待紅燈時會計費,當(dāng)沒有脈沖輸入時,即為等待紅燈,當(dāng)一開始就沒有脈沖輸入時,只按等待時間計費,而不按行程計費。計費圖如圖5.1.2.</p><p> 圖5.1.2 等待紅燈計費顯示</p><p><b> 3.行程計費</b></p><p> 當(dāng)行駛距離小于3000米時,只收
52、起步價,如圖5.1.3.1。當(dāng)行駛距離大于3000米時,</p><p> 按計算公式是收費,如圖5.1.3.2</p><p> 圖5.1.3.1 只收起步價</p><p> 圖5.1.3.2 按計算公式收費</p><p> 測試結(jié)果符合系統(tǒng)技術(shù)指標(biāo)規(guī)定。</p><p><b> 5.2
53、 總結(jié)</b></p><p> MCU具有體積小、重量輕、價格低廉的特點,應(yīng)用于自動控制系統(tǒng)中可以有效降低系統(tǒng)的成本。針對不同工業(yè)現(xiàn)場的情況,采取相應(yīng)的抗干擾措施,可以在環(huán)境惡劣的工業(yè)現(xiàn)場可靠地運行。數(shù)據(jù)采集用光碼盤,具有轉(zhuǎn)換精度高、抗工頻干擾能力強、易于實現(xiàn)光電隔離以及價格低廉等特點,顯示采用1602液晶顯示,實用簡單,操作方便,顯示清晰明了。合理確定外圍元件的參數(shù)是保證數(shù)據(jù)采集精度的關(guān)鍵。撥碼
54、開關(guān)可自由選擇模式和狀態(tài),使用方便靈活。</p><p><b> 參考文獻</b></p><p> [1] 張迎新.單片微型計算機原理、應(yīng)用及接口技術(shù)(第2版)[M].北京:國防工業(yè)出版社,2004</p><p> [2] 閻石.?dāng)?shù)字電路技術(shù)基礎(chǔ)(第五版).北京:高等教育出版社,2006</p><p>
55、[3] 康華光. 電子技術(shù)基礎(chǔ) 模擬部分(第五版).北京;高等教育出版社,2006</p><p> [4] 郭天祥. 新概念51單片機C語言教程-入門、提高、開發(fā)、拓展全攻略. 北京;電子工業(yè)出版社,2009</p><p><b> 附錄A 系統(tǒng)原理圖</b></p><p><b> 附錄B 源程序</b>&
56、lt;/p><p> #include <reg52.h></p><p> #define uchar unsigned char </p><p> #define uint unsigned int</p><p> sbit rs=P0^7;//數(shù)據(jù)命令選擇</p><p> sbit lcd
57、en=P0^5;//lcd使能</p><p> sbit rw=P0^6;//lcd讀寫控制</p><p> sbit day=P1^1;//白天夜晚選擇</p><p> sbit deng=P1^0;//是否開啟紅燈等待計費</p><p> //sbit v4=P0^0;//調(diào)試時產(chǎn)生速度</p><p&
58、gt; uchar day_price=8,night_price=10,i;</p><p> float danjia=1.5;</p><p> uint n=0,k=0,stopnum=0;</p><p> unsigned long int temp=0;</p><p> uchar code tabled[]=&qu
59、ot; s 08+1.5*S Y";</p><p> uchar code tablen[]=" s 10+1.5*S Y";</p><p> uchar code tabledp[]="000.0km 0008.0 Y";</p><p> uchar code tablenp[]="
60、;000.0km 0010.0 Y"; </p><p> void delay(uint z)//延時函數(shù)</p><p><b> {</b></p><p><b> uint x,y;</b></p><p> for(x=z;x>0;x--)</p>
61、<p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> void write_com(uchar com)</p><p> {//寫液晶命令函數(shù)</p><p><b> rs=0;</b></p>&l
62、t;p><b> lcden=0;</b></p><p><b> P2=com;</b></p><p><b> delay(3);</b></p><p><b> lcden=1;</b></p><p><b> de
63、lay(3);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p> void write_date(uchar date)</p><p> {//寫液晶數(shù)據(jù)函數(shù)</p><p><b
64、> rs=1;</b></p><p><b> lcden=0;</b></p><p><b> P2=date;</b></p><p><b> delay(3);</b></p><p><b> lcden=1;</b&g
65、t;</p><p><b> delay(3);</b></p><p><b> lcden=0;</b></p><p><b> }</b></p><p> void write_km(unsigned long int date)</p>&
66、lt;p> {//第一行寫距離,寫5占7</p><p> uchar bai,shi,ge,shifen;</p><p> shifen=(int)((date/100))%10;</p><p> ge=date/1000%10;</p><p> if(date>=10000)</p><p&
67、gt;<b> {</b></p><p> shi=date/10000%10;</p><p> if(date>=100000)</p><p><b> {</b></p><p> bai=date/100000%10;</p><p><b&
68、gt; }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> bai=0;</b></p><p><b> }</b></p><p><
69、;b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> shi=0;</b></p><p><b> }</b></p><p>
70、; write_com(0x80);</p><p> write_date(0x30+bai);</p><p> write_date(0x30+shi);</p><p> write_date(0x30+ge);</p><p> write_date('.');</p><p>
71、write_date(0x30+shifen);</p><p><b> }</b></p><p> void write_stoptime(int num)</p><p> { //寫等待時間</p><p> char qian,bai,shi,ge;</p><p><
72、b> int time;</b></p><p> time=num*5;</p><p> ge=time%10;</p><p> shi=time/10%10;</p><p> bai=time/100%10;</p><p> qian=time/1000%10;</p&g
73、t;<p> write_com(0x80+0x40);</p><p> write_date(0x30+qian);</p><p> write_date(0x30+bai);</p><p> write_date(0x30+shi);</p><p> write_date(0x30+ge);</p&g
74、t;<p><b> }</b></p><p> void write_price(float date)</p><p> {//第一行顯示價格,10開始,寫6占7滿</p><p> char qian,bai,shi,yuan,jiao;</p><p> jiao=(int)(date*
75、10)%10;</p><p> yuan=(int)date%10;</p><p> shi=(int)(date/10)%10;</p><p> bai=(int)(date/100)%10;</p><p> qian=(int)(date/1000)%10;</p><p> write_com(
76、0x80+8);</p><p> write_date(0x30+qian);</p><p> write_date(0x30+bai);</p><p> write_date(0x30+shi);</p><p> write_date(0x30+yuan);</p><p> write_date(
77、'.');</p><p> write_date(0x30+jiao);</p><p><b> }</b></p><p> void init()</p><p><b> {//初始化函數(shù)</b></p><p> TMOD=0x11;//
78、定時器/計數(shù)器1和0工作方式1,,1為計數(shù)</p><p> TH0=(65536-5000)/256;//T0寫入初值,5ms</p><p> TL0=(65536-5000)%256;</p><p> EA=1;//打開總中斷</p><p> ET0=1;//開計數(shù)器0中斷</p><p> EX0
79、=1;//開外部中斷0</p><p> IT0=1;//設(shè)置負(fù)跳變沿觸發(fā)中斷</p><p> TR0=1;//啟動定時器0</p><p> write_com(0x38);//1602液晶初始化/*設(shè)置16*2顯示5*7點整8位數(shù)據(jù)口</p><p> write_com(0x0c);//開顯示,不顯示光標(biāo)</p>
80、<p> write_com(0x06);//寫一個字符后地址指針加以</p><p> write_com(0x01);//顯示清零,數(shù)據(jù)指針清零</p><p> if(day==1)</p><p><b> {</b></p><p> write_com(0x80);</p>
81、<p> for(i=0;i<16;i++)</p><p><b> {</b></p><p> write_date(tabledp[i]); </p><p><b> }</b></p><p> write_com(0x80+0x40);</p>
82、;<p> for(i=0;i<16;i++)</p><p><b> {</b></p><p> write_date(tabled[i]);</p><p><b> }</b></p><p><b> }</b></p>
83、<p><b> else</b></p><p><b> {</b></p><p> write_com(0x80);</p><p> for(i=0;i<16;i++)</p><p><b> {</b></p><p&
84、gt; write_date(tablenp[i]); </p><p><b> }</b></p><p> write_com(0x80+0x40);</p><p> for(i=0;i<16;i++)</p><p><b> {</b></p><p
85、> write_date(tablen[i]);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void price(uchar qi,float dj,unsigned lo
86、ng int quan)</p><p><b> {</b></p><p> float zongjia,qibu;</p><p> qibu=stopnum*0.05+qi;</p><p> if(quan>3000)</p><p><b> {</b&
87、gt;</p><p> zongjia=qibu+0.1*dj*((quan-3000)/100+1);</p><p> write_price(zongjia) ;</p><p><b> }</b></p><p><b> else</b></p><p>
88、;<b> {</b></p><p> write_price(qibu) ;</p><p><b> } </b></p><p><b> }</b></p><p> void main()//主函數(shù)</p><p><b&g
89、t; {</b></p><p><b> rw=0;</b></p><p> init();//調(diào)用初始化函數(shù)</p><p><b> while(1)</b></p><p><b> {</b></p><p> if
90、(day==1)</p><p><b> {</b></p><p> price(day_price,danjia,temp) ;</p><p><b> }</b></p><p><b> else</b></p><p><b&
91、gt; {</b></p><p> price(night_price,danjia,temp) ;</p><p><b> }</b></p><p> write_km(temp);</p><p> if(deng==0)</p><p><b> {
92、</b></p><p> if(k>1000)</p><p><b> {</b></p><p> if((temp-n)<5)</p><p><b> {</b></p><p> stopnum++;</p><
93、;p><b> }else{}</b></p><p><b> k=0;</b></p><p><b> n=temp;</b></p><p><b> }else{} </b></p><p><b> }</b&
94、gt;</p><p><b> else</b></p><p><b> {</b></p><p> stopnum=0;</p><p><b> }</b></p><p> write_stoptime(stopnum);</
95、p><p><b> }</b></p><p><b> }</b></p><p> void ex() interrupt 0//外部中斷0服務(wù)程序,外部輸入</p><p><b> {</b></p><p><b> TR0=
96、0;</b></p><p><b> temp++;</b></p><p><b> TR0=1;</b></p><p><b> } </b></p><p> void time0() interrupt 1//定時計數(shù)器中斷0</p>
97、;<p><b> {</b></p><p> TH0=(65536-5000)/256;//T0寫初值,5ms</p><p> TL0=(65536-5000)%256;</p><p> //v4=~v4; //調(diào)試時產(chǎn)生速度</p><p><b> k++;</b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 出租車計價器課程設(shè)計
- 課程設(shè)計--出租車計價器設(shè)計
- 出租車計價器設(shè)計課程設(shè)計
- 課程設(shè)計---出租車計價器設(shè)計
- 課程設(shè)計---出租車計價器設(shè)計
- 基于at89s51單片機的出租車計價器設(shè)計
- 課程設(shè)計---出租車計價器的設(shè)計
- 課程設(shè)計--出租車計價器的設(shè)計
- 出租車計價器課程設(shè)計報告
- 課程設(shè)計---基于51單片機的出租車計價器
- 課程設(shè)計--基于at89c52單片機出租車計價器設(shè)計
- 畢業(yè)設(shè)計at89s51出租車計價器系統(tǒng)設(shè)計
- 硬件課程設(shè)計----出租車計價器
- eda課程設(shè)計--出租車計價器
- eda課程設(shè)計--出租車計價器
- 出租車計價器課程設(shè)計論文
- 接口課程設(shè)計---出租車計價器
評論
0/150
提交評論