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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  單片機(jī)課程設(shè)計(jì)</b></p><p>  基于數(shù)字溫度傳感器的數(shù)字溫度計(jì)的設(shè)計(jì)</p><p>  1.芯片DS18B20的說(shuō)明</p><p>  美國(guó)Dallas 半導(dǎo)體公司的數(shù)字化溫度傳感器DS1820 是世界上第一片支持 "一線總線"接口的溫度傳感器,在其內(nèi)部使用了在板(ON-B0AR

2、D)專(zhuān)利技術(shù)。全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管</p><p>  的集成電路內(nèi)。一線總線獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶(hù)可輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念?,F(xiàn)在,新一代的DS18B20 體積更小、更經(jīng)濟(jì)、更靈活。使你可以充分發(fā)揮“一線總線”的優(yōu)點(diǎn)。</p><p>  DS18B20 的主要特性</p><p>  1.1芯片DS18B20的

3、特點(diǎn)</p><p> ?。?)適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電</p><p> ?。?)獨(dú)特的單線接口方式,DS18B20 在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理與DS18B20 的雙向通訊</p><p> ?。?)DS18B20 支持多點(diǎn)組網(wǎng)功能,多個(gè)DS18B20 可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測(cè)溫

4、</p><p> ?。?)DS18B20 在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)</p><p> ?。?)溫范圍-55℃~+125℃,在-10~+85℃時(shí)精度為±0.5℃</p><p> ?。?)可編程的分辨率為9~12 位,對(duì)應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可以實(shí)現(xiàn)

5、高精度測(cè)溫。</p><p> ?。?)在9位分辨率最多在93.75ms把溫度轉(zhuǎn)換成數(shù)字,12 位分辨率是最多可在750ms內(nèi)將溫度轉(zhuǎn)換成數(shù)字,速度更快。</p><p> ?。?)溫度測(cè)試結(jié)果直接轉(zhuǎn)換成數(shù)字溫度信號(hào),以“一線總線”串行傳輸給CPU,同事科傳送SRC檢驗(yàn)碼,菊友極強(qiáng)的抗干擾校正能力。</p><p> ?。?)負(fù)壓特性:電源極性接反時(shí)芯片不會(huì)因發(fā)熱而

6、燒毀,但不會(huì)正常工作。</p><p>  2. 液晶顯示器LM016L的說(shuō)明</p><p><b>  接口信號(hào)說(shuō)明:</b></p><p><b>  下表為控制命令表:</b></p><p>  液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙

7、,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖一是016L的內(nèi)部顯址。</p><p><b>  圖一</b></p><p><b>  液晶顯示簡(jiǎn)介</b></p><p><b> ?、僖壕э@示原理</b></p><p>  液晶

8、顯示的原理是利用液晶的物理特性,通過(guò)電壓對(duì)其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規(guī)模集成電路直接驅(qū)動(dòng)、易于實(shí)現(xiàn)全彩色顯示的特點(diǎn),目前已經(jīng)被廣泛應(yīng)用在便攜式電腦、數(shù)字?jǐn)z像機(jī)、PDA移動(dòng)通信工具等眾多領(lǐng)域。</p><p><b> ?、谝壕э@示器的分類(lèi)</b></p><p>  液晶顯示的分類(lèi)方法有很多種,通常可按其顯示

9、方式分為段式、字符式、點(diǎn)陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據(jù)驅(qū)動(dòng)方式來(lái)分,可以分為靜態(tài)驅(qū)動(dòng)(Static)、單純矩陣驅(qū)動(dòng)(Simple Matrix)和主動(dòng)矩陣驅(qū)動(dòng)(Active Matrix)三種。</p><p><b> ?、圩址娘@示</b></p><p>  用LCD顯示一個(gè)字符時(shí)比較復(fù)雜,因?yàn)橐粋€(gè)字符由6×8或8&

