文章目录

  • ds18b20.c
  • ds18b20.h
  • main.c

ds18b20.c

  ds18b20.c如下:

#include "iocc2530.h"#define uint unsigned int
#define uchar unsigned char#define Ds18b20Data P0_6 /* 温度传感器引脚 */#define ON  0x01 /* 读取成功返回0x00,失败返回0x01 */
#define OFF 0x00unsigned char temp; /* 储存温度信息 */void Ds18b20Delay ( uint k ) { /* 时钟频率为32M */uint i, j;for ( i = 0; i < k; i++ )for ( j = 0; j < 2; j++ );
}void Ds18b20InputInitial ( void ) { /* 设置端口为输入 */P0DIR &= 0xbf;
}void Ds18b20OutputInitial ( void ) { /* 设置端口为输出 */P0DIR |= 0x40;
}uchar Ds18b20Initial ( void ) { /* ds18b20初始化,初始化成功返回0x00,失败返回0x01 */uchar Status = 0x00;uint CONT_1 = 0;uchar Flag_1 = ON;Ds18b20OutputInitial();Ds18b20Data = 1;Ds18b20Delay ( 260 );Ds18b20Data = 0;Ds18b20Delay ( 750 );Ds18b20Data = 1;Ds18b20InputInitial();while ( ( Ds18b20Data != 0 ) && ( Flag_1 == ON ) ) { /* 等待ds18b20响应,具有防止超时功能 *//* 等待约60ms左右 */CONT_1++;Ds18b20Delay ( 10 );if ( CONT_1 > 8000 ) {Flag_1 = OFF;}Status = Ds18b20Data;}Ds18b20OutputInitial();Ds18b20Data = 1;Ds18b20Delay ( 100 );return Status;
}void Ds18b20Write ( uchar infor ) {uint i;Ds18b20OutputInitial();for ( i = 0; i < 8; i++ ) {if ( ( infor & 0x01 ) ) {Ds18b20Data = 0;Ds18b20Delay ( 6 );Ds18b20Data = 1;Ds18b20Delay ( 50 );} else {Ds18b20Data = 0;Ds18b20Delay ( 50 );Ds18b20Data = 1;Ds18b20Delay ( 6 );}infor >>= 1;}
}uchar Ds18b20Read ( void ) {uchar Value = 0x00;uint i;Ds18b20OutputInitial();Ds18b20Data = 1;Ds18b20Delay ( 10 );for ( i = 0; i < 8; i++ ) {Value >>= 1;Ds18b20OutputInitial();Ds18b20Data = 0;Ds18b20Delay ( 3 );Ds18b20Data = 1;Ds18b20Delay ( 3 );Ds18b20InputInitial();if ( Ds18b20Data == 1 ) {Value |= 0x80;}Ds18b20Delay ( 15 );}return Value;
}void Temp_test ( void ) { /* 温度读取函数 */uchar V1, V2;Ds18b20Initial();Ds18b20Write ( 0xcc );Ds18b20Write ( 0x44 );Ds18b20Initial();Ds18b20Write ( 0xcc );Ds18b20Write ( 0xbe );V1 = Ds18b20Read();V2 = Ds18b20Read();temp = ( ( V1 >> 4 ) + ( ( V2 & 0x07 ) * 16 ) );
}

ds18b20.h

  ds18b20.h如下:

#ifndef __DS18B20_H__
#define __DS18B20_H__extern unsigned char temp;
extern unsigned char Ds18b20Initial ( void );
extern void Temp_test ( void );
#endif

main.c

  main.c如下:

#include "iocc2530.h"
#include "stdio.h"
#include "ds18b20.h"__near_func int putchar ( int c ) {UTX0IF = 0;U0DBUF = ( char ) c;while ( UTX0IF == 0 );return ( c );
}void InitUART ( void ) {PERCFG = 0x00; /* (外设控制寄存器)USART_0的I/O位置为备用位置0 */P0SEL = 0x0c; /* P0_2和P0_3用作串口(外部设备功能) */P2DIR &= ~0XC0; /* (端口2方向和端口0外设优先级控制)P0优先作为UART0 */U0CSR |= 0x80; /* 设置为UART模式 */U0GCR |= 8; /* 波特率指数值,BAUD_E和BAUD_M决定了UART波特率 */U0BAUD |= 59; /* 波特率设为9600 */UTX0IF = 0; /* UART0的TX中断标志初始设置为0 */
}void Delayms ( int xms ) { /* 延时xms毫秒 */int i, j;for ( i = xms; i > 0; i-- )for ( j = 587; j > 0; j-- );
}void main() {CLKCONCMD &= ~0x40; /* 设置系统时钟源为32MHz晶振 */while ( CLKCONSTA & 0x40 ); /* 等待晶振稳定为32M */CLKCONCMD &= ~0x47; /* 设置系统主时钟频率为32MHz */P0SEL &= 0xbf; /* DS18B20的io口初始化 */InitUART();while ( 1 ) {Temp_test(); /* 温度检测 */printf ( "The temp is %d\r\n", temp );Delayms ( 500 );}
}

