基于單片機(jī)的稱重控制系統(tǒng)設(shè)計(jì)_第1頁
基于單片機(jī)的稱重控制系統(tǒng)設(shè)計(jì)_第2頁
基于單片機(jī)的稱重控制系統(tǒng)設(shè)計(jì)_第3頁
基于單片機(jī)的稱重控制系統(tǒng)設(shè)計(jì)_第4頁
基于單片機(jī)的稱重控制系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基于單片機(jī)的稱重控制系統(tǒng)設(shè)計(jì)基于單片機(jī)的稱重控制系統(tǒng)設(shè)計(jì)#24位數(shù)據(jù)的最高位,一直到第24個(gè)時(shí)鐘脈沖完成,24位數(shù)據(jù)就完成了輸出輸。剩下的第25到第27個(gè)時(shí)鐘脈沖是用來設(shè)定下一次A/D轉(zhuǎn)換的數(shù)據(jù)輸入通道以及增益調(diào)節(jié)的。A/D轉(zhuǎn)換器的輸入通道或增益任意一個(gè)參數(shù)發(fā)生改變時(shí),都需要至少經(jīng)過4個(gè)數(shù)據(jù)輸出周期輸出的數(shù)據(jù)才能穩(wěn)定,也就是說4個(gè)數(shù)據(jù)輸出周期后DOUT才會(huì)變?yōu)榈碗娖剑_始輸出有效數(shù)據(jù).詳細(xì)設(shè)置參見表4-lo表4—1HX7n增益選擇PD_SCK膿沖數(shù)輸入通道增益2dA12826B3227A64從HX711讀出的24位二進(jìn)制數(shù)還需要經(jīng)過換算才能轉(zhuǎn)換為最終的實(shí)際重量具體換算方法為:傳感器電源為固定的4.3V,傳感器靈敏度為lmv/v,經(jīng)過A/D的128倍放大后的滿量程電壓(重物為5kg時(shí))的表達(dá)式為:4。3v*lmv/V*128=550。4mV (4.1)同時(shí)A/D的參考電壓也是4.3V,所以,不難得出滿量程最終輸出的二進(jìn)制數(shù)為:550.4mV*224/4。3V?2147483 (4。2)根據(jù)傳感器的線性特征,可以得到,當(dāng)輸出二進(jìn)制數(shù)為n時(shí),對(duì)應(yīng)的實(shí)際質(zhì)量x為:x7n/4.30g4。3.3LCD顯示程序設(shè)計(jì)12864的程序設(shè)計(jì)采用并行顯示方式的,具體的端口定義見圖4-3:MefineLCDda二aP2〃數(shù)據(jù)口sbitLCD_RS-=?3A7;〃寄存器選擇輸入sbitLCD2RW=?3A5;//液晶讀/寫控制sbitLCD2EN=?3A5;〃液晶使能控制sbitLCD2PSB=?0A2;〃事/并方式控制sbitLCD-RST=?0A0;〃液晶復(fù)位端口圖4—312864端口定義液晶初始化完成后,先顯示屏幕上一些固定的信息,然后再顯示從傳感器或芯片上讀出的數(shù)據(jù)??紤]到要顯示的信息比較多,12864有限的屏幕不能一次性地把所有內(nèi)容顯示完全,經(jīng)測試滾動(dòng)顯示的效果也不理想,因此設(shè)計(jì)把信息分成了兩屏來顯示,具體實(shí)現(xiàn)方法是通過鍵盤上的“A”鍵來切換,對(duì)應(yīng)的兩種模式分別為萬年歷和電子秤,這樣就完美地解決了12864單次顯示內(nèi)容少的問題。4。3。4報(bào)警模塊程序設(shè)計(jì)報(bào)警模塊的程序非常簡單,根據(jù)硬件電路的設(shè)計(jì),只要當(dāng)讀取的傳感器的數(shù)據(jù)超過了設(shè)定值,此時(shí)只要將連接蜂鳴器和LED的I/O口置為低電平,蜂鳴器和LED就會(huì)產(chǎn)生報(bào)警信號(hào),經(jīng)過測試連續(xù)的蜂鳴器報(bào)警聲太過尖銳,會(huì)引起使用者的不適,因此后期程序經(jīng)過了改進(jìn),在程序中加入了稍許的延時(shí),實(shí)現(xiàn)了間歇性的報(bào)警聲,效果較之以前有很大提高。4。3.5時(shí)鐘模塊程序設(shè)計(jì)時(shí)鐘模塊程序設(shè)計(jì)的難點(diǎn)是時(shí)間的調(diào)整,部分,根據(jù)設(shè)計(jì)的要求,需要由鍵盤直接輸入時(shí)間的數(shù)值,再將調(diào)整后的時(shí)間值寫入DS1302的對(duì)應(yīng)的時(shí)間寄存器中,還要同步把調(diào)整后的時(shí)間顯示在12864液晶屏上.時(shí)鐘模塊程序的流程圖如圖4—4圖4—4時(shí)鐘模塊程序流程圖4.3。6溫度模塊程序設(shè)計(jì)溫度模塊的主函數(shù)中先調(diào)用DS18B20的初始化函數(shù)即“init_DS18B20()”,然后再在大循環(huán)中調(diào)用DS18B20的溫度獲取函數(shù).由于本系統(tǒng)只有一個(gè)DS18B20溫度傳感器因此可以跳過讀序號(hào)列號(hào)的操作,直接讀取溫度寄存器。DS18B20的溫度分高分為兩個(gè)字節(jié)存放在兩個(gè)寄存器中,讀取之后需要把兩字節(jié)的數(shù)據(jù)合并,然后轉(zhuǎn)換為12864可以直接顯示的字符,最后在液晶屏上顯示出當(dāng)前的溫度值。4。4小結(jié)本系統(tǒng)的程序設(shè)計(jì)由于模塊化編程思想的引入而使其調(diào)試難度大大降低,每個(gè)模塊都可以單獨(dú)進(jìn)行調(diào)試,當(dāng)模塊單獨(dú)工作正常時(shí),再將其放入整個(gè)系統(tǒng)進(jìn)行聯(lián)合調(diào)試,如果系統(tǒng)哪一部分出現(xiàn)問題,也可以迅速找到問題根源并進(jìn)行修改,由此可見模塊化編程對(duì)于結(jié)構(gòu)復(fù)雜的程序編寫是一種非常行之有效的方法。第5章系統(tǒng)整體校調(diào)5.1調(diào)試方法和步驟根據(jù)前面所述模塊化的編程方法,系統(tǒng)的調(diào)試基本上也遵循了這一原則。即先易后難,先局部再整體的調(diào)試方法,先調(diào)試一些相對(duì)簡單的模塊,比如蜂鳴器報(bào)警和液晶顯示,程序編譯通過后把可以仿真的模塊在protues仿真軟件中進(jìn)行了仿真測試,仿真測試通過后,最后把程序燒寫進(jìn)單片機(jī)進(jìn)行實(shí)際硬件的測試.由于軟件仿真和實(shí)際的硬件一般都存在一定的差距,軟件仿真通過的模塊不一定可以在硬件測試中通過。根據(jù)硬件測試的結(jié)果對(duì)程序進(jìn)行相應(yīng)的調(diào)整,直至硬件測試也通過。當(dāng)各個(gè)模塊軟件仿真和硬件測試通過后,需要進(jìn)行系統(tǒng)的聯(lián)合調(diào)試也就是要把各個(gè)獨(dú)立的模塊給整合進(jìn)一個(gè)系統(tǒng)。這一步的調(diào)試也相當(dāng)?shù)仃P(guān)鍵,需要保證各個(gè)模塊既可以正常地工作又不能影響到其他模塊,所以各個(gè)模塊需要達(dá)到局部獨(dú)立工作,但整體上又協(xié)調(diào)統(tǒng)一的要求。圖5-1和圖5-2是某些模塊的仿真過程T產(chǎn)回?■三.LS6hD**r咨罌然昌網(wǎng)中7陽州KJWiD也如卬PESWP-J.iWiSP7J&AUP;g%西?汕T產(chǎn)回?■三.LS6hD**r咨罌然昌網(wǎng)中7陽州KJWiD也如卬PESWP-J.iWiSP7J&AUP;g%西?汕F]11rW■-IL-ji:5JtnTp]-JTn附也Lpm恒P^TfC晚4宣:總yF5Kai1FR圖5—1時(shí)鐘模塊仿真結(jié)果即(V即耳PflUfAD1K寸曲!=M:&啟國.41■心河油D5司苜心29Ll-f|-ie業(yè)TETEIP:34熊;肥:■加量tirI.OB1端則EF舊睢ee1tll加量tirI.OB1端則EF舊睢ee1tll1甲H就圖5-2稱重模塊仿真圖5。2調(diào)試過程中出現(xiàn)的問題及其解決方法程序調(diào)試主要分為兩大部分,即萬年歷模式和電子秤模式。其中萬年歷模式中時(shí)間顯示相對(duì)比較簡單,程序調(diào)試的難點(diǎn)在于時(shí)間調(diào)整函數(shù)的處理.由于矩陣鍵盤的引入,系統(tǒng)設(shè)計(jì)要求時(shí)間調(diào)整需要通過鍵盤直接輸入要調(diào)整的數(shù)值,而不是像傳統(tǒng)時(shí)鐘那樣只通過一個(gè)按鍵實(shí)現(xiàn)時(shí)間數(shù)據(jù)單步的加減。調(diào)試過程中特別是兩次按鍵之間的延時(shí)更是需要反復(fù)試驗(yàn)才能確定最為合適的參數(shù)。電子秤模式中調(diào)試的難點(diǎn)在于稱重特想?yún)?shù)需要多次不斷地校正,由于每個(gè)稱重傳感器的特性曲線都不盡相同,同時(shí)還存在一定的非線性,因此需要用標(biāo)準(zhǔn)砝碼,反復(fù)去校正.知道找出相對(duì)最好的特性參數(shù),才可以使稱量結(jié)果的誤差減到最小。5.3調(diào)試結(jié)果經(jīng)過長時(shí)間不斷的調(diào)試,整個(gè)系統(tǒng)的表現(xiàn)終于達(dá)到了設(shè)計(jì)的各項(xiàng)功能和性能的要求。系統(tǒng)分為兩種模式,即萬年歷模式和電子秤模式,兩種模式可以通過鍵盤的“人"鍵自由切換。在萬年歷模式下液晶顯示屏幕上可以顯示年、月、日、星期、時(shí)、分、秒和當(dāng)前溫度值,時(shí)間的調(diào)整模式可以通過按鍵“B”來激活,可以從鍵盤數(shù)字鍵直接輸入調(diào)整的目標(biāo)值,調(diào)整完一項(xiàng)時(shí)間參數(shù)后通過按鍵“B”切換到下一項(xiàng)的調(diào)整,直到所有時(shí)間參數(shù)都調(diào)整完畢,最后按下州”鍵時(shí)萬年歷恢復(fù)正常的時(shí)間顯示模式。當(dāng)切換到稱重模式時(shí),已經(jīng)屏幕上會(huì)顯示歡迎信息和待測物的質(zhì)量,單價(jià)以及金額的信息。為了方便用戶使用,本系統(tǒng)還增加了“去皮”功能,可以直接得到待測物的實(shí)際重量,非常方便。使用過程中,“去皮”功能的實(shí)現(xiàn)是通過按鍵“}'實(shí)現(xiàn)的。使用過程中使用者可以隨時(shí)變換單價(jià)信息,類似于時(shí)間的調(diào)整,可以通過數(shù)字鍵盤直接輸入單價(jià),系統(tǒng)默認(rèn)單價(jià)為三位數(shù),其中一位為小數(shù)部分,足以應(yīng)付日常使用,輸入單價(jià)后系統(tǒng)將會(huì)自動(dòng)計(jì)算出相應(yīng)的金額并顯示在液晶屏上。此外系統(tǒng)還具有超重報(bào)警功能,當(dāng)待測物的質(zhì)量超過了系統(tǒng)的量程,蜂鳴器會(huì)自動(dòng)響起警報(bào)聲,給使用者以提醒。報(bào)警功能的加入有效地保護(hù)了稱重系統(tǒng)的使用安全,減少了系統(tǒng)故障出現(xiàn)的概率。用標(biāo)準(zhǔn)砝碼測試的結(jié)果如表5—1所示表5—1測試結(jié)果砝碼重量(g)實(shí)際顯示重量1(g)實(shí)際顯示重量2(g)實(shí)際顯示重量3(g)10099999850049950049910009989999992000199920002000300030002999299940003999399939995000499849984997經(jīng)過測試系統(tǒng)的平均稱重誤差大約為1/358,由于傳感器本身以及其他元器件都做不到理想的線性,程序中已經(jīng)根據(jù)測試結(jié)果進(jìn)行了線性補(bǔ)償.經(jīng)過多次校準(zhǔn)和非線性補(bǔ)償后,本稱重系統(tǒng)的誤差已基本達(dá)到了設(shè)計(jì)要求。第6章討論與展望結(jié)論本系統(tǒng)從前期論證到選題,查找資料,系統(tǒng)設(shè)計(jì),程序編寫,軟件仿真,硬件調(diào)試到最后的項(xiàng)目完成,前后歷時(shí)近三個(gè)月。期間我查找了大量的資料文獻(xiàn),設(shè)計(jì)了很多方案才確定了最終的方案,程序編寫和調(diào)試過程更是傾注了我大量的心血.不過值得欣慰的是最終我完成了設(shè)計(jì)要求,可以說通過本次設(shè)計(jì)我付出了很多,同時(shí)也收獲了很多,不論是理論方面還是實(shí)際動(dòng)手能力都得到了很大的提升。同時(shí)這次設(shè)計(jì)任務(wù)也是對(duì)我四年來所學(xué)知識(shí)的綜合考察,通過完成設(shè)計(jì)任務(wù)進(jìn)一步鞏固了以前所學(xué)到的各種知識(shí),同時(shí)也認(rèn)識(shí)到了自身的不足。本系統(tǒng)不僅按設(shè)計(jì)要求實(shí)現(xiàn)了基于單片機(jī)控制的稱重系統(tǒng),功能和測試精度均達(dá)到了設(shè)計(jì)的要求.同時(shí)系統(tǒng)還進(jìn)一步擴(kuò)展了許多實(shí)用的功能,比如萬年歷功能和電子溫度計(jì)的加入使得系統(tǒng)功能更加多樣化,有效地提高了整個(gè)系統(tǒng)的實(shí)用性,是本次設(shè)計(jì)的一個(gè)亮點(diǎn)。系統(tǒng)需改進(jìn)的地方雖然系統(tǒng)完成了設(shè)計(jì)的要求,但是由于本次設(shè)計(jì)任務(wù)時(shí)間有限,同時(shí)又限于本人的水平,本系統(tǒng)還是有很多值得改進(jìn)的地方。比如原本的方案要在稱重系統(tǒng)中加入語音播報(bào)的功能,可以進(jìn)一步提高系統(tǒng)的易用性和友好性,但是考慮到本系統(tǒng)擴(kuò)展的功能較多,已經(jīng)使單片機(jī)有限的I/O資源幾近枯竭,再加入新的功能將會(huì)非常困難,加之電子秤專用語音芯片在市場上非常難買,很多元件市場都難覓其蹤,不得已這個(gè)設(shè)想只能遺憾地被放棄了。另外系統(tǒng)是硬件電路設(shè)計(jì)和軟件編程都還有進(jìn)一步優(yōu)化的空間。硬件電路方面還可以優(yōu)化電路的布線,進(jìn)一步提高系統(tǒng)的抗干擾能力,使測量結(jié)果更加穩(wěn)定和準(zhǔn)確,同時(shí)應(yīng)該也可以使整個(gè)系統(tǒng)更加地緊湊,而不是像現(xiàn)在稍顯臃腫。軟件設(shè)計(jì)方面優(yōu)化的空間同樣很大,可以進(jìn)一步提高代碼的執(zhí)行效率,從而提高系統(tǒng)的整體性能。致謝作為大學(xué)四年最重要的一個(gè)課程設(shè)計(jì),畢業(yè)設(shè)計(jì)時(shí)間緊,任務(wù)重。我們都非??释麍A滿地完成大學(xué)生涯中這最后的一項(xiàng)學(xué)業(yè)任務(wù),給大學(xué)生涯畫上一個(gè)完美的句號(hào).但是畢業(yè)設(shè)計(jì)確實(shí)對(duì)每個(gè)畢業(yè)生都是一個(gè)不小的挑戰(zhàn)。在本次系統(tǒng)的設(shè)計(jì)以及論文的完成過程中,除了我自身的努力外,我也受到了很多人的幫助,在此我想向他們表示真誠的感謝!首先,我要非常感謝xxx老師對(duì)于我完成本次設(shè)計(jì)任務(wù)的悉心指導(dǎo).X老師是我畢業(yè)設(shè)計(jì)的導(dǎo)師,在設(shè)計(jì)任務(wù)的初期就對(duì)于我們?cè)O(shè)計(jì)的完成進(jìn)度非常關(guān)心和重視。X老師曾多次詢問和指導(dǎo)我們的的畢業(yè)設(shè)計(jì),這對(duì)于我們是莫大的鞭策和鼓勵(lì)。在本論文的完成過程中,X老師也給了我很大的幫助,給我打論文提了很多有用的建議,對(duì)于我不懂的地方也給予了耐心的指導(dǎo)。最后,我要感謝學(xué)校的各位老師和我的同學(xué)。正是有了各位老師孜孜不倦的教導(dǎo),大學(xué)四年我才學(xué)到了很多知識(shí),這是本次論文完成的基礎(chǔ)。在論文撰寫的過程中我也曾向多位老師請(qǐng)教過問題,他們也都非常耐心地予以了解答,并給了我許多力所能及的幫助。我的各位同學(xué)在論文的完成中也給予了我很多支持,我們經(jīng)常一起探討遇到的各種問題,并且相互幫助和鼓勵(lì),在此向我要向他們表示感謝.參考文獻(xiàn)[1]ShengC,ChenghuiY。Circuitdesignofelectronicweighingsystem[J]。IEEE,2010(10。1109/INDUSIS。2010.5565882).[2]方原柏.電子皮帶秤[M].1。冶金工業(yè)出版社,2007-08-01:11—19。[3]白云飛。電子秤的發(fā)展現(xiàn)狀和趨勢[D]。陜西省定邊縣質(zhì)量技術(shù)監(jiān)督局,2010-5[4]中華人民共和國國家標(biāo)準(zhǔn).電子計(jì)價(jià)秤[S]。GB/T7722—1995。[5]中華人民共和國國家標(biāo)準(zhǔn)。電子臺(tái)案秤[S].(GB/T7722-2005)[6]鐘穎,孟江。民用電子計(jì)價(jià)秤計(jì)量常識(shí)[M]。1。中國計(jì)量出版社,2011—1-1.[7]陽鴻鈞。電子秤與電子天平技術(shù)問答[M]。1。中國電力出版社,2009—1—1。[8]中國就業(yè)培訓(xùn)技術(shù)指導(dǎo)中心。稱重傳感器裝配調(diào)試工[M].1。中國勞動(dòng)社會(huì)保障出版社,2010—4—1。[9]龜岡^一,施昌彥.現(xiàn)代稱重技術(shù):最新質(zhì)量計(jì)測技彳桿[M].3。中國計(jì)量出版社,2000—10—1。[10]趙亞軍。秤的檢定與維修[M]。2。中國質(zhì)檢出版社,2011-5。[11]楊茂俊.中國計(jì)量出版社[M].2.中國質(zhì)檢出版社,1991-12.[12]中國計(jì)量科學(xué)研究院.天平與秤[M]。1。中國計(jì)量科學(xué)研究院,1996-12。[13](德)柯???ManfredKochsiek).稱重手冊(cè)[M]。1。中國計(jì)量出版社,1992—8.[14]中國衡器協(xié)會(huì)。稱重科技[A]。第九屆稱重技術(shù)研討會(huì)論文集[C]。中國衡器協(xié)會(huì),2010-4。[15]施昌彥。電子秤發(fā)展簡介[A].測力與稱重技術(shù)論文選[C]。計(jì)量出版社,2013—10—12.[16]蔡正平.電子稱重技術(shù)與測力計(jì)量的最新進(jìn)展[A]。第十屆國際計(jì)量技術(shù)聯(lián)合會(huì)力與質(zhì)量計(jì)量會(huì)議論文選[C]。計(jì)量出版社,1986—11—1。[17]曹立平。電子稱重系統(tǒng)[A]。第十屆國際計(jì)量首屆全國稱重技術(shù)研討會(huì)論文集[C]。中國衡器協(xié)會(huì)出版,1999—11.[18]高春冰。秤的計(jì)量特征和計(jì)量性能分析[D]。勃利縣計(jì)量檢定測試所,2010—5.[19]劉九卿。稱重傳感器并聯(lián)組秤原理及其誤差合成[D]。中國運(yùn)載火箭技術(shù)研究院第七零二研究所,2000-5。[20]唐荻表。平臺(tái)秤發(fā)展新動(dòng)向[D]。中國上海秋豪衡器有限公司,2010—7.[21]王琦。電阻應(yīng)變式稱重傳感器的設(shè)計(jì)[D]。哈爾濱林業(yè)機(jī)械研究所黑龍江哈爾濱,2005-3。[22]施昌彥.動(dòng)態(tài)稱重測力技術(shù)的現(xiàn)狀和發(fā)展趨勢[D]。中國計(jì)量科學(xué)研究院,2001—3。[23]趙廣平,孫雯萍,孫建軍。電子稱重技術(shù)現(xiàn)狀及發(fā)展趨勢[D].九江職業(yè)技術(shù)學(xué)院;中船重工集團(tuán)公司第七研究院第七七研究所(九江);中船重工集團(tuán)公司第七研究院第七七研究所(九江),2007—5。附錄主程序文件//**********************************************************//端口連接〃12864:D/I-P3.7R/W—P3.6E-P3.5PSB-P0。2RST-P0。0data—P2〃鍵盤:P1DS18B20--P0。3DS1302:RST—P3。2DIO-P3.3CLK—P3。4//HX711:DOUT—P0.5SCK-P0。4 蜂鳴器一P0.6LED-P0。7//************************************************************#include<reg52.h>#include〈stdio。h>#include〈intrins.h〉#include"LCD12864IDE。h"http:// LCD12864的頭文件#include"jianpan.h” //矩陣鍵盤的頭文件#include”DS18B20.h” //溫度傳感器的頭文件#include"ds1302。h” // 時(shí)鐘模塊的頭文件#include”hx711。h”sbitBuzzer=P0A6; //蜂鳴器報(bào)警sbitled=P0A7;unsignedlongHX711_Buffer=0;//用于存放從HX711讀出的數(shù)字量unsignedlongWeight_Shiwu,maopi=0;unsignedcharPrice_Count=0;unsignedlongintprice;//總價(jià)ucharcodedisl口={“歡迎使用"}; //LCD上的固定顯示內(nèi)容ucharcodedis2口={”20"};ucharcodedis3口={"年"};ucharcodedis4[]={"月”};ucharcodedis5[]={"日"};ucharcodedis6[]={"星期”};ucharcodedis7[]={"溫度℃"};unsignedcharPrice_Buffer[3]={0x00,0x00,0x00};〃存放單價(jià),其中兩位整數(shù),一位小數(shù)//unsignedlongMoney=0;ucharcodedis8[]={"歡迎使用”};ucharcodedis9[]={"質(zhì)量(kg):”};ucharcodedis10[]={”單價(jià)(元):"};ucharcodedis11[]={”金額(元):”};voidget_maopi() //去毛皮{ HX711_Buffer=HX711_Read();HX711_Buffer=HX711_Buffer/100;//簡化為16位maopi=HX711_Buffer;Price_Buffer[0]=Price_Buffer[1]=Price_Buffer[2]=0x00;delay_ms(150);}voidGet_Weight() //獲取重量{HX711_Buffer=HX711_Read();HX711_Buffer=HX711_Buffer/100;//簡化為16位if((HX711_Buffer〉maopi)&(HX711_Buffer<24405))//重量在量程之內(nèi){Weight_Shiwu=HX711_Buffer;Weight_Shiwu=Weight_Shiwu-maopi; //獲取實(shí)物的AD采樣數(shù)值.Weight_Shiwu=(unsignedint)((float)Weight_Shiwu/4。22+0.05);//計(jì)算實(shí)物的實(shí)際重量(g)因?yàn)椴煌膫鞲衅魈匦郧€不一樣,因此,每一個(gè)傳感器需要矯正這里的4.30這個(gè)除數(shù).+0。05是為了四舍五入百分位Buzzer=1; //關(guān)閉警報(bào)led=1;}elseif(HX711_Buffer>24405) //大于5Kg的最大量程,報(bào)警(21474){Buzzer=?Buzzer;led=7ed;delay_ms(800);}}voidmain(){uchari,num=0,mod=0;uchartemputer[5]={”:"};//存放溫度ucharnum1,a;//num1為按鍵次數(shù)delay_ms(10); //延時(shí)lcd_init(); //初始化LCDinit_DS18B20();//初始化溫度傳感器get_maopi();while(1){keynum(); //不斷進(jìn)行鍵盤檢測if(key==10)//字母A用于切換稱重和萬年歷模式{if(mod<1){mod=mod+1;lcd_wcmd(0x01);delay_ms(2);}else{mod=0;lcd_wcmd(0x01);delay_ms(2);}}if(mod==0) //萬年歷模式{lcd_pos(0,2);i=0;while(dis1[i]!=’\0’){ //顯示固定字符lcd_wdat(dis1[i]);i++;}lcd_pos(1,0);i=0;while(dis2[i]!='\0’){ //顯示固定字符lcd_wdat(dis2[i]);i++;}lcd_pos(1,2);i=0;while(dis3[i] !='\0’){ //顯示固定字符lcd_wdat(dis3[i]);i++;}lcd_pos(1,4);i=0;while(dis4[i]!='\0'){ //顯示固定字符lcd_wdat(dis4[i]);i++;}lcd_pos(1,6);i=0;while(dis5[i]!=’\0’){ //顯示固定字符lcd_wdat(dis5[i]);i++;}lcd_pos(2,5);i=0;while(dis6[i]!=’\0'){ //顯示固定字符lcd_wdat(dis6[i]);i++;}lcd_pos(3,0);i=0;while(dis7[i]!=’\0’){ //顯示固定字符lcd_wdat(dis7[i]);i++;}if(key==11)//字母B用于調(diào)整時(shí)間{if(num〈7) //代表年,月,日,時(shí),分,秒,正常走時(shí)六種模式num=num+1;elsenum=0;}switch(num){case7:lcd_wcmd(0x0c); //num為0時(shí)時(shí)間調(diào)整完成恢復(fù)正常走時(shí)模式,此句為關(guān)閉光標(biāo)閃爍write_1302(0x80,0x00);//向秒寄存器寫入0初值,同時(shí)恢復(fù)時(shí)鐘震蕩write_1302(0x8e,0X80); //開啟時(shí)鐘寫保護(hù)break;case1:lcd_wcmd(0x8f); //定位坐標(biāo)lcd_wcmd(0x0f);//開光標(biāo)閃爍write_1302(0x8e,0x00);//禁止寫保護(hù)write_1302(0x80,0x80);//暫停時(shí)鐘芯片震蕩if((key〉0)&(key〈8))〃調(diào)整星期,一定要限定范圍,否則會(huì)出錯(cuò)

