基于ARM9的18B20温度传感器程序

发布者:leader4最新更新时间:2015-12-25 来源: eefocus关键字:ARM9  18B20  温度传感器 手机看文章 扫描二维码
随时随地手机看文章
18B20温度传感器,典型的时序操作器件,用51单片机写很方便,可是把这现成的程序移植到FPGA、ARM、430上面,还需要一定的翻译功底。

 

//-------------------------------------------------------------------------------------
//函数名称:dmsec //入口参数:count //函数功能:延时子程序
//-------------------------------------------------------------------------------------
void dmsec(uint count) { uchar i;
 while(count--) {
  for(i=0;
  i<125;
  i++);
 }
}
//-------------------------------------------------------------------------------------
//函数名称:tmreset //入口参数:无 //函数功能:
 //-------------------------------------------------------------------------------------
void tmreset(void) {
  ushort i;
  dq=0;
  i=343;
  while(i>0) i--;
  //大约900us dq=1;
  i=13;
  while(i>0) i--;
} //-------------------------------------------------------------------------------------
 //函数名称:tmpre //入口参数:无 //函数功能:等待DS18B20应答
  //-------------------------------------------------------------------------------------
void tmpre(void) {
  uchar i;
  while(dq);
  while(~dq);
  i=13;
  while(i>0) i--;
 } //-------------------------------------------------------------------------------------
 //函数名称:tmrbit //入口参数:无 //返回值: dat //函数功能:在总线上读一位
 //-------------------------------------------------------------------------------------
bit tmrbit(void) {
  uchar i;
  bit dat;
  dq=0;
  i++;
  dq=1;
  i++;
  i++;
  dat=dq;
  i=30;
  while(i>0) i--;
  return(dat);
} //-------------------------------------------------------------------------------------
 //函数名称:tmrbyte //入口参数:无 //返回值: dat //函数功能:读一个字节
 //-------------------------------------------------------------------------------------
uchar tmrbyte(void) {
  uchar i,j,dat=0;
  for(i=1;i<=8;i++) {
    j=tmrbit();
    dat=(j<<7)|(dat>>1);
  }
   return(dat);
} //-------------------------------------------------------------------------------------
  //函数名称:tmwbyte //入口参数:dat //函数功能:写命令
  //-------------------------------------------------------------------------------------
void tmwbyte(uchar dat) {
  uint i;
  uchar j;
  bit testb;
  for(j=1;j<=8;j++) {
   testb=dat&0x01;
   dat=dat>>1;
   if(testb) {
    dq=0;
    //写1 i++;
    i++;
    dq=1;
    i=27;
    while(i>0) i--;
   }
   else {
    dq=0;
    //写0 i=27;
    while(i>0) i--;
    dq=1;
    i++;
    i++;
   }
  }
} //-------------------------------------------------------------------------------------
 //函数名称:tmrbyte //入口参数:无 //函数功能:读取温度值
 //-------------------------------------------------------------------------------------
void read_tr() {
 uchar a,b;
 ushort y;
 tmreset();
 tmpre();
 dmsec(1);
 tmwbyte(0xcc);
 tmwbyte(0x44);
 dmsec(100);
 tmreset();
 tmpre();
 dmsec(1);
 tmwbyte(0xcc);
 tmwbyte(0xbe);
 a=tmrbyte();
 //l b=tmrbyte();
 //h y=b&0x0f;
 y=y<<8;
 y=a|y;
 if(y>0x800) {
  y=0x1000-y;
  bjTr=cal12bit(y);
  bjTr=bjTr+0x8000;
 }
 else
 {
   bjTr=cal12bit(y);
 }
 } //12位精度
void temp_init(void) {
 tmreset();
 tmpre();
 tmwbyte(0xcc);
 tmwbyte(0x4e);
 tmwbyte(0x88);
 tmwbyte(0x44);
 tmwbyte(0x7f);
 tmreset();
}

关键字:ARM9  18B20  温度传感器 引用地址:基于ARM9的18B20温度传感器程序

上一篇:关于调试STM32进入HardFault_Handler的问题
下一篇:STM32f10x启动代码分析

推荐阅读最新更新时间:2024-03-16 14:41

