8590|7

165

帖子

2

TA的资源

纯净的硅(高级)

楼主
 

DS18B20测温程序 [复制链接]

int Read_ Temp(void)//启动温度转换并读取数据    Temp前   ; 丢失,大家给看看怎么回事 ?(DS18B20测温程序.C(71): error C129: missing ';' before 'Temp')
/* P1.0 作为DQ时钟线输入*/
#include
sbit DQ=P1^0;//DQ输入信号口
sbit p24=P2^4;//数码管位控制口
sbit p25=P2^5;
sbit p26=P2^6;
sbit p27=P2^7;
unsigned int d=0;//低 两位
unsigned int e=0;//高位
unsigned char code x[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳字段吗

void Delay(unsigned char MSecond)//延时程序
{
   int i;
   for(i=0;i    }
   unsigned char Rst(void)  //复位DS18bxx
   {
         unsigned char Rly;
   DQ=0;
   Delay(250);
   DQ=1;
         Delay(10);
   Rly=P1&0X01;
   Delay(50);
   return(Rly);  //返回应答信号
   }
   unsigned char Read_Byte(void)//读一个字节
   {
      unsigned char i,temp;
   unsigned char Data;
   for(i=0;i<8;i++)
      {
              Data>>=1; //数据移位
              DQ=0;
     DQ=1;
     Delay(10);
     temp=P1&0X01;//判断引脚 电  平
          if(temp)//如果为高
       {
                      Data|=0x80;
                    }
              Delay(40);
                }
     return(Data);                     
   }
   void Write_Byte(char Data)//写一个字节
   {
     unsigned char i,temp;
  for(i=0;i<8;i++)
  {
          DQ=0;
    temp=Data&0x01;
         if(temp) //判断是否为高电平,如果为高电平
                  {
                            DQ=1;
                             }
                       else //如果为低电平
                         {
                             DQ=0;         
          }
    Delay(20);
    DQ=1;
    temp=temp/2;
              }
    Delay(20);
    }
int Read_ Temp(void)//启动温度转换并读取数据
{
     char temp[2];
  int Data;
  unsigned char Rst_Flg;
     Rst_Flg=Rst();//复位DS18B XX
        if(Rst_Flg=0)//如果有复位信号标志
            {
           Rst_Flg=0xff;
           Write_Byte(0xcc);//跳过ROM设定
       Write_Byte(0x44);//启动转换
             Delay(40);//等待转换完毕
       Write_Byte(0xcc);
       Write_Byte(0xbe);
       temp[1]=Read_ Temp();//读高位数据
             temp[0]=Read_ Temp();//低位数据
             Rst_Flg=Rst(); //只接 收最低两位数据
       while (Rst_Flg=0xff);
             Rst_Flg=0xff;
    e=Data/100;
    d=Data%100;
       Data=tmp[1]*256+temp;//合并数据
       return Data;

     
  }
   }
   void fun()//数码管延时
{
unsigned char i;
for(i=0;i<50;i++)
;
}
void xs()//显示程序
{
P0=x[e/10];
p24=0;
fun();
p24=1;


P0=x[e%10];
p25=0;
fun();
p25=1;

P0=x[d/10];
p26=0;
fun();
p26=1;

P0=x[d%10];
p27=0;
fun();
p27=1;
}
   void main()
   {
    for(;;)  
   {
xs();
   }
   }
此帖出自单片机论坛

最新回复

不过实用是吧。  详情 回复 发表于 2010-12-9 10:47
点赞 关注
 

回复
举报

116

帖子

0

TA的资源

纯净的硅(中级)

沙发
 
看看 学习学习啊!
此帖出自单片机论坛
 
 

回复

1634

帖子

0

TA的资源

裸片初长成(高级)

板凳
 
18B20还有ROM匹配的问题,能解决一个IO口连接多个器件的问题
此帖出自单片机论坛
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳 xu__changhua 的帖子

徐老师?
此帖出自单片机论坛
 
个人签名Come on!
 
 

回复

30

帖子

0

TA的资源

一粒金砂(初级)

5
 

18B20使用还需注意晶振

18B20使用还需注意晶振,时序比较严格的。
此帖出自单片机论坛
 
个人签名无线数传模块、电台、液晶模块
北京宏志飞腾 www.bjhzft.com
http://bjhzft.taobao.com/
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

6
 
read_temp 的下划线和temp不要有空格
此帖出自单片机论坛
 
 
 

回复

826

帖子

3

TA的资源

五彩晶圆(初级)

7
 
闂佸搫琚崕鍐诧耿閸涙潙瀚夋い鎺嗗亾缂佹锕㈠畷妤呭Ω閳轰礁濮ら柣鐘遍檷閸斿繘顢欓幋锔芥櫖鐎光偓閸愭儳娈�闂佽皫鍡╁殭缂傚稄鎷�闂佺懓鐡ㄩ悧鐐哄焵椤掑﹥瀚�濠电偛顦崝宀勫船閿燂拷
此帖出自单片机论坛
 
 
 

回复

826

帖子

3

TA的资源

五彩晶圆(初级)

8
 
闂佸搫琚崕鍐诧耿閸涙潙瀚夋い鎺嗗亾缂佹锕㈠畷妤呭Ω閳轰礁濮ら柣鐘遍檷閸斿繘顢欓幋锔芥櫖鐎光偓閸愭儳娈�闂佽皫鍡╁殭缂傚稄鎷�闂佺懓鐡ㄩ悧鐐哄焵椤掑﹥瀚�濠电偛顦崝宀勫船閿燂拷
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【回帖赢京东卡】说说无线技术那些事儿
即日起—2月28日,参与回帖讨论都有机会赢取【30元京东卡】

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表