找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 3757|回復(fù): 1
收起左側(cè)

基于單片機(jī)的電子稱設(shè)計(jì)報(bào)告(word格式文檔下載)

[復(fù)制鏈接]
ID:370073 發(fā)表于 2018-7-12 20:47 | 顯示全部樓層 |閱讀模式
這是一個(gè)基于51單片機(jī)電子秤的報(bào)告,希望對(duì)有需要的人有幫助。

摘要
電子秤是將檢測(cè)與轉(zhuǎn)換技術(shù)、計(jì)算機(jī)技術(shù)、信息處理、數(shù)字技術(shù)等技術(shù)綜合一體的現(xiàn)代新型稱重儀器。它與我們?nèi)粘I罹o密結(jié)合息息相關(guān)。
電子稱主要以單片機(jī)作為中心控制單元,通過(guò)稱重傳感器進(jìn)行模數(shù)轉(zhuǎn)換單元,在配以鍵盤(pán)、顯示電路及強(qiáng)大軟件來(lái)組成。電子稱不但計(jì)量準(zhǔn)確、快速方便,更重要的自動(dòng)稱重、數(shù)字顯示,對(duì)人們生活的影響越來(lái)越大,廣受歡迎。
本系統(tǒng)的設(shè)計(jì)主要從硬件電路設(shè)計(jì),軟件編程調(diào)試,實(shí)物焊接調(diào)試三部分進(jìn)行詳細(xì)闡述。硬件電路主要是基于單片機(jī)STC89C52為核心的控制單元實(shí)現(xiàn)數(shù)據(jù)的處理,采用壓力傳感器對(duì)數(shù)據(jù)進(jìn)行采集,電子秤專用24位AD轉(zhuǎn)換芯片HX711對(duì)傳感器采集到的模擬量進(jìn)行AD轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)據(jù)送到單片機(jī)進(jìn)行處理顯示,數(shù)據(jù)顯示由LCD1602液晶實(shí)現(xiàn),液晶顯示效果穩(wěn)定無(wú)閃爍。

1緒論
2 系統(tǒng)硬件方案設(shè)計(jì)
2.1系統(tǒng)總體設(shè)計(jì)方案比較與論證
2.2系統(tǒng)元器件選型及器件參數(shù)介紹
2.2.1單片機(jī)選型
2.2.2傳感器選擇
2.2.3 顯示器選擇
2.2.4 AD轉(zhuǎn)換芯片選擇
3系統(tǒng)硬件電路設(shè)計(jì)
3.1系統(tǒng)電源電路設(shè)計(jì)
3.3單片機(jī)控制電路設(shè)計(jì)
3.4系統(tǒng)顯示電路設(shè)計(jì)
3.5超重報(bào)警提示電路設(shè)計(jì)
3.6按鍵輸入電路設(shè)計(jì)
4 系統(tǒng)軟件設(shè)計(jì)
4.1系統(tǒng)主程序軟件流程圖
4.2系統(tǒng)顯示部分流程圖
4.3系統(tǒng)按鍵檢測(cè)部分流程圖
5 系統(tǒng)整體調(diào)試
5.1硬件電路調(diào)試中遇到的問(wèn)題
5.2系統(tǒng)實(shí)物調(diào)試效果圖
5.3系統(tǒng)設(shè)計(jì)總結(jié)
參考文獻(xiàn)
附錄
附錄1系統(tǒng)整體電路圖
附錄2系統(tǒng)部分源程序
致 謝

1緒論
    稱重技術(shù)自古以來(lái)就被人們所重視,作為一種計(jì)量手段,廣泛應(yīng)用于工農(nóng)業(yè)、科研、交通、內(nèi)外貿(mào)易等各個(gè)領(lǐng)域,與人民的生活緊密相連。電子秤是電子衡器中的一種,衡器是國(guó)家法定計(jì)量器具,是國(guó)計(jì)民生、國(guó)防建設(shè)、科學(xué)研究、內(nèi)外貿(mào)易不可缺少的計(jì)量設(shè)備,衡器產(chǎn)品技術(shù)水平的高低,將直接影響各行各業(yè)的現(xiàn)代化水平和社會(huì)經(jīng)濟(jì)效益的提高。稱重裝置不僅是提供重量數(shù)據(jù)的單體儀表,而且作為工業(yè)控制系統(tǒng)和商業(yè)管理系統(tǒng)的一個(gè)組成部分,推進(jìn)了工業(yè)生產(chǎn)的自動(dòng)化和管理的現(xiàn)代化,它起到了縮短作業(yè)時(shí)間、改善操作條件、降低能源和材料的消耗、提高產(chǎn)品質(zhì)量以及加強(qiáng)企業(yè)管理、改善經(jīng)營(yíng)管理等多方面的作用。稱重裝置的應(yīng)用已遍及到國(guó)民經(jīng)濟(jì)各領(lǐng)域,取得了顯著的經(jīng)濟(jì)效益。