10、#215;8點(diǎn)陣組成,既要找到和顯示屏幕上某幾個(gè)位置對(duì)應(yīng)的顯示RAM區(qū)的8字節(jié),還要使每字節(jié)的不同位為“1”,其它的為“0”,為“1”的點(diǎn)亮,為“0”的不亮。這樣一來(lái)就組成某個(gè)字符。但由于內(nèi)帶字符發(fā)生器的控制器來(lái)說(shuō),顯示字符就比較簡(jiǎn)單了,可以讓控制器工作在文本方式,根據(jù)在LCD上開(kāi)始顯示的行列號(hào)及每行的列數(shù)找出顯示RAM對(duì)應(yīng)的地址,設(shè)立光標(biāo),在此送上該字符對(duì)應(yīng)的代碼即可。 </p>

11、;<p>  3. 總體電路流程圖</p><p><b>  4. 總體電路設(shè)計(jì)</b></p><p>  LCD與AT89C51的連接,(如圖一所示)將LCD的D0~D7引腳分別與單片機(jī)的P0.1~P0.7相連,使LCD能接受來(lái)自單片機(jī)的信號(hào)。</p><p><b>  電路如圖二所示</b><

12、/p><p>  如圖可見(jiàn),電路主要是由AT89C51芯片和LM016L和蜂鳴器構(gòu)成了主要電路。開(kāi)關(guān)的控制,可調(diào)整溫度的范圍。</p><p><b>  5.系統(tǒng)程序設(shè)計(jì)</b></p><p><b>  程序清單 :</b></p><p>  #include <AT89X51.H>

13、;</p><p>  #include <intrins.h></p><p>  #include<absacc.h></p><p>  #define uint unsigned int</p><p>  #define unchar unsigned char</p><p>  u

14、nchar templ,temph,i,y,z,n;</p><p>  unchar a,b;//LCD的變量</p><p>  unchar sign=0;//標(biāo)志變量</p><p>  bit k;//判斷正負(fù)變量</p><p>  sbit dq=P3^5;</p><p>  sbit rs=P2^

15、0;//LCD顯示的定義取值</p><p>  sbit rw=P2^1;</p><p>  sbit e=P2^2;</p><p>  sbit bf=P0^7;</p><p>  sbit DQ=P2^5;</p><p><b>  //鍵盤(pán)定義</b></p><

16、;p>  sbit read=P3^0;</p><p>  sbit incH=P3^2;</p><p>  sbit desH=P3^3;</p><p>  sbit reset=P3^4;</p><p><b>  //蜂鳴器</b></p><p>  sbit BUZZER=

17、P2^6;</p><p>  float t4,t5,t6,t7,tt;//溫度轉(zhuǎn)換的變量</p><p><b>  uint tp;</b></p><p>  unchar temperature,Htemp,Ltemp;</p><p>  unchar D1,D2,D3;</p><p&g

18、t;  uint D4,D5,D6,D9,D7,D8;</p><p>  unchar code dis1[]={"0123456789"};</p><p>  unchar code dis2[]={"temp:"};</p><p>  unchar code dis3[]={"WARN"};&l

19、t;/p><p>  unchar code dis4[]={"Htemp:"};</p><p>  unchar code dis5[]={"working"};</p><p>  unchar code dis6[]={"Ltemp:"};</p><p>  bit flag

20、_1820_1;</p><p>  bit flag_1820_2;</p><p>  void delay_ms(unsigned char time);</p><p>  void ledshow(void);</p><p>  void keypress(void);</p><p>  void ini

21、t(void);</p><p>  void gettemp();</p><p>  void init1820(void);</p><p>  void write1820(unchar);</p><p>  unsigned char read1820(void);</p><p>  void delay

