基于單片機的自動售貨控制系統(tǒng)設(shè)計_第1頁
基于單片機的自動售貨控制系統(tǒng)設(shè)計_第2頁
基于單片機的自動售貨控制系統(tǒng)設(shè)計_第3頁
基于單片機的自動售貨控制系統(tǒng)設(shè)計_第4頁
基于單片機的自動售貨控制系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于單片機的自動售貨控制系統(tǒng)設(shè)計摘 要本文設(shè)計了一個基于AT89C51單片機的自動售貨控制系統(tǒng),文中詳細(xì)的介紹了設(shè)計方案的實施背景,各種元器件的選擇,系統(tǒng)模塊的劃分以及功能的實現(xiàn)。該系統(tǒng)模塊劃分清晰,采用按鍵實現(xiàn)人機的友好交互。以C語言為開發(fā)語言,可讀、易理解性大大提高。開發(fā)環(huán)境為Keil,Proteus有機結(jié)合,keil實現(xiàn)代碼的編寫、修改、編譯,Proteus則對編譯好的代碼在模擬器件上進(jìn)行仿真。有效的提高了開發(fā)效率。系統(tǒng)最終實現(xiàn)了貨物選擇、投幣顯示、退幣顯示、出貨顯示等一系列功能。關(guān)鍵詞:AT89C51;自動售貨機;PROTEUSThe Design of Vending Control

2、 Systems Based on SCMPeng xin Yi(College of Physics, Mechanical and Electrical Engineering, JishouUniversity, Jishou, Hunan 416000)AbstractVending system based on AT89C51 is designed in this paper, which contains a detailed description of the implementation of the background of the design, the choic

3、e of the various components, division and function of the system module. The modular division of system is clear, using the key to achieve human-machine friendly interaction. C language for the development of language contributes readable, easy to understand greatly improved. Development Environment

4、 is Keil and Proteus. The keil is used to implement code of write, modify and compile, at the same time, proteus implements simulation. These effectively improve the development efficiency. System achieves a series of functions such as cargo selection, coin and currency recreation and shipment show.

5、Key words: AT89C51; Vending machine; PROTEUS目 錄第一章 緒 論11.1 自動售貨機的歷史及發(fā)展前景11.2 自動售貨控制系統(tǒng)設(shè)計的意義11.3 本文的主要設(shè)計內(nèi)容2第二章 自動售貨控制系統(tǒng)設(shè)計分析32.1 系統(tǒng)總體設(shè)計分析32.2 元器件選擇42.3 開發(fā)工具4第三章 自動售貨控制系統(tǒng)硬件設(shè)計53.1 硬件總體框圖53.2 AT89C51單片機模塊53.2.1 管腳說明63.2.2 AT89C51單片機的主要特性73.2.3 芯片擦除83.3 單片機驅(qū)動系統(tǒng)模塊83.4 系統(tǒng)顯示模塊93.4.1 數(shù)碼管顯示器93.4. 2 顯示器的驅(qū)動電路93.5

6、 貨幣識別投入電路模塊103.6 貨品選擇按鍵模塊103.7 出貨、退幣模塊113.8 小結(jié)11第四章 自動售貨控制系統(tǒng)軟件設(shè)計124.1 C51語言的優(yōu)缺點124.2 Keil和Proteus開發(fā)步驟124.3 主要模塊軟件設(shè)計134.3.1 按鍵掃描及鍵值識別模塊134.3.2 數(shù)碼管顯示電路134.3.3 投幣電路144.4 小結(jié)14第五章 調(diào)試與仿真155.1 調(diào)試與仿真155.2 不足與改進(jìn)19總 結(jié)20參考文獻(xiàn)21附 錄22第一章 緒 論1.1 自動售貨機的歷史及發(fā)展前景據(jù)說世界上最早的自動售貨機出現(xiàn)在公元前3世紀(jì),那是埃及神殿里的投幣式圣水出售機。17世紀(jì),英國的小酒吧里設(shè)有了香