電子秤是稱重技術(shù)中的一種新型儀表,廣泛應(yīng)用于各種場(chǎng)合。電子秤與機(jī)械秤比較有體積小、重量輕、結(jié)構(gòu)簡(jiǎn)單、價(jià)格低、實(shí)用價(jià)值強(qiáng)、維護(hù)方便等特點(diǎn),可在各種環(huán)境工作,重量信號(hào)可遠(yuǎn)傳,易于實(shí)現(xiàn)重量顯示數(shù)字化,易于與計(jì)算機(jī)聯(lián)網(wǎng),實(shí)現(xiàn)生產(chǎn)過(guò)程自動(dòng)化,提高勞動(dòng)生產(chǎn)率。從世界水平看,衡器技術(shù)已經(jīng)經(jīng)歷了四個(gè)階段,從傳統(tǒng)的全部由機(jī)械元器件組成的機(jī)械稱到用電子線路代替部分機(jī)械元器件的機(jī)電結(jié)合秤,再?gòu)募呻娐肥降侥壳暗膯纹瑱C(jī)系統(tǒng)設(shè)計(jì)的電子計(jì)價(jià)秤。我國(guó)電子衡器從最初的機(jī)電結(jié)合型發(fā)展到現(xiàn)在的全電子型和數(shù)字智能型。現(xiàn)今電子衡器制造技術(shù)及應(yīng)用得到了新發(fā)展:電子稱重技術(shù)從靜態(tài)稱重向動(dòng)態(tài)稱重發(fā)展;計(jì)量方法從模擬測(cè)量向數(shù)字測(cè)量發(fā)展;測(cè)量特點(diǎn)從單參數(shù)測(cè)量向多參數(shù)測(cè)量發(fā)展。常規(guī)的測(cè)試儀器儀表和控制裝置被更先進(jìn)的智能儀器所取代,使得傳統(tǒng)的電子測(cè)量?jī)x器在遠(yuǎn)離、功能、精度及自動(dòng)化水平定方面發(fā)生了巨大變化,并相應(yīng)的出現(xiàn)了各種各樣的智能儀器控制系統(tǒng),使得科學(xué)實(shí)驗(yàn)和應(yīng)用工程的自動(dòng)化程度得以顯著提高。
電子稱重的實(shí)現(xiàn)首先是通過(guò)壓力傳感器采集到被測(cè)物體的重量并將其轉(zhuǎn)換成電壓信號(hào)。輸出電壓信號(hào)通常很小,需要通過(guò)前端信號(hào)處理電路進(jìn)行準(zhǔn)確的線性放大。放大后的模擬電壓信號(hào)經(jīng)A/D轉(zhuǎn)換電路轉(zhuǎn)換成數(shù)字量被送入到主控電路的單片機(jī)中,再經(jīng)過(guò)單片機(jī)控制譯碼顯示器,從而顯示出被測(cè)物體的重量。按照設(shè)計(jì)的基本要求,系統(tǒng)可分為三大模塊,數(shù)據(jù)采集模塊、控制器模塊、人機(jī)交互液晶顯示界面模塊。其中數(shù)據(jù)采集模塊由壓力傳感器、信號(hào)的前級(jí)處理和A/D轉(zhuǎn)換部分組成。轉(zhuǎn)換后的數(shù)字信號(hào)送給控制器處理,由控制器完成對(duì)該數(shù)字量的處理,驅(qū)動(dòng)顯示模塊完成人機(jī)間的信息交換。此部分對(duì)軟件的設(shè)計(jì)要求比較高,系統(tǒng)的大部分功能都需要軟件來(lái)控制。在擴(kuò)展功能上,本設(shè)計(jì)增加了一個(gè)過(guò)載報(bào)警提示功能使本電子稱的設(shè)計(jì)更人性化智能化。
2 系統(tǒng)硬件方案設(shè)計(jì)
2.1系統(tǒng)總體設(shè)計(jì)方案比較與論證
在設(shè)計(jì)系統(tǒng)時(shí),針對(duì)各個(gè)模塊實(shí)現(xiàn)的功能來(lái)設(shè)計(jì)電子秤的方案有以下幾種:
方案一  數(shù)碼管顯示:

1 數(shù)碼管顯示方案

此方案利用數(shù)碼管顯示物體重量,簡(jiǎn)單可行,可以采用內(nèi)部帶有模數(shù)轉(zhuǎn)換功能的單片機(jī)。由此設(shè)計(jì)出的電子秤系統(tǒng),硬件部分簡(jiǎn)單,接口電路易于實(shí)現(xiàn),并且在編程時(shí)大大減少程序量,在電路結(jié)構(gòu)上只有簡(jiǎn)單的輸出輸入關(guān)系。缺點(diǎn)是:硬件部分簡(jiǎn)單,雖然可以實(shí)現(xiàn)電子稱基本的稱重功能,但是不能實(shí)現(xiàn)外部數(shù)據(jù)的輸入,無(wú)法根據(jù)實(shí)際情況靈活地設(shè)定各種控制參數(shù)。由于數(shù)碼管只能實(shí)現(xiàn)簡(jiǎn)單的數(shù)字和英文字符的顯示,不能顯示漢字以及其他的復(fù)雜字符,不能達(dá)到顯示購(gòu)物清單的要求。又因?yàn)椴捎昧司哂心?shù)轉(zhuǎn)換功能的單片機(jī),系統(tǒng)電路過(guò)于簡(jiǎn)單,系統(tǒng)硬件的擴(kuò)展必受到限制,電子秤的功能過(guò)于單一,達(dá)不到設(shè)計(jì)的標(biāo)準(zhǔn)。
方案二  在前一種方案的基礎(chǔ)上進(jìn)行擴(kuò)展,增加一鍵盤(pán)輸入裝置,增加外界對(duì)單片機(jī)內(nèi)部的數(shù)據(jù)設(shè)定,使電子稱實(shí)現(xiàn)稱重計(jì)價(jià)的功能。
結(jié)構(gòu)簡(jiǎn)圖如圖2所示:

2帶有鍵盤(pán)輸入的結(jié)構(gòu)簡(jiǎn)圖


此方案設(shè)計(jì)的電子秤,可以實(shí)現(xiàn)稱物計(jì)價(jià)功能,但是局限于數(shù)碼管的功能,在顯示時(shí)只能顯示單價(jià)、購(gòu)物總額以及簡(jiǎn)單的貨物代碼等。在顯示重量時(shí),如果數(shù)碼管沒(méi)有足夠的位數(shù),那么稱量物體重量的精度必受到限制,所以此方案需要較多的數(shù)碼管接入電路中。這樣在處理輸入輸出接口時(shí)需要另行擴(kuò)展足夠多的I/O接口供數(shù)碼管使用,比較麻煩。
方案三 前端信號(hào)處理時(shí),選用放大、信號(hào)轉(zhuǎn)換等措施來(lái)增加信號(hào)采集強(qiáng)度但會(huì)增加相應(yīng)的設(shè)計(jì)成本;顯示方面采用具有字符圖文顯示功能的LCD顯示器。這種方案不僅加強(qiáng)了人機(jī)交換的能力,而且滿足設(shè)計(jì)要求,可以顯示購(gòu)物清單、所稱量的物體信息等相關(guān)內(nèi)容,當(dāng)需要增加擴(kuò)展功能時(shí)可以通過(guò)切換液晶顯示界面的方式來(lái)實(shí)現(xiàn)。
結(jié)構(gòu)簡(jiǎn)圖如下圖3所示:

