51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > 51单片机 > 详细内容
DS18B20智能温度控制器(汇编与C语言)
发布时间:2009/6/29  阅读次数:6874  字体大小: 【】 【】【

;实验板上的7段数码管0~9数字的共阴显示代码
numtab: DB 3fh,30h,6dh,79h,72h,5bh,5fh,31h,7fh,7bh

end

以下为C语言版:


#include
sbit warmer=P1^4;
sbit led_run=P1^0;
sbit k_power=P3^3;
sbit ge=P2^7;
sbit shi=P2^6;
sbit DQ =P2^2;     //定义通信端口
//延时函数
unsigned char tab[]={ 0x3f,0x30,0x6d,0x79,0x72,0x5b,0x5f,0x31,0x7f,0x7b,0x40};
                                       //0,       1,     2     3       4       5       6       7       8       9
void delay(unsigned int i)
{
         while(i--);
      
}
//初始化函数
Init_DS18B20(void)
{
  unsigned char x=0;
  DQ = 1;       //DQ复位
  delay(8);   //稍做延时
  DQ = 0;       //单片机将DQ拉低
  delay(80); //精确延时 大于 480us
  DQ = 1;       //拉高总线
  delay(14);
  x=DQ;           //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
  delay(20);
}
//读一个字节
ReadOneChar(void)
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
  {
   DQ = 0; // 给脉冲信号
   dat>>=1;
   DQ = 1; // 给脉冲信号
   if(DQ)
     dat|=0x80;
   delay(4);
  }
  return(dat);
}
//写一个字节
WriteOneChar(unsigned char dat)
{
  unsigned char i=0;
  for (i=8; i>0; i--)
  {
   DQ = 0;
   DQ = dat&0x01;
   delay(5);
   DQ = 1;
   dat>>=1;
  }
delay(4);
}
//读取温度
ReadTemperature(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned char t=0;
Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作
WriteOneChar(0x44); // 启动温度转换
Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar();     //读取温度值低位
b=ReadOneChar();     //读取温度值高位
a=a>>4;                       //低位右移4位,舍弃小数部分
t=b<<4;                       //高位左移4位,舍弃符号位
t=t|a;                        
return(t);
}
void display_tempmain(unsigned char i)                         //主程序温度显示函数
{
   P0=tab[i/10];
   shi=0;
   ge=1;
   delay(1000);
   P0=tab[i%10];
   shi=1;
   ge=0;  
}
void main(void)
{unsigned int temp;

while(1)                                                 //主循环
     { temp=ReadTemperature();
         display_tempmain(temp);
        
  }    
}

  

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[3]
  • 评论人:[hf83299448] 时间: [2010/7/9 9:20:10] IP:[117.32.133.22*]
  • 请问一下 你的P1.0引脚 ,P1.1引脚,P1.2引脚,P1.3引脚P1.7引脚 接的是哪儿?
  • 评论人:[hf83299448] 时间: [2010/7/9 9:19:37] IP:[117.32.133.22*]
  • 请问一下 你的P1.0引脚 ,P1.1引脚,P1.2引脚,P1.3引脚P1.7引脚 接的是哪儿?

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号