7、煙的自動售貨機。在自動售貨機歷史的長河中,日本開發(fā)出實用型的自動售貨機,那是在進(jìn)入本世紀(jì)后的事。日本第一臺自動售貨機是1904年問世的“郵票明信片自動出售機”,它是集郵票明信片的出售和郵筒投函為一體的機器。自動售貨機的真正普及是在第二次世界大戰(zhàn)以后。50年代,“噴水型果汁自動售貨機”大受歡迎,果汁被注入在紙杯里出售。后來,由于美國的飲料大公司進(jìn)入日本市場,1962年,出現(xiàn)了以自動售貨機為主體的流通領(lǐng)域的革命。1967年,100日元單位以下的貨幣全部改為硬幣,從而促進(jìn)了自動售貨機產(chǎn)業(yè)的發(fā)展。現(xiàn)在,自動售貨機產(chǎn)業(yè)正在走向信息化并進(jìn)一步實現(xiàn)合理化。例如實行聯(lián)機方式,通過電話線路將自動售貨機內(nèi)的庫存信

8、息及時地傳送各營業(yè)點的電腦中,從而確保了商品的發(fā)送、補充以及商品選定的順利進(jìn)行。并且,為防止地球暖化,自動售貨機的開發(fā)致力于能源的節(jié)省,節(jié)能型清涼飲料自動售貨機成為該行業(yè)的主流。在夏季電力消費高峰時,這種機型的自動售貨機即使在關(guān)掉冷卻器的狀況下也能保持低溫,與以往的自動售貨機相比,它能夠節(jié)約1015%的電力。進(jìn)入21世紀(jì)時,自動售貨機也將進(jìn)一步向節(jié)省資源和能源以及高功能化的方向發(fā)展。1.2 自動售貨控制系統(tǒng)設(shè)計的意義自動售貨機從問世以來就備受關(guān)注,因其無需專人守護(hù)而可以每天24小時售貨,被稱為“微型超市”。自動售貨機的核心在其控制系統(tǒng),它能夠準(zhǔn)確的識別幣值以及貨品,控制自動售貨機接受錢幣然后選

9、出顧客所需的物品。如今是一個智能化的社會,越來越多的智能產(chǎn)品將被研發(fā)生產(chǎn)出來,簡單實用的自動售貨機將會逐步成為人們購物的“優(yōu)秀售貨員”。自動售貨裝置已經(jīng)成為一個城市的標(biāo)志,地鐵站內(nèi)、圖書館旁、大型超市門口都能見到它們的蹤影。自動售貨裝置以其特點:無需專人看管,所占空間不大,方便人們購物在當(dāng)今的社會中占據(jù)重要的地位。一個性能優(yōu)越的自動售貨機取決于它的自動控制系統(tǒng),采用AT89C51單片機為控制核心是由于AT89C51單片機的可靠性高,編程簡單,接口方便,同時配以相應(yīng)的外圍電路來驅(qū)動單片機以及實現(xiàn)該系統(tǒng)的其他相關(guān)的功能。自動售貨裝置有著廣闊的發(fā)展前景及市場,優(yōu)良的自動售貨控制系統(tǒng)的設(shè)計將會不斷的推

10、動其前進(jìn)。1.3 本文的主要設(shè)計內(nèi)容本文主要設(shè)計了一個自動售貨控制系統(tǒng),從自動售貨機的歷史、自動售貨系統(tǒng)總體分析、自動售貨系統(tǒng)硬件設(shè)計、自動售貨系統(tǒng)軟件設(shè)計、調(diào)試與仿真等五個方面進(jìn)行。總體分析得出系統(tǒng)的框圖和顧客購物流程、元器件的選擇,硬件設(shè)計采用Proteus模擬連接實物圖,軟件設(shè)計采用c語言編寫,keil進(jìn)行調(diào)試,調(diào)試與仿真則在Proteus中清晰可見。各部分功能明確,相互協(xié)調(diào),共同支配著自動售貨系統(tǒng)的有序運行。第二章 自動售貨控制系統(tǒng)設(shè)計分析2.1 系統(tǒng)總體設(shè)計分析現(xiàn)在我們來簡單模擬一下顧客的購物流程:當(dāng)顧客需要從自動售貨機購買貨物時,顧客首先通過一些外部控件選擇自己需要的貨物。此時顧客

