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

下載本文檔

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

文檔簡介

1、<p><b>  課 程 設 計</b></p><p><b>  課程設計任務書</b></p><p>  題 目: 環(huán)境溫度測試例程設計</p><p><b>  初始條件:</b></p><p>  課程設計使用ZG211硬件綜合實驗平臺(805

2、1單片機),配有課程設計接口芯片和輔助芯片以及器件;</p><p>  ZG211有程序設計集成開發(fā)環(huán)境,程序設計語言為C語言;</p><p>  ZG211硬件綜合實驗平臺使用說明書;</p><p>  要求完成的主要任務: (包括課程設計工作量及其技術要求,撰寫說明書具體要求)</p><p>  學習使用ZG211硬件綜合實驗平臺

3、,程序設計集成開發(fā)環(huán)境;</p><p>  根據課程設計題目,進行需求分析,搞清楚課程設計需要設計需求和需要解決的設計內容。</p><p>  查閱和學習課程設計題目需要的接口芯片資料,掌握接口芯片的使用方法和編程要領。查閱和學習課程設計題目需要的輔助芯片以及器件資料。</p><p>  設計接口芯片和輔助芯片以及器件與8051單片機連接硬件電路原理圖。<

4、;/p><p>  設計與硬件電路原理圖對應的C語言程序(或8051匯編語言)。給出程序流程圖。在集成開發(fā)環(huán)境中調試程序。給出程序的詳細注釋。能夠解釋使用程序模擬電路時序信號和數據。</p><p>  撰寫課程設計報告,1)詳細陳述以上的設計過程;2)詳細陳述電路的調試過程。</p><p><b>  時間安排:</b></p>

5、<p><b>  第18周:</b></p><p>  熟悉ZG211硬件綜合實驗平臺,KEILC UVISION2 集成開發(fā)環(huán)境;查閱接口芯片資料,熟悉接口芯片和它的使用方法。</p><p>  設計硬件電路原理圖,。</p><p><b>  第19周:</b></p><p>

6、;  使用C語言或匯編語言設計和調試接口程序。</p><p>  撰寫計算機硬件綜合設計報告。</p><p>  指導教師簽名: 年 月 日</p><p>  系主任(或責任教師)簽名: 年 月 日</p><p><b>  

7、環(huán)境溫度測試</b></p><p><b>  1 實驗目的</b></p><p>  1.1掌握I/O接口操作;</p><p>  1.2掌握顯示及鍵盤芯片的運用;</p><p>  1.3了解中斷的運用;</p><p>  1.4了解單總線操作。</p>&

8、lt;p>  應用計算機組成原理、數字邏輯、微機原理與接口技術、單片機原理、C語言程序設計等相關專業(yè)知識來學習和使用ZG211 實驗板的使用方法、Keilc51在線編程軟件環(huán)境。使用CH451芯片來進行數碼顯示和鍵盤掃描控制,設計實現溫度測試功能。</p><p><b>  2.實驗設備</b></p><p>  PC 機一臺;ZG-211 單片機系統(tǒng)實驗板

9、一塊</p><p><b>  實驗連接線若干</b></p><p><b>  并口編程線一根</b></p><p><b>  串口通訊線一根</b></p><p><b>  配套電源1 個</b></p><p> 

10、 芯片:DS18B20,CD4052,CH451,MCU89S52</p><p>  2.1 DS18B20</p><p>  DS18B20是新一代支持“一線總線”接口的溫度傳感器芯片,將電源和信號復合在一起;其測溫范圍為-55℃—+125℃,允許分辨率可調9—12位,工作電壓為3v—5v,在-10℃—+85℃范圍內,精度為±0.5℃。該芯片將溫度探頭與A/D轉換模塊集成在

11、一起,同時采用單總線與CPU通信,簡化了電路設計</p><p><b>  芯片構造圖:</b></p><p>  DS18B20芯片包括3個引腳,引腳說明如下圖所示:</p><p>  DS18B20通過一種片上溫度測量技術來測量溫度的。</p><p><b>  芯片原理圖:</b>&l

12、t;/p><p>  DS18B20是這樣測量溫度的:利用一個高溫度系統(tǒng)的振蕩器確定一個門周期,內部計數器在這個門周期內對一個低溫度系數的振蕩器的脈沖進行技術來得到溫度值。計數器被預置到對應于-55℃的一個值。如果計數器在門周期結束前到達0,則溫度寄存器(同樣被預置到-55℃)的值增加,表明溫度大于-55℃,同時計數器被復位到一個值,這個值由斜坡式累加器電路確定,斜坡式累加器電路用來補償敢問振蕩器的拋物線特性。然后計

