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

下載本文檔

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

文檔簡介

1、<p>  課題名稱:基于DS18B20的溫度計</p><p><b>  一:方案設(shè)計</b></p><p>  本系統(tǒng)主要由三個模塊組成:控制模塊、溫度采集模塊、顯示模塊。</p><p><b>  1.1 控制模塊</b></p><p>  本設(shè)計采用單片機(jī)基于數(shù)字溫度傳感器

2、DS18B20的系統(tǒng)。單片機(jī)AT89C51具有低電壓供電和體積小等特點(diǎn),四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要,很適合便攜手持式產(chǎn)品的設(shè)計使用。溫度傳感器DS18B20利用單總線的特點(diǎn)可以方便的實(shí)現(xiàn)多點(diǎn)溫度的測量,組建傳感器網(wǎng)絡(luò),且系統(tǒng)的抗干擾性好、設(shè)計靈活、方便,而且能在惡劣的環(huán)境下進(jìn)行現(xiàn)場溫度檢測。本系統(tǒng)可以應(yīng)用在大型工業(yè)及民用常溫多點(diǎn)監(jiān)測場合。</p><p><b>  1.2溫度采集模

3、塊</b></p><p>  這一部分主要完成對溫度信號的采集和轉(zhuǎn)換工作,由DS18B20數(shù)字溫度傳感器及其與單片機(jī)的接口部分組成。DS18B20智能溫度溫度傳感器進(jìn)行溫度采集和轉(zhuǎn)換輸出數(shù)字型的溫度值,然后通過數(shù)據(jù)引腳傳到單片機(jī)的P3.7口,單片機(jī)接受溫度并存儲。DS18B20是美國DALLAS半導(dǎo)體公司最新推出的一種單線智能溫度傳感器,屬于新一代適配微處理器的智能溫度傳感器,它可將溫度信號直接轉(zhuǎn)換

4、為數(shù)字信號,實(shí)現(xiàn)了與單片機(jī)的直接接口,從而省去了信號調(diào)理和A/D轉(zhuǎn)換等復(fù)雜模/數(shù)轉(zhuǎn)換電路。DS18B20構(gòu)成的溫度采集模塊電路簡單、功能可靠、測量效率高,很好地彌補(bǔ)了傳統(tǒng)溫度測量方法的不足可廣泛用于工業(yè)、民用、軍事等領(lǐng)域的溫度測量及控制儀器、測控系統(tǒng)和大型設(shè)備中。它具有集成度高、模擬輸入數(shù)字輸出、抗干擾能力強(qiáng)、體積小、接口方便、傳輸距離遠(yuǎn)測溫誤差小等特點(diǎn)。</p><p>  圖1.2.1:DS18B20 PR-

5、35式封裝</p><p><b>  1.3溫度顯示模塊</b></p><p>  本課程設(shè)計的顯示模塊采用LCD1602液晶顯示器顯示溫度數(shù)據(jù),整數(shù),一位小數(shù)進(jìn)行顯示,從P0口送數(shù),P2口掃描。 </p><p><b>  1.4系統(tǒng)框圖</b></p><p>  系統(tǒng)的系統(tǒng)設(shè)計方框圖如圖

6、1.1所示,它主要由三部分組成:①控制部分主芯片采用單片機(jī)AT89S51;②顯示部分采用3位共陰極LED數(shù)碼管以動態(tài)掃描方式實(shí)現(xiàn)溫度顯示;③溫度采集部分的溫度傳感器采用DS18B20智能溫度溫度傳感器。還有按鍵設(shè)置報警溫度值和加熱降溫電路。</p><p>  圖2.4.1:多路溫度檢測與控制總體設(shè)計框圖</p><p>  二:單元電路設(shè)計、參數(shù)計算和器件選擇</p>&l

7、t;p><b>  主要器件:</b></p><p>  STC89C58RD+單片機(jī)(DIP40)</p><p>  Lcd1602,1個</p><p>  470歐9針排阻,1個</p><p>  晶振:11.0592MHz,1個</p><p>  瓷片電容:30PF,2個&l

8、t;/p><p><b>  10K電阻,1個</b></p><p>  DS18B20溫度計1個,PR-35式封裝</p><p>  2.1 DS18B20連接</p><p>  圖:2.1.1ds18b20 連接</p><p>  2.2DS18B20功能命令簡介及用法</p>

