版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
智能電子秤設(shè)計(jì)制作人:肖光敏【摘要】本系統(tǒng)采用單片機(jī)AT89S52為控制核心,實(shí)現(xiàn)電子秤的根本控制功能。系統(tǒng)的硬件局部包括最小系統(tǒng)板,數(shù)據(jù)采集、人機(jī)交互界面三大局部。最小系統(tǒng)局部主要是擴(kuò)展了外部數(shù)據(jù)存儲(chǔ)器,數(shù)據(jù)采集局部由壓力傳感器、信號(hào)的前級(jí)處理和A/D轉(zhuǎn)換局部組成。人機(jī)界面局部為鍵盤(pán)輸入,12864點(diǎn)陣式液晶顯示,可以直觀的顯示中文,使用方便。軟件局部應(yīng)用單片機(jī)C語(yǔ)言實(shí)現(xiàn)了本設(shè)計(jì)的全部控制功能,包括根本的稱重功能,和發(fā)揮局部的顯示購(gòu)物清單的功能,可以設(shè)置日期和重新設(shè)定10種商品的單價(jià),具有超重報(bào)警功能,由于系統(tǒng)資源豐富,還可以方便的擴(kuò)展其應(yīng)用【關(guān)鍵字】電阻應(yīng)變式傳感器A/D單片機(jī)液晶顯示【Abstract】Thesystemusesasingle-chipAT89S52forthecontrolofthecore,therealizationofelectronicscalesbasiccontrolfunctions.Systemhardware,includingtheminimumsystemboard,dataacquisition,threemajorhuman-computerinteractioninterface.MinimumSystemispartoftheexpansionoftheexternaldatastorage,dataacquisitioninpartbythepressuresensors,signalpre-processingandA/Dconversionparts.Partofman-machineinterfaceforkeyboardinput,12,864dot-matrixliquidcrystaldisplaycanshowtheChineseintuitiveandeasytouse.ApplicationsoftwareClanguagerealizationofsingle-chipdesignofallthecontrolfunctions,includingbasicweighingfunctions,Andplaytodisplayalistofsomeofthefeatures,youcansetthedateandre-settingunit10kindsofcommodities,withoverweightalarmfunction,thesystemisrichinresources,butalsofacilitatetheexpansionofitsapplication【Keyword】ResistancestrainsensorA/Dsingle-chipliquidcrystaldisplay【目錄】1、前言……………32、方案比擬及論證………………32.1題目要求…………………32.2主要器件的選擇……….42.2.1單片機(jī)主控制器件的選擇………….42.2.2稱重傳感器的選擇………………….42.2.3放大電路芯片的選擇…………………42.2.4A/D轉(zhuǎn)換芯片的選擇……………….52.2.5顯示器件的選擇…….63、硬件系統(tǒng)設(shè)計(jì)…………………63.1系統(tǒng)設(shè)計(jì)流程圖………….63.2、單元電路設(shè)計(jì)…………73.2、1單片機(jī)主控器件電路…………………73.2、2信號(hào)采集及放大電路……………….73.2、3A/D轉(zhuǎn)換電路…………93.2、4按鍵操作電路………93.2、512864液晶顯示電路………………104、軟件系統(tǒng)設(shè)計(jì)…………………114.1單元模塊設(shè)計(jì)……………114.1.1A/D轉(zhuǎn)換軟件設(shè)計(jì)………………114.1.2按鍵操作設(shè)計(jì)…………………124.1.312864液晶顯示…………………125、測(cè)試結(jié)果………136、總結(jié)……………137、參考文獻(xiàn)………138、附錄……………141.前言現(xiàn)代信息技術(shù)的三大根底是信息的采集、傳輸和處理技術(shù),即傳感技術(shù)、通信技術(shù)和計(jì)算機(jī)技術(shù),它們分別構(gòu)成了信息技術(shù)系統(tǒng)的“感官”、“神經(jīng)”和“大腦”。信息采集系統(tǒng)的首要部件是傳感器,且置于系統(tǒng)的最前端。在一個(gè)現(xiàn)代自動(dòng)檢測(cè)系統(tǒng)中,如果沒(méi)有傳感器.就無(wú)法監(jiān)測(cè)與控制表征生產(chǎn)過(guò)程中各個(gè)環(huán)節(jié)的各種參量,也就無(wú)法實(shí)現(xiàn)自動(dòng)控制。在現(xiàn)代技術(shù)中,傳感器實(shí)際上是現(xiàn)代測(cè)試技術(shù)和自動(dòng)化技術(shù)的根底科學(xué)技術(shù)的飛速開(kāi)展,由稱重傳感器制作的電子衡器也已廣泛地應(yīng)用到各行各業(yè),實(shí)現(xiàn)了對(duì)物料的快速、準(zhǔn)確的稱量。特別是隨著微處理機(jī)的出現(xiàn),工業(yè)生產(chǎn)過(guò)程自動(dòng)化程度化的不斷提高,稱重傳感器已成為過(guò)程控制中的一種必需的裝置,從以前不能稱重的大型罐、料斗等重量計(jì)測(cè)以及吊車(chē)秤、汽車(chē)秤等計(jì)測(cè)控制,到混合分配多種原料的配料系統(tǒng)、生產(chǎn)工藝中的自動(dòng)檢測(cè)和粉粒體進(jìn)料量控制等,都應(yīng)用了稱重傳感器,目前,稱重傳感器幾乎運(yùn)用到了所有的稱重領(lǐng)域。為了提高我們對(duì)數(shù)據(jù)采集及數(shù)據(jù)處理方面知識(shí)的處理能力,并且考慮到作品的實(shí)用性和個(gè)人興趣等因數(shù),我們?cè)O(shè)計(jì)了一臺(tái)基于51單片機(jī)的智能電子秤。本系統(tǒng)通過(guò)稱重傳感器采樣,A/D轉(zhuǎn)換后輸入單片機(jī),通過(guò)按鍵設(shè)置單價(jià)后,經(jīng)過(guò)單片機(jī)主控制器件的處理后,液晶上就會(huì)顯示:商品的名稱、數(shù)量、重量,單價(jià)、本次購(gòu)物總金額,同時(shí)語(yǔ)音播報(bào)以上內(nèi)容,到達(dá)了數(shù)字化、智能化的要求。2方案比擬與論證2.1題目要求2.1.1根本要求:1.采用簡(jiǎn)易鍵盤(pán)設(shè)置單價(jià),對(duì)采集到的代表重量的信號(hào)能同時(shí)顯示重量、金額和單價(jià)商品名稱;2.顯示的單位為公斤,最大稱重為80斤;3.單價(jià)的單位為元,最大金額數(shù)值為99.9元;4.總額累加計(jì)算功能;5.自擬4種商品名稱,能顯示購(gòu)物清單,清單內(nèi)容包括:商品名稱,數(shù)量,重量,單價(jià)、本次購(gòu)物總金額;2.1.2發(fā)揮局部:1.允許用電壓值可預(yù)置的直流電壓代表重量采集信號(hào),可以用代號(hào)表示購(gòu)物清單的各項(xiàng)信息。2.具有超重報(bào)警功能。2.2主要器件的選擇2.2.1單片機(jī)主控制器件的選擇本系統(tǒng)基于51系列單片機(jī)來(lái)實(shí)現(xiàn),因?yàn)橄到y(tǒng)需要大量的控制液晶顯示和鍵盤(pán)。不宜采用大規(guī)模可編程邏輯器件:CPLD、FPGA來(lái)實(shí)現(xiàn)。另外系統(tǒng)沒(méi)有其它高標(biāo)準(zhǔn)的要求,我們最終選擇了AT89S52通用的比擬普通單片機(jī)來(lái)實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)。內(nèi)部帶有8KB的程序存儲(chǔ)器,在外面擴(kuò)展了32K數(shù)據(jù)存儲(chǔ)器,以滿足系統(tǒng)要求。2.2.2稱重傳感器的選擇稱重傳感器按轉(zhuǎn)換方法分為光電式、液壓式、電磁力式、電容式、磁極變形式、振動(dòng)式、陀螺儀式、電陰應(yīng)變式等8類,以電阻應(yīng)變式使用最廣。
電阻應(yīng)變式稱重傳感器是利用電阻應(yīng)變片變形時(shí)其電阻也隨之改變的原理工作的,其內(nèi)部結(jié)構(gòu)如圖1所示。主要由彈性元件、電阻應(yīng)變片、測(cè)量電路和傳輸電纜4局部組成。電阻應(yīng)變片貼在彈性元件上,彈性元件受力變形時(shí),其上的應(yīng)變片隨之變形,并導(dǎo)致電阻改變。測(cè)量電路測(cè)出應(yīng)變片電阻的變化并變換為與外力大小成比例的電信號(hào)輸出。電信號(hào)經(jīng)處理后以數(shù)字形式顯示出被測(cè)物的質(zhì)量。圖1CZL-108平行梁式稱重傳感器內(nèi)部原理圖電阻應(yīng)變式傳感器的稱量范圍為300g至數(shù)千kg,計(jì)量準(zhǔn)確度達(dá)1/1000~1/10000,結(jié)構(gòu)較簡(jiǎn)單,可靠性較好。大局部電子衡器均使用此傳感器。2.2.3放大電路芯片的選擇傳感器輸出信號(hào)與作用在傳感器上的重力和供橋橋壓成正比,而且供橋橋壓U的變化直接影響電子秤的測(cè)量精度,所以要求橋壓很穩(wěn)定。毫伏級(jí)的傳感器輸出電壓經(jīng)過(guò)放大電路后,要求其輸出的信號(hào)要能保證A/D轉(zhuǎn)換電路的正常工作。綜合考慮,我們選用精密放大電路或儀用放大電路。芯片我們選用的是OP07與AD620,具體的電路圖及原理我們后面會(huì)詳細(xì)的講解。OP07芯片是一種低噪聲,非斬波穩(wěn)零的雙極性運(yùn)算放大器。由于它具有非常低的輸入失調(diào)電壓〔對(duì)于OP07A最大為25μV〕,所以O(shè)P07在很多應(yīng)用場(chǎng)合不需要額外的調(diào)零措施。OP07同時(shí)具有輸入偏置電流低〔OP07A為±2nA〕和開(kāi)環(huán)增益高〔對(duì)于OP07A為300V/mV〕的特點(diǎn),這種低失調(diào)、高開(kāi)環(huán)增益的特性使得OP07特別適用于高增益的測(cè)量設(shè)備和放大傳感器的微弱信號(hào)等方面。AD620為高精密的儀表放大器,所以使用OP07與AD620構(gòu)成一個(gè)兩級(jí)大電路可以保證A/D正常工作。2.2.4A/D轉(zhuǎn)換芯片的選擇稱重傳感器實(shí)質(zhì)就是壓力傳感器,其采集的壓力信號(hào)是模擬量,單片機(jī)系統(tǒng)內(nèi)部運(yùn)算時(shí)用的都是數(shù)字量,即0和1,因此對(duì)于單片機(jī)而言我們無(wú)法直接操作模擬量,必須將模擬量轉(zhuǎn)換為數(shù)字量。這就需要在單片機(jī)前段加上模擬量/數(shù)字量轉(zhuǎn)換器〔A/D〕,所謂A/D轉(zhuǎn)換器就是模擬/數(shù)字轉(zhuǎn)換器〔ADC〕,是將輸入的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)。信號(hào)輸入端可以是傳感器或轉(zhuǎn)換器的輸出,而ADC的數(shù)字信號(hào)也可能提供給微處理器,以便廣泛地應(yīng)用。綜合考慮各種因素我們選用逐次比擬型A/D轉(zhuǎn)換集成芯片ADC0804,它采用CMOS工藝20引腳集成芯片,分辨率為8位,轉(zhuǎn)換時(shí)間為100us,輸入電壓范圍為0—5V。芯片內(nèi)部具有三態(tài)輸出數(shù)據(jù)鎖存器,可直接連接在數(shù)據(jù)總線上。圖4為ADC0804雙列直插式封裝引腳圖。圖4ADC0804雙列直插式封裝引腳圖引腳功能介紹:/CS芯片選擇信號(hào)。/RD外部讀取轉(zhuǎn)換結(jié)果的控制輸出信號(hào)。/RD為HI時(shí),DB0~DB7處理高阻抗:/RD為L(zhǎng)O時(shí),數(shù)字?jǐn)?shù)據(jù)才會(huì)輸出。/WR:用來(lái)啟動(dòng)轉(zhuǎn)換的控制輸入,相當(dāng)于ADC的轉(zhuǎn)換開(kāi)始〔/CS=0時(shí)〕,當(dāng)/WR由HI變?yōu)長(zhǎng)O時(shí),轉(zhuǎn)換器被去除:當(dāng)/WR回到HI時(shí),轉(zhuǎn)換正式開(kāi)始。CLKIN,CLKR:時(shí)鐘輸入或接振蕩無(wú)件〔R,C〕頻率約限制在100KHZ~1460KHZ,如果使用RC電路那么其振蕩頻率為1/〔1.1RC〕/INTR:中斷請(qǐng)求信號(hào)輸出,低地平動(dòng)作.VIN(+)VIN(-):差動(dòng)模擬電壓輸入.輸入單端正電壓時(shí),VIN(-)接地:而差動(dòng)輸入時(shí),直接參加VIN(+)VIN(-).AGND,DGND:模擬信號(hào)以及數(shù)字信號(hào)的接地.VREF:輔助參考電壓.DB0~DB7:8位的數(shù)字輸出.VCC:電源供給以及作為電路的參考電壓.2.2.5顯示器件的選擇因?yàn)轭}目要求能顯示購(gòu)物清單,清單內(nèi)容包括:商品名稱,數(shù)量,重量,單價(jià)、本次購(gòu)物總金額;考慮到顯示直觀,電路結(jié)構(gòu)簡(jiǎn)單,變成容易請(qǐng)偶們考慮選擇液晶做顯示器件,再?gòu)娘@示內(nèi)容上考慮我們選用12864液晶。帶中文字庫(kù)的128X64是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國(guó)標(biāo)一級(jí)、二級(jí)簡(jiǎn)體中文字庫(kù)的點(diǎn)陣圖形液晶顯示模塊;其顯示分辨率為128×64,內(nèi)置8192個(gè)16*16點(diǎn)漢字,和128個(gè)16*8點(diǎn)ASCII字符集.利用該模塊靈活的接口方式和簡(jiǎn)單、方便的操作指令,可構(gòu)成全中文人機(jī)交互圖形界面??梢燥@示8×4行16×16點(diǎn)陣的漢字.也可完成圖形顯示.低電壓低功耗是其又一顯著特點(diǎn)。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點(diǎn)陣液晶顯示模塊相比,不管硬件電路結(jié)構(gòu)或顯示程序都要簡(jiǎn)潔得多,且該模塊的價(jià)格也略低于相同點(diǎn)陣的圖形液晶模塊。3.1系統(tǒng)設(shè)計(jì)流程圖本系統(tǒng)由信號(hào)采集及放大、A/D轉(zhuǎn)換、按鍵操作、單片機(jī)、顯示電路組成如圖5所示信號(hào)放大信號(hào)放大A/D轉(zhuǎn)換單片機(jī)存儲(chǔ)電路鍵盤(pán)操作信號(hào)采集聲響電路12864液晶顯示圖5系統(tǒng)設(shè)計(jì)流程圖3.2單元電路設(shè)計(jì)3.2.1單片機(jī)主控器件電路單片機(jī)最小系統(tǒng)能夠運(yùn)行的必要條件:電源、晶振電路、復(fù)位電路。如圖6所示:其中XTAL1〔19腳〕、XTAL2〔18腳〕外接晶振電路,RST(9腳)接復(fù)位電路。P0口控制12864液晶顯示電路,P1口控制A/D轉(zhuǎn)換電路,P2口控制鍵盤(pán)操做電路,P3口控制特殊引腳。圖6單片機(jī)控制電路3.2.2信號(hào)采集及放大電路電阻應(yīng)變式稱重傳感器實(shí)物圖如圖7所示,引出線為四芯,紅〔輸入+〕、白〔輸出-〕、黑(輸入-)、綠(輸出+)。接線方法是紅黑分別接電源正負(fù)端,綠白分別接信號(hào)的輸出端,為確保精度,一般不要調(diào)整線長(zhǎng)。在電阻應(yīng)變傳感器中其作用的是橋式測(cè)量電路。橋式測(cè)量電路有四個(gè)電阻,電橋的一個(gè)對(duì)角線接入工作電壓E,另一個(gè)對(duì)角線為輸出電壓Uo。其特點(diǎn)是:當(dāng)四個(gè)橋臂電阻到達(dá)相應(yīng)的關(guān)系時(shí),電橋輸出為零,否那么就有電壓輸出,可利用靈敏檢流計(jì)來(lái)測(cè)量,所以電橋能夠精確地測(cè)量微小的電阻變化。測(cè)量電橋如圖8所示:R1R1R2R3R4R5R6RP1E圖8稱重傳感器測(cè)量電橋圖7稱重傳感器實(shí)物圖它由箔式電阻應(yīng)變片電阻R1、R2、R3、R4組成測(cè)量電橋,測(cè)量電橋的電源由穩(wěn)壓電源E供給。物體的重量不同,電橋不平衡程度不同,指針式電表指示的數(shù)值也不同。滑動(dòng)式線性可變電阻器RP1作為物體重量彈性應(yīng)變的傳感器,組成零調(diào)整電路,當(dāng)載荷為0時(shí),調(diào)節(jié)RP1使數(shù)碼顯示屏顯示零。如圖9所示:AD620儀表放大器的1、8腳跨接一電阻可以調(diào)整放大倍數(shù),4、7腳接正常工作所需的電壓值相等的正負(fù)電壓,2、3腳接輸入電壓即可從6腳輸出放大后的電壓。引腳5那么是參考基準(zhǔn),如果接地那么引腳6的輸出即為與地之間的相對(duì)電壓。圖9AD620引腳圖和放大電路由于稱重傳感器采集的電壓信號(hào)為毫伏級(jí),而A/D轉(zhuǎn)換電路的工作電壓為0-5V,為了保證A/D正常工作,以及采樣信號(hào)的穩(wěn)定性我們采用兩級(jí)放大。電路圖為圖10。圖10信號(hào)采集及放大電路3.2.3A/D轉(zhuǎn)換電路A/D轉(zhuǎn)換電路完成模擬量到數(shù)字量之間的變換,把稱重傳感器采集的模擬信號(hào)轉(zhuǎn)換成單片機(jī)可以識(shí)別的數(shù)字信號(hào),經(jīng)過(guò)預(yù)設(shè)的算法后得到我們想要的結(jié)果。具體連線如圖11所示圖11A/D轉(zhuǎn)換電路3.2.4按鍵操作電路依照題目要求,為實(shí)現(xiàn)單價(jià)預(yù)設(shè)功能我們采用4*4矩陣鍵盤(pán),由P2口控制。具體連線圖及各按鍵的功能如圖12所示圖12按鍵操作及功能介紹3.2.512864液晶顯示電路12864液晶屬于圖形型液晶,由128列64行組成,即共有128*64個(gè)點(diǎn)來(lái)顯示各種圖形。12864液晶串行接口與并行接口共用,我們采用的是并行接口。12864液晶與單片機(jī)連接圖如圖13所示:圖13液晶驅(qū)動(dòng)電路4、軟件系統(tǒng)設(shè)計(jì)4.1單元模塊設(shè)計(jì)4.1.1A/D轉(zhuǎn)換軟件設(shè)計(jì)數(shù)字芯片在操作時(shí)首先要分析它的操作時(shí)序圖,圖16ADC0804啟動(dòng)轉(zhuǎn)換時(shí)序圖,圖17為ADC0804讀取數(shù)據(jù)時(shí)序圖。寫(xiě)程序時(shí)只需按圖14與圖15就能準(zhǔn)確地操作A/D轉(zhuǎn)換電路。CSCSWR內(nèi)部轉(zhuǎn)換狀態(tài)INTR上次資料未被讀取轉(zhuǎn)換完成100nSTWI8/F內(nèi)部轉(zhuǎn)換時(shí)間TCLK/2300nS~450nSCSWRINTR上次資料已被讀取準(zhǔn)備準(zhǔn)換TW=TWI8/FTCLK/2300nS~450nS圖14ADC0804啟動(dòng)轉(zhuǎn)換時(shí)序圖圖15為ADC0804讀取數(shù)據(jù)時(shí)序圖4.1.2按鍵操作設(shè)計(jì)按鍵功能參考圖12,軟件設(shè)計(jì)流程圖如圖16所示:進(jìn)入設(shè)定單價(jià)模式,每按下一個(gè)數(shù)字鍵就將相應(yīng)的數(shù)字存入設(shè)定好的數(shù)組中進(jìn)入設(shè)定單價(jià)模式,每按下一個(gè)數(shù)字鍵就將相應(yīng)的數(shù)字存入設(shè)定好的數(shù)組中,完成此功能將會(huì)用到S12、S13、S14、S15、S16鍵進(jìn)入調(diào)用已存儲(chǔ)商品調(diào)用模式進(jìn)入顯示存儲(chǔ)總金額模式返回判斷S13是否按下Num=1Num=2Num=3Num=4S13按下num次num初值為0圖16按鍵操作流程4.1.312864液晶顯示12864液晶有串行與并行操作方式,我們采用的是并行方式,其并行根本操作時(shí)序圖為圖17,漢字顯示坐標(biāo)為圖18。圖1712864并行操作方式時(shí)序圖圖1812864漢字顯示坐標(biāo)圖5、測(cè)試結(jié)果經(jīng)過(guò)硬件與軟件的綜合調(diào)試根本完成了設(shè)計(jì)要求的根本功能及發(fā)揮局部的功能。介于對(duì)電子秤應(yīng)用的分析與展望,其功能我們還將繼續(xù)開(kāi)發(fā),盡量將其做得更加完善,以適應(yīng)科技高速開(kāi)展的需求。6、總結(jié)學(xué)貴以致用,通過(guò)幾天的電子秤設(shè)計(jì)過(guò)程,將從書(shū)本上學(xué)到的知識(shí)應(yīng)用于實(shí)踐,學(xué)會(huì)了初步的電子電路仿真設(shè)計(jì),雖然過(guò)程中遇到了一些困難,但是在解決這些問(wèn)題的過(guò)程無(wú)疑也是對(duì)自己自身專業(yè)知識(shí)的一種提高。當(dāng)最終調(diào)試成功的時(shí)候也是對(duì)自己的一種肯定。此次的設(shè)計(jì)作業(yè)不僅增強(qiáng)了自己在專業(yè)設(shè)計(jì)方面的信心,鼓舞了自己,更是一次興趣的培養(yǎng),為自己以后的學(xué)習(xí)方向的明確了重點(diǎn)。
另外在這次實(shí)驗(yàn)中我們遇到了不少的問(wèn)題針對(duì)不同的問(wèn)題我們采取不同的解決方法,遇到不懂的問(wèn)題時(shí),利用網(wǎng)上的資源,搜索查找得到需要的信息。
最終一一解決設(shè)計(jì)中遇到的問(wèn)題。通過(guò)錯(cuò)誤排除最終確認(rèn)是傳感器的問(wèn)題。我覺(jué)得我們能夠順利完成此設(shè)計(jì)的關(guān)鍵是團(tuán)隊(duì)合作,當(dāng)然知識(shí)儲(chǔ)藏也不能忽略。7、參考文獻(xiàn)[1]童詩(shī)白模擬電子技術(shù)根底[]北京:高等教育出版社,2002.78-79.[2]張靖檢測(cè)技術(shù)與系統(tǒng)設(shè)計(jì)[]北京:中國(guó)電力出版社,2001.368-369.[3]何小艇.電子系統(tǒng)設(shè)計(jì)[第三版][M].杭州:浙江大學(xué)出版社,2004[4]施漢謙.電子秤技術(shù)[J].北京:中國(guó)計(jì)量出版社,2001:225-259[5]薛均義.MCS-51系列單片微型計(jì)算機(jī)應(yīng)用[M].西安:西安交通大學(xué)出版社,2002[6]譚浩強(qiáng).C程序設(shè)計(jì)〔第三版〕.北京:清華大學(xué)出版社,20048、附錄#include<reg52.h>#include<stdlib.h>#include<intrins.h>#include<keyscan.h>#defineucharunsignedchar#defineuintunsignedintsbitLCD_RS=P3^0;sbitLCD_RW=P3^1;sbitLCD_EN=P3^2;sbitLCD_PSB=P3^3;sbitfmq=P3^4;sbitAD_CS=P3^5;sbitAD_WR=P3^6;sbitAD_RD=P3^7;ucharad_data; //ad輸入*0.3125就是重量 ucharnum,m;floatsave=0.0,price;ucharcodedata0[]={"商品:"};ucharcodedata1[]={"單價(jià):"};ucharcodedata2[]={"重量:"};ucharcodedata3[]={"總金額:"};ucharcodedata4[]={"商品總量:"};ucharcodedata0_1[]={"西瓜"};ucharcodedata0_2[]={"橘子"};ucharcodedata0_3[]={"蘋(píng)果"};ucharcodedata0_4[]={"梨子"};ucharcodedata5[]={"謝謝!"};voidtotal_price();uintzhishu(ucharx);voiddelay(uintz);ucharkeyscan();voidinit();voidlcd_address(uchara,uchary);voidwrite_lcd(ucharadd,ucharrs);voidad();voidmain(){ init(); while(1){ keyscan(); ad(); total_price(); }}uintzhishu(ucharx){ uchari,a=1; if(x>=1){ for(i=1;i<=x;i++){ a=10*a; } returna; } else{ return1; }}voiddelay(uintz){ uintx,y; for(x=0;x<z;x++){ for(y=0;y<110;y++); }}/*********************讀取單價(jià)價(jià)格**************/voidtotal_price(){ uchari,j=0,n; uchartotal[9]; floatdanjia; floatk=0; ucharhc[]={0,0,0,0,0};//緩存輸入鍵盤(pán)單價(jià)數(shù)據(jù) ucharhc1[]={0,0,0,0,0}; ucharflag=0,a=0; uintda1[6]={0,0,0,0,0,0}; flag=0; n=0; while(num==1){ write_lcd(0x01,0); while(keyscan()!=16){ lcd_address(1,0); while(data1[n]!='\0'){ //顯示單價(jià)二字 write_lcd(data1[n],1); n++; } n=0; /*************按矩陣鍵盤(pán)設(shè)定單價(jià)*******/ if(keyscan()==1 ){ hc[flag]=1; hc1[flag]=1+0x30; flag++; } if(keyscan()==2 ){ hc[flag]=2; hc1[flag]=2+0x30; flag++; } if(keyscan()==3 ){ hc[flag]=3; hc1[flag]=3+0x30; flag++; } if(keyscan()==4 ){ hc[flag]=4; hc1[flag]=4+0x30; flag++; } if(keyscan()==5 ){ hc[flag]=5; hc1[flag]=5+0x30; flag++; } if(keyscan()==6 ){ hc[flag]=6; hc1[flag]=6+0x30; flag++; } if(keyscan()==7 ){ hc[flag]=7; hc1[flag]=7+0x30; flag++; } if(keyscan()==8 ){ hc[flag]=8; hc1[flag]=8+0x30; flag++; } if(keyscan()==9 ){ hc[flag]=9; hc1[flag]=9+0x30; flag++; } if(keyscan()==10){ hc[flag]=0; hc1[flag]=0+0x30; flag++; } if(keyscan()==11){ hc[flag]=0x2e; hc1[flag]=0x2e; flag++; j=flag;//j為點(diǎn)的位數(shù) a=1; } if(keyscan()==12){ write_lcd(0x01,0); lcd_address(1,0); while(data1[n]!='\0') { write_lcd(data1[n],1); n++; } n=0; for(i=0;i<flag-1;i++) write_lcd(hc1[i],1); break; } for(i=0;i<flag;i++) write_lcd(hc1[i],1); }/***************顯示重量***************/ da1[0]=(int)(ad_data*0.417)/10+0x30;//轉(zhuǎn)換成重量并保存十位 da1[1]=(int)(ad_data*0.417)%10+0x30; //保存?zhèn)€位 da1[2]='.'; da1[3]=(int)(ad_data*4.17)%10+0x30; //保存十分位 da1[4]=(int)(ad_data*41.7)%10+0x30; //保存百分位 da1[5]=(int)(ad_data*417)%10+0x30; //保存千分位 lcd_address(2,0); while(data2[n]!='\0'){ write_lcd(data2[n],1); //顯示重量 n++; } n=0; lcd_address(2,3); for(i=0;i<6;i++) write_lcd(da1[i],1);/**************測(cè)試指數(shù)****************//* tota2[0]=9*zhishu(2)/100+0x30; tota2[1]=8*zhishu(1)%100/10+0x30; tota2[2]=7*zhishu(0)%10+0x30; for(i=0;i<3;i++) write_lcd(tota2[i],1);*//**************將數(shù)字字符串轉(zhuǎn)化十進(jìn)制數(shù)*************************/ if(a==1) { for(i=1;i<j;i++){ //計(jì)算單價(jià)整數(shù)局部 k=(hc[i-1])*zhishu(j-1-i)+k; } for(i=j+1;i<=flag;i++){//計(jì)算小數(shù)局部 k=(hc[i-1])*1.0/(zhishu(i-j))+k; } } else for(i=1;i<=flag;i++) k=hc[i-1]*zhishu(flag-i)+k; danjia=k; k=0; flag=0;/*************計(jì)算和顯示總金額**********************/ price=danjia*(ad_data*0.417); total[0]=(int)price/1000+0x30; //取出總金額的各位 total[1]=(int)price%1000/100+0x30; total[2]=(int)price%100/10+0x30; total[3]=(int)price%10+0x30; total[4]=0x2e; total[5]=(int)price*10%10+0x30; total[6]=(int)price*100%10+0x30; total[7]=(int)price*1000%10+0x30; total[8]=(int)price*10000%10+0x30; lcd_address(3,0); while(data3[n]!='\0'){ write_lcd(data3[n],1); n++; } n=0; for(i=0;i<9;i++) write_lcd(total[i],1);/****************************測(cè)試單價(jià)值*****************************//* tota2[0]=(int)danjia/10+0x30; //write_lcd(tota2[0]+hc1[0],1); tota2[1]=(int)danjia%10+0x30; tota2[2]=0x2e; tota2[3]=(int)(danjia*10)%10+0x30; for(i=0;i<=3;i++) write_lcd(tota2[i],1);*//******************************************/ while(keyscan()!=13); }/***************************************/ while(num==2){ write_lcd(0x01,0); lcd_address(0,0); while(keyscan()!=16){ switch(keyscan()){ case1:danjia=10; while(data0_1[n]!='\0'){ write_lcd(data0_1[n],1); n++; } n=0; write_lcd(0x31,1); break; case2:danjia=15; while(data0_2[n]!='\0'){ write_lcd(data0_2[n],1); n++; } n=0; write_lcd(0x32,1); break; case3:danjia=20; while(data0_3[n]!='\0'){ write_lcd(data0_3[n],1); n++; } n=0; write_lcd(0x33,1); break; case4:danjia=25; while(data0_4[n]!='\0'){ write_lcd(data0_4[n],1); n++; } n=0; write_lcd(0x34,1); break; } } lcd_address(1,0); while(data1[n]!='\0'){ write_lcd(data1[n],1); n++; } write_lcd((uchar)danjia/10+0x30,1); write_lcd((uchar)danjia%10+0x30,1); n=0; da1[0]=(int)(ad_data*0.417)/10+0x30;//轉(zhuǎn)換成重量并保存十位 da1[1]=(int)(ad_data*0.417)%10+0x30; //保存?zhèn)€位 da1[2]='.'; da1[3]=(int)(ad_data*4,17)%10+0x30; //保存十分位 da1[4]=(int)(ad_data*41.7)%10+0x30; //保存百分位 da1[5]=(int)(ad_data*417)%10+0x30; //保存千分位 lcd_address(2,0); while(data2[n]!='\0'){ write_lcd(data2[n],1); //顯示重量 n++; } n=0; lcd_address(2,3); for(i=0;i<6;i++) write_lcd(da1[i],1); price=danjia*(ad_data*0.417); total[0]=(int)price/1000+0x30; //取出總金額的各位 total[1]=(int)price%1000/100+0x30; total[2]=(int)price%100/10+0x30; total[3]=(int)price%10+0x30; total[4]=0x2e; total[5]=(int)price*10%10+0x30; total[6]=(int)price*100%10+0x30; total[7]=(int)price*1000%10+0x30; total[8]=(int)price*10000%10+0x30; lcd_address(3,0); while(data3[n]!='\0'){ write_lcd(data3[n],1); n++; } n=0; for(i=0;i<9;i++) write_lcd(total[i],1); while(keyscan()!=13); }/********************************************/ while(num==3){ write_lcd(0x01,0); /*************取出總金額的各位并顯示**************/ total[0]=(int)save/1000+0x30; total[1]=(int)save%1000/100+0x30; total[2]=(int)save%100/10+0x30; total[3]=(int)save%10+0x30; total[4]=0x2e; total[5]=(int)save*10%10+0x30; total[6]=(int)save*100%10+0x30; total[7]=(int)save*1000%10+0x30; total[8]=(int)save*10000%10+0x30; lcd_address(2,0); while(data3[n]!='\0'){ write_lcd(data3[n],1); n++; } n=0; for(i=0;i<9;i++) write_lcd(total[i],1); lcd_address(1,0); while(data4[n]!='\0'){ write_lcd(data4[n],1); n++; } n=0; write_lcd(0x30+m,1); lcd_address(3,5); while(data5[n]!='\0') { write_lcd(data5[n],1); n++; } n=0; while(keyscan()!=13); }/****************************************/ if(num==4){ num=0; write_lcd(0x01,0); } }ucharkeyscan(){ uchara; ucharkey; P2=0xfe; a=P2&0xf0; fmq=1;//蜂鳴器 while(a!=0xf0) { delay(10); a=P2&0xf0; switch(a) { case0xe0:key=1;break; case0xd0:key=2;break; case0xb0:key=3;break; case0x70:key=4;break; } fmq=0; while(a!=0xf0){ a=P2&0xf0; } fmq=1; returnkey; } P2=0xfd; a=P2&0xf0; while(a!=0xf0) { delay(10); a=P2&0xf0; switch(a) { case0xe0:key=5;break; case0xd0:key=6;break; case0xb0:key=7;break; case0
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2020-2025年中國(guó)負(fù)壓救護(hù)車(chē)行業(yè)發(fā)展?jié)摿Ψ治黾巴顿Y戰(zhàn)略咨詢報(bào)告
- 2025年絲織品真絲綢項(xiàng)目投資可行性研究分析報(bào)告
- 2024美容儀器質(zhì)量檢測(cè)與認(rèn)證合作協(xié)議3篇
- 2025年中轉(zhuǎn)站項(xiàng)目投資可行性研究分析報(bào)告
- 二零二五年度高速公路交通安全設(shè)施更新合同4篇
- 2025年中國(guó)驗(yàn)潮儀行業(yè)市場(chǎng)全景分析及投資策略研究報(bào)告
- 2025年中國(guó)健美車(chē)行業(yè)投資研究分析及發(fā)展前景預(yù)測(cè)報(bào)告
- 2025年礦用儀表行業(yè)深度研究分析報(bào)告
- 2025年中國(guó)勵(lì)磁裝置行業(yè)市場(chǎng)全景評(píng)估及發(fā)展戰(zhàn)略規(guī)劃報(bào)告
- 《涂料的研究進(jìn)展》課件
- 新教材人教版高中物理選擇性必修第二冊(cè)全冊(cè)各章節(jié)課時(shí)練習(xí)題及章末測(cè)驗(yàn)含答案解析(安培力洛倫茲力電磁感應(yīng)交變電流等)
- 初級(jí)養(yǎng)老護(hù)理員培訓(xùn)全套
- 集中供熱管網(wǎng)系統(tǒng)一次網(wǎng)的調(diào)節(jié)方法
- GB/T 41095-2021機(jī)械振動(dòng)選擇適當(dāng)?shù)臋C(jī)器振動(dòng)標(biāo)準(zhǔn)的方法
- MRP、MPS計(jì)劃文檔教材
- 甲狀腺疾病護(hù)理查房課件
- 安全安全帶檢查記錄表
- GB∕T 26520-2021 工業(yè)氯化鈣-行業(yè)標(biāo)準(zhǔn)
- 2022年浙江省紹興市中考數(shù)學(xué)試題及參考答案
- Listen-to-this-3-英語(yǔ)高級(jí)聽(tīng)力-(整理版)
- 生活垃圾焚燒處理建設(shè)項(xiàng)目評(píng)價(jià)導(dǎo)則(2022)
評(píng)論
0/150
提交評(píng)論