找回密码
 注册
关于网站域名变更的通知
查看: 466|回复: 3
打印 上一主题 下一主题

单片机ds18b20温度检测电路仿真设计 带源码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-12-26 07:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
单片机ds18b20温度检测电路仿真设计 带源码( d7 [" t+ B2 b* V+ b/ l6 o& g/ t

4 r. K4 z% |6 U4 x

0 s$ X. v" N! |分享一个ds18b20传感器检测环境温度,数码管显示并且超过一定温度蜂鸣器蜂鸣报警,下面是部分电路仿真图。
0 Q# }" D  w. \+ V9 M" |" Z  F' @$ O* b7 M  P1 Y
  Z8 o( D/ q1 Y5 Q6 k
/ A! g4 @" B. |# Z1 \& t
8 x( v9 b0 E. k( ?5 F
51单片机源程序:
+ u6 |; K' G* U+ F! k3 a) T

! F1 k# s  U+ w4 ^$ D: ?8 F8 @! s! f/ P, f. `4 K  |% J

; N( q1 }9 N* r#include <reg52.h>- j3 N5 c+ o# x6 h0 V1 n* J; y
#define uchar unsigned char/ x& c4 o/ t0 K; h
#define uint unsigned int
2 v6 K5 ]0 ~" Q- Zsbit DS=P2^2;           //define inteRFace& }) V# g* H$ v7 u, n
uint temp;             // variable of temperature+ P7 e( A4 F. g  o2 N
uchar flag1;            // sign of the result positive or negative2 H1 g' O9 v% S0 \4 y+ ^% g4 m
sbit wela1=P2^4;                //段选信号的锁存器控制: i. t" w, c8 n1 o& h3 w  Z
sbit wela2=P2^5;4 t- f6 D8 U8 {# b
sbit wela3=P2^6;                //段选信号的锁存器控制
2 @: D3 I' x2 |- w2 isbit wela4=P2^7;                //位选信号的锁存器控制& L" ]7 X; n& G; y+ S+ r
sbit beep=P2^3;
8 D- ^( y* F; O) ^0 [unsigned char code table[]={0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
0 i. l( X) i6 l7 T! r; @                        0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};. U) W6 N( U$ M5 `. i5 W" M
unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,9 l2 O, h& @- X3 `8 z6 _
                        0x87,0xff,0xef};  C4 o. I* W2 I+ w" ~8 |" i' Z, D
2 D! x- u0 C; C! z$ z
void delay(uint count)      //delay
9 A) R% f" O9 c/ D4 |{
. T$ {8 t3 e1 b5 u% H2 d2 w3 M6 p  uint i;3 ]7 X3 _5 z  r
  while(count)
* u9 m! p; C% i/ G  X! ?  {, O. A! ?$ Z( r6 S- V  W
    i=200;
$ H3 c$ @6 k! G  \2 c# Q7 P. V! H    while(i>0)
! Z8 Z+ s4 l2 M$ |    i--;
" ]5 f9 P0 j6 F- _8 U! a" p$ z    count--;6 y4 B* u2 S1 @- w
  }
7 y! y* i8 u* w& H$ U% A  t}
' a$ ^1 \+ y5 J- ovoid dsreset(void)       //send reset and initialization command
2 d0 `9 z7 c  M# L/ Q; M0 F{/ v# B- M5 R+ U' r
  uint i;
' B) t6 m- h' d' X! [  DS=0;
, L' C) W- Y3 L  i=103;
, `0 w6 b! p  |# f  while(i>0)i--;
3 }; V0 P. M. w* z  DS=1;5 ^" ?& T5 \0 w& O! p
  i=4;& k9 Z( a8 F4 j/ y0 C8 W
  while(i>0)i--;  H. i. }+ h: p* L
}* P  K8 Q2 d. J: X) @3 N

2 W( M$ u! G6 o7 h- |9 A1 wbit tmpreadbit(void)       //read a bit
  ^; G3 r) r! E) V{
! K: L' h# B7 i/ I! B% x9 c( ^   uint i;- f% `5 g7 m9 R1 F- c6 R9 O
   bit dat;; w* @$ N9 ?" w3 [# _
   DS=0;i++;          //i++ for delay
2 M( R1 ~& W9 t( k  w   DS=1;i++;i++;
6 }/ |5 V4 Z- r1 {- n7 n3 W! K   dat=DS;3 t% R  a+ S1 V) A4 U8 V3 _: M
   i=8;while(i>0)i--;3 Z7 _/ w) l3 G! V2 U
   return (dat);
$ t1 s- D5 W& B' h# c  R7 h* a}$ G+ m- S8 k$ j) X3 x
$ i' r8 f1 H2 M3 e1 S! W8 E
uchar tmpread(void)   //read a byte date
9 _6 |, O& L8 R{& [8 S$ Q$ `5 E$ w
  uchar i,j,dat;! S  H/ S, \/ n2 t
  dat=0;) B3 I, N1 ]+ }# E
  for(i=1;i<=8;i++)7 S' y/ y  Z# i% _5 f9 s, \7 v
  {# y/ j# U, a* n0 F  F% Z' K6 }
    j=tmpreadbit();
; d% a. ?' z4 C( [; Q    dat=(j<<7)|(dat>>1);   //读出的数据最低位在最前面,这样刚好一个字节在DAT里9 f2 C& w- t. Y0 ]5 G. ?
  }. P; m- o% q& f4 ?( V
  return(dat);. I1 r6 c* T7 W' H
}
/ z/ ~- q' P- O) ~# N/ f& s" K; K( [0 A
void tmpwritebyte(uchar dat)   //write a byte to ds18b20# J2 m6 ~% {) n) t7 l5 _" l
{  w7 S2 b5 U/ Z& C
  uint i;: w7 f5 [  Z6 F4 V- M" v9 k
  uchar j;4 o8 _2 N: |7 D6 R
  bit testb;5 t, w1 P$ M0 P6 J- ?
  for(j=1;j<=8;j++)
4 J" A) `( L  O4 |1 Z  {
% y: k; H8 [: Y0 y* @3 l4 [1 W    testb=dat&0x01;$ P2 g7 K) V0 x1 n! d; Y# [  j* \
    dat=dat>>1;
" o7 }% O- k8 P# p$ e    if(testb)     //write 1
* w* j( z% k9 p" a    {5 ]: m" @9 D/ I$ J9 F& q
      DS=0;; \  X, M) Y$ e' C+ O. o
      i++;i++;* \# c- b7 D+ D' g! m
      DS=1;' j# l5 R" r8 N! `  M, i& w# |: U
      i=8;while(i>0)i--;
) G) X, @3 y- ^& w. L# _7 _    }
- i% f5 N3 t1 o. s! Q8 B    else
2 n  U" c4 M7 B; _& r/ j, v- y    {
8 h, |2 M% R3 o- C' h) W0 m      DS=0;       //write 0
2 ^% n& Y: B$ r& o# Z; K      i=8;while(i>0)i--;
* w1 `/ L  I- d$ N: c      DS=1;% x& e7 k$ l0 I" G, }
      i++;i++;- S2 i. i: h4 j: `% \  `3 a
    }
. o( n% K# K1 o; q& [1 _5 d; w. B7 A0 t! O2 _$ y# n6 G- i
  }
; t% o5 a7 m7 p  r; |/ W}8 }" m' O/ X$ S1 Z9 \+ K
$ f8 p" O+ |4 `8 c/ \
void tmpchange(void)  //DS18B20 begin change
& y. z6 x. d8 x* A5 {{
1 B/ m( |. G6 ]! f3 t& w  dsreset();
; W3 W3 G7 w% o+ O3 }0 i1 R  delay(1);
, p1 e# y9 i  s4 r4 I  tmpwritebyte(0xcc);  // address all drivers on bus+ G) X, ~, j* b2 b1 h6 n  V
  tmpwritebyte(0x44);  //  initiates a single temperature conversion
* ~" T6 s( n+ `7 H! a4 c9 n}* M- y  ^' h& N" y8 C7 v; c

2 O% T- \% L' H% W. Uuint tmp()               //get the temperature
5 o7 X2 C& ~( X( ]; B{
& w7 d6 R. Z2 L8 N" w$ [  float tt;8 u9 E$ \# q+ B0 W0 \
  uchar a,b;- k0 V, K( y$ f+ H) n7 g% w
  dsreset();# w9 ]+ u. v6 o8 b. ]
  delay(1);/ ?' d4 D& M  ^- N1 n4 z& c
  tmpwritebyte(0xcc);
# X. G3 g, Q7 a% e! j1 o  tmpwritebyte(0xbe);
1 g/ R" C: f  A+ E0 A/ x  a=tmpread();4 W0 M$ R$ _9 q' f8 J1 A
  b=tmpread();0 {1 l2 n  A) F: n8 _
  temp=b;
9 B/ a) N4 v$ p+ g: ?' Y* v0 x  temp<<=8;             //two byte  compose a int variable" Z8 y+ g! f" k* f5 o
  temp=temp|a;
$ Y/ l" X' o& M! _+ i" _" p5 L  tt=temp*0.0625;
6 }8 g! ]4 S4 P  temp=tt*10+0.5;' B7 y' [' D6 W7 k6 o
  return temp;" e" G" g; s& F; R
}( _4 q& J: c) ^+ m

- k9 Q7 V  j6 P1 I4 r# zvoid display(uint temp)                        //显示程序
3 i; z' V  I8 n9 y7 ^% `1 u{7 x1 }* r& T8 j- e  Y: v
$ t' F2 w3 H% E3 b# ]& U# b0 x4 G) }
   uchar A1,A2,A2t,A3;" O8 p4 S# t+ Q) u. D+ @
   A1=temp/100;6 `$ N) c0 R8 d( g
   A2t=temp%100;
9 i+ U) g/ o+ Y. L0 z0 F8 \5 m; T: \- s4 S8 X1 F2 b/ V

0 w+ w9 i$ v. k, P…………限于本文篇幅 余下代码请从论坛下载附件…………1 R  S9 U! Q: G9 p# @" i
游客,如果您要查看本帖隐藏内容请回复

8 z  C9 Q) _8 W# \

7 e  e7 Z0 b0 u- t- n. \

该用户从未签到

4#
发表于 2020-3-7 14:22 | 只看该作者
谢谢分享

“来自电巢APP”

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-7 04:03 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表