基于單片機(jī)c語言開發(fā)的倉庫庫存自動(dòng)統(tǒng)計(jì)系統(tǒng)_第1頁
基于單片機(jī)c語言開發(fā)的倉庫庫存自動(dòng)統(tǒng)計(jì)系統(tǒng)_第2頁
基于單片機(jī)c語言開發(fā)的倉庫庫存自動(dòng)統(tǒng)計(jì)系統(tǒng)_第3頁
基于單片機(jī)c語言開發(fā)的倉庫庫存自動(dòng)統(tǒng)計(jì)系統(tǒng)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

基于單片機(jī)c語言開發(fā)的倉庫庫存自動(dòng)統(tǒng)計(jì)系統(tǒng)

隨著物流業(yè)的繁榮,商品交易已經(jīng)成為一種到處隨處可見的現(xiàn)象。各種各樣的購物中心、各種各樣的便利店和各種各樣的便利店。在商店的經(jīng)營(yíng)過程中,倉庫數(shù)據(jù)的統(tǒng)計(jì)管理是非常重要的。對(duì)于不同規(guī)模的商店,倉庫的庫存統(tǒng)計(jì)方法也不同。對(duì)于大型企業(yè)來說,它通常采用高度自動(dòng)的倉庫管理系統(tǒng)。對(duì)于中小型商店的運(yùn)營(yíng),通常采用人工統(tǒng)計(jì)的方法對(duì)倉庫中的商品庫存信息進(jìn)行統(tǒng)計(jì)和監(jiān)控。人工統(tǒng)計(jì)的方法耗時(shí)、效率低、計(jì)數(shù)過程容易丟失。用于商品條形碼感應(yīng)專用的傳感器需要通過高速通訊傳輸協(xié)議(如:232,485通訊協(xié)議)與處理器連接,大商場(chǎng)一般使用超高速PLC作為自動(dòng)倉庫管理系統(tǒng)的處理器.但是,高速PLC價(jià)格昂貴,不適用于中小型商店經(jīng)營(yíng)使用.要使中小型商店的自動(dòng)倉庫庫存統(tǒng)計(jì)系統(tǒng)得以實(shí)現(xiàn)并且普及使用,需要采用價(jià)格低廉親民的單片機(jī)作為系統(tǒng)的處理器.單片機(jī)只能傳遞普頻信號(hào),無法傳遞高速信號(hào);一直以來無法作為自動(dòng)管理系統(tǒng)的處理器使用.在本系統(tǒng)中,采用了接口指針位移偏轉(zhuǎn)算法的形式,將傳感器輸出的高速信號(hào)以位運(yùn)算的形式賦值于接口指針,隨之對(duì)指針?biāo)鶖y帶信號(hào)進(jìn)行布爾運(yùn)算,將其轉(zhuǎn)化為普頻字節(jié)信號(hào),進(jìn)一步對(duì)單片機(jī)的程序變量進(jìn)行運(yùn)算處理,實(shí)現(xiàn)單片機(jī)高速信號(hào)的虛擬傳輸,符合系統(tǒng)需求,能夠應(yīng)用于中小型商店倉庫庫存自動(dòng)統(tǒng)計(jì)系統(tǒng)中.接口指針位移偏轉(zhuǎn)的實(shí)現(xiàn)方式:先創(chuàng)建結(jié)構(gòu)體類型指針,將接口信號(hào)通過位運(yùn)算形式賦值于結(jié)構(gòu)體類型指針,然后構(gòu)建while循環(huán),在循環(huán)體條件內(nèi)進(jìn)行布爾運(yùn)算判斷,最后執(zhí)行循環(huán)體內(nèi)的相關(guān)變量運(yùn)算.該算法的框架如下:為了解決人工倉庫庫存統(tǒng)計(jì)存在的種種弊端,本文提出一種針對(duì)中小型商店的低成本倉庫庫存統(tǒng)計(jì)系統(tǒng).該系統(tǒng)以單片機(jī)作為硬件載體,以C語言作為編程語言,成本低廉,能夠被大多數(shù)中小型商店經(jīng)營(yíng)者接受1硬件選型對(duì)比系統(tǒng)功能的實(shí)現(xiàn)必須以硬件為載體.首先,需要進(jìn)行硬件的選型與結(jié)構(gòu)搭建.該系統(tǒng)中硬件將采用雙掃碼器單片機(jī)聯(lián)PC的方式進(jìn)行結(jié)構(gòu)構(gòu)建.兩個(gè)掃碼器采用并聯(lián)的方式以232協(xié)議的形式與單片機(jī)相連接.其中,一個(gè)掃碼器作為進(jìn)貨端掃碼器,掃描進(jìn)倉貨物的條形碼,將相應(yīng)商品的數(shù)量信息疊加到統(tǒng)計(jì)系統(tǒng)中.另一個(gè)掃碼器則作為出貨端掃碼器,不僅作為普通的收銀掃碼器使用,還可以在收銀掃碼的同時(shí)對(duì)統(tǒng)計(jì)系統(tǒng)中的相應(yīng)商品的數(shù)量進(jìn)行扣除.掃碼器的預(yù)期功能通過與單片機(jī)通訊連接,依賴于單片機(jī)內(nèi)部程序的執(zhí)行而得以實(shí)現(xiàn).單片機(jī)采用485的通信方式與計(jì)算機(jī)終端連接,使商品庫存信息能夠?qū)崟r(shí)地反應(yīng)在計(jì)算機(jī)終端上,方便經(jīng)營(yíng)者對(duì)倉庫庫存進(jìn)行監(jiān)控與查看在硬件結(jié)構(gòu)搭建設(shè)計(jì)完成之后,需要進(jìn)行各個(gè)硬件部分的選型與接線.本系統(tǒng)中需要用到的硬件有掃碼器、單片機(jī)和計(jì)算機(jī).計(jì)算機(jī)的功能是監(jiān)控和查看,普通個(gè)人電腦基本都能滿足需求,因此對(duì)于計(jì)算機(jī)的選型沒有特殊要求.掃碼器與單片機(jī)在系統(tǒng)中起著決定性作用,其選型非常重要.為了能夠最優(yōu)化實(shí)現(xiàn)系統(tǒng)功能,本系統(tǒng)將采用S8W掃碼器,該掃碼器具有靈敏性高,響應(yīng)速度快等優(yōu)點(diǎn),能夠識(shí)別各種類型的條形碼,能夠滿足對(duì)各種類型商品掃碼記錄的需求.同時(shí),本系統(tǒng)將采用AT89S51單片機(jī)作為系統(tǒng)程序載體.相較于其他單片機(jī),該單片機(jī)具有高速輸入、輸出口,高速的數(shù)據(jù)傳輸使庫存信息的實(shí)時(shí)更新顯示得以實(shí)現(xiàn).選型完成之后,使用串口通訊線分別將兩個(gè)掃碼器與單片機(jī)的輸入端口相連接,使用并口通信線將單片機(jī)的輸出端與程序?qū)懭攵送?jì)算機(jī)并口相連接,完成硬件載體的搭建2系統(tǒng)程序編寫完成各部分硬件間的接線后,需要對(duì)單片機(jī)進(jìn)行程序編寫.單片機(jī)能夠很好地識(shí)別C語言,本系統(tǒng)將全部采用C語言對(duì)單片機(jī)進(jìn)行編程.單片機(jī)對(duì)C語言具有很好的兼容性,在單片機(jī)的編程過程中,只需在計(jì)算機(jī)平臺(tái)用VisualStudio編寫相關(guān)程序后,通過單片機(jī)與計(jì)算機(jī)連接的并行口,將程序?qū)雴纹瑱C(jī)中即可.系統(tǒng)程序編寫分為數(shù)據(jù)庫構(gòu)建、入倉程序編寫和出倉程序編寫三部分,下文對(duì)三個(gè)程序的設(shè)計(jì)進(jìn)行描述2.1創(chuàng)建s麻黃面變量數(shù)據(jù)庫的作用是對(duì)倉庫中的商品進(jìn)行入庫、在庫和出庫的數(shù)量統(tǒng)計(jì)處理,因此在統(tǒng)計(jì)過程中,商品相關(guān)信息是必不可少的.庫存數(shù)量的統(tǒng)計(jì)依賴于相關(guān)商品信息,對(duì)數(shù)據(jù)庫而言商品信息的缺失將直接導(dǎo)致系統(tǒng)的癱瘓.在程序設(shè)計(jì)過程中,首先要進(jìn)行商品信息的數(shù)據(jù)庫搭建.為了避免單片機(jī)的運(yùn)行負(fù)載過大,系統(tǒng)采用頭文件的方式搭建數(shù)據(jù)庫存儲(chǔ)商品相關(guān)信息.首先,打開VisualStudio2013,創(chuàng)建一個(gè)新項(xiàng)目,將其命名為ProductsCounter;在該項(xiàng)目下新建一個(gè)頭文件,命名為ProductsInformation.h,完成數(shù)據(jù)庫相關(guān)頭文件的創(chuàng)建.其次,構(gòu)建相關(guān)數(shù)據(jù)框架體,作為數(shù)據(jù)存儲(chǔ)的載體,在該數(shù)據(jù)庫中采用結(jié)構(gòu)體作為數(shù)據(jù)存儲(chǔ)載體,結(jié)構(gòu)體的創(chuàng)建過程如下:第一步,在ProductsInformation頭文件下創(chuàng)建一個(gè)Struct結(jié)構(gòu)體變量,命名為Products;第二步,在結(jié)構(gòu)體中進(jìn)行相關(guān)的商品信息屬性設(shè)置,設(shè)置商品的名稱、價(jià)格、條形碼(ID編號(hào))、數(shù)量等屬性,其中,商品的名稱使用char[100]的字符串來存儲(chǔ),價(jià)格使用Double雙浮點(diǎn)類型變量存儲(chǔ),ID編號(hào)和數(shù)量采用Int整型變量來存儲(chǔ);第三步,在Struct結(jié)構(gòu)體下創(chuàng)建Products結(jié)構(gòu)體類型數(shù)組變量,名稱命名為Product,長(zhǎng)度設(shè)置為1000,同時(shí)再另外創(chuàng)建兩個(gè)結(jié)構(gòu)體類型變量,將第一個(gè)變量命名為InProduct,另一個(gè)變量命名為OutProduct,之后創(chuàng)建兩個(gè)接口類型變量,用第一個(gè)接口類型變量關(guān)聯(lián)InProduct和入庫掃碼器232通訊接口,用第二個(gè)接口類型變量關(guān)聯(lián)OutProduct和出倉掃碼器232通訊接口,完成接口的相互關(guān)聯(lián)設(shè)置后,通過掃碼器所獲取的商品信息便可直接映射到被關(guān)聯(lián)的結(jié)構(gòu)體變量中最后,獲取相關(guān)商品信息,存儲(chǔ)到結(jié)構(gòu)體數(shù)組變量中.該過程的實(shí)現(xiàn)需要依賴于兩個(gè)循環(huán)語句.一個(gè)用于啟動(dòng)商品信息儲(chǔ)存循環(huán),另一個(gè)用于循環(huán)判斷商品信息是否被存儲(chǔ).第一步,創(chuàng)建一個(gè)計(jì)數(shù)統(tǒng)計(jì)整型變量,將其命名為i,初值賦予0.同時(shí)創(chuàng)建一個(gè)while循環(huán)體,循環(huán)條件設(shè)置為接口1的布爾值為1,即入庫掃碼器處于工作狀態(tài).第二步,在while循環(huán)體中再創(chuàng)建一個(gè)foreach遍歷循環(huán),循環(huán)內(nèi)容為Product[1000]的各個(gè)成員項(xiàng).在該循環(huán)體內(nèi)構(gòu)建兩個(gè)if條件語句,在第一個(gè)if條件語句中判斷InP是否與product[item].name的值相等,若相等則執(zhí)行條件內(nèi)容體語句break退出foreach循環(huán).在第二個(gè)if條件語句中判斷char[item].name是否為空,若為空則使用springf函數(shù),將Inproduct中的數(shù)據(jù)信息映射到相應(yīng)的product[item]中,對(duì)i進(jìn)行加1操作后,使用break語句退出foreach循環(huán).第三步,在while循環(huán)體的末尾對(duì)計(jì)數(shù)變量i進(jìn)行數(shù)據(jù)大小判斷,若i==999,則調(diào)用系統(tǒng)showmsg對(duì)話框函數(shù),提醒用戶增加Product結(jié)構(gòu)體數(shù)組長(zhǎng)度,并退出while循環(huán).由此,便完成了商品信息數(shù)據(jù)庫的構(gòu)建.經(jīng)營(yíng)者只需使用入庫掃碼器掃描商品的條形碼,商品信息便會(huì)被自動(dòng)存儲(chǔ)到商品信息數(shù)據(jù)庫中,而無需進(jìn)行手動(dòng)添加操作具體算法如下:2.2入庫程序設(shè)計(jì)在數(shù)據(jù)庫構(gòu)建完成之后,需進(jìn)行相應(yīng)的程序操作編寫.首先,先對(duì)入庫操作進(jìn)行程序編寫.第一步,在ProductCounter項(xiàng)目下添加一新程序啟動(dòng)項(xiàng),將其命名為Program.c.在開頭處添加常規(guī)類型頭文件include<stdio.h>和include<stdlib.h>.在添加完常規(guī)頭文件之后,還需另添加商品信息數(shù)據(jù)的頭文件,以保證系統(tǒng)的正常運(yùn)行.在常規(guī)頭文件下方輸入include“ProductsInformation.h”,使系統(tǒng)能夠調(diào)用數(shù)據(jù)庫中的相關(guān)數(shù)據(jù)信息.第二步,創(chuàng)建main()函數(shù),返回值類型設(shè)置為空.在main函數(shù)的函數(shù)體中進(jìn)行相關(guān)的操作程序編寫.在main()函數(shù)中創(chuàng)建一個(gè)while循環(huán),循環(huán)條件設(shè)置為接口1的布爾值為1,即入庫掃碼器處于工作狀態(tài).循環(huán)體內(nèi)為相應(yīng)的入庫操作程序.為了實(shí)現(xiàn)程序執(zhí)行的高效性,再次將入庫操作程序封裝為函數(shù).在main()函數(shù)下方創(chuàng)建一個(gè)新的函數(shù),將函數(shù)命名為Inproductcontrol,函數(shù)的參數(shù)值設(shè)置為空,函數(shù)的返回值類型設(shè)置為空.在該函數(shù)體中,先創(chuàng)建一個(gè)foreach循環(huán),循環(huán)內(nèi)容為數(shù)據(jù)庫頭文件中的products數(shù)組變量成員,然后在該foreach循環(huán)內(nèi)創(chuàng)建一個(gè)if條件判斷語句,判斷內(nèi)容為入庫掃碼器當(dāng)前所掃描到的商品信息是否與當(dāng)前循環(huán)次數(shù)的數(shù)組成員項(xiàng)的信息相同,即InProducts==products[item]是否成立,若該條件成立,則對(duì)當(dāng)前的結(jié)構(gòu)體數(shù)組成員項(xiàng)的數(shù)量屬性進(jìn)行加一處理(product[item].num++),最后調(diào)用break語句,退出該foreach循環(huán),由此完成入庫操作的函數(shù)構(gòu)建.第三步,在main()函數(shù)的while循環(huán)中調(diào)用該入庫操作函數(shù),函數(shù)調(diào)用完成后,同樣使用break語句退出while循環(huán)具體算法如下:2.3foreach循環(huán)入庫程序編譯完成之后,接下來進(jìn)行出庫操作的相關(guān)程序編寫.第一步,在main()函數(shù)中再創(chuàng)建一個(gè)while循環(huán),循環(huán)條件設(shè)置為接口2的布爾值為1,即出庫掃碼器處于啟動(dòng)狀態(tài).同樣的,為了程序運(yùn)行的高效、穩(wěn)定,將出庫相關(guān)程序操作封裝為函數(shù).第二步,進(jìn)行出庫函數(shù)的封裝設(shè)計(jì).在入庫操作函數(shù)下方再創(chuàng)建一個(gè)新函數(shù),將函數(shù)命名為Outproductcontrol,返回值設(shè)置為空,參數(shù)值設(shè)置為空.為了能夠遍歷數(shù)據(jù)庫中的各個(gè)商品信息,同樣的,在該函數(shù)內(nèi)創(chuàng)建一個(gè)foreach循環(huán),循環(huán)內(nèi)容為商品數(shù)據(jù)庫中的結(jié)構(gòu)體數(shù)組變量成員.創(chuàng)建一個(gè)if條件判斷語句,判斷內(nèi)容為出庫掃碼器當(dāng)前所掃描到的商品信息是否與當(dāng)前循環(huán)次數(shù)的結(jié)構(gòu)體數(shù)組成員項(xiàng)的信息相同,即OutProducts==products[item]是否成立,當(dāng)該條件成立時(shí),將該結(jié)構(gòu)體數(shù)組成員屬性下的數(shù)量進(jìn)行減一操作處理(product[item].num--).同時(shí),對(duì)減一操作后的商品數(shù)量進(jìn)行if判斷,在當(dāng)前商品的數(shù)量屬性值為0時(shí),即product[item].num==0時(shí),調(diào)用Showmsg對(duì)話框函數(shù),提醒經(jīng)營(yíng)者“當(dāng)前商品庫存為空,請(qǐng)盡快補(bǔ)貨!”隨后調(diào)用循環(huán)終止語句,停止當(dāng)前foreach循環(huán).至此,完成出庫函數(shù)的封裝操作.第三步,在main()函數(shù)的第二個(gè)while循環(huán)中調(diào)用該出庫函數(shù),函數(shù)執(zhí)行完畢后,使用循環(huán)中斷指令退出當(dāng)前while循環(huán).至此,系統(tǒng)程序的編寫設(shè)計(jì)結(jié)束具體算法如下:3系統(tǒng)程序傳輸設(shè)置硬件接線和程序編寫完成之后,只需將程序?qū)雴纹瑱C(jī)中,單片機(jī)便可執(zhí)行相關(guān)程序完成規(guī)定的計(jì)數(shù)工作.但若直接將程序?qū)雴纹瑱C(jī)中,而不進(jìn)行任何的相關(guān)設(shè)置,統(tǒng)計(jì)計(jì)數(shù)程序在單片機(jī)中執(zhí)行完畢一次后便會(huì)停止執(zhí)行.為了解決該問題,需要對(duì)單片機(jī)的掃描周期和程序傳輸選項(xiàng)進(jìn)行設(shè)置.首先,在傳輸屬性中勾選恒存在選項(xiàng),

溫馨提示

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