2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢 業(yè) 設(shè) 計(jì)</b></p><p>  課題名稱 無葉風(fēng)扇控制器 </p><p>  姓 名 </p><p>  學(xué) 號(hào) </p><p>  班 級(jí) 電子S1

2、0-2 </p><p>  專 業(yè) 應(yīng)用電子 </p><p>  所 在 系 電子技術(shù)系 </p><p>  指導(dǎo)教師 </p><p>  完成日期 2013-1-25 </p><p&g

3、t;  天津電子信息職業(yè)技術(shù)學(xué)院 頁號(hào)(1)</p><p>  畢業(yè)設(shè)計(jì)(論文)進(jìn)度計(jì)劃表</p><p>  天津電子信息職業(yè)技術(shù)學(xué)院 </p><p>  注:1.本任務(wù)書一式兩份由指導(dǎo)教

4、師填寫,一份由學(xué)生所在系留存,一份發(fā)給學(xué)生,任務(wù)完成后附在說明書內(nèi)。</p><p>  2.簽字部分用筆填寫,其余各項(xiàng)均要求打印。(宋體、小4號(hào)字)</p><p>  畢業(yè)設(shè)計(jì)(論文)開題報(bào)告</p><p>  天津電子信息職業(yè)技術(shù)學(xué)院 頁號(hào)(1)</p>

5、<p>  天津電子信息職業(yè)技術(shù)學(xué)院 頁號(hào)(2)</p><p>  注:本報(bào)告一式兩份由學(xué)生本人填寫(打印、宋體、小4號(hào)字),一份由學(xué)生所在系留存,一份由學(xué)生完成設(shè)計(jì)(論文)后附在說明書內(nèi)。</p><p>  畢 業(yè) 設(shè) 計(jì)(論 文)</p><p><b&

6、gt;  無葉風(fēng)扇控制器</b></p><p><b>  摘 要</b></p><p>  無葉風(fēng)扇也叫空氣增倍機(jī),它能產(chǎn)生自然持續(xù)的涼風(fēng),因無葉片,不會(huì)覆蓋塵土或傷到好奇兒童手指。更奇妙的是其造型奇特,外表既流線又清爽。產(chǎn)品靈感源于空氣葉片干手器。干手器的原理是迫使空氣經(jīng)過一個(gè)小口“刷”干手上的水,空氣增倍機(jī)是讓空氣從一個(gè)1.3毫米寬、繞著圓環(huán)轉(zhuǎn)

7、動(dòng)的切口里吹出來。因空氣是被強(qiáng)制從這一圓圈里吹出來的,通過的空氣量可增到15倍,時(shí)速可增至35公里。</p><p>  本次設(shè)計(jì)產(chǎn)品的FPGA 芯片采用XILINX 公司的XC6SLX9作為系統(tǒng)控制核心,完成對(duì)無葉風(fēng)扇的閉環(huán)控制,提供了一個(gè)帶有8位LED顯示、并使其集中到一塊面板上,使得操作方便快捷,直接在LED顯示實(shí)時(shí)壓強(qiáng),設(shè)定壓強(qiáng),該設(shè)計(jì)中使用成品壓強(qiáng)傳感器,對(duì)壓強(qiáng)進(jìn)行實(shí)時(shí)采集,使用紅外傳感器采集人體信號(hào)信

8、息,實(shí)現(xiàn)無人自動(dòng)停機(jī),有人自動(dòng)開機(jī),使該系統(tǒng)更加人性化、智能化。</p><p>  適宜大多數(shù)普通家庭、寢室、辦公住所等。 </p><p>  關(guān)鍵詞: FPGA; 閉環(huán)控制; 壓強(qiáng)檢測; 人體檢測</p><p><b>  目錄</b></p><p><b>  一、緒 論2</b>&

9、lt;/p><p><b>  1.概述2</b></p><p><b>  2.特點(diǎn)3</b></p><p>  二、系統(tǒng)的總體設(shè)計(jì)4</p><p>  1.總體設(shè)計(jì)思想4</p><p><b>  2.系統(tǒng)總機(jī)構(gòu)4</b></p&

10、gt;<p>  3.系統(tǒng)設(shè)計(jì)原理圖5</p><p>  三、系統(tǒng)電路模塊7</p><p>  1.DCP-100-LX9 FPGA核心板7</p><p>  2.CGQ-002-A 壓力檢測電路8</p><p><b>  3.顯示電路8</b></p><p>

11、  四、軟件部分設(shè)計(jì)12</p><p><b>  五、結(jié) 論13</b></p><p><b>  六、致 謝14</b></p><p><b>  七、參考文獻(xiàn)15</b></p><p><b>  附錄16</b></p&

12、gt;<p>  1.VHDL程序源碼:16</p><p>  2.精彩瞬間:25</p><p><b>  一、緒 論</b></p><p><b>  1.概述</b></p><p>  JamesDyson公司歷時(shí)4年研發(fā)了一種神奇的無扇葉風(fēng)扇,它使用了最新的流體動(dòng)