9、<p><b>  2.2.1功能簡介</b></p><p> ?。?) 智能溫度傳感器DS18B20的性能特點(diǎn):</p><p>  1) 獨(dú)特的單總線接口僅需要一個端口引腳進(jìn)行通信,可以是串行口也可以是其他I/O口,無須變換,直接輸出被測溫度值(9位二進(jìn)制,含符號位)。 多個DS18B20可以并聯(lián)掛接在一條總線上,實(shí)現(xiàn)實(shí)現(xiàn)多點(diǎn)溫度采集檢測功能;&

10、lt;/p><p>  2)可測溫度范圍為-55~+125℃,測量分辨率為0.0625℃;</p><p>  3) 內(nèi)含64位經(jīng)過激光修正的只讀存儲器ROM;</p><p>  4) 內(nèi)含寄生電源,可直接通過數(shù)據(jù)總線供電,電壓范圍為3.0~5.5V;</p><p><b>  5) 零待機(jī)功耗;</b></p&g

11、t;<p>  6)用戶可通過編程分別設(shè)定各路的溫度上、下限溫度值來實(shí)現(xiàn)報警功能;</p><p>  7) 適配各種微處理器;</p><p>  8) 報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)的器件;</p><p>  9) 負(fù)電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作;</p><p>

12、;  10) 可檢測距離遠(yuǎn),最遠(yuǎn)測量距離為150m 。</p><p> ?。?) DS18B20的內(nèi)部結(jié)構(gòu)</p><p>  DS18B20的內(nèi)部結(jié)構(gòu)如圖3-1所示。 DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM,溫度報警觸發(fā)器,溫度傳感器以及高速緩存器。</p><p>  64位光刻ROM。64位光刻ROM是出廠前已被刻好的,它可以看做是該DS1

13、8B0的地址序列號,不同的器件不一樣,64位的地址序列號的構(gòu)成如表2-1所示。開始8位是產(chǎn)品序列號代表產(chǎn)品的序列,接著48位產(chǎn)品序號代表同一系列產(chǎn)品的不同產(chǎn)品,最后8位是前56位的CRC校驗(yàn)碼,所以不同的器件的地址序列號各不一樣這也是多個DS18B20可以采用一線進(jìn)行通信的原因(8位CRC編碼的計算公式為CRC=X+X+X+1)。在64 b ROM的最高有效字節(jié)中存儲有循環(huán)冗余校驗(yàn)碼(CRC)。主機(jī)根據(jù)ROM的前56位來計算CRC值,并

14、和存入DS18B20中的CRC值做比較,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。</p><p>  表2.2.1 64位ROM地址序列號結(jié)構(gòu)</p><p>  圖2.2.1 DS18B20內(nèi)部結(jié)構(gòu)</p><p>  2) 非揮發(fā)的溫度報警觸發(fā)器(包括上限溫度觸發(fā)器TH和下限溫度觸發(fā)器TL)??赏ㄟ^軟件程序?qū)懭朐O(shè)定用戶所要求的報警上下限溫度值。</p>

15、<p>  3) 高速暫存器??梢栽O(shè)置DS18B20溫度轉(zhuǎn)換的精度。DS18B20出廠時該位被設(shè)置為0,用戶要去改動,R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率,如圖1.4。</p><p>  DS18B20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的E2PRAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲器, </p><p>  圖4.2.2 DS

16、18B20 暫存寄存器分布</p><p><b>  2.2.2命令簡介</b></p><p>  根據(jù) DS18B20 的通訊協(xié)議,主機(jī)(單片機(jī))控制 DS18B20 完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀</p><p>  寫之前都要對 DS18B20 進(jìn)行復(fù)位操作,復(fù)位成功后發(fā)送一條 ROM 指令,最后發(fā)送 RAM 指令,這樣才能&

17、lt;/p><p>  對 DS18B20 進(jìn)行預(yù)定的操作。復(fù)位要求主 CPU 將數(shù)據(jù)線下拉 500 微秒,然后釋放,當(dāng) DS18B20 收到信</p><p>  號后等待 16~60 微秒左右,后發(fā)出 60~240 微秒的存在低脈沖,主 CPU 收到此信號表示復(fù)位成功。</p><p>  圖:2.2.3 ROM指令表</p><p>  圖

