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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  專業課程設計報告</b></p><p><b>  題目:單片機應用</b></p><p><b>  目錄</b></p><p>  1、課程設計功能描述3</p><p>  2、課程設計分析3</p><p>

2、;  3、課程設計用資料4</p><p>  3.1、數字調節器介紹4</p><p>  3.2、SPI總線簡介5</p><p>  3.3、74HC595、TLC1543、TLC5615芯片簡介6</p><p>  3.3.1、74HC595簡介6</p><p>  3.3.2、TLC1543的簡

3、介8</p><p>  3.3.3、TLC5615的簡介10</p><p>  4、硬件電路原理圖設計12</p><p>  5、硬件電路PCB板圖設計13</p><p>  6、數字PID控制算法14</p><p>  6.1、抗積分飽和數字PID控制算法原理14</p><

4、p>  6.2、抗積分飽和數字PID控制算法流程圖17</p><p>  6.3積分飽和數字PID控制算法源程序18</p><p>  7、調試運行結果及分析19</p><p>  8、課程設計經驗教訓和心得體會19</p><p><b>  附錄22</b></p><p&g

5、t;  1、課程設計功能描述</p><p>  設計一個用于過程控制的通用數字調節器。數字調節器接收變送器提供的標準的4~20mA反饋信號,與標準的4~20mA給定值或直接設置的給定值進行比較,對其誤差進行數字PID運算,輸出標準的4~20mA控制信號給執行機構。</p><p>  圖1、數字調節器使用圖</p><p>  圖2、數字調節器硬件系統框圖<

6、/p><p><b>  2、課程設計分析</b></p><p><b>  要求:</b></p><p>  1、數字調節器采用8位靜態LED顯示:高四位顯示給定值或參數名,低四位顯示反饋值或參數值。</p><p>  2、數字調節器采用4個按鍵的組合進行參數設置和控制。</p>

7、<p>  3、數字調節器有一路4~20mA的輸入端:用于在串級控制時接收上一級的給定信號。</p><p>  4、數字調節器有一路4~20mA的輸出端:用于輸出控制器的控制信號給執行機構。</p><p>  5、數字調節器采用485通訊:可以與上位機進行組態通訊。</p><p>  6、數字調節器采用抗積分飽和數字PID控制算法。</p>

8、;<p>  7、數字調節器采用DC12V供電,采用10位A/D轉換器TLC1543,采用10位D/A傳感器TLC5615,采用74HC595進行靜態顯示的設計。</p><p>  數字調節器的工作都是在硬件環境下,由微處理器執行程序完成。數字調節器的軟件包括監控管理程序和應用程序兩大部分。通用數字調節器的設計主要核心是單片機,通過單片機來控制輸入和輸出量。由圖1-2可知:考慮帶單片機的管腳是有限

9、的,所以要采用總線技術。在此設計中我們采用了SPI總線技術。要想符合設計要求,就要盡可能的節省管腳,A/D轉換和D/A轉換都要用串行的。8位LED顯示采用的是串口的74HC595芯片。進而使單片機的資源得到充分的利用。</p><p>  給定量和變送器輸出的都是標準的電流量,要通過電流轉成A/D可以處理的電壓量。由于單片機處理的是數字量,我們要將標準的模擬量通過A/D轉換,把已知的模擬量轉成單片機可以處理的數字

10、量。調節器輸出要控制執行器,而執行器所需要的是模擬量,通過D/A轉換把單片處理后的數字量裝換成標準的模擬量給執行器。但是D/A輸出的是電壓量,所以采用電壓轉換成電流電路,把A/D輸出的電壓量轉換成執行機構所需要的標準的電流量。</p><p>  單片機的供電電壓是DC5V,給定的電源是DC12V。通過穩壓芯片把DC12V變成DC5V。需要用7805芯片整定成DC5V來給單片機供電。</p><

11、;p><b>  3、課程設計用資料</b></p><p>  3.1、數字調節器介紹</p><p>  用數字技術和微電子技術實現閉環控制的調節器,又稱數字調節儀表,是數字控制器的一種。它接受來自生產過程的測量信號,由內部的數字電路或微處理機作數字處理,按一定調節規律產生輸出數字信號或模擬信號驅動執行器,完成對生產過程的閉環控制。</p>&

