畢業(yè)設(shè)計(jì)-基于51單片機(jī)的電子秤設(shè)計(jì)_第1頁
畢業(yè)設(shè)計(jì)-基于51單片機(jī)的電子秤設(shè)計(jì)_第2頁
畢業(yè)設(shè)計(jì)-基于51單片機(jī)的電子秤設(shè)計(jì)_第3頁
畢業(yè)設(shè)計(jì)-基于51單片機(jī)的電子秤設(shè)計(jì)_第4頁
畢業(yè)設(shè)計(jì)-基于51單片機(jī)的電子秤設(shè)計(jì)_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

緒論1.1課題研究的背景和意義1.1.1研究的背景隨著新的計(jì)量科學(xué)技術(shù)在近幾年不斷的出現(xiàn),傳統(tǒng)機(jī)械結(jié)構(gòu)的秤已經(jīng)逐漸不能滿足人們的生活要求而被慢慢淘汰了,比如十幾年前常見的磅秤、桿秤,現(xiàn)在已經(jīng)很少再能見到了。取而代之的則是有著各種形狀、操作更加方便,更加人性化,稱重更加快速,精準(zhǔn)的電子秤。目前電子秤正向著高精度、高穩(wěn)定性、易于攜帶的方向發(fā)展著,這使得國內(nèi)外對(duì)于高精度,高性能的模擬信號(hào)處理器的需求與日俱增。如今,國內(nèi)外對(duì)于電子秤的需求向著小型化、智能化、模塊集成化方向發(fā)展[1]。如今,電子衡器的技術(shù)性能的趨向是高速率、高可靠性、高準(zhǔn)確度、高穩(wěn)定性[2];電子衡器的功能趨向是智能性,對(duì)于信息的可控性方向增強(qiáng);電子衡器的使用性能則是朝著人性化方向發(fā)展[3]。1.1.2研究的意義稱重技術(shù)作為一種重要的測量手段,從古至今一直被人們所重視著,稱重技術(shù)被普遍應(yīng)用于社會(huì)的各個(gè)角落,與我們的日常生活密不可分[4]。目前電子衡器中最常見和常用的一種是電子秤,電子秤由于其結(jié)構(gòu)和使用地點(diǎn)的不同可以分為很多種,電子衡器的技術(shù)水平高低直接影響著社會(huì)的經(jīng)濟(jì)效益。電子秤與傳統(tǒng)的機(jī)械秤相比。主要有以下優(yōu)點(diǎn):(1)電子秤的結(jié)構(gòu)比機(jī)械秤簡單,體積更小,而且?guī)缀醪皇馨惭b地點(diǎn)的限制[5]。(2)稱重傳感器可以做成密封型的,是電子秤不易受到腐蝕,能在更加惡劣的環(huán)境下工作。(3)電子秤的稱重信號(hào)不但可以進(jìn)行遠(yuǎn)距離傳送,而且可以對(duì)數(shù)據(jù)進(jìn)行處理,實(shí)現(xiàn)自動(dòng)化稱重。(4)傳感器對(duì)數(shù)據(jù)的反應(yīng)速度更快,提高了電子秤的稱重速度。(5)由于電子秤沒有刀口和刀墊做為支點(diǎn),所以電子秤的穩(wěn)定性更加好,減少了使用過程中的磨損,提高了使用壽命。(6)精度比機(jī)械秤更高。由于電子秤存在著上述的種種優(yōu)點(diǎn),所以電子秤已經(jīng)成為了當(dāng)今衡器發(fā)展的主流。在許多歐美的先進(jìn)工業(yè)國家里,電子秤已經(jīng)被普遍的應(yīng)用在各種領(lǐng)域中,并幾乎取代了機(jī)械秤。我國在近20年中,電子秤在自動(dòng)化系統(tǒng)中的運(yùn)用也編的越來越普遍了,各種電子秤也已經(jīng)廣泛的應(yīng)用于食品、交通運(yùn)輸、礦山、石油等領(lǐng)域,用于實(shí)現(xiàn)自動(dòng)化的生產(chǎn)(連續(xù)稱重、自動(dòng)配料、定值控制),這對(duì)產(chǎn)品質(zhì)量的提高和生產(chǎn)率的提高有著非常重大的幫助[7]。1.2國內(nèi)外電子秤發(fā)展及成果隨著新技術(shù)的不斷發(fā)展,電子衡器的技術(shù)也在不斷的進(jìn)步著[6]。從80年代以來,電子衡器的技術(shù)更新越來越快,幾乎每年都有新電子稱重技術(shù)和新的稱重產(chǎn)品出現(xiàn)。平均每5年舊一代的稱重設(shè)備就要被新的所淘汰,新的功能、新的種類都使電子衡器在各種領(lǐng)域不斷的發(fā)展,變得越來越重要。尤其是在動(dòng)態(tài)稱重領(lǐng)域中,出現(xiàn)了許多新的理論和技術(shù),比如迷糊理論應(yīng)用、動(dòng)態(tài)系統(tǒng)理論分析法等。近幾年新的稱重傳感器也不斷的出現(xiàn),電子秤不再是全部使用電阻應(yīng)變式傳感器了,大量程的電子秤更多的開始使用電容式的稱重傳感器,而小量程高精度的電子秤則開始使用了音叉振弦式的傳感器,電磁力傳感器也開始廣泛的使用于電子天平中了。日本的新光電子株式會(huì)社和大和制衡公司已經(jīng)開始大規(guī)模在電子秤生產(chǎn)中使用振弦式的傳感器。但是,由于電阻應(yīng)變式傳感器的技術(shù)比較成熟,所以電阻應(yīng)變式的傳感器仍然是當(dāng)前電子秤的主流傳感器。電阻應(yīng)變式傳感器在近幾年也有著不小的發(fā)展,美國托利都公司推出的新一代電阻應(yīng)變式傳感器已經(jīng)具有自動(dòng)補(bǔ)償和數(shù)據(jù)傳輸?shù)裙δ躘7]。我國在自動(dòng)衡器方面的技術(shù)水平已經(jīng)和國際相差不大,但在產(chǎn)品的工業(yè)設(shè)計(jì)、工藝水平和標(biāo)準(zhǔn)化方面和國際的差距還是較大。我們應(yīng)該對(duì)于如何面對(duì)世貿(mào)組織的要求與國際接軌方面引起足夠的重視。我國的傳感器制造發(fā)展較快,但是在制造用的輔助材料方面國產(chǎn)化較差,電子衡器的發(fā)展很受這些因素的影響,所以應(yīng)該加快材料的國產(chǎn)化。同時(shí),由于使用于復(fù)雜環(huán)境中(易燃易爆、超低溫、超高溫)的電子衡器用戶量大量增長,我國在這方面也應(yīng)該加快發(fā)展[8]。電子衡器有以下幾個(gè)方面的發(fā)展趨勢:(1)普遍采用微處理器和專用集成器件,小體積,低功耗,低成本,易形成工業(yè)化規(guī)?;a(chǎn)。(2)稱重傳感器自動(dòng)貼片、濺射工藝應(yīng)用,向電子化自動(dòng)補(bǔ)償方向發(fā)展。(3)帶計(jì)量檢定標(biāo)記的電子衡器正在興起,使電子衡器的可靠性越來越高。(4)自動(dòng)衡器將成為衡器市場的重要組成部分。(5)在顯示技術(shù)方面為用戶提供數(shù)據(jù)和圖像顯示,CRT,LCD屏幕顯示越來越普及。稱重傳感器的穩(wěn)定性、準(zhǔn)確度和環(huán)境適應(yīng)性不斷的增強(qiáng)而價(jià)格卻在不斷地下降[8]。微電子技術(shù)的不斷發(fā)展使得電子秤的數(shù)據(jù)處理能力不斷增強(qiáng),同時(shí)具有自適應(yīng)和自診斷功能的電子秤也已問世。在法制計(jì)量的管理上,由于新技術(shù)的不斷進(jìn)步使得制造商、立法者和用戶之間越來越需要相互合作和配合。1.3本論文的研究內(nèi)容及結(jié)構(gòu)安排本設(shè)計(jì)實(shí)現(xiàn)的方法是利用應(yīng)變式電阻壓力傳感器在受到外力作用時(shí)產(chǎn)生差動(dòng)信號(hào),然后把差動(dòng)信號(hào)通過處理(放大、A/D轉(zhuǎn)換)后,傳入單片機(jī)對(duì)其進(jìn)行控制,單片機(jī)把數(shù)字信號(hào)再轉(zhuǎn)換回實(shí)際重量后控制液晶顯示屏進(jìn)行顯示重量,如果有設(shè)置單價(jià)則計(jì)算出總價(jià)并顯示,從而完成整個(gè)稱重過程。按照電子秤設(shè)計(jì)的基本要求,本設(shè)計(jì)的電子秤系統(tǒng)結(jié)構(gòu)可分為:數(shù)據(jù)采集、單片機(jī)控制、人機(jī)交互(顯示和鍵盤)模塊、模-數(shù)轉(zhuǎn)換構(gòu)成,模擬信號(hào)放大和電阻應(yīng)變式壓力傳感器組成了數(shù)據(jù)采集模塊。AT89C52單片機(jī)的電路及其外圍電路組成控制模塊。LCD1602顯示和4X4鍵盤組成使用者與電子秤交互模塊。單片機(jī)控制模塊完成對(duì)傳感器采集回來的信號(hào)處理,并且驅(qū)動(dòng)LCD1602顯示模塊和4X4鍵盤模塊實(shí)現(xiàn)人機(jī)交互功能。在拓展功能設(shè)計(jì)上,本電子秤設(shè)計(jì)增加了超過10KG報(bào)警和去皮、計(jì)價(jià)等功能。本論文各個(gè)章節(jié)分別介紹了研究意義、總體方案選型、系統(tǒng)硬件設(shè)計(jì)、系統(tǒng)軟件設(shè)計(jì)和實(shí)際調(diào)試,并在最后對(duì)本次設(shè)計(jì)的過程和結(jié)果進(jìn)行了總結(jié),指出了設(shè)計(jì)過程中的不足和改進(jìn)方向。2系統(tǒng)方案設(shè)計(jì)2.1系統(tǒng)總體設(shè)計(jì)方案比較與論證對(duì)于電子秤的硬件結(jié)構(gòu),我有三種設(shè)計(jì)方案,下面是三種方案的對(duì)比。方案一:使用LED數(shù)碼管作為顯示模塊,顯示物體的稱重重量。配合稱重模塊和自帶模數(shù)轉(zhuǎn)換的單片機(jī)實(shí)現(xiàn)電子秤的功能。優(yōu)點(diǎn):硬件部分簡單,電路上只有輸入和輸出關(guān)系,顯示簡潔。大大減少了編程量。缺點(diǎn):只能簡單的顯示重量,用戶不能輸入信息,無法根據(jù)實(shí)際情況調(diào)整控制參數(shù)。而且LED數(shù)碼管由于顯示的位數(shù)限制,不能完整的顯示單價(jià),總價(jià)等。系統(tǒng)過于簡單,限制了外部拓展。電子秤功能過于單一不能滿足設(shè)計(jì)要求。方案二:使用LED數(shù)碼管作為數(shù)據(jù)輸出顯示模塊,增加4X4矩陣鍵盤用于設(shè)置單價(jià)。優(yōu)點(diǎn):增加了鍵盤輸入人機(jī)交互,使得用戶可以輸入物品單價(jià),從而實(shí)現(xiàn)計(jì)價(jià)的功能。缺點(diǎn):由于數(shù)碼管的顯示位數(shù)的局限性,導(dǎo)致只能顯示單價(jià)和總價(jià)。而且如果使用普通的四位數(shù)碼管的話,顯示物體重量的精度也會(huì)受到顯示位數(shù)的限制,所以如果想要顯示的精確就必須使用較多的數(shù)碼管。在電路設(shè)計(jì)時(shí)就需要增加更多的I/O接口,使接線變得復(fù)雜不美觀。方案三:使用信號(hào)放大和轉(zhuǎn)換處理前端信號(hào),同時(shí)配合使用LCD1602液晶屏作為顯示模塊和鍵盤輸入模塊。通過壓力傳感器產(chǎn)生電壓信號(hào),經(jīng)放大電路把信號(hào)放大后輸入A/D轉(zhuǎn)換芯片進(jìn)行數(shù)據(jù)轉(zhuǎn)換,再將得到的數(shù)字信號(hào)送至單片機(jī)進(jìn)行處理并送入液晶顯示。優(yōu)點(diǎn):不僅滿足了設(shè)計(jì)的要求,而且能夠把單價(jià),總價(jià),重量顯示在顯示屏上,極大的增強(qiáng)了人機(jī)交互的能力。通過信號(hào)處理芯片把信號(hào)放大、轉(zhuǎn)換后送入單片機(jī),由單片機(jī)對(duì)測量的信號(hào)進(jìn)行處理并根據(jù)相應(yīng)的公式轉(zhuǎn)換顯示出被測物體的重量。采用單片機(jī)對(duì)采集的數(shù)據(jù)稍加處理,能通過軟件在一定程度上彌補(bǔ)與調(diào)試硬件所無法避免的數(shù)據(jù)抖動(dòng),使最終所測得的數(shù)據(jù)更可靠、參考性更強(qiáng),而且單片機(jī)的價(jià)錢也不算昂貴。缺點(diǎn):電路較為復(fù)雜,給系統(tǒng)設(shè)計(jì)帶來一定難度。圖2.1LCD顯示的方案鑒于本設(shè)計(jì)要求和成本計(jì)算,在設(shè)計(jì)時(shí)選擇方案三。2.2硬件的方案設(shè)計(jì)與選型2.2.1傳感器傳感器(英文名稱:transducer/sensor)是一種用于檢測的裝置,檢測被測信息將其轉(zhuǎn)換成電信號(hào),或者根據(jù)一定的規(guī)則,將信息轉(zhuǎn)換成別的形式的信息,以便進(jìn)行遠(yuǎn)距離的傳輸、處理、存儲(chǔ)、顯示和控制。實(shí)現(xiàn)自動(dòng)檢測和自動(dòng)控制的第一步是傳感器。壓力傳感器是電子秤中最主要的一個(gè)元器件。因?yàn)樗P(guān)乎著電子秤的量程、精度等性能。市場上使用和出售的電子秤主要使用的壓力傳感器有電容式、電阻應(yīng)變式和壓電式壓力傳感器等。在稱重傳感器的選型時(shí)應(yīng)該充分考慮其精度、靈敏度、穩(wěn)定性、安全等級(jí)、安裝環(huán)境是不是滿足設(shè)計(jì)的要求。再在其中選擇最適合設(shè)計(jì)要求的型號(hào)。以下是三種稱重傳感器的比較:(1)電容式壓力傳感器是把金屬薄膜和一個(gè)固定的電極形成一個(gè)類似電容的結(jié)構(gòu),當(dāng)承受重量時(shí),金屬彈性原件將發(fā)生微小的位移,從而引起電容內(nèi)部的電容量的變化,用外部測量電路得到變化量從而求得重量。這種傳感器的精度和靈敏度高但其壽命一般只有幾年,而且不穩(wěn)定,容易受到外界非人為因素的干擾。(2)壓電式壓力傳感器是利用正壓電效應(yīng)制成的,當(dāng)內(nèi)部晶體受到壓力的時(shí)候,內(nèi)部將產(chǎn)生正、負(fù)電荷的相對(duì)位移,使晶體的兩端生成不同極性(正級(jí)、負(fù)極)的電荷,其密集程度與測量的重量相對(duì)應(yīng),從而進(jìn)行測量。這種傳感器不但穩(wěn)定性好而且精度和靈敏度都很高,但是它的缺點(diǎn)是量程較小,不能用于大噸位的測量,一般使用于醫(yī)療器械上。(3)電阻應(yīng)變式壓力傳感器的原理是粘有電阻應(yīng)變片的彈性元件(一般為金屬)受到重物或者外力而發(fā)生微小形變時(shí)導(dǎo)致電阻值發(fā)生變化,從而用于測量重力。這種傳感器的穩(wěn)定性非常好,可以在比較差的條件中使用,而且其精度和準(zhǔn)確度也不低[9-10]?;诰取⒊杀镜纫?,我最終選擇了CZL-A10KG的電阻應(yīng)變式壓力傳感器。表2.1傳感器技術(shù)參數(shù)