13、數器又開始計數直到0,如果門周期仍未結束,將重復這一過程。斜坡式累加器用來補償感溫振蕩器的非線性,以在測溫時獲得比較高的分辨力,這是通過改變計數器對溫度每增加一度所需要計數的值來實現的。</p><p>  2.2 CD4052</p><p>  由于89S52上的I/O口資源有限,DS18B20的I/O口通過4通道數字控制模擬開關CD4052接到單片機的I/O口上。該芯片是一個差分四通

14、道數字控制模擬開關,有A和B 兩個二進制控制輸入端和一個INH 輸入,具有低導通阻抗和很低的截止漏電流。</p><p><b>  功能說明表:</b></p><p><b>  芯片原理圖:</b></p><p><b>  2.3 CH451</b></p><p>

15、  CH451 是一個整合了數碼管顯示驅動和鍵盤掃描控制以及μP 監(jiān)控的多功能外圍芯片,該課題設計開發(fā)中我們僅需使用數碼管顯示驅動和鍵盤掃描控制功能。在顯示驅動上,動態(tài)顯示掃描控制,可選數碼管的段與數據位相對應的不譯碼方式或者BCD 譯碼方式;在鍵盤掃描控制上,低電平輸出產生鍵盤中斷,并且提供鍵盤按鍵釋放標志位。借助Rational Rose繪制的串行接口原理圖如上所示。</p><p>  由以上原理圖可以看到

16、左側有四個引腳,功能如下:LOAD用于串行接口的數據加載;DIN用于串行數據的輸入;DCLK是串行接口的數據時鐘;DOUT用于串行數據的數據輸出及鍵盤中斷。其中,DIN、DCLK、LOAD 是帶上拉的輸入信號線,默認是高電平;DOUT 在未啟用鍵盤掃描功能時作為串行數據輸出線,在啟用鍵盤掃描功能后作為鍵盤中斷和數據輸出線,默認是高電平。</p><p>  DIN按位從低至高輸入每一個數據位,在CH451上電復位

17、后必須給它一個負脈沖以使能4線串行接口。DCLK是DIN數據輸入的時鐘,在其下降沿將數據從寄存器打出,在其上升沿將數據打入寄存器,因而借助以上原理圖不難理解寄存器組移位的原理。在經過DCLK的12個負脈沖后,D0—D11則從低位至高位依次存放了我們從DIN打入的數據。LOAD是串行數據幀的完成標志,在LOAD的上升沿,12位數據(不管是否有效)被打入命令寄存器。當DOUT(默認高電平)發(fā)出低電平進行中斷請求后,我們可以向CH451發(fā)送讀

18、鍵盤按鍵代碼命令,此時按鍵代碼(共7位)的最高位K6被發(fā)送至DOUT,之后向DCLK發(fā)送負脈沖。以相同方式將剩余的低6位按鍵代碼讀出。</p><p>  在此次課題設計中將使用到的對CH451進行操作的命令如下表所示:</p><p>  由上表可以看到讀取按鍵代碼的操作命令為12位,但是只有高四位是有效位,因而當我們通過DIN向CH451輸入高四位后,便可以通過LOAD發(fā)出一個負脈沖將

19、12位數據打入命令寄存器。設置系統(tǒng)參數命令用于設置CH451的系統(tǒng)級參數:看門狗使能WDOG,鍵盤掃描使能KEYB,顯示驅動使能DISP;當相應位置為1時表示使能,否則表示禁用,我們在系統(tǒng)實現中使用了鍵盤掃描使能和顯示驅動使能,即相應命令為:0X403。設置顯示參數命令用于設置CH451的顯示參數:譯碼方式MODE,掃描極限LIMIT,顯示亮度INTENSITY;同樣,當相應位置為1時表示使能,否則表示禁用。</p>&l

20、t;p>  下表描述的則是在該課題設計實現中需要用到的命令位與相應段及顯示字符的對應顯示關系表:</p><p>  2.4 MCU 89S52</p><p>  89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash 存儲器,使用Atmel 公司高密度非易失性存儲器技術制造,與工業(yè)80C51 產品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可

21、編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提供高靈活、超有效的解決方案。</p><p>  在設計實現中我們使用到了P15、P32、P33和P34口,另外P10、P11、P12和P13已內置鏈接到相對應的口。寄存器中各個位的含義如下表:</p><p>  寄存器中各個位的功能如下,課題設計中我們只使用