CC2530驱动_ds18b20相关推荐

  1. Zigbee网关 CC2530驱动1602显示屏

    根据文章zigbee网关 CC2530网关开发板之终端开发板可用的IO点击打开链接 目前开发板可用的IO为 P0_4,P0_5,P0_6,P0_7 -- 空 P1_0,P1_1,P1_2 -- 空 而 ...

  2. cc2430/cc2530驱动安装不正确

    a target cannot be selected when used in another debug session or in other applications 在从电脑上下载程序到板子 ...

  3. CC2530驱动_DHT11

    文章目录 DHT11.c DHT11.h UART.c UART.h main.c DHT11.c   DHT11.c如下: #include <ioCC2530.h>#define ui ...

  4. 欢迎进入GeekYang博客导航一站式搜索(所有博客的汇总帖)

    目录 一.JavaWeb学习之基础篇 二.Linux 服务器相关 三.折腾系列 四.日常学习笔记 五.硬件工程师之路 六.T5L迪文屏的开发与应用 七.ZigBee的开发与应用 八.C语言高阶学习笔记 ...

  5. 基于ZStack3.0.1(CC2530)和ST7735S的HAL_LCD驱动替换(一)

    最近JN5169不是很容易得到,然后就从个人收藏里找出了压箱底依旧的CC2530来玩了,之前买的CC2530开发板只有OLED驱动,显示的内容有点忒少了...于是乎就动起了歪脑筋,刚巧手上的Zigbe ...

  6. CC2530(SPI)驱动FLASH芯片W25Qxx

    由于之前用的存储芯片价格涨得离谱,需要寻找新的存储芯片,综合考虑找到了W25Qxx来测试替代的可行性.不用DMA的具体代码经过测试可用,但DMA收发测试不成功,仍在测试修改阶段. 所用芯片:cc253 ...

  7. zigbee里面的CC2530外设驱动代码

  8. rs232串口驱动_LED驱动电路设计

    这里设计了两种方案,方案一目标需要低功耗的led,方案二目标需要高功耗的LED.这里重点说下第一种方案,方案电路图如图所示.LED直接通过一个上拉排阻将8个LED连接在单片机上,这样的优点是电路结构简 ...

  9. ZigBee TI ZStack CC2530 3.18 串口01-发送

    (配套源码.软件.开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) 这一节,基于<ZigBee CC2530 Z-Stack 06 创建基于Z-Stack的全新工程>一节 ...

最新文章

  1. 利用python3 调用zabbix接口完成批量加聚合图形(screens)
  2. 《C++ Primer》 Part V (Advanced Topics)
  3. cocos2d-x 2.x版本使用uiwidget需要注意的几点
  4. python读取txt行问题
  5. mysql查询总结_mysql查询总结相关
  6. windows上dmg转换cdr_云主机装黑果实践(6):处理云主机上变色龙启动后置过程:驱动和黑屏...
  7. Android Prefence 总结
  8. 有关糖尿病模型建立的论文_预测糖尿病结果的模型比较
  9. 图片支持滚轮缩放(缩放中心为鼠标位置)_JS实现图片缩放、拖动、剪裁、预览及保存效果...
  10. mac ~/.bash_profile 重启失效
  11. JS能力测评经典题之数组
  12. 通俗易懂理解Attention机制
  13. 2018大厂高级前端面试题汇总
  14. [2018.03.29 T1] 异或
  15. 如何连接linux服务器
  16. 华为交换机做qos案例_华为交换机 01-08 QoS
  17. layui之 实现图片放大
  18. linux postgresql 创建数据库,第 23 课 PostgreSQL 创建自己的数据库、模式、用户
  19. 解决U盘传输文件过大的问题
  20. 【C#】委托,方法回调,匿名函数,拉姆达表达式

热门文章

  1. 想要刚毕业就月入过万必须要懂这些面试题(Vue 篇)
  2. 元素垂直居中,有几种方法?
  3. 应用方案 | 川土微电子CA-IS398X在PLC领域的应用
  4. 是时候,给你们自由了
  5. python 自动运维架构师_运维架构师-Python 自动化运维开发-031
  6. 大学十年__献给计算机专业的所有学子
  7. OSRM开源地图导航引擎介绍一
  8. C#合并两个(多个)集合
  9. 一个人在家简单吃点小火锅,搭配点小海鲜
  10. 去除带下划线的word文档答案