額定載荷(kg)10kg

精度等級(jí)C2絕緣電阻(MΩ)

≥5000(100VDC)綜合誤差(%F.S)0.02激勵(lì)電壓(V)

4~12v(DC)

靈敏度(mv/v)

2±0.01溫度補(bǔ)償范圍(℃

)

-10~+40

非線性(%F.S)

0.03使用溫度范圍(℃)-35~+65滯后(%F.S)

0.03零點(diǎn)溫度影響(%F.S/10℃)

0.03重復(fù)性(%F.S)0.01靈敏度溫度影響(%F.S/10℃)

0.02蠕變(%F.S/30min)

0.02安全過載范圍(%F.S)

120零點(diǎn)輸出(%F.S)

±2極限過載范圍(%F.S)

150輸入阻抗(Ω)

405±5防護(hù)等級(jí)IP65輸出阻抗(Ω)350±5電纜線(屏蔽電纜線)φ3,0.42m根據(jù)上表得出CZL-A10KG電阻應(yīng)變式傳感器的精度為0.02%*10KG=2g。由于使用的是4.5V供電電壓,所以滿量程輸出電壓=4.5V*2mv/v=9mv。也就是當(dāng)稱重重量為0-10KG時(shí),對(duì)應(yīng)的輸出電壓為0-9mv,是一種線性的對(duì)應(yīng)關(guān)系。電阻應(yīng)變式壓力傳感器是由一塊貼有電阻應(yīng)變片的金屬彈性塊和電線構(gòu)成,其內(nèi)部使用的一般是惠更斯電橋[11]。當(dāng)收到重物給予的壓力時(shí),金屬彈性塊就會(huì)帶動(dòng)電阻應(yīng)變片發(fā)生微小形變,導(dǎo)致電阻的阻值發(fā)生變化,使電橋失去平衡,產(chǎn)生差動(dòng)信號(hào),供單片機(jī)控制電路處理[12]。當(dāng)垂直于傳感器的壓力P把金屬彈性元件向下壓時(shí),金屬塊將發(fā)生微小形變,使得貼在上面的電阻應(yīng)變片R1、R3受到壓力彎曲拉伸,阻值增加;R2、R4被壓縮,阻值減小.從而使電橋失去平衡,產(chǎn)生差動(dòng)電壓信號(hào),電壓信號(hào)與作用于傳感器上的P的大小成正比,將重物的壓力轉(zhuǎn)換成相應(yīng)的電信號(hào)輸出,供單片機(jī)進(jìn)行處理。其工作原理圖如下圖所示:圖2.2壓力傳感器工作原理2.2.2放大器和A/D轉(zhuǎn)換由于傳感器輸出的電壓很小一般只有幾毫伏。即使使通過電橋電路轉(zhuǎn)換后的信號(hào)還是不夠被單片機(jī)控制。所以一般都需要放大模塊來放大信號(hào)和對(duì)信號(hào)進(jìn)行模-數(shù)轉(zhuǎn)換,轉(zhuǎn)換成數(shù)字信息送入運(yùn)算器,在控制器的控制下,對(duì)數(shù)據(jù)進(jìn)行基本運(yùn)算和邏輯判斷。方案一:使用差分比例運(yùn)放電路使用三極管搭建一個(gè)差分比例運(yùn)放電路,對(duì)微小的電壓信號(hào)進(jìn)行放大。并需要在后面加上一個(gè)A/D轉(zhuǎn)換模塊,把放大后的模擬信號(hào)轉(zhuǎn)變成數(shù)字型號(hào),送入單片機(jī)控制。一般的運(yùn)放放大效果不是很好,而且電路設(shè)計(jì)較為復(fù)雜。圖2.3差分比例運(yùn)算電路方案二:使用HX711A/D轉(zhuǎn)換模塊對(duì)信號(hào)進(jìn)行放大和轉(zhuǎn)換HX711是一款24位的A/D轉(zhuǎn)換器芯片。但是HX711比一般的A/D轉(zhuǎn)換模塊多了穩(wěn)壓電源和放大電路,集成度更高,抗外界干擾的能力更強(qiáng),使得外圍的電路減少了很多,在很大程度上提高了電路的穩(wěn)定性,同時(shí)減輕了設(shè)計(jì)和焊接電路的難度,系統(tǒng)板上無需為傳感器提供額外的電源,使整塊電路板線路更加簡潔,美觀。HX711與AT89C52單片機(jī)的接線也比較簡單,可以使用IO口驅(qū)動(dòng)控制信號(hào),不需要再對(duì)內(nèi)部的寄存器進(jìn)行編程,使得程序部分更加簡潔易編寫。HX711A/D轉(zhuǎn)換模塊特點(diǎn):(1)芯片內(nèi)置放大器,可選放大倍數(shù)為32倍,64倍和128倍(2)芯片內(nèi)部提供4.5V穩(wěn)壓電源供外部模塊使用(3)上電自動(dòng)復(fù)位電路(4)簡單的數(shù)字控制和串口通訊(5)可選擇10Hz或80Hz的輸出數(shù)據(jù)速率(6)同步抑制50Hz和60Hz的電源干擾(7)典型工作電流:<1.6mA,斷電電流:<1μA(8)芯片工作電壓范圍:2.6~5.5V(9)芯片工作溫度范圍:-40~+85℃在程序中選用了128的放大倍數(shù),當(dāng)輸出電壓為滿量程電壓9MV時(shí),放大后的電壓為1152mv,經(jīng)過AD轉(zhuǎn)換后輸出的24bit數(shù)字值最大為1152mv*2^24/4.5v≈4294966。2.2.3單片機(jī)的選型在選擇單片機(jī)型號(hào)時(shí),以下幾個(gè)因素是選擇的關(guān)鍵:(1)貨源是否充足系統(tǒng)設(shè)計(jì)人員只能在市場上提供了的微控制器的選擇,特別在大批量的生產(chǎn)中,所選擇的單片機(jī)型號(hào)應(yīng)該有著大量、穩(wěn)定的貨源。(2)單片性能是否符合設(shè)計(jì)應(yīng)根據(jù)該系統(tǒng)和各種芯片功能要求,選擇系統(tǒng)規(guī)范的最易實(shí)現(xiàn)的型號(hào),并最可能的實(shí)現(xiàn)高性能。MCU的特性包括硬件資源,速度,可靠性,指令功能,尺寸和包裝等。應(yīng)該選擇能滿足設(shè)計(jì)要求的單片機(jī)型號(hào)。(3)研發(fā)時(shí)間在開發(fā)時(shí)間較為緊張,任務(wù)繁重的情況下。選單片機(jī)型號(hào)時(shí),應(yīng)該注意選擇的單片機(jī)型號(hào)是否熟悉,是否能馬上著手開發(fā)。同時(shí),開發(fā)工具的好壞和熟悉程度也將在極大程度上決定研發(fā)時(shí)間的長短。(4)成本在開發(fā)經(jīng)費(fèi)不是很充足的情況下應(yīng)該考慮單片機(jī)的價(jià)格。在能滿足設(shè)計(jì)要求的基礎(chǔ)上選擇成本較低的型號(hào)。影響開發(fā)成本的除了微控制器的價(jià)格,同時(shí)還包括硬件和軟件設(shè)計(jì)的工作量,以及開發(fā)工具的價(jià)格。目前單片機(jī)的主要產(chǎn)品有:Intel的8051系列、Motorola的M68HC系列、Philips的80C51系列、Atmel公司的AT90系列、臺(tái)灣義隆公司EM78系列、美國Microchip公司的PIC系列、Ubicom公司的Scenix、日本愛普生科技公司的Epson、美國國家半導(dǎo)體公司的NSCOP8、臺(tái)灣Winbond公司的W78系列等。由于MCS-51系列單片機(jī)具有體積小、可靠性強(qiáng)、功能齊全、性價(jià)比高、開發(fā)應(yīng)用方便等特點(diǎn),所以MCS-51系列單片機(jī)為目前主流產(chǎn)品[13-14]。在眾多的單片機(jī)中。我選擇了ATMEL公司開發(fā)的AT89C52單片機(jī)。首先是因?yàn)樵诖笕蠈W(xué)期的時(shí)候我們學(xué)過MCS-51單片機(jī)這一門必修課。我對(duì)于51單片機(jī)的各I/O口的作用和C語言編程較為熟悉。而AT89C52單片機(jī)和51單片機(jī)的指令、管腳5完全兼容,更加容易上手,大大減少了開發(fā)時(shí)間。而且AT89C52單片機(jī)的市場貨源充足,各種參考資料也很多。同時(shí),AT89C52單片機(jī)完全滿足電子秤設(shè)計(jì)的所需的性能要求。2.2.4顯示模塊選型在顯示器的選擇上我有2種選擇方案。方案一LED顯示LED是通過內(nèi)部電路控制發(fā)光二極管,顯示包括:數(shù)字、字母、圖形在內(nèi)的各種信息。LED顯示器的結(jié)構(gòu):LED數(shù)碼管內(nèi)部是由發(fā)光二極管排列而成??梢燥@示數(shù)字0到9。市場上有2中LED,一種是共陽極,另一種是共陰極,這兩種LED在發(fā)光上無區(qū)別,共陰極LED顯示段的陰極都接GND,用陽極驅(qū)動(dòng);共陽極的正好相反,所有顯示段的陽極都是連在一起的,接VCC,用陰極來驅(qū)動(dòng)。在設(shè)計(jì)時(shí)可以使用多位的LED顯示器。X位的LED顯示器就是由X根位選線和8*X根段選線組成。根據(jù)設(shè)計(jì)要求選用不同位數(shù)的LED顯示器。LED顯示器有動(dòng)態(tài)和靜態(tài)顯示兩種顯示的方式。電子秤需要使用動(dòng)態(tài)的顯示方式。在多位LED顯示時(shí),為了使電路更加簡單同時(shí)降低成本,將所有位的段選線都由一個(gè)8位I/O口控制[16]。圖2.4LED數(shù)碼管接線方式方案二LCD顯示 LCD液晶顯示器(LiquidCrystalDisplay)。通過通電來控制晶體分子改變方向,將光線折射到玻璃片上產(chǎn)生圖像。LCD的顯示效果比LED要好,但價(jià)格較貴。在日常生活中,液晶顯示屏已經(jīng)應(yīng)用與各種電器產(chǎn)品中。比如電視機(jī),電子表,遙控器,電壓表等等。主要顯示的是數(shù)字,漢字和圖形等。在單片機(jī)的人機(jī)交互中,一般使用的是發(fā)光二極管、數(shù)碼管或者LCD。發(fā)光二極管和LED數(shù)碼管由于其軟硬件都比較簡單,所以都是常用的顯示模塊。在電子秤設(shè)計(jì)中使用LCD顯示器作為信息輸出模塊有以下如下優(yōu)點(diǎn):顯示圖像質(zhì)量高:LCD顯示器顯示的圖像不會(huì)閃爍。接線簡單:LCD顯示器是數(shù)字式的,只有8個(gè)I/O口,與單片機(jī)的接口更加簡單。(3)體積小。(4)功耗低。由于電子秤設(shè)計(jì)的顯示模塊需要顯示多位數(shù)字和字母,如果采用數(shù)碼管顯示的話將會(huì)占用多個(gè)單片機(jī)I/O口,使得電路變得更為復(fù)雜不美觀。而且本次設(shè)計(jì)不需要顯示漢字和圖畫,只需要顯示字母和數(shù)字,所以選1602LCD符合全部條件,能夠被使用。2.2.5鍵盤輸入鍵盤輸入是人機(jī)交互界面中重要的組成部分,按鍵電路的主要功能是想單片機(jī)輸入數(shù)據(jù)、傳送指令。在本次電子秤設(shè)計(jì)中,主要使用按鍵來對(duì)計(jì)價(jià)、去皮、清零等功能的設(shè)置。本次設(shè)計(jì)使用4X4矩陣薄膜鍵盤,這種鍵盤的價(jià)格低,性能穩(wěn)定,可以使用程序消除其結(jié)構(gòu)上的不穩(wěn)定性,性價(jià)比高。圖2.54X4鍵盤2.3具體實(shí)施方案簡介根據(jù)上文的元器件選型,電子秤設(shè)計(jì)的硬件部分我采用了AT89C52單片機(jī)作為主控制芯片,由于程序量不是很大,所以52單片機(jī)能夠完成計(jì)算工作。在選擇傳感器上,我考慮到任務(wù)要求的稱重精度和量程,選用了CZL-A的10KG電阻應(yīng)變式稱重傳感器。而信號(hào)放大和模-數(shù)轉(zhuǎn)換部分我則選用了HX711A/D轉(zhuǎn)換模塊,它能同時(shí)完成把模擬信號(hào)放大和轉(zhuǎn)換為數(shù)字信號(hào)的工作。人機(jī)交互模塊我則選用了LCD1602的液晶屏用于數(shù)據(jù)的顯示,因?yàn)楸敬卧O(shè)計(jì)的顯示只需要顯示字母和數(shù)字,所以LCD1602完全能夠勝任。鍵盤部分則使用了4X4的薄膜鍵盤,用于用戶對(duì)數(shù)據(jù)的輸入。整體實(shí)現(xiàn)的方法是,由稱重傳感器接受重量產(chǎn)生形變,導(dǎo)致電橋失去平衡,從而產(chǎn)生微小的差動(dòng)電壓,差動(dòng)電壓通過HX711模塊放大和A/D轉(zhuǎn)換后輸入52單片機(jī),由52單片機(jī)對(duì)數(shù)據(jù)進(jìn)行處理或者發(fā)送到顯示屏進(jìn)行顯示,如果用戶有設(shè)置單價(jià)則計(jì)算并顯示出總價(jià),從而完成電子秤稱重并顯示的整個(gè)過程。3系統(tǒng)硬件設(shè)計(jì)根據(jù)設(shè)計(jì)要求以及系統(tǒng)所需要實(shí)現(xiàn)的功能,在設(shè)計(jì)系統(tǒng)時(shí)可以分成以下幾個(gè)部分:稱重傳感器,信號(hào)放大A/D轉(zhuǎn)換,單片機(jī)主控制,穩(wěn)壓電源,4X4矩陣鍵盤,LCD1602液晶顯示。3.1基于51單片機(jī)的主控電路3.1.1硬件框圖圖3.1硬件框圖當(dāng)壓力傳感器收到不同重量的壓力后,會(huì)產(chǎn)生不同大小的微弱電壓信號(hào)。這個(gè)電壓信號(hào)經(jīng)過HX711模塊的放大128倍和轉(zhuǎn)換為數(shù)字信號(hào)后被送入單片機(jī),進(jìn)行計(jì)算和處理后再在液晶屏上被顯示。電源系統(tǒng)則是負(fù)責(zé)給各模塊(51單片機(jī),HX711、傳感器)供電。4x4的矩陣薄膜鍵盤主要用來讓用戶輸入單價(jià),最后計(jì)算出總價(jià)和實(shí)現(xiàn)去皮等功能。3.1.2AT89C51簡介芯片功能介紹及設(shè)計(jì):AT89C51是一款最常用的8位微處理器,俗稱單片機(jī)(MCU)[17]。它內(nèi)部有4K字節(jié)的可編程存儲(chǔ)器和32個(gè)I/O管腳供外部拓展使用。3.1.3引腳說明AT89C52芯片圖如下:圖3.2AT89C52的引腳圖VCC:供電電壓。

