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

標題: 用DS18B20制作數字溫度計 [打印本頁]

作者: cy009    時間: 2020-3-26 23:16
標題: 用DS18B20制作數字溫度計
    春夏之交,氣溫多變,值此季節,制作了一個數字溫度計,感知冷暖,尊重自然。

制作出來的實物圖如下:


    一、設計思路:
   1. 采用AT89S52+DS18B20+三位共陽數碼管構架。本案例最終生成的HEX文件只有3.2K,單片機用AT89S52有些浪費了,但芯片是以前學習時留下來的,而且P0口有斷腳,發揮余熱吧。有強迫癥的朋友可以選用STC15W204S+74HC595。
   2. 數碼管上下倒置,目的是為了能顯示溫度單位,數碼管代碼需另外取碼(推薦),或是在焊接時重新分布腳位也可。
    二、電路構成:
    1. 單片機最小系統:AT89S52、40P雙列插座、晶振(12MHz)、30pF貼片電容(2個)、10K電阻、10uF電解電容。
    2. 溫度采集電路:DS18B20(數字溫度傳感器、4.7K貼片電阻。
    3. 數碼管顯示電路:F4301BH(三位共陽)、100歐電阻8個(段限流電阻,實際焊接為91歐)、SS8550三極管3個+10K電阻3個(位驅動)。
    4. 供電電路:DC5V電源座、100uF濾波電容。
    三、編程與仿真:
    此過程略……
    四、電路焊接:
    電路較簡單,萬能板就可以。一些小元件焊接在40P座里面或是在底層。底層的導線有些雜亂,最后用上了硅膠槍,感覺還行。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


附程序(不全):
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit w1=P2^5;
sbit w2=P2^6;
sbit w3=P2^7;
sbit DQ=P3^4;

bit TempFlag;
uint Temp;
uchar code tab[]={0xc0,0xcf,0xa4,0x86,0x8b,0x92,0x90,0xc7,0x80,0x82};  //代碼表,已重新取碼

void Delayms(uint xms);   
void Delayus(uint xus);
void GetTemp(void);
void InitT0(void);
void Init_DS18B20(void);
uchar Read_DS18B20(void);
void Write_DS18B20(uchar Dat);

void display()
{
   P1=0x33;
   w3=0;
   Delayms(2);
   w3=1;
         
   P1=tab[Temp%10];
   w2=0;
   Delayms(2);
   w2=1;
                  
   P1=tab[Temp/10];
   w1=0;
   Delayms(2);
   w1=1;
}

void main()                 //主函數
{
    InitT0();
    while(1)
    {
       GetTemp();     //讀取溫度
       display();
    }
}

void Init_DS18B20(void)           //初始化DS18B20函數
{
  DQ=1;
  Delayus(4);
  DQ=0;
  Delayus(100);
  DQ=1;
  Delayus(40);
}

uchar Read_DS18B20(void)       //讀DS18B20函數
{
  uchar i=0,Dat=0;
  for(i=0;i<8;i++)
    {
        DQ=1;
        DQ=0;
        Dat>>=1;
        DQ=1;
        if(DQ)
        Dat|=0x80;
        DQ=1;
        Delayus(25);
    }
  return(Dat);
}

void Write_DS18B20(uchar Dat)   //寫DS18B20函數
{
  uchar i=0;
  for(i=0;i<8;i++)
   {
      DQ=1;
      Dat>>=1;
      DQ=0;
      DQ=CY;
      Delayus(25);
      DQ=1;
    }
}

void GetTemp(void)           //取溫度函數
{
  uchar a=0,b=0;
  Init_DS18B20();
  Write_DS18B20(0xcc);
  Write_DS18B20(0x44);
  Init_DS18B20();
  Write_DS18B20(0xcc);
  Write_DS18B20(0xbe);
  a=Read_DS18B20();
  b=Read_DS18B20();
  Temp=b;
  Temp<<=8;
  Temp=Temp|a;
  if(b>=8)
   {
     Temp=~Temp+1;
      TempFlag=1;
   }
  else
    TempFlag=0;
    Temp=Temp*0.0625;
}

全部程序51hei下載地址:
18B20.rar (868 Bytes, 下載次數: 138)


作者: faridzled    時間: 2020-3-27 20:34
thanks for sharing
作者: zxule    時間: 2020-3-28 07:40
文件里只有代碼,沒有仿真啊
作者: myemcu    時間: 2020-3-31 12:30
不錯,通過驗證。。
作者: univers    時間: 2020-4-25 14:41
不錯的作品
作者: hs3690    時間: 2020-4-26 07:34
挺好的,[贊][贊][贊]
作者: ge52    時間: 2023-2-28 21:52
下載學習了
作者: second_chan    時間: 2023-3-1 10:39
作品不錯
作者: HSCCSH    時間: 2023-3-15 09:24
下來仿制看能不能成功

作者: cwb2038    時間: 2023-3-23 12:13
應該4位數碼管就好了,留一位小數
作者: 數據鏈    時間: 2023-4-16 10:42
你好,這個文章很棒
作者: abslearn    時間: 2023-4-19 16:54
支持你一個··有想法復制一個實物··




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1