3帶有鍵盤(pán)輸入及液晶顯示的結(jié)構(gòu)簡(jiǎn)圖


鑒于上述三種方案的優(yōu)缺點(diǎn),本系統(tǒng)在設(shè)計(jì)時(shí)充分考慮到系統(tǒng)的實(shí)用性及成本的可行性的前提下,設(shè)計(jì)完成了最終的電子稱方案,最終的硬件設(shè)計(jì)方案圖如圖4所示,




3系統(tǒng)設(shè)計(jì)硬件框圖

2.2系統(tǒng)元器件選型及器件參數(shù)介紹2.2.1單片機(jī)選型

單片機(jī)的選擇在整個(gè)系統(tǒng)設(shè)計(jì)中至關(guān)重要,要滿足大內(nèi)存、高速率、通用性、價(jià)格便宜等要求,鑒于以上考慮本課題選擇ST89C52作為整個(gè)系統(tǒng)的主控芯片。

ST89C52是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含8k Bytes ISP(In-system programmable)的可反復(fù)擦寫(xiě)10000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu)[1],芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的ST89C52可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案。ST89C52芯片具有以下特性[2]:

①指令集和芯片引腳與Intel公司的8051兼容;

②8KB片內(nèi)在系統(tǒng)可編程Flash程序存儲(chǔ)器;

③時(shí)鐘頻率為0~33MHz;

④128字節(jié)片內(nèi)隨機(jī)讀寫(xiě)存儲(chǔ)器(RAM);

⑤32個(gè)可編程輸入/輸出引腳;

⑥2個(gè)16位定時(shí)/計(jì)數(shù)器;

⑦6個(gè)中斷源,2級(jí)優(yōu)先級(jí);

⑧全雙工串行通信接口;

⑨監(jiān)視定時(shí)器;

⑩2個(gè)數(shù)據(jù)指針。

ST89C52單片機(jī)的40個(gè)引腳中有2個(gè)專用于主電源引腳,2個(gè)外接晶振的引腳,4個(gè)控制或與其它電源復(fù)用的引腳,以及32條輸入輸出I/O引腳。

ST89C52單片機(jī)引腳圖如圖4所示:



圖4 ST89C52單片機(jī)引腳圖
2.2.2傳感器選擇   
壓電傳感器是一種典型的有源傳感器,又稱自發(fā)電式傳感器。其工作原理是基于某些材料受力后在其相應(yīng)的特定表面產(chǎn)生電荷的壓電效應(yīng)。
壓電傳感器體積小、重量輕、結(jié)構(gòu)簡(jiǎn)單、工作可靠,適用于動(dòng)態(tài)力學(xué)量的測(cè)量,不適合測(cè)頻率太低的被測(cè)量,更不能測(cè)靜態(tài)量。目前多用于加速度和動(dòng)態(tài)力或壓力的測(cè)量。壓電器件的弱點(diǎn):高內(nèi)阻、小功率。功率小,輸出的能量微弱,電纜的分布電容及噪聲干擾影響輸出特性,這對(duì)外接電路要求很高。
電阻應(yīng)變式傳感器是一種利用電阻應(yīng)變效應(yīng),將各種力學(xué)量轉(zhuǎn)換為電信號(hào)的結(jié)構(gòu)型傳感器。電阻應(yīng)變片式電阻應(yīng)變式傳感器的核心元件,其工作原理是基于材料的電阻應(yīng)變效應(yīng),電阻應(yīng)變片即可單獨(dú)作為傳感器使用,又能作為敏感元件結(jié)合彈性元件構(gòu)成力學(xué)量傳感器。
導(dǎo)體的電阻隨著機(jī)械變形而發(fā)生變化的現(xiàn)象叫做電阻應(yīng)變效應(yīng)。電阻應(yīng)變片把機(jī)械應(yīng)變信號(hào)轉(zhuǎn)換為△R/R后,由于應(yīng)變量及相應(yīng)電阻變化一般都很微小,難以直接精確測(cè)量,且不便處理。因此,要采用轉(zhuǎn)換電路把應(yīng)變片的△R/R變化轉(zhuǎn)換成電壓或電流變化。其轉(zhuǎn)換電路常用測(cè)量電橋。
直流電橋的特點(diǎn)是信號(hào)不會(huì)受各元件和導(dǎo)線的分布電感及電容的影響,抗干擾能力強(qiáng),但因機(jī)械應(yīng)變的輸出信號(hào)小,要求用高增益和高穩(wěn)定性的放大器放大。
圖5為一直流供電的平衡電阻電橋,接直流電源E:










   


圖5 傳感器內(nèi)部連接圖
當(dāng)電橋輸出端接無(wú)窮大負(fù)載電阻時(shí),可視輸出端為開(kāi)路,此時(shí)直流電橋稱為電壓橋,即只有電壓輸出。
當(dāng)忽略電源的內(nèi)阻時(shí),由分壓原理有:

=                                   (2.1)

當(dāng)滿足條件R1R3=R2R4時(shí),即
(2.2)

=0,即電橋平衡。式(2.2)稱平衡條件。
應(yīng)變片測(cè)量電橋在測(cè)量前使電橋平衡,從而使測(cè)量時(shí)電橋輸出電壓只與應(yīng)變片感受的應(yīng)變所引起的電阻變化有關(guān)。
若差動(dòng)工作,即R1=R-△R,R2=R+△R,R3=R-△R,R4=R+△R,按式(2.1),則電橋輸出為


                                       (2.3)

