數(shù)字電子秤實訓(xùn)報告
數(shù)字電子秤實訓(xùn)報告
一:實訓(xùn)目的:1、通過設(shè)計來更好地理解電阻應(yīng)變式傳感器的實際
應(yīng)用
2、電路由測量電橋,差動放大電路,A/D轉(zhuǎn)換電路,顯示電路組成3、根據(jù)我們已學(xué)的知識,設(shè)計一數(shù)字電子秤,掌握電子秤的構(gòu)造和工作原理,深化并鞏固我們學(xué)過的知識,將理論與實踐結(jié)合
二:實訓(xùn)地點(diǎn):理工實訓(xùn)樓409
三:實訓(xùn)內(nèi)容:制作數(shù)字電子秤的測量部分
四:電子稱原理圖
五:實訓(xùn)總結(jié):這次作品由以下四部分組成:電阻應(yīng)變傳感器、信
號放大系統(tǒng)、模數(shù)轉(zhuǎn)換系統(tǒng)、顯示器。
在經(jīng)過幾天的努力,從開始的電路選擇到買元器件,再到焊接、測試,終于順利的完成了數(shù)字電子秤的制作。
最開始的兩天,我們對電路圖的各個參數(shù)進(jìn)行了解,仔細(xì)的計算將每個元器件的大小參數(shù),為后來的買元器件打下基礎(chǔ),在買完元器件后,只經(jīng)過2節(jié)課,就焊接完成,焊接對我們?nèi)I鷣碚f并不是什么難事,只是接下來的調(diào)試對我們來說不是一件簡單的是,由于要求相同的電阻的阻值大小有些偏差,導(dǎo)致精確度不是很高,在老師的指導(dǎo)下和我們自己的研究下終于解決了這個問題,這次的實訓(xùn)將電子與傳感器聯(lián)系在一起,讓我們回顧了上學(xué)期所學(xué)的知識,學(xué)習(xí)是一個循序漸進(jìn)的過程,我們還有很多要學(xué)習(xí)也要全面掌握這些東西!
XX年X月X日
擴(kuò)展閱讀:數(shù)字電子秤實驗報告
溫州大學(xué)甌江學(xué)院
WENZHOUUNIVERSITYOUJIANGCOLLEGE
復(fù)雜電子系統(tǒng)設(shè)計課程實踐報告書
數(shù)字電子秤
班級:姓名:姓名:姓名:指導(dǎo)老師:
溫州大學(xué)甌江學(xué)院信息與電子工程分院
201*年6月
目錄
摘要..................................................................................................................................................3一、設(shè)計方案論證...........................................................................................................................4二、理論分析及調(diào)試.......................................................................................................................6
2.1、壓力傳感器:..................................................................................................................62.2、放大電路部分:..............................................................................................................8
2.2.1運(yùn)放電路..................................................................................................................82.2.2計算公式..................................................................................................................82.2.3運(yùn)放差分放大電路特點(diǎn).........................................................................................82.2.4放大電路的元件清單..............................................................................................92.2.5OP07管腳圖:........................................................................................................92.2.6傳感器的輸出信號放大后的數(shù)據(jù)及放大倍數(shù)表................................................102.2.7調(diào)試過程中的心得:............................................................................................102.2.8參考資料:............................................................................................................102.3、AD轉(zhuǎn)換部分..................................................................................................................11
2.3.1主要特性...............................................................................................................112.3.2內(nèi)部結(jié)構(gòu)................................................................................................................122.3.3外部特性(引腳功能).......................................................................................122.3.4AD單獨(dú)測試電路圖..............................................................................................122.3.4AD單獨(dú)測試調(diào)試程序:......................................................................................132.3、液晶顯示部分................................................................................................................142.4蜂鳴器部分.......................................................................................................................15三、測試方法、測試數(shù)據(jù).............................................................................................................16
3.1、重量與電壓的對應(yīng)關(guān)系................................................................................................163.2、數(shù)據(jù)擬合示意圖............................................................................................................163.3、擬合數(shù)據(jù)方程................................................................................................................17四、程序及分析.............................................................................................................................17五、結(jié)果與分析.............................................................................................................................27參考文獻(xiàn):.....................................................................................................................................27
附件:總電路圖.....................................................................................................................摘要
在生活中經(jīng)常都需要測量物體的重量,于是就用到秤,但是隨著社會的進(jìn)步、科學(xué)的發(fā)展,我們對其要求操作方便、易于識別。隨著計量技術(shù)和電子技術(shù)的發(fā)展傳統(tǒng)純機(jī)械結(jié)構(gòu)的桿秤、臺秤、磅秤等稱量裝置逐步被淘汰,電子稱量裝置電子秤、電子天平等以其準(zhǔn)確、快速、方便、顯示直觀等諸多優(yōu)點(diǎn)而受到人們的青睞。電子秤向提高精度和降低成本方向發(fā)展的趨勢引起了對低成本、高性能模擬信號處理器件需求的增加。大多數(shù)電子秤是以1:3,000或1:10,000的分辨率輸出最終的稱重值,使用12bit~14bit的模數(shù)轉(zhuǎn)換器很容易滿足要求。設(shè)計中主要考慮峰峰值(PP)噪聲分辨率、ADC的動態(tài)范圍、增益漂移和濾波。通過分析近年來電子衡器產(chǎn)品的發(fā)展情況及國內(nèi)外市場的需求,電子衡器總的發(fā)展趨勢是小型化、模塊化、集成化、智能化;其技術(shù)性能趨向是速率高、準(zhǔn)確度高、穩(wěn)定性高、可靠性高;其功能趨向是稱重計量的控制信息和非控制信息并重的“智能化”功能;其應(yīng)用性能趨向于綜合性和組合性。
一、設(shè)計方案論證
在實驗開始的最初,我組成員根據(jù)有限的知識對本課題實驗進(jìn)行了分析,最終有兩個方案候選,方案電路圖如下。
方案一:放大部分兩個方案運(yùn)用一致,放大信號進(jìn)入AD轉(zhuǎn)換以后,AD將數(shù)字信號輸給單片機(jī),有程序控制將相應(yīng)的單價在數(shù)碼管上顯示出來,本方案的缺點(diǎn)是1、IO口不夠用需要擴(kuò)展;2、數(shù)碼管顯示不能明白的表明是質(zhì)量、單價還是總價。
方案二:選用1602液晶顯示屏,不僅可以顯示數(shù)據(jù)還可以顯示中英文,重要的是可以同步顯示,相對方案一還不需要IO口擴(kuò)展,所以最終選用方案二。
部件方案討論
方案討論一:人機(jī)對話部分我們選定獨(dú)立鍵盤方案和矩陣鍵盤方案方案一:獨(dú)立鍵盤
獨(dú)立鍵盤是人機(jī)對話部分常用的按鍵方式,其優(yōu)點(diǎn)表現(xiàn)為硬件電路簡單,整體單元風(fēng)格大方簡潔,所占的空間相對較少,最重要的是所要編寫的程序代碼少。其缺點(diǎn)在于實現(xiàn)的功能也就相對的簡單。因而對于一個大的系統(tǒng),并不適合獨(dú)立鍵盤。
方案二:矩陣鍵盤
矩陣鍵盤作為另一種人機(jī)對話中按鍵的方式來講,它的優(yōu)點(diǎn)在于能實現(xiàn)的功能較為強(qiáng)大,適合大中系統(tǒng)。缺點(diǎn)在于矩陣鍵盤一般采用4*4矩陣類型,其不僅一次性就用掉了51單片機(jī)中的一個組合口,占的硬件資源比較大,重要的是不僅所要編寫的程序代碼很多,而且對于那些對編寫程序不是很好的同學(xué)來說,很容易出錯,而且不知道如何修改。
由于此次課程設(shè)計中硬件資源有限,且為使整體硬件風(fēng)格顯得簡單得體,最重要的是不是大系統(tǒng),所以我們選擇獨(dú)立鍵盤進(jìn)行對電子稱中單價的進(jìn)行修改。
方案討論二:顯示部分我們選定液晶顯示方案和LED七段顯示方案方案一:液晶顯示
液晶顯示是顯示部分常用的顯示方式,其優(yōu)點(diǎn)表現(xiàn)為硬件電路簡單,整體單元風(fēng)格大方簡潔,所占的空間相對較少,能實現(xiàn)的功能較為強(qiáng)大,適合各種系統(tǒng)。其缺點(diǎn)在于所要編寫的程序代碼多。
方案二:LED七段顯示方案
LED七段顯示方案是顯示部分常用的顯示方式,其優(yōu)點(diǎn)表現(xiàn)為我們接觸的多,程序什么的也寫過,所要編寫的程序代碼少。其缺點(diǎn)在于硬件電路復(fù)雜,所占的空間相對較多,實現(xiàn)的功能也就相對簡單,如果對于一個大的系統(tǒng),那肯定不適合LED七段顯示方案。
由于此次課程設(shè)計中所要顯示的東西多,而且由于很多參考書中都有類似的程序,易于借鑒參考,且為使整體硬件風(fēng)格顯得簡單得體,我們選擇液晶顯示。
二、理論分析及調(diào)試
電路由壓力傳感器,放大電路,AD轉(zhuǎn)換部分,單片機(jī),按鍵控制乘法運(yùn)算,液晶顯示,蜂鳴器報警7部分組成,為了保證總電路能夠正常工作分別對七個模塊進(jìn)行了調(diào)試,以下做一一介紹。
2.1、壓力傳感器:
本次設(shè)計使用的是電阻應(yīng)變式壓力傳感器,它主要由彈性體、電阻應(yīng)變片、電纜線等組成,內(nèi)部路線采用惠更斯電橋,當(dāng)彈性體承受載荷產(chǎn)生形變時,電阻應(yīng)變片收到拉伸或壓縮應(yīng)變片變形后,她的阻值將發(fā)生變化,從而是電橋失去平衡,產(chǎn)生相應(yīng)的差動信號,共后續(xù)電路測量和處理。
電氣參數(shù):
為了解已知重量的物體放在壓力傳感器上使其產(chǎn)生相應(yīng)的電壓變化的具體情況,特制作了水瓶砝碼。而其輸出的相應(yīng)電壓值如下:質(zhì)量壓力傳感器輸出電壓00.28mV200g0.45mV400g0.66mV500g0.76mV600g0.86mV1kg1.26mV1.2kg1.47mV1.4kg1.67mV1.57kg1.84mV2kg2.27mV3.14kg3.44mV3.64kg3.94mV5.14kg5.45mV6.14kg6.45mV由于實驗材料有限,實驗數(shù)據(jù)重量在0---6.14KG之間。2.2、放大電路部分:
2.2.1運(yùn)放電路:
2.2.2計算公式:
OuR42R2uI1uI2(1)R3R1
設(shè)定此運(yùn)放放大倍數(shù)為500,并將各電阻值代入公式如下,可算出R1阻值為306Ω,因為條件限制,沒有306Ω我用300Ω的來替代。500=-10(1+15/R1)R1=306Ω
2.2.3運(yùn)放差分放大電路特點(diǎn):
1)高輸入阻抗。被提取的信號是不穩(wěn)定的高內(nèi)阻源的微弱信號,為了減少信號源內(nèi)阻的影響,必須提高放大器輸入阻抗。一般情況下,信號源的內(nèi)阻為100kΩ,則放大器的輸入阻抗應(yīng)大于1MΩ。
2)高共模抑制比CMRR。信號工頻干擾以及所測量的參數(shù)以外的作用的干擾,一般為共模干擾,前置級須采用CMRR高的差動放大形式,能減少共模干擾向差模干擾轉(zhuǎn)化。
3)低噪聲、低漂移。主要作用是對信號源的影響小,拾取信號的能力強(qiáng),以及能夠使輸出穩(wěn)定。
選用OP07的原因:傳感器在不加負(fù)荷時,橋路的電阻應(yīng)平衡,也就是電橋初始平衡狀態(tài)輸出應(yīng)為零。但實際上橋路各臂阻值不可能絕對相同,接觸電阻及導(dǎo)線電阻也有差異,致使輸出不為零。因此必須設(shè)置調(diào)零電路使初始狀態(tài)達(dá)到平衡。而OP07的特點(diǎn)就是只有非常低的輸入電壓(最大為25uv),所以用OP07在很多應(yīng)用場合不需要額外的調(diào)零措施。用OP07即可以省去調(diào)零這一實驗步驟,為傳感器輸出數(shù)據(jù)成線性關(guān)系做貢獻(xiàn)
2.2.4放大電路的元件清單:
元件名稱元件編號元件型號電阻R1300Ω電阻R27.5K電阻R31K電阻R410K運(yùn)放A1OP07運(yùn)放A2OP07運(yùn)放A3OP07對傳感器與運(yùn)放電路的擬合:電路連接:將傳感器信號輸出端與運(yùn)算放大電路的信號輸入端相連,在這兩個電路連接的時候,輸出端與輸入端可以隨便連接,不用考慮方向。傳感器的紅色電線接10V電壓,黑色電線接地。運(yùn)算放大電路中的運(yùn)放OP07的4腳接-10V,7腳接10V
2.2.5OP07管腳圖:
1和8為偏置平衡(調(diào)零端),2為反向輸入端,3為正向輸入端,4接地,5空腳6為輸出,7接電源+
電路測試:我們組用塑料瓶代替砝碼,在砝碼數(shù)量不足時,用多個塑料瓶累加稱重,可以代替砝碼,讓稱量的重量提高。然后記錄放大電路的輸入電壓和放大后的電壓,進(jìn)行計算,利用軟件,根據(jù)稱重物體的重量與放大信號的曲線設(shè)定軟件程序中的系數(shù)。(實驗中,稱量的質(zhì)量越大,放大電路的放大倍數(shù)越接近設(shè)計值)
2.2.6傳感器的輸出信號放大后的數(shù)據(jù)及放大倍數(shù)表
稱重物體的重量(g)0201*0050060010001201*4001570201*3140364051406140輸出信號(mv)0.280.450.660.760.861.261.471.671.842.273.443.945.456.45放大信號(v)0.090.1860.2770.31960.36060.54630.6420.7320.8131.0031.5331.7622.4432.903放大倍數(shù)321413419.7420.5419.3433.6436.7438.3441.8441.8445.6447.2448.3450.12.2.7調(diào)試過程中的心得:
在實驗開始階段我們組直接焊接了三級放大電路,由于對電路和運(yùn)放缺少了解使用的運(yùn)放是單級放大類型的,導(dǎo)致實驗出現(xiàn)了很大的問題。在老師的指導(dǎo)下,用LM324制作了一個一級放大電路,放大的目的達(dá)到了,可是接入后續(xù)的電路時由于輸入阻抗太小,直接影響了放大電路的效果。
在調(diào)整后,采取了二級放大電路。即先用LM324放大100倍,然后在放大的基礎(chǔ)上用LM324再放大10倍。使放大結(jié)果的輸入電壓很明顯,但是這樣的二級放大電路放大的穩(wěn)定度很差,在重量小于1KG的稱量范圍內(nèi)幾乎失調(diào)。
最后在老師的指導(dǎo)下用了OP07的三級放大電路。這樣的電路能達(dá)到高精度,低失真的效果,而且基本上可以認(rèn)為是線性的。最后用軟件擬合時基本上達(dá)到了設(shè)計時的效果。在這次的實驗中,對運(yùn)算放大器的認(rèn)識加深了很多,對電路的布局焊接時的焊接線頭等問題上得到了很大的提高。
2.2.8參考資料:
下面是op07參數(shù)資料的中文簡明說明:產(chǎn)品型號:OP07CP通道數(shù):1關(guān)斷功能:No
工作電壓Max.(V):36工作電壓Min.(V):6每通道IQ(典型值)(mA):5帶寬GBW(典型值)(MHz):0.600轉(zhuǎn)換速率(典型值)(V/us):0.300
輸入失調(diào)電壓(25℃)(Max.)(mV):0.150失調(diào)漂移(典型值)(uV/℃):0.500輸入偏置電流(Max.)(pA):7000共模抑制比(Min.)(dB):100噪聲電壓(典型值):9.800單電源供電:No滿幅:No
封裝/溫度(℃):PDIP-8/0~70描述:精密,低噪聲運(yùn)放
2.3、AD轉(zhuǎn)換部分
為使硬件部分順利完整工作,特對各個部分進(jìn)行單獨(dú)的調(diào)試,以下是AD轉(zhuǎn)換部分:
由于實驗條件限制本次實驗選用ADC0809芯片,內(nèi)部結(jié)構(gòu)示意圖及管腳參數(shù)如下:
2.3.1主要特性
1)8路輸入通道,8位A/D轉(zhuǎn)換器,即分辨率為8位。
2)具有轉(zhuǎn)換起?刂贫恕
3)轉(zhuǎn)換時間為100μs(時鐘為640kHz時),130μs(時鐘為500kHz時)4)單個+5V電源供電
5)模擬輸入電壓范圍0~+5V,不需零點(diǎn)和滿刻度校準(zhǔn)。6)工作溫度范圍為-40~+85攝氏度7)低功耗,約15mW。
2.3.2內(nèi)部結(jié)構(gòu)
ADC0809是CMOS單片型逐次逼近式A/D轉(zhuǎn)換器,內(nèi)部結(jié)構(gòu)如圖13.22所示,
它由8路模擬開關(guān)、地址鎖存與譯碼器、比較器、8位開關(guān)樹型A/D轉(zhuǎn)換器、逐次逼近寄存器、邏輯控制和定時電路組成。
2.3.3外部特性(引腳功能)
ADC0809芯片有28條引腳,采用雙列直插式封裝,如圖13.23所示。下面
說明各引腳功能。
IN0~I(xiàn)N7:8路模擬量輸入端。2-1~2-8:8位數(shù)字量輸出端。
ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路ALE:地址鎖存允許信號,輸入,高電平有效。
START:A/D轉(zhuǎn)換啟動脈沖輸入端,輸入一個正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0809復(fù)位,下降沿啟動A/D轉(zhuǎn)換)。
EOC:A/D轉(zhuǎn)換結(jié)束信號,輸出,當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸出一個高電平(轉(zhuǎn)換期間一直為低電平)。
OE:數(shù)據(jù)輸出允許信號,輸入,高電平有效。當(dāng)A/D轉(zhuǎn)換結(jié)束時,此端輸入一個高電平,才能打開輸出三態(tài)門,輸出數(shù)字量。
CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ。REF(+)、REF(-):基準(zhǔn)電壓。Vcc:電源,單一+5V。GND:地。
2.3.4AD單獨(dú)測試電路圖
電路仿真及連接如圖所示:
由于此次使用AD是一路信號輸入,八路信號輸出,而AD0809基準(zhǔn)電壓為5V。5/256=0.195
所以輸入電壓每增加0.195V輸出的BCD碼就加1,在該次調(diào)試中由LED的亮滅直觀的現(xiàn)實。
2.3.4AD單獨(dú)測試調(diào)試程序:
#includeunsignedchardispcount;
sbitST=P3^0;sbitOE=P3^1;sbitEOC=P3^2;
unsignedcharchannel=0xbc;//IN3unsignedchargetdata;unsignedinti;
voidmain(void){
P3=channel;
while(1){
ST=0;ST=1;ST=0;
for(i=0;iwhile(EOC==0);OE=1;
getdata=P0;OE=0;P1=P0;}}
2.3、液晶顯示部分
液晶顯示相對比較簡單,利用單片機(jī)輸入數(shù)據(jù)后即可顯示唯有亮度需要調(diào)節(jié),如圖在三腳初加了滑動變阻器,旋動它是液晶顯示在比較適合的亮度,最后的阻值的1.7k歐姆
引腳1符號VSS功能說明接地23VDDV0接電源(+5V)液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度)。RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器。R/W為讀寫信號線,高電平(1)時進(jìn)行讀操作,低電平(0)時進(jìn)行寫操作。E(或EN)端為使能(enable)端,下降沿使能。低4位三態(tài)、雙向數(shù)據(jù)總線0位(最低位)低4位三態(tài)、雙向數(shù)據(jù)總線1位低4位三態(tài)、雙向數(shù)據(jù)總線2位低4位三態(tài)、雙向數(shù)據(jù)總線3位高4位三態(tài)、雙向數(shù)據(jù)總線4位高4位三態(tài)、雙向數(shù)據(jù)總線5位高4位三態(tài)、雙向數(shù)據(jù)總線6位高4位三態(tài)、雙向數(shù)據(jù)總線7位(最高位)(也是busyflag)背光電源正極背光電源負(fù)極45678910111213141516
RSR/WEDB0DB1DB2DB3DB4DB5DB6DB7BLABLK
2.4蜂鳴器部分
蜂鳴器電路與仿真電路不同,因為單片機(jī)提供的電流不足以使得蜂鳴器鳴叫,所以需要加NPN三極管,電路如圖
原先不加NPN時進(jìn)入蜂鳴器的電流為0.016mA,加了以后為16.96mA.
三、測試方法、測試數(shù)據(jù)3.1、重量與電壓的對應(yīng)關(guān)系
測試方法:給壓力傳感器通上需要的電壓,連接上放大電路,在壓力傳感器上放上不同重量的砝碼,用萬用表測量,記錄相應(yīng)的數(shù)值稱重物體的重量(g)輸出信號(mv)放大信號(v)放大倍數(shù)00.280.09321201*.450.1864134000.660.277419.75000.760.3196420.56000.860.3606419.310001.260.5463433.61201*.470.642436.714001.670.732438.315701.840.813441.8201*2.271.003441.831403.441.533445.636403.941.762447.251405.452.443448.361406.452.903450.1
3.2、數(shù)據(jù)擬合示意圖
測量完相應(yīng)的數(shù)據(jù)時候?qū)?shù)據(jù)擬合示意圖如圖所示:
3.3、擬合數(shù)據(jù)方程
weight=2.18V-0.2
四、程序及分析
#include#include#include
#defineOUTPORTP2//AD與C51接口#defineLCDPORTP0//液晶與C51接口bitb_DATransform=0;typedefbitBOOL;
sbitSTART=P3^4;//地址鎖存允許信號(ALE)與轉(zhuǎn)化啟動信號(START),0->1->0:啟動AD轉(zhuǎn)換
sbitEOC=P3^3;//輸出允許信號
sbitLCDRS=P3^5;//寄存器選擇信號:0--數(shù)據(jù)寄存器;1--指令寄存器sbitLCDRW=P3^6;//讀寫信號:1--讀LCD;0--寫LCDsbitLCDE=P3^7;//片選信號sbitkeyadd=P1^0;//單價上調(diào)sbitkeydown=P1^1;//單價下調(diào)sbitbeep=P1^3;//報警接口
unsignedcharuc_Clock=0;//定時器0中斷計數(shù)unsignedintuiResult;//電壓unsignedinttemp;
unsignedcharsetdanjia=50;//單價5.0元/千克unsignedchardanjiashi,danjiage;//單價個位,十分位unsignedintjiage;//價格unsignedintprice,weight;unsignedintpricedata[3];
unsignedcharucaNumber[3],ucCount;floatweightc;
unsignedintshuju[4];unsignedinti,j;
/*-----------LCD的延遲子程序-----------*/voidvDelay(){
unsignedintuiCount;
for(uiCount=0;uiCountwhile(EOC==0);//等待轉(zhuǎn)換結(jié)束。
uiResult=OUTPORT;//出入轉(zhuǎn)換結(jié)果。
uiResult=(100*uiResult)/51;//處理運(yùn)算結(jié)果。電壓的100倍,是為了顯示小數(shù)后兩位
temp=uiResult;returnuiResult;}
/*--------LCD的判忙程序----------*/BOOLlcd_bz(){
BOOLresult;LCDRS=0;
LCDRW=1;//RS為低,RW為高時--判忙LCDE=1;_nop_();_nop_();_nop_();_nop_();
result=(BOOL)(P0&0x80);LCDE=0;
returnresult;}
/*------------LCD的寫指令程序-----------*/voidvWriteCMD(unsignedcharucCommand){
while(lcd_bz());LCDRS=0;
LCDRW=0;//RS為低,Rw為低時--可以寫入指令或顯示地址LCDE=0;
LCDPORT=ucCommand;vDelay();LCDE=1;vDelay();LCDE=0;}
/*-----------------LCD的寫數(shù)據(jù)程序-----------*/voidvWriteData(unsignedcharucData){
while(lcd_bz());LCDRS=1;
LCDRW=0;//RS為高,Rw為低時--可以寫入數(shù)據(jù)LCDE=0;
LCDPORT=ucData;vDelay();LCDE=1;vDelay();LCDE=0;}
/*-----------LCD的初始程序-----------*/voidvdInitialize(){
vWriteCMD(0x38);//工作方式:00111000,總線8位,顯示2行,5*7總針delay1ms(1);
vWriteCMD(0x06);//寫入數(shù)據(jù)后光標(biāo)右移delay1ms(1);
vWriteCMD(0x01);//清屏delay1ms(1);
vWriteCMD(0x0c);//開啟光標(biāo),閃爍delay1ms(1);}
/*--------------LCD的字符表程序--------------*/voidvShowOneChar(unsignedcharucChar){switch(ucChar)//1602液晶模塊內(nèi)部的字符存儲器(CGROM)//存儲的點(diǎn)陣字符圖形,且每一個字符都有一個固定的代碼{case"":vWriteData(0x20);break;case"!":vWriteData(0x21);break;case""":vWriteData(0x22);break;case"#":vWriteData(0x23);break;case"$":vWriteData(0x24);break;case"%":vWriteData(0x25);break;case"&":vWriteData(0x26);break;case">":vWriteData(0x27);break;case"(":vWriteData(0x28);break;case")":vWriteData(0x29);break;case"*":vWriteData(0x20);break;case"+":vWriteData(0x2A);break;case"-":vWriteData(0x2D);break;case"/":vWriteData(0x2F);break;case"=":vWriteData(0x3D);break;case"
case".":vWriteData(0x2E);break;case":":vWriteData(0x3A);break;case"0":vWriteData(0x30);break;case"1":vWriteData(0x31);break;case"2":vWriteData(0x32);break;case"3":vWriteData(0x33);break;case"4":vWriteData(0x34);break;case"5":vWriteData(0x35);break;case"6":vWriteData(0x36);break;case"7":vWriteData(0x37);break;case"8":vWriteData(0x38);break;case"9":vWriteData(0x39);break;case"A":vWriteData(0x41);break;case"B":vWriteData(0x42);break;case"C":vWriteData(0x43);break;case"D":vWriteData(0x44);break;case"E":vWriteData(0x45);break;case"F":vWriteData(0x46);break;case"G":vWriteData(0x47);break;case"H":vWriteData(0x48);break;case"I":vWriteData(0x49);break;case"J":vWriteData(0x4A);break;case"K":vWriteData(0x4B);break;case"L":vWriteData(0x4C);break;case"M":vWriteData(0x4D);break;case"N":vWriteData(0x4E);break;case"O":vWriteData(0x4F);break;case"P":vWriteData(0x50);break;case"Q":vWriteData(0x51);break;case"R":vWriteData(0x52);break;case"S":vWriteData(0x53);break;case"T":vWriteData(0x54);break;case"U":vWriteData(0x55);break;case"V":vWriteData(0x56);break;case"W":vWriteData(0x57);break;case"X":vWriteData(0x58);break;case"Y":vWriteData(0x59);break;case"Z":vWriteData(0x5A);break;case"a":vWriteData(0x61);break;case"b":vWriteData(0x62);break;case"c":vWriteData(0x63);break;case"d":vWriteData(0x64);break;case"e":vWriteData(0x65);break;case"f":vWriteData(0x66);break;case"g":vWriteData(0x67);break;case"h":vWriteData(0x68);break;case"i":vWriteData(0x69);break;case"j":vWriteData(0x6A);break;case"k":vWriteData(0x6B);break;case"l":vWriteData(0x6C);break;case"m":vWriteData(0x6D);break;case"n":vWriteData(0x6E);break;case"o":vWriteData(0x6F);break;case"p":vWriteData(0x70);break;case"q":vWriteData(0x71);break;case"r":vWriteData(0x72);break;case"s":vWriteData(0x73);break;case"t":vWriteData(0x74);break;case"u":vWriteData(0x75);break;case"v":vWriteData(0x76);break;case"w":vWriteData(0x77);break;case"x":vWriteData(0x78);break;case"y":vWriteData(0x79);break;case"z":vWriteData(0x7A);break;default:break;}}
/*------------------字符串的顯示子程序-------------*/voidvShowChar(unsignedcharucaChar[]){
unsignedcharucCount;for(ucCount=0;;ucCount++){
vShowOneChar(ucaChar[ucCount]);//輸出連續(xù)一串字符if(ucaChar[ucCount+1]=="\\0"){
break;}}}
/*------------------電壓顯示子程序-------------*/voidvShowVoltage(unsignedintuiNumber){
if(uiNumber>999)
uiNumber=999;//當(dāng)電壓大于1000,電壓輸出就是1000//把計算數(shù)字的每個位存入數(shù)組
ucaNumber[0]=uiNumber/100;//得到電壓的個位
ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10;得到電壓的個位
ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1];得到電壓的百分位
for(ucCount=0;ucCountshuju[0]=temp/1000+"0";//重量的十位
shuju[1]=(temp%1000)/100+"0";//重量的個位
shuju[2]=((temp%1000)%100)/10+"0";//重量的十分位shuju[3]=(((temp%1000)%100)%10)+"0";//重量的百分位}
/*-------------重量顯示子程序-----------*/voidshowweight(){
vWriteCMD(0x89);//重量的十位在LCD的位置vShowOneChar(shuju[0]);
vWriteCMD(0x8A);//重量的個位在LCD的位置vShowOneChar(shuju[1]);vWriteCMD(0x8B);//小數(shù)點(diǎn)vShowOneChar(0x2E);
vWriteCMD(0x8C);//重量的十分位在LCD的位置vShowOneChar(shuju[2]);
vWriteCMD(0x8D);//重量的百分位在LCD的位置vShowOneChar(shuju[3]);
vWriteCMD(0x8E);//重量的單位vShowChar("kg");}
/*----------乘法子程序------------*/voidpriceMUL(){
price=temp*((int)setdanjia);//重量*單價pricedata[0]=price/10000+"0";//價格的十位
pricedata[1]=(price%10000)/1000+"0";//價格的個位
pricedata[2]=((price%10000)%1000)/100+"0";//價格的十分位}
/*-------------總價顯示子程序----------*/voidshowjiage(){
vWriteCMD(0xCB);//價格的十位在LCD的位置vShowOneChar(pricedata[0]);
vWriteCMD(0xCC);//價格的個位在LCD的位置vShowOneChar(pricedata[1]);vWriteCMD(0xCE);//小數(shù)點(diǎn)
vShowOneChar(0x2E);//價格的十分位在LCD的位置vShowOneChar(pricedata[2]);}/*----------鬧鈴子程序---------*/voidbeepcompare(){
if(temp>=1000&&uiResult>11)//重量電壓的門限{
beep=1;}
elsebeep=0;}
/*----------鍵盤子程序----------*/voidkeyscan(){
if(keyadd==0){
Delay(10);//延時為了去抖動if(keyadd==0)//單價上調(diào){
setdanjia++;
if(setdanjia==100){
setdanjia=0;Delay(300);}}}
if(keydown==0)//單價下調(diào){
Delay(10);
if(keydown==0){
setdanjia--;if(setdanjia==0){
setdanjia=100;Delay(300);}}}}
/*-------------主程序-------------*/voidmain(){TMOD=0x01;TH0=0x3C;
TL0=0xB0;//初始值為50MSTR0=1;ET0=1;EA=1;
vdInitialize();beep=0;
vWriteCMD(0x80);//LC的初始位置vShowChar("Weight:");vWriteCMD(0xC4);vShowChar("V");while(1){
if(b_DATransform==1){
b_DATransform=0;vWriteCMD(0xC0);
vShowVoltage(uiADTransform());}
beepcompare();//調(diào)用報警子程序showdanjia();//調(diào)用單價顯示子程序keyscan();//調(diào)用鍵盤子程序
weightconv();//調(diào)用重量數(shù)據(jù)處理子程序showweight();//調(diào)用重量顯示子程序priceMUL();//調(diào)用乘法子程序
showjiage();//調(diào)用價格顯示子程序}}
/*----------中斷程序-----------*/voidt0()interrupt1{
if(uc_Clock==0){
uc_Clock=5;
b_DATransform=1;//每250MS從AD讀取一次數(shù)據(jù)}
elseuc_Clock--;TH0=0x3C;TL0=0xB0;}五、結(jié)果與分析
最后測量三組數(shù)據(jù):當(dāng)砝碼為0g的時候液晶顯示為0g,當(dāng)砝碼為500g的時候液晶顯示為470g,誤差為百分之六;當(dāng)砝碼為1.57Kg的時候液晶顯示為1.56Kg,誤差為百分之零點(diǎn)六。
產(chǎn)生誤差的原因分析為以下幾點(diǎn):
1、砝碼本身是自己制作的,存在一點(diǎn)的誤差;
2、測量使用的萬用表本身存在誤差,特別是在毫伏檔的時候;
3、線性擬合本身有誤差,我們完全按照直線顯示,事實上不是線性的;4、液晶顯示的是保留2位小數(shù)的,省略部分也會造成誤差
參考文獻(xiàn):
康華光電子技術(shù)基礎(chǔ)(第五版)北京高等教育出版社,201*李廣弟單片機(jī)基礎(chǔ)(第三版)北京北京航空航天大學(xué)出版社
百度文庫:
附件:總電路圖
友情提示:本文中關(guān)于《數(shù)字電子秤實訓(xùn)報告》給出的范例僅供您參考拓展思維使用,數(shù)字電子秤實訓(xùn)報告:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。