版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
摘要電子秤是日常生活中常用的稱重設(shè)備,廣泛應(yīng)用于超市、大中型商場(chǎng)、物流配送中心。電子秤在結(jié)構(gòu)和原理上取代了以杠桿平衡為原理的傳統(tǒng)機(jī)械式稱量工具。相比傳統(tǒng)的機(jī)械式稱量工具,電子秤具有稱量精度高、裝機(jī)體積小、應(yīng)用范圍廣、易于操作使用等優(yōu)點(diǎn),在外形布局、工作原理、結(jié)構(gòu)和材料上都是全新的計(jì)量衡器。微電子技術(shù)的發(fā)展為電子秤提出了改進(jìn)的空間。電子秤向著簡(jiǎn)單、便宜發(fā)展,智能化、精確的電子秤成為了人們的追求。本簡(jiǎn)易電子秤以常見(jiàn)的AT89C51為核心,以電阻應(yīng)變片采集應(yīng)變數(shù)據(jù),通過(guò)HX711放大并進(jìn)行AD轉(zhuǎn)換供單片機(jī)處理,用LCD1602顯示所測(cè)量的重量,同時(shí)本電子秤系統(tǒng)還提供單價(jià)設(shè)置進(jìn)行求價(jià)格的計(jì)算以及去皮功能,通過(guò)一些簡(jiǎn)單低成本的元器件就完成了一個(gè)功能齊全的電子秤的制作,將傳統(tǒng)電子秤的成本進(jìn)行了縮減。關(guān)鍵詞:電阻應(yīng)變片AT89C51HX711電子秤第一章方案與論證一、方案類型(一)方案一通過(guò)單片機(jī)為主控芯片,用應(yīng)變片采集應(yīng)變數(shù)據(jù),通過(guò)專用儀表放大器INA128對(duì)采集到的信號(hào)進(jìn)行放大,在配上模數(shù)轉(zhuǎn)換芯片對(duì)放大了的模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),傳入單片機(jī)中進(jìn)行數(shù)據(jù)處理,找出函數(shù)關(guān)系并轉(zhuǎn)化關(guān)系。通過(guò)數(shù)字信號(hào)轉(zhuǎn)化為重量值顯示在LDC1602上,同時(shí)通過(guò)鍵盤進(jìn)行數(shù)據(jù)輸入,輸入單價(jià)、去皮等功能。通過(guò)蜂鳴器和二極管實(shí)現(xiàn)超額報(bào)警功能。(二)方案二以單片機(jī)為主控芯片,應(yīng)變片采集應(yīng)變數(shù)據(jù),將放大和模數(shù)轉(zhuǎn)換用HX711芯片來(lái)同時(shí)進(jìn)行實(shí)現(xiàn),將模擬量傳入主控芯片單片機(jī)中進(jìn)行數(shù)據(jù)轉(zhuǎn)換,通過(guò)函數(shù)關(guān)系轉(zhuǎn)換為重量顯示到LED上或者LCD1602上,同時(shí)通過(guò)鍵盤按鍵進(jìn)行數(shù)據(jù)輸入,輸入單價(jià)、去皮等功能,并通過(guò)蜂鳴器進(jìn)行數(shù)據(jù)處理。(三)方案三運(yùn)用PLC作為主控制器,PLC運(yùn)用廣泛,它具有接線簡(jiǎn)單,通用性好,編程簡(jiǎn)單,使用方便,可連接為控制網(wǎng)絡(luò)系統(tǒng),易于安裝,便于維護(hù)等優(yōu)點(diǎn)。二、方案論證與選定運(yùn)用51單片機(jī)作為主控芯片,AT89C51是一種高效微控制器。它為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。但方案一中,放大和AD轉(zhuǎn)換模塊為獨(dú)立模塊,它們的獨(dú)立設(shè)計(jì)費(fèi)事費(fèi)力且還會(huì)存在誤差較大的情況。相比于方案一,方案二一HX711作為放大和AD轉(zhuǎn)換芯片,簡(jiǎn)化了電路結(jié)構(gòu)。HX711是一款專為高精度電子秤設(shè)計(jì)的24位AD轉(zhuǎn)換器芯片。與同類型其他芯片相比,該芯片集成了包括文雅電源、片內(nèi)時(shí)鐘振蕩器等其它同類型芯片所需要的外圍電路,具有集成度高、響應(yīng)速度快、抗干擾性強(qiáng)等優(yōu)點(diǎn)。精度方面很好的滿足了題目中的要求,相比于方案一,方案二根據(jù)可行性。方案三采用PLC作為主控芯片,但其價(jià)格昂貴,違背了我們制作電子秤的簡(jiǎn)單、便捷、便宜的原則,所以我們并沒(méi)考慮選用PLC作為主控芯片。綜合考慮后,我們決定選擇方案二來(lái)進(jìn)行本簡(jiǎn)易電子秤系統(tǒng)的設(shè)計(jì)與制作。通過(guò)精度、價(jià)格、簡(jiǎn)單程度出發(fā)考慮,方案二是最合適的。(四)鍵盤方案針對(duì)題目要求,需要我們輸入單間進(jìn)行計(jì)算,單價(jià)包含0-9十個(gè)數(shù)字,數(shù)字鍵占用十個(gè),確定和清除占用兩個(gè),去皮占用一個(gè),復(fù)位占用一個(gè)。去皮鍵、復(fù)位鍵、清除鍵單獨(dú)用一個(gè)IO口引出;將十個(gè)數(shù)字鍵、確定鍵、計(jì)算總價(jià)鍵十二個(gè)鍵制成3x4的矩陣鍵盤[2]。通過(guò)設(shè)計(jì)成矩陣鍵盤的模式而減少單片機(jī)IO口的占用,為其他功能騰出空間。圖2-43x4矩陣鍵盤第三章電路設(shè)計(jì)一、單片機(jī)最小系統(tǒng)電路AT89C51是片內(nèi)有ROM/EPROM的單片機(jī),其最小系統(tǒng)簡(jiǎn)單、可靠,僅由時(shí)鐘電路、復(fù)位電路、電源電路構(gòu)成。(一)時(shí)鐘電路AT89C51雖然有內(nèi)部振蕩電路,但要形成時(shí)鐘,必須外部附加電路。AT89C51單片機(jī)的時(shí)鐘產(chǎn)生方法有兩種。內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本設(shè)計(jì)采用最常用的內(nèi)部時(shí)鐘方式,即用外接晶體和電容組成的并聯(lián)諧振回路。振蕩晶體可在1.2MHZ到12MHZ之間選擇。電容取值對(duì)振蕩頻率輸出的穩(wěn)定性、大小、振蕩電路起振速度有少許影響,可在20pF到100pF之間取值。所以本設(shè)計(jì)中,振蕩晶體選擇12MHZ,電容選擇22pF。(二)復(fù)位電路AT89C51的復(fù)位電路是由外部的復(fù)位電路來(lái)實(shí)現(xiàn)的。只需給復(fù)位引腳RST加上大于2個(gè)機(jī)器周期的高電平就可使其復(fù)位。復(fù)位電路通常采用上電自動(dòng)復(fù)位和按鍵復(fù)位兩種方式。本設(shè)計(jì)就是用的按鍵手動(dòng)復(fù)位。其中電平復(fù)位是通過(guò)RST端經(jīng)電阻與電源Vcc接通而實(shí)現(xiàn)的。(三)電源電路AT89C51的電源腳分別為20腳Vss和40腳Vcc。這兩個(gè)腳分別接地和+5V直流電源,31腳EA為內(nèi)外存儲(chǔ)器的控制端,接+5V允許訪問(wèn)外部存儲(chǔ)器。圖3-1晶振電路和復(fù)位電路二、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ò)程。圖3-2HX711模塊電路三、LCD1602顯示電路本設(shè)計(jì)采用的是LCD1602顯示,LCD1602液晶也叫1602字符型液晶它是一種專門用來(lái)顯示字母、數(shù)字、符號(hào)等的點(diǎn)陣型液晶模塊它有若干個(gè)5×7或者5×11等點(diǎn)陣字符位組成,每個(gè)點(diǎn)陣字符位都可以顯示一個(gè)字符。每位之間有一個(gè)點(diǎn)距的間隔每行之間也有間隔起到了字符間距和行間距的作用,正因?yàn)槿绱怂运荒茱@示圖形。1602LCD是指顯示的內(nèi)容為16×2,即可以顯示兩行,每行16個(gè)字符液晶模塊。圖3-3LCD1602電路四、總設(shè)計(jì)電路圖3-4系統(tǒng)總電路第四章測(cè)試方法與測(cè)試結(jié)果一、測(cè)試方法由于本系統(tǒng)是一個(gè)簡(jiǎn)易電子秤系統(tǒng),所以最好的測(cè)量方法就是通過(guò)測(cè)量標(biāo)準(zhǔn)砝碼的質(zhì)量來(lái)比對(duì)本電子秤系統(tǒng)的測(cè)量顯示值。以測(cè)量結(jié)果顯示值減去砝碼質(zhì)量再除以砝碼質(zhì)量得出誤差百分比,同時(shí)也得出精確程度。(一)鍵盤測(cè)量與LCD1602測(cè)量鍵盤與LCD1602的測(cè)量我們放在一起進(jìn)行,編寫按鍵與LCD1602顯示函數(shù),將對(duì)應(yīng)按鍵編碼成0-9,按下按鍵通過(guò)LCD1602來(lái)進(jìn)行顯示所按下鍵盤的數(shù)值,通過(guò)這種方法我們同時(shí)測(cè)量了鍵盤與LCD1602的功能,保證了電路焊接的正確性。(二)模數(shù)轉(zhuǎn)換對(duì)應(yīng)數(shù)值測(cè)量將HX711連接到電路中,通過(guò)LCD1602來(lái)顯示轉(zhuǎn)換后的數(shù)值信號(hào),依次將10g、20g、30g、40g到500g的砝碼放到秤盤上,依次獨(dú)處LCD1602的顯示數(shù)值,將這五十組數(shù)據(jù)放入到Excel表格中,通過(guò)Excel繪制線性圖形。通過(guò)線性圖形擬合出線性函數(shù)關(guān)系。(三)測(cè)量質(zhì)量檢測(cè)分別用10g、20g、50g、100g、200g、500g的砝碼放到本簡(jiǎn)易電子系統(tǒng)的秤盤上,比對(duì)測(cè)量顯示值,求出誤差百分比和測(cè)量精度。除此之外,我們還用一個(gè)10克、兩個(gè)2克砝碼組成一個(gè)五十克砝碼;一個(gè)10克砝碼、兩個(gè)20克砝碼和一個(gè)50克砝碼組成一個(gè)100克方法等組合放在秤盤中心進(jìn)行測(cè)量,以此來(lái)確定本簡(jiǎn)易電子秤系統(tǒng)的精確度。二、測(cè)量結(jié)果(一)AD轉(zhuǎn)換后數(shù)值信號(hào)值與砝碼質(zhì)量的對(duì)應(yīng)關(guān)系表4-1AD值與砝碼質(zhì)量(g)的對(duì)應(yīng)關(guān)系A(chǔ)D值9174908890038919883387498663857784948408重量0102030405060708090AD值8326823981538069798378987814772576417553重量100110120130140150160170180190AD值7470738573007218713070466961687467926702重量200210220230240250260270280290AD值6626654164556370629462086123603659545873重量300310320330340350360370380390AD值5780569556155535545553715290521251335049重量400410420430440450460470480490通過(guò)表中的數(shù)據(jù),通過(guò)Excel折線圖進(jìn)行擬合,擬合出的結(jié)果為數(shù)據(jù)呈現(xiàn)線性關(guān)系,這滿足應(yīng)變片的性質(zhì),得出的轉(zhuǎn)換函數(shù)為:y=0.1185x+1085.8145。圖4-1折線圖(二)簡(jiǎn)易電子秤測(cè)量結(jié)果與標(biāo)準(zhǔn)砝碼比對(duì)關(guān)系在確定了函數(shù)轉(zhuǎn)換關(guān)系之后,電子秤的制作基本快要完成,將函數(shù)關(guān)系編寫到程序中就實(shí)現(xiàn)電子秤的制作。將10g-500g依次增長(zhǎng)10g的砝碼放入到秤盤中,比對(duì)標(biāo)準(zhǔn)砝碼值與測(cè)量顯示值之間的關(guān)系發(fā)現(xiàn)誤差基本控制在1g之內(nèi),0-50g期間大致控制在了0.5g的范圍內(nèi),基本完成了題目所給要求。三、測(cè)量結(jié)論本簡(jiǎn)易電子秤系統(tǒng)達(dá)到了題目要求,擁有輸入單價(jià)求價(jià)格的功能,同時(shí)還能滿足價(jià)格的疊加在單片機(jī)芯片中計(jì)算而不用,輸入一個(gè)記錄一個(gè)值那么麻煩。同時(shí)本電子稱系統(tǒng)也完成了去皮功能,清除,復(fù)位功能,甚至還設(shè)置了超上限報(bào)警裝置報(bào)警值上限為550g。參考文獻(xiàn)[1]胡向東,李銳,耿道渠等[M].傳感器與檢測(cè)技術(shù)第2版.北京.機(jī)械工業(yè)出版社.2013.37-38[2]郭天祥.51單片機(jī)C語(yǔ)言教程[M].北京.電子工業(yè)出版社.2009.86附錄一、HX711代碼#include"lcd1602.h"#include<intrins.h>#include"hx711.h"#include<reg52.h>sbitADDO=P2^4;sbitADSK=P2^3;/**************************************************************externunsignedlongReadAD(void);..unsignedlongdata;data=ReadAD();.-------------------------------------------------------------*/ulongReadCount(void){ ulongCount; uchari; ADSK=0;//使能AD(PD_SCK置低) Count=0; while(ADDO);//AD轉(zhuǎn)換未結(jié)束則等待,否則開(kāi)始讀取 for(i=0;i<24;i++) { ADSK=1;//PD_SCK置高(發(fā)送脈沖) Count=Count<<1;//下降沿來(lái)時(shí)變量Count左移一位,右側(cè)補(bǔ)零 ADSK=0;//PD_SCK置低 if(ADDO)Count++; } ADSK=1; Count=Count^0x800000;//第25個(gè)脈沖下降沿來(lái)時(shí),轉(zhuǎn)換數(shù)據(jù) ADSK=0; return(Count);}二、鍵盤代碼#include<reg52.h>#include"lcd1602.h"#include"key.h"ucharnum,s=5;ucharprice=0;ucharcodetable1[]={"0123456789"};str2[]={"Price:"};ucharcodestr3[]={"Total:"};voiddisplay_cost(ucharprice)//顯示單項(xiàng)稱量?jī)r(jià)格{ ucharw[5],i=5; w[0]=price/10000; w[1]=price%10000/1000; w[2]=price%1000/100; w[3]=price%100/10; w[4]=price%10; while(i!=10) { DisplayOneChar(i,1,w[i-5]); i++; }}/**********鍵盤掃描子程序************///voidtemer1()interrupt3voidkeyscan(void){ uchartemp; P1=0XFE; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) { case0xbe:num=1;s++;break; case0xde:num=2;s++;break; case0xee:num=3;s++;break; //case0x7e:num=4;k='/';s++;break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } price=price*10+num; DisplayOneChar(s,1,table1[num]); } } P1=0XFd; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) { case0xbd:num=4;s++;break; case0xdd:num=5;s++;break; case0xed:num=6;s++;break; //case0x7d:num=8;k='*';s++;break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } price=price*10+num; DisplayOneChar(s,1,table1[num]); } } P1=0XFb; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) { case0xbb:num=7;s++;break; case0xdb:num=8;s++;break; case0xeb:num=9;s++;break; //case0x7b:num=12;k='-';s++;break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } DisplayOneChar(s,1,table1[num]); } } P1=0XF7; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) { case0xb7:num='-';s++;break; case0xd7:num=0;s++;break; case0xe7:num='=';s++;break; //case0x77:num=16;k='+';s++;break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } if(num==0) { price=price*10+num; DisplayOneChar(s,1,table1[num]); } elseif(num=='-') { s=5; price=0; DisplayListChar(0,1,16,str2); } else { DisplayListChar(0,1,16,str3); display_cost(price); } } }}三、LCD1602#include<reg51.h>#include<intrins.h>#include"lcd1602.h"sbitrs=P2^0;sbitLCM_RW=P2^1;sbitlcden=P2^2;/********延時(shí)程序K*1ms,12000mhz****************/voiddelay(uintk){ uinti,j; for(i=0;i<k;i++) for(j=0;j<100;j++);}/*********寫指令到LCM子函數(shù)****************/voidWriteCommandLCM(ucharcom){ P0=com; rs=0; lcden=0; delay(1); lcden=1; delay(1); lcden=0;}/************寫數(shù)據(jù)到LCM子函數(shù)****************/voidWriteDataLCM(uchardate){ P0=date; rs=1; lcden=0; delay(1); lcden=1; delay(1); lcden=0;}/*************LCM初始化子函數(shù)****************/voidinitLCM(){ WriteCommandLCM(0x38); delay(10); WriteCommandLCM(0x0f); delay(10); WriteCommandLCM(0x06); delay(10); WriteCommandLCM(0x01); delay(10);}/************顯示指定坐標(biāo)的一個(gè)字符子函數(shù)********/voidDisplayOneChar(ucharX,ucharY,ucharDData){ Y&=0x01; X&=0x0f; if(Y) X|=0x40;//若y為1(顯示第二行),地址碼加0x40 X|=0x80;//指令碼為地址碼+0x80 WriteCommandLCM(X); WriteDataLCM(DData);}/********顯示指定坐標(biāo)的一串字符子函數(shù)********/voidDisplayListChar(ucharX,ucharY,ucharlength,ucharcode*DData){ ucharListLength=0; Y&=0x01; X&=0x0f; while(X<length) { DisplayOneChar(X,Y,DData[ListLength]); ListLength++; X++; }}四、主函數(shù)#include<reg51.h>#include<intrins.h>#include<absacc.h>#include<math.h>#include"lcd1602.h"#include"hx711.h"sbitspeaker=P2^7;sbitqupi=P3^7;sbitqingling=P3^6;intweight;ucharnum,s=5;ulongad_data=0;ulongcost=0,total=0;ulongprice=0;ucharflag_ok=0;//ok鍵的按鍵次數(shù)ucharpi=0;ucharflag_dian=0,dian=1;//小數(shù)點(diǎn)的位數(shù),和小數(shù)點(diǎn)標(biāo)志ucharflag_dian_all=0;uchardian_max=1;//最大的點(diǎn)的位數(shù)ucharflag_jian=0;ucharcha=0,flag_jia=0,flag_jian;ucharcodestr0[]={"Weight:g"};ucharcodestr1[]={"cost:"};ucharcodestr2[]={"Price:"};ucharcodestr3[]={"Total:"};ucharcodetable1[]={"0123456789"};voidalarm(void);voidkeyscan(void);//鍵盤掃描函數(shù)voiddisplay_cost(ulongprice)//顯示單項(xiàng)稱量?jī)r(jià)格{ ucharw[5],i,j,wei; w[0]=price/10000; w[1]=price%10000/1000; w[2]=price%1000/100; w[3]=price%100/10; w[4]=price%10; if(flag_ok==1) { wei=5;i=5;// if(flag_dian==1)// j=11;// else// j=10; while(wei!=11) {// if(flag_dian==1&&wei==10-dian) if(wei==10-dian) DisplayOneChar(wei,1,'.'); else { DisplayOneChar(wei,1,table1[w[i-5]]); i++; } wei++; } } else { wei=6;i=6;// if(flag_dian_all==1)// j=12;// else// j=11; while(wei!=12) {// if(flag_dian_all==1&&wei==11-dian_max) if(wei==11-dian_max) DisplayOneChar(wei,1,'.'); else { DisplayOneChar(wei,1,table1[w[i-6]]); i++; } wei++; } }}voidad_change(ulongprice){ ucharw[5],i; ucharge,bai,shi,qian; intaver=0; doublez=0; w[0]=price/10000000; w[1]=price%10000000/1000000; w[2]=price%1000000/100000; w[3]=price%100000/10000; w[4]=price%10000/1000;// DisplayOneChar(0,1,table1[w[0]]);// DisplayOneChar(1,1,table1[w[1]]);// DisplayOneChar(2,1,table1[w[2]]);// DisplayOneChar(3,1,table1[w[3]]);// DisplayOneChar(4,1,table1[w[4]]); for(i=0;i<5;i++) { z=z*10+w[i]; }// weight=(1093.8-0.1196*z)*10.0;//初始// aver+=weight; weight=(1085.8-0.1185*z)*10.0;//第二次 aver+=weight; weight=(1082.6-0.1182*z)*10.0;//第三次 aver+=weight; /***********第三次,,分段*******************/ if(z>8700) weight=(1079.6-0.1177*z)*10.0; elseif(z>8290) weight=(1087.5-0.1186*z)*10.0; elseif(z>7850) weight=(1077-0.1174*z)*10.0; elseif(z>7410) weight=(1068.3-0.1163*z)*10.0; elseif(z>7000) weight=(1080.8-0.1179*z)*10.0; elseif(z>6590) weight=(1086.1-0.1187*z)*10.0; elseif(z>6170) weight=(1100.4-0.1209*z)*10.0; elseif(z>5730) weight=(1080.8-0.1177*z)*10.0; elseif(z>5330) weight=(1114.9-0.1238*z)*10.0; else weight=(1114-0.1236*z)*10.0; aver+=weight; weight=aver/3;// if(weight<0)// {// cha=-weight;// flag_jia=1;// flag_jian=0;// weight=0;// }// elseif(weight<20)// {// cha=weight;// flag_jian=1;// flag_jia=0;// weight=0;// }// else// {// if(flag_jia==1)// weight=weight+cha;// if(flag_jian==1)// weight-=cha;// } qian=weight/1000; bai=weight%1000/100; shi=weight%100/10; ge=weight%10;DisplayOneChar(7,0,table1[qian]); DisplayOneChar(8,0,table1[bai]); DisplayOneChar(9,0,table1[shi]); DisplayOneChar(10,0,'.'); DisplayOneChar(11,0,table1[ge]); DisplayOneChar(12,0,'g');}/*************主程序***************/voidmain(){ delay(500);//系統(tǒng)延時(shí)500ms啟動(dòng) initLCM(); WriteCommandLCM(0x01);//清屏顯示 DisplayListChar(0,0,16,str0); DisplayListChar(0,1,16,str2); while(1) { ad_data=ReadCount(); ad_change(ad_data); keyscan(); alarm(); }}/*************報(bào)警值函數(shù)******************/voidalarm(void){ if(weight>5500) speaker=0;//則啟動(dòng)報(bào)警 else speaker=1;}/**********鍵盤掃描子程序************///voidtemer1()interrupt3voidkeyscan(void){ uchartemp; P1=0XFE; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) { case0xbe:num=1;s++;break; case0xde:num=2;s++;break; case0xee:num=3;s++;break; //case0x7e:num=4;k='/';s++;break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } if(flag_jian==0) { if(flag_dian==1) dian++; price=price*10+num; DisplayOneChar(s,1,table1[num]); } } } P1=0XFd; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) { case0xbd:num=4;s++;break; case0xdd:num=5;s++;break; case0xed:num=6;s++;break; //case0x7d:num=8;k='*';s++;break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } if(flag_jian==0) { if(flag_dian==1) dian++; price=price*10+num; DisplayOneChar(s,1,table1[num]); } } } P1=0XFb; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) { case0xbb:num=7;s++;break; case0xdb:num=8;s++;break; case0xeb:num=9;s++;break; //case0x7b:num=12;k='-';s++;break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } if(flag_jian==0) { if(flag_dian==1) dian++;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 土地租賃協(xié)議2023
- 部編版六年級(jí)語(yǔ)文上冊(cè)第八單元知識(shí)梳理填空
- (2024)1-4酸鈉鹽生產(chǎn)建設(shè)項(xiàng)目可行性研究報(bào)告(一)
- 2023年天津市益中學(xué)校高考語(yǔ)文模擬試卷
- 2023年家政服務(wù)項(xiàng)目融資計(jì)劃書
- 零食行業(yè)藍(lán)皮書
- 電力電纜模擬習(xí)題+參考答案
- 養(yǎng)老院老人生活設(shè)施維修人員管理制度
- 養(yǎng)老院老人訪客管理制度
- 2024年旅游產(chǎn)品銷售與推廣合同3篇
- 構(gòu)建以客戶需求為中心的組織架構(gòu)
- 進(jìn)入國(guó)際市場(chǎng)的戰(zhàn)略
- 大學(xué)廣播與主持培養(yǎng)主持能力
- 日本干細(xì)胞行業(yè)分析
- 《老年冠心病慢病管理指南(2023版)》解讀
- 消防員職業(yè)發(fā)展規(guī)劃
- 健康龍江行動(dòng)監(jiān)測(cè)評(píng)估報(bào)告
- 2023版道德與法治練習(xí)題庫(kù)匯編
- 人工肝的專科護(hù)理課件
- 艾滋病健康促進(jìn)項(xiàng)目計(jì)劃書
- 工程地質(zhì)勘察職業(yè)生涯規(guī)劃總結(jié)
評(píng)論
0/150
提交評(píng)論