GND:接地。

P0口:P0口可以作為通用IO口使用或者作為低8位地址/數(shù)據(jù)復(fù)用總線使用。P1口:P1口除了能當(dāng)做通用IO口使用外還可配置成定時(shí)器或者計(jì)數(shù)器的外部技術(shù)輸入斷。

P2口:P2口功能一是作為通用IO口使用,二是作為高8位的地址總線口使用,還可以用作對(duì)Flash內(nèi)存進(jìn)行編程和校驗(yàn)時(shí)接收高位地址。

P3口:P3口是一個(gè)有很多用途的口,也是一個(gè)準(zhǔn)雙向的口。除了作為IO口使用外,還有下面所列出來的功能[15]。P3.0

RXD(串行輸入口)P3.1

TXD(串行輸出口)P3.2

/INT0(外部中斷0)P3.3

/INT1(外部中斷1)P3.4

T0(記時(shí)器0外部輸入)P3.5

T1(記時(shí)器1外部輸入)P3.6

/WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7

/RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。

RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間

ALE/PROG:地址鎖存信號(hào),ALE在高電平期間,P0口上出現(xiàn)地址信息,在ALE低電平期間,P0口上發(fā)出指令和數(shù)據(jù)。/PSEN:片外程序存儲(chǔ)器讀選通。/PSEN為低電平的時(shí)候有效,51單片機(jī)讀取片外程序儲(chǔ)存器。

