




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
本科論文目錄TOC\o"1-2"\h\z\u摘要 IAbstract II引言 11系統(tǒng)總體設計方案 41.1設計目標與要求 51.2方案論證與選擇 62硬件電路設計 72.1單片機型號選擇 72.2顯示模塊電路設計 82.3傳感器模塊電路設計 92.4按鍵模塊電路設計 112.5報警模塊電路設計 122.6模數(shù)轉(zhuǎn)換電路設計 123軟件電路設計 153.1軟件程序設計 153.2系統(tǒng)程序流程圖 154設計產(chǎn)品的安裝與調(diào)試 224.1安裝 224.2調(diào)試 234.3誤差分析 244.4遇到的問題及解決方法 26結(jié)論 27參考文獻 28附錄1原理圖 29附錄2源程序清單 30致謝 43本科論文摘要電子秤是我們生活中經(jīng)常用到的一種衡器,是傳統(tǒng)衡器的替代產(chǎn)品。它在生產(chǎn)、銷售及商品流通領域得到了普遍的應用。但電子秤大多具有數(shù)量讀取不方便、易被人為作弊、稱量工具運行不穩(wěn)定、精確度不夠高、零部件易損壞、體積大、重量高、電能消耗高等缺點,從而給使用帶來了諸多不便。因此,有針對性的開發(fā)設計一種方便、快捷、穩(wěn)定、高效的電子秤勢在必行。為了擁有一款便于日常使用的電子秤,本設計設計了以單片微型計算機為核心,利用稱重傳感器將重力信號轉(zhuǎn)變?yōu)殡妷盒盘枺I盤、液晶顯示器作為人機交互接口配合對應的軟件組成的電子秤。本系統(tǒng)主控芯片選用STC89C52單片機,以應變片式傳感器作為信號采集模塊,報警采用聲光模式,顯示采用液晶顯示器,信號轉(zhuǎn)換采用專用模塊,從而使系統(tǒng)可以實現(xiàn)稱重、金額計算、聲光報警電路等功能。本設計不僅反映了應用單片機最小系統(tǒng)的靈活性,而且實現(xiàn)了電子秤的多功能性。實現(xiàn)了輕便便攜、測量誤差小、集價格計算和重量測量功能于一體,基本可以滿足商業(yè)和居民家庭生活中的基本使用需求。關鍵詞:傳感器采集;數(shù)模轉(zhuǎn)換;單片機;電子秤
AbstractElectronicscaleisakindofweighingapparatusoftenusedinourlife.Itisasubstituteproductoftraditionalweighingapparatus.Ithasbeenwidelyusedinthefieldsofproduction,salesandcommoditycirculation.Buttheelectronicscalemostlyhasthequantitytoreadinconvenient,easytobecheatedbythehuman,theweighingtooloperationisnotstable,theaccuracyisnothighenough,thepartsareeasytodamage,thevolumeislarge,theweightishigh,thepowerconsumptionishighshortcoming,thusbroughtmanyinconveniencetotheuse.Therefore,targeteddevelopmentanddesignofaconvenient,fast,stable,efficientelectronicbalanceisimperative.Inordertohaveaconvenientfordailyuseofelectronicbalance,thedesigndesignofasinglechipmicrocomputerasthecore,usingaweighingsensortoconvertthegravitysignalintoavoltagesignal,keyboard,liquidcrystaldisplayasahuman-computerinteractioninterfacewiththecorrespondingsoftwarecomponentsoftheelectronicbalance.ThemaincontrolchipofthesystemisSTC89C52microcontroller,andthestraingaugesensorisusedasthesignalacquisitionmodule.Thealarmadoptsthesoundandlightmode,thedisplayadoptstheliquidcrystaldisplay,andthesignalconversionadoptsthespecialmodule,sothatthesystemcanrealizethefunctionsofweighing,amountcalculation,soundandlightalarmcircuitandsoon.Thedesignnotonlyreflectstheflexibilityofthemicrocontrollerminimumsystem,butalsorealizestheversatilityoftheelectronicscale.Itisportable,smallmeasurementerror,pricecalculationandweightmeasurement,andcanmeetthebasicneedsofbusinessandhouseholdlife.Keywords:Sensoracquisition;Digitaltoanalogconversion;Singlechipmicrocomputer;Electronicscale引言人們生活中經(jīng)常要用到稱量重量的情況,此時我們就要用到衡器,電子秤就是衡器中的一種,它用來取代利用杠桿平衡制作的普通衡器。它主要被使用于生產(chǎn)、銷售及商品流通領域及我們的日常生活中。與常用的機械式衡具相比,電子秤的優(yōu)點有測量精準度高、輕便便攜、適用范圍廣、實際使用簡單及計算價格方便等,避免了老舊的機械秤的精準度低、操作復雜并且需要人為記錄價格等缺點。要設計電子秤,首先要使用應變片式傳感器將測量的物體的重量進行采集和變換。將得到的模擬信號放大之后再轉(zhuǎn)換為數(shù)字信號。然后將數(shù)字信號引入微處理器進行處理和解碼才能得到顯示,從而給出正確的重量。目前使用的稱量工具大都存在著這樣或那樣的問題,給使用帶來困難。例如,有些具有復雜的結(jié)構(gòu),這會導致成本增加,大多數(shù)的操作不可靠、精準度低、容易被破壞的器件很多、安裝量大且能耗低、沒有保存,這會帶來許多有關于操作使用的問題。因此,必須開發(fā)出一系列易于使用和可靠的高精度電子秤。在我國,直到上個世紀40年代后期,稱重設備仍是完全機械化的,并在上個世紀40年代開始制造機電組合設備。上個世紀50年代出現(xiàn)了以壓力傳感器為主導的電子秤,到上個世紀50年代中期,稱重設備的制造得以發(fā)展是由于電子產(chǎn)品的出現(xiàn)。上個世紀80年代以來,通過研發(fā),消化,吸收和技術改造的引入使我們的國家從傳統(tǒng)的機械稱重轉(zhuǎn)向了同時擁有微電子,傳感器和IT技術的電子秤發(fā)展階段。但是,總的來說,我國的電子秤產(chǎn)品的數(shù)量和質(zhì)量遠遠不能與工業(yè)化國家相提并論。很大一部分的差別是技術不夠高級和工藝不夠先進、加工儀器和測量設備老化、研發(fā)能力弱、各品種產(chǎn)品型號少、故障、可靠性差和穩(wěn)定性低等。如今,電子稱重設備的生產(chǎn)和使用正在取得新的發(fā)展[1]。測量方法不斷改進,測量結(jié)果不斷向數(shù)字化發(fā)展;動態(tài)稱重技術逐步取代靜態(tài)稱重技術;測量參數(shù)不斷增加;人們已經(jīng)把研究的方向轉(zhuǎn)向快速稱重和動態(tài)稱重方面。電子秤發(fā)展基礎是由于稱重傳感器性能的層層突破。在世界的其他國家,如日本、德國等一些國家,在19世紀60年代就生產(chǎn)出了電子秤,其稱量精確度已經(jīng)達到小數(shù)點后三位,并在上個世紀70年代中期,大概四分之三的電子秤被制造出來,機械廠已經(jīng)發(fā)展到可以通過機電組合的傳感器進行電子重量的轉(zhuǎn)換。歐美一些國家工業(yè)電子稱重已經(jīng)基本達到了很高的水平。尤其是檢測的精確度和工作的可靠性方面已經(jīng)在技術上有了很大的突破和提升。關于電子稱重方面的傳感器,已經(jīng)在研究電子秤相關產(chǎn)品的應用范圍和整體結(jié)構(gòu)以及其技術和功能。例如:(1)美國里維爾(Revere)公司開發(fā)了具有兩種牽引和壓縮功能的稱重傳感器,可補償大氣壓力,用于高達5000d的高精度控制平臺;(2)HBM已開發(fā)出重量為1至100噸的爆震探測器,由兩種不同的耐壓材料結(jié)構(gòu)C2A和結(jié)構(gòu)C16A組成,并由耐壓材料外殼提供過載保護,其具有的爆震和耐壓性能分別符合了歐洲國家標準EN50014和美國標準EB50018d;(3)型號為F6Ox系列產(chǎn)品是由美國斯凱梅公司自主開發(fā)的,精度一般為6000d的新一代高稱量精度的F6Ox系列不銹鋼稱重快速過載傳感器。該產(chǎn)品適用于潮濕,腐蝕性和高溫防水環(huán)境;(4)塞特內(nèi)爾公司自主開發(fā)了200型稱重快速過載傳感器,該稱重傳感器的特點是使用優(yōu)質(zhì)青銅材料作為彈性體材料。它具有固有頻率高、線性穩(wěn)定度好、動態(tài)響應快等特點。電子減速機油過載保護裝置直接集成在電子平臺過載保護裝置中,從而有限度地確保了較高的平臺稱量動態(tài)響應速度和較長的傳感器使用壽命。組裝3至30kg的電子平臺稱重秤,精度一般為4000d[4]。電子稱重產(chǎn)品發(fā)展趨勢是向微型化、模塊化、集成化和智能化的方向發(fā)展。在測量速度、測量準確性、產(chǎn)品穩(wěn)定性和可靠性方面,它們的技術性能越來越高;功能往往是“智能”功能,可將稱量信息進行貯存和控制;應用程序?qū)傩詢A向于集成和組合。微處理器的出現(xiàn)正在快速的改變著我們的生活,幾乎工作在我們生活的所有領域。微處理器控制可以使儀器和設備比使用電子或數(shù)字電路功能更強大。使用微處理器設計的電子秤將越來越適應社會的發(fā)展和經(jīng)濟的要求。最近幾年來,隨著電子秤地參與數(shù)據(jù)分析和過程轉(zhuǎn)換的頻率越來越高,現(xiàn)代稱重技術和信息系統(tǒng)已成為工藝、存儲和運輸、預處理、接收和銷售領域必不可少的元素。當今的電子秤具有各種各樣的計算和數(shù)據(jù)處理功能,可以滿足大量應用的需求。未來,隨著微處理器技術的發(fā)展越來越快,電子秤技術將經(jīng)歷翻天覆地的變化。同時,將更高級,更智能的新一代電子秤推向市場,并擴大其使用范圍。本設計研究的是一個由微處理器控制的高準確度高智能化的電子秤設計方案。這種高精準度的智能電子秤占用空間小,測量準確度高且使用便捷,它結(jié)合了質(zhì)量測量功能和價格計算功能,適合在商業(yè)和家庭生活的諸多方面使用。由于現(xiàn)在的電子秤普遍存在測量精度低、讀取速度慢、體積大、重量高、零部件易損壞、電能消耗高等缺點,所以本設計將從輕便便攜、測量誤差小、集價格計算和重量測量功能于一體、自動報警等方面來進行研究。
1系統(tǒng)總體設計方案精確的電子秤在日常生活中既可以稱出去皮后的重量,也可以存儲基本產(chǎn)品的單價,只要擁有一樣商品的單價,秤就會迅速計算出價格,而且最終也會對所有物品進行合計,并且計算出來的結(jié)果非常正確。在設計系統(tǒng)時,根據(jù)要執(zhí)行的功能,設計電子秤有兩種選擇:方案一:由時鐘電路、復位電路、數(shù)據(jù)采集電路、LCD信號顯示電路、A/D信號轉(zhuǎn)換電路、單片機以及過載聲光報警裝置等電路組成。被測物體的重量由應變片將重力轉(zhuǎn)換成電阻的變化,再由電橋?qū)⑵渥兂呻妷盒盘?,此時的電壓很小。電壓信號被送到信號處理模塊中,信號處理模塊先對電壓信號進行放大,然后將它變成數(shù)字信號,再然后將轉(zhuǎn)換的結(jié)果傳送給單片機,單片機將數(shù)字信號轉(zhuǎn)換成顯示器所需要的代碼使被測物體的重量在顯示屏上顯示出來。如果需要顯示物品價格,我們還可以通過鍵盤對物品的單價進行設置,以便單片機計算出物品的金額,電路設計有相應的過載聲光報警裝置,在設備工作異常時報警。其整體設計方案如圖1.1所示。壓力傳感信號處理電路壓力傳感信號處理電路電源單片機按鍵電源單片機按鍵LCD顯示LCD顯示圖1.1方案一設計思路框圖方案二:由時鐘電路、復位電路、數(shù)據(jù)采集電路、數(shù)碼管顯示電路、單片機以及過載聲光報警裝置電路等組成。是在系統(tǒng)內(nèi)部工作電路設計原理的基礎,采用了鍵盤做為人機交互的接口電路,通過鍵盤設置被稱物品的單價從而實現(xiàn)自動計算金額的功能。這種方案,成本低,硬件電路設計簡單,并且在系統(tǒng)進行編程的過程中消減了很大一部分的單片機程序的工作量。整體設計方案的硬件框圖如圖1.2所示。時鐘電路時鐘電路數(shù)碼管顯示電路數(shù)碼管顯示電路復位電路單片機復位電路單片機聲光報警電路聲光報警電路數(shù)據(jù)采集電路數(shù)據(jù)采集電路圖1.2方案二設計思路框圖方案二采用的數(shù)碼管設計,可以直接實現(xiàn)基本的數(shù)碼管稱重顯示功能,但由于方案二使用了數(shù)碼管,從而限制測量的精度,方案二需要使用位數(shù)較多的數(shù)碼管顯示器才能使其得以很好的實現(xiàn)。但這樣顯示電路就需要占用較多的單片機接口電路,如果接口數(shù)量不能滿足要求則需要擴展I/O接口電路,增加成本和工作量。而方案一采用LCD顯示器省去了I/O口的設計和運用。同時由于LCD顯示的位數(shù)較多容易滿足輸入輸出位數(shù)的要求,測量精度能夠達到要求。另外,方案二在信號處理方面也有些欠缺。而且由于方案一在前端進行顯示信號的處理時,多了一個A/D信號轉(zhuǎn)換的措施,能夠有效的快速處理后端信號,符合了設計的要求。所以本方案的設計主要選擇了方案一。1.1設計目標與要求(1)單價由鍵盤設置;(2)稱重有去皮功能,能同時顯示被稱物品的重量、價格和總價;(3)測量范圍和精度滿足稱重要求,稱重范圍為0到10kg,稱量絕對誤差在±0.001kg以下,當稱重的重量超過10kg時,蜂鳴器報警,LED亮[13]。1.2方案論證與選擇主控制器是電子秤的核心,主控制器必須能夠接收來自轉(zhuǎn)換傳感器的信號,還要進行鍵盤掃描,具有計算功能并能通過顯示器顯示必要的信息,還需要控制報警裝置。選擇主控制器有兩個選項[16]。方案一:單片機作為主控制器單片機作為主控制器可以用作特定的控制系統(tǒng),它工作可靠,操作容易,維護方便,成本較低,所以在小型控制系統(tǒng)中,比較適合以單片機作為主控核心[12]。但是,在大型控制系統(tǒng)中,對控制系統(tǒng)的各個方面的性能要求都很高,而在工作條件較差的情況下,則存在影響系統(tǒng)功能的環(huán)境原因[2]。所以單片機合適用于復雜的大型系統(tǒng)。方案二:PLC作為主控制器主控制器也可以選用PLC,它應用范圍廣、接線簡單、適用性較強、編程不易出錯、操作方便,可以作為控制網(wǎng)絡系統(tǒng)連接,便于安裝,方便維護,大部分被使用于精細、快速、穩(wěn)定和控制點數(shù)量多的系統(tǒng)中,但價格偏高。由于本設計所需求的電子秤不需要精確度很高,且對工作環(huán)境簡單,但要求控制器及程序被固化。單片機作為控制器能夠滿足要求,并且價格低,體積小方便攜帶,所以最終選擇了以單片機作為本設計的主控制器。2硬件電路設計電子秤的結(jié)構(gòu)可以大致分為三個主要的部分:數(shù)據(jù)采集模塊、控制器模塊和顯示模塊。其中主要的數(shù)據(jù)采集傳感器模塊由對壓力過載傳感器、預備數(shù)字信號進行處理和激活的A/D信號轉(zhuǎn)換三個部分共同組成。經(jīng)過轉(zhuǎn)換后的預備數(shù)字信號被自動傳輸?shù)较鄳目刂破髂K進行測量信號處理,控制器對該預備數(shù)字的測量信號進行相應的處理,激活的預備信號顯示控制器模塊可以完成對人機間的測量信息采集和交換[5]。同時還在秤上添加了特殊的壓力過載和欠載狀態(tài)警告顯示功能。鍵盤控制A/D轉(zhuǎn)換器信號濾波放大處理壓力傳感器鍵盤控制A/D轉(zhuǎn)換器信號濾波放大處理壓力傳感器單片機單片機LCD顯示LCD顯示圖2.1硬件電路設計框圖2.1單片機型號選擇方案一:單片機選用STC89C52。作為一種小型單片機被諸多用戶使用,特點是低電壓和低功耗。微處理器內(nèi)部集成了Flash存儲器為8k字節(jié)。STC89C52在以51系列單片機為內(nèi)核的基礎上增加了很多傳統(tǒng)的MCS-51單片機不具備的功能。在單片機內(nèi)部,設有靈活的8位微處理器和在線可編程閃存。STC89C52單片機受到眾多使用者的青睞。STC89C52單片機內(nèi)部16位定時計數(shù)器有3個比MCS-51單片機多了1個T2,更加方便設計者使用。此外,STC89C52設計有省電模式、空閑模式和掉電模式可供用戶選擇,使STC89C52能耗更低,運行也更安全可靠,即使運行中突然斷電,掉電模式也會使運行的數(shù)據(jù)得以保存而不會丟失。為了的滿足不同產(chǎn)品的設計需求,STC89C52的封裝形式有PLCC、TQFP和PDIP等三種,使用起來更加方便[7]。方案二:單片機選用AT89C51。它是一種應用較廣的8位單片機。AT89C51的工作電壓低、性能高的特性受到諸多使用者的歡迎,其內(nèi)部帶Flash程序存貯器4k字節(jié),芯片內(nèi)集成了256字節(jié)隨機存儲器,接口部分并行IO口線有32個,串行接口為全雙工一個,具有定時和計數(shù)功能最多可以達到16位共有2個,中斷系統(tǒng)比較完善,芯片集成了振蕩器和時鐘電路。AT89C51提供了省電模式、空閑模式和掉電模式等多種運行模式。CPU根據(jù)系統(tǒng)運行情況自動改變運行模式,用戶也可以通過軟件選擇單片機的運行模式,省電模式又有多種不同模式供選擇,掉電模式下會存貯運行數(shù)據(jù)防止丟失。綜上所述,STC89C52較AT89C51擁有更大的外部擴展,要求工作電壓范圍更廣,存儲空間更大,編程方式更多,所以選擇STC89C52。2.2顯示模塊電路設計方案一:選用FYD12864-0402B液晶顯示模塊。它是一種具有128×64顯示分辨率的點陣液晶數(shù)字圖形顯示液晶組件,該液晶顯示模塊具有并行和串行兩種通訊方式,模塊內(nèi)部具有一級和二級的國標簡體中文字庫;字庫內(nèi)存有16×8點陣的ASCII字符集128個和16×16點陣的漢字8192個。利用該顯示模塊作為顯示器,可以方便地構(gòu)成全中文顯示界面。該模塊可以直接顯示4行8列的16×16點陣的中文漢字,也可以用來顯示圖形。該模塊擁有電壓低功耗低的性能特點。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且實際上該液晶顯示模塊的性能和價格也略低于相同點陣的圖形顯示液晶模塊。方案二:選用LCD1602液晶顯示模塊。LCD1602顯示模塊可同時顯示32個字符,分為上下兩行。利用液晶的物理特性,用電壓控制顯示屏幕上各各區(qū)域達到顯示圖形的目的。LCD1602液晶模塊通常也被叫作1602字符型的液晶,是一種屬于點陣型液晶模塊,是用來顯示數(shù)字、英文字母和常用圖形符號等。它的液晶點陣是不連續(xù)的,中間有許多用于分割字符的間隔,這些間隔把屏幕分割也若干部分,每個部分是一個5×7或者5×11等點陣字符位可以顯示一個字符,這些間隔很好地調(diào)節(jié)了顯示字符的間距,但正是因為這些間隔的存在,它顯示的圖形變得不連續(xù)。與LCD1602液晶顯示器相比,LCD12864液晶顯示器的沒有尺寸限制,并且也可以用來顯示曲線和圖形等。另外,LCD12864液晶顯示器的功能更加強大,所以本設計選擇了方案一。實物如圖2.2所示。圖2.2FYD12864-0402B液晶顯示實物圖圖2.3顯示模塊原理圖2.3傳感器模塊電路設計在電子秤中,傳感器的選擇至關重要。測量的最初數(shù)據(jù)是由稱重傳感器產(chǎn)生的,稱重傳感器的性能直接決定了電子稱重設備的性能。稱重傳感器性能的好壞和優(yōu)劣或產(chǎn)品質(zhì)量的水平高低,對整個電子稱重傳感器和控制系統(tǒng)的安全性起到?jīng)Q定性作用。稱重傳感器的主要性能指標有準確度、穩(wěn)定性和產(chǎn)品可靠性三個方面,這三個參數(shù)也是選擇稱重傳感器的主要依據(jù)。不同用途的電子稱重裝置性能指標的要求不同,對稱重傳感器的各項性能指標的要求也能一概而論。通常在選擇電子稱重的精度時不要盲目追求高精度,精度以滿足測量誤差要求為目的,堅持夠用的原則。如果電子稱重傳感器的工作環(huán)境溫度變化較大,應該正確地選擇適當?shù)膫鞲衅鞴ぷ魑恢脺囟群头秶?,以確保電子稱重傳感器在使用和安裝位置的溫度變化條件下可以穩(wěn)定地繼續(xù)正常工作。傳感器的選擇必須考慮以下因素:(1)外觀和尺寸;(2)有無密封的要求;(3)精度;(4)測量范圍;(5)所需參數(shù)及所需要的電纜長度。稱重傳感器可以按變換原理分類,可分為電阻應變式、電容式、差動變壓器式、壓電式、壓磁式和振頻式等多種。本產(chǎn)品的傳感器在設計過程中采用了一種電阻應變式的傳感器,一些導體和半導體的電阻值是變化的,當它受到壓力或拉力時,它的形狀會隨著受到的力而改變,電阻值也隨著形變而改變。因此,通過測量電阻值的大小,就可以反映受力的大小[10]。圖2.4應變式稱重傳感器的原理圖圖2.5傳感器模塊原理圖2.4按鍵模塊電路設計鍵盤是單片機接收指令的主要設備,單片機通過鍵盤接收用戶的指令。鍵盤的種類很多,常用的是機械式鍵盤。機械式鍵盤由多個按鍵組成,設計者根據(jù)所設計的設備的用途設置按鍵的數(shù)量。機械按鍵的原理就是一個開關,我們按下按鍵時開關閉合,釋放時開關斷開。單片機系統(tǒng)接收到信號后由程序?qū)崿F(xiàn)對應的功能。針對本軟件設計的要求,由于需要輸入阿拉伯數(shù)字從0到9以便計算商品的價格,數(shù)字鍵占用十個按鍵,設有"去皮"鍵一個,"置零"鍵一個,"."鍵一個,"微調(diào)加"鍵一個,"微調(diào)減"鍵一個,"總價"鍵一個。將以上十六個按鍵組合編制成4×4的正方形矩陣鍵盤。通過這樣的設計可以完成矩陣鍵盤的工作模式而大大減少了單片機IO口的數(shù)量和占用,為其他單片機功能的設計留出了空間[11]。電子秤輸入面板:123去皮456置零789微調(diào)減常用價格0.微調(diào)加圖2.6矩陣鍵盤原理圖2.5報警模塊電路設計本系統(tǒng)設計了報警電路,在超量程或欠量程的情況下發(fā)出報警信號,如下圖所示。報警電路由發(fā)光管和一支蜂鳴器及其驅(qū)動電路組成,當系統(tǒng)檢測到超量程或欠量程時,單片機輸出一個報警信號點亮發(fā)光二極管并通過三極管驅(qū)動蜂鳴器發(fā)出報警音[18]。圖2.7報警模塊原理圖2.6模數(shù)轉(zhuǎn)換電路設計HX711是24位A/D轉(zhuǎn)換器模塊電路,它是專為稱重傳感器設計制造的。HX711集成度比其他同類電路更高、測量響應的速度更迅速、具有很強的抗干擾能力。HX711不需要時鐘振蕩器及直流穩(wěn)壓電源等外圍電路,它們都已經(jīng)集成在了模塊內(nèi)部,有利于產(chǎn)品成本的降低,由于是專用芯片電路設計、安裝、軟件編程和調(diào)試都比通用芯片容易得多,有利于產(chǎn)品整體性能的提升,系統(tǒng)開機時HX711芯片自動復位,省去了軟件編程的麻煩[3]。圖2.8HX711內(nèi)部方框圖圖2.9模數(shù)轉(zhuǎn)換模塊原理圖管腳說明:圖2.10SOP-16L封裝表2.1管腳描述管腳號名稱性能描述1VSUP電源穩(wěn)壓電路供電電源:2.6~5.5V2BASE模擬輸出穩(wěn)壓電路控制輸出(不用穩(wěn)壓電路時為無連接)3AVDD電源模擬電源:2.6~5.5V4VFB模擬輸入穩(wěn)壓電路控制輸入(不用穩(wěn)壓電路時應接地)5AGND地模擬地6VBG模擬輸出參考電源輸出7INA-模擬輸入通道A負輸入端8INA+模擬輸入通道A正輸入端9INB-模擬輸入通道B負輸入端10INB+模擬輸入通道B正輸入端11PD_SCK數(shù)字輸入斷電控制(高電平有效)和串口時鐘輸入12DOUT數(shù)字輸出串口數(shù)據(jù)輸出13XO數(shù)字輸入輸出晶振輸入(不用晶振時為無連接)14XI數(shù)字輸入外部時鐘或晶振輸入,0:使用片內(nèi)振蕩器15RATE數(shù)字輸入輸出數(shù)據(jù)速率控制,0:10Hz;1:80Hz16DVDD電源數(shù)字電源:2.6~5.5V
3軟件電路設計3.1軟件程序設計單片機上電后,開始初始化,初始化單片機中每個模塊的設置以及A/D轉(zhuǎn)換器的功能設置,初始化后運行主程序[17]。在嵌入式單片機的過程控制數(shù)據(jù)處理系統(tǒng)中,主要工作模式有過程控制和數(shù)據(jù)處理兩種工作模式。其中數(shù)據(jù)處理工作模式包括數(shù)據(jù)的收集、數(shù)字處理、數(shù)據(jù)的轉(zhuǎn)換和圖像顯示等數(shù)據(jù)的處理。過程控制的程序主要是通過根據(jù)特定方法計算然后輸出信號來控制生產(chǎn)。在設計軟件以執(zhí)行上述任務時,任務被分解為幾個部分,并將每個部分稱為模塊。所謂的“模塊”本質(zhì)上是一個執(zhí)行特定功能的相對獨立的程序段。模塊化的編程語言和方法的優(yōu)點很多,比如說單個的模塊比一個完整的應用程序更易編寫及運行和調(diào)試、模塊之間可以共存等等。3.2系統(tǒng)程序流程圖軟件由一個主程序和若干個子程序組成,這樣能夠極大的方便程序編寫和程序調(diào)試。如圖3.1所示。3.2.1顯示模塊流程圖單片機應用系統(tǒng)中通常需要有人機之間的對話功能,其中包括人對設備進行數(shù)據(jù)錄入以及對設備運行過程實現(xiàn)控制等,也包括人從設備讀取運行過程和結(jié)果的各種。人們獲取設備運行的信息的主要器件就是顯示器。液晶顯示模塊是一種常用的顯示設備,它的工作速度很慢,不能跟上CPU的速度,所以在對單片機送顯示數(shù)據(jù)之前必需要確認顯示模塊是否處于空閑狀態(tài),液晶顯示器的閑忙狀態(tài)用忙標志位來表示,低電平,表示閑,可以執(zhí)行操作。在液晶顯示過程中我們要先傳送顯示地址然后再傳送要顯示的內(nèi)容。如圖3.2所示。開始開始數(shù)據(jù)初始化數(shù)據(jù)初始化端口端口初始化顯示初始化顯示初始化定時器初始化定時器初始化進入后臺進入后臺while循環(huán)無是否有稱重標志無是否有稱重標志有有稱重并計算價格稱重并計算價格顯示顯示重量與金額鍵盤掃描鍵盤掃描圖3.1主程序流程圖開始開始初始化初始化清屏清屏指針賦值指針賦值設第一行漢字和字符設第一行漢字和字符指針賦值指針賦值設第二行漢字和字符設第二行漢字和字符結(jié)束結(jié)束圖3.2顯示模塊流程圖3.2.2傳感器模塊流程圖應變片可以將外力產(chǎn)生應變轉(zhuǎn)換為電阻的變化,為了顯示與記錄受力的大小,還要將電阻的變化轉(zhuǎn)換為電信號,這種電信號可以是電壓或者電流,這種物體量的轉(zhuǎn)換要借助一定的測量電路。本設計采用直流電橋做為測量電路。目前應變片測量電路產(chǎn)生的電壓信號都比較小,無法直接使用,通常需要經(jīng)過放大電路放大后使用,這里就要用到電流或電壓放大器[20]。我們反應變片式電阻傳感器牢固的粘貼到懸臂梁上,當懸臂梁受力發(fā)生形狀變化時,應變片隨之產(chǎn)生形變,其電阻值發(fā)生變化。應變片電阻值的變化一般都很小,測量起來比較困難,常用的辦法是利用電橋進行測量,然后利用放大電路對測量所得的電壓進行放大,最后將放大的信號送給顯示器或執(zhí)行電路[15]。模擬待測信號模擬待測信號模擬量模擬量模數(shù)轉(zhuǎn)換模塊模數(shù)轉(zhuǎn)換模塊數(shù)字量數(shù)字量微控制器模塊微控制器模塊程序處理程序處理數(shù)碼管顯示數(shù)碼管顯示圖3.3傳感器模塊流程圖3.2.3按鍵模塊流程圖鍵盤模塊主要是監(jiān)控鍵盤,調(diào)用顯示子程序等。由常用獨立式鍵盤的基本工作原理可以得知,按鍵是狀態(tài)是通過按鍵與單片機連接的I/O的電平變化而進行讀取的,在單片機程序設計中,通過程序讀取與按鍵相連的口線的電平值,然后判斷此電平的高低來判斷這個按鍵是否被按下。設計者可以根據(jù)需要對每個按鍵進行賦值或賦予指定的功能。4×4×4鍵盤LCD初始化LCD初始化字符顯示字符顯示界面字符顯示界面字符顯示N有鍵按下?N有鍵按下?逐列掃描逐列掃描YY輸入完畢輸入完畢調(diào)用LCD顯示調(diào)用LCD顯示NY有返回鍵按下?NY有返回鍵按下?逐列掃描逐列掃描圖3.4按鍵模塊流程圖3.2.4報警模塊流程圖由于壓力傳感器所受壓力有上限重量,所以所測物品重量必須在一定范圍內(nèi),超過傳感器所能承受的范圍以后,警報必須報警。報警采用了聲音信號報警,用一只三極管來驅(qū)動蜂鳴器做為報警電路。當系統(tǒng)檢測到報警信號時,由單片機的引腳發(fā)出低電平的報警信號,蜂鳴器鳴響,發(fā)出報警音,當報警解除后對應的單片機引腳變?yōu)楦唠娖?,蜂鳴器停止鳴響,報警結(jié)束。開始開始YA/D高位大YA/D高位大NNN與閾值相等N與閾值相等YYA/D低位大YYA/D低位大NNN與閾值相等N與閾值相等Y報警Y報警返回返回圖3.5報警模塊流程圖3.2.5模數(shù)轉(zhuǎn)換流程圖模數(shù)轉(zhuǎn)換子程序的作用是系統(tǒng)上電并完成設備初始化后,將前級送來的電壓信號從模擬信號轉(zhuǎn)換成數(shù)字信號,并把得到的數(shù)字信號存貯在單片機的數(shù)據(jù)存貯器中。本設計中的A/D轉(zhuǎn)換器的任務是將放大器的模擬輸出信號轉(zhuǎn)換為數(shù)字輸出量[8]。開始開始初始化初始化啟動模數(shù)轉(zhuǎn)換啟動模數(shù)轉(zhuǎn)換NN轉(zhuǎn)換是否完成轉(zhuǎn)換是否完成YY數(shù)據(jù)存儲數(shù)據(jù)存儲數(shù)據(jù)顯示數(shù)據(jù)顯示圖3.6模數(shù)轉(zhuǎn)換流程圖
4設計產(chǎn)品的安裝與調(diào)試4.1安裝焊接電路板,對電子元件進行誤讀并粗略檢驗之后依次焊接。焊接時,必須確保將烙鐵的尖端靠在兩個焊接部分的接合處,并且將整個焊接部分充分加熱。如果將元件焊接在印制板上,則必須確保烙鐵頭同時加熱需要焊接在一起的兩個部件,并確保兩個焊接面同時均勻加熱。當將焊接部分的焊接表面充分預熱后,焊絲在與烙鐵相反的一側(cè)上與焊接部分接觸。焊絲熔化到一定程度后,將焊絲快速向斜上方移走。觀察焊接點的焊錫變化,在完成焊接之后,將烙鐵快速向斜上方移開完成焊接[6]。焊接時注意加熱時間不能太長,整個焊接過程不超過4s,通過大量的練習不斷提高自己的焊接能力,提高焊接質(zhì)量。所有焊點全部焊接后,觀察電路焊接是否有問題,是否有漏焊,焊點是否完整,然后用萬用表檢測電路,尤其注意電源部分,電壓是否正常,并確定是否發(fā)生了嚴重的問題,如短路等。在確認沒有問題后,連接電源后觀察并調(diào)試每一個器件與按鍵,看是否正常工作,然后逐一測試功能。圖4.1實物圖1圖4.2實物圖24.2調(diào)試在軟件設計方面利用Keil4,使用C語言完成程序代碼設計。作為國外開發(fā)的編程軟件,Keil4可以實現(xiàn)單片機C語言的有效兼容,使用語言較為廣泛,在軟件編程時,可按照自身需求確定編程語言,它的功能具有極強的可擴展性,可以進行下載、編譯或者編程等操作[9]。KeiluVision4IDE是眾多單片機設計軟件中使用最為廣泛的一種,它是基于Windows的開發(fā)平臺。uVision4是一個集成開發(fā)環(huán)境,包含一個高效的編譯器、一個項目管理器和一個MAKE工具。它在功能強大的運行環(huán)境中集成了項目管理,源代碼編輯,程序調(diào)試等。uVision4支持所有KeilC51工具,包括C編譯器、宏匯編器、連接/定位器、目標代碼到HEX的轉(zhuǎn)換器。C51美國標準交叉優(yōu)化編譯器C從源代碼C生成可重定位的目標文件。A51宏匯編器從8051匯編源代碼產(chǎn)生可重定位的目標文件。BL51連接/重定位器組合由C51和A51產(chǎn)生的可重定位的目標文件,生成目標文件。LIB51庫管理器將目標文件組合在一起,以生成連接器可以使用的庫文件。從OH51目標文件到HEX格式的轉(zhuǎn)換器從絕對目標文件創(chuàng)建IntelHEX格式文件。RTX-51實時操作系統(tǒng)簡化了復雜和對時間要求敏感的軟件項目[14]。(1)使用Keil4軟件創(chuàng)建項目:單擊菜單欄上的“工程”,輸入并保存新項目名稱“基于單片機的電子秤設計”,然后器件選擇“STC89C52”。(2)新建用戶源文件:在新建空白文本中編寫程序源代碼,編碼完成保存文件并命名“基于單片機的電子秤設計.c”,完成新文件創(chuàng)建。(3)程序編譯和調(diào)試:單擊編譯按鈕,軟件將在信息窗口顯示提示信息,如果提示信息中有error信息,則須按提示找出錯誤并改正,直到提示沒有錯誤為止。KeiluVision4軟件開發(fā)流程圖如下圖所示。 開始開始建立工程文件建立工程文件編寫編寫C語言否編譯是否正確否編譯是否正確下載到單片機下載到單片機否調(diào)試是否正常否調(diào)試是否正常是是結(jié)束結(jié)束圖4.3調(diào)試流程圖4.3誤差分析便攜式電子秤是一種靜態(tài)稱重的電子設備,產(chǎn)生誤差的主要因素有三個方面:稱重傳感器、電子電路和機械承重系統(tǒng)(即秤體)。(1)應變式稱重傳感器的誤差。應變式傳感器是非線性的、其工作特性還存在著不重復性,檢測速度上存在滯后等基本特性都使得測量產(chǎn)生誤差。由于其周圍環(huán)境的變化還會引起傳感器的零點漂移和系數(shù)的改變。所有這些誤差制作時,都通過各種的補償和修正的方法盡量降低,剩余的誤差很難再進行處理了,可以將其作為偶然誤差進行處理。因此傳感器的應變式合成稱重誤差一般可按下式均方根法進行合成,即由下式均方根法求得:式中——傳感器的合成誤差;——傳感器的非線性誤差;——傳感器的不重復性誤差;——傳感器的滯后誤差;——溫度變化引起傳感器的零點變動誤差;——溫度變化引起傳感器系數(shù)變動誤差;——稱重傳感器周圍環(huán)境溫度變化的幅度。(2)高精度的合成數(shù)字測量傳感器設計儀表和高精度數(shù)字傳感器設計芯片在數(shù)字電子秤合成測量儀器設備設計中的廣泛應用,使得數(shù)字電子設備的平均合成測量誤差在高精度數(shù)字電子秤中所相應占的平均合成測量誤差值的比例遠遠要低于傳統(tǒng)數(shù)字測量傳感器。電子設備的合成誤差為:式中——儀器的非線性;——溫度變化引起的零點變動;——溫度變化引起的靈敏度變動;——時間引起的零點漂移;——時間引起的靈敏度變化;——電壓變化引起的零點漂移;——電壓變動引起的靈敏度變化;——設備所處環(huán)境溫度的變化量。電子秤中,電子設備部分由功率放大器、A/D信號轉(zhuǎn)換器、顯示等部分組成,總的合成誤差為式中、、、——為每個儀器的誤差。此外,稱重系統(tǒng)是通過導線與電子設備相連的,連接導線過長也會產(chǎn)生誤差。因為導線的電阻值會隨著溫度的變化而發(fā)生改變;環(huán)境潮濕時導線的電阻也會改變;使用稱重傳感器的引線還可能會因其內(nèi)部受到的電磁干擾而產(chǎn)生引起稱重傳感器的誤差等。(3)載物平臺用于放置被測重的物體,并把被稱物體的重力傳遞給應變片。在重力的傳遞過程中由于機械結(jié)構(gòu)設計方面的問題包括機械構(gòu)件的摩擦力問題等,物品的重力不可能全部傳遞到應變片傳感器上。另外傳遞的重力也可能不是垂直作用在應變片的中軸線上,重力也可能和應變片的中軸線存在一定的夾角,這樣都將造成檢測到的力不是真實的作用力,因些載物平臺在檢測力的過程中也會產(chǎn)生一定的誤差。載物平臺的誤差、電源電壓波動等所帶來的誤差都不容易定量計算,各種導線所引起的誤差更難準確計算。我們可以通過合理的結(jié)構(gòu)設計,精準的安裝操作來減少誤差的產(chǎn)生,提高檢測的精度[19]。4.4遇到的問題及解決方法(1)液晶顯示器上顯示的漢字存在代碼混亂和字體未對準的問題。經(jīng)過研究,發(fā)現(xiàn)單個中文單詞代表兩個字節(jié),因此在源程序中對代碼進行了糾正和對齊,不再出現(xiàn)代碼混亂和遺漏的情況。重新加載后的字符對齊。(2)實物完成后顯示器亮并顯示數(shù)字,電子秤上放物品但顯示器上顯示重量的數(shù)字沒有變化,經(jīng)過檢查發(fā)現(xiàn)是電路板上有個別焊點焊錫不夠沒有焊接上,經(jīng)過重新焊接,電子秤可以正常使用。
結(jié)論本設計使用STC89C52單片機微處理器作為中央控制器,并使用帶有高精度HX711稱重傳感器和FYD12864-0402B液晶顯示器的電子秤,還添加了蜂鳴器報警模塊對本設計進行了完善。稱重精度和工作穩(wěn)定性基本滿足設計的要求,校準方法簡單方便,穩(wěn)定性高,操作容易,成本低。該電子秤綜合應用了單片機技術、傳感器技術和數(shù)字顯示技術等,它具有較高的靈敏度和準確度高,液晶顯示更加直觀,且使用方便。本設計不僅反映了應用單片機最小系統(tǒng)的靈活性,而且還具有多功能性。本設計在項目方案制定、儀器的選擇和軟件設計等方面進行了充分的考慮。本設計體現(xiàn)在產(chǎn)品的實用性體積小、重量輕、精度高在稱重的同時完成計價功能,可以直接利用商品單價自動計算得出商品的總價,實現(xiàn)了去皮功能,超重使用時會同時發(fā)出聲音和燈光的報警信號,基本能夠滿足民用電子秤的使用需求,實現(xiàn)了制作電子秤的意義。
參考文獻[1]張毅剛.單片機原理及應用[M].北京:高等教育出版社,2010
[2]彭介華.電子技術課程設計指導[M].北京:高等教育出版社,2008
[3]常健生.檢測與轉(zhuǎn)換技術[M].北京:機械工業(yè)出版社,2004
[4]趙廣平,孫雯萍,孫建軍.電子稱重技術現(xiàn)狀及發(fā)展趨勢[J].儀表技術與傳感器.2007(07)
[5]張緒光,劉在娥.電路與模擬電子技術[M].北京:北京大學出版社,2010
[6]黃智偉.印刷電路板設計技術與實踐[M].北京:電子工業(yè)出版社,2013
[7]謝維成.單片機原理與應用及C51程序設計[M].北京:清華大學出版社,2009
[8]徐曉光.數(shù)字邏輯與數(shù)字電路[M].北京:機械工業(yè)出版社,2008
[9]郭天祥.51單片機C語言教程[M].北京:電子工業(yè)出版社,2009
[10]王琦.電阻應變式稱重傳感器的設計[J].木材加工機械,2005(03)
[11]張力,倪銘.衡器.對電子秤除皮準確度測試、除皮后的稱量測試的探討[J].2018(09)
[12]凌有鑄,劉力.單片機控制的電子秤[J].中國紡織大學學報.1998(05)
[13]王健.電子秤功能的實現(xiàn)與應用[D].北方工業(yè)大學.2011
[14]嵇道鳳,王穎.數(shù)字電子秤的設計與仿真[J].電子世界.2013(23)[15]秦玉偉.一種懸臂梁結(jié)構(gòu)的高精度電子秤[J].自動化與儀器儀表,2020(04):97-99[16]沈紅衛(wèi).基于單片機的智能系統(tǒng)設計與實現(xiàn)[M].北京:電子工業(yè)出版社,2005:30-35[17]劉勇.數(shù)字電路[M].天津:電子工業(yè)出版社,2004:201-209[18]趙云,李振,李海楓,馬強,劉歡.基于51單片機電子秤重量報警系統(tǒng)[J].軟件,2020,41(04):88-92[19]程望斌,劉碩卿,王曾盛,何巧巧,葉珊麗,陳茉莉.多功能電子秤的優(yōu)化設計與實現(xiàn)[J].湖南理工學院學報(自然科學版),2019,32(03):23-25[20]江天亮.基于單片機和傳感器的電子秤系統(tǒng)教學設計與實現(xiàn)[J].電子測試,2019(10):8-9+15
附錄1原理圖
附錄2源程序清單主程序:#include<reg52.h>#include<intrins.h>#include<string.h>#defineucharunsignedchar#defineuintunsignedintbitbdataflag_key;#include"main.h"#include"LCD1602.h"#include"HX711.h"#include"keyboard.h"#include"eeprom52.h"http://#include"wannianli.h"http://#include"yyxp.h"unsignedlongHX711_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;sbitBuzzer=P2^0;volatilebitClearWeighFlag=0;//傳感器調(diào)零標志位,清除0漂/******************把數(shù)據(jù)保存到單片機內(nèi)部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ù)從單片機內(nèi)部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) //新的單片機初始單片機內(nèi)問eeprom { GapValue=3500; a_a=1; write_eeprom(); //保存數(shù)據(jù) } } //顯示單價,單位為元,四位整數(shù),兩位小數(shù)voidDisplay_Price(){LCD1602_write_com(0x88); LCD1602_write_word("單價:"); LCD1602_write_data(price/100+0x30); LCD1602_write_data(price%100/10+0x30); LCD1602_write_data('.'); LCD1602_write_data(price%10+0x30); LCD1602_write_word("元");}//顯示重量,單位kg,兩位整數(shù),三位小數(shù)voidDisplay_Weight(){ LCD1602_write_com(0x90); LCD1602_write_word("重量:");LCD1602_write_data(''); LCD1602_write_data(Weight_Shiwu/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_word("Kg");}//顯示總價,單位為元,四位整數(shù),兩位小數(shù)voidDisplay_Money(){//unsignedinti,j;LCD1602_write_com(0x98); //指針設置LCD1602_write_word("總價:");LCD1602_write_com(0x9f); //指針設置LCD1602_write_word("元");if(money>=1000){LCD1602_write_com(0x9c); LCD1602_write_data(''); 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(0x9c); LCD1602_write_data(''); 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(0x9c); LCD1602_write_data(''); LCD1602_write_data(0x20); LCD1602_write_data(0x20); LCD1602_write_data(money%100/10+0x30); LCD1602_write_data('.'); LCD1602_write_data(money%10+0x30);}else{LCD1602_write_com(0x9c); LCD1602_write_data(''); LCD1602_write_data(0x20); LCD1602_write_data(0x20); LCD1602_write_data(0+0x30); LCD1602_write_data('.'); LCD1602_write_data(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ù)是鍵值//返回鍵值: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++; // Get_Weight(); break; case13://減 if(GapValue>1) GapValue--;// Get_Weight(); 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("歡迎使用電子稱"); //LCD1602_write_com(0x90); //指針設置LCD1602_write_word("初始化中");LCD1602_write_com(0x88); //指針設置LCD1602_write_word("請稍候。。。");Delay_ms(2000);Get_Maopi();// Get_Maopi(); //稱毛皮重量// Weight_Shiwu=9000; while(1) {//每0.5秒稱重一次 if(FlagTest==1/*&&keynum==0*/) { Get_Weight(); } keycode=Getkeyboard(); //有效鍵值0-15 if(keycode<16) { KeyPress(keycode); Buzzer=0; Delay_ms(100); Buzzer=1; while(keycode<16) { if(keycode==12||keycode==13) { Buzzer=0; Delay_ms(10); Buzzer=1; KeyPress(keycode); Get_Weight(); flag_key=1; } keycode=Getkeyboard(); } write_eeprom(); //保存數(shù)據(jù) } }}//****************************************************//稱重//****************************************************voidGet_Weight(){ Weight_Shiwu=HX711_Read(); Weight_Shiwu=Weight_Shiwu-Weight_Maopi; //獲取凈重 if((int)((float)Weight_Shiwu*10/GapValue)<qupi) qupi=0; Weight_Shiwu=(int)((float)Weight_Shiwu*10/GapValue)-qupi; //計算實物的實際重量 // Weight_Shiwu=(unsignedint)((float)Weight_Shiwu)-qupi; if(Weight_Shiwu>10000||Weight_Shiwu<0) //超重報警 { Buzzer=!Buzzer; LED=!LED;// if(yyxp_busy==1)// speak(40); LCD1602_write_com(0x94); LCD1602_write_word("-."); } else { if(Weight_Shiwu<10000) LED=0; elseif(Weight_Shiwu>10000) LED=1; Buzzer=1;// if(Weight_Shiwu>10) { Display_Weight(); money=Weight_Shiwu*price/1000;//money單位為分 //顯示總金額 Display_Money(); Display_Price(); } }}//****************************************************//獲取毛皮重量//****************************************************voidGet_Maopi(){ unsignedcharclear;mm: Weight_Maopi_0=HX711_Read(); for(clear=0;clear<10;clear++) {// Buzzer=1; LED=1; Delay_ms(100); LED=0; Delay_ms(100); } Weight_Maopi=HX711_Read(); if(Weight_Maopi/GapValue!=Weight_Maopi_0/GapValue) gotomm; Buzzer=0; Delay_ms(500); Buzzer=1;}//****************************************************//MS延時函數(shù)(12M晶振下測試)//****************************************************voidDelay_ms(unsignedintn){ unsignedinti,j; for(i=0;i<n;i++) for(j=0;j<123;j++);}鍵盤程序:#include"keyboard.h"externbitbdataflag_key;//按鍵掃描函數(shù)://功能;只掃描一個按鍵,按鍵為號小優(yōu)先//返回鍵值://12310 //10:清零重量,兼去皮功能 //45611 //11:清除單價//78912 //12:顯示數(shù)值偏大調(diào)節(jié)按鍵//1401513 //14:無功能(用于擴展)15:小數(shù)點13:顯示數(shù)值偏小調(diào)節(jié)按鍵unsignedcharGetkeyboard(void){unsignedcharnumber=0;unsignedchari; //行輸入低電平ROW1=ROW2=ROW3=ROW4=0; //如果列輸出不全為高,則說明有鍵按下 if(((COL1!=1)||(COL2!=1)||(COL3!=1)||(COL4!=1))&&flag_key==1) { //輸入0111 flag_key=0; ROW1=0; ROW2=ROW3=ROW4=1; for(i=0;i<20;i++); if(COL1==0)return1; //7 elseif(COL2==0)return2; // 8 elseif(COL3==0)return3; // 9 elseif(COL4==0)return10; // 10 //輸入1011 ROW2=0; ROW1=ROW3=ROW4=1; for(i=0;i<20;i++); if(COL1==0)return4; //4 elseif(COL2==0)return5;//5 elseif(COL3==0)return6; //6 elseif(COL4==0)return11; // 11 //輸入1101 ROW3=0; ROW1=ROW2=ROW4=1; for(i=0;i<20;i++); if(COL1==0)return7;//1 elseif(COL2==0)return8; //2 elseif(COL3==0)return9; //3 elseif(COL4==0)return12; //12 //輸入0111 ROW4=0; ROW1=ROW2=ROW3=1; for(i=0;i<20;i++);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO 16826:2025 EN Non-destructive testing - Ultrasonic testing - Testing for discontinuities perpendicular to the surface
- 山東省濱州市惠民縣2024-2025學年九年級上學期期末化學試題(含答案)
- 遼寧省鞍山市2024-2025學年高一上學期期末物理試卷(含答案)
- 綠色營銷的評價體系講義
- (一模)哈三中2025屆高三第一次模擬考試 地理試題(含答案)
- 中小學消防知識培訓課件
- 企業(yè)員工培訓體系構(gòu)建與實踐經(jīng)驗分享
- 形容詞級與最高級的用法對比高一英語教學設計
- 物聯(lián)網(wǎng)智能家居解決方案合同
- 三只小豬蓋房記讀后感
- 銀行國內(nèi)保理業(yè)務操作規(guī)程
- 二級公立醫(yī)院績效考核三級手術目錄(2020版)
- 有創(chuàng)動脈血壓監(jiān)測護理查房課件
- 宋朝服飾介紹分享
- 小波分析及其MATLAB實現(xiàn)
- 2021中國靜脈血栓栓塞癥防治抗凝藥物的選用與藥學監(jiān)護指南(2021版)解讀
- 拇指骨折護理查房
- 職業(yè)院校技能大賽(健身指導賽項)備考試題庫(含答案)
- 牙周檢查記錄表
- GB/T 10060-2023電梯安裝驗收規(guī)范
- 高一生物實驗室教學計劃安排表
評論
0/150
提交評論