lpc2148基于DS18B20的温度控制系统程序代码之dat=(j1)详解

2019-05-20来源: eefocus关键字:lpc2148  DS18B20  温度控制系统

//读一位数据(读位程序)

1unsigned char tmpreadbit(void)       //read a bit

2{

3   unsigned char dat; 

4   DS_OUT();      //端口设置为输出

5   DS_L();        //DS=0

6   //Delayn(1);     //2uS

7   DS_IN();       //input

8   //Delayn(1);

9  if(DS_R()!=0)

10     dat=1;

11   else 

12      dat=0;

13   DelaynUs(50);    

14   return (dat);

15}


//读一个字节数据 (读字节程序)


16unsigned char tmpread(void)   //read a byte date

17{

18  unsigned char i,j,dat;  

19  dat=0;                    //令dat初始值为0,代码23处将会用到

20  for(i=1;i<=8;i++)

21  {

22    j=tmpreadbit();

23    dat=(j<<7)|(dat>>1);   //读出的数据最低位在最前面,这样刚好一个字节在DAT里

24  }

25  return(dat);

26}


任意取一个字节,本文以1011 1010为例


首先由读位程序读取第7位1,执行22得j=1,执行23得dat=1xxx xxxx,  详解如下:


j<<7得到1xxx xxxx 


dat>>1得到0xxx xxxx(注意:dat初始值为0,即代码19)


然后执行|(位或)运算,得到dat=1xxx xxxx


然后由读位程序读取第6位0,执行22得j=0,执行23得dat=01xx xxxx  详解如下:


j<<7得到0xxx xxxx


dat>>1得到01xx xxxx(此时,dat的值不再是0,而是上一步得到的1xxx xxxx)


然后执行|(位或)运算,得到dat=01xx xxxx


剩余位的计算方法同上,故略去......................


最终主机读到的字节数据是0101 1101 ,最低位在最前面


关键字:lpc2148  DS18B20  温度控制系统 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic462264.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:arm力天电子 lpc2148 基于DS18b20的温度采集实验程序详解
下一篇:arm力天电子 lpc2148流水灯驱动程序详解

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

LPC2148的IAP烧写程序
1 前言继前面ADS简单程序编译分析后,得到了可以运行在ucos ii上面的相对独立编译的程序创建方法。下面就是研究如何把用户程序更新到高层的flash中(底层为ucos ii的程序)。2 代码说明参考LPC2148的数据手册,LPC2148支持IAP模式,即用户烧写方式。参考周立功的AN070701,iap-yingyong.pdf结合LPC21xx手册(周立功的手册对应的是LPC2300),自制了烧写函数。下面是详细的说明:首先,参照资料,芯片通过向地址0x7FFFFFF1写入对应命令就能调用IAP烧写功能,这里不讨论芯片上电搬移程序代码的默认过程。在周立功资料里面说明了arm是如何切换到THUMB指令集工作状态的:IAP
发表于 2020-03-04
LPC2138 startup.s
Mode_USR        EQU     0x10Mode_FIQ        EQU     0x11Mode_IRQ        EQU     0x12Mode_SVC     &nb
发表于 2020-03-04
lpc2114系统时钟的设置
LPC2114微控制器的系统时钟有三种:晶振或外部时钟源为Fosc,经PLL调整后供给CPU得时钟为Fcclk,而经VPB分频器后供给外围器件的时钟为Fpclk。1、对PLL设置 PLL接受的输入时钟频率范围为10MHZ~25MHZ。输入频率经过一个电流控制振荡器(CCO)倍增到范围10MHZ~60MHZ。倍频器可以是从1到32得整数,但实际上由于CPU最高频率得限制,其倍频值不能高于6。CCO得操作频率范围为156MHZ—320MHZ,因此在环中有个额外的倍频器在PLL提供所需要得输出频率时使CCO保持在频率范围内。输出分频器可设置为2、4、8或16分频。由于输出分频器得最小值为2,它保证了PLL输出有50%得占空比
发表于 2020-03-04
LPC2148的烧录的方法
资源下载:https://pan.baidu.com/s/1M-T9rSXGbDiH-h_nck4eFw 提取码:ahb5(备用:https://www.lanzous.com/b537904/ 密码:cqut)烧录须知:LPC2148的核心板上拥有一个数据口、一个供电口。插上电源线前应检查板子上3.3V与GND端口或其他端口是否短接(防止短路烧坏芯片)插上电源线后核心板上一般会有led灯点亮,如果没有请检查电源端口旁的J3短接片是否被拔掉(正常是插上的)下载HEX文件到开发板上时不要用手去触摸(防止静电影响),或者乱动数据线(影响正常下载)一、安装驱动我们烧录程序(下载HEX文件到开发板)时一般可以使用两种USB数据线
发表于 2020-03-03
LPC2148的烧录的方法
LPC2148微处理器介绍
LPC2148是基于一个支持实时仿真和嵌入式跟踪的32/16位ARM7 TDMI-S CPU的微控制器,并带有32kB和512kB嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。较小的封装和很低的功耗使LPC2148特别适用于访问控制和POS机等小型应用中;由于内置了宽范围的串行通信接口(从USB 2.0全速器件、多个UART、SPI、SSP到I2C总线)和8kB到40kB的片内SRAM,它们也非常适合于通信网关、协议转换器、软件modem、语音识别、低端成像,为这些应用提供
发表于 2020-03-03
arm力天电子 lpc2148 基于DS18b20的温度采集实验程序详解
;// Memory map init flash memory is maped on 0 address71  MEMMAP_bit.MAP = 1;72}//复位(参考资料见DS18B20中文资料P7-10及DS18B20幻灯片)73void DS_Reset(void)       //send reset and initialization command74{75  DS_OUT();                           
发表于 2020-03-03
arm力天电子 lpc2148 基于DS18b20的温度采集实验程序详解
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved