久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3556|回復: 2
打印 上一主題 下一主題
收起左側

DS18B20測溫1602液晶顯示實驗指導書下載

[復制鏈接]
跳轉到指定樓層
樓主
實驗指導書,喜歡的朋友帶走

DS18B20溫度傳感器實驗








學校:蘭州職業技術學院

班級:   15應用電子  

學號:   201*334   

姓名:    梁*陽     



電子信息工程系

DS18B20溫度傳感器實驗


實驗目的

1.了解LCD1602工作原理和管腳功能;

2.學習使用LCD1602顯示屏顯示字庫;

3.掌握LCD1602顯示屏控制方法;

4.了解DS18B20溫度傳感器的工作原理與管腳功能;

5.學習DS18B20溫度傳感器的控制方法;

6.掌握DS18B20溫度傳感器實時測溫驅動程序。

實驗內容及步驟

  • 硬件設計
  • LCD1602引腳定義及介紹

1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形(用自定義CGRAM,顯示效果也不好)。

1602LCD是指顯示的內容為16X2,即可以顯示兩行,每行16個字符液晶模塊(顯示字符和數字)。

市面上字符液晶大多數是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780寫的控制程序可以很方便地應用于市面上大部分的字符型液晶。

1602采用標準的16腳接口,其中:

第1腳:GND為電源地

第2腳:VCC接5V電源正極

第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產生“鬼影”,使用時可以通過一個10K的電位器調整對比度)。

第4腳:RS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器。

第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。

第6腳:E(或EN)端為使能(enable)端,高電平時讀取信息,負跳變時執行指令。

第7~14腳:D0~D7為8位雙向數據端。

第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負極。

特性:3.3V或5V工作電壓,對比度可調內含復位電路提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能,有80字節顯示數據存儲器DDRAM內建有192個5X7點陣的字型的字符發生器CGROM8個可由用戶自定義的5X7的字符發生器CGRAM


特征應用

微功耗、體積小、顯示內容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應用系統中。

  • DS18B20數字溫度傳感器引腳定義:


DS18B20數字溫度傳感器接線方便,封裝成后可應用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼

封裝式,型號多種多樣,有LTM8877,LTM8874等等。主要根據應用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環測溫,鍋爐測溫,機房測溫,農業大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設備數字測溫和控制領域。

①獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊② 、測溫范圍 -55℃~+125℃,固有測溫誤差(注意,不是分辨率,這里之前是錯誤的)1℃。

③支持多點組網功能,多個DS18B20可以并聯在唯一的三線上,最多只能并聯8個,實現多點測溫,如果數量過多,會使供電電源電壓過低,從而造成信號傳輸的不穩定。

④工作電源: 3.0~5.5V/DC (可以數據線寄生電源)

⑤ 在使用中不需要任何外圍元件

⑥ 測量結果以9~12位數字量方式串行傳送

⑦ 不銹鋼保護管直徑 Φ6

⑧ 適用于DN15~25, DN40~DN250各種介質工業管道和狹小空間設備測溫

⑨ 標準安裝螺紋 M10X1, M12X1.5, G1/2”任選

⑩ PVC電纜直接出線或德式球型接線盒出線,便于與其它電器設備連接。

3單片機最小系統的P0.0~P0.7接LCD1602顯示屏D0~D7,LCD1602顯示屏VDD接高電平,VSS,VEE接地;

4P3.5/P2.7/P3.4分別接LCD1602顯示屏WS/RW/EN;

5P2.2接DS18B20芯片DQ引腳,硬件接線如下圖所示。


  • 軟件編程

