摘要
自動售貨機是自動化技術在人們生活中的重要應用。隨著人們生活質量的不斷提高,對自動售貨機的性能要求越來越高。自動售貨機的主要功能是通過人機對話的形式完成自動售貨這一過程。
本文設計了一款以INTEL公司出品的80C51單片機為核心的自動售貨機,并且著重詳細地介紹了自動售貨機的整體系統設計方案、硬件選擇基礎、軟件使用方法及技巧。以80C51作為CPU處理單元連接各個功能模塊;以4*4矩陣鍵盤作為輸入控制模塊對貨物進行種類和數量的選擇以及模擬貨幣的投入功能;以LCD1602液晶作為顯示模塊來顯示當前的購物狀態以及貨幣狀態;以LED的顯示來表示當前選擇貨物以及出貨的狀態。通過Protues7.5單片機電路原理圖進行連接布線連接各個模塊;再用Keil uVision3專業編譯軟件完成源程序編譯和調試,最終進行自動售貨機的實驗電路仿真來模擬自動售貨。結合工作原理、系統設計、軟件編譯和實驗仿真來實現自動售貨這一相關功能。
目錄
摘 要 ABSTRACT 1 緒論 1.1 課題的研究背景及意義 1.2 國內外現狀及發展趨勢 1.3 本課題研究的主要內容 2 自動售貨機的系統結構 2.1 自動售貨機的系統概述 2.1.1 自動售貨機的系統結構 2.1.2 自動售貨機的控制子系統概述 2.2 自動售貨機的功能簡介 2.2.1 自動售貨機的功能概述 2.2.2 自動售貨機的設計思路 3 自動售貨機的硬件設計 3.1 80C51的簡介 3.1.1 80C51的基本概述 3.1.2 80C51的引腳功能介紹 3.2 LCD1602字符型液晶簡介 3.2.1 LCD1602的概述 3.2.2 LCD1602的硬件結構 3.2.3 LCD1602的指令說明 3.2.4 LCD1602的基本時序操作 3.3 4*4矩陣鍵盤簡介 3.3.1 4*4矩陣鍵盤的概述 3.3.2 4×4矩陣鍵盤的硬件結構 3.4 貨幣識別系統 3.4.1 對硬幣的識別 3.4.2 對紙幣的識別 3.5 貨物選擇系統 3.6 出貨及找零系統 4 系統的軟件流程圖設計 4.1 自動售貨機貨物選擇流程圖 4.2 自動售貨機投幣系統流程圖 4.3 自動售貨機出貨找零系統流程圖 5 系統軟件仿真 5.1 PROTEUS的簡介 5.2 仿真結果 6 結論 參考文獻 附錄A:C源程序 附錄B:系統總圖 致謝
1 緒論
1.1 課題的研究背景及意義如今,在全世界范圍內自動售貨機方式多樣靈活,例如實行聯機方式,通過電話網絡線路將自動售貨機內的庫存信息及時地傳送各營業點的電腦中,目的就是為了保證自動售貨機中的商品推送、商品選的定補充能夠更加精確地進行。此外,自動售貨機的開發從能源的節省的角度出發,生產制造了更加合理化的節能型飲料自動售貨機。例如在夏季電力消費高峰期,這種機型的自動售貨機能自動保持低溫而不是靠打開冷卻器來維持,與以往的老式自動售貨機相比更加凸顯了它的特點,它能夠在達到相同的效果下節約更多的電力。這些充分說明了該行業為了自動售貨機走向信息化并進一步實現合理化所作出的不懈努力。 進入21世紀后,自動售貨機也將進一步向節省資源和能源以及高功能化的方向發展。面對當前快速商品社會的環境,人們的時間觀念越來越重,如何才能更快地購買到顧客自己所需的商品,這都是顧客和商家共同面臨的問題。隨著科技的發展及人們生活水平的顯著提高,自動售貨機市場的發展越來越呈現出多元化及個性化的需求。通過自動售貨機進行自助購物正逐漸成為市民的一種新的消費時尚。同時,這種快捷方便的購物方式也滿足了人們在當今科技高速發展的現代社會追求高品質生活的需要。自動售貨機在人群幾種的區域如城市商業區、風景區、寫字樓大廳、車站、碼頭、繁華街道等公共場所的布設能夠美化亮化城市環境,方便群眾生活,已經成為城市各角落的一道亮麗風景線。自動售貨機已在國內普及,并成為城市現代文明程度的一種象征性標志。自動售貨機作為自動化商業機械的代表被廣泛應用于公共場所,它是我國生產技術機械化、智能化和自動化的體現。從廣義來講是投入硬幣、紙幣、信用卡等后便可以銷售商品的機械,從狹義來講就是自動銷售商品的機械。從供給的條件看,自動售貨機可以充分補充人力資源的不足,適應消費環境和消費模式的變化,24小時無人售貨的系統可以更省力,運營時需要的資本少、面積小,有吸引人們購買好奇心的自身性能,可以很好地解決人工費用上升的問題等各項優點。自動售貨機的誕生完善了市政的建設,符合現代化建設的需要,提高了經濟活動效率,節約勞動力,把有限的人力物力集中到其他資源上。
1.2 國內外現狀及發展趨勢在我國國內,自動售貨機在所謂的掀起了“第三次零售業革命”后已經成為了一個躋身于超市和百貨商店之上的具有非常廣闊的前景的新興行業。從形式上的更新到內容上的豐富都帶來了很大突破。因為受地域影響小,自動售貨機售賣的商品種類可以根據不同的地區來具體供應,包括各種飲料、零食、電子產品、計生用品等都可以作為其銷售的對象。并且,從這種智能自動銷售系統中,我們可以很精確的讀取貨物庫存、商品銷量、物流詳情等信息。讓管理、銷售人員更輕松地開展具體工作。此外,與老式的人為銷售相比,自動售貨機可以支持多種電子支付模式,比如用信用卡支付就能更方便地進行較大金額的交易支付、結算。在20世紀初,通過手機、英特網購物的消費方式在國內開始相繼出現,因為這種需求的誕生,國內的相關公司已著手研制出此種類型的自動售貨機。這樣的新興自動售貨機在方便顧客消費購物的同時也充當著廣告傳播的新型媒介。 相較于中國,國外的自動售貨機行業發展比較成熟和發達。例如從自動售貨機的機型上來說,在日本國內就已經達到了2000多種。而且所售的商品種類已經高達6000多種。更是在由于無所不在的自動售貨機為人們提供了24小時的服務而特別受歡迎。而在比較發達的美國,光是提供自動售貨機服務的運營商就多達10800家,并且在與各大飲料、食品公司的合作基礎上積累了想當多的經驗。在英國,為了更具針對性解決投幣的麻煩,一些信用機構和某些銀行還量身制定了一種自動售貨機卡,在購貨的時候,用刷卡代替傳統的投幣從而能更方便快捷地進行購物。到2002年,占全國人口的20%以上的英國人都開通了這種自動售貨機卡。自動售貨機在國內外的受歡迎程度已經達到一個高度。 自動售貨機在城市商業區、寫字樓大廳、風景區、車站、碼頭、繁華街道等公共場所的布設能夠美化亮化城市環境,方便群眾生活,已經成為城市各角落的一道亮麗風景線。自動售貨機已在國內普及,并成為城市現代文明程度的一種象征性標志。隨著經濟發展,傳統的固定地點人員售貨方式暴露出許多弊端:人力資源需求大;受所需服務地點,地理條件的限制;而且在服務時間上不能最大限度的服務于消費者。相信隨著社會的發展,人們對于生活高效性的重實也會逐漸提高,自動售貨機也會受到更多人的關注和喜愛。現在,自動售貨機產業正走向信息化并進一步實現合理化。自動售貨機的出現解決了這些難題,自動售貨機必然朝著操作簡單化、監控管理智能化、功耗節能化和性能多樣化方面發展。
1.3 本課題研究的主要內容本課題研究的是通過核心單片機80C51控制的自動售貨機。涉及到用keil Uvision3來進行C語言程序的編譯調試,通過protues7.5電路連接來設計系統電路。通過80C51與輸入模塊、輸出顯示模塊、找零模塊、顯示模塊的連接來系統模擬自動售貨這一功能。設計從能根據投入的錢幣自動售貨的機器。用4*4矩陣鍵盤來模擬貨物種類以及數量的選擇,再通過鍵盤其他按鍵來模擬投幣功能。用LCD1602作為輸出顯示模塊,通過液晶顯示來明確按鍵的功能以及自動售貨機的購貨狀態等。用LED燈來表示貨物的種類。因為貨幣識別功能是在自動售貨機的外部硬件電路方面來加以具體實施的,而本設計是模擬自動售貨機的功能,所以不考慮貨幣識別的模塊設計,在這里只作原理介紹。
2 自動售貨機的系統結構
2.1 自動售貨機的系統概述
2.1.1 自動售貨機的系統結構自動售貨機是集光、機、電一體化的自動售貨裝置,能夠獨立完成自動售貨這一功能。 自動售貨機的工作原理是:在初始化的界面等待顧客按鍵選擇貨物的種類和數量顧客投入貨幣,按下確定購買鍵后等待售貨機自動計算所購商品的總價,然后提示顧客投入貨幣。所投的貨幣經過外部硬件檢測傳感器檢測真假后累加計數。若顧客確認購買系統則跳轉到下一步驟,反之取消購買即退出貨幣返回到主界面,等待顧客下一步操作。自動售貨機通過貨幣的總價與和所購商品的總價的差值來進行出貨找零。總體工作原理如圖2.1: 圖2.1 自動售貨機的總體工作原理圖 2.1.2 自動售貨機的控制子系統概述自動售貨機的控制子系統由以下幾個部分組成,分別是預設自動售貨系統、金額累加和找零系統、售完檢測系統、售出累計及反饋功能系統。 - 預設自動售貨機系統:自動售貨機出售的商品可分為若干個品種,在其售前設定價格時必須預先寄存在控制系統內。設定的方式原理:商品的價格設置由按鍵和存儲器組成,通過按鍵選擇被設價商品的種類及價格,并將設定的價格寫入存儲器中,存儲器本身需具有斷電保護記憶功能,此為采用軟件。此外,如果在自動售貨機中,在出售商品的種類少,價格變化小,使用幣種單一的情況下,也可以用比較簡單的價格設定方法----硬件設置,即采用撥碼開關對應的方式設置。
- 金額累加和找零系統:控制系統的核心CPU對識幣、退幣、無貨檢驗及購貨信號進行循環檢查。如果顧客投入貨幣,識幣器檢測到貨幣信號后,通過通信系統把識別的貨幣數值信號送入累計存儲器器中進行累加計數。要是貨幣數值滿足購貨需求則通過串行接口提示購貨,售貨機則通過并行擴展接口驅動電磁閥或者微電機驅動送出貨物,同時存儲器計數清零跳入到找零系統,自動售貨完成。如果貨幣數值不滿足購貨需求則提示顧客繼續投幣或者取消購貨,取消購貨后由售貨機退出投入的貨幣返回初始化界面。
- 貨物檢測系統:為了貨物供應充足,把接觸開關和行程開關安裝在自動售貨機貨物存儲存道的下方,當存儲存道尚有貨物時,行程開關保持閉合,CPU控制自動售貨機正常售貨。貨物供應不足的時候,行程開關自動斷開,向CPU發出缺貨信號,經過檢測后發送到外部電機或者電磁閥來推動外部貨物進入存儲道達到自動添加貨物的目的,以保持貨源充足。
- 售出累計及反饋功能系統:自動售貨機的CPU在每次售出一種貨物后,由通信系統向出貨存儲器中累計已經售出的數據,通過自動售貨機內部控制的按鍵可以顯示出累計數據以掌握銷售情況。此外,由外部按鍵操作在按下自測功能鍵后,出現自測功能信號,可以通過檢測結果查看各個模塊的功能情況,也可以檢測自動售貨機的貨物存儲道驅動功能。
2.2 自動售貨機的功能簡介
2.2.1 自動售貨機的功能概述基本原理:通過矩陣鍵盤來選擇貨物的種類與數量過后自動售貨機提示投幣。自動售貨機的貨幣識別器對所投貨幣進行識別,根據金額大小然后將商品選擇權通過LCD液晶顯示給客戶,客戶按鍵選擇后,CPU控制芯片發出指令將所選擇商品從儲備料道中送達取物口。 功能描述:貨物種類一共設有8種,這8種商品通過選擇按鍵進行選擇確認,通過數量選擇按鍵確定購買數量,價格規定為1-8元不等;貨幣識別器能夠識別1元硬幣、1元紙幣、5元紙幣、10元紙幣、20元紙幣50元紙幣以及100元紙幣。在規定的時間內,投了幾次貨幣后,貨幣能夠實現自動累加功能,這樣設計會把投入的所有貨幣總額數目數據傳遞到中央控制元器件進行處理;在超過規定時間后投幣口自動關閉,數據處理單元按照投幣總數和購買的數量和價格乘積來進行加減運算累,實現購買和找幣功能。當投入的貨幣總值小于商品總金額時,則不能進行購貨,投入的錢將全部退還。 本設計中有一共有16個按鍵選擇,其中有兩個是貨物選擇鍵,有兩個是數量選擇鍵,此外還有6個貨幣投入鍵1個確認鍵和1個取消鍵。 2.2.2 自動售貨機的設計思路- 本設計以這樣的工作流程開始自動售貨機的自動售貨過程:
- 啟動系統,開始待機;
- 顧客通過按鍵選擇商品的種類以及數量并確認;
- 售貨機檢查是否有足夠的貨物并通過LCD提示等待顧客投幣;
- 顧客投入貨幣,售貨機自動檢測金額是否足夠;
- 金額足夠多,售貨機將推出顧客選擇的相應數量的商品,若金額不足則直接退還貨幣;
- 推出商品,售貨機轉入找零系統退出余幣;
- 系統自動復位,完成售貨;
- 采用單片機80C51作CPU;
- 采用P3.5口作為投幣的輸入端;
- 采用LCD1602液晶為顯示模塊:
- 采用4*4矩陣鍵盤連接P1口作為貨物選擇選擇端;
- 采用P0口實現出貨、找零功能;
圖2.3 自動售貨機系統原理圖 - 輸入:由于本設計模擬輸入功能是由4*4矩陣鍵盤來完成的,而鍵盤連接在80C51的P1口上,則貨幣投入設定為:
P1口的按鍵值為0X04的時候代表1元貨幣的投入; P1口的按鍵值為0X05的時候代表5元貨幣的投入; P1口的按鍵值為0X06的時候代表10元貨幣的投入; P1口的按鍵值為0X07的時候代表20元貨幣的投入; P1口的按鍵值為0X08的時候代表50元貨幣的投入; P1口的按鍵值為0X09的時候代表100元貨幣的投入; P1口的按鍵值為0X0f的時候代表購物確定“OK”按鈕; P1口的按鍵值為0X0e的時候代表購物取消“NO”按鈕; 本設計假定自動售貨機的商品種類為8種,價格為1、2、3、4、5、6、7、8元。每一個價格代表一種商品且一經售出就由外部電機自動完成補貨。規定每次最多只能購買10個。貨物選擇: P1口的按鍵值為OX00的時候代表選擇貨物價格“price+”; P1口的按鍵值為OX01的時候代表選擇貨物價格“price-”; P1口的按鍵值為OX02的時候代表選擇貨物數量“num+”; P1口的按鍵值為OX03的時候代表選擇貨物價格“num-”; 選擇商品1用P0.0控制D1LED燈亮; 選擇商品2用P0.1控制D2LED燈亮; 選擇商品3用P0.2控制D3LED燈亮; 選擇商品4用P0.3控制D4LED燈亮; 選擇商品5用P0.4控制D5LED燈亮; 選擇商品6用P0.5控制D6LED燈亮; 選擇商品7用P0.6控制D7LED燈亮; 選擇商品8用P0.7控制D8LED燈亮; - 顯示:本設計的顯示端口由P2端口和P3.2(RS)、P3.3(RW)、P3.4(E)控制LCD1602液晶來顯示購貨狀態,用P0口控制LED燈表示貨物種類。通過它可以顯示購貨的種類、數量、總價以及找零等。
3 自動售貨機的硬件設計
3.1 80C51的簡介
3.1.1 80C51的基本概述由INTEL公司出品的MCS-51系列的80C51其實用性非常高。由于它是采用CHMOS的工藝技術制造,所以它是一款穩定性很高的高性能8位單片機,是HCMOS中的最基本的產品之一。在制作工藝的程中不僅繼承和擴展了先前單片機的指令系統和體系結構更是把HMOS的高速高密度的技術特點和CHMOS的低功耗特點相結合。為了滿足需求,在80C51內部置入CPU、RAM(128字節)、I/O(32個雙向輸入輸出)、定時器/計數器(16位)、串行通信口、兩級中斷結構以及片內時鐘震蕩電路。此外,它還可以通過選擇空閑和掉電的方式用于低功耗模式來進行工作,空閑模式下保持串行口、中斷系統、RAM和定時器正常工作而同時凍結CPU來保證其正常運行。掉電模式下,自動保存RAM數據,時鐘震蕩停止、芯片的其他功能停止工作。  圖3.1 80C51單片機內部基本結構 3.1.2 80C51的引腳功能介紹
圖3.2 80C51的引腳圖 80C51單片機的40個引腳大致可分為4類:電源、時鐘、控制和I/O引腳。 - VCC - 芯片電源,接+5V;
- VSS - 接地端。
- 時鐘:XTAL1、XTAL2晶體振蕩電路反相輸入端和輸出端。
- 控制線:控制線共有4根:
- ALE/PROG:地址鎖存允許/片內EPROM編程脈沖
- ALE功能用來鎖存P0口送出的低8位地址;
- PROG功能:片內有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。
- RST(Reset)功能是復位信號輸入端;
- VPD功能是在Vcc掉電情況下,接備用電源。
- EA/Vpp(內外ROM選擇/片內EPROM編程電源):
- EA功能:內外ROM選擇端;
- Vpp功能:片內有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。
- I/O線:80C51共有4個8位并行I/O端口即P0、P1、P2、P3口,共32個引腳;P3口還具有第二功能——用于特殊信號輸入輸出和控制信號(屬控制總線)P0口輸入時需要接上拉電阻才能置1。
在每次使用單片機之前,我們都要使單片機復位,讓CPU以及其他功能部件都處于一個確定的初始狀態,以消除上一次用戶的操作對本次用戶操作的影響。51的RST引腳是復位信號的輸入端。復位信號是高電平有效,持續時間要有24個時鐘周期以上。例如:若MCS-51單片機的時鐘頻率為12MHz,則復位脈沖寬度至少應為2us。通常,80C51的復位有自動上電復位和人工按紐復位兩種 自動上電復位電路的工作原理是:電容在通電的時候相當于短路情況,導致RST引腳上的電位為高電平,這樣電容會因為電阻被充電,然后RST端逐漸降低電壓直到變為低電平,從而使單片機開始正常工作。由于自動售貨機的功能需求,本次設計采用自動上電復位電路。
3.2 LCD1602字符型液晶簡介
3.2.1 LCD1602的概述LCD1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。1602LCD是指顯示的內容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數字)。市面上字符液晶大多數是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應用于市面上大部分的字符型液晶。液晶顯示器以其微功耗、體積小、顯示內容豐富、超薄輕巧的諸多優點,在各類儀表和低功耗系統中得到廣泛的應用。根據顯示內容可以分為字符型液晶,圖形液晶。根據顯示容量又可以分為單行16字,2行16字,兩行20字等等。 3.2.2 LCD1602的硬件結構
圖3.3 LCD1602的基本結構圖 引腳說明:LCD1602一般是16個引腳 第1腳:VSS為接地電源。 第2腳:VDD接5V正電源。 第3腳:VEE為液晶顯示器對比度調整端,通過連接電源正負來調節對比度的強弱。當連接電源正端時對比度最弱,反之連接負極則最高。對比度太高時會產生所謂的“鬼影”,在連接時可以通過接一個電位器來調整對比度。 第4腳:RS為數據命令選擇端,電平為H時選擇數據寄存器、電平為L時選擇指令寄存器。 第5腳:RW為讀寫選擇端,電平為H時進行讀操作,電平為L時進行寫操作。 第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。 第7~14腳:D0~D7為8位雙向數據線。 第15~16腳:空腳或背燈電源,15腳背光正極,16腳背光負極。 3.2.3 LCD1602的指令說明表3.1 顯示模式設置 表3.2 顯示開/關及光標位置 - 數據控制:控制器內部設有一個數據地址指針,可以根據它來訪問內部的全部字節。
表3.3 數據指針設置 - 讀數據:輸入時 RW 、RS、 E均等于H,輸出D0-D7=數據
- 寫數據:輸入時RW=L、RS=H、D0-D7=數據、E=高脈沖,輸出無;
- 其他設置如表3.4所示:
表3.4 其他設置 - 指令1:清除顯示,指令碼為01H,清楚顯示數據;
- 指令2:光標返回到地址00H即光標復位;
- 指令3:光標和顯示位置設置,光標按方向移動,高/低電平右/左移,S:屏幕上所有文字是否左移或右移,高電平移動,低電平不移動;
- 指令4:顯示開關控制D:控制整體的顯示開與關,高電平表示開顯示,低電平表示關顯示。C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍;
- 指令5:光標或顯示移位 S/C :高電平時顯示移動的文字,低電平時移動光標;
- 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時為雙行顯示,F:低電平時顯示5X7的點陣字符,高電平時顯示5X10的顯示字符;
- 指令7:字符發生器RAM地址設置;
- 指令8:DDRAM地址設置;
- 指令9:讀忙信號和光標地址BF:忙標志位,高電平表示忙,此時模塊不能接收命令或數據,如果為低電平表示不忙;
3.2.4 LCD1602的基本時序操作LCD1602的基本時序操作以及對應的狀態和輸入輸出如表3.5所示:
表3.5 基本時序操作及對應狀態的輸入輸出 LCD1602的讀寫時序操作如圖3.4、3.5所示: 圖 3.4讀時序操作圖 圖 3.5寫時序操作圖
3.3 4*4矩陣鍵盤簡介
3.3.1 4*4矩陣鍵盤的概述4*4矩陣鍵盤又是4*4行列鍵盤,它是分別用4條I/O線作為行線和列線組成的鍵盤。每個鍵的位置設置在每條行線和列線在交叉處上,可以知道4*4矩陣鍵盤共有4*4=16個按鍵。這樣的設置可以有效地提高單片機I/O口的利用率,與獨立式按鍵相比大大降低了接口占用率。當設計過程中需要按鍵個數要求比較大時,為了釋放出I/O端口來供其他連接需要時往往采用這種矩陣式按鍵來解決問題。在矩陣鍵盤中,行列線均通過一個按鍵加以連接取代了直接交叉相連。這樣,在很大的程度上增加了按鍵數,而直接將端口線連接在鍵盤上則會減少一倍的按鍵數量。在需要很多按鍵的設計中采用矩陣鍵盤明顯地比獨立式按鍵更合理,而且行列線越多效果越明顯。 3.3.2 4×4矩陣鍵盤的硬件結構
圖3.6 4*4矩陣鍵盤的基本結構圖 在應用矩陣鍵盤的設計中要編譯程序的時候必定會計算出每個按鍵的接口地址是多少以方便編譯,在矩陣鍵盤的按鍵確定上我們可以采用兩種方法: 行掃描法是我們常用的一種識別按鍵的方法,這種方法需要我們逐行逐列進行掃描查詢,分為兩個步驟: - 將連接的全部行線置為低電平,然后檢測所有列線的電位狀態。只要某一列列線電位為低電平,就表示矩陣鍵盤中這列有鍵被按下,并且在被按下的閉合的按鍵在低電平列線與全部根行線相交叉的4個按鍵之中。反之,若所有列線電位均為高電平,則表示矩陣鍵盤中沒有按鍵被按下;
- 通過前一可知按鍵處在判斷的4個按鍵之中,在確認了有按鍵被按下后,就可進入到確定具體被閉合鍵的操作。然后再依次將所有行線電位置為低電平,即只有一根行線為低電平,其余行線則為高電平。在確定了某根行線電位為低電平后,再逐行檢測所有列線的電平狀態。若某根列線的電位為低電平,則被按下的按鍵就處在這根列線和低電平行線的交叉處;
這種確定矩陣鍵盤按鍵的方法也是非常有效的方法,也分為兩個步驟: - 先讓所連接的端口高四位為高(1),低四位為低(0),若矩陣鍵盤上有按鍵被按下,則高四位中會有一個電平從1被翻轉到0,低四位則不會改變電平狀態,然后即可確定矩陣鍵盤上被按下的按鍵的所在行的具體位置;
- 讓讓所連接的端口高四位為低(0),低四位為高(1)。若矩陣鍵盤上有按鍵被按下,則低四位中會會有一個電平1翻被轉為0,高四位則不會改變電平狀態,然后即可確定矩陣鍵盤上被按下的按鍵的所在列的具體位置。綜合這兩個步驟就可以判斷出被按下的按鍵具體位置;
3.4 貨幣識別系統
3.4.1對硬幣的識別目前在國內,對于硬幣的識別可采用多種方法,比如激光掃描、應變片測重量、光電管檢測大小等,然而在自動售貨機中采用結構簡單、成本低、測量準確及其非接觸測量等優點集一身的渦流傳感器檢測。 電渦流檢測原理:以高頻的電信號通過一個線圈,在這個過程中產生變化的磁場通過硬幣的表面即變化磁通通過硬幣的表面,相應地硬幣表面上產生電渦流, 并產生反向的變化磁場,以削弱原來線圈產生出來的磁場。然后根據激勵磁場線圈幅值的變化,通過變化的給定值即可測出真假硬幣。
圖3.7 電渦流檢測電路原理圖 圖3.7中Q2所需要的頻率由Q1、L、C4等元件組成的振蕩電路所提供,從而在C點產生一正弦波振蕩信號;然后再A、B 兩點外接一個傳感線圈,當有硬幣投入通過線圈時會改變C點原有信號的幅值大小,而真假硬幣通過線圈時改變的幅值大小是不一樣的,通過對比設定給定真幣的參照值來判斷真假硬幣。 但是在實際應用中,由于某些條件的原因會影響到電子線路元器件的判定值,比如溫漂的影響,由于材質的差異比較小,從而導致信號值得差距變小,若受到的溫漂影響稍微增強一點,那么則很難精確地確檢測出假幣,為此可以采用電橋的方法來進行改善彌補,從而減小由溫漂造成的干擾。圖中L3、L4都是激勵線圈,L3上方放置一個標準的1元硬幣或其它用低碳鋼做成的圓片,L4為檢測有無硬幣通過和是否為真假幣的激勵線圈,A、B兩信號通過通信模塊同時送到后續的運算放大器之中進行相減,從而抵消因溫漂所造成的影響。 3.4.2對紙幣的識別我們知道,在硬件數據采集設備中的電源為發光二極光,所發出光的波長峰值在紅外線所在的波段,但又不是單光譜,其中紅外光成分達到90%以上,因此,光源輻射光中起主要作用的實際上是紅外輻射。實驗中對各種紙幣的特征的識別也主要是根據紙幣的表面特征對紅外輻射的敏感。這主要是因為不同的紙幣表面特征不同,所以在相同的光輻射照耀下會呈現不同的反映,從而可以從以下幾個方面來鑒別紙幣: - 鈔票的紙張材料是特定的,所以同一種面值的鈔票在特性上具有一定程度的相同,可以設定這個面值的真幣來作為參考;
- 鈔票表面的圖案異同,對于同種面值的真鈔而言,其表面的圖案應該完全相同,而不同面值的真鈔表面刻印的圖案有較大區別,所以可以根據上述的光輻射理論來判定,也可以根據它們對相同光輻射的不同反映來判斷面值歸屬;
- 因為鈔票在市場的使用過程中會出現不同程度的磨損或者沾染上污垢,這種情況下的鈔票表面的特征會發生直接的改變,接受光輻射的特性就會相應地產生變化。因此,光輻射可以反映出鈔票的新舊程度;
- 相對于偽幣,因為偽幣的紙張特性很難滿足真鈔要求,而且偽幣中某些圖案達不到真鈔的實際標準,如水印是在造紙過程中通過特征工藝抄制上去的無色圖案,而偽鈔的水印則是通過一定方式軋印或描繪上去的等等,這都能在鈔票對光輻射接受的信息中反映出來。本系統中采用發光二極管作為光源,所發出的光的波長峰值在紅外波段,并且有90%以上是紅外線,但不是單光譜,還有其它光譜范圍的光線。接受管使用NPN型的光電三極管,工作在紅外波長范圍內,發射管和接受管分別有6個,采用光的透射方式,采集數據時,完全對應位于鈔票的兩側,可以做到精確檢測。但是光輻射在傳輸過程中,會受外界環境的影響而產生能量損失。比如經過大氣傳輸時,就會受到大氣成分的吸收,而在不同的環境條件下,大氣的成分含量有某些程度的變化,因而導致能量損失的程度不同。所以光輻射到鈔票介質的傳輸距離越短,所造成的能量損失的影響就越微小,如果硬件的性能較好,外界的這種影響可以不予考慮。
當貨幣投入后經過識別,識別出信號后,偽幣和異物被排出真幣按面值由幾組分配電磁閥分配到不同存幣腔體內備用。當收到退幣找零電信號后,通過退幣電磁閥或者退幣電機拉桿,將存幣腔內下部依電信號程序退出,完成自動售貨機的退幣找零功能。
3.5 貨物選擇系統貨物選擇系統主要通過矩陣鍵盤按鍵操作來完成。4*4矩陣鍵盤是自動售貨機中的輸入裝置,價格低廉,結構簡單,使用方便,在單片機應用系統中得到廣泛地應用。鍵盤按照接口原理可分為編碼鍵盤與非編碼鍵盤兩類,它們的主要區別是識別鍵符及給出相應鍵碼的方法。編碼鍵盤主要是用硬件來實現對鍵的識別,非編碼鍵盤主要是由軟件來實現鍵盤的定義與識別。 CPU可以采用查詢或中斷方式了解有無將鍵輸入,并檢查是哪一個鍵按下,然后通過跳轉指令轉入執行該鍵的功能程序,執行完后再返回主程序。 一個完整的矩陣鍵盤控制程序應該具備以下功能: - 能夠準確檢測鍵盤上有無按鍵按下,為了消除鍵盤的按鍵機械觸點抖動可以采取硬件或軟件措施;
- 有良好的邏輯處理方法,按鍵處理可以獨立開展,在處理期間對任何一個按鍵的操作不對系統產生影響,只要按鍵按下系統都只執行一次按鍵功能程序;
- 輸出的按鍵值或者鍵號可以達到很精確的狀態來正確執行跳轉指令;
圖3.9 貨物選擇系統圖
3.6 出貨及找零系統在本系統中,總共設計了8種飲料,價格分別為1、2、3、4、5、6、7、8元不等,由顧客通過按鍵選擇確定后,投入售貨機可識別的貨幣(貨幣可以累加計數)。當投入的貨幣總值不夠購買選擇的商品總值時,售貨機顯示金取消交易并退出所投貨幣,如果所投貨幣大于等于購買選擇的商品總值時,由售貨機出貨并計算剩余貨幣。但是在單片機的輸出中只有高電平和低電平之分。在自動售貨機中只需要安裝一個驅動電機,待顧客投入貨幣后將信號送入系統通過相應電路來驅動電機推出相應商品即可。本設計只模擬實現此功能,負責軟件仿真,暫不考慮硬件電機方面,只作介紹。在這里,我們選用光敏三極管來實現這一功能。當單片機輸出端為高電平時,則驅動二極管發光,使驅動電機電路導通,這時驅動電機開始工作等待信號。當單片機輸出端為低電平時,則二極管熄滅。驅動電機電路斷開,即完成推貨動作,LED燈閃爍。售貨機通過投幣時累計的計數和購買商品的總金額進行相減的運算,在LCD液晶上顯示出余幣的數量,顧客取走貨物后自動退還余幣。 圖3.10 出貨及找零
4 系統的軟件流程圖設計
4.1 自動售貨機貨物選擇流程圖本設計提供1-8元不等的貨物,分別用1-8的序號對應貨物。當啟動系統后進入初始化界面,等待顧客選擇貨物種類和數量,按鍵“OK”則跳入投幣系統,按鍵“NO”則返回初始化等待界面。在這里只以1號商品作為例子來講解具體流程如圖4.1: 圖4.1 自動售貨機貨物選擇流程圖
4.2 自動售貨機投幣系統流程圖在4*4矩陣鍵盤上模擬投入貨幣,若投入一種面值的貨幣就累加一種面值的貨幣,如果沒有投入貨幣或者投入貨幣值不足購買商品的話則提示繼續投幣。當所投貨幣足夠時,進入出貨找零系統如圖4.2所示: 圖4.2 自動售貨機投幣系統流程圖
4.3 自動售貨機出貨找零系統流程圖進入出貨找零系統時,如果購買商品后沒有剩余貨幣則直接推出商品,若還有剩余貨幣則找出余幣,如圖4.3所示: 4.3 自動售貨機出貨找零系統流程圖
5 系統軟件仿真
5.1 PROTEUS的簡介世界上著名的EDA仿真軟件Protues擁有其自身的獨立特點,例如從原理圖布線圖、代碼調試到單片機與外圍電路的協同仿真,一鍵切換到PCB設計,都能實現從概念設計到產品仿真的完整功能。同時也是目前世界上唯一能將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持的類型也非常廣泛,例如8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,該軟件在2010年又同時增加了Cortex和DSP系列處理器,并持續增加其他類型系列的處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。Proteus軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能分別有: - 原理布線圖;
- PCB自動或人工布線;
- SPICE電路仿真;
從軟件的誕生到如今,Protues作出了很大的改革,這些改革使其成為如今最受歡迎的仿真軟件之一: 用戶甚至可以實時采用諸如RAM,ROM,鍵盤,馬達,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 可以仿真51系列、AVR、PIC、ARM、等常用主流單片機。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運行后輸入輸出的效果。配合系統配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設計開發環境。 - 豐富的器件庫:超過27000種元器件,可方便地創建新元件;
- 智能的器件搜索:通過模糊搜索可以快速定位所需要的器件;
- 智能化的連線功能:自動連線功能使連接導線簡單快捷,大大縮短繪圖時間;
- 支持總線結構:使用總線器件和總線布線使電路設計簡明清晰;
- 可輸出高質量圖紙:通過個性化設置,可以生成印刷質量的BMP圖紙,可以方便地供WORD、POWERPOINT等多種文檔使用;
5.2 仿真結果設計好程序之后,還需要通過protues7.5和keil3.0來實現程序的調試和仿真,仿真結果圖如下: - 當啟動自動售貨機時機器進入初始化等待狀態,等待按鍵輸入,如圖5.1所示:
圖5.1 初始化等待界面 - 通過按鍵price+和price-來選擇貨物的種類,然后通過num+和num-來選擇所購買貨物的數量,同時代表被選擇貨物的LED指示燈亮,如圖5.2所示:
圖5.2 選擇貨物的種類及數量 - 當選擇好貨物后,按下“OK”鍵進入到投幣系統,此時機器會自動計算出所購貨物總金額,如圖5.3所示:
圖5.3 貨物選擇并計價 - 當機器計算出總價等待顧客投入貨幣并按下“OK”鍵后,當投入貨幣貨幣值大于或等于總價時就出貨并找零,若投入貨幣貨幣值小于總價則不能出貨只能按下“NO”退出所投貨幣或繼續投幣,如圖5.4所示:
圖5.4 出貨找零 - 當完成以上步驟后則完成一次自動購物過程,機器自動復位回到初始化界面如圖5.5所示:
圖5.5 自動復位返回初始化界面
6 結論
本次自動售貨機的設計主要通過單片機80c51作為中央處理原件在protues7.5中連接輸入模塊4*4矩陣鍵盤、輸出模塊LCD1602液晶顯示和LED顯示來進行系統調試仿真。通過keil3.0來實現程序的編譯和調試,最終得到能正確完善地實現設計要求功能的結果。本次設計實現了所有自動售貨功能,包括系統的初始化待機、等待顧客選擇貨物并確認、投幣購買貨物、自動出貨并找零功能、最后自動跳轉到初始化待機界面。通過4*4矩陣鍵盤來模擬實現顧客的選擇貨物系統以及投幣系統、通過LED燈來顯示所選擇的貨物類別、再通過LCD1602液晶來顯示當前的操作狀態以及貨物的數量和貨幣的總值,最后通過LCD顯示來模擬系統的出貨系統和找零系統。在不斷地仿真和調試下都完整的實現了以上功能,達到了基于單片機的自動售貨機設計的要求。
附錄B:系統總圖
致謝
致謝
光陰似箭,歲月如梭。我的大學生涯即將結束,我感謝陪我一起度過大學生涯的老師和同學。當我們相繼完成自己的最后一顆-----畢業設計,從此我們將各奔東西。留下的只是回憶過去,在將來的某一天我們終會倍加珍惜。回想在大學校園的種種,總是懷揣一種說不出的情愫。我們度過了青蔥歲月,我們走過了歡聲笑語,這是人生一筆寶貴的財富。
在本次畢業設計中,感謝導師劉衍平的悉心指導,感謝同學們的入微相幫。“師者,無非傳道授業解惑也。”“授人魚不如授人漁也。”在導師的幫助下,成功完成了此次的畢業設計論文。得到的不僅是一個結束,更是一個開端。我會通過導師傳授的學習方法進一步開拓進取。同學的幫助不僅是完成這次畢業論文的重要因素,更是我們大學的感情積淀。這些不僅僅是完成一個任務,更是讓我學習到了單片機的編程方法,更加牢靠的掌握了C語言的編程方法。
經過一學期的努力,逐步完善了四年所學的各方面知識。相當于進行了一個總結概括,這是一個需要不斷嘗試的過程。我們在之間會存在各種錯誤和迷茫,當你撥開迷霧的時候會覺得受益匪淺。只有經歷了這個拼搏的過程的人才懂得珍惜這段時期的每一個瞬間。 祝福我們的老師,祝福我們的同學,同時也祝福我們自己。感謝老師在教學中的指導和畢業設計上的修改,感謝同學在生活中的幫助,感謝自己子啊大學的時光沒有荒廢。
11.jpg (28.73 KB, 下載次數: 47)
下載附件
2018-5-12 03:31 上傳
仿真+源碼+word格式的論文下載:
http://www.raoushi.com/bbs/dpj-117449-1.html
|