版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
時,則電橋輸出電壓或電流為零,這時電橋處于平衡狀態(tài)。其測量原理:用應變片測量時,將其粘貼在彈性體上。當彈性體受力變形時,應變片的敏感柵也隨同變形,其電阻值發(fā)生相應變化,通過轉換電路轉換為電壓或電流的變化。由于內部線路采用惠更斯電橋,當彈性體承受載荷產(chǎn)生變形時,輸出信號電壓可由下式給出:(2-2)本文的目的是應用一簡易電子秤,最大稱重約為2.5千克,重量誤差不大于±0.01千克;考慮到與其相配置的各種電路的應用的難易程度和應用性價比,最終選擇了CZAF-605電阻應變式稱重傳感器,其稱重規(guī)模為5kg。2.4放大器的方案壓力傳感器感受重力轉換后輸出的信號一般電平較低;經(jīng)由電橋等電路變換后的信號亦難以直接用來顯示、記錄、控制或進行模數(shù)轉換。為此,測量電路中需要模擬放大環(huán)節(jié)。這一環(huán)節(jié)目前主要依靠由集成運算放大器的基本元件構成具有各種特性的放大器來完成。所采用的傳感器輸出電壓振幅范圍0~10mV。而模數(shù)轉換的輸入電壓要求為0~2V,因此放大環(huán)節(jié)至少200倍的增益,此處我們需要放大500倍。采用專用儀表放大器,如:INA128,INA129等。此類芯片內部采用差動輸入,共模抑制比高,差模輸入阻抗大,增益高,精度也非常好,且外部接口簡單。以INA128為例,引腳圖如2-3所示:圖2-3INA128引腳圖放大器增益G=1+50k/,通過改變的大小來改變放大器的增益。因為放大的倍數(shù)是500,所以大致選用100歐姆的電阻就可以了。基于以上分析,采用專用儀表放大器能跟好的滿足要求,最終選擇了INA128。
3系統(tǒng)設計系統(tǒng)的整體設計如下圖所示3-1所示。壓壓力傳感器放大電路模數(shù)轉換微處理器鍵盤x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8LCD顯示x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8x=0.8圖3-1硬件應用的總體思路3.1單片機89C52RC最小系統(tǒng)89C52RC是一款低壓高性能CMOS8位微處理器,具有4K字節(jié)閃存,128字節(jié)RAM,32個雙向I/O端口,兩個16位定時器/計數(shù)器,5個中斷源,一個全雙工串行通信端口,芯片內振蕩器和時鐘電路。同時,89C52RC可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。89C52RC的P0口為一個8位漏級開路雙向I/O口,P1、P2和P3口是一個內部提供上拉電阻的8位雙向I/O口,同時P3口還作為89C52RC的一些特殊功能口。89C52RC是片內有ROM/EPROM的單片機,其最小系統(tǒng)簡單、可靠,僅由時鐘電路、復位電路、電源電路構成。如圖3-2所示。3.1.1時鐘電路89C52RC雖然有內部振蕩電路,但要形成時鐘,必須外部附加電路。89C52RC單片機的時鐘產(chǎn)生方法有兩種。內部時鐘方式和外部時鐘方式。本應用采用最常用的內部時鐘方式,即用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHZ到12MHZ之間選擇。電容取值對振蕩頻率輸出的穩(wěn)定性、大小、振蕩電路起振速度有少許影響,可在20pF到100pF之間取值。所以本應用中,振蕩晶體選擇12MHZ,電容選擇22pF。圖3289C52RC最小系統(tǒng)的應用3.1.2復位電路89C52RC的復位電路是由外部的復位電路來實現(xiàn)的。只需給復位引腳RST加上大于2個機器周期的高電平就可使其復位。復位電路通常采用上電自動復位和按鍵復位兩種方式。本應用就是用的按鍵手動復位。其中電平復位是通過RST端經(jīng)電阻與電源VCC接通而實現(xiàn)的。3.1.3電源電路89C52RC的電源腳分別為20腳VSS和40腳VCC(圖中已默認連接,未顯示出來)。這兩個腳分別接地和+5V直流電源,31腳EA為內外存儲器的控制端,接+5V允許訪問外部存儲器。3.2放大電路傳感器檢測電路的功能是將電阻應變片的電阻變化轉化為電壓輸出。本應用選用的是CZAF-605電阻應變式稱重傳感器,由于其獲得的電壓信號較小,需要放大器對信號進行放大??紤]到干擾的作用,對傳感器的信號進行了濾波處理,最終應用如圖3-3所示。圖33傳感器與放大器的接口電路INA128的2和3腳為信號輸入端,4、5和7腳為電源引腳。微弱信號放大后從INA128的第6腳輸出。通過調節(jié)的阻值可以來改變放大倍數(shù),使得輸出電壓在A/D轉換的基準電壓要求范圍之內。根據(jù)要求,A/D轉換器的輸入電壓變化范圍是0V~4.999V,傳感器的輸出電壓信號在0~10mv,因此取放大器的放大倍數(shù)500。因此代入公式,。3.3模數(shù)轉換器電路HX711是一款專為高精度電子秤而設計的24位A/D轉換器芯片。與其他同類型芯片相比,該芯片集成了其他同類型芯片所需的外圍電路,包括穩(wěn)壓電源、片內時鐘振蕩器等。降低了電子秤的整機成本,提高了整機的性能和可靠性。該芯片與后端MCU芯片的接口和編程非常簡單,所有控制信號由管腳驅動,無需對芯片內部的寄存器編程。輸入選擇開關可任意選取通道A或通道B,與其內部的低噪聲可編程放大器相連。通道A的可編程增益為128或64,對應的滿額度差分輸入信號幅值分別為±20mV或±40mV。通道B則為固定的32增益,用于系統(tǒng)參數(shù)檢測。芯片內提供的穩(wěn)壓電源可以直接向外部傳感器和芯片內的A/D轉換器提供電源,系統(tǒng)板上無需另外的模擬電源。芯片內的時鐘振蕩器不需要任何外接器件。上電自動復位功能簡化了開機的初始化過程。作為單通道模擬信號輸入時HX711AD的輸入電壓是0~5V且8位分辨率時的電壓精度為19.53mV。如果作為由IN+與IN-輸入的輸入時,可是將電壓值設定在某一個較大范圍之內,從而提高轉換的寬度。但值得注意的是,在進行IN+與IN-的輸入時,如果IN-的電壓大于IN+的電壓則轉換后的數(shù)據(jù)結果始終為00H。HX711AD與單片機的接口電路如圖3-4所示。圖34HX711AD與單片機的接口電路圖3.4顯示電路本應用采用LCD1602顯示,LCD1602液晶又稱1602字符液晶。它是一種點陣液晶模塊,專門用于顯示字母、數(shù)字、符號等。它由5×7或5×11個點陣字符位組成,每個點陣字符位可以顯示一個字符。每位之間有一個點距的間隔每行之間也有間隔起到了字符間距和行間距的作用,正因為如此所以他不能顯示圖形。1602LCD是指顯示的內容為16×2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數(shù)字)。LCD1602與單片機的連接如圖3-5所示。3腳VEE接一個滑動變阻器,滑動變阻器兩端接電源和地。調試歡動變阻器的值可以改變LCD的對比度。因為LCD為共陽極,所以D0到D7有加入上拉電阻。圖35單片機與LCD1602接線圖3.5報警子程序設計報警功能是電子秤的一個附加功能,實現(xiàn)報警功能的方法為:定義一個蜂鳴器響的函數(shù),在重量設定函數(shù)中定義一個最大量程變量,當重量達到上限時,調用beep函數(shù),使之響一段時間。雖然方法簡單,但是循環(huán)掃描鬧鈴仍然會占用系統(tǒng)執(zhí)行時間。圖3-6為報警子程序流程圖。圖3-6報警流程圖3.6按鍵處理程序3.6.1按鍵介紹在單片機系統(tǒng)中,鍵盤按連接形式可分為獨立連接鍵盤、矩陣式鍵盤和薄膜開關。本設計中用的是獨立連接式鍵盤。當鍵沒有按下時,所有的數(shù)據(jù)輸入線都為高電平;當有一按鍵被按下時,與之相連的數(shù)據(jù)輸入線將變?yōu)榈碗娖?;通過相應指令,可以判斷是否有按鍵按下。按鍵要正確發(fā)揮作用必須消除抖動。所謂抖動,是一種由于按鍵是機械式的彈性開關,通常在按鍵按下和抬起的時候會出現(xiàn)多次閉合或者斷開的現(xiàn)象,如圖3-7所示。通常抖動時間為5ms~10ms,穩(wěn)定閉合區(qū)的時間由按鍵動作決定,CPU往往會在閉合抖動時檢測到多次電平的變化。消除硬件抖動有硬件和軟件兩種方式。硬件消抖方法是在按鍵輸入通道上添加去抖動電路,從根本上避免電壓抖動的產(chǎn)生。軟件消抖方法則采用延遲5~10ms時間,待電壓穩(wěn)定后,再進行狀態(tài)輸入。在本設計中用延時的方法就足夠了。圖3-7按鍵時波形圖3-8按鍵去抖流程當抖動的問題消除以后,還必須判斷按鍵者是否將按鍵釋放。通常按鍵的穩(wěn)定閉合區(qū)的時間最少也有上百毫秒,是抖動時間的數(shù)十倍,如果按鍵者持續(xù)按下按鍵不松手,那么按鍵一直處于閉合狀態(tài)。這種狀態(tài)會導致CPU誤以為按鍵被按多次,為了避免這種錯誤,程序需要判斷按鍵被松開,這樣才是一個完整的按鍵動作。用等待查詢的方法就可以判斷了。例如判斷S1鍵松開與否,只需在在避開閉合抖動以后執(zhí)行while(!s1),當按鍵一松開CPU檢測到s1=1,等待查詢就結束,之后便可執(zhí)行該按鍵相應的處理程序。3.6.2按鍵設計圖3-9按鍵k8功能流程圖本設計運用4個獨立按鍵實現(xiàn)單價調節(jié)和狀態(tài)切換功能。四個獨立按鍵中,S6、S7是負責實現(xiàn)單價、重量的調整,S5是設置調整數(shù)值大小的。S8則是功能切換鍵負責不同顯示結果的切換,另外一個k4鍵則負責在重量超出范圍后清零功能。下面用流程圖簡要說明每個按鍵的作用。由于數(shù)字上調節(jié)大不和切換顯示的時候位數(shù)不變,所以接著把需要顯示的量的每個位通過取值表示出來,例如單價個位上的數(shù)值是單價的值乘以10去小數(shù)點之后再對10進行除法運算所得。圖3-10S5鍵功能圖3-11按鍵s6、s7實現(xiàn)單價調整子程序
4系統(tǒng)仿真測試在完成軟件設計的基礎上,本章將進行程序編譯和系統(tǒng)調試工作。程序編譯是指由程序設計語言把模塊結構轉換成單片機能接受的形式,將軟硬件設計完成后首次結合在一起;系統(tǒng)調試是指發(fā)現(xiàn)并且消除系統(tǒng)存在的錯誤或者誤差,保證單片機應用系統(tǒng)的可靠性。由第二章系統(tǒng)方案設計可知,本設計的開發(fā)環(huán)境為KeilμVision3。本章將詳細介紹如何使用該環(huán)境建立、編譯和調試項目,并結合軟硬件說明本設計調試過程中出現(xiàn)的錯誤和誤差,以及解決方案。4.1程序編譯新建工程雙擊啟動μVision3,執(zhí)行KeilC51軟件的菜單“Project/NewProject..."彈出"CreateNewProject"對話框。選擇一個合適的文件夾,用來存放工程文件。如圖4-1所示。在對話框中單擊CreatNewFolder圖標新建一個文件夾,取名為“電子秤”。雙擊進入該文件夾,在文件名后的輸入框內將項目取名為“dzc”放置在該文件夾內。單擊“保存”按鈕,保存項目。圖4-1工程保存新建工程后,KeilC51會給出選擇CPU器件的提示,這里要選擇Atmel公司的AT89S52,如圖4-2所示。
圖4-2選擇CPU器件添加源程序文件創(chuàng)建源程序文件執(zhí)行菜單“File/New...”出現(xiàn)一個名為Textn的文檔。執(zhí)行菜單“File/Save”彈出"SaveAs"對話框,將文件名改為“dzc.c"然后保存。圖4-3保存文件保存好源文件后,可以將這個文件添加到項目中。單擊KeilC51軟件左邊項目工作窗口”Target1"上的“+”號,將其展開。然后右鍵單擊SourceGroup1,選擇AddFilestoGroup‘SourceGroup1’,然后在彈出的對話框中選中剛剛保存的源文件,單擊“Add”。添加完成:
圖4-4源程序添加到工程編寫程序并編譯在源程序窗口中,輸入完整的程序代碼,然后單擊"File/Save"保存程序.先設置開發(fā)環(huán)境參數(shù),單擊“Option"選項,在“Target”標簽中設置時鐘頻率為12.0Mhz,在"Output"標簽頁,選中“CreateHEX”項,其他的為默認,然后單擊“確定”按鈕。圖4-5設置開發(fā)參數(shù)單擊工具欄中編譯按鈕,編譯當前源程序,編譯結果會顯示在輸出窗口中,如果顯示“0Error(s),0Warning(s)"就表示程序沒有問題了。如果存在錯誤或警告,就要仔細檢查程序,修改后在編譯,直到通過為止。圖4-6編譯工具欄
圖4-7編譯結果4.2仿真結果編譯后的結果會生成HEX格式的程序文件"dzc.hex"該文件可以被載入并最終燒錄到芯片中。將安裝了芯片的實驗板通電后,就可以運行里面的程序。由于有實驗板的硬件協(xié)助;本設計采用在線編程的方式直接在硬件系統(tǒng)上觀察運行效果。如圖圖4-8仿真結果1圖4-9仿真結果2
結語本設計的研究課題為商用電子秤的設計,要求在學習并掌握單片機的工作原理、編程方法及系統(tǒng)設計的前提下分析電子秤的工作原理、基本功能,最后編寫軟件程序連接硬件電路來實現(xiàn)功能。電子秤基本功能包括顯示和調節(jié),需要單價、質量、總價的正確顯示和單價大小調整功能。系統(tǒng)以89C52RC單片機為控制芯片,顯示模塊用1602LCD液晶顯示器顯示實現(xiàn),調節(jié)單價模塊和顯示切換模塊采用4個獨立按鍵的方式。設計以結構性、可讀性、功能性強的C語言作為編程語言,在KeiluVision開發(fā)環(huán)境下編寫應用程序,采用模塊化編程思想,結合硬件電路作整體調試,最終實現(xiàn)電子秤的基本功能。作為單片機初學者,通過這次實踐,了解了電子秤的用途及工作原理,熟悉了用KEIL編程、ISP下載總線驗證程序編寫是否正確的步驟、PROTEL軟件的使用等,不僅鍛煉了工程設計實踐能力,也培養(yǎng)了獨立設計能力。鞏固了所學知識,掌握單片機工作原理,熟習硬件、軟件系統(tǒng)設計的過程,鍛煉動手能力、查閱資料能力、綜合運用知識的能力,以及培養(yǎng)團隊合作的精神,為今后工作打下了一定的基礎。但是此次畢業(yè)設計也暴露出自己專業(yè)基礎的很多不足之處,比如缺乏綜合應用專業(yè)知識的能力,對材料的不了解,缺乏對與專業(yè)相關知識的了解,遇困難容易煩躁,沒耐心,實際動手能力差等。事實上,作為一個單片機初學者應該把數(shù)據(jù)傳輸、外部數(shù)據(jù)中斷、存儲器擴展等基本操作熟練掌握等等。此次設計中主要精力集中在軟件設計上,在硬件電路原理圖與印刷電路圖的研究還不夠熟練、透徹。因此今后應該多找?guī)讉€例題稍作練習。
參考文獻[1]許曉彤.基于單片機的電子秤應用[J].硅谷,2012,04:69.[2]馮秀彥.基于單片機的智能電子秤的應用與實現(xiàn)[J].計算機光盤軟件與應用,2012,09:136.[3]李常青,魏亞坤,左凌軒,吳平.基于ADS1230的高精度智能電子秤應用[J].電子世界,2013,10:149+155.[4]劉昌盛.基于單片機的智能電子秤應用[J].山東工業(yè)技術,2015,13:64.[5]馮春寶,陳文鑫,董炎峰,何安東,李登峰.基于單片機的數(shù)字電子秤的應用與實現(xiàn)[J].重慶與世界(學術版),2015,07:1-3.[6]吳正平,戴龍清,黃銳,何歡.基于STM32的高精度電子秤應用[J].電子制作,2016,21:20-22+24.[7]張爭剛,熊剛.基于單片機的多功能電子秤應用[J].機械與電子,2016,11:58-61.[8]劉西平,劉錦輝.基于單片機的簡易電子秤應用與實現(xiàn)[J].電腦知識與技術,2016,10:255-256+259.[9]張文莉,吳欽木.基于STM32的無線多秤盤高精度電子秤[J].機械與電子,2016,07:50-52+56.[10]倪剛.基于STC12C5AS2的電子秤應用研究[J].電子世界,2014,13:96.[11]劉西平,劉錦輝.基于單片機的簡易電子秤設計與實現(xiàn)[J].電腦知識與技術,2016,12(10):255-256+259.[12]史艷玲.基于單片機的自動裝水裝置的設計[J].科技經(jīng)濟導刊,2016(20):60+54.[13]黃俊梅.基于單片機教學和實訓應用的電子秤設計[J].內燃機與配件,2016(09):153-155.[14]徐維維.傳感器及檢測技術教學改革探討[J].廊坊師范學院學報(自然科學版),2016,16(03):114-115+121.[15]張爭剛,熊剛.基于單片機的多功能電子秤設計[J].機械與電子,2016,34(11):58-61.[16]徐倫,鄧濤.一種基于STM32的多功能精密電子秤[J].數(shù)字技術與應用,2016(10):148-149.[17]劉濤.物聯(lián)網(wǎng)專業(yè)傳感器技術課程改革[J].科教文匯(中旬刊),2016(10):71-73.[18]胡美嬌,高美春.基于24位A/D轉換的高精度電子秤的設計[J].現(xiàn)代計算機(專業(yè)版),2013(32):61-63+68.[19]孫澤烽,盧雨情,胡靜.基于單片機的電子秤設計[J].科技創(chuàng)新導報,2013(28):19.[20]韓文霆,張超,喬軍,郭俊杰,吳普特,SuKiOoi.基于單片機的吊秤式盆栽作物蒸滲儀設計[J].農(nóng)業(yè)機械學報,2013,44(11):247-252.[21]王俊芳,王海斌,倪曉昌,劉朝暉,楊斐,楊旭.基于電阻應變片式傳感器的電子秤設計與實現(xiàn)[J].智能計算機與應用,2016,6(06):121-123+126.[22]曹良足.傳感器原理與工程應用的綜合實驗教學改革探討[J].景德鎮(zhèn)學院學報,2016,31(06):93-95.[23]劉美娟,張琦,穆遠威.基于HX711的高精度電子秤的設計[J].信息通信,2017(01):142-144.[24]蔣正金,王藝環(huán),黃旭德,張朋強.基于STM32和HX710A的高精度電子秤[J].微型機與應用,2017,36(05):91-94.[25]楊婷.基于MSP430單片機的電子稱設計[J].自動化應用,2017(03):29-30+55.[26]張超洋,周啟忠,張龍江,梁懷波.基于ARM單片機的高精度電子秤設計與實現(xiàn)[J].電子技術與軟件工程,2017(06):254-255.
致謝本論文是在導師的諄諄教誨和指導下完成的,從選題、構思到定稿無不滲透著導師的心血和汗水;導師淵博的知識和嚴謹?shù)膶W風使我受益終身,在此表示深深的敬意和感謝。這次寫論文的經(jīng)歷也會使我終身受益,我感受到,做論文是要真真正正用心去做的一件事情,是真正的自己學習的過程和研究的過程。沒有認真學習和鉆研,自己就不可能有研究的能力,就不可能有自己的研究,就不會有所收獲和突破。希望這個經(jīng)歷,在今后的學習和生活中能夠繼續(xù)激勵我前進。另外,還要特別感謝我的家人,他們時刻關心我,給我提供了學習的機會,時時刻刻為我鼓勁、為我加油,進而促使我不斷成長和進步。同時,也要感謝寢室的室友以及所有關心我的朋友,感謝他們陪伴我走過了很多美好的時光,在我遇到困難時他們關心我、幫助我。在完成畢業(yè)論文的過程中,很多朋友都給了我無私的幫助和支持,在此表示由衷的謝意!最后,因本人水平有限,論文肯定還有不少不足之處,懇請各位老師批評指正,我希望可以有機會繼續(xù)去完善,我將不斷努力繼續(xù)充實自己。
附錄1原理圖附錄2程序#include<reg52.h>#include<intrins.h>#include<string.h>bitbdataflag_key;#include"main.h"#include"LCD1602.h"#include"HX711.h"#include"keyboard.h"#include"eeprom52.h"#include"wannianli.h"#include"yyxp.h"#defineucharunsignedchar#defineuintunsignedintunsignedlongHX711_Buffer=0;unsignedlongWeight_Maopi=0;unsignedlongWeight_Maopi_0=0;intqupi=0;longWeight_Shiwu=0;//鍵盤處理變量unsignedcharkeycode;unsignedcharDotPos; //小數(shù)點標志及位置uintGapValue,GapValue1;unsignedlongidataprice;//單價,長整型值,單位為分unsignedlongidatadanjia[8]={11,22,33,44,100,200,300,400};unsignedcharcount_danjia;unsignedlongidatamoney,total_money;//總價,長整型值,單位為分//定義標識volatilebitFlagTest=0; //定時測試標志,每0.5秒置位,測完清0volatilebitFlagKeyPress=0;//有鍵按下標志,處理完畢清0//校準參數(shù)//因為不同的傳感器特性曲線不是很一致,因此,每一個傳感器需要矯正這里這個參數(shù)才能使測量值很準確。//當發(fā)現(xiàn)測試出來的重量偏大時,增加該數(shù)值。//如果測試出來的重量偏小時,減小改數(shù)值。//該值可以為小數(shù)//#defineGapValue349sbitLED=P3^6;sbitK1=P3^0; //計算總價并語言播報//sbitK3=P2^3;volatilebitClearWeighFlag=0;//傳感器調零標志位,清除0漂/******************把數(shù)據(jù)保存到單片機內部eeprom中******************/voidwrite_eeprom(){ SectorErase(0x2000); GapValue1=GapValue&0x00ff; byte_write(0x2000,GapValue1); GapValue1=(GapValue&0xff00)>>8; byte_write(0x2001,GapValue1); byte_write(0x2060,a_a); }/******************把數(shù)據(jù)從單片機內部eeprom中讀出來*****************/voidread_eeprom(){ GapValue=byte_read(0x2001); GapValue=(GapValue<<8)|byte_read(0x2000); a_a=byte_read(0x2060);}/**************開機自檢eeprom初始化*****************/voidinit_eeprom(){ read_eeprom(); //先讀 if(a_a!=1) //新的單片機初始單片機內問eeprom { GapValue=1000; a_a=1; write_eeprom(); //保存數(shù)據(jù) } } //顯示單價,單位為元,四位整數(shù),兩位小數(shù)voidDisplay_Price(){ LCD1602_write_com(0x89); LCD1602_write_word("PR:");LCD1602_write_com(0x8c); LCD1602_write_data(price/100+0x30); LCD1602_write_data(price%100/10+0x30); LCD1602_write_data('.'); LCD1602_write_data(price%10+0x30);}//顯示重量,單位kg,兩位整數(shù),三位小數(shù)voidDisplay_Weight(){ LCD1602_write_com(0x80); LCD1602_write_word("WE");LCD1602_write_com(0x83);// LCD1602_write_data(Weight_Shiwu/10000+0x30); LCD1602_write_data(Weight_Shiwu%10000/1000+0x30); LCD1602_write_data('.'); LCD1602_write_data(Weight_Shiwu%1000/100+0x30); LCD1602_write_data(Weight_Shiwu%100/10+0x30); LCD1602_write_data(Weight_Shiwu%10+0x30); LCD1602_write_data('');}//顯示總價,單位為元,四位整數(shù),兩位小數(shù)voidDisplay_Money(){//unsignedinti,j;LCD1602_write_com(0x80+0x40); //指針設置LCD1602_write_word("S:");LCD1602_write_com(0xc9);LCD1602_write_word("T:");LCD1602_write_com(0xc7);LCD1602_write_word("");if(money>9999) //超出顯示量程{LCD1602_write_com(0x80+0x40+2);LCD1602_write_word(".-");return;}if(money>=1000){LCD1602_write_com(0x80+0x40+2); LCD1602_write_data(money/1000+0x30); LCD1602_write_data(money%1000/100+0x30); LCD1602_write_data(money%100/10+0x30); LCD1602_write_data('.'); LCD1602_write_data(money%10+0x30);}elseif(money>=100){LCD1602_write_com(0x80+0x40+2); LCD1602_write_data(0x20); LCD1602_write_data(money%1000/100+0x30); LCD1602_write_data(money%100/10+0x30); LCD1602_write_data('.'); LCD1602_write_data(money%10+0x30);}elseif(money>=10){LCD1602_write_com(0x80+0x40+2); LCD1602_write_data(0x20); LCD1602_write_com(0x80+0x40+3); LCD1602_write_data(0x20); LCD1602_write_data(money%100/10+0x30); LCD1602_write_data('.'); LCD1602_write_data(money%10+0x30);}else{LCD1602_write_com(0x80+0x40+2); LCD1602_write_data(0x20); LCD1602_write_com(0x80+0x40+3); LCD1602_write_data(0x20); LCD1602_write_com(0x80+0x40+4); LCD1602_write_data(0+0x30); LCD1602_write_data('.'); LCD1602_write_data(money%10+0x30);}if(total_money>9999) //超出顯示量程{LCD1602_write_com(0x80+0x40+11);LCD1602_write_word(".-");return;}if(total_money>=1000){LCD1602_write_com(0x80+0x40+11); LCD1602_write_data(total_money/1000+0x30); LCD1602_write_data(total_money%1000/100+0x30); LCD1602_write_data(total_money%100/10+0x30); LCD1602_write_data('.'); LCD1602_write_data(total_money%10+0x30);}elseif(total_money>=100){LCD1602_write_com(0x80+0x40+11); LCD1602_write_data(0x20); LCD1602_write_data(total_money%1000/100+0x30); LCD1602_write_data(total_money%100/10+0x30); LCD1602_write_data('.'); LCD1602_write_data(total_money%10+0x30);}elseif(total_money>=10){LCD1602_write_com(0x80+0x40+11); LCD1602_write_data(0x20); LCD1602_write_com(0x80+0x40+12); LCD1602_write_data(0x20); LCD1602_write_data(total_money%100/10+0x30); LCD1602_write_data('.'); LCD1602_write_data(total_money%10+0x30);}else{LCD1602_write_com(0x80+0x40+11); LCD1602_write_data(0x20); LCD1602_write_com(0x80+0x40+12); LCD1602_write_data(0x20); LCD1602_write_com(0x80+0x40+13); LCD1602_write_data(0+0x30); LCD1602_write_data('.'); LCD1602_write_data(total_money%10+0x30);}}//數(shù)據(jù)初始化voidData_Init(){price=0;DotPos=0;}//定時器0初始化voidTimer0_Init(){ ET0=1;//允許定時器0中斷 TMOD=1;//定時器工作方式選擇 TL0=0xb0; TH0=0x3c;//定時器賦予初值 TR0=1;//啟動定時器}//定時器0中斷voidTimer0_ISR(void)interrupt1using0{ucharCounter; TL0=0xb0; TH0=0x3c;//定時器賦予初值 //每0.5秒鐘刷新重量Counter++;if(Counter>=10){FlagTest=1; Counter=0;}}//按鍵響應程序,參數(shù)是鍵值//返回鍵值://78910(清0)//45611(刪除)//12312(未定義)//14(未定義)015(.)13(確定價格)voidKeyPress(ucharkeycode){ switch(keycode) { case0: case1: case2: case3: case4: case5: case6: case7: case8: case9: //目前在設置整數(shù)位,要注意price是整型,存儲單位為分 if(DotPos==0) { //最多只能設置到千位 if(price<100) { price=price*10+keycode*10; } }//目前在設置小數(shù)位 elseif(DotPos==1)//小數(shù)點后第一位 { price=price+keycode; DotPos=2; } Display_Price(); break; case10://清零鍵 speak(41); if(qupi==0) qupi=Weight_Shiwu; else qupi=0; Display_Price(); // FlagSetPrice=0; DotPos=0; break; case11: //刪除鍵,按一次刪除最右一個數(shù)字 price=0; DotPos=0; Display_Price(); break; case12: //加 if(GapValue<10000) GapValue++; break; case13://減 if(GapValue>1) GapValue--; break; case14:count_danjia++; if(count_danjia>7) count_danjia=0; price=danjia[count_danjia]; Display_Price(); break; case15://小數(shù)點按下 DotPos=1;//小數(shù)點后第一位 break;}}//****************************************************//主函數(shù)//****************************************************voidmain(){yyxp_rest=1; yyxp_data=1; init_eeprom();//開始初始化保存的數(shù)據(jù) Init_LCD1602(); //初始化LCD1602EA=0;Data_Init();Timer0_Init();//初中始化完成,開斷EA=1;// Ds1302Init();// Get_Maopi(); LCD1602_write_com(0x80); //指針設置LCD1602_write_word("WelcomeToUse"); //LCD1602_write_com(0x80+0x40); //指針設置LCD1602_write_word("ElectronicScale");Delay_ms(2000);Get_Maopi();LCD1602_write_com(0x80); //指針設置LCD1602_write_word("WE:0.000PR:00.0");LCD1602_write_com(0x80+0x40); //指針設置LCD1602_write_word("S:0.0T:0.0");Display_Price();// Get_Maopi(); //稱毛皮重量// Weight_Shiwu=9000; while(1) {//每0.5秒稱重一次 if(FlagTest==1&&keynum==0) { Get_Weight(); } if(Weight_Shiwu<10) { keyscan(); if(keynum==0) display(); if(key2==0) { Delay_ms(5); if(key2==0) { speak(41); if(qupi==0) qupi=Weight_Shiwu; else qupi=0; while(key2==0); }} } else { keycode=Getkeyboard(); if(K1==0) { Delay_ms(5); if(K1==0) { total_money+=money; Display_Money(); bofang(1,total_money); while(K1==0); } } if(key1==0) { Delay_ms(5); if(key1==0) { total_money=0; Display_Money(); bofang(1,total_money); while(key1==0); }} if(key3==0) { Delay_ms(5); if(key3==0) { total_money=0; Display_Money(); bofang(2,price); bofang_zhongliang(Weight_Shiwu); bofang(1,money); while(key3==0); }}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跟崗學習心得感悟
- 平臺經(jīng)濟與產(chǎn)業(yè)鏈
- 我們鄰近的地區(qū)和國家-2023年中考地理總復習試題探究與變式訓練(原卷版)
- 安全知識競賽應用題
- 2024年商業(yè)交換網(wǎng)項目投資申請報告代可行性研究報告
- 2024年檸檬酸甘油二酸酯項目資金需求報告代可行性研究報告
- 2024年LNG工藝包及裝置項目投資申請報告代可行性研究報告
- 強化技術保障作用 鑄牢生產(chǎn)安全基礎
- 幼兒園年終老師工作總結(35篇)
- 勞務勞動合同范本(30篇)
- 學校食堂經(jīng)營情況匯報
- 《春江花月夜》課件24張
- 民事法律行為 課件
- 高中《信息技術》課程標準解讀
- 新教科版四年級上冊科學第三單元《運動和力》單元知識點整理匯總課件(附新課標習題)
- 怎樣寫教學反思課件
- 醫(yī)療設備項目實施方案
- 水利工程造價-單價
- F4-72玻璃鋼離心風機說明書
- DB44-T 1661-2021《河道管理范圍內建設項目技術規(guī)程》-(高清現(xiàn)行)
- 四年級上冊道法知識點匯總
評論
0/150
提交評論