應(yīng)變片式傳感器有如下特點(diǎn):
(1)應(yīng)用和測(cè)量范圍廣,應(yīng)變片可制成各種機(jī)械量傳感器。
(2)分辨力和靈敏度高,精度較高。
(3)結(jié)構(gòu)輕小,對(duì)試件影響小, 對(duì)復(fù)雜環(huán)境適應(yīng)性強(qiáng),可在高溫、高壓、強(qiáng)磁場(chǎng)等特殊環(huán)境中使用,頻率響應(yīng)好。
(4)商品化,使用方便,便于實(shí)現(xiàn)遠(yuǎn)距離、自動(dòng)化測(cè)量[5]。
通過(guò)對(duì)壓力傳感器與電阻應(yīng)變式傳感器比較分析,最終選擇了第二種方案。題目要求稱重范圍0~5Kg,滿量程量誤差不大于0.005Kg,考慮到秤臺(tái)自重、振動(dòng)和沖擊分量,還要避免超重?fù)p壞傳感器,所以傳感器量程必須大于額定稱重5Kg。我們選擇的是電阻應(yīng)變片壓力傳感器,量程為5Kg,精度為0.01% ,滿足本系統(tǒng)的精度要求。
2.2.3 顯示器選擇

方案一 數(shù)碼管顯示

數(shù)碼管是一種半導(dǎo)體發(fā)光器件,其基本單元是發(fā)光二極管。數(shù)碼管按段數(shù)分為七段數(shù)碼管和八段數(shù)碼管,八段數(shù)碼管比七段數(shù)碼管多一個(gè)發(fā)光二極管單元(多一個(gè)小數(shù)點(diǎn)顯示);按能顯示多少個(gè)“8”可分為1位、2位、4位等等數(shù)碼管;按發(fā)光二極管單元連接方式分為共陽(yáng)極數(shù)碼管和共陰極數(shù)碼管。共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接到一起形成公共陽(yáng)極(COM)的數(shù)碼管。共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管。共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線GND上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮。當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就不亮。

數(shù)碼管顯示信息有限,當(dāng)顯示信息較多時(shí)需要多個(gè)數(shù)碼管級(jí)聯(lián)方可,這樣會(huì)造成硬件連接復(fù)雜,成本增加;數(shù)碼管對(duì)大部分字符不能很好的顯示,動(dòng)態(tài)掃描時(shí)處理不好易出現(xiàn)閃爍現(xiàn)象。

方案二 LCD字符液晶顯示

采用點(diǎn)陣字符型 LCD 液晶顯示,液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富等特點(diǎn),現(xiàn)在字符型液晶顯示模塊已經(jīng)是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的信息顯示器件,但采用LCD液晶顯示會(huì)造成設(shè)計(jì)成本增加。

LCD1602可以顯示2行 16 個(gè)字符,有 8 位數(shù)據(jù)總線 D0-D7,和 RS、R/W、 EN 三個(gè)控制端口,工作電壓為 5V,并且?guī)в凶址麑?duì)比度調(diào)節(jié)和背光[4]。

具體引腳說(shuō)明如表圖6所示。

圖6 LCD1602字符液晶引腳定義

LCD1602 液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器(CGROM)已經(jīng)存儲(chǔ)了 160 個(gè)不同 的點(diǎn)陣字符圖形,如表 1 所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、 常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,它的讀寫(xiě)操作、 屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。

最后綜合了多方面因素的考慮采用了方案二,選擇 LCD1602 顯示器作為系統(tǒng)的顯示界面。

2.2.4 AD轉(zhuǎn)換芯片選擇

HX711是一款專為高精度電子秤而設(shè)計(jì)的24位A/D轉(zhuǎn)換器芯片。與同類型其它芯片相比,該芯片集成了包括穩(wěn)壓電源、片內(nèi)時(shí)鐘振蕩器等其它同類型芯片所需要的外圍電路,具有集成度高、響應(yīng)速度快、抗干擾性強(qiáng)等優(yōu)點(diǎn)。降低了電子秤的整機(jī)成本,提高了整機(jī)的性能和可靠性。該芯片與后端MCU 芯片的接口和編程非常簡(jiǎn)單,所有控制信號(hào)由管腳驅(qū)動(dòng),無(wú)需對(duì)芯片內(nèi)部的寄存器編程。輸入選擇開(kāi)關(guān)可任意選取通道A 或通道B,與其內(nèi)部的低噪聲可編程放大器相連。通道A 的可編程增益為128 或64,對(duì)應(yīng)的滿額度差分輸入信號(hào)幅值分別為±20mV或±40mV。通道B 則為固定的64 增益,用于系統(tǒng)參數(shù)檢測(cè)。芯片內(nèi)提供的穩(wěn)壓電源可以直接向外部傳感器和芯片內(nèi)的A/D 轉(zhuǎn)換器提供電源,系統(tǒng)板上無(wú)需另外的模擬電源。芯片內(nèi)的時(shí)鐘振蕩器不需要任何外接器件。上電自動(dòng)復(fù)位功能簡(jiǎn)化了開(kāi)機(jī)的初始化過(guò)程。芯片管腳圖如圖7所示。

圖7 HX711管腳定義

HX711典型應(yīng)用電路如圖8所示。

圖8 HX711典型應(yīng)用電路

3系統(tǒng)硬件電路設(shè)計(jì)3.1系統(tǒng)電源電路設(shè)計(jì)

由于該系統(tǒng)中 51 單片機(jī)及 AD 轉(zhuǎn)換芯片及液晶顯示器所需供電電壓均為 5V 電壓,所以要保證系統(tǒng)穩(wěn)定可靠的工作,需要設(shè)計(jì)一個(gè)可以穩(wěn)定提供 5V 電壓的供電系統(tǒng)。本設(shè)計(jì)采用USB供電方式,USB 接口供電方便程序調(diào)試,電源輸接口加上LED 電源指示燈,用來(lái)判定電源是否正常工作。該系統(tǒng)電源電路設(shè)計(jì)如圖 11 所示。

3.3單片機(jī)控制電路設(shè)計(jì)

系統(tǒng)主控電路由STC89C52單片機(jī)及晶振電路和復(fù)位電路組成,該電路作為整個(gè)系統(tǒng)功能實(shí)現(xiàn)的核心單元,其連接方式如圖14所示。

圖14單片機(jī)主控電路