{write_1302(0x8A,key); //將相應(yīng)按鍵對(duì)應(yīng)的星期數(shù)值寫入時(shí)鐘芯片寄存器lcd_wdat(key+0x30); //將調(diào)整后的數(shù)值顯示出來}break;case2:lcd_pos(2,2); //光標(biāo)定位到分鐘的顯示位置lcd_wcmd(0x0f);//開啟光標(biāo)閃爍if(key〈10){if(num1〈1)num1++;elsenum1=0; //numl用于判斷按鍵按下的次數(shù)if((num1==0)&(key〈6))//按鍵第一次按下,此數(shù)值為分鐘的十位a=key*16; //DS1302時(shí)間寄存器中數(shù)據(jù)存儲(chǔ)格式為BCD碼,此處需做轉(zhuǎn)換elseif(num1==1)//按鍵第二次按下,為分鐘的個(gè)位{a=a+key;write_1302(0x82,a);//將按鍵輸入的值寫入分鐘寄存器lcd_pos(2,1);lcd_wdat(':');lcd_wdat(a/16+0x30);lcd_wdat(a%16+0x30);//將調(diào)整后的分鐘顯示出來}delay_ms(80);//延時(shí),保證第一次按鍵已經(jīng)松開,下一//次是第二次按鍵} break;case3:lcd_pos(2,0); //調(diào)整小時(shí)lcd_wcmd(0x0f);if(key〈10){if(numl〈1)num1=num1+1;elsenum1=0;if((num1==0)&(key〈6))a=key*16;elseif(num1==1){a=a+key;write_1302(0x84,a);lcd_wdat(a/16+0x30);lcd_wdat(a%16+0x30);}delay_ms(80);}break;case4:lcd_pos(1,5); //調(diào)整日期lcd_wcmd(0x0f);if(key〈10){if(num1<1)num1=num1+1;elsenum1=0;if((num1==0)&(key〈4))a=key*16;elseif(num1==1){a=a+key;write_1302(0x86,a);lcd_wdat(a/16+0x30);lcd_wdat(a%16+0x30);}delay_ms(80);} break;case5:lcd_pos(1,3); //調(diào)整月份lcd_wcmd(0x0f);if(key〈10){if(numl〈1)num1=num1+1;elsenum1=0;if((num1==0)&(key〈2))a=key*16;elseif(num1==1){a=a+key;write_1302(0x88,a);lcd_wdat(a/16+0x30);lcd_wdat(a%16+0x30);}delay_ms(80);}break;case6:lcd_pos(1,1);//調(diào)整年份lcd_wcmd(0x0f);if(key〈10){if(num1〈1)num1++;elsenum1=0;if(num1==0)a=key*16;elseif(num1==1){a=a+key;write_1302(0x8c,a);lcd_wdat(a/16+0x30);lcd_wdat(a%16+0x30);}delay_ms(80);}break;}if(num==0)//num為0此時(shí)時(shí)鐘正常走時(shí){gettime();//獲取時(shí)間寄存器中的時(shí)間值lcd_pos(1,1);//光標(biāo)定位lcd_wdat(year/16+0x30);//顯示年份lcd_wdat(year%16+0x30);lcd_pos(1,3);lcd_wdat(month/16+0x30);//顯示月份lcd_wdat(month%16+0x30);lcd_pos(1,5);lcd_wdat(day/16+0x30);//顯示日期lcd_wdat(day%16+0x30);lcd_pos(2,0);lcd_wdat(hour/16+0x30);//顯示小時(shí)

lcd_wdat(hour%16+0x30);lcd_wdat(’:’);lcd_wdat(minute/16+0x30);//顯示分鐘lcd_wdat(minute%16+0x30);lcd_wdat(':’);lcd_wdat(second/16+0x30); //顯示秒lcd_wdat(second%16+0x30);lcd_pos(2,7);lcd_wdat(week+0x30);//顯示星期sprintf(temputer+1,"%f",ReadTemperature()); //獲取溫度值,并將其裝換為字符格式以便于顯示lcd_pos(3,3);//delay_ms(1);i=0;while(temputer[i]!='\0’){ //顯示溫度值lcd_wdat(temputer[i]);i++;}}}elseif(mod==1)if(key==12)//字母A用于切換稱重和萬年歷模式{get_maopi();}lcd_pos{get_maopi();}lcd_pos(0,2);i=0;while(dis8[i]!='\0'){lcd_wdat(dis8[i]);i++;}lcd_pos(1,0);i=0;while(dis9[i]!=’\0’){lcd_wdat(dis9[i]);i++;}lcd_pos(2,0);//顯示字符//設(shè)置顯示位置為第二行的第

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論