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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
DS18B20温度传感器数码管显示温度 仿真和代码
9 F$ `# Z' }3 w4 i$ T3 ?2 g4 O9 p9 d
2 }! }1 c2 R, _0 c+ W3 O% o

4 V# L/ L: P; V1 C2 }1 f#include <reg52.h>5 h& F% L* X, c$ H# \# B) q
#include "delay.h"
: i* I( s; a, l, K2 S#include "ds18b20.h"  _% v. a1 i" Q$ ~
6 j1 W- Z5 u3 T+ K
#define uint unsigned int7 z5 [- F7 j4 I; Q
#define uchar unsigned char
) E( d/ ~& A4 {1 y#define duanMa P09 N& u: I: o3 Y
#define weiMa P2- g, n* z1 ?' z$ ~( f7 I
1 H$ U  z: f/ G) Y7 _( X
6 P6 D7 N# c# e# K2 r
uchar code disCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
$ f5 ?. l/ }3 B( c  G0x82,0xf8,0x80,0x90,0xff,0xBF,0xc6};                                            //共阳极数码管显示字符编码  p3 r# U, W7 h$ G, F" x
uchar code disBit[]={0x01,0x02,0x04,0x08,0x10,0x20};          //数码管显示位码
4 a8 B$ Q) F% S" I. Zuchar disBuf[]={6,6,6,9,9,9};                                                        //准备显示的数字
& X& W. V* d) ]& m" Suint tempNum=0,tempH,tempL;9 t7 z. Y. W/ i/ q
bit tempFlag=0;# p/ U4 g; R5 w
, f6 \6 r7 u6 r4 P3 a8 {& J
void Init();
: ]6 X, u( X1 j6 E  e- c) `void Display();6 R2 \* V- R+ Q6 m

- }+ b$ D, J  |void main()
+ ~; g0 L7 d) o9 Y! A2 }{' Q' n# q: c2 n0 \% f  {1 ]
        Init();
# N4 t- E2 i2 R+ z% H  C/ y        while(1)
' m1 ~# ^4 {* N8 L* a. m        {
3 S2 }5 L7 [) o+ T                tempNum=ReadTemperature();9 y4 `0 F; m4 F% M* y# R
                if(tempNum&(1<<15))        //如果温度为负数,则取原码/ P* T" r4 P% J4 @& p. _: E  \1 ?7 B
                {
% S. s1 \0 h2 G+ V                        tempNum=~tempNum;
( r( I& P- w# x  x; m                        tempNum+=1;
" V$ i$ }/ B. |6 p/ v; l                        tempFlag=1;           //标志为负数5 ?' Z5 c8 P7 q" ^5 s' t+ @
                }; }" [( F, ~( p0 }4 {& i
                //tempL=tempNum|0x0F;        //获取低四位的小数温度位
7 S- i0 p! d1 ?8 d9 W                tempH=tempNum>>4;        //获取整数位温度位
$ U. d+ P; W# _" g+ A
) z4 M3 Y. l! W9 l3 c5 n                if(tempFlag==1)
) Y: W+ _- {7 q+ N                {
) U8 r# \/ [; j- W! T! Q, k5 U                        tempFlag=0;9 z7 ~! V7 }! }; J  M4 i
                        disBuf[0]=11;  //显示负号
. {& G& q% q4 z% h/ {8 B                }
: r3 H. ^0 D- G3 Y- @( A                else( I" N! f* {, X
                {9 j0 ^& o  T5 @! X# q
                        disBuf[0]=10;  //不显示任何数据1 A9 B2 L! [5 R9 m% k; Y. R
                }               
0 |& p4 L; S# m! U& [8 K% T2 Q                disBuf[1]=tempH/100;
7 @1 t+ l8 f; ^( M, G4 l* j5 v* o                disBuf[2]=tempH%100/10;
% [' m8 |2 m3 R/ T6 S                disBuf[3]=(tempH%10);
8 m; q9 C1 H9 \5 f$ b6 h                disBuf[4]=10;          //不显示小数
$ Y, R2 A; b7 T; |2 `" l$ [0 w; B$ z                disBuf[5]=12;          //显示C
9 f0 a3 C/ ?' u( z) F+ E6 c' u( x8 |- k3 }) c7 _
                Display();/ t* I4 `) ^0 I+ t
        }* b( N0 {+ [4 p3 G
}
: X1 o- N* ~/ B5 ]0 H8 L4 Z1 t) z7 |. l( M+ I2 B2 ]* z# P. S
void Init()
. M; x! i- c+ w8 V{: t, [6 A4 A' T+ b! [
        duanMa=0xFF;   //初始化数码管断码
. ?7 R( l4 e) V: f2 I        weiMa=0x00;           //初始化数码管位码, f0 V3 o. C( S- U9 X! ~
}
/ @+ ~# t0 V+ Y2 K- x% [
# Y; J8 ^3 J7 n7 `8 O  x# fvoid Display()
. q2 q0 X! W5 E5 j{) F' u( R# T$ v; r6 |3 U6 }
        uchar i=0;$ e  k/ s7 n) ^
        for(i=0;i<6;i++); ?. D5 Y$ X- U. y- G
        {
; i5 c/ I6 q1 o3 [1 ~                duanMa=disCode[disBuf];6 p- X: B4 b6 B9 c+ C2 t9 n

. F) B9 S- C1 c( z& k…………限于本文篇幅 余下代码请从论坛下载附件…………! Z7 `* t) n) I% ]; e: d4 x
游客,如果您要查看本帖隐藏内容请回复
' z. L% i6 A& c
' H  J6 K9 c7 N- p( T# E# k; z

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-19 03:03 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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