freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機的出租車計費系統(tǒng)的設(shè)計與實現(xiàn)-資料下載頁

2024-11-16 20:01本頁面

【導(dǎo)讀】大的方便,出租車計費系統(tǒng)的穩(wěn)定、準確以及可靠直接關(guān)系到人民群眾的切身利益。設(shè)計一套計費準確可靠的計費系統(tǒng)顯得非常重要。把理論知識與實踐相結(jié)合,對學(xué)生所學(xué)知識進行一次總結(jié)和審核。量計算路程,以及使用數(shù)據(jù)掉電保護芯片AT24C02來存儲數(shù)據(jù)。本設(shè)計不僅要完成計價器的基本功能,還能根據(jù)白天、黑夜、中途等待來

  

【正文】 圖 41 主程序流程圖 鍵盤服務(wù)程序 鍵盤采用查詢的方式,放在主程序中,當沒有按鍵按下的時候,單片機循環(huán)主程序,一旦右鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。 42 鍵盤掃描流程圖 徐州工 程學(xué)院畢業(yè)設(shè)計(論文) 19 鍵盤掃描程序描述 void delay1ms() //延時函數(shù),用于消抖 if( ==0) {執(zhí)行功能 。delay1ms(500)}。//X 可取 0 至 7 特別注意,在計算總金額時,我們必須要知道起步價格,由于白天與夜間的起步價不同,所以在設(shè)計時我們通過一個按鈕來切換白天與黑夜,例如現(xiàn)在顯示的是白天起步價,當按下該鍵,進入夜間起步價,在按下該鍵,又進入白天起步價。對于這樣的按鍵設(shè)計,我們需要設(shè)置一個參數(shù)來統(tǒng)計按鍵次數(shù),若為偶數(shù)則為白天,若為奇數(shù)則為黑夜,所這樣就可以在白天與夜間方便的進行切換。下圖為切換流程圖。 圖 43 白天與夜 間切換流程圖 顯示子程序服務(wù)程序 為了方便讀 /寫控制, 在程序中作了如下定義 sbit RS=P3^4。 sbit RW=P3^6。 sbit E=P3^7。 這樣方便對 LCD 液晶顯示器的控制。基本操作狀態(tài)如表 41 所示。 表 41 基本操作狀態(tài) 讀狀態(tài) 輸入 RS=L, R/W=H, E=H 輸出 D0~D7 =狀態(tài)字 寫指令 輸入 RS=L, R/W=L, D0~D7 =狀態(tài)字, E=高脈沖 輸出 無 讀數(shù)據(jù) 輸入 RS=H, R/W=H, E=H 輸出 D0~D7 =數(shù)據(jù) 寫數(shù)據(jù) 輸入 RS=H, R/W=L, D0~D7 =狀數(shù)據(jù), E=高脈沖 輸出 無 徐州工 程學(xué)院畢業(yè)設(shè)計(論文) 20 此外,用到每個功能模塊函數(shù)已在程序中定義,如下: void LCD_w_dat(char dat) // 寫數(shù)據(jù) void LCD_w_(unsigned ) // 寫指令 void init_LCD(void) // 初始化 lcd void display_LCD_string(char *p ) //字符串輸出函數(shù) void gotoxy(unsigned x,unsigned y) //字符輸出位置 程序流程圖如圖 44 所示。 圖 44 LCD1602 程序流程圖 霍爾傳感器 A44E 軟件的設(shè)計 里程數(shù)設(shè)計 假設(shè)輪子的周長位 (m),當磁鐵經(jīng)過 A44E 時,產(chǎn)生霍爾效應(yīng),使 出現(xiàn)一個下降沿,觸發(fā)中斷,通過累積脈沖個數(shù) gl,從而計算出里程數(shù) S=*gl。程序流程圖如圖45 所示。 圖 45里程數(shù)設(shè)計流程圖 LCD 初始化 清屏 顯示字符 返回 N Y gl++ 是否產(chǎn)生? S=gl* 初始化 等待外部中斷 0 LCD 輸出 S 徐州工 程學(xué)院畢業(yè)設(shè)計(論文) 21 總金額設(shè)計 假設(shè)起步價為 10 元,起步距離為 250m,超過 250m 之后,單價為 2 元 /50m(由于該設(shè)計只是模擬計費系統(tǒng),所以一些參數(shù)取值只是方便該系統(tǒng)的計算 )。于是對于金額的計費,便會出現(xiàn)兩種情況:一種是路程在起步之內(nèi),另一種是超過起步距離。程序流程圖如圖 46所示。 圖 46 金額計算流程圖 程序設(shè)計如下: void count(float m)//LCD 顯 示數(shù)值 m { disdata[0]=(int)m/1000+0x30。//千位數(shù) disdata[1]=(int)m%1000/100+0x30。//百位數(shù) disdata[2]=(int)m%100/10+0x30。//十位數(shù) disdata[3]=(int)m%100%10+0x30。//個數(shù)位 disdata[4]=(int)(m*10)%10+0x30。//小數(shù)位 LCD_w_dat(disdata[0])。//顯示千位 LCD_w_dat(disdata[1])。//顯示百位 LCD_w_dat(disdata[2])。//顯示十位 LCD_w_dat(disdata[3])。//顯示個位 LCD_w_dat(0x2e)。//顯示小數(shù)點 LCD_w_dat(disdata[4])。//顯示小數(shù)位 } display_LCD_string(Price:)。//總金額顯示 徐州工 程學(xué)院畢業(yè)設(shè)計(論文) 22 if(gl400){ count(10)。LCD_w_dat(0x5c)。} else{ count(10+(gl1000)/200*n)。LCD_w_dat(0x5c)。//n 為單價 } 測速設(shè)計 對于速度的計算,我們可以使用 v=s/t。具體步驟就是我們每隔 1 秒來計算出脈沖個數(shù)(相當于里程數(shù)),從而計算出輪子轉(zhuǎn)動速度。為了精確產(chǎn)生 1 秒鐘,我們要用選擇用定時器來定時 1 秒。 在定時中斷服務(wù)程序中,每 10ms 產(chǎn)生一次中斷,當產(chǎn)生 100 次中斷的時候,也就到了 1 秒,送數(shù)據(jù)到主函數(shù)中,并調(diào)用顯示子程序?qū)崟r顯示。定時中斷服務(wù)程序流程圖如圖47 所示。 圖 47 定時中斷服務(wù)程序流程圖 程序設(shè)計 如下: void time(void) interrupt 0//外部中斷 0 脈沖計數(shù) { gl++。 } 徐州工 程學(xué)院畢業(yè)設(shè)計(論文) 23 void time1(void) interrupt 1//定時器 0,定時 10ms {TH0=0xd8。 /*恢復(fù)定時器初始值 */ TL0=0xf0。 if(b1==0) { b2=gl。 } b1++。 if(b1==100) {b3=glb2。 b1=0。 //則速度 v=b3*,在主函數(shù)中我們還可以設(shè)計判斷 v 是否超過限 定速度,若超過則報警 } } 中途等待中斷服務(wù)程序設(shè)計 在計數(shù)狀態(tài)下霍爾開關(guān)沒有輸出信號,片內(nèi)的 T0 定時器便被啟動,每當計時到達 10分鐘,就對當前金額加上中途等待的單價,以后每十分鐘都自動加上中途等待的單價。當中途等待結(jié)束的時候,就自動切換到正常的計價。 AT24C02 掉電保護軟件設(shè)計 為了防止掉電使數(shù)據(jù)丟失,應(yīng)該隨時將重要數(shù)據(jù)寫到 AT24C02 中,當重新啟動計費器時再將數(shù)據(jù)讀出。所以需要定義兩個函數(shù),一個是向 AT24C02 中寫數(shù)據(jù),另一個是從AT24C02 讀數(shù)據(jù),兩個函數(shù)定義如 下: void write_byte(uchar add,uchar dat)。 uchar read_byte(uchar add)。 具體程序見附錄 2。 直流電機的軟件設(shè)計 為了產(chǎn)生占空比為 a1 的脈沖,我們需借助定時器中斷來實現(xiàn)。假設(shè)周期為 1 秒,我們可以定時 10ms,即每 10ms 產(chǎn)生一次中斷,中斷子服務(wù)程序流程見圖 48。 徐州工 程學(xué)院畢業(yè)設(shè)計(論文) 24 圖 48 中斷服務(wù)程序流程圖 中斷服務(wù)程序設(shè)計 void time1(void) interrupt 1 {static int b=0。 TH0=0xd8。 //恢復(fù)定時器初始值 ,定時 10ms TL0=0xf0。++b。 if (b=100) b=0。 if (b=a1) =0。 else =1。//a1 為占空比 } 在主函數(shù)中只要改變 a1( 占空比 )的值,就可以調(diào)節(jié)電機的轉(zhuǎn)動速度 。 徐州工 程學(xué)院畢業(yè)設(shè)計(論文) 25 5 系統(tǒng)調(diào)試 KEIL C 調(diào)試 硬件電路完成以后,進行系統(tǒng)的軟件設(shè)計,首先要分析系統(tǒng)對軟件的要求,然后進行軟件的總體設(shè)計,包括程序總體結(jié)構(gòu)設(shè)計和對程序進行模塊化設(shè)計。按照整體功能分成多個不同 模塊,單獨設(shè)計、編程、調(diào)試然后將各個模塊裝配調(diào)試,組成完整的軟件。在編程語言方面,選擇的是 C 語言進行編程。 C 語言是近年來國內(nèi)外普遍使用的一種編程語言,C 語言功能豐富,表達能力強,使用靈活方便,應(yīng)用面廣,目標程序效率高,可移植性好,而且能直接對計算機硬件進行操作。既有高級語言的特點,又有匯編語言的特點。設(shè)計使用的軟件開發(fā)工具是 KEIL uVISION2, KEIL uVISION2 是眾多單片機應(yīng)用開發(fā)軟件中優(yōu)秀的軟件之一,它支持眾多不同公司的 MCS51 架構(gòu)的芯片,它集編輯,編譯,仿真等于一體,同時還支持, PLM,匯編和 C 語言的程序設(shè)計,它的界面和常用的微軟 VC++的界面相似,界面友好,易學(xué)易用,在調(diào)試程序,軟件仿真方面也有很強大的功能。因此很多開發(fā) 51 應(yīng)用的工程師或普通的單片機愛好者,都對它十分看好。 KeilC51 交叉編譯器是一個針對 8051 系列單片機的 C 編譯器。生成的可執(zhí)行代碼快速緊湊,在運行效率和速度上可以和匯編程序得到的代碼相媲美。和匯編語言相比用 C 語言這樣的高級語言有很多優(yōu)勢比如: 1)對處理器的指令集不必了解 8051 CPU 的基本結(jié)構(gòu)可以了解但不是必須的; 2)寄存器的分配以及各種變量和數(shù)據(jù)的尋址 都由編譯器完成; 3)程序擁有了正式的結(jié)構(gòu)由 C 語言帶來的并且能被分成多個單獨的子函數(shù)這使整個應(yīng)用系統(tǒng)的結(jié)構(gòu)變得清晰同時讓源代碼變得可重復(fù)使用; 4)選擇特定的操作符來操作變量的能力提高了源代碼的可讀性; 5)可以運用和人的思維很接近的詞匯和算法表達式; 6)編寫程序和調(diào)試程序的時間得到很大程度的縮短; 7) C 運行連接庫包含一些標準的子程序如格式化輸出數(shù)字轉(zhuǎn)換浮點運算; 8)由于程序的模塊結(jié)構(gòu)技術(shù)使得現(xiàn)有的程序段可以很容易的包含到新的程序中去; 9) ANSI 標準的 C 語言是一種非常方便的獲得廣泛 應(yīng)用的在絕大部分系統(tǒng)中都能夠很容易得到的語言。 雖然 C51 是一個兼容 ANSI 的編譯器但為了支持 8051 系列 MCU還是加入了一些擴展的內(nèi)容 C51 編譯器的擴展內(nèi)容包括數(shù)據(jù)類型、存儲器類型、指針、重入函數(shù)、中斷服務(wù)程序、實時操作系統(tǒng)和 PL/M 及 A51 源程序的接口。 當使用 KEIL Software 工具時項目開發(fā)流程和其它軟件開發(fā)項目的流程極其相似,其步驟如下: 1) 項目文件的建立 選擇 Project 菜單下的 New Project 命令,在出現(xiàn)的 Great New Project 對話框中選擇新徐州工 程學(xué)院畢業(yè)設(shè)計(論文) 26 建項目文件的位置,輸 入新建項目文件的名字,單擊“保存”按鈕彈出 Select Device Target.? Target1?對話框,選擇所需的單片機型號,見圖 51。 圖 51 單片機的選擇型號 2)給項目添加程序文件 當項目文件建立好后,就可以給項目文件加入程序文件了, KEIL uVISION2 支持 C 語言程序,也支持匯編語言程序??梢允且呀?jīng)建立好的程序文件,也可以是新建的程序文件。因為此處程序文件已建立好 ,所以直接用以下方法添加: 在項目管理器窗口中,展開 Target1,可以看到 Source Group1; 右擊 Source Group1,選擇 Add File to Group Source ?Group1?命令; 在 Add File to Group Source ?Group1?對話框中選擇需要添加的程序文件,單擊 Add 按鈕,把所選文件添加到項目文件中。 3)編譯、連接項目,形成目標文件 當把程序文件添加到項目文件中,并且程序文件已經(jīng)建立好存盤后,就可以進行編譯、連接,形成目標文件。編譯、連接用 Project 菜單下的 Built Target 命令,程序編譯界面見圖 52。 徐州工 程學(xué)院畢業(yè)設(shè)計(論文) 27 圖 52 程序編譯界面 編譯、連接時, 如果程序有錯,則編譯不成功,并在下面的信息窗口給出相應(yīng)的出錯提示信息,修改后再編譯、連接,進行了多次修改,最終程序中沒有錯誤,編譯、連接成功。 PROTEUS 的調(diào)試 對于單片機硬件電路和軟件的調(diào)試, PROTEUS 提供了兩種方法:一種是系統(tǒng)總體執(zhí)行效果,一種是對軟件的分步調(diào)試以看具體的執(zhí)行情況。 對于總體執(zhí)行效果的調(diào)試方法,只需要執(zhí)行 debug 菜單下的 execute 菜單項或 F12 快捷鍵啟動執(zhí)行,用 debug 菜單下的 pause animation 菜單項或 pause 鍵暫停系統(tǒng)的運行;或用 debug 菜單下的 stop animation 菜單項或 shiftbreak 組合鍵停止系統(tǒng)的運行。其運行方式也可以選擇工具欄中的相應(yīng)工具進行。 對于軟件的分步調(diào)試,應(yīng)先執(zhí)行 debug 菜單下的 start/restart debugging 菜單項命令,此時可以選擇 step over 、 step int
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1