/EA/VPP:內(nèi)部和外部程序存儲(chǔ)器選擇信號(hào)。XTAL1:芯片內(nèi)部振蕩電路(單機(jī)反向放大器)輸入端XTAL2:芯片內(nèi)部振蕩電路(單機(jī)反向放大器)輸出端[18]。3.2A/D轉(zhuǎn)換,放大電路3.2.1HX711模塊簡介HX711是一款24位的A/D轉(zhuǎn)換器芯片。但是HX711比一般的A/D轉(zhuǎn)換模塊多了穩(wěn)壓電源和放大電路,集成度更高,抗外界干擾的能力更強(qiáng),使得外圍的電路減少了很多,在很大程度上提高了電路的穩(wěn)定性,同時(shí)減輕了設(shè)計(jì)和焊接電路的難度,系統(tǒng)板上無需為傳感器提供額外的電源,使整塊電路板線路更加簡潔,美觀。HX711與AT89C52單片機(jī)的接線也比較簡單,可以使用IO口驅(qū)動(dòng)控制信號(hào),不需要再對(duì)內(nèi)部的寄存器進(jìn)行編程,使得程序部分更加簡潔易編寫。HX711A/D轉(zhuǎn)換模塊特點(diǎn):(1)芯片內(nèi)置放大器,可選放大倍數(shù)為32倍,64倍和128倍(2)芯片內(nèi)部提供4.5V穩(wěn)壓電源供外部模塊使用(3)上電自動(dòng)復(fù)位電路(4)簡單的數(shù)字控制和串口通訊(5)可選擇10Hz或80Hz的輸出數(shù)據(jù)速率(6)同步抑制50Hz和60Hz的電源干擾(7)典型工作電流:<1.6mA,斷電電流:<1μA(8)芯片工作電壓范圍:2.6~5.5V(9)芯片工作溫度范圍:-40~+85℃3.3報(bào)警電路采用發(fā)光二極管和蜂鳴器進(jìn)行報(bào)警。蜂鳴器和發(fā)光二極管的一端接在GND上,另一端接在三極管的C極上,單片機(jī)的P2.0管腳和三極管的B極通過一個(gè)與門來構(gòu)成回路,當(dāng)P2.0腳為低電平時(shí),三極管導(dǎo)通,發(fā)光二極管和蜂鳴器通電,進(jìn)行報(bào)警。圖3.3報(bào)警電路3.4顯示電路LCD1602液晶模塊的引腳連線如圖。其中,第1、2腳為液晶的驅(qū)動(dòng)電源;液晶的控制口RS、RW和使能端EN分別接52單片機(jī)的P2.5、P2.6、P2.7,用于對(duì)狀態(tài)的輸入,數(shù)據(jù)口接在單片機(jī)的P0.0-P0.7口,用于傳輸數(shù)據(jù)。圖3.4LCD1602接線圖4系統(tǒng)軟件設(shè)計(jì)4.1系統(tǒng)軟件程序組成電子秤的軟件設(shè)計(jì)是整個(gè)設(shè)計(jì)中至關(guān)重要的一部分,軟件要實(shí)現(xiàn)的功能是配合硬件完成整個(gè)電子秤功能的實(shí)現(xiàn)。軟件設(shè)計(jì)的步驟基本為以下三點(diǎn):(1)分析電子秤系統(tǒng)設(shè)計(jì)的任務(wù)要求,確定所需算法。(2)根據(jù)算法畫出系統(tǒng)流程圖:畫出程序的流程圖可以把算法和程序具體化、形象化,使編寫程序更加容易上手。(3)編寫主程序和各個(gè)子程序:根據(jù)程序框圖所表示的算法和步驟,選用適當(dāng)?shù)闹噶钆帕衅饋恚瑯?gòu)成一個(gè)有機(jī)的整體,即程序。(4)軟件調(diào)試:把編好的程序燒入單片機(jī),運(yùn)行整個(gè)系統(tǒng)。檢測結(jié)果是不是符合任務(wù)要求。把程序結(jié)構(gòu)化,減少復(fù)雜轉(zhuǎn)移語句的使用,能使程序更加具有邏輯性且順序與執(zhí)行流程保持一致,減少邏輯錯(cuò)誤,使程序易讀易理解,易于調(diào)試修改。根據(jù)系統(tǒng)的控制任務(wù),本系統(tǒng)的軟件設(shè)計(jì)主要由主程序、初始化程序、鍵盤子程序、AD轉(zhuǎn)換子程序、LCD1602子程序和時(shí)鐘中斷程序等組成。本設(shè)計(jì)使用的編程軟件是keilUV4,Keil軟件是一款專門為51系列的單片機(jī)的C語言編程而開發(fā)的軟件,C語言在編程上比匯編更加容易并且更加有邏輯性。Keil軟件有著非常豐富的函數(shù)庫和功能強(qiáng)大的調(diào)試工具,非常的易學(xué)易用。當(dāng)編完程序后能生成(.hex)格式的文件,之后只要使用單片機(jī)的燒錄軟件將HEX文件燒入單片機(jī),便可以執(zhí)行[19]。4.2主程序流程圖主程序的功能是調(diào)用子程序和對(duì)系統(tǒng)進(jìn)行初始化。本設(shè)計(jì)主程序中使用了定時(shí)器,并調(diào)用各種子程序來實(shí)現(xiàn)電子秤每半秒進(jìn)行一次稱重的功能,主程序流程圖如下圖所示:圖4.1主程序流程圖4.3子程序流程4.3.1時(shí)鐘中斷程序流程初始化定時(shí)器子程序選擇工作方式為16位定時(shí)器,賦予初值后開始累加,到達(dá)0.5S后檢測有無稱重標(biāo)志。圖4.2時(shí)鐘中斷程序流程圖時(shí)鐘中斷部分子程序://定時(shí)器0初始化voidTimer0_Init(){ ET0=1;//允許定時(shí)器0中斷 TMOD=1;//定時(shí)器工作方式選擇 TL0=0x06; TH0=0xf8;//定時(shí)器賦予初值 TR0=1;//啟動(dòng)定時(shí)器}//定時(shí)器0中斷voidTimer0_ISR(void)interrupt1using0{ TL0=0x06; TH0=0xf8;//定時(shí)器賦予初值 //每0.5秒鐘刷新重量Counter++;if(Counter>=200){FlagTest=1; Counter=0;}}4.3.2鍵盤掃描程序流程鍵盤掃描程序開始先把行全置0,掃描判斷有沒有列為低電平,如果有某列為低電平則進(jìn)行列掃描,先把第一行全部置為低電平,其他行置為高電平,判斷第一行有沒有列為低電平,如果有則得到鍵值,沒有則把第二行置低電平,其他行置高電平,直到取得鍵值或者掃描的沒有任何一列為低電平并返回進(jìn)行下一次掃描。圖4.3鍵盤掃描流程圖表4.14x4鍵盤各個(gè)鍵的功能圖7(數(shù)字7)8(數(shù)字8)9(數(shù)字9)10(清除單價(jià)和重量)4(數(shù)字4)5(數(shù)字5)6(數(shù)字6)11(清除單價(jià)最后一位)1(數(shù)字4)2(數(shù)字2)3(數(shù)字3)12(去皮)14(無功能)0(數(shù)字0)15(小數(shù)點(diǎn))13(確定)4.3.3LCD1602顯示流程重物的轉(zhuǎn)換后AD值傳入單片機(jī),單片機(jī)通過主程序檢測是否超過設(shè)定的10kg量程,若超過則蜂鳴器響,紅燈亮進(jìn)行報(bào)警并返回。若沒超過10kg設(shè)定量程則顯示重量,并且進(jìn)入下一段程序檢測用戶有無設(shè)置單價(jià),若有則計(jì)算并在LCD1602顯示總價(jià),若無則返回主程序并等待下一次檢測。圖4.4LCD1602顯示流程圖5調(diào)試此次硬件的焊接是用萬用板手工焊接,軟件編程及調(diào)試是用keil軟件進(jìn)行的,硬件和程序調(diào)試步驟如下:5.1硬件調(diào)試硬件電路設(shè)計(jì)原理圖完成以后,檢查無誤后,就可以根據(jù)原理圖的布局來進(jìn)行元器件的焊接工作了。在電路板上根據(jù)先前設(shè)計(jì)好的元器件位置將元器件插入,然后再仔細(xì)的完成焊接工作。完成電路板的焊接后,首先不要急著對(duì)電路板上電,而是應(yīng)該檢查電路焊接的好壞,用萬用表檢查焊接的電路是不是有短路或者斷路。然后把檢查穩(wěn)定的電壓源加入到電路板,先仔細(xì)觀察下,有沒有電容等出現(xiàn)爆炸的情況。若沒有,檢查AT89c52、HX711這幾個(gè)主要芯片有沒有出現(xiàn)過熱的情況,若有則表明芯片被燒壞,應(yīng)該及時(shí)斷開電源。同時(shí),還應(yīng)該檢查LCD1602顯示器背景燈有沒有亮的情況。用萬用表的電壓檔檢查各個(gè)電源線路電壓是否在正常范圍之內(nèi),比如5V供電處,HX711供電。完成以上步驟后,如果沒有發(fā)現(xiàn)異常情況,則表明硬件部分是好的。接下來主要的是軟件調(diào)試以及數(shù)據(jù)的檢測工作。5.2軟件調(diào)試在本次設(shè)計(jì)中,軟件的修改以及調(diào)試的工作是很重要的一個(gè)環(huán)節(jié)。因本設(shè)計(jì)未使用仿真,所以所有的調(diào)試過程都由不斷的燒錄程序來完成,過程比較繁瑣,但一步一個(gè)腳印,較為扎實(shí)可靠。對(duì)于單片機(jī)的程序編寫,主要是利用KeiluVision4開發(fā)工具來實(shí)現(xiàn)的,可以使用該軟件來編譯C程序代碼,匯編源程序,建立新項(xiàng)目工程newuVisionproject,使用C語言進(jìn)行編程,完成后連接和重定位目標(biāo)文件和庫文件,創(chuàng)建HEX文件以及調(diào)試目標(biāo)程序。首先要掌握對(duì)LCD1602顯示屏的控制,然后從單片機(jī)中讀取重量到屏幕上。利用KeiluVision4生成HEX文件后,將該文件燒錄到單片機(jī)中,觀察其是否顯示我們所需要的時(shí)間信息。完成后,在程序中添加按鍵程序,去皮,清零,計(jì)價(jià)等功能。5.3實(shí)際測試精度測試:理論精度:因?yàn)镃ZL-A壓力傳感器的精度為0.02%,所以排除其他干擾后能達(dá)到的精度為10KG*0.02%=2g,實(shí)際精度:我采用了10g,50g,100g,200g,500g的砝碼進(jìn)行測試。表5.1精度測試砝碼重量10g50g100g200g500g測試結(jié)果19g50g98g197g498g測試結(jié)果28g51g98g199g501g平均誤差1.5g0.5g2g2g1.5g分析上表數(shù)據(jù)得出,當(dāng)測試重量低于500g時(shí),平均精度為1.5g。誤差測試:當(dāng)在稱重傳感器上放上1個(gè)100g砝碼時(shí)。LCD1602顯示屏顯示如下:圖5.1100g誤差測試當(dāng)在稱重傳感器上放上1個(gè)5KG的砝碼時(shí)。LCD1602顯示屏顯示如下:圖5.25KG誤差測試誤差為2g左右,在可接受范圍之內(nèi)。量程測試:當(dāng)在傳感器上放上1個(gè)10KG的砝碼時(shí),LCD1602顯示如下:圖5.3量程測試測試可得電子秤能測10KG及以下的重量。報(bào)警功能測試:當(dāng)在傳感器上放上一個(gè)15KG的砝碼時(shí),LED發(fā)紅色光,蜂鳴器響。圖5.4報(bào)警測試計(jì)價(jià)功能測試:當(dāng)在稱重傳感器上放上1個(gè)100g砝碼,并設(shè)置單價(jià)為10時(shí),LCD1602顯示屏顯示如下:圖5.3計(jì)價(jià)功能測試總價(jià)為0.098*10=0.98≈0.9,顯示正確說明按鍵部分和計(jì)價(jià)部分功能實(shí)現(xiàn)。6總結(jié)本次畢業(yè)設(shè)計(jì)做的電子秤,主要利用了AT89C52單片機(jī)、CZL-A10kg電阻應(yīng)變式稱重傳感器以及HX711A/D轉(zhuǎn)換模塊,LCD1602顯示屏模塊,4x4矩陣鍵盤,通過C語言編程來實(shí)現(xiàn)了電子秤的顯示與控制。本次設(shè)計(jì)完成了稱重,顯示重量、計(jì)價(jià)、超量程報(bào)警、去皮等功能,精度達(dá)到要求的2g,能通過按鍵控制來實(shí)現(xiàn)單價(jià)的設(shè)置和去皮,清零。通過上述的分析,對(duì)于本次設(shè)計(jì),其主要的設(shè)計(jì)任務(wù)已經(jīng)完成。本次設(shè)計(jì)的核心部分在于軟件編程,雖然以前學(xué)C語言的時(shí)候感覺還好,也在實(shí)驗(yàn)室待過一段時(shí)間學(xué)習(xí)編程,可真要讓自己通過C語言來實(shí)現(xiàn)農(nóng)歷的算法,還是蠻困難的。同時(shí)對(duì)于C語言的編程軟件Keil以及其仿真功能接觸不夠,如果能夠熟練運(yùn)用其仿真功能,可以為本次設(shè)計(jì)減少很多工作量。通過本次設(shè)計(jì),從電路原理圖的設(shè)計(jì)到電路板的焊接,再到編程調(diào)試,讓我仔細(xì)的回顧了大學(xué)四年學(xué)習(xí)過的這些知識(shí),包括單片機(jī)、微機(jī)原理、模電數(shù)電、電子實(shí)習(xí)等重要的基礎(chǔ)課程。相信在以后的學(xué)習(xí)工作中還會(huì)繼續(xù)用到。同時(shí),應(yīng)該看到,對(duì)于本次設(shè)計(jì)的電子秤,還存在很多的不足之處。比如,電路板設(shè)計(jì)的不合理,成品元器件排布不緊湊,布局的不合理,都體現(xiàn)了個(gè)人在硬件設(shè)計(jì)過程中的不熟悉。而且軟件部分只實(shí)現(xiàn)了以上所述的基本功能,未能將語音播報(bào),這是想法上和人性化設(shè)計(jì)上的不足。對(duì)于電子秤的發(fā)展,應(yīng)該朝著智能識(shí)別物體并選擇計(jì)價(jià)模式,語音控制和播報(bào)等更加人性化,更加方便人們生活的方向發(fā)展。以滿足人們?nèi)遮厪V泛的應(yīng)用。參考文獻(xiàn)[1]高勇.分析電子衡器技術(shù)的現(xiàn)狀及未來發(fā)展趨勢[J].科技與企業(yè)

