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

下載本文檔

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

文檔簡介

1、<p>  IEC計算機(jī)14級《單片機(jī)系統(tǒng)概論》</p><p><b>  期末設(shè)計報告</b></p><p>  2017年 月 日</p><p> 設(shè)計題目</p><p> 院 系</p><p> 班 級</p><p> 姓

2、名</p><p> 學(xué) 號</p><p><b>  目 錄</b></p><p>  1 系統(tǒng)方案設(shè)計3</p><p>  1.1 系統(tǒng)整體設(shè)計工作框圖3</p><p>  1.2 系統(tǒng)設(shè)計元器件清單3</p><p>  2 硬件電路設(shè)計4

3、</p><p>  2.1 系統(tǒng)總電路原理圖4</p><p>  2.2 AD鍵盤的設(shè)計4</p><p>  2.3 Lcd1602電路的設(shè)計5</p><p>  2.4 蜂鳴器驅(qū)動電路的設(shè)計5</p><p>  2.5 流水燈的設(shè)計6</p><p>  2.6 DS18B

4、20電路的設(shè)計7</p><p><b>  3 程序流程圖8</b></p><p>  3.1 程序主流程圖設(shè)計8</p><p><b>  8</b></p><p>  3.2 LCD顯示子程序流程圖設(shè)計8</p><p>  4 C語言源程序清單9<

5、;/p><p><b>  5 參考文獻(xiàn)11</b></p><p><b>  1 系統(tǒng)方案設(shè)計</b></p><p>  1.1 系統(tǒng)整體設(shè)計工作框圖</p><p>  圖1-1 系統(tǒng)整體設(shè)計工作框圖</p><p>  1.2 系統(tǒng)設(shè)計元器件清單</p>

6、<p>  表1-1 系統(tǒng)設(shè)計元器件清單</p><p><b>  51單片機(jī)開發(fā)板</b></p><p><b>  2 硬件電路設(shè)計</b></p><p>  2.1 系統(tǒng)總電路原理圖</p><p>  圖2-1 系統(tǒng)總電路原理圖</p><p>  

7、2.2 AD鍵盤的設(shè)計</p><p>  1.引腳連接:與單片機(jī)的AD采集IO口相連</p><p>  2.功能: 采集AD值來判斷哪個鍵被按下</p><p>  圖2-2 AD鍵盤電路</p><p>  2.3 Lcd1602電路的設(shè)計</p><p>  1.引腳連接:數(shù)據(jù)口為單片機(jī)的P0口 通信口為&l

8、t;/p><p>  LCD1602_RS : P1^1;</p><p>  LCD1602_RW :P1^2;</p><p>  LCD1602_EN : P1^3;</p><p>  2.功能:LCD1602作用是顯示出兩排 每排16個字符包括26個英文字母,10個數(shù)字和英文標(biāo)點(diǎn)符號,在這里我們顯示體溫和狀態(tài)</p>&l

9、t;p>  圖2-3 Lcd1602顯示電路</p><p>  2.3 DH11電路的設(shè)計</p><p>  1.引腳連接:通信連P3.7口。</p><p>  2.功能:可測量環(huán)境溫度和濕度。其電路如圖2-4所示。</p><p>  圖2-4 DS18B20電路圖</p><p>  2.5 閃爍燈的

10、設(shè)計</p><p>  1.引腳連接:8個二極管分別于單片機(jī)的P2的8個口相連</p><p>  圖2-5 流水燈電路圖</p><p><b>  3 程序流程圖</b></p><p>  3.1 程序主流程圖設(shè)計</p><p>  圖3-1 程序主流程圖</p><

11、;p>  3.2 LCD顯示子程序流程圖設(shè)計</p><p>  圖3-2 LCD顯示程序流程圖</p><p>  4 C語言源程序清單</p><p>  4.1主函數(shù)程序清單</p><p>  #include "reg52.h"</p><p>  #include "LC

12、D1602.h"</p><p>  #include "DS18B20.h"</p><p>  #include "jianpan.h"</p><p>  sbit Buzzer = P2^5;</p><p><b>  //定義變量</b></p>

13、<p>  unsigned int Temp_Buffer = 0;</p><p>  unsigned int warning = 360;</p><p>  bit flag = 0;</p><p>  //****************************************************</p><