11、需要知道自己應(yīng)該支付多少金額,所以自動售貨機顯示顧客所選貨物的總金額。然后顧客可以向自動售貨機的投幣口投入錢幣,自動售貨機顯示顧客投入的錢幣總金額,當(dāng)投入的金額大于所需的金額的時候,顧客購買的貨物將從出貨口送出,同時退幣口退還顧客多余的金額。根據(jù)顧客的購物流程分析,我設(shè)計出合理可行的自動售貨控制系統(tǒng)框架圖如圖2-1。開 始系統(tǒng)初始化選購貨物確 認(rèn)投 幣售 貨找 零NY圖2-1 自動控制系統(tǒng)流程圖根據(jù)自動控制系統(tǒng)的流程圖,能夠很清晰的得出系統(tǒng)的設(shè)計思路:當(dāng)顧客選擇貨物的時候,可以采用三個按鍵來模擬三種貨物(本設(shè)計提供三種貨物供選擇),貨物多樣性更加接近現(xiàn)實;顯示模塊采用數(shù)碼管顯示顧客所選擇的所有

12、貨物的金額,金額的計算由內(nèi)部邏輯處理;投幣部分用兩個按鍵來模擬2種幣值(本設(shè)計提供兩種可識別幣值);顧客成功購買后,用一個led燈模擬貨物的取出(led燈亮則有貨物出來,否則沒有貨物出來);退幣部分用三個led燈模擬(分別為1元,2元,2元),三個led燈便于觀察,退幣金額由內(nèi)部邏輯根據(jù)顧客的選擇計算得出。2.2 元器件選擇1)單片機:選用AT89C51作為控制核心,該單片機是一種帶4K字節(jié)FLASH存儲器的低電壓、高性能CMOS 8位微處理器。2)晶振:本設(shè)計選用的晶振是CRYSTAL,作用在于產(chǎn)生原始的時鐘頻率,這個頻率經(jīng)過頻率發(fā)生器的倍頻或分頻后就成了單片機中各種不同的總線頻率。3)排阻

13、:排阻RP1是用來并行口的上拉或者下拉電阻用。4)數(shù)碼管:4位8段共陽數(shù)碼管,用來顯示投幣和找零金額。5)一般電阻:設(shè)計中需要用到的電阻均是起下拉作用,用來穩(wěn)定系統(tǒng)。6)電容:本設(shè)計中所用到的電容有3個,其中2個是去耦電容,其起作用一方面是本集成電路的蓄能電容,另一方面旁路掉該器件的高頻噪聲, 起到抗干擾的作用。1個接復(fù)位輸入端口,與外接電阻構(gòu)成復(fù)位電路。7)按鍵:選用9個獨立按鍵,5個按鍵用來代表貨物的不同價格,1個用來確認(rèn),1個用來取消,還有2個用來模擬貨幣投入。2.3 開發(fā)工具Keil uVision2是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),使用接

14、近于傳統(tǒng)C語言的語法來開發(fā),與匯編相比,功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,它還能嵌入?yún)R編,您可以在關(guān)鍵的位置嵌入,使程序達(dá)到接近于匯編的工作效率。KEILC51標(biāo)準(zhǔn)C編譯器為8051微控制器的軟件開發(fā)提供了C語言環(huán)境,同時保留了匯編代碼高效、快速的特點。C51已被完全集成到uVision2的集成開發(fā)環(huán)境中,這個集成開發(fā)環(huán)境包含:編譯器,匯編器,實時操 作系統(tǒng),項目管理器,調(diào)試器。uVision2 IDE可為它們提供單一而靈活的開發(fā)環(huán)境。Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機

15、及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯。第三章 自動售貨控制系統(tǒng)硬件設(shè)計3.1 硬件總體框圖經(jīng)過分析自動售貨控制系統(tǒng)的設(shè)計得出自動售貨控制系統(tǒng)的總體框圖如3-1。系統(tǒng)由AT89C51單片機為控制核心,外圍電路有AT89C51單片機驅(qū)動電路,貨物選擇按鍵電路,數(shù)碼管顯示電路,取貨顯示,退幣顯示以及投幣電路。各部分相互協(xié)調(diào)工作,共同完成自動售貨控制系統(tǒng)的運行。AT89C