18B20温度1602显示
// 晶振 12mhz #include reg51.h sbit RS=P2^0; // RS数据和指令 sbit RW=P2^1; //读和写 sbit EN=P2^2; //读取时能 sbit busy=P0^7; sbit DQ=P3^4; #define uchar unsigned char #define uint unsigned int uchar temp_value; unsigned char show1 = 18B20 ; unsigned char show2 = temperature ; unsigned char tab ={0+'0',1+'0',
[单片机]
<font color='red'>18B20</font>温度1602显示
arm9为何上电时候要改变系统时钟
因为在没有上电时候,开发板是工作在12Mhz,那么用到时钟的硬件资源比如cpu 内存 uart等也工作在12Mhz,那么我知道正常情况下也即上电的话,开发板是工作在500Mhz,这样的话,需要一个切换的过程,这个过程如下: 1 系统工作时钟频率 在对系统时钟进行提速之前,让我们先来了解下 S3C2440 上的工作时钟频率, FCLK , HCLK , PCLK ,其中 FCLK 主要为 ARM920T 内核提供工作频率,如图 2-44 所示: 图 2-44 ARM920T 内核结构 HCLK 主要为 S3C2440 AHB 总线( Advanc
[单片机]
<font color='red'>arm9</font>为何上电时候要改变系统时钟
STM32入门开发: 编写DS18B20温度传感器驱动(读取环境温度、支持级联)
一、环境介绍 编程软件: keil5 操作系统: win10 MCU型号: STM32F103C8T6 STM32编程方式: 寄存器开发 (方便程序移植到其他单片机) 温度传感器: DS1820 DS18B20是一个数字温度传感器,采用的是单总线时序与主机通信,只需要一根线就可以完成温度数据读取; DS18B20内置了64位产品序列号,方便识别身份,在一根线上可以挂接多个DS18B20传感器,通过64位身份验证,可以分别读取来至不同传感器采集的温度信息。 二、DS18B20介绍 2.1 DS18B20 的主要特征 1. 全数字温度转换及输出。 2. 先进的单总线数据通信。 3. 最高 12 位
[单片机]
STM32入门开发: 编写DS18B20<font color='red'>温度传感器</font>驱动(读取环境温度、支持级联)
光纤温度传感器或用于航空温度测控系统
  温度传感技术在航空发动机测控、飞机环境控制系统测控以及航空地面测试等系统中有十分广泛的应用。传统的温度测量元件有:热电偶、拉瓦尔管、热电阻等,这些测量元件在技术上已经成熟,但是,它们只能在传统的场合应用,不能满足许多领域的要求,尤其是对高科技航空武器装备的测控需要。因此,各国都在有针对性地竟相开发各种新型温度传感器及特殊与实用的测温技术,如光纤、激光、遥感和存储等技术的新型温度计已经实用化。光纤温度传感器是光、电技术的结晶,与传统的传感器相比有许多优点。如飞机发动机测控、环境控制系统测控均是要对温度进行实时监控,如果使用光纤温度传感器,可以克服传统温度测量元件的不足,提高系统的抗干扰能力和测量准确度,也为航空温度测控系统与机载计
[测试测量]
51单片机-温度传感器代码解析Ⅱ
1.小于0度的转换 我们知道当测量的实际温度为0度以下时,temp没转换时的情况为下图所示 我们已经知道高5位为1表示的是负数,那么-0.5度的时候为什么是1111 1111 1111 1000。 负数的计算涉及到补码的知识。首先0xFFF8,除去高5位那就是 111 1111 1000 反码为 000 0000 0111 而补码就是反码加1,也就是补码为000 0000 1000 这样0.5就是由补码(十进制的8)乘以0.0625得来。 我们要知道,负数的时候需要关注的是temp的低11位,补码其实就是2的11次方(2048)减去temp的低11位的数值。 -55度的时候,补码为2048-0x0490=880。
[单片机]
51单片机-<font color='red'>温度传感器</font>代码解析Ⅱ
AD590温度传感器的使用
     AD590温度传感器是一种已经IC化的温度感测器,它会将温度转换为电流,在8051的各种课本中经常看到。其规格如下:   1、 度每增加1℃,它会增加1μA输出电流   2、 可测量范围-55℃至150℃   3、 供电电压范围+4V至+30V   AD590的管脚图及元件符号如下图所示:            AD590的输出电流值说明如下:   其输出电流是以绝对温度零度(-273℃)为基准,每增加1℃,它会增加1μA输出电流,因此在室温25℃时,其输出电流Iout=(273+25)=298μA。   AD590基本应用电路:            注意事项:   1、 Vo的值为Io
[工业控制]
集成温度传感器μPC616及其应用
Integrated Temperature Sensor μPC616 and Its Applicatio n GAO Meizhen (Department of Physics Hubei Normal University, Huangshi 435002, China) Abstract: The main characteristic of the μPC616 and its working principle were introduced in this paper. The typical app lication electric circuits bas ed on μPC616 was given fi
[传感器]
单线数字温度传感器的原理与应用
    摘 要:介绍单线数字温度传感器DS1820的特性及工作原理,给出了DS1820与89C51单片机接口的应用实例,以及由DS1820组成温度检测系统的方法,并给出了对DS1820进行各种操作的软件流程图。     关键词: 单线制(1-Wire) 时隙 A/D变换         美国DALLAS公司生产的单线数字温度传感器DS182,可把温度信号直接转换成串行数字信号供微机处理。由于每片DS1820含有唯一的硅串行数所以在一条总线上可挂接任意多个DS1820芯片。从DS1820读出的信息或写入DS1820的信息,仅需要一根口线(单线接口)。读写及温度变换功率来源于数据总线,总线本身也可以向所挂接的DS1820供电
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved