找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4177|回复: 6
收起左侧

数码管显示温度(DS18B20)(小弟初来乍到还请大神们勿喷)

[复制链接]
ID:63839 发表于 2014-8-28 13:18 | 显示全部楼层 |阅读模式
#include<stc12.h>  //单片机型号stc125a60s2
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x9c,0xc6};
uint shi,ge;
sbit DQ=P1^1; //DS18B20使能端
sbit D0=P2^7; //显示温度十位
sbit D1=P2^6;   // 个位
sbit D2=P2^5; // 摄氏度的符号显示
sbit D3=P2^4; // 摄氏度的符号显示
void delay_18B20(unsigned int i)
{
while(i--);
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void Init_DS18B20(void)   //初始化
{
unsigned char x=0;
DQ = 1;     //DQ复位
delay_18B20(80);   //稍做延时
DQ = 0;     //单片机将DQ拉低
delay_18B20(800);   //精确延时 大于 480us
DQ = 1;     //拉高总线
delay_18B20(140);
x=DQ; delay_18B20(200);
}
unsigned char ReadOneChar(void)  //写数据
{
uchar i=0;
uchar dat =0;
for (i=8;i>0;i--)
{
   DQ =0; // 给脉冲信号
      dat>>=1;
      DQ = 1; // 给脉冲信号
     if(DQ)
      dat|=0x80;
      delay_18B20(40); //40
}
   return(dat);
}
void WriteOneChar(uchar dat)  //读数据
{
unsigned char i=0;
for (i=8;i>0; i--)
    {
      DQ = 0;
      DQ = dat&0x01;
      delay_18B20(50); //50
      DQ = 1;
      dat>>=1;
}
}
unsigned int ReadTemp(void)   //返回温度数据用于数码管显示
{
unsigned char a=0;
unsigned char b=0;
unsigned int temp_value=0;
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
delay_18B20(1000);
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
delay_18B20(1000);
a=ReadOneChar(); //读取温度值低位
b=ReadOneChar(); //读取温度值高位
temp_value = b<<8; //两个字节合为一个字节
temp_value |= a;
temp_value=temp_value*0.0625;//温度在寄存器中为12位,0.0625为分辨率
return temp_value;
}
void display()//用数码管显示
{ uint t;
t=ReadTemp();
shi=t/10;
ge=t%10;
  
  P0=table[shi];
  D0=0;
  delay(10);
  D0=1;
  P0=table[ge];
  D1=0;
  delay(10);
  D1=1;
  
  P0=table[10];
  D2=0;
  delay(10);
  D2=1;
  
  P0=table[11];
  D3=0;
  delay(10);
  D3=1;   
}
void main()
{
while(1)
display();
}

评分

参与人数 1威望 +5 黑币 +5 收起 理由
a110 + 5 + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:63839 发表于 2014-8-28 13:18 | 显示全部楼层
数码管是四位共阳的
回复

使用道具 举报

ID:44262 发表于 2014-8-28 15:37 | 显示全部楼层

回帖奖励 +1

楼主 能发个电路图就好了 另外 stc12.h 这个头文件 我这里也没有 可以改为reg52.h吗?
回复

使用道具 举报

ID:63839 发表于 2014-8-28 15:44 | 显示全部楼层
a110 发表于 2014-8-28 15:37
楼主 能发个电路图就好了 另外 stc12.h 这个头文件 我这里也没有 可以改为reg52.h吗?

可以改为reg52
图片我不知道怎么传
你看I/O应该知道怎么连得 不难的
回复

使用道具 举报

ID:1 发表于 2014-8-28 17:00 | 显示全部楼层
按照这个步骤即可在回帖的时候上传图片


选择图片的时候可以多选,这样就能一次性上传很多图片(上传附件就在图片的旁边 方法一样)
回复

使用道具 举报

ID:73449 发表于 2015-4-9 16:42 | 显示全部楼层
shi ge 表示啥呢?
回复

使用道具 举报

ID:443301 发表于 2019-6-25 00:25 | 显示全部楼层
你好 电路发一下呗?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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