版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> 單片機與控制技術(shù)</b></p><p> 課 程 設 計</p><p><b> 成績評定表</b></p><p> 設計課題 基于89C51的出租車計價器設計 </p><p> 學院名稱 : 電氣工程學院
2、 </p><p> 專業(yè)班級 : 自動化1004 </p><p> 學生姓名 : </p><p> 學 號 : </p><p> 指導教師 :
3、 </p><p> 設計地點 : </p><p> 設計時間 : 2012-12-17~2012-12-28 </p><p> 單片機系統(tǒng) 課程設計任務書</p><p><b&
4、gt; 目錄</b></p><p><b> 1 引言3</b></p><p> 2 總體方案設計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 硬件電路設計7</p><p> 3.1 單片機及其外圍電路7&
6、lt;/p><p> 3.2 光電傳感器與信號調(diào)理電路9</p><p> 3.3 顯示及鍵盤接口電路10</p><p> (1)顯示器接口電路10</p><p> ?。?)鍵盤接口電路12</p><p> 3.4 電源電路13</p><p> 4 系統(tǒng)軟件設計13&l
7、t;/p><p> 4.1 主程序設計13</p><p> 4.2 中斷服務程序設計14</p><p> 4.3 部分主要子程序的設計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> 如今的出租車計價器五花八樣,功能各異,但主要功能都基本相同,以行駛距離為標準計價,有些加上的等待計價,有些更智能,可以為乘客提供拼車計價,本設計提供了基本的一距離為主要標準計
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è)控制領域的廣泛應用。以8051為內(nèi)
12、核AT89S52單片機足可以實現(xiàn)計價功能,以1602液晶顯示信息。AT89S52單片機價格便宜,工作穩(wěn)定,性能良好,易學易用,操作使用方便,ISP寫入程序,方便快捷。8051系列單片機也是我們課程所學的主要單片機,更利于我們學習實踐。而如今較為流行的AVR單片機和以cortex為內(nèi)核的單片機比較流行,但他們的價格相對于AT89S52較貴,功能較多,控制復雜,程序編寫較難,且大多為LQFP封裝,不利于我們實驗練習,而使用51系列單片機足矣
13、完成出租車計價功能,是比較理想的選擇。</p><p><b> 2 總體方案設計</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> (2)距離速度檢測系統(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)硬件方案的關鍵,它關系到其它幾個部分方案的確定,對于出租車計價器,控制器一般使用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)已逐漸成為工廠自動化和各控制領域的支柱產(chǎn)業(yè)之一。。</p><p> <2>AVR單片機。AVR單片機是1997年由ATMEL公司研發(fā)出的增強型內(nèi)置Flash的RISC(Reduced Instruction Set CPU) 精簡指令集高速8位單片機。AVR的單片機可以廣泛應用于計算機外部設備、工業(yè)實時控制
18、、儀器儀表、通訊設備、家用電器等各個領域。 1997年,由Atmel公司挪威設計中心的A先生和V先生,利用Atmel公司的Flash新技術(shù),共同研發(fā)出RISC精簡指令集高速8位單片機,簡稱AVR。AVR單片機功能較完善,自帶A/D轉(zhuǎn)換。但開發(fā)編程使用相比于8051系列有些復雜。需要一定的學習。</p><p> <3>Cortex系列單片機。ARM公司在經(jīng)典處理器ARM11以后的產(chǎn)品改用Cortex
19、命名,并分成A、R和M三類,旨在為各種不同的市場提供服務。 Cortex系列屬于ARMv7架構(gòu),這是ARM公司最新的指令集架構(gòu)。ARMv7架構(gòu)定義了三大分工明確的系列:“A”系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應用;“R”系列針對實時系統(tǒng);“M”系列對微控制器。 由于應用領域不同,基于v7架構(gòu)的Cortex處理器系列所采用的技術(shù)也不相同,基于v7A的稱為Cortex-A系列,基于v7R的稱為Cortex-R系列,基于v7M
20、的稱為Cortex-M系列。但Cortex系列單片機開發(fā)復雜,需要深入學習,當然其功能也強大,不過價格也相對8051貴一些。</p><p> 出租車計價器作為一種簡單的設備,本身價值不高,更要求控制系統(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ù)傳入單片機會增加處理器負擔,可采用產(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> (4)人機交互界面</b></p><p> 人機交互界面主要有以下幾種形式:</p>
24、<p> ① CRT顯示器及標準鍵盤:顯示信息量大,操作方便,顯示界面友好,但價格高,適用于采用工控機作控制器的場合。</p><p> ?、?工業(yè)人機界面(觸摸屏):和CRT顯示器一樣,具有顯示信息量大,操作方便,顯示界面友好,適合惡劣的工業(yè)環(huán)境使用等特點,但價格更高,一般與PLC配套使用。</p><p> ?、?LED或LCD數(shù)碼顯示器及自行設計的小鍵盤:價格低廉、體
25、積小是其最大優(yōu)點,應用于以MCU為控制器的系統(tǒng)中較合適。</p><p> 考慮價格及系統(tǒng)構(gòu)成等因素,人機交互界面采用LCD顯示和薄碼開關選擇一些單片機需要處理的一些狀態(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> 撥碼開關可選擇白天模式和晚上模式,也可選擇是否等紅燈收費。</p><p><b&
27、gt; 3 硬件電路設計</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在眾多嵌入式控制應用系統(tǒ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、掉電標識符 。</p>
31、<p> AT89S52的外圍電路主要包括時鐘電路、復位電路。如圖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)過狹縫后由光敏元件接受,光敏元件的排列與碼道一一對應,對于亮區(qū)和暗區(qū)的
33、光敏元件輸出的信號,前者為“1”,后者為“0”,當碼盤旋轉(zhuǎn)在不同位置時,光敏元件輸出信號的組合反映出一定規(guī)律的數(shù)字量,代表了碼盤軸的角位移。本系統(tǒng)光碼盤有兩種輸出,一種是每個脈沖輸出一個脈沖,另一種是每轉(zhuǎn)一圈輸出一個脈沖,為了信號穩(wěn)定和減少單片機處理數(shù)據(jù)的負擔,使用每圈輸出一個脈沖,經(jīng)測試,精度以足夠使用。</p><p> 3.3 顯示及鍵盤接口電路</p><p> ?。?)顯示器接
34、口電路</p><p> 出租車計價器運行過程中需要顯示的信息包括:價格設定,等待時間顯示,行駛距離顯示,最終價格顯示。由于顯示的都可以用字符顯示,可用液晶1602顯示,1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用
35、,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。 1602LCD是指顯示的內(nèi)容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。 目前市面上字符液晶絕大多數(shù)是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應用于市面上大部分的字符型液晶。1602采用標準的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腳背光負極。編輯本
38、段1602LCD的特性 +3.3V電壓,對比度可調(diào) </p><p> 內(nèi)含復位電路 提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能 有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM </p><p> 內(nèi)建有192個5X7點陣的字型的字符發(fā)生器CGROM 8個可由用戶自定義的5X7的字符發(fā)生器CGRAM。 </p><p> 16
39、02LCD特征及應用 微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應用系統(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> (2)鍵盤接口電路</b></p><p> 本系統(tǒng)沒有使用復雜按鍵,只用了兩位簡單的撥碼開關一位選擇白天模式還是夜間模式,另一位選擇是否啟動紅燈等待功能。</p><p><b> 3.4 電源電路</b></p><p> 電源直接由+5V輸入即可,只需要一種電源,簡單易得,車載充
41、電器即可實現(xiàn)+5V電源,無需另加電源模塊。</p><p><b> 4 系統(tǒng)軟件設計</b></p><p> 系統(tǒng)軟件分為主程序、中斷服務程序和子程序三部分。</p><p><b> 4.1 主程序設計</b></p><p> 主程序是系統(tǒng)上電或復位后首先要執(zhí)行的程序,主程序主要完成
42、系統(tǒng)的初始化、掃描顯示、掃描鍵盤等工作。</p><p> 本系統(tǒng)上電或復位時,根據(jù)兩個撥碼開關狀態(tài)可分為兩種模式,每種模式兩種狀態(tài),</p><p> 圖4.1 主程序流程圖</p><p> 系統(tǒng)上電后,單片機CPU自動查詢撥碼開關,若選擇白天模式是,實行白天計費標準,若選擇夜間模式是時,進入夜間計費標準,程序執(zhí)行過程中會查詢撥碼開關是否開啟紅燈等待計費
43、功能,如果是,則執(zhí)行紅燈等待計費程序,然后執(zhí)行總計價程序,如果否,則不執(zhí)行紅燈等待計費程序,直接執(zhí)行總計價程序,得出最終價格。</p><p> 按照上述分析,主程序流程圖如圖4.1所示。</p><p> 4.2 中斷服務程序設計</p><p> 從主程序的設計可以知道:定時器T0定義為方式1外部計數(shù)方式,用于產(chǎn)生5ms的時鐘周期,在主程序中累加1000
44、次產(chǎn)生5s的時間,每隔5s執(zhí)行程序計算出租車行駛距離,判斷是否為等紅燈。外部中斷0為接受光碼盤傳感器傳來的脈沖信號,每來一個脈沖產(chǎn)生一個中斷,計數(shù)加一,由此查看計數(shù)的數(shù)值就可以指導出租車行駛的距離。外部中斷流程圖如圖4.2.1所示。</p><p> 圖4.2.1 外部中斷服務程序流程圖</p><p> T0定時器中斷流程圖如圖4.2.2所示。</p><p&g
45、t; 圖4.2.2 T0定時器中斷服務程序流程圖</p><p> 在執(zhí)行外部中斷時會暫停定時器中斷,雖然會有微小誤差,但可避免計數(shù)出錯。</p><p> 4.3 部分主要子程序的設計</p><p> 系統(tǒng)主要子程序包括距離顯示子程序、金額顯示子程序,等待時間顯示子程序等。</p><p><b> 距離顯示字程序&l
46、t;/b></p><p> 距離顯示子程序是輸入一個浮點型數(shù)據(jù),將數(shù)據(jù)拆開為千位,百位,十位,個位,小數(shù)點,十分位,然后再寫入地址,在每一位的地址寫入對應數(shù)據(jù),此時數(shù)據(jù)已經(jīng)為字符型。</p><p><b> 金額顯示子程序</b></p><p> 金額顯示子程序是輸入一個浮點型數(shù)據(jù),將數(shù)據(jù)拆開為千位,百位,十位,個位,小數(shù)點,
47、十分位,然后再寫入地址,在每一位的地址寫入對應數(shù)據(jù),此時數(shù)據(jù)已經(jīng)為字符型。當不足2公里時顯示起步價,當超過3公里時,按照計算公式顯示,計算公式為:</p><p> 總價=起步價+0.1*每公里單價*((行駛距離-3000)/100+1)。</p><p><b> 等待時間顯示子程序</b></p><p> 等待時間顯示子程序是輸入一
48、個整型數(shù)據(jù),將數(shù)據(jù)拆開為千位,百位,十位,個位,然后再寫入地址,在每一位的地址寫入對應數(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ù)指標測試。</p><p> 測試結(jié)果符合系統(tǒng)技術(shù)指標規(guī)定。</p><p><b> 5.1 系統(tǒng)調(diào)試</b></p><p> 1.白天夜間模式選擇調(diào)試</p><p> 當撥碼開關選擇白天模式時,即P11為1時,即為白天模式,起步價顯示為08 Y(元),初始價顯示為08+1.5*S Y(元
50、),如圖5.1.1.1。當撥碼開關選擇夜間模式時,即為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、 當撥碼開關選擇開啟紅燈等待計費功能時,即P10為0時,等待紅燈時會計費,當沒有脈沖輸入時,即為等待紅燈,當一開始就沒有脈沖輸入時,只按等待時間計費,而不按行程計費。計費圖如圖5.1.2.</p><p> 圖5.1.2 等待紅燈計費顯示</p><p><b> 3.行程計費</b></p><p> 當行駛距離小于3000米時,只收
52、起步價,如圖5.1.3.1。當行駛距離大于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ù)指標規(guī)定。</p><p><b> 5.2
53、 總結(jié)</b></p><p> MCU具有體積小、重量輕、價格低廉的特點,應用于自動控制系統(tǒng)中可以有效降低系統(tǒng)的成本。針對不同工業(yè)現(xiàn)場的情況,采取相應的抗干擾措施,可以在環(huán)境惡劣的工業(yè)現(xiàn)場可靠地運行。數(shù)據(jù)采集用光碼盤,具有轉(zhuǎn)換精度高、抗工頻干擾能力強、易于實現(xiàn)光電隔離以及價格低廉等特點,顯示采用1602液晶顯示,實用簡單,操作方便,顯示清晰明了。合理確定外圍元件的參數(shù)是保證數(shù)據(jù)采集精度的關鍵。撥碼
54、開關可自由選擇模式和狀態(tài),使用方便靈活。</p><p><b> 參考文獻</b></p><p> [1] 張迎新.單片微型計算機原理、應用及接口技術(shù)(第2版)[M].北京:國防工業(yè)出版社,2004</p><p> [2] 閻石.數(shù)字電路技術(shù)基礎(第五版).北京:高等教育出版社,2006</p><p>
55、[3] 康華光. 電子技術(shù)基礎 模擬部分(第五版).北京;高等教育出版社,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;//設置負跳變沿觸發(fā)中斷</p><p> TR0=1;//啟動定時器0</p><p> write_com(0x38);//1602液晶初始化/*設置16*2顯示5*7點整8位數(shù)據(jù)口</p><p> write_com(0x0c);//開顯示,不顯示光標</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服務程序,外部輸入</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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租車計價器課程設計
- 出租車計價器課程設計
- 出租車計價器課程設計
- 出租車計價器課程設計
- 課程設計--出租車計價器設計
- 出租車計價器設計課程設計
- 課程設計---出租車計價器設計
- 課程設計---出租車計價器設計
- 基于at89s51單片機的出租車計價器設計
- 課程設計---出租車計價器的設計
- 課程設計--出租車計價器的設計
- 出租車計價器課程設計報告
- 課程設計---基于51單片機的出租車計價器
- 課程設計--基于at89c52單片機出租車計價器設計
- 畢業(yè)設計at89s51出租車計價器系統(tǒng)設計
- 硬件課程設計----出租車計價器
- eda課程設計--出租車計價器
- eda課程設計--出租車計價器
- 出租車計價器課程設計論文
- 接口課程設計---出租車計價器
評論
0/150
提交評論