晶振全稱為晶體振蕩器,其作用在于產(chǎn)生原始的時(shí)鐘頻率,這個(gè)頻率經(jīng)過(guò)頻率發(fā)生器的放大或縮小后就成了電腦中各種不同的總線頻率。晶振一般叫做晶體諧振器,是一種機(jī)電器件,是用電損耗很小的石英晶體經(jīng)精密切割磨削并鍍上電極焊上引線做成。這種晶體有一個(gè)很重要的特性,如果給它通電,它就會(huì)產(chǎn)生機(jī)械振蕩,反之,如果給它機(jī)械力,它又會(huì)產(chǎn)生電,這種特性叫機(jī)電效應(yīng)。他們有一個(gè)很重要的特點(diǎn),其振蕩頻率與他們的形狀,材料,切割方向等密切相關(guān)。由于石英晶體化學(xué)性能非常穩(wěn)定,熱膨脹系數(shù)非常小,其振蕩頻率也非常穩(wěn)定,由于控制幾何尺寸可以做到很精密,因此,其諧振頻率也很準(zhǔn)確。根據(jù)石英晶體的機(jī)電效應(yīng),我們可以把它等效為一個(gè)電磁振蕩回路,即諧振回路。他們的機(jī)電效應(yīng)是機(jī)-電-機(jī)-電..的不斷轉(zhuǎn)換,由電感和電容組成的諧振回路是電場(chǎng)-磁場(chǎng)的不斷轉(zhuǎn)換。在電路中的應(yīng)用實(shí)際上是把它當(dāng)作一個(gè)高Q值的電磁諧振回路。由于石英晶體的損耗非常小,即Q值非常高,做振蕩器用時(shí),可以產(chǎn)生非常穩(wěn)定的振蕩,作濾波器用,可以獲得非常穩(wěn)定和陡削的帶通或帶阻曲線[10]。

復(fù)位電路是用來(lái)讓單片機(jī)返回到初始狀態(tài)的輔助電路,其作用是當(dāng)單片機(jī)程序跑飛或系統(tǒng)出現(xiàn)死機(jī)狀態(tài)時(shí)可以讓系統(tǒng)從新恢復(fù)工作。本系統(tǒng)復(fù)位電路的設(shè)計(jì)為上電復(fù)位復(fù)位方式。按鍵復(fù)位就沒(méi)有太大必要使用看,所以沒(méi)有設(shè)計(jì)按鍵復(fù)位。

3.4系統(tǒng)顯示電路設(shè)計(jì)

顯示部分采用LCD1602液晶顯示模塊,液晶板上排列著若干 5×7或 5×10點(diǎn)陣的字符顯示位,每個(gè)顯示位可顯示1個(gè)字符,從規(guī)格上分為每行 8、16、20、24、32、40位,有一行、兩行及四行三類。其與單片機(jī)的連接電路如圖15所示

圖15系統(tǒng)狀態(tài)顯示電路圖

     1腳和2腳為液晶1602地和電源引腳,3腳為背光調(diào)節(jié)引腳,通過(guò)10K電位器接地,背光可通過(guò)電位器來(lái)調(diào)節(jié)亮度;4腳、5腳、6腳為液晶片選控制引腳,分別連接到單片機(jī)的P2.5、P2.6、P2,7端口,7~14腳為數(shù)據(jù)接口,與單片機(jī)的P0口相連實(shí)現(xiàn)數(shù)據(jù)的傳輸,15、16、腳為液晶的背光控制腳,分別接到電源和地[9]。


3.5超重報(bào)警提示電路設(shè)計(jì)

報(bào)警指示電路用來(lái)在稱重測(cè)量超出最高值時(shí)報(bào)警提示,以免重量太高的情況下?lián)p壞傳感器。報(bào)警指示電路由PNP三極管9S8550驅(qū)動(dòng)蜂鳴器來(lái)實(shí)現(xiàn),單片機(jī)IO口控制三極管的基極,當(dāng)單片機(jī)的IO口輸出為低電平時(shí),三極管導(dǎo)通,蜂鳴器的正極與電源接通,蜂鳴器通電發(fā)出報(bào)警聲,當(dāng)單片機(jī)IO口輸出高電平時(shí),三極管截止,蜂鳴器停止報(bào)警。報(bào)警指示電路如圖16所示。

圖16報(bào)警指示電路

3.6按鍵輸入電路設(shè)計(jì)

按鍵輸入電路用來(lái)在電子稱測(cè)量過(guò)程中輸入單價(jià)值,按鍵輸入電路采用4*4矩陣鍵盤(pán)實(shí)現(xiàn),矩陣鍵盤(pán)電路如圖17所示。

圖17按鍵輸入電路

電子稱按鍵功能分配如下表所示:

            

此電子秤是開(kāi)機(jī)檢測(cè)托盤(pán)重量,并將托盤(pán)重量清零(即電子秤每次開(kāi)機(jī)后檢測(cè)托盤(pán)重量,并程序中自動(dòng)將托盤(pán)重量保存在一個(gè)變量中,稱量過(guò)程中每次都將獲得的重量減去托盤(pán)重量,而得到所要稱量物體的真正的重量),

計(jì)算功能:在正確輸入了單價(jià)之后,按下計(jì)算按鍵,將會(huì)計(jì)算出金額,并在液晶顯示器上顯示出重量、單價(jià)、總價(jià)。

4 系統(tǒng)軟件設(shè)計(jì)

本電子稱設(shè)計(jì)采用C語(yǔ)言編程,編譯環(huán)境為keil UV3。

keil c51 是美國(guó)Keil Software 公司出品的51 系列兼容單片機(jī)C 語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),和匯編相比,C 在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),因而易學(xué)易用。

Keil c51 軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全Windows 界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到keil c51 生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。

Keil C51 可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開(kāi)發(fā)流程。開(kāi)發(fā)人員可用IDE 本身或其它編輯器編輯C 或匯編源文件,然后分別有C51 及A51 編輯器編譯連接生成單片機(jī)可執(zhí)行的二進(jìn)制文件(.HEX),然后通過(guò)單片機(jī)的燒寫(xiě)軟件將HEX 文件燒入單片機(jī)內(nèi)。軟件主要三個(gè)方面:一是初始化系統(tǒng);二是按鍵檢測(cè);三是數(shù)據(jù)采集、數(shù)據(jù)處理并進(jìn)行顯示。這三個(gè)方面的操作分別在主程序中來(lái)進(jìn)行。程序采用模塊化的結(jié)構(gòu),這樣程序結(jié)構(gòu)清楚,易編程和易讀性好,也便于調(diào)試和修改。