18、:2.2.4 RAM指令表</p><p><b>  2.2.3簡單用法</b></p><p>  (1)DS18B20的初始化</p><p>  DS18B20的所有操作均從初始化開始,初始化的過程是首先由CPU發(fā)出一個復(fù)位脈沖,復(fù)位脈沖的時間為480~960us,然后由叢屬器件發(fā)出應(yīng)答脈沖。初始化是主CPU發(fā)出一個復(fù)位信號,將數(shù)據(jù)總線

19、上的所有DS18B20復(fù)位,然后釋放總線,該總線位接收狀態(tài)。由于接有上拉電阻,在釋放總線是有15 ~60us的時間間隙,在此之后的60~240us時間內(nèi),如果CPU檢測到總線為低電平的話,則說明DS18B20初始化完成。</p><p>  (2)發(fā)送ROM命令</p><p>  ROM的操作命令位8位二進(jìn)制數(shù),CPU對ROM的操作有讀ROM命令、符合ROM命令、搜索ROM命令、跳過RO

20、M命令、報警搜索命令共5種。其中符合ROM命令是用來識別連在總線是的DS18B20芯片,其過程是主CPU發(fā)出符合ROM命令(代碼位55H)后,接著送出64位的ROM數(shù)據(jù)序列,從而使主CPU實(shí)現(xiàn)對單總線上的特定DS18B20進(jìn)行尋址,只有與64位序列嚴(yán)格相符的DS18B20才能對后續(xù)的操作發(fā)出響應(yīng),符合ROM命令只對同時掛在總線上的多片DS18B20適用。</p><p><b>  發(fā)送RAM命令<

21、;/b></p><p>  RAM命令是暫存器操作命令,共有6條,在前面已經(jīng)列出,其功能是實(shí)現(xiàn)溫度的轉(zhuǎn)換、讀/寫、復(fù)制暫存器的內(nèi)容等功能。</p><p>  在具體的設(shè)計過程中,訪問DS18B20也是通過程序設(shè)計來實(shí)現(xiàn)的。具體程序可以按照上面的工作時序圖和命令的相應(yīng)格式進(jìn)行程序設(shè)計。</p><p>  另外,由于DS18B20單線通信功能是分時完成的,他

22、有嚴(yán)格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。</p><p><b>  測溫流程</b></p><p>  圖2.2.5 DS18B20測溫流程</p><p>  2.3 LCD1602的用法</p

23、><p>  2.31 LCD1602的特性</p><p>  +5V電壓,對比度可調(diào)</p><p><b>  內(nèi)含復(fù)位電路</b></p><p>  提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能</p><p>  有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM</p>

24、<p>  內(nèi)建有160個5X7點(diǎn)陣的字型的字符發(fā)生器CGROM</p><p>  8個可由用戶自定義的5X7的字符發(fā)生器CGRAM</p><p>  2.32 LCD1602接口說明</p><p>  2.33 LCD1602字符碼</p><p>  2.34 LCD1602 基本操作時序(11條指令)</p&g

25、t;<p>  讀狀態(tài)     輸入:RS=L,RW=H,E=H     </p><p>  輸出:DB0~DB7=狀態(tài)字 寫指令     輸入:RS=L,RW=L,E=下降沿脈沖,DB0~DB7=指令碼 輸出:無

26、 讀數(shù)據(jù)     輸入:RS=H,RW=H,E=H</p><p>  輸出: DB0~DB7=數(shù)據(jù)</p><p>  寫數(shù)據(jù)     輸入:RS=H,RW=L,E=下降沿脈沖,DB0~DB7=數(shù)據(jù)</p><p><b>  輸出:無</b><

27、;/p><p>  2.35 LCD1602自定義字符(最多8個 存放于CGRAM)</p><p>  我們從CGROM表上可以看到,在表的最左邊是一列可以允許用戶自定義的CGRAM,從上往下看著是16個,實(shí)際只有8個字節(jié)可用。它的字符碼是 00000000-00000111這8個地址,表的下面還有8個字節(jié),但因?yàn)檫@個CGRAM的字符碼規(guī)定0-2位為地址,3位無效,4-7全為零。因此 CGR

