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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4362|回復: 4
收起左側

51單片機溫度計 帶負溫度檢測 含仿真和源程序

[復制鏈接]
ID:147685 發表于 2016-12-12 22:27 | 顯示全部樓層 |閱讀模式
這幾天做課程設計已經瘋了

0.png
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. uchar code lednum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//數碼管字0~9
  5. uint  temp;
  6. uchar g,s,b,q;          //個十百千位
  7. //uchar data disdata[5];
  8. uint  Tvalue;     //溫度值
  9. uchar Tflag;      //溫度正負標志



  10. sbit P34=P3^4;
  11. sbit P35=P3^5;
  12. sbit P36=P3^6;
  13. sbit  DQ=P3^7;//ds18b20與單片機連接口
  14. sbit P17=P1^7;
  15. sbit P24=P2^4;

  16. /*****************延時函數********************/
  17. void delay(uint x)
  18. {  uchar k;
  19.    while(x--)
  20.    for(k=0;k<250;k++) ;
  21. }
  22. /*****************數碼管掃描********************/                                          
  23. void ledscan(void)
  24. {   uchar k;
  25.     for(k=0;k<150;k++)
  26.         {                 //顯示DS18B20  小數點一位,含負溫度顯示
  27.                   P1=lednum[g];P2=0x0e;delay(1);P1=0x00;
  28.         P1=lednum[s];P17=1;P2=0x0d;delay(1);P1=0x00;
  29.             P1=lednum[b];P2=0x0b;delay(1);P1=0x00;
  30.             P1=lednum[q];P2=0x07;delay(1);P1=0x00;
  31.          }
  32. }

  33. /******************************DS18B20程序(定義開始)***************************************/
  34. void delay_18B20(unsigned int i)//延時2微秒
  35. {
  36.         while(i--);
  37. }
  38. /*****************ds1820復位****************/
  39. void DS18B20_RST()         
  40. {  unsigned char x=0;
  41.          DQ = 1;           //DQ復位
  42.          delay_18B20(8);   //延時
  43.          DQ = 0;           //DQ拉低
  44.          delay_18B20(80); //精確延時大于480us
  45.          DQ = 1;           //拉高
  46.          delay_18B20(14);
  47.          x=DQ;
  48.          delay_18B20(20);         
  49.    }  
  50. /*****************讀數據*******************/  
  51. uchar DS18B20_RD()        
  52.   {  unsigned char i=0;
  53.          unsigned char R_data= 0;
  54.          for (i=8;i>0;i--)
  55.          {    DQ = 0;      //給脈沖信號
  56.                   R_data>>=1;  //
  57.                   DQ = 1;      //給脈沖信號
  58.                   if(DQ)
  59.                   R_data|=0x80;
  60.                   delay_18B20(4);
  61.          }
  62.         return(R_data);
  63.   }
  64. /*******************寫數據*******************/
  65.   void DS18B20_WR(uchar W_data)
  66.   {  
  67.      unsigned char i=0;
  68.      for (i=8; i>0; i--)
  69.     {  DQ = 0;
  70.        DQ = W_data&0x01;
  71.        delay_18B20(5);
  72.        DQ = 1;
  73.        W_data>>=1;                //
  74.     }
  75.          delay_18B20(4);
  76. }
  77. /****************讀取溫度值并轉換***************/
  78. read_temp()
  79. {  uchar a,b;
  80.     DS18B20_RST();   
  81.     DS18B20_WR(0xcc);  //*跳過讀序列號*/
  82.     DS18B20_WR(0x44);  //*啟動溫度轉換*/
  83.     DS18B20_RST();   
  84.     DS18B20_WR(0xcc);  //*跳過讀序列號*/
  85.     DS18B20_WR(0xbe);  //*讀取溫度*/
  86.     a=DS18B20_RD();
  87.     b=DS18B20_RD();
  88.     Tvalue=b;
  89.     Tvalue<<=8;                  //
  90.     Tvalue=Tvalue|a;
  91.     if(Tvalue<0x0fff)
  92.     Tflag=0;
  93.     else
  94.    {
  95.       Tvalue=~Tvalue+1;
  96.       Tflag=1;
  97.     }
  98.       Tvalue=Tvalue*(0.625);//溫度值擴大10倍,精確到1位小數
  99.         return(Tvalue);
  100.   }
  101.   /****************溫度值顯示***************/
  102. void DS1820disp()
  103. {
  104.           b=Tvalue/100%10;//十位數
  105.           s=Tvalue/10%10;  //個位數
  106.           g=Tvalue%10;      //小數位
  107.    
  108.      if(Tflag==0)
  109.              q=Tvalue/1000;    //正溫度不顯示符號,顯示百位數
  110.      else
  111.          q=10;//負溫度顯示負號:-



  112.    }
  113. /******************************DS18B20程序(定義結束)***************************************/

  114. /*****************主函數********************/
  115. void main()
  116. {   
  117.                            
  118.         while(1)
  119.          {
  120.                   read_temp();
  121.                   DS1820disp();
  122.           ledscan();
  123.         
  124.           }
  125. }
復制代碼

0.png

所有資料下載:
數字溫度計.rar (62.89 KB, 下載次數: 82)

評分

參與人數 1黑幣 +5 收起 理由
morning。。。 + 5 很給力!

查看全部評分

回復

使用道具 舉報

ID:1 發表于 2017-1-7 01:46 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

ID:214577 發表于 2017-6-26 18:00 | 顯示全部樓層
求溫度計的PCB
回復

使用道具 舉報

ID:254524 發表于 2017-11-28 09:39 | 顯示全部樓層
精度是0.1 還是0.5
回復

使用道具 舉報

ID:348549 發表于 2018-6-10 18:42 來自手機 | 顯示全部樓層
做出來的是數碼管一閃一閃的,而不是顯示溫度的
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产视频一区在线 | 国产小视频在线 | 亚洲精品中文在线观看 | 成人不卡 | 国产91在线 | 欧美 | 精品国产精品一区二区夜夜嗨 | 一呦二呦三呦国产精品 | 日韩欧美一区二区三区在线播放 | 免费簧片视频 | 黄色av网站在线观看 | 亚洲精品一区二区在线观看 | 国产高清一区二区三区 | 久久国产精品免费 | 亚洲欧美日韩中文字幕一区二区三区 | 久久久久久久av | 中文字幕人成人 | 亚洲一区二区欧美 | 亚洲欧美一区二区三区视频 | 日本精品久久久一区二区三区 | 99久久久久久久 | 久久久久久国产精品 | 日韩一区二区三区在线 | 玖玖爱365 | 免费观看国产视频在线 | 欧美a级成人淫片免费看 | 国产免费国产 | 国产在线激情视频 | 福利国产 | 国产精品久久久久久吹潮日韩动画 | 久草免费电影 | 国产精品黄视频 | 亚洲一区视频在线 | 毛片a区| 在线日韩 | 91精品国产综合久久精品图片 | 韩日在线视频 | 久久99精品久久久久久 | 国产成人精品999在线观看 | 亚洲欧美精品 | 网页av| 一区二区三区视频在线观看 |