4.1系統(tǒng)主程序軟件流程圖
系統(tǒng)軟件部分主程序流程圖如圖20所示。
圖20 系統(tǒng)主程序流程圖
4.2系統(tǒng)顯示部分流程圖
顯示子程序主要是來(lái)判斷是否需要顯示,以及如何去顯示,也是十分重要的程序之一。設(shè)計(jì)流程圖如圖21所示。

圖21 系統(tǒng)顯示部分流程圖
4.3系統(tǒng)按鍵檢測(cè)部分流程圖
鍵盤(pán)電路設(shè)計(jì)成4X4矩陣式,在程序中可以先判斷按鍵編碼,然后根據(jù)編碼將鍵盤(pán)代表的數(shù)值送到相應(yīng)的存儲(chǔ)單元,再進(jìn)行功能選擇或數(shù)據(jù)處理。設(shè)計(jì)流程圖如圖22所示。
圖22 按鍵檢測(cè)部分流程圖
5 系統(tǒng)整體調(diào)試
5.1硬件電路調(diào)試中遇到的問(wèn)題
1、電子電路的設(shè)計(jì)中對(duì)各種影響因素的考慮不夠完全,比如在對(duì)過(guò)電壓情況的處理中未作防范措施。
2、系統(tǒng)設(shè)計(jì)不夠優(yōu)化,有待改善。比如系統(tǒng)的超量程信號(hào)直接由單片機(jī)送入報(bào)警電路,沒(méi)有設(shè)計(jì)保護(hù)電路再入單片機(jī)處理后送入報(bào)警電路。
3、沒(méi)有擴(kuò)展更多電路,如溫度顯示功能,通訊接口電路與上位機(jī)(PC機(jī))進(jìn)行通訊,上位機(jī)顯示功能從而將大量的商品數(shù)據(jù)存于上位機(jī),然后通過(guò)串口或并口通訊與電子稱相連,達(dá)到遠(yuǎn)距離控制的目的。
4、對(duì)各種實(shí)用芯片價(jià)格了解不夠,選擇上任有欠缺,如所選的稱重傳感器價(jià)格較貴。
這些都為我今后的學(xué)習(xí)和工作留下了積極的影響。
5.2系統(tǒng)實(shí)物調(diào)試效果圖

經(jīng)過(guò)不懈的努力和導(dǎo)師的細(xì)心指導(dǎo),實(shí)物最終得以調(diào)試成功,最終完成的實(shí)物效果圖如圖23所示。

   


     
圖23 效果圖

5.3系統(tǒng)設(shè)計(jì)總結(jié)

在此畢業(yè)設(shè)計(jì)過(guò)程中,鞏固了我在大學(xué)4年內(nèi)學(xué)過(guò)的知識(shí),尤其是單片機(jī)和C語(yǔ)言編程方面的知識(shí),同時(shí)通過(guò)這次畢設(shè)提高了單片機(jī)編程的能力,尤其是獲得的軟件調(diào)試經(jīng)驗(yàn),同時(shí)了解到了其它相關(guān)領(lǐng)域的知識(shí),對(duì)今后的工作學(xué)習(xí)有著極大的幫助。

由于時(shí)間太倉(cāng)促,經(jīng)驗(yàn)不足,理論方面也相應(yīng)的存在不足,加上條件有限,仍存在著一些設(shè)計(jì)方面的問(wèn)題,個(gè)人技能也有待提高。理論知識(shí)還要鞏固加強(qiáng)。但是寶貴的實(shí)踐經(jīng)驗(yàn)還是對(duì)自己的提高有著極大的幫助。


附錄
附錄1系統(tǒng)整體電路圖




致 謝
該電子秤控制系統(tǒng)的設(shè)計(jì)及論文的撰寫(xiě)是在我的導(dǎo)師老師的精心指導(dǎo)和悉心關(guān)懷下完成的,從論文的選題、研究、撰寫(xiě)到定稿,都得到了?老師細(xì)心指導(dǎo)。他寬厚待人,對(duì)學(xué)生關(guān)懷備至,在工作上精益求精,對(duì)學(xué)生嚴(yán)格要求,鼓勵(lì)學(xué)生學(xué)以致用,敢于實(shí)踐,勇于創(chuàng)新,在實(shí)踐中發(fā)現(xiàn)問(wèn)題、解決問(wèn)題。?老師具有豐富的科研經(jīng)驗(yàn)與理論水平,其開(kāi)明的學(xué)術(shù)思想、求實(shí)的科研作風(fēng)和對(duì)科學(xué)研究及發(fā)展趨勢(shì)的深刻認(rèn)識(shí)給我以極大的影響、啟迪和熏陶,令我受益匪淺。該設(shè)計(jì)及論文的圓滿完成是和?老師的細(xì)心關(guān)懷分不開(kāi)的。
在系統(tǒng)的設(shè)計(jì)和論文的研究工作中無(wú)不傾注著各位老師的心血和辛勤的汗水,各位老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、淵博的知識(shí)、生動(dòng)而滿富激情的授課方式,讓我四年里學(xué)到了扎實(shí)的理論知識(shí)。從各位尊敬的老師身上,我不僅學(xué)到了扎實(shí)的專業(yè)知識(shí)和豐富的實(shí)踐技能,也學(xué)到了很多做人的道理。在此,向給予我指導(dǎo)和幫助的各位老師致以最衷心的感謝和深深的敬意!
在這四年多的學(xué)習(xí)和研究工作中,也得到了學(xué)院的師兄弟們的關(guān)心和熱心幫助,在此向他們表示由衷的感謝!
最后,衷心感謝在百忙中評(píng)閱論文和參加答辯的各位專家、教授和同學(xué)!


