第一篇:畢業(yè)論文-自動(dòng)售貨機(jī)匯總
畢業(yè)設(shè)計(jì)說(shuō)明書(shū)
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
摘 要
隨著社會(huì)的進(jìn)步,科學(xué)的發(fā)展,生活水平的提高,單一傳統(tǒng)的生活方式已經(jīng)不能滿足現(xiàn)代居民對(duì)高品質(zhì)生活的追求,在這種現(xiàn)象下,許多自動(dòng)化設(shè)備應(yīng)時(shí)代應(yīng)潮流而生。自動(dòng)售貨機(jī)作為自動(dòng)化設(shè)備中的最常見(jiàn)的設(shè)備之一,由于其眾多的優(yōu)點(diǎn),已經(jīng)在世界各地得到了普遍的發(fā)展并且還在不斷地發(fā)展。自動(dòng)售貨機(jī)掀起了繼百貨商店和超市之后的又一零售狂潮,這種智能售貨系統(tǒng)在車(chē)站、教學(xué)樓、辦公樓等公共場(chǎng)所有著廣闊的發(fā)展前景。
本文在對(duì)自動(dòng)售貨機(jī)的背景歷史和發(fā)展趨勢(shì)進(jìn)行了研究介紹之后,對(duì)課題中的自動(dòng)售貨機(jī)系統(tǒng)進(jìn)行了整體的設(shè)計(jì)及規(guī)劃。該自動(dòng)售貨機(jī)控制系統(tǒng)是基于EDA技術(shù)來(lái)實(shí)現(xiàn)的,同時(shí),利用Altera公司的QuartusⅡ14.0作為其軟件開(kāi)發(fā)平臺(tái),利用VHDL編程語(yǔ)言輸入的方式完成了軟件設(shè)計(jì)。本設(shè)計(jì)方案對(duì)整個(gè)控制系統(tǒng)進(jìn)行了層次化的編寫(xiě)。把整個(gè)系統(tǒng)劃分為6個(gè)子模塊,分別是找零計(jì)算模塊、確認(rèn)取消控制模塊、找零控制模塊、總錢(qián)數(shù)加和模塊、顯示模塊、鎖定模塊,并且對(duì)每一個(gè)子模塊進(jìn)行了詳細(xì)的軟件設(shè)計(jì)。在頂層文件中通過(guò)調(diào)用各個(gè)子模塊來(lái)完成vhdl程序的設(shè)計(jì)。
最后在對(duì)每一個(gè)子模塊完成了功能仿真測(cè)試驗(yàn)證,同時(shí)也對(duì)整個(gè)系統(tǒng)進(jìn)行頂層設(shè)計(jì)和仿真測(cè)試,測(cè)試結(jié)果表明了整個(gè)控制系統(tǒng)的合理性以及正確性。整個(gè)控制系統(tǒng)設(shè)計(jì)簡(jiǎn)單合理,操作簡(jiǎn)單,滿足售貨機(jī)的基本要求,具有一定的實(shí)用意義。關(guān)鍵詞:自動(dòng)售貨機(jī)、VHDL、EDA、QuartusⅡ
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
Abstract
Abstract: With the progress of the society, the development of the scientific, and the improvement of living standards, single traditional way of life has not meet modern residents' pursuit of high quality life, under this kind of phenomenon, a number of automation equipment should come into being.Vending machine as one of the most common equipment in the automation equipment, has been develop all over the world and develop constantly because it has many advantages.Vending machines set off after department stores and supermarkets in another retail frenzy, this intelligent vending system has broad prospects for development in the station, school buildings, office buildings and other public places.Based on the background of the vending machine, the article designs and plans the project of vending machine system after introducing the history and development trend.The vending machine control system is based on the EDA technology to realize, at the same time, it used Quarter Ⅱ 14.0 of the Altera corporation as the software development platform, taking advantage of VHDL programming language input completed the software design.The design scheme is hierarchical write for the whole hierarchical control system.The whole system is divided into six sub modules, change calculation module, confirming cancellation control module, the change control module, total amount module, display module, locking module, and each child module software design is design in detail.On the top floor file by calling each module to complete the VHDL program design.Finally, The design scheme completed the function simulation test to verify for each child modules, and conducts Top-level design and simulation test for the whole system, the test results show the rationality and validity of the whole control system.The design of the whole control system is simple and reasonable, the operation is simple, it meets the basic requirement of the vending machine and has certain practical significance.keywords :The vending machine、EDA、VHDL、QuqrtusⅡ
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真 緒論
1.1課題研究背景
早在20世紀(jì)30年代,出售香煙的自動(dòng)售貨機(jī)就在美國(guó)被研制出來(lái)了,此后,各類(lèi)自動(dòng)售貨機(jī)也相繼被研究出來(lái)。到了20世紀(jì)的70年代,自動(dòng)售貨機(jī)在歐美地區(qū)和日本的發(fā)展已經(jīng)相當(dāng)?shù)钠毡?。早?998的數(shù)據(jù)統(tǒng)計(jì)中,日本就已經(jīng)有了550萬(wàn)臺(tái)各式各樣各種功能的自動(dòng)售貨機(jī),而美國(guó)所擁有的自動(dòng)售貨機(jī)的數(shù)量更是高達(dá)700萬(wàn)臺(tái),也就是說(shuō)在上個(gè)世紀(jì)末在日本平均23個(gè)人就擁有一臺(tái)自動(dòng)售貨機(jī),而美國(guó)則是平均35個(gè)人就擁有一臺(tái)。
自動(dòng)售貨機(jī)的優(yōu)點(diǎn)之一就是無(wú)需人工看守,這點(diǎn)在當(dāng)今世界人工勞動(dòng)力成本普遍急劇上升的年代成為了各商家最看重的一點(diǎn),它可以24小時(shí)不斷的進(jìn)行自動(dòng)售貨操作,在為商家降低成本的同時(shí)大大的增加了收益。同時(shí),其操作方便簡(jiǎn)單、占地面積小、全自動(dòng)化等優(yōu)點(diǎn)使其迅速在全世界各地普及開(kāi)來(lái)。日本作為使用自動(dòng)售貨機(jī)最普遍的國(guó)家,其國(guó)內(nèi)的罐裝飲料有大約70%是通過(guò)自動(dòng)售貨機(jī)來(lái)出售的,銷(xiāo)售額為世界第一;在西班牙,全國(guó)零售業(yè)的銷(xiāo)售額一半以上是由自動(dòng)售貨機(jī)來(lái)完成的,并且每年的速度都在不斷增長(zhǎng)。從這些數(shù)據(jù)可以看出自動(dòng)售貨機(jī)所涉及的行業(yè)在零售行業(yè)中占據(jù)著不可替代的重要作用。
1.2課題研究的目的與意義
隨著社會(huì)的不斷發(fā)展與進(jìn)步,城鎮(zhèn)居民的收入日漸增多,生活條件也越來(lái)越好,城鎮(zhèn)居民的消費(fèi)方式和消費(fèi)心理也正慢慢發(fā)生改變。快捷自動(dòng)化的生活方式正是快節(jié)奏生活下人們所追求的一種高品質(zhì)的生活方式。而自動(dòng)售貨機(jī)作為商業(yè)自動(dòng)化的一種常見(jiàn)設(shè)備,無(wú)論是在國(guó)內(nèi)還是國(guó)外,都深受消費(fèi)者的喜愛(ài),時(shí)代的發(fā)展為自動(dòng)售貨機(jī)提供了良好的發(fā)展條件。然而,我國(guó)的自動(dòng)售貨機(jī)行業(yè)的發(fā)展卻遠(yuǎn)遠(yuǎn)及不上歐美和日本等國(guó)家,究其原因一個(gè)方面是因?yàn)槲覈?guó)的自動(dòng)售貨機(jī)行業(yè)發(fā)展比較晚,另外一方面是因?yàn)槲覈?guó)要普遍發(fā)展自動(dòng)售貨機(jī)也有著技術(shù)的瓶頸。自動(dòng)售貨機(jī)是一種內(nèi)部集成度高、技術(shù)復(fù)雜的高科技設(shè)備,而現(xiàn)在我國(guó)多數(shù)企業(yè)都缺乏自主研發(fā)自主創(chuàng)新的精神,使得自動(dòng)售貨機(jī)的很多關(guān)鍵零件都要從國(guó)外進(jìn)口,因此想要在國(guó)內(nèi)發(fā)展這一行業(yè),解決相關(guān)技術(shù)問(wèn)題自主開(kāi)發(fā)自動(dòng)售貨機(jī)是最重要的。
我國(guó)引進(jìn)自動(dòng)售貨機(jī)已有差不多二十年的時(shí)間,然而至今在國(guó)內(nèi)運(yùn)營(yíng)和自主研發(fā)制造自動(dòng)售貨機(jī)的企業(yè)少之又少,國(guó)外的自動(dòng)售貨機(jī)還毫無(wú)疑問(wèn)的占據(jù)著我國(guó)絕大部分的的市場(chǎng)。這種現(xiàn)象嚴(yán)重阻礙了我國(guó)發(fā)展自動(dòng)售貨機(jī)行業(yè)。因此,加快腳步和加大力度去自主研制自動(dòng)售貨機(jī)是很有必要的,同時(shí),更要時(shí)時(shí)關(guān)注最先進(jìn)的科學(xué)技術(shù),盡可能的把這些高科運(yùn)用到自動(dòng)售貨機(jī)行業(yè)中去,只有這樣才能讓該行業(yè)在我國(guó)得到更好更快的的發(fā)展。
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
1.3 國(guó)內(nèi)外研究現(xiàn)狀及趨勢(shì)
目前,自動(dòng)售貨機(jī)已經(jīng)在發(fā)達(dá)國(guó)家得到了廣泛的運(yùn)用,而我國(guó)由于行業(yè)起步較晚的原因使得各方面技術(shù)還不夠成熟,還需要加大力度去積極發(fā)展這一行業(yè)。在2012六月份,我國(guó)各式各類(lèi)的自動(dòng)售貨機(jī)的總量只有三萬(wàn)臺(tái),而在2013六月份,該數(shù)量已經(jīng)上升至五萬(wàn)臺(tái),增長(zhǎng)幅度高達(dá)差不多50%,當(dāng)然由自動(dòng)售貨機(jī)帶來(lái)的營(yíng)業(yè)額也是非常龐大的。隨著科技的不斷發(fā)展,如今的自動(dòng)售貨機(jī)也越來(lái)越先進(jìn),其中設(shè)備的科技含量也日漸增高。自動(dòng)售貨機(jī)的發(fā)展歷程如圖所示:
目前我國(guó)生產(chǎn)自動(dòng)售貨機(jī)主要有以下幾家比較知名的廠家:上海艾絲明自動(dòng)售貨機(jī)有限公司,主要生產(chǎn)咖啡機(jī);天津歌德公司,主要生產(chǎn)咖啡機(jī);大連富士冰山公司,主要生產(chǎn)飲料機(jī)。除此之外還有青島澳柯瑪自動(dòng)商用設(shè)備有限公司、天津奧萊特自動(dòng)售貨機(jī)有限公司等公司生產(chǎn)的自動(dòng)售貨機(jī)也是比較常見(jiàn)的。
自動(dòng)售貨機(jī)的發(fā)展趨勢(shì)是由于社會(huì)的產(chǎn)業(yè)結(jié)構(gòu)發(fā)生變化的產(chǎn)物。由于社會(huì)的消費(fèi)方式、銷(xiāo)售環(huán)境等的變化,自動(dòng)售貨機(jī)的售貨方式作為一種新的流通渠道,自然而然自動(dòng)售貨機(jī)也就應(yīng)時(shí)代發(fā)展而生了。自動(dòng)售貨機(jī)從一開(kāi)始的功能單一結(jié)構(gòu)單一發(fā)展到現(xiàn)在的功能多元化個(gè)性化,該行業(yè)也成為信息化的一種表現(xiàn)。而且自動(dòng)售貨機(jī)的發(fā)展為了適應(yīng)社會(huì)的發(fā)展也將會(huì)更加合理化人性化,它已不僅僅是一臺(tái)用來(lái)銷(xiāo)售商品的機(jī)器,隨著科技的發(fā)展,通信的發(fā)展,互聯(lián)網(wǎng)的發(fā)展,它也必將向著相互連通的信息生態(tài)圈的方向發(fā)展,必將發(fā)展成為一種集商品銷(xiāo)售、信息流通等于一體的高科技的終端設(shè)備。
1.4 課題研究的主要內(nèi)容
本文主要研究利用自動(dòng)售貨機(jī)來(lái)完成商品處理、貨幣找零、出貨操作、led顯示等功能。完成的工作主要包括以下幾個(gè)方面:
1.對(duì)自動(dòng)售貨機(jī)的歷史及發(fā)展前景做了簡(jiǎn)單的陳述。
2.對(duì)課題中用的比較多的EDA技術(shù)以及VHDL語(yǔ)言、QuarterⅡ軟件開(kāi)發(fā)平臺(tái)的相關(guān)知識(shí)做了簡(jiǎn)單的介紹。
3.在對(duì)自動(dòng)售貨機(jī)的整個(gè)控制系統(tǒng)進(jìn)行了一定的研究和分析之后,提出了整體設(shè)計(jì)方案。
4.對(duì)各個(gè)子模塊功能的利用vhdl語(yǔ)言程序的輸入的方式進(jìn)行了詳細(xì)的分析設(shè)計(jì),并且對(duì)每一個(gè)子模塊進(jìn)行了仿真測(cè)試,對(duì)其相對(duì)應(yīng)的功能進(jìn)行了驗(yàn)證。最后對(duì)整個(gè)系統(tǒng)進(jìn)行頂層設(shè)計(jì),同時(shí)也對(duì)整個(gè)系統(tǒng)進(jìn)行了仿真,對(duì)整個(gè)自動(dòng)售貨機(jī)的功能進(jìn)行了驗(yàn)證。
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真 相關(guān)技術(shù)簡(jiǎn)介
2.1 EDA技術(shù)
電子設(shè)計(jì)自動(dòng)化技術(shù)就是常見(jiàn)的EDA技術(shù)的簡(jiǎn)稱(chēng),這種技術(shù)在現(xiàn)代電子設(shè)計(jì)中有著非常重要的作用。EDA技術(shù)以強(qiáng)大的計(jì)算機(jī)為依賴(lài),在相應(yīng)的軟件開(kāi)發(fā)平臺(tái)上,利用硬件描述語(yǔ)言(HDL)來(lái)完成系統(tǒng)的各項(xiàng)功能的邏輯描述。
EDA技術(shù)有著豐富的內(nèi)容,與電子技術(shù)很多領(lǐng)域有著密不可分的聯(lián)系,所以其發(fā)展同計(jì)算機(jī)輔助工程、電子設(shè)計(jì)技術(shù)以及集成電路的大規(guī)模設(shè)計(jì)技術(shù)等都是同步發(fā)展的。就近30多年來(lái)其發(fā)展可分為以下階段:
? 上世紀(jì)70年代可編程邏輯器件開(kāi)始問(wèn)世,集成電路得到廣泛應(yīng)用,CAD技術(shù)也開(kāi)始發(fā)展,EDA技術(shù)也就是在這個(gè)時(shí)候開(kāi)始出現(xiàn)。
? 上世紀(jì)80年代進(jìn)入商用的復(fù)雜可編程邏輯器件、FPGA器件的出現(xiàn)、CAD技術(shù)廣泛的應(yīng)用、各類(lèi)硬件描述語(yǔ)言的相繼出現(xiàn),這些解決EDA技術(shù)要廣泛運(yùn)用過(guò)程中所遇到的各種問(wèn)題,為其規(guī)范應(yīng)用奠定了基礎(chǔ)。
? 上世紀(jì)90年代,CAD、CAE等技術(shù)已經(jīng)被廣泛應(yīng)用在電子領(lǐng)域方面。同時(shí),通信技術(shù)的發(fā)展、計(jì)算機(jī)技術(shù)的發(fā)展使得EDA技術(shù)有了更大的發(fā)展空間。
發(fā)展至現(xiàn)在的EDA技術(shù),CPLD和FPGA等可編程邏輯器件是被應(yīng)用得最多的,這些器件是利用硬件編程語(yǔ)言來(lái)進(jìn)行軟件設(shè)計(jì)以完成功能設(shè)計(jì),這樣的設(shè)計(jì)方式簡(jiǎn)單方便,有著非常大的靈活性??删幊踢壿嬈骷涂删幊陶Z(yǔ)言的發(fā)展改變了傳統(tǒng)的電子設(shè)計(jì)的設(shè)計(jì)方法和設(shè)計(jì)理念,同時(shí)也讓EDA技術(shù)有了更快的發(fā)展。EDA技術(shù)在現(xiàn)代社會(huì)的發(fā)展及應(yīng)用范圍是非常廣泛的,不僅在農(nóng)業(yè)、醫(yī)學(xué)、軍事等領(lǐng)域被應(yīng)用,在通信、化學(xué)、交通、航天等領(lǐng)域更是有著不可替代的重要作用。(EDA技術(shù)與VHDL P1)
2.2 VHDL VHDL的全稱(chēng)是Very High Speed Circuit Language,與另一種VerilogHDL語(yǔ)言是現(xiàn)在電子設(shè)計(jì)自動(dòng)化中用的最多的兩種硬件描述語(yǔ)言,現(xiàn)在用的比較多的EDA工具基本都支持這兩種語(yǔ)言,在電子領(lǐng)域中已經(jīng)成為了通用的硬件描述語(yǔ)言。
VHDL是一種無(wú)關(guān)設(shè)計(jì)平臺(tái)、無(wú)關(guān)具體的硬件電路的語(yǔ)言。跟一般的高級(jí)語(yǔ)言類(lèi)似,不過(guò)卻有著一般高級(jí)語(yǔ)言沒(méi)有的具有硬件特性的語(yǔ)句,能很好的描述數(shù)字電路的功能和結(jié)構(gòu)。VHDL的結(jié)構(gòu)特點(diǎn)是設(shè)計(jì)一項(xiàng)工程或?qū)嶓w,一個(gè)元件、一個(gè)系統(tǒng)或者一個(gè)電路模塊都可以設(shè)計(jì)成為一個(gè)實(shí)體,被設(shè)計(jì)好的實(shí)體可以很方便的被調(diào)用,這是VHDL很大的一個(gè)特點(diǎn)。
與其他的硬件描述語(yǔ)言相比,VHDL有以下特點(diǎn):
? 設(shè)計(jì)好的模塊可以任意無(wú)數(shù)次的被調(diào)用,很好的做到了資源共享和重復(fù)利用這一點(diǎn),大大減少了設(shè)計(jì)人員的工作量和工作時(shí)間。
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
? 語(yǔ)言的設(shè)計(jì)描述與器件無(wú)關(guān),設(shè)計(jì)人員在進(jìn)行電路的設(shè)計(jì)的時(shí)候,可以把精力放在優(yōu)化電路上而不用先去考慮器件的選擇,VHDL可以采用不同的器件來(lái)實(shí)現(xiàn)已經(jīng)描述好的電路設(shè)計(jì)。
? 語(yǔ)言功能強(qiáng)大,設(shè)計(jì)方法靈活,支持各式各樣的設(shè)計(jì)方法,無(wú)論是自頂向下還是自底向上的設(shè)計(jì)方式在VHDL中都可以靈活的被運(yùn)用。同時(shí),模塊化設(shè)計(jì),層次化設(shè)計(jì)等設(shè)計(jì)方法也是被支持的。
? 具有很強(qiáng)的移植能力,對(duì)于同一個(gè)VHDL程序,它可以在不同的工作平臺(tái)、綜合器、模擬器之間相互移植。
一個(gè)完整的VHDL程序代碼結(jié)構(gòu)包括4個(gè)模塊,庫(kù)和程序包的模塊、實(shí)體模塊、結(jié)構(gòu)體模塊、配置結(jié)構(gòu)模塊。其結(jié)構(gòu)圖如圖所示:
2.3 QuartusⅡ軟件
QuartusⅡ是由Altera公司開(kāi)發(fā)的一種EDA工具,是經(jīng)過(guò)A+plus、然后到MAX+plus,再到MAX+plusⅡ發(fā)展而來(lái)的。QuartusⅡ支持多種輸入方式,例如原理圖輸入,硬件編程語(yǔ)言輸入等,在使用QuartusⅡ軟件時(shí),它會(huì)將設(shè)計(jì)人員設(shè)計(jì)好的硬件編程語(yǔ)言或者原理圖等自動(dòng)轉(zhuǎn)換目標(biāo)文件,最后將目標(biāo)文件下載到器件中。通過(guò)DSP Builder工具,QuartusⅡ能很好的跟Matlab、Simulink等結(jié)合起來(lái),從而能夠方便快捷的實(shí)現(xiàn)不同的DSP系統(tǒng)的設(shè)計(jì)。因?yàn)橛兄?jiǎn)單直接的入口和很強(qiáng)的設(shè)計(jì)能力,以及使用靈活、方便快捷的優(yōu)點(diǎn),所以很受廣大設(shè)計(jì)者的青睞。
QuartusⅡ軟件有以下特點(diǎn):
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
? 支持多平臺(tái)的設(shè)計(jì)輸入,結(jié)合其處理和驗(yàn)證功能使其成為一個(gè)全集化的開(kāi)發(fā)平臺(tái),讓開(kāi)發(fā)周期變短。
? 是一個(gè)與結(jié)構(gòu)無(wú)關(guān)的開(kāi)發(fā)工具,QuartusⅡ通過(guò)把Cyclone、APEX、Mercury等設(shè)計(jì)環(huán)境轉(zhuǎn)化為所需要的格式,真真正正的成為唯一一個(gè)與結(jié)構(gòu)無(wú)關(guān)的開(kāi)發(fā)工具。
? 具有很具有全面的可設(shè)計(jì)開(kāi)發(fā)資源,是一個(gè)集系統(tǒng)設(shè)計(jì)、軟件開(kāi)發(fā)、邏輯設(shè)計(jì)于一體的綜合性開(kāi)發(fā)平臺(tái)。QuartusⅡ的編程設(shè)計(jì)流程圖所示:
2.4 Modelsim仿真工具
Modelsim提供了可以與其他EDA工具(如QuartusⅡ)的接口工具。Modelsim支持Verilog、vhdl或者二者相結(jié)合的混合。針對(duì)不同的使用環(huán)境,Modeislm分為不同的版本,常見(jiàn)的版本有:Modelsim AE、Modelsim ASE、Modelsim SE等。在本文的設(shè)計(jì)的版本是Modelsim ASE10.1版本。VHDL的仿真流程如圖所示,首先在VHDl仿真器中對(duì)已設(shè)計(jì)好的VHDL源代碼進(jìn)行編譯,等到代碼被編譯正確后就會(huì)被轉(zhuǎn)換為中間格式,中間數(shù)據(jù)的結(jié)果將會(huì)保存在仿真數(shù)據(jù)庫(kù)中,一般來(lái)說(shuō),VHDL源代碼在編譯好的仿真庫(kù)就是WORK庫(kù)。設(shè)計(jì)者通過(guò)編寫(xiě)TestBeach文件來(lái)干預(yù)仿真的過(guò)程,在本文的設(shè)計(jì)中,計(jì)時(shí)通過(guò)編寫(xiě)不同的TestBeach文件來(lái)對(duì)不同的模塊代碼進(jìn)行仿真測(cè)試。
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真 系統(tǒng)總體方案
3.1 設(shè)計(jì)要求
? 本文設(shè)計(jì)的售貨機(jī)系統(tǒng)中只有一種,價(jià)格為13元;
? 可以投入三種不同的貨幣來(lái)購(gòu)買(mǎi)商品,分別是1元、5元、10元;
? 每次只允許購(gòu)買(mǎi)一個(gè)商品,若想要購(gòu)買(mǎi)多個(gè)商品,則需要重復(fù)執(zhí)行購(gòu)買(mǎi)操作; ? 售貨機(jī)的顯示器會(huì)實(shí)時(shí)更新顯示總共投入的貨幣的總額;
? 當(dāng)投入貨幣后,如果不想購(gòu)買(mǎi)商品了則可以通過(guò)按取消鍵來(lái)退還投入的貨幣,否則就按確定鍵來(lái)獲取商品;
? 設(shè)置兩個(gè)指示燈,分別是購(gòu)買(mǎi)指示燈和取消指示燈,當(dāng)顧客按下確定鍵后購(gòu)買(mǎi)指示燈亮起;若顧客按下取消鍵,則取消指示燈亮起;
3.2 總體設(shè)計(jì)
通過(guò)分析系統(tǒng)的設(shè)計(jì)要求以及考慮到系統(tǒng)本身,本文對(duì)整個(gè)總動(dòng)售貨機(jī)系統(tǒng)采用自頂向下的設(shè)計(jì)方法,自頂向下的設(shè)計(jì)方法如圖所示,采用自頂向下的設(shè)計(jì)方法的優(yōu)點(diǎn)是很明顯的。由于系統(tǒng)設(shè)計(jì)從頂層開(kāi)始,所以在進(jìn)行設(shè)計(jì)時(shí)就清楚實(shí)現(xiàn)整個(gè)系統(tǒng)的性能狀況。隨著設(shè)計(jì)向下一級(jí)進(jìn)行,系統(tǒng)的性能就能進(jìn)一步得到細(xì)化和表達(dá),并且可以根據(jù)個(gè)人需要隨時(shí)修改和調(diào)整,縮短了設(shè)計(jì)周期。
對(duì)整個(gè)系統(tǒng)的頂層文件進(jìn)行如下端口設(shè)計(jì):
? 輸入端口:clk,輸入時(shí)鐘信號(hào);rst,復(fù)位信號(hào);C1,投入一張1元貨幣;C5,投入一張5元貨幣;C10,投入一張10元貨幣;ok_in,確認(rèn)信號(hào);cancel_in,取消信號(hào)。
? 輸出端口:led_buy,確認(rèn)購(gòu)買(mǎi)指示燈;led_cancel,取消購(gòu)買(mǎi)指示燈;en_deliver,出貨信號(hào);led1,投入貨幣總數(shù)的個(gè)位數(shù)(單位是元);led10,投入貨幣總數(shù)的十位數(shù)(單位是元)。
? 內(nèi)部可讀輸出端口:RC1,1元退幣控制信號(hào);RC5,5元退幣控制信號(hào);RC10,10元退幣控制信號(hào)。
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
端口原理圖如圖所示:
在確定了整個(gè)系統(tǒng)的輸入輸出端口后,給出自動(dòng)售貨機(jī)的系統(tǒng)內(nèi)部的工作原理: 當(dāng)系統(tǒng)接收到復(fù)位信號(hào)后,其他所有的控制信號(hào)和標(biāo)識(shí)信號(hào)都清空為零,系統(tǒng)處于等待指令的狀態(tài)。
當(dāng)系統(tǒng)接收到相關(guān)信號(hào)輸入時(shí),系統(tǒng)開(kāi)始工作。顧客確定購(gòu)買(mǎi)商品時(shí),開(kāi)始投入貨幣,當(dāng)投入貨幣為1元、5元、10元時(shí),將分別產(chǎn)生一個(gè)時(shí)鐘寬度的信號(hào)C1、C5、C10。所投入的貨幣總額會(huì)實(shí)時(shí)計(jì)算并通過(guò)顯示器顯示出來(lái)。
當(dāng)顧客確定購(gòu)買(mǎi)商品并按下確認(rèn)鍵的時(shí)候,自動(dòng)售貨機(jī)會(huì)產(chǎn)生一個(gè)時(shí)鐘信號(hào)ok_in,而且由led_buy控制的代表確認(rèn)購(gòu)買(mǎi)的指示燈會(huì)閃爍。如果投入貨幣的總額大于商品價(jià)格時(shí),則送出商品并計(jì)算出余額操作退出余額,此時(shí)出貨指示燈閃爍。如果投入的貨幣不足以支付商品價(jià)格,自動(dòng)售貨機(jī)會(huì)退還所有貨幣。
當(dāng)顧客投入貨幣又不想購(gòu)買(mǎi)商品時(shí),就可以通過(guò)按下取消鍵來(lái)取消購(gòu)買(mǎi),這時(shí)系統(tǒng)會(huì)產(chǎn)生一個(gè)時(shí)鐘信號(hào)cancel_in,同時(shí)通過(guò)找零控制模塊來(lái)執(zhí)行相應(yīng)操作退還貨幣。如果確認(rèn)鍵或者取消鍵被按下后,自動(dòng)售貨機(jī)會(huì)產(chǎn)生一個(gè)lock_out_entry內(nèi)部信號(hào),當(dāng)發(fā)出信號(hào)后,所有的操作都是無(wú)效的。
當(dāng)完成所有的操作后,將產(chǎn)生一個(gè)clear清除信號(hào),此時(shí)所有的信號(hào)都會(huì)被清除,自動(dòng)售貨機(jī)開(kāi)始等待下一次操作。
整個(gè)系統(tǒng)的投幣購(gòu)物流程如圖所示:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
將整個(gè)系統(tǒng)劃分成六個(gè)模塊,分別是購(gòu)買(mǎi)余額計(jì)算模塊、找零控制模塊、確認(rèn)取消模塊、總額加和模塊、鎖定模塊和顯示模塊。各模塊的功能:
余額計(jì)算模塊:當(dāng)顧客確認(rèn)購(gòu)買(mǎi)商品并按下了售貨機(jī)的確認(rèn)鍵后,找零模塊就開(kāi)始計(jì)算出應(yīng)該退還的余額。
找零控制模塊:在顧客確定購(gòu)買(mǎi)商品后執(zhí)行找零操作,或者是在顧客取消購(gòu)買(mǎi)后執(zhí)行退還原款操作。
確認(rèn)取消模塊:顧客在選擇購(gòu)買(mǎi)商品或者取消購(gòu)買(mǎi)商品后,將輸入的確認(rèn)信號(hào)或者取消信號(hào)分別轉(zhuǎn)換成單時(shí)鐘周期的控制信號(hào),并且控制相對(duì)應(yīng)的信號(hào)燈的亮和不亮。
總額加和模塊:不斷的更新并計(jì)算售貨機(jī)收到的總貨幣數(shù)量。
鎖定模塊:可以按下確認(rèn)鍵或者取消鍵,當(dāng)其中任意一個(gè)鍵被按下后,整個(gè)自動(dòng)售貨機(jī)系統(tǒng)的按鍵的輸入都是無(wú)效的。
顯示模塊:通過(guò)控制兩個(gè)顯示器(led1和led10)來(lái)顯示所投入貨幣的總額。整個(gè)自動(dòng)售貨機(jī)的內(nèi)部工作過(guò)程的總體框圖如圖所示:
對(duì)每一個(gè)子模塊進(jìn)行VHDL設(shè)計(jì),然后對(duì)其進(jìn)行編譯,再編譯沒(méi)有錯(cuò)誤后,通過(guò)編寫(xiě)TestBeach文件來(lái)對(duì)其進(jìn)行仿真測(cè)試來(lái)驗(yàn)證每一個(gè)模塊的功能是否正確。在頂層文件的
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
vhdl程序設(shè)計(jì)中,通過(guò)特定的例化語(yǔ)句將已經(jīng)設(shè)計(jì)好的6個(gè)子模塊進(jìn)行例化,然后直接對(duì)各個(gè)模塊進(jìn)行調(diào)用,整個(gè)頂層程序的設(shè)計(jì)就是通過(guò)調(diào)用底層的6個(gè)模塊來(lái)實(shí)現(xiàn)的,完成頂層設(shè)計(jì)后再對(duì)整個(gè)系統(tǒng)進(jìn)行仿真測(cè)試。
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真 軟件設(shè)計(jì)及仿真測(cè)試
4.1確認(rèn)取消模塊(ok_cancel模塊)
4.1.1設(shè)計(jì)思想及工作原理
在確認(rèn)取消模塊中,顧客可以在投幣之后選擇繼續(xù)購(gòu)買(mǎi)商品或者取消購(gòu)買(mǎi)商品,若確定購(gòu)買(mǎi)則會(huì)產(chǎn)生一個(gè)確認(rèn)信號(hào),而該模塊可以把該信號(hào)轉(zhuǎn)換成單時(shí)鐘的控制信號(hào),同時(shí)確定購(gòu)買(mǎi)led_buy顯示燈會(huì)亮;同樣,若顧客按下取消健,則該模塊會(huì)將輸入的取消信號(hào)轉(zhuǎn)換單時(shí)鐘周期的控制信號(hào),同時(shí)確定購(gòu)買(mǎi)cancel_buy顯示燈會(huì)變亮。
確認(rèn)取消模塊有以下輸入端口:
? 輸入端口:clk,輸入時(shí)鐘信號(hào);rst,復(fù)位信號(hào);clear,清除信號(hào);lock_out_entry,鎖定信號(hào);ok_in,確認(rèn)信號(hào);cancel_in,取消信號(hào)。? 輸出端口:ok,內(nèi)部時(shí)鐘確認(rèn)控制信號(hào);cancel,內(nèi)部時(shí)鐘取消控制信號(hào);led_buy,確認(rèn)購(gòu)買(mǎi)指示燈控制信號(hào);led_cancel,取消購(gòu)買(mǎi)指示燈控制信號(hào)。電路原理圖如圖所示:
該模塊的工作過(guò)程如下:首先系統(tǒng)復(fù)位,等待確認(rèn)購(gòu)買(mǎi)信號(hào)或者取消購(gòu)買(mǎi)信號(hào)的輸入,當(dāng)收到信號(hào)后,系統(tǒng)會(huì)根據(jù)接收到的信號(hào)立即生成一個(gè)相對(duì)應(yīng)的內(nèi)部控制信號(hào)ok信號(hào)或者cancel信號(hào)。同時(shí),指示燈會(huì)根據(jù)接收到的控制信號(hào)led_buy或者led_cancel來(lái)顯示燈的亮和滅。此過(guò)程中,當(dāng)系統(tǒng)第一次接收到確認(rèn)購(gòu)買(mǎi)信號(hào)或者取消信號(hào)后,將會(huì)岸上產(chǎn)生一個(gè)鎖定信號(hào)lock_out_entry,當(dāng)接收到此信號(hào)后,整個(gè)系統(tǒng)的所有操作都會(huì)無(wú)效,直到系統(tǒng)執(zhí)行完畢,模塊接收到清零信號(hào)后,所有信號(hào)都會(huì)被清空歸零。
由QuqrtusⅡ軟件內(nèi)部生成的RTL電路圖如圖所示:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
4.1.2仿真測(cè)試
對(duì)確認(rèn)取消模塊進(jìn)行仿真測(cè)試后,得到如圖所示的仿真波形圖:
對(duì)所得到的仿真波形圖進(jìn)行分析:在15ns前,系統(tǒng)復(fù)位;在30ns的時(shí)候,系統(tǒng)接收到一個(gè)確認(rèn)購(gòu)買(mǎi)的信號(hào),此時(shí)會(huì)生成ok信號(hào),即一個(gè)時(shí)鐘的內(nèi)部控制信號(hào),同一時(shí)間,會(huì)發(fā)出一個(gè)控制信號(hào)led_buy,以此來(lái)控制購(gòu)買(mǎi)指示燈亮。在時(shí)間為31ns時(shí),可以看到系統(tǒng)發(fā)出了一個(gè)鎖定信號(hào)lock_out_entry,當(dāng)系統(tǒng)接收到該信號(hào)后,其他所有的按鍵操作都將被視為無(wú)效,所以在40ns時(shí)輸入的cancel信號(hào)不會(huì)被響應(yīng);在60ns時(shí)操作執(zhí)行完畢,系統(tǒng)接收到一個(gè)clear的控制信號(hào),此時(shí)鎖定信號(hào)歸零,同時(shí)led_buy控制信號(hào)歸零。
4.2找零控制模塊(refund模塊)
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
4.2.1設(shè)計(jì)思想及工作原理
找零控制模塊有以下輸入端口:
? 輸入端口:clk,輸入時(shí)鐘信號(hào);rst,復(fù)位信號(hào);clear,清除信號(hào);ok,接收到確認(rèn)信號(hào);cancel,接收到取消信號(hào);sum1,表示接收到的投入1元貨幣的信號(hào);sum_5,接收到的投入5元貨幣的信號(hào);sum10,表示接收到的投入10元貨幣的信號(hào);sum,投入貨幣總和信號(hào);Rsum1,退出1元貨幣的數(shù)量;Rsum5,退出5元貨幣的數(shù)量;Rsum10,退出10元貨幣的數(shù)量;
? 輸出端口:en_deliver,給貨控制信號(hào);RC1,退幣1元的信號(hào);RC5,退幣5元的信號(hào);RC10,退幣10元的信號(hào)。電路原理圖如圖所示:
當(dāng)系統(tǒng)接收到確認(rèn)取消模塊發(fā)來(lái)的確認(rèn)購(gòu)買(mǎi)信號(hào)時(shí),則該模塊開(kāi)始執(zhí)行找零過(guò)程,同時(shí)發(fā)出給貨控制信號(hào)en_deliver,當(dāng)找零操作完成后系統(tǒng)發(fā)出清零信號(hào);當(dāng)系統(tǒng)接收到其他模塊發(fā)出的取消購(gòu)買(mǎi)信號(hào)后,則該模塊開(kāi)始執(zhí)行退幣操作,模塊會(huì)根據(jù)投入的貨幣發(fā)出不同的退幣控制信號(hào),從而完成所有貨幣的退還,操作完成后系統(tǒng)發(fā)出清零信號(hào)。
由QuqrtusⅡ軟件內(nèi)部生成的RTL電路圖如圖所示:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
4.2.2仿真測(cè)試
對(duì)找零控制模塊的仿真有2種情況:
1、確認(rèn)購(gòu)買(mǎi)操作;
系統(tǒng)執(zhí)行取消購(gòu)買(mǎi)操作,得到如圖所示的仿真波形圖:
分析上圖中的波形圖可以看出:在5ns前,系統(tǒng)復(fù)位;在10ns時(shí),系統(tǒng)接收到確認(rèn)購(gòu)買(mǎi)信號(hào)ok,同時(shí)接收到信號(hào)sum,表示系統(tǒng)收到投入貨幣為15元,在同一時(shí)刻發(fā)出給貨信號(hào)en_deliver;在11ns的時(shí)候,就收到了其他模塊發(fā)來(lái)的退幣信號(hào)Rsum_10,可以看出當(dāng)投入貨幣依次是15、14、13元時(shí),退幣金額分別為2、1、0元;當(dāng)給貨信號(hào)完畢后,該模塊立即產(chǎn)生退幣信號(hào),系統(tǒng)開(kāi)始執(zhí)行找零操作,操作
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
完成后系統(tǒng)清零。
2、取消購(gòu)買(mǎi)操作;
對(duì)系統(tǒng)執(zhí)行取消購(gòu)買(mǎi)操作,得到如圖所示的仿真波形圖:
對(duì)該波形圖進(jìn)行分析可以看出:在5ns前,系統(tǒng)處于復(fù)位狀態(tài);在10ns的時(shí)候,系統(tǒng)接收到其他模塊發(fā)出的投幣信號(hào),分別投入了一張5元貨幣和一張10元貨幣,同時(shí),接收到別的模塊發(fā)出的信號(hào)sum;在30ns時(shí),系統(tǒng)接收到確認(rèn)取消模塊發(fā)出的取消信號(hào),則該模塊開(kāi)始執(zhí)行退幣過(guò)程,退幣控制信號(hào)RC50、RC100分別發(fā)出一個(gè)高電平信號(hào),每個(gè)退幣控制信號(hào)代表退出行對(duì)應(yīng)的一種貨幣;在操作完成后系統(tǒng)發(fā)出清零信號(hào)。
4.3總額加和模塊(sum_cash模塊)
4.3.1設(shè)計(jì)思想及工作原理
總額加和模塊有以下輸入端口:
? 輸入端口:clk,輸入時(shí)鐘信號(hào);rst,復(fù)位信號(hào);clear,清除信號(hào);C1,投入一元貨幣信號(hào);C5,投入五元貨幣信號(hào);C10,投入十元貨幣信號(hào);RC1,退幣1元的信號(hào);RC5,退幣5元的信號(hào);RC10,退幣10元的信號(hào);lock_out_entry,鎖定信號(hào)。
? 輸出端口:sum_1,表示發(fā)出1元貨幣的信號(hào);sum_5,發(fā)出5元貨幣的信號(hào);sum_10,發(fā)出10元貨幣的信號(hào);sum,投入貨幣總和信號(hào); 電路原理圖如圖所示:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
當(dāng)系統(tǒng)輸入不同的投幣信號(hào)時(shí),則sum1,sum5,sum10就會(huì)記錄相對(duì)應(yīng)的貨幣的數(shù)量,而sum則記錄了投入貨幣的總額。當(dāng)貨幣投入完畢后,顧客會(huì)選擇確認(rèn)購(gòu)買(mǎi)商品或者取消購(gòu)買(mǎi),系統(tǒng)會(huì)根據(jù)接收到的不同的信號(hào)來(lái)執(zhí)行相應(yīng)的操作,當(dāng)找零模塊執(zhí)行完找零操作或者退幣操作后總數(shù)加和模塊就會(huì)收到系統(tǒng)的清零信號(hào),所有的內(nèi)部信號(hào)和表示都會(huì)被清除。
由QuqrtusⅡ軟件內(nèi)部生成的RTL電路圖如圖所示:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
4.3.2仿真測(cè)試
對(duì)總額加和模塊進(jìn)行仿真測(cè)試得到如圖所示的波形圖:
對(duì)圖中波形進(jìn)行分析可以發(fā)現(xiàn),在5ns之前,系統(tǒng)在復(fù)位狀態(tài);在時(shí)間為20ns的時(shí)候,系統(tǒng)接收到C1、C5、C10發(fā)出的3個(gè)投幣信號(hào),30ns時(shí)又收到1個(gè)1元投幣信號(hào),對(duì)應(yīng)的sum1、sum5、sum10記錄了相對(duì)應(yīng)不貨幣的數(shù)量,sum則記錄了投入貨幣的總額;在時(shí)間為40ns時(shí),lock_out_entry信號(hào)變?yōu)楦唠娖?,此時(shí)其他按鍵都會(huì)無(wú)效;當(dāng)系統(tǒng)開(kāi)始接收到退幣信號(hào)后,相應(yīng)的sum1、sum5、sum10也會(huì)發(fā)生變化,找零結(jié)束后系統(tǒng)發(fā)出清零信號(hào),系統(tǒng)內(nèi)的表示和內(nèi)部信號(hào)都被清除。
4.4余額計(jì)算模塊(calculator模塊)
4.4.1設(shè)計(jì)思想及工作原理
余額計(jì)算模塊有以下輸入端口:
? 輸入端口:rst,復(fù)位信號(hào);clear,清除信號(hào);ok,確認(rèn)購(gòu)買(mǎi)信號(hào);輸出端口:sum1,投入1元貨幣的信號(hào);sum5,投入5元貨幣的信號(hào);sum10,投入10元貨幣的信號(hào);sum,投入貨幣總和信號(hào)。
? 雙向端口R:sum1,退還1元貨幣的信號(hào);Rsum5,退還5元貨幣的信號(hào);Rsum10,退還10元貨幣的信號(hào)。電路原理圖如圖所示:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
余額計(jì)算模塊在收到其他模塊發(fā)出的確認(rèn)購(gòu)買(mǎi)信號(hào)后,就會(huì)開(kāi)始執(zhí)行操作。根據(jù)所投入的貨幣總額,可以分為3種情況:投入貨幣小于商品價(jià)格,該情況下售貨機(jī)會(huì)退還所有貨幣;投入貨幣剛好等于商品價(jià)格,該情況下退還余額為零;投入貨幣大于商品價(jià)格,該情況則根據(jù)商品的價(jià)格和顧客投入總額的差額來(lái)計(jì)算應(yīng)找余額。由QuqrtusⅡ軟件內(nèi)部生成的RTL電路圖如圖所示:
4.4.2仿真測(cè)試
對(duì)余額計(jì)算模塊的仿真有3種情況:
1、投入貨幣小于商品價(jià)格;
2、投入貨幣等于商品價(jià)格;
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
3、投入貨幣大于商品價(jià)格;
對(duì)于第1種情況,得到如圖所示的仿真波形:
對(duì)于上面的波形圖,可以看出在時(shí)間為5ns前,系統(tǒng)復(fù)位;在10ns的時(shí)候,系統(tǒng)接收到投入一張10元貨幣的信號(hào)和一張1元貨幣,接著在20ns的時(shí)候,系統(tǒng)接收到控制確認(rèn)購(gòu)買(mǎi)的信號(hào)ok,經(jīng)過(guò)計(jì)算最后得到投入的貨幣總額11元小于商品的設(shè)定價(jià)格13元,所以系統(tǒng)將發(fā)出退款信號(hào),Rsum10和Rsum1均被賦值為1,表示要退還10元貨幣和一元貨幣,當(dāng)系統(tǒng)的找零控制模塊接收到此信號(hào)后會(huì)執(zhí)行相應(yīng)操作;在時(shí)間40ns時(shí),發(fā)出清零信號(hào)。
對(duì)于第2種情況,得到如圖所示的仿真波形:
對(duì)于上面的波形圖,可以看出在時(shí)間為5ns前,系統(tǒng)復(fù)位;在10ns的時(shí)候,系統(tǒng)接收到投入一張10元貨幣和3張一元貨幣的信號(hào),接著在20ns的時(shí)候,系統(tǒng)接收到控制確認(rèn)購(gòu)買(mǎi)的信號(hào)ok,經(jīng)過(guò)計(jì)算最后得到投入的貨幣總額13元?jiǎng)偤玫扔谏唐返脑O(shè)定價(jià)格13元,所以系統(tǒng)將發(fā)出退款信號(hào),Rsum10、Rsum5、Rsum1均被賦值為0,表示要退還貨幣均為0,當(dāng)系統(tǒng)的找零控制模塊接收到此信號(hào)后會(huì)執(zhí)行相應(yīng)操作;在時(shí)間40ns時(shí),發(fā)出清零信號(hào),清除系統(tǒng)內(nèi)部信號(hào)。
對(duì)于第3種情況,得到如圖所示的仿真波形:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
對(duì)于上面的波形圖,可以看出在時(shí)間為5ns前,系統(tǒng)復(fù)位;在10ns的時(shí)候,系統(tǒng)接收到投入2張貨幣的信號(hào),接著在20ns的時(shí)候,系統(tǒng)接收到控制確認(rèn)購(gòu)買(mǎi)的信號(hào)ok,經(jīng)過(guò)計(jì)算最后得到投入的貨幣總額20元大于價(jià)格13元,所以系統(tǒng)將發(fā)出退款信號(hào),Rsum10、Rsum5、Rsum1分別被賦值為2、1、0,表示要退還貨幣均為2張1元,1張5元,當(dāng)系統(tǒng)的找零控制模塊接收到此信號(hào)后會(huì)執(zhí)行相應(yīng)操作;在時(shí)間40ns時(shí),發(fā)出清零信號(hào),清除系統(tǒng)內(nèi)部信號(hào)。
4.5鎖定模塊(lock模塊)
4.5.1設(shè)計(jì)思想及工作原理
鎖定模塊有以下輸入輸出端口:
? 輸入端口:rst,復(fù)位信號(hào);clear,清除信號(hào);ok,確認(rèn)購(gòu)買(mǎi)信號(hào);cancel,取消購(gòu)買(mǎi)信號(hào)。
? 輸出端口:lock_out_entry,鎖定信號(hào)。
端口原理圖如圖所示:
當(dāng)該模塊接收到確認(rèn)取消模塊發(fā)出的無(wú)論是確認(rèn)信號(hào)還是取消信號(hào),都會(huì)發(fā)出一個(gè)鎖定信號(hào),從而鎖定整個(gè)系統(tǒng)的其他任何操作。由QuqrtusⅡ軟件內(nèi)部生成的RTL電路圖如圖所示:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
4.5.2仿真測(cè)試
對(duì)鎖定模塊進(jìn)行仿真測(cè)試,得到如圖所示波形:
對(duì)該波形圖進(jìn)行分析:在5ns前,系統(tǒng)復(fù)位;在20ns時(shí),系統(tǒng)接收到確認(rèn)取消模塊發(fā)出的cancel控制信號(hào),此時(shí)該模塊會(huì)立即產(chǎn)生lock_out_entry信號(hào),即按鍵鎖定信號(hào);在40ns時(shí),系統(tǒng)操作結(jié)束,發(fā)出清零信號(hào)。
4.6顯示模塊
4.6.1設(shè)計(jì)思想及工作原理
? 輸入端口:din,表示收到貨幣總額信號(hào)。
? 輸出端口:led1,顯示貨幣的個(gè)位數(shù);led10,顯示貨幣的十位數(shù)。
顯示模塊會(huì)實(shí)時(shí)顯示售貨機(jī)收到的貨幣總額,并且通過(guò)led1來(lái)顯示投入貨幣的個(gè)位數(shù),led2來(lái)顯示投入貨幣的十位數(shù)。在該模塊中,調(diào)用了一個(gè)數(shù)碼管顯示的元件disp7。
Lock模塊的端口原理圖如圖所示:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
由QuqrtusⅡ軟件內(nèi)部生成的TRL電路圖如圖所示:
4.6.2七段數(shù)碼管顯示器設(shè)計(jì)
在元件disp7程序設(shè)計(jì)中,有一個(gè)輸入端口din,一個(gè)輸出端口led。disp7程序的端口原理圖如圖所示:
該元件設(shè)計(jì)的主要目的是具體定義了從0~9中每一個(gè)數(shù)值所對(duì)應(yīng)的字符串賦值。由QuqrtusⅡ軟件內(nèi)部生成的RTL電路圖如圖所示:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
4.6.3仿真測(cè)試
顯示模塊仿真波形圖如圖所示:
對(duì)該波形圖進(jìn)行分析:當(dāng)顯示模塊接收到用來(lái)控制貨幣總額的信號(hào)din時(shí),兩個(gè)led顯示器會(huì)馬上將貨幣總額顯示出來(lái)。圖中可以看出,投入貨幣總額為15元,則led1應(yīng)顯示為5,led2應(yīng)顯示為1,根據(jù)vhdl程序的設(shè)計(jì),led信號(hào)用字符串“"1111001”來(lái)顯示1,用字符串“0010010”來(lái)顯示數(shù)字5,圖中的波形圖說(shuō)明了顯示器顯示是正確的。
4.7頂層設(shè)計(jì)與分析
頂層的設(shè)計(jì)就是對(duì)整個(gè)自動(dòng)售貨機(jī)系統(tǒng)進(jìn)行設(shè)計(jì),為了在整個(gè)系統(tǒng)中達(dá)到連接底層元件從而形成更高層次的電路設(shè)計(jì),在頂層文件的vhdl程序設(shè)計(jì)中使用了例化語(yǔ)句。在程序中利用component語(yǔ)句對(duì)準(zhǔn)備調(diào)用的元件做了聲明,并利用net1~net11十一個(gè)信號(hào)作為系統(tǒng)的內(nèi)部連線。
顯然,元件例化的實(shí)質(zhì)就是引用一種連接關(guān)系,將之前已經(jīng)設(shè)計(jì)好的設(shè)計(jì)實(shí)體定義為一個(gè)元件,然后把元件與當(dāng)前的設(shè)計(jì)實(shí)體的端口通過(guò)特定的語(yǔ)句連接起來(lái),從而為當(dāng)前的設(shè)計(jì)實(shí)體引進(jìn)新的低一級(jí)的設(shè)計(jì)層次。元件例化是vhdl設(shè)計(jì)實(shí)體完成自上而下層次化設(shè)計(jì)的一種途徑。
4.7.1設(shè)計(jì)思想及工作原理
由QuqrtusⅡ軟件內(nèi)部生成的RTL電路圖如圖所示:
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
4.7.2仿真測(cè)試
對(duì)整個(gè)系統(tǒng)進(jìn)行功能仿真測(cè)試,對(duì)仿真的結(jié)果的其中一部分進(jìn)行分析,對(duì)以下兩種仿真情況進(jìn)行分析:
1、確認(rèn)購(gòu)買(mǎi)但余額不足
2、確認(rèn)購(gòu)買(mǎi)且需要找零
對(duì)第1種情況進(jìn)行仿真得到如圖的仿真圖:
在該波形圖中可以看出,在5ns的時(shí)候,系統(tǒng)復(fù)位;在時(shí)間為30ns的時(shí)候,系統(tǒng)收到一個(gè)1元貨幣投入信號(hào)和一個(gè)5元貨幣投入信號(hào),緊接著在50ns的時(shí)候又收到一個(gè)一元貨幣投入信號(hào);兩個(gè)顯示器顯示了投入貨幣的總額;在時(shí)間為80ns的時(shí)
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
候,系統(tǒng)收到確認(rèn)信號(hào)ok_in,投幣結(jié)束,開(kāi)始執(zhí)行找零或者退幣操作;系統(tǒng)內(nèi)部通過(guò)判斷發(fā)現(xiàn)所投入貨幣總額小于商品價(jià)格,所以開(kāi)始進(jìn)行全額退幣過(guò)程;在90ns的時(shí)候系統(tǒng)發(fā)出同時(shí)退出一元貨幣和五元貨幣的信號(hào)RC1和RC5。系統(tǒng)操作完成,等待下一次的操作。
對(duì)第2種情況進(jìn)行仿真得到如圖的仿真圖:
在該波形圖中,在時(shí)間為30ns的時(shí)候,系統(tǒng)接收到一個(gè)投入一元貨幣的信號(hào),在70ns的時(shí)候,同時(shí)收到一個(gè)五元貨幣和一個(gè)十元貨幣的投入信號(hào),顯示器實(shí)時(shí)顯示所投入貨幣的總額;在80ns的時(shí)候收到確認(rèn)購(gòu)買(mǎi)信號(hào)ok_in,由于所投貨幣總額大于商品價(jià)格,則系統(tǒng)開(kāi)始執(zhí)行找零過(guò)程,并且產(chǎn)生一個(gè)出貨信號(hào)en_deliver和一個(gè)確認(rèn)購(gòu)買(mǎi)信號(hào)led_buy;,在時(shí)間為90ns至120ns,連續(xù)3個(gè)產(chǎn)生退幣信號(hào)退幣信號(hào)RC1;退幣完成后,本次操作完成,等待下一次的操作。
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真 總結(jié)
隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的發(fā)展,自動(dòng)售貨機(jī)的發(fā)展方向也必將向著更加智能化和人性化的礎(chǔ)上,從顧客的實(shí)際需要出發(fā),本文在分析了自動(dòng)售貨機(jī)的特點(diǎn)后,完成了自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì),在設(shè)計(jì)的過(guò)程中,主要完成了以下幾個(gè)方面的工作;(1)對(duì)自動(dòng)售貨機(jī)的發(fā)展技術(shù)進(jìn)行了總結(jié)和歸納,經(jīng)過(guò)總結(jié)可以發(fā)現(xiàn)節(jié)能環(huán)保是現(xiàn)在起發(fā)展的一個(gè)重要方向,同時(shí),移動(dòng)商務(wù)也是其發(fā)展的一個(gè)目標(biāo)方向。(2)完成了整個(gè)系統(tǒng)方案的設(shè)計(jì),并且對(duì)整個(gè)系統(tǒng)進(jìn)行了模塊的劃分,將整個(gè)系統(tǒng)劃分成6個(gè)子模塊,對(duì)每個(gè)模塊都單獨(dú)進(jìn)行了功能設(shè)計(jì)。
(3)利用vhdl語(yǔ)言輸入的方式,對(duì)子模塊進(jìn)行了詳細(xì)的軟件的設(shè)計(jì),并且對(duì)其完成了相應(yīng)的功能仿真測(cè)試,并且對(duì)每次的仿真結(jié)果進(jìn)行分析。最后在頂層文件中將各個(gè)子模塊進(jìn)行例化并對(duì)子模塊進(jìn)行了調(diào)用,并且對(duì)整個(gè)控制系統(tǒng)的仿真,經(jīng)過(guò)仿真測(cè)試的結(jié)果可以看出,整個(gè)控制系統(tǒng)的設(shè)計(jì)達(dá)到了最初的所有設(shè)計(jì)要求,完成了各項(xiàng)功能。
通過(guò)對(duì)整個(gè)系統(tǒng)的功能測(cè)試發(fā)現(xiàn)該自動(dòng)售貨機(jī)的工作是比較穩(wěn)定和可靠的,而且操作簡(jiǎn)單明了,具有很大的實(shí)用性。由于經(jīng)驗(yàn)不足和時(shí)間原因,本文中對(duì)該自動(dòng)售貨機(jī)系統(tǒng)的設(shè)計(jì)也存在了一些不足之處。在本系統(tǒng)中,只設(shè)定了一種商品,商品選擇功能不完善;購(gòu)買(mǎi)商品后的結(jié)算方式比較單一,只能現(xiàn)金支付,缺少例如IC卡支付等智能支付方式。所有這些問(wèn)題會(huì)對(duì)在相關(guān)知識(shí)進(jìn)行更深入的學(xué)習(xí)后逐一解決,努力對(duì)該控制系統(tǒng)進(jìn)行改進(jìn),使其更加完善。
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
致謝
回首大學(xué)四年,雖有遺憾卻也無(wú)悔。在四年的求學(xué)期間,雖然也曾迷茫彷徨,卻因?yàn)樯磉呉蝗赫d人不倦的老師的引導(dǎo)以及真誠(chéng)、熱心助人的同學(xué)的幫助,重新找到了前進(jìn)的方向以及努力的目標(biāo)。
在此,要首先感謝在本次畢業(yè)設(shè)計(jì)過(guò)程中從選題開(kāi)始到論文的完成一直給我很大幫助的段老師,正是因?yàn)槎卫蠋熌托牡膸椭?,我才能更好的完成課題中的設(shè)計(jì)及論文的編寫(xiě)。同時(shí),也要感謝本次在畢業(yè)設(shè)計(jì)過(guò)程中給與我?guī)椭钠渌蠋熀屯瑢W(xué)。最后,祝愿所有老師身體健康,桃李天下;祝愿所有同學(xué)前程似錦,工作順利。
大學(xué)生活即將結(jié)束,我也即將步入社會(huì)這個(gè)人生大舞臺(tái),要學(xué)習(xí)的東西還有很多。在以后的日子里,我將會(huì)更加的努力去面對(duì)生活中所遇到的各種挑戰(zhàn)。
自動(dòng)售貨機(jī)控制系統(tǒng)的設(shè)計(jì)與仿真
參考文獻(xiàn)
第二篇:軟件工程_自動(dòng)售貨機(jī)
自動(dòng)售貨機(jī)
信息1101 施敏宇 18號(hào)
下面是自動(dòng)售貨機(jī)系統(tǒng)的需求陳述,試建立它的對(duì)象模型、動(dòng)態(tài)模型和功能模型: 自動(dòng)售貨機(jī)系統(tǒng)是一種無(wú)人售貨系統(tǒng)。售貨時(shí),顧客把硬幣投入機(jī)器的投幣口中,機(jī)器檢查硬幣的大小、重量、厚度及邊緣類(lèi)型。有效的硬幣是一元幣、五角幣、五分幣、二分幣、一分幣。其他貨幣被認(rèn)為是假幣。機(jī)器拒絕接受假幣,并將其從退幣孔退出。當(dāng)機(jī)器接受了有效的硬幣之后,就把硬幣送入硬幣儲(chǔ)藏器中。顧客支付的貨幣根據(jù)硬幣的面值進(jìn)行累加。自動(dòng)售貨機(jī)裝有貨物分配器。每個(gè)貨物分配器中包含零個(gè)或多個(gè)價(jià)格相同的貨物。顧客通過(guò)選擇貨物分配器來(lái)選擇貨物。如果貨物分配器中有貨物,而且顧客支付的貨幣值不小于該貨物的價(jià)格,貨物將被分配到貨物傳送孔送給顧客,并將適當(dāng)?shù)牧沐X(qián)返還到退幣孔。如果分配器是空的,則和顧客支付的貨幣值相等的硬幣將被送回到退幣孔。如果顧客支付的貨幣值少于所選擇的分配器中貨物的價(jià)格,機(jī)器將等待顧客投進(jìn)更多的貨幣。如果顧客決定不買(mǎi)所選擇的貨物,他投放進(jìn)的貨幣將從退幣孔中退出。
面向?qū)ο蟮姆治?/p>
面向?qū)ο蠓治龇椒ǖ暮诵乃枷胧抢妹嫦驅(qū)ο蟾拍詈头椒檐浖枨髽?gòu)造一組相關(guān)模型(對(duì)象模型,動(dòng)態(tài)模型和功能模型),來(lái)獲得關(guān)于問(wèn)題域的全面認(rèn)識(shí)。
這三個(gè)模型從不同的角度對(duì)系統(tǒng)進(jìn)行描述,其中:對(duì)象模型描述了系統(tǒng)靜態(tài)的、結(jié)構(gòu)化的數(shù)據(jù)性質(zhì);動(dòng)態(tài)模型描述了系統(tǒng)順勢(shì)的、行為化的控制性質(zhì);功能模型描述了變化的系統(tǒng)的功能性質(zhì)。這三個(gè)模型都涉及到數(shù)據(jù)。控制和操作等共同的概念,但每種模型描述的側(cè)重有所不同。它們各自以不同側(cè)面反應(yīng)系統(tǒng)的實(shí)質(zhì)內(nèi)容,綜合起來(lái)則全面反映了目標(biāo)系統(tǒng)的需求。
對(duì)象模型是三個(gè)模型中最關(guān)鍵的。它的作用是描述系統(tǒng)的靜態(tài)結(jié)構(gòu),包括構(gòu)成系統(tǒng)的類(lèi)和對(duì)象、它們的屬性和操作以及它們之間的聯(lián)系。UML中類(lèi)圖適用于建立對(duì)象模型,狀態(tài)圖適用于建立動(dòng)態(tài)模型。每個(gè)類(lèi)的動(dòng)態(tài)行為用一張狀態(tài)圖來(lái)表示,各個(gè)類(lèi)的狀態(tài)圖通過(guò)事件合并起來(lái),構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。也就是說(shuō),動(dòng)態(tài)模型是基于事件共享而相互關(guān)聯(lián)的一組狀態(tài)圖的集合。建立對(duì)象模型大體上按照下列順序進(jìn)行:尋找問(wèn)題域內(nèi)的對(duì)象,識(shí)別出對(duì)象間的關(guān)系、定義屬性和服務(wù)。事實(shí)上,分析工作不可能?chē)?yán)格按照預(yù)定順序進(jìn)行,系統(tǒng)的模型往往需要反復(fù)構(gòu)造多遍才能建成。
注:對(duì)象硬幣計(jì)算器和對(duì)象硬幣檢測(cè)器可以作為對(duì)象自動(dòng)售貨器的一部分,它們的屬性作為自動(dòng)售貨器的屬性。
建立動(dòng)態(tài)模型
對(duì)于僅存數(shù)靜態(tài)數(shù)據(jù)的系統(tǒng)來(lái)說(shuō),動(dòng)態(tài)模型并沒(méi)有什么實(shí)際意義。然而在開(kāi)發(fā)交互式系統(tǒng)時(shí),動(dòng)態(tài)模型卻起著很重要的作用。如果收集輸入信息是目標(biāo)系統(tǒng)的一項(xiàng)主要工作,則在開(kāi)發(fā)這類(lèi)應(yīng)用系統(tǒng)時(shí)建立正確的動(dòng)態(tài)模型是至關(guān)重要的。
建立動(dòng)態(tài)模型的步驟:
(1)編寫(xiě)典型的對(duì)話腳本;
(2)從腳本中提取出事件,聯(lián)系該事件與其目標(biāo)對(duì)象;
(3)組織事件的順序和狀態(tài)(采用狀態(tài)圖描繪);
(4)比較各個(gè)不同對(duì)象的狀態(tài)圖,檢查對(duì)象之間的一致性,確保事件之間的匹配。
提示投幣投幣購(gòu)買(mǎi)提示是假幣,退幣假幣檢查硬幣否真幣存儲(chǔ)硬幣,計(jì)算貨幣總值確認(rèn)投完硬幣是請(qǐng)求選擇貨物選擇貨物檢測(cè)貨物存量無(wú)貨提示無(wú)貨計(jì)算比較貨幣總值和貨物價(jià)格確認(rèn)確認(rèn)顧客購(gòu)買(mǎi)小于提示貨物不足,確認(rèn)顧客購(gòu)買(mǎi)不購(gòu)買(mǎi)送出貨物,請(qǐng)求取貨不購(gòu)買(mǎi)退幣請(qǐng)求取退幣提示顯示交易完畢
功能模型
功能模型描述了系統(tǒng)的所有計(jì)算。功能模型指出發(fā)生了什么,動(dòng)態(tài)模型確定什么時(shí)候發(fā)生,而對(duì)象模型確定發(fā)生的客體。功能模型表明一個(gè)計(jì)算如何從輸入值得到輸出值,它不考慮計(jì)算的次序。功能模型由多張數(shù)據(jù)流圖組成。數(shù)據(jù)流圖用來(lái)表示從源對(duì)象到目標(biāo)對(duì)象的數(shù)據(jù)值的流向,它不包含控制信息,控制信息在動(dòng)態(tài)模型中表示,同時(shí)數(shù)據(jù)流圖也不表示對(duì)象中值的組織,值的組織在對(duì)象模型中表示。
數(shù)據(jù)流圖中包含有處理、數(shù)據(jù)流、動(dòng)作對(duì)象和數(shù)據(jù)存儲(chǔ)對(duì)象。
1.處理
數(shù)據(jù)流圖中的處理用來(lái)改變數(shù)據(jù)值。最低層處理是純粹的函數(shù),一張完整的數(shù)據(jù)流圖是一個(gè)高層處理。
2.數(shù)據(jù)流
數(shù)據(jù)流圖中的數(shù)據(jù)流將對(duì)象的輸出與處理、處理與對(duì)象的輸入、處理與處理聯(lián)系起來(lái)。在一個(gè)計(jì)算機(jī)中,用數(shù)據(jù)流來(lái)表示一中間數(shù)據(jù)值,數(shù)據(jù)流不能改變數(shù)據(jù)值。
3.動(dòng)作對(duì)象
動(dòng)作對(duì)象是一種主動(dòng)對(duì)象,它通過(guò)生成或者使用數(shù)據(jù)值來(lái)驅(qū)動(dòng)數(shù)據(jù)流圖。
4.數(shù)據(jù)存儲(chǔ)對(duì)象
數(shù)據(jù)流圖中的數(shù)據(jù)存儲(chǔ)是被動(dòng)對(duì)象,它用來(lái)存儲(chǔ)數(shù)據(jù)。它與動(dòng)作對(duì)象不一樣,數(shù)據(jù)存儲(chǔ)本身不產(chǎn)生任何操作,它只響應(yīng)存儲(chǔ)和訪問(wèn)的要求。
有效幣特征假幣退假幣假幣檢查硬幣有效幣硬幣送入硬幣儲(chǔ)藏器計(jì)算面值貨物價(jià)格有貨貨幣總值硬幣顧客投幣顧客不足等待顧客投幣顧客取消購(gòu)買(mǎi),退幣顧客判斷貨幣是否足夠足夠選擇貨物判斷分配器貨物存量無(wú)貨分配貨物,找零貨物,硬幣硬幣退幣
第三篇:自動(dòng)售貨機(jī)合作合同
自動(dòng)售貨機(jī)合作協(xié)議書(shū)
甲 方:南京威汀貿(mào)易有限公司
乙 方:
甲、乙雙方本著平等、互惠的原則,經(jīng)過(guò)友好協(xié)商,就合作放置自動(dòng)售貨機(jī)開(kāi)展的服務(wù)
達(dá)成如下協(xié)議:
第一條 綜合條款
1.甲方向乙方提供自動(dòng)售貨()機(jī)臺(tái),咖啡機(jī)經(jīng)營(yíng)。
2.乙方向甲方所提供場(chǎng)地指定在(地址)()共()處。
3.甲方所提供自動(dòng)售貨機(jī)編號(hào)為共臺(tái)??Х葯C(jī)編號(hào)為共臺(tái)
4.甲方在年月日前,將自動(dòng)售貨機(jī)調(diào)試后運(yùn)送到位投入使用。
5.合作期間,放置于乙方處自動(dòng)售貨機(jī)的所有權(quán)歸屬于甲方。
第二條 服務(wù)內(nèi)容
1.甲方保證所提供之自動(dòng)售貨機(jī)內(nèi)銷(xiāo)售的商品符合中華人民共和國(guó)國(guó)家衛(wèi)生標(biāo)準(zhǔn)及企
業(yè)技術(shù)質(zhì)量標(biāo)準(zhǔn)。
2.甲方負(fù)責(zé)自動(dòng)售貨機(jī)的日常運(yùn)營(yíng)工作,并承擔(dān)運(yùn)營(yíng)成本(商品補(bǔ)給、設(shè)備保養(yǎng)、清
潔及日常維修)等費(fèi)用。
3.甲方工作人員進(jìn)入乙方區(qū)域,服從乙方負(fù)責(zé)人的管理。
4.乙方如因特殊情況需要移動(dòng)自動(dòng)售貨機(jī)位置,必須事先通知甲方,由甲方工作人員
在3個(gè)工作日內(nèi)遷移設(shè)備。
5.乙方對(duì)自動(dòng)售貨機(jī)協(xié)助保管,發(fā)現(xiàn)設(shè)備故障或消費(fèi)者投訴應(yīng)及時(shí)通知甲方,甲方應(yīng)
及時(shí)處理解決,設(shè)400,000,2991投訴專(zhuān)線,遇卡貨卡幣投訴立即全額理賠并免費(fèi)奉送所購(gòu)商品。
第三條 協(xié)議條件、期限
1.本協(xié)議自簽定之日起即刻生效,協(xié)議期限以一年為準(zhǔn),協(xié)議期滿,如雙方無(wú)異議,本協(xié)議自動(dòng)延續(xù)至下一年同月日。
2.協(xié)議期內(nèi)甲方按裝置自動(dòng)售貨機(jī)前雙方商定的費(fèi)用元,付給乙方,一季度
結(jié)算一次。
第四條 協(xié)議解除
1.如果乙方場(chǎng)地另有用途需提前15日通知甲方撤走.2.如自動(dòng)售貨機(jī)持續(xù)銷(xiāo)售狀況不佳,甲方提前10天告知乙方,在結(jié)算清相關(guān)費(fèi)用后,解除協(xié)議。
其他約定:。
第五條本協(xié)議一式二份,雙方各執(zhí)一份,具有同等法律效力。
甲方蓋章:南京威汀貿(mào)易有限公司
代表簽字:
代表簽字:乙方蓋章:聯(lián)系電話: 025-85552178聯(lián)系電話:
地址: 地址: 南京市棲霞區(qū)金堯路19-5
日期:
第四篇:軟件工程課程設(shè)計(jì)(自動(dòng)售貨機(jī))
《軟件工程》課程設(shè)計(jì)報(bào)告
一、問(wèn)題描述
(一)關(guān)于自動(dòng)售貨機(jī)
自動(dòng)售貨機(jī)像磁卡電話、銀行柜員機(jī)一樣,以方便、新穎、文明、晝夜服務(wù)等特點(diǎn),成為發(fā)達(dá)國(guó)家不可缺少的便民配套設(shè)施。如今的自動(dòng)售貨機(jī)可以為顧客提供多種服務(wù)。顧客可以根據(jù)自己的需要選擇商品并投入錢(qián)幣,售貨機(jī)接收錢(qián)幣,售出商品。
(二)自動(dòng)售貨機(jī)的設(shè)計(jì)
自動(dòng)售貨機(jī)系統(tǒng)是一種無(wú)人售貨系統(tǒng)。售貨時(shí),顧客把硬幣投入機(jī)器的投幣口中,機(jī)器檢查硬幣的大小、重量、厚度及邊緣類(lèi)型。有效的硬幣是一元幣、五角幣、一角幣、五分幣和一分幣。其它貨幣都被認(rèn)為是假幣。機(jī)器拒收假幣,并將其從退幣孔退出。當(dāng)機(jī)器接收了有效的硬幣之后,將之送入硬幣儲(chǔ)藏器。顧客支付的貨幣根據(jù)硬幣的面值進(jìn)行累加。
自動(dòng)售貨機(jī)裝有貨物分配器,每個(gè)分配器中包含0 個(gè)或多個(gè)價(jià)格相同的貨物。顧客通過(guò)選擇貨物分配器來(lái)選擇貨物。如果有貨,且顧客支付的貨幣值不小于該貨物的價(jià)格,貨物將被分配到貨物傳送孔送給顧客,并將找零返回到退幣孔。如果無(wú)貨,則和顧客支付的貨幣值相等的硬幣將被送到退幣孔。如果顧客支付的貨幣值小于所選貨物的價(jià)格,機(jī)器將等待顧客投進(jìn)更多的貨幣。如果顧客決定不買(mǎi)所選擇的貨物,他投放進(jìn)的硬幣將從退幣孔中退出。
二、需求分析
(一)UML自動(dòng)售貨機(jī)系統(tǒng)功能需求:
自動(dòng)售貨機(jī)系統(tǒng)是一種無(wú)一元等3個(gè)硬幣投幣口。顧客確認(rèn)購(gòu)貨后,售貨機(jī)可根據(jù)硬幣的面值進(jìn)行累加。
自動(dòng)售貨機(jī)裝有貨物分配器。每個(gè)貨物分配器中包含零個(gè)或多個(gè)價(jià)格相同的貨物。顧客通過(guò) 1 選擇貨物分配器來(lái)選擇貨物。如果貨物分配器中有貨物,而且顧客支付的貨幣值不小于該貨物的價(jià)格,貨物將被分配到貨物傳送孔送給顧客,并將適當(dāng)?shù)牧沐X(qián)返回到退幣孔。如果分配器是空的,則和顧客支付的貨幣值相等的硬幣將被送加到退幣孔。如果顧客支付的貨幣值少于所選擇的分配器中的貨物的價(jià)格,機(jī)器將等待顧客投進(jìn)更多的貨幣。如果顧客決定不買(mǎi)所選擇的貨物,將所投硬幣從退幣孔退出。
(二)UML自動(dòng)售貨機(jī)系統(tǒng)控制要求:
根據(jù)售貨機(jī)自動(dòng)控制系統(tǒng)的流程可以知道自動(dòng)售貨機(jī)的主要系統(tǒng)包括:計(jì)幣系統(tǒng)、比較系統(tǒng)、選擇系統(tǒng)、飲料供應(yīng)系統(tǒng)、退幣系統(tǒng)和報(bào)警系統(tǒng)。
1.計(jì)幣系統(tǒng):
當(dāng)有顧額色買(mǎi)飲料時(shí),投入的錢(qián)幣經(jīng)過(guò)感應(yīng)器,感應(yīng)器記憶投幣的個(gè)數(shù)關(guān)且傳送到檢測(cè)系統(tǒng)(即電子天平)和計(jì)幣系統(tǒng)。只有當(dāng)電子天平測(cè)量的重量少于誤差值時(shí),允許計(jì)幣系統(tǒng)進(jìn)行疊加錢(qián)幣,疊加的錢(qián)幣數(shù)據(jù)存放在數(shù)據(jù)寄存器中。如果不正確時(shí),認(rèn)為是假幣。既定出投幣,既定出系統(tǒng),等待新顧客。
2.比較系統(tǒng):
投入完畢后,系統(tǒng)會(huì)把錢(qián)幣數(shù)據(jù)和可以購(gòu)買(mǎi)飲料的價(jià)格進(jìn)行區(qū)間比較,當(dāng)投入的錢(qián)幣小于2元時(shí),指示燈亮,顯示投入的錢(qián)幣不足。此時(shí)可以再投幣或選擇退幣。當(dāng)投稿的錢(qián)幣在2~3元之間時(shí),汔水選擇指示燈長(zhǎng)亮。當(dāng)大于3元時(shí),汔水和咖啡的指示燈同時(shí)長(zhǎng)亮。此時(shí)可以選擇飲料或選擇退幣。
3.選擇系統(tǒng):
比較電路完成后選擇電路指示燈是長(zhǎng)亮的,當(dāng)按下汽水或咖啡選擇時(shí),相應(yīng)的選擇指示燈由長(zhǎng)亮轉(zhuǎn)為以1秒為周期閃爍。當(dāng)飲料供應(yīng)完畢時(shí),閃爍同時(shí)停止。
4.飲料供應(yīng)系統(tǒng):
當(dāng)按下選擇按鈕時(shí),相應(yīng)的電磁閥(Y4或Y6)和電機(jī)(Y3或Y5)同時(shí)啟動(dòng)。在飲料輸出的同時(shí),減去相應(yīng)的購(gòu)買(mǎi)錢(qián)幣數(shù)。當(dāng)飲料輸出達(dá)到8秒時(shí),電磁閥首先關(guān)斷,小電機(jī)繼續(xù)工作0.5秒后停機(jī)。此小電機(jī)的作用是:在輸出飲料時(shí),加快輸出。在電磁閥關(guān)斷時(shí),給電磁閥加壓作用,加速電磁閥的關(guān)斷。(注:由于該售貨機(jī)是長(zhǎng)期使用,電磁閥使用過(guò)多時(shí),返回彈力減少,不能完全關(guān)斷會(huì)出現(xiàn)漏飲料的現(xiàn)象。此時(shí)電機(jī)Y3和Y5延長(zhǎng)工作0.5秒起到電磁閥加壓的作用,使電磁閥可以完好的關(guān)斷。)
5.退幣系統(tǒng):
當(dāng)顧客購(gòu)?fù)觑嬃虾?,多余的錢(qián)幣只要按下退幣按鈕。系統(tǒng)就會(huì)把數(shù)據(jù)寄存器D2內(nèi)的錢(qián)幣數(shù)首先除以10得到整數(shù)部分,是1元錢(qián)需要退回的數(shù)量,存放在D10里。余數(shù)存放在D11里。再用D11除以5得到的整數(shù)部分是5角錢(qián)需要退回的數(shù)量,存放在D12里。余數(shù)存放在D13里。最后D13里面的數(shù)值,就是1角錢(qián)需要退回的數(shù)量。在選擇退幣的同時(shí)啟動(dòng)3個(gè)退幣電機(jī)。3個(gè)感應(yīng)器開(kāi)始計(jì)數(shù),當(dāng)感應(yīng)器記錄的個(gè)數(shù)等于數(shù)據(jù)寄存器退回的幣數(shù)時(shí),退幣電機(jī)停止運(yùn)轉(zhuǎn)。
6.報(bào)警系統(tǒng):
報(bào)警系統(tǒng)如果是非故障報(bào)警,只要通過(guò)網(wǎng)絡(luò)通知送液車(chē)或者送幣車(chē)即可。但是如果是故障報(bào)警則需要通知維修人員到現(xiàn)聲進(jìn)行維修。同時(shí)停止服務(wù),避免造成顧客的損失。
(三)業(yè)務(wù)流程圖
錢(qián)幣記錄儀對(duì)錢(qián)幣前端接受顧客投的進(jìn)行識(shí)別幣判斷退出錢(qián)幣發(fā)送信息到分配器判斷沒(méi)有貨物時(shí)發(fā)送信息到前端發(fā)送貨物4
(四)數(shù)據(jù)流程圖
錢(qián)幣錢(qián)幣記錄儀對(duì)分配器反錢(qián)幣錢(qián)幣進(jìn)行計(jì)算與貨物價(jià)格進(jìn)貨物發(fā)放行比較取走零錢(qián)與購(gòu)買(mǎi)的貨物
三、各種UML圖型及其分析
(一)用例圖
1.顧客的用例圖
inputCoinchooseSodaCustomer
2.自動(dòng)售貨機(jī)的用例圖
RegisterDispenserFrontSodaMachine
(二)類(lèi)圖
(三)序列圖
理想狀態(tài)(不找零錢(qián))的序列圖
:Front:Register:Dispenser : Customer1: inputCoin()2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: releaseSoda()8 1.沒(méi)有貨物的序列圖
:Front:Register:Dispenser : Customer1: inputCoin()2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: displayPrompt()12: sendReturnCoin()13: returnCoinToFront()14: returnCoin()9 2.3.需找零錢(qián)的序列圖
:Front:Register:Dispenser : Customer1: inputCoin()2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: sendSodaPrice()12: checkForChange()13: releaseChange()14: receiveSoda()15: receiveChange()10
沒(méi)有零錢(qián)找給顧客
:Front:Register:Dispenser : Customer1: inputCoin()2: accept()3: getCustomerInput()4: checkForSoda()5: returnSodaFree()6: displayPrompt()7: chooseSoda()8: sendChooseToDis()9: checkAvailability()10: releaseSoda()11: sendSodaPrice()12: checkForCharge()13: returnNoCharge()14: returnCoinToFront()15: displayPrompt()16: returnSodaToDispenser()17: returnCoin()11 4.5.完整的序列圖
:Front:Register:Dispenser : Customer1: inputCoin()2: accept()3: getCustomerInput()4: checkForSoda()5: returnNoCharge()6: returnCoinToFront()7: displayPrompt()8: returnCoin()9: End()10: returnSodaFree()11: displayPrompt()12: chooseSoda()13: sendChooseToDispenser()14: checkAvailability()15: returnUnavailability()16: displayPrompt()17: sendReturnCoin()18: returnCoinToFront()19: returnCoin()20: End()21: releaseSoda()22: sendSodaFrice()23: checkForCharge()24: returnNoCharge()25: returnCoinToFront()26: displayPrompt()27: returnSodaToDispenser()28: returnCoin()29: End()30: releaseCharge()31: receiveSoda()32: receiveCharge()33: End()34: receiveSoda()35: End()12
(四)協(xié)作圖
1.理想狀態(tài)的協(xié)作圖
3: getCustomerInput()9: checkAvailability()4: checkForSoda():Registe:Dispensrer8: sendChooseToDis()2: accept()5: returnSodaFree()1: inputCoin()10: releaseSoda()7: chooseSoda():Front : Customer6: displayPrompt()11: releaseSoda()2.沒(méi)有貨物的協(xié)作圖
1: inputCoin()7: chooseSoda():Front : Customer6: displayPrompt()11: displayPrompt()14: returnCoin()13: returnCoinToFront()8: sendChooseToDis()2: accept()5: returnSodaFree()12: sendReturnCoin()10: releaseSoda()3: getCustomerInput()9: checkAvailability()4: checkForSoda():Registe:Dispensrer 3.需找零錢(qián)的協(xié)作圖
1: inputCoin()7: chooseSoda():Front : Customer6: displayPrompt()14: receiveSoda()15: receiveChange()13: releaseChange()8: sendChooseToDis()2: accept()5: returnSodaFree()10: releaseSoda()3: getCustomerInput()12: checkForChange()9: checkAvailability()4: checkForSoda():Registe:Dispensrer11: sendSodaPrice()4.沒(méi)有零錢(qián)找給顧客的協(xié)作圖
1: inputCoin()7: chooseSoda():Front : Customer6: displayPrompt()15: displayPrompt()17: returnCoin()13: returnNoCharge()14: returnCoinToFront()8: sendChooseToDis()16: returnSodaToDispenser()2: accept()5: returnSodaFree()3: getCustomerInput()10: releaseSoda()12: checkForCharge()9: checkAvailability()4: checkForSoda():Registe:Dispensrer11: sendSodaPrice()
完整的協(xié)作圖
29: End()33: End()35: End()1: inputCoin()12: chooseSoda():Front : Customer7: displayPrompt()8: returnCoin()11: displayPrompt()16: displayPrompt()19: returnCoin()26: displayPrompt()28: returnCoin()31: receiveSoda()13: sendChooseToDispenser()32: receiveCharge()27: returnSodaToDispenser()34: receiveSoda()10: returnSodaFree()5: returnNoCharge()15: returnUnavailability()6: returnCoinToFront()21: releaseSoda()18: returnCoinToFront()24: returnNoCharge()14: checkAvailability()25: returnCoinToFront()30: releaseCharge()2: accept()17: sendReturnCoin():Dispenser4: checkForSoda()3: getCustomerInput()22: sendSodaFrice()23: checkForCharge():Register15 5.(五)狀態(tài)圖
提示投幣do/ 請(qǐng)求投幣do/ 提示是假幣假幣do/ 檢查硬幣真幣否購(gòu)買(mǎi)do/ 存儲(chǔ)硬幣,計(jì)算貨幣總值do/ 確認(rèn)投完硬幣有do/ 請(qǐng)求選擇商品選擇貨品do/ 提示無(wú)貨無(wú)貨do/ 檢測(cè)貨品存量有貨計(jì)算小于do/ 比較貨幣總值和貨物價(jià)值do/ 提示貨幣不足不小于確認(rèn)do/ 確認(rèn)顧客購(gòu)買(mǎi)do/ 送出貨品,請(qǐng)求取貨有零錢(qián)退幣無(wú)零錢(qián)do/ 請(qǐng)求退幣不購(gòu)買(mǎi)顯示do/ 提示交易完成17
(六)活動(dòng)圖
1.投幣的活動(dòng)圖
投幣確認(rèn)投幣完成2.選擇貨物的活動(dòng)圖
請(qǐng)求選擇輸入貨物確認(rèn)選擇貨物ID 3.前端的活動(dòng)圖
接受貨幣顯示可購(gòu)顯示面值貨物過(guò)小顯示沒(méi)有該貨物接受飲料顯示沒(méi)有零錢(qián)找零錢(qián)退貨幣 19
貨幣記錄儀的活動(dòng)圖
接受從前端來(lái)的錢(qián)幣判斷錢(qián)幣發(fā)送信息給分配儀發(fā)送貨物金額給前端返回錢(qián)幣計(jì)算零錢(qián)20 4.5.分配器的活動(dòng)圖
接受貨幣啟示錄儀的信息發(fā)送貨物提示沒(méi)有該貨物 21
(七)組件圖
CustomerSodaMachineFrontRegisterDispenserDB_0
(八)配置圖
Clint數(shù)據(jù)庫(kù)
(九)數(shù)據(jù)模型圖
第五篇:自動(dòng)售貨機(jī)系統(tǒng)程序
Coin類(lèi):
#include
using namespace std;
class Coin { public: /** Constructs a coin with a given name and value @param n the coin name @param v the coin value */ Coin(string n, double v);/** Gets the coin name.@return the name */ string get_name()const;/** Gets the coin value @return the value */ double get_value()const;private: string name;double value;};
Coin::Coin(string n, double v){ name = n;value = v;}
string Coin::get_name()const { return name;}
double Coin::get_value()const { return value;}
Product類(lèi): #include
using namespace std;
class Product { public: /** Constructs a product with a given name, price and quantity @param n the product name @param p the price @param q the quantity */ Product(string n, double p, int q);/** Gets the product name @return the name */ string get_name()const;/** Gets the product price @return the price */ double get_price()const;/** Gets the product quantity @return the quantity */ int get_quantity()const;/** Adds to the product quantity @param amount the amount to add */ void add_quantity(int amount);private: string name;double price;int quantity;};
Product::Product(string n, double p, int q){ name = n;price = p;quantity = q;}
string Product::get_name()const { return name;}
double Product::get_price()const { return price;}
int Product::get_quantity()const { return quantity;}
void Product::add_quantity(int amount){ quantity = quantity + amount;}
VendingMachine類(lèi):
class VendingMachine { public: /** Constructs a vending machine with no current product selection.*/ VendingMachine();/** Adds product to the machine.@param p the product to add */ void add_product(Product p);/** Sets the currently selected product @param name the product name @return true if the machine has a product with the given name */ bool select_product(string name);void chaxun_product();//查詢(xún)當(dāng)前售貨機(jī)內(nèi)的商品
/** Adds a coin to pay for the currently selected product.@param c the coin to add @return true if sufficient coins have been added to pay for the selected product.*/ bool add_coin(vector
double return_yiyoucoins();//統(tǒng)計(jì)售貨機(jī)中已有的貨款 void setcurrent_product();//把當(dāng)前選擇的商品代號(hào)置為-1 int getcurrent_product();//得到當(dāng)前選擇的商品代號(hào) private: vector
products;int current_product;vector
VendingMachine::VendingMachine(){ current_product =-1;}
void VendingMachine::add_product(Product p)//添加商品 { for(int i = 0;i < products.size();i++){ if(products[i].get_name()== p.get_name()&& products[i].get_price()== p.get_price()){ products[i].add_quantity(p.get_quantity());cout<<“添加成功!”< { cout<<“已存在該商品,與您輸入的價(jià)格不同!”< return; } } products.push_back(p);cout<<“添加成功!”< bool VendingMachine::select_product(string name)//選擇商品 { int i;for(i = 0;i < products.size();i++){ if(products[i].get_name()== name && products[i].get_quantity()> 0){ current_product = i;return true;} else { if(products[i].get_name()== name && products[i].get_quantity()== 0){ cout << “對(duì)不起,該商品已售完!n”;return false;} } } if(i==products.size()){ cout<<“對(duì)不起,不存在該商品!”< double VendingMachine::return_yiyoucoins()//統(tǒng)計(jì)售貨機(jī)當(dāng)前的金錢(qián)總額 { double total = 0;for(int i = coins.size()1;i >= 0;i--){ coins.push_back(current_payment[i]);current_payment.pop_back();} products[current_product].add_quantity(-1);current_product =-1;cout<<“交易成功!”< { return false;} } double VendingMachine::add_coinbijiao(vector } double m=products[current_product].get_price()-total;if(m>0)return m;else return-1;} double VendingMachine::return_coins()//統(tǒng)計(jì)當(dāng)前投入的金錢(qián)總額 { double total = 0;for(int i = current_payment.size()1;i >= 0;i--){ total = total + coins[i].get_value();coins.pop_back();} return total;} void VendingMachine::chaxun_product(){ if(products.size()==0){ cout<<“暫時(shí)沒(méi)有添加商品!”< int VendingMachine::getcurrent_product(){ return current_product;} Main函數(shù): #include void main(){ vector VendingMachine machine;bool more = true;machine.chaxun_product();while(more){ cout << “a)添加商品 x)查詢(xún)商品 s)選擇商品 p)投幣 c)取消 e)查詢(xún)當(dāng)前金額 r)取款 q)退出: ”;string command;cin>>command;if(command == “a”){ cout << “商品名: ”;string name;cin>>name; cout << “價(jià)格: ”;double price;cin >> price;cout << “數(shù)量: ”;int quantity;cin >> quantity;machine.add_product(Product(name, price, quantity));} else if(command == “s”){ double total1; total1=machine.return_yiyoucoins(); if(total1>=5000)//當(dāng)售貨機(jī)中的貨款大于等于5000時(shí),暫停售貨 { cout<<“對(duì)不起,現(xiàn)在暫停售貨!”< } else { machine.setcurrent_product();cout << “商品名: ”;string name;cin>>name;machine.select_product(name); } } else if(command == “p”){ if(machine.getcurrent_product()!=-1)//如果當(dāng)前已選擇商品,才可以投幣 { bool panduan=false;while(!panduan)//多次投幣的實(shí)現(xiàn) { cout << “所投錢(qián)幣名稱(chēng)(以 # 結(jié)束投幣過(guò)程):”;string name;cin>>name;while(name!=“#”){ bool found = false;for(int i = 0;!found && i < coins.size();i++){ if(coins[i].get_name()== name){ current_pay.push_back(coins[i]);found=true;} } if(!found){ cout << “不存在該貨幣,請(qǐng)重新投入:n”;} cin>>name; } double k=machine.add_coinbijiao(current_pay);if(k==-1) { machine.add_coin(current_pay);for(int i = current_pay.size()1;i >= 0;i--){ total = total + current_pay[i].get_value();current_pay.pop_back();} cout << “Returned(退還)” < else cout<<“您還沒(méi)有選擇商品!”< { machine.setcurrent_product(); double total=0; for(int i = current_pay.size()1;i >= 0;i--){ total = total + coins[i].get_value();coins.pop_back();} return total;} void VendingMachine::chaxun_product(){ if(products.size()==0){ cout<<“暫時(shí)沒(méi)有添加商品!”< int VendingMachine::getcurrent_product(){ return current_product;} } JAVA import Input.touqian;import java.*;class shangpin { } class fenpeiqi { } class xianshichanpin { fenpeiqi fpq[]=new fenpeiqi[3];public xianshichanpin(){ fpq[0]=new fenpeiqi(3.0);fpq[0].sp[0]=new shangpin(“玉米烤腸 ”,10);fpq[0].sp[1]=new shangpin(“可口可樂(lè) ”,15);fpq[0].sp[2]=new shangpin(“百事可樂(lè) ”,10);fpq[1]=new fenpeiqi(5.0);fpq[1].sp[0]=new shangpin(“哈德門(mén)香煙”,10);fpq[1].sp[1]=new shangpin(“將軍香煙 ”,15);fpq[1].sp[2]=new shangpin(“紅梅香煙 ”,10);fpq[2]=new fenpeiqi(10.0);fpq[2].sp[0]=new shangpin(“一支筆香煙”,10);fpq[2].sp[1]=new shangpin(“紅塔山香煙”,10);fpq[2].sp[2]=new shangpin(“泰山香煙 ”,15);double price;shangpin sp[]=new shangpin[3];public fenpeiqi(double price){ } this.price=price;String name;int num;public shangpin(String name,int num){ } this.name=name;this.num=num; #“);#”);#“);#”);#“); } } void show(){ System.out.println(”=============== System.out.println(“# System.out.println(”# System.out.println(“# 歡迎使用自動(dòng)售貨機(jī) System.out.println(”# System.out.println(“# =================”);System.out.println(“=============== System.out.println();System.out.println(”編號(hào)tt“+”名稱(chēng)ttt“+”價(jià)格tt“+”數(shù)量t“);for(int i=0;i } if(fpq[i]!=null){ } for(int j=0;j } } if(fpq[i].sp[j]!=null){ =================”);System.out.println((i+1)*10+j+1+“tt”+fpq[i].sp[j].name+“tt”+fpq[i].price+“tt”+fpq[i].sp[j].num);System.out.println(“=============== } =================”);class panduan { boolean ying() } { } boolean zhi(){ } int z=touqian.in(); if(z==5||z==10){ } else { } return false;return true;double y=touqian.dou();if(y==1||y==0.5){ } else { } return false;return true;class jiabi { switch(touqian.in())void ceshi(){ System.out.println(“請(qǐng)選擇投放錢(qián)的類(lèi)型 ”);System.out.println(“1 表示投放 硬幣”);System.out.println(“2 表示投放 紙幣”);System.out.println(“請(qǐng)輸入您選擇的錢(qián)的類(lèi)型 :”); panduan pd=new panduan(); { case 1: System.out.println(“請(qǐng)您投入有效的面值”); if(pd.ying()) { System.out.println(“您投入的是有效地硬幣”); System.out.println(); // System.out.println(“^_^ 請(qǐng)選擇您所需要的物品^_^”); } else } class chanpin { { System.out.println(“您投入的不是有效地硬幣,請(qǐng)您重新投入”); } break; case 2 : System.out.println(“請(qǐng)您投入有效的面值”); if(pd.zhi()) { // } else { } break; default : System.out.println(“請(qǐng)您重新投入有效地貨幣”); } } System.out.println(“您投入的不是有效的紙幣,請(qǐng)您重新投入”);System.out.println(“您投入的是有效的紙幣”);System.out.println();System.out.println(“^_^ 請(qǐng)選擇您所需要的物品^_^”); } } public static void main(String args[]){ System.out.println(“請(qǐng)輸入您想要產(chǎn)品的編碼:”);int bianma;bianma=touqian.in();System.out.println(“請(qǐng)輸入您想要產(chǎn)品的數(shù)量:”);int shuliang;shuliang=touqian.in();System.out.println(“您一共要付:”);double sumjine;sumjine= xianshichanpin xscp=new xianshichanpin();xscp.show();