16、51單片機單片機驅(qū)動模塊貨物選擇按鍵電路數(shù)碼管顯示電路取貨顯示退幣顯示投幣電路圖3-1總體框圖3.2 AT89C51單片機模塊AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROMFlash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機。AT89C51是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中

17、,ATMEL的AT89C51是一種高效微控制器。外形及引腳排列如圖3-2(a)(b)所示:(a)AT89C51外部結(jié)構(gòu)圖 (b)AT89C51引腳圖圖3-23.2.1 管腳說明(1) VCC:供電電壓。(2) GND:接地。(3) P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸出原碼,此時P0外部必須被拉高。(4) P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能

18、接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 (5) P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫1時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址1時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其

19、特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。(6) EA/VP:當(dāng)EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器,注意加密方式1時,EA將內(nèi)部鎖定為RESET;當(dāng)EA端保持高電平時,此間內(nèi)部程序存儲器在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。(7) P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入1后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口作為AT89C51的功

20、能口,如表3-1所示。P3口同時為閃爍編程和編程校驗接收一些控制信號。表3-1 P3口功能P3口口管腳備選功能P3.0 RXD串行輸入口P3.1 TXD串行輸出口P3.2 /INT0外部中斷0P3.3 /INT1外部中斷1P3.4 T0記時器0外部輸入P3.5 T1記時器1外部輸入P3.6 /WR外部數(shù)據(jù)存儲器寫選通P3.7 /RD外部數(shù)據(jù)存儲器讀選通(8)RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平。(9)ALE/P:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正

21、脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。(10) PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的PSEN信號將不出現(xiàn)。(11)XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。(12)XTAL2:來自反向振蕩器的輸出。

22、3.2.2 AT89C51單片機的主要特性AT89C51單片機與MCS-51微控制器產(chǎn)品系列兼容;片內(nèi)有4KB可在線重復(fù)編程的快閃擦寫存儲器 ;存儲數(shù)據(jù)保存時間為10年 ;寬工作電壓范圍VCC可為2.7V到6V ;全靜態(tài)工作可從0Hz至16MHz ;程序存儲器具有3級加密保護(hù) ;128*8位內(nèi)部RAM ;32條可編程I/O線 ,兩個16位定時器/計數(shù)器 ;中斷結(jié)構(gòu)具有5個中斷源和2個優(yōu)先級 ,可編程全雙工串行通道 ,空閑狀態(tài)維持低功耗和掉電狀態(tài)保存存儲內(nèi)容。3.2.3 芯片擦除整個PEROM陣列和三個鎖定位的點擦除可通過正確的控制信號組合,并保持LE管腳處于低電平10ms來完成。在芯片擦除操作

23、中,代碼陣列全被寫1且在任何非空存儲字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停在工作。但RAM,定時器,計數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個硬件復(fù)位為止。3.3 單片機驅(qū)動系統(tǒng)模塊單片機驅(qū)動模塊是用來驅(qū)動單片機工作的電路,由2個去耦電容與晶振并聯(lián)接入晶振接口,構(gòu)成時鐘電路,為單片機提供時鐘信號;復(fù)位電容與一電阻接入復(fù)位接口,是為系統(tǒng)提供初始化信號。根據(jù)需求可以設(shè)計出該驅(qū)動模塊的實際電路圖如圖3-3所示:圖3-

24、3 AT89C51單片機的驅(qū)動電路圖中C1,C2均為20pf的去耦電容,C3為10u的復(fù)位電容,X1為12M的晶振,R1上拉電阻,晶振X1兩端分別與C1,C2的一端相連并接入晶振接口XTAL1,XTAL2。C1,C2的另一端接R1的一端并一起接地,R1的另一端與C3一端接入復(fù)位接口,C3的另一端接片內(nèi)存儲器,并接入電源接口。C1,C2,X1構(gòu)成時鐘電路,為單片機提供時鐘信號。此單片機片內(nèi)存儲器有效,可使用片內(nèi)存儲器,不用外部拓展,R1起下拉作用,穩(wěn)定系統(tǒng)。3.4 系統(tǒng)顯示模塊系統(tǒng)顯示模塊采用4位8段共陽數(shù)碼管顯示金額。首先顯示所選物品金額,然后顯示投入金額,最后顯示找還金額。P0口沒有內(nèi)置上拉