14、p>  //MS延時函數(shù)(12M晶振下測試)</p><p>  //****************************************************</p><p>  void Delay_ms(unsigned int m)</p><p><b>  {</b></p><p>  

15、unsigned int i;</p><p>  unsigned long j;</p><p>  for(i = 0; i < m; i++)</p><p>  for(j = 0; j < 123; j++);</p><p><b>  }</b></p><p>  

16、//****************************************************</p><p><b>  //顯示函數(shù)</b></p><p>  //****************************************************</p><p>  void distmp()</

17、p><p><b>  {</b></p><p>  Temp_Buffer = Get_temp(); //讀取DS18B20的值</p><p>  LCD1602_write_com(0x80+0x40);//設(shè)置LCD1602指針到第二行第一列</p><p>  LCD1602_wri

18、te_word("TEMP = ");</p><p>  if(flag_temper == 1)//根據(jù)溫度標(biāo)志位顯示溫度正負(fù)</p><p><b>  {</b></p><p>  LCD1602_write_data('-');</p><p><b

19、>  }</b></p><p>  if( Temp_Buffer/1000 != 0 )//如果第一位為0,忽略顯示</p><p><b>  {</b></p><p>  LCD1602_write_data(Temp_Buffer/1000+0X30);//顯示溫度百位值</p>&

20、lt;p><b>  }</b></p><p>  if( Temp_Buffer/1000 == 0 && Temp_Buffer%1000/100 == 0 )//千位百位都為0,忽略顯示</p><p><b>  {</b></p><p><b>  }</b><

21、;/p><p><b>  else</b></p><p><b>  {</b></p><p>  LCD1602_write_data(Temp_Buffer%1000/100+0X30); //顯示溫度百位值</p><p><b>  }</b></p>

22、<p>  LCD1602_write_data(Temp_Buffer%100/10+0X30); //顯示溫度十位值</p><p>  LCD1602_write_data('.'); //顯示小數(shù)點(diǎn)</p><p>  LCD1602_write_data(Temp_Buffer%10+0X30); //顯示溫度個位值<

23、/p><p>  LCD1602_write_word("C"); //顯示字符C</p><p>  Delay_ms(10);</p><p><b>  }</b></p><p>  void distmp2()</p><p><b> 

24、 {</b></p><p>  LCD1602_write_com(0x80);//設(shè)置LCD1602指針到第二行第一列</p><p>  LCD1602_write_word("WARNING : ");</p><p>  LCD1602_write_data(warning%1000/100+0X30); /

25、/顯示溫度百位值</p><p>  LCD1602_write_data(warning%100/10+0X30); //顯示溫度十位值</p><p>  LCD1602_write_data('.'); //顯示小數(shù)點(diǎn)</p><p>  LCD1602_write_data(warning%10+0X30); /

26、/顯示溫度個位值</p><p>  LCD1602_write_word("C"); //顯示字符C</p><p><b>  }</b></p><p>  //****************************************************</p><p&g

27、t;<b>  //主函數(shù)</b></p><p>  //****************************************************</p><p>  void main()</p><p><b>  {</b></p><p>  Init_LCD1602();

28、//初始化LCD1602</p><p>  LCD1602_write_com(0x80);//指針設(shè)置到第一行第1列</p><p>  Delay_ms(100);</p><p>  LCD1602_write_word("Welcome to use!");</p><p>

29、  Temp_Buffer = Get_temp(); //讀取DS18B20的值</p><p>  Delay_ms(1000);//等待1s等待DS18B20數(shù)據(jù)穩(wěn)定。否則可能會出現(xiàn)85℃。</p><p>  LCD1602_write_com(0x01);</p><p><b>  whi

30、le(1)</b></p><p><b>  {</b></p><p><b>  distmp();</b></p><p>  distmp2();</p><p>  if(KEY_Scan() == 15) flag = 1;</p><p>  i

31、f(warning<=Temp_Buffer&&flag == 0)</p><p><b>  {</b></p><p>  Buzzer = 1; </p><p><b>  }</b></p><p><b>  }</b></p&g

32、t;<p><b>  }</b></p><p>  4.2 LCD驅(qū)動函數(shù)</p><p>  #include "LCD1602.h"</p><p>  //****************************************************</p><p>

33、  //MS延時函數(shù)(12M晶振下測試)</p><p>  //****************************************************</p><p>  void LCD1602_delay_ms(unsigned int n)</p><p><b>  {</b></p><p>

34、;  unsigned int i,j;</p><p>  for(i = 0; i < n; i++)</p><p>  for(j = 0; j < 123; j++);</p><p><b>  }</b></p><p>  //********************************

