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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3182|回復: 3
打印 上一主題 下一主題
收起左側(cè)

單片機數(shù)字溫度計(高于10度,低于-3.5度時報警)代碼與仿真

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:249338 發(fā)表于 2017-11-20 14:28 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
(收集加修改)當溫度高于10度,低于-3.5度時,報警指示燈(紅燈)亮。


單片機源程序如下:
  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};//數(shù)碼管字0~9
  5. uint  temp;
  6. uchar g,s,b,q;          //個十百千位
  7. //uchar data disdata[5];
  8. uint  Tvalue;     //溫度值
  9. uchar Tflag;      //溫度正負標志
  10. char t=0;//溫度 ,初始設定0                    

  11. sbit  p0=P0^0;//控制紅色報警燈
  12. sbit P34=P3^4;
  13. sbit P35=P3^5;
  14. sbit P36=P3^6;
  15. sbit  DQ=P3^7;//ds18b20與單片機連接口
  16. sbit P17=P1^7;
  17. sbit P24=P2^4;

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

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


  115.    }
  116. /******************************DS18B20程序(定義結(jié)束)***************************************/

  117. /*****************主函數(shù)********************/
  118. void main()
  119. {   
  120.         P0=0xff;               
  121. ……………………

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

所有資料51hei提供下載:
數(shù)字溫度計.rar (67.52 KB, 下載次數(shù): 36)


評分

參與人數(shù) 1黑幣 +2 收起 理由
小菜雞丶 + 2 很給力!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:296242 發(fā)表于 2018-4-22 17:48 | 只看該作者
有電路圖嘛?
回復

使用道具 舉報

板凳
ID:64682 發(fā)表于 2018-4-25 21:08 | 只看該作者
不錯不錯,學習的好資料
回復

使用道具 舉報

地板
ID:323854 發(fā)表于 2018-5-8 15:06 | 只看該作者
非常不錯,贊
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久亚洲精品国产 | 91中文字幕在线 | 久久91精品国产一区二区三区 | 中文一区二区 | 在线一区二区观看 | 中文字幕一区二区三区四区 | 成人在线免费视频 | 日韩免费 | 亚洲精品麻豆 | 欧美视频在线播放 | 最近免费日本视频在线 | 国产亚洲欧美日韩精品一区二区三区 | 久久一区二区三区四区五区 | 99精品视频在线观看 | 视频在线一区二区 | 在线观看视频你懂得 | 成人天堂 | 99精品国产一区二区三区 | 玖玖精品视频 | 四虎成人在线播放 | 日韩在线观看一区 | 欧美日韩成人在线观看 | 精品国产一区二区三区久久久四川 | 婷婷精品 | 18gay男同69亚洲网站 | 丁香久久| 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 亚洲在线视频 | 久草中文在线观看 | 紧缚调教一区二区三区视频 | 日日爱夜夜操 | 一级在线 | 国产成人在线观看免费 | 精品国产一区二区三区久久久蜜月 | 精品久久香蕉国产线看观看亚洲 | 91国产在线播放 | 91原创视频在线观看 | 精品欧美一区二区中文字幕视频 | 1204国产成人精品视频 | 欧美激情精品久久久久久 | 午夜久久av |