13、力工程技術(shù),通過高效率的無刷電機(jī)使氣流增加15倍,以每秒118加侖的速率釋放出來,合1580CFM的風(fēng)量。Dyson公司介紹,為了精確估算各項(xiàng)指標(biāo),為了優(yōu)化開口的翼型弧度,工程師們花了4年時(shí)間,經(jīng)歷了數(shù)百次模擬實(shí)驗(yàn)把氣體流動(dòng)圖通過激光多普勒測量儀繪制出來。Dyson本人解釋說:“風(fēng)扇開口的弧度設(shè)計(jì)是無扇葉風(fēng)扇的關(guān)鍵,我們發(fā)現(xiàn)利用這種方式對(duì)空氣進(jìn)行引導(dǎo)和放大的效果很好,當(dāng)然,這也是我們最初打算設(shè)計(jì)這樣一款無扇葉風(fēng)扇的原因。</p&g

14、t;<p>  據(jù)了解,“無扇葉電風(fēng)扇”是吸塵器的發(fā)明人戴森爵士的最新發(fā)明,因此還被冠名為“戴森空氣倍增器”。其吹風(fēng)原理類似于烘手機(jī)。62歲的戴森是英國最知名的發(fā)明家之一,他說自己是在發(fā)明自動(dòng)烘手機(jī)的時(shí)候突然得到靈感。“烘手機(jī)是從一個(gè)小裂縫吹出氣流,把手烘干。于是我想到制造一個(gè)不用扇葉的空氣推動(dòng)裝置。” </p><p><b>  2.特點(diǎn)</b></p>&l

15、t;p>  這款風(fēng)扇(氣流放大器)有兩個(gè)尺寸:10英寸直徑和12英寸(25.4cm和30.48cm),10英寸的版本有瓦藍(lán)色和銀白色,12英寸的風(fēng)扇只有銀白色。風(fēng)扇上旋鈕可以調(diào)整出風(fēng)量,而且可以調(diào)整吹風(fēng)的角度。這款無葉電風(fēng)扇的外形像一只巨大的指環(huán),能產(chǎn)生強(qiáng)有力的涼爽空氣,也比傳統(tǒng)電扇安全。另外,它清洗起來也比傳統(tǒng)電風(fēng)扇方便得多,使用者不需要為清理扇葉上積滿的灰塵發(fā)愁了。和傳統(tǒng)電風(fēng)扇一樣,它能夠90度角擺動(dòng)。它還能通過人為控制發(fā)生燈

16、光變化。使用這種無扇葉風(fēng)扇明顯的好處就是你不用擔(dān)心孩子的手會(huì)被扇葉傷到,你也不用操心給扇葉做清洗了。很多人更感興趣的是這種風(fēng)扇不存在風(fēng)扇中心區(qū)的“死區(qū)”,此外你也不用操心扇葉切割空氣產(chǎn)生的噪音了,不過無刷電機(jī)工作時(shí)依然有噪音,大概和XBox360工作時(shí)的差不多。不過這款風(fēng)扇最大的劣勢(shì)就是價(jià)格,10英寸風(fēng)扇售價(jià)299.9美元,12英寸的為329.99美元,合人民幣2046元、2250元。要享受真正的技術(shù)革新就得花大價(jià)錢。</p>

17、;<p><b>  二、系統(tǒng)的總體設(shè)計(jì)</b></p><p><b>  1.總體設(shè)計(jì)思想</b></p><p>  以FPGA為控制中心,外部傳感器為檢測元件,通過按鍵控制其無葉風(fēng)扇的風(fēng)速與開關(guān),輸出由LED顯示數(shù)碼管與紅外人體電路組成,F(xiàn)PGA通過接收各個(gè)壓力傳感器的返回狀態(tài)值來進(jìn)行風(fēng)速的控制,紅外人體檢測電路判斷是否人,

18、來進(jìn)行風(fēng)扇的開關(guān)控制(該功能可設(shè)置是否啟用)。控制系統(tǒng)的總體設(shè)計(jì)框圖如圖1-1所示:。</p><p>  圖2-1 系統(tǒng)總體設(shè)計(jì)框圖</p><p><b>  2.系統(tǒng)總機(jī)構(gòu)</b></p><p>  為了實(shí)現(xiàn)設(shè)計(jì)要求的基本功能,本系統(tǒng)必須包含四個(gè)基本功能模塊:</p><p>  1.FPGA控制模塊</

19、p><p><b>  2.壓強(qiáng)采集模塊</b></p><p><b>  3.風(fēng)扇控制模塊</b></p><p><b>  4.顯示模塊</b></p><p>  其中FPGA控制模塊主要用于回應(yīng)傳感器信號(hào)和進(jìn)行顯示程控;傳感器模塊主要用于感應(yīng)是否有物體通過,并形成電平信

20、號(hào)輸出,對(duì)風(fēng)扇的實(shí)時(shí)控制;顯示模塊主要用于顯示當(dāng)前風(fēng)扇的氣壓值,及設(shè)置的氣壓值。</p><p>  為完善系統(tǒng)的功能同時(shí)能夠達(dá)到系統(tǒng)的設(shè)計(jì)指標(biāo),本系統(tǒng)必須包含以下功能模塊:</p><p>  1.復(fù)位電路:實(shí)現(xiàn)FPGA的復(fù)位控制</p><p>  2.振蕩電路:提供所需的FPGA時(shí)鐘頻率</p><p><b>  3.系統(tǒng)設(shè)

21、計(jì)原理圖</b></p><p>  本系統(tǒng)基本原理結(jié)構(gòu)圖如圖圖2-2所示。</p><p><b>  圖2-2 原理圖</b></p><p><b>  圖2-3 核心板</b></p><p>  圖2-4 顯示部分</p><p>  圖2-1由以

