找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 26734|回復(fù): 27
打印 上一主題 下一主題
收起左側(cè)

自制mini數(shù)字溫度計

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:75272 發(fā)表于 2015-4-1 23:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    芯片采用AT89C2051,溫度檢測采用DS18B20,顯示3位共陰數(shù)碼管,電路非常簡單。

原理仿真圖:實際運用中請將P1口加上1K上拉電阻。


采用基本和數(shù)碼管大小的一塊實驗洞洞板來焊接,電源采用常用的5VminiUSB供電(數(shù)據(jù)線好找些,可以直接USB,比較方便),晶振采用了壞U盤中的12MHZ的小晶振嵌入到集成插座的中間空隙以減小體積。為了減小數(shù)碼管和其他電子元件通電后發(fā)熱對DS18B20溫檢產(chǎn)生檢測誤差,將DS18B20的3只腳分別焊接到一個立體聲插頭上,然后再通過立體聲插座再傳遞到AT89C2051的P3.7端口。數(shù)碼管采用插接件,方便修改和燒錄單片機(jī)程序。


只拍照的正面,背面就是亂云飛渡人從容啦


裝好通電后效果,測試中還是感覺到電子元件溫升的差異



源程序如下:

#include<reg52.h>
#include <intrins.h>
#define  uchar  unsigned  char
#define  uint   unsigned  int
sbit  DATA = P3^7; //DS18B20接入口
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
char  bai,shi,ge; //定義變量
/*延時子函數(shù)*/
void delay(uint num)
{
while(num--) ;
}
/*************DS18b20溫度傳感器函數(shù)*********************/
Init_DS18B20(void)     //傳感器初始化
{
  uchar x=0;
  DATA = 1;    //DQ復(fù)位
  delay(10);  //稍做延時
  DATA = 0;    //單片機(jī)將DQ拉低
  delay(80); //精確延時 大于 480us    //450
  DATA = 1;    //拉高總線
  delay(20);
  x=DATA;      //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗
  delay(30);
}
//讀一個字節(jié)
ReadOneChar(void)
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
  {
    DATA = 0; // 給脈沖信號
    dat>>=1;
    DATA = 1; // 給脈沖信號
    if(DATA)
     dat|=0x80;
    delay(8);
  }
  return(dat);
}
//寫一個字節(jié)
WriteOneChar(unsigned char dat)
{
  uchar i=0;
  for (i=8; i>0; i--)
  {
    DATA = 0;
    DATA = dat&0x01;
   delay(10);
   DATA = 1;
   dat>>=1;
  }
delay(8);
}
//讀取溫度
int ReadTemperature(void)
{
uchar a=0;
uchar b=0;
int t=0;
float tt=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳過讀序號列號的操作
WriteOneChar(0x44); // 啟動溫度轉(zhuǎn)換
Init_DS18B20();
WriteOneChar(0xCC); //跳過讀序號列號的操作
WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度
a=ReadOneChar();//低位
b=ReadOneChar();//高位
t=b;
t<<=8;
t=t|a;
tt=t*0.0625;
t= tt*10+0.5;
return(t);
}
/*顯示子函數(shù)*/
void  display(int bai,int shi,int ge)
{
P3=0XFB; //顯示小數(shù)點
P1=0X80; //顯示小數(shù)點
delay(50);//顯示小數(shù)點
P3=0xf7;
P1=table[bai];//顯示千位
delay(50);//一小段延時動態(tài)顯示
P3=0xfb;
P1=table[shi];//顯示百位
delay(50);
P3=0xfd;
P1=table[ge];//顯示十位
delay(50);
}
void  main()
{
int  temp;
while(1)
{  
  temp=ReadTemperature();//讀溫度
  bai=temp%1000/100;//顯示百位
  shi=temp%100/10;//顯示十位
  ge=temp%10;//顯示個位
  
  display(bai,shi,ge);//顯示函數(shù)
}  
}



評分

參與人數(shù) 1黑幣 +5 收起 理由
adadad + 5 很給力!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:78768 發(fā)表于 2015-5-3 20:31 | 只看該作者
很好  贊一下
回復(fù)

使用道具 舉報

板凳
ID:79098 發(fā)表于 2015-5-6 17:52 | 只看該作者
程序挺多
回復(fù)

使用道具 舉報

地板
ID:111876 發(fā)表于 2016-4-5 18:06 | 只看該作者
2051的芯片燒寫是個問題,沒有專用的編程器,可怎么辦��?
回復(fù)

使用道具 舉報

5#
ID:1 發(fā)表于 2016-4-8 15:07 來自觸屏版 | 只看該作者
yjx189 發(fā)表于 2016-4-5 18:06
2051的芯片燒寫是個問題,沒有專用的編程器,可怎么辦啊?

AT89c2051需要用編程器才能燒錄,建議采用stc的2051芯片,源代碼引腳都能兼容。采用串口燒錄。
回復(fù)

