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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

18b20與單片機串口結合,實時接收,檢測溫度程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:507222 發(fā)表于 2019-4-25 18:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
18b20檢測溫度,顯示在數碼管上,同過串口發(fā)送到電腦

單片機源程序如下:
  1. #include <at89x51.h>

  2. sbit DQ =     P2 ^ 6;  //定義端口DQ

  3. sbit led1    =P2^0;
  4. sbit led2    =P2^1;
  5. sbit led3    =P2^2;
  6. sbit led4    =P2^3;
  7. #define BCD unsigned char
  8. #define shi unsigned char
  9. unsigned char tx[10]={0,0,0x2E,0,0,0,0,0xDF,0x43,0x0A};

  10. unsigned code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
  11.                         0xf8,0x80,0x90};

  12. void Delay(int num)//延時函數
  13. {
  14.         while(num--) ;
  15. }

  16. void Delaynms(unsigned int di) //延時
  17. {
  18.         unsigned int da,db;
  19.          for(da=0;da<di;da++)
  20.                    for(db=0;db<100;db++);
  21. }

  22. void Init_DS18B20(void)//初始化ds1820
  23. {
  24.         unsigned char x=0;
  25.         DQ = 1;    //DQ復位
  26.         Delay(8);  //稍做延時
  27.         DQ = 0;    //單片機將DQ拉低
  28.         Delay(80); //精確延時 大于 480us
  29.         DQ = 1;    //拉高總線
  30.         Delay(14);
  31.         x=DQ;      //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
  32.         Delay(20);
  33. }


  34. unsigned char ReadOneChar(void)//讀一個字節(jié)
  35. {
  36.         unsigned char i=0;
  37.         unsigned char dat = 0;
  38.         for (i=8;i>0;i--)
  39.         {
  40.                 DQ = 0; // 給脈沖信號
  41.                 dat>>=1;
  42.                 DQ = 1; // 給脈沖信號
  43.                 if(DQ)
  44.                 dat|=0x80;
  45.                 Delay(4);
  46.         }
  47.         return(dat);
  48. }


  49. void WriteOneChar(unsigned char dat)//寫一個字節(jié)
  50. {
  51.         unsigned char i=0;
  52.         for (i=8; i>0; i--)
  53.         {
  54.                 DQ = 0;
  55.                 DQ = dat&0x01;
  56.                 Delay(2);
  57.                 DQ = 1;
  58.                 dat>>=1;
  59.         }
  60. }


  61. void ReadTemperature(void)//讀取溫度
  62. {
  63.         unsigned char a=0;
  64.         unsigned char b=0;
  65.         unsigned char Data_L=0;
  66.         unsigned char num=0;

  67.         Init_DS18B20();

  68.         WriteOneChar(0xCC); // 跳過讀序號列號的操作
  69.         WriteOneChar(0x44); // 啟動溫度轉換
  70.         Init_DS18B20();
  71.         WriteOneChar(0xCC); //跳過讀序號列號的操作
  72.         WriteOneChar(0xBE); //讀取溫度寄存器

  73.         a=ReadOneChar();  //讀低8位
  74.         b=ReadOneChar(); //讀高8位

  75.     tx[0] = (a/16+b*16)/10;      //整數部分


  76.         tx[1] = (a/16+b*16)%10;

  77.     Data_L=a&0X0F;
  78.     for(num=3;num<7;num++)                 //小數部分
  79.    {
  80.       Data_L=Data_L*10;                                 //10           //100                //40                 //80
  81.      tx[num]=Data_L/16;                         //0          //6                        //2                         //5
  82.       Data_L=Data_L%16;                                 //10           //4                        //8
  83.         }

  84. }

  85. void Display_SMG(void)
  86. {
  87.    unsigned char a;
  88.    for(a=0;a<=50;a++)
  89.    {
  90.            P0=table[tx[0]];
  91.            P2_0 = 0;
  92.            Delaynms(5);
  93.            P2_0 = 1;
  94.         
  95.            P0=(table[tx[1]])&0x7f;
  96.            P2_1 = 0;
  97.            Delaynms(5);
  98.            P2_1 = 1;
  99.         
  100.            P0=table[tx[3]];
  101.            P2_2 = 0;
  102.            Delaynms(5);
  103.            P2_2 = 1;
  104.         
  105.            P0=table[tx[4]];
  106.            P2_3 = 0;
  107.            Delaynms(5);
  108.            P2_3 = 1;
  109.    }
  110. }
  111. void b(unsigned int baud)
  112. {
  113.         SCON=0x50;//0101  0000
  114.         TMOD &=0x0F;
  115.         TMOD |=0x20;
  116.         TH1=TL1=(256-11059200)/12/2/16/baud;
  117.         ET1=0;
  118.         TR1=1;
  119. }

  120. void main(void)
  121. {  
  122.         BCD w,a,s,d;
  123.         shi z,x,c,v;
  124.         Init_DS18B20();
  125.         while(1)
  126.         {                 
  127.                 ReadTemperature();         
  128.                 Display_SMG();         
  129.                 b(9600);
  130.         w=(table[tx[0]]/10*16)+(table[tx[0]]%10);
  131.         z=((w>>4)*10+(w&0x0f));

  132.                 SBUF=z;
  133.                 while(TI==0);
  134.              TI=0;
  135.                  Delay(1000);
  136.                 a=(table[tx[1]]&0x7f/10*16)+(table[tx[1]]&0x7f%10);
  137.                 x=((a>>4)*10+(a&0x0f));
  138.                 SBUF=x;
  139.                 while(TI==0);
  140.              TI=0;
  141.                  Delay(1000);
  142.                 s=(table[tx[3]]/10*16)+(table[tx[3]]%10);
  143.                 c=((s>>4)*10+(s&0x0f));
  144.                                 SBUF=c;
  145.                 while(TI==0);
  146.              TI=0;
  147.                  Delay(1000);
  148.                 d=(table[tx[4]]/10*16)+(table[tx[4]]%10);
  149.                 v=((d>>4)*10+(d&0x0f));
  150.                                 SBUF=v;
  151.                 while(TI==0);
  152.              TI=0;
  153.      Delay(1000);
  154.         }         
  155. }
復制代碼

所有資料51hei提供下載:
串口溫度.rar (40.68 KB, 下載次數: 17)



評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久毛片| 欧美日一区 | 欧美一级二级三级视频 | 黄色成人国产 | 国产精久久久久久 | 成人久久久 | 亚洲欧美一区二区三区在线 | 精品欧美在线观看 | 青青草视频网站 | 精品伊人 | 精品欧美一区二区精品久久 | 亚洲欧美综合 | 国产日韩一区二区三免费 | 中文字幕中文字幕 | 欧美日韩大陆 | 亚洲一区二区三区四区五区中文 | 国产精品精品视频一区二区三区 | 国产激情 | 国产精品久久久久久久久久久免费看 | 久久成人精品视频 | 久久精品高清视频 | 成人午夜网站 | 欧美在线视频一区二区 | 一区二区视频免费观看 | 国产日韩欧美综合 | 狠狠操电影 | 国产精品视频久久久久久 | 天堂影院av | 久久久久国产一级毛片 | 成人精品一区二区三区 | 亚洲精品久久久久久一区二区 | 国产激情在线观看视频 | 亚洲九九| 黄视频网站免费观看 | 99reav| 国产精品久久在线观看 | 免费一级欧美在线观看视频 | 中文在线一区二区 | 色综合天天天天做夜夜夜夜做 | 色噜噜狠狠色综合中国 | 九九色九九 |