22、上系統(tǒng)基本原理框架圖可以看出,本系統(tǒng)的外圍電路相對(duì)比較復(fù)雜,功能的實(shí)現(xiàn)主要是從外部獲取控制信號(hào)之后在FPGA中進(jìn)行數(shù)據(jù)處理,數(shù)據(jù)處理完畢之后FPGA便將控制信號(hào)輸出到報(bào)警電路進(jìn)行報(bào)警,將顯示數(shù)據(jù)輸出到顯示電路進(jìn)行顯示。所以本系統(tǒng)的FPGA數(shù)據(jù)處理方面的程序相對(duì)比較復(fù)雜一些,所有的感應(yīng)信號(hào)和顯示數(shù)據(jù)的處理和輸入控制都是在FPGA中進(jìn)行處理,這就要求在設(shè)計(jì)程序的時(shí)候要認(rèn)真思考FPGA管腳的分配問題。</p><p>

23、<b>  三、系統(tǒng)電路模塊</b></p><p>  1.DCP-100-LX9 FPGA核心板</p><p>  型號(hào):DCP-100-LX9</p><p>  名稱:FPGA 核心板</p><p>  說明:此模塊的FPGA 芯片采用XILINX 公司的XC6SLX9,配置方式JTAG 全部引出,芯片<

24、;/p><p>  時(shí)鐘為100MHz。外圍器件有:FLASH 芯片W25Q128BV、EEPROM 芯片M93C66、串口通訊芯片</p><p>  MAX3232、USB 轉(zhuǎn)串口芯片PL2303。線路板上以扁平帶方式引出72 路IO 口分9 組,分別為JA-JG ,方便與外圍電路數(shù)據(jù)地址線連接,如圖圖3-1所示。</p><p>  圖3-1 DCP-100-LX

25、9 FPGA核心板</p><p>  2.CGQ-002-A 壓力檢測電路</p><p>  型號(hào):CGQ-002-A</p><p><b>  名稱:壓力檢測電路</b></p><p>  說明:傳感器采用摩托羅拉公司的高性能擴(kuò)散硅壓力傳感器MPX53DP 并通過專門的保護(hù)</p><p&g

26、t;  支座安裝在線路板上。處理電路采用由運(yùn)放構(gòu)成的兩級(jí)放大電路實(shí)現(xiàn)對(duì)信號(hào)的放大、調(diào)理。</p><p>  該模塊可用DC12V 供電,輸出為模擬量信號(hào)。</p><p>  圖示圖3-2 所示:</p><p>  圖3-2 CGQ-002-A 壓力檢測電路</p><p><b>  3.顯示電路</b><

27、/p><p><b>  數(shù)碼管顯示的工理</b></p><p>  八段LED顯示器由8個(gè)發(fā)光二極管組成?;?個(gè)長條形的發(fā)光管排列成“日”字形,另一個(gè)點(diǎn)形的發(fā)光管在顯示器的右下角作為顯示小數(shù)點(diǎn)用,它能顯示各種數(shù)字及部份英文字母。LED顯示器有兩種不同的形式:一種是8個(gè)發(fā)光二極管的陽極都連在一起的,稱之為共陽極LED顯示器;另一種是8個(gè)發(fā)光二極管的陰極都連在一起的,稱

28、之為共陰極LED顯示器。如圖4.6所示: </p><p>  圖3-3 數(shù)碼管顯示器</p><p>  在選用共陰的LED時(shí),只要在某一個(gè)發(fā)光二極管加上高電平,該二極管即點(diǎn)亮,反之則暗。而選用共陽極的LED時(shí),要使某一個(gè)發(fā)光二極管發(fā)亮,則需加上低電平,反之則暗。為了保護(hù)各段LED不受損壞,需要外加限流電阻。為了要顯示某個(gè)字型,則應(yīng)使此字形段的相應(yīng)點(diǎn)二極管點(diǎn)亮,也即送一個(gè)不同的電平組合代

29、表數(shù)據(jù)來控制LED顯示的字型,此數(shù)據(jù)稱為字符的段碼。本電路采用共陰極接法。十六進(jìn)制數(shù)字型代碼表如表4.1所示: </p><p>  單片機(jī)驅(qū)動(dòng)LED顯示有很多方法,按顯示方式可以分為靜態(tài)顯示和動(dòng)態(tài)顯示。</p><p>  靜態(tài)顯示就是顯示驅(qū)動(dòng)電路具有輸出鎖存功能,單片機(jī)將要顯示的數(shù)據(jù)送出后就不再控制LED,直到下一次顯示時(shí)再傳送一次新的數(shù)據(jù)。只要當(dāng)前顯示的數(shù)據(jù)沒有變化,就無須理睬數(shù)碼顯

30、示管。靜態(tài)顯示的數(shù)據(jù)穩(wěn)定,占用的CPU時(shí)間少。靜態(tài)顯示中,每一個(gè)顯示器都要占用單獨(dú)具有鎖存功能的</p><p>  型代碼。這樣單片機(jī)只要把顯表3.1 十六進(jìn)制數(shù)字型代碼表</p><p>  示的字型數(shù)據(jù)代碼發(fā)送到接口電路,該字段就可以顯示要發(fā)送的字型。當(dāng)需要要顯示新的數(shù)據(jù)時(shí),單片機(jī)再發(fā)送新的字型碼。</p><p>  另一種方法是動(dòng)態(tài)掃描顯示。動(dòng)態(tài)