12、lt;p>  數字調節器分為數字式混合比率調節器、多回路調節器和單回路調節器三類。  ?、佟底质交旌媳嚷收{節器 它是控制組分混合比的儀表。它與流量計、執行器配套構成混合比率控制系統和混合-批量控制系統,用于液料混合配比和混合產品的批量發貨系統。  ?、凇《嗷芈氛{節器 用微處理機實現多回路調節功能的儀表。它可獨立應用于單元性生產裝置(如工業爐窯、精餾塔等)中,完成裝置的全部或大部分控制作用。由于單元性裝置的類型很多,多回路調節器的

13、品種和類型也很繁雜。一臺多回路調節器可控制 8~16個調節回路,有的還可完成簡單的程序控制或批量控制。  ?、邸位芈氛{節器 用微處理機實現一個回路調節功能的儀表。它只有一個可送到執行器去完成閉環控制的輸出。單回路調節器有兩種主要用途:一是用于系統的重要回路,以提高系統的可靠性和安全性;一是取代模擬調節器,以減少盤裝儀表的數量或提高原有回路的功能,如實現單回路的高級控制、順序控制、批量控制。</p><p>  

14、3.2、SPI總線簡介</p><p>  MOTOROLA公司的SPI總線的基本信號線為3根傳輸線,即SI、SO、SCK。傳輸的速率由時鐘信號SCK決定,SI為數據輸入、SO為數據輸出。采用SPI總線的系統如圖8-27所示,它包含了一個主片和多個從片,主片通過發出片選信號-CS來控制對哪個從片進行通信,當某個從片的-CS信號有效時,能通過SI接收指令、數據,并通過SO發回數據。而未被選中的從片的SO端處于高阻狀

15、態。</p><p>  主片在訪問某一從片時,必須使該從片的片選信號有效;主片在SCK信號的同步下,通過SI線發出指令、地址信息;如需將數據輸出,則接著寫指令,由SCK同步在SI線上發出數據;如需讀回數據,則接著讀指令,由主片發出SCK,從片根據SCK的節拍通過SO發回數據。</p><p>  因而對具有SPI接口的從片器件來講,SCK、SI是輸入信號,SO是輸出信號。SCK用于主片和

16、從片通信的同步。SI用于將信息傳輸到器件,輸入的信息包括指令、地址和數據,指令、地址和數據的變化在SCK的低電平期間進行,并由SCK信號的上升沿鎖存。SO 用于將信息從器件傳出,傳出的信息包括狀態和數據,信息在SCK信號的下降沿移出。</p><p>  器件的讀操作。當-CS信號有效時,在SCK信號的同步下,8位的讀指令送入器件,接著送入16位地址(由于25XX320只使用地址信號 A0~A11,地址的高4位無

17、效)。在讀指令和地址發出后,SCK繼續發出時鐘信號,此時存儲在該地址的數據由SCK控制從SO引腳移出。在每個數據移出后,內部的地址指針自動加1,如繼續對器件發送SCK信號,可讀出下一個數據。當地址指針計到0FFFH之后,將回到0000H。讀操作的結束由-CS信號變高實現。 25XX系列的串行EEPROM的寫操作通過寫允許及禁止指令控制,寫操作必須在器件處于寫允許狀態時進行。</p

18、><p>  寫允許及禁止指令均為8位的指令,指令的操作過程為:將-CS信號置為低電平,在SCK信號的作用下,通過SI引腳輸入上述指令,在8位的指令送入器件之后,將-CS信號置為高電平,使器件鎖存于寫允許或寫禁止狀態。如在輸入寫允許指令后未將-CS信號置為高電平,則寫允許狀態未鎖存,此時如直接進行寫操作,數據將不能寫入存儲器。在上電、寫禁止指令、寫狀態寄存器指令、寫數據指令執行之后,器件的寫允許狀態將被復位,即處于寫

19、禁止狀態。</p><p>  寫操作通常在寫允許指令之后進行,其時序如圖8-30所示。在寫允許狀態鎖存后,將-CS變高;再將-CS變低,在SCK的同步下輸入寫操作指令并送入16位地址,緊接著發送需寫入的數據,寫入的數據一次最多可達32個,但必須保證在同一頁內。一頁數據的地址從XXXX XXXX XXX0 0000 開始,到XXXX XXXX XXX1 1111結束,當內部的地址指針計數器達到XXXX XXXX

20、XXX1 1111后,繼續發送時鐘信號將使地址計數器回復到該頁的第一個地址,即XXXX XXXX XXX0 0000H。</p><p>  為了使數據有效寫入,-CS信號只能在寫入數據的最后一個字節的最低位寫入后變高。如-CS信號在其他時間變高,將無法保證數據的完整寫入。在寫操作的過程中,能通過讀狀態指令將狀態寄存器的內容讀回,當寫操作完成后,寫允許鎖存狀態將被復位。</p><p> 

21、 3.3、74HC595、TLC1543、TLC5615芯片簡介</p><p>  3.3.1、74HC595簡介</p><p>  74HC595是硅結構的CMOS器件, 兼容低電壓TTL電路,遵守JEDEC標準。 74HC595是具有8位移位寄存器和一個存儲器,三態輸出功能。 移位寄存器和存儲器是分別的時鐘。 數據在SHcp的上升沿輸入到移位寄存器中,在STcp的上升沿輸入到存儲寄

22、存器中去。如果兩個時鐘連在一起,則移位寄存器總是比存儲寄存器早一個脈沖。移位寄存器有一個串行移位輸入(Ds),和一個串行輸出(Q7’),和一個異步的低電平復位,存儲寄存器有一個并行8位的,具備三態的總線輸出,當使能OE時(為低電平),存儲寄存器的數據輸出到總線。8位串行輸入/輸出或者并行輸出移位寄存器,具有高阻關斷狀態。三態。將串行輸入的8位數字,轉變為并行輸出的8位數字,例如控制一個8位數碼管,將不會有閃爍。</p>&

23、lt;p>  74HC595的特點;8位串行輸入 /8位串行或并行輸出 存儲狀態寄存器,三種狀態   輸出寄存器(三態輸出:就是具有高電平、低電平和高阻抗三種輸出狀態的門電路。)可以直接清除 100MHz的移位頻率。</p><p>  74HC595的輸出能力;并行輸出,總線驅動; 串行輸出;標準中等規模集成電路595移位寄存器有一個串行移位輸入(Ds),和一個串行輸出(Q7’),和一個異步的低電平復位,

24、存儲寄存器有一個并行8位的,具備三態的總線輸出,當使能OE時(為低電平),存儲寄存器的數據輸出到總線。   參考數據   Cpd決定動態的能耗,   Pd=Cpd×VCC×f1+∑(CL×VCC^2×f0)   F1=輸入頻率,CL=輸出電容 f0=輸出頻率(MHz) Vcc=電源電壓。</p><p>  74HC595的引腳說明;</p><p>

25、;  符號 引腳 描述   </p><p>  Q0…Q7 第15腳, 1, 7 并行數據輸出   </p><p>  GND 第8腳 地   </p><p>  Q7’ 第9腳 串行數據輸出   </p><p>  MR 第10腳 主復位(低電平)   </p><p>  SHCP 第11腳 移位寄存器時鐘

26、輸入   </p><p>  STCP 第12腳 存儲寄存器時鐘輸入   </p><p>  OE 第13腳 輸出有效(低電平)   </p><p>  DS 第14腳 串行數據輸入   </p><p>  VCC 第16腳 電源</p><p><b>  。</b></p>

27、<p>  74HC595的功能表;  </p><p>  74HC595的注釋;</p><p>  H=高電平狀態   </p><p>  L=低電平狀態   </p><p><b>  ↑=上升沿   </b></p><p><b>  ↓=下降沿   <

28、;/b></p><p><b>  Z=高阻   </b></p><p><b>  NC=無變化   </b></p><p><b>  ×=無效   </b></p><p>  當MR為高電平,OE為低電平時,數據在SHCP上升沿進入移位寄存器,在S

29、TCP上升沿輸出到并行端口。</p><p>  3.3.2、TLC1543的簡介</p><p>  TLC1543 是由TI 公司開發的開關電容式AD 轉換器,該芯片具有如下的一些特點:10 位精度、11 通道、三種內建的自測模式、提供EOC(轉換完成)信號等。該芯片與單片機的接口采用串行接口方式,引線很少,與單片機連接簡單。圖1 是TLC1543 的引腳示意圖,其中A0~A10 是1

30、1路輸入,Vcc 和GND 分別是電源引腳,REF+和REF-分別是參考電源的正負引腳,使用時一般將REF-接到系統的地,達到一點接地的要求,以減少干擾。其余的引腳是TLC1543 與CPU 的接口,其中CS 為片選端,如不需選片,可直接接地。I/O Clock 是芯片的時鐘端,Adress 是地址選擇端,Data Out 是數據輸出端,這三根引腳分別接到CPU 的三個I/O 端即可。EOC 用于指示一次AD 轉換已完成,CPU 可以讀

31、取數據,該引腳是低電平有效,根據需要,該引腳可接入CPU 的中斷引腳,一旦數據轉換完成,向CPU 提出中斷請求;此外,也可將該引腳接入一個普通的I/O 引腳,CPU 通過查詢該引腳的狀態來了解當前的狀態,甚至該引腳也可以不接,在CPU 向TLC1543發出轉換命令后,過一</p><p>  TLC1543的硬件結構</p><p>  單片機與TLC1543 芯片的接口如圖3,從圖中可以

32、看出,這里使用了TLC1543 作為基準電壓源,將REF-直接接地,P1.0、P1.1、P1.2、P1.3 和P1.4 分別與EOC、時鐘、地址、數據、片選端分別相連。</p><p>  在六位數碼管的后四位數碼管上輪流顯示TLC1543 各通道的測量值,同時用十六進制表示的通道號顯示在第1 位數碼管上。</p><p>  圖3 使用TLC1543 制作的多路輸入電壓表電路圖</

33、p><p>  TLC1543的軟件設計</p><p>  由于采用串行接口,在硬件電路簡單的同時,帶來了軟件編制的復雜性,初學單片機的入門者很難掌握這類芯片的編程方法,這給此類芯片的應用帶來一定的限制。為解決這一問題,我們在實際應用該芯片的基礎上寫出了該芯片的驅動程序,有了驅動程序,使用者不必再關心TLC1543 數據手冊中的時序圖之類不易懂的部份,只要了解清楚驅動程序的用法,即可使用該芯

34、片。TLC1543 共有11 條輸入通道,這11 條通道的編號從0~10,讀取時根</p><p>  據編號來獲得想應通道的數據。</p><p>  3.3.3、TLC5615的簡介</p><p>  TLC5615 為美國德州儀器公司 1999 年推出的產品,是具有串行接口的數模轉換器,其輸出為電壓型,最大輸出電壓是基準電壓值的兩倍。帶有上電復位功能,即把

35、DAC 寄存器復位至全零。性能比早期電流型輸出的 DAC 要好。只需要通過 3 根串行總線就可以完成 10 位數據的串行輸入, 易于和工業標準的微處理器或微控制器(單片機) 接口, 適用于電池供電的測試儀表、移動電話,也適用于數字失調與增益調整以及工業控制場合。</p><p>  TLC5615器件的引腳圖及各引腳功能</p><p>  DIN: 串行數據輸入端; </p>

36、<p>  SCLK: 串行時鐘輸入端;   </p><p>  /CS: 芯片選用通端,低電平有效;   </p><p>  DOUT: 用于級聯時的串行數據輸出端;   </p><p>  AGND: 模擬地;   </p><p>  REFIN:基準電壓輸入端, 2V~ (VDD - 2);   </p>

37、;<p>  OUT: DAC 模擬電壓輸出端;   </p><p>  VDD: 正電源端,4.5~5.5V ,通常取 5V。</p><p>  TLC5615的功能框圖</p><p>  TLC5615 的內部功能框圖如下圖所示,它主要由以下幾部分組成:   1、 10 位 DAC 電路;   2、 一個 16 位移位寄存器, 接受串行移入的

38、二進制數,并且有一個級聯的數據輸出端DOUT ;   3、 并行輸入輸出的 10 位 DAC 寄存器, 為 10 位 DAC 電路提供待轉換的二進制數據;   4、電壓跟隨器為參考電壓端REFIN提供很高的輸入阻抗,大約10MΩ;   5、×2 電路提供最大值為 2 倍于 REFIN 的輸出;   6、上電復位電路和控制電路。 </p><p>  TLC5615功能框圖</p><

39、p>  兩種工作方式: (A)從上圖可以看出,16 位移位寄存器分為高 4 位虛擬位、低兩位填充位以及 10位有效位。在單片 TLC5615 工作時,只需要向 16 位移位寄存器按先后輸入 10位有效位和低 2 位填充位, 2 位填充位數據任意,這是第一種方式,即 12 位數據序列。 (B)第二種方式為級聯方式, 即 16 位數據列,可以將本片的 DOU T 接到下一片的 DIN , 需要向 16 位移位寄存器按先后輸入高 4 位

40、虛擬位、10 位有效位和低 2 位填充位, 由于增加了高 4 位虛擬位, 所以需要 16 個時鐘脈沖。</p><p>  TLC5615的工作時序</p><p>  TLC5615 工作時序如上圖所示。 可以看出,只有當片選 CS 為低電平時, 串行輸入數據才能被移入16位 </p><p>  TLC5615工作時序</p><p> 

41、 移位寄存器。當 CS 為低電平時,在每一個 SCLK 時鐘的上升沿將 DIN 的一位數據移入 16 位移寄存器。注意, 二進制最高有效位被導前移入。接著,CS 的上升沿將 16 位移位寄存器的 10 位有效數據鎖存于 10 位 DAC 寄存器, 供 DAC 電路進行轉換; 當片選 CS 為高電平時,串行輸入數據不能被移入 16 位移位寄存器。注意, CS 的上升和下降都必須發生在 SCL K 為低電平期間。</p>&l

42、t;p>  3.4、電壓轉電流電路介紹</p><p>  常用電壓轉換電流的電路:</p><p><b>  電壓轉電流電路</b></p><p>  如圖3所示的電路是電壓轉電流電路的一種,其工作原理為:</p><p><b>  (1)</b></p><p&g

43、t;  由運算放大器的工作原理可知:</p><p><b>  (2)</b></p><p><b>  (3)</b></p><p>  聯合公式1、2、3得到:</p><p>  電阻R2兩端的電壓為:</p><p>  電阻R2兩端的電流為:</p>

44、;<p>  因為運算放大器輸入的高阻狀態:</p><p>  因此,如果:為1~5V,,則輸出電流為4~20mA。</p><p>  4、硬件電路原理圖設計</p><p>  在Protel99SE中,在使用鼠標右鍵功能時,必須非??焖俚卦谑髽擞益IClick,才能彈出右鍵菜單。稍慢一些菜單就彈不出來,這與一般軟件不同,要特別注意。 在Pro

45、tel99SE中,為方便使用自定義畫圖HotKeys和工具條及菜單, 可在原理圖編輯界面下分別定義SDC_SchHotKeys,SDC_SchToolbars,SDC_SchMenus, 而在原理圖庫文件編輯中可通過在Customize中的Menu功能中直接Import前面在原理圖編輯中定義的SDC_SchHotKeys,SDC_SchToolbars,SDC_SchMenus. 同

46、樣, 在PCB編輯界面下分別定義SDC_PcbHotKeys,SDC_PcbToolbars,SDC_PcbMenus, 而在原理圖庫文件編輯中可通過在Customize中的Menu功能中直接Import前面在PCB圖編輯中定義的SDC_PcbHotKeys,SDC_PcbToolbars,SDC_PcbMenus.</p><p>  5、硬件電路PCB板圖設計</p><p>  在P

47、CB中, 當某些元件的Pad用手工定義的方法賦以NetLabels時, 當在SCH中重新UPDATE PCB后, 自定義的網絡標號被清掉。但有一好方法可快速恢復被清掉的手式網絡標號,即用F8刪除此元件,然后緊接著按恢復鍵,則不僅被刪掉的元件被恢復了,并且被Update PCB清掉的網絡標號也被恢復了。</p><p>  特別注意:在PROTEL 99SE自定義的快捷鍵、工具欄等信息均保存在C:\WINDOWS

48、\下的CLIENT99SE.RCS文件中,所以,只要經常保存CLIENT99SE.RCS文件, 則在重裝系統后, 在安裝PROTEL 99SE后, 將此CLIENT99SE.RCS文件再拷貝到C:\WINDOEWS\下, 即可恢復以前設置的各種快捷鍵等。注意: 在恢復自定義工具欄時, 用到的自定義的圖標文件*.bmp, 必須要拷貝到C:\Program Files\Design Explorer 99 SE\System\But

49、tons\子目錄下。by Dancheng Shen, January 14, 2006. Nanjing</p><p>  注意:在安裝PCB中文輸入功能后, 有可能影響菜單的設置, 一些功能少了, 一些功能變了. 如Print/Preview. 要恢復. 菜單,工具欄和快捷鍵的設置存放在C:\Windows\CLIENT99SE.rcs文件中. 應先保存原英文菜單.熱鍵和菜單及工具欄的自定義方法類似,

50、 都是在Customsize中找出相關功能的PROCESSING.</p><p>  重要的快捷鍵,HotKey: Q - 切換坐標單位mil和mm。 L - 設置Design/Options, 主要經常用于在Imperial和Metric下定義Visible Grid和Snap Grid。 一般為,英制:Visible grid=25mil,1000mil, Snap grid=25mil; 公制

51、:Visible grid=0.1mm,1mm, Snap grid=0.05mm(對顯示模塊PCB)。 Edit/Origin/Set - 可將當前坐標設置為Current Origin。這樣的好處是,坐標原點是(0,0),可對稱布局,在設計顯示模塊PCB時特別有用,因為對英制和公制都是原點。在設計模塊PCB時,將(10000mil,10000mil)設置為新的原點(0,0)。在用Reset可恢復原來的坐標系統,即左下角坐標為

52、(0,0)。 Edit/Jump/Current Origin - 可使圖直接跳回到(0,0)。這個功能會經常使用,所以可以設一個快捷鍵F2,直接跳回到當前原點。 按住鼠標右鍵可移動屏幕。 元件和Track均可在屬性</p><p>  6、數字PID控制算法</p><p>  6.1、抗積分飽和數字PID控制算法原理</p><p>  模擬PI

53、D控制系統組成</p><p>  圖4-1模擬PID控制系統原理框圖</p><p>  PID調節器的微分方程 </p><p><b>  (1)</b></p><p>  式中 (2)</p><p>  PID調節器的

54、傳遞函數</p><p><b>  (3)</b></p><p>  由于數字PID控制是一種采樣控制,他只能根據采樣時刻的誤差來計算控制量。在采樣的時刻(T為采樣周期,為正整數),經歷離散化后可得位置式算法公式</p><p><b>  (4)</b></p><p>  式中:k為采樣序號

55、,k=0,1,2,……;u(k)為第k次采樣時刻的計算機輸出值:e(k)為第k次采樣時刻輸入的偏差值;微積分系數,;為微分系數,。</p><p>  積分飽和現象是指如果系統存在一個方向的偏差,PID控制器的輸出由于積分作用的不斷累加而加大,從而導致執行機構達到極限位置,若控制器輸出繼續增大,執行器開度不可能再增大,此時計算機輸出控制量超出了正常運行范圍而進入飽和區。一旦系統出現反向偏差,逐漸從飽和區退出。進入

56、飽和區越深則退出飽和區時間越長。在這段時間里,執行機構仍然停留在極限位置而不隨偏差反向而立即做出相應的改變,這時系統就像失控一樣,造成控制性能惡化,這種現象稱為積分飽和現象或積分失控現象。    防止積分飽和的方法之一就是抗積分飽和法,該方法的思路是在計算時,首先判斷上一時刻的控制量是否已經超出了極限范圍: 如果,則只累加負偏差; 如果,則只累加正偏差。從而避免控制量長時間停留在飽和區。</p>&l

57、t;p>  6.2、抗積分飽和數字PID控制算法流程圖</p><p>  6.3積分飽和數字PID控制算法源程序</p><p>  float u1;// 當前輸出量</p><p>  float u2;//上一時刻輸出量</p><p>  float e1;//當前誤差</p><p>  float

58、e2;//上一時刻的誤差</p><p>  float k=0.2,i=0.1,d=0.2;//初始化三個控制參數</p><p>  float PID()</p><p><b>  {</b></p><p>  float pd,ee;</p><p>  char flag;</

59、p><p>  pd=k*e1+d*(e1-e2);</p><p>  ee=ee+e1; //積分項累加</p><p>  if(u2≥Umax)</p><p><b>  {</b></p><p><b>  if(e1>0)</b></p>&l

60、t;p><b>  {</b></p><p><b>  flag=0;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

61、<p><b>  flag=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p

62、><p>  if(u2≤Umin)</p><p><b>  {</b></p><p><b>  if(e1>0)</b></p><p><b>  {</b></p><p><b>  flag=0;</b><

63、/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  flag=1;</b></p><p><b>  }</b>

64、</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  flag=1;</b></p><p><b>  }</b

65、></p><p><b>  }</b></p><p>  u1=pd+flag*ee;</p><p><b>  u2=u1;</b></p><p>  e2=e1; //參數更新</p><p>  return u1;</p><p&g

66、t;<b>  }</b></p><p>  7、調試運行結果及分析</p><p>  數字調節器的變成相對的是簡單的,通過4個按鍵的組合進行參數設置和控制。采用8位靜態LED顯示:高四位顯示給定值或參數名,低四位顯示反饋值或參數值。通過485通訊可以與上位機進行通訊。</p><p>  這里面最難得是PID控制,進行對三個參數的整定是最

67、麻煩的。要做到最好就要有足夠的耐心,而且還要要求上升時間最小、超調量不能太大、調整時間不要太長等等。要實現這樣的功能要不斷的調試。</p><p>  8、課程設計經驗教訓和心得體會</p><p>  作為一名自動化專業的大三學生,我覺得做單片機課程設計是十分有意義的,而且是十分必要的。在已度過的大學時間里,我們大多數接觸的是專業課。我們在課堂上掌握的僅僅是專業課的理論知識,如何去鍛煉我

68、們的實踐能力?如何把我們所學的專業基礎課理論知識運用到實踐中去呢?我想做類似的課程設計就為我們提供了良好的實踐平臺。 這次單片機課程設計我們歷時兩個星期,在我班里算是倒數幾組完成的吧,但經過這兩個星期的實踐和體驗下來,我們又怎么會去在乎那個先后問題呢,因為對我來說學到的不僅是那些知識,更多的是團隊和合作?,F在想來,也許學校安排的課程設計有著它更深層的意義吧,它不僅僅讓我們綜合那些理論知識來運用到設計和創新,還讓我們知道了

69、一個團隊凝聚在一起時所能發揮出的巨大潛能! 單片機作為我們的主要專業課之一,雖然在大三開學初我對這門課并沒有什么興趣,覺得那些程序枯燥乏味,但在這次課程設計后我發現自己在一點一滴的努力中對單片機的興趣也在逐漸增加。 幾個星期前我們還在為到底選那個課題而發生分歧,最后還是在老師的耐心分析和指導下完成了課題的選定,但是隨之而來的問題卻遠比我們想想的要困</p><p><b>  附錄

70、</b></p><p>  附錄1、數字調節器原理圖</p><p>  附錄2.、數字調節器PCB板圖</p><p>  附錄3、數字調節器部分源程序(A/D采集、D/A輸出,靜態顯示)</p><p>  1、 1543A/D采集源程序</p><p>  ADC: MOV A,#0&

71、lt;/p><p><b>  MOV R2,A</b></p><p><b>  CLR P1.2</b></p><p><b>  CLR P1.4</b></p><p><b>  MOV A,R2</b></p><p&g

72、t;<b>  RLC A</b></p><p><b>  MOV R7,#4</b></p><p>  C_L1: RLC A</p><p>  MOV P1.0,C</p><p><b>  SETB P1.2</b></p><p

73、><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  CLR P1.2</b></p><p>  DJNZ R7,C_L1</p><p><b>  MOV R7,#6</b></p>

74、<p>  C_L2: SETB P1.2</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p&

75、gt;<p><b>  CLR ADClk</b></p><p>  DJNZ R7,C_L2</p><p><b>  SETB P1.4</b></p><p><b>  NOP</b></p><p><b>  NOP</b>

76、</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  CLR P1.4</b></p><p><b>  NOP</b></p><p><b>  NOP

77、</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  SETB P1.1</b></p><p><b>  SETB P1.2</b></p><p&

78、gt;<b>  MOV P1.1</b></p><p>  MOV ACC.1,C</p><p><b>  CLR P1.2</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p>&l

79、t;p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  SETB P1.1</b></p><p><b>  SETB P1.2</b></p><p>  MOV C,P1.1</p>

80、;<p>  MOV ACC.0,C</p><p><b>  CLR P1.2</b></p><p>  ANL A,#00000011B </p><p><b>  MOV R0,A</b></p><p><b>  MOV R7,#8</b><

81、/p><p>  C_L3: NOP</p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  SETB P1.1</b>

82、</p><p><b>  SETBP1.2</b></p><p>  MOV C,P1.1</p><p>  MOV ACC.0,C</p><p><b>  RLC A</b></p><p><b>  CLR P1.2</b></p

83、><p>  DJNZ R7,C_L3</p><p><b>  SETB P1.4</b></p><p><b>  MOV R1,A</b></p><p><b>  RET</b></p><p>  2、D/A輸出程序:</p>

84、<p>  #include<reg52.h></p><p>  #include<intrins.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit clk=P1^0;<

85、;/p><p>  sbit addr=P1^1;</p><p>  sbit cs2=P1^3;</p><p>  void DA(uint dd)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><

86、p>  uint temp;</p><p><b>  temp=dd;</b></p><p><b>  temp<<=6;</b></p><p><b>  clk=0;</b></p><p><b>  cs2=0;</b>

87、</p><p>  for(i=0;i<12;i++)</p><p><b>  {</b></p><p>  addr=(bit)(temp&0x80);</p><p><b>  clk=1;</b></p><p><b>  temp&

88、lt;<=1;</b></p><p><b>  clk=0;</b></p><p><b>  }</b></p><p><b>  cs2=1;</b></p><p><b>  }</b></p><p&

89、gt;  3、 靜態顯示源程序</p><p>  #include <reg51.h></p><p>  #include <intrins.h></p><p>  #define  NOP() _nop_()</p><p>  void delay(

90、unsigned int i);</p><p>  Unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};</p><