25、電阻,要在外部接排阻上拉,數(shù)碼管段選接P0口,為選經(jīng)過三極管驅(qū)動與P2.0-P2.3相接。 數(shù)碼管顯示器顯示器用以顯示所選物品總金額、投入金額、退還金額。LED顯示器是由發(fā)光二極管顯示字段的顯示器件,也可稱為數(shù)碼管。系統(tǒng)中通常使用8段LED數(shù)碼顯示器,其外形及引腳如圖2-5(a)所示,由圖可見8段LED顯示器由8個發(fā)光二極管組成。其中7個長條形的發(fā)光二極管排列成“日”字形,另一個圓點形的發(fā)光二極管在顯示器的右下角作為顯示小數(shù)點用,通過不同的組合可用來顯示各種數(shù)字,包括AF在內(nèi)的部分英文字母和小數(shù)點“”等字樣。 LED顯示器有兩種不同的形式:一種是8個發(fā)光二極管的陽極都連在一起的,稱為共陽極LE

26、D顯示器;另一種是8個發(fā)光二極管的陰極都連在一起的,稱為共陰極LED顯示器,我們選擇其中一種共陽極.如圖2-5(b)所示: 圖3-4 8段LED數(shù)碼顯示器LED顯示器有動態(tài)顯示和靜態(tài)顯示.由于靜態(tài)顯示器硬件要求比較高,而且顯示的位數(shù)不如動態(tài)顯示器多,為此我們選擇8位的動態(tài)LED顯示器.動態(tài)LED顯示器是將所有位顯示器并接到I/O接口,用兩個鎖成器,一個用以選位,另一個用以選段,具體連接總圖上有。3. 4. 2 顯示器的驅(qū)動電路下圖中RP1為排阻,因為P0口沒有內(nèi)置上接電阻,需要在外部接排阻進(jìn)行上拉,數(shù)碼段選接P0口,位選與P2.0-P2.3相連接。位選的接口為低電平是該位被選中,能夠顯示數(shù)據(jù),

27、為高電平時,該位不被選中,則不亮,不能顯示任何數(shù)據(jù)。此顯示器驅(qū)動電路如圖3-5所示:圖3-5 顯示器驅(qū)動電路圖3.5 貨幣識別投入電路模塊貨幣識別電路采用兩個按鈕開關(guān)模擬,第一個按鈕開關(guān)表示投入1元硬幣,第二個按鈕開關(guān)表示投入5元紙幣,該系統(tǒng)只能識別這兩種幣值。貨幣識別投入電路如圖3-6所示:圖3-6貨幣識別投入電路圖3.6 貨品選擇按鍵模塊鍵盤為7個獨立按鍵,按鍵1-5是購物鍵,分別代表了1元、2元、3元,數(shù)量2、數(shù)量3不等的貨物價格的數(shù)量,6按鍵是確認(rèn)鍵,用戶在選定所欲購買的貨物后必須按確認(rèn)鍵,6是取消鍵,當(dāng)某個操作錯誤是可以按取消鍵返回上一級菜單。該模塊中7個鍵并聯(lián),一端接公共地,一端接

28、單片機的P1.0-P1.6口。按鍵選擇電路如圖3-7所示:圖3-7按鍵選擇電路3.7 出貨、退幣模塊出貨、退幣模塊才用4個led燈模擬,第一個為貨物指示燈,當(dāng)顧客投幣完成后,幣值足夠是該led燈亮,表示有貨物出來。其余3個模擬找零,分別為1元、2元、2元(便于模擬),但某個通道的燈亮了,說明該通道有退幣。出貨、退幣電路圖如圖3-8所示:圖3-8出貨、退幣電路3.8 小結(jié)系統(tǒng)硬件的設(shè)計需滿足設(shè)計要求,各電路要簡潔、實用。單片機的選擇要滿足設(shè)計要求,驅(qū)動電路要為單片機提供時鐘信號及正常工作的功率驅(qū)動;按鍵電路即系統(tǒng)的輸入電路,用戶利用按鍵系統(tǒng)輸入信號;顯示電路由數(shù)碼管顯示用戶所投貨幣的金額和找零金