31、掃描方法是用其接口電路把所有顯示器的8個(gè)筆畫字段(a~g和dp)同名端連在一起,而每一個(gè)顯示器的公共極COM各自獨(dú)立接受I/O線控制。CPU向字段輸出端口輸出字型碼時(shí),所有顯示器接受相同的字型碼,但究竟使哪一位則由I/O線決定。動(dòng)態(tài)掃描用分時(shí)的方法輪流控制每個(gè)顯示器的COM端,使每個(gè)顯示器輪流電亮。在輪流點(diǎn)亮過程中,每位顯示器的點(diǎn)亮?xí)r間極為短暫,但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng),給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù)。</p

32、><p>  DCP-102-A 數(shù)碼管顯示和鍵盤電路</p><p>  型號(hào):DCP-102-A</p><p>  名稱:數(shù)碼管顯示和鍵盤電路</p><p>  說明:該模塊包括八位數(shù)碼管顯示單元、查詢式鍵盤、矩陣式鍵盤所組成。該線路板配</p><p>  合FPGA 核心板可以完成數(shù)碼管的靜態(tài)和動(dòng)態(tài)掃描實(shí)驗(yàn),完

33、成查詢式和矩陣式鍵盤實(shí)驗(yàn)。</p><p>  圖3-4 數(shù)碼管顯示和鍵盤電路</p><p>  本設(shè)計(jì)中使用動(dòng)態(tài)掃描的方式對(duì)數(shù)碼管進(jìn)行控制掃描,其電路圖如圖4.7所示,圖中SRD2為上拉電阻排,電阻值為10K,驅(qū)動(dòng)芯片用74HC573作為驅(qū)動(dòng)使用,U2為位選驅(qū)動(dòng),U3為段碼驅(qū)動(dòng),單片機(jī)的P0口接LED的段碼驅(qū)動(dòng),單片機(jī)的P2口接LED的位選碼驅(qū)動(dòng),該器件驅(qū)動(dòng)電流可以達(dá)到100mA,而

34、LED數(shù)碼管全亮?xí)r,最大電流可以達(dá)到32mA,如果全部驅(qū)動(dòng)輸出會(huì)將數(shù)碼管燒壞,所以在程序中使用PWM輸出的控制,在消隱時(shí),也就是禁止數(shù)碼管的輸出,之后加上一段時(shí)間的延時(shí),要確保加入的時(shí)間與顯示時(shí)間和不能超過20ms,同時(shí)74HC573具有鎖存功能,在本設(shè)計(jì)中沒有使用該功能。</p><p><b>  四、軟件部分設(shè)計(jì)</b></p><p>  主程序完成控制、執(zhí)行

35、,流程圖如圖圖4.1所示。</p><p>  圖4.1 主程序流程圖</p><p><b>  五、結(jié) 論</b></p><p>  我們?cè)谠O(shè)計(jì)調(diào)試過程中也遇到了一些問題,但我們牢記指導(dǎo)老師在平時(shí)訓(xùn)練中教給我們的“定位準(zhǔn)確、機(jī)理清楚、故障復(fù)現(xiàn)、措施有效、舉一反三”的技術(shù)歸零方針,并嚴(yán)格按照技術(shù)歸零方針來查找和解決問題。最后,通過團(tuán)隊(duì)的共

36、同努力,完成了無葉風(fēng)扇控制器的設(shè)計(jì)及制作。</p><p>  在這次畢設(shè)中,我們不但將學(xué)校所學(xué)的《模擬電子技術(shù)》、《數(shù)字電子技術(shù)》、《電子產(chǎn)品組裝工藝》、《PCB設(shè)計(jì)》等專業(yè)知識(shí)應(yīng)用到比賽中,實(shí)現(xiàn)了學(xué)以致用,而且專業(yè)知識(shí)和技能得到了大幅度的提升,同時(shí)鍛煉和提高了獨(dú)立分析問題、解決問題的能力、溝通能力及團(tuán)隊(duì)協(xié)作能力。</p><p>  從整套系統(tǒng)的設(shè)計(jì),調(diào)試和實(shí)現(xiàn)的過程中,我學(xué)到了許多很

37、有意義的東西: </p><p>  首先:使用的開發(fā)語言有VHDL語言,使我的編程能力得到了很大的鍛煉和提高。</p><p>  其次:設(shè)計(jì)和實(shí)現(xiàn)各種功能,可以說是對(duì)軟件工程中的軟件開發(fā)方法一次又一次的實(shí)踐。每次的成功和失敗,都給我深刻的啟示,指導(dǎo)我怎樣更好的進(jìn)行軟件開發(fā),應(yīng)該避免哪些問題。</p><p>  再次:調(diào)試的時(shí)候,充分體驗(yàn)了一次工程現(xiàn)場調(diào)試的氛圍