22、到了EA和EX0,EX0控制的是鍵盤按鍵的外部中斷:</p><p><b>  3 實驗要求</b></p><p>  3.1 能正常操作LED 數碼顯示;</p><p>  3.2 能通過中斷方式接收按鍵信息;</p><p>  3.3 能通過單總線方式與DS18B20芯片交換數據;</p>&l

23、t;p>  3.4 息能正確解釋從DS18B20芯片取出的溫度數據。</p><p><b>  4 實驗原理</b></p><p>  設計實現中采用了CD4052的X1輸入口,將X1與DS18B20的DQ口進行連接,用于向DS18B20發(fā)送命令和讀取溫度數據。P12、P13分別連接至A和B,用于控制選擇與X和Y連通的輸入通道。P10、P11分別連接至X和Y

24、,89S52通過P10與DS18B20進行交互,而P11在實現中并沒有用到。P34、P15、P33分別連接至LOAD、DCLK、DIN,用于向CH451發(fā)送數據,而P32連接至DOUT,主要用于接受DOUT產生的鍵盤按鍵中斷請求,獲取按鍵代碼。</p><p>  溫度測試系統(tǒng)原理圖:</p><p><b>  5 實驗步驟</b></p><p

25、><b>  5.1 硬件連接</b></p><p>  首先將ZG-211實驗板的總開關(位于左下角)關閉,將實驗板的六個支架固定好以保護反面的焊點;</p><p>  然后參照以上給出的原理圖進行連線;</p><p>  然后將并行編程線一端連接至PC機主板上的并口,另一端連接至ZG-211實驗板左側的并口;</p>

26、<p>  最后檢查無誤后,將電源適配器的輸出端連接至ZG-211左下角的電源輸入插座。</p><p><b>  5.2 軟件設計</b></p><p>  軟件設計包括4個部分:常量定義部分、數碼管操作部分、溫度獲取部分、主函數,分別介紹如下:</p><p>  5.2.1 常量定義</p><p&g

27、t;  常量定義主要是考慮到程序的易讀性和可維護性,其中包括軟件設計中需要用到的一些引腳地址、特殊寄存器地址、特殊寄存器位地址、初始化命令以及操作命令等。</p><p>  5.2.2 數碼管操作</p><p>  該部分操作函數包括:延時、向CH451發(fā)送數據、鍵盤按鍵中斷響應例程、數碼管顯示測試、數碼管溫度顯示。由于中斷響應例程在該部分中,所以按鍵代碼key_data必須聲明為ex

28、tern,表明該變量在其它模塊中,相當于一個全局變量。</p><p>  5.2.3 溫度獲取</p><p>  該部分操作包括:DS18B20復位、從DS18B20讀取一位及一個字節(jié)、向DS18B20寫入一位及一個字節(jié)、從DS18B20獲取溫度并計算為十進制形式。為了方便實現溫度轉換,我們將各個位對應的權值按高低字節(jié)定義在了兩個數組中??紤]到節(jié)省空間,我們將其定義為code,放在RO

29、M區(qū)。由于很多函數中使用了空指令_nop_();因而需要包含頭文件intrins.h。</p><p><b>  5.2.4 主函數</b></p><p>  首先定義一個存放按鍵代碼的char型變量key_data,初始化為0。主函數的主要工作流程是:MCU開中斷、數碼管顯示測試、進入無限循環(huán)、如果key_data等于0X64,即最左邊的一個鍵盤按鍵,則將key

30、_data清零,并獲取溫度并顯示至數碼管。</p><p><b>  6 實驗結果</b></p><p>  6.1接線及結果顯示</p><p><b>  6.2檢測硬件</b></p><p>  6.3設置89S52芯片特征字</p><p>  6.4打開.he

