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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2768|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

ds18b20 lcd1602顯示單片機源代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:180737 發(fā)表于 2017-3-22 19:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
ds18b20 lcd1602顯示



單片機源代碼:
  1. # include <reg52.h>
  2. # include <intrins.h>
  3. # define uchar unsigned char
  4. # define uint unsigned int            //宏定義

  5. void delay_50us(uint t);                   //延時函數(shù)
  6. void write_com(uchar com);         //LCD寫指令函數(shù)
  7. void write_data(uchar dat);        //LCD寫數(shù)據(jù)函數(shù)
  8. void init(void);                               //LCD初始化函數(shù)
  9. void write_one_byte(uchar dat);    //向DS18B20寫入一個字節(jié)
  10. uchar  read_one_byte();             //從DS18B20讀出一字節(jié)
  11. void init_ds18b20();               //DS18b20初始化


  12. sbit rs=P2^6;
  13. sbit rw=P2^5;
  14. sbit e=P2^7;
  15. sbit DQ=P3^7;                   //定義按鍵

  16. uchar temph,templ;                   //申明溫度變量
  17. uchar array[4];                                   //申明數(shù)組變量


  18. void delay_50us(uint t)                   //延時函數(shù)
  19. {
  20.         uchar j;
  21.         for(;t>0;t--)
  22.         for(j=6245;j>0;j--);
  23. }

  24. void write_com(uchar com)        //LCD寫指令函數(shù)
  25. {
  26.         e=0;
  27.         rs=0;
  28.         rw=0;
  29.         P0=com;
  30.         delay_50us(10);
  31.         e=1;
  32.         delay_50us(20);
  33.         e=0;        
  34. }

  35. void write_data(uchar dat)      //LCD寫數(shù)據(jù)函數(shù)
  36. {
  37.         e=0;
  38.         rs=1;
  39.         rw=0;
  40.         P0=dat;
  41.         delay_50us(10);
  42.         e=1;
  43.         delay_50us(20);
  44.         e=0;        
  45. }

  46. void init(void)                        //LCD初始化函數(shù)
  47. {
  48.         delay_50us(300);        
  49.         write_com(0x38);
  50.         delay_50us(100);
  51.         write_com(0x38);
  52.         delay_50us(100);
  53.         write_com(0x38);
  54.         write_com(0x38);
  55.                
  56.     write_com(0x08);
  57.         write_com(0x01);
  58.         write_com(0x06);
  59.         write_com(0x0c);
  60. }

  61. void init_ds18b20()        //DS18b20初始化
  62. {
  63.         uint i,q;
  64.         DQ=1;
  65.         _nop_();
  66.         DQ=0;
  67.         i=70;
  68.         while(i--);
  69.         DQ=1;
  70.         i=0;
  71.         q=DQ;
  72.         delay_50us(2);
  73. }

  74. void write_one_byte(uchar dat)//向DS18B20寫入一個字節(jié)
  75. {
  76.         uint i, j;
  77.         for(j=0; j<8; j++)
  78.         {
  79.                 DQ=0;         
  80.                 i++;
  81.                 DQ=dat&0x01;  
  82.                 i=6;
  83.                 while(i--);
  84.                 DQ=1;        
  85.                 dat >>= 1;
  86.         }

  87. }

  88. uchar  read_one_byte()//從DS18B20讀出一字節(jié)
  89. {
  90.         uchar dat;
  91.         uint i, j;        
  92.         for(j=8; j>0; j--)
  93.         {
  94.                 DQ=0;                        //每寫入一位數(shù)據(jù)之前先把總線拉低1us
  95.                 i++;
  96.                 DQ=dat&0x01; //然后寫入一個數(shù)據(jù),從最低位開始
  97.                 i=6;
  98.                 while(i--); //延時68us,持續(xù)時間最少60us
  99.                 DQ=1;        //然后釋放總線,至少1us給總線恢復(fù)時間才能接著寫入第二個數(shù)值
  100.                 dat>>=1;
  101.         }                                
  102.         return dat;
  103. }


  104. void main()                                           //主函數(shù)
  105. {
  106.         int TEMP;                                   //聲明溫度變量
  107.         init();                                           //液晶初始化

  108.         while(1)
  109.         {
  110.         
  111.                         init_ds18b20();                         //ds18b20初始化
  112.                         write_one_byte(0xcc);         //跳過ROM操作命令
  113.                         write_one_byte(0x44);         //溫度轉(zhuǎn)換命令
  114.                         init_ds18b20();                         //ds18b20初始化
  115.                         write_one_byte(0xcc);         //跳過ROM操作命令
  116.                         write_one_byte(0xbe);         //發(fā)送讀取溫度命令
  117.                         templ=read_one_byte();         //讀取溫度值共16位,先讀低字節(jié)
  118.                         temph=read_one_byte();         //再讀高字節(jié)
  119.                         TEMP=temph;                                 //高8位賦予返回值
  120.                         TEMP <<= 8;                                 //左移8位
  121.                         TEMP|=templ;                         //與低8位
  122.                         if((temph&0xf8)==0xf8)         //如果高8位為0
  123.                         {
  124.                                 write_com(0x80+0x00);        //寫地址 80表示初始地址
  125.                         write_data('-');                //顯示負(fù)號
  126.                                 TEMP=TEMP-1;
  127.                                 TEMP=~TEMP;                                //負(fù)數(shù)的補碼是原碼取反,然后再加1。

  128.                         }
  129.                         else                                                  
  130.                         {
  131.                                 write_com(0x80+0x00);  //寫地址 80表示初始地址
  132.                         write_data('+');                //顯示+
  133.                         }
  134.         
  135.                         TEMP=TEMP*0.0625*10+0.5;           //留兩個小數(shù)點就*100,+0.5是四舍五入,因為C語言浮點數(shù)轉(zhuǎn)換為整型的時候把小數(shù)點
  136.                                                  //后面的數(shù)自動去掉,不管是否大于0.5,而+0.5之后大于0.5的就是進1了,小于0.5的就
  137.                                                 //算由?.5,還是在小數(shù)點后面。
  138.                         array[0]=TEMP/1000;                    //百位
  139.                         array[1]=(TEMP%1000)/100;        //十位
  140.                         array[2]=(TEMP%100)/10;            //個位
  141.                         array[3]=TEMP%10;                        //小數(shù)
  142.                


  143. …………余下代碼請下載附件…………  

復(fù)制代碼

下載:
ds18b20顯示溫度.zip (22.03 KB, 下載次數(shù): 49)

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

使用道具 舉報

沙發(fā)
ID:239855 發(fā)表于 2017-12-12 22:30 來自觸屏版 | 只看該作者
新人學(xué)習(xí),下載看看。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产十日韩十欧美 | 一区二区三区观看视频 | 成年男女免费视频网站 | 亚洲精品一区在线 | 国产欧美一区二区三区久久手机版 | 爱爱小视频| 精品国产黄色片 | 自拍偷拍av | 国产精品黄视频 | 成年视频在线观看福利资源 | 国产一区2区 | av国产精品 | 久久精品一区二区 | 欧美午夜一区二区三区免费大片 | 国产欧美精品一区二区三区 | 精品综合久久久 | 国产99视频精品免费视频7 | 看片91 | 久久久久国产精品 | 免费a级毛片在线播放 | 91九色视频| 99re99| 免费在线黄| 风间由美一区二区三区在线观看 | 亚洲精品视频在线看 | 欧美日韩久久 | av大片| 亚洲一区二区在线播放 | 国产成人精品一区二区三区四区 | 天堂一区 | 韩日在线视频 | 国产成人精品一区二区三区 | 一级做受毛片免费大片 | 精品一区二区久久久久久久网精 | 亚洲视频一区在线 | 成人影视网址 | 欧美乱大交xxxxx另类电影 | 欧美在线一级 | 夜夜操av| 日韩国产免费观看 | 91成人精品|