38、,與各位實(shí)驗(yàn)室同學(xué)一起的場景至今仍然歷歷在目。再這里,我要再次的感謝我的指導(dǎo)老師張美英。</p><p>  畢業(yè)論文從十月份開始入手,到現(xiàn)在已經(jīng)三個(gè)月了。這份大學(xué)期間最后的作業(yè),是對(duì)我的又一次挑戰(zhàn)。雖然在旁人看來這工作可能微不足道,但我卻從中學(xué)到了不少東西;體會(huì)到了工作中的酸甜苦辣,也認(rèn)識(shí)到了自己的不足之處。這對(duì)我今后的工作和學(xué)習(xí)都是大有裨益的。遺憾的是,限于時(shí)間和能力,沒能將工作做得更好。 最后,再次感謝所

39、有關(guān)心和幫助過我的老師和朋友們。</p><p><b>  六、致 謝</b></p><p>  首先,也是最主要感謝的是我的指導(dǎo)老師,xx兩位老師。在整個(gè)過程中他給了我很大的幫助,在論文題目制定時(shí),他首先肯定了我的題目大方向,讓我在寫作時(shí)有了具體方向。在論文提綱制定時(shí),我的思路不是很清晰,經(jīng)過老師的幫忙,讓我具體寫作時(shí)思路頓時(shí)清晰。在完成初稿后,老師認(rèn)真查看了

40、我的文章,指出了我存在的很多問題。在此十分感謝張老師的細(xì)心指導(dǎo),才能讓我順利完成畢業(yè)論文。</p><p>  最后要感謝在整個(gè)論文寫作過程中幫助過我的每一位人。</p><p><b>  七、參考文獻(xiàn)</b></p><p>  [1] 華兵.MCS-51單片機(jī)原理應(yīng)用.武漢:武漢華中科技大學(xué)出版社,2002 .5</p>&

41、lt;p>  [2] 李華.MCU-51系列單片機(jī)實(shí)用接口技術(shù).北京:北京航空航天大學(xué)出版社, 1993. 6</p><p>  [3] 陳光東.單片機(jī)微型計(jì)算機(jī)原理與接口技術(shù)(第二版).武漢:華中理工大學(xué)出版社,1999.4</p><p>  [4] 徐淑華,程退安,姚萬生.單片機(jī)微型機(jī)原理及應(yīng)用.哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1999. 6.</p><p

42、>  [5] 九州.放大電路實(shí)用設(shè)計(jì)手冊(cè).沈陽:遼寧科學(xué)技術(shù)出版社,2002.5</p><p>  [6] 樊昌元,丁義元. 高精度雷達(dá)研究.電子測量與儀器學(xué)報(bào),2000.10</p><p>  [7] 蘇偉,鞏壁建.誤差分析.傳感器技術(shù),2004.</p><p>  [8] 永學(xué)等.1-Wire總線數(shù)字溫度傳感器DS18B20及應(yīng)用.電子產(chǎn)品世界,20

43、03.12</p><p><b>  附錄</b></p><p><b>  VHDL程序源碼:</b></p><p>  注:每部分函數(shù)應(yīng)單獨(dú)建立文件 ,有頂層 文件電泳子函數(shù)</p><p><b>  --頂層函數(shù)</b></p><p> 

44、 library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;</p><p>  USE ieee.std_logic_unsigned.all;</p><p>  USE ieee.std_logic_arith.all;</p><p>  entity wendu is</p>

45、<p><b>  port(</b></p><p>  CLK : in std_logic;--100MHZ,系統(tǒng)時(shí)鐘</p><p>  RESET : in std_logic;</p><p>  ren: in std_logic;--人體紅外控制</p><

46、p>  pwm_out:out std_logic; --電機(jī)控制信號(hào)</p><p>  SDA : inout std_logic;--串行總線雙向數(shù)據(jù)</p><p>  SCL : out std_logic;--串行總線時(shí)鐘</p><p>  --switch: out std_logic;

47、 --小數(shù)點(diǎn)控制</p><p>  keyin: in std_logic_vector(3 downto 0 );</p><p>  data_in_ce: in std_logic_vector(11 downto 0);</p><p>  DOT: out std_logic;

48、--小數(shù)點(diǎn)控制</p><p>  LED7 : out std_logic_vector(6 downto 0);--斷碼(不包含小數(shù)點(diǎn))</p><p>  BIT8 : out std_logic_vector(0 to 7)--位碼</p><p><b>  );</b></p><p&g

49、t;  end wendu;</p><p>  architecture Behavioral of wendu is</p><p>  --氣壓 信號(hào) 采集</p><p>  component ack_check</p><p><b>  port( </b></p><p>  CL

50、K : in std_logic;</p><p>  RESET : in std_logic;</p><p>  SDA : inout std_logic;--串行總線雙向數(shù)據(jù)</p><p>  SCL : out std_logic;--串行總線時(shí)鐘</p><p>  data_shi : ou

51、t std_logic_vector(11 downto 0)--</p><p><b>  );</b></p><p>  end component;</p><p><b>  --顯示 控制</b></p><p>  component display</p><