,2012,11(2):2-30[2]賈耘濤.衡器的發(fā)展應(yīng)用與管理[J].中國科技博覽,2012,24(1):35-60[3]曾德坤.淺析電子量衡準(zhǔn)確性提高的技巧[J].商情,2012,35(6):10-30[4]王爭.帶鋼稱重設(shè)備在寶鋼1800冷軋廠的應(yīng)用[J].中國高新技術(shù)企業(yè),2012,3(7):10-65[5]李淳.電子衡器的特點(diǎn)及選用[J].黑龍江科技信息,2009,12(5):10-35[6]陳小龍.淺談如何搞好衡器計(jì)量管理[J].黑龍江科技信息,2011,21(1):2-35[7]楊東海.國內(nèi)外電子秤的發(fā)展趨向及幾點(diǎn)看法[J].水利電力機(jī)械,2009,12(11):13-28.[8]劉九卿.動(dòng)態(tài)和數(shù)字稱重技術(shù)發(fā)展概況與研究課題[J].工業(yè)計(jì)量,2011,2(1):10-69[9]陶安利,鄭娟娟,王力涵,歷運(yùn)周.NetworkingIntelligentPressureSensorUsingDigitalLock-inAmplificationTechnology[J].JournalofMeasurementScienceandInstrumentation.2011(01).21-60[10]Jiansuchangzhou.LongWen.DevelopingofHighAccuracyandLowCapacityStrainGugeBasedLoadCELLforElectronicScale[J].2009,15(3):91-99.[11]梁易.基于單片機(jī)的無線電子秤設(shè)計(jì)[J].企業(yè)導(dǎo)報(bào),2012,4(5):25-51[12]李艷.應(yīng)變式微型傳感承壓機(jī)構(gòu)一體化電子測壓器[M]廣東:中山大學(xué).2009.3-20[13]袁錫明.基于單片機(jī)控制的智能壓力變送器設(shè)計(jì)與實(shí)現(xiàn)[J].化工自動(dòng)化及儀表,2012,5(9):3-30[14]鐘富昭等.8051單片機(jī)典型模塊設(shè)計(jì)與應(yīng)用[M].北京:人民郵電出版社,2010.36-50[15]王守中,聶元銘.51單片機(jī)開發(fā)入門與典型實(shí)例[M].北京:人民郵電出版社,2009.211-23[16]吳祖安,朱兆優(yōu).基于單片機(jī)的電子秤設(shè)計(jì)[J].湖南農(nóng)機(jī).2010,2(05):2-30[17]王飛躍.基TAT89C51便攜式儀表的系統(tǒng)研究[J].數(shù)字技術(shù)與應(yīng)用.2011,6(1):2-35[18]邵峰.MCS-51單片機(jī)地址指針及其應(yīng)用[J].安徽科技,2009,5(11):10-36[19]王超.基于Multisim10和KeilC51的單片機(jī)仿真[J].高師理科學(xué)刊,2012,2(2):2-33附件A系統(tǒng)原理圖附件B開發(fā)板實(shí)物圖附件C元器件清單序號(hào)名稱數(shù)量110KGCZL-A電阻應(yīng)變式壓力傳感器+支架12稱重轉(zhuǎn)換AD模塊Hx71113STC89C52144*4矩陣鍵盤151602液晶165V有源蜂鳴器17單排排針2.54mm18單排彎針2.54mm19單排母座2.5411040P單片機(jī)母座11112M晶振11220pf瓷片電容213自鎖開關(guān)114微動(dòng)開關(guān)115PNP三極管s8550116直流電源插座/火車頭117USB電源線11810uf鋁電解電容119直插電阻1k2個(gè);4.7k4個(gè)20紅色、綠色led各1個(gè)219*15萬用板122導(dǎo)線和焊錫若干23MAX23212416PDIP底座125串口母頭126Usb轉(zhuǎn)串口線127杜邦線4附件D源程序主程序:#include<reg52.h>#include<intrins.h>#include<string.h>#include"LCD1602.h"#include"hx711.h"#include"keyboard.h#defineucharunsignedchar#defineuintunsignedint//定義量程系數(shù)#defineRATIO1690/1000//1574/1000//2114/1623//定義標(biāo)識(shí)volatilebitFlagTest=0; //定時(shí)測試標(biāo)志,每0.5秒置位,測完清0volatilebitFlagKeyPress=0;//有鍵按下標(biāo)志,處理完畢清0volatilebitFlagSetPrice=0;//價(jià)格設(shè)置狀態(tài)標(biāo)志,設(shè)置好為1。volatilebitClearWeighFlag=0;//傳感器調(diào)零標(biāo)志位,清除0漂//管腳定義sbitLedA=P2^2;//sbitbeep=P1^0;sbitalert=P2^0;//sbitledandbeep=P2^0;//顯示用變量intCounter;inti,iTemp;//稱重用變量unsignedlongidataFullScale;//滿量程AD值/1000unsignedlongAdVal;//AD采樣值unsignedlongweight;//重量值,單位gunsignedlongidataprice;//單價(jià),長整型值,單位為分unsignedlongidatamoney;//總價(jià),長整型值,單位為分//鍵盤處理變量unsignedcharkeycode;unsignedcharDotPos; //小數(shù)點(diǎn)標(biāo)志及位置voidData_Init();voidPort_Init();voidTimer0_Init();voidTimer0_ISR();voidINT1_Init();voidKeyPress(uchar);voidTo_Zero();voidDisplay_Price();voidDisplay_Weight();voidDisplay_Money();/*延時(shí)*/voiddelay(inti){intj,k;for(j=0;j<i;j++)for(k=0;k<500;k++);}//重新找回零點(diǎn),每次測量前調(diào)用voidTo_Zero(){FullScale=ReadCount()/1000;price=0;}//顯示單價(jià),單位為元,四位整數(shù),兩位小數(shù)voidDisplay_Price(){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(0x83); LCD1602_write_data(weight/1000+0x30); LCD1602_write_data('.'); LCD1602_write_data(weight%1000/100+0x30); LCD1602_write_data(weight%100/10+0x30); LCD1602_write_data(weight%10+0x30);}//顯示總價(jià),單位為元,四位整數(shù),兩位小數(shù)voidDisplay_Money(){//unsignedinti,j;if(money>9999) //超出顯示量程{LCD1602_write_com(0x80+0x40+4);LCD1602_write_word(".-");return;}if(money>=1000){LCD1602_write_com(0x80+0x40+4); 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+4); 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+4); LCD1602_write_data(0x20); LCD1602_write_com(0x80+0x40+5); 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+4); LCD1602_write_data(0x20); LCD1602_write_com(0x80+0x40+5); LCD1602_write_data(0x20); LCD1602_write_com(0x80+0x40+6); LCD1602_write_data(0+0x30); LCD1602_write_data('.'); LCD1602_write_data(money%10+0x30);}}//數(shù)據(jù)初始化voidData_Init(){price=0;DotPos=0;//beep=1;alert=1;}//管腳配置voidPort_Init(){ }//定時(shí)器0初始化voidTimer0_Init(){ ET0=1;//允許定時(shí)器0中斷 TMOD=1;//定時(shí)器工作方式選擇 TL0=0x06; TH0=0xf8;//定時(shí)器賦予初值 TR0=1;//啟動(dòng)定時(shí)器}//定時(shí)器0中斷voidTimer0_ISR(void)interrupt1using0{ TL0=0x06; TH0=0xf8;//定時(shí)器賦予初值 //每0.5秒鐘刷新重量Counter++;if(Counter>=200){FlagTest=1; Counter=0;}}//按鍵響應(yīng)程序,參數(shù)是鍵值//返回鍵值://78910(清0)//45611(刪除)//12312(未定義)//14(未定義)015(.)13(確定價(jià)格)voidKeyPress(ucharkeycode){switch(keycode){case0:case1:case2:case3:case4:case5:case6:case7:case8:case9: //目前在設(shè)置整數(shù)位,要注意price是整型,存儲(chǔ)單位為分 if(DotPos==0) { //最多只能設(shè)置到千位 if(price<100) { price=price*10+keycode*10; } } //目前在設(shè)置小數(shù)位 elseif(DotPos==1)//小數(shù)點(diǎn)后第一位 { price=price+keycode; DotPos=2; } Display_Price(); break;case10://清零鍵 To_Zero(); Display_Price(); FlagSetPrice=0; DotPos=0; break; case11: //刪除鍵,按一次刪除最右一個(gè)數(shù)字 if(DotPos==2) { price=price/10; price=price*10; DotPos--; } elseif(DotPos==1) { price=price/100; price=price*10; DotPos--; } elseif(DotPos==0) { price=price/100; price=price*100; } Display_Price();break; //////////////////////////////////// case12: ClearWeighFlag=1; break; //////////////////////////////////////case13://確認(rèn)鍵 FlagSetPrice=1; DotPos=0; break; case15://小數(shù)點(diǎn)按下 DotPos=1;//小數(shù)點(diǎn)后第一位 break;}}//===============mainprogram===================//voidmain(void){Init_LCD1602();EA=0;Data_Init();Port_Init();Timer0_Init();//初中始化完成,開斷EA=1;//背光LedA=1;LCD1602_write_com(0x80); //指針設(shè)置LCD1602_write_word("Welcometouse!"); To_Zero();LCD1602_write_com(0x80); //指針設(shè)置LCD1602_write_word("WE:.PR:.");LCD1602_write_com(0x80+0x40); //指針設(shè)置LCD1602_write_word("MON:.");Display_Price();while(1){//每0.5秒稱重一次 if(FlagTest==1) { //ledandbeep=0; //稱重,得到重量值weight,單位為g AdVal=ReadCount(); weight=FullScale-AdVal/1000; if(weight>0x8000)weight=0; weight=10000*weight/FullScale; weight=weight*RATIO; //如果超量程,則報(bào)警 if(weight>=10000) { //beep=0; alert=0; LCD1602_write_com(0x83); LCD1602_write_word("-."); } //如果不超量程 else { //beep=1; alert=1; //顯示重量值 Display_Weight(); //如果單價(jià)設(shè)定好了,則計(jì)算價(jià)格if(FlagSetPrice==1) { money=weight*price/1000;//money單位為分 //顯示總金額 Display_Money(); } else { LCD1602_write_com(0x80+0x40+4); LCD1602_write_word("."); } //清測試標(biāo)志 FlagTest=0; } } //獲取按鍵 if(ClearWeighFlag==1) { ClearWeighFlag=0; To_Zero(); } keycode=Getkeyboard(); //有效鍵值0-15 if((keycode<16)&&(FlagKeyPress==0)) { FlagKeyPress=1; KeyPress(keycode); FlagKeyPress=0; } delay(70);}}鍵盤子程序:#include"keyboard.h"http://按鍵掃描函數(shù)://功能;只掃描一個(gè)按鍵,按鍵為號(hào)小優(yōu)先//返回鍵值://78910 //10:清除單價(jià)并且清除重量 //45611 //11:清除單價(jià)最后一位//12312 //12:去皮//1401513 //14:無功能(用于擴(kuò)展)15:小數(shù)點(diǎn)13:確定unsignedcharGetkeyboard(void){unsignedcharnumber=0;unsignedchari; //行輸入低電平ROW1=ROW2=ROW3=ROW4=0; //如果列輸出不全為高,則說明有鍵按下 if((COL1!=1)||(COL2!=1)||(COL3!=1)||(COL4!=1)) { //輸入0111 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++); if(COL1==0)return14; elseif(COL2==0)return0; elseif(COL3==0)return15; elseif(COL4==0)return13; //沒有檢測到列低電平 return99; } return99;}LCD1602子程序:#include"LCD1602.h"http://****************************************************//MS延時(shí)函數(shù)(12M晶振下測試)//****************************************************voidLCD1602_delay_ms(unsignedintn){ unsignedinti,j; for(i=0;i<n;i++) for(j=0;j<123;j++);}//****************************************************//寫指令//****************************************************voidLCD1602_write_com(unsignedcharcom){ LCD1602_RS=0; LCD1602_delay_ms(1); LCD1602_EN=1; LCD1602_PORT=com; LCD1602_delay_ms(1); LCD1602_EN=0;}//****************************************************//寫數(shù)據(jù)//****************************************************voidLCD1602_write_data(unsignedchardat){ LCD1602_RS=1; LCD1602_delay_ms(1); LCD1602_PORT=dat; LCD1602_EN=1; LCD1602_delay_ms(1); LCD1602_EN=0;}//****************************************************//連續(xù)寫字符//****************************************************voidLCD1602_write_word(unsignedchar*s){ while(*s>0) { LCD1602_write_data(*s); s++; }}voidInit_LCD1602(){ LCD1602_EN=0; LCD1602_RW=0; //設(shè)置為寫狀態(tài) LCD1602_write_com(0x38); //顯示模式設(shè)定 LCD1602_write_com(0x0c); //開關(guān)顯示、光標(biāo)有無設(shè)置、光標(biāo)閃爍設(shè)置 LCD1602_write_com(0x06); //寫一個(gè)字符后指針加一 LCD1602_write_com(0x01); //清屏指令}AD轉(zhuǎn)換子程序:#include"hx711.h"unsignedlongReadCount(void){unsignedlongCount;unsignedchari;ADSK=0;Count=0;while(ADDO);for(i=0;i<24;i++){ADSK=1;Count=Count<<1;ADSK=0;if(ADDO)Count++;}ADSK=1;Count=Count^0x800000;ADSK=0;return(Count);}基于C8051F單片機(jī)直流電動(dòng)機(jī)反饋控制系統(tǒng)的設(shè)計(jì)與研究基于單片機(jī)的嵌入式Web服務(wù)器的研究MOTOROLA單片機(jī)MC68HC(8)05PV8/A內(nèi)嵌EEPROM的工藝和制程方法及對(duì)良率的影響研究基于模糊控制的電阻釬焊單片機(jī)溫度控制系統(tǒng)的研制基于MCS-51系列單片機(jī)的通用控制模塊的研究基于單片機(jī)實(shí)現(xiàn)的供暖系統(tǒng)最佳啟停自校正(STR)調(diào)節(jié)器單片機(jī)控制的二級(jí)倒立擺系統(tǒng)的研究基于增強(qiáng)型51系列單片機(jī)的TCP/IP協(xié)議棧的實(shí)現(xiàn)基于單片機(jī)的蓄電池自動(dòng)監(jiān)測系統(tǒng)基于32位嵌入式單片機(jī)系統(tǒng)的圖像采集與處理技術(shù)的研究基于單片機(jī)的作物營養(yǎng)診斷專家系統(tǒng)的研究基于單片機(jī)的交流伺服電機(jī)運(yùn)動(dòng)控制系統(tǒng)研究與開發(fā)基于單片機(jī)的泵管內(nèi)壁硬

溫馨提示

  • 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)論