28、AM的字符碼只有最后三位能用也就是8個字節(jié)了。等效為0000X111,X為無效位,最后三位為000-111共8個。  如果我們要想顯示這8個用戶自定義的字符,操作方法和顯示CGROM的一樣,先設(shè)置DDRAM位置,再向DDRAM寫入字符碼,例如“A”就是41H?,F(xiàn) 在我們要顯示CGRAM的第一個自定義字符,就向DDRAM寫入00000000B(00H),如果要顯示第8個就寫入00000111(08H)</p>&l

29、t;p>  三:利用Proteus軟件對電路進(jìn)行仿真調(diào)試</p><p><b>  四:程序流程圖</b></p><p>  首先程序開始,將液晶顯示器進(jìn)行初始化。完畢后像lcd中寫入一個自定義字符“°”,用于顯示 ℃,如上圖所示。調(diào)用程序顯示靜態(tài)不需要改變的文字。之后獲取溫度數(shù)據(jù)轉(zhuǎn)化并送顯示。 </p><p><b

30、>  接↓下頁</b></p><p><b>  接↑上頁</b></p><p>  圖4.1 主程序流程圖</p><p>  圖4.2 靜態(tài)顯示流程圖 圖4.3 ds18b20獲取溫度流程圖</p><p>  --------------------

31、---------------------------------------------------</p><p>  獲取ds18b20的溫度數(shù)據(jù),并合成為一個12位的2進(jìn)制數(shù),然后通過精度轉(zhuǎn)換為一個10進(jìn)制數(shù)。通過判斷其大小 判斷數(shù)的正負(fù)值,若為負(fù)進(jìn)行取反加1轉(zhuǎn)換為正數(shù),之后分別送顯。</p><p><b>  調(diào)用8次</b></p><

32、;p><b>  返回8次</b></p><p>  調(diào)用8次 </p><p><b>  返回8次 </b></p><p><b>  N</b></p><p> 

33、 Y 圖4.4溫度轉(zhuǎn)換流程圖</p><p>  將送顯過來的數(shù)據(jù)接收到后,先進(jìn)去取位操作,將數(shù)進(jìn)行分離,然后判斷數(shù)據(jù)大小,根據(jù)大小選擇顯示,實(shí)現(xiàn)友好的顯示界面。</p><p>  圖4.5 正數(shù)顯示流程圖 圖4.6負(fù)數(shù)顯示流程圖</p><p><b>  五:實(shí)驗(yàn)源程序</b

34、></p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  uchar code disp[]="0123456789- ";</p

35、><p>  uchar code disp2[]="Tempreture";</p><p>  /*自定義文字是8*8點(diǎn)陣構(gòu)成的 但是前3位是無效的,如10100111 </p><p>  有效位是后面5位,前3位是1和0沒區(qū)別,最好為0*/</p><p>  uchar user[]={0x07,0x05,0x07

36、,0x00,0x00,0x00,0x00,0x00};//自定義”°“</p><p>  sbit lcden=P2^0;</p><p>  sbit lcdrw=P2^1;</p><p>  sbit lcdrs=P2^2;</p><p>  sbit tempt=P2^3; //數(shù)據(jù)總線</p>&l

37、t;p>  uint u_temp,s_temp; //定義無符號整型形參</p><p>  float f_temp; //定義浮點(diǎn)型形參</p><p>  void delay(uint x) //延時500ms程序</p><p><b>  {</b></p><p><b> 

38、 uint i,j;</b></p><p>  for(i=0;i<x;i++)</p><p>  for(j=0;j<130;j++);</p><p><b>  }</b></p><p>  /* rs=0 輸入指令 rs=1 輸入數(shù)據(jù)*/</p><p>  

39、/* r/w=0 向lcd寫入指令或數(shù)據(jù) r/w=1 從lcd 讀取信息*/</p><p>  /* en=1時候 讀取信息 1→0(下降沿)執(zhí)行命令*/</p><p>  void write_com(uchar com) //液晶寫命令</p><p><b>  {</b></p><p>  lcdrs

40、=0; </p><p><b>  lcdrw=0;</b></p><p><b>  P0=com;</b></p><p><b>  delay(2);</b></p><p><b>  lcden=1;</b></p>&l

41、t;p><b>  delay(2);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void write_data(uchar date)//液晶寫數(shù)據(jù)</p><p><b> 