52、;p><b>  port(</b></p><p>  CLK : in std_logic;--100MHZ,系統(tǒng)時(shí)鐘</p><p>  RESET : in std_logic;</p><p>  ren: in std_logic;</p><p>  pwm_out

53、:out std_logic;--電機(jī)控制信號(hào)</p><p>  --switch: out std_logic; --小數(shù)點(diǎn)控制</p><p>  keyin: in std_logic_vector(3 downto 0 );</p><p>  data_in_ce: in std_log

54、ic_vector(11 downto 0);</p><p>  ---mode: in std_logic;</p><p>  DOT: out std_logic; --小數(shù)點(diǎn)控制</p><p>  LED7 : out std_logic_vector(6 downto 0);--斷碼

55、(不包含小數(shù)點(diǎn))</p><p>  BIT8 : out std_logic_vector(0 to 7)--位碼</p><p><b>  );</b></p><p>  end component;</p><p>  signal data_r:std_logic_vector(11 downto

56、0);</p><p>  signal fu_hao:std_logic;</p><p><b>  begin</b></p><p>  u1: ack_check port map(</p><p><b>  CLK=>clk,</b></p><p>  

57、reset=>reset,</p><p><b>  SDA=>SDA,</b></p><p><b>  SCL=>SCL,</b></p><p>  data_shi=>data_r--AD氣壓值 輸出</p><p><b>  );</b>

58、</p><p>  u2:display port map(</p><p><b>  clk=>clk,</b></p><p>  reset=>reset,</p><p>  ren=>ren,--人體紅外控制</p><p>  pwm_out=>pwm_ou

59、t,--電機(jī)控制信號(hào)</p><p>  --switch=>switch,</p><p>  keyin=>keyin,</p><p>  data_in_ce=>data_r,--AD采集后的氣壓值</p><p><b>  dot=>dot,</b></p>

60、<p>  led7=>led7,</p><p>  bit8=>bit8</p><p><b>  );</b></p><p>  end Behavioral;</p><p>  --pwm 無葉風(fēng)扇 控制 部分代碼</p><p>  library IEE

61、E;</p><p>  use IEEE.STD_LOGIC_1164.ALL;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  entity display is</p><p>

62、;<b>  port(</b></p><p>  CLK : in std_logic;--100MHZ,系統(tǒng)時(shí)鐘</p><p>  RESET : in std_logic;</p><p>  ren: in std_logic;</p><p>  pwm_out :

63、out std_logic;--電機(jī)控制信號(hào)</p><p>  keyin: in std_logic_vector(3 downto 0 );</p><p>  data_in_ce: in std_logic_vector(11 downto 0); --</p><p>  DOT: out std_logic;

64、 --小數(shù)點(diǎn)控制</p><p>  LED7 : out std_logic_vector(6 downto 0);--斷碼(不包含小數(shù)點(diǎn))</p><p>  BIT8 : out std_logic_vector(0 to 7)--位碼</p><p><b>  );</b></p&

65、gt;<p>  end display;</p><p>  architecture Behavioral of display is</p><p>  signal Data0_se,Data1_se,Data2_se: std_logic_vector(3 downto 0); --直接掉 設(shè)置 顯示的,每一位的BCD嗎</p><p> 

66、 signal Data0_ce,Data1_ce,Data2_ce: std_logic_vector(3 downto 0); --直接掉 設(shè)置 顯示的,每一位的BCD嗎</p><p>  signal clk_scan : std_logic ;--位碼掃描時(shí)鐘</p><p>  signal dispcnt : std_logic_vector(5

67、downto 0);--每一位的顯示掃描</p><p>  signal dis_data : integer range 0 to 17;--直接調(diào)用用于顯示的斷碼</p><p>  signal key_reg: std_logic_vector(3 downto 0); --直接掉顯示的,每一位的BCD嗎</p><p>  type pr

68、ocess_state is (st0,st1,st2);--測試顯示 十進(jìn)制轉(zhuǎn)BCD碼信號(hào)狀態(tài)定義</p><p>  signal current_state : process_state;</p><p>  type process_state_se is (st0_se,st1_se,st2_se);--設(shè)置顯示 十進(jìn)制轉(zhuǎn)BCD碼信號(hào)狀態(tài)定義</p><

69、p>  signal current_state_se : process_state_se;</p><p>  signal clk100hz :std_logic;</p><p>  signal switch: std_logic:='0';</p><p>  signal se : integer range 0

70、to 400:=0;--設(shè)置數(shù)據(jù)</p><p>  signal ce : integer range 0 to 400:=0;--設(shè)置數(shù)據(jù)</p><p>  signal data_in_se: std_logic_vector(11 downto 0);--設(shè)定 的 BCD碼 </p><p>  signal data_in_ce

71、_r: std_logic_vector(11 downto 0);--測試 的 BCD碼 </p><p>  signal zhuan1:std_logic;</p><p>  signal pw : integer range 0 to 100000:=0;--設(shè)置數(shù)據(jù)</p><p>  --調(diào)用按鍵程序---------------

72、-------------------------------------------------------</p><p>  component Key_Control</p><p><b>  port(</b></p><p>  CLK : in std_logic;--100MHZ</p><p>  

73、RESET : in std_logic;--CPU RESET </p><p>  KEYIN : in std_logic_vector(3 downto 0);--輸入按鍵</p><p>  KEYOUT : out std_logic_vector(3 downto 0)--按鍵輸出指示</p><p><b>  );</b>&

74、lt;/p><p>  end component;</p><p><b>  begin</b></p><p>  u1: Key_Control port map(</p><p><b>  CLK=>CLK,</b></p><p>  RESET=>R

75、ESET,</p><p>  KEYIN=>keyin,</p><p>  KEYout(0)=>key_reg(0),</p><p>  KEYout(1)=>key_reg(1),</p><p>  KEYout(2)=>key_reg(2),</p><p>  KEYout(3)

76、=>key_reg(3)</p><p><b>  );</b></p><p>  ---------------------------------------------------------------------------------------</p><p><b>  --分頻 按鍵延時(shí)</b>