DS18B20溫度傳感參考程序


  1. #include//頭文件

  2. #define uchar unsigned char//聲明無符號字符變量

  3. #define uint unsigned int//定義uint為無符號整型變量



  4. sbit DQ=P2^2;//ds18b20與單片機連接口

  5. sbit RS=P3^5;//RS為寄存器選擇,高電平1時選擇數據寄存器、低電平0時選擇指令寄存器

  6. sbit RW=P2^7;//RW為讀寫信號線,高電平1時進行讀操作,低電平0時進行寫操作

  7. sbit EN=P3^4;//E(或EN)端為使能(enable)端,高電平1時讀取信息,負跳變時執行指令





  8. unsigned char code str1[]={"15YYDZ-----LGY"};//自定義字符

  9. unsigned char code str2[]={"         /C"}; //顯示溫度值

  10. uchar data disdata[5];

  11. uint tvalue;//溫度值

  12. uchar tflag;//溫度正負標志



  13. /*************************lcd1602程序**************************/

  14. void delay1ms(unsigned int ms)//延時1毫秒(不夠精確的)

  15. {unsigned int i,j;

  16.    for(i=0;i<ms;i++)

  17.     for(j=0;j<100;j++);

  18. }



  19. void wr_com(unsigned char com)//寫指令//

  20. {

  21.   delay1ms(1);

  22.    RS=0;//低電平0時選擇指令寄存器

  23.    RW=0;//低電平0時進行寫操作

  24.    EN=0;

  25.    P2=com;

  26.    delay1ms(1);

  27.    EN=1;//高電平1時讀取信息

  28.    delay1ms(1);

  29.    EN=0;

  30.   }



  31. void wr_dat(unsigned char dat)//寫數據//

  32. {

  33.    delay1ms(1);;

  34.    RS=1;//低電平0時選擇指令寄存器

  35.    RW=0;//低電平0時進行寫操作

  36.    EN=0;

  37.    P2=dat;

  38.    delay1ms(1);

  39.    EN=1;//高電平1時讀取信息

  40.    delay1ms(1);

  41.    EN=0;

  42. }



  43. void lcd_init()//初始化設置//

  44. {

  45. delay1ms(15);

  46.       wr_com(0x38);delay1ms(5);

  47.       wr_com(0x08);delay1ms(5);

  48.       wr_com(0x01);delay1ms(5);

  49.      wr_com(0x06);delay1ms(5);

  50.       wr_com(0x0c);delay1ms(5);

  51. }





  52. void display(unsigned char *p)//顯示//

  53. {

  54. while(*p!='')

  55. {

  56. wr_dat(*p);

  57. p++;

  58. delay1ms(1);

  59. }

  60. }



  61.   init_play()//初始化顯示

  62.   { lcd_init();

  63.     wr_com(0x80);

  64.               display(str1);

  65.               wr_com(0xc0);

  66.               display(str2);

  67.    }



  68. /**********ds18B20程序*************/

  69. void delay_18B20(unsigned int i)//延時1微秒

  70. {

  71.               while(i--);

  72. }



  73. void ds1820rst()/*ds1820復位*/

  74. {

  75. unsigned char x=0;

  76.               DQ = 1;          //DQ復位

  77.               delay_18B20(4);  //延時

  78.               DQ = 0;          //DQ拉低

  79.               delay_18B20(100); //精確延時大于480us

  80.               DQ = 1;          //拉高

  81.               delay_18B20(40);            

  82.    }



  83.    uchar ds1820rd()/*讀數據*/

  84.   {

  85. unsigned char i=0;

  86. unsigned char dat = 0;

  87.               for (i=8;i>0;i--)

  88.               {   DQ = 0; //給脈沖信號

  89.                               dat>>=1;

  90.                               DQ = 1; //給脈沖信號

  91.                               if(DQ)

  92.                               dat|=0x80;

  93.                               delay_18B20(10);

  94.               }

  95.               return(dat);

  96.   }



  97.   void ds1820wr(uchar wdata)/*寫數據*/

  98.   {unsigned char i=0;

  99.     for (i=8; i>0; i--)

  100.    {

  101. DQ = 0;

  102.      DQ = wdata&0x01;

  103.      delay_18B20(10);

  104.      DQ = 1;

  105.      wdata>>=1;

  106.    }

  107. }

  108. read_temp()/*讀取溫度值并轉換*/

  109. {

  110. uchar a,b;

  111.   ds1820rst();   

  112.   ds1820wr(0xcc);//*跳過讀序列號*/

  113.   ds1820wr(0x44);//*啟動溫度轉換*/

  114.   ds1820rst();   

  115.   ds1820wr(0xcc);//*跳過讀序列號*/

  116.   ds1820wr(0xbe);//*讀取溫度*/

  117.   a=ds1820rd();

  118.   b=ds1820rd();

  119.   tvalue=b;

  120.   tvalue<<=8;

  121.   tvalue=tvalue|a;

  122.     if(tvalue<0x0fff)

  123.    tflag=0;

  124.     else

  125.    {

  126. tvalue=~tvalue+1;

  127.               tflag=1;

  128.    }

  129.   tvalue=tvalue*(0.625);//溫度值擴大10倍,精確到1位小數

  130.               return(tvalue);

  131.   }



  132. /*******************************************************************/

  133.    void ds1820disp()//溫度值顯示

  134.               {

  135. uchar flagdat;

  136. disdata[0]=tvalue/1000+0x30;//百位數

  137. disdata[1]=tvalue%1000/100+0x30;//十位數

  138. disdata[2]=tvalue%100/10+0x30;//個位數

  139. disdata[3]=tvalue%10+0x30;//小數位



  140. if(tflag==0)

  141.                   flagdat=0x20;//正溫度不顯示符號

  142.      else

  143.        flagdat=0x2d;//負溫度顯示負號:-



  144.      if(disdata[0]==0x30)

  145.                  {disdata[0]=0x20;//如果百位為0,不顯示

  146. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


  • 實驗仿真結果圖如下圖所示


完整論文下載(word格式 可編輯):
1602溫度顯示.docx (390.13 KB, 下載次數: 22)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:245554 發表于 2017-12-5 15:18 | 只看該作者
下載不了,提示擋住了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线国产精品 | 精品免费国产一区二区三区四区 | 国产亚洲精品久久情网 | 亚洲精品电影网在线观看 | 国产一级电影在线观看 | 午夜无码国产理论在线 | www.亚洲国产精品 | 三级成人在线观看 | 伊人伊人 | 亚洲国产视频一区二区 | 亚洲综合国产精品 | 欧美一区二区三区国产 | 日本一区二区三区四区 | 日韩欧美在线观看 | 欧美一区二区在线视频 | 午夜精品久久久久久久久久久久 | 波多野结衣电影一区 | 中文字幕精品一区久久久久 | 日本久久精品 | 亚洲国产成人精品女人久久久 | 亚洲欧美日韩国产综合 | 国产精品国产三级国产aⅴ无密码 | 秋霞在线一区二区 | 九九伊人sl水蜜桃色推荐 | 噜久寡妇噜噜久久寡妇 | 国产成人精品久久二区二区 | 欧美精品综合在线 | 欧美日韩精品一区 | 国产精品免费一区二区三区 | 在线一区二区三区 | 欧美视频日韩 | 欧美激情一区二区 | 在线免费av电影 | 亚洲乱码一区二区三区在线观看 | 欧美一区二区三区在线看 | 亚洲精品毛片av | 国产视频一二三区 | www.亚洲视频.com | 日韩欧美大片在线观看 | 午夜影院在线播放 | 毛片视频网址 |