29、額;貨幣識別投入電路用按鍵模擬貨幣的投入。第四章 自動售貨控制系統(tǒng)軟件設(shè)計4.1 C51語言的優(yōu)缺點現(xiàn)在有四種語言支持8051系列單片機編程,即匯編、PL/M,C和BASIC,在開發(fā)中最常用的是匯編語言,但隨著程序復(fù)雜程度的提高,匯編語言逐漸暴露了它的不足,BASIC適合于初學(xué)者或要求編程簡單而對編程效率和運行速度不高的場合。PL/hi對8051系列單片機來講,不支持復(fù)雜的算術(shù)運算和浮點變量,無豐富的庫函數(shù)支持。C語言是一種源于編寫UNIX 操作系統(tǒng)的語言,是一種結(jié)構(gòu)化語言,可產(chǎn)生緊湊代碼。為了更好地實現(xiàn)對單片機的開發(fā),C51應(yīng)運而生。每個不同公司開發(fā)的C51不盡相同,本系統(tǒng)采用的是Keil

30、Elektronik Gmbh開發(fā)的KeiluVision2工具軟件來進(jìn)行系統(tǒng)軟件編寫和調(diào)試的。在嵌入式系統(tǒng)中,相對于匯編語言,C語言作為一種高級語言主要存在兩個不足:一,生成的可執(zhí)行代碼冗長,效率不高。對于這一點,隨著處理芯片運算速度的提高、集成ROM的擴大,特別編譯系統(tǒng)的不斷優(yōu)化,冗長已經(jīng)不再是問題。這也是C在嵌入式系統(tǒng)中逐漸成為主流編程語言的主要原因之一。二,C生成的可執(zhí)行代碼在時序上不容易控制,比如本系統(tǒng)中要實現(xiàn)的時序控制。一般的解決方案是在C程序中嵌入?yún)R編語句,但其實只要充分挖掘C的潛力,在時序要求嚴(yán)格的場合完全可以用C語言實現(xiàn)。具體方法就是閱讀開發(fā)環(huán)境給我們提供的反匯編代碼。反匯編

31、代碼一目了然的反映了微控器的運行時序,然后根據(jù)反匯編代碼修改C源程序。4.2 Keil和Proteus開發(fā)步驟Keil對于單片機開發(fā)是十分有用的,開發(fā)效率高、操作簡單、功能齊全。Keil開發(fā)步驟清晰易懂:啟動Keil、新建工程、新建文本、編寫源程序、編譯。在編譯產(chǎn)生.hex文件時需要注意,選中output的create HEX File才能在文件目錄生成.hex的文件。Proteus在硬件構(gòu)圖方面功能強大,但是Proteus的使用難度也比較大。在本設(shè)計中,Proteus開發(fā)流程為:啟動Proteus、新建工程、選取元器件、連接電路圖、添加.hex文件、運行查看結(jié)果。Keil和Proteus結(jié)合

32、開發(fā)能夠使得開發(fā)更為簡單,開發(fā)流程圖如圖4-1所示:啟動keil新建工程新建文本文本加入工程編寫程序編譯啟動Proteus新建工程選取元器件連接電路圖添加.hex文件運行生成.hex文件圖4-1 Keil和Proteus開發(fā)流程圖4.3 主要模塊軟件設(shè)計根據(jù)控制系統(tǒng)的設(shè)計要求及硬件設(shè)計,該系統(tǒng)的軟件采用模塊化的設(shè)計方法,編程語言為C語言。代碼模塊包括:主程序模塊、按鍵掃描及鍵值識別模塊、數(shù)碼管顯示及售貨模塊、貨幣識別投入及找零處理模塊。源程序見附錄。4.3.1 按鍵掃描及鍵值識別模塊該模塊使用7個獨立按鍵模擬顧客選擇貨物,程序設(shè)計時通過判斷對應(yīng)按鍵的接口的電平為高/低來確定顧客的選擇,如果接口

