第一篇:自動洗衣機(jī)課程設(shè)計(jì)報(bào)告
課程設(shè)計(jì)
課程名稱: 學(xué)院:專業(yè): 姓名:學(xué)號: 年級:任課教師:
年月日
文檔編寫格式,本頁在報(bào)告完成后刪除
目錄為參考格式,可根據(jù)具體情況修改,目錄應(yīng)為超鏈接形式。正文中文為宋體小四,其他(包含程序字體)為Consolas,段落間距1.3。除在附錄總附上圖紙外,還需要打印A3大小圖紙兩張,內(nèi)容包括:
1、控制電路設(shè)計(jì)原理圖,繪制軟件為Altium Designer,右下角包含以下信息:大圖名課程名稱指導(dǎo)教師制圖人班級學(xué)號姓名制圖時(shí)間
2、系統(tǒng)仿真圖(proteus),如無仿真則不用,但需繪制系統(tǒng)PCB(Altium Designer)。
原理圖例:
目錄
目錄
鍵入章標(biāo)題(第 1 級)..................................................................................................1 鍵入章標(biāo)題(第 2 級)...............................................................................................2 鍵入章標(biāo)題(第 3 級)...........................................................................................3 鍵入章標(biāo)題(第 1 級)..................................................................................................4 鍵入章標(biāo)題(第 2 級)...............................................................................................5 鍵入章標(biāo)題(第 3 級)...........................................................................................6 1.1設(shè)計(jì)背景.............................................................................X 1.2設(shè)計(jì)要求.............................................................................X 1.3設(shè)計(jì)思路簡介.........................................X 第2章系統(tǒng)開發(fā)平臺與環(huán)境.................................X 1.1 XXXXXXXXX開發(fā)環(huán)境簡介.........................................X 2.2 XXXXXXXXX開發(fā)環(huán)境簡介............X.......................................第3章XXXX硬件系統(tǒng)設(shè)計(jì)過程...............................X 3.1 XXXX硬件系統(tǒng)總體框圖.................................X 3.2 XXXX硬件系統(tǒng)元件選型.................................X 3.3XXXX硬件系統(tǒng)的設(shè)計(jì)方法................................X.......................................第4章XXXX系統(tǒng)軟件設(shè)計(jì).......................................X 4.1 程序流程圖...........................................X 4.2程序源代碼...........................................X..........................第5章系統(tǒng)仿真與調(diào)試..........................................X 5.1調(diào)試過程............................................X..........................第6章總結(jié)(心得體會)..............................................X 參考文獻(xiàn).................................................X 附錄 控制電路圖紙 仿真電路圖紙 程序清單
第二篇:全自動洗衣機(jī)課程設(shè)計(jì)
全自動洗衣機(jī)課程設(shè)計(jì)
PLC課程設(shè)計(jì)
題
目: 全自動洗衣機(jī)的控制
院系名稱: 機(jī)械設(shè)計(jì)制造及其自動化
專業(yè)班級:
學(xué)生姓名:
學(xué)
號:
指導(dǎo)老師:
目錄
目錄........................................................................................................................................2 第一章 課程設(shè)計(jì)任務(wù)............................................................................錯(cuò)誤!未定義書簽。第二章 總體方案分析............................................................................錯(cuò)誤!未定義書簽。
2.1 分析控制要求......................................................................錯(cuò)誤!未定義書簽。2.2 選擇PLC型號.....................................................................錯(cuò)誤!未定義書簽。2.3 分配I/O點(diǎn)...........................................................................錯(cuò)誤!未定義書簽。
第三章 PLC控制系統(tǒng)設(shè)計(jì)...................................................................錯(cuò)誤!未定義書簽。
3.1 輸入/輸出電路設(shè)計(jì).............................................................錯(cuò)誤!未定義書簽。3.2 控制程序設(shè)計(jì)......................................................................錯(cuò)誤!未定義書簽。
3.2.1 梯形圖設(shè)計(jì)................................................................錯(cuò)誤!未定義書簽。3.2.2 指令表........................................................................錯(cuò)誤!未定義書簽。3.3 控制程序分析......................................................................錯(cuò)誤!未定義書簽。
第四章 課程設(shè)計(jì)小結(jié)............................................................................錯(cuò)誤!未定義書簽。參 考 文 獻(xiàn)............................................................................................錯(cuò)誤!未定義書簽。
一、課程設(shè)計(jì)任務(wù)
全自動洗衣機(jī)已經(jīng)是普及的家用電器,并且現(xiàn)在工業(yè)用的全自動洗衣機(jī)由于其特殊性,也越來越多的采用 PLC、變頻器和觸摸屏。該控制對象具有如下功能:波輪式全自動洗衣機(jī)的洗衣桶(外桶)和脫水桶(內(nèi)桶)是以同一中心安裝的。外桶固定,作乘水用;內(nèi)桶可以旋轉(zhuǎn),作脫水(甩干)用。內(nèi)桶的四周有許多小孔,使內(nèi)外桶水流相通。洗衣機(jī)的進(jìn)水和排水分別由進(jìn)水電磁閥和排水電磁閥控制。進(jìn)水時(shí),控制系統(tǒng)使進(jìn)水電磁閥打開,將水注入外桶;排水時(shí),使排水電磁閥打開,將水由外桶排到機(jī)外。洗滌和脫水由同一臺電動機(jī)拖動,通過電磁閥離合器來控制,將動力傳遞給洗滌波輪或甩干桶(內(nèi)桶)。電磁離合器失電時(shí),電動機(jī)帶動洗滌波輪實(shí)現(xiàn)正、反轉(zhuǎn),進(jìn)行洗滌;電磁離合器得電時(shí),電動機(jī)帶動內(nèi)桶單向旋轉(zhuǎn),進(jìn)行甩干(此時(shí)波輪不轉(zhuǎn))。水位高低分別由高低水位開關(guān)進(jìn)行檢測,啟動按鈕用來啟動洗衣機(jī)工作。
二、總體方案分析
2.1控制要求
啟動時(shí),首先進(jìn)水,到高位時(shí)停止進(jìn)水,開始洗滌。正轉(zhuǎn)洗滌15s 暫停3s后反轉(zhuǎn)洗滌15s,暫停3s后再正轉(zhuǎn)洗滌,如此反復(fù)30次。洗滌結(jié)束后開始排水,當(dāng)水位下降到低水位時(shí),進(jìn)行脫水(同時(shí)排水),脫水時(shí)間為10s。這樣完成一次從進(jìn)水到脫水的大循環(huán)過程。
經(jīng)過3次上述大循環(huán)后(第2、3次為漂滌),進(jìn)行完成后報(bào)警,報(bào)警10s后結(jié)束全部過程,自動停機(jī)。
此外,還要求可以按下排水按鈕以實(shí)現(xiàn)手動排水;按下停止按鈕以實(shí)現(xiàn)手動停止進(jìn)水、排水、脫水及報(bào)警。
所需設(shè)備
(1)液位傳感器、按鈕、報(bào)警器、選擇開關(guān)、電磁離合器、電動機(jī)等;(2)計(jì)算機(jī)(用戶自備)一臺;(3)可編程控制器(帶編程電纜)一根;(4)編程軟件;(5)導(dǎo)線若干。2.2 PLC選擇、PLC選型及I/O分配圖
根據(jù)設(shè)計(jì)要求、控制要求,選定PLC的型號為: 三菱FX2N
● 控制規(guī)模:16~256點(diǎn)
● 內(nèi)置8K容量的RAM存儲器,最大可以擴(kuò)展到16K ● CPU運(yùn)算處理速度0.08μS/基本指令
● 在FX2N系列右側(cè)可連接輸入輸出擴(kuò)展模塊和特殊功能模塊
● 基本單元內(nèi)置2軸獨(dú)立最高20kHz定位功能(晶體管輸出型)全自動洗衣機(jī)系統(tǒng)的I/0分配:
輸人
輸出 X0:啟動按鈕
X1:限位開關(guān)SQ
1X2:限位開關(guān)SQ
2第三章 PLC控制系統(tǒng)設(shè)計(jì)
3.1 輸入/輸出電路設(shè)計(jì)
Y0:進(jìn)水電磁閥控制KA1
Y1:電動機(jī)正轉(zhuǎn)接觸器KM1 Y2:電動機(jī)反轉(zhuǎn)接觸器KM2
Y3:排水電磁閥控制KA2 Y4:脫水離合器控制KA3
Y5:報(bào)警蜂鳴器KA4
全自動洗衣機(jī)步進(jìn)梯形圖
指令表
3.3 控制程序分析
連接好PLC,打開軟件,選定合適的通信端口。首先用軟件遠(yuǎn)程使PLC停止工作,RUN燈熄滅。然后把編好的程序?qū)懭隤LC,再用軟件啟動PLC,發(fā)現(xiàn)PLC的RUN指示燈亮,程序運(yùn)行時(shí),按下啟動按鈕X0,置位狀態(tài)寄存器S20,控制進(jìn)水閥開始進(jìn)水。由外部跟定液位信號,比如選定高水位洗滌,則閉合X1,過一會兒再閉合X1,相當(dāng)于已達(dá)到高水位,從而置位S21,S20自動復(fù)位,關(guān)閉進(jìn)水,同時(shí)啟動T0計(jì)時(shí)器暫停3s。計(jì)時(shí)完畢,T0常開點(diǎn)閉合,置位S22,洗衣機(jī)開始正轉(zhuǎn),并開啟T0計(jì)時(shí)器計(jì)時(shí)15s。計(jì)時(shí)完畢,T1常開點(diǎn)閉合,置位S23,開啟暫停3s的T2計(jì)時(shí)器。計(jì)時(shí)完畢,T2常開點(diǎn)閉合,置位S24,控制電動機(jī)反轉(zhuǎn),同時(shí)開啟T3計(jì)時(shí)器計(jì)時(shí)15s。計(jì)時(shí)完畢,T3常開點(diǎn)閉合,從而置位S25,開啟暫停3s計(jì)時(shí)器T4。計(jì)時(shí)到時(shí),并啟動計(jì)時(shí)器C0,計(jì)數(shù)一次,同時(shí)返回S22,直到計(jì)數(shù)器計(jì)到30次時(shí),置位S26,開始排水.當(dāng)排空后,從而置位S27,啟動脫水,并保持排水,同時(shí)開啟T5計(jì)時(shí)器計(jì)時(shí)10s。計(jì)時(shí)到時(shí),T5常開點(diǎn)閉合,C1計(jì)數(shù)一次,同時(shí)返回S20,直到C1計(jì)時(shí)3次時(shí),即反復(fù)洗滌三次后,C1常開點(diǎn)閉合,置位S28,開啟報(bào)警電路,揚(yáng)聲器發(fā)出響聲提示洗衣完成。在每一步順序運(yùn)行時(shí),上一步的狀態(tài)寄存器均自動復(fù)位。
在程序運(yùn)行中,閉合X3,各狀態(tài)寄存器均無信號,通過選擇手動排水和手動脫水檔位,可實(shí)現(xiàn)手動排水和手動脫水功能。若要實(shí)現(xiàn)輕柔洗功能,需添加X0作為輕柔洗檔位,把X1設(shè)為標(biāo)準(zhǔn)洗檔位,輕柔洗的過程可以通過一些計(jì)時(shí)器把正反轉(zhuǎn)的時(shí)間設(shè)定的小一些。編程和上述基本類似。
第四章 課程設(shè)計(jì)小節(jié)
經(jīng)過將近一周的全自動洗衣機(jī)PLC課程設(shè)計(jì),讓我收獲頗豐,不僅熟悉了全自動洗衣機(jī)的工作過程,還學(xué)會了使用步進(jìn)指令。步進(jìn)指令簡單,直觀,易于閱讀,使用它來控制洗衣機(jī)的工作過程,真的很是方便。幾天的課程設(shè)計(jì),讓我加深了對PLC的認(rèn)識和理解,也知道了PLC應(yīng)用于工業(yè)控制的優(yōu)點(diǎn)所在,更重要的是讓我看到了自己知識的匱乏,也堅(jiān)定了以后要不斷的學(xué)習(xí),不斷的向身邊的人虛心請教,同時(shí)要借助于圖書館和網(wǎng)絡(luò)來擴(kuò)充自己的知識面的決心。也只有這樣,在以后的社會競爭中,自己才能有立足之地,才能有所作為。
五、參考文獻(xiàn)
[1]電氣控制與PLC應(yīng)用,胡漢文 丁如春 主編,人民郵電出版社,2009 [2]科威PLC資料 [3]三菱及西門子PLC資料
[4]可編程控制器教程,黃云龍主編,科學(xué)出版社,2003 [5]可編程控制器應(yīng)用技術(shù),張萬忠主編,化學(xué)工業(yè)出版社,2002 [6]機(jī)電電氣自動控制(修訂版),陳遠(yuǎn)齡主編,重慶大學(xué)出版社出版,2005 [7]可編程控制器原理及應(yīng)用教程,王暉 孫玉峰 王文華 主編,清華大學(xué)出版社出版,2004
第三篇:出租車自動計(jì)費(fèi)器設(shè)計(jì)(課程設(shè)計(jì)報(bào)告)
目 錄 緒論....................................................................................................................................................1 1.1設(shè)計(jì)背景......................................................................................................................................1 1.2QUARTUS II簡介.......................................................................................................................1 1.3VHDL語言基礎(chǔ)..........................................................................................................................2 2 出租車計(jì)費(fèi)器總體設(shè)計(jì)結(jié)構(gòu).............................................................................................................2 2.1
系統(tǒng)設(shè)計(jì)要求和目的..................................................................................................................2 2.2.1 系統(tǒng)設(shè)計(jì)要求......................................................................................................................2 2.2.1 系統(tǒng)設(shè)計(jì)目的......................................................................................................................2 2.2
設(shè)計(jì)思路......................................................................................................................................3 2.3
系統(tǒng)總體結(jié)構(gòu)..............................................................................................................................3 2.4出租車計(jì)費(fèi)器系統(tǒng)工作流程圖..................................................................................................4 3 出租車計(jì)費(fèi)器的實(shí)現(xiàn)........................................................................................................................5 3.1
出租車計(jì)費(fèi)器的頂層原理圖......................................................................................................5 3.2
系統(tǒng)各功能模塊的實(shí)現(xiàn)..............................................................................................................5 3.2.1 計(jì)費(fèi)模塊JIFEI....................................................................................................................5 3.2.2 計(jì)量模塊JILIANG..............................................................................................................6 3.2.3 顯示控制模塊SELTIME.....................................................................................................7 3.2.4 顯示模塊DELED................................................................................................................7 4 出租車計(jì)費(fèi)器系統(tǒng)仿真及分析.........................................................................................................8 4.1
計(jì)費(fèi)系統(tǒng)的仿真..........................................................................................................................8 4.2
單元模塊的仿真及分析............................................................................................................10 4.2.1 譯碼顯示模塊的仿真及分析............................................................................................10 4.2.2 顯示控制模塊的仿真及分析............................................................................................12 4.2.3 計(jì)量模塊的仿真及分析....................................................................................................13 4.2.4 計(jì)費(fèi)模塊的仿真及分析....................................................................................................13 5 鎖定管腳及硬件實(shí)現(xiàn)......................................................................................................................14 5.1
鎖定管腳圖................................................................................................................................14 5.2
硬件實(shí)現(xiàn)....................................................................................................................................14 5.2.1 顯示結(jié)果的幾種情況........................................................................................................15 5.2.2 硬件實(shí)現(xiàn)總結(jié)....................................................................................................................16 6 設(shè)計(jì)體會與總結(jié)..............................................................................................................................17 參考文獻(xiàn)................................................................................................................................................18 附
錄................................................................................................................................................19 1
JILIANG模塊的VHDL編程......................................................................................................19 2
JIFEI模塊的VHDL編程............................................................................................................21 3
SELTIME控制模塊的VHDL編程.............................................................................................22 4
DELED模塊的VHDL編程........................................................................................................23
出租車自動計(jì)費(fèi)器設(shè)計(jì) 緒論
1.1 設(shè)計(jì)背景
隨著我國社會經(jīng)濟(jì)的全面發(fā)展,各大中小城市的出租車營運(yùn)事業(yè)發(fā)展迅速,出租車已經(jīng)成為人們?nèi)粘3鲂羞x擇較為普通的交通工具。于是,出租車行業(yè)以低價(jià)高質(zhì)的服務(wù)給人們帶來了出行的享受。但是總存在著買賣糾紛困擾著行業(yè)的發(fā)展。而在出租車行業(yè)中解決這一矛盾的最好方法就是改良計(jì)價(jià)器。汽車計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)則,它是出租車行業(yè)發(fā)展的重要標(biāo)志,是出租車中最重要的工具,它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器無論是對廣大出租車司機(jī)朋友還是乘客來說都是很必要的。因此,汽車計(jì)價(jià)器的研究也是具有一定意義的。出租車計(jì)費(fèi)器是出租車營運(yùn)收費(fèi)的專用智能化儀表,是出租車市場規(guī)范化,標(biāo)準(zhǔn)化以及減少司機(jī)與乘客之間發(fā)生糾紛的重要設(shè)備。一種功能完備,簡單易用,計(jì)量準(zhǔn)確的出租車計(jì)費(fèi)器是加強(qiáng)出租車行業(yè)管理,提高服務(wù)質(zhì)量的必需品。本設(shè)計(jì)就是采用VHDL硬件描述語言作為設(shè)計(jì)手段,采用自己的設(shè)計(jì)思路,得到一種出租車計(jì)價(jià)系統(tǒng)的軟件結(jié)構(gòu),通過Quartus II 6.0軟件下進(jìn)行仿真,證明所設(shè)計(jì)的電路系統(tǒng)完成了出租車計(jì)價(jià)的功能,各項(xiàng)指標(biāo)符合設(shè)計(jì)要求,具有一定的實(shí)用性。
1.2 QUARTUS II簡介
QUARTUS II 是Altera公司的綜合性CPLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整CPLD設(shè)計(jì)流程。QUARTUS II 支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計(jì)、嵌入式軟件開發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開發(fā)平臺。Altera QUARTUS II 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。
出租車自動計(jì)費(fèi)器設(shè)計(jì)
1.3 VHDL語言基礎(chǔ)
一般而言,一個(gè)相對完整的VHDL語言程序至少應(yīng)三個(gè)基本組成部分:①庫(Library)、程序包(Package)使用說明;②實(shí)體(Entity)說明;③實(shí)體對應(yīng)的結(jié)構(gòu)體(Architecture)說明。其中,庫、程序包使用說明用于打開(調(diào)用)本設(shè)計(jì)實(shí)體將要用到的庫、程序包;實(shí)體說明用于描述該設(shè)計(jì)實(shí)體與外界的接口信號說明,是可視部分;結(jié)構(gòu)體說明用于描述該設(shè)計(jì)實(shí)體內(nèi)部工作的邏輯關(guān)系,是不可視部分。在一個(gè)實(shí)體中,允許含有一個(gè)或多個(gè)結(jié)構(gòu)體,而在每一個(gè)結(jié)構(gòu)體中又可以含有一個(gè)或多個(gè)進(jìn)程以及其他的語句。根據(jù)需要,實(shí)體還可以有配置說明語句。配置說明語句主要用于以層次化的方式對特定的設(shè)計(jì)實(shí)體進(jìn)行元件例化,或是為實(shí)體選定某個(gè)特定的結(jié)構(gòu)體。出租車計(jì)費(fèi)器總體設(shè)計(jì)結(jié)構(gòu)
2.1 系統(tǒng)設(shè)計(jì)要求和目的
2.2.1 系統(tǒng)設(shè)計(jì)要求
1.起步價(jià)為5.0元,起步公里為3公里;
2.超過3公里,每公里按1元收費(fèi),也可每0.1公里按0.1元收費(fèi); 3.等候時(shí)間累計(jì)1分鐘,按每分鐘0.1元收費(fèi);
4.用三個(gè)數(shù)碼管顯示總金額,最大值為99.9元;用三個(gè)數(shù)碼管顯示總里程,最大值99.9公里;用兩個(gè)數(shù)碼管顯示等待時(shí)間,最大值99分鐘。2.2.1 系統(tǒng)設(shè)計(jì)目的
1.通過這次實(shí)驗(yàn)設(shè)計(jì)使我們加深對EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì)相關(guān)理論和概念的理解,培養(yǎng)我們的理論聯(lián)系實(shí)際的能力,特別是實(shí)際動手能力。
2.學(xué)習(xí)使用QUARTUS II軟件設(shè)計(jì)。
3.根據(jù)原理圖學(xué)會用VHDL語言設(shè)計(jì)時(shí)序電路。4.學(xué)會繪制功能仿真波形圖。
出租車自動計(jì)費(fèi)器設(shè)計(jì)
2.2 設(shè)計(jì)思路
根據(jù)設(shè)計(jì)要求,電路具有計(jì)時(shí)、計(jì)程、計(jì)費(fèi)功能,用數(shù)碼管顯示行駛公里數(shù)、等待時(shí)間、收費(fèi)金額,行車?yán)锍毯偷却龝r(shí)間的處理電路將汽車行駛的里程數(shù)、轉(zhuǎn)換成與之成正比的計(jì)費(fèi)脈沖,然后由計(jì)費(fèi)電路轉(zhuǎn)換成收費(fèi)金額,實(shí)驗(yàn)中以一個(gè)脈沖模擬汽車前進(jìn)十米,則每100個(gè)脈沖表示1公里,3公里以后每0.1公里產(chǎn)生一個(gè)計(jì)費(fèi)脈沖,一個(gè)1HZ的脈沖用來表示等待時(shí)間,60個(gè)脈沖代表1分鐘,1分鐘即60個(gè)脈沖產(chǎn)生一個(gè)等待計(jì)費(fèi)脈沖,然后用計(jì)費(fèi)電路對計(jì)費(fèi)脈沖進(jìn)行計(jì)費(fèi)。
2.3 系統(tǒng)總體結(jié)構(gòu)
圖2-1 系統(tǒng)總體結(jié)構(gòu)圖
出租車計(jì)費(fèi)器的組成如上圖所示,通過控制模塊以高低脈沖模擬出租汽車啟動、行駛、暫停,具有控制作用;通過控制模塊控制出租車的狀態(tài)來選擇出租車是計(jì)里程還是計(jì)等待時(shí)間,相應(yīng)產(chǎn)生的時(shí)間計(jì)費(fèi)脈沖信號和里程脈沖信號來計(jì)費(fèi),譯碼/動態(tài)掃描模塊將等待時(shí)間、路程與費(fèi)用的數(shù)值譯碼后用動態(tài)掃描的方式驅(qū)動數(shù)碼管;數(shù)碼管顯示模塊將里程數(shù)、等待時(shí)間和計(jì)費(fèi)金額用數(shù)碼管顯示。
出租車自動計(jì)費(fèi)器設(shè)計(jì)
2.4 出租車計(jì)費(fèi)器系統(tǒng)工作流程圖
圖2-2 出租車計(jì)費(fèi)系統(tǒng)工作流程圖
出租車載客后,啟動計(jì)費(fèi)器,整個(gè)系統(tǒng)開始工作,進(jìn)入初始化狀態(tài),即計(jì)程從0開始,計(jì)費(fèi)從5.0元開始。再根據(jù)BREAK信號判斷行駛還是暫停。若是行駛狀態(tài),計(jì)費(fèi)器開始進(jìn)行里程計(jì)數(shù),當(dāng)里程超過3公里時(shí),計(jì)費(fèi)器開始累加,按每0.1公里收費(fèi)0.1元計(jì)算,計(jì)程器則繼續(xù),否則計(jì)費(fèi)器不變。若是暫停狀態(tài),計(jì)費(fèi)器開始進(jìn)行等候時(shí)間計(jì)數(shù),當(dāng)?shù)群驎r(shí)間累計(jì)1分鐘,則每分鐘0.1元計(jì)費(fèi)。最后將等候時(shí)間、里程、計(jì)費(fèi)都顯示出來。
出租車自動計(jì)費(fèi)器設(shè)計(jì) 出租車計(jì)費(fèi)器的實(shí)現(xiàn)
3.1 出租車計(jì)費(fèi)器的頂層原理圖
圖3-1 出租車計(jì)費(fèi)器頂層原理圖
原理圖中輸入部分分別是CLK:秒脈沖信號,1個(gè)脈沖代表1秒,則60個(gè)脈沖表示1分鐘。CLK1:10米脈沖信號,1個(gè)脈沖代表10米,則10個(gè)脈沖表示100米,100個(gè)脈沖代表1公里。START:計(jì)程車開啟信號;DRIVE:計(jì)費(fèi)器啟動信號;BREAK:等待信號,SEL為計(jì)數(shù)控制信號輸出端。
3.2 系統(tǒng)各功能模塊的實(shí)現(xiàn)
3.2.1 計(jì)費(fèi)模塊JIFEI 計(jì)費(fèi)(JIFEI)模塊也是本系統(tǒng)的核心,完成起步價(jià)計(jì)費(fèi),等待時(shí)間計(jì)費(fèi),里程計(jì)費(fèi)功能。計(jì)費(fèi)器啟動,顯示起步價(jià)5.0元,之后每來一個(gè)行駛里程計(jì)費(fèi)脈沖或者等待時(shí)間計(jì)費(fèi)脈沖,計(jì)費(fèi)金額自動加0.1元。計(jì)費(fèi)顯示用3位數(shù)碼管,所
出租車自動計(jì)費(fèi)器設(shè)計(jì)
以計(jì)費(fèi)最大值為99.9元。其中CH2表示費(fèi)用的十位,CHI表示費(fèi)用的個(gè)位,CH0表示費(fèi)用的十分位。B為等待時(shí)間計(jì)費(fèi)脈沖信號或里程計(jì)費(fèi)脈沖信號。
圖3-2 JIFEI模塊圖
3.2.2 計(jì)量模塊JILIANG
圖3-3 JILIANG模塊圖
本模塊是系統(tǒng)的核心模塊之一,能夠?qū)ν獠康男旭偩嚯x脈沖、等待時(shí)間脈沖進(jìn)行計(jì)數(shù)。因?yàn)樾旭偩嚯x每脈沖代表10米,所以計(jì)滿100個(gè)數(shù)就輸出一個(gè)行駛距離計(jì)費(fèi)脈沖,因?yàn)?公里之內(nèi)屬于起步價(jià),所以前3公里內(nèi)不輸出行駛距離計(jì)費(fèi)脈沖,因?yàn)橛?位數(shù)碼管來顯示行駛距離,其中兩位整數(shù),一位小數(shù),所以行駛距離最小分辨率為0.1公里,行駛距離脈沖每計(jì)10個(gè)數(shù),行駛距離輸出加0.1,行駛距離最大值為99.9公里。其中KM2為里程的十位,KM1為里程的個(gè)位,KM0為里程的十分位。等待時(shí)間脈沖頻率為1HZ,所以一個(gè)脈沖代表1秒,60個(gè)等待脈沖是1分鐘,輸出等待時(shí)間加1,等待時(shí)間滿1分鐘計(jì)一次費(fèi),所以對等待時(shí)間脈沖計(jì)數(shù),計(jì)滿60個(gè)數(shù)就輸出一個(gè)等待計(jì)費(fèi)脈沖。等待時(shí)間最大值為99分鐘。MIN1為等待時(shí)間的十位,MIN0為等待時(shí)間的個(gè)位。將行駛距離、等待時(shí)間送到SELTIME模塊,時(shí)間與里程計(jì)費(fèi)脈沖送到計(jì)費(fèi)模塊完成里程、等待時(shí)間的計(jì)費(fèi)功
出租車自動計(jì)費(fèi)器設(shè)計(jì)
能。B1為超過3公里后,每0.1公里產(chǎn)生的計(jì)費(fèi)脈沖。B2為每等待一分鐘產(chǎn)生的計(jì)費(fèi)脈沖。
3.2.3 顯示控制模塊SELTIME
圖3-4 SELTIME模塊圖
SELTIME模塊起顯示控制作用,控制等待時(shí)間、行駛里程、費(fèi)用在數(shù)碼管上的顯示位置。sel為計(jì)數(shù)控制信號輸出端,功能主要是利用其計(jì)數(shù)的八個(gè)狀態(tài),使daout在其每個(gè)狀態(tài)下選擇某一輸入數(shù)據(jù),進(jìn)而將選擇的的數(shù)據(jù)送入到DELED模塊。dp為小數(shù)點(diǎn)脈沖控制信號,當(dāng)該模塊輸出的值為里程的個(gè)位、費(fèi)用的個(gè)位時(shí),需要考慮小數(shù)點(diǎn)的存在,即此時(shí)dp=‘1’,在其他不需要小數(shù)點(diǎn)的情況下,dp=‘0’,最后dp將信號輸出到DELED模塊。3.2.4 顯示模塊DELED
圖3-5 DELED模塊圖
出租車自動計(jì)費(fèi)器設(shè)計(jì)
DELED模塊把送入的每個(gè)四位數(shù)據(jù)轉(zhuǎn)換為7段碼送出顯示,能夠使數(shù)碼管正常顯示送入的數(shù)據(jù)。其中DP為小數(shù)點(diǎn)輸入信號。出租車計(jì)費(fèi)器系統(tǒng)仿真及分析
4.1 計(jì)費(fèi)系統(tǒng)的仿真
圖4-1 出租車啟動時(shí)計(jì)費(fèi)系統(tǒng)功能仿真圖
由圖4-1 可知,當(dāng)出租車未啟動時(shí),里程、等待時(shí)間、費(fèi)用均為0。出租車剛啟動時(shí),里程、等待時(shí)間為0,費(fèi)用為出租車起步價(jià)5元。
出租車自動計(jì)費(fèi)器設(shè)計(jì)
圖4-2 出租車等待時(shí)計(jì)費(fèi)系統(tǒng)功能仿真圖
由圖4-2可知,當(dāng)出租車在等待過程中,行駛里程16.2公里,等待時(shí)間為32分鐘時(shí),出租車的費(fèi)用為:5+(16.2-3)×1+32×0.1=21.4元,與仿真結(jié)果一致。
圖4-3 出租車行駛時(shí)計(jì)費(fèi)系統(tǒng)功能仿真圖
由圖4-3可知,當(dāng)出租車行駛到66.6千米,等待時(shí)間60分鐘時(shí),由仿真結(jié)果可得出費(fèi)用為74.6元;根據(jù)設(shè)計(jì)要求計(jì)算可得費(fèi)用為:5+(66.6-3)×1+60×0.1=74.6元。仿真結(jié)果與計(jì)算值一致,驗(yàn)證了設(shè)計(jì)的正確性。
出租車自動計(jì)費(fèi)器設(shè)計(jì)
圖4-4 出租車停車時(shí)計(jì)費(fèi)系統(tǒng)功能仿真圖
當(dāng)出租車停車時(shí),出租車上的時(shí)間、里程和費(fèi)用清零,為下次計(jì)費(fèi)的開始做準(zhǔn)備。
4.2 單元模塊的仿真及分析
4.2.1 譯碼顯示模塊的仿真及分析
圖4-5 譯碼顯示模塊的功能仿真圖
圖4-5為譯碼顯示模塊的功能仿真波形圖,DP、S為信號輸入端,也是顯示
出租車自動計(jì)費(fèi)器設(shè)計(jì)
控制模塊的信號輸出端口,ABCDEFGH八個(gè)端口為八位二進(jìn)制的輸出端口。假設(shè)DOUT=“HGFEDCBA”,由上圖可以看出:
1.DP=0時(shí):
當(dāng)S(3 downto 0)=”0000”,則DOUT=”00111111”; 當(dāng)S(3 downto 0)=”0001”,則DOUT=”00000110”; 當(dāng)S(3 downto 0)=”0010”,則DOUT=”01011011”; 當(dāng)S(3 downto 0)=”0011”,則DOUT=”01001111”; 當(dāng)S(3 downto 0)=”0100”,則DOUT=”01100110”; 當(dāng)S(3 downto 0)=”0101”,則DOUT=”01101101”; 當(dāng)S(3 downto 0)=”0110”,則DOUT=”01111101”; 當(dāng)S(3 downto 0)=”0111”,則DOUT=”00000111”; 當(dāng)S(3 downto 0)=”1000”,則DOUT=”01111111”; 當(dāng)S(3 downto 0)=”1001”,則DOUT=”01101111”;
當(dāng)S(3 downto 0)等于上述值以外的值時(shí),則DOUT=”00000000”。2.DP=1時(shí):
當(dāng)S(3 downto 0)=”0000”,則DOUT=”10111111”; 當(dāng)S(3 downto 0)=”0001”,則DOUT=”10000110”; 當(dāng)S(3 downto 0)=”0010”,則DOUT=”11011011”; 當(dāng)S(3 downto 0)=”0011”,則DOUT=”11001111”; 當(dāng)S(3 downto 0)=”0100”,則DOUT=”11100110”; 當(dāng)S(3 downto 0)=”0101”,則DOUT=”11101101”; 當(dāng)S(3 downto 0)=”0110”,則DOUT=”11111101”; 當(dāng)S(3 downto 0)=”0111”,則DOUT=”10000111”; 當(dāng)S(3 downto 0)=”1000”,則DOUT=”11111111”; 當(dāng)S(3 downto 0)=”1001”,則DOUT=”11101111”;
當(dāng)S(3 downto 0)等于上述值以外的值時(shí),則DOUT=”10000000”。
出租車自動計(jì)費(fèi)器設(shè)計(jì)
4.2.2 顯示控制模塊的仿真及分析
圖4-6 顯示控制模塊的功能仿真圖
圖4-6為顯示控制模塊功能仿真圖,其中clk為時(shí)鐘脈沖輸入端,sel為計(jì)數(shù)控制信號輸出端,daout為sel所控制狀態(tài)下的輸出到數(shù)碼管的位選信號,dp為小數(shù)點(diǎn)控制輸出信號。可以看出,當(dāng)時(shí)鐘沿上升時(shí)刻到來時(shí),計(jì)數(shù)器的輸出sel就自動加1,當(dāng)計(jì)數(shù)器輸出端加到“111”時(shí),再來一個(gè)脈沖上升沿,則計(jì)數(shù)的輸出端sel變?yōu)椤?00”,該顯示控制模塊的功能主要是利用其計(jì)數(shù)的八個(gè)狀態(tài),進(jìn)而去輪流控制數(shù)碼管的位選信號。由圖4-6可知:當(dāng)sel=“000”時(shí),則daout=CH0;當(dāng)sel=“001”時(shí),daout=CH1;當(dāng)sel=“010”時(shí),daout=CH2;當(dāng)sel=“011”時(shí),daout=KM0;當(dāng)sel=“100”時(shí),daout=KM1;當(dāng)sel=“101”時(shí),daout=KM2;當(dāng)sel=“110”時(shí),daout=MIN0;當(dāng)sel=“111”時(shí),daout=MIN1。由于KM1、CH1表示里程的個(gè)位和費(fèi)用的個(gè)位,其后都存在小數(shù),故在設(shè)計(jì)中當(dāng)顯示KM1、CH1時(shí)須加入小數(shù)點(diǎn),此時(shí)dp=‘1’,在其他沒有小數(shù)點(diǎn)的情況時(shí)dp=‘0’。
出租車自動計(jì)費(fèi)器設(shè)計(jì)
4.2.3 計(jì)量模塊的仿真及分析
圖4-7 計(jì)量模塊的功能仿真圖
圖4-7為計(jì)量模塊的功能仿真圖,START信號為高電平時(shí)(即出租車啟動)。當(dāng)DRIVE為高電平且BREAK為低電平時(shí),出租車為行駛狀態(tài),此時(shí)里程計(jì)數(shù)模塊開始計(jì)數(shù),每經(jīng)過10個(gè)CLK1脈沖信號,里程加0.1公里,當(dāng)里程計(jì)數(shù)大于3公里時(shí),每計(jì)0.1公里產(chǎn)生1個(gè)B1脈沖信號。當(dāng)DRIVE為高電平且BREAK為高電平時(shí),出租車為暫停狀態(tài),此時(shí)等待時(shí)間計(jì)數(shù)模塊開始計(jì)數(shù),每經(jīng)過60個(gè)CLK脈沖信號,時(shí)間加1分鐘,每計(jì)1分鐘產(chǎn)生一個(gè)B2脈沖信號。B1和B2分別為里程計(jì)費(fèi)脈沖和等待時(shí)間計(jì)費(fèi)脈沖。4.2.4 計(jì)費(fèi)模塊的仿真及分析
圖4-8 計(jì)費(fèi)模塊的功能仿真圖
圖4-8為計(jì)費(fèi)模塊的功能仿真圖當(dāng)START處于高電平且DRIVE處于高電平時(shí),每送入一個(gè)計(jì)費(fèi)脈沖且計(jì)費(fèi)脈沖處于上升沿時(shí),CH0自動加1(即每送入一
出租車自動計(jì)費(fèi)器設(shè)計(jì)
個(gè)計(jì)費(fèi)脈沖加0.1元)。CH0、CH1、CH2為十進(jìn)制計(jì)數(shù)。CH2表示費(fèi)用的十位,CH1表示費(fèi)用的個(gè)位,CH0表示費(fèi)用的十分位,計(jì)費(fèi)的最大值為99.9元。鎖定管腳及硬件實(shí)現(xiàn)
5.1 鎖定管腳圖
在驗(yàn)證出租車計(jì)費(fèi)器系統(tǒng)的功能之前,需要清楚實(shí)驗(yàn)箱與各個(gè)信號之間的對應(yīng)關(guān)系,參照資料得出本設(shè)計(jì)中各引腳的對應(yīng)情況如下:
圖5-1 頂層原理圖
5.2 硬件實(shí)現(xiàn)
通過硬件下載,該電路可以完成硬件實(shí)現(xiàn),芯片管腳定義可以直接用編輯.pin文件。完成管腳定義后選擇器件,編譯后生成.sof文件。選擇.sof文件進(jìn)行下載。
下載完成后,將第一全局時(shí)鐘CLK1的跳線器接1Hz(作為秒脈沖信號),將第二全局時(shí)鐘CLK2的跳線器接1Hz(作為十米脈沖信號),將第三全局時(shí)鐘CLK3的跳線器接32768Hz,用撥位開關(guān)模擬控制出租車的啟動、行駛、暫停。觀察數(shù)
出租車自動計(jì)費(fèi)器設(shè)計(jì)
碼管上數(shù)據(jù)的變化是否符合設(shè)計(jì)標(biāo)準(zhǔn)。在試驗(yàn)箱上八個(gè)數(shù)碼管從左至右分別顯示的是:等待時(shí)間的十位、等待時(shí)間的個(gè)位、里程的十位、里程的個(gè)位、里程的十分位、費(fèi)用的十位、費(fèi)用的個(gè)位、費(fèi)用的十分位。5.2.1 顯示結(jié)果的幾種情況
圖5-2 驗(yàn)證結(jié)果1 圖5-2表示出租車等待了1分鐘,行駛了3.9公里,即時(shí)車費(fèi)為6.0元。根據(jù)設(shè)計(jì)要求計(jì)算所得費(fèi)用為:5元+(3.9-3)公里×1元/公里+1分鐘×0.1元/分鐘=6.0元,計(jì)算結(jié)果與試驗(yàn)箱上所得顯示結(jié)果相同。
圖5-3 驗(yàn)證結(jié)果2
出租車自動計(jì)費(fèi)器設(shè)計(jì)
圖5-3表示出租車等待了3分鐘,行駛了6.8公里,即時(shí)車費(fèi)為9.1元。根據(jù)設(shè)計(jì)要求計(jì)算所得費(fèi)用為:5元+(6.8-3)公里×1元/公里+3分鐘×0.1元/分鐘=9.1元,計(jì)算結(jié)果與試驗(yàn)箱上所得顯示結(jié)果相同。
在試驗(yàn)箱驗(yàn)證過程中,我們可以看到,八位數(shù)碼管的右三位顯示起步價(jià)05.0,中間三個(gè)數(shù)碼管在以0.1為步長進(jìn)行加法顯示行駛里程,當(dāng)行駛里程超過3公里之后,每0.1公里計(jì)費(fèi)金額加0.1元,當(dāng)我們按下等待暫停鍵,每分鐘左邊兩個(gè)數(shù)碼管加1,其顯示的等待時(shí)間,當(dāng)?shù)却龝r(shí)間到1分鐘時(shí),計(jì)費(fèi)金額加0.1元,由此我們可以判斷,系統(tǒng)設(shè)計(jì)符合要求。5.2.2 硬件實(shí)現(xiàn)總結(jié)
通過對每一模塊的仿真和下載,可以實(shí)現(xiàn)各個(gè)模塊的邏輯功能,驗(yàn)證了各個(gè)模塊的正確性。在出租車計(jì)費(fèi)系統(tǒng)的4個(gè)模塊中,重點(diǎn)在于計(jì)量模塊(JILIANG),計(jì)費(fèi)模塊(JIFEI),顯示控制模塊(SELTIME),譯碼顯示模塊(DELED)。JILIANG模塊主要有汽車的開始、運(yùn)行、暫停,JILIANG模塊主要記錄出租車的行駛里程和等待時(shí)間,并將等待時(shí)間計(jì)費(fèi)脈沖和行駛里程計(jì)費(fèi)脈沖送入JIFEI模塊;JIFEI模塊主要是完成起步價(jià)計(jì)費(fèi)、等待時(shí)間計(jì)費(fèi)、行駛里程計(jì)費(fèi),并完成總費(fèi)用;SELTIME模塊起顯示控制作用,控制等待時(shí)間、行駛里程、費(fèi)用在八個(gè)數(shù)碼管上的位置。DELED模塊是把送入的每個(gè)四位數(shù)據(jù)轉(zhuǎn)換為7段碼,從而能在數(shù)碼管上正確的顯示。這四個(gè)模塊的組合成完整的出租車系統(tǒng),在設(shè)計(jì)過程中還需要改進(jìn)的是控制出租車計(jì)費(fèi)系統(tǒng)的控制功能。
出租車計(jì)費(fèi)器系統(tǒng)的設(shè)計(jì)已全部完成,能按預(yù)期的效果進(jìn)行模擬汽車開始、啟動、暫停、停止等功能,由數(shù)碼管顯示出租車等待時(shí)間,行駛里程,費(fèi)用。車暫等待時(shí)停止行駛里程計(jì)費(fèi),車費(fèi)僅由等待時(shí)間計(jì)費(fèi);出租車正常行駛時(shí),僅根據(jù)里程收費(fèi)方式。若停止則車費(fèi)清零,等待下一次計(jì)費(fèi)的開始。出租車計(jì)費(fèi)系統(tǒng)的設(shè)計(jì)中體現(xiàn)了VHDL覆蓋面廣,描述能力強(qiáng),是一個(gè)多層次的硬件描述語言本設(shè)計(jì)在實(shí)用方面具有一定的價(jià)值。
該計(jì)費(fèi)器實(shí)現(xiàn)了按預(yù)置參數(shù)自動計(jì)費(fèi)(最大計(jì)費(fèi)金額為99.9元)、自動計(jì)程(最大計(jì)程公里數(shù)為99.9公里)等功能;能夠?qū)崿F(xiàn)起步價(jià)、每公里收費(fèi)、等待時(shí)間計(jì)費(fèi)的參數(shù)預(yù)置(如:起步價(jià)5.0元;3公里后1元每公里;等待時(shí)間0.1元每分鐘),且預(yù)置參數(shù)可調(diào)范圍廣。由于采用CPLD大規(guī)??删幊踢壿嬈骷麢C(jī)功耗小、抗干擾能力強(qiáng)、系統(tǒng)穩(wěn)定、工作可靠、升級方便。
出租車自動計(jì)費(fèi)器設(shè)計(jì) 設(shè)計(jì)體會與總結(jié)
通過這次緊張而又充實(shí)的EDA課程設(shè)計(jì),我感受到了VHDL語言和普通軟件語言之間的區(qū)別,也能夠更加熟練地運(yùn)用VHDL語言進(jìn)行邏輯電路的設(shè)計(jì)了,受益匪淺。我們所做的課題是出租車計(jì)費(fèi)器的設(shè)計(jì)。老師給了我們課程設(shè)計(jì)題目,在這半個(gè)月的實(shí)驗(yàn)操作中,不斷的完善自己的設(shè)計(jì)要求,將自己的想法融入到實(shí)驗(yàn)的程序中去。最終通過仿真達(dá)到了自己預(yù)想的效果。有種先苦后甜的成就感。
同時(shí)在本次試驗(yàn)中,我們熟練的掌握了Quartus II軟件的使用。學(xué)會了如何把自己所設(shè)計(jì)的程序,通過軟件用波形仿真出來,再通過試驗(yàn)箱仿真出來。
在這次課程設(shè)計(jì)過程中,要感謝陳老師在課程設(shè)計(jì)上給予我的幫助,提供給我的支持與建議,特別是幫助我解決了我半個(gè)月來一直遇到的運(yùn)行程序警告多的問題,這是我能順利完成這次報(bào)告的主要原因,讓我能把課程設(shè)計(jì)做得更加完善。在此期間,我不僅學(xué)到了許多新知識,而且也開闊了視野,提高了自己的設(shè)計(jì)能力。其次,我要感謝幫助過我的同學(xué)們,他們也為我解決了不少難題。這些東西是無法再平時(shí)上課的過程中學(xué)到的,實(shí)踐出真知,只有在實(shí)驗(yàn)中我們才能更好的學(xué)到東西,不用紙上談兵,做無用功。
出租車自動計(jì)費(fèi)器設(shè)計(jì)
參考文獻(xiàn)
[1] 徐飛.EDA技術(shù)與實(shí)踐[M].北京:清華大學(xué)出版社,2011.[2] 王行,李衍.EDA技術(shù)入門與提高[M].西安:西安電子科技大學(xué)出版社,2005.[3] 劉昌華.數(shù)字邏輯EDA設(shè)計(jì)與實(shí)踐[M].北京:國防工業(yè)出版社,2011.[4] 李蓉.基于VHDL語言的出租車自動計(jì)費(fèi)器的設(shè)計(jì)[J].科技風(fēng),2008,24:33.出租車自動計(jì)費(fèi)器設(shè)計(jì)
附 錄 JILIANG模塊的VHDL編程
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY JILIANG IS PORT(CLK,CLK1 : IN STD_LOGIC;START : IN STD_LOGIC;DRIVE : IN STD_LOGIC;BREAK : IN STD_LOGIC;B1,B2 : OUT STD_LOGIC;KM2,KM1,KM0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);MIN1,MIN0 : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END JILIANG;
ARCHITECTURE BEHAVE OF JILIANG IS SIGNAL R1:INTEGER RANGE 0 TO 9;SIGNAL K:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL K2,K1,K0 :STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL W1:INTEGER RANGE 0 TO 59;SIGNAL M1:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL M0:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN RUN:PROCESS(CLK1,DRIVE,BREAK,K0,K1,K2)BEGIN IF START='1' THEN IF DRIVE='0' THEN K0<=“0000”;K1<=“0000”;K2<=“0000”;R1<=0;ELSIF CLK1'EVENT AND CLK1='1' THEN IF DRIVE='1'AND BREAK='0' THEN IF R1=9 THEN R1<=0;IF K0=“1001” THEN K0<=“0000”;k1<=k1+1;
IF K1=“1001” THEN K1<=“0000”;k2<=k2+1;
IF K2=“1001” THEN K2<=“0000”;ELSE K2<=K2+1;
END IF;ELSE K1<=K1+1;END IF;
出租車自動計(jì)費(fèi)器設(shè)計(jì)
ELSE K0<=K0+1;END IF;ELSE R1<=R1+1;B1<='0';END IF;K<=K2&K1;IF K>“00000010” THEN
IF R1<9 THEN R1<=R1+1;B1<='0';
ELSE R1<=0;B1<='1';
END IF;END IF;END IF;END IF;ELSE K0<=“0000”;K1<=“0000”;K2<=“0000”;END IF;KM0<=K0;KM1<=K1;KM2<=K2;END PROCESS;
PAUSE:PROCESS(CLK,DRIVE,BREAK,M0,M1)BEGIN IF START='1' THEN IF DRIVE='0' THEN M0<=“0000”;M1<=“0000”;W1<=0;ELSIF CLK'EVENT AND CLK='1' THEN IF DRIVE='1' AND BREAK='1'THEN IF W1=59 THEN W1<=0;B2<='1';
IF M0=“1001”THEN M0<=“0000”;M1<=M1+1;
IF M1=“1001”THEN M1<=“0000”;
ELSE M1<=M1+1;
END IF;ELSE M0<=M0+1;END IF;ELSE W1<=W1+1;B2<='0';END IF;END IF;END IF;ELSE M0<=“0000”;M1<=“0000”;END IF;MIN0<=M0;MIN1<=M1;END PROCESS;END ARCHITECTURE;
出租車自動計(jì)費(fèi)器設(shè)計(jì) JIFEI模塊的VHDL編程
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JIFEI IS PORT(B :IN STD_LOGIC;START:IN STD_LOGIC;DRIVE:IN STD_LOGIC;CH2,CH1,CH0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END JIFEI;ARCHITECTURE BEHAVE OF JIFEI IS SIGNAL C2,C1,C0:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(B,DRIVE,C0,C1,C2)BEGIN IF DRIVE='0' THEN C0<=“0000”;C1<=“0101”;C2<=“0000”;ELSIF DRIVE='1' THEN IF B'EVENT AND B='1' THEN
IF C0=“1001” THEN C0<=“0000”;
IF C1=“1001”THEN C1<=“0000”;
IF C2=“1001”THEN C2<=“0000”;
ELSE C2<=C2+1;
END IF;
ELSE C1<=C1+1;
END IF;
ELSE C0<=C0+1;
END IF;END IF;END IF;ELSE C0<=“0000”;C1<=“0000”;C2<=“0000”;END IF;CH0<=C0;CH1<=C1;CH2<=C2;END PROCESS;END;
出租車自動計(jì)費(fèi)器設(shè)計(jì) SELTIME控制模塊的VHDL編程
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
entity seltime is port(clk : in std_logic;CH2,CH1,CH0 : in std_logic_vector(3 downto 0);KM2,KM1,KM0 : in std_logic_vector(3 downto 0);MIN1,MIN0 : in std_logic_vector(3 downto 0);dp : OUT STD_LOGIC;daout : out std_logic_vector(3 downto 0);sel : out std_logic_vector(2 downto 0));end seltime;
architecture behav of seltime is signal sec : std_logic_vector(2 downto 0);begin process(clk)begin if(clk'event and clk='1')then
if(sec=“111”)then sec<=“000”;else sec<=sec+1;end if;end if;end process;process(sec,MIN1,MIN0,CH2,CH1,CH0,KM2,KM1,KM0)begin case sec is when “000”=>daout<=CH0(3 downto 0);dp<='0';when “001”=>daout<=CH1(3 downto 0);dp<='1';when “010”=>daout<=CH2(3 downto 0);dp<='0';when “011”=>daout<=KM0(3 downto 0);dp<='0';when “100”=>daout<=KM1(3 downto 0);dp<='1';when “101”=>daout<=KM2(3 downto 0);dp<='0';when “110”=>daout<=MIN0(3 downto 0);dp<='0';
when “111”=>daout<=MIN1(3 downto 0);dp<='0';when others=>daout<=“XXXX”;end case;end process;
出租車自動計(jì)費(fèi)器設(shè)計(jì)
sel<=sec;end behav;DELED模塊的VHDL編程
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DELED IS PORT(DP: IN STD_LOGIC;S: IN STD_LOGIC_VECTOR(3 DOWNTO 0);A,B,C,D,E,F,G,H: OUT STD_LOGIC);END DELED;
ARCHITECTURE BEHAV OF DELED IS SIGNAL DATA : STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DOUT : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN DATA<=S;PROCESS(DATA,DP)BEGIN IF DP='0' THEN
CASE DATA IS
WHEN “0000”=>DOUT<=“00111111”;
WHEN “0001”=>DOUT<=“00000110”;
WHEN “0010”=>DOUT<=“01011011”;
WHEN “0011”=>DOUT<=“01001111”;
WHEN “0100”=>DOUT<=“01100110”;
WHEN “0101”=>DOUT<=“01101101”;
WHEN “0110”=>DOUT<=“01111101”;
WHEN “0111”=>DOUT<=“00000111”;
WHEN “1000”=>DOUT<=“01111111”;
WHEN “1001”=>DOUT<=“01101111”;
WHEN OTHERS=>DOUT<=“00000000”;
END CASE;ELSE
CASE DATA IS
WHEN “0000”=>DOUT<=“10111111”;
WHEN “0001”=>DOUT<=“10000110”;
WHEN “0010”=>DOUT<=“11011011”;
WHEN “0011”=>DOUT<=“11001111”;
WHEN “0100”=>DOUT<=“11100110”;
WHEN “0101”=>DOUT<=“11101101”;
出租車自動計(jì)費(fèi)器設(shè)計(jì)
WHEN “0110”=>DOUT<=“11111101”;
WHEN “0111”=>DOUT<=“10000111”;
WHEN “1000”=>DOUT<=“11111111”;
WHEN “1001”=>DOUT<=“11101111”;
WHEN OTHERS=>DOUT<=“10000000”;
END CASE;END IF;END PROCESS;H<=DOUT(7);G<=DOUT(6);F<=DOUT(5);E<=DOUT(4);D<=DOUT(3);C<=DOUT(2);B<=DOUT(1);A<=DOUT(0);END BEHAV;
第四篇:微機(jī)原理課程設(shè)計(jì)——洗衣機(jī)控制系統(tǒng)
微機(jī)原理與接口技術(shù)課程設(shè)計(jì)
設(shè)計(jì)題目:設(shè)計(jì)者:專業(yè) : 班級 : 學(xué)號 :
洗衣機(jī)控制系統(tǒng)設(shè)計(jì)
電氣工程及其自動化 1
一
課程設(shè)計(jì)的意義
1.1 洗衣機(jī)的發(fā)展?fàn)顩r概述
1.洗衣機(jī)的發(fā)展史
洗衣服是每個(gè)家庭都無法逃避的家庭勞動。洗衣機(jī)的出現(xiàn)給人們的生活帶來了相當(dāng)大的方便,它的普及大大降低了大多數(shù)家庭的體力勞作。
1858年,美國人漢密爾頓·史密斯制成了第一臺洗衣機(jī)。1874年,美國人比爾·布萊克斯發(fā)明了第一臺人工攪動式洗衣機(jī),使得“手洗時(shí)代”受到了挑戰(zhàn)。1910年美國人研制出了第一臺電動式洗衣機(jī)。1922年美國瑪塔依格公司生產(chǎn)出了第一臺攪拌式洗衣機(jī)。1932年美德克斯航空公司研制成功了第一臺前裝式滾筒式洗衣機(jī),這臺機(jī)衣機(jī)能夠使洗滌、漂洗、脫水三個(gè)步驟在同一個(gè)滾中操作。與此同時(shí),世界各地也相繼出現(xiàn)了洗衣機(jī)。洗衣機(jī)工業(yè)快速迅猛地發(fā)展起來。
1937年第一臺自動洗衣機(jī)問世。1955年日本研制出波輪式洗衣機(jī)。60年代日本出現(xiàn)了半自動洗衣機(jī)。70年代生產(chǎn)出了波輪式套桶全自動洗衣機(jī)。70年代后期以電腦控制的全自動洗衣機(jī)在日本問世。80年代“模糊控制”開始應(yīng)用于洗衣機(jī)中,使得洗衣機(jī)能夠通過模糊控制使洗衣機(jī)操作更加簡單,實(shí)現(xiàn)智能化。近半個(gè)多世紀(jì)里,在工業(yè)發(fā)達(dá)國家,全自動洗衣機(jī)技術(shù)得到廣范的應(yīng)用,其年總產(chǎn)量及社會普及率均以達(dá)到相當(dāng)高的水平。
2.我國洗衣機(jī)的發(fā)展現(xiàn)狀
洗衣機(jī)在中國起步較晚,1978年才開始正式生產(chǎn)家用洗衣機(jī)。隨著改革開放的不斷深入,經(jīng)濟(jì)的持續(xù)增長,人民生活水平的普遍提高,人們對于洗衣機(jī)的認(rèn)識也在不斷發(fā)展,進(jìn)入80年代后,中國洗衣機(jī)行業(yè)一直保持著旺盛的發(fā)展形勢。目前,洗衣機(jī)在我國城市甚至廣大農(nóng)村已得到大范圍的普及。中國洗衣機(jī)市場正處于快速更新?lián)Q代階段,市場潛力巨大,隨著家用電器的自動化、智能化發(fā)展,人們對于洗衣機(jī)的期望也越來越高。1983年,中國洗衣機(jī)產(chǎn)量由1978年的400臺增至365萬臺。此后全國各處都大規(guī)模的引進(jìn)國外先進(jìn)洗衣機(jī)技術(shù)。中國的洗衣機(jī)發(fā)展突飛猛進(jìn),先進(jìn)技術(shù)的引進(jìn)、吸收和創(chuàng)新,極大地促進(jìn)了中國洗衣機(jī)的生產(chǎn)能力和產(chǎn)業(yè)質(zhì)量。經(jīng)過三十年的發(fā)展,我國的洗衣機(jī)年產(chǎn)量已位于世界第一,將近為世界總年產(chǎn)量的四分之一。
1.2課程設(shè)計(jì)的意義
課程設(shè)計(jì)進(jìn)一步鍛煉同學(xué)們在微機(jī)原理應(yīng)用方面的實(shí)際工作能力。計(jì)算機(jī)科學(xué)在應(yīng)用上得到飛速發(fā)展,因此,學(xué)習(xí)這方面的知識必須緊密聯(lián)系實(shí)際:掌握這方面的知識更要強(qiáng)調(diào)解決實(shí)際問題的能力。學(xué)會面對一個(gè)實(shí)際問題,如何去自己收集資料,如何自己去學(xué)習(xí)新的知識,如何自己去制定解決問題的方案并通過實(shí)踐不斷地去分析和解決前進(jìn)道路上的問題?!段C(jī)原理與接口技術(shù)》課程是我們電氣工程及其自動化專業(yè)本科生必修的一門技術(shù)基礎(chǔ)課程。通過該課程的學(xué)習(xí)使學(xué)生對微機(jī)系統(tǒng)有一個(gè)全面的了解、掌握常規(guī)芯片的使用方法、掌握簡單微型計(jì)算機(jī)應(yīng)用系統(tǒng)軟硬的設(shè)計(jì)方法。
二
洗衣機(jī)控制系統(tǒng)的設(shè)計(jì)
2.1 設(shè)計(jì)內(nèi)容
系統(tǒng)設(shè)計(jì)并建立一個(gè)由微機(jī)控制的洗衣機(jī)控制系統(tǒng),并完成: 1.給水和排水的自動控制。2.用戶定時(shí)時(shí)間的設(shè)定。3.電機(jī)的正反轉(zhuǎn)。
4.各種定時(shí)和故障報(bào)警電路。5.定時(shí)開、關(guān)機(jī)的控制。6.三分鐘延時(shí)啟動的保護(hù)。
7.設(shè)計(jì)相應(yīng)的A/D、D/A、鍵盤、顯示接口和傳感器測量水位電路,可在線鍵盤參數(shù)設(shè)置、定時(shí)檢測、顯示、報(bào)警,其中控制輸出部分采用模擬量或開關(guān)量進(jìn)行控制。
8,寫出相應(yīng)工作原理,編寫程序及程序流程圖。
希望實(shí)現(xiàn)的功能:智能檢測
待洗衣物的智能檢測是智能洗衣機(jī)能夠?qū)崿F(xiàn)智能的關(guān)鍵技術(shù)之一。智能檢測利用了模糊控制原理,根據(jù)各類傳感器提供的洗滌物狀態(tài)和洗衣機(jī)運(yùn)行參數(shù)進(jìn)行模糊推理。通過各類傳感器對布量、布質(zhì)、溫度、濁度的檢測來確定洗滌過程中的洗滌水位,洗滌時(shí)間,漂洗次數(shù),排水時(shí)間,脫水時(shí)間等等。三
總體設(shè)計(jì)方案
3.1 洗衣機(jī)系統(tǒng)原理與設(shè)計(jì)思想
圖 1洗衣機(jī)示意圖
洗衣機(jī)的系統(tǒng)(1).滌脫水系統(tǒng)
它主要有盛水桶,洗滌桶和波輪組成。盛水桶又稱為外桶,主要用來盛放洗滌液。盛水桶固定在鋼制底板上,通過4根吊桿懸掛在洗衣機(jī)箱體上。電動機(jī),離合器,排水閥等部件都裝在桶底下面。洗滌桶又稱為脫水桶或者離心桶,也稱為內(nèi)桶,它的主要功能是用來盛放衣物,在洗滌或漂洗時(shí)配合波輪完成洗滌或漂洗功能,在脫水時(shí)便成為離心式的脫水桶。波輪是全自動洗衣機(jī)中對衣物產(chǎn)生機(jī)械作用的主要部件。按波輪的形狀來分,基本上有小波輪(直徑在160mm左右)的渦卷式水流和大波輪(直徑在300mm左右)新水流兩類。
(2).進(jìn)水系統(tǒng)
波輪式全自動洗衣機(jī)的進(jìn)排水系統(tǒng)都采用了電磁閥控制。為了對桶內(nèi)的水位進(jìn)行檢測和控制,洗衣機(jī)上都安裝有水位控制器(水位開關(guān))。波輪式全自動套桶洗衣機(jī)使用最多的水位開關(guān)是空氣壓力式開關(guān),主要有氣壓傳感器裝置,控制裝置及電觸點(diǎn)開關(guān)3部分組成,用來監(jiān)視水位的高低。此外電磁閥分進(jìn)水和排水電磁閥,進(jìn)水電磁閥是洗衣機(jī)上的自動進(jìn)水開關(guān),它受水位開關(guān)動斷觸點(diǎn)的控制。而排水電磁閥是全自動洗衣機(jī)上的自動排水裝置,同時(shí)還起改變離合器工作狀態(tài)。進(jìn)水、排水電磁閥是采用電流流過線圈形成磁場的原理,洗衣機(jī)電磁閥在進(jìn),排水時(shí)使用,220V交流電壓與電磁閥線圈接通,形成磁場,電磁線圈吸合。自
動打開香蕉閥門,洗衣機(jī)里的水就順著管道流出去了。斷電后,電磁閥線圈失去電流,磁場消失,電磁鐵松開,橡膠閥門自動關(guān)閉,洗衣機(jī)里的水就流不出去了。
(3).動機(jī)及傳動系統(tǒng)
波輪式全自動套桶洗衣機(jī)的電動機(jī)及傳動系統(tǒng)主要由電動機(jī)和離合器組成,離合器又有普通離合器和減速離合器兩種。其中普通離合器用在采用小波輪的套桶洗衣機(jī)上,這種洗衣機(jī)在洗滌或者漂洗時(shí)波輪的轉(zhuǎn)速和脫水時(shí)離心桶的轉(zhuǎn)速相同,目前各種大波輪新水流套桶洗衣機(jī)普遍采用減速離合器,它在洗滌,漂洗時(shí)波輪的轉(zhuǎn)速較慢,而脫水時(shí)離心桶的轉(zhuǎn)速較快。電動機(jī)同時(shí)作為洗滌和脫水時(shí)的動力源,普遍采用主,副繞組完全對稱的電容式電動機(jī)。
洗衣機(jī)的基本工作原理
洗衣機(jī)的洗滌原理是由模擬人工洗滌衣物發(fā)展而來的,即通過翻滾、摩擦、水的沖刷等機(jī)械作用以及洗滌劑的表面活化作用,將附著在衣物上的污垢除掉,以達(dá)到洗凈衣物的目的。現(xiàn)今,大多數(shù)的全自動洗衣機(jī)都使用以單片機(jī)為核心的控制電路來控制電動機(jī)、數(shù)碼顯示管、進(jìn)水閥、排水閥及蜂鳴器的電壓輸出,使洗衣機(jī)根據(jù)程序運(yùn)轉(zhuǎn)。而在設(shè)計(jì)全自動洗衣機(jī)的控制系統(tǒng)時(shí),要把握好洗滌、漂洗和脫水的時(shí)間:
(1).洗滌時(shí)間
有人認(rèn)為,洗滌時(shí)間越長,衣物就洗得越干凈。其實(shí)不然,如果洗滌時(shí)間超過一定的限度,衣物不但不會隨洗滌時(shí)間的延長而提高洗凈度,反而會加速衣物的磨損,還會造成能源的浪費(fèi)。實(shí)驗(yàn)證明,洗衣機(jī)(波輪式洗衣機(jī))的最佳洗滌時(shí)間為5~10分鐘,最長也不應(yīng)超過15分鐘。
(2).漂洗時(shí)間
在漂洗剛開始的3分鐘時(shí)間內(nèi),殘留在衣物上的表面活性劑脫落最快。此后,活性劑脫落趨緩,漂洗10分鐘后活性劑幾乎不再脫落。一般采用貯水方式漂洗,每次3分鐘,漂洗2~3次就可以了。
(3).脫水時(shí)間
電動機(jī)高速地轉(zhuǎn)動洗滌桶,水份就會由于離心力而脫離衣物被甩出去。脫水時(shí)間一般為2~3分鐘,時(shí)間太短會造成脫水不夠徹底,太長又可能會損壞衣物。
總體設(shè)計(jì)思想
首先構(gòu)思系統(tǒng)的總體結(jié)構(gòu),根據(jù)設(shè)計(jì)要求確定好系統(tǒng)大致的硬件組成及其結(jié)構(gòu),其次根據(jù)系統(tǒng)的各個(gè)功能把軟件分為幾個(gè)不同的模塊。依次實(shí)現(xiàn)各個(gè)模塊的功能,最后把各個(gè)模塊組合起來已完成整個(gè)系統(tǒng)的功能。3.2 洗衣過程流程圖
3.3 設(shè)計(jì)流程圖
弄清系統(tǒng)的需求根據(jù)系統(tǒng)的需求設(shè)計(jì)出相應(yīng)的硬件電路在確定系統(tǒng)硬件結(jié)構(gòu)的基礎(chǔ)上,把軟件劃分為各個(gè)模塊調(diào)試各個(gè)模塊,并組成一個(gè)完整的系統(tǒng)
四
硬件設(shè)計(jì)
4.1 硬件設(shè)計(jì)概要
用Intel的8086作為控制芯片,配合其他接口電路及配套的芯片組成洗衣機(jī)的控制電路。主要用到8255串行通行芯片,74LS137三線八線譯碼器發(fā)出片選信號,AD0809以及DA0832模數(shù)、數(shù)模轉(zhuǎn)換芯片。用一個(gè)電位計(jì)和AD0809模擬水量信號,DA0832和LM324運(yùn)放最和來控制直流電機(jī)的正反轉(zhuǎn)和停止。此外還用到了4*4掃描鍵盤作為輸入設(shè)備,兩個(gè)共陰數(shù)碼管作為顯示設(shè)備。詳情見各個(gè)芯片的介紹。
4.2 所用到的芯片及其各自功能說明 4.2.1芯片列表
8086,8284,74LS138,8255,AD0809,DA0832,74LS02,LM324 4.2.2 8086的功能簡介
Intel 8086是一個(gè)由Intel于1978年所設(shè)計(jì)的16位微處理器芯片,是x86架構(gòu)的鼻祖。不久,Intel 8088就推出了,擁有一個(gè)外部的8位數(shù)據(jù)總線,允許便宜的芯片用途。它是以8080和8085(它與8080有組合語言上的原始碼兼容性)的設(shè)計(jì)為基礎(chǔ),擁有類似的寄存器組,但是數(shù)據(jù)總線擴(kuò)充為16位??偩€界面單元(Bus Interface Unit)透過6字節(jié)預(yù)存(prefecth)的隊(duì)列(queue)喂指令給執(zhí)行單元(Execution Unit),所以取指令和執(zhí)行是同步的,8086 CPU有20條地址線,可直接尋址1MB的存儲空間,每一個(gè)存儲單元可以存放一個(gè)字節(jié)(8位)二進(jìn)制信息。為了便于對存儲器進(jìn)行存取操作,每一個(gè)存儲單元都有一個(gè)惟一的地址與之對應(yīng),其地址范圍用十進(jìn)制表示為0~1048575,用十六進(jìn)制表示為00000H~FFFFFH。
Intel 8086擁有四個(gè)16位的通用寄存器,也能夠當(dāng)作八個(gè)8位寄存器來存取,以及四個(gè)16位索引寄存器(包含了堆棧指標(biāo))。資料寄存器通常由指令隱含地使用,針對暫存值需要復(fù)雜的寄存器配置。它提供64K 8 位元的輸出輸入(或32K 16 位元),以及固定的向量中斷。大部分的指令只能夠存取一個(gè)內(nèi)存位址,所以其中一個(gè)操作數(shù)必須是一個(gè)寄存器。運(yùn)算結(jié)果會儲存在操作數(shù)中的一個(gè)。
Intel 8086有四個(gè) 內(nèi)存區(qū)段(segment)寄存器,可以從索引寄存器來設(shè)定。區(qū)段寄存器可以讓 CPU 利用特殊的方式存取1 MB內(nèi)存。8086 把段地址左移 4 位然后把它加上偏移地址。大部分的人都認(rèn)為這是一個(gè)很不好的設(shè)計(jì),因?yàn)檫@樣的結(jié)果是會讓各分段有重疊。盡管這樣對組合語言而言大部分被接受(也甚至有
用),可以完全地控制分段,使在編程中使用指針(如C 編程語言)變得困難。它導(dǎo)致指針的高效率表示變得困難,且有可能產(chǎn)生兩個(gè)指向同一個(gè)地方的指針擁有不同的地址。更壞的是,這種方式產(chǎn)生要讓內(nèi)存擴(kuò)充到大于 1 MB 的困難。而 8086 的尋址方式改變讓內(nèi)存擴(kuò)充較有效率。
在這個(gè)系統(tǒng)中,8086作為整個(gè)系統(tǒng)的主控芯片,用來控制協(xié)調(diào)整個(gè)系統(tǒng)的工作。
4.2.3
8284的功能簡介
向8086CPU提供外部的基準(zhǔn)時(shí)鐘信號,并把時(shí)鐘信號進(jìn)行功率放大。
4.2.3 74LS138的功能簡介
74LS138 為3 線-8 線譯碼器,共有 54/74S138和 54/74LS138 兩種線路結(jié)構(gòu)型式,其工作原理如下:
當(dāng)一個(gè)選通端(E3)為高電平,另兩個(gè)選通端(E1)和/(E2))為低電平時(shí),可將地址端(A、B、C)的二進(jìn)制編碼在一個(gè)對應(yīng)的輸出端以低電譯出。
利用 E1、E2和E3可級聯(lián)擴(kuò)展成 24 線譯碼器;若外接一個(gè)反相器還可級聯(lián)擴(kuò)展成 32 線譯碼器。
若將選通端中的一個(gè)作為數(shù)據(jù)輸入端時(shí),74LS138還可作數(shù)據(jù)分配器,在該系統(tǒng)中,74LS138用來產(chǎn)生各芯片的片選信號。
4.2.4 8255的功能簡介
8255特性
(1)一個(gè)并行輸入/輸出的LSI芯片,多功能的I/O器件,可作為CPU總線與外圍的接口.(2)具有24個(gè)可編程設(shè)置的I/O口,即使3組8位的I/O口為PA口,PB口和PC口.它們又可分為兩組12位的I/O口,A組包括A口及C口(高4位,PC4~PC7),B組包括B口及C口(低4位,PC0~PC3).A組可設(shè)置為基本的I/O口,閃控(STROBE)的I/O閃控式,雙向I/O3種模式;B組只能設(shè)置為基本I/O或閃控式I/O兩種模式,而這些操作模式完全由控制寄存器的控制字決定.8255引腳功能
RESET:復(fù)位輸入線,當(dāng)該輸入端處于高電平時(shí),所有內(nèi)部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成輸入方式。
CS:芯片選擇信號線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/CS=0時(shí),表示芯片被選中,允許8255與CPU進(jìn)行通訊;/CS=1時(shí),8255無法與CPU做數(shù)據(jù)傳輸.RD:讀信號線,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/RD=0且/CS=0時(shí),允許8255通過數(shù)據(jù)總線向CPU發(fā)送數(shù)據(jù)或狀態(tài)信息,即CPU從8255讀取信息或數(shù)據(jù)。
WR:寫入信號,當(dāng)這個(gè)輸入引腳為低電平時(shí),即/WR=0且/CS=0時(shí),允許CPU將數(shù)據(jù)或控制字寫入8255。
D0~D7:三態(tài)雙向數(shù)據(jù)總線,8255與CPU數(shù)據(jù)傳送的通道,當(dāng)CPU 執(zhí)行
輸入輸出指令時(shí),通過它實(shí)現(xiàn)8位數(shù)據(jù)的讀/寫操作,控制字和狀態(tài)信息也通過數(shù)據(jù)總線傳送。
PA0~PA7:端口A輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器,一個(gè)8位的數(shù)據(jù)輸入鎖存器。
PB0~PB7:端口B輸入輸出線,一個(gè)8位的I/O鎖存器,一個(gè)8位的輸入輸出緩沖器。
PC0~PC7:端口C輸入輸出線,一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器,一個(gè)8位的數(shù)據(jù)輸入緩沖器。端口C可以通過工作方式設(shè)定而分成2個(gè)4位的端口,每個(gè)4位的端口包含一個(gè)4位的鎖存器,分別與端口A和端口B配合使用,可作為控制信號輸出或狀態(tài)信號輸入端口。'
A0,A1:地址選擇線,用來選擇8255的PA口,PB口,PC口和控制寄存器.當(dāng)A0=0,A1=0時(shí),PA口被選擇;
當(dāng)A0=0,A1=1時(shí),PB口被選擇;
當(dāng)A0=1,A1=0時(shí),PC口被選擇;當(dāng)A0=1.A1=1時(shí),控制寄存器被選擇
4.2.5 AD0809的功能簡介
1、ADC0809 是8 位逐次逼近型A/D轉(zhuǎn)換器。它由一個(gè)8路模擬開關(guān)、一個(gè)地址鎖存譯碼器、一個(gè)A/D 轉(zhuǎn)換器和一個(gè)三態(tài)輸出鎖存器組成(見圖1)。多路開關(guān)可選通8個(gè)模擬通道,允許8 路模擬量分時(shí)輸入,共用A/D 轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。三態(tài)輸出鎖器用于鎖存A/D 轉(zhuǎn)換完的數(shù)字量,當(dāng)OE 端為高電平時(shí),才可以從三態(tài)輸出鎖存器取走轉(zhuǎn)換完的數(shù)據(jù)。
2、AD0809 的工作原理
IN0-IN7:8 條模擬量輸入通道
ADC0809 對輸入模擬量要求:信號單極性,電壓范圍是0-5V,若信號太小,必須進(jìn)行放大;輸入的模擬量在轉(zhuǎn)換過程中應(yīng)該保持不變,如若模擬量變化太快,則需在輸入前增加采樣保持電路。
地址輸入和控制線:4條
ALE 為地址鎖存允許輸入線,高電平有效。當(dāng)ALE線為高電平時(shí),地址鎖存與譯碼器將A,B,C 三條地址線的地址信號進(jìn)行鎖存,經(jīng)譯碼后被選中的通道的模擬量進(jìn)轉(zhuǎn)換器進(jìn)行轉(zhuǎn)換。A,B 和C 為地址輸入線,用于選通IN0-IN7 上的一路模擬量輸入。通道選擇表如下表所示。
C B A 選擇的通道
0 0 0 IN0
0 0 1 IN1
0 1 0 IN2
0 1 1 IN3 0 0 IN4 0 1 IN5 1 0 IN6 1 1 IN7
數(shù)字量輸出及控制線:11 條
ST 為轉(zhuǎn)換啟動信號。當(dāng)ST 上跳沿時(shí),所有內(nèi)部寄存器清零;下跳沿時(shí),開始進(jìn)行A/D 轉(zhuǎn)換;在轉(zhuǎn)換期間,ST 應(yīng)保持低電平。EOC 為轉(zhuǎn)換結(jié)束信號。當(dāng)EOC 為高電平時(shí),表明轉(zhuǎn)換結(jié)束;否則,表明正在進(jìn)行A/D 轉(zhuǎn)換。OE為輸出允許信號,用于控制三條輸出鎖存器向單片機(jī)輸出轉(zhuǎn)換得到的數(shù)據(jù)。OE=1,輸出轉(zhuǎn)換得到的數(shù)據(jù);OE=0,輸出數(shù)據(jù)線呈高阻狀態(tài)。D7-D0 為數(shù)字量輸出線。
CLK為時(shí)鐘輸入信號線。因ADC0809的內(nèi)部沒有時(shí)鐘電路,所需時(shí)鐘信號必須由外界提供,通常使用頻率為500KHZ,VREF(+),VREF(-)為參考電壓輸入。
4.2.6 DA0832芯片的功能簡介
DAC0832是8分辨率的D/A轉(zhuǎn)換集成芯片。與微處理器完全兼容。這個(gè)DA芯片以其價(jià)格低廉、接口簡單、轉(zhuǎn)換控制容易等優(yōu)點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中得到廣泛的應(yīng)用。D/A轉(zhuǎn)換器由8位輸入鎖存器、8位DAC寄存器、8位D/A轉(zhuǎn)換電路及轉(zhuǎn)換控制電路構(gòu)成。
DAC0832的主要特性參數(shù)如下:
分辨率為8位;
電流穩(wěn)定時(shí)間1us;
可單緩沖、雙緩沖或直接數(shù)字輸入;
只需在滿量程下調(diào)整其線性度;
單一電源供電(+5V~+15V);
低功耗,200mW。DAC0832結(jié)構(gòu):
D0~D7:8位數(shù)據(jù)輸入線,TTL電平,有效時(shí)間應(yīng)大于90ns(否則鎖存器的數(shù)據(jù)會出錯(cuò));
ILE:數(shù)據(jù)鎖存允許控制信號輸入線,高電平有效;
CS:片選信號輸入線(選通數(shù)據(jù)鎖存器),低電平有效;
WR1:數(shù)據(jù)鎖存器寫選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由ILE、CS、WR1的邏輯組合產(chǎn)生LE1,當(dāng)LE1為高電平時(shí),數(shù)據(jù)鎖存器狀態(tài)隨輸入數(shù)據(jù)線變換,LE1的負(fù)跳變時(shí)將輸入數(shù)據(jù)鎖存;
XFER:數(shù)據(jù)傳輸控制信號輸入線,低電平有效,負(fù)脈沖(脈寬應(yīng)大于500ns)有效;
WR2:DAC寄存器選通輸入線,負(fù)脈沖(脈寬應(yīng)大于500ns)有效。由WR1、XFER的邏輯組合產(chǎn)生LE2,當(dāng)LE2為高電平時(shí),DAC寄存器的輸出隨寄存器的輸入而變化,LE2的負(fù)跳變時(shí)將數(shù)據(jù)鎖存器的內(nèi)容打入DAC寄存器并開始D/A轉(zhuǎn)換。
IOUT1:電流輸出端1,其值隨DAC寄存器的內(nèi)容線性變化;
IOUT2:電流輸出端2,其值與IOUT1值之和為一常數(shù);
Rfb:反饋信號輸入線,改變Rfb端外接電阻值可調(diào)整轉(zhuǎn)換滿量程精度;
Vcc:電源輸入端,Vcc的范圍為+5V~+15V;
VREF:基準(zhǔn)電壓輸入線,VREF的范圍為-10V~+10V;
AGND:模擬信號地
DGND:數(shù)字信號地 DAC0832的工作方式:
根據(jù)對DAC0832的數(shù)據(jù)鎖存器和DAC寄存器的不同的控制方式,DAC0832有三種工作方式:直通方式、單緩沖方式和雙緩沖方式。
4.2.7 LM324芯片功能簡介
LM324系列器件為價(jià)格便宜的帶有真差動輸入的四運(yùn)算放大器。與單電源應(yīng)用場合的標(biāo)準(zhǔn)運(yùn)算放大器相比,它們有一些顯著優(yōu)點(diǎn)。該四放大器可以工作在低到3.0伏或者高到32伏的電源下,靜態(tài)電流為MC1741的靜態(tài)電流的五分之一。共模輸入范圍包括負(fù)電源,因而消除了在許多應(yīng)用場合中采用外部偏置元件的必要性。每一組運(yùn)算放大器可用圖1所示的符號來表示,它有5個(gè)引出腳,其中“+”、“-”為兩個(gè)信號輸入端,“V+”、“V-”為正、負(fù)電源端,“Vo”為輸出端。兩個(gè)信號輸入端中,Vi-(-)為反相輸入端,表示運(yùn)放輸出端Vo的信號與該輸入端的位相反;Vi+(+)為同相輸入端,表示運(yùn)放輸出端Vo的信號與該輸入端的相位相同。
LM324的引腳排列圖
LM324的特點(diǎn): 1.短跑保護(hù)輸出 2.真差動輸入級
3.可單電源工作:3V-32V 4.低偏置電流:最大100nA 5.每封裝含四個(gè)運(yùn)算放大器。6.具有內(nèi)部補(bǔ)償?shù)墓δ堋?.共模范圍擴(kuò)展到負(fù)電源 8.行業(yè)標(biāo)準(zhǔn)的引腳排列 9.輸入端具有靜電保護(hù)功能 4.3 硬件電路設(shè)計(jì)系統(tǒng)原理圖及其說明
微機(jī)總線擴(kuò)展鍵盤DB譯碼電路并行接口功放電路電機(jī)驅(qū)動電路排水閘驅(qū)動電路進(jìn)水閘驅(qū)動電路AB門開關(guān)定時(shí)器A/D時(shí)鐘電路水位傳感器啟動按鈕及電路IRQiDBIRQjIRQk
圖4.3-1系統(tǒng)總體框架。圖4.3-2系統(tǒng)硬件電路
五
軟件設(shè)計(jì)
5.1 流程圖及其說明
正傳washytpe秒并刷新數(shù)碼管開始判斷按下啟動鍵FalseTure停轉(zhuǎn)5秒秒并刷新數(shù)碼管設(shè)置洗衣方式其他反轉(zhuǎn)washtype秒秒并刷新數(shù)碼管FalseWashtype=151從鍵盤讀一個(gè)數(shù)據(jù)2Washtype=10停轉(zhuǎn)5秒秒并刷新數(shù)碼管修改顯示參數(shù)更新剩余時(shí)間設(shè)置洗衣時(shí)間設(shè)置定時(shí)洗衣時(shí)間判斷到達(dá)定時(shí)時(shí)間TureFalse判斷到達(dá)洗衣時(shí)間TureTure排水并顯示當(dāng)前水量False進(jìn)水打開并顯示當(dāng)前水量False判斷水排干Ture判斷水滿甩干,電機(jī)加速正傳2分鐘漂洗若干次并甩干,流程同上故障 服務(wù)中斷程序有故障標(biāo)志嗎?False結(jié)束,電機(jī)停轉(zhuǎn),三分鐘開機(jī)保護(hù)14
說明:軟件可以分為10大塊,分別為主程序、鍵盤掃描子程序、參數(shù)設(shè)置子程序、延時(shí)子程序、顯示子程序、進(jìn)水子程序、排水子程序、甩干子程序、停止及開機(jī)延時(shí)保護(hù)子程序組成。其中,進(jìn)水、洗衣、排水為一次洗衣的三個(gè)不同狀態(tài),由相應(yīng)的子程序來控制電機(jī)的運(yùn)動和進(jìn)水排水。它們的關(guān)系如圖5.1-2.主程序參數(shù)設(shè)置進(jìn)水洗衣排水甩干停止及開機(jī)保護(hù)鍵盤掃描延時(shí)顯示 圖5.1-2
5.2 源程序及其說明
CODE SEGMENT
ASSUME
CS:CODE
WASHTIME DW
20H
WASHTYPE DW
08H
ONTIME DW
00H
TIME DW
0
ADPORT EQU
0010H
ORG
1000H
IOCONPT EQU
0FF2BH
IOAPT EQU
0FF28H
IOBPT EQU
0FF29H
IOCPT EQU
0FF2AH
ORG
10E0H
DAPORT EQU
0020H
ORG
10A0H
MAIN PROC
;鍵盤參數(shù)設(shè)置
MOV
AL,01H
CALL
CONVERS
CALL
DISP
;顯示01,提示輸入洗衣時(shí)間
CALL
KEY
MOV
DL,10
MUL
DL
MOV
WASHTIME,AX
CALL
KEY
CBW
ADD
WASHTIME,AX
K1: MOV
AL,02
;顯示02;提示選擇洗衣方式
CALL
CONVERS
CALL
DISP
CALL
KEY
CMP
AL,2
JA
K1
CMP
AL,1
JB
K1
CMP
AL,1
JE
RUOXI
CMP
AL,2
JE
QIANGXI
RUOXI: MOV
WASHTYPE,08H
JMP
NEXT
QIANGXI: MOV
WASHTYPE,0FH
NEXT: MOV
AL,03
;顯示3,提示輸入定時(shí)時(shí)間
CALL
CONVERS
CALL
DISP
CALL
KEY
MOV
DL,10
MUL
DL
MOV
ONTIME,AX
CALL
KEY
CBW
ADD
ONTIME,AX
MOV
CX,ONTIME
LOOP
K2
K2: CALL
DELAY
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ADD
AX,WASHTIME
ADD
AX,WASHTIME
ADD
AX,WASHTIME
MOV
TIME,AX
CALL
STEP1
;洗衣
MOV
CX,WASHTIME
LOOP
WASH
CALL
STEP3
CALL
SHUAIGAN
CALL
STEP1
;漂洗
MOV
CX,WASHTIME
LOOP
WASH
CALL
STEP3
CALL
SHUAIGAN
CALL
STEP1
;漂洗
MOV
CX,WASHTIME
LOOP
WASH
CALL
STEP3
CALL
SHUAIGAN
CALL
STOP
;洗衣完成,三分鐘啟動保護(hù)
JMP
MAIN
MAIN ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;WASH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WASH PROC
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
DX,DAPORT
DACON1: MOV
AL,0FFH
OUT
DX,AL
MOV
CX,WASHTYPE
LOOP
W1
W1: CALL
DELAY
DACON2: MOV
AL,80H
OUT
DX,AL
MOV
CX,8H
LOOP
W2
W2: CALL
DELAY
DACON3:
MOV
AL,00H
OUT
DX,AL
MOV
CX,WASHTYPE
LOOP
W3
W3: CALL
DELAY
MOV
AL,80H
OUT
DX,AL
MOV
CX,8H
LOOP
W4
W4: CALL
DELAY
DEC
TIME
MOV
AX,TIME
CALL
CONVERS
CALL
DISP
POP
DX
POP
CX
POP
BX
POP
AX
RET
WASH ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;STEP1;;;;;;;;;;;;;;;;;;;;;;;;
STEP1 PROC
;判斷水位
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
ADCONTORL: CALL
FORMAT
ADCON: MOV
AX,00
MOV
DX,ADPORT
OUT
DX,AL
DELAYS: LOOP
DELAYS
MOV
DX,ADPORT
MOV
DX,ADPORT
IN
AL,DX
PUSH
AX
CALL
CONVERS
CALL
DISP
POP
AX
CMP
AL,0EEH
JAE
LA
CALL
JINSHU
LA: MOV
DX,IOCONPT;水滿,關(guān)水
MOV
AL,89H
OUT
DX,AL
MOV
DX,IOCPT
IN
AL,DX
AND
AL,0FEH
PUSH
AX
MOV
DX,IOCONPT
MOV
AL,80H
OUT
DX,AL
MOV
DX,IOCPT
POP
AX
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
RET
STEP1 ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;JINSHU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JINSHU
PROC
;控制進(jìn)水
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
DX,IOCONPT
MOV
AL,89H
OUT
DX,AL
MOV
DX,IOCPT
IN
AL,DX
OR
AL,01H
PUSH
AX
MOV
DX,IOCONPT
MOV
AL,80H
OUT
DX,AL
MOV
DX,IOCPT
POP
AX
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
JMP
ADCON
JINSHU
ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;XIANSHI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONVERS:
;字符轉(zhuǎn)換
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
AH,AL
AND
AL,0FH
DISP:
DISP0:
DISP1:
MOV
BX,077AH MOV
DS:[BX],AL INC
BX MOV
AL,AH AND
AL,0F0H MOV
CL,04H SHR
AL,CL MOV
DS:[BX],AL POP
DX POP
CX POP
BX POP
AX RET
;顯示 PUSH
AX PUSH
BX PUSH
CX PUSH
DX MOV
DX,077FH MOV
AH,20H MOV
CX,00FFH MOV
BX,DX MOV
BL,DS:[BX] MOV
BH,0H PUSH
DX MOV
DX,0FF22H MOV
AL,CS:[BX+1060H] OUT
DX,AL MOV
DX,0FF21H MOV
AL,AH OUT
DX,AL LOOP
DISP1 POP
DX
DEC
DX
SHR
AH,01H
JNZ
DISP0
MOV
DX,0FF22H
MOV
AL,0FFH
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
RET
DATA1:
0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0AH
DB
86H,8EH,0FFH,0CH,89H,0DEH,0C7H,8CH,0F3H,0BFH
FORMAT:
;顯示初始化
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
BX,0
MOV
WORD PTR DS:[BX+077AH],0000H
ADD
BX,2
MOV
WORD PTR DS:[BX+077AH],0009H
ADD
BX,2
MOV
WORD PTR DS:[BX+077AH],0008H
POP
DX
POP
CX
POP
BX
POP
AX
RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;STEP3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STEP3 PROC
;判斷水是否排干?
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX ADCON1TORL: CALL
FORMAT
ADCON1: MOV
AX,00
MOV
DX,ADPORT
OUT
DX,AL
MOV
CX,0500H
DB
DELAYSS: LOOP
DELAYSS
MOV
DX,ADPORT
IN
AL,DX
PUSH
AX
CALL
CONVERS
CALL
DISP
POP
AX
CMP
AL,08H
JBE
LAA
CALL
PAISHU
LAA: MOV
DX,IOCONPT;排干,停止排水
MOV
AL,89H
OUT
DX,AL
MOV
DX,IOCPT
IN
AL,DX
AND
AL,0FDH
PUSH
AX
MOV
DX,IOCONPT
MOV
AL,80H
OUT
DX,AL
MOV
DX,IOCPT
POP
AX
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
RET
STEP3 ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;PAISHU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PAISHU PROC
;控制進(jìn)水
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
DX,IOCONPT
MOV
AL,89H
OUT
DX,AL
MOV
DX,IOCPT
IN
AL,DX
OR
AL,02H
PUSH
AX
MOV
DX,IOCONPT
MOV
AL,80H
OUT
DX,AL
MOV
DX,IOCPT
POP
AX
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
JMP
ADCON1
PAISHU ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;SHUAIGAN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHUAIGAN PROC
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
DX,DAPORT
MOV
AL,0FFH
OUT
DX,AL
MOV
CX,80H
LOOP
SHUA1
SHUA1: CALL
DELAY
MOV
AL,80H
OUT
DX,AL
POP
DX
POP
CX
POP
BX
POP
AX
RET
SHUAIGAN ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DELAY;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY:
POP
DX
POP
CX
POP
BX
POP
AX
MOV
CX,0FFFFH
DELAY1: LOOP
DELAY1
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;STOP;;;;;;;;;;;;;;;;;;;;;;;;
STOP PROC
PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
CX,0FFFFH
LOOP
DE
DE: CALL
DELAY
POP
DX
POP
CX
POP
BX
POP
AX
RET
STOP ENDP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;鍵盤掃描;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
KEY: PUSH
AX
PUSH
BX
PUSH
CX
PUSH
DX
MOV
AL,0FFH
MOV
DX,0FF22H
OUT
DX,AL
MOV
BL,00H
MOV
AH,0FEH
MOV
CX,08H
KEY1: MOV
AL,AH
MOV
DX,0FF21H
OUT
DX,AL
SHL
AL,01H
MOV
AH,AL
NOP
NOP
NOP
NOP
NOP
NOP
MOV
DX,0FF23H
IN
AL,DX
NOT
AL
NOP
NOP
AND
AL,0FH
JNZ
KEY2
INC
BL
LOOP
KEY1
JMP
KEY
KEY2: TEST
AL,01H
JE
KEY3
MOV
AL,00H
JMP
KEY6
KEY3: TEST
AL,02H
JE
KEY4
MOV
AL,08H
JMP
KEY6
KEY4: TEST
AL,04H
JE
KEY5
MOV
AL,10H
JMP
KEY6
KEY5: TEST
AL,08H
JE
KEY
MOV
AL,18H
KEY6: ADD
AL,BL
CMP
AL,10H
JNC
FKEY
MOV
BL,AL
MOV
BH,0H
MOV
AL,BYTE PTR DS:[BX+DATA2]
POP
DX
POP
CX
POP
BX
POP
AX
FKEY: RET
DATA2: DB
07H,04H,08H,05H,09H,06H,0AH,0BH
DB
01H,00H,02H,0FH,03H,0EH,0CH,0DH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CODE ENDS
END
MAIN 收獲、體會
在這次微機(jī)的課程設(shè)計(jì)中進(jìn)一步熟悉的匯編語言的編程方法,借助現(xiàn)代的網(wǎng)絡(luò)技術(shù),解決問題,不讓問題遺留到下一天,極大地加快的進(jìn)度,也讓我們對匯編有了更深一層的認(rèn)識,并且還讓我們初步領(lǐng)略到計(jì)算機(jī)控制的魅力,可謂一舉多得。
課程設(shè)計(jì)是我們從書本到實(shí)踐非常關(guān)鍵的一步,當(dāng)代大學(xué)生動手創(chuàng)新能力是社會所急需的,正因如此我們應(yīng)該加強(qiáng)對自身動手實(shí)踐能力的鍛煉。當(dāng)今社會計(jì)算機(jī)科學(xué)在應(yīng)用上得到飛速發(fā)展,因此,學(xué)習(xí)知識必須緊密聯(lián)系實(shí)際:掌握這方面的知識更要強(qiáng)調(diào)解決實(shí)際問題的能力。要著重學(xué)會面對一個(gè)實(shí)際問題,如何去自己收集資料,如何自己去學(xué)習(xí)新的知識,如何自己去制定解決問題的方案并通過實(shí)踐不斷地去分析和解決前進(jìn)道路上的一切問題,最終到達(dá)勝利的彼岸。
課程設(shè)計(jì)中我們不僅培養(yǎng)了我們的實(shí)踐能力,也培養(yǎng)了我們發(fā)現(xiàn)問題、分析問題、解決問題的能力。在學(xué)習(xí)設(shè)計(jì)過程中我查詢了相關(guān)資料,也學(xué)習(xí)到了很多東西。感謝老師的諄諄教導(dǎo)和學(xué)校給我們提供了這么一次機(jī)會。
參考文獻(xiàn)
微型計(jì)算機(jī)技術(shù)及應(yīng)用,戴梅萼,清華大學(xué)出版社
第五篇:軟件工程課程設(shè)計(jì)(自動售貨機(jī))
《軟件工程》課程設(shè)計(jì)報(bào)告
一、問題描述
(一)關(guān)于自動售貨機(jī)
自動售貨機(jī)像磁卡電話、銀行柜員機(jī)一樣,以方便、新穎、文明、晝夜服務(wù)等特點(diǎn),成為發(fā)達(dá)國家不可缺少的便民配套設(shè)施。如今的自動售貨機(jī)可以為顧客提供多種服務(wù)。顧客可以根據(jù)自己的需要選擇商品并投入錢幣,售貨機(jī)接收錢幣,售出商品。
(二)自動售貨機(jī)的設(shè)計(jì)
自動售貨機(jī)系統(tǒng)是一種無人售貨系統(tǒng)。售貨時(shí),顧客把硬幣投入機(jī)器的投幣口中,機(jī)器檢查硬幣的大小、重量、厚度及邊緣類型。有效的硬幣是一元幣、五角幣、一角幣、五分幣和一分幣。其它貨幣都被認(rèn)為是假幣。機(jī)器拒收假幣,并將其從退幣孔退出。當(dāng)機(jī)器接收了有效的硬幣之后,將之送入硬幣儲藏器。顧客支付的貨幣根據(jù)硬幣的面值進(jìn)行累加。
自動售貨機(jī)裝有貨物分配器,每個(gè)分配器中包含0 個(gè)或多個(gè)價(jià)格相同的貨物。顧客通過選擇貨物分配器來選擇貨物。如果有貨,且顧客支付的貨幣值不小于該貨物的價(jià)格,貨物將被分配到貨物傳送孔送給顧客,并將找零返回到退幣孔。如果無貨,則和顧客支付的貨幣值相等的硬幣將被送到退幣孔。如果顧客支付的貨幣值小于所選貨物的價(jià)格,機(jī)器將等待顧客投進(jìn)更多的貨幣。如果顧客決定不買所選擇的貨物,他投放進(jìn)的硬幣將從退幣孔中退出。
二、需求分析
(一)UML自動售貨機(jī)系統(tǒng)功能需求:
自動售貨機(jī)系統(tǒng)是一種無一元等3個(gè)硬幣投幣口。顧客確認(rèn)購貨后,售貨機(jī)可根據(jù)硬幣的面值進(jìn)行累加。
自動售貨機(jī)裝有貨物分配器。每個(gè)貨物分配器中包含零個(gè)或多個(gè)價(jià)格相同的貨物。顧客通過 1 選擇貨物分配器來選擇貨物。如果貨物分配器中有貨物,而且顧客支付的貨幣值不小于該貨物的價(jià)格,貨物將被分配到貨物傳送孔送給顧客,并將適當(dāng)?shù)牧沐X返回到退幣孔。如果分配器是空的,則和顧客支付的貨幣值相等的硬幣將被送加到退幣孔。如果顧客支付的貨幣值少于所選擇的分配器中的貨物的價(jià)格,機(jī)器將等待顧客投進(jìn)更多的貨幣。如果顧客決定不買所選擇的貨物,將所投硬幣從退幣孔退出。
(二)UML自動售貨機(jī)系統(tǒng)控制要求:
根據(jù)售貨機(jī)自動控制系統(tǒ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)有顧額色買飲料時(shí),投入的錢幣經(jīng)過感應(yīng)器,感應(yīng)器記憶投幣的個(gè)數(shù)關(guān)且傳送到檢測系統(tǒng)(即電子天平)和計(jì)幣系統(tǒng)。只有當(dāng)電子天平測量的重量少于誤差值時(shí),允許計(jì)幣系統(tǒng)進(jìn)行疊加錢幣,疊加的錢幣數(shù)據(jù)存放在數(shù)據(jù)寄存器中。如果不正確時(shí),認(rèn)為是假幣。既定出投幣,既定出系統(tǒng),等待新顧客。
2.比較系統(tǒng):
投入完畢后,系統(tǒng)會把錢幣數(shù)據(jù)和可以購買飲料的價(jià)格進(jìn)行區(qū)間比較,當(dāng)投入的錢幣小于2元時(shí),指示燈亮,顯示投入的錢幣不足。此時(shí)可以再投幣或選擇退幣。當(dāng)投稿的錢幣在2~3元之間時(shí),汔水選擇指示燈長亮。當(dāng)大于3元時(shí),汔水和咖啡的指示燈同時(shí)長亮。此時(shí)可以選擇飲料或選擇退幣。
3.選擇系統(tǒng):
比較電路完成后選擇電路指示燈是長亮的,當(dāng)按下汽水或咖啡選擇時(shí),相應(yī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í)啟動。在飲料輸出的同時(shí),減去相應(yīng)的購買錢幣數(shù)。當(dāng)飲料輸出達(dá)到8秒時(shí),電磁閥首先關(guān)斷,小電機(jī)繼續(xù)工作0.5秒后停機(jī)。此小電機(jī)的作用是:在輸出飲料時(shí),加快輸出。在電磁閥關(guān)斷時(shí),給電磁閥加壓作用,加速電磁閥的關(guān)斷。(注:由于該售貨機(jī)是長期使用,電磁閥使用過多時(shí),返回彈力減少,不能完全關(guān)斷會出現(xiàn)漏飲料的現(xiàn)象。此時(shí)電機(jī)Y3和Y5延長工作0.5秒起到電磁閥加壓的作用,使電磁閥可以完好的關(guān)斷。)
5.退幣系統(tǒng):
當(dāng)顧客購?fù)觑嬃虾?,多余的錢幣只要按下退幣按鈕。系統(tǒng)就會把數(shù)據(jù)寄存器D2內(nèi)的錢幣數(shù)首先除以10得到整數(shù)部分,是1元錢需要退回的數(shù)量,存放在D10里。余數(shù)存放在D11里。再用D11除以5得到的整數(shù)部分是5角錢需要退回的數(shù)量,存放在D12里。余數(shù)存放在D13里。最后D13里面的數(shù)值,就是1角錢需要退回的數(shù)量。在選擇退幣的同時(shí)啟動3個(gè)退幣電機(jī)。3個(gè)感應(yīng)器開始計(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)警,只要通過網(wǎng)絡(luò)通知送液車或者送幣車即可。但是如果是故障報(bào)警則需要通知維修人員到現(xiàn)聲進(jìn)行維修。同時(shí)停止服務(wù),避免造成顧客的損失。
(三)業(yè)務(wù)流程圖
錢幣記錄儀對錢幣前端接受顧客投的進(jìn)行識別幣判斷退出錢幣發(fā)送信息到分配器判斷沒有貨物時(shí)發(fā)送信息到前端發(fā)送貨物4
(四)數(shù)據(jù)流程圖
錢幣錢幣記錄儀對分配器反錢幣錢幣進(jìn)行計(jì)算與貨物價(jià)格進(jìn)貨物發(fā)放行比較取走零錢與購買的貨物
三、各種UML圖型及其分析
(一)用例圖
1.顧客的用例圖
inputCoinchooseSodaCustomer
2.自動售貨機(jī)的用例圖
RegisterDispenserFrontSodaMachine
(二)類圖
(三)序列圖
理想狀態(tà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: releaseSoda()8 1.沒有貨物的序列圖
: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.需找零錢的序列圖
: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
沒有零錢找給顧客
: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.沒有貨物的協(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.需找零錢的協(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.沒有零錢找給顧客的協(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/ 請求投幣do/ 提示是假幣假幣do/ 檢查硬幣真幣否購買do/ 存儲硬幣,計(jì)算貨幣總值do/ 確認(rèn)投完硬幣有do/ 請求選擇商品選擇貨品do/ 提示無貨無貨do/ 檢測貨品存量有貨計(jì)算小于do/ 比較貨幣總值和貨物價(jià)值do/ 提示貨幣不足不小于確認(rèn)do/ 確認(rèn)顧客購買do/ 送出貨品,請求取貨有零錢退幣無零錢do/ 請求退幣不購買顯示do/ 提示交易完成17
(六)活動圖
1.投幣的活動圖
投幣確認(rèn)投幣完成2.選擇貨物的活動圖
請求選擇輸入貨物確認(rèn)選擇貨物ID 3.前端的活動圖
接受貨幣顯示可購顯示面值貨物過小顯示沒有該貨物接受飲料顯示沒有零錢找零錢退貨幣 19
貨幣記錄儀的活動圖
接受從前端來的錢幣判斷錢幣發(fā)送信息給分配儀發(fā)送貨物金額給前端返回錢幣計(jì)算零錢20 4.5.分配器的活動圖
接受貨幣啟示錄儀的信息發(fā)送貨物提示沒有該貨物 21
(七)組件圖
CustomerSodaMachineFrontRegisterDispenserDB_0
(八)配置圖
Clint數(shù)據(jù)庫
(九)數(shù)據(jù)模型圖