單片機(jī)源碼:


  1. <font color="rgb(0, 0, 0)">#include "main.h"
  2. #include "LCD1602.h"
  3. #include "HX711.h"

  4. unsigned long HX711_Buffer = 0;
  5. unsigned long Weight_Maopi = 0,Weight_Shiwu = 0;
  6. char Price_Count = 0;
  7. unsigned char KEY_NUM = 0;
  8. unsigned char Price_Buffer[3] = {0x00,0x00,0x00};
  9. unsigned long Money = 0;
  10. bit Flag_OK = 0;

  11. //****************************************************
  12. //主函數(shù)
  13. //****************************************************
  14. void main()
  15. {
  16.               char k = 10 ;
  17.               Init_LCD1602();                                                                                                                              //初始化LCD1602

  18.               LCD1602_write_com(0x80);                                                                                    //指針設(shè)置
  19.               LCD1602_write_word(" Hello Welcome");                                          //開(kāi)機(jī)畫(huà)面第一行
  20.               Delay_ms(800);                            //延時(shí)1s
  21.               LCD1602_write_com(0x80+0x40);                                                        //指針設(shè)置
  22.               LCD1602_write_word("        ");

  23.               Get_Maopi();                                                        //稱毛皮重量
  24.               Delay_ms(1000);                            //延時(shí)1s
  25.   Init_LCD1602();                                                                                                                              //初始化LCD1602 消除之前的顯示內(nèi)容

  26. loop:Price_Count = 0;
  27.               Price_Buffer[0] = 0;
  28.               Price_Buffer[1] = 0;
  29.               Price_Buffer[2] = 0;
  30.               Flag_OK = 0;

  31.               LCD1602_write_com(0x80);                                                                                    //指針設(shè)置
  32.               LCD1602_write_word("    W:     Kg");
  33.             
  34.               LCD1602_write_com(0x80+0x40);                                                        //指針
  35.               LCD1602_write_word("P:  .   Z:     ");

  36.   LCD1602_write_com(0x80+0x40+6);                                                        //指針
  37.               LCD1602_write_data(0x5c);

  38.               LCD1602_write_com(0x80+0x40+15);                                                        //指針
  39.               LCD1602_write_data(0x5c);

  40.             
  41.               Get_Maopi();                                                        //稱毛皮重量

  42.               while(1)
  43.               {
  44.                             if( Flag_OK == 0)
  45.                             {
  46.                                           if( k == 0)
  47.                                                         Get_Weight();                                          //稱重
  48.                                           k--;
  49.                                           if( k < 0)
  50.                                           {
  51.                                                         k = 10;
  52.                                           }
  53.             
  54.                                           //顯示當(dāng)前重量
  55.                                           LCD1602_write_com(0x86);
  56.                                           LCD1602_write_data(Weight_Shiwu/1000 + 0x30);
  57.                                           LCD1602_write_data('.');
  58.                                           LCD1602_write_data(Weight_Shiwu%1000/100 + 0x30);
  59.                                           LCD1602_write_data(Weight_Shiwu%100/10 + 0x30);
  60.                                           LCD1602_write_data(Weight_Shiwu%10 + 0x30);
  61.                             }

  62.                             KEY_NUM = KEY_Scan();

  63.                             if( KEY_NUM != 0x55)                                          //當(dāng)返回的不是初值時(shí)候,確認(rèn)按鍵按下。
  64.                             {
  65.                                           if(KEY_NUM == 16)                                          //數(shù)字A鍵,去皮功能
  66.                                           {
  67.                                                         Get_Maopi();                                          //去皮            
  68.                                           }

  69.                                           if(KEY_NUM == 15)                                          //數(shù)字B鍵清除鍵,二次測(cè)量
  70.                                           {
  71.                                                         goto loop;            
  72.                                           }

  73.                                           if(KEY_NUM == 12)                                          //數(shù)字C輸入單價(jià)錯(cuò)誤時(shí)返回上一步
  74.                                           {
  75.                                                         Price_Count--;
  76.                                                         if( Price_Count < 0)
  77.                                                         {
  78.                                                                       Price_Count = 0;
  79.                                                         }
  80.                                                       
  81.                                                         Price_Buffer[Price_Count] = 0;                                             //清除上一個(gè)輸入的數(shù)據(jù)

  82.                                                         switch(Price_Count)
  83.                                                         {
  84.                                                                       case 0:
  85.                                                                                                   LCD1602_write_com(0x80+0x40+2);
  86.                                                                                                   LCD1602_write_data(' ');
  87.                                                                                                   break;
  88.                                                                       case 1:
  89.                                                                                                   LCD1602_write_com(0x80+0x40+3);
  90.                                                                                                   LCD1602_write_data(' ');
  91.                                                                                                   break;
  92.                                                                       case 2:
  93.                                                                                                   LCD1602_write_com(0x80+0x40+5);
  94.                                                                                                   LCD1602_write_data(' ');
  95.                                                                                                   break;
  96.                                                                       default : break;
  97.                                                         }            
  98.                                           }

  99.                                           if(KEY_NUM == 13)                                          //數(shù)字D鍵,計(jì)算總價(jià)
  100.                                           {
  101.                                                         Money = Price_Buffer[0] * 100 + Price_Buffer[1] * 10 + Price_Buffer[2];            
  102.                                                         Money = Money * Weight_Shiwu / 1000;
  103.                                                         LCD1602_write_com(0x80+0x40+10);
  104.                                                         LCD1602_write_data(Money/1000 + 0x30);                                         
  105.                                                         LCD1602_write_data(Money%1000/100 + 0x30);
  106.                                                         LCD1602_write_data(Money%100/10 + 0x30);
  107.                                                         LCD1602_write_data('.');
  108.                                                         LCD1602_write_data(Money%10 + 0x30);
  109.                                                       
  110.                                                         Flag_OK = 1;                                                                     
  111.                                           }

  112.                                           if(KEY_NUM >= 0 && KEY_NUM <= 9)                                                                        //顯示輸入的價(jià)格值
  113.                                           {
  114.                                                         Price_Buffer[Price_Count] = KEY_NUM;
  115.                   
  116.                                                       
  117.                                                         switch(Price_Count)
  118.                                                         {
  119.                                                                       LCD1602_write_com(0x80+0x40);                                                        //指針
  120.                        LCD1602_write_word("P:  .   Z:     ");
  121.                                                                      
  122.                                                                       case 0:
  123.                                                                                                   LCD1602_write_com(0x80+0x40+2);
  124.                                                                                                   LCD1602_write_data(Price_Buffer[0] + 0x30);
  125.                                                                                                   break;
  126.                                                                       case 1:
  127.                                                                                                   LCD1602_write_com(0x80+0x40+3);
  128.                                                                                                   LCD1602_write_data(Price_Buffer[1] + 0x30);
  129.                                                                                                   break;
  130.                                                                       case 2:
  131.                                                                                                   LCD1602_write_com(0x80+0x40+5);
  132.                                                                                                   LCD1602_write_data(Price_Buffer[2] + 0x30);
  133.                                                                                                   break;
  134.                                                                       default : break;
  135.                                                         }
  136.             
  137.                                                         Price_Count++;
  138.             
  139.                                                         if( Price_Count >= 3)
  140.                                                         {
  141.                                                                       Price_Count = 3;
  142.                                                         }
  143.                                           }

  144.                             }

  145.               }
  146. }

  147. //****************************************************
  148. //矩陣鍵盤(pán)掃描
  149. //****************************************************
  150. unsigned char KEY_Scan()
  151. {
  152.               unsigned char temp = 0;
  153.               unsigned char com = 0x55 , com1 = 0 , com2 = 0;
  154.               P3=0xf0;
  155.               if(P3!=0xf0)
  156.               {
  157.                             com1=P3;
  158.                             P3=0x0f;
  159.                             com2=P3;      
  160.               }
  161.               P3=0xf0;
  162.     while(P3!=0xf0);               
  163.               temp=com1|com2;
  164.               if(temp==0xee)com=1;//數(shù)字1
  165.               if(temp==0xed)com=4;//數(shù)字4
  166.               if(temp==0xeb)com=7;//數(shù)字7
  167.               if(temp==0xe7)com=11;//備用鍵*號(hào)鍵
  168.               if(temp==0xd7)com=0;//數(shù)字0
  169.               if(temp==0xb7)com=14;//備用鍵*號(hào)鍵
  170.             

  171.               if(temp==0xde)com=2; //數(shù)字2
  172.               if(temp==0xdd)com=5; //數(shù)字5
  173.               if(temp==0xdb)com=8;//數(shù)字8

  174.               if(temp==0xbe)com=3;//數(shù)字3
  175.               if(temp==0xbd)com=6; //數(shù)字6
  176.               if(temp==0xbb)com=9;//數(shù)字9

  177.               if(temp==0x7e)com=16;//數(shù)字A鍵,去皮功能            
  178.               if(temp==0x7d)com=15;//數(shù)字B鍵清除鍵,二次測(cè)量
  179.               if(temp==0x7b)com=12;//數(shù)字C輸入單價(jià)錯(cuò)誤時(shí)返回上一步
  180.               if(temp==0x77)com=13;//數(shù)字D鍵,計(jì)算總價(jià)            
  181.               return(com);
  182. }

  183. //****************************************************
  184. //稱重
  185. //****************************************************
  186. void Get_Weight()
  187. {
  188.               HX711_Buffer = HX711_Read();
  189.               HX711_Buffer = HX711_Buffer/100;
  190.               if(HX711_Buffer > Weight_Maopi)                                         
  191.               {
  192.                             Weight_Shiwu = HX711_Buffer;
  193.                             Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                                                        //獲取實(shí)物的AD采樣數(shù)值。
  194.             
  195.                             Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/4.40+0.05);               //計(jì)算實(shí)物的實(shí)際重量
  196.                                                                                                                                                                                                                                                             //因?yàn)椴煌膫鞲衅魈匦郧€不一樣,因此,每一個(gè)傳感器需要矯正這里的4.30這個(gè)除數(shù)。
  197.                                                                                                                                                                                                                                                             //當(dāng)發(fā)現(xiàn)測(cè)試出來(lái)的重量偏大時(shí),增加該數(shù)值。
  198.                                                                                                                                                                                                                                                             //如果測(cè)試出來(lái)的重量偏小時(shí),減小改數(shù)值。
  199.                                                                                                                                                                                                                                                             //該數(shù)值一般在4.0-5.0之間。因傳感器不同而定。
  200.                                                                                                                                                                                                                                                             //+0.05是為了四舍五入百分位
  201.                             Buzzer = 1;                                                        //關(guān)閉警報(bào)
  202.               }
  203. //              else if(HX711_Buffer < Weight_Maopi - 30)
  204. //              {
  205. //                            Buzzer = 0;                                                        //負(fù)重量報(bào)警
  206. //              }
  207. //              else if(HX711_Buffer > Weight_Maopi + 24970)                            //大于5Kg的最大量程,報(bào)警            
  208. //              {
  209. //                            Buzzer = 0;
  210. //              }

  211.               if(Weight_Shiwu > 5000 || HX711_Buffer < Weight_Maopi - 30)
  212.               {
  213.                             Buzzer = 0;            
  214.               }
  215.               else
  216.               {
  217.                             Buzzer = 1;
  218.               }

  219.             
  220. }

  221. //****************************************************
  222. //獲取毛皮重量
  223. //****************************************************
  224. void Get_Maopi()
  225. {
  226.               HX711_Buffer = HX711_Read();
  227.               Weight_Maopi = HX711_Buffer/100;                           
  228. }

  229. //****************************************************
  230. //MS延時(shí)函數(shù)(12M晶振下測(cè)試)
  231. //****************************************************
  232. void Delay_ms(unsigned int n)
  233. {
  234.               unsigned int  i,j;
  235.               for(i=0;i<n;i++)
  236.                             for(j=0;j<123;j++);
  237. }</font>
復(fù)制代碼



完整的Word格式文檔51黑下載地址:

基于單片機(jī)的電子稱設(shè)計(jì).doc (2.4 MB, 下載次數(shù): 27)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:370073 發(fā)表于 2018-7-12 21:07 | 顯示全部樓層
好資料
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表