使用道具 舉報

6#
ID:68727 發(fā)表于 2016-4-8 15:12 來自觸屏版 | 只看該作者
admin 發(fā)表于 2016-4-8 15:07
AT89c2051需要用編程器才能燒錄,建議采用stc的2051芯片,源代碼引腳都能兼容。采用串口燒錄。

釆用STC的不能正常工作,時序不對還是什么請教
回復(fù)

使用道具 舉報

7#
ID:104838 發(fā)表于 2016-4-8 20:11 | 只看該作者
用STC芯片多好,試試
回復(fù)

使用道具 舉報

8#
ID:108868 發(fā)表于 2016-4-9 20:31 | 只看該作者
我的keil不知怎么了設(shè)置了生成hex文件卻沒生成誰做過的好心幫忙提供下hex文件啊
回復(fù)

使用道具 舉報

9#
ID:1 發(fā)表于 2016-4-9 21:11 | 只看該作者
Animals 發(fā)表于 2016-4-9 20:31
我的keil不知怎么了設(shè)置了生成hex文件卻沒生成誰做過的好心幫忙提供下hex文件啊

hex文件生成好了,0個警告,0個錯誤。你的應(yīng)該是keil設(shè)置的問題: 源碼及hex文件.rar (20.1 KB, 下載次數(shù): 44)
回復(fù)

使用道具 舉報

10#
ID:108868 發(fā)表于 2016-4-9 22:54 | 只看該作者
本帖最后由 Animals 于 2016-4-9 23:02 編輯

謝謝了!
回復(fù)

使用道具 舉報

11#
ID:110699 發(fā)表于 2016-5-27 12:07 | 只看該作者
菜鳥請教一下   怎么做成3路檢測3路顯示?
回復(fù)

使用道具 舉報

12#
ID:122374 發(fā)表于 2016-5-27 23:26 | 只看該作者
不錯 支持diy
回復(fù)

使用道具 舉報

13#
ID:122374 發(fā)表于 2016-5-27 23:27 | 只看該作者
哼不錯 支持diy
回復(fù)

使用道具 舉報

14#
ID:92231 發(fā)表于 2016-5-29 09:40 來自觸屏版 | 只看該作者
這款制作線路簡單扼要,值得仿制
回復(fù)

使用道具 舉報

15#
ID:124554 發(fā)表于 2016-6-3 15:32 | 只看該作者
怎么實現(xiàn)不了呢
回復(fù)

使用道具 舉報

16#
ID:117823 發(fā)表于 2016-6-4 01:47 來自觸屏版 | 只看該作者
我用msp430g2231也做了個溫濕度計,就是體積比你的大了好多,有點丑。
回復(fù)

使用道具 舉報

17#
ID:99130 發(fā)表于 2016-7-5 00:01 | 只看該作者
怎么只顯示00.0???這是什么原因???樓主你的剛開機(jī)顯示啥???
回復(fù)

使用道具 舉報

18#
ID:145030 發(fā)表于 2016-10-31 20:08 | 只看該作者
不錯,支持支持一下
回復(fù)

使用道具 舉報

19#
ID:200118 發(fā)表于 2017-6-9 22:50 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

20#
ID:251070 發(fā)表于 2017-11-19 14:37 | 只看該作者
請問數(shù)碼管用哪一種呢
回復(fù)

使用道具 舉報

21#
ID:388329 發(fā)表于 2018-9-5 13:48 | 只看該作者
溫度檢測,還是蠻準(zhǔn)確的。用這個元器件。
回復(fù)

使用道具 舉報

22#
ID:418772 發(fā)表于 2018-11-26 22:29 | 只看該作者
簡單明了
回復(fù)

使用道具 舉報

23#
ID:169087 發(fā)表于 2018-12-4 10:13 來自觸屏版 | 只看該作者
溫度測量范圍多少?
回復(fù)

使用道具 舉報

24#
ID:50522 發(fā)表于 2018-12-21 16:16 來自觸屏版 | 只看該作者
學(xué)習(xí)了
回復(fù)

使用道具 舉報

25#
ID:436591 發(fā)表于 2018-12-22 17:06 | 只看該作者
贊一下,很好�?樟嗽谧屑�(xì)研究。  
回復(fù)

使用道具 舉報

26#
ID:50522 發(fā)表于 2018-12-25 14:50 來自觸屏版 | 只看該作者
這款簡單明了
回復(fù)

使用道具 舉報

27#
ID:407089 發(fā)表于 2018-12-25 16:00 | 只看該作者
亮點在18b20的接入方式
回復(fù)

使用道具 舉報

28#
ID:399179 發(fā)表于 2018-12-25 20:26 來自觸屏版 | 只看該作者
這個怎么改成LDE燈顯示溫度的?用LED燈珠做成一串,每一個燈珠代表0.5度,誰幫忙寫下程序?先謝謝了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表