77、</p><p>  process(clk)</p><p>  variable count:integer range 0 to 500000;</p><p><b>  begin</b></p><p>  if RESET='0' then count:=0;clk100hz<=

78、9;0';</p><p>  elsif rising_edge(CLK) then </p><p>  if count=500000-4 then </p><p>  count:=0;clk100hz<=not clk100hz;</p><p>  else count:=count+1;</p>&

79、lt;p><b>  end if;</b></p><p><b>  end if; </b></p><p>  end process;</p><p>  -- 啟動(dòng) 停止 按鍵 狀態(tài)</p><p>  process(key_reg(0),key_reg(1),clk100h

80、z,clk)</p><p><b>  begin</b></p><p>  if rising_edge(clk) then </p><p>  if key_reg(0)='1' then switch<='1';--啟動(dòng) 信號(hào) </p><p>  e

81、lsif key_reg(1)='1' then switch<='0';--pwm_out<='0';--停止 信號(hào)</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end proce

82、ss;</p><p><b>  --設(shè)置 按鍵</b></p><p>  process(key_reg(2),key_reg(3),clk100hz,clk)</p><p><b>  begin</b></p><p>  if rising_edge(clk) then </p

83、><p>  if key_reg(2)='1' then</p><p>  if rising_edge (clk100hz) then--按鍵延時(shí)時(shí)鐘 防止10hz 高電平多加</p><p>  if se=400 then se<=0; --增加 設(shè)定 壓強(qiáng)</p><p>  else se<=se+5;

84、</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  elsif key_reg(3)='1' then </p><p>  if rising_edge (clk100hz) then</p>

85、<p>  if se=0 then se<=400; --減小 設(shè)定 壓強(qiáng)</p><p>  else se<=se-10;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end

86、 if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  --顯示調(diào)換信號(hào)</b></p><p>  process(data_in_ce,clk,zhuan1,pw)</p><

87、p>  variable count : integer range 0 to 100000:=0;</p><p>  variable count1 : integer range 0 to 100000:=0;</p><p><b>  begin</b></p><p>  if rising_edge(clk) then--C

88、ONV_INTEGER(data_in_ce)</p><p>  if rising_edge(CLK) then</p><p>  if count1>=10 then </p><p>  count1:=0;</p><p>  zhuan1<=not zhuan1;</p><p><b&

89、gt;  pw<=pw+1;</b></p><p>  if pw>=1500 then pw<=0; end if;</p><p><b>  else </b></p><p>  count1:=count1+1;</p><p><b>  end if;</b&

90、gt;</p><p><b>  end if;</b></p><p>  if switch='1' then ce<=CONV_INTEGER(data_in_ce);--將輸入的 二進(jìn)制 強(qiáng)制轉(zhuǎn)換 為 十進(jìn)制--mode<='0';--or data_in<wen_out</p><

91、;p>  if ren='1' then --人體紅外 控制 (有人)</p><p>  if (ce>=10 and ce<=se) then </p><p>  if pw<100 then</p><p>  pwm_out<='1';</p><p>  e

92、lsif pw>=100 then--低電平時(shí)間為100</p><p>  pwm_out<='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  if (ce>50 and ce&l

93、t;=se) then </p><p>  if pw<500 then</p><p>  pwm_out<='1';</p><p>  elsif pw>=500 then--低電平時(shí)間為100</p><p>  pwm_out<='0';</p><p&

94、gt;<b>  end if;</b></p><p><b>  end if;</b></p><p>  if (ce>100 and ce<=se) then </p><p>  if pw<1000 then</p><p>  pwm_out<='1

95、';</p><p>  elsif pw>=1000 then--低電平時(shí)間為100</p><p>  pwm_out<='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p>&

96、lt;p>  else pwm_out<='1';--人體紅外 控制 (無人)</p><p><b>  end if;</b></p><p>  elsif switch='0' then </p><p>  ce<=0;--將輸入的 二進(jìn)制 強(qiáng)制轉(zhuǎn)換 為 十進(jìn)制--mode

97、<='1';--or data_in>wen_out</p><p>  pwm_out<='1';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;

98、</p><p>  --設(shè)定顯示 十進(jìn)制-BCD碼轉(zhuǎn)換_;</p><p>  process(CLK,RESET)</p><p>  variable d0 : std_logic_vector(3 downto 0);</p><p>  variable d1 : std_logic_vector(3 downto 0);<

99、/p><p>  variable d2 : std_logic_vector(3 downto 0);</p><p>  variable memory_data:integer range 0 to 10000;</p><p><b>  begin</b></p><p>  if RESET='0'

100、; then d0:="0000";d1:="0000";d2:="0000";current_state_se<=st0_se;</p><p>  elsif rising_edge(CLK) then</p><p>  case current_state_se is</p><p>  w

101、hen st0_se => memory_data:=se;--將要轉(zhuǎn)換的 十進(jìn)制數(shù)</p><p>  d0:="0000";</p><p>  d1:="0000";</p><p>  d2:="0000";</p><p>  current_state_se<

102、=st1_se;</p><p>  when st1_se => if memory_data >99 then</p><p>  memory_data:= memory_data-100;</p><p><b>  d2:=d2+1;</b></p><p>  elsif memory_data