22、_us(unchar);</p><p>  void delay3(unchar);</p><p><b>  /* 延時(shí)*/</b></p><p>  void delay(uint t)</p><p><b>  {uint i;</b></p><p>  w

23、hile(t--)</p><p>  { for(i=0;i<125;i++)</p><p><b>  {}</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //L

24、CD顯示函數(shù)</b></p><p>  void delay1(unchar time)</p><p>  {unchar n;</p><p><b>  n=0;</b></p><p>  while(n<time)</p><p><b>  {n++;}

25、</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  void delay3(unchar x)</p><p>  { for(y=x;y>0;y--)</p><p>  for(z=

26、x;z>0;z--);</p><p><b>  }</b></p><p>  unchar testBF()</p><p>  { bit result;</p><p>  rs=0;rw=1;e=1;</p><p>  _nop_();_nop_();_nop_();_nop

27、_();</p><p>  result=bf;e=0;</p><p>  return result;</p><p><b>  }</b></p><p>  void writecmd(unchar ZL)</p><p>  { while(testBF()==1);</p&g

28、t;<p>  rs=0;rw=0;e=0;</p><p>  _nop_();_nop_();</p><p>  P0=ZL;e=1;</p><p>  _nop_();_nop_();_nop_();_nop_();</p><p><b>  e=0;</b></p><p&

29、gt;<b>  }</b></p><p>  void pos(unchar pos)</p><p>  {writecmd(pos|0x80);</p><p><b>  }</b></p><p>  void writedate(unchar date)</p><

30、;p>  {while(testBF()==1);</p><p>  rs=1;rw=0;e=0;</p><p>  _nop_();_nop_();</p><p>  P0=date;e=1;</p><p>  _nop_();_nop_();_nop_();_nop_();</p><p><b

31、>  e=0;</b></p><p><b>  }</b></p><p>  void init()</p><p>  {delay3(20);</p><p>  writecmd(0x38);</p><p>  delay3(30);</p><

32、;p>  writecmd(0x0d);</p><p>  delay3(30);</p><p>  writecmd(0x06);</p><p>  delay3(30);</p><p>  writecmd(0x01);</p><p>  delay3(30);</p><p&g

33、t;<b>  }</b></p><p><b>  //鍵盤(pán)程序</b></p><p><b>  //主程序</b></p><p>  void main(void)</p><p><b>  {</b></p><p>

34、;  TMOD=0x01;</p><p>  TH0=50000/256;</p><p>  TL0=50000%256;</p><p>  Htemp=124;Ltemp=-24;</p><p><b>  P3=0xFF;</b></p><p><b>  init();

35、</b></p><p>  if(sign==0)</p><p><b>  {</b></p><p>  EA=1;TR0=1;ET0=1;</p><p>  EX0=0; //關(guān)閉外部中斷0</p><p>  EX1=0; //關(guān)閉外部中斷1 </p

36、><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(read==0)</p><p><b>  {</b></p><p>  delay3(2000);</p><p>

37、;  if(read==0)</p><p><b>  {</b></p><p><b>  sign++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b&g

38、t;  }</b></p><p><b>  }</b></p><p>  if(sign==1)</p><p><b>  {</b></p><p>  BUZZER=1; //關(guān)閉蜂鳴器</p><p>  EX0=1; //開(kāi)啟外部中斷0

39、</p><p>  EX1=1; //開(kāi)啟外部中斷1</p><p><b>  init();</b></p><p><b>  pos(0);</b></p><p>  for(i=0;i<6;) </p><p>  { writedate(dis4[

40、i]);i++;</p><p><b>  }</b></p><p>  D6=Htemp%10;</p><p>  D7=Htemp%100/10;</p><p>  D8=Htemp/100;</p><p><b>  pos(0x6);</b></p&g

41、t;<p>  writedate(dis1[D8]);</p><p>  writedate(dis1[D7]);</p><p><b>  }</b></p><p>  if(sign==2)</p><p><b>  {</b></p><p>

42、  BUZZER=1; //關(guān)閉蜂鳴器</p><p>  EX0=1; //開(kāi)啟外部中斷0</p><p>  EX1=1; //開(kāi)啟外部中斷1</p><p><b>  init();</b></p><p><b>  pos(0);</b></p><

43、p>  for(i=0;i<6;) </p><p>  { writedate(dis6[i]);i++;}</p><p>  D6=Htemp%10;</p><p>  D7=Htemp%100/10;</p><p>  D8=Htemp/100;</p><p><b>  pos(

44、0x6);</b></p><p>  writedate(dis1[D8]);</p><p>  writedate(dis1[D7]);</p><p>  writedate(dis1[D6]);</p><p><b>  }</b></p><p>  if(sign&g

45、t;2)</p><p>  { sign=0;}</p><p><b>  }</b></p><p><b>  //中斷程序</b></p><p>  void int0(void) interrupt 0</p><p><b>  {</