33、為低電平表示按鍵被按下。在判斷按鍵是否被按下的過程中,采用軟件的辦法消除按鍵抖動,具體的方法為首先判斷接口是否為低電平,如果為低電平則進(jìn)行短暫的延時,然后在判斷該接口是否為低電平,如果仍然為低電平,那么表示該按鍵確實已經(jīng)被按下,觸發(fā)對應(yīng)的處理邏輯。按鍵1到按鍵3表示貨物的品種,按鍵4和按鍵5表示顧客選擇貨物的數(shù)量,按鍵6表示確定,按鍵7表示取消。顧客每次選擇了后都需要按下按鍵6來確定,通過顯示模塊會給顧客良好的提示。4.3.2 數(shù)碼管顯示電路數(shù)碼管接在單片機的P0口,由于P0口沒有上拉電阻,所以需要外接上拉電阻。數(shù)碼管采用動態(tài)顯示,首先用一個數(shù)組table保存0-9的對應(yīng)的數(shù)碼管顯示十六進(jìn)制。

34、通過邏輯計算得出需要顯示的數(shù)據(jù)后,使用tablei來取出對應(yīng)的數(shù)據(jù)置于P0口。調(diào)用顯示函數(shù)時:首先判斷顧客購物處于哪一步,第一步表示顧客選擇貨物,第二步表示顧客投入的幣值,第三步表示應(yīng)退還的幣值。同時數(shù)碼管顯示對應(yīng)步驟的數(shù)據(jù),在第三步中,如果顧客投入的幣值小于應(yīng)付的幣值,那么步驟退一步,同時顯示為投入的幣值。4.3.3 投幣電路投幣電路采用兩個按鍵模擬,一個表示1元,一個表示5元。當(dāng)系統(tǒng)處于投幣階段的時候,判斷投幣按鍵是否被按下,如果被按下則表示有錢幣投入,根據(jù)按鍵按下的次數(shù)對投入幣值進(jìn)行累加。投幣結(jié)束后需要按確認(rèn)鍵讓系統(tǒng)進(jìn)入下一個階段。同時數(shù)碼管會顯示投入總幣值。4.4 小結(jié)系統(tǒng)軟件設(shè)計主程

35、序以調(diào)用其他功能函數(shù)為主,每一個模塊單獨寫一個函數(shù),代碼可讀性、可移植性性、安全性大大提高。主函數(shù)只需調(diào)用功能函數(shù),主程序簡單精簡,系統(tǒng)運行效率提高。第五章 調(diào)試與仿真5.1 調(diào)試與仿真 為了使設(shè)計更加的清晰明了,我采用了Proteus來進(jìn)行仿真。主要仿真的步驟與結(jié)果如下: 第一步:打開Proteus程序,根據(jù)硬件總體設(shè)計完成元器件的布局和連線如圖5-1所示:圖5-1 硬件結(jié)構(gòu)圖第二步:在keil中編譯源程序,如圖5-2所示。生成.hex文件,將.hex文件添加到AT89C51。每次修改更新源程序后都應(yīng)該重新編譯產(chǎn)生.hex文件。在keil界面的下部分消息提示欄觀察是否有警告、錯誤,是否成功生

36、成.hex文件。圖5-2 源程序編譯第三步:點擊Proteus的運行按鈕,得到初始化的狀態(tài)圖如圖5-3所示。此時系統(tǒng)處于第一階段,只有按鍵1到按鍵5有效,其他按鍵對系統(tǒng)不產(chǎn)生影響。數(shù)碼管顯示為初始0,led燈全部為滅的狀態(tài)。圖5-3 初始化第四步:點擊選擇按鈕(此次模擬先按按鍵1,按后按按鍵5),然后確定(按鍵6)。數(shù)碼管顯示所選取物品的總價格如圖5-4所示。此時系統(tǒng)處于第二階段,按鍵8和按鍵9投幣電路有效,數(shù)碼管顯示所選貨物的總金為3元,led全部為滅的狀態(tài)。圖5-4 選擇物品價格第五步:點擊投幣按鈕(此次模擬先按按鍵8,按后按按鍵8),然后確定(按鍵6)。數(shù)碼管顯示投入幣值如圖5-5所示。