35、********************</p><p><b>  //寫指令</b></p><p>  //****************************************************</p><p>  void LCD1602_write_com(unsigned char com)</p>

36、<p><b>  {</b></p><p>  LCD1602_RS = 0;</p><p>  LCD1602_delay_ms(1);</p><p>  LCD1602_EN = 1;</p><p>  LCD1602_PORT = com;</p><p>  LCD16

37、02_delay_ms(1);</p><p>  LCD1602_EN = 0;</p><p><b>  }</b></p><p>  //****************************************************</p><p><b>  //寫數(shù)據(jù)</b>

38、</p><p>  //****************************************************</p><p>  void LCD1602_write_data(unsigned char dat)</p><p><b>  {</b></p><p>  LCD1602_RS =

39、 1;</p><p>  LCD1602_delay_ms(1);</p><p>  LCD1602_PORT = dat;</p><p>  LCD1602_EN = 1;</p><p>  LCD1602_delay_ms(1);</p><p>  LCD1602_EN = 0;</p>

40、<p><b>  }</b></p><p>  //****************************************************</p><p><b>  //連續(xù)寫字符</b></p><p>  //**************************************

41、**************</p><p>  void LCD1602_write_word(unsigned char *s)</p><p><b>  {</b></p><p>  while(*s>0)</p><p><b>  {</b></p><p&g

42、t;  LCD1602_write_data(*s);</p><p><b>  s++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Init_LCD1602()</p><p&g

43、t;<b>  {</b></p><p>  LCD1602_EN = 0;</p><p>  LCD1602_RW = 0;//設(shè)置為寫狀態(tài)</p><p>  LCD1602_write_com(0x38);//顯示模式設(shè)定</p><p>  LCD1602_write_com(0x0c);

44、//開關(guān)顯示、光標(biāo)有無設(shè)置、光標(biāo)閃爍設(shè)置</p><p>  LCD1602_write_com(0x06);//寫一個字符后指針加一</p><p>  LCD1602_write_com(0x01);//清屏指令</p><p><b>  }</b></p><p>  4.3DHT11驅(qū)動程序&l

45、t;/p><p>  #include "DHT11.h"</p><p><b>  //定義變量</b></p><p>  unsigned char HUMI_Buffer_Int_H = 0;</p><p>  unsigned char HUMI_Buffer_Int_L = 0;</

46、p><p>  unsigned char TEM_Buffer_Int_H = 0;</p><p>  unsigned char TEM_Buffer_Int_L = 0;</p><p>  unsigned char CHECK_VALUE = 0;</p><p>  //*******************************

47、*********************</p><p>  //MS延時函數(shù)(12M晶振下測試)</p><p>  //****************************************************</p><p>  void DHT11_delay_ms(unsigned int m)</p><p>&l

48、t;b>  {</b></p><p>  unsigned int i;</p><p>  unsigned long j;</p><p>  for(i = 0; i < m; i++)</p><p>  for(j = 0; j < 123; j++);</p><p>&l

49、t;b>  }</b></p><p>  //****************************************************</p><p><b>  //延時函數(shù)</b></p><p>  //**************************************************

50、**</p><p>  void DHT11_10us( unsigned int n )</p><p><b>  {</b></p><p>  unsigned char i, j;</p><p>  for(j = 0; j < n; j++)</p><p><b>

51、;  {</b></p><p>  i = 17;//3是5us,17是10us</p><p>  while (--i);</p><p><b>  }</b></p><p><b>  }</b></p><p>  //*********

52、*******************************************</p><p>  //初始化DHT11</p><p>  //****************************************************</p><p>  bit DHT11_Init()</p><p><b&g

53、t;  {</b></p><p>  bit Flag_DHT11 = 1;</p><p>  DHT11_DQ = 0;//CPU發(fā)開始信號</p><p>  DHT11_delay_ms(30);//延時>18ms</p><p>  DHT11_DQ = 1;//CPU拉高信號,等待D

54、HT11響應(yīng)信號</p><p>  DHT11_10us(3);//延時20~40us</p><p>  Flag_DHT11 = DHT11_DQ;</p><p>  DHT11_10us(8);//DHT11響應(yīng)總時間80us</p><p>  DHT11_10us(9);//DHT11拉高信號8

55、0us</p><p>  return Flag_DHT11;</p><p><b>  }</b></p><p>  //****************************************************</p><p>  //讀一個字節(jié)DHT11數(shù)據(jù)</p><p

56、>  //****************************************************</p><p>  unsigned char DHT11_Read_Byte()</p><p><b>  {</b></p><p>  unsigned char i, dat, j;</p><

57、p><b>  dat = 0;</b></p><p>  while( DHT11_DQ == 1 );</p><p>  for( i = 0 ; i < 8 ; i++ )</p><p><b>  {</b></p><p>  while( DHT11_DQ == 0 )

58、;</p><p>  dat <<= 1;</p><p>  for( j = 0 ; DHT11_DQ == 1 ; j++);</p><p>  if( j < 80 )</p><p>  dat &= 0xfe;//低位清零</p><p><b>  e

59、lse</b></p><p>  dat |= 0x01;//低位置一</p><p><b>  }</b></p><p>  dat &= 0xff;</p><p>  return dat;</p><p><b>  }</b>&

60、lt;/p><p>  //****************************************************</p><p>  //讀取溫濕度值,存放在TEM_Buffer和HUMI_Buffer</p><p>  //****************************************************</p>

61、<p>  void DHT11_Read()</p><p><b>  {</b></p><p>  if( DHT11_Init() == 0 )</p><p><b>  {</b></p><p>  HUMI_Buffer_Int_H = DHT11_Read_Byte

62、(); //讀取濕度的整數(shù)值</p><p>  HUMI_Buffer_Int_L = DHT11_Read_Byte();//讀取濕度的小數(shù)值</p><p>  TEM_Buffer_Int_H = DHT11_Read_Byte();//讀取溫度的整數(shù)值</p><p>  TEM_Buffer_Int_L = DHT11_Read_Byte(

63、);//讀取溫度的小數(shù)值</p><p>  CHECK_VALUE = DHT11_Read_Byte();//讀取校驗(yàn)和</p><p>  DHT11_10us(5);//DHT11拉低總線50us</p><p>  DHT11_DQ = 1;//釋放總線</p><p>  if(CHEC

64、K_VALUE != (HUMI_Buffer_Int_H + HUMI_Buffer_Int_L + TEM_Buffer_Int_H + TEM_Buffer_Int_L))</p><p><b>  {</b></p><p>  HUMI_Buffer_Int_H = 99;</p><p>  TEM_Buffer_Int_H =

65、99;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  HUMI_Buffer_Int_H =

66、 0;</p><p>  TEM_Buffer_Int_H = 9;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  4.4小燈控制程序</b></p><p>  void timer0()

67、 interrupt 1 using 1</p><p><b>  { </b></p><p>  TH0 = 0x3C;</p><p>  TL0 = 0xB0;// 50ms</p><p><b>  ms++;</b></p><p>  if(ms =

68、= 20 )</p><p><b>  {</b></p><p><b>  ms = 0;</b></p><p>  LED = ~LED;</p><p><b>  }</b></p><p><b>  }</b>

69、</p><p><b>  5 參考文獻(xiàn)</b></p><p>  【格式】[序號]作者.書名[M].出版地:出版社,出版年份:起止頁碼.</p><p><b>  例如:</b></p><p>  [1] 葛家澍.現(xiàn)代西方財務(wù)會計理論[M].廈門:廈門大學(xué)出版社,2001:42.</

70、p><p><b>  說明:</b></p><p>  1.正文部分采用宋體小四,1.5倍行距。</p><p>  2.一級標(biāo)題黑體小三號加黑,二級標(biāo)題黑體四號加黑,三級標(biāo)題黑體小四號加黑。全部標(biāo)題均不居中,段前段后都為0行,行間距為1.5倍。</p><p>  3.封皮頁、設(shè)計概述與成績頁、目錄頁各自獨(dú)占一頁。一級

溫馨提示

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

最新文檔

評論

0/150

提交評論