46、b></p><p>  EX0=0; //關(guān)外部中斷0</p><p>  if(desH==0&&sign==1)</p><p><b>  {</b></p><p><b>  Htemp--;</b></p><p>  if(Ht

47、emp<Ltemp)</p><p>  Htemp=Ltemp;</p><p><b>  }</b></p><p>  else if(desH==0&&sign==2)</p><p><b>  {</b></p><p><b>

48、  Ltemp--;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*****外部中斷1服務(wù)程序*****/</p><p>  void int1(void) interrupt 2</p><p>

49、;<b>  {</b></p><p>  EX1=0; //關(guān)外部中斷1</p><p>  if(incH==0&&sign==1)</p><p><b>  {</b></p><p><b>  Htemp++;</b></p>

50、<p><b>  }</b></p><p>  else if(incH==0&&sign==2)</p><p><b>  {</b></p><p><b>  Ltemp++;</b></p><p>  if(Ltemp>Hte

51、mp)</p><p>  Ltemp=Htemp;</p><p><b>  } </b></p><p><b>  }</b></p><p>  //定時(shí)器T0服務(wù)程序</p><p>  void isr_t0(void) interrupt 1</p&g

52、t;<p>  {TH0=50000/256;</p><p>  TL0=50000%256;</p><p>  TMOD=0x10;</p><p>  TH1=50000/256;</p><p>  TL1=50000%256;</p><p>  gettemp();</p>

53、<p>  delay(50);</p><p>  if (tp<Htemp)</p><p>  { BUZZER=1;</p><p>  pos(0x04);</p><p>  for(i=0;i<7;)</p><p><b>  {</b></p>

54、;<p>  writedate(dis5[i]);</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  pos(0x40);</p><p>  for(i=0;i<5;)</p><p>  {wr

55、itedate(dis2[i]);</p><p><b>  i++;}</b></p><p>  D1=(unchar)(tp%10);</p><p>  D2=(unchar)(tp%100/10);</p><p>  D3=(unchar)(tp/100);</p><p>  D4

56、=(uint)(tt*10);</p><p>  D5=((uint)(tt*100))%10;</p><p><b>  if(k==1)</b></p><p>  {pos(0x46);</p><p>  writedate('-');}</p><p><b&g

57、t;  else</b></p><p>  {pos(0x46);</p><p>  writedate();}</p><p>  pos(0x47);</p><p>  writedate(dis1[D3]);</p><p>  writedate(dis1[D2]);</p>&

58、lt;p>  writedate(dis1[D1]);</p><p>  writedate('.');</p><p>  writedate(dis1[D4]);</p><p>  writedate(dis1[D5]);</p><p>  writedate(0xdf);</p><p&g

59、t;  writedate('C');</p><p><b>  }</b></p><p><b>  else</b></p><p>  { init();</p><p>  pos(0x04);</p><p>  for(i=0;i<4

60、;)</p><p><b>  {</b></p><p>  writedate(dis3[i]);</p><p><b>  i++;}</b></p><p><b>  BUZZER=0;</b></p><p><b>  }&l

61、t;/b></p><p><b>  }</b></p><p>  //DS18B20讀取溫度</p><p>  void gettemp()</p><p><b>  { </b></p><p>  init1820();</p><p

62、>  write1820(0xcc);</p><p>  write1820(0x44);</p><p>  init1820();</p><p>  write1820(0xcc);</p><p>  write1820(0xbe);</p><p>  templ=read1820();//低8位(其

63、中的第四位是小數(shù)點(diǎn)后的)</p><p>  temph=read1820();//高8位(其中前五位是符號(hào)值)</p><p>  z=temph;//把符號(hào)位留下判斷正負(fù)</p><p>  k=(bit)(z>>7);</p><p>  if(k==1) //負(fù)數(shù)就取反加一</p><p>

