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

正文內(nèi)容

基于stc89c52單片機(jī)出租車計價器設(shè)計-文庫吧

2025-06-12 18:50 本頁面


【正文】 2C總線的器件,對其進(jìn)行編程時需遵守I2C總線的時序要求,以及I2C委員會對各種I2C芯片的地址分配規(guī)則。現(xiàn)把I2C總線與AT24C02的通訊時序、通訊規(guī)則簡要介紹如下:1. I2C總線節(jié)點的尋址字節(jié)主機(jī)產(chǎn)生起始條件后,發(fā)送的第一個字節(jié)為尋址字節(jié)。該字節(jié)的頭七位為從機(jī)地址,對于AT24C02來說高四位為1010,它是I2C總線器件的固有地址,緊接著是AAA3通過接地或者高電平?jīng)Q定外圍器件的地址數(shù)據(jù),第八位是讀寫控制為,當(dāng)為0是表示主節(jié)點向從節(jié)點發(fā)送數(shù)據(jù),當(dāng)為1時表示要接收數(shù)據(jù)。2. I2C總線數(shù)據(jù)傳輸?shù)母袷?1) 主控器的寫數(shù)據(jù)格式:首先由主機(jī)發(fā)送起始信號—當(dāng)SCL為高電平時,SDA由高到低有跳變;然后發(fā)一個尋址字節(jié),當(dāng)收到應(yīng)答信號后發(fā)送數(shù)據(jù),其中應(yīng)答信號為當(dāng)SCL為高時SDA傳送0,;當(dāng)主機(jī)產(chǎn)生停止信號時,數(shù)據(jù)傳送結(jié)束,停止信號是當(dāng)SCL為高電平時SDA有一個由低到高的跳變。(2)主控器的讀數(shù)據(jù)格式:與寫數(shù)據(jù)的不同之處在于數(shù)據(jù)發(fā)送結(jié)束和停止位之間加一個非應(yīng)答位,表示數(shù)據(jù)發(fā)送結(jié)束,格式為當(dāng)SCL為高時SDA傳送1。 3. 要特別注意的是SDA和SCL都是雙向傳輸線,平時均處于高電平備用狀態(tài),只有當(dāng)需要關(guān)閉時才使其鉗制在低電平,且僅在SCL為高電平時數(shù)據(jù)才能傳送,而當(dāng)SCL為低電平時才允許數(shù)據(jù)發(fā)生變化。 鍵盤調(diào)整單元當(dāng)單價等信息需要進(jìn)行修改時,就要用到鍵盤。由于調(diào)節(jié)信息不多,故采用5個獨立鍵盤即可,分別實現(xiàn)清零、切換、增大、減小和功能等作用。電路原理如圖25所示。圖25 鍵盤調(diào)整單元接線圖圖中,鍵盤從上至下依次為:S0:,對上一次的計費進(jìn)行清零,為下次載客做準(zhǔn)備;S1:,通過對功能鍵S3按下次數(shù)的計數(shù),實現(xiàn)單價數(shù)據(jù)的增大;S2:,通過對功能鍵S3按下次數(shù)的計數(shù),實現(xiàn)單價數(shù)據(jù)的減小;S3:,按1次,進(jìn)入調(diào)整白天單價;按2次,進(jìn)入調(diào)整夜晚單價;按3次,進(jìn)入調(diào)整等待單價;按4次,進(jìn)入調(diào)整起步價;按5次,返回。S4: 實現(xiàn)白天單價和夜晚單價的切換。需要注意的時,當(dāng)按鍵按下和釋放的瞬間都有抖動現(xiàn)象,一般來說,抖動的時間長短與鍵盤的機(jī)械特性有關(guān),大約為510ms [5] 。所以在實際編程時一定要注意鍵盤的去抖動。鍵盤去抖動有專用的延時電路,也有專門的延時芯片,也可以用軟件去抖,考慮到電路的難易程度,從簡化硬件的角度,本次設(shè)計采用軟件去抖動,用一個短延時程序,進(jìn)行鍵盤去抖操作。 顯示單元顯示單元由兩個4位8段共陽數(shù)碼管組成,電路連接時,公共端接高電平,因此我們需要點亮哪個發(fā)光二極管只需給哪個二極管陰極送低電平,并采用動態(tài)掃描進(jìn)行顯示[6]。、用于顯示總金額; ,顯示等待時間;,用于顯示里程,由于需精確到小數(shù)位,但經(jīng)過添加溢出指示,可計到20公里,在現(xiàn)實中已基本夠用;,用于顯示單價。由于溢出指示是采用發(fā)光二極管是否點亮表示,故必須選好參數(shù)以確保發(fā)光二極管正常工作。根據(jù)元件手冊(也可用萬用表測量)查得,點亮電流為320mA,取導(dǎo)通電流為5mA,所以限流電阻可選擇為()/5=660,故可選擇限流電阻值510Ω。 由于數(shù)碼管內(nèi)部二極管點亮?xí)r需要5mA以上的電流,而單片機(jī)的輸出電流還不到1mA,所以數(shù)碼管與單片機(jī)連接時需加驅(qū)動電路,可以使用上拉電阻的方法,也可以使用專門的驅(qū)動芯片,考慮到復(fù)用單片機(jī)I/O接口,節(jié)省單片機(jī)I/O資源,此次設(shè)計采用74HC573鎖存器,其輸出電流較大,電路接口簡單且可直接驅(qū)動數(shù)碼管顯示。74HC573的引腳分布圖26如下。圖26 74HC573的引腳分布:為三態(tài)允許輸入端(低電平有效),也可稱作輸出允許端;1D8D為數(shù)據(jù)輸入端;1Q8Q為數(shù)據(jù)輸出端;LE為鎖存允許端。74HC573所對應(yīng)真值表21如表。表21 74HC573真值表INPUTOUTPUT LE DQL H LL L XH X XHQ0Z其中 :H—高電平。L—低電平;X—任意電平;Z—高阻態(tài),既不是高電平也不是低電平,其電平狀態(tài)由與它相連接的其它電氣狀態(tài)決定;Q0—上次的電平狀態(tài)。由真值表可以看出,當(dāng)為高電平時,無論LE與D端為何電平狀態(tài),其輸出均為高阻態(tài),此時芯片處于不可控狀態(tài)。做設(shè)計時必須使其處于可控狀態(tài),即應(yīng)該接低電平。當(dāng)為低電平時,若LE為H,則D與Q同時為H或者L,數(shù)據(jù)實現(xiàn)直通傳送;而當(dāng)LE為L時,無論D為何狀態(tài)Q都保持上一次的數(shù)據(jù)狀態(tài),數(shù)據(jù)被鎖存住,利用此特性即可實現(xiàn)對數(shù)碼管的控制。本次設(shè)計中:,;。,使通道打開,接著送字碼,使字碼保持?。唬ㄋ透唠娖剑o接著送位碼,控制要顯示的位,數(shù)據(jù)被保持。最后延時5ms;依次循環(huán)掃描;利用數(shù)碼管點亮后的余暉和人眼視覺暫留效應(yīng)即可實現(xiàn)動態(tài)顯示。數(shù)碼管動態(tài)顯示電路如圖27所示。圖27 數(shù)碼管動態(tài)顯示電路洛陽理工學(xué)院畢業(yè)設(shè)計(論文)第3章 軟件設(shè)計 系統(tǒng)主程序在主程序模塊中,需要完成對各參量和接口的初始化、出租車起步價和單價的初始化以及中斷、計算、循環(huán)等工作。另外,在主程序模塊中還需要設(shè)置啟動/清除標(biāo)志寄存器、里程寄存器和價格寄存器,并對它們進(jìn)行初始化。然后,主程序?qū)⒏鶕?jù)各標(biāo)志寄存器的內(nèi)容,分別完成啟動、清除、計程和計價等不同的操作。當(dāng)出租車運(yùn)行后,就啟動計價器,根據(jù)里程寄存器中的內(nèi)容計算和判斷行駛里程是否已超過起步價公里數(shù)。若已超過,則根據(jù)里程值、每公里的單價值和起步價來計算出當(dāng)前的總金額,并將結(jié)果存于總金額寄存器中;中途等待時,無脈沖輸入,不產(chǎn)生中斷,當(dāng)時間超過等待設(shè)定值時,開始進(jìn)行計時,并把等待金額加到總金額里,然后將總金額、里程、等待時間和單價送數(shù)碼管顯示出來。程序流程如圖31所示。圖31 主程序流程圖 里程計數(shù)中斷程序每當(dāng)霍爾傳感器輸出一個低電平信號,單片機(jī)定時器0(工作在計數(shù)模式)就對其計數(shù)一次,相應(yīng)的變量設(shè)為inter就自加1,當(dāng)里程計數(shù)器inter對里程脈沖計滿500次時,對其自身進(jìn)行清零操作,為下一次計數(shù)做準(zhǔn)備,同時進(jìn)入里程計數(shù)中斷服務(wù)程序中,里程變量加1,總金額根據(jù)此時所設(shè)單價做出相應(yīng)的變化。里程中斷子程序如圖32所示。圖32 里程中斷服務(wù)子程序 中途等待中斷程序在中途等待中斷程序中,定時器1每50ms計一次數(shù),每計夠100次(5sec),便將當(dāng)前里程值送入某個緩存變量,與前一個5秒的值進(jìn)行比較,如果兩者相同,則表明霍爾傳感器沒有輸出信號,認(rèn)為出租車停了下來,進(jìn)入等待計時,計時中間變量dd自加1,計夠12次為一分鐘,dd自清零,同時根據(jù)所設(shè)的等待單價刷新總金額。計數(shù)初值可有以下公式獲得:X=(65536t)**10^6/12。TH=X/256。 TL=X%256。其中:X表示計數(shù)初值,TH、TL分別為16位計數(shù)器高8位和低8位應(yīng)裝入的初值。用定時器作為基準(zhǔn),可使測試的等待時間更為精確(可以精確到uS級);且每隔5秒比較一次,能有效減小誤判率,避免把汽車低速行駛誤認(rèn)為靜止等待處理。中途等待子程序流程圖如圖33所示。圖33 中途等待中斷子程序流程圖 計算程序計算程序根據(jù)里程數(shù)分別進(jìn)入不同的計算公式。如果里程大于3公里,則執(zhí)行公式:總金額=起步價+(里程3)*單價+等待時間*等待單價;否則,執(zhí)行公式:總金額=起步價+等待時間*等待單價。程序流程圖如圖34所示。圖34 計算程序流程圖 顯示程序由于8位數(shù)碼管所有段選皆有8位的P0口進(jìn)行控制,因此,在每一瞬間,8位LED會顯示同一個數(shù)字。要想每位顯示不同的字符,就必須采用動態(tài)掃描的方法輪流點亮各位LED,即在每一時刻只使某一位顯示字符。在此瞬間,段選控制I/O口輸出相應(yīng)字符段選碼(字符碼),而位選則控制I/O口在該顯示的位送入選通電平,以保證該位顯示顯示相應(yīng)字符。如此循環(huán)操作,使每位分時顯示該位應(yīng)該顯示的字符 [7] 。在本次設(shè)計中顯示程序利用延時程序,每隔5ms刷新一次,相應(yīng)的數(shù)碼管點亮,顯示一位數(shù)據(jù),利用主函數(shù)內(nèi)的循環(huán),實現(xiàn)動態(tài)掃描顯示,同時根據(jù)數(shù)碼管余輝和人眼暫留現(xiàn)象,給人看上去每個數(shù)碼管總是在亮,以實現(xiàn)動態(tài)顯示。 鍵盤程序鍵盤采用查詢的方式,放在主程序中,當(dāng)有按鍵按下的時候,在相應(yīng)I/O口產(chǎn)生一次低電平,當(dāng)單片機(jī)查詢出該低電平后便轉(zhuǎn)入進(jìn)行處理,處理結(jié)束返回。鍵盤程序流程圖如圖35。 圖35 鍵盤程序 按鍵檢測流程圖36所示。圖36 按鍵檢測子程序流程圖第4章 調(diào)試改進(jìn)過程及運(yùn)行結(jié)果分析 動態(tài)掃描的調(diào)試和分析動態(tài)掃描是單片機(jī)編程中最基本的知識,雖對其原理有比較清晰的掌握,也曾用匯編語言寫過程序,但此次用C語言編寫還是出現(xiàn)了錯誤。第一就是把段碼和位碼順序送反,結(jié)果是只有在延時時間較長時才能顯示正常,當(dāng)然這樣的代價是沒有靜態(tài)的效果;第二就是用動態(tài)掃描時給八個數(shù)碼管送了10個數(shù),顯然這樣做結(jié)果必定混亂;最后就是開始時用switch、case語句實現(xiàn)動態(tài)掃描,當(dāng)程序較小時可以正常工作,但當(dāng)后期程序較大時,出現(xiàn)了時序混亂的問題。最后解決的方法是用了鎖存器,顯示結(jié)果正常為固定的預(yù)設(shè)的八個數(shù)字。 AT24C02的編程與調(diào)試對AT24C02編程對我來說是一個比較新知識點,遇到了不少問題, 這里僅把經(jīng)驗教訓(xùn)簡要介紹一下。首先是一定要對I2C總線時序有較深刻了解后再嘗試編程,第二就是要注意向 AT24C02寫一個字和讀一個字的區(qū)別,當(dāng)從 AT24C02讀數(shù)據(jù)時一定要注意,當(dāng)讀完時從機(jī) AT24C02一定要發(fā)送一個非應(yīng)答信號表示數(shù)據(jù)讀完。調(diào)試的方法是在指定地址寫一個數(shù)字再看能是否讀出,當(dāng)顯示程序編寫好后,可以在Ptoteus中用數(shù)碼管顯示看是否與分析一致,也可以把讀出的數(shù)據(jù)賦給某個變量,再通過在keil中執(zhí)行view/watchamp。call stack window 調(diào)出相應(yīng)變量觀察。 按鍵查詢功能的實現(xiàn)按鍵查詢比較容易實現(xiàn),只要注意1. 按鍵結(jié)束后注意退出按鍵處理;,即避免顯示一個數(shù)據(jù)后退不出來;。按鍵去抖可通過以下語句實現(xiàn): if(key==0) { delay(5)。 if(key==0) { while(!key)。 delay(5)。 while(!key)。 { 按鍵處理程序 } } } 計算程序的分析與設(shè)計由于里程和單價都精確的小數(shù)點后一位,而顯示時仍按整數(shù)顯示,只不過人為的加入 amp。0x7f(共陽極時加入amp。0x7f,共陰極時加入 ||0x)控制是否顯示小數(shù)點兒,故實際計算時要做適當(dāng)改動。改動如下:1. 當(dāng)里程值大于30(實際對應(yīng)大于3公里)且無進(jìn)位時,溢出指示燈不亮,總金額=起步價+(里程十位數(shù)字2)*運(yùn)行單價+等待單價*等待時間;2. 當(dāng)里程值小于30(實際對應(yīng)小于3公里),肯定無進(jìn)位,溢出指示燈不亮,總金額=起步價+等待單價*等待時間;3. 有進(jìn)位,溢出指示燈點亮,表示里程一定大于三公里,只需執(zhí)行總金額=起步價+7*運(yùn)行單價+(里程十位數(shù)字+1)*運(yùn)行單價+等待單價*等待時間即:總金額=起步價+(里程十位數(shù)字+8)*運(yùn)行單價+等待單價*等待時間; 結(jié)果分析與性能改進(jìn)經(jīng)過反復(fù)調(diào)試驗證,基于STC89C52單片機(jī)控制設(shè)計的出租車計價器滿足了所有預(yù)設(shè)性能指標(biāo),具有較好的抗干擾性,價格也較為合理,具有很好的工業(yè)開發(fā)和市場前景??梢愿倪M(jìn)的地方可能有很多;就我現(xiàn)在所思考的可從以下兩個方面加以考慮: 1. 嘗試著把兩個鎖存器74HC573去掉,當(dāng)然不能影響整個計價器的功能,這樣會使硬件電路更簡潔,成本也會更低,符合實際中的最大利潤空間定理。2. 設(shè)計PCB板時把鍵盤和顯示器放在芯片和其它電路的反面,這樣封裝成實際產(chǎn)品時可把人機(jī)接口留在外面,更人性化,也符合人們的習(xí)慣。 計價器系統(tǒng)的仿真當(dāng)各個子模塊都實現(xiàn)后,聯(lián)調(diào)則主要是看當(dāng)把他們?nèi)诤显谝黄饡r是否會有時序上的沖突,以及可能存在的分析不周全的地方。本次設(shè)計聯(lián)調(diào)時出現(xiàn)的問題主要有:第一是顯示時存在時序上的沖突,;第二就是中斷設(shè)置時出現(xiàn)混亂,即同時用定時器0,定時器1,和外部中斷1時,后兩者都不再工作(通過編一個方波程序,),解決方法時讓定時器1工作在計數(shù)方式代替工作在定時方式,如此不但可以完成相應(yīng)功能,解決了問題,更重要的是省去一個中斷,簡化了程序設(shè)計。調(diào)試完成后在Proteus 上仿真結(jié)果如圖41,42,43,44所示。圖41里程無溢出時仿真結(jié)果(小于三公里)圖42里程無溢出時仿真結(jié)果(大于三公里)圖43里程溢出時仿真結(jié)果(大于十公里)圖44 單價調(diào)整(起步價)結(jié) 論經(jīng)過近幾個月的設(shè)計,在多位老師和同學(xué)的幫助下,全面實現(xiàn)了預(yù)先設(shè)定的計價器應(yīng)具有的功能,且滿足了所有設(shè)計指標(biāo)。1. 能準(zhǔn)確計算出出租車運(yùn)行里程;2. 實現(xiàn)了單價可調(diào),并可以對等待時間進(jìn)行計時;,使其具備掉電存儲功能。4. 有完整的軟件仿真結(jié)果和硬件電路,并用Protel設(shè)計出了系統(tǒng)原理圖,制作了PCB板。通過對基于Proteus ,表明用此方法設(shè)計的計價器。實現(xiàn)了單價可調(diào),掉電保持,此外還增加了等待計時功能,白天夜晚單價自動切換,并且能實時顯示總金額,等待時間,運(yùn)行里程,運(yùn)行單價等詳細(xì)信息;且能很方便的在不改變硬件電路的情況下通過改變軟件實現(xiàn)計價精度的提高,進(jìn)行功能上的擴(kuò)展,如可把現(xiàn)有的計價器轉(zhuǎn)變?yōu)橛嬎倨?,完善的功能使得基于STC89C5
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1