103、> 9 then</p><p>  memory_data:= memory_data-10;</p><p><b>  d1:=d1+1;</b></p><p>  else d0:= CONV_STD_LOGIC_VECTOR(memory_data,4);</p><p>  current_state

104、_se<=st2_se; </p><p><b>  end if;</b></p><p>  when st2_se => data_in_se<=d2&d1&d0;</p><p>  current_state_se<=st0_se;</p><p>  when ot

105、hers => current_state_se<=st0_se;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  --測試顯示 十進(jìn)制-BCD碼轉(zhuǎn)

106、換_;</p><p>  process(CLK,RESET)</p><p>  variable d0 : std_logic_vector(3 downto 0);</p><p>  variable d1 : std_logic_vector(3 downto 0);</p><p>  variable d2 : std_log

107、ic_vector(3 downto 0);</p><p>  variable memory_data:integer range 0 to 10000;</p><p><b>  begin</b></p><p>  if RESET='0' then d0:="0000";d1:="00

108、00";d2:="0000";current_state<=st0;</p><p>  elsif rising_edge(CLK) then</p><p>  case current_state is</p><p>  when st0 => memory_data:=ce;--將要轉(zhuǎn)換的 十進(jìn)制數(shù)</p&

109、gt;<p>  d0:="0000";</p><p>  d1:="0000";</p><p>  d2:="0000";</p><p>  current_state<=st1;</p><p>  when st1 => if memory_da

110、ta >99 then</p><p>  memory_data:= memory_data-100;</p><p><b>  d2:=d2+1;</b></p><p>  elsif memory_data > 9 then</p><p>  memory_data:= memory_data-1

111、0;</p><p><b>  d1:=d1+1;</b></p><p>  else d0:= CONV_STD_LOGIC_VECTOR(memory_data,4);</p><p>  current_state<=st2; </p><p><b>  end if;</b>&l

112、t;/p><p>  when st2 => data_in_ce_r<=d2&d1&d0;</p><p>  current_state<=st0;</p><p>  when others => current_state<=st0;</p><p><b>  end

113、 case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  --將整理后的數(shù)據(jù)送到顯示</p><p>  process(CLK,RESET,Data2_se,Data1_se,Data0_se,Data2_ce,Data1_c

114、e,Data0_ce)</p><p><b>  begin</b></p><p>  if rising_edge(CLK) then</p><p>  Data2_se<= data_in_se(11 downto 8);</p><p>  Data1_se<= data_in_se(7

115、downto 4);</p><p>  Data0_se<= "0000";--data_in_se(3 downto 0);</p><p>  Data2_ce<= data_in_ce_r(11 downto 8);</p><p>  Data1_ce<= data_in_ce_r(7 downto 4);<

116、/p><p>  Data0_ce<= data_in_ce_r(3 downto 0);</p><p><b>  end if;</b></p><p>  end process;</p><p>  --為位碼掃描 時(shí)間</p><p>  process(CLK,RE

117、SET) </p><p>  variable count : integer range 0 to 100000:=0;</p><p><b>  begin</b></p><p>  if RESET='0' then null;</p><p>  elsif rising_edge(CLK)

118、 then</p><p>  if count>=20000 then </p><p><b>  count:=0;</b></p><p>  clk_scan<=not clk_scan;</p><p><b>  else </b></p><p>

119、  count:=count+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  --位碼掃描控制</b></p><p>

120、;  process(clk_scan,RESET) </p><p><b>  begin</b></p><p>  if RESET='0' then null;</p><p>  elsif rising_edge(clk_scan) then</p><p>  if dispcnt = &

121、quot;100000" then</p><p>  dispcnt <= "000000";</p><p><b>  else </b></p><p>  dispcnt<=dispcnt+1;</p><p><b>  end if;</b>

122、</p><p><b>  end if;</b></p><p>  end process;</p><p><b>  --顯示控制</b></p><p>  process(dispcnt,RESET)</p><p><b>  begin</

123、b></p><p>  if RESET='0' then </p><p>  BIT8<="11111111";</p><p><b>  else</b></p><p>  case dispcnt is</p><p>  when &

124、quot;000001" =>dis_data<=CONV_INTEGER(Data2_se); BIT8<="01111111";DOT<='1';</p><p>  when "000010" =>dis_data<=CONV_INTEGER(Data1_se);BIT8<="101

125、11111";DOT<='1'; </p><p>  when "000011" =>dis_data<=CONV_INTEGER(Data0_se); BIT8<="11011111";DOT<='1'; </p><p>  when "000100"

126、; =>dis_data<=15; BIT8<="11101111";DOT<='1';--P </p><p>  when "000101" =>dis_data<=CONV_INTEGER(Data2_ce); BIT8<="11110111";DOT<=

127、9;1';</p><p>  when "000110" =>dis_data<=CONV_INTEGER(Data1_ce);BIT8<="11111011";DOT<='1'; </p><p>  when "000111" =>dis_data<=CONV_

128、INTEGER(Data0_ce); BIT8<="11111101";DOT<='1'; </p><p>  when "001000" =>dis_data<=15; BIT8<="11111110";DOT<='1';--P </p>

129、<p>  when others =>dis_data<=17; BIT8<="11111110";DOT<='1';--空 不顯示</p><p><b>  end case;</b></p><p><b>  end if;</b>&l

溫馨提示

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

評(píng)論

0/150

提交評(píng)論