37、此時系統(tǒng)處于第三階段,按鍵8和按鍵9有效。數(shù)碼管顯示投入總幣值為6元,led為全滅狀態(tài)。圖5-5 投幣統(tǒng)計第六步:確定后,數(shù)碼管顯示退幣幣值以及取貨、退幣led的顯示如圖5-6所示。此時系統(tǒng)處于第四階段,數(shù)碼管顯示退還幣值為3元,出貨口led為亮,一個1元、一個2元退幣燈為亮的狀態(tài)。圖5-6 退幣、取貨5.2 不足與改進(jìn)源程序在調(diào)試的時候出現(xiàn)了一些語法錯誤,經(jīng)過仔細(xì)的分析和修改,最終通過編譯。該程序已經(jīng)能夠完成自動售貨控制系統(tǒng)的基本功能,在硬件方面,本設(shè)計還有一些能夠改進(jìn)的地方:數(shù)碼管顯示模塊可以改用LCD液晶顯示器來顯示,通過中文的方式給顧客提示,人機交互更加友好;投幣電路通過光感電路模擬,

38、效果更好。軟件設(shè)計跟隨硬件設(shè)計的改變做相應(yīng)的變化,設(shè)計更加貼近現(xiàn)實。 總 結(jié)本設(shè)計以AT89C51單片機為控制核心,周圍配備有單片機驅(qū)動電路、按鍵選擇電路、數(shù)碼管輸出顯示電路、led輸出顯示電路、投幣電路等,成功的模擬了自動售貨系統(tǒng)的運行原理。設(shè)計所用到的開發(fā)軟件為Keil和Proteus,開發(fā)語言為C語言。通過這次畢業(yè)設(shè)計,我對電子器件有了進(jìn)一步的了解,加強了我對單片機的基本原理、單片機應(yīng)用系統(tǒng)開發(fā)過程的了解以及遇到問題時對實際問題的分析解決能力,提高了應(yīng)用Keil軟件和Proteus軟件的能力。讓我對過去所學(xué)知識有了一個整體的認(rèn)識。在設(shè)計的過程中,我遇到了很多的問題,在老師及同學(xué)的幫助下,

39、最終都成功解決了,同時老師對我的畢業(yè)設(shè)計提供了許多寶貴的意見,在此對他們表示感謝。參考文獻(xiàn)1 謝維成,楊加國.單片機原理與應(yīng)用及C51程序設(shè)計M. 北京:清華大學(xué)出版社, 2009-7.2 閻石. 數(shù)字電子技術(shù)第四版M. 北京:化學(xué)工業(yè)出版社, 2004-5.3 潘新民. 微型計算機控制技術(shù)M. 北京:人民郵電出版社, 1999-9.4 胡漢才. 單片機原理及其接口技術(shù)M. 北京:清華大學(xué)出版社, 1996-3.5 尹建華. 微型計算機原理與接口技術(shù)第二版M. 北京:高等教育出版社, 2008-1.6 譚博學(xué),苗匯靜. 集成電路原理及應(yīng)用第二版M. 北京:電子工業(yè)出版社, 2008-1.7 黃

40、正瑾. 在線編程技術(shù)M. 北京:清華大學(xué)出版社, 1996-2.8 謝自美. 電子線路設(shè)計、實驗、測試M. 北京:人民郵電出版社, 1999-9.9 周潤景、張麗娜、丁莉. 基于PROTEUS的電路及單片機設(shè)計與仿真M. 北京:航空航天大學(xué)出版社, 2010-1. 10 彭偉. 單片機C語言程序設(shè)計實訓(xùn)100例M. 北京:電子工業(yè)出版社, 2009-6.11 陳海宴. 51單片機原理及應(yīng)用基于keil c與ProteusM. 北京:航空航天大學(xué)出版社, 2010-7.附 錄源程序:#include<reg52.h>/位定義sbit key1 = P10; /選擇1元物品sbit key2 = P11; /選擇2元物品sbit key3 = P12; /選擇3元物品sbit key4 = P13; /數(shù)量選為2sbit key5 = P14; /數(shù)量選為3sbit key6 = P15; /確認(rèn)sbit key7 = P16; /取消sbit key8 = P36; /1元硬幣sbit key9 = P37; /5元紙幣int step = 1; /操作的步驟int price = 0; /物品價格int num = 1; /物品數(shù)量int table1 = 0x3F,0x06,0x5B,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論