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

正文內(nèi)容

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

2025-11-07 20:01本頁(yè)面

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

  

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