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

標題: DS18B20測溫1602液晶顯示實驗指導書下載 [打印本頁]

作者: 梁光陽    時間: 2017-6-9 22:22
標題: 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)




作者: xbd1763688799    時間: 2017-12-5 15:18
下載不了,提示擋住了。




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 不用播放器看的av | 日韩成人性视频 | 亚洲毛片一区二区 | 成人精品福利 | 日韩在线视频一区 | 91综合网 | 怡红院怡春院一级毛片 | 国产成人啪免费观看软件 | 日韩精品免费播放 | 午夜天堂精品久久久久 | 一区二区三区视频免费看 | av在线天堂网 | 夜夜草 | 欧美bondage紧缚视频 | 国产精品久久久久久久久久久免费看 | 国产99精品 | 最新中文字幕在线 | 人人看人人搞 | 国精日本亚洲欧州国产中文久久 | 亚洲日韩欧美一区二区在线 | 亚洲欧美激情精品一区二区 | 99久9 | 久久精品久久久久久 | 一二区视频 | 久久久天堂 | 成人免费一级视频 | 日韩一区二区三区视频在线观看 | 涩涩视频网站在线观看 | 欧美日韩综合一区 | 久久免费国产 | 午夜亚洲| 色视频免费 | 国产一区二区在线视频 | 亚洲 欧美 综合 | 亚洲va国产日韩欧美精品色婷婷 | 高清视频一区二区三区 | 超碰欧美 | 91视频免费观看 | 午夜爽爽爽男女免费观看影院 | 综合久久久久 | 久久久久久亚洲精品 |