42、 {</b></p><p><b>  lcdrs=1;</b></p><p><b>  lcdrw=0;</b></p><p><b>  P0=date;</b></p><p><b>  delay(2);</b></p&

43、gt;<p><b>  lcden=1;</b></p><p><b>  delay(2);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void lcd_i

44、nit() //液晶初始化</p><p><b>  {</b></p><p><b>  lcden=0;</b></p><p><b>  lcdrw=0;</b></p><p>  write_com(0x38); //初始化液晶第一行</

45、p><p>  write_com(0x0c); //開顯示 不顯示光標(biāo) 不閃爍</p><p>  write_com(0x06); //每次寫入數(shù)據(jù)后 地址加1</p><p>  write_com(0x01); //清屏</p><p><b>  }</b></p><p>

46、  void display_tempt(uint date) //溫度數(shù)據(jù)顯示</p><p><b>  {</b></p><p>  uchar i,j,k,m;</p><p>  m=date/1000;// 百位</p><p>  i=(date%1000)/100;//十位</p

47、><p>  j=(date%100)/10;//個位</p><p>  k=date%10;//小數(shù)位</p><p>  write_com(0x80+0x40+5);//從液晶顯示屏第二行的第5位開始顯示</p><p>  if(date>=1000) </p><p>  {write_dat

48、a(disp[m]);</p><p>  write_data(disp[i]);</p><p>  write_data(disp[j]);</p><p>  write_data('.');</p><p>  write_data(disp[k]);}</p><p>  else if(d

49、ate>=100&&date<1000)</p><p>  {write_data(disp[11]);</p><p>  write_data(disp[i]);</p><p>  write_data(disp[j]);</p><p>  write_data('.');</p&

50、gt;<p>  write_data(disp[k]);</p><p><b>  }</b></p><p>  else if(date>=0&&date<100)</p><p>  {write_data(disp[11]);</p><p>  write_dat

51、a(disp[11]);</p><p>  write_data(disp[j]);</p><p>  write_data('.');</p><p>  write_data(disp[k]);</p><p><b>  }</b></p><p><b

52、>  }</b></p><p>  void display_ftemp(uint date) // 顯示負(fù)數(shù)溫度</p><p><b>  {</b></p><p>  uchar i,j,k;</p><p>  i=date/100;//十位</p><p&g

53、t;  j=date%100/10;//個位</p><p>  k=date%100%10;//小數(shù)位</p><p>  write_com(0x80+0x40+5);//從液晶顯示屏第二行的第4位開始顯示</p><p>  if(date>=100&&date<600)</p><p><

54、b>  {</b></p><p>  write_data(disp[10]); //顯示負(fù)號</p><p>  write_data(disp[i]);</p><p>  write_data(disp[j]);</p><p>  write_data('.');</p><

55、p>  write_data(disp[k]);</p><p><b>  }</b></p><p>  else if(date>0&&date<100)</p><p><b>  {</b></p><p>  write_data(disp[11]);&

56、lt;/p><p>  write_data(disp[10]);</p><p>  write_data(disp[j]);</p><p>  write_data('.');</p><p>  write_data(disp[k]);</p><p><b>  }</b>&

57、lt;/p><p><b>  }</b></p><p>  void reset_tempt() //DS18B20復(fù)位,初始化</p><p><b>  {</b></p><p><b>  uint i;</b></p><p>  tem

58、pt=0; //先將數(shù)據(jù)總線拉到低電平</p><p><b>  i=90;</b></p><p>  while(i>0)i--; //延時480到960微妙</p><p>  tempt=1; //數(shù)據(jù)線拉到高電平</p><p>  i=4;//延時</p><

59、;p>  while(i>0)i--;</p><p><b>  }</b></p><p>  bit read_bit()//讀一位DS18B20數(shù)據(jù)</p><p><b>  {</b></p><p><b>  uint i;</b></p

60、><p><b>  bit dat;</b></p><p><b>  tempt=0;</b></p><p>  i++;//延時</p><p><b>  tempt=1;</b></p><p>  i++;//延時</p

61、><p><b>  i++;</b></p><p>  dat=tempt;</p><p>  i=8;//延時</p><p>  while(i>0)i--;</p><p>  return dat;</p><p><b>  }</

62、b></p><p>  uchar read_tempt()//讀一個字節(jié)DS18B20數(shù)據(jù)</p><p><b>  {</b></p><p>  uchar i,j,dat;</p><p><b>  dat=0;</b></p><p>  for(i