64、;  { templ=~templ;</p><p>  templ=templ+1;</p><p>  temph=~temph;</p><p><b>  }</b></p><p><b>  else</b></p><p>  {templ=templ;&l

65、t;/p><p>  temph=temph;}</p><p><b>  n=templ;</b></p><p><b>  y=n&0x01;</b></p><p>  t7=y*0.0625;</p><p><b>  n>>=1;&l

66、t;/b></p><p>  y=n&0x01;//小數(shù)點(diǎn)最后的數(shù)</p><p>  t4=y* 0.125;</p><p><b>  n>>=1;</b></p><p><b>  y=n&0x01;</b></p><p>  

67、t5=y* 0.25;</p><p><b>  n>>=1;</b></p><p><b>  y=n&0x01;</b></p><p><b>  t6=y*0.5;</b></p><p>  tt=t4+t5+t6+t7;</p>

68、<p>  init1820();</p><p>  tp=temph*256+templ;</p><p>  temperature=tp;</p><p><b>  tp=tp>>4;</b></p><p><b>  }</b></p><p

69、><b>  //1820初始化</b></p><p>  void init1820()</p><p><b>  {</b></p><p>  DQ = 1; _nop_();</p><p>  DQ = 0; </p><p>  delay_u

70、s(125); //延時(shí)510us,</p><p>  delay_us(125);</p><p>  DQ = 1; </p><p>  delay_us(15); </p><p>  while(DQ) </p><p>  { _nop_(); }</p><p&

71、gt;  delay_us(60); </p><p>  DQ = 1; </p><p><b>  }</b></p><p>  //******write********</p><p>  void write1820(unchar a)</p><p><b> 

72、 {</b></p><p><b>  unchar i;</b></p><p>  for(i=0;i<8;i++)</p><p>  {if(a & 0x01) //低位在前;</p><p>  {DQ = 0; </p><p>  _nop_();

73、_nop_();_nop_();</p><p>  DQ = 1; } </p><p><b>  else</b></p><p>  DQ = 0; </p><p>  _nop_();_nop_();_nop_(); </p><p>  delay_us(30); &l

74、t;/p><p>  DQ = 1; </p><p>  _nop_(); </p><p><b>  a >>= 1;</b></p><p><b>  }</b></p><p><b>  }</b></p&

75、gt;<p>  //*******read************</p><p>  unsigned char read1820(void)</p><p><b>  {</b></p><p>  unsigned char i;</p><p>  unsigned char tmp=0;<

76、;/p><p>  DQ = 1; _nop_(); </p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p>  tmp >>= 1; </p><p>  DQ = 0; </p><

77、p>  _nop_(); </p><p>  DQ = 1; </p><p>  delay_us(2); </p><p><b>  _nop_();</b></p><p>  if(DQ) </p><p>  tmp |= 0x80;</p&

78、gt;<p>  delay_us(30); </p><p>  DQ = 1; _nop_(); </p><p><b>  }</b></p><p>  return tmp; }</p><p>  void delay_us(unchar a)</p><p>

79、;<b>  {</b></p><p>  while(--a);</p><p><b>  }</b></p><p>  void delay_ms(unchar a)</p><p><b>  {</b></p><p>  unchar i

80、,j;</p><p>  for(i=0;i<a;i++)</p><p>  for(j=0;j<200;j++)</p><p><b>  {</b></p><p><b>  _nop_();</b></p><p><b>  _nop_(

81、);</b></p><p><b>  }</b></p><p>  } </p><p><b>  6.總結(jié)</b></p><p>  1)在編寫(xiě)程序的過(guò)程中,遇到一些C語(yǔ)言的語(yǔ)法問(wèn)題,需要查找資料或者咨詢(xún)同學(xué)才能完成。</p><

溫馨提示

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

評(píng)論

0/150

提交評(píng)論