31、x文件</p><p>  6.5擦除ROM中原有內容</p><p><b>  6.6寫入ROM</b></p><p><b>  7.程序說明</b></p><p>  /*******************************************************\<

32、;/p><p>  |函數名GetTemperat|</p><p>  |函數功能利用18B20芯片檢測溫度,并在LED上顯示|</p><p>  |參數無|</p><p>  |返回值溫度|</p><p>  \********

33、***********************************************/</p><p>  unsigned char GetTemperat()</p><p><b>  {</b></p><p>  unsigned char temp[2];</p><p>  unsigned ch

34、ar temperat_C;</p><p>  unsigned char i;</p><p>  while(Reset_18B20()); //復位等待從機應答 </p><p>  write_byte_18B20(0xCC);//忽略ROM匹配 </p><p>  write_byte_18B20(0x44);//發(fā)送溫

35、度轉化命令 </p><p>  delay_1ms(500);//延時 </p><p>  while(Reset_18B20()); //再次復位,等待從機應答 </p><p>  write_byte_18B20(0xCC);//忽略ROM匹配 </p><p>  write_byte_18B20(0xBE);//發(fā)送

36、讀溫度命令 </p><p>  temp[0] = read_byte_18B20();//讀出溫度低8位</p><p>  temp[1] = read_byte_18B20();//讀出溫度高8位 </p><p>  DQ_HIGH();//釋放總線 </p><p>  temperat_C = 0;</p>

37、;<p>  for(i=0; i<3; i++)</p><p><b>  {</b></p><p>  temperat_C += ((temp[1]&(1<<i))>>i)*temperat_table_H[i];</p><p><b>  }</b><

38、/p><p>  for(i=4; i<8; i++)</p><p><b>  {</b></p><p>  temperat_C += ((temp[0]&(1<<i))>>i)*temperat_table_L[i];</p><p><b>  }</b>

39、;</p><p>  return(temperat_C);</p><p><b>  }</b></p><p>  /*******************************************************\</p><p>  |函數名Display_TEST|<

40、/p><p>  |函數功能測試顯示LED數碼管|</p><p>  |參數無|</p><p>  |返回值無|</p><p>  \*******************************************************/</p>&l

41、t;p>  void Display_TEST()</p><p><b>  {</b></p><p><b>  //初始化顯示芯片</b></p><p>  disp_initialize();</p><p><b>  //延時</b></p>

42、<p>  delay_1ms(100);</p><p>  //送顯“12345678”</p><p>  send_disp_data( CH451_LOAD0, 0x01);</p><p>  send_disp_data( CH451_LOAD1, 0x02);</p><p>  send_disp_data( C

43、H451_LOAD2, 0x03);</p><p>  send_disp_data( CH451_LOAD3, 0x04);</p><p>  send_disp_data( CH451_LOAD4, 0x05);</p><p>  send_disp_data( CH451_LOAD5, 0x06);</p><p>  send_

44、disp_data( CH451_LOAD6, 0x07);</p><p>  send_disp_data( CH451_LOAD7, 0x08);</p><p>  delay_1ms(200);</p><p><b>  //延時</b></p><p>  delay_1ms(200);</p>

45、<p>  //開中斷,接受按鍵信息</p><p><b>  EX0=1;</b></p><p>  //"--------"</p><p>  send_disp_data( CH451_LOAD0, 0x12);</p><p>  send_disp_data( CH451

46、_LOAD1, 0x12);</p><p>  send_disp_data( CH451_LOAD2, 0x12);</p><p>  send_disp_data( CH451_LOAD3, 0x12);</p><p>  send_disp_data( CH451_LOAD4, 0x12);</p><p>  send_disp

47、_data( CH451_LOAD5, 0x12);</p><p>  send_disp_data( CH451_LOAD6, 0x12);</p><p>  send_disp_data( CH451_LOAD7, 0x12);</p><p><b>  }</b></p><p>  /***********

48、********************************************\</p><p>  |函數名display_int|</p><p>  |函數功能顯示一個整數|</p><p>  |參數無|</p><p>  |返回值無

49、|</p><p>  \*******************************************************/</p><p>  void display_int(unsigned int m)</p><p><b>  {</b></p><p>  send_disp_data( C

50、H451_LOAD0, 0x10);</p><p>  send_disp_data( CH451_LOAD1, 0x10);</p><p>  send_disp_data( CH451_LOAD2, 0x10);</p><p>  if (m/10000)</p><p><b>  {</b></p&g

51、t;<p>  send_disp_data( CH451_LOAD3, m/10000);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  send_disp_da

52、ta( CH451_LOAD3, 0x10);</p><p><b>  }</b></p><p>  if ((!(m/1000)%10)&&(!(m/10000)))</p><p><b>  {</b></p><p>  send_disp_data( CH451_LO

53、AD4, 0x10);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  send_disp_data( CH451_LOAD4, (m/1000)%10);</p>

54、<p><b>  }</b></p><p>  send_disp_data( CH451_LOAD5, (m/100)%10);</p><p>  send_disp_data( CH451_LOAD6, (m/10)%10);</p><p>  send_disp_data( CH451_LOAD7, m%10);<

55、/p><p><b>  }</b></p><p><b>  8.心得體會</b></p><p>  從理論到實踐,可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實

56、踐相結合起來,從理論中得出結論,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。</p><p>  科生課程設計成績評定表</p><p>  班級:計算機1101班  姓名:周文星 學號:012110340118</p><p>  注:最終成績以五級分制記。優(yōu)(90-100分)、良(80-89

溫馨提示

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

評論

0/150

提交評論