63、=1;i<=8;i++)</p><p><b>  {</b></p><p>  j=read_bit();</p><p>  dat=(j<<7)|(dat>>1); //將讀取的數(shù)據(jù)位按讀取先后順序,</p><p>  } //從低位到高位(從右往左)排列保存到dat&

64、lt;/p><p>  return dat;</p><p><b>  }</b></p><p>  void write_byte(uchar dat)//寫一個字節(jié)數(shù)據(jù)到DS18B20</p><p><b>  {</b></p><p><b>  u

65、int i;</b></p><p><b>  uchar j;</b></p><p>  bit testbit;</p><p>  for(j=1;j<=8;j++)</p><p><b>  {</b></p><p>  testbit=da

66、t&0x01;//每次只寫一位數(shù)據(jù)</p><p>  dat=dat>>1;</p><p>  if(testbit)</p><p><b>  {</b></p><p><b>  tempt=0;</b></p><p>  i++;

67、//延時</p><p><b>  tempt=1;</b></p><p>  i=8;//延時</p><p>  while(i>0)i--;</p><p><b>  }</b></p><p><b>  else</b>

68、</p><p><b>  {</b></p><p><b>  tempt=0;</b></p><p>  i=8;//延時</p><p>  while(i>0)i--;</p><p><b>  tempt=1;</b>&l

69、t;/p><p>  i++;//延時</p><p><b>  i++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

70、<p>  void convert_tempt() //DS18B20開始獲取溫度并進(jìn)行轉(zhuǎn)換</p><p><b>  {</b></p><p>  reset_tempt();</p><p><b>  delay(1);</b></p><p>  write_byte(0x

71、cc); //跳過64位rom地址 直接向ds18b20下達(dá)溫度轉(zhuǎn)換命令</p><p>  write_byte(0x44); //啟動18b20進(jìn)行溫度轉(zhuǎn)換</p><p><b>  }</b></p><p>  uint get_tempt() //讀取DS18B20寄存器中的溫度數(shù)據(jù)</p><p>

72、<b>  {</b></p><p>  uchar a,b;</p><p>  reset_tempt(); //復(fù)位</p><p><b>  delay(1);</b></p><p>  write_byte(0xcc);</p><p>  write_b

73、yte(0xbe);//讀內(nèi)部ram中9字節(jié)的內(nèi)容</p><p>  a=read_tempt();//讀取溫度低8位</p><p>  b=read_tempt();//讀取溫度高8位</p><p><b>  u_temp=b;</b></p><p>  u_temp<<=8;</

74、p><p>  u_temp=u_temp|a;</p><p>  f_temp=u_temp*0.0625; //精度為12位,所以分辨率為0.0625</p><p>  s_temp=f_temp*10 ; //乘以10,將實(shí)際溫度擴(kuò)大10倍</p><p>  if(s_temp<1260)</p><

75、;p>  display_tempt(s_temp);</p><p>  if(s_temp>1260)</p><p><b>  {</b></p><p>  u_temp=~u_temp+1;</p><p>  f_temp=u_temp*0.0625;</p><p> 

76、 s_temp=f_temp*10;</p><p>  display_ftemp(s_temp);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void display() //靜態(tài)文字顯示</p><p>&

77、lt;b>  {</b></p><p><b>  uchar i;</b></p><p>  write_com(0x80+0x03); //0x80+3(0x80+0x03)表示從液晶顯示屏第一行的第四位開始顯示</p><p>  for(i=0;i<10;i++)</p><p>

78、<b>  {</b></p><p>  write_data(disp2[i]);</p><p><b>  }</b></p><p>  write_com(0x80+0x40+10); //從液晶顯示屏第二行的第11位開始顯示</p><p>  write_data(0x00);<

79、;/p><p>  write_data('C');</p><p><b>  }</b></p><p>  void main() //主函數(shù)</p><p><b>  {</b></p><p><b>  uchar i;</

80、b></p><p>  lcd_init();</p><p>  write_com(0x40);</p><p>  for(i=0;i<8;i++)</p><p><b>  {</b></p><p><b>  delay(1);</b></p

81、><p>  write_data(user[i]);</p><p><b>  }</b></p><p>  display();</p><p><b>  while(1)</b></p><p><b>  {</b></p>&

溫馨提示

  • 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

提交評論