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

DS18B20温度传感器数码管显示温度 仿真和代码

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
DS18B20温度传感器数码管显示温度 仿真和代码5 N* z; a5 k  J! b+ n3 l7 c9 O

/ U2 \* ], z# }/ X9 {
8 ?! e0 ^- D- T# o$ [
+ F* V* \* J$ \" W- H
#include <reg52.h>% N3 m" B1 H7 l7 |( q7 i7 T. c" N
#include "delay.h"$ P" u( R6 I  x1 _
#include "ds18b20.h"" |  m- H; U/ d* A5 l6 w

  s+ u! g" n1 i! X$ n#define uint unsigned int/ E( U9 R% ?6 T3 {) w; U; Q$ u; U. h
#define uchar unsigned char& [2 E9 x& r( i
#define duanMa P0
; m/ V+ U2 F2 ?. r#define weiMa P27 _! @- y" }5 h& o7 R

9 T! A, j- _% h4 W7 E* g+ }* N
3 O: ~$ N: F& xuchar code disCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
1 T$ ~; y& |. p$ E9 u7 V0x82,0xf8,0x80,0x90,0xff,0xBF,0xc6};                                            //共阳极数码管显示字符编码
) j7 X  b, q' C3 [uchar code disBit[]={0x01,0x02,0x04,0x08,0x10,0x20};          //数码管显示位码/ o! n3 M) @6 |1 B  C1 s- b
uchar disBuf[]={6,6,6,9,9,9};                                                        //准备显示的数字. \' j+ i8 B5 c. H
uint tempNum=0,tempH,tempL;
% F$ w7 l" U6 n4 t- Hbit tempFlag=0;- n5 r1 Z( B0 A( T0 K3 ^
8 p3 C6 n0 l! }4 a* ?! a# ~; M
void Init();1 Z* |1 w( z- j- L- G# x. {; o
void Display();
  [) t0 r1 s3 Z9 Y7 r) ~" z6 q5 `( G$ V1 N2 Q, B5 G$ o  ?8 M
void main(). H8 }# r7 y6 ]" k( z
{! n4 Z, Y0 o0 @
        Init();
+ x! ~0 K6 Y% S$ t/ l8 p9 u! S        while(1). }8 B+ H) }( \- @7 x, y3 [) c
        {; o6 I' s! v. @4 r, Q0 ^( E1 [
                tempNum=ReadTemperature();$ e6 n$ D; H  q+ u
                if(tempNum&(1<<15))        //如果温度为负数,则取原码
/ X# d) n$ E6 f. W                {
/ v' N* J( y' x' C1 t! q+ Z! |& a                        tempNum=~tempNum;
+ `* P/ y  x( {                        tempNum+=1;7 \$ m" |- n1 }" j
                        tempFlag=1;           //标志为负数7 G- g2 L; _+ k9 ^) n9 X; B
                }2 A1 K$ p) D3 o  G( F3 A
                //tempL=tempNum|0x0F;        //获取低四位的小数温度位5 [7 p5 _! m/ U7 S$ v
                tempH=tempNum>>4;        //获取整数位温度位9 ?% v3 P  \2 D# z
- v: C/ N! B. |/ t5 K2 V3 s  V
                if(tempFlag==1)( y! y4 [4 b) I: ]" v" T
                {
: p2 K- g5 Q( a* r                        tempFlag=0;& p0 U% u. O0 o8 v
                        disBuf[0]=11;  //显示负号/ Q( c7 G# a+ d; M6 e$ z" n* ?
                }. I2 {& m# Y' F$ X$ h: I
                else' O8 W0 t# J3 s3 j$ b6 ~
                {
( N0 I! Y$ G8 u  {. w                        disBuf[0]=10;  //不显示任何数据3 n9 f/ I$ Q+ M: C% w" E
                }               
* o0 W0 b+ D" d# a) \                disBuf[1]=tempH/100;$ i( Z7 f, h5 Q: L8 o9 s1 h' b
                disBuf[2]=tempH%100/10;
/ X. u, N  v- y4 a! h& B  ~                disBuf[3]=(tempH%10);
. E3 Z1 q  }1 P, j                disBuf[4]=10;          //不显示小数
" W2 y3 I& T/ R4 F/ z& l! W                disBuf[5]=12;          //显示C
2 O/ S0 h! Z. D) V' v* b
$ I( ?9 g' a* |" o9 o                Display();1 y/ l. h- r. h# A9 w
        }3 a% u+ E" l! I* U. b- ?" Q1 b
}5 l: Y  ~; ^! F0 I3 a- w

5 P3 Y" Z1 A0 I- @, avoid Init()
* v: Q0 K& r" b7 S0 K{  H  z; ?6 N9 P( @0 @
        duanMa=0xFF;   //初始化数码管断码7 \, q' g; Q" N3 i  c& J% e% a
        weiMa=0x00;           //初始化数码管位码
$ K" N; H7 e8 C1 {$ u}4 L1 B1 I, x3 }; a$ H4 w( @

, ^- P7 L" _# w9 F0 _void Display()
3 u8 ], u. B7 o' e+ D: B{/ {: `1 K1 ~! B
        uchar i=0;
. t0 @5 p, J/ R) A: I/ C  g: [: S        for(i=0;i<6;i++)5 D' d4 B2 ?8 B2 C
        {$ K4 F$ X, M5 q1 e
                duanMa=disCode[disBuf];7 I. T! m2 p/ M9 z# V0 ^. d
8 Q. j2 l! ]/ y' p1 F5 g
…………限于本文篇幅 余下代码请从论坛下载附件…………
" d* C7 K7 U0 e" X- g" a! b% u
游客,如果您要查看本帖隐藏内容请回复

$ s) r2 l( a+ C. V- i4 A" i
7 S# n0 N  L. |* u, K) v

该用户从未签到

2#
发表于 2018-11-26 10:30 | 只看该作者
温度传感器还是要学习的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-22 06:58 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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