91、p><b>  main()</b></p><p><b>  {  </b></p><p>  unsigned int LedNumVal=1 ,C ;</p><p><b>  while(1)</b></p>

92、<p><b>  {      </b></p><p>  if (++C>= 300) </p><p>  { LedNumVal++ ;</p><p>  C =0;  

93、60;                   }     </p><p>  P0 = LED7Code[LedNumVal%10]&0x7f;&l

94、t;/p><p>  delay(150);            }   </p><p>  }            &

95、#160;                       </p><p>  void delay(unsigned int i)</p>&

96、lt;p><b>  {</b></p><p><b>  char j;</b></p><p>  for(i; i > 0; i--)</p><p>  for(j = 200; j > 0;&#

97、160;j--);</p><p><b>  }</b></p><p>  unsigned int ADCSelChannel(unsigned char Channel)</p><p><b>  {</b></p><p>  unsigned&#

98、160;int ConvertValue;</p><p>  unsigned char i, Chan;</p><p>  unsigned char ConvertValueL, ConvertValueH;</p><p>  unsigned char delay;

99、</p><p>  ConvertValueL = ConvertValueH = 0; </p><p>  delay = 0;</p><p><b>  if (EOC)</b></p><p><b>  {</b

100、></p><p>  Clock = 0;</p><p>  ChipSelect = 1;</p><p><b>  Wait2us;</b></p><p>  ChipSelect = 0;</p><p><b&

101、gt;  Wait2us;</b></p><p>  Channel = Channel << 4;</p><p>  for (i = 0; i < 4; i ++) </p><p><b>

102、;  {</b></p><p>  Chan = Channel;</p><p>  Chan = Chan >> 7;</p><p>  DataIn = (bit)Chan;</p><p><b>  Wait2us;

103、</b></p><p>  Clock = 1;</p><p>  Clock = 0;</p><p>  Channel = Channel << 1;</p><p><b>  }</b></p>

104、;<p>  for (i = 0; i < 6;i ++)</p><p><b>  {</b></p><p>  Clock = 1;</p><p>  Clock = 0;</p><

105、p><b>  }</b></p><p>  ChipSelect = 1;</p><p>  while ((!EOC) && (delay < 10))</p><p><b>  {</b></p>&

106、lt;p><b>  Wait10us;</b></p><p><b>  delay ++;</b></p><p><b>  }</b></p><p>  if (delay == 10)</p><p><b>

107、;  {</b></p><p>  return (0xFFFF);</p><p><b>  }</b></p><p><b>  Else</b></p><p><b>  Wait10us;</b></p><p> 

108、 Clock = 0;</p><p>  ChipSelect = 1;</p><p><b>  Wait1us;</b></p><p>  ChipSelect = 0;</p><p><b>  Wait1us;</b><

109、;/p><p>  for (i = 0; i < 2; i ++) </p><p>  Clock = 1;</p><p>  DataOut = 1;</p><p>  ConvertValueH

110、60;<<= 1;</p><p>  if (DataOut)</p><p>  ConvertValueH |= 0x1;</p><p>  Clock = 0;</p><p><b>  Wait1us;</b></p>&

111、lt;p><b>  } </b></p><p>  for (i = 0; i < 8; i ++) </p><p><b>  {</b></p><p>  Clock = 1;&l

112、t;/p><p>  DataOut = 1;</p><p>  ConvertValueL <<= 1;</p><p>  ConvertValueL |= 0x1;</p><p>  Clock = 0;</p><p>

113、<b>  Wait1us;</b></p><p><b>  } </b></p><p>  ChipSelect=1;</p><p>  ConvertValue = ConvertValueH;</p><p>  ConvertValue <

114、;<= 8;</p><p>  ConvertValue |= ConvertValueL;</p><p>  return (ConvertValue);</p><p><b>  }</b></p><p><b>  }</b></p&

溫馨提示

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

評論

0/150

提交評論