temper-sensor-DS18B20-procedur.rar

  • 浩士大夫
    了解作者
  • C/C++
    开发工具
  • 9KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 4
    下载次数
  • 2013-04-22 19:16
    上传日期
温度传感器DS18B20的iar工程程序
temper-sensor-DS18B20-procedur.rar
  • 温度传感器DS18B20
  • Source
  • main.c
    1.7KB
  • ds18b20.h
    132B
  • ds18b20.c
    3KB
  • ds18b20.dep
    5.1KB
  • ds18b20.ewp
    55KB
  • ds18b20.eww
    161B
  • ds18b20.ewd
    33.5KB
内容介绍
#include"iocc2530.h"//寄存器文件申明 #define Ds18b20IO P0_6 //温度传感器引脚 unsigned char temp; //用来储存温度信息 void Delay_us(unsigned int k)//us延时函数 { T1CC0L = 0x06; T1CC0H = 0x00; T1CTL = 0x02; while(k) { while(!(T1CNTL >= 0x04)); k--; } T1CTL = 0x00;//关闭定时器 } void Delay_ms(unsigned int k) { T1CC0L = 0xe8; T1CC0H = 0x03; T1CTL = 0x0a;//模模式 32分频 while(k) { while(!((T1CNTL >= 0xe8)&&(T1CNTH >= 0x03))); k--; } T1CTL = 0x00;//关闭定时器 } void Delay_s(unsigned int k) { while(k) { Delay_ms(1000); k--; } } //时钟频率为32M void Ds18b20Delay(unsigned int k) { unsigned int i,j; for(i=0;i<k;i++) for(j=0;j<2;j++); } void Ds18b20InputInitial(void)//设置端口为输入 { P0DIR &= 0xbf; } void Ds18b20OutputInitial(void)//设置端口为输出 { P0DIR |= 0x40; } //ds18b20初始化 //初始化成功返回0x00,失败返回0x01 unsigned char Ds18b20Initial(void) { unsigned char Status = 0x00; unsigned int CONT_1 = 0; unsigned char Flag_1 = 1; Ds18b20OutputInitial(); Ds18b20IO = 1; //DQ复位 Ds18b20Delay(260); //稍做延时 Ds18b20IO = 0; //单片机将DQ拉低 Ds18b20Delay(750); //精确延时 大于 480us 小于960us Ds18b20IO = 1; //拉高总线 Ds18b20InputInitial();//设置IO输入 while((Ds18b20IO != 0)&&(Flag_1 == 1))//等待ds18b20响应,具有防止超时功能 { //等待约60ms左右 CONT_1++; Ds18b20Delay(10); if(CONT_1 > 8000)Flag_1 = 0; Status = Ds18b20IO; } Ds18b20OutputInitial(); Ds18b20IO = 1; Ds18b20Delay(100); return Status; //返回初始化状态 } void Ds18b20Write(unsigned char infor) { unsigned int i; Ds18b20OutputInitial(); for(i=0;i<8;i++) { if((infor & 0x01)) { Ds18b20IO = 0; Ds18b20Delay(6); Ds18b20IO = 1; Ds18b20Delay(50); } else { Ds18b20IO = 0; Ds18b20Delay(50); Ds18b20IO = 1; Ds18b20Delay(6); } infor >>= 1; } } unsigned char Ds18b20Read(void) { unsigned char Value = 0x00; unsigned int i; Ds18b20OutputInitial(); Ds18b20IO = 1; Ds18b20Delay(10); for(i=0;i<8;i++) { Value >>= 1; Ds18b20OutputInitial(); Ds18b20IO = 0;// 给脉冲信号 Ds18b20Delay(3); Ds18b20IO = 1;// 给脉冲信号 Ds18b20Delay(3); Ds18b20InputInitial(); if(Ds18b20IO == 1) Value |= 0x80; Ds18b20Delay(15); } return Value; } unsigned char ReadDs18B20(void) //温度读取函数 { unsigned char V1,V2;//定义高低8位 缓冲 unsigned char temp; //定义温度缓冲寄存器 Ds18b20Initial(); Ds18b20Write(0xcc);// 跳过读序号列号的操作 Ds18b20Write(0x44);// 启动温度转换 Ds18b20Initial(); Ds18b20Write(0xcc);//跳过读序号列号的操作 Ds18b20Write(0xbe);//读取温度寄存器等(共可读9个寄存器) 前两个就是温度 V1 = Ds18b20Read();//低位 V2 = Ds18b20Read();//高位 temp = ((V1 >> 4)+((V2 & 0x07)*16)); //转换数据 return(temp);//返回读取的温度 }
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...