欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3003|回復: 1
收起左側

單片機溫度監測Proteus仿真和程序

[復制鏈接]
ID:213477 發表于 2017-6-21 20:09 | 顯示全部樓層 |閱讀模式
基于51單片機的溫度監測,proteus仿真,有程序。
0.png 0.png

單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit DQ=P3^7;  
  6. sbit beep=P3^0;         
  7. void reset();                                //DS18B20復位函數         
  8. void write_byte(uchar val);       //DS18B20寫命令函數  
  9. uchar read_byte(void);            //DS18B20讀1字節函數  
  10. void read_temp();                 //溫度讀取函數
  11. void LED_display();
  12. void  alarm();
  13. uchar tempH,tempL,num;
  14. uchar table[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  //0~9的LED字符編碼
  15. uchar setValue_low=15;
  16. uchar setValue_high=30;
  17. main()
  18. {
  19.         while(1)
  20.         {
  21.                 read_temp();
  22.                  LED_display();
  23.                  alarm();
  24.         }
  25. }
  26. void delay(uint t)
  27. {
  28.         for(;t>0;t--);
  29. }
  30. void reset()          //DS18B20的復位
  31. {
  32.         uchar presence=1;
  33.         while(presence)
  34.     {
  35.             while(presence)
  36.              {
  37.                DQ=1;_nop_();_nop_();
  38.                DQ=0;
  39.                delay(50);
  40.                DQ=1;
  41.                delay(6);
  42.                presence=DQ;
  43.              }
  44.             delay(45);
  45.             presence=~DQ;
  46.    }
  47.         DQ=1;
  48. }
  49. void write_byte(uchar val)                        //DS18B20寫一個字節
  50. {
  51.         uchar i;
  52.         for(i=8;i>0;i--)
  53.     {
  54.             DQ=1;_nop_();_nop_();
  55.             DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();
  56.             DQ=val&0x01;
  57.             delay(6);
  58.             val=val>>1;
  59.     }
  60.         DQ=1;
  61.         _nop_();
  62. }
  63. uchar read_byte(void)                                        //DS18B20讀一個字節
  64. {
  65.         uchar i;
  66.         uchar value=0;
  67.         for(i=8;i>0;i--)
  68.     {
  69.              DQ=1;_nop_();_nop_();
  70.              value>>=1;
  71.              DQ=0;
  72.              _nop_();_nop_();_nop_();_nop_();
  73.              DQ=1;_nop_();_nop_();_nop_();_nop_();
  74.              if(DQ)
  75.                     value|=0x80;
  76.              delay(6);
  77.    }
  78.         DQ=1;
  79.         return(value);
  80. }
  81. void read_temp()                           //從DS18B20讀取溫度值
  82. {   
  83.         uchar ch1,ch2;
  84.         reset();
  85.         write_byte(0xcc);
  86.         write_byte(0x44);
  87.         reset();
  88.         write_byte(0xcc);
  89.         write_byte(0xbe);
  90.         ch1=read_byte();   //DS18B20的溫度數值是16位的二進制,精度高,最后四位是溫度的小數部分,最高五位為符號位(即正負溫度)
  91.         ch2=read_byte();
  92.         num=(ch2<<4)|(ch1>>4);           //只取溫度值的中間八位,小數部分舍去,符號位舍去四位。
  93.         tempH=num/10;                                //溫度的十位
  94.         tempL=num-tempH*10;                        //溫度的個位
  95. }
  96. void LED_display()                                         //顯示檢測的溫度
  97. {
  98.   P2=0x0;
  99.   P2=2;
  100.   P0=table[tempL];
  101.   delay(50);
  102. ……………………

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

所有資料51hei提供下載:
溫度監測.zip (64.79 KB, 下載次數: 29)


回復

使用道具 舉報

ID:257097 發表于 2017-12-4 11:16 | 顯示全部樓層
好東西一定要分享
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表